{"version":3,"sources":["webpack:///./node_modules/devextreme/data/data_source/data_source.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.reorder.js","webpack:///./node_modules/devextreme/ui/themes.js","webpack:///./node_modules/devextreme/viz/pie_chart.js","webpack:///./node_modules/devextreme/ui/pivot_grid_field_chooser.js","webpack:///./node_modules/devextreme/ui/drop_down_editor/utils.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.search.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.subscribes.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_builder.js","webpack:///./node_modules/devextreme/viz/axes/axes_constants.js","webpack:///./node_modules/devextreme/core/errors.js","webpack:///./node_modules/devextreme/localization/ldml/date.format.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.context.js","webpack:///./node_modules/devextreme/ui/collection/ui.collection_widget.async.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.row_dragging.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment_form.js","webpack:///./node_modules/devextreme/ui/lookup.js","webpack:///./node_modules/devextreme/viz/axes/constant_line.js","webpack:///./node_modules/devextreme/ui/html_editor/formats/variable.js","webpack:///./node_modules/devextreme/viz/vector_map/projection.js","webpack:///./node_modules/devextreme/ui/data_grid/aggregate_calculator.js","webpack:///./node_modules/devextreme/ui/color_box/color_view.js","webpack:///./node_modules/devextreme/core/component_registrator_callbacks.js","webpack:///./node_modules/devextreme/core/utils/resize_callbacks.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_fixing.js","webpack:///./node_modules/devextreme/ui/text_box/ui.text_editor.mask.js","webpack:///./node_modules/devextreme/viz/series/helpers/range_data_calculator.js","webpack:///./node_modules/devextreme/viz/core/export.js","webpack:///./node_modules/devextreme/ui/sortable.js","webpack:///./node_modules/devextreme/events/hold.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/virtual_selection_state.js","webpack:///./node_modules/devextreme/ui/nav_bar.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.horizontal.js","webpack:///./node_modules/devextreme/viz/series/points/polar_point.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month.js","webpack:///./node_modules/devextreme/core/guid.js","webpack:///./node_modules/devextreme/exporter/exceljs/export_data_grid.js","webpack:///./node_modules/devextreme/viz/core/layout_element.js","webpack:///./node_modules/devextreme/ui/html_editor.js","webpack:///./node_modules/devextreme/ui/form/ui.form.item_option_action.js","webpack:///./node_modules/devextreme/core/element_data.js","webpack:///./node_modules/devextreme/core/utils/extend.js","webpack:///./node_modules/devextreme/viz/gauges/linear_range_container.js","webpack:///./node_modules/devextreme/ui/date_box.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_chooser.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.spins.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.recurrence_editor.js","webpack:///./node_modules/devextreme/viz/funnel/label.js","webpack:///./node_modules/devextreme/ui/tree_view.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_sync.js","webpack:///./node_modules/devextreme/viz/vector_map/gesture_handler.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_scrolling.js","webpack:///./node_modules/devextreme/core/config.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_builder.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_view.js","webpack:///./node_modules/devextreme/viz/sparklines/base_sparkline.js","webpack:///./node_modules/devextreme/data/remote_query.js","webpack:///./node_modules/devextreme/exporter/image_creator.js","webpack:///./node_modules/devextreme/viz/chart_components/zoom_and_pan.js","webpack:///./node_modules/devextreme/ui/scheduler/shaders/ui.scheduler.current_time_shader.horizontal.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.rows.js","webpack:///./node_modules/devextreme/viz/utils.js","webpack:///./node_modules/devextreme/ui/radio_group/radio_button.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.virtual_scrolling.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.virtual_columns.js","webpack:///./node_modules/devextreme/core/utils/date_serialization.js","webpack:///./node_modules/devextreme/core/http_request.js","webpack:///./node_modules/devextreme/exporter/excel_format_converter.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_sync.js","webpack:///./node_modules/devextreme/core/utils/object.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.collapsed.js","webpack:///./node_modules/devextreme/ui/text_box/texteditor_button_collection/custom.js","webpack:///./node_modules/devextreme/events/contextmenu.js","webpack:///./node_modules/devextreme/events/gesture/emitter.gesture.js","webpack:///./node_modules/devextreme/viz/sparkline.js","webpack:///./node_modules/devextreme/data/data_source/operation_manager.js","webpack:///./node_modules/devextreme/ui/collection/ui.collection_widget.edit.js","webpack:///./node_modules/devextreme/ui/pager.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.js","webpack:///./node_modules/devextreme/ui/range_slider.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.header_panel.js","webpack:///./node_modules/devextreme/ui/scheduler/timezones/utils.timezones_data.js","webpack:///./node_modules/devextreme/ui/html_editor/modules/mentions.js","webpack:///./node_modules/devextreme/ui/html_editor/modules/popup.js","webpack:///./node_modules/devextreme/ui/selection/selection.strategy.js","webpack:///./node_modules/devextreme/bundles/modules/core.js","webpack:///./node_modules/devextreme/ui/pivot_grid/xmla_store.js","webpack:///./node_modules/devextreme/viz/chart_components/multi_axes_synchronizer.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.selection.js","webpack:///./node_modules/devextreme/viz/funnel/tiling.funnel.js","webpack:///./node_modules/devextreme/ui/pivot_grid/local_store.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_panel.js","webpack:///./node_modules/devextreme/core/class.js","webpack:///./node_modules/devextreme/core/utils/date.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.spin.js","webpack:///./node_modules/devextreme/ui/tooltip/ui.tooltip.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.export.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.filter_panel.js","webpack:///./node_modules/devextreme/viz/series/stacked_series.js","webpack:///./node_modules/devextreme/animation/easing.js","webpack:///./node_modules/devextreme/viz/range_selector/series_data_source.js","webpack:///./node_modules/devextreme/ui/widget/swatch_container.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.base.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_custom_operations.js","webpack:///./node_modules/devextreme/exporter/excel/excel.cell_format_helper.js","webpack:///./node_modules/devextreme/viz/core/tooltip.js","webpack:///./node_modules/devextreme/viz/chart_components/crosshair.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.switchable.slide.js","webpack:///./node_modules/devextreme/ui/scheduler/appointmentPopup.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.adaptivity.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_fixing.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_work_week.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.pager.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.agenda.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.validating.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_row.js","webpack:///./node_modules/devextreme/ui/text_box/ui.text_editor.js","webpack:///./node_modules/devextreme/events/double_click.js","webpack:///./node_modules/devextreme/ui/filter_builder/between.js","webpack:///./node_modules/devextreme/viz/chart_components/layout_manager.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_work_week.js","webpack:///./node_modules/devextreme/ui/switch.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator_registry.js","webpack:///./node_modules/devextreme/data/data_source/utils.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline.js","webpack:///./node_modules/devextreme/viz/core/themes/generic.darkmoon.js","webpack:///./node_modules/devextreme/ui/selection/selection.strategy.standard.js","webpack:///./node_modules/devextreme/ui/collection/item.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.utils.js","webpack:///./node_modules/devextreme/core/utils/html_parser.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.search.js","webpack:///./node_modules/devextreme/viz/series/line_series.js","webpack:///./node_modules/devextreme/ui/text_box/utils.support.js","webpack:///./node_modules/devextreme/ui/drop_down_editor/ui.drop_down_list.js","webpack:///./node_modules/devextreme/viz/core/themes/generic.light.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointmentsPositioning.strategy.adaptive.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.caret.js","webpack:///./node_modules/devextreme/viz/series/points/base_point.js","webpack:///./node_modules/devextreme/ui/scheduler/tooltip_strategies/desktopTooltipStrategy.js","webpack:///./node_modules/devextreme/dist/js/localization/dx.messages.de.js","webpack:///./node_modules/devextreme/localization/default_messages.js","webpack:///./node_modules/devextreme/ui/scheduler/shaders/ui.scheduler.current_time_shader.js","webpack:///./node_modules/devextreme/viz/gauges/circular_indicators.js","webpack:///./node_modules/devextreme/ui/drop_down_editor/ui.drop_down_editor.js","webpack:///./node_modules/devextreme/renovation/preact_wrapper/component.js","webpack:///./node_modules/devextreme/ui/html_editor/ui/formDialog.js","webpack:///./node_modules/devextreme/viz/components/chart_theme_manager.js","webpack:///./node_modules/devextreme/ui/scheduler/utils.timeZone.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.loading.js","webpack:///./node_modules/devextreme/ui/draggable.js","webpack:///./node_modules/devextreme/viz/axes/datetime_breaks.js","webpack:///./node_modules/devextreme/data/local_store.js","webpack:///./node_modules/devextreme/viz/core/loading_indicator.js","webpack:///./node_modules/devextreme/localization/core.js","webpack:///./node_modules/devextreme/viz/chart.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.data_source_adapter.js","webpack:///./node_modules/devextreme/ui/shared/filtering.js","webpack:///./node_modules/devextreme/viz/translators/datetime_translator.js","webpack:///./node_modules/devextreme/viz/series/points/range_symbol_point.js","webpack:///./node_modules/devextreme/ui/toolbar/ui.toolbar.base.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollbar.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.data_controller.js","webpack:///./node_modules/devextreme/core/options/index.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.mask.parts.js","webpack:///./node_modules/devextreme/viz/axes/tick.js","webpack:///./node_modules/devextreme/viz/range_selector/tracker.js","webpack:///./node_modules/devextreme/ui/shared/grouped_data_converter_mixin.js","webpack:///./node_modules/devextreme/ui/pivot_grid/xmla_store/xmla_store.js","webpack:///./node_modules/devextreme/core/utils/selection_filter.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.validating.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.core.js","webpack:///./node_modules/devextreme/ui/color_box/color_box.js","webpack:///./node_modules/devextreme/localization/number.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.row_dragging.js","webpack:///./node_modules/devextreme/core/utils/ajax.js","webpack:///./node_modules/devextreme/viz/gauges/circular_range_container.js","webpack:///./node_modules/devextreme/events/pointer/mspointer.js","webpack:///./node_modules/devextreme/ui/set_template_engine.js","webpack:///./node_modules/devextreme/ui/action_sheet.js","webpack:///./node_modules/devextreme/viz/core/utils.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.summary.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.data_controller.js","webpack:///./node_modules/devextreme/core/utils/icon.js","webpack:///./node_modules/devextreme/ui/tabs.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.pager.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.state_storing.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.indicator.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.sortable.js","webpack:///./node_modules/devextreme/ui/html_editor/modules/dropImage.js","webpack:///./node_modules/devextreme/core/utils/view_port.js","webpack:///./node_modules/devextreme/core/utils/public_component.js","webpack:///./node_modules/devextreme/viz/vector_map/data_exchanger.js","webpack:///./node_modules/devextreme/ui/map/provider.google_static.js","webpack:///./node_modules/devextreme/core/component_registrator.js","webpack:///./node_modules/devextreme/format_helper.js","webpack:///./node_modules/devextreme/ui/widget/ui.errors.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.switchable.js","webpack:///./node_modules/devextreme/ui/context_menu/ui.context_menu.js","webpack:///./node_modules/devextreme/exporter/jspdf/export.js","webpack:///./node_modules/devextreme/core/events_strategy.js","webpack:///./node_modules/devextreme/viz/gauges/theme_manager.js","webpack:///./node_modules/devextreme/viz/range_selector/slider_marker.js","webpack:///./node_modules/devextreme/viz/vector_map.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.adaptivity.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.header.js","webpack:///./node_modules/devextreme/ui/slider/ui.slider.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.rows.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.keyboard_navigation.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.context_menu.js","webpack:///./node_modules/devextreme/events/visibility_change.js","webpack:///./node_modules/devextreme/ui/text_box/ui.text_editor.mask.strategy.default.js","webpack:///./node_modules/devextreme/ui/map/provider.dynamic.google.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.static.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.focus.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.core.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.strategy.grouped.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.selection.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/utils.js","webpack:///./node_modules/devextreme/ui/progress_bar.js","webpack:///./node_modules/devextreme/viz/core/themes/generic.greenmist.js","webpack:///./node_modules/devextreme/viz/translators/translator2d.js","webpack:///./node_modules/devextreme/ui/scheduler/tooltip_strategies/tooltipStrategyBase.js","webpack:///./node_modules/devextreme/core/renderer.js","webpack:///./node_modules/devextreme/viz/core/themes/generic.contrast.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.js","webpack:///./node_modules/devextreme/viz/vector_map/legend.js","webpack:///./node_modules/devextreme/exporter/excel/excel.file.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.editor_factory.js","webpack:///./node_modules/devextreme/ui/tab_panel/item.js","webpack:///./node_modules/devextreme/localization/ldml/date.parser.js","webpack:///./node_modules/devextreme/viz/range_selector/range_view.js","webpack:///./node_modules/devextreme/viz/core/renderers/renderer.js","webpack:///./node_modules/devextreme/events/core/event_registrator.js","webpack:///./node_modules/devextreme/core/utils/svg.js","webpack:///./node_modules/devextreme/events/utils/index.js","webpack:///./node_modules/devextreme/ui/form/ui.form.item_options_actions.js","webpack:///./node_modules/devextreme/viz/core/errors_warnings.js","webpack:///./node_modules/devextreme/exporter/excel/excel.font_helper.js","webpack:///./node_modules/devextreme/ui/file_uploader.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.modules.js","webpack:///./node_modules/devextreme/ui/html_editor/formats/link.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.calendar_with_time.js","webpack:///./node_modules/devextreme/ui/scheduler/dateAdapter.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/view_data_provider.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_columns.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.focus.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scroll_view.native.swipe_down.js","webpack:///./node_modules/devextreme/ui/data_grid.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.pager.js","webpack:///./node_modules/devextreme/viz/bar_gauge.js","webpack:///./node_modules/devextreme/viz/core/base_widget.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.column_fixing.js","webpack:///./node_modules/devextreme/viz/core/plaque.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_view.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.sorting_mixin.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/cell.js","webpack:///./node_modules/devextreme/ui/validation_summary.js","webpack:///./node_modules/devextreme/ui/check_box.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/day/date_table/layout.j.js","webpack:///./node_modules/devextreme/ui/list.js","webpack:///./node_modules/devextreme/ui/form.js","webpack:///./node_modules/devextreme/data/store_helper.js","webpack:///./node_modules/devextreme/ui/popup.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.grid_view.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.keyboard_navigation.js","webpack:///./node_modules/devextreme/ui/pivot_grid/remote_store.js","webpack:///./node_modules/devextreme/data/utils.js","webpack:///./node_modules/devextreme/ui/map/provider.dynamic.js","webpack:///./node_modules/devextreme/core/utils/error.js","webpack:///./node_modules/devextreme/events/utils/add_namespace.js","webpack:///./node_modules/devextreme/data/array_utils.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_month.js","webpack:///./node_modules/devextreme/animation/transition_executor/transition_executor.js","webpack:///./node_modules/devextreme/renovation/utils/combine_classes.js","webpack:///./node_modules/devextreme/viz/core/title.js","webpack:///./node_modules/devextreme/ui/text_box/utils.scroll.js","webpack:///./node_modules/devextreme/events/transform.js","webpack:///./node_modules/devextreme/exporter.js","webpack:///./node_modules/devextreme/data/custom_store.js","webpack:///./node_modules/devextreme/ui/tree_view/ui.tree_view.search.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month_line.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.fields_area.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_headers.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointmentsPositioning.strategy.base.js","webpack:///./node_modules/devextreme/ui/filter_builder/filter_builder.js","webpack:///./node_modules/devextreme/viz/range_selector/sliders_controller.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.data_source_adapter.js","webpack:///./node_modules/devextreme/core/utils/common.js","webpack:///./node_modules/devextreme/events/core/hook_touch_props.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.publisher_mixin.js","webpack:///./node_modules/devextreme/mobile/init_mobile_viewport/init_mobile_viewport.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.search.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_scrolling_core.js","webpack:///./node_modules/devextreme/ui/scheduler/appointmentDragBehavior.js","webpack:///./node_modules/devextreme/events/drag.js","webpack:///./node_modules/devextreme/data/abstract_store.js","webpack:///./node_modules/devextreme/ui/map.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_utils.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.resource_manager.js","webpack:///./node_modules/devextreme/localization/intl/number.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.calendar.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.j.js","webpack:///./node_modules/devextreme/viz/themes.js","webpack:///./node_modules/devextreme/ui/editor/editor.js","webpack:///./node_modules/devextreme/core/devices.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.header_filter.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.data_source_adapter.js","webpack:///./node_modules/devextreme/viz/range_selector/range_selector.js","webpack:///./node_modules/devextreme/viz/series/points/symbol_point.js","webpack:///./node_modules/devextreme/ui/tabs/constants.js","webpack:///./node_modules/devextreme/viz/series/points/range_bar_point.js","webpack:///./node_modules/devextreme/ui/html_editor/formats/size.js","webpack:///./node_modules/devextreme/ui/html_editor/modules/resizing.js","webpack:///./node_modules/devextreme/viz/components/tracker.js","webpack:///./node_modules/devextreme/ui/form/ui.form.js","webpack:///./node_modules/devextreme-quill/dist/dx-quill.js","webpack:///./node_modules/devextreme/exporter/svg_creator.js","webpack:///./node_modules/devextreme/ui/html_editor/modules/toolbar.js","webpack:///./node_modules/devextreme/viz/core/themes/generic.darkviolet.js","webpack:///./node_modules/devextreme/ui/resizable.js","webpack:///./node_modules/devextreme/viz/core/base_widget.utils.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scroll_view.simulated.js","webpack:///./node_modules/devextreme/core/renderer_base.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.focus.js","webpack:///./node_modules/devextreme/events/core/event_registrator_callbacks.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.columns_controller.js","webpack:///./node_modules/devextreme/bundles/modules/viz.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.master_detail.js","webpack:///./node_modules/devextreme/localization/currency.js","webpack:///./node_modules/devextreme/ui/scroll_view.js","webpack:///./node_modules/devextreme/ui/pivot_grid/data_source.js","webpack:///./node_modules/devextreme/data/array_query.js","webpack:///./node_modules/devextreme/ui/drop_down_menu.js","webpack:///./node_modules/devextreme/ui/validation/default_adapter.js","webpack:///./node_modules/devextreme/viz/gauges/tracker.js","webpack:///./node_modules/devextreme/viz/translators/range.js","webpack:///./node_modules/devextreme/data/endpoint_selector.js","webpack:///./node_modules/devextreme/pdf_exporter.js","webpack:///./node_modules/devextreme/exporter/excel/excel.tag_helper.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.agenda.js","webpack:///./node_modules/devextreme/core/polyfills/weak_map.js","webpack:///./node_modules/devextreme/data_helper.js","webpack:///./node_modules/devextreme/viz/core/themes/generic.carmine.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointments.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollable.native.js","webpack:///./node_modules/devextreme/viz/funnel.js","webpack:///./node_modules/devextreme/ui/html_editor/converterController.js","webpack:///./node_modules/devextreme/ui/toolbar/ui.toolbar.strategy.action_sheet.js","webpack:///./node_modules/devextreme/ui/select_box.js","webpack:///./node_modules/devextreme/core/version.js","webpack:///./node_modules/devextreme/viz/series/financial_series.js","webpack:///./node_modules/devextreme/ui/map/provider.js","webpack:///./node_modules/devextreme/exporter/excel_creator.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.data_area.js","webpack:///./node_modules/devextreme/ui/load_panel.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.context_menu.js","webpack:///./node_modules/devextreme/events/pointer/touch.js","webpack:///./node_modules/devextreme/ui/html_editor/themes/base.js","webpack:///./node_modules/devextreme/core/templates/template_base.js","webpack:///./node_modules/devextreme/viz/vector_map/control_bar.js","webpack:///./node_modules/devextreme/viz/funnel/tracker.js","webpack:///./node_modules/devextreme/data/query_implementation.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/week/date_table/layout.js","webpack:///./node_modules/devextreme/ui/overlay/utils.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.header_panel.js","webpack:///./node_modules/devextreme/data/query.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.master_detail.js","webpack:///./node_modules/devextreme/exporter/exceljs/export.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_chooser.js","webpack:///./node_modules/devextreme/ui/form/ui.form.utils.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/consts.js","webpack:///./node_modules/devextreme/core/templates/empty_template.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.rows.js","webpack:///./node_modules/devextreme/ui/html_editor/converters/delta.js","webpack:///./node_modules/devextreme/ui/collection/ui.collection_widget.base.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.chart_integration.js","webpack:///./node_modules/devextreme/core/polyfills/promise.js","webpack:///./node_modules/devextreme/localization/ldml/date.formatter.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.js","webpack:///./node_modules/devextreme/ui/toast.js","webpack:///./node_modules/devextreme/viz/range_selector.js","webpack:///./node_modules/devextreme/viz/vector_map/projection.main.js","webpack:///./node_modules/devextreme/viz/series/scatter_series.js","webpack:///./node_modules/devextreme/core/postponed_operations.js","webpack:///./node_modules/devextreme/ui/scheduler/tooltip_strategies/mobileTooltipStrategy.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.summary_display_modes.js","webpack:///./node_modules/devextreme/events/pointer.js","webpack:///./node_modules/devextreme/core/memorized_callbacks.js","webpack:///./node_modules/devextreme/viz/axes/base_axis.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment_model.js","webpack:///./node_modules/devextreme/core/dom_component.js","webpack:///./node_modules/devextreme/viz/bullet.js","webpack:///./node_modules/devextreme/renovation/preact_wrapper/utils.js","webpack:///./node_modules/devextreme/viz/core/layout.js","webpack:///./node_modules/devextreme/ui/calendar/ui.calendar.views.js","webpack:///./node_modules/devextreme/core/utils/string.js","webpack:///./node_modules/devextreme/ui/scheduler/appointmentAdapter.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.master_detail.js","webpack:///./node_modules/devextreme/exporter/excel/excel.number_format_helper.js","webpack:///./node_modules/devextreme/data/data_source.js","webpack:///./node_modules/devextreme/events/short.js","webpack:///./node_modules/devextreme/ui/html_editor/ui.html_editor.js","webpack:///./node_modules/devextreme/localization/utils.js","webpack:///./node_modules/devextreme/localization/cldr-data/first_day_of_week_data.js","webpack:///./node_modules/devextreme/ui/tree_view/ui.tree_view.base.js","webpack:///./node_modules/devextreme/core/action.js","webpack:///./node_modules/devextreme/events/pointer/mouse_and_touch.js","webpack:///./node_modules/devextreme/ui/collection/ui.collection_widget.edit.strategy.plain.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/day/date_table/layout.js","webpack:///./node_modules/devextreme/ui/radio_group.js","webpack:///./node_modules/devextreme/ui/toolbar/ui.toolbar.menu.js","webpack:///./node_modules/devextreme/ui/scheduler/timeZoneCalculator.js","webpack:///./node_modules/devextreme/data/array_store.js","webpack:///./node_modules/devextreme/localization/parentLocale.js","webpack:///./node_modules/devextreme/exporter/exceljs/export_pivot_grid.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/time_panel/layout.j.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.virtual_columns.js","webpack:///./node_modules/devextreme/core/utils/scroll_rtl_behavior.js","webpack:///./node_modules/devextreme/ui/form/ui.form.items_runtime_info.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.area_item.js","webpack:///./node_modules/devextreme/viz/gauges/common.js","webpack:///./node_modules/devextreme/viz/gauges/linear_indicators.js","webpack:///./node_modules/devextreme/ui/list/item.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.accessibility.js","webpack:///./node_modules/devextreme/events/core/keyboard_processor.js","webpack:///./node_modules/devextreme/ui/nav_bar/item.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.events.emitter.gesture.scroll.js","webpack:///./node_modules/devextreme/ui/selection/selection.strategy.deferred.js","webpack:///./node_modules/devextreme/ui/calendar/ui.calendar.navigator.js","webpack:///./node_modules/devextreme/ui/hierarchical_collection/ui.hierarchical_collection_widget.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.base.js","webpack:///./node_modules/devextreme/events/click.js","webpack:///./node_modules/devextreme/ui/list/ui.list.base.js","webpack:///./node_modules/devextreme/core/utils/variable_wrapper.js","webpack:///./node_modules/devextreme/ui/dialog.js","webpack:///./node_modules/devextreme/ui/button.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.table_creator.js","webpack:///./node_modules/devextreme/localization.js","webpack:///./node_modules/devextreme/ui/load_indicator.js","webpack:///./node_modules/devextreme/events/swipe.js","webpack:///./node_modules/devextreme/core/utils/version.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_month.js","webpack:///./node_modules/devextreme/core/utils/position.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_resizing_reordering.js","webpack:///./node_modules/devextreme/ui/multi_view/ui.multi_view.animation.js","webpack:///./node_modules/devextreme/core/utils/array.js","webpack:///./node_modules/devextreme/viz/series/points/stock_point.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.filter_builder.js","webpack:///./node_modules/devextreme/viz/core/helpers.js","webpack:///./node_modules/devextreme/localization/default_date_names.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_view_roller.js","webpack:///./node_modules/devextreme/ui/form/constants.js","webpack:///./node_modules/devextreme/ui/selection/selection.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/table.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.expanded.js","webpack:///./node_modules/devextreme/localization/ldml/number.js","webpack:///./node_modules/devextreme/animation/translator.js","webpack:///./node_modules/devextreme/viz/gauges/circular_gauge.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_week.js","webpack:///./node_modules/devextreme/ui/filter_builder/ui.filter_operations_dictionary.js","webpack:///./node_modules/devextreme/viz/gauges/bar_gauge.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.base.js","webpack:///./node_modules/devextreme/data/apply_changes.js","webpack:///./node_modules/devextreme/core/options/utils.js","webpack:///./node_modules/devextreme/ui/context_menu/ui.menu_base.edit.strategy.js","webpack:///./node_modules/devextreme/exporter/pdf_creator.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.list.js","webpack:///./node_modules/devextreme/ui/shared/accessibility.js","webpack:///./node_modules/devextreme/viz/vector_map/tracker.js","webpack:///./node_modules/devextreme/data/errors.js","webpack:///./node_modules/devextreme/events/core/emitter_registrator.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollable.js","webpack:///./node_modules/devextreme/viz/vector_map/tooltip_viewer.js","webpack:///./node_modules/devextreme/ui/validator.js","webpack:///./node_modules/devextreme/viz/series/area_series.js","webpack:///./node_modules/devextreme/viz/chart_components/shutter_zoom.js","webpack:///./node_modules/devextreme/ui/html_editor/matchers/wordLists.js","webpack:///./node_modules/devextreme/ui/collection/ui.collection_widget.live_update.js","webpack:///./node_modules/devextreme/viz/polar_chart.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/cache.js","webpack:///./node_modules/devextreme/viz/core/series_family.js","webpack:///./node_modules/devextreme/viz/vector_map/vector_map.js","webpack:///./node_modules/devextreme/viz/axes/xy_axes.js","webpack:///./node_modules/devextreme/ui/text_box/texteditor_button_collection/button.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.base.js","webpack:///./node_modules/devextreme/ui/scheduler/recurrence.js","webpack:///./node_modules/devextreme/ui/tabs/item.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.utils.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.error_handling.js","webpack:///./node_modules/devextreme/core/templates/bindable_template.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_day.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollable.simulated.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.state_storing_core.js","webpack:///./node_modules/devextreme/ui/box.js","webpack:///./node_modules/devextreme/viz/axes/tick_generator.js","webpack:///./node_modules/devextreme/viz/sparklines/bullet.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.selection.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.mask.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.js","webpack:///./node_modules/devextreme/core/utils/size.js","webpack:///./node_modules/devextreme/ui/map/provider.dynamic.bing.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/time_panel/cell.js","webpack:///./node_modules/devextreme/ui/validation_engine.js","webpack:///./node_modules/devextreme/core/utils/window.js","webpack:///./node_modules/devextreme/ui/toolbar/ui.toolbar.strategy.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.editing.js","webpack:///./node_modules/devextreme/localization/intl/date.js","webpack:///./node_modules/devextreme/core/utils/callbacks.js","webpack:///./node_modules/devextreme/ui/number_box.js","webpack:///./node_modules/devextreme/core/utils/console.js","webpack:///./node_modules/devextreme/ui/collection/ui.collection_widget.edit.strategy.js","webpack:///./node_modules/devextreme/core/utils/support.js","webpack:///./node_modules/devextreme/ui/filter_builder.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.export_mixin.js","webpack:///./node_modules/devextreme/viz/core/themes/generic.softblue.js","webpack:///./node_modules/devextreme/ui/drop_down_box.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/const.js","webpack:///./node_modules/devextreme/animation/frame.js","webpack:///./node_modules/devextreme/ui/menu/ui.submenu.js","webpack:///./node_modules/devextreme/viz/series/points/bubble_point.js","webpack:///./node_modules/devextreme/ui/validation_message.js","webpack:///./node_modules/devextreme/localization/date.js","webpack:///./node_modules/devextreme/viz/core/renderers/animation.js","webpack:///./node_modules/devextreme/core/utils/template_manager.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.grid_view.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal.js","webpack:///./node_modules/devextreme/viz/vector_map/layout.js","webpack:///./node_modules/devextreme/events/gesture/swipeable.js","webpack:///./node_modules/devextreme/viz/series/points/label.js","webpack:///./node_modules/devextreme/ui/editor/ui.data_expression.js","webpack:///./node_modules/devextreme/core/utils/queue.js","webpack:///./node_modules/devextreme/core/templates/function_template.js","webpack:///./node_modules/devextreme/ui/slider.js","webpack:///./node_modules/devextreme/core/utils/dependency_injector.js","webpack:///./node_modules/devextreme/ui/color_box.js","webpack:///./node_modules/devextreme/ui/scheduler/shaders/ui.scheduler.current_time_shader.vertical.js","webpack:///./node_modules/devextreme/bundles/modules/ui.js","webpack:///./node_modules/devextreme/viz/series/range_series.js","webpack:///./node_modules/devextreme/viz/chart_components/tracker.js","webpack:///./node_modules/devextreme/ui/html_editor/modules/variables.js","webpack:///./node_modules/devextreme/ui/tooltip/tooltip.js","webpack:///./node_modules/devextreme/viz/range_selector/slider.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator_menu_helper.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.search.js","webpack:///./node_modules/devextreme/core/remove_event.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.state_storing.js","webpack:///./node_modules/devextreme/ui/text_box/ui.text_editor.mask.strategy.input_events.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.native.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.utils.js","webpack:///./node_modules/devextreme/ui/menu/ui.menu.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.row_dragging.js","webpack:///./node_modules/devextreme/ui/text_box/text_box.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_day.js","webpack:///./node_modules/devextreme/ui/text_box/ui.text_editor.clear.js","webpack:///./node_modules/devextreme/mobile/hide_callback.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.column_chooser.js","webpack:///./node_modules/devextreme/ui/text_box/ui.text_editor.mask.strategy.base.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/week/date_table/layout.j.js","webpack:///./node_modules/devextreme/ui/widget/selectors.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.date_view.js","webpack:///./node_modules/devextreme/animation/presets/presets.js","webpack:///./node_modules/devextreme/viz/funnel/funnel.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.core.js","webpack:///./node_modules/devextreme/ui/text_area.js","webpack:///./node_modules/devextreme/events/core/emitter.feedback.js","webpack:///./node_modules/devextreme/animation/fx.js","webpack:///./node_modules/devextreme/viz/translators/category_translator.js","webpack:///./node_modules/devextreme/exporter/excel/excel.cell_alignment_helper.js","webpack:///./node_modules/devextreme/viz/core/data_source.js","webpack:///./node_modules/devextreme/viz/gauges/base_indicators.js","webpack:///./node_modules/devextreme/core/utils/call_once.js","webpack:///./node_modules/devextreme/ui/toolbar/ui.toolbar.strategy.drop_down_menu.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.base.js","webpack:///./node_modules/devextreme/ui/scroll_view/animator.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_controller.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/cell.js","webpack:///./node_modules/devextreme/localization/cldr-data/accounting_formats.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_vertical.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/layout.js","webpack:///./node_modules/devextreme/ui/text_box/texteditor_button_collection/index.js","webpack:///./node_modules/devextreme/ui/context_menu/ui.menu_base.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.header_filter_core.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.js","webpack:///./node_modules/devextreme/localization/message.js","webpack:///./node_modules/devextreme/ui/html_editor/formats/image.js","webpack:///./node_modules/devextreme/viz/funnel/tooltip.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.editing.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.filter_sync.js","webpack:///./node_modules/devextreme/data/proxy_url_formatter.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.sorting.js","webpack:///./node_modules/devextreme/ui/scheduler.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.headers_area.js","webpack:///./node_modules/devextreme/events/core/events_engine.js","webpack:///./node_modules/devextreme/ui/date_box/ui.time_view.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.mask.js","webpack:///./node_modules/devextreme/core/templates/template_engine_registry.js","webpack:///./node_modules/devextreme/ui/track_bar.js","webpack:///./node_modules/devextreme/ui/calendar/ui.calendar.base_view.js","webpack:///./node_modules/devextreme/exporter/excel/excel.fill_helper.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.editing.js","webpack:///./node_modules/devextreme/ui/shared/ui.editor_factory_mixin.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.export.js","webpack:///./node_modules/devextreme/ui/html_editor/formats/mention.js","webpack:///./node_modules/devextreme/events/core/emitter.js","webpack:///./node_modules/devextreme/viz/gauges/base_gauge.js","webpack:///./node_modules/devextreme/ui/responsive_box.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.validating.js","webpack:///./node_modules/devextreme/ui/slider/ui.slider_handle.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_columns_core.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.js","webpack:///./node_modules/devextreme/core/templates/child_default_template.js","webpack:///./node_modules/devextreme/ui/html_editor/formats/align.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/month/date_table/cell.js","webpack:///./node_modules/devextreme/exporter/exceljs/export_format.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/layout_props.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scroll_view.native.pull_down.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointments.layout_manager.js","webpack:///./node_modules/devextreme/ui/scheduler/timezones/timezones_data.js","webpack:///./node_modules/devextreme/time_zone_utils.js","webpack:///./node_modules/devextreme/core/element.js","webpack:///./node_modules/devextreme/viz/export.js","webpack:///./node_modules/devextreme/ui/button_group.js","webpack:///./node_modules/devextreme/core/utils/array_compare.js","webpack:///./node_modules/devextreme/ui/tooltip.js","webpack:///./node_modules/devextreme/core/utils/style.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/utils.work_week.js","webpack:///./node_modules/devextreme/ui/calendar/ui.calendar.js","webpack:///./node_modules/devextreme/ui/html_editor/quill_importer.js","webpack:///./node_modules/devextreme/ui/text_box/ui.text_editor.mask.rule.js","webpack:///./node_modules/devextreme/ui/radio_group/radio_group.js","webpack:///./node_modules/devextreme/ui/validation_group.js","webpack:///./node_modules/devextreme/ui/calendar.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.header_filter.js","webpack:///./node_modules/devextreme/viz/axes/polar_axes.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_week.js","webpack:///./node_modules/devextreme/bundles/modules/data.js","webpack:///./node_modules/devextreme/viz/components/parse_utils.js","webpack:///./node_modules/devextreme/ui/scheduler/appointmentSettingsGenerator.js","webpack:///./node_modules/devextreme/viz/sparklines/sparkline.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.columns_resizing_reordering.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.column_headers.js","webpack:///./node_modules/devextreme/ui/html_editor/formats/font.js","webpack:///./node_modules/devextreme/viz/translators/logarithmic_translator.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.state_storing.js","webpack:///./node_modules/devextreme/viz/linear_gauge.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.filter_row.js","webpack:///./node_modules/devextreme/viz/axes/strip.js","webpack:///./node_modules/devextreme/ui/tab_panel.js","webpack:///./node_modules/devextreme/ui/hierarchical_collection/ui.data_adapter.js","webpack:///./node_modules/devextreme/viz/components/data_validator.js","webpack:///./node_modules/devextreme/core/options/option_manager.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/row.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_headers.js","webpack:///./node_modules/devextreme/ui/hierarchical_collection/ui.data_converter.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_state_mixin.js","webpack:///./node_modules/devextreme/localization/language_codes.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.vertical.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.data_controller.js","webpack:///./node_modules/devextreme/core/templates/template.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grid_view.js","webpack:///./node_modules/devextreme/ui/toolbar.js","webpack:///./node_modules/devextreme/ui/scheduler/utils.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/time_panel/layout.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.virtual_scrolling.js","webpack:///./node_modules/devextreme/core/template_manager.js","webpack:///./node_modules/devextreme/events/hover.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.columns_controller.js","webpack:///./node_modules/devextreme/ui/defer_rendering.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.context_menu.js","webpack:///./node_modules/devextreme/viz/components/consts.js","webpack:///./node_modules/devextreme/ui/pivot_grid.js","webpack:///./node_modules/devextreme/events/index.js","webpack:///./node_modules/devextreme/ui/notify.js","webpack:///./node_modules/devextreme/ui/menu.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.virtual_scrolling.js","webpack:///./node_modules/devextreme/events/utils/event_nodes_disposing.js","webpack:///./node_modules/devextreme/ui/html_editor/modules/widget_collector.js","webpack:///./node_modules/devextreme/localization/cldr-data/parent_locales.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.swipe.js","webpack:///./node_modules/devextreme/ui/accordion.js","webpack:///./node_modules/devextreme/viz/funnel/tiling.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.field_chooser.js","webpack:///./node_modules/devextreme/viz/core/base_theme_manager.js","webpack:///./node_modules/devextreme/ui/html_editor/quill_registrator.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.header_panel.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.navigator.js","webpack:///./node_modules/devextreme/data/query_adapters.js","webpack:///./node_modules/devextreme/viz/range_selector/common.js","webpack:///./node_modules/devextreme/viz/series/points/bar_point.js","webpack:///./node_modules/devextreme/ui/overlay/z_index.js","webpack:///./node_modules/devextreme/exporter/jspdf/export_data_grid.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.provider.js","webpack:///./node_modules/devextreme/viz/palette.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.sorting.js","webpack:///./node_modules/devextreme/ui/overlay/ui.overlay.js","webpack:///./node_modules/devextreme/excel_exporter.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_row.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollable.device.js","webpack:///./node_modules/devextreme/core/utils/comparator.js","webpack:///./node_modules/devextreme/viz/chart_components/scroll_bar.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.field_chooser_base.js","webpack:///./node_modules/devextreme/events/core/wheel.js","webpack:///./node_modules/devextreme/viz/gauges/base_range_container.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.keyboard_navigation.js","webpack:///./node_modules/devextreme/viz/translators/interval_translator.js","webpack:///./node_modules/devextreme/core/utils/deferred.js","webpack:///./node_modules/devextreme/viz/series/base_series.js","webpack:///./node_modules/devextreme/mobile/hide_top_overlay.js","webpack:///./node_modules/devextreme/core/dom_adapter.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.adaptivity.js","webpack:///./node_modules/devextreme/viz/series/bubble_series.js","webpack:///./node_modules/devextreme/ui/scheduler/dataStructures.js","webpack:///./node_modules/devextreme/core/utils/type.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/table_body.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.editor_factory.js","webpack:///./node_modules/devextreme/ui/overlay.js","webpack:///./node_modules/devextreme/core/utils/browser.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.error_handling.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.editor_factory.js","webpack:///./node_modules/devextreme/viz/series/pie_series.js","webpack:///./node_modules/devextreme/viz/axes/smart_formatter.js","webpack:///./node_modules/devextreme/core/component.js","webpack:///./node_modules/devextreme/viz/funnel/tiling.pyramid.js","webpack:///./node_modules/devextreme/ui/filter_builder/utils.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_panel.js","webpack:///./node_modules/devextreme/events/pointer/observer.js","webpack:///./node_modules/devextreme/ui/multi_view.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.selection.js","webpack:///./node_modules/devextreme/viz/translators/translator1d.js","webpack:///./node_modules/devextreme/core/utils/dom.js","webpack:///./node_modules/devextreme/core/templates/template_engines.js","webpack:///./node_modules/devextreme/viz/series/bar_series.js","webpack:///./node_modules/devextreme/exporter/excel/excel.color_helper.js","webpack:///./node_modules/devextreme/viz/series/points/candlestick_point.js","webpack:///./node_modules/devextreme/ui/autocomplete.js","webpack:///./node_modules/devextreme/localization/open_xml_currency_format.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.vertical.js","webpack:///./node_modules/devextreme/animation/position.js","webpack:///./node_modules/devextreme/exporter/excel/excel.pattern_fill_helper.js","webpack:///./node_modules/devextreme/viz/vector_map/vector_map.utils.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.columns_resizing_reordering.js","webpack:///./node_modules/devextreme/viz/core/annotations.js","webpack:///./node_modules/devextreme/ui/tree_list.js","webpack:///./node_modules/devextreme/color.js","webpack:///./node_modules/devextreme/ui/scheduler/constants.js","webpack:///./node_modules/devextreme/events/pointer/base.js","webpack:///./node_modules/devextreme/ui/popover.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.js","webpack:///./node_modules/devextreme/viz/chart_components/advanced_chart.js","webpack:///./node_modules/devextreme/ui/widget/ui.search_box_mixin.js","webpack:///./node_modules/devextreme/ui/form/ui.form.layout_manager.js","webpack:///./node_modules/devextreme/ui/text_box/utils.caret.js","webpack:///./node_modules/devextreme/viz/series/points/pie_point.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.header_filter.js","webpack:///./node_modules/devextreme/events/pointer/mouse.js","webpack:///./node_modules/devextreme/core/utils/ready_callbacks.js","webpack:///./node_modules/devextreme/viz/vector_map/event_emitter.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment.js","webpack:///./node_modules/devextreme/core/utils/inflector.js","webpack:///./node_modules/devextreme/viz/gauges/linear_gauge.js","webpack:///./node_modules/devextreme/ui/tag_box.js","webpack:///./node_modules/devextreme/ui/scheduler/compactAppointmentsHelper.js","webpack:///./node_modules/devextreme/exporter/file_saver.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.sorting.js","webpack:///./node_modules/devextreme/viz/chart_components/base_chart.js","webpack:///./node_modules/devextreme/viz/circular_gauge.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/cell.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.js","webpack:///./node_modules/devextreme/ui/widget/utils.ink_ripple.js","webpack:///./node_modules/devextreme/ui/text_box/ui.text_editor.base.js","webpack:///./node_modules/devextreme/ui/pivot_grid/remote_store.utils.js","webpack:///./node_modules/devextreme/ui/tree_list/ui.tree_list.error_handling.js","webpack:///./node_modules/devextreme/viz/components/legend.js","webpack:///./node_modules/devextreme/ui/text_box.js","webpack:///./node_modules/devextreme/ui/pivot_grid/data_source.utils.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.data_controller.js","webpack:///./node_modules/devextreme/viz/core/themes/material.js","webpack:///./node_modules/devextreme/core/utils/data.js","webpack:///./node_modules/devextreme/core/utils/storage.js","webpack:///./node_modules/devextreme/core/utils/math.js","webpack:///./node_modules/devextreme/ui/themes_callback.js","webpack:///./node_modules/devextreme/ui/widget/ui.widget.js","webpack:///./node_modules/devextreme/viz/core/themes/generic.dark.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.switchable.button.js","webpack:///./node_modules/devextreme/viz/vector_map/map_layer.js","webpack:///./node_modules/devextreme/ui/drop_down_editor/ui.drop_down_button.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table_body.js","webpack:///./node_modules/devextreme/ui/scheduler/base/widgetObserver.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scroll_view.js","webpack:///./node_modules/devextreme/core/utils/iterator.js","webpack:///./node_modules/devextreme/viz/funnel/item.js","webpack:///./node_modules/devextreme/ui/context_menu.js"],"names":["exports","DataSource","_class","_interopRequireDefault","_extend","_common","_iterator","_type","_utils","_array_utils","_custom_store","_events_strategy","_errors","_array","_queue","_deferred","_operation_manager","_utils2","obj","__esModule","default","inherit","ctor","options","_options$reshapeOnPus","_this","this","normalizeDataSourceOptions","_eventsStrategy","EventsStrategy","onPushHandler","pushAggregationTimeout","throttleChanges","_onPush","_changedTime","_onPushHandler","changes","_aggregationTimeoutId","call","_store","store","on","_storeLoadOptions","_extractLoadOptions","_mapFunc","map","_postProcessFunc","postProcess","_pageIndex","pageIndex","_pageSize","pageSize","_loadingCount","_loadQueue","_createLoadQueue","_searchValue","searchValue","_searchOperation","searchOperation","_searchExpr","searchExpr","_paginate","paginate","_reshapeOnPush","reshapeOnPush","each","_","optionName","substr","toLowerCase","_operationManager","_init","_items","_userData","_totalCount","_isLoaded","isDefined","group","_isLastPage","dispose","_this$_delayedLoadTas","off","clearTimeout","_delayedLoadTask","abort","cancelAll","_disposed","result","names","customNames","_customLoadOptions","concat","loadOptions","items","newIndex","isNumeric","value","isBoolean","isLastPage","generateStoreLoadOptionAccessor","_this2","args","normalizedArgs","normalizeStoreLoadOptionAccessorArguments","sort","_len","arguments","length","Array","_key","filter","newFilter","_len2","_key2","select","_len3","_key3","requireTotalCount","op","isString","expr","argc","slice","key","_this$_store","totalCount","isLoaded","isLoading","beginLoading","_changeLoadingCount","endLoading","create","increment","oldLoading","newLoading","fireEvent","_scheduleLoadCallbacks","deferred","_this3","always","_scheduleFailCallbacks","_this4","fail","_len4","_key4","CANCELED_TOKEN","_fireChanged","date","Date","_scheduleChangedCallbacks","_this5","done","loadSingle","propName","propValue","_this6","d","Deferred","_createStoreLoadOptions","handleDone","data","isEmpty","reject","errors","Error","isArray","resolve","_applyMapFunction","skip","refresh","searchString","shouldForceByKey","_byKeyViaLoad","byKey","take","load","promise","_this7","loadTask","isPending","_loadFromStore","loadOperation","_createLoadOperation","add","delay","executeAsync","operationId","_this8","groupLevel","dataSourceChanges","item","type","forEach","applyBatch","keyInfo","groupCount","useInsertIndex","_this9","storeLoadOptions","remove","reload","clearRawDataCache","cancel","_addSearchOptions","_useDefaultSearch","_addSearchFilter","extend","userData","selector","searchFilter","i","push","pendingDeferred","_this10","handleSuccess","extra","loadResult","normalizeLoadResult","when","_processStoreLoadResult","_this11","resolvePendingDeferred","isFinite","_applyPostProcessFunction","isPlainObject","count","mapDataRespectingGrouping","eventName","eventHandler","_renderer","_events_engine","_index","_uiListEdit","_uiListEdit2","_sortable","register","list","_list","_groupedEnabled","option","_lockedDrag","_createComponent","_scrollView","content","component","contentTemplate","allowReordering","container","$element","dragDirection","handle","dragTemplate","_dragTemplate","onDragStart","_dragStartHandler","bind","onDragChange","_dragChangeHandler","onReorder","_reorderHandler","e","itemElement","clone","width","addClass","_sameParent","fromIndex","toIndex","$dragging","getItemElementByFlatIndex","parent","get","$targetElement","reorderItem","afterBag","config","$handle","isMouseEvent","timeout","$container","append","waitForThemeLoad","init","current","attachCssClasses","detachCssClasses","isMaterial","isGeneric","themeName","isTheme","isDark","isWebFontLoaded","waitWebFont","text","fontWeight","_promise","clear","clearInterval","intervalId","timeoutId","setInterval","setTimeout","ready","callback","_themes_callback","themeReadyCallback","resetTheme","$activeThemeLink","attr","currentThemeName","pendingThemeName","initDeferred","initialized","setDefaultTimeout","defaultTimeout","_devices","_dom_adapter","_html_parser","_ready_callbacks","_view_port","_window","_ui","context","knownThemes","themeClasses","window","getWindow","viewPort","viewPortChanged","changeCallback","readThemeMarker","hasWindow","element","appendTo","documentElement","css","replace","waitStartTime","timerId","intervalCleared","handleLoaded","fire","empty","isPendingThemeLoaded","now","isTimeout","log","anyThemePending","state","themeMarker","resolveFullThemeName","desiredThemeName","desiredThemeParts","split","knownThemeName","themeData","knownThemeParts","isActive","$allThemeLinks","newContext","x","initContext","getDocument","parseHTML","link","fullThemeName","url","last","after","theme","currentThemeData","isAutoInit","_autoInit","loadCallback","has","_forceTimeout","originalViewPort","themeNameParts","getCssClasses","join","pixelRatio","devicePixelRatio","$tester","outerHeight","activateHairlines","removeClass","themeRegExp","RegExp","test","document","testElement","createElement","style","position","top","left","visibility","fontFamily","fontSize","innerHTML","body","appendChild","etalonFontWidth","offsetWidth","testedFontWidth","parentNode","removeChild","autoInit","prevViewPort","changed","module","_consts","_extend2","_range","_component_registrator","_base_chart","_translator1d","_annotations","states","seriesSpacing","pieSeriesSpacing","NORMAL_STATE","normalMark","HOVER_STATE","hoverMark","SELECTED_STATE","selectedMark","LEGEND_ACTIONS","resetItem","applyHover","applySelected","correctPercentValue","pieSizeEqualizer","removeFromList","li","pies","timers","queue","pie","getSizeGroup","allPies","p","_isVisible","minRadius","Math","min","apply","getSizeGroupLayout","radius","minPie","render","force","sizeGroupLayout","equalize","dxPieChart","BaseChart","_themeSection","_layoutManagerOptions","callBase","piePercentage","_themeManager","getOptions","minPiePercentage","_optionChangesMap","diameter","minDiameter","sizeGroup","_disposeCore","_groupSeries","series","_groupsData","groups","valueOptions","valueType","argumentOptions","getArgumentAxis","_getValueAxis","translator","Translator1D","setCodomain","getTranslator","setBusinessRange","range","setDomain","max","_populateBusinessRange","Range","addRange","getRangeData","val","getValueAxis","_specialProcessSeries","singleSeries","arrangePoints","_checkPaneName","_processSingleSeries","_handleSeriesDataUpdated","maxPointCount","s","getPointsCount","setMaxPointsCount","_getLegendOptions","legendItem","legendData","argument","argumentIndex","points","_getLegendTargets","that","itemsByArgument","getPoints","point","valueOf","index","getPointsByArg","indexOf","toString","argumentCount","Object","keys","visible","isVisible","_getLayoutTargets","canvas","_canvas","_getLayoutSeries","drawOptions","layout","drawnLabels","layoutManager","applyPieChartSeriesLayout","correctPosition","drawLabelsWOPoints","hideLayoutLabels","hideLabels","_sizeGroupLayout","centerX","y","centerY","radiusOuter","_getLayoutSeriesForEqualPies","applyEqualPieChartLayout","correctPieLabelRadius","_updateSeriesDimensions","innerRad","delta","visibleSeries","_getVisibleSeries","lengthVisibleSeries","radiusInner","_setGeometry","correctRadius","_renderSeries","isRotated","isLegendInside","_calculateSeriesLayout","_clearCanvas","_renderSeriesElements","_renderExtraElements","template","_centerTemplateGroup","g","patchFontOptions","_font","root","_getTemplate","model","onRendered","bBox","getBBox","move","_center","height","getInnerRadius","_innerRadius","_getLegendCallBack","legend","_legend","target","getActionCallback","id","seriesPoints","getPointsByKeys","_point$series","seriesOptions","pointState","fullState","hoverMode","selectionMode","getLegendItemAction","_locateLabels","resolveLabelOverlapping","labelsWereOverlapped","wordWrapApplied","iterationCount","_adjustSeriesLabels","_resolveLabelOverlapping","moveLabelsFromCenter","reduce","r","adjustLabels","_applyExtraSettings","noop","_resolveLabelOverlappingShift","inverseDirection","seriesByPosition","label","outside","inside","columns","labelsOverlapped","getVisiblePoints","right","shiftInColumnFunction","dividePoints","box","getVerticallyShiftedAngularCoords","angle","normalizeAngle","middleAngle","shiftCallback","overlapped","reverse","overlapping","resolveLabelOverlappingInOneDirection","_ref","_disposeSeries","seriesIndex","_abstractSeries","_legendDataField","_legendItemTextField","_applyPointMarkersAutoHiding","_renderTrackers","_trackerType","_createScrollBar","_updateAxesLayout","_applyClipRects","_appendAdditionalSeriesGroups","_prepareToRender","_isLegendInside","_renderAxes","_shrinkAxes","_isRotated","_seriesPopulatedHandlerCore","_reinitAxes","_correctAxes","_getExtraOptions","startAngle","innerRadius","segmentsDirection","name","prototype","addPlugin","plugins","core","pieChart","_default","getSizeValue","getElementWidth","outerWidth","size","_uiList","_addWidgetPrefix","className","_getCombinedFilter","dataSource","_dataSource","_initDataSource","mode","getOperationBySearchMode","_date","_translator","_date2","_constants","toMs","dateToMilliseconds","HOUR_MS","isCurrentViewAgenda","currentViewUpdated","currentView","currentDateUpdated","getOption","isVirtualScrolling","setCellDataCacheAlias","appointment","geometry","_workSpace","createAppointmentSettings","_getAppointmentSettingsGenerator","isGroupedByDate","getWorkSpace","showAppointmentTooltip","targetedAppointment","getTargetedAppointment","hideAppointmentTooltip","showAddAppointmentPopup","cellData","cellGroups","appointmentAdapter","createAppointmentAdapter","allDay","startDate","timeZoneCalculator","createDate","path","endDate","resultAppointment","source","showAppointmentPopup","showEditAppointmentPopup","targetedData","updateAppointmentAfterResize","exceptionDate","dataAccessors","getAppointmentInfo","$appointment","sourceAppointment","_checkRecurringAppointment","_updateAppointment","_appointments","moveAppointmentBack","getUpdatedData","_getUpdatedData","updateAppointmentAfterDrag","info","sourceAppointmentAdapter","currentAppointmentAdapter","pathTimeZone","currentAppointmentWithoutConverting","newCellIndex","getDroppableCellIndex","oldCellIndex","getCellIndexByCoordinates","coordinates","becomeAllDay","wasAllDay","dragEvent","event","movedBetweenAllDayAndSimple","supportAllDayRow","onDeleteButtonPress","checkAndDeleteAppointment","getAppointmentColor","resourcesManager","_resourcesManager","resourceForPainting","getResourceForPainting","_getCurrentViewOption","response","field","getField","groupIndex","_getCellGroups","resourceValues","wrapToArray","getDataAccessors","itemData","groupId","getResourceColor","getHeaderHeight","_header","_$element","parseInt","getResourcesFromItem","getBoundOffset","getWorkSpaceAllDayHeight","appointmentTakesSeveralDays","_appointmentModel","getTextAndFormatDate","appointmentRaw","targetedAppointmentRaw","format","targetedAdapter","formatType","formatDate","_getTypeFormat","isAllDay","sameDate","_createAppointmentTitle","String","_formatDates","isSameDate","getDate","getResizableAppointmentArea","getLayoutManager","getRenderingStrategyInstance","_needHorizontalGroupBounds","horizontalGroupBounds","getGroupBounds","bottom","_needVerticalGroupBounds","_isVerticalGroupedWorkSpace","verticalGroupBounds","needRecalculateResizableArea","getAppointmentGeometry","settings","appointmentData","getDeltaTime","initialSize","getDropDownAppointmentWidth","_getViewCountConfig","intervalCount","getDropDownAppointmentHeight","getCellWidth","getCellHeight","getResizableStep","workSpace","cellWidth","_getGroupCount","getRenderingStrategy","_getAppointmentsRenderingStrategy","getMaxAppointmentCountPerCellByType","_getMaxAppointmentCountPerCellByType","needCorrectAppointmentDates","getRenderingStrategyDirection","getDirection","getWorkSpaceDateTableOffset","getFullWeekAppointmentWidth","getGroupWidth","getMaxAppointmentWidth","getCellCountToLastViewDate","updateAppointmentStartDate","updatedStartDate","firstViewDate","getStartViewDate","startDayHour","appointmentTakesAllDay","normalizeDate","roundDateByStartDayHour","updateAppointmentEndDate","endDayHour","updatedEndDate","getHours","setHours","getMinutes","getTime","renderCompactAppointments","_compactAppointmentsHelper","clearCompactAppointments","supportCompactDropDownAppointments","_supportCompactDropDownAppointments","isApplyCompactAppointmentOffset","_isApplyCompactAppointmentOffset","getGroupCount","mapAppointmentFields","appointmentElement","targetedAppointmentData","getOffsetByAllDayPanel","_getOffsetByAllDayPanel","getGroupTop","_getGroupTop","updateResizableArea","$allResizableElements","find","horizontalResizables","grep","el","resizableInst","dxResizable","area","inArray","$el","locate","_getItemData","_calculateResizableArea","_dataAccessors","getter","setField","setter","splitExprStr","rootField","emptyChain","arr","tmp","arrLength","renderAppointments","_renderAppointments","prerenderFilter","dateRange","getDateRange","resources","getResourcesData","filterLoadedAppointments","firstDayOfWeek","getFirstDayOfWeek","recurrenceException","_getRecurrenceException","prerenderFilterVirtual","workspace","isAllDaySupported","viewDataProvider","groupedDataToRender","viewData","groupedData","dateTable","isVerticalGrouping","endViewDate","getEndViewDateByEndDayHour","filterOptions","_ref2","allDayPanel","getGroupStartDate","getGroupEndDate","getCellsGroup","groupResources","getResourcesDataByGroups","filterLoadedVirtualAppointments","dayHasAppointment","day","trimTime","createResourcesTree","_loadedResources","getResourceTreeLeaves","tree","appointmentResources","createReducedResourcesTree","reduceResourcesTree","getFilteredItems","groupAppointmentsByResources","appointments","0","totalResourceCount","resource","j","getAgendaRows","renderingStrategy","_layoutManager","calculateRows","_dataSourceLoadedCallback","rowsCalculated","agendaDuration","currentDate","getAgendaVerticalStepHeight","getAgendaDuration","getEndViewDate","getMaxAppointmentsPerCell","forceMaxAppointmentPerCell","onAgendaReady","rows","$appts","getAppointmentsInstance","_itemElements","total","applyClass","eq","AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS","getTimezone","_getTimezoneOffsetByOption","getClientTimezoneOffset","convertDateByTimezone","appointmentTimezone","skipAppointmentTimezone","tzOffsets","_subscribes","getComplexOffsets","translateDateToAppointmentTimeZone","translateDateToCommonTimeZone","convertDateByTimezoneBack","offsets","back","operation","dateInUTC","client","common","offset","hoursOffset","floor","abs","minutesOffset","setMinutes","scheduler","clientTimezoneOffset","commonTimezoneOffset","appointmentTimezoneOffset","calculateTimezoneByValue","getTargetedAppointmentData","getAppointmentDurationInMs","appointmentDuration","dayDuration","visibleDayDuration","getVisibleDayDuration","ceil","tailDuration","isDifferentDates","isSameAppointmentDates","floorQuantityOfDays","startDateEndHour","hiddenDayDuration","startDayTime","endPartDuration","replaceWrongEndDate","calculateAppointmentEndDate","_calculateAppointmentEndDate","getEndDayHour","getStartDayHour","isAdaptive","moveBack","dragBehavior","validateDayHours","removeDroppableCellClass","_uiData_grid","_uiGrid_core","registerModule","logarithmic","discrete","numeric","center","horizontal","vertical","convertTicksToValues","ticks","validateOverlappingMode","getTicksCountInRange","valueKey","coords","areLabelsOverlap","bBox1","bBox2","spacing","alignment","horizontalInverted","verticalInverted","x1","x2","width1","width2","hasHorizontalOverlapping","hasVerticalOverlapping","E0001","E0002","E0003","E0004","E0005","E0006","E0007","E0008","E0009","E0010","E0011","E0012","E0013","E0014","E0015","E0017","E0018","E0020","E0021","E0022","E0023","E0024","E0025","E0100","E0101","E0102","E0103","E0110","E0120","E0121","W0000","W0001","W0002","W0003","W0004","W0005","W0006","W0007","W0008","W0009","W0010","W0011","W0012","W0013","W0014","W0015","W0016","getFormat","_number","FORMAT_SEPARATORS","checkDigit","char","code","convertDigits","charCodeAt","zeroCode","checkPatternContinue","isDigit","nextChar","getPatternStartIndex","defaultPattern","formatValue","formatter","ESCAPE_CHARS_REGEXP","processedIndexes","patternPositions","replacedPatterns","datePatterns","pattern","diff","patterns","patternsFilter","unshift","getDifference","indexes","patternIndex","letterCount","pop","baseCharIndex","replaceCharsCore","replaceChars","escapeIndexes","match","isCurrentCharEscaped","isPrevCharEscaped","isNextCharEscaped","escapeChars","_message","_uiListEdit3","_overlay","$menu","_menu","_renderOverlay","shading","deferRendering","closeOnTargetScroll","closeOnOutsideClick","closest","animation","show","duration","from","opacity","to","_$menuList","hide","onContentReady","_renderMenuContent","$overlayContent","$content","_menuItems","_deleteEnabled","action","_deleteItem","ListBase","onItemClick","_menuItemClickHandler","integrationOptions","_fireMenuAction","_$itemWithMenu","deleteItem","handleContextMenu","$itemElement","my","at","of","collision","include","_uiCollection_widget","_initMarkup","_deferredItems","_renderItemContent","renderContentDeferred","itemDeferred","$itemContent","_createItemByTemplate","itemTemplate","renderArgs","_postProcessRenderItems","_renderItemsAsync","_clean","_uiTree_list","AppointmentForm","APPOINTMENT_FORM_GROUP_NAMES","_form","_date_serialization","_data_source","Main","Recurrence","SchedulerAppointmentForm","_appointmentForm","_lockDateShiftFlag","_validateAppointmentFormDate","editor","previousValue","_getAllDayStartDate","_getAllDayEndDate","setDate","_getStartDateWithStartHour","componentCreator","isReadOnly","formData","_editors","readOnly","showValidationSummary","scrollingEnabled","colCount","colCountByScreen","lg","xs","showColonAfterLabel","labelLocation","screenByWidth","deviceType","_dateBoxValueChanged","dateExpr","isNeedCorrect","deserializeDate","dateEditor","getEditor","dateValue","_createTimezoneEditor","timeZoneExpr","secondTimeZoneExpr","visibleIndex","colSpan","isMainTimeZone","isShow","noTzTitle","dataField","editorType","editorOptions","displayExpr","valueExpr","placeholder","searchEnabled","onValueChanged","secondTimezoneEditor","_createDateBoxEditor","dataExpr","validationRules","calendarOptions","_createDateBoxItems","dataExprs","schedulerInst","allowTimeZoneEditing","startDateExpr","endDateExpr","endValue","startValue","startDateTimeZoneExpr","endDateTimeZoneExpr","_createMainItems","triggerResize","changeSize","textExpr","itemType","allDayExpr","cssClass","location","startDateEditor","endDateEditor","allDayStartDate","startDateWithStartHour","calculateEndDate","form","itemOption","_updateRecurrenceItemVisibility","recurrenceRuleExpr","descriptionExpr","_form$getEditor","updateData","changeValueByVisibility","prepareAppointmentFormEditors","recurrenceEditorVisibility","getRecurrenceRule","_createRecurrenceEditor","concatResources","setEditorsType","startDateItemPath","endDateItemPath","startDateFormItem","endDateFormItem","startDateEditorOptions","endDateEditorOptions","updateTimeZoneEditorDataSource","expression","getDisplayedTimeZones","setEditorOptions","updateRecurrenceEditorStartDate","groupName","editorPath","updateFormData","appointmentForm","_support","_element","_themes","_click","_popover","_text_box","_child_default_template","Lookup","_supportedKeys","space","preventDefault","_validatedOpening","enter","_getDefaultOptions","searchPlaceholder","cleanSearchOnOpening","showCancelButton","showClearButton","clearButtonText","applyButtonText","pullRefreshEnabled","useNativeScrolling","pullingDownText","pulledDownText","refreshingText","pageLoadingText","onScroll","onPullRefresh","onPageLoading","pageLoadMode","nextButtonText","grouped","groupTemplate","usePopover","showDropDownButton","focusStateEnabled","dropDownOptions","showTitle","title","titleTemplate","onTitleRendered","fullScreen","dropDownCentered","_scrollToSelectedItemEnabled","useHiddenSubmitElement","_defaultOptionsRules","device","nativeScrolling","_device","isSimulator","real","platform","phone","tablet","useInkRipple","_getPopupHeight","_initActions","_initScrollAction","_initPageLoadingAction","_initPullRefreshAction","_pageLoadingAction","_createActionByOption","_pullRefreshAction","_scrollAction","_scrollHandler","_pullRefreshHandler","_pageLoadingHandler","_initTemplates","_templateManager","addDefaultTemplates","ChildDefaultTemplate","toggleClass","_inputWrapper","_dataSourceOptions","_fireContentReadyAction","_popupWrapperClass","_renderInput","fieldClickAction","_createAction","_toggleOpenState","_$field","addNamespace","NAME","$arrow","_$fieldWrapper","_renderInkRipple","_getInputContainer","_inkRipple","_setPopupPosition","_toggleActiveState","showWave","hideWave","_renderField","fieldTemplate","_getTemplateByOption","_renderFieldTemplate","displayValue","_updateField","_renderDisplayText","_input","_fieldRenderData","getPublicElement","_popupShowingHandler","_searchBox","_searchCanceled","_popup","_scrollToSelectedItem","selectedIndex","listItems","itemsCount","scrollToItem","_getDifferenceOffsets","selectedListItem","_isCenteringEnabled","_getPopupOffset","listItemsCount","_listItemElements","differenceOfHeights","lookupOffset","dropDownHeightOption","popupHeight","windowHeight","offsetTop","scrollOffsetTop","scrollTo","scrollTop","MATERIAL_LOOKUP_LIST_PADDING","offsetBottom","_$wrapper","hasClass","popupContentParent","popupOffset","_listItemGroupedElements","_itemContainer","children","_calculateListHeight","listHeight","itemElements","_$searchWrapper","_$bottom","_$title","_renderPopup","_renderPopover","_$popup","_wrapper","_popupConfig","_options","cache","showEvent","hideEvent","_fixedPosition","_isInitialOptionValue","showing","shown","_popupShownHandler","hiding","_popupHidingHandler","hidden","_popupHiddenHandler","contentReady","_contentReadyHandler","_$arrow","_setPopupContentId","focus","resetPosition","_preventFocusOnPopup","toolbarItems","_getPopupToolbarItems","onPositioned","maxHeight","popupOptionValue","buttonsConfig","_popupToolbarItemsConfig","cancelButton","_getCancelButtonConfig","clearButton","_getClearButtonConfig","_applyButtonsLocation","shortcut","onClick","_applyButtonHandler","_cancelButtonHandler","onInitialized","registerKeyHandler","close","_resetValue","_valueGetter","_currentSelectedItem","_refreshSelected","_refreshPopupVisibility","_updatePopupDimensions","_dimensionChanged","_$searchBox","_renderPopupContent","_renderSearch","isSearchEnabled","_toggleSearchClass","$searchWrapper","$searchBox","currentDevice","searchMode","android","version","isKeyboardListeningEnabled","onDisposing","onFocusIn","onFocusOut","onKeyboardHandled","opts","_keyboardHandler","valueChangeEvent","_searchHandler","_registerSearchKeyHandlers","insertBefore","_$list","_setSearchPlaceholder","_removeSearch","_selectListItemHandler","_saveValueChangeEvent","_selectListItem","minSearchLength","getFormatter","_setAriaTargetForList","_renderList","_listConfig","tabIndex","indicateLoading","onSelectionChanged","_getSelectionChangedHandler","_selectionChangeHandler","_listContentReadyHandler","_setFocusPolicy","trigger","_focusTarget","_keyboardEventBindingTarget","_listItemClickHandler","currentTarget","selectItem","_renderInputValue","_renderPlaceholder","_setDeprecatedOptions","_deprecatedOptions","since","alias","popupWidth","_optionChanged","_setPopupOption","_invalidate","initialOption","_setListOption","axis","parsedValue","lastStoredCoordinates","storedCoord","labelOptions","labelPosition","valueIsParsed","_checkAlignmentConstantLineLabels","line","getParsedValue","validateUnit","draw","getBusinessRange","_getCanvasStartEnd","coord","_getConstantLinePos","start","end","rootGroup","displayBehindSeries","_axisConstantLineGroups","under","above","_isHorizontal","verticalAlignment","horizontalAlignment","_createConstantLine","stroke","color","dashStyle","_drawConstantLineLabels","updatePosition","getContentContainer","removeLabel","animate","_getConstantLineLabelsCoords","_getConstantLineGraphicAttributes","_rotateConstantLine","saveCoords","resetCoordinates","_typeof","Symbol","iterator","constructor","_devextremeQuill","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_get","property","receiver","Reflect","base","object","hasOwnProperty","_getPrototypeOf","_superPropBase","desc","getOwnPropertyDescriptor","_setPrototypeOf","o","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","getPrototypeOf","Variable","_Embed","subClass","superClass","_inherits","protoProps","staticProps","_super","startEscapeChar","endEscapeChar","node","escapeChar","ensureDefined","innerText","dataset","varStartEscChar","varEndEscChar","varValue","import","blotName","tagName","_projection","projection","_min","_max","_sin","sin","_asin","asin","_tan","tan","_atan","atan","_exp","exp","_log","PI","PI_DIV_4","RADIANS","MERCATOR_LAT_BOUND","MILLER_LAT_BOUND","clamp","threshold","aspectRatio","_data","depthFirstSearch","depth","array","normalizeAggregate","aggregate","compileGetter","skipEmptyValues","aggregator","aggregators","_groupLevel","_totalAggregates","totalAggregates","_groupAggregates","groupAggregates","_totals","calculate","_calculateTotals","_calculateGroups","_aggregate","aggregates","_accumulate","level","_seed","_finalize","maxLevel","currentLevel","seedFn","stepFn","finalizeFn","innerNode","isFunction","seed","NaN","aggregateIndex","results","step","fin","finalize","_color","_editor","_number_box","_draggable","COLOR_VIEW_PALETTE_GRADIENT_CLASS","COLOR_VIEW_PALETTE_GRADIENT_WHITE_CLASS","COLOR_VIEW_PALETTE_GRADIENT_BLACK_CLASS","COLOR_VIEW_COLOR_PREVIEW","COLOR_VIEW_COLOR_PREVIEW_COLOR_CURRENT","COLOR_VIEW_COLOR_PREVIEW_COLOR_NEW","ColorView","isRTL","getHorizontalPaletteStep","_paletteWidth","shiftKey","round","updateHorizontalPaletteValue","_currentColor","hsv","updatePaletteValue","getVerticalPaletteStep","_paletteHeight","updateVerticalPaletteValue","v","_placePaletteHandle","_updateColorFromHsv","h","getHueScaleStep","_hueScaleWrapperHeight","_hueScaleHandleHeight","updateHueScaleValue","_placeHueScaleHandle","handleLocation","_$hueScaleHandle","_updateColorHue","getAlphaScaleStep","_alphaChannelScaleWorkWidth","updateAlphaScaleValue","a","_placeAlphaChannelHandle","_$alphaChannelHandle","_calculateColorTransparencyByScaleWidth","_alphaChannelHandleWidth","upArrow","stopPropagation","ctrlKey","_isTopColorHue","downArrow","rightArrow","leftArrow","_fireEnterKeyPressed","matchValue","onEnterKeyPressed","editAlphaChannel","keyStep","stylingMode","_initColorAndOpacity","_initEnterKeyPressedAction","_onEnterKeyPressedAction","_setCurrentColor","newColor","colorIsInvalid","baseColor","_makeRgba","_$currentColor","_makeTransparentBackground","_setBaseColor","_$baseColor","_renderColorPickerContainer","_render","_renderPalette","_renderHueScale","_renderControlsContainer","_renderControls","_renderAlphaChannelElements","b","_renderValue","$parent","_$colorPickerContainer","_renderHtmlRows","updatedOption","$renderedRows","renderedRowsCount","_renderHtmlCellInsideRow","$rowParent","additionalClass","$paletteCell","$paletteGradientWhite","$paletteGradientBlack","_$palette","getPureColor","toHex","_renderPaletteHandle","_$paletteHandle","boundary","allowMoveByClick","boundOffset","_paletteHandleHeight","onDragMove","paletteHandlePosition","_updateByDrag","_calculateColorSaturation","_calculateColorValue","_paletteHandleWidth","saturation","hue","_updateColorParamsAndColorPreview","applyColor","$hueScaleCell","_$hueScaleWrapper","_$hueScale","_hueScaleHeight","_renderHueScaleHandle","hueScaleHeight","handleHeight","handlePosition","$controlsContainerCell","_$controlsContainer","_renderColorsPreview","_renderRgbInputs","_renderHexInput","$colorsPreviewContainer","$colorsPreviewContainerInner","_renderAlphaChannelScale","_renderAlphaChannelInput","_rgbInputsWithLabels","_renderEditorWithLabel","_updateColor","labelText","labelAriaText","labelClass","_rgbInputs","dxNumberBox","$editor","$label","setAria","hexInputOptions","_hexInput","getInstance","$alphaChannelScaleCell","$alphaChannelBorder","$alphaChannelScaleWrapper","_$alphaChannelScale","_makeCSSLinearGradient","_renderAlphaChannelHandle","colorAsRgb","colorAsHex","rtlEnabled","startColor","finishColor","$alphaChannelInputCell","_alphaChannelInput","isValidAlpha","_updateColorTransparency","transparency","$alphaChannelHandle","alphaChannelHandlePosition","toFixed","colorValue","cancelColor","_refreshMarkup","isHex","rgba","_validateHex","_validateRgb","_suppressEditorsValueUpdating","hex","isValidHex","isValidRGB","_callbacks","_call_once","prevSize","callbacks","originalCallbacksAdd","originalCallbacksRemove","removeListener","formatSize","innerWidth","innerHeight","handleResize","changedDimension","setPrevSize","listen","_selectors","_string","_wheel","_uiText_editorMask","_uiText_editor","_uiText_editorMaskStrategy","_uiText_editorMaskStrategy2","stubCaret","caret","buildInMaskRules","9","L","isLiteralChar","l","isSpaceChar","C","c","A","isNumericChar","mask","maskChar","maskRules","maskInvalidMessage","useMaskedValue","showMaskMode","keyHandlerMap","backspace","_maskStrategy","getHandler","del","_changeHandler","parentHandler","_getSubmitElement","_$hiddenElement","_initMaskStrategy","isInputEventsL2Supported","_renderHiddenElement","_attachMouseWheelEventHandlers","_onMouseWheel","input","mouseWheelAction","focused","dxEvent","_renderMask","_removeHiddenElement","_maskRulesChain","detachEvents","attachEvents","_parseMask","_renderMaskedValue","_suppressCaretChanging","$input","inputValue","_changedValue","changeEvent","createEvent","_maskRules","_parseMaskRule","EmptyMaskRule","currentMaskChar","isEscapedChar","StubMaskRule","_getMaskRule","next","ruleConfig","rulePattern","allowedChars","MaskRule","_normalizeChainArguments","chainArgs","_isMaskedValueMode","_handleChain","_displayMask","_replaceSelectedText","selection","_caret","_isValueEmpty","_value","_shouldShowMask","_showMaskPlaceholder","hiddenElementValue","_valueChangeEventHandler","_convertToValue","_isControlKeyFired","_isControlKey","normalizeKeyName","metaKey","handledCount","_textValue","fullText","_replaceMaskCharWithEmpty","_maskKeyHandler","keyHandler","setForwardDirection","_handleSelection","previousText","raiseInputEvent","runWithoutEventProcessing","handled","then","_adjustCaret","reset","_handleKey","direction","_direction","_handleKeyChain","_moveCaret","_hasSelection","emptyChars","chars","isForwardDirection","_tryMoveCaretBackward","setBackwardDirection","currentCaret","adjustedCaret","maskRuleIndex","isAccepted","_typingDirection","clean","_validateMask","isValid","validationError","editorSpecific","message","_updateHiddenElement","removeAttr","_setSubmitElementName","_updateMaskOption","_processEmptyMask","validationRequest","continuousRangeCalculator","minValue","maxValue","createGetLogFunction","axisType","logarithmBase","getLog","getRangeCalculator","rangeCalculator","categories","interval","calculateInterval","prevValue","minInterval","minArgs","linearThreshold","getInitialRange","dataType","firstValue","processCategories","unique","calculateRangeBetweenPoints","prevPoint","bound","extraPoint","y1","y2","getValueForArgument","isLineSeries","getViewportReducer","valueAxisType","argumentAxis","viewport","visualRange","calculatePointBetweenPoints","getMarginOptions","checkInterval","getAddFunction","viewportFilter","getViewPortFilter","hasValue","startCalc","getMinValue","getMaxValue","endCalc","dictionary","category","getArgumentRange","argumentAxisType","i1","i2","useAggregation","argumentCalculator","valueRangeCalculator","viewportReducer","isArgumentCorrect","arg","argumentType","getValueRangeInitialValue","argumentRange","getViewport","reducer","some","getPointsInViewPort","argumentViewPortFilter","valueViewPort","valueViewPortFilter","addValue","values","isEdge","isMinValueInViewPort","isMaxValueInViewPort","addEdgePoints","nextPoint","plugin","ExportMenu","combineMarkups","exportWidgets","getMarkup","exportFromMarkup","_exporter","_hover","_pointer","_console","pointerActions","down","ICON_COORDS","ALLOWED_IMAGE_FORMATS","ALLOWED_EXTRA_FORMATS","GET_COLOR_REGEX","getValidFormats","imageFormats","image","testFormats","unsupported","supported","validateFormat","incidentOccurred","validFormats","toUpperCase","getCreatorFunc","svg","getData","pdf","_print","imageSrc","iFrame","onload","contentWindow","img","removeFrame","parentElement","addEventListener","print","src","setPrint","createMenuItem","renderer","itemIndex","BUTTON_SIZE","rect","LIST_WIDTH","rtl","separator","button","borderColor","cursor","sharp","getItemAttributes","fontStyle","font","menuItem","EXPORT_CSS_CLASS","fill","hover","backgroundColor","resetState","fixPosition","textBBox","markup","fileName","exportingAction","onExporting","exportedAction","onExported","fileSavingAction","onFileSaving","margin","parsedMarkup","exec","getBackgroundColorFromMarkup","getTheme","export","widgets","markupInfo","gridLayout","compactView","exportItems","row","rowIndex","rowInfo","colIndex","getSize","backgroundColors","hOffset","itemWidth","rowOffsets","totalHeight","rowHeights","maxItemLen","totalWidth","getVOffset","align","dy","getHOffset","colWidth","dx","params","_incidentOccurred","_exportTo","exportTo","_shadow","shadowFilter","_group","linkOn","_buttonGroup","_listGroup","rx","ry","_subscribeEvents","getExportOptions","widget","exportOptions","proxyUrl","svgToCanvas","forceProxy","getLayoutOptions","_hiddenDueToLayout","cutSide","cutLayoutSide","shift","translateY","layoutOptions","freeSpace","linkAppend","linkRemove","setOptions","formats","printingEnabled","enabled","_updateButton","_updateList","_hideList","_unsubscribeEvents","linkOff","weak","measure","_fillSpace","translateX","_listShown","_setButtonState","_showList","_button","_icon","up","elementType","leave","exportData","setTitle","buttonDefault","listGroup","createMenuItems","shadowColor","_exportMenu","_layout","members","_getExportMenuOptions","_getOption","_disablePointerEvents","pointerEventsValue","menu","logger","error","eventArgs","__test","customize","proto","addChange","handler","_change","isThemeDependent","isOptionChange","fontFields","_position","_fx","isElementVisible","is","_config$to","_config$to2","transform","transition","easing","Sortable","itemOrientation","dropFeedbackMode","allowDropInsideItem","moveItemOnDrop","onAdd","onRemove","onPlaceholderPrepared","dropInsideItem","itemPoints","fromIndexOffset","autoUpdate","draggableElementSize","_$placeholderElement","_isIndicateMode","_$modifiedItem","_modifiedItemMargin","_getPrevVisibleItem","$sourceElement","_getSourceElement","_updateItemPoints","_getElementIndex","_dragEnterHandler","_getSourceDraggable","lastItemPoint","isVertical","_isVerticalOrientation","sourceElementSize","scrollSize","scrollPosition","positionProp","lastPointPosition","elementPosition","freeSize","_getItems","$lastItem","marginBottom","$sortable","sortable","update","dragEnter","_getTargetDraggable","dragLeave","_isInsideTargetDraggable","$targetDraggable","$scrollable","_getScrollable","validY","pageY","validX","pageX","dragEnd","sourceEvent","cancelAdd","cancelRemove","sourceDraggable","isSourceDraggable","isInsideTargetDraggable","_fireAddEvent","_fireRemoveEvent","_moveItem","_fireReorderEvent","dragMove","scrollBy","_correctItemPoints","itemPoint","axisName","cursorPosition","centerPosition","_updatePlaceholderPosition","_verticalScrollHelper","isScrolling","_movePlaceholder","_createPlaceholder","$placeholderContainer","_$dragElement","itemsSelector","_getItemsSelector","_$content","not","toArray","_allowReordering","_isValidPoint","draggableVisibleIndex","_getItemPoints","$item","visibleItemElements","visibleItemCount","$draggableItem","_getDraggableElement","needCorrectLeftPosition","needCorrectTopPosition","_i","forceUpdate","positionPropName","_getDragTemplateArgs","_togglePlaceholder","toggle","_normalizeToIndex","isAnotherDraggable","_getEventArgs","_getAction","placeholderElement","dragElement","_makeWidthCorrection","_$scrollable","scrollableWidth","offsetLeft","offsetRight","_updatePlaceholderSizes","$placeholderElement","$prevTargetItemElement","$itemElements","$targetItemElement","_toggleDragSourceClass","_moveItemCore","$targetItem","prevItem","insertAfter","_getDragStartArgs","targetDraggable","_$sourceElement","isDragSource","$fromElement","_optionChangedDropInsideItem","_optionChangedToIndex","_isPositionVisible","scrollContainer","parents","clientRect","getBoundingRect","isVerticalOrientation","pageOffset","pageYOffset","pageXOffset","showPlaceholder","_moveItems","fullUpdate","_updateDragSourceClass","_getActualFromIndex","_makeLeftCorrection","leftMargin","scrollLeft","parseFloat","prevVisibleItemElement","_move","_getPositions","elementSize","positions","_getDraggableElementSize","_this$option","prevToIndex","prevPositions","animationConfig","prevPosition","_dispose","_emitter","_emitter_registrator","HoldEmitter","_startEventData","eventData","_startTimer","holdTimeout","_holdTimer","_requestAccept","_fireEvent","_forgetAccept","_touchWasMoved","_cancel","eventDelta","_stopTimer","emitter","bubble","events","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","n","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","VirtualSelectionState","_viewDataProvider","_focusedCell","_selectedCells","_firstSelectedCell","columnIndex","cell","getCellData","isVerticalGroupOrientation","_getColumnIndexByCellData","cellIndex","_getRowIndexByColumnAndData","lastCellCoordinates","firstCellCoordinates","lastRowIndex","lastColumnIndex","isLastCellAllDay","firstCell","lastCell","_firstCell","firstStartDate","firstGroupIndex","_lastCell","lastStartDate","cells","getCellsByGroupIndexAndAllDay","filteredCells","selectedCells","cellsRow","filteredRow","_filterCellsByDate","secondCell","releaseSelectedCells","releaseFocusedCell","nextFocusedCellData","focusedCell","nextGroupIndex","nextAllDay","viewDataMap","firstRow","startTime","_firstRow$columnIndex","currentStartDate","currentGroupIndex","currentCellData","currentAllDay","firstDate","lastDate","firstTime","lastTime","time","_item","_tabs","NavBar","_logDeprecatedComponentWarning","_postprocessRenderItem","icon","ItemClass","_uiSchedulerWork_spaceGrouped","_GroupedStrategy","HorizontalGroupedStrategy","cellCoordinates","inAllDay","_getCellCount","_getRowCount","groupByDay","cellClass","applyUnconditionally","_addLastGroupCellClass","_addFirstGroupCellClass","getLastGroupCellClass","getFirstGroupCellClass","getMaxAllowedPosition","getMaxAllowedVerticalPosition","getTimePanelWidth","getAllDayHeight","_$allDayTable","groupRowCount","groupRows","elements","cellCount","$cells","startCellIndex","startOffset","endOffset","$indicator","rtlOffset","_getIndicatorOffset","horizontalOffset","_calculateGroupByDateOffset","_calculateOffset","getRoundedCellWidth","getIndicatorOffset","_dateTableScrollable","getShaderMaxHeight","getIndicationHeight","getIndicationWidth","getScrollable","$cell","getGroupIndex","polarBarPoint","polarSymbolPoint","_symbol_point","_bar_point","_pie_point","_math","RADIAL_LABEL_INDENT","radialLabelIndent","_getLabelCoords","_getElementCoords","_moveLabelOnCanvas","visibleArea","labelBBox","minX","maxX","minY","maxY","_getLabelPosition","_getCoords","getAngles","_getArgTranslator","translate","_getValTranslator","convertPolarToXY","getCenter","_translate","maxRadius","normalizedRadius","vx","vy","radiusLabels","defaultX","defaultY","_translateErrorBars","inVisibleArea","_checkRadiusForVisibleArea","errorBars","lowError","_lowErrorCoord","highError","_highErrorCoord","_errorBarPos","_baseErrorBarPos","_getTranslates","animationEnabled","getDefaultCoords","cosSin","getCosAndSin","cos","_addLabelAlignmentAndOffset","_checkLabelPosition","_getVisibleArea","graphicBBox","_getGraphicBBox","_isPointInVisibleArea","_getErrorBarSettings","errorBarOptions","rotate","rotateX","rotateY","getCoords","_getLabelConnector","getTooltipParams","businessRange","minVisible","defaultRadius","middleAngleCorrection","_getErrorBarBaseEdgeLength","getMarkerCoords","outerRadius","endAngle","_drawMarker","styles","_getStyle","graphic","arc","angleFunctions","correctCoordinates","correctOptions","coordsIn","convertXYToPolar","isBetweenAngles","phi","_uiSchedulerAppointmentsStrategy","_HorizontalMonthLineA","HorizontalMonthRenderingStrategy","appointmentGeometry","appointmentSettings","deltaWidth","sourceAppointmentWidth","reducedWidth","fullWeekAppointmentWidth","_getFullWeekAppointmentWidth","maxAppointmentWidth","_getMaxAppointmentWidth","longPartCount","realTailWidth","tailWidth","currentPartTop","getDefaultCellHeight","_calculateMultiWeekAppointmentLeftOffset","hMax","_groupOrientation","appointmentReduced","_isRtl","_maxFullWeekAppointmentWidth","_getAppointmentHeightByTheme","_getAppointmentDefaultHeight","conditions","_getConditions","rowCondition","columnCondition","cellPositionCondition","unlimited","auto","getDropDownButtonAdaptiveSize","getDefaultCellWidth","_normalize","_generate","random","toJSON","exportDataGrid","_export","Export","isObject","selectedRowsOnly","autoFilterEnabled","getFullOptions","_getFullOptions","privateOptions","_trySetAutoFilter","dataProvider","worksheet","cellRange","headerRowCount","autoFilter","getRowsCount","dataRange","column","_trySetFont","excelCell","bold","_getWorksheetFrozenState","ySplit","getFrozenArea","_trySetOutlineLevel","outlineLevel","getGroupLevel","_getCustomizeCellOptions","gridCell","_needMergeRange","_renderLoadPanel","rowsView","getView","LayoutElement","WrapperLayoutElement","_object","_round","defaultOffset","alignFactors","renderElement","_renderElement","_cacheBBox","ofBBox","myBBox","shiftX","shiftY","wrapperLayoutElementPrototype","ItemOptionAction","_itemsRunTimeInfo","itemsRunTimeInfo","findWidgetInstanceByItem","findItemContainerByItem","abstract","getDataStrategy","strategy","beforeCleanData","beforeCleanDataFunc","afterCleanData","afterCleanDataFunc","cleanData","nodes","removeData","cleanDataRecursive","cleanSelf","isElementNode","childElements","getElementsByTagName","setDataStrategy","strategyChanging","_weak_map","_memorized_callbacks","dataMap","elementData","set","delete","extendFromObject","overrideExistingValues","prop","deep","targetValue","sourceValue","sourceValueIsArray","_base_range_container","_Number","Number","_processOptions","_inner","_outer","normalizeEnum","horizontalOrientation","verticalOrientation","_createRange","inner","outer","startPosition","endPosition","startWidth","endWidth","_uiGrid_core2","_tree_view","processItems","chooserColumns","isSelectMode","caption","allowHiding","expanded","disabled","disableCheckBox","parentId","ownerBand","selected","defaultOptions","columnChooser","allowSearch","searchTimeout","emptyPanelText","controllers","ViewController","renderShowColumnChooserButton","$columnChooserButton","columnChooserButtonClass","addWidgetPrefix","columnChooserEnabled","$showColumnChooserButton","showColumnChooser","hint","getPosition","boundaryOffset","views","columnChooserView","ColumnsView","_resizeCore","_isWinDevice","win","change","$popupContent","_popupContainer","columnChooserList","_columnChooserList","_columnsController","getChooserColumns","changeType","unselectItem","_renderTreeView","_initializePopupContainer","columnChooserOptions","isGenericTheme","dxPopupOptions","showCloseButton","dragEnabled","resizeEnabled","toolbar","getController","onHidden","renderCompleted","_renderCore","treeViewConfig","dataStructure","activeStateEnabled","hoverStateEnabled","showCheckBoxesMode","rootValue","onItemRendered","$checkBox","$treeViewNode","checkBoxInstance","scrollableInstance","isBandColumnsUsed","deferUpdate","scrollable","_prepareSelectModeConfig","_prepareDragModeConfig","noDataText","selectNodesRecursive","onItemSelectionChanged","getVisibleColumns","command","columnOption","_columnOptionChanged","changeTypes","optionNames","needPartialRender","needFullRender","showInColumnChooser","all","optionChanged","getColumnElements","$node","$nodes","getName","getColumns","allowDragging","sourceLocation","columnVisible","isParentColumnVisible","isColumnChooserVisible","_container","hideColumnChooser","popupContainer","publicMethods","extenders","headerPanel","_getToolbarItems","_appendColumnChooserItem","hintText","toolbarItem","_getToolbarButtonClass","showText","locateInMenu","sortIndex","allowMoveColumn","fromVisibleIndex","toVisibleIndex","targetLocation","SpinButtons","_TextEditorButton","$spinContainer","$spinContainerChildren","pointerDownAction","_spinButtonsPointerDownHandler","_spinUpChangeHandler","_spinDownChangeHandler","$spinUp","$spinDown","_getOptions","_addToContainer","_legacyRender","_isTouchFriendly","isTouchFriendly","$spinButtons","spinUp","spinDown","_guid","_button_group","_date_box","_recurrence","_createClass","REPEAT_END_EDITOR","INTERVAL_EDITOR","frequenciesMessages","recurrence","frequencies","repeatEndTypes","days","RecurrenceRule","rule","_recurrenceProcessor","getRecurrenceProcessor","_recurrenceRule","evalRecurrenceRule","string","until","rules","getRecurrenceString","daysFromByDayRule","RecurrenceEditor","_Editor","firstDayOfWeekIndex","_extendConfig","_$container","_prepareEditors","_renderEditors","fieldName","getRecurrenceForm","_weekEditor","_repeatCountEditor","_repeatUntilDate","freq","getRules","_createFreqEditor","_createIntervalEditor","_createRepeatOnLabel","_createRepeatOnEditor","_createRepeatEndEditor","elementAttr","_valueChangedHandler","showSpinButtons","useLargeSpinButtons","charAt","_createByDayEditor","_createByMonthEditor","_createByMonthDayEditor","_getFirstDayOfWeek","byDay","_daysOfWeekByRules","localDaysNames","getDayNames","dayNames","itemsButtonGroup","_$repeatOnWeek","selectedItemKeys","keyExpr","selectedKeys","makeRule","_changeEditorValue","monthsName","getMonthNames","_monthOfYearByRules","_dayOfMonthByRules","repeatType","getRepeatEndRule","_renderRepeatCountEditor","_renderRepeatUntilEditor","_renderDefaultRepeatEnd","_repeatEndValueChangedHandler","_recurrenceForm","_disableRepeatEndParts","labelId","_handleDefaults","makeRules","daysByRule","getDaysFromByDayRule","getDay","dayByRule","bymonthday","monthByRule","bymonth","getMonth","$editorTemplate","_getUntilValue","repeatCount","$editorWrapper","_$repeatCountEditor","_repeatCountValueChangeHandler","setToDayEnd","repeatUntil","_formatUntilDate","_$repeatDateEditor","_repeatUntilValueChangeHandler","untilDate","_makeRepeatOnRule","_changeRepeatOnVisibility","_changeRepeatIntervalLabel","_changeEditorsValue","previousFreq","_changeDayOfWeekValue","_changeDayOfMonthValue","_changeMonthOfYearValue","_changeIntervalValue","_changeRepeatCountValue","_changeRepeatEndValue","_changeRepeatUntilValue","_days","getEditorByField","month","_freqEditor","_switchEditor","_label","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","err","return","_iterableToArrayLimit","_nonIterableRest","isOutsidePosition","pos","correctYForInverted","inverted","getOutsideRightLabelPosition","verticalOffset","getOutsideLeftLabelPosition","getInsideLabelPosition","_initCore","_labelsGroup","_rootClassPrefix","_labels","_applySize","adaptiveLayout","_rect","labelWidth","_labelRect","resetEllipsis","keepLabels","_buildNodes","_createLabels","_change_TILING","textAlignment","_defaultLabelTextAlignment","labelRect","getColumnLabelLeftPosition","getColumnLabelRightPosition","borderWidth","getNormalStyle","halfBorderWidth","showForZeroValues","_correctLabelWidth","correctLabelPosition","setFigureToDrawConnector","labels","emptySpace","requiredSpace","startPoint","prevLabel","removeEmptySpace","isLeftPos","maxWidth","fit","connectorStrategy","connectorIndent","verticalCorrection","getFigureCenter","figure","isLabelInside","prepareLabelPoints","isHorizontal","findFigurePoint","adjustPoints","getConnectorStrategy","Label","labelsGroup","defaultColor","defaultTextAlignment","opt","labelFont","labelBorder","border","labelConnector","connector","backgroundAttr","connectorAttr","customizeText","attributes","background","wordWrap","textOverflow","getLabelOptions","setData","percent","_requestChange","_proxyData","_filtering","_uiGrid_core3","FILTER_ROW_OPERATIONS","getColumnIdentifier","canSyncHeaderFilterWithFilterRow","getConditionFromFilterRow","getConditionFromHeaderFilter","updateHeaderFilterCondition","updateFilterRowCondition","filterValue","filterSyncEnabled","filterSync","Controller","getGroupInterval","headerFilter","selectedFilterOperation","defaultFilterOperation","getDefaultOperation","selectedOperation","filterValues","filterType","columnsController","headerFilterCondition","hasArrayValue","getHeaderFilterFromCondition","condition","filterRowOptions","filterOperations","defaultFilterOperations","syncFilterValue","getFilteringColumns","_skipSyncColumnOptions","filterConditions","getMatchedConditions","filterCondition","_initSync","dataController","identifier","allowFiltering","checkForErrors","filteringColumns","getFilterValueFromColumns","isFilterSyncActive","isAllDataTypesDefined","dataSourceChanged","_getSyncFilterRow","syncFilters","removeFieldConditionsFromFilter","_getSyncHeaderFilter","filterRow","addItem","getNormalizedFilter","syncFilterRow","syncHeaderFilter","getCustomFilterOperations","filterBuilderCustomOperations","anyOf","noneOf","filterSyncEnabledValue","skipCalculateColumnFilters","_calculateAdditionalFilter","filters","currentColumn","getCurrentColumn","customOperations","calculatedFilterValue","getFilterExpression","combineFilters","_parseColumnPropertyName","fullName","clearFilter","filterName","beginUpdate","endUpdate","_applyFilter","getColumnByPath","filterSyncController","propertyName","columnHeadersView","_isHeaderFilterEmpty","filterHasField","_needUpdateFilterIndicators","_updateHeaderFilterIndicators","GestureHandler","_ln","_LN2","LN2","_x","_y","_subscribeToTracker","tracker","_offTracker","_processStart","_processMove","_processEnd","zoom","_processZoom","setInteraction","_centeringEnabled","centeringEnabled","_zoomingEnabled","zoomingEnabled","beginMoveCenter","moveCenter","endMoveCenter","screenPosition","ratio","getRootOffset","fromScreenPoint","changeScaledZoom","setCenterByPoint","_load_indicator","_browser","_updateLoading","removeEmptyRows","isVirtualMode","isAppendMode","isVirtualRowRendering","rowRenderingMode","_correctCount","fromEnd","isItemCountableFunc","VirtualScrollingDataSourceAdapterExtender","beginPageIndex","_virtualScrollController","viewportSize","getViewportItemIndex","_isLoading","loadingChanged","VirtualScrollController","totalItemsCount","hasKnownLastPage","isCustomLoading","pageCount","updateLoading","viewportItems","onChanged","changingDuration","_renderTime","_handleLoadingChanged","_isLoadingAll","_startLoadTime","_handleLoadError","_handleDataChanged","handleDataChanged","_customizeRemoteOperations","operationTypes","isBase","resetPagesCache","isLiveUpdate","_changeRowExpandCore","virtualScrollController","delayDeferred","_delayDeferred","_skipCorrection","VirtualScrollingRowsViewExtender","$emptyRows","tBodies","rowCount","_dataController$state","pageChanged","scrollToPage","stateLoaded","_scrollToCurrentPageOnResize","resizeCompleted","resizeHandler","_dataController","itemSize","getItemSize","itemSizes","getItemSizes","_scrollLeft","renderDelayedTemplates","_updateContentPosition","startRenderTime","itemCount","_getRowElements","tableElement","$rows","_renderContent","contentElement","virtualItemsCount","first","replaceWith","_createTable","_contentHeight","_removeRowsElements","contentTable","removeCount","rowElements","errorHandlingController","rowElement","$rowElement","removeErrorRow","_restoreErrorRow","editingController","hasChanges","rowOptions","getChangeByKey","_showErrorRow","_updateContent","$freeSpaceRowElements","_findContentElement","$tBodies","_getBodies","_getFreeSpaceRowElements","_updateBottomLoading","_addVirtualRow","$table","isFixed","$virtualRow","_createEmptyRow","_wrapRowIfNeed","_appendEmptyRow","isRender","rowHeight","_rowHeight","viewportItemSize","_updateContentPositionCore","_tableElement","setContentSize","getContentOffset","$tables","getTableElements","$virtualRows","_isFixedTableRendering","contentHeight","$contentTable","virtualTable","_contentTableHeight","offsetHeight","getVirtualContentSize","deferRender","_isTableLinesDisplaysCorrect","_isColumnElementsEqual","_renderVirtualTableContent","table","$columns","$virtualColumns","html","_createColGroup","freeSpaceCellsHtml","columnLinesClass","createFreeSpaceRowHtml","classes","_getCellClasses","classString","isExpandColumn","_findBottomLoadPanel","$contentElement","$bottomLoadPanel","scrollingMode","virtualMode","appendMode","showBottomLoading","bottomLoadPanelElement","_handleScroll","_hasHeight","setViewportPosition","scrollOffset","_needUpdateRowHeight","_updateRowHeight","viewportHeight","updateFreeSpaceRowHeight","setLoading","messageText","_windowScroll","subscribeToExternalScrollers","scrollPos","loadIfNeed","setColumnWidths","widths","_scrollTimeoutID","scrolling","updateTimeout","minTimeout","renderingThreshold","removeInvisiblePages","rowPageSize","preloadEnabled","loadTwoPagesOnStart","dataSourceAdapter","_refreshDataSource","baseResult","initVirtualRows","getRowPageSize","rowsScrollController","_rowsScrollController","getItemIndexByPosition","rowIndexOffset","getRowIndexOffset","isSortingOperation","sorting","getRowElement","mozilla","msie","virtualRowsRendering","_visibleItems","_rowPageIndex","isItemCountable","rowType","isNewRow","isGroupItemCountable","correctCount","isNextAfterLast","countableOnly","begin","positionChanged","_that$_dataSource","setViewportItemIndex","_updateItemsCore","getRowIndexDelta","visibleItems","isRefresh","rowIndices","newItem","splice","_applyChange","allItems","byLoadedRows","sizes","resetCurrentTotalCount","proxyMethod","resizing","resize","_resizeTimeout","_lastTime","defaultCurrency","oDataFilterToLower","serverDecimalSeparator","decimalSeparator","thousandsSeparator","forceIsoDateParsing","wrapActionsBeforeExecute","useLegacyStoreResult","useJQuery","editorStylingMode","useLegacyVisibleIndex","floatingActionButtonConfig","closeIcon","maxSpeedDialActionCount","optionsParser","optionsString","trim","Function","ex","deprecatedFields","configMethod","newConfig","deprecatedField","DevExpress","_filter_builder","_scroll_view","_accessibility","filterBuilder","groupOperationDescriptions","and","or","notAnd","notOr","filterOperationDescriptions","between","equal","notEqual","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","startsWith","contains","notContains","endsWith","isBlank","isNotBlank","filterBuilderPopup","filterBuilderView","View","_updatePopupOptions","_initPopup","_filterBuilderPopup","_disposePopup","_filterBuilder","_getPopupContentTemplate","onOptionChanged","restoreFocus","$filterBuilderContainer","fields","_ui2","TYPE","ROLLER_TYPE","DateView","_valueOption","isNaN","_getDefaultDate","getFullYear","minDate","MIN_DATEVIEW_DEFAULT_DATE","maxDate","MAX_DATEVIEW_DEFAULT_DATE","applyCompactClass","_toggleFormatClasses","_toggleCompactClass","currentFormat","previousFormat","DATEVIEW_CLASS","_renderContentImpl","_renderRollers","_$rollersContainer","_createRollerConfigs","_rollers","_rollerConfigs","$roller","DATEVIEW_ROLLER_CLASS","displayItems","showScrollbar","onStart","roller","_toggleActive","_setActiveRoller","onEnd","_setRollerState","onSelectedIndexChanged","getFormatParts","FORMATS_MAP","partName","_createRollerConfig","componentName","componentInfo","DATE_COMPONENTS_INFO","valueRange","_calculateRollerConfigValueRange","curDate","_getCurrentDate","setValue","valueItems","getIndex","currentRoller","activeRoller","toggleActiveState","_updateRollersPosition","correctIndex","rollerValue","currentValue","getMaxMonthDay","normalizedDate","mergeDates","_refreshRollers","_refreshRoller","rollerType","rollerConfig","minYear","sameYear","minMonth","maxYear","maxMonth","minHour","maxHour","_deferredRenderDayTimeout","_deferredRenderMonthTimeout","_base_widget","_translator2d","_tooltip","_initTooltip","EVENT_NS","POINTER_ACTION","_floor","pointerHandler","_enableOutHandler","_showTooltip","createAxis","Translator2D","shiftZeroValue","getVisibleArea","getCanvasVisibleArea","BaseSparkline","_getLayoutItems","_useLinks","_themeDependentChanges","_tooltipTracker","_createHtmlElements","_initTooltipEvents","_argumentAxis","_valueAxis","_getDefaultSize","_defaultSize","_disposeWidgetElements","_disposeTooltipEvents","_ranges","_optionChangesOrder","_change_OPTIONS","_prepareOptions","_customChangesOrder","_change_UPDATE","_update","_tooltipShown","_cleanWidgetElements","_updateWidgetElements","_drawWidgetElements","_getCorrectCanvas","_updateRange","_getStick","_allOptions","_setupResizeHandler","_getTooltipCoords","rootOffset","_getTooltip","isEnabled","_getTooltipData","_hideTooltip","_stopCurrentHandling","_outHandler","_ref3","_that$_renderer$getRo","pointInCanvas","inCanvas","_disableOutHandler","_setTooltipRendererOptions","_tooltipRendererOptions","_setTooltipOptions","_disposeTooltip","_getRendererOptions","setRendererOptions","customizeTooltip","fontOptions","defaultCustomizeTooltip","tooltip","lineSpacing","lineHeight","customizeObject","vt","valueText","generateDefaultCustomizeTooltipCallback","res","_isTooltipEnabled","exportPlugin","_query_adapters","_array_query","remoteQueryImpl","queryOptions","tasks","createTask","executorTask","_adapterFactory","_adapter","_taskQueue","_currentTask","_mergedSortArgs","head","unmergedTasks","rejectWithNotify","errorHandler","_errorHandler","mergeSortTask","task","adapter","optimize","clientChain","query","imageCreator","createCanvas","f","mimeType","toDataURL","_svg","_dom","_inflector","parseAttributes","_abs","_sqrt","sqrt","_pow","pow","_atan2","atan2","_cos","arcTo","largeArcFlag","clockwise","cBx","cBy","aB","k","opSide","adjSide","getElementOptions","rootAppended","textContent","textAlign","rotationAngle","rotationX","rotationY","scaleX","scaleY","camelize","getComputedStyle","textDecoration","textDecorationLine","globalAlpha","parseStyles","parseUrl","urlString","matches","setFontStyle","fontParams","fillStyle","drawText","shared","applyFilter","fillText","strokeElement","textWidth","measureText","textHeight","fillElement","drawTextDecoration","hasTspan","childNodes","drawElement","parentOptions","isText","isImage","save","transformElement","clipElement","strokeOpacity","fillOpacity","aggregateOpacity","beginPath","drawTextElement","lines","elementOptions","mergedOptions","commonWidth","xDiff","currentOffset","Image","drawImage","restore","onerror","setAttribute","href","dAttr","prevParams","prevParamsLen","dArray","moveTo","lineTo","bezierCurveTo","closePath","drawPath","cornerRadius","drawRect","cx","cy","gradients","gradient","createLinearGradient","addColorStop","stopColor","applyGradient","offsetX","offsetY","blur","shadowOffsetX","shadowOffsetY","shadowBlur","scale","clipPaths","clip","createFilter","stdDeviation","hexColor","alpha","hex2rgba","drawCanvasElements","asyncEach","isPromise","onDone","createGradient","setLineDash","lineJoin","lineWidth","strokeStyle","strokeText","search","patternCanvas","patternContext","getContext","createPattern","getPattern","drawBackground","fillRect","createInvisibleDiv","invisibleDiv","convertSvgToCanvas","newAttributes","getImageData","__parseAttributesFn","svgElem","getSvgElement","markupIsDomElement","getBody","dir","fromPromise","getCanvasFromSvg","dataURL","atob","substring","getStringFromCanvas","binaryData","Blob","_getBlob","_getBase64","dataArray","Uint8Array","buffer","btoa","transformEvents","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_drag","WeakMap","EVENTS_NS","DRAG_START_EVENT_NAME","DRAG_EVENT_NAME","DRAG_END_EVENT_NAME","PINCH_START_EVENT_NAME","pinchstart","PINCH_EVENT_NAME","pinch","PINCH_END_EVENT_NAME","pinchend","canvasToRect","checkCoords","sortAxes","axes","onlyAxisToNotify","isNotEmptyAxisBusinessRange","axisZoom","getRange","getParameters","actionField","silent","_axis$checkZoomingLow","checkZoomingLowerLimitOvercome","stopInteraction","correctedRange","handleZooming","handleZoomEnd","chart","cancelEvent","originalEvent","cancelable","startAxesViewportChanging","zoomAndPan","actionData","valueAxis","valueAxes","isPrevented","axesViewportChanging","offsetCalc","centerCalc","zoomAxes","criteria","coordField","zoomed","getEventScale","getZoomBounds","adjustRange","getVizRangeObject","_axis$checkZoomingLow2","pointerType","isMinPosition","isExtremePosition","isMaxPosition","zoomInEnabled","zoomOutEnabled","panningEnabled","deltaTranslate","storeOffset","storeCenter","rotated","argZoom","valZoom","fallback","_argumentAxes","finishAxesViewportChanging","zoomStarted","prepareActionData","getCanvas","_lastRenderingTime","curAxisRect","_valueAxes","startCenter","getPointerCoord","calcCenterForPinch","pointers","calcCenterForDrag","calcOffsetForDrag","preventDefaults","dragStartHandler","isTouch","wantPan","pan","wantZoom","panKeyPressed","panKey","dragToZoom","_cancelPreventDefault","allowTouchGestures","panningVisualRangeEnabled","skipEvent","startCoords","dragBoxStyle","dragHandler","curCanvas","curCoords","zoomArg","zoomVal","deltaOffsetY","deltaOffsetX","dragEndHandler","panIsEmpty","isNative","curCoord","startCoord","tr","_axisZoom","getMinScale","argumentAxesZoomed","pinchStartHandler","pinchHandler","viewportChanged","defineTouchBehavior","pinchEndHandler","cleanup","setup","none","allowMouseWheel","_axisZoom2","targetAxes","axesZoomed","targetCanvas","passive","immediate","isDefault","enablePanByValueAxis","enablePanByArgumentAxis","_zoomAndPan","_setupZoomAndPan","_CurrentTimeShader","HorizontalCurrentTimeShader","_isHorizontalGroupedWorkSpace","isFirstShader","$shader","_$shader","createShader","applyShaderMargin","_customizeGroupedByDateShader","_customizeShader","_shader","shaderWidth","_applyShaderWidth","indicationWidth","shaderLeft","getIndicationCellCount","integerPart","fractionPart","isFirstShaderPart","RowsView","refreshPaths","prepareSegmentRectPoints","borderOptions","segmentSequence","maxSW","sw","newSW","segments","visiblyOpt","prevSegmentVisibility","allSegment","seg","segmentVisibility","segment","pathType","RadioButton","_clickAction","_canValueBeChangedByClick","_renderIcon","_renderCheckedState","_renderClick","waveSizeCoefficient","useHoldAnimation","wavesNumber","isCentered","_renderInkWave","doRender","waveIndex","wave","_updateFocusState","_$icon","checked","_clickHandler","DOCUMENT_SCROLL_EVENT_NAMESPACE","VirtualScrollingDispatcher","_workspace","_virtualScrolling","_createVirtualScrolling","_attachScrollableEvents","virtualScrolling","getState","calculateCoordinatesByDataAndPosition","_onScrollHandler","VirtualScrolling","_attachScrollableScroll","_attachWindowScroll","currentOnScroll","_process","scrollX","scrollY","minScrollOffset","updateState","_updateRender","cellHeight","_renderDateTable","renderRWorkspace","renderTimeout","getRenderTimeout","_renderAppointmentTimeout","invoke","_viewportHeight","_state","_getPageSize","prevScrollPosition","startIndex","topVirtualRowCount","bottomVirtualRowCount","topOutlineCount","bottomOutlineCount","topVirtualRowHeight","bottomVirtualRowHeight","topOutlineHeight","bottomOutlineHeight","currentTopPosition","currentTopRowsCount","isFirstInitialization","topRowsCount","isStartIndexChanged","_getOutlineCount","needUpdateState","topRowsInfo","_calcTopRowsInfo","topRowsDelta","_calcTopRowsDelta","_this$_calcBottomRows","_calcBottomRowsInfo","rowCountWithBottom","_updateStateCore","timeToScroll","cellStartTime","cellEndTime","scrollInCell","getScrollableOuterWidth","getWorkspace","_getTotalRowCount","prevTopVirtualRowHeight","prevBottomVirtualRowHeight","prevTopOutlineHeight","prevBottomOutlineHeight","_config","_default_date_names","ISO8601_PATTERN","ISO8601_TIME_PATTERN","ISO8601_PATTERN_PARTS","DATE_SERIALIZATION_PATTERN","isIE11","dateParser","skipISO8601Parsing","parts","getTimePart","year","timeZoneHour","timeZoneMinute","hour","minute","second","millisecond","part","UTC","parseISO8601String","isDefaultSerializationFormat","getDateSerializationFormat","isDate","parse","newDate","setFullYear","setMonth","parseDate","useUtc","getIso8601Format","serializeDate","serializationFormat","_dependency_injector","nativeXMLHttpRequest","getXhr","XMLHttpRequest","_language_codes","DEFINED_NUMBER_FORMTATS","thousands","millions","billions","trillions","decimal","fixedpoint","exponential","currency","PERIOD_REGEXP","DAY_REGEXP","DO_REGEXP","STANDALONE_MONTH_REGEXP","HOUR_REGEXP","SLASH_REGEXP","SQUARE_OPEN_BRACKET_REGEXP","SQUARE_CLOSE_BRACKET_REGEXP","ANY_REGEXP","excelFormatConverter","_applyPrecision","precision","_hasArabicDigits","ARABIC_ZERO_CODE","_convertDateFormatToOpenXml","datePart","_convertDateFormat","formattedValue","_getLanguageInfo","languageID","getLanguageId","languageIDStr","languageInfo","_convertNumberFormat","excelFormat","getOpenXmlCurrencyFormat","convertFormat","deepExtendArraySafe","orderEach","_variable_wrapper","Clone","func","isNumberX","isNumberY","assignValueToProperty","assignByReference","isWrapped","assign","extendComplexObject","newValue","GroupingHelper","_uiData_gridGrouping","_uiData_grid2","getContinuationGroupCount","groupOffset","groupSize","foreachExpandedGroups","updateGroups","foreachGroups","groupInfo","isExpanded","processGroupItems","groupsCount","expandedInfo","isLastGroupExpanded","paths","lastCount","findGroupInfo","collapsedItems","updateGroupInfoItem","isLastGroupLevel","addGroupInfo","_isGroupExpanded","updateGroupInfos","loadedGroupCount","parentIndex","remoteOperations","paging","skips","isGroupExpanded","getTotalOffset","groupInfos","totalOffset","childrenTotalCount","applyContinuationToGroupItem","expandedItemIndex","takes","isLastExpandedItem","isFirstExpandedItem","lastExpandedItemSkip","isItemsTruncatedByTake","isContinuation","isContinuationOnNextPage","isDataDeferred","makeDataDeferred","loadGroupItems","currentGroupCount","fillSkipTakeInExpandedInfo","currentGroup","deferreds","requireGroupCount","groupSummary","createGroupFilter","loadFromStore","loadExpandedGroups","expandedFilters","expandedPath","isLoadingAll","normalizeSortingInfo","isPagingLocal","isLastLevelGroupItemsPagingLocal","sortLastLevelGroupItems","expandedItems","loadLastLevelGroupItems","loadGroupTotalCount","isGrouping","updateTotalItemsCount","isVirtualPaging","_isVirtualPaging","_updatePagingOptions","skipChildrenTotalCount","takeCorrection","parentTakeCorrection","continuationGroupCount","skipContinuationGroupCount","groupInfoCount","childrenGroupInfoCount","changeRowExpand","remoteGroupPaging","groupPaging","lastLoadOptions","handleDataLoading","grouping","remotePaging","isLastGroup","handleDataLoadedCore","_processPaging","_processSkips","firstItem","_processTakes","lastItem","maxTakeCount","oldGroups","handleGroup","groupCountQuery","groupOffsetQuery","createOffsetFilter","_button2","CustomButton","ignoreParentReadOnly","_isDisabled","_prepareIntegrationOptions","skipTemplates","isUpdated","_event_registrator","_hold","CONTEXTMENU_NAMESPACED_EVENT_NAME","HOLD_NAMESPACED_EVENT_NAME","ContextMenu","_contextMenuHandler","touch","_holdHandler","_fireContextMenu","teardown","_style","TOUCH_BOUNDARY","setGestureCover","isDesktop","styleProp","$cover","subscribeGlobal","GestureEmitter","gesture","configure","getElement","allowInterruptionByMouseWheel","_stage","_toggleGestureCover","_needSkipEvent","needSkipEvent","_startEvent","_setupImmediateTimer","_immediateTimer","_immediateAccepted","_directionConfirmed","_resetActiveElement","_clearSelection","_adjustStartEvent","_start","touchBoundary","_getTouchBoundary","deltaX","deltaY","horizontalMove","_validateMove","verticalMove","mainAxis","crossAxis","isDxMouseWheelEvent","sign","resetActiveElement","_toggleGestureCoverImpl","gestureCoverStrategy","gestureCover","isTouchEvent","clearSelection","_end","_stop","initialTouchBoundary","newBoundary","OperationManager","_counter","_deferreds","_uiCollection_widgetEditStrategy","_selection","indexExists","_setOptionsByReference","_optionsByReference","selectedItem","selectionRequired","selectionByClick","selectedItems","maxFilterLengthInRequest","onItemReordered","onItemDeleting","onItemDeleted","_userOptions","_initEditStrategy","_initKeyGetter","_initSelectionModule","_keyGetter","_getKeysByItems","_editStrategy","getKeysByItems","_getItemsByKeys","getItemsByKeys","_getKeyByIndex","getKeyByIndex","_getIndexByKey","getIndexByKey","_getIndexByItemData","getIndexByItemData","_isKeySpecified","keyOf","_nullValueSelectionSupported","itemsGetter","allowNullValue","equalByReference","addedItemKeys","removedItemKeys","_updateSelectedItems","customQueryParams","plainItems","dataFields","Strategy","_getSelectedItemIndices","indices","getSelectedItemKeys","beginCache","endCache","_rendering","_syncSelectionOptions","_normalizeSelectedItems","_rendered","byOption","_chooseSelectOption","getItemDataByIndex","_setOptionWithoutOptionChange","selectedItemIndex","setSelection","isOptionDefined","optionValue","_compareKeys","oldKeys","newKeys","newSelection","currentSelection","getSelectedItems","normalizedSelection","_itemClickHandler","_itemSelectHandler","validatingTargetName","isItemSelected","_selectedItemElement","normalizedItemIndex","getNormalizedIndex","_isItemSelected","_processSelectableItem","isSelected","_selectedItemClass","_setAriaSelected","selectionChangePromise","_selectionChangePromise","normalizedIndex","addedSelection","removedSelection","_addSelection","_removeSelection","_updateSelection","_fireSelectionChangeEvent","addedItems","removedItems","excludeValidators","$target","getItemElement","triggerHandler","_clearSelectedItems","_waitDeletingPrepare","deletingActionArgs","deletePromise","_itemEventHandler","deletePromiseExists","deletePromiseResolved","argumentsSpecified","shouldDelete","_deleteItemFromDS","disabledState","dataStore","_tryRefreshLastPage","_refreshLastPage","_expectLastItemLoading","_updateSelectionAfterDelete","deselect","_updateIndicesAfterIndex","_itemIndexKey","_simulateOptionChange","_optionChangedAction","_deleteItemElementByIndex","deleteItemAtIndex","_afterItemElementDeleted","deletedActionArgs","changingOption","beforeExecute","_renderEmptyMessage","itemResponseWaitClass","_itemResponseWaitClass","_extendActionArgs","resolveWith","rejectWith","toItemElement","$movingItem","$destinationItem","movingIndex","destinationIndex","itemPlacementFunc","moveItemAtIndexToIndex","_select_box","Page","_$page","rootElement","prependTo","Pager","pagesNavigatorVisible","maxPagesCount","showPageSizes","pageSizes","showNavigationButtons","showInfo","infoText","pagesCountText","lightModeEnabled","pageIndexChanged","pageSizeChanged","_toggleVisibility","_getPages","currentPage","pages","showMoreButton","PAGES_LIMITER","_getPageByValue","page","_pages","_processSelectedPage","selectedPageIndex","isPageIndexValid","selectedPage","_selectPageByValue","nextPage","morePage","pagesLength","prevPage","_updatePagesTabIndices","$selectedPage","updatePageIndices","buttons","_nextPage","_wrapClickAction","_pointerUpHappened","_renderPages","$separator","clickPagesIndexAction","pageNumber","_pageClickHandler","_$pagesChooser","Name","registerKeyboardAction","role","setTabIndex","_calculateLightPagesWidth","$pageIndex","_renderLightPages","clickAction","_pageIndexEditor","PAGER_INFO_TEXT_CLASS","$pageCount","_renderPagesChooser","_renderInfo","_renderNavigateButton","_updatePagesChooserWidth","_renderPageSizes","pageSizeValue","$pageSize","pagesSizesLength","currentPageSize","clickPagesSizeAction","_$pagesSizeChooser","_calculateLightPageSizesWidth","_renderLightPageSizes","_pageSizeEditor","_renderPagesSizeChooser","_pagesSizeChooserWidth","_$info","_isInfoHide","_infoWidth","$button","_updatePageSizes","_updatePages","_updateLightMode","forceRender","_updateButtonsState","_isPageIndexInvalid","isNextDirection","nextButton","prevButton","_pageKeyDownHandler","_getMinPagerWidth","_pagesChooserWidth","deferUpdater","lastPageWidth","infoWidth","_previousWidth","getHeight","AllDayPanelLayout","AllDayPanelLayoutProps","viewFunction","_combine_classes","_table","_table_body","_layout_props","_const","Preact","_hooks","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_extends","viewModel","restAttributes","Table","emptyTableHeight","AllDayPanelTableBody","allDayPanelData","dataCellTemplate","LayoutProps","TemplateProp","__allDayPanelData","useCallback","__emptyTableHeight","DefaultSizes","allDayPanelHeight","__classes","combineClasses","__restAttributes","groupOrientation","defaultProps","_slider","RangeSlider","_changeHandle","capturedHandle","_capturedHandle","_setHandleValue","valueOption","RANGE_SLIDER_CLASS","_valueStep","moveHandleRight","_$handleStart","_$handleEnd","moveHandleLeft","_processKeyboardEvent","pageUp","pageDown","home","isStart","startOption","endOption","startName","endName","_renderSubmitElement","_$submitStartElement","_$submitEndElement","_initOptions","initialValue","_callHandlerMethod","_renderHandle","_renderHandleImpl","_updateHandleAriaLabels","_startHandler","$range","_$range","rangeWidth","eventOffsetX","_$bar","startHandleX","endHandleX","startHandleIsClosest","_activeHandle","_updateHandlePosition","offsetDirection","newRatio","_startOffset","_swipePixelRatio","toPrecision","_updateSelectedRangePosition","fitTooltipPosition","_changeValueOnSwipe","$nextHandle","leftRatio","rightRatio","moveRight","_setValueOnSwipe","valStart","valEnd","applyServerDecimalSeparator","ratio2","_needPreventAnimation","_setRangeStyles","_setValueOption","_valueChangeEventInstance","HeaderPanel","_query","_timezones_data","_timeZones","zones","timestamp","timeZones","timezone","getUtcOffset","offsetIndices","untils","formatOffset","formatId","sortBy","hours","minutesInDecimal","getTimezoneById","tzList","getTimeZoneOffsetById","tz","dateTimeStamp","offsetIndicesList","offsetsList","untilsList","currentUntil","listLength","_mention","MentionModule","KEYS","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","NAVIGATION_KEYS","ALLOWED_PREFIX_CHARS","_PopupModule","quill","_mentions","editorInstance","mentions","marker","preparedTemplate","addTemplate","_attachKeyboardHandlers","addCleanCallback","onTextChange","baseConfig","keyboard","addBinding","_moveToItem","_selectItemHandler","enterBindings","bindings","_escapeKeyHandler","_ignoreKeyHandler","getDataSource","_isMentionActive","defaultItemPosition","$nextItem","_activeListItems","compileGetters","_idGetter","_hasSearch","repaint","_focusFirstElement","markerLength","_activeMentionConfig","textLength","caretPosition","insertText","deleteText","insertEmbed","ops","lastOperation","isLastOperationDelete","penultOperation","newDelta","oldDelta","_isPopupVisible","_processSearchValue","_filterList","lastInsertOperation","_getLastInsertOperation","checkMentionRequest","insert","getSelection","_isMarkerPartOfText","retain","savePosition","_popupPosition","_getCharByIndex","getContents","unselectAll","_isMinSearchLengthExceeded","_searchTimer","_search","_resetFilter","$firstItem","onShown","removeTemplate","_this$_popup","_this$quill$getBounds","getBounds","mentionLeft","mentionTop","mentionHeight","_$$offset","leftOffset","topOffset","Event","ListPopupModule","BaseModule","_BaseModule","renderPopup","$list","popupConfig","_getPopupConfig","contentElem","listConfig","_getListConfig","renderList","selectionChangedHandler","insertEmbedContent","selectionChangedEvent","_setOption","_clearItemKeys","validate","equalKeys","key1","key2","equalByValue","getSelectableItems","preserve","isDeselect","isSelectAll","_loadFilteredData","remoteFilter","localFilter","filterLength","encodeURI","JSON","stringify","needLoadAllData","filteredItems","updateSelectedItemKeyHash","keyHash","getKeyHash","keyHashIndices","_isAnyItemSelected","_getFullSelectAllState","dataFilter","selectedItemsLength","disabledItemKeys","_getVisibleSelectAllState","hasSelectedItems","hasUnselectedItems","getItemData","isSelectableItem","isItemKeySelected","_DEVEXTREME_BUNDLE_INITIALIZED","clientExporter","excelExporter","pdfExporter","VERSION","Class","DOMComponent","Component","registerComponent","devices","Color","animationFrame","utils","requestAnimationFrame","cancelAnimationFrame","initMobileViewport","getTimeZones","triggerShownEvent","triggerHidingEvent","findBestMatches","createQueue","dom","browser","inflector","readyCallbacks","resizeCallbacks","console","support","ajax","hideTopOverlay","formatHelper","animationPresets","presets","fx","TransitionExecutor","AnimationPresetCollection","PresetCollection","click","localization","templateRendered","renderedCallbacks","setTemplateEngine","XmlaStore","_math2","linearConverter","adjust","addInterval","getInterval","tickInterval","logConverter","raiseTo","convertAxisInfo","axisInfo","converter","isLogarithmic","tick","logarithmicBase","tickValues","oldMinValue","oldMaxValue","getAxisRange","getMainAxisInfo","axesInfo","stubData","synchronize","pane","getValueAxesPerPanes","paddings","ticksValues","getTicksValues","majorTicks","majorTicksValues","_tickInterval","synchronizedValue","breaks","applyMargins","minorValues","minorTicksValues","minorTickInterval","_minorTickInterval","invert","populateAxesInfo","maxTicksCount","ticksMultiplier","ticksCount","additionalStartTicksCount","baseTickValue","invertedBaseTickValue","updateTickValues","mainAxisInfo","mainAxisInfoTickInterval","mainAxisBaseValueOffset","valueFromAxisInfo","correctMinMaxValues","minPadding","maxPadding","startPadding","endPadding","calculatePaddings","prev","_info$axis$getCorrect","getCorrectedValuesToZero","correctPaddings","correctMinMaxValuesByPaddings","correctValue","invalidAxisInfo","firstTick","correctedTick","correctAfterSynchronize","hasSynchronizedValue","updateTickValuesIfSynchronizedValueUsed","tickCount","updateMinorTicks","maxVisible","updateBusinessRange","setTicks","minorTicks","applyMinMaxValues","getFigures","nextValue","normalizeValues","LocalStore","_uiPivot_grid","_array_store","DATE_INTERVAL_SELECTORS","quarter","dayOfWeek","getDataSelector","getDateValue","dataSelector","prepareFields","fieldSelector","intervalSelector","groupInterval","levels","valueSelector","setDefaultFieldValueFormatting","setFieldProperty","generateHierarchyItems","headers","headerName","expandIndex","expandedPaths","rowExpandedPaths","columnExpandedPaths","fillHierarchyItemIndexesCore","pathHash","dimensionValue","hierarchyItem","dimension","dimensions","expandedPathsHash","hierarchyItems","childrenHash","addHierarchyItem","hash","generateAggregationCells","cellSet","rowIndexes","columnIndexes","fillHashExpandedPath","pathValue","prepareLoadOption","getAggregator","summaryType","calculateCustomSummary","summaryProcess","totalValue","aggregationStep","measures","aggregationCells","aggregatorIndex","cellField","cellValue","isAggregatorSeedFunction","cellSetIndex","areValuesEqual","fieldValue","valueOfFilter","valueOfField","createDimensionFilters","dataItem","getGroupValue","expandedDimensions","expandValue","toComparable","loadCore","notifyProgress","columnsHash","rowsHash","processData","t","grandTotalRowIndex","grandTotalColumnIndex","filterDataSource","fieldSelectors","processFilter","loadDataSource","customizeStoreLoadOptionsHandler","loadDeferred","fillSelectorsByFields","selectors","getFieldSelectors","_progressChanged","onProgressChanged","getFields","discoverObjectFields","supportPaging","getDrillDownItems","drillDownItems","maxRowCount","customColumns","pathFilter","getFiltersByPath","rowPath","columnPath","storeDrillDownMixin","hasOwn","wrapOverridden","baseProto","methodName","method","prevCallBase","redefine","overridden","memberName","member","classObj","hasClassObjOwnProperty","isES6Class","_includedCtors","_includedPostCtors","postCtor","subclassOf","parentClass","baseClass","copyStatic","destination","classImpl","inheritor","isWindow","includedCtors","includedPostCtors","clonePrototype","_construct","Parent","dateUnitIntervals","toMilliseconds","convertMillisecondsToDateUnits","dateUnitCount","dateUnitInterval","convertDateUnitToMilliseconds","dateUnit","getDateUnitInterval","maxInterval","tickIntervalToFormatMap","week","getQuarter","getFirstQuarterMonth","correctDateWithUnitBeginning","dateInterval","withCorrection","firstQuarterMonth","oldDate","getFirstWeekDate","fixTimezoneGap","addDateInterval","intervalObject","getDateIntervalByString","years","quarters","months","weeks","setTime","minutes","seconds","milliseconds","isNegative","getLastMonthDay","createDateWithFullYear","intervalString","sameMonthAndYear","date1","date2","getFirstDecadeInCentury","getFirstYearInDecade","trial","getTimezonesDifference","getTimezoneOffset","dateUtils","getNextDateUnit","unit","withWeeks","getDateFormatByTickInterval","getDatesDifferences","counter","differences","getSeconds","getMilliseconds","dateTimeFromDecimal","number","getSequenceByInterval","cur","intervals","sameMonth","sameDecade","startDecadeDate1","startDecadeDate2","sameCentury","startCenturyDate1","startCenturyDate2","getDifferenceInMonth","typeView","difference","getDifferenceInMonthForCells","getShortDateFormat","getViewFirstCellDate","viewType","getViewLastCellDate","getViewDown","getViewUp","getLastMonthDate","getFirstMonthDate","normalizeDateByWeek","differenceInDays","getDatesInterval","resultDate","dateInRange","roundToHour","getViewMinBoundaryDate","getViewMaxBoundaryDate","makeDate","intervalUnit","millisecondCount","getDatesOfInterval","view","POINTERUP_EVENT_NAME","POINTERCANCEL_EVENT_NAME","onChange","SPIN_CLASS","_spinIcon","_spinDownHandler","_spinChangeHandler","_clearTimer","_feedBackDeferred","lock","removeTooltip","$tooltip","removeTooltipElement","createTooltip","ExportController","DataProvider","_context_menu","_getGroupValue","summaryCells","groupColumn","groupColumns","getDisplayValue","deserializeValue","getGroupRowSummaryText","summaryTexts","_correctCellIndex","exportController","_exportController","getGroupColumns","excelWrapTextEnabled","_getColumns","_initialColumnWidthsByColumnIndex","_selectedRowsOnly","_selectionOnly","_getSelectedItems","_getAllItems","getVisibleIndex","isHeadersVisible","customizeExportData","wrapTextEnabled","customizeExcelCell","hasCustomizeExcelCell","cellSourceData","initialColumnWidthsByColumnIndex","getStyles","wrapText","getDefaultAlignment","_getTotalCellStyleId","getStyleId","getHeaderRowCount","isTotalCell","isGroupRow","getColumnsByAllRows","getColumnsWidths","getCellType","lookup","_convertFromGridGroupSummaryItems","gridGroupSummaryItems","isExcelJS","correctedCellIndex","gridColumn","itemValues","totalSummaryItemName","getSummaryText","groupSummaryItems","summaryItems","getCustomizeTextByDataType","correctCellIndex","isSummaryAlignByColumn","alignByColumn","getCellMerging","colspan","exportColspan","rowspan","_getEmptyCell","_updateColumnWidth","getRowCount","currentHeaderRow","columnWidthsByColumnIndex","_updateLockCount","columnWidths","_getColumnWidths","_headersView","_rowsView","_needColumnExporting","currentColspan","_calculateExportColspan","_prepareItems","isBand","childColumns","getChildrenByBandColumn","childColumn","allowExporting","_getFooterSummaryItems","isTotal","estimatedItemsCount","summaryCell","itemsLength","_hasSummaryGroupFooters","groupItems","showInGroupFooter","_getItemsWithSummaryGroupFooters","sourceItems","beforeGroupFooterItems","groupFooterItems","_updateGroupValuesWithSummaryByColumn","summaryValues","groupColumnCount","summaryItem","merge","_processUnExportedItems","isDetailExpandColumn","footerItems","totalItem","summaryTotalItems","loadAll","_getSummaryCells","selectedRowData","getSelectedRowsData","headersView","getColumnWidths","createAction","callbackNames","getExportFormat","getDataProvider","columnsLastRowVisibleColumns","exportToExcel","selectionOnly","ignoreErrors","getAction","excel","_isSelectedRows","selectionOnlyChanged","excelFilterEnabled","allowExportSelectedData","ignoreExcelErrors","texts","exportAll","exportSelectedRows","editing","callbackList","_updateEditButtons","editingChanged","_appendExportItems","_renderButton","_renderExportMenu","menuItemTemplate","allowExportSelected","_correctItemsPosition","withText","buttonOptions","_getButtonOptions","$buttonContainer","_getButtonContainer","wrapperNode","wrapInner","_renderFakeButton","exportSelected","iconName","$icon","$text","BUTTON_CLASS","$toolbarItem","itemA","itemB","menuItems","$menuContainer","_contextMenu","_$parent","_isExportButtonVisible","_editingController","setToolbarItemDisabled","polar","_area_series","_bar_series","_line_series","chartAreaSeries","chartBarSeries","bar","baseStackedSeries","_calculateErrorBars","_updateOptions","_stackName","stackedline","stackedspline","spline","fullstackedline","fullstackedspline","stackedBar","stackedbar","stack","clonePoint","preparePointsForStackedAreaSegment","leftHole","minLeftHole","rightHole","minRightHole","fullstackedbar","stackedarea","_prepareSegment","_appendInGroup","_extGroups","seriesGroup","toBackground","stackedsplinearea","splinearea","areaSegment","_prevSeries","forwardPoints","_calculateBezierPoints","backwardPoints","prevSeriesForwardPoints","pointByArg","_segments","_segmentByArg","prevSeriesPoints","prevSeries","getPointsByArgFromPrevSeries","_areaPointsToSplineAreaPoints","fullstackedarea","fullstackedsplinearea","setEasing","getEasing","convertTransitionTimingFuncToEasing","CSS_TRANSITION_EASING_REGEX","TransitionTimingFuncMap","linear","swing","ease","polynomBezier","Cx","Bx","Ax","Cy","By","Ay","bezierX","derivativeX","bezierY","z","findXFor","cssTransitionEasing","forceName","coeffs","easingName","SeriesDataSource","_base_series","_series_family","_data_validator","_chart_theme_manager","chartOptions","themeManager","ThemeManager","themeSection","setTheme","topIndent","bottomIndent","_indent","_hideChart","_series","_calculateSeries","_seriesFamilies","particularSeriesOptions","seriesTheme","parsedData","dataSourceField","newSeries","groupsData","chartThemeManager","seriesTemplate","allSeriesOptions","processSeriesTemplate","argumentField","valueField","Series","validateData","argCategories","getArgumentField","createPoints","negativesAsZeroes","negativesAsZeros","minBubbleSize","maxBubbleSize","barOptions","families","types","family","SeriesFamily","barGroupPadding","barGroupWidth","adjustSeriesValues","processSeriesFamilies","adjustSeriesDimensions","getBoundRange","rangeData","rangeYSize","rangeVisibleSizeY","minIndent","maxIndent","valRange","argRange","bubbleSize","marginOptions","processBubbleSize","mergeMarginOptions","getSeries","isShowChart","getCalculatedValueType","getThemeManager","getSwatchContainer","swatchContainer","swatchClassRegex","swatchClass","viewportSwatchContainer","registerModulesOrder","DataGrid","_activeStateUnit","modules","useKeyboard","showRowLines","showColumnLines","useIcons","webkit","loadingTimeout","loadPanel","expandMode","processModules","callModuleItemsMethod","updateDimensions","_visibilityChanged","templateName","warn","isReady","_controllers","_views","grid","baseOperation","baseOp","calculateFilterExpression","baseFilter","getFullText","itemText","parentText","headerFilterController","dataTypes","lastIndex","isCondition","isGroup","filterExpression","editorTemplate","conditionInfo","div","renderValueText","showHeaderFilterMenuBase","columnElement","hideHeaderFilterMenu","closeEditor","isFilterBuilder","fieldInfo","dataSourceOptions","getSelectedItemsTexts","selectedItemsTexts","getHeaderItemText","_excel","_excel2","_excel3","_excel4","cellFormatHelper","tryCreateTag","sourceObj","sharedItemsContainer","numberFormatId","numberFormat","registerNumberFormat","tryCreateFillFromSimpleFormat","fontId","registerFont","fillId","registerFill","copy","copySimpleFormat","areEqual","leftTag","rightTag","tag","toXml","applyNumberFormat","isAlignmentEmpty","xfId","applyAlignment","numFmtId","Tooltip","_renderer2","_format_helper","_plaque","mathCeil","mathMax","mathMin","hideElement","detach","_eventTrigger","eventTrigger","_widgetRoot","widgetRoot","_widget","overflow","pointerEvents","Renderer","pathModified","_text","_textGroupHtml","padding","_textHtml","display","_getContainer","setTemplate","_template","_textFontStyles","zIndex","_customizeTooltip","textGroupHtml","textHtml","plaque","interactive","Plaque","paddingLeftRight","paddingTopBottom","arrowLength","arrowWidth","shadow","onRender","isMoving","_ref$templateCallback","templateCallback","useTemplate","formatObject","skipTemplate","textColor","_riseEvents","_moveWrapper","customizeCloud","getBoundingClientRect","_eventData","normalizedCSS","_prepare","description","fontColor","forceEvents","_clear","parameters","_getCanvas","isCursorOnTooltip","plaqueBBox","moveRoot","_specialFormat","specialFormat","argumentFormat","percentPrecision","getSpecialFormatOptions","getLocation","isShared","containerBox","getDocumentElement","clientWidth","scrollHeight","clientHeight","_eventsMap","onTooltipShown","onTooltipHidden","getMargins","Crosshair","math","mathAbs","mathFloor","getRectangleBBox","getLabelCheckerPosition","labelCoord","rectangleBBox","_crosshairGroup","_axes","_panes","panes","_horizontalGroup","_verticalGroup","_horizontal","_vertical","_circle","lineOptions","_createLines","sharpParam","verticalOptions","horizontalOptions","extraOptions","circleOptions","circle","currentLabelPos","getLabelsPosition","side","startXY","_updateText","textElement","backgroundElement","getFormattedValue","_updateLinesCanvas","_linesCanvas","_updateLines","_resetLinesCanvas","_getClipRectForPane","clipRect","pointData","getCrosshairData","getPointRadius","rad","yValue","xValue","_uiListEditDecorator","_action_sheet","CLICK_EVENT_NAME","ACTIVE_EVENT_NAME","active","_shouldHandleSwipe","_$buttonsContainer","_$buttons","_renderMenu","_renderDeleteButton","_menuEnabled","_renderMenuButton","_fireAction","$menuButton","$deleteButton","_cachedNode","_cancelDeleteReadyItem","modifyElement","$slideMenuContent","_getDeleteButtonContainer","handleClick","_swipeStartHandler","_enablePositioning","_cacheItemData","_setPositions","_swipeUpdateHandler","signCorrection","_isRtlEnabled","isItemReadyToDelete","_isReadyToDelete","_getCurrentPositions","_getStartPositions","_cachedItemWidth","_cachedButtonWidth","buttonsContainer","startPositions","_$cachedContent","_minButtonContainerLeftOffset","_swipeEndHandler","endedAtReadyToDelete","readyToDelete","targetOffset","_toggleDeleteReady","stop","_disablePositioning","_animatePrepareDeleteReady","_animateToPositions","_animateForgetDeleteReady","currentPosition","durationTimePart","_visibility_change","_uiScheduler","APPOINTMENT_POPUP_CLASS","DAY_IN_MS","AppointmentPopup","lastEditData","saveChangesLocker","isEmptyText","isEmptyDescription","isDoneButtonVisible","isEmptyObject","_createPopupConfig","_createPopup","_createPopupToolbarItems","popupElement","onHiding","_createPopupContent","onShowing","_onShowing","defaultOptionsRules","_updateForm","popup","_actions","onAppointmentFormOpening","_processActionResult","canceled","updatePopupFullScreenMode","formElement","_createForm","rawAppointment","_createAppointmentAdapter","repeat","recurrenceRule","_getAllowTimeZoneEditing","_createAppointmentFormData","_isReadOnly","getEditors","_editAppointmentData","_editing","allowUpdating","calculateStartDate","_this$scheduler$_data","_tryGetWindowWidth","_isDeviceMobile","triggerResizeEvent","isRecurrence","isFullScreen","_isPopupFullScreenNeeded","_getMaxWidth","isIOs","_doneButtonClickHandler","showLoadPanel","validation","_showLoadPanel","complete","_hideLoadPanel","oldData","recData","_updatedRecAppointment","updateAppointment","addAppointment","saveEditData","_tryLockSaveChanges","saveChanges","endTime","inAllDayRow","updateScrollPosition","_unlockSaveChanges","overlayContent","normalizeColumnIndicesByPoints","getTransparentColumnIndex","fixedColumns","transparentColumnIndex","normalizeColumnWidths","fixedWidths","fixedColumnIndex","baseFixedColumns","_isFixedColumns","_createCol","fixed","_correctColumnIndicesForFixedColumns","transparentColspan","columnIndices","_renderTable","$fixedTable","getFixedColumns","_renderRows","_fixedTableElement","_renderRow","fixedCorrection","fixedCells","_createCell","prevFixedColumn","columnCommand","setEmptyText","isRowAltStyle","isAltRow","_wrapTableInScrollContainer","$scrollContainer","_renderCellContent","isEmptyCell","isFixedTableRendering","isGroupCell","groupCellTemplate","alignByFixedColumnCellCount","_getAlignByColumnCellCount","_getCellElementsCore","cellElements","fixedCellElements","fixedColumn","_getTableElement","_setTableElement","$tableElement","getRowIndex","$row","getFixedColumnsOffset","$transparentColumn","positionTransparentColumn","getTransparentColumnElement","getFixedTableElement","isFixedColumns","synchronizeRows","visibleColumns","isWidthsSynchronized","visibleWidth","isColumnWidthChanged","useVisibleColumns","isScrollbarVisible","hasAutoWidth","_getClientHeight","boundingClientRectElement","$rowElements","$fixedRowElements","fixedRowHeights","heightTable","heightFixedTable","fixedRowHeight","setScrollerSpacing","paddingLeft","paddingRight","columnFixing","fix","unfix","leftPosition","rightPosition","_getRowVisibleColumns","getContextMenuItems","columnFixingOptions","allowFixing","fixedPosition","beginGroup","getFixedColumnElements","columnElements","$transparentColumnElement","$fixedColumnElements","_getWidths","_detachHoverEvents","_attachHoverEvents","attachHoverEvent","isHover","contentClass","scrollDelay","_fixedScrollTimeout","$nearestScrollable","getScrollbarWidth","_updateScrollable","_updateFixedTablePosition","_getGroupCellOptions","_renderGroupedCells","_renderGroupSummaryCells","_hasAlignByColumnSummaryItems","_renderGroupSummaryCellsCore","$groupCell","groupCellColSpan","alignByColumnCellCount","startColumnIndex","_getSummaryCellIndex","setRowsOpacity","_setRowsOpacityCore","getCellIndex","needFocus","$focusedElement","editorFactory","vWidth","hWidth","$fixedContent","_scrollable","_getElasticScrollTop","elasticScrollTop","scrollbarWidth","reachedBottom","scrollableContent","scrollableContainer","_applyElasticScrolling","_scrollTop","_afterRowPrepared","_scrollToElement","footerView","pointsByColumns","draggingHeader","_generatePointsByColumns","targetDraggingPanel","sourceColumn","_pointCreated","_columnHeadersView","boundingRect","columnsResizer","pointsByFixedColumns","getPointsByColumns","_pointsByFixedColumns","cellsLength","isWidgetResizingMode","nextColumn","allowResizing","_getTargetPoint","currentX","SchedulerTimelineWorkWeek","_SchedulerTimelineWee","_getWeekendsCount","getWeekendsCount","_isSkippedData","isDataOnWeekend","weekendCount","_getCellCountInDay","_firstViewDate","getFirstViewDate","_firstDayOfWeek","_setStartDayHour","_BaseAppointmentsStra","AgendaRenderingStrategy","appointmentsByResources","groupedAppts","appts","additionalAppointments","recurrentIndexes","recurrenceBatch","_processRecurrenceAppointment","appointmentBatch","_processLongAppointment","_reduceRecurrenceAppointments","_combineAppointments","sortedIndex","appt","_calculateGroupIndex","apptIndex","resultInd","countApptInGroup","_defaultWidth","needClearSettings","_rows","groupedAppointments","currentAppointments","groupResult","appointmentCount","setMilliseconds","appointmentIsLong","appointmentIsRecurrence","indexInRow","startViewDate","_iterateRow","originalStartDate","calculatedStartDate","getDateByIndex","wrappedOriginalStartDate","OPERATION_ICONS","notcontains","startswith","endswith","OPERATION_DESCRIPTORS","BETWEEN_OPERATION_DATA_TYPES","isOnClickApplyFilterMode","ColumnHeadersViewFilterRowExtender","getEditorInstance","$editorContainer","componentNames","getRangeTextByFilterValue","rangeEnd","getColumnFilterValue","formatOptions","getFormatOptionsByColumn","bufferedFilterValue","getColumnSelectedFilterOperation","bufferedSelectedFilterOperation","getFilterValue","isFilterRange","isRangeStart","isValidFilterValue","updateFilterValue","_applyFilterViewController","setHighLight","columnFilterValue","normalizeFilterValue","notFireEvent","_updateEditorValue","$editorRangeElements","checkChanges","_getCellElement","overlayInstance","_updateFilterRangeContent","_updateFilterOperationChooser","_renderFilterRangeContent","_renderEditor","_getEditorOptions","_hideFilterRange","_filterRangeOverlayInstance","isFilterRowVisible","_isElementVisible","_initFilterRangeOverlay","sharedData","$overlay","EDITOR_CONTAINER_CLASS","$prevElement","getWidgetContainerClass","_updateFilterRangeOverlay","_showFilterRange","getFilterRangeOverlayInstance","_createRow","selectView","_getRows","_renderFilterCell","headerId","_renderFilterOperationChooser","renderTemplate","_updateCell","accessibilityOptions","inputAttr","_getFilterInputAccessibilityAttributes","parentType","showAllText","updateValueTimeout","columnAriaLabel","createEditor","$filterRangeContent","isCellWasFocused","_focusEditor","showFirstSubmenuMode","hideSubmenuOnMouseLeave","selectable","_getFilterOperationMenuItems","properties","columnSelectedFilterOperation","notFocusEditor","isOnClickMode","defaultSelectedFilterOperation","onSubmenuShown","_isEditorFocused","loseFocus","onSubmenuHiding","_hideSubmenu","_visibleSubmenu","operationDescriptions","availableFilterOperations","descriptionName","resetOperationText","DataControllerFilterRowExtender","createFilterExpression","showOperationChooser","applyFilterText","betweenStartText","betweenEndText","_getHeaderPanel","_headerPanel","enableApplyButton","removeHighLights","columnHeadersViewElement","_startResizing","isResizing","_targetPoint","_endResizing","_prepareFilterItem","filterItem","_isShowApplyFilterButton","NAMESPACED_CLICK_EVENT","DblClick","_handlerCount","_forgetLastClick","_firstClickTarget","_lastClickTimeStamp","timeStamp","timeBetweenClicks","closestCommonParent","getConfig","valueSeparator","notForLookup","$editorStart","FILTER_BUILDER_RANGE_CLASS","$editorEnd","getStartValue","getEndValue","_editorFactory","LayoutManager","_layout_element","getNearestCoord","firstCoord","secondCoord","pointCenterCoord","getLabelLayout","getPieRadius","paneCenterX","paneCenterY","accessibleRadius","minR","radiusIsFound","xCoords","yCoords","getLengthFromCenter","getSizeLabels","rWidth","outerLabelsCount","pieLabelSpacing","rSizes","correctLabelRadius","labelSizes","averageWidthLabels","curRadius","runningWidth","setVisibleArea","getAverageLabelWidth","sizeLabels","correctAvailableRadius","availableRadius","fullRadiusWithLabels","getFullRadiusWithLabels","toLayoutElementCoords","paneSpaceHeight","paneSpaceWidth","availableLabelWidth","needMoreSpaceForPanesCanvas","fixedSizeCallback","percentageIsValid","needHorizontalSpace","needVerticalSpace","paneCanvas","minSize","paneSized","needPaneHorizontalSpace","needPaneVerticalSpace","layoutInsideLegend","dayIndexes","weekCounter","SchedulerWorkSpaceWorkWeek","_SchedulerWorkSpaceWe","headerIndex","_getViewStartByOptions","cellsInGroup","_swipeable","Switch","_animateValue","switchedOnText","switchedOffText","_feedbackHideTimeout","_animating","_renderContainers","_$switchWrapper","_renderSwipeable","_renderSwitchInner","_renderLabels","_getInnerOffset","_offsetDirection","_getHandleOffset","_$switchInner","SWITCH_CLASS","_$switchContainer","_$handle","_$labelOn","_$labelOff","_setLabelsText","elastic","onUpdated","itemSizeFunc","_getItemSizeFunc","_$submitElement","_renderPosition","swipeOffset","innerOffset","handleOffset","_validateValue","check","_swiping","fromInnerOffset","toInnerOffset","fromHandleOffset","toHandleOffset","fromInnerConfig","toInnerConfig","fromHandleConfig","toHandlerConfig","maxOffOffset","maxOnOffset","maxLeftOffset","maxRightOffset","_feedbackDeferred","toHandleConfig","Boolean","pressed","_marginBound","_refresh","decoratorClass","decoratorsRegistry","registry","decoratorConfig","_ajax","_abstract_store","originalArguments","mapRecursive","mapper","mapGroup","createCustomStoreFromUrl","normalizationOptions","sendRequest","loadMode","fromUrlLoadMode","storeConfig","createCustomStoreFromLoadFunc","_uiSchedulerWork_space","_uiSchedulerCurrent_time_shader","tableCreator","SchedulerTimeline","_SchedulerWorkSpace","_$sidebarTable","isMultiSelection","_$focusedCell","newFirstViewDate","getDateWithoutTimezoneChange","_getDateByIndexCore","dayIndex","_calculateCellIndex","_getInterval","_getHiddenInterval","isTimezoneChangeInDate","_calculateHiddenInterval","_createWorkSpaceScrollableElements","_$dateTable","timelineConfig","scrollByContent","_$thead","$headerRow","_needRenderWeekHeader","cellTemplate","_getWeekDuration","$th","_formatWeekdayAndDay","templateOptions","_incrementDate","before","_setFirstViewDate","groupCellTemplates","_renderGroupHeader","_renderDateHeader","_renderAllDayPanel","_renderTimePanel","_updateGroupTableHeight","_sidebarScrollable","_applyCellTemplates","timeDiff","_getTimeDiff","_calculateDurationInCells","today","_getToday","_getIndicationFirstViewDate","getCellDuration","_createIndicator","isIndicationOnView","_getDateByIndex","startCellDate","endCellDate","minHeight","_getWorkSpaceMinHeight","_getWorkSpaceHeight","workspaceContainerHeight","getHeaderPanelHeight","groupByDate","tableCreatorStrategy","VERTICAL","HORIZONTAL","makeGroupedTable","groupRowClass","_getGroupRowClass","groupHeaderRowClass","groupHeaderClass","_getGroupHeaderClass","groupHeaderContentClass","_getGroupHeaderContentClass","minCellHeight","_calculateMinCellHeight","_getDateTable","dateTableRowSelector","_getDateTableRowClass","_groupedStrategy","prepareCellIndexes","firstViewDateTime","hiddenInterval","timeZoneOffset","apptStart","fullInterval","fullDays","tailDelta","gapBeforeAppt","timeShift","positionShift","cellPosition","isRtl","scrolledCellCount","getScrollableScrollLeft","visibleCellCount","totalCellCount","leftDate","rightDate","_getScrollCoordinates","getScrollableContainer","registerTheme","defaultPalette","primaryTitleColor","secondaryTitleColor","gridColor","axisColor","commonSeriesSettings","commonPaneSettings","commonAxisSettings","breakStyle","gauge","valueIndicators","rangebar","textcloud","barGauge","funnel","sparkline","pointColor","minColor","maxColor","treeMap","rangeSelector","shutter","selectedRangeColor","sliderMarker","sliderHandle","bullet","sankey","_selection_filter","_initSelectedItemKeyHash","_preserveSelectionUpdate","keyIndicesToRemoveMap","keyIndex","isBatchDeselect","removeSelectedItem","addSelectedItem","_batchRemoveSelectedItems","_loadSelectedItemsCore","selectionFilterCreator","SelectionFilterCreator","combinedFilter","getCombinedFilter","deselectedItems","getLocalFilter","_replaceSelectionUpdate","internalKeys","setSelectedItems","_warnOnIncorrectKeys","_loadSelectedItems","_lastLoadDeferred","_getKeyHash","_indexOfSelectedItemKey","_getSelectedIndexByKey","ignoreIndicesMap","_getSelectedIndexByHash","_shiftSelectedKeyIndices","currentKeyIndex","currentKey","currentKeyHash","currentKeyIndices","keyIndices","_updateAddedItemKeys","_updateRemovedItemKeys","oldSelectedKeys","oldSelectedItems","isItemDataSelected","getSelectAllState","visibleOnly","_public_component","CollectionItem","rawData","_rawData","attachInstanceToElement","$placeholder","_watchers","_renderWatchers","_startWatcher","_renderDisabled","_renderVisible","exprGetter","fieldGetter","watcher","watchMethod","fn","oldValue","filteredCallback","forcibleWatcher","_dirty","setDataField","_updateOwnerFocus","isDisabled","ownerComponent","owner","_resetItemFocus","getInstanceByElement","_load_panel","getIntervalSelector","calculateCellValue","isDateType","nameIntervalSelector","getDisplayFormat","displayFormat","columnCaption","valueFormat","getWidgetInstance","editorData","dxComponents","widgetName","renderNoDataText","noDataClass","noDataElement","_getNoDataText","renderLoadPanel","isLocalStore","loadPanelOptions","_loadPanel","$window","keyName","resultFilter","changeNames","changesWithChangeNamesCount","equalFilterParameters","filter1","filter2","defaultResult","trueText","falseText","displayValueMap","calculateDisplayValue","calculateGroupValue","getFormatByDataType","getHeaderFilterGroupParameters","remoteGrouping","sortingMethod","compare","equalSortParameters","sortParameters1","sortParameters2","ignoreIsExpanded","selector1","selector2","originalCallback","pointCreated","notCreatePoint","prevItemOffset","getExpandCellTemplate","allowRenderToDetachedContainer","localize","getSelectionRange","focusedElement","selectionStart","selectionEnd","setSelectionRange","selectionRange","focusAndSelectElement","isSelectTextOnEditingStart","keyboardController","isEditingNavigationMode","_isFastEditingStarted","_loadItemDeferred","getLastResizableColumnIndex","resultWidths","hasResizableColumns","isElementInCurrentGrid","controller","isTablePart","isTagName","tagWrappers","tagsCount","startTags","endTags","thead","td","col","tbody","colgroup","tfoot","th","createDocumentFragment","tags","firstRootTag","tagWrapper","lastChild","_scatter_series","newX","newY","newAngle","getTangentPoint","centerPoint","nextStepAngle","correctAngle","lineMethods","autoHidePointMarkersEnabled","_applyGroupSettings","_applyElementsClipRect","_setGroupsSettings","_styles","normal","_elementsGroup","_bordersGroup","_markersGroup","_createGroups","_createGroup","_areBordersVisible","_getDefaultSegment","pt","_parseLineOptions","_parseStyle","_applyStyle","_graphics","_drawElement","_createMainElement","_removeElement","_updateElement","animationComplete","lineElement","_animateComplete","_defaultDuration","_animate","elem","_drawPoint","_sortPoints","p1","p2","_drawSegment","segmentCount","lastSegment","_getTrackerSettings","defaultTrackerWidth","_defaultTrackerWidth","strokeWidthFromElements","_getMainPointsFromSegment","_drawTrackerElement","_updateTrackerElement","checkSeriesViewportCoord","_points","isArgumentAxis","lineSeries","getPointCenterByArg","getSeriesPairCoord","isArgument","oppositeCoord","nearestPoints","_getNearestPointsByCoord","needValueCoord","tmpCoord","_checkAxisVisibleAreaCoord","stepline","_calculateStepLinePoints","coordName","isOpposite","oppositeCoordName","bezierPoints","pointsCopy","checkExtremum","otherPointCoord","pointCoord","controlCoord","curPoint","leftControlX","leftControlY","rightControlX","rightControlY","xCur","yCur","leftPoint","rightPoint","bezierCoordName","bezierOppositeCoordName","_loop","p0","p3","solveCubicEquation","obtainCubicBezierTCoef","_getNearestPoints","_getBezierPoints","preparedPoints","_closeSegment","_getTangentPoints","_getRemainingAngle","normAngle","_modifyReflectedPoint","lastPoint","differenceAngle","tangentPoints","betweenAngle","argAxis","paramName","coordParam","isInsideInterval","getRadius","neighborPoints","getNeighborPoints","stepAngle","k1","b1","k2","trunc","y0","param","closed","firstPointCopy","lastPointCopy","rearwardRefPoint","forwardRefPoint","_devices$real","_ui3","_grouped_data_converter_mixin","SEARCH_MODES","DropDownList","tab","_allowSelectItemByTab","$focusedItem","_setSelectedElement","_setValue","_dataExpressionDefaultOptions","showDataBeforeSearch","popupPosition","wrapItemText","buttonsLocation","_initDataExpressions","_setListDataSource","_validateSearchMode","_clearSelectedItem","_initItems","_setListFocusedElementOptionChange","_updateParentActiveDescendant","_updateActiveDescendant","_initContentReadyAction","_initSelectionChangedAction","_initItemClickAction","_contentReadyAction","_selectionChangedAction","_itemClickAction","_saveFocusOnWidget","_focusInput","_fitIntoRange","_getPlainItems","_calcNextItem","_getSelectedIndex","_isValueEquals","_updateCustomBoundaryContainer","customContainer","$containerWithParents","overflowY","_$customBoundaryContainer","_getCurrentValue","_loadInputValue","_setSelectedItem","_loadItem","_getItemFromPlain","itemByValue","_loadValue","_this$_list","opened","listFocusedItemId","getFocusedItemId","isElementOnDom","activedescendant","_displayValue","_displayGetter","itemValue","_isSelectedValue","normalizedSearchMode","_processDataSourceChanging","_isCustomValueAllowed","_clearFilter","_preventFiltering","templatesRenderAsynchronously","autoResizeEnabled","_getMaxHeight","_getKeyboardListeners","canListHaveFocus","_canListHaveFocus","_getAriaTarget","_listId","_refreshList","_renderPreventBlur","_renderOpenedState","controls","owns","_popupContentId","_setDefaultAria","haspopup","autocomplete","_shouldRefreshDataSource","_needPassDataSourceToList","_isDesktopDevice","_templates","templateProvider","_getCollectionKeyExpr","_displayGetterExpr","_listItemClickAction","_getDataSource","_revertPageOnEmptyLoad","_getGroupedOption","_dataSourceFromUrlLoadMode","dxList","_setWidgetOption","_needClearFilter","_canKeepDataSource","_this$_dataSource","isMinSearchLengthExceeded","_isLastMinSearchLengthExceeded","_getSearchEvent","_getSetFocusPolicyEvent","_renderEvents","_shouldRenderSearchEvent","_refreshEvents","_clearSearchTimer","_searchDataSource","_filterDataSource","_dataSourceFiltered","_shouldOpenPopup","_hasItemsToShow","shouldOpenPopup","_isFocused","_dataSourceChangedHandler","newItems","resultAmount","_needPopupRepaint","currentPageIndex","needRepaint","$customBoundaryContainer","containerHeight","_setCollectionWidgetOption","_setSubmitValue","submitValue","_shouldUseDisplayValue","_dataExpressionOptionChanged","WHITE","BLACK","RED","NONE","SOLID","TOP","RIGHT","LEFT","CENTER","weight","redrawOnResize","subtitle","loadingIndicator","markerSize","columnCount","columnItemSpacing","rowItemSpacing","maxPointCountSupported","showInLegend","hoverStyle","hatching","selectionStyle","valueErrorBar","displayMode","edgeLength","radialOffset","maxLabelCount","seriesSelectionMode","pointSelectionMode","equalRowHeight","dataPrepareSettings","checkTypeForAllData","convertToAxisDataType","_rtl","itemTextPosition","valueMarginsEnabled","placeholderSize","discreteAxisDivisionMode","minorGrid","minorTick","stripStyle","constantLineStyle","tooltipEnabled","aggregation","symbol","scatter","steparea","rangearea","rangesplinearea","candlestick","reduction","stock","crosshair","verticalLine","horizontalLine","multipleAxesSpacing","forceUserTickInterval","overlappingBehavior","indentFromAxis","horizontalAxis","axisDivisionFactor","staggeringSpacing","constantLines","verticalAxis","endOnTick","workWeek","autoBreaksEnabled","maxAutoBreakCount","scrollBar","adjustOnZoom","autoHidePointMarkers","synchronizeMultiAxes","stickyHovering","_skipArgumentSorting","doughnut","donut","hideFirstOrLast","rangeContainer","indent","twocolorneedle","secondColor","trianglemarker","indicator","hasPositiveMeaning","_circular","scaleDivisionFactor","orientation","indentFromTick","valueIndicatorType","subvalueIndicatorType","indentFromCenter","spindleSize","spindleGapSize","beginAdaptingAtRadius","triangleneedle","secondFraction","_linear","rectangle","relativeInnerRadius","barSpacing","connectorWidth","showCustomBoundaryTicks","separatorHeight","textLeftIndent","textTopIndent","invalidRangeColor","behavior","snapToTicks","moveSelectedRangeByClick","manualRangeSelectionEnabled","allowSlidersSwap","callValueChanged","layer","hoveredBorderColor","selectedBorderWidth","selectedBorderColor","hoveredColor","selectedColor","selectedStep","backStep","backColor","backOpacity","maxSize","hoveredBorderWidth","backgroundOpacity","controlBar","tile","lineColor","areaOpacity","barPositiveColor","barNegativeColor","winColor","lossColor","firstLastColor","pointSymbol","pointSize","winlossThreshold","showFirstLast","showMinMax","targetColor","targetWidth","showTarget","showZeroLevel","firstPointOnStartAngle","period","sortData","colorField","hoverEnabled","algorithm","neckWidth","neckHeight","sourceField","targetField","weightField","useNodeColors","colorMode","_uiSchedulerAppointmentsPositioningStrategy","_BasePositioningStrat","AdaptivePositioningStrategy","hasAllDayAppointments","getDefaultAllDayCellHeight","simple","_calculateDynamicAppointmentCountPerCell","_getAppointmentMinCount","_getAppointmentMaxWidth","_getAppointmentDefaultWidth","getCaretInBoundaries","getCaretOffset","isCaretInBoundaries","getCaretAfterFormat","getCaretWithOffset","getCaretBoundaries","signParts","getSign","str","prefixStubLength","postfixStubLength","_getDigitCountBeforeIndex","getDecimalSeparator","regExp","escapeRegExp","_reverseText","_getDigitPositionByIndex","digitIndex","formatted","isSeparatorBasedText","isSeparatorBasedString","pointPosition","newPointPosition","textParts","formattedParts","relativeIndex","digitsBefore","formattedIntPart","_trimNonNumericCharsFromEnd","positionFromEnd","digitsFromEnd","newPositionFromEnd","boundaries","fitIntoRange","newText","previousBoundaries","Point","_bubble_point","_range_symbol_point","_range_bar_point","_candlestick_point","_stock_point","_polar_point","mixins","statesConsts","HOVER","NORMAL","SELECTION","pointTypes","isNoneMode","_viewCounters","_emptySettings","symbolPoint","barPoint","bubblePoint","piePoint","rangeSymbolPoint","rangeBarPoint","candlestickPoint","stockPoint","getColor","usePointCustomOptions","customizePoint","_dataItem","_currentStyle","updateOptions","argumentWasChanged","initialArgument","originalArgument","aggregationInfo","_updateData","setInvisibility","_fillStyle","_updateLabelData","deleteMarker","firstDrawing","_needDeletingOnDraw","_needClearingOnDraw","clearMarker","_hasGraphic","_updateMarker","markers","getMarkerVisibility","_drawLabel","_drawErrorBar","_getViewStyle","applyView","legendCallback","getRenderer","getMarkersGroup","toForeground","setView","resetView","viewCounters","releaseHoverState","selectPoint","deselectPoint","hoverPoint","clearHover","clearPointHover","showTooltip","showPointTooltip","hideTooltip","hidePointTooltip","_checkLabelsChanging","oldType","newType","isNewRange","isOldRange","newOptions","oldOptions","widgetType","newPointTypeMixin","deleteLabel","_resetType","_setType","_checkSymbol","_checkCustomize","_updateLabelOptions","translated","_getCustomLabelVisibility","useLabelCustomOptions","methods","isInVisibleArea","isHovered","partitionDuration","setDefaultCoords","_calculateVisibility","_argumentChecker","isValueCorrect","valueChecker","_valueChecker","hasCoords","_populatePointShape","hideMarker","clearVisibility","resetCorrection","resetValue","setPercentValue","applyWordWrap","setLabelTrackerData","updateLabelCoord","drawLabel","_errorBar","getTooltipFormatObject","stackPoints","tooltipFormatObject","_getFormatObject","sharedTooltipValuesArray","tooltipStackPointsFormatObject","seriesName","stackName","getStackName","rangeText","formatRange","intervalStart","intervalEnd","aggregationInterval","setHole","holeValue","resetHoles","getLabel","getLabels","getCenterCoord","DesktopTooltipStrategy","_tooltipStrategyBase","_TooltipStrategyBase","dataList","_getBoundary","_extraOptions","isAppointmentInAllDayPanel","isButtonClick","_createTooltipElement","createComponent","_onShown","_getContentTemplate","TooltipStrategyBase","require","loadMessages","de","Yes","No","Cancel","Clear","Done","Loading","Select","Search","Back","OK","en","CurrentTimeShader","initShaderElements","renderShader","shader","rectangleneedle","_base_indicators","_getCosAndSin","_convertAngleToRendererSpace","convertAngleToRendererSpace","SimpleIndicator","BaseIndicator","_actualPosition","_rootElement","_trackerElement","_isEnabled","_getRadius","_getIndentFromCenter","_renderPointer","_clearPointer","inverseHorizontalOffset","inverseVerticalOffset","getTooltipParameters","_currentValue","NeedleIndicator","_adjustOffset","getOffset","_renderSpindle","gapSize","_spindleOuter","_spindleInner","containerBackgroundColor","rectangleNeedle","triangleNeedle","twoColorNeedle","y3","y4","fraction","_firstElement","_spaceElement","_secondElement","triangleMarker","textCloud","BaseTextCloudMarker","_getTextCloudOptions","nAngle","_measureText","_textFullHeight","_textFullWidth","rangeBar","BaseRangeBar","_createBarItem","_createTracker","_setBarSides","_maxSide","_minSide","_getSpace","_isTextVisible","_setTextItemsSides","_lineFrom","_lineTo","_textRadius","mainPosition1","mainPosition2","basePosition","_basePosition","actualPosition","_startPosition","_endPosition","main1","main2","back1","_space","back2","_buildItemSettings","_updateTextPosition","_textWidth","_textHeight","_textVerticalOffset","_updateLinePosition","_line","_getTooltipPosition","_hasText","_position2","_function_template","DropDownEditor","$focusableElement","_getLastPopupElement","_getFirstPopupElement","escape","altKey","_getDefaultButtons","Ctor","onOpened","onClosed","acceptCustomValue","applyValueMode","dropDownButtonTemplate","openOnFieldClick","_getDefaultPopupPosition","onPopupInitialized","cancelButtonText","isRtlEnabled","_initVisibilityActions","_initPopupInitializedAction","_updatePopupPosition","_this$_getDefaultPopu","_openAction","_closeAction","_popupInitializedAction","_renderOpenHandler","_attachFocusOutHandler","_readOnlyPropValue","_cleanFocusState","_detachFocusEvents","_getFieldTemplate","_renderTemplatedField","isFocused","_detachKeyboardEvents","_refreshButtonsContainer","beforeButtonsContainerParent","_$beforeButtonsContainer","afterButtonsContainerParent","_$afterButtonsContainer","$templateWrapper","_integrateInput","prepend","_refreshValueChangeEvent","_renderFocusState","_refreshEmptinessEvent","_toggleEmptinessEventHandler","_renderEmptinessEvent","dropDownButton","FunctionTemplate","$inputWrapper","_getInputClickHandler","_openOnFieldClickAction","_openHandler","_detachFocusOutEvents","newTarget","relatedTarget","popupWrapper","_executeOpenAction","_bindInnerWidgetOptions","_popupInitializedHandler","_closeOutsideDropDownHandler","_popupPositionedHandler","flip","_this$_validationMess","_validationMessage","_getValidationMessagePositionRequest","_this$_validationMess2","positionRequest","myTop","popupTop","getButton","$dropDownButton","isInputClicked","isDropDownButtonClicked","_popupElementTabHandler","_popupElementEscHandler","_popupButtonInitializedHandler","resultConfig","splitPair","_popupOptionChanged","getOptionsFromContainer","optionsKeys","showPopupTitle","_updateButtons","open","_dom_component","setDefaultOptionValue","defaultValueGetter","PreactWrapper","_DOMComponent","_viewComponent","_propsInfo","twoWay","_objectSpread2","defaultValue","getProps","_shouldRefresh","_renderPreact","containerNode","_documentFragment","_preactReplaced","_this$_propsInfo","allowNull","_ref4","_patchElementParam","_patchOptionValues","ref","_viewRef","_extractDefaultSlot","class","_actionsMap","_getActionConfigs","_addAction","createRef","actionByOption","actArgs","isNode","Fragment","dummyDivRef","anonymousTemplateName","transclude","templateOption","_ref6","useRef","useLayoutEffect","$children","contents","$template","wrapElement","$newChildren","removeDifferentElements","which","_handler","_result","_result2","nodeType","currentKeys","_this$_storedClasses","_elementAttr","specified","elemStyle","getPropertyValue","getAttribute","_storedClasses","IS_RENOVATED_WIDGET","getActiveElement","FormDialog","_editorInstance","_popupUserConfig","_escKeyHandler","$formContainer","_renderForm","onEditorEnterKey","customizeItem","_addEscapeHandler","activeElement","formUserConfig","formConfig","processAxisOptions","applyParticularAxisOptions","mergeOptions","applyParticularTheme","_base_theme_manager","BaseThemeManager","axisOptions","logarithmBaseError","userAlignment","userOptions","_theme","processedUserOptions","_mergedSettings","valueAxisRangeSelector","seriesCount","mainSeriesColor","seriesVisibility","userCommonSettings","themeCommonSettings","palette","isBar","isLine","isArea","isBubble","resolveLabelsOverlapping","getNextColor","cat","_multiPieColors","nameField","parseOption","_mergeAxisTitleOptions","_callback","resetPalette","_initializeTheme","updatePalette","resetOptions","createPalette","useHighlight","extensionMode","_dateAdapter","createUTCDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getTimezoneOffsetChangeInMinutes","getDaylightOffset","dateUtc","_getDaylightOffsetByTimezone","timeZone","startDayDate","endDayDate","isEqualLocalTimeZoneByNativeDate","timeZoneName","_getExtremeDates4","getExtremeDates","startDateLocalOffset","endDateLocalOffset","startDateOffset","endDateOffset","nowDate","getDaylightOffsetInMs","getTimezoneOffsetChangeInMs","getCorrectedDateByDaylightOffsets","convertedOriginalStartDate","convertedDate","startDateTimezone","correctRecurrenceExceptionByTimezone","exception","exceptionByStartDate","startDateTimeZone","isBackConversion","timezoneOffset","createUTCDateWithLocalOffset","createDateFromUTCWithLocalOffset","timezoneOffsetBeforeInMin","addTime","subtractMinutes","clonedDate","hasDSTInLocalTimeZone","_getExtremeDates2","isEqualLocalTimeZone","Intl","localTimeZoneName","DateTimeFormat","resolvedOptions","removeLoadPanel","loading","createLoadPanel","_animator","_empty_template","DRAGGABLE","DRAGSTART_EVENT_NAME","DRAGEND_EVENT_NAME","DRAG_ENTER_EVENT_NAME","DRAGEND_LEAVE_EVENT_NAME","POINTERDOWN_EVENT_NAME","getMousePosition","ScrollHelper","_preventScroll","_component","_scrollValue","_overFlowAttr","_sizeAttr","_scrollSizeProp","_clientSizeProp","_limitProps","mousePosition","_trySetScrollable","_$scrollableAtPointer","_scrollSpeed","distanceToBorders","sensitivity","isScrollable","_calculateDistanceToBorders","_calculateScrollSpeed","$area","areaBoundingRect","distance","maxSpeed","nextScrollPosition","maxScrollPosition","dragMoveArgs","_dragMoveArgs","_dragMoveHandler","scrollableSize","ScrollAnimator","_strategy","_step","horizontalScrollHelper","_horizontalScrollHelper","verticalScrollHelper","scrollByStep","Draggable","onDragEnd","onDragEnter","onDragLeave","onDrop","autoScroll","scrollSpeed","scrollSensitivity","_attachEventHandlers","_scrollAnimator","_normalizeCursorOffset","_getNormalizedCursorOffset","_calculateElementOffset","elementOffset","dragElementOffset","$dragElement","isCloned","_dragElementIsCloned","cursorOffset","normalizedCursorOffset","currentLocate","_initialLocate","initialOffset","_initPosition","_startAnimator","inProgress","_stopAnimator","dasherize","$wrapper","checkDropTarget","targetGroup","sourceGroup","isOutsideScrollable","_getArea","_pointerDownHandler","_dragEndHandler","_dragLeaveHandler","_createDragElement","_resetDragElement","_toggleDraggingClass","_resetSourceElement","_detachEventHandlers","$items","_isValidElement","dragStartArgs","_setSourceDraggable","isFixedPosition","areaOffset","_getAreaOffset","_getBoundOffset","areaWidth","areaHeight","elementWidth","elementHeight","maxTopOffset","maxBottomOffset","quadToObject","allObjects","getElementsFromPoint","updateScrollable","ownerDocument","msElements","msElementsFromPoint","elementsFromPoint","_defaultActionArgs","fromComponent","toComponent","fromData","toData","_revertItemToInitialPosition","dragEndEventArgs","dropEventArgs","needRevertPosition","_resetTargetDraggable","_resetSourceDraggable","_isTargetOverAnotherDraggable","$sourceDraggableElement","$targetDraggableElement","firstWidgetElement","isTargetOverItself","isTargetOverNestedDraggable","_fireDragEnterEvent","_setTargetDraggable","_fireDragLeaveEvent","_getAnonymousTemplateName","EmptyTemplate","generateDateBreaks","singleWorkdays","holidays","weekendDayIndices","workDays","workdays","workDay","getNextDayIndex","getWeekEndDayIndices","currentWeekEnd","weekend","dayBetweenWeekend","getDaysDistance","generateDateBreaksForWeekend","dayInWeekend","adjustedMin","adjustedMax","holiday","holidayStart","holidayEnd","generateBreaksForHolidays","calculateGaps","exactWorkDays","processWorkDay","workday","separatedBreak","scaleBreak","dayEnd","separateBreak","excludeWorkDaysFromWeekEndBreaks","localStoreBackends","storeOptions","_immediate","flushInterval","saveProxy","cordova","notifyChanged","_loadImpl","_saveImpl","raw","localStorage","getItem","setItem","removeItem","_backend","backend","_insertImpl","_updateImpl","_removeImpl","LoadingIndicator","_createStates","notify","_states","setSize","_transit","stateId","_isHiding","stopAnimation","unstoppable","_noHiding","scheduleHiding","fulfillHiding","_loadingIndicator","_skipLoadingIndicatorOptions","_scheduleLoadingIndicatorHiding","_fulfillLoadingIndicatorHiding","showLoadingIndicator","hideLoadingIndicator","_onBeginUpdate","_optionChangedLocker","_dataSourceLoadingChangedHandler","_setContentSize","_initialized","_dataIsReady","onLoadingIndicatorReady","_drawn","_parent_locales","_parentLocale","currentLocale","locale","getValueByClosestLocale","isRootLocale","_multi_axes_synchronizer","_advanced_chart","_scroll_bar","_crosshair","_range_data_calculator","_layout_manager","_shutter_zoom","_zoom_and_pan","DEFAULT_PANES","_isArray","changeVisibilityAxisGrids","gridVisibility","minorGridVisibility","gridOpt","minorGridOpt","compareAxes","priority","doesPaneExist","paneName","found","accumulate","src1","src2","auxSpacing","val1","val2","pickMax","pickMaxValue","getAxisMargins","getHorizontalAxesMargins","getMarginsFunc","margins","axisMargins","paneMargins","getMultipleAxesSpacing","getVerticalAxesMargins","performActionOnAxes","actionArgument1","actionArgument2","actionArgument3","shrinkCanvases","canvases","verticalMargins","horizontalMargins","getMargin","getMaxMargin","margins1","margins2","getOriginalField","shrink","paneNames","sizeField","startMargin","endMargin","oppositeMargins","firstPane","PANE_PADDING","totalCustomSpace","paneSize","drawAxesWithTicks","panesBorderOptions","shiftAxis","side1","side2","shifts","customPositionIsAvailable","customPositionEqualsToPredefined","getCommonSize","checkUsedSpace","sizeShortage","getMarginFunc","dxChart","AdvancedChart","_fontFields","paneAxis","_correctValueAxes","_createPanes","defaultPane","panesNameCounter","_getAxisRenderingOptions","drawingType","_prepareAxisOptions","typeSelector","containerColor","paneList","_initCustomPositioningAxes","valueAxisName","customPositionAxis","getOrthogonalAxis","customPositionIsBoundaryOrthogonalAxis","customPositionIsBoundary","_getAllAxes","_resetAxesAnimation","isFirstDrawing","resetApplyingAnimation","_cleanGroups","beforeCleanGroups","afterCleanGroups","_axesBoundaryPositioning","allAxes","boundaryStateChanged","prevBoundaryState","_customBoundaryPosition","getCustomBoundaryPosition","valueAxisOptions","valueAxesOptions","crosshairMargins","_getCrosshairMargins","findAxis","getFirstAxisNameForPane","axInd","findAxisOptions","_createAxis","_populateAxesOptions","optionPath","crosshairMargin","applyVisualRangeSetter","_getVisualRangeSetter","setPane","needHideGrids","paneWithAxis","axesForPane","axisShown","hiddenStubAxis","minorGridOptions","gridOptions","defaultAxis","axesWithSamePath","_getSeriesForPane","paneSeries","oneSeries","_createPanesBorderOptions","commonBorderOptions","scrollBarOptions","scrollBarGroup","_scrollBarGroup","_scrollBar","ScrollBar","_createPanesBackground","_appendAxesGroups","_adjustViewport","alignToBounds","dataVisualRangeIsReduced","_recreateSizeDependentObjects","isCanvasChanged","zoomChanged","_isZooming","updateCanvas","_useAllAggregatedPoints","_processSeriesFamilies","zoomRange","viewportDistance","getCategoriesInfo","getPrecision","_zoomLength","_axesReinitialized","_drawPanesBorders","_createClipRectsForPanes","_applyClipRectsForAxes","_fillPanesBackground","_updateLegendPosition","legendHasInsidePosition","drawLegend","newCanvas","_allowLegendInsidePosition","paneIndex","_getPaneIndex","panesClipRects","_panesClipRects","wideClipRect","wide","setClippingParams","_getPaneBorderVisibility","_updatePanesCanvases","recreateCanvas","updatePanesCanvases","_normalizePanesHeight","normalizePanesHeight","_renderScaleBreaks","drawScaleBreaks","_getArgFilter","allSeries","borderCoords","usePointsToDefineAutoHiding","markersInfo","filteredSeries","overloadedSeries","argVisualRange","argTranslator","argViewPortFilter","valAxis","valVisualRange","getCanvasRange","valTranslator","valViewPortFilter","sr","tp","mp","pointsCount","continuousSeries","collectMarkersInfoBySeries","currentSeries","pointsArea","fastHidingPointMarkersByArea","sortingCallback","isContinuousSeries","next_x","next_y","updateMarkersInfo","argAxisType","applyAutoHidePointMarkers","calculateTitlesWidth","getTitle","extendedArgAxes","_isArgumentAxisBeforeScrollBar","verticalAxes","verticalElements","horizontalAxes","horizontalElements","allElements","panesCanvases","paneSizes","cleanPanesCanvases","needCustomAdjustAxes","adjustAxes","resolveOverlappingForCustomPositioning","vAxesMargins","hAxesMargins","estimateMargins","drawAxesAndSetCanvases","_changesApplying","_estimateTickIntervals","oldTitlesWidth","pointsToAnimation","_getPointsToAnimation","sum","animationPointsLimit","axisAnimationEnabled","setInitRange","hasWrap","getCustomPosition","_axisPosition","_getExtraTemplatesItems","_collectTemplatesFromItems","launchRequest","setRenderedState","doneRequest","estimateTickInterval","checkForMoreSpaceForPanesCanvas","needSpace","argAxisRightMargin","rightPanesIndent","argAxisBottomMargin","bottomPanesIndent","realSize","customSize","containerHasStyledHeight","checkElementHasPropertyFromStyleSheet","_forceResize","_updateSize","_preserveOriginalCanvas","_updateCanvasClipRect","stopAllAnimations","_argumentAxis$getOpti","argAxisPosition","getResolvedBoundaryPosition","argAxisLabelPosition","scrollBarPosition","hasCustomPosition","_getPanesParameters","_createCrosshairCursor","_getCommonCanvas","_crosshairCursorGroup","commonCanvas","defaultBackgroundColor","rects","_panesBackgroundGroup","panesBackground","bc","_calcPaneBorderCoords","_panesBorderGroup","segmentRectParams","_createClipRect","clipArray","needWideClipRect","isFinancialSeries","areErrorBarsVisible","customPositionAxes","chartCanvasClipRectID","_getCanvasClipRectID","elementsClipRectID","_getElementsClipRectID","canvasClipRectID","applyClipRects","commonPaneBorderVisible","paneBorder","_getCanvasForPane","panesNumber","_getCrosshairOptions","_resolveLabelOverlappingStack","shiftDirection","_getStackPoints","stacks","coordPosition","getPoint","isInverted","zoomArgument","resetVisualRange","nonVirtualArgumentAxis","_applyCustomVisualRangeOption","getVisibleArgumentBounds","isDiscrete","_change_FULL_RENDER","_changes","_raiseZoomEndHandlers","_getAxesForScaling","_applyVisualRangeByVirtualAxes","_notifyVisualRange","argumentVisualRange","convertVisualRangeObject","skipEventRising","rangesAreEqual","queryByOptions","isFullBranchFilterMode","DataSourceAdapterTreeList","_createKeyGetter","getKeyExpr","_createKeySetter","compileSetter","_createParentIdGetter","createParentIdSetter","parentIdExpr","_createItemsGetter","_createHasItemsGetter","hasItemsExpr","_createHasItemsSetter","_updateIndexByKeyObject","_indexByKey","_calculateHasItems","hasItems","parentIds","isFullBranch","_hasItemsGetter","_isChildrenLoaded","filtering","hasChildren","_createVisibleItemsByNodes","isRowExpanded","_convertItemToNode","nodeByKey","_parentIdGetter","_createNodesByItems","visibleByKey","_nodeByKey","rootNode","_convertDataToPlainStructure","_itemsGetter","isConverted","createObjectWithChanges","_keySetter","_parentIdSetter","childItems","itemsExpr","_createIdFilter","parentIdFilters","expandVisibleNodes","_lastLoadOptions","_isReload","cachedStoreData","collapseVisibleNodes","_getParentIdsToLoad","parentIdsToLoad","getNodeByKey","_handleDataLoading","expandedRowKeys","cachedPagingData","mergeStoreLoadData","_generateInfoToLoad","needChildren","keyMap","resultKeyMap","resultKeys","needToLoad","_loadParentsOrChildren","needLocalFiltering","_that$_generateInfoTo","isRemoteFiltering","concatLoadedData","loadedData","_cachedStoreData","cachedNodes","fullData","_loadParents","_loadChildrenIfNeed","_updateHasItemsMap","_getKeyInfo","_applyBatch","baseChanges","_applyInsert","_applyRemove","_setHasItems","hasItemsSetter","_hasItemsSetter","parentKeyOf","getChildNodeKeys","_handleDataLoaded","_fillNodes","needToExpand","foreachNodes","_processTreeStructure","_rootNode","_isNodesInitializing","executeAction","_totalItemsCount","_handleDataLoadedCore","filterMode","needLoadParents","_handlePush","isNeedReshape","getRootNode","isExpandedByKey","indexExpandedNodeKey","getNodeLeafKeys","childNode","parentKey","childrenKeys","loadDescendants","childrenOnly","childKeys","child","getChildKeys","forEachNode","extender","getFilterSelector","getFilterExpressionByRange","getFilterExpressionForDate","getFilterExpressionForNumber","DEFAULT_DATE_INTERVAL","DEFAULT_DATETIME_INTERVAL","dateIntervals","displayField","endFilterValue","startFilterExpression","endFilterExpression","dateStart","dateEnd","defaultCalculateFilterExpression","isSearchByDisplayValue","_fromValue","_toValue","_add","convert","_topLabel","_bottomLabel","topMarker","bottomMarker","emptySettings","markerType","labelsInside","_getLabelMinFormatObject","initialMinValue","originalValue","originalMinValue","maxFormatObject","_getLabelFormatObject","_createLabel","images","_getImage","_checkImage","_getPositionFromLocation","_getImageBBox","_getSymbolBBox","isTop","_checkOverlay","bottomCoord","topCoord","topValue","_getOverlayCorrections","topCoords","bottomCoords","coordSelector","minBound","maxBound","coord1","coord2","_checkLabelsOverlay","topLocation","corrections","notInverted","customVisibility","topLabel","bottomLabel","getLabelVisibility","visibleTopMarker","visibleBottomMarker","imageOption","rangeMaxPoint","rangeMinPoint","oldSymbol","newSymbol","symbolChanged","oldImages","newImages","topImageChanged","bottomImageChanged","_getSettingsForTwoMarkers","_drawOneMarker","imageSettings","_updateOneMarker","_createMarker","_getImageSettings","_getSettingsForTracker","visibleRangeArea","visibleArgArea","visibleValArea","notVisibleByArg","notVisibleByVal","argumentText","rangeValue1Text","rangeValue2Text","rangeValue1","rangeValue2","trackerRadius","_storeTrackerR","xCond","yCond","_bindable_template","ToolbarBase","compactMode","_getSynchronizableOptionsForCreateComponent","BindableTemplate","rawModel","renderAs","useFlatButtons","useDefaultButtons","multiline","_$toolbarItemsContainer","_itemClass","_itemDataKey","_buttonClass","_arrangeItems","_applyCompactMode","_renderToolbar","_renderSections","_waitParentAnimationFinished","runCheck","_waitParentAnimationTimeout","readyToResolve","isAnimating","_checkWebFontForLabelsLoaded","sectionClass","$section","$labels","promises","_$centerSection","beforeRect","_$beforeSection","afterRect","_$afterSection","_alignCenterSection","labelOffset","widthBeforeSection","widthAfterSection","elemsAtSectionWidth","sectionMaxWidth","_alignSection","labelPaddings","leftRect","rightRect","centerRect","marginLeft","marginRight","_getCurrentLabelsPaddings","currentWidth","_getCurrentLabelsWidth","_alignSectionLabels","expanding","getRealLabelWidth","currentLabelWidth","labelMaxWidth","possibleLabelWidth","_getSummaryItemsWidth","_renderItem","itemContainer","$after","itemHasText","_renderGroupedItems","_renderItems","_renderedItemsCount","_getIndexByItem","_itemOptionChanged","_swipe","SWIPE_START_EVENT_NAME","SWIPE_UPDATE_EVENT_NAME","swipe","SWIPE_END_EVENT_NAME","_attachSwipeEvent","swipeConfig","_clearSwipeCache","_itemWidthCache","_itemSwipeStartHandler","_itemSwipeUpdateHandler","_itemSwipeEndHandler","_inkRippleTimer","beforeBag","_commonOptions","afterRender","handleKeyboardEvents","handleEnterPressing","visibilityChange","getExcludedSelectors","SCROLLABLE_SCROLLBAR_ACTIVE_CLASS","SCROLLBAR_VISIBLE","activeScrollbar","Scrollbar","visibilityMode","containerSize","contentSize","expandable","scaleRatio","_isHovered","_renderThumb","_renderDirection","_attachPointerDownHandler","_isHoverMode","_$thumb","isThumb","_dimension","_prop","feedbackOn","feedbackOff","cursorEnter","_needScrollbar","cursorLeave","_renderDimensions","_adjustVisibility","_baseContainerToContentRatio","_isHidden","scrollBarLocation","_calculateScrollBarPosition","_thumbRatio","baseContainerSize","baseContentSize","_realContainerToContentRatio","thumbSize","containerToContentRatio","_normalizeSize","deferRenderer","DataController","_uiTree_list2","_getDataSourceAdapter","_getNodeLevel","_generateDataItem","_loadOnOptionChange","_isItemEquals","item1","item2","expandRow","collapseRow","expandNodesOnFiltering","autoExpandAll","onNodesInitialized","Options","_option_manager","optionsByReference","deprecatedOptions","_deprecatedCallback","_startChangeCallback","_endChangeCallback","_deprecated","_deprecatedNames","_initDeprecatedNames","_optionManager","OptionManager","onRelevantNamesPrepared","_setRelevantNames","_cachedOptions","_rules","convertRulesToOptions","normalizedName","_normalizeName","_setField","_clearField","fieldObject","getFieldName","getParentName","previousFieldName","deprecate","_notifyDeprecated","_getByRules","callBack","onChanging","initial","getNestedOptionValue","_initial","isGetter","aliasName","_initialOptions","rulesOptions","_setByReference","getDatePartIndexByPosition","renderDateParts","monthGetter","monthSetter","monthLimits","getLimits","_getLimits","newDay","PATTERN_GETTERS","E","M","H","m","S","PATTERN_SETTERS","getPatternSetters","isPM","currentYear","valueLength","maxLimitLength","getPatternGetter","patternChar","regExpInfo","regexp","sections","isStub","limits","forcedPattern","dM","getAmPm","dateParts","caretInGroup","tickOptions","skippedCategory","skipLabels","tickOffset","_tickOffset","lineGroup","_axisLineGroup","elementsGroup","_axisElementsGroup","tickStyle","getPathStyle","gridStyle","emptyStrRegExp","labelStyle","_textOptions","getLabelFontStyle","customizeColor","createLabelHint","labelHint","formatHint","updateValue","initCoords","_getTranslatedValue","labelCoords","_lastStoredCoordinates","_storedCoords","_storedLabelsCoords","templateContainer","_getTemplateCoords","drawMark","areCoordsOutsideAxis","mark","getSharpDirectionByCoords","updateTickPosition","_createPathElement","setSkippedCategory","_updateLine","storedSettings","isGridLine","_rotateTick","_getTickMarkPoints","isRendered","updateLabelPosition","formatLabel","_templateDef","labelFontStyle","containerForData","getTemplateDeferred","fadeOutElements","startSettings","endSettings","animationSettings","_fadeOutLabel","_axisGridGroup","_fadeInLabel","_getLabelAdjustedCoord","_constantLabelOffset","lCoords","_lCoords","updateMultilineTextAlignment","textsAlignment","labelAlignment","drawGrid","drawLine","updateGridPosition","_getGridPoints","contentContainer","Tracker","isLeftButtonPressed","touches","eventTouches","isMSPointerLeftClick","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_MOUSE","isTouches","isMultiTouches","stopPropagationAndPreventDefault","isTouchEventArgs","getEventPageX","changedTouches","initializeAreaEvents","getRootOffsetLeft","_docEvents","initialPosition","movingHandler","docEvents","placeSliderAndBeginMoving","moveSelectedArea","initializeSelectedAreaEvents","_docEvents2","beginSelectedAreaMoving","initializeSliderEvents","sliders","_docEvents3","slider","_slider$on","beginSliderMoving","foregroundSlider","targets","getTrackerTargets","msTouchAction","selectedArea","_getSpecificDataSourceOption","hasSimpleItems","every","isCorrectStructure","accumulator","innerItem","keepInitialKeyOrder","discover","mdx","execXMLA","requestOptions","beforeSend","ajaxSettings","xhrFields","xml","parser","DOMParser","parseFromString","statusText","responseText","getLocaleIdProperty","languageId","getAllMember","hierarchyName","getAllMembers","crossJoinElements","elementsString","generateCrossJoin","expandLevel","expandAllCount","slicePath","prevDimension","crossJoinArgs","prevHierarchyName","isLastDimensionInGroup","expandAllIndex","preparePathValue","allMember","sortOrder","fillCrossJoins","crossJoins","cellsString","totalsOnly","dimensionIndex","crossJoin","declare","withArray","generateAxisMdx","parseOptions","oppositePath","getExpandedLevel","rowTake","columnTake","visibleLevels","rowSkip","columnSkip","axisSet","skipValues","generateAxisFieldsFilter","filterMembers","filterStringExpression","filterMdx","generateFrom","columnsFilter","rowsFilter","cubeName","generateMdxCore","axisStrings","mdxString","withString","countMembers","prepareDataFields","valueFields","addSlices","slices","generateMDX","measureCount","createDrillDownAxisSlice","getNumber","getFirstChildText","childTagName","getNodeText","getFirstChild","parseCells","cellsOriginal","errorDictionary","xmlCell","valueElement","errorElements","_isNumeric","cellOrdinal","levelName","parentName","getVisibleChildren","grandTotalHash","firstChild","newChildren","fillDataSourceAxes","dataSourceAxis","axisTuples","tupleIndex","parentItem","dataIndex","currentItem","added","processMember","grandTotalIndex","getGrandTotalIndex","foreachTree","checkError","faultElementNS","faultElement","errorElement","parseResult","axisElement","tupleElement","tupleMembers","levelSum","membersCount","tuple","parseAxes","parseDiscoverRowSet","schema","translatedDisplayFolders","isMeasure","displayFolderField","levelNumber","displayFolder","defaultHierarchies","sendQuery","catalog","cube","localeIdProperty","dimensionsRequest","measuresRequest","hierarchiesRequest","levelsRequest","dimensionsResponse","measuresResponse","hierarchiesResponse","levelsResponse","measureGroupsResponse","dimensionName","parseDimensionsDiscoverRowSet","hierarchies","measureGroups","parseMeasureGroupDiscoverRowSet","levelsByHierarchy","hierarchy","rowCountMdx","executeXml","rowCountXml","totalCountXml","columnOptions","processTotalCount","customColumnsString","coreMDX","generateDrillDownMDX","stringArray","columnNames","whole","group1","fromCharCode","parseDrillDownRowSet","selectedItemKeyHashesMap","keyGetter","functionFilter","getExpr","filterExpr","filterExprPart","getFilterForPlainKey","itemKeyValue","currentKeyExpr","currentKeyValue","getFilterForCompositeKey","dataSourceFilter","getSelectedItemKeyHashesMap","normalizeKeys","keyValue","EditingControllerExtender","processDataItem","_color_view","colorEditorPrototype","colorUtils","makeTransparentBackground","makeRgba","ColorBox","arrowHandler","_colorView","_enterKeyHandler","_updateColorViewValue","_createColorView","_addPopupBottomClasses","$popupBottom","bottomToolbar","COLOR_BOX_CLASS","$colorView","_colorViewConfig","_escapeHandler","_applyNewColor","_$colorResultPreview","_colorViewEnterKeyPressed","_applyColorFromInput","colorViewValue","_resetInputValue","_renderColorPreview","COLOR_BOX_INPUT_CLASS","_$colorBoxInputContainer","_$textEditorInputContainer","_currency","_number2","hasIntl","NUMERIC_FORMATS","LargeNumberFormatPostfixes","1","2","3","4","LargeNumberFormatPowers","largenumber","numberLocalization","engine","numericFormats","defaultLargeNumberFormatPostfixes","_parseNumberFormatString","formatList","power","_calculateNumberPower","minPower","maxPower","_getNumberByPower","_formatNumber","formatConfig","powerPostfix","_formatNumberCore","_formatNumberExponential","powString","_addZeroes","multiplier","_addGroupSeparators","_normalizeFormat","_getSeparators","getThousandsSeparator","toStandard","digits","fromFirstDigit","toFirstDigit","fromLastDigit","getNegativeEtalonRegExp","separators","digitalRegExp","negativeEtalon","_format","numberConfig","formatterConfig","unlimitedIntegerDigits","cleanedText","_calcSignificantDigits","parsed","_text$split2","integer","fractional","calcDigitsAfterLeadingZeros","inject","rowDragging","showDragIcons","_updateHandleColumn","isHandleColumnVisible","addCommandColumn","_getHandleTemplate","sortableName","sortableFixedName","currentSortableName","anotherSortableName","togglePointerEventsStyle","_this$sortableFixedNa","_getDraggableRowTemplate","_rowDragging$onDragSt","getVisibleRows","isDataRow","_rowDragging$onDragEn","_sortableFixed","_getDraggableGridOptions","showBorders","showColumnHeaders","useNative","pager","columnAutoWidth","onRowPrepared","$rootElement","$dataGridContainer","_http_request","createScript","script","removeScript","scriptNode","appendToHead","getHead","evalScript","getRequestOptions","paramsAlreadyString","upload","encodeURIComponent","paramsConvert","getMethod","getRequestHeaders","defaultContentType","contentType","getContentTypeHeader","Accept","scriptAccept","accepts","json","jsonp","getAcceptHeader","crossDomain","xhr","async","originAnchor","urlAnchor","protocol","host","isCrossDomain","needScriptEvaluation","callbackName","jsonpCallback","callbackParameter","getJsonpOptions","loadHandler","evalCrossDomainScript","username","password","customStatus","setHttpTimeout","onreadystatechange","status","readyState","hasContent","responseType","getDataFromResponse","onprogress","onloadstart","onabort","setRequestHeader","send","_base","_observer","observer","eventMap","dxpointerdown","dxpointermove","dxpointerup","dxpointercancel","dxpointerover","dxpointerout","dxpointerenter","dxpointerleave","activated","activateStrategy","pointerId","isPrimary","MsPointerStrategy","resetObserver","ActionSheet","cancelText","onCancelClick","_$itemContainer","_createItemContainer","_isPopoverMode","_createPopover","_renderPopupTitle","_mapPopupOption","_overlayConfig","angular","_popupContentReadyAction","_attachClickEvent","_attachHoldEvent","_prepareContent","_renderCancelButton","_$cancelButton","cancelClickAction","hidingArgs","_attachItemClickEvent","_itemHoldHandler","setCanvasValues","normalizeBBox","rotateBBox","PI_DIV_180","w2","h2","w2_","h2_","centerX_","centerY_","styleSheets","styleSheet","cssRules","elementMatches","selectorText","centerCoords","parsedHeight","weightSum","weightHeightCount","emptyHeightCount","weightForEmpty","emptyWeightSum","distributedSpace","paneSpace","usefulSpace","calcLength","opt1","opt2","percentStick","sizePointNormalState","convertToVisualRange","adjustVisualRange","wholeRange","minDefined","maxDefined","nonDiscrete","rangeLength","categoriesInfo","_categoriesInfo","getLogExt","raiseToExt","rangeFromOptions","enumParser","parseScalar","decreaseGaps","getPower","roundValue","getAppropriateFormat","getDecimalOrder","getDistance","degreesToRadians","getAdjustedLog10","LN10","_isNaN","angleInRadians","diffX","diffY","cn","order","isExponential","toExponential","selectByKeys","decreaseFields","eachDecrease","decrease","dec","originalTop","originalBottom","originalLeft","originalRight","normalizeBBoxField","xl","yt","arrayGaps","ii","stored","customizeSeries","generatedSeries","seriesOrder","nameFieldValue","orderedName","swapBuf","categoriesValue","indexStartValue","indexEndValue","visibleCategories","lastIdx","correctZeroLevel","rangeValue","marginValue","allowNegatives","transformValue","isPositive","horizontalOffset1","verticalOffset1","verticalOffset2","horizontalOffset2","FooterView","renderSummaryCell","_aggregate_calculator","_store_helper","$summaryItems","getSummaryCellOptions","getGroupAggregates","summary","recalculateWhileEditing","_getCellOptions","$newTable","$newRow","_updateCells","_rowClick","repaintChangesOnly","totalColumnIndices","getElementHeight","calculateAggregates","sortGroupsBySummary","SummaryDataSourceAdapterExtender","_summaryGetter","summaryGetter","_summary","sortByGroupsInfo","sortByGroups","groupedItems","multiLevelGroup","forEachGroup","itemsPath","SummaryDataSourceAdapterClientExtender","calculator","insertedData","getInsertedData","applyAddedData","removedData","getRemovedData","applyRemovedData","updatedData","updatedItems","sortGroupsBySummaryCore","sorts","thenBy","enumerate","sortedItems","totalSummary","cachedExtra","cachedPagesData","totalItems","sumOtherColumn","minOtherColumn","maxOtherColumn","avg","avgOtherColumn","sortByGroupSummaryInfo","_isDataColumn","showWhenGrouped","_isGroupFooterVisible","groupItem","showInColumn","_processGroupItems","isGroupFooterVisible","collectContinuationItems","_processGroupItem","summaryGroupItems","groupColumnIndex","afterGroupColumnIndex","prevColumn","_calculateSummaryCells","calculateTargetColumnIndex","summaryCellsByColumns","summaryIndex","_footerItems","oldSummaryCells","_prepareUnsavedDataSelector","_prepareAggregateSelector","_getAggregates","commonSkipEmptyValues","_addSortInfo","_findSummaryItem","summaryItemIndex","_getSummarySortByGroups","_createDataSourceAdapterCore","currentRemoteOperations","_getSummaryOptions","totalSummaryItems","getTotalSummaryValue","summaryItemName","_refreshSummary","isSaving","changesOnly","_addChange","_removeChange","cancelEditData","_renderCells","_renderCell","_getCellTemplate","getImageContainer","getImageSourceType","Tabs","showNavButtons","selectOnFocus","loopItemFocus","badgeExpr","badge","_renderWrapper","_renderMultiple","_prepareDefaultItemTemplate","$iconElement","_deferredTemplates","_deferRenderScrolling","_renderScrolling","removeClasses","TABS_EXPANDED_CLASS","_isItemsWidthExceeded","_renderScrollable","_renderNavButtons","_updateNavButtonsVisibility","scrollWidth","_scrollToItem","_cleanScrolling","_needStretchItems","_getVisibleItems","$visibleItems","itemsWidth","_cleanNavButtons","_leftButton","_rightButton","$itemContainer","scrollToElement","_createNavButton","$leftButton","$rightButton","_updateScrollPosition","holdAction","_holdInterval","holdEventName","pointerUpEventName","pointerOutEventName","out","navButton","$navButton","_clearInterval","_afterItemElementInserted","_pager","getPageIndex","showPageSizeSelector","allowedPageSizes","pagerView","_getPager","pagerOptions","getPageSizes","onKeyDown","useLegacyKeyboardNavigation","_pageSizes","pagerVisible","isPager","isPaging","isDataSource","skipProcessingPagingChange","origApplyState","stateStoring","applyState","getUserState","SchedulerWorkSpaceIndicator","isIndicationAvailable","isIndicatorVisible","_getRtlOffset","_renderIndicator","groupedByDate","shiftIndicator","_clearIndicatorUpdateInterval","_indicatorInterval","_refreshDateTimeIndication","_getIndicatorDuration","_cleanDateTimeIndicator","_renderDateTimeIndication","_getTimeCellDate","_isCurrentTime","_isCurrentTimeHeaderCell","_setIndicationUpdateInterval","_cleanWorkSpace","showCurrentTimeIndicator","indicatorTime","indicatorUpdateInterval","shadeUntilCurrentTime","getTargetGroup","$groups","elementHasPoint","onDragging","itemRender","groupSelector","itemSelector","itemContainerSelector","sourceClass","dragClass","targetClass","groupFilter","useIndicator","$sourceItem","$targetGroup","isLast","_indicator","_renderDraggable","_$draggable","dragEventsString","drop","_getEventListener","_getItemOffset","itemsOffset","shouldInsert","sameLine","posVertical","itemOffset","posHorizontal","sourceIndex","scrollWrapper","targetIndex","disposeScrollWrapper","$eventListener","$sourceGroup","elementIndex","$prevItem","draggingArgs","draggableElement","sourceElement","moveIfNeed","getScrollWrapper","dxScrollable","targetSortable","$elements","$itemsContainer","getItemsOffset","isAnotherGroup","isSameIndex","isNextIndex","changedArgs","removeSourceElement","removeTargetElement","removeSourceClass","_useTemplates","DropImageModule","_dragOverHandler","_dropHandler","_pasteHandler","_dataTransfer$files","dataTransfer","hasFiles","files","_addImage","_clipboardData$items","clipboardData","hasDataItems","imageData","_isBrowserSupportImagePaste","chrome","file","_isImage","reader","FileReader","readableFile","getAsFile","readAsDataURL","pasteIndex","getLength","$originalViewPort","$current","isNewViewportFound","componentInstance","disposeFn","_element_data","one","_remove_event","componentClass","nextAnonymousComponent","newName","generatedName","DataExchanger","unbind","_provider","_locationToString","latLng","_getLatLng","lat","lng","_renderImpl","_updateMap","updateMapType","updateBounds","updateCenter","updateZoom","updateControls","addMarkers","_fireMarkerAddedAction","removeMarkers","_fireMarkerRemovedAction","adjustViewport","addRoutes","_fireRouteAddedAction","removeRoutes","_fireRouteRemovedAction","_addEventNamespace","mapRendered","_keyOption","_option","_markersSubstring","_routeSubstrings","request","markerIcon","routes","route","_defaultRouteColor","_defaultRouteOpacity","_defaultRouteWeight","locations","routePoint","_fireClickAction","_component_registrator_callbacks","isMemberInvoke","memberArgs","memberValue","namespace","formatIsValid","valueIsValid","getTimeFormat","showSecond","formatPart","getDateFormatByDifferences","dateDifferences","intervalFormat","resultFormat","needSpecialSecondFormatter","getDateFormatByTicks","maxDiff","currentDiff","correctDateDifferences","_error","ERROR_MESSAGES","E1001","E1002","E1003","E1004","E1005","E1006","E1007","E1010","E1011","E1012","E1016","E1018","E1019","E1020","E1021","E1022","E1023","E1025","E1026","E1030","E1031","E1032","E1033","E1034","E1035","E1037","E1038","E1039","E1040","E1041","E1042","E1043","E1044","E1045","E1046","E1047","E1048","E1049","E1050","E1051","E1052","E1053","E1054","E1055","E1056","E1058","E1059","E1060","W1001","W1002","W1003","W1004","W1005","W1006","W1007","W1008","W1009","W1010","W1011","W1012","W1013","W1014","W1015","POINTER_DOWN_EVENT_NAME","_$topShield","_$bottomShield","_$itemContentShield","_$readyToDeleteItem","_cancelDelete","_toggleShields","_toggleScrolling","_cacheReadyToDeleteItem","_animateToggleDelete","_updateShieldsHeight","_toggleContentShield","listTopOffset","dirtyTopShieldHeight","dirtyBottomShieldHeight","scrollView","dxScrollView","_cancelScrolling","_prepareDeleteReady","_forgetDeleteReady","ACTIONS","LOCAL_SUBMENU_DIRECTIONS","_MenuBase","showEventOption","onSubmenuCreated","onPositioning","submenuDirection","onLeftFirstItem","onLeftLastItem","onCloseRootSubmenu","onExpandLastSubmenu","_isSelectionEnabled","esc","$availableItems","_getAvailableItems","$hoveredItem","DX_MENU_CLASS","$newTarget","_getItemsByLocation","$oldTarget","_getActiveItem","itemsContainer","$activeItemHighlighted","_prevItem","_nextItem","_hideSubmenuHandler","_expandSubmenuHandler","$activeItem","$curItem","$parentItem","DX_MENU_ITEM_CLASS","_hideSubmenusOnSameLevel","_dataAdapter","getNodeByItem","isItemHasSubmenu","_hasSubmenu","$submenu","_showSubmenu","_detachShowContextMenuEvents","_getTarget","_renderVisibility","_addWidgetClass","_attachShowContextMenuEvents","_keyboardListenerId","overlayOptions","_getOverlayOptions","_addCustomCssClass","_addPlatformDependentClass","_attachContextMenuEvent","getShowEvent","_showContextMenuEventHandler","contextMenuAction","getShowDelay","_show","isRenderer","submenuContainer","$holder","$itemFrame","_getChildNodes","internalFields","submenuElement","innerOverlay","_closeOnOutsideClickHandler","propagateOutsideClick","_overlayShownActionHandler","_overlayHidingActionHandler","_overlayHiddenActionHandler","_hideAllShownSubmenus","isDocument","$activeItemContainer","_getActiveItemsContainer","$itemContainers","_getItemsContainers","$clickedItem","_searchActiveItem","$rootItem","isRootItemClicked","_isIncludeOverlay","_getShowSubmenuMode","_hideAllShownChildSubmenus","$activeOverlay","$allOverlays","isSame","$submenuElements","shownSubmenus","_shownSubmenus","$context","isSubmenuRendered","_renderSubmenuItems","_isSubmenuVisible","_drawSubmenu","$expandedItems","siblings","_hideSubmenuCore","submenuPosition","_getSubmenuPosition","actionArgs","notCloseMenuOnItemClick","closeMenuOnClick","_updateSelectedItemOnClick","$prevSubmenu","$curSubmenu","_stopAnimate","_hide","jQEvent","_positionContextMenu","_renderContextMenuOverlay","_widgetClass","getRootNodes","_setAriaAttributes","_overlayContentId","_getContextMenuPosition","isInitialPosition","positioningAction","lastPosition","_cleanAriaAttributes","fullOptions","jsPDFDocument","autoTable","keepColumnWidths","autoTableOptions","_getDefaultAutoTableOptions","tableLineColor","tableLineWidth","columnStyles","headStyles","bodyStyles","customizeCell","Promise","dataRowsCount","mergedCells","pdfColumnWidths","_tryGetPdfColumnWidths","tableWidth","_setColumnWidths","_dataProvider$getCell","cellStyle","pdfCell","_getFormattedValue","_getPDFCellStyles","mergedRange","_tryGetMergeRange","rowSpan","_pdfCell$content","_row$0$colSpan","columnAlignment","cellAlignment","pdfCellStyle","halign","_dataProvider$getCell2","autoTableWidth","columnWidth","autoTableColumnStyles","_events","_owner","fireWith","originalAdd","_subTheme","subTheme","POINTER_SIZE","consts","pointerSize","SliderMarker","isLeftPointer","_isLeftPointer","_isOverlapped","_area","_tracker","_border","_getRectSize","textSize","_paddingLeftRight","_paddingTopBottom","_getTextSize","_getAreaPointsInfo","rectSize","rectWidth","rectHeight","rectLeftBorder","rectRightBorder","pointerRightPoint","pointerCenterPoint","pointerLeftPoint","isLeft","correctCloudBorders","checkPointerBorders","borderPosition","_borderPosition","isCut","_timeout","currentTextSize","updateSliderMarker","pointsData","_textSize","setText","setPosition","applyOptions","screenRange","_colors","getTracker","setValid","setColor","setOverlapped","isOverlapped","getBorderPosition","_uiScheduler2","_drop_down_menu","STEP_MAP","timelineDay","timelineWeek","timelineWorkWeek","timelineMonth","agenda","VIEWS","SchedulerHeader","useDropDownViewSwitcher","_dropDownButtonIcon","_validateViews","_viewSwitcher","_navigator","_getCurrentViewType","_changeViewSwitcherLabelText","_refreshViewSwitcher","_renderNavigator","_renderViewSwitcher","customizeDateNavigatorText","$viewSwitcher","_renderViewSwitcherDropDownMenu","_renderViewSwitcherTabs","_updateCurrentView","_getItemText","_removeViewSwitcherLabel","_$viewSwitcherLabel","buttonIcon","currentViewText","_getCurrentViewName","viewName","notifyObserver","_renderFocusTarget","_track_bar","Slider","roundedValue","isLeftDirection","remainder","getRemainderByDivision","_getValueExponentLength","_roundToExponentLength","showRange","showMode","validationMessageOffset","_toggleValidationMessage","_renderStartHandler","_renderAriaMinAndMax","_attachFocusEvents","focusInEvent","focusOutEvent","$focusTarget","_repaintHandle","_itemWidthFunc","_renderContainer","_renderRange","_renderRangeVisibility","tooltipPosition","SLIDER_TOOLTIP_POSITION_CLASS_PREFIX","tooltipFormat","tooltipShowMode","tooltipFitIn","valuemin","valuemax","_hoverStartHandler","updateTooltip","_toggleFocusClass","SLIDER_LABEL_POSITION_CLASS_PREFIX","labelFormat","_$minLabel","_$maxLabel","pointerDownEventName","clickEventName","startAction","_itemWidthRatio","_currentRatio","getExponentLength","valueExponentLength","roundFloatPart","stepCount","_fitTooltip","_toggleRTLDirection","getMaxHorizontalScrollOffset","defaultCellTemplate","showIndicator","indicatorSrc","showPane","rowTemplate","wordWrapEnabled","rowAlternationEnabled","twoWayBindingEnabled","isDataTextEmpty","encodeHtml","_getDefaultTemplate","_getDefaultGroupTemplate","groupContinuedMessage","groupContinuesMessage","_rowPrepared","_isAltRow","watch","_setAriaRowIndex","isPagerMode","generateDataValues","repaintRows","skipImmediate","allColumnsHasWidth","minWidth","_isColumnFixing","_renderScrollableCore","_isScrollByEvent","_scrollRight","scrollChanged","dxScrollableOptions","_createScrollableOptions","scrollHandler","onStop","_scrollableContainer","newTableElement","executors","highlightChanges","rowInsertedClass","$newRowElement","$rowsElement","$emptyRow","isTableContainer","$colgroup","_renderFreeSpaceRow","$freeSpaceRowElement","_checkRowKeys","fireError","_getRowsHeight","rowsHeight","tableElements","evaluate","_rowDblClick","_getColumnsCountBeforeGroups","columnsCountBeforeGroups","expandColumn","groupCellOptions","allowCollapsing","groupColumnAlignment","resizeCompletedHandler","_lastColumnWidths","resized","resizedCallbacks","groupingTextsOptions","columnID","isParentBandColumn","_getDevicePixelRatio","getCellOptions","columnIdentifier","cellOptions","getRow","freeSpaceRowElements","isFreeSpaceRowVisible","elementHeightWithoutScrollbar","showFreeSpaceRow","resultHeight","_getHeightCorrection","_updateLastRowBorder","freeSpaceRowCount","setHeight","isZoomedWebkit","hasExtraBorderTop","_fireColumnResizedCallbacks","_editorFactoryController","contentWidth","lastColumnWidths","_updateHorizontalScrollPosition","maxHorizontalScrollOffset","_height","hasHeight","visibilityOptions","_hideLoadingTimeoutID","groupCellIndex","getTopVisibleItemIndex","isFloor","prevOffsetTop","contentElementOffsetTop","getTopVisibleRowData","keyboardNavigation","_leftRightKeysHandler","isEditing","getVisibleRowIndex","ctrl","directionCode","_getDirectionCodeByKey","getKeyByRowIndex","VIEW_NAMES","onContextMenuPreparing","contextMenu","$targetRowElement","$targetCellElement","targetElement","_contextMenuPrepared","contextMenuView","contextMenuInstance","triggerVisibilityChangeEvent","changeHandlers","_BaseMaskStrategy","DefaultMaskStrategy","_keyPressHandled","getChar","_backspaceInputHandled","inputType","_handleBackspaceInput","_autoFillHandler","editorInput","editorCaret","afterBackspaceHandler","needAdjustCaret","DIRECTION","FORWARD","_backspaceHandlerTimeout","BACKWARD","_this$editorCaret","_backspaceHandler","CustomMarker","googleMapsLoader","googleMapsLoaded","google","maps","_mapType","mapTypes","hybrid","MapTypeId","HYBRID","roadmap","ROADMAP","satellite","SATELLITE","_movementMode","movementTypes","driving","TravelMode","DRIVING","walking","WALKING","_resolveLocation","LatLng","_geocodeLocation","geocodedLocation","_geocodedLocations","_geocodeLocationImpl","Geocoder","geocode","address","GeocoderStatus","_normalizeLocation","_normalizeLocationRect","locationRect","northEast","getNorthEast","southWest","getSouthWest","_loadMapScript","_offset","_$overlayContainer","setMap","OverlayView","getPanes","overlayMouseTarget","_clickListener","addDomListener","getProjection","fromLatLngToDivPixel","showDefaultUI","_map","Map","disableDefaultUI","listener","addListener","_attachHandlers","_boundsChangeListener","_boundsChangeHandler","_clickActionHandler","bounds","_preventZoomChangeEvent","getZoom","setMapTypeId","LatLngBounds","fitBounds","setCenter","setZoom","isEventsCanceled","gestureHandling","_renderMarker","htmlOffset","Marker","iconSrc","infoWindow","_renderTooltip","markerClickAction","_mapWidget","markerNormalizedLocation","_parseTooltipOptions","InfoWindow","_destroyMarker","_renderRoute","origin","waypoints","stopover","optimizeWaypoints","travelMode","DirectionsService","DirectionsStatus","directionOptions","directions","suppressMarkers","preserveViewport","polylineOptions","strokeWeight","strokeColor","DirectionsRenderer","_destroyRoute","routeObject","_fitBounds","_updateBounds","_bounds","zoomBeforeFitting","zoomAfterFitting","_extendBounds","_clearMarkers","_clearRoutes","_isFocusedRowInside","focusedRowKey","getRowIndexByKey","focusedRow","getParentKey","parentData","expandAscendants","getPageIndexByKey","getSortDataSourceParameters","filterElement","currentFilter","findGroupInfoByKey","getGroupInfoIndexByOffset","groupsInfo","leftIndex","rightIndex","middleIndex","_groupsInfo","_totalCountCorrection","totalCountCorrection","calculateItemsCount","childrenAtFirst","foreachCollapsedGroups","updateOffsets","updateParentOffsets","foreachGroupsCore","callbackResults","executeCallback","callbackResult","currentParents","_updateGroupInfoOffsets","pathIndex","groupInfoData","allowCollapseAll","cleanGroupsInfo","handleDataLoaded","combineIndex","splitIndex","combinedIndex","_groupElements","_collectionWidget","_groupItemElements","$group","resultItems","itemKey","_equalKeys","_getGroups","itemMeta","groupKey","getItemMeta","selectedGroup","movingIndices","destinationIndices","movingItemGroup","destinationItemGroup","movedItemData","_isItemIndex","_getNormalizedItemIndex","_normalizeItemIndex","_denormalizeItemIndex","_getItemByNormalizedIndex","_itemsFromSameParent","firstIndex","secondIndex","_check_box","_radio_button","_singleStrategy","_containerClass","_controlClass","_controlWidget","$control","_isSelected","_saveSelectionChangeEvent","_processCheckedState","control","_updateSelectAllState","_$selectAll","_selectAllCheckBox","_renderSelectAll","currentFocusedIndex","moveFocusUp","moveFocusDown","$selectAll","lastItemIndex","_getLastItemIndex","downArrowHandler","_attachSelectAllHandler","_selectAllHandler","_selectAllClickHandler","isSelectedAll","_selectAllItems","_unselectAllItems","_checkSelectAllCapability","selectAll","deselectAll","_disposeSelectAll","getIsGroupedAllDayPanel","getGroupCellClasses","addHeightToStyle","getKeyByGroup","getKeyByDateAndGroup","nextStyle","isFirstGroupCell","isLastGroupCell","_groupData$allDayPane","groupData","isAllDayPanel","isGroupedAllDayPanel","VERTICAL_GROUP_ORIENTATION","ProgressBar","statusFormat","showStatus","onComplete","statusPosition","_animatingSegmentCount","_renderStatus","_createCompleteAction","_toggleStatus","_completeAction","_$status","_renderIndeterminateState","_$segmentContainer","PROGRESSBAR_INDETERMINATE_SEGMENT","splitPosition","_togglePositionClass","positionClass","_toggleIndeterminateState","_setStatus","_category_translator","_interval_translator","_datetime_translator","_logarithmic_translator","CANVAS_PROP","dummyTranslator","_canvasOptions","conversionValue","endPoint","validateCanvas","getCheckingMethodsAboutBreaks","isStartSide","isEndSide","isInBreak","br","isBetweenBreaks","prevBreak","lastBreak","getBreaksSize","cumulativeWidth","_Translator2d","reinit","_businessRange","canvasOptions","_prepareCanvasOptions","categoriesLength","ratioOfCanvasRange","canvasLength","rangeMaxVisible","rangeMinVisible","_categories","_getDiscreteInterval","addSpiderCategory","_categoriesToPoints","categoriesToPoints","makeCategoriesToPoints","startPointIndex","_oldMethods","_conversionValue","sc","_checkingMethodsAboutBreaks","_translateBreaks","_calculateSpecialValues","_breaks","breaksSize","_checkValueAboutBreaks","inBreak","break","correctedCategoriesCount","stick","rangeMin","rangeMax","rangeDoubleError","_userBreaks","userBreaks","baseValueSelector","validateBusinessRange","transformFrom","transformTo","trFrom","trTo","prepareBreaks","zoomEvent","deltaScale","canvas_position_default","canvas_position_center_middle","canvas_position_left","canvas_position_top","canvas_position_center","canvas_position_middle","canvas_position_right","canvas_position_bottom","canvas_position_start","canvas_position_end","translateSpecialCase","_calculateProjection","_calculateUnProjection","getMinBarSize","minBarSize","checkMinBarSize","minShownValue","stackValue","bp","specialValue","_interval","zoomZeroLengthRange","newStart","newEnd","minPoint","maxPoint","_correctValueAboutBreaks","correction","isDateTime","newMin","newMax","_this$_businessRange","getDateTimeMinScale","getScale","co","getCorrectValue","commonBreakSize","isValueProlonged","getScreenRange","coeff","getRangeByMinZoomValue","minZoom","_canShowTooltip","_showCore","_shouldUseTarget","_createTooltip","_prepareBeforeVisibleChanged","listElement","_createList","_onListRender","_onListItemClick","_renderTemplate","_swipeEnabled","wrapperClass","_createListOption","itemListContent","_createItemListContent","_getItemListTemplateName","getAppointmentTemplate","_createFunctionTemplate","targetData","isEmptyDropDownAppointmentTemplate","_isEmptyDropDownAppointmentTemplate","dropDownAppointmentTemplate","clickEvent","_createItemListMarker","_createItemListInfo","createFormattedDateText","allowDeleting","_createDeleteButton","$marker","TOOLTIP_APPOINTMENT_ITEM","$markerBody","$title","$date","menuButtonColor","activeBackgroundColor","activeColor","LegendsControl","_each","unknownSource","Legend","_params","_root","enableLinks","layoutControl","backgroundClass","itemsGroupClass","textField","getFormatObject","_onDataChanged","virtualLink","_unbindData","notifyDirty","erase","notifyReady","partition","buildData","_dataName","updateLayout","_dataCategory","dataExchanger","_bindData","optionList","suspend","resume","_excel5","ExcelFile","_cellFormatTags","_fillTags","_fontTags","_numberFormatTags","patternFill","patternType","cellFormat","cellFormatTag","cellFormatTagsAsXmlStringsArray","fillTag","tagsAsXmlStringsArray","fontTag","xmlStringsArray","ID_PROPERTY_NAME","_convertNumberFormatIndexToId","UPDATE_FOCUS_EVENTS","_getFocusedElement","$dataGridElement","rowSelector","focusedElementSelector","_getFocusCellSelector","_updateFocusCore","$focusCell","hideBorders","$focus","_$focusedElement","_updateFocus","isFocusOverlay","_isFocusOverlay","_updateFocusTimeoutID","_updateFocusOverlaySize","oversize","hideBorder","_focusTimeoutID","renderFocusOverlay","refocus","_$focusOverlay","elemCoord","focusOverlayPosition","precise","_updateFocusHandler","_attachContainerEventHandlers","TabPanelItem","_CollectionWidgetItem","getParser","getRegExpInfo","FORMAT_TYPES","5","monthRegExpGenerator","PATTERN_REGEXPS","Q","getQuarterNames","getPeriodNames","w","parseNumber","caseInsensitiveIndexOf","monthPatternParser","monthNames","PATTERN_PARSERS","periodNames","ORDERED_PATTERNS","datePartValues","hourPartValue","getSameCharCount","isEscaping","regexpText","stubText","addPreviousStub","regexpPart","regExpResult","formatPatterns","maxPatternIndex","orderedFormatPatterns","otherPatterns","getOrderedFormatPatterns","regExpPattern","regExpText","partSetter","partParser","setPatternPart","setterName","setPatternPartFromNow","RangeView","_clipRect","backgroundOption","backgroundTheme","isCompactMode","isAnimationEnabled","seriesDataSource","canvasWidth","seriesList","sortCategories","getCategoriesSorter","drawSeriesView","getFuncIri","processHatchingAttrs","TextSvgElement","RectSvgElement","ArcSvgElement","PathSvgElement","SvgElement","_animation","pxAddingExceptions","orphans","widows","objectCreate","F","DEFAULTS","getBackup","backupContainer","backupCounter","numDefsSvgElements","getNextDefsSvgId","isObjectArgument","createElementNS","preserveAspectRatioMap","full","lefttop","leftcenter","leftbottom","centertop","centerbottom","righttop","rightcenter","rightbottom","attrs","_hatching","lockHatching","releaseHatching","buildArcPath","innerR","outerR","startAngleCos","startAngleSin","endAngleCos","endAngleSin","isCircle","longFlag","buildPathSegments","buildLineSegments","buildCurveSegments","buildSegments","buildSimpleLineSegment","buildSimpleCurveSegment","buildSimpleSegment","_points$","k0","prepareConstSegment","constSeg","makeEqualLineSegments","short","long","makeEqualAreaSegments","constsSeg1","constsSeg2","shortLength","longLength","baseCss","elemStyles","fixFuncIri","wrapper","attribute","removeAttribute","baseAttr","hasTransformations","recalculateDashStyle","_settings","_addFixIRICallback","_originalSW","_applyTransformation","createTspans","createTextNode","restoreText","_hasEllipsis","cloneAndRemoveAttrs","cloneNode","detachTitleElements","titleElements","querySelectorAll","detachAndStoreTitleElements","getIndexForEllipsis","startBox","endBox","kk","tspan","getSubStringLength","getTextWidth","getEllipsisString","ellipsisMaxWidth","hideOverflowEllipsis","setEllipsis","ellipsis","setNewText","setMaxHeight","commonHeight","getItemLineHeight","calculateLineHeight","removeTextSpan","prevLine","hasEllipsis","applyOverflowRules","_ref5","lineNumber","commonLength","wordWrapLines","breakIndex","wholeText","initialIndices","spaceIndices","spaceIndex","getSpaceBreakIndex","getWordBreakIndex","restText","restLines","newTextOffset","restString","restTspan","insertString","setTextNodeAttribute","inherits","maxLengthFontSize","locateTextNodes","_texts","_getLineHeight","fontSize1","fontSize2","parsedHeight1","parsedHeight2","height1","height2","baseAnimate","animationParams","defaults","animateElement","buildLink","virtual","removeFuncIriCallback","fixFuncIriCallbacks","_getJQElement","_fixFuncIri","_clearChildrenFuncIri","clearChildren","_links","linkItem","_link","linkAfter","_linkAfter","updateIndexes","unlinkItem","_insert","smartAttr","sharpDirection","transformations","sharpMode","trDirection","strokeOdd","correctionX","correctionY","scaleXDefined","scaleYDefined","animOptions","_getElementBBox","transformation","getSvgMarkup","disableComplete","titleElem","removeTitle","jj","combinePathParam","newSegments","endSegments","curSegments","oldSegments","originalNewSegments","oldLength","newLength","makeEqualSegments","compensateSegments","noArc","angleDiff","normalizeArcParams","arcParams","_originalX","_originalY","_originalWidth","_originalHeight","_createElement","xmlns","fixPlacement","_locker","_backed","isResetRequired","wasStroked","maxTextWidth","alignTextNodes","isStroked","parsedHtml","parseMultiline","findStyleAndClassAttrs","allTagAttrs","orderHtmlTree","parentStyle","parentClassName","realStyle","adjustLineHeights","createTextNodes","strokeWidth","strokeTextNodes","applyEllipsis","lineParts","ellipsisWidth","endIndex","prepareLines","setMaxSize","textChanged","textIsEmpty","restoreTitleElement","_that$_getElementBBox","_defs","_animationController","AnimationController","removePlacementFix","updateAnimationOptions","unlock","removeByRenderer","onEndAnimation","endAnimation","simpleRect","preserveAspectRatio","setAttributeNS","linearGradient","stops","_id","stepTo2","stepBy15","patternUnits","_getPointsWithYOffset","clipShape","methodArgs","clipPath","shape","clipCircle","gaussianBlur","flood","composite","in2","operator","finalComposite","filterAttrs","offsetAttrs","floodAttrs","brightFilter","slope","componentTransferElement","getGrayScaleFilter","_grayScaleFilter","initHatching","storage","_hatchingStorage","byHash","baseId","refToHash","nextId","storageItem","getHatchingHash","_event_registrator_callbacks","registerEvent","eventObject","noBubble","bindType","delegateType","fixNamespaces","temp","setEventFixMethod","stopEventsSkipping","forceSkipEvents","hasTouches","isFakeClickEvent","isKeyboardEvent","isPointerEvent","eventSource","_add_namespace","KEY_MAP","pageup","pagedown","arrowleft","arrowup","arrowright","arrowdown","alt","multiply","spacebar","subtract","LEGACY_KEY_CODES","8","13","27","33","34","35","36","37","38","39","40","46","32","70","65","106","109","189","173","16","17","18","EVENT_SOURCES_REGEX","mouse","pointer","fixMethod","isDxEvent","isNativeTouchEvent","isNativeMouseEvent","screenX","skipEvents","touchInInput","isContentEditable","hasAttribute","copyEvent","delegateTarget","isKeySupported","_uiForm","_uiForm2","WidgetOptionItemOptionAction","_ItemOptionAction","findInstance","TabOptionItemOptionAction","_ItemOptionAction2","_super2","tabPanel","_this$_options","findItemIndexByItem","getFullOptionName","TabsOptionItemOptionAction","_ItemOptionAction3","_super3","ValidationRulesItemOptionAction","_ItemOptionAction4","_super4","validator","filterRequired","oldContainsRequired","newContainsRequired","CssClassItemOptionAction","_ItemOptionAction5","_super5","findItemContainer","_this$_options2","itemActionOptions","E2001","E2002","E2003","E2004","E2005","E2006","E2007","E2008","E2009","E2101","E2102","E2103","E2104","E2105","E2202","E2203","W2002","W2003","W2101","W2102","W2103","W2104","W2105","W2106","W2107","W2108","W2301","fontHelper","scheme","italic","underline","_progress_bar","isFormDataSupported","FormData","FileUploader","$selectButton","_selectButton","chunkSize","selectButtonText","uploadButtonText","multiple","accept","uploadUrl","allowCanceling","showFileList","progress","dialogTrigger","dropZone","readyToUploadMessage","uploadedMessage","uploadFailedMessage","uploadAbortedMessage","uploadMode","uploadMethod","uploadHeaders","uploadCustomData","onBeforeSend","onUploadStarted","onUploaded","onFilesUploaded","onProgress","onUploadError","onUploadAborted","onDropZoneEnter","onDropZoneLeave","allowedFileExtensions","maxFileSize","minFileSize","invalidFileExtensionMessage","invalidMaxFileSizeMessage","invalidMinFileSizeMessage","extendSelection","validationMessageMode","uploadFile","uploadChunk","abortUpload","useNativeInputClick","useDragOver","nativeDropSupported","_uploadButtonType","isLabelTextDefined","_shouldDragOverBeRendered","_initFileInput","_initLabel","_setUploadStrategy","_createFiles","_createBeforeSendAction","_createUploadStartedAction","_createUploadedAction","_createFilesUploadedAction","_createProgressAction","_createUploadErrorAction","_createUploadAbortedAction","_createDropZoneEnterAction","_createDropZoneLeaveAction","CustomChunksFileUploadStrategy","DefaultChunksFileUploadStrategy","CustomWholeFileUploadStrategy","DefaultWholeFileUploadStrategy","_uploadStrategy","_isCustomClickEvent","_$fileInput","_inputChangeHandler","_doPreventInputChange","_getFiles","_changeValue","_uploadFiles","_isFileInArray","_shouldFileListBeExtended","_removeDuplicates","fileList","fileData","targetFileValue","_files","_$inputLabel","_updateInputLabelText","correctedValue","_isInteractionDisabled","_renderInputWrapper","_renderSelectButton","_renderInputContainer","_renderUploadButton","_preventRecreatingFiles","_attachDragEventHandlers","_$inputWrapper","_renderFiles","progressBar","_createProgressBar","$file","_initStatusMessage","_ensureCancelButtonInitialized","$statusMessage","_preventFilesUploading","_createFile","_validateFile","isValidFileExtension","_validateFileExtension","isValidMinSize","_validateMinFileSize","isValidMaxSize","_validateMaxFileSize","allowedExtensions","fileExtension","lastIndexOf","fileSize","_beforeSendAction","_uploadStartedAction","_uploadedAction","_filesUploadedAction","_progressAction","_uploadAbortedAction","_uploadErrorAction","_dropZoneEnterAction","_dropZoneLeaveAction","loadedSize","onAbort","onLoad","onError","onLoadStart","isInitialized","isAborted","uploadStarted","isStartLoad","chunksData","_$filesContainer","_renderFile","_toggleFileUploaderEmptyClassName","_updateFileNameMaxWidth","$fileContainer","_renderFileButtons","$fileInfo","_getFileSize","_createValidationElement","cancelButtonsCount","uploadButtonsCount","filesContainerWidth","buttonsWidth","$fileSize","prevFileSize","fileSizeWidth","$cancelButton","_getCancelButton","$uploadButton","_getUploadButton","FILEUPLOADER_BUTTON_CLASS","_removeFile","uploadButton","_uploadFile","_file$$file","_getFile","_hasInvalidFile","_selectFileDialogHandler","_selectButtonClickHandler","_attachSelectFileDialogHandler","_detachSelectFileDialogHandler","_uploadButton","_uploadButtonClickHandler","_$inputContainer","_selectButtonInputTemplate","_applyInputAttributes","isCustomTarget","_detachDragEventHandlers","_dragEventsTargets","customAttributes","_useInputForDrop","_tryToggleDropZoneActive","_updateEventTargets","dropEffect","isTargetExists","isCustom","classAction","mouseAction","dropZoneElement","_filterFiles","_isError","allowedTypes","_getAllowedFileTypes","_isFileTypeAllowed","acceptSting","allowedType","loadedFileData","loaded","segmentSize","currentSegmentSize","bytesLoaded","bytesTotal","totalFilesSize","totalLoadedFilesSize","_getProgressValue","_setLoadedSize","hideCancelButton","_this12","_totalFilesSize","_this13","_totalLoadedFilesSize","_updateTotalProgress","_getTotalFilesSize","_getTotalLoadedFilesSize","_file$cancelButton","_recalculateProgress","_updateReadOnlyState","FileBlobReader","createBlobResult","isCompleted","blob","sliceFile","startPos","webkitSlice","FileUploadStrategyBase","fileUploader","_resetFileState","_prepareFileBeforeUpload","_uploadCore","_this14","_isCustomCallback","_createUploadArgument","_handleFileError","uploadInfo","_file$progressBar","_createFileProgressBar","_onUploadStarted","_onLoadedHandler","_onErrorHandler","_onAbortHandler","_onProgressHandler","_getUploadAbortedStatusMessage","_setStatusMessage","_handleAllFilesUploaded","_updateProgressBar","_getLoadedData","formDataEntries","entryName","ChunksFileUploadStrategyBase","_FileUploadStrategyBa","_this15","realFile","loadedBytes","blobReader","guid","customData","_sendChunk","_this16","chunk","read","currentChunk","_sendChunkCore","_shouldHandleError","_createChunksInfo","bytesUploaded","chunkCount","chunkBlob","chunkIndex","_ChunksFileUploadStra","_this17","_beforeSend","_tryRaiseStartLoad","_createFormData","blobName","_isStatusError","FileName","Index","TotalCount","FileSize","FileType","FileGuid","_extendFormData","_ChunksFileUploadStra2","chunksInfo","WholeFileUploadStrategyBase","_FileUploadStrategyBa2","_this18","_isProgressStarted","_WholeFileUploadStrat","_super6","_this19","_handleProgress","_WholeFileUploadStrat2","_super7","_this20","ModuleItem","_endUpdateCore","_actionConfigs","flags","callbackFlags","syncStrategy","optionCache","_optionCache","_silentOption","actionName","prefix","containerName","getViews","_isReady","_requireReady","_requireRender","_requireResize","requireResize","requireReady","_afterRender","_parentElement","marginTop","getTemplate","controllerTypes","viewTypes","moduleNames","modulesOrder","unregisterModule","module1","module2","orderIndex1","orderIndex2","moduleName","createModuleItems","moduleTypes","moduleItems","moduleType","moduleItem","registerPublicMethods","ExtLink","_Link","HREF","domNode","_ExtLink$formats","_uiDate_boxStrategy","_box","getDefaultOptions","_is24HourFormat","is24HourFormat","dateBox","_renderWidget","_timeView","dateBoxValue","_showClock","_isShrinkView","use24HourFormat","renderOpenedState","_getPopup","_isSmallScreen","_repaintTimer","isAdaptivityChanged","isAdaptiveMode","currentAdaptiveMode","_currentAdaptiveMode","_updateValue","preventDefaultValue","normalizeTime","_getBoxItems","baseSize","renderPopupContent","crossAlign","_attachTabHandler","calendarPopupConfig","clockMinWidth","getFirstPopupElement","_hourBox","_hasFocusClass","getValue","_removeMinWidthTimer","DateAdapterCore","_source","ViewDataGenerator","nonVirtualRowCount","verticalGroupCount","_generateAllDayPanelData","viewCellsData","_generateViewCellsData","completeViewDataMap","startRowIndex","showAllDayPanel","_isShowAllDayPanel","correctedStartRowIndex","cellCountInGroupRow","previousGroupIndex","previousGroupedData","cellDataRow","isAllDayRow","isVirtual","renderRowCount","rowOffset","cellDataGetters","rowCountInGroup","rowIndexInGroup","_generateCellsRow","_getAllDayCellData","horizontalGroupCount","cellDataValue","_isFirstGroupCell","_isLastGroupCell","_getKeyByRowAndColumn","columnsNumber","columnsInGroup","columnIndexInCurrentGroup","previousOptions","previousGroupedDataMap","previousRowIndex","currentRowIndex","singleGroupRowCount","singleGroupColumnCount","ViewDataProvider","_viewDataGenerator","_viewData","_completeViewDataMap","_completeGroupedViewDataMap","_viewDataMap","_groupedDataMap","isGenerateNewViewData","viewDataGenerator","renderOptions","generateRenderOptions","_getCompleteViewDataMap","_generateViewDataMap","_getViewDataFromMap","groupedDataMap","generateGroupedDataMap","getGroupData","lastCellIndex","groupStartDate","rowsPerGroup","_getRowCountWithAllDayRows","isShowAllDayPanel","firstRowInGroup","correctedFirstRow","correctedLastRow","isStartTimeInCell","_getLastGroupRow","groupRow","currentRow","currentEndDate","_compareDatesAndAllDay","cellStartDate","cellEndDate","trimmedTime","getWidths","HeaderFooterViewExtender","columnRenderingMode","columnPageSize","columnRenderingThreshold","_beginPageIndex","_endPageIndex","_virtualVisibleColumns","resetColumnsCache","getBeginPageIndex","getColumnPageSize","getTotalWidth","_lastWidth","getEndPageIndex","_fireColumnsChanged","columnsChanged","setScrollPosition","_changedTimeout","_setScrollPositionCore","endPageIndex","needColumnsChanged","visibleColumnsHash","beginFixedColumnCount","beginFixedColumns","beginColumns","beginWidth","endFixedColumnCount","endFixedColumns","endColumns","columnsInfo","createColumnsInfo","getColumnIndexOffset","leftFixedColumnCount","focusedRowEnabled","autoNavigateToFocusedRow","focusedRowIndex","focusedColumnIndex","_keyboardController","_focusRowByIndex","_triggerFocusedRowChangedIfNeed","_focusRowByKey","getFocusedRowIndexByKey","_fireFocusedRowChanged","isAutoNavigateToFocusedRow","_resetFocusedRow","_focusRowByIndexCore","setKeyByIndex","_isValidFocusedRowIndex","isRowFocused","_isLocalRowIndex","waitReady","_isVirtualScrolling","virtualItems","virtualItemsBegin","visibleRowsCount","visiblePagesCount","_setFocusedRowKeyByIndex","_navigateToRow","isFocusedRowKeyDefined","setFocusedRowIndex","updateItems","navigateToRow","needFocusRow","isAutoNavigate","rowIndexByKey","isPaginate","_navigateTo","visibleRowIndex","isVirtualRowRenderingMode","_navigateToVirtualRow","_navigateToVisibleRow","_triggerUpdateFocusedRow","scrollToRowElement","getItemOffset","triggerUpdateFocusedRow","_focusRowByKeyOrIndex","currentFocusedRowIndex","updateFocusedRow","isMainTable","_clearPreviousFocusedRow","_prepareFocusedRow","changedItem","$prevRowFocusedElement","$focusedRowTable","scrollToElementVertically","setRowFocusType","_focusedCellPosition","visibleRow","setFocusedColumnIndex","isCellFocusType","_focus","_getCellElementFromTarget","_updateFocusedCellPosition","prevRowIndex","prevColumnIndex","_fireFocusedCellChanged","isRowElement","_getElementType","isRowFocusType","getFirstValidCellInRow","sortByKey","isLocalOperations","operationName","notSortedKeys","getDataIndexGetter","notSortedKey","isPartialUpdateWithDeleting","_updatePageIndexes","processUpdateFocusedRow","prevRenderingPageIndex","_lastRenderingPageIndex","renderingPageIndex","_isPagingByRendering","isPagingByRendering","focusController","fullReload","isValidRowIndexByKey","getGlobalRowIndexByKey","globalIndex","_calculateGlobalRowIndexByGroupedData","_calculateGlobalRowIndexByFlatData","useGroup","_generateFilterByKey","_concatWithCombinedFilter","_generateOperationFilterByKey","_generateBooleanFilter","sortInfo","rowData","getGroupDataSourceParameters","booleanFilter","dataSourceKey","keyPart","updateFocusElementTabIndex","$cellElements","_setFocusedRowElementTabIndex","_findRowElementForTabIndex","_scrollToFocusOnResize","setFocusedCellPosition","getScrollElementPosition","GroupedStrategy","_uiScrollable","_$topPocket","_$bottomPocket","_$pullDown","_$scrollViewContent","_initCallbacks","_location","pullDownCallbacks","releaseCallbacks","reachBottomCallbacks","_renderPullDown","_releaseState","$loadContainer","$loadIndicator","_releasePullDown","_updateDimensions","_topPocketSize","_bottomPocketSize","_scrollOffset","_allowedDirections","allowedDirections","_pullDownEnabled","handleInit","_startClientY","handleMove","_deltaY","_complete","_movePullDown","pullDownHeight","_getPullDownHeight","_getPullDownStartPosition","_isPullDown","handleEnd","_pullDownRefreshing","handleStop","handleScroll","currentLocation","scrollDelta","_isReachBottom","_reachBottom","_stateReleased","_reachBottomEnabled","_pullDownRefreshHandler","_refreshPullDown","pullDownEnable","reachBottomEnable","pendingRelease","release","_releaseTimeout","_updateAction","_pullDownRefreshTimeout","dxBarGauge","_resize_callbacks","_helpers","_errors_warnings","getTrue","getFalse","defaultOnIncidentOccurred","hasEvent","pickPositiveValue","callForEach","functions","emptyComponentConfig","EmptyComponent","originalInherit","baseWidget","sizedElement","setStyle","setClass","insertElement","onIncidentOccurred","onDrawn","_changesLocker","_asyncFirstDrawing","_suspendChanges","_createThemeManager","setCallback","_renderElementAttributes","_initRenderer","linkTarget","_renderVisibilityChange","_attachVisibilityChangeHandlers","_toggleParentsScrollSubscription","_initEventTrigger","createIncidentOccurred","_initPlugins","_initialChanges","_getThemeManagerOptions","_plugins","_disposePlugins","codes","_resumeChanges","_applyingChanges","_applyChanges","_optionsQueue","_applyQueuedOptions","resolveItemsDeferred","_notify","_resolveDeferred","_getTemplatesItems","getTemplatesDef","getTemplatesGroups","extraItems","_setGroupsVisibility","syncRendering","_totalChangesOrder","_layoutChangesOrder","_change_EVENTS","applyChanges","_change_THEME","_setThemeAndRtl","_change_RENDERER","_setRendererOptions","_change_RESIZE_HANDLER","_change_ELEMENT_ATTR","_change_CONTAINER_SIZE","_change_LAYOUT","_change_DISABLED","_initDisabledState","_calculateCanvas","_rootClass","_disposeRenderer","_getAnimationOptions","subscribe","$parents","_proxiedTargetParentsScrollHandler","_$prevRootParents","_removeResizeHandler","createEventTrigger","defaultCanvas","getSizeOfSide","canvas1","canvas2","__forceRender","_getMinSize","_getAlignmentRect","forward","nextRect","backward","isScalar","_resizeHandler","createResizeHandler","_isUpdateAllowed","_getActionForUpdating","partialChanges","getPartialChangeOptionsName","pc","_partialOptionChangesMap","_partialOptionChangesPath","changedOption","partialChangeOptionsName","_addOptionsNameForPartialUpdate","_checkOptionsForPartialUpdate","optionObject","optionKeys","_resetIsReady","replaceInherit","buildPath","getArc","xDirection","yDirection","getAbsoluteArc","x0","getCloudAngle","anchorX","anchorY","halfWidth","halfHeight","xr","yb","getCloudPoints","bounded","_ref3$cornerRadius","halfArrowWidth","leftTopCorner","rightTopCorner","rightBottomCorner","leftBottomCorner","arrowX","arrowY","arrowBaseBottom","arrowBaseTop","arrowBaseLeft","arrowAngle","arrowEndPointX","arrowEndPointY","arrowArc","_arrowArc","_angle","arrowBaseTopX","arrowBaseTopY","_angle2","_arrowBaseTopX","_arrowBaseTopY","bottomAngle","arrowBaseBottomX","arrowBaseBottomY","topAngle","_arrowBaseTopX2","_arrowBaseTopY2","_bottomAngle","_arrowBaseBottomX","_arrowBaseBottomY","_bottomAngle2","_arrowBaseBottomX2","_arrowBaseBottomY2","_bottomAngle3","_arrowBaseBottomX3","_arrowBaseBottomY3","_topAngle","_arrowBaseTopX3","_arrowBaseTopY3","measureContent","moveContentGroup","bonded","_ref4$canvas","_ref4$offset","restProps","_draw","shadowSettings","_this$_root","_contentBBox","_contentGroup","_size","xOff","yOff","lm","rm","tm","bm","y_top","y_bottom","cloudSettings","cloudGroup","_cloud","radRotationAngle","_double_click","iteratorUtils","appendElementTemplate","getWidthStyle","setCellWidth","scrollingOptions","pushBackValue","bounceEnabled","useSimulatedScrollbar","_cellPrepared","rowObject","isAppend","safari","isHeaderRow","isMasterDetailRow","isFilterRow","msieCorrection","headerCellTemplate","$fieldItemContent","resultOptions","cellElement","eventType","formItemOptions","touchTarget","touchCurrentTarget","clearTouchTargets","_isNativeClick","_rowPointerDown","subscribeToRowEvents","colgroupElement","setWidth","delayedTemplates","_delayedTemplates","syncTemplates","asyncTemplates","_renderDelayedTemplatesCore","_renderDelayedTemplatesCoreAsync","templates","isAsync","templateParameters","doc","_processTemplate","renderingTemplate","renderedTemplate","templateID","_templatesCache","templateDeferred","renderAsync","showEditorAlways","$tbody","_appendRow","appendTemplate","$root","$wrappedRow","_addWatchMethod","_needRenderCell","oldValues","$newCells","cellUpdatedClass","$newCell","newElement","oldAttributes","nodeName","nodeValue","copyAttributes","_setCellAriaAttributes","columnIndexOffset","ariaColIndex","watchers","updateFunc","afterExecute","$newTableElement","legacyRendering","isRowVisible","getVisibleColumnIndex","$cols","getCellElements","columnVisibleIndex","_getVisibleColumnIndex","_getRowElement","$tableElements","getCellElement","getCell","_getRowElementsCore","_applyColumnState","ariaSortState","$sortIndicator","sortingMode","$indicatorsContainer","_getIndicatorContainer","isSortingAllowed","allowSorting","_getIndicatorClassName","_updateIndicator","indicatorName","_getIndicatorElements","returnAll","$indicatorElements","AllDayPanelCell","_cell","DateTableCellBase","contentTemplateProps","DateTableCellBaseProps","_validation_engine","ValidationSummary","validationGroup","_initGroupRegistration","findGroup","_modelByElement","groupConfig","addGroup","_unsubscribeGroup","_groupWasInit","_validationGroup","groupSubscription","_groupValidationHandler","getGroupConfig","_getOrderedItems","validators","orderedItems","foundItems","brokenRules","_validationSummary","_itemValidationHandler","itemsChanged","foundRule","VALIDATION_SUMMARY_CLASS","CheckBox","_renderText","textValue","_$text","indeterminate","DayDateTableLayout","_BaseComponent","_createTemplateComponent","groupBy","arrangeSortingInfo","filteredGroup","isCountQuery","_version","ALLOWED_TOOLBAR_ITEM_ALIASES","IS_IE11","IS_OLD_SAFARI","HEIGHT_STRATEGIES","flex","Popup","bottomTemplate","useDefaultToolbarButtons","useFlatToolbarButtons","_iosAnimation","_androidAnimation","_$popupContent","isFullscreen","_toggleFullScreenClass","_renderTitle","_renderBottom","titleText","ios","_renderTemplateByType","_renderDrag","_executeTitleRenderAction","additionalToolbarOptions","toolbarOptions","$toolbar","$result","$titleElement","_getTitleRenderAction","titleElement","_titleRenderAction","_createTitleRenderAction","_getCloseButton","_getCloseButtonRenderer","__","_createToolbarItemAction","toolbarsItems","_toolbarItemClasses","currentPlatform","isShortcut","getButtonPlace","_getToolbarItemByAlias","isLTROrder","_getLocalizationKey","itemConfig","itemClass","POPUP_CLASS","$bottom","_toggleClasses","aliases","_getDragTarget","topToolbar","_renderGeometryImpl","isDimensionChanged","_resetContentHeight","_setContentHeight","_renderResize","_resizable","onResize","currentHeightStrategyClass","_chooseHeightStrategy","_getHeightCssStyles","_setHeightClasses","_heightStrategyChangeOffset","popupVerticalPaddings","isAutoWidth","static","_isAutoHeight","cssStyles","contentMaxHeight","_getOptionValue","contentMinHeight","popupHeightParts","_splitPopupHeight","toolbarsAndVerticalOffsetsHeight","header","footer","contentVerticalOffsets","popupVerticalOffsets","maxHeightValue","addOffsetToMaxHeight","addOffsetToMinHeight","currentClass","excessClasses","getVisibleHeight","getVerticalOffsets","_shouldFixBodyPosition","_toggleSafariFullScreen","_isShown","_bodyScrollTop","_toggleSafariScrolling","_renderFullscreenWidthClass","refreshPosition","_renderGeometry","shouldRenderGeometry","GridView","gridView","_getWidgetAriaLabel","_getTableRoleName","_toggleBestFitMode","isBestFit","_remote_store","createGroupingOptions","dimensionOptions","useSortOrder","groupingOptions","dimensionOption","getIntervalFilterExpression","numericInterval","numericValue","isExcludedFilterType","getFilterExpressionForFilterValue","capitalizeFirstLetter","getFieldFilterSelector","createFilterExpressions","filterExpressions","fieldExpressions","createFieldFilterExpressions","fieldFilterExpressions","currentExpression","mergeFilters","notEmpty","valuesArray","parseValue","descriptions","rowHash","columnHash","parentPathValue","dimensionHash","columnItem","rowItem","rowLevel","columnLevel","currentColumnIndex","getFiltersForDimension","getExpandedIndex","getExpandedPathSliceFilter","firstCollapsedFieldIndex","startSliceIndex","getGrandTotalRequest","expandedIndex","expandedLevel","commonFilters","oppositeDimensionName","includeTotalSummary","getFirstCollapsedIndex","firstCollapsedIndex","getRequestsData","rowExpandedLevel","columnExpandedLevel","columnExpandedIndex","firstCollapsedColumnIndex","firstCollapsedRowIndex","rowExpandedIndex","columnTotalsOptions","getFiltersForExpandedDimension","rowFilterByExpandedPaths","preparedOptions","requestsData","externalFilterExpr","hasRows","summaryOption","createLoadOptions","createDrillDownDataSource","filterExp","unloading","textStatusMessages","lockDeferred","lockCount","errorMessageFromXhr","parsererror","textStatus","explainTextStatus","processRequestResultLock","obtain","XHR_ERROR_UNLOAD","normalizeBinaryCriterion","crit","pair","keysEqual","throttled","lastArgs","throttle","_cache","trivialPromise","rejectedPromise","isDisjunctiveOperator","isConjunctiveOperator","isUnaryOperation","isGroupCriterion","base64_encode","bytes","stringToByteArray","getBase64Char","octet1","octet2","octet3","cachedLocation","_load","_areBoundsSet","_mapsLoader","_markers","_routes","_addMarker","markerObjects","markerObject","originalMarker","markersOptionsToRemove","markerOptionToRemove","_removeMarker","markersOptionToRemove","markerIndex","_addRoute","routeObjects","originalRoute","routeIndex","_removeRoute","_clearBounds","baseErrors","makeError","combineMessage","formatMessage","formatDetails","details","getErrorUrl","__id","__details","ERROR_URL","eventNames","indexByKey","_options$keyExpr","_options$immutable","immutable","disableCache","logError","getItems","findItems","targetWithoutPrototype","_dataByKeyMap","_dataByKeyMapLength","dataByKeyMap","arrayLength","generateDataByKeyMap","getErrorResult","isBatch","errorCode","keyOrKeys","hasKey","getCacheValue","setDataByKeyMapValue","getHasKeyCacheValue","SchedulerWorkSpaceMonth","_isWorkSpaceWithCount","_formatWeekday","averageWidth","_getCells","firstMonthDate","_minVisibleDate","_maxVisibleDate","_getStartViewDate","_dateInRange","getCellText","_getCellText","_getDate","_isFirstDayOfMonth","_formatMonthAndDay","lastRowInDay","_isCurrentDate","_isOtherMonth","cellDate","_calculateDayDuration","firstDateTime","lastDateTime","dayDurationInMs","startDateCopy","_getDateTableBorder","calculatedTopOffset","_getCellCoordinatesByIndex","_presets","directionPostfixes","undefined","_accumulatedDelays","_animations","_createAnimations","initialConfig","configModifier","_prepareElementAnimationConfig","_createAnimation","presetName","getPreset","skipElementInitialStyles","cleanupWhen","_completePromise","extraCssClasses","staggerDelay","createAnimation","_startAnimations","animations","_stopAnimations","jumpToEnd","_clearAnimations","_completeDeferred","animationDeferreds","classesMap","Title","parseHorizontalAlignment","parseVerticalAlignment","hasText","processTitleLength","pickMarginValue","_titleElement","_subtitleElement","_updateStructure","_updateTexts","titleBox","subtitleOptions","subtitleElement","_baseLineCorrection","_shiftSubtitle","_updateBoundingRectAlignment","_boundingRect","themeOptions","processTitleOptions","isLayoutChanged","_updateBoundingRect","_correctTitleLength","_this$getCorrectedLay","getCorrectedLayoutOptions","srcBox","fitRect","checkRect","changeLink","_title","prepareScrollData","allowScroll","scrollTopPos","scrollBottomPos","validateTarget","eventTarget","rotateend","rotatestart","zoomend","zoomstart","translateend","translatestart","transformend","transformstart","START_POSTFIX","UPDATE_POSTFIX","END_POSTFIX","eventAliases","addAlias","rotation","deltaRotation","translation","deltaTranslation","getEventVector","vector","firstVector","secondVector","getRotation","scalarProduct","distanceProduct","acos","getTranslation","TransformEmitter","validatePointers","_accept","startVector","_startVector","_prevVector","_fireEventAliases","currentVector","eventPostfix","eventAlias","exportNames","_file_saver","fileSaver","saveAs","_excel_creator","_image_creator","_svg_creator","_excel_format_converter","_pdf_creator","creator","ExcelCreator","formatConverter","svgCreator","ensureRequiredFuncOption","throwInvalidUserFuncResult","createUserFuncFailureHandler","promiseArguments","getResponseHeader","invokeUserLoad","userResult","userFunc","_loadFunc","runRawLoad","userFuncOptions","continuation","__rawData","loadPromise","__rawDataPromise","_cacheRawData","runRawLoadWithQuery","countOnly","itemsQuery","totalCountQuery","rawDataQuery","waitList","asyncResult","useDefaultSearch","_loadMode","cacheRawData","_totalCountFunc","_byKeyFunc","_insertFunc","_updateFunc","_removeFunc","createQuery","_totalCountImpl","invokeUserTotalCountFunc","_addFailHandlers","_pushImpl","_byKeyImpl","_requireKey","runRawLoadWithKey","invokeUserByKeyFunc","serverResponse","_uiTree_view","NODE_CONTAINER_CLASS","TreeViewSearch","_showCheckboxes","_isRecursiveSelection","_initDataAdapter","_updateSearch","_repaintContainer","_updateDataAdapter","_getDataAdapterOptions","_searchEditor","_getSearchEditorOptions","rootNodes","isSearchMode","_removeSearchBox","_HorizontalAppointmen","HorizontalMonthLineRenderingStrategy","normalizeEndDateByViewEnd","getAppointmentMinSize","_getDurationInDays","cropAppointmentWidth","_adjustDurationByDaylightDiff","HOURS_IN_DAY","_getDeltaWidth","skipSorting","_sortAppointmentsByStartDate","FieldsArea","_uiPivot_grid2","DIV","AreaItem","_getAreaName","_createGroupElement","dxPopup","_getPopupOptions","popupOptions","FieldChooserBase","dxPivotGridFieldChooserBase","_rowPopup","subscribeToEvents","renderSortable","_shouldCreateButton","_renderTableContent","groupElement","fieldChooserBase","renderField","indicators","nextField","prevField","renderGroupConnector","_renderVirtualContent","cellHintEnabled","createCellContent","$cellContent","addCssClassesToCellContent","contentAlignment","getHeaderContentAlignment","$visibleIndicatorElements","indicatorCount","_getColumnAlignment","sortIndicatorClassName","sortIndexIndicatorClassName","$sortIndexIndicator","_isLegacyKeyboardNavigation","_getHeaderTemplate","_isGroupingChanged","_handleActionKeyDown","_lastActionElement","$column","getColumnIndexByElement","showHeaderFilterMenu","_processHeaderAction","_hasRowElements","$cellElement","_alignCaptionByCenter","$indicatorElement","_isSortableElement","getHeadersRowHeight","$headerRows","headerRow","getHeaderElement","bandColumnIndex","$columnElements","draggingPanels","draggableColumnCount","canHideColumn","allowDrag","allowGrouping","isColumnOptionUsed","draggingPanel","getColumnCount","sortingOptions","changeSortOrder","ascendingText","descendingText","clearText","setColumnOpacity","AppointmentPositioningStrategy","_renderingStrategy","_isCompactTheme","allDayCount","_getAppointmentDefaultOffset","OPERATORS","EditorFactory","FilterBuilder","onEditorPreparing","onEditorPrepared","defaultGroupOperation","groupOperations","maxGroupLevel","allowHierarchicalFields","closePopupOnTargetScroll","_initCustomOperations","disableInvalidateForValue","_disableInvalidateForValue","_initModel","_getNormalizedFields","_model","_customOperations","getNormalizedFields","_updateFilter","normalizedValue","_getModel","_initEditorFactory","getMergedOperations","convertToInnerStructure","actionConfig","_createGroupElementByCriteria","_createConditionElement","FILTER_BUILDER_CLASS","_createConditionItem","$groupContent","groupCriteria","getGroupCriteria","innerCriteria","$groupItem","FILTER_BUILDER_GROUP_CLASS","_createRemoveButton","_createGroupOperationButton","_createAddButton","newGroup","createEmptyGroup","newCondition","createCondition","_createButton","_getGroupOperations","groupMenuItem","getGroupMenuItem","$operationButton","_createButtonWithMenu","setGroupValue","removeMenu","FILTER_BUILDER_OVERLAY_CLASS","treeViewElement","treeView","dxTreeView","_subscribeOnClickAndEnterKey","_createPopupWithTreeView","_hasValueButton","customOperation","getCustomOperation","_createOperationButtonWithMenu","availableOperations","getAvailableOperations","currentOperation","getOperationFromAvailable","getOperationValue","updateConditionByOperation","$valueButton","_createValueButton","_createOperationAndValueButtons","_createFieldButtonWithMenu","getFullCaption","getCaptionWithParents","$fieldButton","$removeButton","FILTER_BUILDER_ACTION_CLASS","addGroupHandler","addConditionHandler","_createValueText","getCurrentLookupValueText","getCurrentValueText","_createValueEditorWithEvents","_updateConditionValue","_addDocumentKeyUp","isComposing","hasCompositionJustEnded","documentKeyUpHandler","_documentKeyUpHandler","_addDocumentClick","closeEditorFunc","documentClickHandler","_isFocusOnEditorParts","_documentClickHandler","_removeEvents","createValueText","filterOperation","_createValueEditor","$popup","getElementMaxHeightByWindow","SlidersController","_common2","emptySliderMarkerText","buildRectPoints","isLess","isGreater","selectClosestValue","middle","dummyProcessSelectionChanged","_lastSelectedRange","getSelectedRange","_processSelectionChanged","sliderParams","trackersGroup","_areaTracker","_selectedAreaTracker","_shutter","_sliders","selectedRange","updateSelectedRange","verticalRange","sliderHandleOptions","sliderMarkerOptions","shutterOptions","rangeBounds","fullTicks","_verticalRange","_minRange","minRange","_maxRange","maxRange","_animationEnabled","_allowSlidersSwap","_values","_isCompactMode","_shutterOffset","_updateSelectedView","_isOnMoving","_updateSelectedRange","_applyTotalPosition","cancelAnimation","_setText","setSelectedRange","restoreSetSelectedRange","isAnimated","applyPosition","areOverlapped","getCloudBorder","_applyAreaTrackersPosition","_applySelectedRangePosition","position1","position2","pos1","pos2","_adjustVisualRange","setDisplayValue","_dockSelectedArea","_moveSelectedArea","firstPosition","secondPosition","antiCompare","_sliderGroup","initialIndex","minPosition","maxPosition","staticPosition","compareMin","compareMax","moveOffset","swapOffset","_setValid","invalidStateValue","_changeMovingSlider","_marker","dataSourceAdapterType","asyncNoop","pairToObject","denormalizeKey","normalizeKey","normalizedContext","executingName","delayedFuncs","delayedNames","delayedDeferreds","deferExecute","oldExecutingName","currentDelayedCount","targetFilter","mapFn","bestMatches","maxMatchCount","itemSrc","matchCount","mismatch","valueItem","_raw$x","_raw$y","charCode","preventRound","checkFunction","expectedCheck","arraysEqualByValue","array1","array2","objectsEqualByValue","object1","object2","strict","_propertyName","comparisonResult","touchPropsToHook","touchPropHook","subject","realDevice","allowZoom","allowPan","allowSelection","metaVerbs","msTouchVerbs","msContentZooming","msUserSelect","supportProp","zoomDisabled","panDisabled","isScrollingEvent","windowWidth","scrollIntoViewIfNeeded","scrollIntoView","getContentHeightLimit","getPixelRatio","_isVirtual","needTwoPagesLoading","_viewportItemIndex","scrollChangedHandler","$scrollElement","scrollableArray","scrollToArray","disposeArray","getElementOffset","$scrollableElement","scrollableOffset","widgetScrollStrategy","subscribeToScrollEvents","eventsStrategy","createWindowScrollHandler","scrollMethod","getPreloadPageCount","previous","realViewportSize","_viewportSize","_viewportItemSize","_itemSizes","getViewportPageCount","fireChanged","_isChangedFiring","processDelayChanged","_isDelayChanged","processChanged","isDelayChanged","removeCacheItem","isPrepend","removeItemCount","_lastPageIndex","_sizeRatio","_loadingPageIndexes","beginItemsCount","scrollingTimeout","_setViewportPositionCore","getViewportPosition","defaultItemSize","itemOffsetsWithSize","itemOffsetWithSize","itemOffsetDiff","_contentSize","virtualContentSize","contentHeightLimit","isEnd","currentItemIndex","newPageIndex","lastPageSize","maxPageIndex","defaultPageIndex","pageIndexForLoad","getPageIndexForLoad","lastCacheLength","cacheItem","isDelayed","subscribeToWindowScrollEvents","AppointmentDragBehavior","currentAppointment","getAppointmentElement","_getAppointmentContainer","dataFromTooltip","LIST_ITEM_DATA_KEY","itemDataFromTooltip","itemDataFromGrid","appointmentDragging","itemSettings","getItemSettings","createDragStartHandler","createDragMoveHandler","createDragEndHandler","createDropHandler","DRAG_ENTER_EVENT","DRAG_LEAVE_EVENT","DROP_EVENT","knownDropTargets","knownDropTargetSelectors","knownDropTargetConfigs","dropTargetRegistration","handleObj","updateEventsCounter","eventsCount","DragEmitter","_initEvent","_maxLeftOffset","_maxRightOffset","_maxTopOffset","_maxBottomOffset","dropTargets","targetElements","_dropTargets","dragOffset","_processDropTargets","_calculateXOffset","_calculateYOffset","_fitOffset","minOffset","maxOffset","_findDropTarget","_currentDropTarget","_fireDropTargetEvent","draggingElement","_checkDropTargetActive","dropTargetIndex","dropTargetSelectors","$delegatedTargets","delegatedTarget","$delegatedTarget","_checkDropTarget","getItemConfig","activeTarget","$prevTarget","dropTargetConfig","targetPosition","itemPositionFunc","targetSize","storeImpl","Store","_withLock","callbackValues","callbackKey","registerClass","_providerDynamic","_providerDynamic2","PROVIDERS","googleStatic","bing","provider","autoAdjust","markerIconSrc","onMarkerAdded","onMarkerRemoved","onRouteAdded","onRouteRemoved","apiKey","onReady","_lastAsyncAction","_checkOption","_initContainer","_grabEvents","_cancelEvent","_saveRendered","_renderShield","_queueAsyncAction","$shield","setOptionSilent","_suppressAsyncAction","changeBag","_optionChangeBag","titleize","removed","isActionSuppressed","_triggerReadyAction","originalMap","_triggerUpdateAction","addMarker","_addFunction","removeMarker","_removeFunction","addRoute","removeRoute","addingValue","addingValues","_partialArrayOptionChange","removingValue","removingValues","removingIndex","removing","SUPPORTED_FORMATS","DATE_COMPONENT_TEXT_FORMATTER","ONE_MINUTE","ONE_DAY","ONE_YEAR","FORMATS_INFO","getStandardPattern","components","datetime","standardPattern","SUBMIT_FORMATS_MAP","toStandardDateFormat","fromStandardDateFormat","formatInfo","getLongestCaptionIndex","captionArray","longestIndex","longestCaptionLength","formatUsesMonthName","formatUsesDayName","getLongestDate","stringFormat","getStringFormat","longestDate","setSeconds","getValueExpr","getDisplayExpr","ResourceManager","_resourceLoader","setResources","valueGetter","displayGetter","resourceField","getResources","allowMultiple","accessorName","accessors","fieldExpr","_resources","_resourceFields","_resourcesData","currentResourceItems","_getResourceDataByField","_createWrappedDataSource","filteredData","resourcesSetter","resourceData","_isMultipleResource","wrapOnlyMultipleResources","tempObject","getResourcesByFields","_mapResourceData","mapFunction","getResourceByField","colorExpr","colorGetter","resourceDataLength","getResourceDataByValue","useColorAsDefault","leafIndex","make","currentGroupItem","resultItem","loadedResources","currentResourceData","resourceCount","_hasGroupItem","treeLeaves","existingAppointments","ok","resourceName","resourceValue","resourceTitle","resourceGetter","resourceFromAppointment","resourcesData","fieldNames","getOwnPropertyNames","currentResourcesData","currentItems","currentData","_core","_open_xml_currency_format","_accounting_formats","detectCurrencySymbolRegex","formattersCache","NumberFormat","_normalizeFormatConfig","minimumIntegerDigits","useGrouping","maximumFractionDigits","_getPrecisionConfig","minimumFractionDigits","_getCurrencySymbolInfo","getCurrencyFormatter","_extractCurrencySymbolInfo","currencyValueString","delimiter","getCurrencySymbol","targetCurrency","currencySymbol","closestAccountingFormat","_calendar","_uiDate_box","supportedKeys","homeEndHandler","contouredDate","_view","lastActionElement","_getWidgetName","getKeyboardListener","_getWidgetOptions","disabledDates","dateSerializationFormat","dateOption","onCellClick","_cellClickHandler","_injectComponent","onContouredChanged","_refreshActiveDescendant","hasFocus","actionValue","_isCalendarVisible","_toTodayView","textChangedHandler","currentTheme","baseThemeName","defaultTheme","targetThemeName","themeInfo","splitter","getThemeInfo","themesMapping","registerThemeName","themes","mergeScalar","mergeObject","patchAxes","section","patchMapLayers","patchTheme","registerThemeSchemeAlias","themesSchemeMapping","addCacheItem","cacheUid","nextCacheUid","widgetsCache","refreshTheme","findThemeNameByName","findThemeNameByPlatform","colorScheme","_validation_message","VALIDATION_MESSAGE_KEYS_MAP","validationBoundary","showValidationMessageTimeout","initValidationOptions","validationErrors","validationStatus","validationTooltipOptions","_attachKeyboardEvents","_createValueChangeAction","_valueChangeAction","_suppressValueChangeAction","_valueChangeActionSuppressed","_resumeValueChangeAction","_toggleReadOnlyState","_renderValidationState","_raiseValueChangeAction","_valueChangeArgs","_focusInHandler","isValidationMessageShownOnFocus","$validationMessageWrapper","_getValidationErrors","_disposeValidationMessage","_$validationMessage","_toggleValidationClasses","isInvalid","_getValidationMessageTarget","_toggleBackspaceHandler","$eventTarget","$submitElement","_setValidationMessageOption","optionKey","_this$_validationMess3","_refreshFocusState","updateMaxWidth","synchronizeValidationOptions","_innerWidgetOptionChanged","_storage","navigator","getNavigator","KNOWN_UA_TABLE","iPhone","iPhone5","iPhone6","iPhone6plus","iPad","iPadMini","androidPhone","androidTablet","msSurface","desktop","DEFAULT_DEVICE","generic","grade","mac","uaParsers","userAgent","isPhone","isTablet","isMac","screen","Devices","_realDevice","_getDevice","_currentDevice","_currentOrientation","_recalculateOrientation","deviceOrName","_forced","_getDeviceOrNameFromWindowScope","_getDeviceNameFromSessionStorage","forceDevice","tinyHippos","_deviceClasses","_getCssClasses","_isSimulator","isRippleEmulator","deviceName","_fromConfig","ua","_fromUA","sessionStorage","shortcuts","_currentWidth","_changeOrientation","prevViewport","DATE_INTERVAL_FORMATS","HeaderFilterController","_headerFilterView","_updateSelectedState","isExclude","updateHeaderFilterItemSelectionState","_normalizeGroupItem","displaySelector","headerFilterOptions","firstValueText","secondValue","secondValueText","getFormatOptions","emptyValue","headerFilterDataSource","isLookup","lookupDataSourceOptions","cutoffLevel","_currentColumn","origPostProcess","isGroupPanel","$columnElement","remoteFiltering","dxResizableInstance","headerFilterByColumn","ColumnHeadersViewHeaderFilterExtender","headerFilterMixin","$headerFilterIndicator","allowHeaderFiltering","_subscribeToIndicatorEvent","_updateIndicators","HeaderPanelHeaderFilterExtender","_createGroupPanelItem","invertFilterExpression","headerFilterView","HeaderFilterView","cloneItems","calculateOperationTypes","isFullReload","groupExpanding","groupExpand","getPageDataFromCache","_remoteOperations","_hasLastPage","_currentTotalCount","_cachedPagesData","_lastOperationTypes","loadError","customizeStoreLoadOptions","changing","_dataChangedHandler","_dataLoadingHandler","_dataLoadedHandler","_loadingChangedHandler","_loadErrorHandler","_pushHandler","_changingHandler","_handleChanging","isSharedDataSource","resetCache","_cachedPagingData","_needClearStoreDataCache","fromStore","_dataIndexGetter","storeData","isCacheUpdated","getItemCount","oldItemCount","_needCleanCacheByOperation","operationType","operationTypesByOrder","operationTypeIndex","originalStoreLoadOptions","_isRefreshing","isRefreshing","_loadingOperationTypes","_isRefreshed","_lastOperationId","_handleDataLoadingCore","localLoadOptionNames","localPaging","needCache","needPageCache","needPagingCache","needStoreCache","setPageDataToCache","currentTotalCount","_operationTypes","_scheduleCustomLoadCallbacks","_isCustomLoading","loadingOperationTypes","dataSourceLoadOptions","getCachedStoreData","_type2","_base_axis","_parse_utils","_sliders_controller","_range_view","_series_data_source","_tick_generator","_loading_indicator","_ceil","VALUE","calculateMarkerHeight","getTextBBox","calculateScaleLabelHalfWidth","scaleOptions","tickIntervalsInfo","calculateValueType","typeFirstValue","typeSecondValue","validType","showScaleMarkers","checkLogarithmicOptions","defaultLogarithmBase","calculateScaleAreaHeight","visibleMarkers","labelScaleOptions","markerScaleOptions","placeholderHeight","customTicks","getNextTickInterval","updateTickIntervals","screenDelta","ticksInfo","tickCountByInterval","tickCountByScreen","gridSpacingFactor","calculateTickIntervalsForSemidiscreteScale","tickGenerator","logBase","minorAxisDivisionFactor","calculateMinors","allowDecimals","rangeIsEmpty","minorTickCount","_options$workWeek","updateScaleOptions","translatorRange","checkDateMarkerVisibility","isEmptyInterval","altIntervals","correctValueByInterval","getIntervalCustomTicks","customMinorTicks","customBoundTicks","getPrecisionForSlider","tail","dxRangeSelector","_dataIsLoaded","rangeViewGroup","slidersGroup","scaleGroup","scaleBreaksGroup","_axis","AxisWrapper","_rangeView","_slidersController","lastSelectedRange","_rangeOption","_clientRect","_change_SCALE","_setValueByDataSource","selectedRangeUpdateMode","valueIsReady","__skipAnimation","_dataSourceIsAsync","rangesInfo","allScaleSelected","getVisualRangeLength","_change_DATA_SOURCE","_updateDataSource","_change_MOSTLY_TOTAL","_applyMostlyTotalChange","_change_SLIDER_SELECTION","_change_VALUE","_validateRange","__isResizing","currentAnimationEnabled","_completeSeriesDataSourceCreation","setMarginOptions","_createSeriesDataSource","scaleOption","calculatedValueType","correctValueType","validateStartEndValues","messageToIncidentOccurred","prepareScaleOptions","argTranslatorRange","rangeForCategories","calculateTranslatorRange","isDateScale","isMarkerVisible","intervalX","updateTranslatorRangeInterval","_prepareSliderMarkersOptions","indents","indentOptions","leftMarkerHeight","rightMarkerHeight","placeholderWidthLeft","placeholderWidthRight","startTickValue","endTickValue","leftScaleLabelWidth","rightScaleLabelWidth","calculateIndents","rangeContainerCanvas","HEIGHT_COMPACT_MODE","_updateElements","isNotSemiDiscrete","_isUpdating","getFullTicks","_dataSourceItems","Axis","categoriesSortingMethod","doNotSnap","isTypeDiscrete","isValueTypeDatetime","majorUnit","idx","getMinorTickIntervalUnit","getShiftDirection","getTickStartPositionShift","axesContainerGroup","widgetClass","axisClass","_updateSelectedRangeCallback","getAxisSharpDirection","axisPosition","semiDiscreteInterval","prepareAxisOptions","getMarkerTrackers","markerTrackers","onPointerDown","createDateMarkersEvent","_this$_axis$visualRan","imageChanged","getSquareMarkerCoords","getPolygonMarkerCoords","getTriangleDownMarkerCoords","getTriangleUpMarkerCoords","floorHalfRadius","ceilHalfRadius","getCrossMarkerCoords","properValue","_createImageMarker","_createSymbolMarker","pointSettings","hideInsideLabel","_getShiftLabelCoords","_showForZeroValues","fullGraphicBBox","isInside","_getLabelCoordOfPosition","translates","high","low","isHighDisplayMode","isLowDisplayMode","highErrorOnly","lowErrorOnly","absTotal","leftHoleTotal","rightHoleTotal","valuePercent","minValuePercent","isFullStackedSeries","minTrackerSize","hasProperty","msPointerEnabled","msMaxTouchPoints","pointerEnabled","maxTouchPoints","trackerR","isSquare","isTriangle","lowErrorValue","highErrorValue","labelFormatObject","percentText","totalText","noErrorBar","lowValue","highValue","edgeLocation","SizeStyle","whitelist","KEYDOWN_EVENT","SCROLL_EVENT","MOUSEDOWN_EVENT","ResizingModule","allowedTargets","_attachEvents","_createResizeFrame","_isAllowedTarget","_$target","updateFramePosition","showFrame","hideFrame","_$resizeFrame","_handleFrameKeyDown","_deleteImage","_getBoundingRect","targetTop","targetLeft","_getBoundingRect2","containerTop","containerLeft","_getBorderWidth","_getQuillContainer","deleteAt","_detachEvents","downPointerEventName","movePointerEventName","_initHandlers","clickHandler","getNode","processClick","downHandler","moveHandler","_disposeHandlers","isRootDown","setHover","processHover","processTooltip","_tab_panel","_uiForm4","ITEM_OPTIONS_FOR_VALIDATION_UPDATING","Form","_cachedColCountOptions","_groupsColCount","_attachSyncSubscriptions","defaultScreenFactorFunc","formID","onFieldDataChanged","minColWidth","alignItemLabels","alignItemLabelsInAllGroups","alignRootItemLabels","showRequiredMark","showOptionalMark","requiredMark","optionalMark","requiredMessage","_getGroupColCount","GROUP_COL_COUNT_ATTR","_createHiddenElement","rootLayoutManager","HIDDEN_LABEL_CLASS","$hiddenLabel","_renderLabel","_labelLocation","_hiddenLabelText","FIELD_ITEM_LABEL_TEXT_CLASS","_getLabelWidthByText","_getLabelsSelectorByCol","inOneColumn","FIELD_ITEM_CLASS","FORM_FIELD_ITEM_COL_CLASS","excludeTabbed","FIELD_ITEM_TAB_CLASS","FIELD_ITEM_LABEL_CLASS","FIELD_ITEM_LABEL_CONTENT_CLASS","_getLabelText","_applyLabelsWidthByCol","$labelTexts","$labelTextsLength","_applyLabelsWidth","applyLabelsOptions","_getGroupElementsInColumn","cssColCountSelector","GROUP_COL_COUNT_CLASS","FIELD_ITEM_CONTENT_CLASS","FORM_GROUP_CLASS","_applyLabelsWidthWithGroups","_alignRootSimpleItems","_applyLabelsWidthWithNestedGroups","$rootSimpleItems","ROOT_SIMPLE_ITEM_CLASS","groupsColIndex","groupColIndex","$groupsByCol","groupColCount","_alignLabelsInColumn","_checkGrouping","_getColCount","_prepareFormData","_getValidationGroup","_clearCachedInstances","FORM_CLASS","_renderLayout","_renderValidationSummary","_lastMarkupScreenFactor","_targetScreenFactor","_getCurrentScreenFactor","getCurrentScreenFactor","_cachedLayoutManagers","_alignLabels","_getContent","$validationSummary","FORM_VALIDATION_SUMMARY","_$validationSummary","dxValidationSummary","parentIsTabbedItem","currentPath","isTabs","concatPaths","createItemPathByIndex","itemCopy","_tryPrepareGroupItem","_tryPrepareTabbedItem","_tryPrepareItemTemplate","cssItemClass","groupContentTemplate","_itemGroupTemplate","_itemTabbedTemplate","tabs","_rootLayoutManager","_renderLayoutManager","isRoot","onLayoutChanged","isSingleColumnMode","_tryGetItemsForTemplate","$tabPanel","tabPanelOptions","extendRunTimeItemInfoByKey","tryUpdateTabPanelInstance","widgetInstance","FIELD_ITEM_CONTENT_HAS_TABS_CLASS","FORM_GROUP_WITH_CAPTION_CLASS","FIELD_ITEM_CONTENT_HAS_GROUP_CLASS","FORM_GROUP_CAPTION_CLASS","FORM_GROUP_CONTENT_CLASS","_getLayoutManagerConfig","baseColCountByScreen","md","sm","layoutData","_isDataUpdating","_triggerOnFieldDataChanged","addItemsOrExtendFrom","nestedItemsRunTimeInfo","getItemsRunTimeInfo","removeItemsByItems","optionFullName","_triggerOnFieldDataChangedByDataSet","rootNameOfComplexOption","_getRootLevelOfExpectedComplexOption","_customHandlerOfComplexOption","_resetValues","removeGroup","fullOptionName","expectedRootNames","splitFullName","rootOptionName","_tryCreateItemOptionAction","itemPath","removeItemsByPathStartWith","_tryExecuteItemOptionAction","tryExecute","_updateValidationGroupAndSummaryIfNeeded","getOptionNameFromFullName","_setLayoutManagerItemOption","getKeyByPath","postponedOperations","contentReadyHandler","isFullPathContainsTabs","tabPath","tryGetTabPath","tabLayoutManager","getGroupOrTabLayoutManagerByPath","_tryChangeLayoutManagerItemOption","nameParts","_getItemPath","endPartIndex","_itemPath","formItems","layoutManagerItems","_tryChangeLayoutManagerItemOptions","optionNameWithoutPath","simpleOptionName","itemAction","_changeItemOption","_generateItemsFromData","_updateFieldValue","_getItemByField","fieldParts","_getFieldParts","fieldPath","_getItemByFieldPath","subItemsField","_getSubItemField","isExpectedItem","separatorIndex","resultPath","isItemWithSubItems","isGroupWithName","nameWithoutSpaces","getTextWithoutSpaces","pathNode","_searchItemInEverySubItem","currentScreenFactor","_isColCountChanged","oldScreenSize","newScreenSize","isChanged","itemRunTimeInfo","resetGroup","isComplexData","resetValues","findWidgetInstanceByDataField","findWidgetInstanceByName","getItemPath","allowUpdateItems","validateGroup","getItemID","getTargetScreenFactor","factory","installedModules","__webpack_require__","moduleId","toStringTag","ns","__importDefault","mod","fast_diff_1","lodash_clonedeep_1","lodash_isequal_1","AttributeMap_1","Op_1","NULL_CHARACTER","Delta","newOp","lastOp","chop","predicate","passed","failed","changeLength","Infinity","hasNext","nextOp","compose","other","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","length_1","thisOp","otherOp","rest","strings","retDelta","diffResult","opLength","INSERT","DELETE","EQUAL","eachLine","newline","baseIndex","length_2","transformPosition","length_3","length_4","nextType","Op","AttributeMap","__webpack_exports__","globalRegistry","expandConfig","overload","Quill","quill_delta__WEBPACK_IMPORTED_MODULE_0__","quill_delta__WEBPACK_IMPORTED_MODULE_0___default","lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1__","lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1___default","lodash_merge__WEBPACK_IMPORTED_MODULE_2__","lodash_merge__WEBPACK_IMPORTED_MODULE_2___default","parchment__WEBPACK_IMPORTED_MODULE_3__","_editor__WEBPACK_IMPORTED_MODULE_4__","_emitter__WEBPACK_IMPORTED_MODULE_5__","_module__WEBPACK_IMPORTED_MODULE_6__","_selection__WEBPACK_IMPORTED_MODULE_7__","_instances__WEBPACK_IMPORTED_MODULE_8__","_logger__WEBPACK_IMPORTED_MODULE_9__","_theme__WEBPACK_IMPORTED_MODULE_10__","debug","uiClass","classList","addContainer","scrollingContainer","ScrollBlot","scroll","addModule","clipboard","history","uploader","EDITOR_CHANGE","TEXT_CHANGE","SCROLL_UPDATE","mutations","oldRange","lastRange","newRange","selectionInfo","modify","setContents","disable","allowReadOnlyEdits","limit","imports","overwrite","attrName","refNode","setRange","_overload2","enable","modifier","sources","API","BLOCK","formatLine","formatText","SILENT","_overload4","_overload6","containerBounds","_overload7","_overload8","blot","leaf","MAX_VALUE","_overload9","_overload10","getHTML","_overload11","_overload12","getText","embed","_overload14","_this$emitter","_this$emitter2","_this$emitter3","once","_overload16","removeFormat","delete1","applied","applyDelta","delete2","_overload18","USER","userConfig","themeConfig","moduleConfig","moduleClass","querySelector","shiftRange","_this$emitter4","_this$emitter5","emit","_map2","_map4","parchment","Scope","abstract_parent","blot_embed","blot_scroll","block","inline","blot_text","attributor","attributor_class","src_scope","_extendStatics","linked_list","LinkedList","curNode","ret","inclusive","forEachAt","_a","startNode","curIndex","curLength","memo","__extends","ParchmentError","Registry","blots","blotClass","Node","TEXT_NODE","scope","ANY","Text","LEVEL","INLINE","HTMLElement","definitions","definition","tagNames","ShadowBlot","attach","isolate","formatAt","BLOT","wrap","ATTRIBUTE","statics","insertAt","def","_context","requiredContainer","replacement","_force","_mutations","parent_extends","makeAttachedBlot","replaceChild","ParentBlot","uiNode","build","attachUI","childLength","descendant","descendants","lengthLeft","childIndex","enforceAllowedChildren","allowedChildren","BLOCK_BLOT","splitAfter","unwrap","childBlot","refBlot","refDomNode","nextSibling","moveChildren","targetParent","defaultChild","_length","addedNodes","removedNodes","mutation","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","container_extends","ContainerBlot","checkMerge","leaf_extends","LeafBlot","_domNode","_inclusive","INLINE_BLOT","Attributor","attributeBit","canAdd","_node","class_extends","class_match","ClassAttributor","style_extends","StyleAttributor","AttributorStore","inline_extends","InlineBlot","obj1","obj2","isEqual","block_extends","BlockBlot","embed_extends","EmbedBlot","_scroll","scroll_extends","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","MutationObserver","observe","disconnect","mutationsMap","records","takeRecords","markParent","remaining","previousSibling","grandChild","text_extends","TextBlot","splitText","eventemitter3__WEBPACK_IMPORTED_MODULE_0__","eventemitter3__WEBPACK_IMPORTED_MODULE_0___default","_utils_hasWindow__WEBPACK_IMPORTED_MODULE_1__","_instances__WEBPACK_IMPORTED_MODULE_2__","_logger__WEBPACK_IMPORTED_MODULE_3__","_quill$emitter","handleDOM","Emitter","_EventEmitter","listeners","_debug$log","_get2","SCROLL_BEFORE_UPDATE","SCROLL_BLOT_MOUNT","SCROLL_BLOT_UNMOUNT","SCROLL_OPTIMIZE","SELECTION_CHANGE","lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0__","lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0___default","lodash_isequal__WEBPACK_IMPORTED_MODULE_1__","lodash_isequal__WEBPACK_IMPORTED_MODULE_1___default","quill_delta__WEBPACK_IMPORTED_MODULE_3__","quill_delta__WEBPACK_IMPORTED_MODULE_3___default","parchment__WEBPACK_IMPORTED_MODULE_4__","_selection__WEBPACK_IMPORTED_MODULE_5__","_blots_cursor__WEBPACK_IMPORTED_MODULE_6__","_blots_block__WEBPACK_IMPORTED_MODULE_7__","_blots_break__WEBPACK_IMPORTED_MODULE_8__","_blots_text__WEBPACK_IMPORTED_MODULE_9__","_toArray","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","normalizedDelta","normalizeDelta","_this$scroll$line2","batchEnd","leaves","combineFormats","_this$scroll$line4","lineOffset","convertHTML","_this$scroll$line6","suffixLength","suffix","textBlot","_formats","CONTENTS","oldText","relativeSelectionInfo","diffDelta","convertListHTML","lastIndent","_endTag","getListType","_items$","_getListType4","previousType","endTag","handleBreakLine","_blot$domNode","outerHTML","_outerHTML$split","_outerHTML$split2","linkedList","combined","merged","hasAttributes","attributesString","getBlotNodeAttributes","amount","blockDelta","bubbleFormats","BlockEmbed","Block","parchment__WEBPACK_IMPORTED_MODULE_1__","_break__WEBPACK_IMPORTED_MODULE_2__","_inline__WEBPACK_IMPORTED_MODULE_3__","_text__WEBPACK_IMPORTED_MODULE_4__","_BlockBlot","lineIndex","_EmbedBlot","BLOCK_ATTRIBUTE","Selection","parchment__WEBPACK_IMPORTED_MODULE_0__","lodash_isequal__WEBPACK_IMPORTED_MODULE_2__","lodash_isequal__WEBPACK_IMPORTED_MODULE_2___default","_emitter__WEBPACK_IMPORTED_MODULE_3__","_logger__WEBPACK_IMPORTED_MODULE_4__","composing","mouseDown","savedRange","lastNative","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","_startNode","endNode","nativeRange","collapsed","_this$scroll$leaf","_this$scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_this$scroll$leaf3","_this$scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","rangeCount","getRangeAt","normalizeNative","normalized","normalizedToRange","startContainer","endContainer","_this5$scroll$leaf2","leafOffset","_leaf$position6","scrollBounds","removeAllRanges","rangeToNative","_this$getRange","_this$getRange2","escapeText","_TextBlot","Break","_break__WEBPACK_IMPORTED_MODULE_1__","_text__WEBPACK_IMPORTED_MODULE_2__","Inline","_InlineBlot","selfIndex","otherIndex","Module","global","argsTag","funcTag","genTag","mapTag","setTag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","addMapEntry","addSetEntry","arrayReduce","iteratee","initAccum","isHostObject","mapToArray","overArg","setToArray","uid","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","Buffer","getPrototype","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","Set","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entries","entry","ListCache","MapCache","Stack","__data__","arrayLikeKeys","inherited","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","assignValue","objValue","assocIndexOf","baseClone","isDeep","isFull","customizer","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","isPrototype","initCloneObject","copyObject","getSymbols","copySymbols","baseAssign","cloneFunc","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","typedArray","cloneTypedArray","cloneMap","cloneRegExp","cloneSet","initCloneByTag","stacked","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getAllKeys","arrayEach","subValue","baseIsNative","arrayBuffer","getMapData","pairs","LARGE_ARRAY_SIZE","ArrayBuffer","ctorString","isLength","baseKeys","Code","CodeBlockContainer","CodeBlock","_blots_block__WEBPACK_IMPORTED_MODULE_0__","_blots_break__WEBPACK_IMPORTED_MODULE_1__","_blots_cursor__WEBPACK_IMPORTED_MODULE_2__","_blots_inline__WEBPACK_IMPORTED_MODULE_3__","_blots_text__WEBPACK_IMPORTED_MODULE_4__","_blots_container__WEBPACK_IMPORTED_MODULE_5__","_core_quill__WEBPACK_IMPORTED_MODULE_6__","_Container","_Block","_Inline","TAB","_core_emitter__WEBPACK_IMPORTED_MODULE_1__","_block__WEBPACK_IMPORTED_MODULE_2__","_break__WEBPACK_IMPORTED_MODULE_3__","_container__WEBPACK_IMPORTED_MODULE_4__","Scroll","_ScrollBlot","batch","handleDragStart","_this$line2","getLines","blotIndex","blotLength","newLevel","Container","_ContainerBlot","_text__WEBPACK_IMPORTED_MODULE_1__","Cursor","savedLength","mergedTextBlot","prevTextBlot","prevTextLength","nextTextBlot","nextText","newTextNode","remapOffset","blots_break","blots_embed","blots_scroll","blots_text","modules_history","Delta_default","core_module","uploader_Uploader","_Module","Uploader","addDragOverHandler","addDropHandler","caretRangeFromPoint","clientX","clientY","caretPositionFromPoint","offsetNode","uploads","mimetypes","imageBlot","updateContents","objectTag","typedArrayTags","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","nativeObjectToString","symToStringTag","SetCache","isArg","isBuff","isType","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","baseIsEqual","bitmask","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","isMasked","seen","arrValue","othIndex","resIndex","arrayFilter","baseUnary","it","globalThis","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","ColorAttributor","ColorClass","ColorStyle","_StyleAttributor","DirectionAttribute","DirectionClass","DirectionStyle","Keyboard","SHORTKEY","normalize","quill_delta__WEBPACK_IMPORTED_MODULE_2__","quill_delta__WEBPACK_IMPORTED_MODULE_2___default","_core_quill__WEBPACK_IMPORTED_MODULE_4__","_core_logger__WEBPACK_IMPORTED_MODULE_5__","_core_module__WEBPACK_IMPORTED_MODULE_6__","_utils_hasWindow__WEBPACK_IMPORTED_MODULE_7__","KEY_NAMES","KEY_CODES","handleEnter","handleBackspace","handleDelete","handleDeleteRange","evt","keyBinding","singleBinding","defaultPrevented","_this3$quill$getLine2","getLine","_this3$quill$getLeaf2","getLeaf","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","curFormats","prevFormats","formatDelta","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","makeEmbedArrowHandler","makeFormatHandler","shortKey","makeTableArrowHandler","targetRow","targetCell","targetLine","outdent","cutoff","_this$quill$getLine10","_this$quill$getLine12","getModule","_module$getTable2","getTable","tableSide","_delta","blockquote","_this$quill$getLine14","_this$quill$getLine16","numLines","thisArg","objectCtorString","allocUnsafe","nativeMax","nativeNow","baseCreate","assignMergeValue","baseAssignValue","fromRight","baseFor","iterable","baseKeysIn","nativeKeysIn","isProto","baseMerge","srcIndex","srcValue","mergeFunc","safeGet","isCommon","isTyped","isNew","keysIn","toPlainObject","baseMergeDeep","baseRest","setToString","otherArgs","overRest","identity","lastCalled","stamp","shortOut","assigner","guard","isIterateeCall","AlignAttribute","AlignClass","AlignStyle","Link","_sanitize","sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","BackgroundClass","BackgroundStyle","_color__WEBPACK_IMPORTED_MODULE_1__","FontStyle","FontClass","FontStyleAttributor","SizeClass","Bold","History","getLastChangeIndex","_core_quill__WEBPACK_IMPORTED_MODULE_1__","_core_module__WEBPACK_IMPORTED_MODULE_2__","_utils_hasWindow__WEBPACK_IMPORTED_MODULE_3__","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","inverseDelta","changeDelta","undoDelta","maxStack","transformStack","remoteDelta","deleteLength","changeIndex","endsWithNewlineChange","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","Theme","ModuleClass","fails","Embed","contentNode","leftGuard","rightGuard","prevLength","Clipboard","traverse","_blots_block__WEBPACK_IMPORTED_MODULE_2__","_core_quill__WEBPACK_IMPORTED_MODULE_3__","_core_logger__WEBPACK_IMPORTED_MODULE_4__","_core_module__WEBPACK_IMPORTED_MODULE_5__","_formats_align__WEBPACK_IMPORTED_MODULE_6__","_formats_background__WEBPACK_IMPORTED_MODULE_7__","_formats_code__WEBPACK_IMPORTED_MODULE_8__","_formats_color__WEBPACK_IMPORTED_MODULE_9__","_formats_direction__WEBPACK_IMPORTED_MODULE_10__","_formats_font__WEBPACK_IMPORTED_MODULE_11__","_formats_size__WEBPACK_IMPORTED_MODULE_12__","CLIPBOARD_CONFIG","isPre","preNodes","replacer","collapse","replaced","matchNewline","deltaEndsWith","applyFormat","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","strike","textIndent","composed","language","matchAlias","onCaptureCopy","onCapturePaste","matchers","matcher","addMatcher","nodeMatches","_this$prepareMatching","prepareMatching","_this$prepareMatching2","elementMatchers","textMatchers","paste","_this$quill$selection","_this$quill$selection2","_this$onCopy","onCopy","raiseCallback","onPaste","getSemanticHTML","pastedDelta","_pair","endText","ELEMENT_NODE","childrenDelta","reducedDelta","webpackPolyfill","bitmap","createNonEnumerableProperty","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","toInteger","SyntaxCodeBlock","Syntax","_blots_inline__WEBPACK_IMPORTED_MODULE_2__","_core_module__WEBPACK_IMPORTED_MODULE_4__","_blots_block__WEBPACK_IMPORTED_MODULE_5__","_blots_break__WEBPACK_IMPORTED_MODULE_6__","_blots_cursor__WEBPACK_IMPORTED_MODULE_7__","_blots_text__WEBPACK_IMPORTED_MODULE_8__","_formats_code__WEBPACK_IMPORTED_MODULE_9__","_clipboard__WEBPACK_IMPORTED_MODULE_10__","_utils_hasWindow__WEBPACK_IMPORTED_MODULE_11__","TokenAttributor","CodeToken","_CodeBlock","SyntaxCodeBlockContainer","_CodeBlockContainer","forceNext","emitMount","_highlight","cachedText","codeBlock","hljs","languages","highlightBlot","initListener","initTimer","highlight","timer","nodeText","PREFERRED_STRING","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","IndexedObject","requireObjectCoercible","Iterator_1","Events","EE","_eventsCount","clearEvent","EventEmitter","handlers","ee","listenerCount","a1","a2","a3","a4","a5","removeAllListeners","prefixed","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","wmget","wmhas","wmset","metadata","STATE","enforce","getterFor","functionToString","inspectSource","EXISTS","IS_PURE","copyright","postfix","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","aFunction","variable","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","wellKnownSymbol","ITERATOR","BUGGY_SAFARI_ITERATORS","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","activeXDocument","enumBugKeys","documentCreateElement","EmptyConstructor","scriptTag","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","parentWindow","NullProtoObjectViaActiveX","Properties","TO_STRING_TAG","TAG","CONSTRUCTOR","METHOD","_ClassAttributor","IndentAttributor","blockquote_typeof","blockquote_classCallCheck","blockquote_setPrototypeOf","blockquote_createSuper","blockquote_isNativeReflectConstruct","blockquote_getPrototypeOf","blockquote_possibleConstructorReturn","blockquote_assertThisInitialized","Blockquote","blockquote_inherits","header_typeof","header_classCallCheck","header_defineProperties","header_setPrototypeOf","header_createSuper","header_isNativeReflectConstruct","header_getPrototypeOf","header_possibleConstructorReturn","header_assertThisInitialized","Header","header_inherits","list_defineProperties","list_createClass","list_get","list_getPrototypeOf","list_superPropBase","list_typeof","list_classCallCheck","list_inherits","list_setPrototypeOf","list_createSuper","list_isNativeReflectConstruct","list_possibleConstructorReturn","list_assertThisInitialized","ListContainer","list_ListItem","ListItem","ui","listEventHandler","italic_typeof","italic_classCallCheck","italic_setPrototypeOf","italic_createSuper","italic_isNativeReflectConstruct","italic_getPrototypeOf","italic_possibleConstructorReturn","italic_assertThisInitialized","Italic","_Bold","italic_inherits","formats_link","script_typeof","script_classCallCheck","script_defineProperties","script_get","script_getPrototypeOf","script_superPropBase","script_setPrototypeOf","script_createSuper","script_isNativeReflectConstruct","script_possibleConstructorReturn","script_assertThisInitialized","Script","script_inherits","strike_typeof","strike_classCallCheck","strike_setPrototypeOf","strike_createSuper","strike_isNativeReflectConstruct","strike_getPrototypeOf","strike_possibleConstructorReturn","strike_assertThisInitialized","Strike","strike_inherits","underline_typeof","underline_classCallCheck","underline_setPrototypeOf","underline_createSuper","underline_isNativeReflectConstruct","underline_getPrototypeOf","underline_possibleConstructorReturn","underline_assertThisInitialized","Underline","underline_inherits","formula_typeof","formula_classCallCheck","formula_defineProperties","formula_get","formula_getPrototypeOf","formula_superPropBase","formula_setPrototypeOf","formula_createSuper","formula_isNativeReflectConstruct","formula_possibleConstructorReturn","formula_assertThisInitialized","formula_Formula","formula_inherits","Formula","katex","throwOnError","errorColor","formula","image_typeof","image_classCallCheck","image_defineProperties","image_get","image_getPrototypeOf","image_superPropBase","image_setPrototypeOf","image_createSuper","image_isNativeReflectConstruct","image_possibleConstructorReturn","image_assertThisInitialized","ATTRIBUTES","image_Image","image_inherits","execCommand","formats_image","video_typeof","video_classCallCheck","video_defineProperties","video_get","video_getPrototypeOf","video_superPropBase","video_setPrototypeOf","video_createSuper","video_isNativeReflectConstruct","video_possibleConstructorReturn","video_assertThisInitialized","video_ATTRIBUTES","video_Video","_BlockEmbed","video_inherits","Video","video","syntax","table_typeof","table_classCallCheck","table_defineProperties","table_createClass","table_get","table_getPrototypeOf","table_superPropBase","table_inherits","table_setPrototypeOf","table_createSuper","table_isNativeReflectConstruct","table_possibleConstructorReturn","table_assertThisInitialized","TableCell","tableId","TableRow","thisHead","thisTail","nextHead","nextTail","childFormats","TableBody","_Container2","TableContainer","_Container3","maxColumns","modules_table_typeof","table_slicedToArray","table_arrayWithHoles","table_iterableToArrayLimit","table_arrayLikeToArray","table_unsupportedIterableToArray","table_nonIterableRest","modules_table_classCallCheck","modules_table_defineProperties","modules_table_createClass","modules_table_setPrototypeOf","modules_table_createSuper","modules_table_isNativeReflectConstruct","modules_table_getPrototypeOf","modules_table_possibleConstructorReturn","modules_table_assertThisInitialized","modules_table","modules_table_inherits","listenBalanceCells","balanceCells","_this$getTable2","deleteColumn","cellOffset","_this$quill$getLine","_this$quill$getLine2","_this$getTable8","insertColumn","_this$getTable10","insertRow","balanceTables","old","diff_main","text1","text2","cursor_pos","_fix_unicode","editdiff","oldCursor","oldBefore","oldAfter","maybeNewCursor","newCursor","newBefore","newAfter","prefixLength","oldPrefix","newPrefix","oldMiddle","newMiddle","make_edit_splice","oldSuffix","newSuffix","find_cursor_edit_diff","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","longtext","shorttext","hm","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","best_common","text1_a","text1_b","text2_a","text2_b","hm1","hm2","mid_common","diff_halfMatch_","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1_offset","k2_offset","diff_bisectSplit_","diff_bisect_","diff_compute_","diff_cleanupMerge","fix_unicode","count_delete","count_insert","text_delete","text_insert","previous_equality","ends_with_pair_start","stray","starts_with_pair_end","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","is_surrogate_pair_start","pointerend","is_surrogate_pair_end","tuples","remove_empty_tuples","keepNull","baseInverted","Iterator","retOp","defineIterator","setInternalState","iterated","createMethod","CONVERT_TO_STRING","$this","codeAt","$","createIteratorConstructor","setToStringTag","Iterators","IteratorsCore","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","nativePropertyIsEnumerable","NASHORN_BUG","V","classof","getOwnPropertyDescriptorModule","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","internalObjectKeys","toLength","toAbsoluteIndex","IS_INCLUDES","includes","feature","detection","POLYFILL","NATIVE","objectKeys","aPossiblePrototype","CORRECT_SETTER","checkCorrectnessOfIteration","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","argumentsLength","mapfn","mapping","iteratorMethod","ENTRIES","returnMethod","ArrayPrototype","propertyKey","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","entryUnbind","addToUnscopables","endPos","UNSCOPABLES","notARegExp","correctIsRegExpLogic","nativeEndsWith","CORRECT_IS_REGEXP_LOGIC","isRegExp","MATCH","METHOD_NAME","_markup","_imageArray","_imageDeferreds","_getBinaryFile","_loadImages","binary","_parseImages","_prepareImages","$svgObject","dataURI","regexpString","_toolbar","_widget_collector","ToolbarModule","TABLE_OPERATIONS","HEADING_TEXT","NORMAL_TEXT","_toolbarWidgets","_formatHandlers","_getFormatHandlers","_addCallbacks","isSelectionChanged","_updateToolbar","formatArgs","_this$quill","addContentInitializedCallback","updateHistoryWidgets","updateFormatWidgets","updateTableWidgets","formatName","_applyFormat","_updateFormatWidget","isApplied","getByName","_markActiveFormatWidget","_resetFormatWidget","_toggleClearFormatting","_prepareLinkHandler","_prepareImageHandler","_prepareColorClickHandler","orderedList","_prepareShortcutHandler","bulletList","alignLeft","alignCenter","alignRight","alignJustify","_getDefaultClickHandler","increaseIndent","decreaseIndent","superscript","subscript","insertTable","_prepareInsertTableHandler","insertRowAbove","_getTableOperationHandler","insertRowBelow","insertColumnLeft","insertColumnRight","deleteRow","deleteTable","shortcutValue","hasEmbedContent","_hasEmbedContent","formDialogOption","showFormDialog","_getLinkFormItems","isUpdateDialog","defaultIndex","_defaultPasteIndex","formatIndex","_embedFormatIndex","_imageFormItems","_insertTableFormItems","_$toolbar","_$toolbarContainer","toolbarInstance","toolbarConfig","_ref7","isInteractionDisabled","_this$options$multili","_handleObjectItem","buttonItemConfig","_prepareButtonItemConfig","_getToolbarItem","formatValues","_isAcceptableItem","selectItemConfig","_prepareSelectItemConfig","defaultButtonItemConfig","acceptableWidgetName","buttonText","_isReset","_setValueSilent","baseItem","multilineItem","isMultilineMode","_getDefaultConfig","_getDefaultItemsConfig","historyModule","_historyModule$stack","undoOps","redoOps","_updateManipulationWidget","_this$quill$getFormat","isTableOperationsEnabled","isInsertTable","isOperationEnabled","hasFormats","_resetFormatWidgets","_getFormatWidgetName","formatWidget","_isColorFormat","_updateColorWidget","clearWidget","_prepareToolbarItems","menuContainer","DRAGSTART_START_EVENT_NAME","DRAGSTART_END_EVENT_NAME","SIDE_BORDER_WIDTH_STYLES","Resizable","handles","stepPrecision","onResizeStart","onResizeEnd","roundStepValue","_renderHandles","_renderActions","_resizeStartAction","_resizeEndAction","_resizeAction","_handles","handleName","RESIZABLE_HANDLE_CLASS","_dragHandler","handleElement","_toggleEventHandlers","shouldAttachEvents","_toggleResizingClass","_movingSides","_getMovingSides","_elementLocation","elementRect","_elementSize","_renderDragOffsets","handleWidth","_getAreaScrollOffset","sides","_getOffset","_renderWidth","_renderHeight","steps","strictPrecision","_getStrictOffset","_getSimpleOffset","xPos","yPos","newXShift","newYShift","separatorOffset","isSmallOffset","newOffsetX","newOffsetY","hasCornerTopLeftClass","RESIZABLE_HANDLE_CORNER_CLASS","hasCornerTopRightClass","hasCornerBottomLeftClass","hasCornerBottomRightClass","_getAreaFromObject","_getAreaFromElement","areaElement","_correctAreaGeometry","areaBorderLeft","areaBorderTop","eventsMap","callbackGetter","triggers","triggerEvent","eventInfo","ScrollViewScroller","Scroller","_refreshPullDownText","pullDownTextItems","_$pullingDownText","visibleState","_$pulledDownText","_$refreshingText","considerPockets","_bottomBound","_minOffset","_updateScrollbar","_scrollbar","_containerSize","_getScaleRatio","_moveContent","_pullDownReady","_reachBottomReady","_moveScrollbar","_scrollComplete","_inBounds","_reachBottomLoading","_getMinOffset","_getMaxOffset","_maxOffset","_releaseHandler","_moveToBounds","_releaseTask","_release","_reachBottomEnablingHandler","_pullDownEnablingHandler","_considerTopPocketChange","_updateHandler","_pendingReleaseHandler","SimulatedStrategy","$image","_$pullDownText","_eventHandler","_createScroller","scroller","_scrollers","_scrollerOptions","$topPocket","$bottomPocket","$pullDown","$pullDownText","$pullingDownText","$pulledDownText","$refreshingText","initRender","dxRenderer","repeatMethod","setAttributeValue","setProperty","classNames","partialName","isOuter","isInner","borders","elementStyles","sizeAdjustment","getElementBoxParams","isBorderBox","boxSizing","appendElements","setCss","normalizeStyleProp","removeElement","elementId","queryId","getClientRects","parentChildNodes","emptyArray","getWindowByElement","defaultView","docElem","clientTop","clientLeft","offsetParent","parentOffset","offsetProp","scrollWindow","directionStrategy","rendererWrapper","MAX_SAFE_INTEGER","isRowClick","isKeyboardEnabled","_isFocusedRowInsideGroup","_getGroupPath","groupPath","_expandGroupByPath","isGroupKey","_grouping","_calculateExpandedRowGlobalIndex","dataOffset","groupContinuationCount","commonColumnSettings","viz","initMasterDetail","masterDetail","_getExpandColumnsCore","expandColumns","_expandedItems","_isExpandAll","expandAll","collapseAll","_getRowIndicesForExpand","_processDataItem","detailColumnIndex","_processItems","isEnabledChanged","isAutoExpandAllChanged","fireContentReadyAction","_updateParentDataGrids","$masterDetailRow","_updateMasterDataGrid","$detailElement","masterRowOptions","masterDataGrid","_updateFixedMasterDetailGrids","masterRowIndex","detailElementWidth","isDetailHorizontalScrollCanBeShown","isDetailGridWidthChanged","$rowsTable","isEditRow","_isDetailRow","currencyPart","_local_store","_xmla_store","DESCRIPTION_NAME_BY_AREA","STATE_PROPERTIES","CALCULATED_PROPERTIES","ALL_CALCULATED_PROPERTIES","resetFieldState","initialProperties","_initProperties","updateCalculatedFieldProperties","calculatedProperties","createCaption","isDataExists","findHeaderItem","headerItems","_cacheByPath","getHeaderItemsLastIndex","headerItem","collapsedChildren","updateHeaderItemChildren","applyingHeaderItemsCount","emptyIndex","applyingItemIndexesToCurrent","needIndexUpdate","foreachTreeAsync","updateHeaderItems","newHeaderItems","createPath","parentItems","updateDataSourceCells","newDataSourceCells","newRowItemIndexesToCurrent","newColumnItemIndexesToCurrent","newRowIndex","newColumnIndex","newRowCells","newCell","dataSourceCells","createLocalOrRemoteStore","onLoadingChanged","getExpandedPaths","prevLoadOptions","prevFields","equalFields","setFieldProperties","srcField","skipInitPropertySave","getFieldsState","getFieldStateId","getFieldsById","setFieldsState","stateFields","fieldsById","setFieldsStateCore","sortFieldsByAreaIndex","field1","field2","areaIndex","getFieldId","retrieveFieldsOptionValue","mergeFields","storeFields","fieldsDictionary","removedFields","getFieldsDataType","mergedField","fieldKey","storeField","maxGroupIndex","assignGroupIndexes","mergedFields","_fields","_storeFields","_retrieveFields","formatHeaderItems","formatHeaders","updateCache","cacheByPath","_getAreaFields","areaFields","canAddFieldInArea","isAreaField","createStore","_isFieldsModified","retrieveFields","_descriptions","_createDescriptions","getAreaFields","collectGroups","_fieldsPrepared","findField","isInitialization","getFieldValues","applyFilters","loadFields","sortBySummaryField","_sort","_loadCore","currentField","areaName","normalizeIndexes","groupingField","sortBySummaryPath","showTotals","showGrandTotals","getFieldsByGroup","calculateSummaryValue","createMockSummaryCell","currentFieldState","skipLoading","_hasPagingValues","oppositeIndex","takeField","skipField","oppositeArea","_headerItem","_processPagingCacheByArea","_headerItem2","_processPagingCache","applyPartialDataSource","mergePartialDataSource","getAscOrder","expressionsUsed","summaryDisplayMode","areExpressionsUsed","applyDisplaySummaryMode","runningTotal","isRunningTotalUsed","applyRunningTotal","collapseHeaderItem","dataChanged","areaOffsets","expandHeaderItem","hasCache","needExpandData","oppositeHeaderItem","oppositeHeaderItems","delayedLoadTask","_isDisposed","isDisposed","countable","ArrayIterator","WrappedIterator","MapIterator","defaultCompare","SortIterator","_wrap","sortedIter","_ensureSorted","_compare","_unwrap","wrappedItem","xIndex","yIndex","rulesCount","compareResult","compileCriteria","compileEquals","negate","useStrictComparison","isConjunctiveNextOperator","compileGroup","compileUnary","getterValue","compileBinary","FilterIterator","GroupIterator","_ensureGrouped","groupedIter","SelectIterator","SliceIterator","arrayQueryImpl","handleError","aggregateCore","standardAggregate","chainQuery","selectProp","_data_helper","POPUP_OPTION_MAP","popupMaxHeight","popupAutoResizeEnabled","BUTTON_OPTION_MAP","buttonWidth","buttonHeight","buttonTemplate","DropDownMenu","extension","onButtonClick","popupAnimation","menuWidget","closeOnClick","_initButtonClickAction","_buttonClickAction","_buttonOptions","_toggleMenuVisibility","_popupOptions","usePopup","_listOptions","listMaxHeight","_itemAttributes","_deferRendering","validationRequestsCallbacks","getCurrentValidationError","bypass","applyValidationResults","_showTooltipCallback","_tooltipEvent","data_target","data_info","_targetEvent","_tooltipTarget","_hideTooltipCallback","_hideTooltipTimeout","deactivate","activate","setTooltipState","handleTooltipMouseOver","handleTooltipMouseOut","handleTooltipTouchStart","handleTooltipTouchEnd","handleTooltipMouseWheel","setCallbacks","active_touch_tooltip_tracker","_touch","handleDocumentTooltipTouchStart","_isDefined","_isDate","_isFunction","otherLessThan","thisValue","otherValue","otherGreaterThan","compareAndReplace","otherValueDefined","_Range","otherRange","otherCategories","compareAndReplaceByField","controlValuesByVisibleBounds","visibleValueField","checkField","correctValueZeroLevel","setZeroLevel","sortValues","filteredSeriesCategories","notAFunction","_proxy_url_formatter","IS_WINJS_ORIGIN","IS_LOCAL_ORIGIN","EndpointSelector","hostname","urlFor","bag","isProxyUsed","formatProxyUrl","local","production","Debug","debuggerEnabled","_export_data_grid","attributeName","attributeValue","SchedulerAgenda","_recalculateAgenda","_$groupTable","_initGroupTable","_detachGroupCountAttr","_$timePanel","_getTimePanelClass","_getDateTableClass","cellTemplates","_cleanView","_rowsIsEmpty","_renderNoData","_setGroupHeaderCellsHeight","_$noDataContainer","_getGroupHeaderCells","_removeEmptyRows","_getGroupRowHeight","getGroupHeaderContentClass","makeGroupedTableFromJSON","cellTag","groupTableClass","groupCellClass","groupCellCustomContent","cellText","contentWrapper","_createWorkSpaceStaticElements","_renderTableBody","rowClass","_getDateTableCellClass","groupsOpt","_getPathToLeaf","resourceIndex","cellTemplateOpt","_$rows","fillTableBody","rowSize","cellDateNumber","cellDayName","$td","_getRowHeight","getStartDate","_prepareCellTemplateOptions","_setLastRowClass","_getTimePanelRowCount","_getTimePanelStartDate","baseHeight","getVisibleBounds","startDateHour","startDateMinutes","needUpdateScrollPosition","scrollToTime","isUpdateNeeded","weakMap","_disposeDataSource","_loadDataSource","widgetDataSourceOptions","dataSourceType","_isSharedDataSource","_dataSourceType","_addDataSourceHandlers","_addDataSourceChangeHandler","_addDataSourceLoadErrorHandler","_addDataSourceLoadingChangedHandler","_addReadyWatcher","_ready","_proxiedDataSourceChangedHandler","_proxiedDataSourceLoadErrorHandler","_proxiedDataSourceLoadingChangedHandler","_loadSingle","_isDataSourceLoading","_utilsTimeZone","DBLCLICK_EVENT_NAME","SchedulerAppointments","_escPressed","_getAccessAppointments","$nextAppointment","_getAppointmentByIndex","_resetTabIndex","_moveFocus","_$currentAppointment","_focusOutHandler","_eventBindingTarget","fixedContainer","allDayContainer","allowResize","allowAllDayResize","onAppointmentDblClick","_collectorOffset","_clearDropDownItems","_clearDropDownItemsElements","_repaintAppointments","_renderDropDownAppointments","_attachAppointmentsEvents","_isAllDayAppointment","_isRepaintAppointment","_isRepaintAll","_applyFragment","fragment","_onEachAppointment","isRepaintAll","needRemove","_clearItem","_renderByFragments","$commonFragment","$allDayFragment","_cleanItemContainer","renderFunction","_attachAppointmentDblClick","_attachFeedbackEvents","_findItemElementByItem","_virtualAppointments","$allDayContainer","_initialSize","_initialCoordinates","_preventSingleAppointmentClick","_renderAppointmentTemplate","$contentDetails","RECURRING_ICON_CLASS","_executeItemRenderAction","_getItemRenderAction","_currentAppointmentSettings","_processItemClick","_appointmentClickTimeout","_itemSelector","_itemDXEventHandler","_dblClickHandler","$targetAppointment","setting","_getItemContent","_renderAppointment","_applyResourceDataAttr","skipResizing","deferredColor","_getAppointmentColor","_processVirtualAppointment","reduced","isCompact","resizableConfig","_resizableConfig","itemSetting","updatedArea","_resizeEndHandler","modifiedAppointmentAdapter","_getEndResizeAppointmentStartDate","_getDateRange","appointmentInfo","recurrenceProcessor","isRecurrent","isValidRecurrenceRule","appointmentTimeZone","deltaTime","renderingStrategyDirection","needCorrectDates","_correctStartDateByDelta","_correctEndDateByDelta","daysCount","tailOfPrevDays","lastDay","firstDay","_tryGetAppointmentColor","_calculateBoundOffset","appointmentSetting","virtualAppointment","virtualGroupIndex","colors","buttonColor","virtualGroup","virtualCoordinates","$fragment","onAppointmentClick","_isGroupCompact","applyOffset","secondDate","skipLongAppointments","dates","recurrentDates","generateDates","recurrentDateCount","appointmentPart","_applyStartDateToObj","_applyEndDateToObj","splitAppointmentByDay","partCount","recurrenceIndexes","isDeferred","endDateTimeZone","maxAllowedDate","_checkStartDate","_checkEndDate","originalDate","_useSimulatedScrollbar","_showScrollbar","_isLocked","_isDirection","_allowedDirection","_renderPushBackOffset","SCROLLABLE_NATIVE_CLASS","_renderScrollbars","_lastPushBackValue","paddingTop","paddingBottom","_scrollbars","_hideScrollbarTimeout","_renderScrollbar","handleStart","_disablePushBack","handleCancel","_eachScrollbar","scrollbar","createActions","_createActionArgs","containerElement","_eventForUserAction","reachedLeft","reachedRight","reachedTop","_updateRtlConfig","_isScrollLocationChanged","_moveScrollbars","_lastLocation","_pushBackFromBoundary","stopImmediatePropagation","lastLocation","isTopChanged","isLeftChanged","_hideScrollbars","disabledChanged","_updateScrollbars","_componentContentSize","scrollableNativeRegexp","_removeScrollbars","_isScrolledInMaxDirection","_funnel","ConverterController","_converters","_uiToolbar","_getMenuItemTemplate","_hasVisibleMenuItems","_menuWidgetClass","_menuContainer","_widgetOptions","_$button","_menuButtonOptions","_toggleMenu","_menuShown","SelectBox","clearSelectBox","_isEditable","_valueSubstituted","_savedTextRemoveEvent","_preventSubstitution","searchIfNeeded","_cleanInputSelection","_wasSearch","_setNextValue","_cancelEditing","isOpened","inputText","isCustomText","onCustomItemCreating","customItem","showSelectionControls","allowClearing","displayCustomValue","_initCustomItemCreatingAction","_focusListElement","_focusSelectedElement","$listItems","_isCustomItemSelected","_renderFocusedElement","_preventInputValueRender","_renderInputValueAsync","_renderInputValueImpl","_setNextItem","hasPages","isLastItem","_loadNextPage","isUnknownItem","_getSelectionChangeHandler","onFocusedItemChanged","_listFocusedItemChangeHandler","focusedItem","addedItem","_getActualSearchValue","_restoreInputText","showDataImmediately","_isValueEqualInputText","initialSelectedItem","saveEditingValue","_clearTextValue","newSelectedItem","_preventNestedFocusEvent","isOverlayTarget","_isOverlayNestedTarget","_renderValueChangeEvent","$listFocused","_shouldCloseOnItemClick","_shouldClearFilter","_completeSelection","selectedItemText","_isValueChanging","_customItemAddedHandler","_customItemCreatingAction","_createCustomItem","actionResult","_setCustomItem","_clearValueHandler","_wasSearchValue","_renderInputSubstitution","isAllSelected","inputHasSelection","_shouldSubstitutionBeRendered","inputElement","barSeries","_applyMarkerClipRect","_forceClipping","_paneClipRectID","_widePaneClipRectID","_updatePointsVisibility","_getOptionsForPoint","_createErrorBarGroup","_setMarkerGroupSettings","markersGroup","_createPointStyles","_getMarkerGroupOptions","defaultStyle","defaultPositiveStyle","positive","reductionStyle","reductionPositiveStyle","reductionPositive","markerSettings","_getCreatingPointOptions","defaultPointOptions","creatingPointOptions","_predefinedPointOptions","_getPointOptions","_checkData","skippedFields","getValueFields","openValue","closeValue","_getPointDataSelector","prevLevelValue","openValueField","highValueField","lowValueField","closeValueField","reductionValue","isReduction","_processEmptyValue","getTagField","_parsePointStyle","innerColor","_getDefaultStyle","mainPointColor","_getReductionStyle","reductionColor","pointOptions","positiveStyle","_endUpdateData","_defaultAggregator","_aggregators","ohlc","_patchMarginOptions","openY","closeY","lowY","highY","markerOptions","routeOptions","_applyFunctionIfNeeded","updateMarkers","markerOptionsToRemove","markerOptionsToAdd","removeValue","updateRoutes","routeOptionsToRemove","routeOptionsToAdd","providerName","isShown","numericRegex","fnName","actionArguments","excelCreator","_checkZipState","_jszip","XML_TAG","OPEN_XML_FORMAT_URL","VALID_TYPES","EXCEL_START_TIME","UNSUPPORTED_FORMAT_MAPPING","quarterAndYear","_getXMLTag","_convertToExcelCellRef","zeroBasedRowIndex","zeroBasedCellIndex","isCellIndexFound","columnName","_convertToExcelCellRefAndTrackMaxIndex","_maxRowIndex","_maxColumnIndex","_getDataType","_tryGetExcelCellDataType","boolean","_formatObjectConverter","_tryConvertToExcelNumberFormat","newFormat","_appendString","_stringHash","_stringArray","_tryGetExcelDateValue","_prepareValue","_dataProvider","_callCustomizeExcelCell","sourceData","styleCopy","copyCellFormat","clearStyle","fillPatternType","fillPatternColor","newStyle","_getDataArray","cellsArray","rowsLength","styleArrayIndex","cellStyleId","_styleArrayIndexToCellStyleIdMap","modifiedExcelCell","_styleArray","cellDataType","excelDateValue","_excelFile","registerCellFormat","_needSheetPr","_calculateWidth","pixelsWidth","_prepareStyleData","_colsArray","fonts","_prepareCellData","_cellsArray","_createXMLRelationships","xmlRelationships","_createXMLRelationship","_getWorkbookContent","_getContentTypesContent","_generateStylesXML","folder","_zip","XML","generateNumberFormatsXml","generateFontsXml","generateFillsXml","generateCellFormatsXml","_generateStringsXML","stringIndex","stringsLength","sharedStringXml","_getPaneXML","frozenArea","_getAutoFilterXML","maxCellIndex","_getIgnoredErrorsXML","_generateWorksheetXML","xmlCells","xmlRows","colsLength","rSpans","xmlResult","_rtlEnabled","rightBottomCellRef","_generateMergingXML","mergeIndex","columnsLength","usedArea","mergeArray","mergeXML","cellMerge","mergeArrayLength","_generateCommonXML","relsFileContent","relsXML","WORKBOOK_FILE_NAME","_generateContent","_generateWorkXML","JSZip","isBlob","compression","MIME_TYPES","EXCEL","generateAsync","generate","DataArea","_applyCustomStyles","classArray","columnType","rowsCount","cssArray","_moveFakeTable","_moveFakeTableHorizontally","_moveFakeTableTop","processScroll","horizontalScroll","verticalScroll","_groupElement","updateManually","_virtualContent","setVirtualContentParams","_setTableCss","LoadPanel","hideTopOverlayHandler","shadingColor","_$contentWrapper","_togglePaneVisible","_cleanPreviousContent","_renderLoadIndicator","_renderMessage","_clearShowTimeout","_showTimeout","$message","_$indicator","normalizeTouchEvent","skipTouchWithSameIdentifier","pointerEvent","TouchStrategy","_pointerId","_eventName","BaseTheme","_Theme","TemplateBase","_ensureResultInContainer","resultInContainer","ControlBar","SIZE_OPTIONS","bigCircleSize","smallCircleSize","buttonSize","arrowButtonOffset","incDecButtonSize","incButtonOffset","decButtonOffset","sliderLineStartOffset","sliderLineEndOffset","sliderLength","sliderWidth","trackerGap","COMMAND_TO_TYPE_MAP","_createElements","dataKey","_subscribeToProjection","_createCallbacks","disposeCommand","finish","ResetCommand","_command","MoveCommand","endMove","beginMove","ZoomCommand","dZoom","_adjustZoom","_zoomFactor","ZoomDragCommand","_pos","_flags","_offProjection","getScaledZoom","_zoomPartition","getZoomScalePartition","_sliderUnitLength","_sliderLineLength","isCenter","isZoom","_zoom","setScaledZoom","buttonsGroups","_buttonsGroup","_createButtons","_createTrackers","offset1","offset2","_zoomLine","_zoomDrag","size2","_zoomDragTracker","_isActive","_layoutOptions","_margin","isInvertible","interaction","_applyZoom","commandType","FLAG_CENTERING","dataKeyModifier","onLegendClick","getProxyData","_hitTestTargets","tooltipData","proxyData","_dataKey","queryImpl","_remote_query","remote","WeekTableLayout","DateTableLayoutBase","startLocation","actualOffset","_query_implementation","impl","AllDayPanelTitle","AllDayPanelTitleProps","__text","_export_format","topLeftCell","_fullOptions$workshee","convertDateForExcelJS","setNumberFormat","numFmt","tryConvertToExcelNumberFormat","ExportFormat","formatObjectConverter","setAlignment","setColumnsWidth","getColumn","tryGetMergeRange","mergeCells","mergeRanges","mergeRange","setLoadPanelOptions","initialLoadPanelOptions","outlineProperties","summaryBelow","summaryRight","exportRow","worksheetViewSettings","rightToLeft","_styles$dataProvider$","ColumnChooserView","ColumnChooserController","path1","path2","fullPath","pathParts","resultPathParts","targetItem","tabOrGroupItems","HORIZONTAL_GROUP_ORIENTATION","_TemplateBase","_renderIconContainer","$iconContainer","_renderIcons","hasIcon","_renderCellCommandContent","firstDataColumnIndex","getFirstDataColumnIndex","isExpandIcon","_converterController","_quill_importer","DeltaConverter","getQuill","BreakBlot","quillInstance","_isQuillEmpty","_isDeltaEmpty","addConverter","_template_manager","_action","_contextmenu","ITEM_CLASS","ITEM_PATH_REGEX","CollectionWidget","onItemHold","itemHoldTimeout","onItemContextMenu","itemTemplateProperty","focusOnSelectedItem","disabledExpr","visibleExpr","_compileDisplayGetter","_cleanRenderedItems","_initItemsFromMarkup","_initDefaultItemTemplate","fieldsMap","_getFieldsMap","_getBindableFields","rawItems","findTemplates","_prepareItemTemplate","templateId","_saveTemplate","_setFocusedItem","_updateFocusedItemState","activeElements","_getActiveElement","$last","loop","$first","_selectFocusedItem","needCleanItemId","_refreshItemId","_refreshItem","_createItemRenderAction","_expectNextPageLoading","_startIndexForAppendedItems","_forgetNextPageLoading","_shouldAppendItems","_refreshContent","_dataSourceLoadErrorHandler","_allowDynamicItemsAppend","_itemFocusTimeout","_itemContentClass","clickEventNamespace","pointerDownEventNamespace","_itemPointerDownHandler","execute","_itemFocusHandler","isDefaultPrevented","$closestItem","$closestFocusable","_closestFocusable","_forcePointerDownFocus","focusable","_getHoldTimeout","_shouldFireHoldEvent","hasActionSubscription","_itemContextMenuHandler","_shouldFireContextMenuEvent","$itemToReplace","_renderItemFrame","_setElementData","renderContentPromise","defaultTemplateName","itemContent","_itemEventHandlerByHandler","itemTemplateName","_getItemTemplateName","_addItemContentClasses","$templateResult","_renderItemContentByNode","_appendItemToContainer","_itemOptions","_itemRenderAction","templateProperty","_emptyMessageContainer","hideNoData","_$noData","handlerOptionName","initiator","_itemEventHandlerImpl","_closestItemElement","includeMargin","_focusedItemId","FORMAT_DICTIONARY","UNBIND_KEY","lastFieldIndex","createChartDataSource","pivotGridDataSource","mapOptions","axisDictionary","measureIndex","rowMemberIndex","rowVisibility","rowPathFormatted","columnMemberIndex","columnVisibility","columnPathFormatted","rowFields","columnFields","createDataItem","dataCell","processCellArgs","maxRowLevel","maxColumnLevel","dataValues","putDataFieldsInto","dataFieldsDisplayMode","chartDataItem","processCell","processedCell","processDataCell","foreachRowColumn","rowMembers","grandTotalText","columnMembers","foreachDataField","alternateDataFields","createValueAxisOptions","valueAxisSettings","createPanesOptions","bindChart","updateChart","_customizeSeries","customizeChart","createChartOptions","chartElement","getChartInstance","removeBinding","disposeBinding","resolver","leftPad","LDML_FORMATTERS","signPart","timezoneOffsetAbs","hoursPart","minutesPart","X","Z","charIndex","isCurrentCharEqualsNext","charCount","_dialog","_appointmentPopup","_desktopTooltipStrategy","_mobileTooltipStrategy","_uiSchedulerAppointments","_uiScheduler3","_uiScheduler4","_uiScheduler5","_uiScheduler6","_uiScheduler7","_uiScheduler8","_uiScheduler9","_uiScheduler10","_uiScheduler11","_uiScheduler12","_uiScheduler13","_uiScheduler14","_appointmentAdapter","_timeZoneCalculator","_dataStructures","_appointmentSettingsGenerator","WIDGET_SMALL_CLASS","WIDGET_ADAPTIVE_CLASS","WIDGET_WIN_NO_TOUCH_CLASS","WIDGET_READONLY_CLASS","VIEWS_CONFIG","Scheduler","_Widget","appointmentTemplate","appointmentCollectorTemplate","timeCellTemplate","resourceCellTemplate","dateCellTemplate","allowAdding","allowEditingTimeZones","recurrenceEditMode","cellDuration","maxAppointmentsPerCell","selectedCellData","onAppointmentRendered","onAppointmentContextMenu","onCellContextMenu","onAppointmentAdding","onAppointmentAdded","onAppointmentUpdating","onAppointmentUpdated","onAppointmentDeleting","onAppointmentDeleted","appointmentTooltipTemplate","appointmentPopupTemplate","crossScrollingEnabled","recurrenceExceptionExpr","adaptivityEnabled","allowMultipleCellSelection","renovateRender","_appointmentTooltipOffset","_appointmentTooltipButtonsPosition","_appointmentTooltipOpenButtonText","_appointmentCountPerCell","_appointmentOffset","useDeferUpdateForTemplates","span","AppointmentSettingsGenerator","_reloadDataSource","whenLoaded","_loadResources","resolveCallbacks","_postponeDataSourceLoading","_updateOption","_dateOption","_filterAppointmentsByDate","setDataSource","_postponeResourceLoading","_processCurrentView","_getCurrentViewOptions","initRenderingStrategy","_validateCellDuration","_allowDragging","_allowResizing","_getAppointmentTemplate","_refreshWorkSpace","_updateHeader","setDataAccessors","_combineDataAccessors","_getAppointmentRenderedAction","_readyToRenderAppointments","_getAppointmentsToRepaint","_initEditing","_bringEditingModeToAppointments","_cleanPopup","_updateExpression","_initAppointmentTemplate","_toggleAdaptiveClass","viewCountConfig","_currentView","editingConfig","allowDelete","_isAgenda","_supportAllDayResizing","filterByDate","loadResources","_this$_workSpaceRecal","contentReadyBase","fireContentReady","_workSpaceRecalculation","_toggleSmallClass","_cleanAllowedPositions","_isAllDayExpanded","createAppointmentsMap","_initExpressions","combinedDataAccessors","getAppointmentDurationInMinutes","CompactAppointmentsHelper","_asyncTemplatesTimers","TimeZoneCalculator","getClientOffset","getCommonOffset","getAppointmentOffset","appointmentTooltip","dropDownAppointment","createGetter","resourcesDataAccessors","accessor","_renderView","_this$getWorkSpace","prerenderFilterName","_filteredItems","_filterAppointments","cleanModelState","getRepaintedAppointments","dateGetter","dateSetter","exprObj","_appointmentTooltip","hideAppointmentPopup","_renderHeader","_appointmentsConfig","MobileTooltipStrategy","_getAppointmentTooltipOptions","_initMarkupCore","getWorkSpaceScrollableContainer","deleteAppointment","_cleanWorkspace","_renderWorkSpace","getFixedContainer","getAllDayContainer","_waitAsyncTemplate","_this7$_workSpaceReca","_isResourcesLoaded","_isDataSourceLoaded","$header","_headerConfig","currentViewOptions","countConfig","_allowAllDayResizing","needApplyCollectorOffset","$workSpace","workSpaceComponent","workSpaceConfig","_workSpaceConfig","initDragBehavior","_all","_attachTablesEvents","getWorkArea","_recalculateWorkspace","_getHeaderDate","getCollectorOffset","_getViewByName","_currentViewOptions$s","accessKey","allDayExpanded","hoursInterval","getGroupedScrollableScrollTop","getAllDayOffset","getWorkSpaceLeftOffset","targetAppointment","singleAppointment","isDeleted","isPopupEditing","_singleAppointmentChangesHandler","_showRecurrenceChangeConfirm","rawTargetedAppointment","updatedAppointment","correctedExceptionDate","_getCorrectedExceptionDateByDST","_createRecurrenceException","_serializeRecurrenceException","targetStartDate","FULL_DATE_FORMAT","seriesText","occurrenceText","custom","messageHtml","getTargetCellData","targetAllDay","targetEndDate","targetStartTime","endData","keepOriginalHours","dateCopy","setResourcesToItem","getAppointmentSettings","appointmentIndex","isRecurrenceAppointment","newStartDate","getAppointmentDataCalculator","setTargetedAppointmentResources","getDataByDroppableCell","onUpdatePrevented","updatingOptions","newData","performFailAction","_expandAllDayPanel","_executeActionWhenOperationIsCompleted","actionOptions","resolveCallback","getPopup","getUpdatedAppointment","getUpdatedAppointmentKeys","exceptions","_convertRecurrenceException","exceptionString","convertedStartDate","convertedExceptionDate","dayTimeStamp","startDateTimeStamp","endDateTimeStamp","getGroups","setResourceCallback","apptSettings","_positionMap","getCellDataByCoordinates","createNewAppointment","newTargetedAppointment","AppointmentTooltipInfo","showAppointmentTooltipCore","isAlreadyShown","_getExtraAppointmentTooltipOptions","serializedAppointment","addingOptions","deletingOptions","getTimeZoneCalculator","toastTypes","TOAST_STACK","visibleToastInstance","POSITION_ALIASES","_proxiedDocumentDownHandler","Toast","displayTime","closeOnSwipe","isAndroid","_window$visualViewpor","visualViewport","_device2","_window$visualViewpor2","_posStringToObject","TOAST_CLASS_PREFIX","TOAST_CLASS","_toggleCloseEvents","_renderScrollTerminator","verticalPosition","horizontalPosition","_hideTimeout","_overlayStack","_zIndexInitValue","Projection","_event_emitter","TWO_TO_LN2","DEFAULT_CENTER","floatsEqual","f1","f2","arraysEqual","parseAndClamp","parseAndClampArray","getEngine","Engine","_initEvents","_engine","_adjustCenter","selectFarthestPoint","point1","point2","basePoint1","basePoint2","basePoint","selectClosestPoint","setMinMax","_findMinMax","findMinMax","returnArray","_minZoom","_maxZoom","_scale","_disposeEvents","setEngine","_fire","_changeCenter","_triggerCenterChanged","_changeZoom","_triggerZoomChanged","_setupScreen","setBounds","original","ar","_x0","_y0","project","screenAR","boundsAR","_xRadius","_yRadius","_toScreen","_fromScreen","_toTransformed","_xCenter","_yCenter","_toTransformedFast","_fromTransformed","getSquareSize","scaledZoom","deltaZoom","_setupScaling","setMaxZoom","maxZoom","centerChanged","q","unproject","_moveCenter","toScreenPoint","lt","lb","rt","rb","minMax","setViewport","getZoomAndCenterFromViewport","getTransform","_eventNames","makeEventEmitter","invertVerticalAxis","createUnprojectMethod","returnValue","_aspectRatio","b2","_project2","createProjectUnprojectMethods","projectionsCache","_extend3","variance","expectedValue","getMinMaxAggregator","baseScatterMethods","_createLegendState","styleOptions","_applyClearingSettings","_visibleArea","_errorBarsEnabled","groupPointsByCoords","_setLabelGroupSettings","normalStyle","_parsePointOptions","_preparePointOptions","defaultBorderColor","defaultSize","sizeValue","fieldsToCheck","allFieldsIsValid","checkFields","_getRangeData","tagField","hasAnimation","_drawnPoints","_errorBarGroup","lastPointIndex","_calculateAvgErrorBar","aggregationResult","errorBarsOptions","fusionData","calculateAvgErrorBars","_calculateSumErrorBar","calculateSumErrorBars","valueArray","valueArrayLength","meanValue","errorBarType","floatErrorValue","addSubError","drawTrackers","trackers","_trackers","_trackersGroup","_trackersTranslator","allPoints","getNeighborPoint","minDistance","pCoord","nCoord","_applyVisibleArea","visibleX","visibleY","tmpPoint","PostponedOperations","_postponedOperations","postponedPromise","completePromise","MAX_HEIGHT","MAX_WIDTH","isTabletWidth","currentMaxHeight","createTabletDeviceConfig","createPhoneDeviceConfig","expressions","fieldsCache","getExpression","expressionArg","SummaryCell","postProcessedFlags","isEmptyGrandTotalRow","isEmptyGrandTotalColumn","createRunningTotalExpr","fieldId","grandTotal","ROW","calculatePercentValue","_percentOfGrandTotal","percentOfParent","parentValue","createAbsoluteVariationExp","allowCrossGroup","prevCell","summaryDictionary","percentOfColumnTotal","percentOfRowTotal","percentOfColumnGrandTotal","percentOfRowGrandTotal","percentOfGrandTotal","allowCrossGroupCalculation","getPrevCellCrossGroup","getFieldPos","fieldParams","allFields","fieldIndex","getPathFieldName","_columnPath","_rowPath","_fieldIndex","_fieldsCache","originalCell","absoluteExp","crossGroupCalculation","absVar","isRunningTotalCalculation","allowResetting","_getPath","_getDimension","cellConfig","dimensionPath","pathFieldName","childLevelField","fieldPos","sliceCell","arg1","arg2","fistArgIsBoolean","needCalculatedValue","isPostProcessed","_mspointer","_mouse","_mouse_and_touch","EventStrategy","getStrategy","originalEvents","over","MemorizedCallbacks","memory","calculateCanvasMargins","measureLabels","_smart_formatter","_axes_constants","_tick","_xy_axes","polarMethods","_constant_line","_strip","BOTTOM","KEEP","SHIFT","RESET","getTickGenerator","skipTickGeneration","adjustDivisionFactor","numberMultipliers","skipCalculationLimits","generateExtraTick","minTickInterval","createMajorTick","createMinorTick","createBoundaryTick","isFirst","callAction","initTickCoords","drawTickMarks","drawGrids","updateTicksPosition","updateGridsPosition","cleanUpInvalidTicks","removeInvalidTick","getOptimalAngle","boxes","labelOpt","minSpacing","updateLabels","getZoomBoundValue","dataValue","bBoxes","cLeft","cTop","cRight","cBottom","renderSettings","_stripsGroup","stripsGroup","_labelAxesGroup","labelAxesGroup","_constantLinesGroup","constantLinesGroup","_scaleBreaksGroup","_axesContainerGroup","_gridContainerGroup","gridGroup","_axisCssPrefix","_createAxisGroups","_createTranslator","_viewport","_firstDrawing","_initRange","_drawAxis","_axisElement","_createAxisElement","_updateAxisElementPosition","_getSharpParam","svgElement","maxCoord","_getGridLineDrawer","tickPositionField","orthogonalPositions","_orthogonalPositions","positionFrom","positionTo","canvasStart","canvasEnd","axisCanvas","minDelta","maxDelta","_getTranslatedCoord","_drawConstantLineLabelText","lineLabelOptions","_getStripPos","swap","startCategoryIndex","endCategoryIndex","isContinuous","parsedStartValue","parsedEndValue","outOfCanvas","stripPosition","_getStripGraphicAttributes","fromPoint","toPoint","_createStrip","_adjustStripLabels","_strips","strip","_getAdjustedStripLabelCoords","_adjustLabelsCoord","checkCanvas","getContainerAttrs","_majorTicks","_adjustLabels","positionsAreConsistent","labelRotationAngle","additionalOffset","isFlatLabel","labelX","_createAxisConstantLineGroups","constantLinesClass","insideGroup","outsideGroup1","outsideGroup2","outside1","outside2","classSelector","_axisGroup","_axisStripGroup","_axisTitleGroup","_axisStripLabelGroup","_clearAxisGroups","_getViewportRange","smartFormatter","showTransition","customizeHint","_setTickOffset","_resetApplyingAnimation","edgeMarginCorrection","constantLineAboveSeries","constantLineUnderSeries","idError","axisTypeMethods","_disposeBreaksGroup","_axisBreaksGroup","_minorTicks","_templatesRendered","setTypes","_updateTranslator","resetTypes","_initTypes","_labelOptions$minSpac","_TOP$BOTTOM$LEFT$RIGH","_TOP$BOTTOM$LEFT$RIGH2","defaultPosition","secondaryPosition","validateAxisOptions","_hasLabelFormat","_createConstantLines","strips","_processCanvas","canvasRedesign","_initAxisPositions","getAxisShift","_axisShift","hideTitle","hideOuterElements","_outsideConstantLines","_resolveLogarithmicOptionsForRange","_seriesData","_addConstantLinesToRange","_wholeRange$startValu","_wholeRange$endValue","adjustedVisualRange","disabledNegatives","_getVisualRangeUpdateMode","oppositeValue","visualRangeUpdateMode","newCategories","minVisiblePoint","maxVisiblePoint","_handleBusinessRangeChanged","oppositeVisualRangeUpdateMode","axisReinitialized","_lastVisualRangeUpdateMode","_prevDataWasEmpty","_setVisualRange","currentBusinessRange","getVisualRangeCenter","_that$_seriesData$min","_that$_seriesData$max","dataIsEmpty","showZero","_getScaleBreaks","minValueField","maxValueField","_insideConstantLines","cl","extendAxis","_dataRange$addRange","setGroupSeries","labelShift","_getBoundaryTicks","majors","customBounds","addMinMax","_boundaryTicksVisibility","boundaryTicks","setPercentLabelFormat","resetAutoLabelFormat","_getTicks","_getSkippedCategory","_isSynchronized","_adjustDivisionFactor","isSpacedMargin","_getScreenDelta","minors","_initialBreaks","_createTicksAndLabelFormat","getAggregationInfo","useAllAggregatedPoints","_visualRange$startVal","_visualRange$endValue","_that$_seriesData","_marginOptions","aggregateByCategory","aggregationGroupWidth","generateTicks","tickGeneratorOptions","configureGenerator","maxMinDistance","_filterBreaks","_aggregationInterval","createTicks","_estimatedTickInterval","_calculateValueMargins","_boundaryTicks","minor","oldMajorTicks","majorTicksByValues","sameType","oldMinorTicks","_ticksToRemove","_t$label","_reinitTranslator","_this$_marginOptions","_calculateRangeInterval","addToArgs","_calculateWorkWeekInterval","businessInterval","workdaysOnly","weekendsCount","_getConvertIntervalCoefficient","intervalInPx","_resetMargins","rangeInterval","minPercentPadding","maxPercentPadding","marginSize","minValueMargin","maxValueMargin","pxInterval","maxPaddingValue","_minValue","_maxValue","_minValue2","_maxValue2","canvasStartEnd","screenDeltaWithMargins","skipViewportExtending","firstTickPosition","lastTickPosition","invertMultiplier","minTickPadding","maxTickPadding","commonPadding","_that$getCorrectedVal","correctedMin","correctedMax","minExpectedPadding","maxExpectedPadding","_drawTitle","drawGridLine","_dateMarkers","_drawDateMarkers","_measureTitle","_applyWordWrap","_adjustConstantLineLabels","_setLabelsPlacement","_adjustDateMarkers","_adjustTitle","convertedTickInterval","_validateDisplayMode","overlappingMode","_validateOverlappingMode","wordWrapMode","overflowMode","correctByWidth","correctByHeight","updateSize","updateTitle","_checkTitleOverflow","_updateTitleCoords","_resetStartCoordinates","prepareAnimation","elementsClipID","canvasClipID","_validateVisualRange","_validateOptions","_customVisualRange","isSilent","allowPartialUpdate","_applyZooming","_resetVisualRangeOption","getZoomStartEventArg","actionType","_getZoomEndEventArg","previousRange","zoomFactor","rangeStart","secondPriorityRange","setCustomVisualRange","_startValue","_endValue","adjustedRange","_getAdjustedBusinessRange","zoomResults","_visualRange","preventEvents","domEvent","zoomStartEvent","_storedZoomEndParams","startRange","prevent","previousBusinessRange","typeIsNotChanged","zoomEndEvent","_restorePreviousVisualRange","minVisualRangeLength","isOvercoming","beforeVisualRangeLength","afterVisualRangeLength","fullRange","minDataValue","maxDataValue","seriesData","edges","visualRangeStartPoint","visualRangeEndPoint","isMax","extremeDataValue","extremePoint","visualRangePoint","withIndents","widthAxis","viewportRange","maxText","notRecastStep","ignoreOverlapping","_getStep","_applyLabelMode","_applyLabelOverlapping","_checkBoundedLabelsOverlapping","labelHeight","_getMaxLabelHeight","_getTranslatorOptions","_options$workWeek2","_options$breakStyle$w","_options$breakStyle","breaksLength","getSpiderTicks","setSpiderTicks","visualRangeSetter","FilterMaker","_filterRegistry","_make","useAccessors","userFilter","user","AppointmentModel","baseAppointmentDuration","_updatedAppointmentKeys","_filterMaker","_baseAppointmentDuration","userFilterPosition","_excessFiltering","_combineRemoteFilter","dateFilter","combine","checkAppointmentResourceValues","appointmentResourceValues","itemDataCount","appointmentStartDate","appointmentEndDate","_appointmentPartInInterval","trimmedDates","_trimDates","hasRecurrence","apptStartDayHour","apptEndDayHour","getRecurrenceException","useRecurrence","_filterAppointmentByResources","comparableStartDate","comparableEndDate","_filterAppointmentByRRule","severalDays","compareDateWithStartDayHour","apptDuration","apptStartHour","apptStartMinutes","compareDateWithEndDayHour","_initStoreChangeHandlers","clearRegistry","_updatedAppointment","pushItems","pushItem","isRegistered","_this$_dataSource$fil","_serializeRemoteFilter","_createFilter","_createCombinedFilter","customizeDateFilter","filterOption","_createAppointmentFilter","getPreparedDataItems","dataItems","_isEndDateWrong","calculatedEndDate","combinedFilters","itemsToFilter","minCopy","maxCopy","_appointmentHasAllDayDuration","_getAppointmentDurationInHours","_appointmentHasShortDayDuration","_getStoreKey","_short","TemplateManager","createDefaultOptions","_attachWindowResizeCallback","_initTemplateManager","_setOptionsByDevice","instanceCustomRules","_classCustomRules","_convertRulesToOptions","_isDimensionChangeSupported","windowResizeCallBack","_windowResizeCallBack","_renderComponent","_attachDimensionChangeHandlers","_isVisibilityChangeSupported","_isCssUpdateRequired","_checkVisibilityChanged","modelByElement","_requireRefresh","_detachWindowResizeCallback","synchronizableOptions","_this$option2","_this$option3","nestedComponentOptions","nestedComponentConfig","optionChangedHandler","extendConfig","_defaultActionConfig","_removeAttributes","_removeClasses","_updateDOMComponent","renderRequired","_isInitializingRequired","resetOption","_this$option4$integra","createTemplate","_this$_templateManage","extractTemplates","anonymousTemplateMeta","anonymousTemplate","templateSource","isAsyncTemplate","_createTemplate","addAttributes","hasComponent","oldElement","horizontalAlignmentMap","verticalAlignmentMap","sideMap","slicersMap","pickValue","getShrink","processForward","minSide","primary","processRectBackward","alignmentRect","primarySide","secondarySide","itemRect","secondary","processBackward","targetRect","itemFitRect","Layout","_targets","processBackwardHeaderRect","rectCopy","collection","weakItem","weakElement","weakSize","headerSize","weakRect","headerFitReact","headerRect","processWeakItems","createTargets","backwardRect","targetSide","_uiCalendar","_getViewName","_renderBody","_$table","getCellAriaLabel","_renderHeaderCell","_this$_getDayCaption","_getDayCaption","fullCaption","abbrCaption","abbreviated","abbr","_appendCell","getNavigatorCaption","_isTodayCell","_isDateOutOfRange","_isOtherView","_getFirstCellData","firstMonthDayOffset","daysInWeek","_getNextCellData","_getCellByDate","isBoundary","_getDefaultDisabledDatesHandler","foundDate","decade","firstYearInDecade","_isValueOnCurrentView","century","minDecade","maxDecade","firstDecadeInCentury","replaceAll","encodeRegExp","quad","splitQuad","replaceDollarCount","reg","searchToken","replacementToken","SPACE_REGEXP","PROPERTY_NAMES","AppointmentAdapter","pathTimeZoneConversion","calculateDate","clonedAdapter","numberFormatHelper","formatCode","dxClick","_keyboard_processor","inactive","showTimeout","hideTimeout","focusIn","focusOut","_ref8","isFocusable","hasDocumentProperty","_ref9","_ref10","_ref11","_ref12","_ref13","keyboardProcessors","focusTarget","listenerId","_getProcessor","_uiEventsEmitterGesture","_quill_registrator","_wordLists","_formDialog","HtmlEditor","variables","mediaResizing","customizeModules","formDialogOptions","_cleanCallback","_contentInitializedCallback","_shouldSkipFocusEvent","_$htmlContainer","_$templateResult","noModel","_updateContainerMarkup","_isMarkdownValue","_prepareMarkdownConverter","_markdownConverter","toHtml","MarkdownConverter","getConverter","_prepareConverters","_prepareQuillRegistrator","_quillRegistrator","_getRegistrator","_deltaConverter","_contentRenderedDeferred","_renderHtmlEditor","_renderFormDialog","_addKeyPressHandler","keyDownEvent","_keyDownHandler","modulesConfig","_getModulesConfig","_quillInstance","setQuillInstance","_textChangeHandlerWithContext","_textChangeHandler","_renderScrollHandler","_hasTranscludedContent","_updateContentTask","_applyTranscludedContent","_finalizeContentRendering","initScrollData","wordListMatcher","_getModuleConfigByOption","onCut","_getCustomModules","userOptionName","_getBaseModuleConfig","getRegisteredModuleNames","modulePath","htmlMarkup","convertedValue","_updateValueByType","_isNullValueConverted","_isEditorUpdating","clearHistory","toMarkdown","_resetEnabledState","updatedValue","_updateHtmlContent","_repaintToolbar","_abortUpdateContentTask","_applyQuillMethod","_applyQuillHistoryMethod","registerModules","getQuillInstance","popupOption","valuePrecision","adjustedValue","adjustValue","precisionMultiplier","roundByAbs","agq","ak","asa","ast","az","bas","be","bem","bez","bg","bs","ca","ce","cgg","ckb","cs","cu","da","dje","dsb","dua","dyo","eo","es","et","eu","ewo","fa","ff","fi","fo","fr","fur","fy","ga","gd","gl","gsw","gv","ha","hr","hsb","hu","hy","ia","ig","jgo","jmc","ka","kab","kde","kea","khq","kkj","kl","ksb","ksf","ksh","ku","kw","ky","lag","ln","lrc","lu","lv","mfe","mg","mgo","mi","mk","mn","ms","mua","mzn","naq","nb","nds","nl","nmg","nn","nnh","nus","nyn","os","pcm","pl","prg","ps","rn","ro","rof","ru","rw","rwk","sah","sbp","se","ses","sg","shi","si","sk","sl","smn","so","sq","sv","teo","tg","tk","tt","twq","tzm","uk","uz","vai","vi","vo","vun","wae","wo","xog","yav","yi","yo","zgh","NODE_CLASS","NODE_LOAD_INDICATOR_CLASS","OPENED_NODE_CONTAINER_CLASS","IS_LEAF","ITEM_WITH_CHECKBOX_CLASS","ITEM_WITHOUT_CHECKBOX_CLASS","ITEM_DATA_KEY","TOGGLE_ITEM_VISIBILITY_CLASS","LOAD_INDICATOR_CLASS","LOAD_INDICATOR_WRAPPER_CLASS","TOGGLE_ITEM_VISIBILITY_OPENED_CLASS","SELECT_ALL_ITEM_CLASS","_getEventNameByOption","_expandEventHandler","_changeCheckBoxState","toggleExpandedNestedItems","rootItem","_toggleExpandedNestedItems","asterisk","minus","checkboxInstance","_getCheckBoxInstance","currentState","_updateItemSelection","_toggleExpandedState","_getNodeElement","_encodeString","$nodeByKey","expandAllEnabled","expandNodesRecursive","selectAllText","onItemExpanded","onItemCollapsed","scrollDirection","virtualModeEnabled","expandEvent","selectByClick","createChildren","onSelectAllValueChanged","_initSelectedItems","_fireSelectionChanged","_createSelectAllValueChangedAction","_selectAllValueChangedAction","_fireSelectAllValueChanged","_checkBoxModeChange","selectAllExists","_$selectAllItem","_renderSelectAllItem","getFullData","_hasChildren","toggleSelection","dxCheckBox","_filter","_initAccessors","_initExpandEvent","setOption","_useCustomChildrenLoader","_loadChildrenByCustomLoader","_isVirtualMode","_initVirtualMode","internal","_isDataStructurePlain","invocationResult","_combineFilter","_removeTreeViewLoadIndicator","_treeViewLoadIndicator","_createTreeViewLoadIndicator","isFiltered","_updateLevel","removedKey","_markChildrenItemsToRemove","_removeItems","_getContainerByParentKey","getChildrenNodes","_getOldContainer","_renderNodeContainer","_isRootLevel","_renderScrollableContainer","_getAccessors","multipleSelection","_isSingleSelection","recursiveSelection","recursiveExpansion","$nodeContainer","_selectAllEnabled","skipContentReadyAction","_expandedGetter","_createDOMElement","_getLevel","nodeIndex","nodeData","showCheckBox","_renderCheckBox","_toggleSelectedClass","_renderChildren","_renderToggleItemVisibilityIcon","_loadSublevel","_renderSublevel","_getActualNode","_addLeafClass","cachedNode","childrenNodes","_loadNestedItems","getNodesByItems","$nestedNodeContainer","childNodesByChildrenKeys","_updateParentsState","_normalizeIconState","_getNode","getPublicNode","expandedEventName","isPrimitive","_getNodeByElement","_decodeString","_createLoadIndicator","toggleExpansion","_updateExpandedItemsUI","_renderToggleItemVisibilityIconClick","isHiddenNode","nodeContainerExists","completionCallback","_animateNodeContainer","_loadNestedItemsWithUpdate","actualNodeData","publicNode","_areNodesExists","_appendItems","keyOfRootItem","nodeHeight","_fireExpandedStateUpdatedEvent","hasNewItems","_contentAlreadyRendered","_toggleSelectAll","toggleSelectAll","_updateItemsUI","$checkbox","_changeCheckboxValue","_disabledGetter","_toggleNodeDisabledState","toggleNodeDisabledState","_isLastSelectedBranch","selectedNodesKeys","_isLastRequired","isSingleMode","getSelectedNodeKeys","checkbox","nodeKey","nodeSelection","$parentNode","_createEventHandler","clickSelector","pointerDownSelector","pointerDownEvent","_updateSelectionToFirstItem","_updateSelectionToLastItem","_setFocusedItemTimeout","_findNonDisabledNodes","FOCUS_UP","FOCUS_DOWN","FOCUS_FIRST","FOCUS_LAST","FOCUS_LEFT","FOCUS_RIGHT","_nodeElements","prevItemElement","_getNodeItemElement","nextItemElement","_expandFocusedContainer","_collapseFocusedContainer","$focusedNode","_getClosestNonDisabledNode","nodeElement","collapsedNode","decodeURI","expandItem","collapseItem","getNodes","getTreeNodes","getSelectedNodes","getSelectedNodesKeys","dataAdapter","getExpandedNodesKeys","keyOrItemOrElement","nodeKeysToExpand","scrollCallback","_expandNodes","scrollToElementTopLeft","keysToExpand","resultCallback","callbacksByNodes","Action","_beforeExecute","_afterExecute","_validatingTargetName","_excludeValidators","executor","registerExecutor","argsBag","_validateAction","_executeAction","_executor$validate","_executor$execute","createValidatorByTargetElement","MouseAndTouchStrategy","EVENT_LOCK_TIMEOUT","isMouse","_skipNextEvents","_mouseLocked","_unlockMouseTimer","normalizer","ToolbarMenu","_getSections","sectionName","_updateSections","$sections","isAction","PathTimeZoneConversion","fromSourceToAppointment","fromAppointmentToSource","fromSourceToGrid","fromGridToSource","sourceDate","_getConvertedDate","clientOffset","_getClientOffset","commonOffset","_getCommonOffset","appointmentOffset","_getAppointmentOffset","useAppointmentTimeZone","isBack","getOffsets","_getConvertedDateByOffsets","utcDate","initialArray","parentLocales","parentLocale","exportPivotGrid","xSplit","pivotCell","_dataArea","TimePanelTableLayout","insertAdjacentHTML","lastElementChild","initiallyPositive","hasNegative","decreasing","FormItemsRunTimeInfo","removeItemByKey","_findWidgetInstance","storedItem","targetPath","_findFieldByCondition","getRealElementWidth","getFakeTableOffset","tableSize","viewPortSize","halfTableCount","halfTableSize","_createTableElement","isWhiteSpace","_getRowClassNames","sorted","_getMainElementMarkup","_getCloseMainElementMarkup","rowClassNames","markupArray","columnMarkupArray","cellsCount","_triggerOnCellPrepared","onCellPreparedArgs","onCellPrepared","defaultActionArgs","_trigger","_setRowHeight","getRowsLength","getRowsHeight","setRowsHeight","valuesLength","_tableHeight","getColumnsWidth","processedCells","fillCells","columnOffset","colgroupElementHTML","columnsCount","getColumnsCount","_colgroupElement","_tableWidth","tableLayout","resetColumnsWidth","groupWidth","_groupWidth","groupHeight","_groupHeight","headElement","disableVirtualMode","_fakeTable","_updateFakeTableVisibility","horizontalOffsetName","fakeTableElement","offsetStyleName","_createFakeTable","scrollablePos","createIndicatorCreator","_strict","indicatorType","dxGauge","_base_gauge","_isFinite","DEFAULT_NUMBER_MULTIPLIERS","processValue","fallbackValue","parseArrayOfNumbers","dxBaseGauge","_setupValue","__subvalues","_setupSubvalues","selectMode","_rangeContainer","_factory","RangeContainer","_initScale","_scaleGroup","_scaleTypes","_disposeValueIndicators","_valueIndicator","_subvalueIndicatorsSet","_setupDomainCore","_baseValue","_cleanContent","_cleanValueIndicators","_measureScale","majorTick","majorTickEnabled","minorTickEnabled","textParams","layoutValue","_getScaleLayoutValue","coefs","_getTicksCoefficients","innerCoef","outerCoef","_correctScaleIndents","_prepareScaleSettings","_renderScale","_prepareValueIndicators","_applyMainLayout","_getElementLayout","_shiftScale","_beginValueChanging","_updateActiveElements","_endValueChanging","_gridSpacingFactor","minorScaleDivisionFactor","tickOrientation","_getTicksOrientation","useRangeColors","getColorForValue","getDomain","angles","getCodomain","_updateScaleTickIndent","_updateIndicatorSettings","baseValue","_defaultFormatOptions","_prepareIndicatorSettings","defaultTypeField","_animationSettings","_containerBackgroundColor","_prepareValueIndicator","_prepareSubvalueIndicators","_updateValueIndicator","_updateSubvalueIndicators","_createSubvalueIndicatorsSet","ValueIndicatorsSet","createIndicator","isRecreate","dummy","__value","subvalues","vals","_noAnimation","_changeSubvalues","compareArrays","valueIndicator","subvalueIndicator","_change_SUBVALUES","trackerType","trackerIndex","_trackerInfo","_getApproximateScreenRange","setupValues","optionItems","currentValues","newValues","_indicatorValues","_valueIndicators","updateActiveElements_hardMode","prepareValueIndicators_hardMode","disposeValueIndicators_hardMode","cleanValueIndicators_hardMode","indicatorValue","indicatorValue_hardMode","selectHardMode","newValueIndicators","userSettings","accessPointerValue","_parameters","_indicators","_colorPalette","_palette","_sample","_generatePalette","_getIndicatorOptions","generateColors","_adjustIndicatorsCount","indicatorsLen","rhombus","_zeroPosition","getCodomainStart","_inverted","maxSide","_minBound","_maxBound","textOptions","_getTextAlign","_lineStart","_lineEnd","_textPosition","backPosition1","backPosition2","crossCenter","alongCenter","_renderBadge","_renderShowChevron","$badge","$chevron","showChevron","$chevronContainer","accessibility","_keydown","_compositionStart","_compositionEnd","_processFunction","isNotFocusTarget","shouldSkipProcessing","_isComposingJustFinished","_isComposing","_toggleProcessingWithContext","toggleProcessing","_frame","NAMESPACED_SCROLL_EVENT","ios8_greater","android5_greater","Locker","_locked","_proxiedScroll","TimeoutLocker","_forget","_timer","WheelLocker","_lastWheelDirection","_checkDirectionChanged","directionChange","PointerLocker","_scrollFrame","_checkFrame","FRAME_DURATION","ScrollEmitter","_pointerLocker","_wheelLocker","scrollTarget","skipCheck","_prevEventData","_savedEventData","currentEventData","endEventDelta","velocity","velocityMultiplier","selectionFilter","_addSelectionFilter","_getFilterByKey","keyField","_findSubFilter","filterString","subFilter","_isLastSubFilter","_addFilterOperator","filterOperator","_denormalizeFilter","needAddFilter","_removeSameFilter","filterIndex","isKeyOperatorsAfterRemoved","_isKeyFilter","_hasKeyFiltersOnlyStartingFromIndex","_normalizeFilter","_removeFilterByIndex","_isSimpleKeyFilter","_filterIndex","onCaptionClick","_captionClickAction","_renderButtons","_renderCaption","_prevButton","$prevButton","_nextButton","$nextButton","_caption","$caption","toggleButton","buttonPrefix","selectedExpr","expandedExpr","_initDynamicTemplates","_createDataAdapterAccessors","getters","setters","_getIconContainer","_getTextContainer","_getPopoutContainer","_addContentClasses","_compileAccessor","optionExpr","getterName","newAccessor","FIREFOX_CONTROL_KEYS","invalidValueMessage","_isSupportInputMode","_getDefaultAttributes","inputmode","_keyPressHandler","_keyPressed","_spinValueChange","_forceValueRender","valuenow","valuetext","_applyDisplayValueFormatter","_renderProps","_normalizeInputValue","_correctRounding","regex","isFloatValue","isFloatStep","valueAccuracy","stepAccuracy","accuracy","forceValueChangeEvent","_forceRefreshInputValue","_normalizeText","_parseValue","valueHasDigits","_isValueValid","_applyValueBoundaries","isValueIncomplete","_isValueIncomplete","_isValueInRange","_replaceCommaWithPoint","_inputIsInvalid","isNumberMode","validityState","validity","badInput","inRange","_isNumber","isValueValid","isNumber","_clearValue","_event_nodes_disposing","isInput","misc","ClickEmitter","_makeElementClickable","_blurPrevented","_startTarget","_eventOutOfElement","_clickAnimationFrame","_fireClickEvent","targetChanged","gestureDelta","boundsExceeded","useNativeClick","isNativeClickEvent","prevented","lastFiredEvent","onNodeRemove","eventAlreadyFired","DXCLICK_FIRED","unsubscribeNodesDisposing","subscribeNodesDisposing","startTarget","blurPrevented","setScrollView","LIST_ITEM_SELECTOR","groupItemsGetter","moveFocusPerPage","getEdgeVisibleItem","resultPosition","scrollListTo","isItemVisible","nextItemLocation","scrollByThumb","onItemSwipe","onGroupRendered","collapsibleGroups","_listAttributes","showChevronExpr","deviceDependentOptions","_updateLoadingState","_selectionChangeEventInstance","_getSelectionChangeEvent","_refreshItemElements","_itemElementsCache","_modifyByChanges","_resetDataSourcePageIndex","currentDataSource","_initScrollView","_feedbackShowTimeout","_createGroupRenderAction","_scrollBottomMode","_nextButtonMode","scrollBottom","autoPagingEnabled","onPullDown","_pullDownHandler","onReachBottom","_scrollBottomHandler","reachBottomText","_createScrollViewActions","tryLoadMore","isDataLoaded","scrollBottomMode","stopLoading","hideLoadIndicator","_scrollViewIsFull","_toggleNextButton","_shouldRenderNextButton","_loadIndicationSuppressed","_infiniteDataLoading","_showLoadingIndicatorTimer","startLoading","finishLoading","_hideLoadingIfLoadIndicationOff","_isLoadIndicationSuppressed","_loadNextPageTimer","_setPreviousPageIfNewIsEmpty","_renderGroup","_attachGroupCollapseEvent","attachGroupHeaderInkRippleEvents","_collapseGroupHandler","$groupBody","startHeight","endHeight","LIST_FEEDBACK_SHOW_TIMEOUT","endEventName","_nextButtonHandler","toggleLoading","_$nextButton","$groupElement","$groupHeaderElement","groupTemplateName","_renderingGroupIndex","_groupRenderAction","downInkRippleHandler","upInkRippleHandler","_downInkRippleHandler","_upInkRippleHandler","downArguments","upArguments","_toggleDisabledState","_getNextButton","_createNextButton","expandGroup","collapseGroup","isWritableWrapped","confirm","alert","FakeDialogComponent","DEFAULT_BUTTON","DX_DIALOG_WRAPPER_CLASSNAME","DX_DIALOG_ROOT_CLASSNAME","DX_DIALOG_CONTENT_CLASSNAME","DX_DIALOG_MESSAGE_CLASSNAME","DX_DIALOG_BUTTONS_CLASSNAME","DX_DIALOG_BUTTON_CLASSNAME","lWidth","pWidth","isMessageHtmlDefined","popupToolbarItems","popupInstance","widthOption","ignoreChildEvents","$firstButton","Button","_validationGroupConfig","_templateData","iconPosition","useSubmitBehavior","needValidate","_validationGroup$vali","_submitInput","_renderType","_renderStylingMode","_updateAriaLabel","_ref3$model","$textContainer","_updateClick","_updateType","_updateStylingMode","_updateSubmitInput","_executeClickAction","isOnlyIconButton","changeWaveVisibility","_this5$option","_attachActiveEvents","submitAction","_getSubmitAction","_$submitInput","ariaTarget","_this$option7","_getContentData","_this$option8","$submitInput","_renderSubmitInput","_findGroup","SchedulerTableCreator","allDayElements","tableBody","templateCallbacks","allDayElementIndex","insertAllDayRow","isLastRowInGroup","cellDataObject","getCellDate","cssClasses","_makeVerticalGroupedRows","_makeHorizontalGroupedRows","cellStorage","childrenField","titleField","createCell","childCount","generateCells","rowspans","repeatByDate","cellIterator","_makeFlexGroupedRowCells","_i2","currentColumnLength","_makeGroupedRowCells","maxCellCount","disableIntl","resetInjection","formatNumber","LoadIndicator","_animatingSegmentInner","viaImage","_renderIndicatorContent","_renderMarkup","_renderMarkupForImage","_renderMarkupForAnimation","animatingSegmentInner","$segment","_updateContentSizeForAnimation","minDimension","_removeMarkupForAnimation","_removeMarkupForImage","STRATEGIES","defaultItemSizeFunc","calcOffsetRatio","_itemSizeFunc","isFastSwipe","endEventData","FAST_SWIPE_SPEED_LIMIT","_tickData","SwipeEmitter","TICK_INTERVAL","_getStrategy","_defaultItemSizeFunc","moveEventData","offsetRatio","isFast","_calcTargetOffset","normalizeArg","xItem","yItem","SchedulerTimelineMonth","_SchedulerTimeline","dateOfLastViewCell","_swatch_container","MODULE_NAMESPACE","TrackerView","_unsubscribeFromCallback","_positionChanged","_tablePositionController","_subscribeToCallback","SeparatorView","_renderSeparator","ColumnsSeparatorView","_isTransparent","columnsSeparatorTransparent","moveByX","outerX","changeCursor","cursorName","BlockSeparatorView","groupPanelOptions","startAnimate","toOptions","DraggingHeaderView","_isDragging","isDragging","_getDraggingPanelByPos","_dragOptions","_resetTargetColumnOptions","_dropOptions","targetColumnIndex","targetColumnElement","posX","posY","_getVisibleIndexObject","getCommonSettings","_controller","_columnsResizerViewController","dragHeader","isCommandColumn","sourceColumnIndex","sourceColumnElement","_onSelectStart","onselectstart","drag","whiteSpace","moveHeader","dragOptions","moveDeltaX","moveDeltaY","newLeft","newTop","dockHeader","pointsByTarget","dock","dropHeader","isNextColumnResizingMode","ColumnsResizerViewController","_isHeadersRowArea","headersRowHeight","_isRtlParentStyle","_this$_$parentContain","_$parentContainer","isNextColumnMode","isRtlParentStyle","firstPointColumnIndex","_moveSeparator","columnsSeparatorWidth","_columnsSeparatorView","parentOffsetLeft","_isResizing","_resizingInfo","_updateColumnsWidthIfNeeded","_previousParentOffset","_isReadyResizing","_trackerView","_getNextColumnIndex","_setupResizingInfo","nextColumnIndex","currentHeader","nextHeader","startPosX","currentColumnWidth","nextColumnWidth","_pointsByColumns","_unsubscribeFromEvents","_moveSeparatorHandler","_startResizingHandler","_endResizingHandler","_subscribeToEvents","nextCellWidth","needUpdate","resizingInfo","adaptColumnWidthByRatio","isPercentWidth","setColumnWidth","oldColumnWidth","totalPercent","correctContentWidth","_subscribesToCallbacks","_unsubscribeFromCallbacks","_unsubscribes","generatePointsByColumnsHandler","generatePointsByColumnsScrollHandler","previousScrollbarVisibility","previousTableHeight","scrollbarVisibility","TablePositionViewController","diffOffsetTop","columnsHeadersHeight","scrollBarWidth","columnsResizerController","draggingHeaderView","_pagerView","targetPoint","columnsSeparatorView","blockSeparatorView","trackerView","targetColumn","nameDraggingPanel","_getSeparator","_blockSeparatorView","hideSeparators","blockSeparator","columnsSeparator","_animationColumnIndex","_draggingHeaderView","_headerPanelView","_columnChooserView","allowDrop","hasTargetVisibleIndex","moveColumn","tablePosition","_translator2","completeAction","removeDuplicates","intersection","entity","what","indexParameterName","needIndexCallback","indexedItems","parameterIndex","cb","_getPoints","createPoint","openYExist","closeYExist","_drawMarkerInGroup","_getMinTrackerWidth","expand","Flags","isServerSide","combineMaps","baseMap","thisMap","combineLists","baseList","thisList","buildTotalChanges","createChainExecutor","executeChain","_chain","expander","_inherit","initialChanges","themeDependentChanges","optionChangesMap","partialOptionChangesMap","partialOptionChangesPath","optionChangesOrder","layoutChangesOrder","customChangesOrder","MONTHS","DAYS","PERIODS","QUARTERS","cutCaptions","captions","lengthByFormat","narrow","DateViewRoller","showOnClick","_renderSelectedItemFrame","_renderContainerClick","_renderSelectedValue","_renderItemsClick","_renderWheelEvent","_wrapAction","_endActionHandler","_renderSelectedIndexChanged","_selectedIndexChanged","_isWheelScrolled","originalAction","_$items","_fitIndex","_moveTo","_getItemPosition","_renderActiveStateItem","_itemHeight","_getItemSelector","_itemElementIndex","_shouldScrollToNeighborItem","_prepareDirections","_validate","_fitSelectedIndexInRange","_isInNullNeighborhood","_getSelectedIndexAfterScroll","currentSelectedIndex","_getNewSelectedIndex","newSelectedIndex","_fireSelectedIndexChanged","_refreshSelectedIndex","fitIndex","SINGLE_COLUMN_ITEM_CONTENT","FIELD_BUTTON_ITEM_CLASS","FIELD_EMPTY_ITEM_CLASS","FIELD_ITEM_CONTENT_LOCATION_CLASS","FIELD_ITEM_LABEL_ALIGN_CLASS","FIELD_ITEM_LABEL_LOCATION_CLASS","LABEL_HORIZONTAL_ALIGNMENT_CLASS","LABEL_VERTICAL_ALIGNMENT_CLASS","FORM_LAYOUT_MANAGER_CLASS","FIELD_ITEM_CONTENT_WRAPPER_CLASS","FIELD_ITEM_HELP_TEXT_CLASS","FIELD_ITEM_REQUIRED_CLASS","FIELD_ITEM_OPTIONAL_CLASS","FIELD_ITEM_REQUIRED_MARK_CLASS","FIELD_ITEM_OPTIONAL_MARK_CLASS","LAYOUT_MANAGER_ONE_COLUMN","FLEX_LAYOUT_CLASS","_selectionStrategy","_selectionStrategy2","_focusedItemIndex","filterIsChanged","_addSelectedItem","_removeSelectedItem","_setSelectedItems","changeItemSelection","isSelectedItemsChanged","isSelectable","isDataItem","changeItemSelectionWhenShiftKeyPressed","_resetItemSelectionWhenShiftKeyPressed","clearSelectedItems","isKeysEqual","_shiftFocusedItemIndex","_resetFocusedItemIndex","itemIndexStep","focusedData","focusedKey","isFocusedItemSelected","isOnePage","_onePageSelectAll","TableProps","_row","Row","__style","correctSkipLoadOption","pathEquals","updateGroupOffsets","loadTotalCount","skipCorrection","resultSkip","additionalGroupInfo","collapsedGroups","collapsedItemsCount","skipFirstItem","removeGroupLoadOption","createNotGroupFilter","appendCollapsedPath","collapsedGroup","removeLastItemsCount","needRemoveFirstItem","offsetInfo","itemsCountCorrection","dataSourceItems","DEFAULT_CONFIG","getSignParts","isPercentFormat","formatString","floatPointIndex","isEscape","getFloatPointIndex","floatFormatParts","minFloatPrecision","getRequiredDigitCount","maxFloatPrecision","getNonRequiredDigitCount","minIntegerPrecision","maxIntegerPrecision","integerLength","floatPrecision","groupSizes","valueParts","valueIntegerPart","normalizeValueString","reverseString","valueFloatPart","valueString","applyGroups","integerString","formatNumberPart","floatString","isPercent","prepareValueText","positiveFormat","getFormatByValueText","negativeFormat","removeStubs","floatFormat","valuePart","minDigitCount","maxDigitCount","escapeIndex","isIntegerPart","nextValueText","hasGroups","valueTextParts","decimalSeparatorIndex","parseTranslate","getTranslate","getTranslateCss","clearCache","TRANSFORM_MATRIX_REGEX","TRANSLATE_REGEX","isPercentValue","cacheTranslate","matrix","is3D","finishTransition","originalTransition","stylesConfig","translateString","circularIndicators","_circular_range_container","_normalizeAngle","dxCircularGauge","_factoryMethods","tickCorrection","_setupCodomain","startCosSin","endCosSin","startCos","startSin","endCos","endSin","getSides","endCoord","_measureMainElements","scaleMeasurement","maxHorizontalOffset","maxVerticalOffset","maxInverseHorizontalOffset","maxInverseVerticalOffset","horizontalMargin","verticalMargin","inverseHorizontalMargin","inverseVerticalMargin","measurements","srcRect","selfAspectRatio","getWidth","selectRectByAspectRatio","_innerRect","totalRadius","getCodomainRange","SchedulerTimelineWeek","isblank","isnotblank","OPERATION_NAME","getIconByFilterOperation","getNameByFilterOperation","_circular_gauge","BarWrapper","_getSampleText","getSampleText","_formatValue","_compareArrays","_patchFontOptions","_noop","_barsGroup","_animateStep","bars","_bars","_checkOverlap","_setupAnimationSettings","textEnabled","fontStyles","_textIndent","connectorColor","textY","_renderBars","_outerRadius","_barSpacing","baseAngle","_arrangeBars","barSize","_count","_setBarsCount","textRadius","unitOffset","arrange","_animateBars","_updateBars","_dummyBackground","applyValue","sortedBars","currentIndex","nextIndex","checkIntersect","hideLabel","beginAnimation","paletteExtensionMode","barValues","_updateValues","_resizing","_change_VALUES","_change_NODES","_getLegendData","labelFormatOptions","legendFormatOptions","itemTextFormat","setAngles","angle1","angle2","compareFloats","value1","value2","_background","_bar","_visible","setAngle","anotherBar","calculateLabelCoords","anotherCoords","bottomRight","topLeft","_processValue","_uiDate_boxStrategy2","_uiDate_boxStrategy3","_uiDate_boxStrategy4","_uiDate_boxStrategy5","PICKER_TYPE","calendar","rollers","STRATEGY_NAME","STRATEGY_CLASSES","Calendar","Native","CalendarWithTime","List","DateBox","_renderButtonContainers","customizeButtons","showAnalogClock","pickerType","invalidDateMessage","dateOutOfRangeMessage","_updatePickerOptions","_pickerType","_initStrategy","_toLowerCaseFirstLetter","strategyName","_getStrategyName","_getFormatType","currentType","isTime","_refreshFormatClass","_refreshPickerTypeClass","renderInputMinMax","_formatValidationIcon","_this$_strategy$_upda","_this$_strategy","_updatePopupHeight","DATEBOX_CLASS","clearButtonWidth","_getClearButtonWidth","longestElementDimensions","_getLongestElementDimensions","curWidth","shouldHideValidationIcon","_storedPadding","leftPadding","rightPadding","_isClearButtonVisible","clearButtonElement","longestValue","$longestValueElement","createTextElementHiddenCopy","storedPadding","necessaryWidth","_renderPopupWrapper","_getPopupTitle","classPostfixes","DATEBOX_WRAPPER_CLASS","getLastPopupElement","popupShowingHandler","popupHiddenHandler","_isNativeType","_getDisplayedText","renderValue","submitFormat","displayedText","_getFormatByMode","parsedDate","_getParsedDate","_getDateByDefault","_applyInternalValidation","useCurrentDateByDefault","getDefaultDate","parsedText","getParsedText","isDateInRange","validationMessage","_applyCustomValidation","_serializeDate","_isValueChanged","_isTextChanged","_refreshStrategy","_this$_applyInternalV","_getSerializationFormat","isValueChanged","createDefaultOptionRules","deviceMatch","normalizeOptions","cachedGetters","ruleOptions","deviceFilter","optionsObject","functionsAsIs","_PlainEditStrategy","MenuBaseEditStrategy","getMenuItems","_getTemplateString","imageString","widthPt","heightPt","mainPage","xref","mainPageLength","contentLength","infoLength","pad","mainContent","trailer","composePdfString","getBlob","getBase64","BOUNDARY_VALUES","_refreshItems","_timeListItemTemplate","_widgetItems","_getTimeListItems","_setSelectedItemsByValue","_asyncScrollTimeout","dateIndex","_getDateIndex","_areDatesEqual","_getBoundaryDate","_getRangeItems","rangeDuration","rangeItems","boundaryValue","dropDownOptionsHeight","_timeList","subscribeVisibilityChange","onDocumentVisibilityChange","unsubscribeVisibilityChange","hiddenFocus","isHiddenFocusing","executeKeyDown","$mainElement","keyDownHandler","fireKeyDownEvent","ariaLabel","getActiveAccessibleElements","focusedElementInfo","viewInstance","saveFocusedElementInfo","processKeyDown","mouseDownHandler","isMouseDown","focusinHandler","GRID_CELL_SELECTOR","TREELIST_CELL_SELECTOR","viewItemSelectorMap","groupPanel","columnHeaders","filterPanel","viewElement","$viewElement","findFocusedViewElement","viewSelectors","$focusViewElement","visibilityState","viewNames","viewItemIndex","_viewName","EVENTS","Focus","_addNamespace","_NAME","_createEventHandlers","_createProjectionHandlers","getEventCoords","getPointerId","getMultitouchEventCoords","wheel","_detachHandlers","_docHandlers","_rootHandlers","_startClick","_clickState","_endClick","$event","_startDrag","_dragState","_moveDrag","_endDrag","_wheelZoom","_wheelLock","dirTime","adjustWheelDelta","_startZoom","pointer2","_zoomState","pointer1","x1_0","y1_0","x2_0","y2_0","_moveZoom","_endZoom","startDistance","currentDistance","_startHover","_doHover","_moveHover","_cancelHover","_hoverTarget","_hoverState","_startFocus","_doFocus","_cancelFocus","turnOff","turnOn","DATA_KEY","_isTouchEnabled","_isWheelEnabled","touchEnabled","wheelEnabled","_activeData","_disabled","_offTimer","onCheck","E4000","E4001","E4002","E4003","E4004","E4005","E4006","E4007","E4008","E4009","E4010","E4011","E4012","E4013","E4014","E4015","E4016","E4017","E4018","E4019","E4020","E4021","E4022","E4023","E4024","W4000","W4001","W4002","eventManager","_proxiedCancelHandler","_cancelHandler","_proxiedAcceptHandler","_acceptHandler","_pointerMoveHandler","_pointerUpHandler","_mouseWheelHandler","_eachEmitter","activeEmitters","_activeEmitters","_applyToEmitters","resetEmitter","_updateEmitters","_isSetChanged","_cleanEmitters","_fetchEmitters","currentSet","_closestEmitter","previousSet","_emittersSet","setChanged","handleEmitter","addCancelCallback","addAcceptCallback","emitters","acceptedEmitter","_cancelEmitter","canceledEmitter","removeCancelCallback","removeAcceptCallback","emitterIndex","_allowInterruptionByMouseWheel","_adjustWheelEvent","allowInterruption","closestGestureEmitter","verticalGestureDirection","emitterConfig","emitterClass","emitterName","emitterEvents","subscriptions","delegateSelector","disposeEmitter","_uiScrollable2","_uiScrollable3","SCROLLABLE","Scrollable","onBounce","inertiaEnabled","_setUseSimulatedScrollbar","_initScrollableMarkup","_getWindowDevicePixelRatio","_updateRtlPosition","_savedScrollOffset","_renderStrategy","_renderDisabledState","_createActions","_rtlConfig","scrollRight","windowPixelRatio","_isHorizontalAndRtlEnabled","skipUpdating","initEventData","_initHandler","_this$_container$get","_updateIfNeed","_lock","_unlock","_createStrategy","_resetInactiveDirection","inactiveProp","_getInactiveProp","_updateAllowedDirection","_allowedDirectionValue","_applyScaleRatio","elementInsideContent","elementIsInsideContent","_elementPositionRelativeToContent","pushBackOffset","scrollLocation","endDistance","_hasScrollContent","TooltipViewer","layerCollection","proxy","byName","getProxy","_default_adapter","Validator","_initAdapter","_validationInfo","skipValidation","removeRegisteredValidator","registerValidatorInGroup","dxStandardEditor","_this$option$editor$o","_this$option$editor","_resetValidationRules","_getValidationRules","_validationRules","currentError","currentResult","brokenRule","_applyValidationResult","pendingRules","_updateValidationResult","validatedAction","chartLineSeries","polarLineSeries","calculateBezierPoints","baseAreaMethods","_createBorderElement","defaultSegment","lineParams","areaParams","borderElement","borderStyle","singlePointSegment","areaSeries","processedPoints","_processSinglePointsAreaSegment","areaPoints","createAreaPoints","getAxisPosition","edgeOffset","stepLineSeries","previousMiddlePoint","middlePoint","areaDefaultSegment","DRAG_UPDATE_EVENT_NAME","shutterZoom","ctx","triggerStart","triggerEnd","lastPane","_shutterZoom","insertOperation","operations","newLineOperation","listDecoratorMatches","getIndent","_array_compare","_customizeStoreLoadOptions","_correctionIndex","_refreshItemsCache","_findItemElementByKey","_isItemStrictEquals","_partialRefresh","findChanges","_itemsCache","itemCache","_updateByChange","isPartialRefresh","_insertByChange","_beforeItemElementInserted","_updateSelectionAfterRemoveByChange","removeIndex","_removeByChange","oldItem","$removedItemElement","nextSiblingElement","dxPolarChart","axisUserOptions","argumentAxisOptions","useSpiderWeb","spiderWidget","_calcCanvas","sizeStorage","_createClipPathForPane","_createClipCircle","getActualAngle","getXYFromPolar","layoutInfo","argAngle","translatedRadius","getTranslatedAngle","polarChart","Cache","correctStackCoordinates","currentStacks","barsArea","seriesStackIndexCallback","extraParameters","stackIndex","barPadding","validateBarPadding","barWidth","calculateParams","correctPointCoordinates","adjustBarSeriesDimensionsCore","commonStacks","allArguments","seriesInStacks","getBarOverlapGroup","pointsByArgument","ignoreEmptyPoints","isStackExist","percentWidth","fixedBarWidth","getVisibleSeries","getAbsStackSumByArg","stackKeepers","negative","getSeriesStackIndexCallback","stackCount","adjustBarSeriesDimensions","adjustStackedSeriesValues","holesStack","lastSeriesInPositiveStack","lastSeriesInNegativeStack","hole","getFirstValueSign","holes","isNotBarSeries","currentStack","_skipSetLeftHole","_skipSetRightHole","_stackKeepers","getStackSumByArg","updateStackedSeriesValues","valueAxisTranslator","minShownBusinessValue","fullStacked","getValueType","stackSum","updateFullStackedSeriesValues","updateBarSeriesValues","adjustCandlestickSeriesDimensions","adjustBubbleSeriesDimensions","sizeProportion","visibleAreaX","visibleAreaY","minBubbleArea","maxBubbleArea","equalBubbleSize","minPointSize","maxPointSize","seriesItem","sizeDispersion","areaDispersion","updateSeriesValues","_control_bar","_gesture_handler","_data_exchanger","_map_layer","_tooltip_viewer","_vector_map","RE_STARTS_LAYERS","RE_ENDS_DATA_SOURCE","mergeBounds","sumBounds","dataBounds","dxVectorMap","onCenterChanged","onZoomFactorChanged","onHoverChanged","_initLayerCollection","_layerCollection","MapLayerCollection","_dataExchanger","_notifyDirty","_notifyReady","dataReady","_preventProjectionEvents","_getBoundsFromData","_allowProjectionEvents","longitudeLength","latitudeLength","_getBoundingBoxFromDataSource","boundsByData","getMaxBound","getLayers","_initLegendsControl","_legendsControl","_layoutControl","_initControlBar","_controlBar","_initElements","preventProjectionEvents","generateDataKey","notifyCounter","_gestureHandler","LayoutControl","_createHtmlStructure","_prepareExtraElements","_tooltipViewer","_change_RESUME_LAYOUT","_setupInteraction","setRect","_optionChanging","layers","extraElements","legends","maxZoomFactor","_change_PROJECTION","_setProjection","_change_BOUNDS","_setBounds","_change_MAX_ZOOM_FACTOR","_setMaxZoom","_change_ZOOM_FACTOR","_setZoom","_change_CENTER","_setCenter","_change_BACKGROUND","_setBackgroundOptions","_change_LAYERS","_setLayerCollectionOptions","_change_CONTROL_BAR","_setControlBarOptions","_change_EXTRA_ELEMENTS","_change_LEGENDS","_setLegendsOptions","_change_TRACKER","_setTrackerOptions","_change_INTERACTION","setBackgroundOptions","infinityBounds","resultBBox","sumBBox","layerData","rootBBox","getLayerByIndex","byIndex","getLayerByName","_noEvent","convertCoordinates","convertToGeo","convertToXY","longitude","latitude","vectorMap","_datetime_breaks","TICKS_CORRECTIONS","sortingBreaks","getMarkerFormat","prevDate","markerInterval","datesDifferences","prepareDatesDifferences","getMaxSide","act","getConstantLineLabelMarginForVerticalAlignment","getLeftMargin","getRightMargin","maxLabelLength","getDistanceByAngle","_markerTrackers","opposite","axisCoord","getPredefinedPosition","tickStartCoord","_getTitleCoords","fromStartToEnd","_drawTitleText","titleOptions","originalSize","_drawDateMarker","pathElement","withoutStick","cropped","getEnd","dateMarker","dateMarkers","markerDate","markersAreaTop","_getLabelFormatOptions","getMarkerInterval","markerDates","origMin","getMarkerDates","prevDateMarker","_checkMarkersPosition","_initializeMarkersTrackers","nextMarker","markerTracker","markerLabelOptions","_markerLabelOptions","canvasLeft","canvasRight","canvasTop","canvasBottom","verticalCenter","horizontalCenter","maxLabel","linesOptions","labelVerticalAlignment","labelHorizontalAlignment","labelIsInside","_drawConstantLinesForEstimating","_estimateLabelHeight","sinCos","ticksData","constantLineOptions","labelIsVisible","labelValue","labelElement","constantLinesLabelsElement","labelBox","constantLinesBox","titleHeight","constantLinesHeight","stripOptions","boxTitle","loCoord","hiCoord","_wrapped","moreThanOriginalSize","seriesRange","_getStripLabelCoords","stripLabelOptions","getStripHorizontalAlignmentPosition","breakSize","currentBreak","newBreak","lastResult","_lastResult$cumulativ","_lastResult$cumulativ2","visibleRange","minDiff","ranges","edgePoints","curValue","curRange","generateRangesOnPoints","epsilon","_maxAutoBreakCount","generateAutoBreaks","_drawBreak","translatedEnd","breakStart","isWaved","spaceAttr","rotateLine","drawer","getLineDrawer","_createBreakClipRect","clipWidth","_breaksElements","_createBreaksGroup","clipFrom","clipTo","customCanvas","additionGroup","additionBreakFrom","additionBreakTo","breakOptions","mainGroup","breakCoord","_getSpiderCategoryOption","axesSpacing","constantLinesGroups","shiftGroup","orthogonalAxis","resolvedPosition","getResolvedPositionOption","orthogonalTranslator","orthogonalAxisType","validPosition","positionIsBoundary","_options$customPositi","customPosition","_this$_orthogonalPosi","oppositeAxes","overlappingObj","_detectElementsOverlapping","_shiftThroughOrthogonalAxisOverlappedTick","oppositeLabel","_shiftThroughAxisOverlappedTick","orthogonalAxisPosition","orthogonalAxisLabelOptions","orthogonalAxisLabelPosition","orthogonalAxisLabelIndent","translateCoordName","defaultOrthogonalAxisLabelPosition","outsidePart","insidePart","_tick$mark","tickMarkBBox","labelIndent","defaultLabelPosition","labelSize","markerCoord","element1","element2","rotatePoints","topPoint","bottomPoint","lineCoords","TextEditorButton","$placeMarker","_isRendered","_this$_create","_create","_addPlaceMarker","_shouldRender","_uiSchedulerAppointmentsPositioningStrategy2","BaseRenderingStrategy","_initPositioningStrategy","getCollectorTopOffset","getCollectorLeftOffset","_positioningStrategy","_isAdaptive","_maxAppointmentCountPerCell","_defaultHeight","_allDayHeight","_allDayCellHeight","_correctRtlCoordinates","positionArray","_getSortedPositions","resultPositions","_getResultPositions","_getExtendedPositionMap","intervalWidth","initialWidth","coordinate","_getAppointmentCoordinates","calculateAppointmentHeight","calculateAppointmentWidth","resultWidth","multiWeekAppointmentParts","initialRowIndex","initialCellIndex","_needVerifyItemSize","currentMaxAllowedPosition","isAppointmentGreaterThan","_reduceMultiWeekAppointment","_getAppointmentParts","_getAppointmentPartsPosition","appointmentParts","appointmentWidth","etalon","comparisonParameters","positionList","createItem","_positionList$rowInde","_sortCondition","isSomeEdge","_isSomeEdge","_normalizeCondition","secondItem","areItemsInTheSameTable","areItemsAllDay","_getOrientation","_checkItemsCrossing","firstItemSide_1","firstItemSide_2","secondItemSide_1","secondItemSide_2","sortedArray","maxIndexInStack","findFreeIndex","_skipSortedIndex","startNewStack","pushItemsInResult","_isItemsCross","_getMaxAppointmentCountPerCell","iKey","jKey","iValue","jValue","positionCounter","mapLength","resultString","itemLength","_checkLongCompactAppointment","_splitLongCompactAppointment","appointmentCountPerCell","compactCount","_getCompactAppointmentParts","compactPart","_getCompactLeftCoordinate","viewEndDate","currentViewEndTime","daylightDiff","_needAdjustDuration","_calculateDurationByDaylightDiff","countFullWidthAppointmentInCell","getPositioningStrategy","appointmentHeight","_correctCollectorCoordinatesInAdaptive","_markAppointmentAsVirtual","_isAppointmentEmpty","_getAppointmentMinHeight","_getAppointmentMinWidth","_getOffsets","appointmentDefaultOffset","_getAppointmentCount","_getDefaultRatio","_getDynamicAppointmentCountPerCell","getDynamicAppointmentCountPerCell","getAppointmentDefaultOffset","_rrule","ruleNames","freqNames","SU","MO","TU","WE","TH","FR","SA","loggedWarnings","RecurrenceProcessor","rRule","rRuleSet","RecurrenceValidator","startDateUtc","endDateUtc","minDateUtc","maxDateUtc","_initializeRRule","minTime","leftBorder","_getLeftBorder","correctDate","_parseRecurrenceRule","validateRRule","byday","_getTimeZoneOffset","offsetDate","getAsciiStringByDate","initialDate","arrayDate","isUTCString","_prepareDateArrayToParse","RRule","parseString","dtstart","wkst","_createRRule","splitDates","_getDatesByRecurrenceException","exdate","RRuleSet","rrule","ruleValues","getDateByAsciiString","ruleObject","ruleParts","ruleName","ruleValue","_brokenRuleNameExists","_wrongCountRule","_wrongIntervalRule","_wrongDayOfWeek","_wrongByMonthDayRule","_wrongByMonth","_wrongUntilRule","_logBrokenRule","wrongUntil","wrongCount","wrongByMonthDay","byMonthDay","wrongByMonth","byMonth","wrongInterval","brokenDaysExist","brokenRuleExists","getCompareFunction","valueA","valueB","aIsDefined","bIsDefined","foreachDataLevel","mergeArraysByMaxValue","values1","values2","fieldsDataType","parseFields","fieldsList","initProperties","initValue","foreachTreeAsyncDate","createForeachTreeFunc","foreachTreeFunc","parentAtFirst","isChildrenProcessing","createForeachTreeAsyncHandler","childrenDeferred","createCustomStoreMethod","errorRowEnabled","errorHandling","_createErrorRow","$errorRow","$closeButton","$errorMessage","_renderErrorMessage","errorRowIndex","renderErrorRow","$errorMessageElement","$firstErrorRow","resizingController","$columnHeaders","$rowsViewElement","dataErrorOccurred","_template_base","watchChanges","fieldsDispose","globalDispose","globalWatch","dataWithRawFields","resolvedData","missedFields","watchHandlers","fieldsWatch","_fieldsMap","_watchMethod","SchedulerTimelineDay","hoveredScrollable","activeScrollable","isSluggishPlatform","ACCELERATION","BOUNCE_FRAMES","BOUNCE_ACCELERATION_SUM","InertiaAnimator","VELOCITY_LIMIT","_isFinished","_velocity","_scrollStep","_acceleration","_stopComplete","BounceAnimator","MIN_VELOCITY_LIMIT","_crossBoundOnNextStep","_bounceLocation","_initAnimators","_initScrollbar","_topReached","_bottomReached","_scrollProp","_inertiaAnimator","_bounceAnimator","_scrollByThumb","_visibilityModeNormalize","_scrollbarVisible","_$scrollbar","prevLocation","_suppressBounce","_bounceEnabled","_boundLocation","_moveContentByTranslator","_scaleRatio","realDimension","_getRealDimension","baseDimension","_getBaseDimension","translateOffset","_maxScrollPropValue","_translateOffset","_hideScrollbar","_scrollToBounds","_bounceAction","_setupBounce","bounceDistance","nextLocation","_stopDeferred","_stopScrolling","_prepareThumbScrolling","scrollbarClicked","_isScrollbar","_moveToMouseLocation","_thumbScrolling","_isThumb","_crossThumbScrolling","_isAnyThumbScrolling","_isThumbScrollingHandler","mouseLocation","_containerToContentRatio","_moveHandler","_scrollBy","_scrollByHandler","_endHandler","_inertiaHandler","_resetThumbScrolling","_suppressInertia","_inertiaEnabled","_stopHandler","_disposeHandler","_resetScaleRatio","_updateLocation","locationChanged","_createActionsHandler","actions","bounce","isOverflowHidden","containerScrollSize","_validateEvent","_isContent","_scrollByContent","_reachedMin","_reachedMax","_cursorEnterHandler","_cursorLeaveHandler","_createScrollers","_attachKeyboardHandler","_attachCursorHandlers","scrollbarVisible","isAnyThumbScrolling","_getPropByDirection","isThumbScrollingVertical","isThumbScrollingHorizontal","_suppressDirections","_stopAction","_eachScroller","_validDirections","_startAction","_saveActive","_resetActive","_adjustDistance","_tryGetDevicePixelRatio","_refreshCursorState","_endAction","SCROLLABLE_SIMULATED","_updateHandlerTimeout","_scrollByLine","_scrollByPage","_scrollToHome","_scrollToEnd","_wheelProp","_dimensionByProp","_createActionHandler","_createScrollerActions","_arguments","actionHandler","scrollerX","scrollerY","_hoverHandled","targetScrollable","touchDirection","verticalScroller","horizontalScroller","_validateWheel","_wheelDirection","reachedMin","reachedMax","contentGreaterThanContainer","locatedNotAtBound","scrollFromMin","scrollFromMax","validated","_validateWheelTimer","StateStoringController","getStorage","getUniqueStorageKey","DATE_REGEX","parseDates","storageKey","_loadState","customLoad","_saveState","customSave","_windowUnloadHandler","_savingTimeoutID","MINSIZE_MAP","MAXSIZE_MAP","FLEX_JUSTIFY_CONTENT_MAP","FLEX_ALIGN_ITEMS_MAP","stretch","FLEX_DIRECTION_MAP","setFlexProp","styleExpr","FALLBACK_WRAP_MAP","FALLBACK_MAIN_SIZE_MAP","FALLBACK_CROSS_SIZE_MAP","FALLBACK_PRE_MARGIN_MAP","FALLBACK_POST_MARGIN_MAP","FALLBACK_CROSS_PRE_MARGIN_MAP","FALLBACK_CROSS_POST_MARGIN_MAP","MARGINS_RTL_FLIP_MAP","BoxItem","fireItemStateChangedAction","oldState","FlexLayoutStrategy","initSize","stylePropPrefix","justifyContent","_normalizedAlign","alignItems","_normalizedCrossAlign","flexPropPrefix","flexBasis","flexDirection","FallbackLayoutStrategy","verticalAlign","totalItemSize","_setItemsMargins","_chooseMarginSide","totalRatio","totalWeightedShrink","totalBaseSize","_baseSize","freeSpaceSize","_boxSize","factor","totalFactor","_parseSize","_boxSizeValue","_totalBaseSize","renderItems","renderAlign","renderCrossAlign","Box","_CollectionWidget","onItemStateChanged","_layoutStrategy","_initLayout","_initBoxQueue","renderBox","_renderAlign","_onItemStateChanged","_queueIsNotEmpty","_shiftItemFromQueue","_updateTimer","_isUpdated","$itemNode","boxConfig","_pushItemToQueue","mathPow","NUMBER_MULTIPLIERS","LOGARITHMIC_MULTIPLIERS","DATETIME_MULTIPLIERS","DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND","DATETIME_MINOR_MULTIPLIERS","MINOR_DELIMITERS","getLogValue","post","correctMinValueByEndOnTick","floorFunc","ceilFunc","resolveEndOnTick","businessViewInfo","forceEndOnTick","floorTickValue","tickValue","prevTickDataDiff","businessDelta","businessRatio","potentialTickScreenDiff","delimiterFactor","delimiterMultiplier","screenDelimiter","resolveEndOnTickLog","resolveEndOnTickDate","getBusinessDelta","getIntervalByFactor","addTickCount","getMultiplierFactor","factorDelta","calculateTickInterval","forceTickInterval","multipliers","onlyIntegers","adjustInterval","calculateMinorTickInterval","getAdjustIntervalLog","numbersReducer","yearsReducer","calculateTickIntervalDateTime","adjustIntervalDateTime","getDataTimeMultipliers","calculateMinorTickIntervalDateTime","getTickIntervalByCustomTicks","addIntervalDate","addIntervalWithBreaks","calculateTicks","correctMinValue","gaps","correctTickValue","correctTickValueOnGapSize","calculateMinorTicks","updateTickInterval","maxCount","lastMajor","firstMajor","tickBalance","middleTicks","prevTick","filterTicks","tmpTicks","generator","getMajorTickIntervalByCustomTicks","getMinorTickIntervalByCustomTicks","convertTickInterval","processScaleBreaks","correctUserTickInterval","processCustomTicks","generateMajorTicks","minorBusinessDelta","minorScreenDelta","generateMinorTicks","getBaseTick","breakValue","insideTick","getScaleBreaksProcessor","addCorrection","breakTicks","correctValueByIntervalLog","getRound","logarithmicGenerator","raise","absLog","logAbsValue","absRaise","mathRaiseTo","ceilNumber","getBusinessDeltaLog","addIntervalLog","dummyGenerator","discreteGenerator","floorNumber","divider","floorAtStartDate","calculateTickIntervalByCustomTicks","dateGenerator","numericGenerator","_base_sparkline","dxBullet","_zeroLevelPath","_targetPath","_barValuePath","_drawBullet","startScaleValue","endScaleValue","isValueUndefined","isTargetUndefined","_tooltipEnabled","isValidBounds","isValidMin","isValidMax","isValidValue","isValidTarget","_drawBarValue","_drawTarget","_drawZeroLevel","_getTargetParams","translatorY","_getBarValueParams","translatorX","startLevel","endLevel","_getZeroLevelParams","targetText","originalTarget","originalRowClick","originalHandleDataChanged","nodeExists","recursive","selectionController","isRecursiveSelection","updateSelectionState","_selectionStateByKey","_getSelectionConfig","isRowSelected","renderSelectCheckBoxContainer","_renderSelectCheckBox","_attachCheckBoxClickEvent","_updateSelectColumn","_getSelectAllNodeKeys","visibleKeys","selectedVisibleKeys","selectRows","deselectRows","selectedRowKeys","_normalizeSelectionArgs","_isSelectionNormalizing","selectedRowsData","keyboardKeys","_updateParentSelectionState","_updateChildrenSelectionState","_updateSelectionStateCore","_getSelectedParentKeys","useCash","selectedParentNode","_getSelectedChildKeys","keysToIgnore","ignoreKeyIndex","_normalizeParentKeys","parentNodeKeys","_normalizeChildrenKeys","_normalizeSelectedRowKeysCore","isSelect","currentSelectedRowKeys","currentDeselectedRowKeys","_isModeLeavesOnly","_getAllSelectedRowKeys","parentKeys","insertIndex","_getParentSelectedRowKeys","_getLeafSelectedRowKeys","isRecursive","getSelectedRowKeys","renderSelectAll","_renderSelectAllCheckBox","_number_box2","CARET_TIMEOUT_DURATION","useMaskBehavior","_isDeleteKey","_useMaskBehavior","_revertSign","_removeHandler","_arrowHandler","_moveCaretToBoundaryEventHandler","_updateFormattedValue","clearCaretTimeout","_caretTimeout","_getInputVal","shouldHandleEvent","_focusOutOccurs","_hasValueBeenChanged","_getFormatPattern","_updateParsedValue","_adjustParsedValue","_setTextByParsedValue","_parsedValue","nextCaret","_moveCaretToBoundary","newCaret","_shouldMoveCaret","isDecimalSeparatorNext","isZeroNext","moveToFloat","_lastKey","zeroToZeroReplace","_lastKeyName","_shouldHandleKey","normalizedText","enteredChar","_tryParse","isDeleteKey","isBackspaceKey","_isStub","valueAfterRemoving","_isNonStubAfter","_isPercentFormat","_parse","formatOption","isCustomParser","formatPointIndex","textPointIndex","formatIntegerPartLength","textIntegerPartLength","_currentFormat","_updateFormat","isLDMLPattern","_getFormatForSign","_removeStubs","excludeComma","stubs","_getStubs","prefixStubs","postfixRegex","decoratorsRegex","stub","_truncateToPrecision","maxPrecision","strValue","editedText","isTextSelected","_getParsedValue","_getPrecisionLimits","isDecimalPointRestricted","isUselessCharRestricted","textWithoutStubs","parsedValueSign","pointIndex","isCaretOnFloat","floatLength","isPrecisionInRange","endsWithZero","_setInputText","_formattedValue","_renderInputType","isNumberType","_setInputType","_isChar","isSpecialChar","isMinusKey","_renderFormatter","_clearCache","_detachFormatterEvents","_attachFormatterEvents","_isInputFromPaste","_isValuePasted","escapedDecimalSeparator","floatPart","_applyRevertedSign","preserveSelectedText","currentText","caretInBoundaries","_removeMinusFromText","textWithoutMinus","wasMinusRemoved","_uiSchedulerWork_spaceGroupedStrategy","_uiSchedulerWork_spaceGroupedStrategy2","_appointmentDragBehavior","_widgetObserver","_view_data_provider","_layout2","_virtual_selection_state","ALL_DAY_TABLE_CELL_CLASS","DATE_TABLE_CELL_CLASS","SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME","SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME","SCHEDULER_CELL_DXDROP_EVENT_NAME","SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME","SCHEDULER_CELL_DXCLICK_EVENT_NAME","SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME","SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME","SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME","DAY_MS","SCHEDULER_DRAG_AND_DROP_SELECTOR","CELL_SELECTOR","ScrollSemaphore","formatWeekday","_WidgetObserver","SchedulerWorkSpace","_showPopup","_cellClickAction","arrowPressHandler","_moveToCell","_getCellFromNextRow","$rightCell","_getCellFromNextColumn","$leftCell","_this$virtualScrollin","virtualScrollingDispatcher","_disposeRenovatedComponents","$currentCell","_checkForViewBounds","$focusedCell","$nextCell","nextColumnDirection","isDirectionNext","previousColumnDirection","_isRTL","isHorizontalGrouping","_getTotalCellCount","rowCellCount","lastIndexInRow","resultingSign","_isEdgeCell","_isGroupEndCell","edgeCellIndex","isNextCellGreaterThanEdge","isNextCellLessThanEdge","cellsInRow","endCell","startCell","_setSelectedAndFocusedCells","updateViewData","$correctedCell","_correctCellForGroup","_setSelectedCells","_setFocusedCell","_releaseFocusedCell","_this$_getCoordinates","_getCoordinatesByCell","isAllDayCell","_hasAllDayClass","virtualSelectionState","setFocusedCell","getFocusedCell","_dom_getAllDayPanelCell","_dom_getDateCell","_toggleFocusedCellClass","$firstCell","_releaseSelectedCells","_setSelectedCellsInVirtualMode","_setSelectedCellsInStandardMode","$selectedCells","getSelectedCellData","$previousCell","_$prevCell","$targetCells","_getCellsBetween","_this$_getCoordinates2","setSelectedCells","_this$_getCoordinates3","_setSelectedCellsByCellData","getSelectedCells","isValidFocusedCell","cellGroupIndex","_getGroupIndexByCell","focusedCellGroupIndex","isDifferentTables","isAllDayTable","focusedGroupIndex","_this$_getCoordinates4","getGroupIndexByCell","_isCellClick","_contextMenuHandled","_getFocusedCell","_this$virtualSelectio","_releaseSelectedAndFocusedCells","releaseSelectedAndFocusedCells","_removeAllDayElements","_initGrouping","_initGroupedStrategy","_createAllDayPanelElements","_toggleGroupByDateClass","_toggleAllDayVisibility","_changeAllDayVisibility","headerPanelOffsetRecalculate","_createSelectionChangedAction","_createCellClickAction","_toggleWorkSpaceCountClass","_toggleFixedScrollableClass","_toggleHorizontalScrollClass","_dateTableScrollableConfig","_isVirtualModeOn","_toggleGroupedClass","_toggleWorkSpaceWithOddCells","_headerSemaphore","_sideBarSemaphore","_dataTableSemaphore","_virtualSelectionState","_maxAllowedVerticalPosition","_maxAllowedPosition","_getElementClass","_toggleGroupingDirectionClass","_getDefaultGroupStrategy","_isWorkspaceWithOddCells","_needApplyLastGroupCellClass","addAdditionalGroupCellClasses","_$headerPanel","_$fixedContainer","FIXED_CONTAINER_CLASS","_$allDayContainer","_initAllDayPanelElements","isRenovatedRender","createRAllDayPanelElements","_allDayTitles","_allDayTables","_allDayPanels","_$allDayPanel","_$allDayTitle","$allDayTitle","$dateTableScrollable","_needCreateCrossScrolling","_createCrossScrollingConfig","isFree","_headerScrollable","_createHeaderScrollable","_createSidebarScrollable","$headerScrollable","_headerScrollableConfig","$timePanelScrollable","_setHorizontalGroupHeaderCellsHeight","_setTableSizes","_addTableClass","_attachTableClasses","getCellMinWidth","getWorkSpaceMinWidth","_attachHeaderTableClasses","allDayRowCount","_initWorkSpaceUnits","_initDateTableScrollable","_createWorkSpaceElements","_initVirtualScrolling","_setFocusOnCellByOption","renovatedRenderSupported","_renderGroupAllDayPanel","_insertAllDayRowsIntoDateTable","_getCellData","virtualScrollingState","_this$virtualScrollin2","renderRAllDayPanel","renderRTimeTable","renderRDateTable","updateRSelection","renderRComponent","renovatedAllDayPanel","_data$","_getAllCells","_isGroupsSpecified","_getGroupIndexByResourceId","findCellPositionInMap","getCoordinatesByDate","resourceTree","_getGroupIndexRecursively","prevIndex","_getIntervalDuration","_showAddAppointmentPopup","firstCellData","lastCellData","_createContextMenuAction","cellSelector","_contextMenuAction","_getGroupHeaderContainer","_makeGroupRows","_attachGroupCountAttr","groupedAttr","getGroupCountAttr","headerPanelHeight","headerHeight","getAllDayTableHeight","_getDateHeaderContainer","_getDateHeaderTemplate","_getCalculateHeaderCellRepeatCount","_cellIndex","_templateIndex","_renderDateHeaderTemplate","templateIndex","panelCellIndex","_getHeaderText","_getHeaderPanelCellClass","HEADER_PANEL_CELL_CLASS","calculateHeaderCellRepeatCount","_getAllDayPanelCellClass","_getDateByCellIndexes","_getGroupIndex","calculateTimeCellRepeatCount","_getTimeCellClass","_getTimeCellDateCore","skipRound","TIME_PANEL_CELL_CLASS","timeCellDuration","cellCountInDay","insertAllDayRowsIntoDateTable","getTotalCellCount","includeAllDayPanelRows","getTotalRowCount","_getTableAllDay","makeBranch","findLeafByIndex","_leaf","isPointerDown","_isOutsideScrollable","_$currentTableTarget","_getDateForHeaderText","_getFormat","calculateCellIndex","delayCellTemplateRendering","makeTable","_this$virtualSelectio2","_hiddenInterval","_this$renovatedAllDay","_this$renovatedDateTa","_this$renovatedTimePa","renovatedDateTable","renovatedTimePanel","getScrollableScrollTop","getLeftOffset","patchedIndexes","_patchCellIndex","_getMillisecondsOffset","_getOffsetByCount","_getDaysOfInterval","_getDateTables","_getCellByCoordinates","_getCellPositionWithCache","_getCellPosition","setCellDataCache","findGlobalCellPosition","$dateTableScrollableElement","isTargetInAllDayPanel","isOutsideHorizontalScrollable","isOutsideVerticalScrollable","aliasKey","$focusedCells","_getAllFocusedCells","_getMultipleCellsData","currentCell","_getCellDataInRenovatedView","getHorizontalMax","positionByMap","calculateCellPositionByView","getPositionShift","getTimeShift","horizontalHMax","_getHorizontalMax","vMax","getVerticalMax","getCellIndexByDate","_getCellPositionByIndex","_getVirtualRowOffset","timeInterval","_getIntervalBetween","_updateIndex","currentDayStart","currentDayEndHour","currentDateTime","currentDayStartTime","_getGroupIndexes","$droppableCell","_getDroppableCell","useCache","getMaxAllowedVerticalPositionVirtual","getMaxAllowedVerticalPositionStandard","getMaxPosition","getLasGroupCellPosition","_getWorkSpaceWidth","topIndex","getDateOfLastViewCell","endDateOfLastViewCell","calculateEndViewDate","_adjustEndViewDateByDaylightDiff","getGroupBoundsOffset","_getCellsInViewport","_this16$getCellData","totalColumnCount","scrollableScrollTop","scrollableScrollLeft","fullScrolledRowCount","scrolledRowCount","fullScrolledColumnCount","scrolledColumnCount","_isValidScrollDate","throwWarning","isScrollToAllDay","scrollableHeight","xShift","yShift","addTo","parseHeight","SPECIAL_HEIGHT_VALUES","getSizeByStyles","beforeName","afterName","boxParams","boundingClientRect","getBoxSizingOffset","getContainerHeight","getHeightWithOffset","withMargins","msMapsLoader","msMapsLoaded","Microsoft","Maps","road","aerial","Directions","RouteMode","Location","searchManager","SearchManager","searchRequest","where","searchResponse","boundsBox","northWest","getNorthwest","southEast","getSoutheast","loadModule","_createMap","credentials","showDashboard","showMapTypeSelector","showScalebar","_providerViewChangeHandler","addHandler","_viewChangeHandler","_providerClickHandler","targetType","labelOverlay","LabelOverlay","mapTypeId","LocationRect","fromLocations","pushpinOptions","htmlContent","pushpin","Pushpin","entities","infobox","Infobox","removeHandler","DirectionsManager","routeColor","fromHex","setRenderOptions","autoUpdateMapView","displayRouteSelector","waypointPushpinOptions","drivingPolylineOptions","strokeThickness","walkingPolylineOptions","setRequestOptions","routeMode","routeDraggable","waypoint","Waypoint","addWaypoint","directionHandlers","routeSummary","responseCode","calculateDirections","TimePanelCell","TimePanelCellProps","CellBase","timeCellTemplateProps","CellBaseProps","__timeCellTemplateProps","STATUS","BaseRuleValidator","rulesValidators","required","RequiredRuleValidator","_BaseRuleValidator","NumericRuleValidator","_BaseRuleValidator2","ignoreEmptyValue","useCultureSettings","RangeRuleValidator","_BaseRuleValidator3","validNumber","validValue","StringLengthRuleValidator","_BaseRuleValidator4","CustomRuleValidator","_BaseRuleValidator5","dataGetter","extraParams","validationCallback","AsyncRuleValidator","_CustomRuleValidator","reevaluate","_getWrappedPromise","CompareRuleValidator","_BaseRuleValidator6","comparisonTarget","comparisonType","PatternRuleValidator","_BaseRuleValidator7","_super8","EmailRuleValidator","_BaseRuleValidator8","_super9","stringLength","email","GroupConfig","_pendingValidators","_onValidatorStatusChanged","_resetValidationInfo","_unsubscribeFromAllChangeEvents","validatorResult","_addPendingValidator","_subscribeToChangeEvents","_raiseValidatedEvent","_updateValidationInfo","_unsubscribeFromChangeEvents","_removePendingValidator","_orderBrokenRules","orderedRules","foundRules","_updateBrokenRules","_resolveIfComplete","_synchronizeValidationInfo","registerValidator","ValidationEngine","$dxGroup","dxValidationGroup","initGroups","_setDefaultMessage","defaultFormattedMessage","defaultMessage","_addBrokenRule","asyncRuleItems","ruleValidationResult","ruleValidator","_validateAsyncRules","asyncResults","validateResult","ruleResult","_getPatchedRuleResult","_updateRuleConfig","_getAsyncRulesResult","_shouldRemoveGroup","validatorsInGroup","isDefaultGroup","isValidationGroupInstance","initedOptions","newStatus","windowObject","screenFactorCallback","itemClickAction","renderMenuItems","optionGetter","overflowGetter","itemVisible","itemOverflow","_getMenuItems","_updateMenuVisibility","_renderMenuButtonContainer","_$menuButtonContainer","_menuButtonClickHandler","$afterSection","toggleMenuVisibility","getMenuWidget","widgetOption","handleToolbarVisibilityChange","iconUtils","INSERT_INDEX","EDIT_MODES","ROW_BASED_MODES","CELL_BASED_MODES","FORM_BASED_MODES","MODES_WITH_DELAYED_FOCUS","EDIT_LINK_CLASS","edit","undelete","EDIT_ICON_CLASS","METHOD_NAMES","ACTION_OPTION_NAMES","BUTTON_NAMES","createFailureHandler","_getEditMode","editMode","_isRowEditMode","isEditingCell","allowEditing","isEditingOrShowEditorAlwaysDataCell","isCommandCell","isEditorCell","refreshMode","selectTextOnEditStart","confirmDelete","editRow","saveAllChanges","saveRowChanges","cancelAllChanges","cancelRowChanges","addRow","undeleteRow","confirmDeleteMessage","confirmDeleteTitle","startEditAction","editRowKey","editColumnName","getDefaultEditorTemplate","isOnForm","getButtonIndex","getButtonName","$pointerDownTarget","_editForm","_updateEditFormDeferred","_lastOperation","_saveEditorHandler","_pointerUpEditorHandler","_that$getController","_pointerDownEditorHandler","targetComponent","_editCellInProgress","isEditorPopup","checkEditorPopup","isDomElement","isAnotherComponent","isAddRowButton","isCellEditMode","_closeEditItem","_updateEditColumn","_internalState","getChanges","resetChanges","_getInternalData","_addInternalData","internalData","_getOldData","_this$_getInternalDat","editIndex","_fireDataErrorOccurred","getPopupContent","_needToCloseEditableCell","$targetCell","isEditCell","closeEditCell","editForm","_repaintEditPopup","_isDefaultButtonVisible","isRowMode","isBatchMode","_getVisibleEditRowIndex","_isButtonVisible","_getButtonConfig","buttonName","editingTexts","addRowToNode","getEditingTexts","editingOptions","allowAction","_getEditingButtons","buttonIndex","haveCustomButtons","_renderEditingButtons","_getEditCommandCellTemplate","isRowEditMode","isFormEditMode","isCellOrBatchEditMode","getEditMode","getFirstEditableColumnIndex","firstFormItem","_firstFormItem","editRowIndex","$editFormElements","_getEditFormEditorVisibleIndex","getFirstEditableCellInRow","getFocusedCellInRow","_inputFocusTimeoutID","editPopup","_editPopup","popupOptionName","_handleEditRowKeyChange","_handleEditColumnNameChange","_handleChangesChange","_resetEditColumnName","_resetEditRowKey","oldRowIndexCorrection","_getEditRowIndexCorrection","oldRowIndex","_getVisibleEditColumnIndex","_editCellFromOptionChanged","_editRowFromOptionChanged","oldColumnIndex","_repaintEditCell","isPageChanged","needResetIndexes","isEditRowKeyDefined","isEditColumnNameDefined","_setEditRowKey","_setEditRowKeyByIndex","getEditRowIndex","getEditFormRowIndex","popupVisible","getEditForm","_needInsertItem","dataRowIndex","_generateNewItem","_getLoadedRowIndexByInsertKey","loadedRowIndexOffset","loadedRowIndex","_changes$editIndex","modified","modifiedValues","_initNewRow","_getInsertKey","insertKey","_getInsertRowIndex","_getInsertIndex","parentRowIndex","maxInsertIndex","editItem","oldEditRowIndex","_allowRowAdding","__KEY__","_addRowCore","initialOldEditRowIndex","_showEditPopup","_focusFirstEditableCellInRow","_afterInsertRow","_delayedInputFocus","eventToTrigger","_isEditingStart","_beforeEditCell","_beforeUpdateItems","_setEditColumnNameByIndex","_visibleColumns$index","_setEditColumnName","_getEditColumn","_getColumnByName","editColumn","_resetEditIndices","_needFocusEditor","_focusEditorIfNeed","$editingCell","_this$_rowsView","editColumnIndex","_focusEditingCell","repaintForm","isMobileDevice","_getSaveButtonConfig","_getPopupEditFormTemplate","$popupContainer","_getEditPopupHiddenHandler","defaultAnimation","formTemplate","getEditFormTemplate","_removeInternalData","executeOperation","waitForDeferredOperations","editCell","_editCell","coreResult","_editCellCore","_getNormalizedEditCellOptions","oldColumn","isEditByOptionChanged","_this$_getNormalizedE","_prepareEditCell","_processCanceledEditingCell","beforeFocusCallback","callBeforeFocusCallbackAlways","inputFocus","_beforeFocusCallback","$editCell","_checkAndDeleteRow","showDialogTitle","confirmResult","_deleteRowCore","_fireOnSaving","onSavingParams","_executeEditingAction","_processChanges","dataChanges","changeCopy","_beforeSaveEditData","doneDeferred","_processSaveEditDataResult","hasSavedData","changesLength","_fireSaveEditDataEvents","_resolveAfterSave","_saving","_saveEditDataInner","_afterSaveEditData","_endSaving","_cancelSaving","_resetModifiedClassCells","_changes$","_refreshDataAfterSave","_cancelEditDataCore","isFullRefresh","isEditColumnVisible","_isEditColumnVisible","isVisibleWithCurrentEditMode","_applyModified","_beforeCloseEditCellInBatchMode","_beforeCancelEditData","_hideEditPopup","hasEditData","isError","withoutSaveEditData","_closeEditCellCore","_getRowIndicesForCascadeUpdating","skipCurrentRow","addDeferred","_this21","_prepareChange","_options$row","rowKey","setCellValue","_updateRowValues","updateFieldValue","forceUpdateRow","_this22","_focusPreviousEditingCellIfNeed","_updateEditRow","_needUpdateRow","isCustomSetCellValue","defaultSetCellValue","isCustomCalculateCellValue","visibleColumn","defaultCalculateCellValue","isUpdateInCellMode","_updateEditRowCore","_getFormEditItemTemplate","editCellTemplate","renderFormEditTemplate","detailCellOptions","isCustomEditorType","formItem","getEditorType","getFormEditorTemplate","_validator","$editorElement","validatorOptions","dxValidator","getEditFormOptions","detailOptions","userCustomizeItem","editFormItemClass","forEachFormItems","itemId","isRequired","renderFormOnly","editFormOptions","baseEditFormOptions","$buttonsContainer","getColumnTemplate","editingStartOptions","isRowEditing","isCellEditing","iconType","COMMAND_EDIT_CLASS","localizationName","getButtonLocalizationNames","prepareEditButtons","titleButtonTextByClassNames","revert","classNameButtonByNames","buttonItems","prepareButtonItem","isButtonDisabled","EDIT_BUTTON_CLASS","highlightDataCell","isCellModified","_allowEditAction","allowEditAction","needCallback","_applyChangeUpdate","_applyChangesOnly","_processItem","_getChangedColumnIndices","_isCellChanged","oldRow","newRow","editFormRowIndex","isRowRemoved","isRowInserted","isRowModified","_getColumnIndexByElement","_getColumnIndexByElementCore","_editCellByClick","_this23","_pointerDownTimeout","isEditForm","isEditableCell","_editCellPrepared","_formItemPrepared","_isFormItem","isDetailRow","SYMBOLS_TO_REMOVE_REGEX","getIntlFormatter","recognizableAsTwentyCentury","temporaryYearValue","formatDateTime","numeralsMapCache","getAlternativeNumeralsMap","normalizeNumerals","dateString","alternativeNumeralsMap","removeLeadingZeroes","normalizeMonth","intlFormats","dayofweek","weekday","longdate","longdatelongtime","longtime","monthandday","monthandyear","shortdate","shorttime","shortyear","getIntlFormat","monthNameStrategies","standalone","monthIndex","monthFormat","getIntlDayNames","hour12Formatter","hour12","hourNumberText","timeParts","intlFormat","_parseDateBySimpleFormat","formatParts","dateArgs","_generateDateArgs","constructValidDate","ampmShift","actual","expected","hoursShift","constructDate","formattedDate","Callback","_firing","_fired","_firingIndexes","_fireCore","firingIndexes","stopOnFalse","fired","getConsoleMethod","assert","assertParam","parameter","collectionWidget","resultIndex","_isNormalizedItemIndex","_isDOMNode","$value","transitionEndEventName","touchEvents","_getNavigator","transitionEndEventNames","webkitTransition","MozTransition","OTransition","msTransition","hasWindowProperty","detectTouchEvents","isPointerEnabled","canUsePointerEvent","detectPointerEvent","_defaultSetter","_cloneItem","cols","_c","DropDownBox","$tabbableElements","_getTabbableElements","_getElements","tabbable","displayValueFormatter","itemLoadDeferreds","$firstTabbable","$lastTabbable","moveBackward","moveForward","templateData","_canShowVirtualKeyboard","_isNestedElementActive","_shouldCloseOnTargetScroll","_this$callBase","_this$_popupPosition","popupLocation","$firstElement","setAnimationFrameMethods","requestID","nativeRequest","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","nativeCancel","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","canceledRequests","requestId","_ContextMenu","Submenu","onHoverStart","_renderDelimiter","$contentDelimiter","_overlayPositionedActionHandler","_showDelimiter","hoverStartAction","submenu","containerOffset","vLocation","hLocation","rootWidth","rootHeight","submenuWidth","submenuHeight","_isMenuHorizontal","sizeText","ValidationMessage","_checkParentVisibility","_renderInnerHtml","_updatePosition","_toggleModeClass","_updateContentId","contentId","validationErrorMessage","_target$outerWidth","positionSide","verticalPositions","_date3","_first_day_of_week_data","_date4","FORMATS_TO_PATTERN_MAP","quarterandyear","shortdateshorttime","possiblePartPatterns","dateLocalization","_getPatternByFormat","_expandPattern","possiblePatterns","getTimeSeparator","amTime","pmTime","amTimeFormatted","pmTimeFormatted","ldmlFormat","animationSvgStep","easingFunctions","easeOutCubic","currentParams","curSeg","currentSettings","animateStep","_progress","_calcProgress","_easing","_currentParams","delayTick","_startTime","Animation","_animationCount","_timerId","an","activeAnimation","_endAnimation","_endAnimationTimer","addAnimation","_startDelay","hasUnstoppableInAnimations","acquireTemplate","acquireIntegrationTemplate","defaultCreateElement","templateKey","validateTemplateSource","getNormalizedTemplateArgs","addOneRenderedCall","suitableTemplatesByName","rawTemplates","templatesMap","_findBestMatches$","suitableTemplate","templateResult","normalizeTemplateElement","Template","integrationTemplate","defaultTemplates","calculateFreeWidth","_getTotalWidth","calculateFreeWidthWithCurrentMinWidth","currentMinWidth","_initPostRenderHandlers","_refreshSizesHandler","resizeDeferred","needUpdateDimensions","_setAriaRowColCount","_getBestFitWidths","rowsColumnWidths","headerColumnWidths","footerColumnWidths","_footerView","_setVisibleWidths","columnId","getColumnId","_toggleBestFitModeForView","$rowsTables","$viewTables","$tableBody","$viewTable","$rowsFixedTable","_needStretch","_synchronizeColumns","resetBestFitMode","needBestFit","_needBestFit","hasMinWidth","isColumnWidthsCorrected","expandColumnWidth","isPixelWidth","_correctColumnWidths","_processStretch","_getAverageColumnsWidth","hasPercentWidth","hasWidth","_hasWidth","isHiddenColumn","_getRealColumnWidth","_maxWidth","resultSizes","unusedIndexes","diffElement","onePixelElementsCount","importantMarginClass","checkSize","_checkSize","prevResult","_resizeDeferred","_resetGroupElementHeight","_updateDimensionsCore","_lastHeight","_setScrollerSpacingCore","vScrollbarWidth","hScrollbarWidth","_setScrollerSpacing","$testDiv","rootElementHeight","maxHeightHappened","isMaxHeightApplied","_updateLastSizes","synchronizeScrolling","_scrollChangedHandler","_resizingController","_renderViews","isFirstRender","HorizontalRenderingStrategy","_getAppointmentDurationInMs","durationInCells","_customizeAppointmentGeometry","_calculateGeometryConfig","_customizeCoordinates","itemLeft","_columnCondition","_inArray","createCells","hStep","vStep","h1","h3","h4","v3","horInversion","verInversion","itemsList","adjustCellsAndApplyLayout","forceMode","hasHiddenItems","otherCell","size1","otherCell1","otherCell2","adjustCellSizes","cellRect","xOffset","yOffset","currentHeight","totalL","totalT","totalR","totalB","moves","applyCellLayout","_suspended","_updateLayout","applyLayout","ACTION_TO_EVENT_MAP","onCancel","Swipeable","_createEventData","getClosestCoord","closestCoord","closestDistance","getCrossCoord","indexOffset","barPointStrategy","labelPoint","xc","yc","rotatedBBox","figureCenter","isRectangular","lineIsVertical","symbolPointStrategy","piePointStrategy","_0","_1","isOutside","point1x","point1y","point2x","point2y","selectStrategy","disposeItem","checkBackground","checkConnector","_point","_rowCount","_figure","_textContent","_insideGroup","_connector","_setVisibility","holdInvisible","_holdVisibility","holdVisible","openValueText","closeValueText","lowValueText","highValueText","reductionValueText","_updateBackground","_getLabelVisibility","_bBoxWithoutRotation","_bBox","_getConnectorPoints","_shiftBBox","rowCountChanged","setTrackerData","connectorOffset","_compileValueGetter","_itemsToDataSource","_valueGetterExpr","_unwrappedValue","_getItemKey","_compareValues","_compareByCompositeKey","_compareByKey","unwrapObservable","valueKey1","valueKey2","_setCollectionWidgetItemTemplate","enqueue","discardPendingTasks","_tasks","_busy","removeTaskCallback","busy","BaseClass","InjectedClass","initialFields","injectFields","injectionObject","VerticalCurrentTimeShader","shaderHeight","_getShaderHeight","_getShaderMaxHeight","isSolidShader","_renderGroupedByDateShaderParts","_renderShaderParts","_getShaderWidth","_renderTopShader","_renderBottomShader","_renderAllDayShader","bottomShaderWidth","_$topShader","_getShaderTopOffset","_getShaderOffset","_$bottomShader","_$allDayIndicator","getGroupedStrategy","getShaderOffset","getShaderTopOffset","getShaderHeight","getShaderWidth","baseRangeSeries","val1Field","val2Field","_data$reduce","rangeValue1Field","rangeValue2Field","minCoordName","processedMinPointsCoords","bottomLine","drawnElement","bordersGroup","bottomLineParams","bottomBorderElement","PieTracker","ChartTracker","eventsConsts","LEGEND_HOVER_MODES","tryCheckParent","getParentData","eventCanceled","correctHoverMode","baseTrackerPrototype","_seriesGroup","_showPointTooltip","_hidePointTooltip","_pointerHandler","_chart","updateSeries","resetDecorations","noHoveredSeries","hoveredSeries","_hoveredPoint","_storedSeries","pointAtShownTooltip","setCanvases","mainCanvas","paneCanvases","_mainCanvas","_canvases","repairTooltip","_setHoveredPoint","_releaseHoveredPoint","_setHoveredSeries","_releaseHoveredSeries","hoveredPoint","_hoveredArgumentPoints","_resetHoveredArgument","getStackedPoints","pointWithTooltip","_pointerOut","stopCurrentHandling","_triggerLegendClick","elementClick","_hoverLegendItem","getItemByCoord","legendHoverMode","lastHoverMode","_hoverArgument","_getArgumentHoverMode","_hoveredArgument","_argumentIndex","_notifySeries","notifyLegend","_notifyLegendOnHoverArgument","getPointByCoord","_isHolding","_stuckSeries","_hoverArgumentAxis","_isPointerOut","_stickyHovering","_setTimeout","_setStuckSeries","_pointerComplete","_pointerOnPoint","_point2","_legendClick","_point3","_pointClick","_axisHoverEnabled","_rotated","_hideCrosshair","_this$_crosshair","_moveCrosshair","_resetTimer","_getSeriesForShared","_point4","keeper","_timeoutKeeper","_hoverTimeout","_stopEvent","updateHover","_variable","VariableModule","addClickHandler","showPopup","$ofElement","_resetPopupPosition","mentionBounds","rootRect","variableData","_contentId","_toggleAriaDescription","_slider_marker","_formatOptions","sliderHandleWidth","trackerWidth","getSliderTracker","getSearchPanelOptions","searchPanel","highlightSearchText","highlightCaseSensitive","searchVisibleColumnsOnly","onQueryDone","calculateSearchFilter","searchByText","_prepareSearchItem","searchPanelOptions","$search","getSearchTextEditor","$searchPanel","dxTextBox","_searchParams","_getFormattedSearchText","searchText","_getStringNormalizer","isCaseSensitive","_findHighlightingTextNodes","stringNormalizer","normalizedSearchText","$contents","_highlightSearchTextCore","$textNode","$searchTextSpan","firstContentElement","_highlightSearchText","isEquals","textNodes","_highlightTimer","InputEventsMaskStrategy","_prevCaret","_updateEditorMask","_getEmptyString","updatedCharsCount","_isTextInput","_getDateBoxType","DEFAULT_DELAY","Menu","onSubmenuShowing","onSubmenuHidden","rootMenuElements","submenuElements","_submenuItemElements","currentSubmenu","_submenus","isMenuHorizontal","_getItemsNavigationOperation","_getKeyboardNavigationAction","navigationAction","navOperation","_resizeEventTimer","_menuItemsWidth","_updateItemsWidthCache","$menuItems","_isAdaptivityEnabled","containerWidth","_toggleAdaptiveMode","_initAdaptivity","_hamburger","_toggleTreeView","_toggleHamburgerActiveState","$menuItemsContainer","$adaptiveElements","_hideVisibleSubmenu","_treeView","_$adaptiveContainer","menuOptions","_treeviewItemClickHandler","$hamburger","_renderHamburgerButton","_getTreeViewOptions","_getAdaptiveOverlayOptions","DX_ADAPTIVE_MODE_CLASS","delayType","_createSubmenu","_renderBorderElement","$submenuContainer","_getSubmenuOptions","_parentKey","_clearTimeouts","getSubmenuPosition","_attachSubmenuHandlers","$submenuTarget","showSubmenuMode","_nestedItemOnSelectionChangedHandler","_nestedItemOnItemClickHandler","_nestedItemOnItemRenderedHandler","_moveMainMenuFocus","$currentItem","$newItem","_clearSelectionInSubmenus","_clearRootSelection","targetSubmenu","cleanAllSubmenus","isOtherItem","$selectedItem","selectedItemData","$prevSelectedItem","submenus","getOverlayContent","submenuMouseLeaveName","_submenuOnShowingHandler","_submenuOnShownHandler","_submenuOnHidingHandler","_submenuOnHiddenHandler","_submenuMouseLeaveHandler","$border","DX_CONTEXT_MENU_CLASS","_getSubmenuByRootElement","_hideSubmenuAfterTimeout","_getDelay","isRootItemHovered","isSubmenuItemHovered","isHorizontalMenu","mouseMoveEventName","_getItemElementByEventArgs","isSelectionActive","_isItemDisabled","_getShowFirstSubmenuMode","_getSubmenuByElement","isOverlayVisible","_itemMouseMoveHandler","_showSubmenuTimer","eventArg","_hideSubmenuTimer","_hoveredRootItem","_changeSubmenusOption","_removeAdaptivity","ignoreKeys","TextBox","_showClearButton","maxLength","_renderMaxLengthHandlers","_renderSearchMode","_isAndroidOrIE","_onKeyDownCutOffHandler","_onChangeCutOffHandler","_toggleMaxLengthProp","_getMaxLength","_renderSearchIcon","_$searchIcon","$searchIcon","actualMaxLength","_cutOffExtraChar","textInput","SchedulerWorkSpaceDay","_SchedulerWorkSpaceVe","pointerDown","ClearButton","editorName","rendered","hideCallback","indexOfCallback","hasCallback","BaseMaskStrategy","_this$editor","handlerName","getHandleEventNames","subscriptionName","getEventHandler","_attachChangeEventHandlers","editorOption","selectedText","clipboardText","_clearDragTimer","_dragTimer","pastedText","accepted","inputVal","_inputHandlerTimer","_isAutoFill","keyPressHandled","focusableFn","isTabIndexNotNaN","isDefaultFocus","isHyperlink","_createWidget","_getWidgetContainer","_registeredPresets","resetToDefaults","defaultAnimationDuration","defaultAnimationDelay","defaultStaggerAnimationDuration","defaultStaggerAnimationDelay","defaultStaggerAnimationStartDelay","_getPresetOptionName","animationName","_createAndroidSlideAnimationConfig","throughOpacity","widthMultiplier","createBaseConfig","_createOpenDoorConfig","_createWinPopConfig","registerDefaultPresets","newRegisteredPresets","preset","registerPreset","customRules","_tiling","_tiling2","_tiling3","getLegendItemState","itemState","addAlgorithm","dxFunnel","convertCoord","_change_DRAWN","_change_NODES_CREATE","_change_TILES","_applyTilesAppearance","_suspend","_resume","_getData","processedData","getAlgorithm","percents","itemOptions","figures","curData","getAllItems","TextArea","spellcheck","_updateInputHeight","_createInput","_updateInputAutoResizeAppearance","_eventY","currentEventY","_resetDimensions","_getHeightDifference","_$textEditorContainer","autoHeightResizing","heightDifference","_getBoundaryHeight","inputHeight","adjustedMaxHeight","needScroll","isAutoResizeEnabled","activeFeedback","FeedbackEvent","_schedule","FeedbackEmitter","_active","_inactive","activeTimeout","inactiveTimeout","activeChildExists","childJustActivated","_getEmitterTarget","mouseEvent","deferFeedback","skipTimers","lockInactive","removeEventName","RELATIVE_VALUE_REGEX","TransitionAnimationStrategy","initAnimation","transitionProperty","setProps","transitionAnimation","_finishTransition","_cleanup","_completeAnimationCallback","_startAnimation","simulatedEndEventTimer","transitionEndFired","simulatedTransitionEndFired","transitionEndEventFullName","waitForJSCompleteTimer","_simulatedTransitionEndDelay","transitionDelay","transitionDuration","transitionTimingFunction","FrameAnimationStrategy","_normalizeValue","_parseTransform","frameAnimation","animationFrameId","delayTimeout","_animationStep","transformString","translateData","scaleData","rotateData","_calcStepValue","currentDuration","calcValueRecursively","endPropValue","calcEasedValue","FallbackToNoAnimationStrategy","isSynchronous","baseConfigValidator","animationType","typeMessage","isObjectConfigValidator","positionAliases","SlideAnimationConfigurator","validateConfig","positioningConfig","setupPosition","_setUpConfig","_initNewPosition","relativeValue","_getRelativeValue","FadeAnimationConfigurator","toOpacity","fromOpacity","animationConfigurators","slide","slideIn","slideOut","fade","fadeIn","fadeOut","fromScale","toScale","_getCssTransform","isStringConfigValidator","defaultJSConfig","defaultCssConfig","setupAnimationOnElement","configurator","startAnimationOnElement","isStarted","onElementAnimationComplete","stopAnimationOnElement","startTimeout","scopedRemoveEvent","defaultConfig","getAnimationConfigurator","animationStrategies","frame","noAnimation","getAnimationStrategy","subscribeToRemoveEvent","getAnimQueueData","destroyAnimQueueData","shiftFromAnimationQueue","queueData","executeAnimation","animationTypes","writeAnimQueueData","pushInAnimationQueue","directionOffset","categoryIndex","stickInterval","stickDelta","translateCategories","visibleCount","newVisibleCategories","newInterval","stickOffset","cellAlignmentHelper","BaseElement","_createRoot","_setupAnimation","_actualValue","_runAnimation","_className","COEFFICIENTS_MAP","bl","tl","textCloudOptions","tailHeight","cloudWidth","cloudHeight","_textUnitWidth","horMargin","verMargin","tailLength","sampleText","_updateBarItemsPositions","_updateBarItems","spaceColor","getDomainStart","getDomainEnd","_backItem1","_backItem2","_spaceItem1","_spaceItem2","_updateTextItems","_getFontOptions","_mainItem","_wrappedHandler","_uiToolbar2","isMenuVisible","TreeList","_finished","_stopped","_proxiedStepCore","_stepCore","_stepAnimationFrame","_isStopped","USER_STATE_FIELD_NAMES_15_1","USER_STATE_FIELD_NAMES","IGNORE_COLUMN_OPTION_NAMES","bestFitWidth","globalColumnId","allowColumnReordering","allowColumnResizing","columnResizingMode","columnMinWidth","regenerateColumnsByVisibleItems","customizeColumns","DEFAULT_COLUMN_OPTIONS","DATATYPE_OPERATIONS","COLUMN_INDEX_OPTIONS","setFilterOperationsAsDefaultValues","createColumn","userStateColumnOptions","bandColumn","commonColumnOptions","setName","calculatedColumnOptions","_createCalculatedColumnOptions","createColumnsFromOptions","columnsOptions","_columnsUserState","checkUserStateColumn","hasColumns","getParentBandColumns","columnParentByIndex","_getChildrenByBandColumn","columnChildrenByIndex","getColumnFullPath","bandColumnsCache","getBandColumnsCache","callbackFilter","isPlain","_columns","calculateColspan","getValueDataType","getSerializationFormat","updateSerializers","serializeValue","customizeTextForBooleanDataType","updateColumnIndexes","_commandColumns","updateColumnGroupIndexes","getColumnIndexByVisibleIndex","userStateColumn","applyUserState","userStateColumnIndex","columnsUserState","ignoreColumnOptionNames","_ignoreColumnOptionNames","columnCountById","resultColumns","allColumnsHaveState","userStateColumnIndexes","applyFieldsState","findUserStateColumn","_hasUserState","hasAddedBands","columnUserState","assignColumns","isSortOrderValid","updateColumnSortIndexes","resetBandColumnsCache","bandColumns","parentBandColumns","updateColumnVisibleIndexes","updateColumnDataTypes","updateColumnChanges","columnChanges","_columnChanges","fireColumnsChanged","onColumnsChanging","reinitOptionNames","updateSortOrderWhenGrouping","prevGroupIndex","lastSortOrder","sortMode","fireOptionChanged","fullOptionPath","_skipProcessingColumnsChange","_notifyOptionChanged","columnOptionCore","initialColumn","optionSetter","_checkColumns","dotCount","isCustomCommandColumn","commandColumn","getFixedPosition","processExpandColumns","customColumnIndex","expandColumnsByType","numberToString","digitsCount","mergeColumns","commandColumns","needToExtend","commandColumnIndex","isColumnFixing","defaultCommandColumns","getCommandColumnIndex","isColumnFixed","_bandColumnsCache","findColumn","identifierOptionName","_getExpandColumnOptions","_getFirstItems","getFirstItemsCore","_isColumnsFromOptions","addExpandColumn","_dataSourceApplied","applyDataSource","getColumnByIndexes","needUpdateRequireResize","_updateRequireResize","_args$fullName","_args$fullName2","_args$fullName3","_args$fullName4","_args$fullName5","isEditingPopup","isEditingForm","isEditRowKey","isEditColumnName","isChanges","columnOptionValue","columnOptionName","forceApplying","isDataSourceLoaded","_dataSourceColumnsCount","columnsFromDataSource","firstItems","processedFields","createColumnsFromDataSource","updateColumns","_visibleColumns","_fixedColumns","isDataSourceApplied","autoExpandGroup","allowColumnDragging","contextMenuEnabled","checkSerializers","_getVisibleColumnsCore","_getFixedColumnsCore","notFixedColumnCount","lastFixedPosition","transparentColumn","newColumn","getExpandColumns","firstGroupColumn","isFixedFirstGroupColumn","_isColumnVisible","isFixedToEnd","rowspanGroupColumns","rowspanExpandColumns","positiveIndexedColumns","negativeIndexedColumns","notGroupedColumnsCount","columnDigitsCount","processBandColumns","indexedColumns","firstPositiveIndexColumn","columnsByFixing","columnsByVisibleIndex","getDataColumns","bandColumnID","getInvisibleColumns","hiddenColumnsByBand","getAllColumns","targetGroupIndex","moveColumnToGroup","needResetSorting","nextSortOrder","useLocalSelector","sortColumns","sortItem","calculateSortValue","updateNewLookupsOnly","valueMap","_updateColumnOptions","calculateCallbackName","calculateCallback","getAlignmentByDataType","isColumnDataTypesUpdated","lookupDataType","valueDataType","_customizeColumns","updateSortingGrouping","sortParameters","groupParameters","filterParameters","_updateChanges","fromDataSource","isColumnsChanged","updateSortGroupParameterIndexes","columnsGroupParameters","columnsSortParameters","updateFilter","clearSorting","clearGrouping","addColumn","childIndexes","handleStateField","setUserState","isFilterPanelHidden","usedNames","hasEditableColumnWithoutName","duplicatedNames","_column$columns","isEditable","captionize","skipDeserialization","userDataType","updateValueMap","calculateValue","defaultOptionName","invisibleParents","alwaysGetRowIndex","onlyVisibleDirectChildren","column1","column2","ContentTemplate","af","am","as","bn","bo","brx","ccp","ceb","chr","dav","dz","ebu","fil","gu","guz","haw","he","hi","ja","jv","kam","ki","kln","km","kn","ko","kok","ks","lkt","lo","luo","luy","mas","mer","mgh","ml","mr","mt","nd","ne","om","pa","qu","saq","sd","seh","sn","ta","te","ti","ug","ur","xh","yue","zh","zu","_SchedulerWorkSpaceIn","SchedulerWorkspaceVertical","firstColumn","lastColumn","lastRow","lastCellGroup","indexesDifference","newFirstIndex","newLastIndex","DateTableLayoutBaseProps","DateTableBody","__isVirtual","__topVirtualRowHeight","__bottomVirtualRowHeight","_custom","checkNamesUniqueness","existingNames","TextEditorButtonCollection","defaultButtonsInfo","buttonInfo","isStringButton","checkButtonType","checkNameIsDefined","checkNameIsString","predefinedButtonsInfo","isPredefinedButtonName","defaultButtonInfo","buttonsInfo","_compileButtonInfo","_buttonsInfo$location","_uiMenu_baseEdit","MenuBase","_HierarchicalCollecti","_renderSelectedItem","$popOutContainer","$popOutImage","DX_MENU_ITEM_POPOUT_CLASS","nodeToSelect","selectedKey","_selectByItem","_showSubmenusTimeout","_getSubmenuDelay","_addExpandedClass","hasIcons","firstVisibleIndex","nextGroupFirstIndex","isVisibleNode","$nodeElement","hasSubmenu","_selectedGetter","_isItemSelectable","_skipHandling","itemClickActionHandler","_updateSubmenuVisibilityOnClick","_isItemSelectionAllowed","selectedItemKey","selectedNode","_toggleItemSelection","isSelectionByClickEnabled","_isContainerEmpty","_getElementByItem","oldSelection","filterValuesMatch","isExcludeFilter","resetChildrenItemSelection","updateSelectAllState","selectAllCheckBox","getPopupContainer","getListContainer","_listContainer","applyHeaderFilter","fillSelectedItemKeys","hasChildrenWithSelection","updatePopup","headerFilterMenu","_cleanPopupContent","_getSearchExpr","useDefaultSearchExpr","_initializeListContainer","widgetOptions","_selectedItemsUpdating","filterValueIndex","_uiListEditStrategy","moveFocusedItem","moveUp","editStrategy","focusedItemIndex","nextItemIndex","_editProvider","afterItemsRendered","excludedSelectors","getExcludedItemSelectors","privateKey","__dx_key__","selectAllMode","menuMode","allowItemDeleting","itemDeleteMode","itemDragging","_initEditProvider","_isPageSelectAll","_disposeEditProvider","_refreshEditProvider","handledByEditProvider","contextMenuHandlerExists","modifyItemElement","focusListItem","getFlatIndexByItemElement","flatIndex","getItemByIndex","_default_messages","baseDictionary","newMessages","_dictionary","messages","_localizablePrefix","localizablePrefix","localizeString","escapeString","localizationKey","humanize","localizeNode","nodeItem","localizedValue","getMessagesByLocales","getDictionary","onlyNew","_getFormatterBase","localeData","getDataByLocale","ExtImage","_Image","SRC","floatValue","float","_tooltipIndex","_moveTooltip","figureCoords","xy","DXPROXY_HOST","urlMapping","getUrlParser","pathname","urlParser","localUrl","urlData","proxyUrlPart","port","formatLocalUrl","resultUrl","VerticalHeadersArea","HorizontalHeadersArea","getCellPath","_getAreaClassName","_virtualContentWidth","hasScroll","processScrollBarSpacing","groupAlignment","_scrollBarWidth","getScrollPath","_virtualContentHeight","tableHeight","updateColspans","columnOffsetResetIndexes","_hook_touch_props","NATIVE_EVENTS_TO_SUBSCRIBE","mouseenter","mouseleave","pointerenter","pointerleave","NATIVE_EVENTS_TO_TRIGGER","focusin","focusout","NO_BUBBLE_EVENTS","forcePassiveFalseEventNames","matchesSafe","specialData","elementDataMap","special","callMethod","eventsEngine","normalizeOnArguments","iterate","getHandlersController","oneTimeHandler","normalizeTriggerArguments","handlersController","callHandlers","isPropagationStopped","getParents","nativeMethodName","localName","isLinkClickEvent","callNativeMethod","applyForEach","itemArgs","passiveEventHandlersSupported","isSupported","eventNameParts","namespaces","eventNameIsDefined","handleObjects","nativeHandler","callHandler","secondaryTargetIsInside","handlerArgs","DOCUMENT_POSITION_CONTAINS","handleObject","wrappedHandler","nativeListenerOptions","subscribeName","shouldAddNativeListener","removeByEventName","removedHandler","isSubset","forceStop","handleCallback","isImmediatePropagationStopped","iterateEventNames","calculateWhich","setForKeyEvent","keyCode","setForMouseEvent","initEvent","EventClass","addProperty","hook","eventInstance","normalizeEventArguments","propagationStopped","immediatePropagationStopped","beforeSetStrategy","afterSetStrategy","offArgs","rotateArrow","cssRotate","TimeView","_arrowOffset","_getValue","_renderBox","_updateTime","$box","_renderClock","_$hourArrow","_$minuteArrow","_updateClock","hourArrowAngle","minuteArrowAngle","is12HourFormat","_minuteBox","_format12","_createHourBox","_createMinuteBox","_createFormat12Box","_onHourBoxValueChanged","_getNumberBoxConfig","_isPM","newHours","_convertMaxHourToMin","maxHoursValue","newMinutes","_refreshFormat12","_silentEditorValueUpdate","_normalizeHours","_uiDate_boxMask","originalHandlers","callOriginalHandler","originalHandler","applyHandler","maskHandler","_shouldUseOriginalHandler","_revertPart","_isAllSelected","_selectFirstPart","_selectLastPart","_revertChanges","_enterHandler","_selectNextPart","_upDownArrowHandler","isNotDeletingInCalendar","_setNewDateIfEmpty","_getActivePartValue","_initialMaskValue","_loadMaskValue","_partIncrease","emptyDateValue","_isSingleCharKey","_isSingleDigitKey","_e$originalEvent","_useBeforeInputEvent","_processInputKey","_maskInputHandler","_renderSelectedPart","_maskBeforeInputHandler","isBackwardDeletion","_maskValue","_activePartIndex","_searchString","_searchNumber","_formatPattern","_renderDateParts","_partLimitsReached","formatLength","_getActivePartProp","maxSearchLength","isLengthExceeded","isValueOverflowed","_getActivePartLimits","_setActivePartValue","startString","endLimit","_clearSearchValue","_prepareRegExpInfo","_regExpInfo","convertedRegExp","_initMaskState","_detachMaskEvents","_clearMaskState","_attachMaskEvents","_dateParts","_maskClickHandler","_maskPasteHandler","_maskCompositionEndHandler","isBoundaryIndex","_getRealLimitsPattern","lockOtherParts","limitFunction","_addLeadingZeroes","zeroes","_saveMaskValue","_this$_getActivePartL2","limitDelta","_applyLimits","limitBase","limitClosest","_isDateValid","_isValueDirty","_fireChangeEvent","registerTemplateEngine","templateEngine","templateEngines","currentTemplateEngine","getCurrentTemplateEngine","TrackBar","_rangeStylesConfig","CALENDAR_DXCLICK_EVENT_NAME","allowValueSelection","_todayDate","_createDisabledDatesHandler","_renderContouredDate","$body","prevCellDate","_appendMethodName","_cacheAppendMethodName","_getClassNameByDate","_this$_createCell","_prepareCellTemplateData","isDateDisabled","_disabledDatesHandler","$oldContouredCell","$newContouredCell","selectedCell","_selectedCell","_getFirstAvailableDate","getFirstDateView","fillHelper","foregroundColor","rgb","EditingController","addRowByRowIndex","parentIdSetter","originalRowDblClick","validateClick","originalClickHandler","needToCallOriginalClickHandler","RowsViewExtender","getResultConfig","checkEnterBug","getTextEditorConfig","isEnterBug","needDelayedUpdate","isInputOrKeyUpEvent","valueChangeTimeout","prepareBooleanEditor","prepareSelectBox","prepareCheckBox","selectBox","stopWatch","watchLookupDataSource","editorElement","prepareDateBox","prepareNumberBox","isSearching","prepareTextBox","showValidationMark","dxDateBox","dxTextArea","createEditorCore","ExportMixin","_getLength","_correctCellsInfoItemLengths","cellsInfo","expectedLength","_calculateCellInfoItemLength","columnsRow","rowsInfoItems","correctedCellsInfo","headerRowsCount","cellInfoItemLength","getColumnsInfo","getRowsInfo","getCellsInfo","rowsArea","_rowsArea","columnsArea","_columnsArea","getCellDataType","dataItemStyle","colsArea","_tryGetAreaName","columnHeaderSize","rowHeaderSize","Mention","mentionValue","renderContent","baseContentRender","_cancelCallback","_acceptCallback","_acceptRequestEvent","array1ValueIsNaN","array2ValueIsNaN","compareArraysElements","_theme_manager","_valueChangingLocker","createTranslator","createTracker","_setTrackerCallbacks","tooltipParameters","_cleanCore","_isValidDomain","layoutCache","_change_DOMAIN","_setupDomain","_setupDefaultFormat","_calculateSize","ResponsiveBox","singleColumnScreen","_initLayoutChangedAction","_layoutChangedAction","_updateRootBox","_$root","_setScreenSize","_screenItems","_itemsByScreen","_prepareGrid","_spreadItems","_layoutItems","_linkNodeToItem","_clearItemNodeTemplates","currentScreen","_getCurrentScreen","_removeScreenSizeClass","RESPONSIVE_BOX_CLASS","_grid","_prepareRowsAndCols","_cols","_createEmptyCell","getSingleColumnRows","screenItemsLength","filteredRows","_filterByScreen","sizeConfig","_defaultSizeConfig","_isSingleColumnScreen","_prepareSingleColumnScreenItems","_sizesByScreen","_screenRegExp","sizeConfigs","_createDefaultSizeConfig","defaultSizeConfig","screenRegExp","_screenWidth","itemInfo","itemCol","itemRow","itemCell","_occupyCells","_isItemCellOccupied","_markSpanningCell","_loopOverSpanning","rowEnd","colEnd","boundRowEnd","boundColEnd","spanningCell","itemNode","colsCount","_layoutBlock","rootBox","_prepareBoxConfig","_rootBoxConfig","rootItems","_needApplyAutoBaseSize","_isSingleItem","_itemByCell","_layoutDirection","firstCellLocation","isItemRowSpanned","isItemColSpanned","crossDirection","_crossDirection","_nextBlock","_isBlockIndivisible","prevBlockOptions","_blockSize","crossStartIndex","crossSpan","crossIndex","lineCrossSpan","_cellByDirection","lineCrossEndIndex","crossEndIndex","defaultMinSize","forceRemoveRoot","$existingRoot","_saveAssistantRoot","_assistantRoots","_cleanUnusedRoots","VALIDATION_STATUS","validationResultIsValid","cellValueShouldBeValidated","validationCancelChanges","validating","_validationState","_rowIsValidated","validationData","_getValidationData","_getBrokenRules","validationResults","_rowValidating","errorText","getHiddenValidatorsErrorText","brokenRulesMessages","isGroupExpandColumn","isVisibleColumn","completeList","_isValidationInProgress","validationResult","_currentCellValidator","_validationResult","resetRowValidationResults","isRowDataModified","updateValidationState","setDisableApplyValidationResults","setValidator","renderCellPendingIndicator","$indicatorContainer","disposeCellPendingIndicator","validationStatusChanged","updateCellValidationResult","validatorInitialized","validatorDisposing","getCellValidationResult","cancelCellValidationResult","applyValidationResult","requestIsDisabled","disabledPendingId","_disableApplyValidationResults","createValidator","needCreateValidator","isCellOrBatchEditingAllowed","useDefaultValidator","flag","getDisableApplyValidationResults","isCurrentValidatorProcessing","validateCell","cellParams","stateRestored","_validationData$valid","removeCellValidationResult","isInvalidCell","getCellValidator","setCellValidationStatus","validatingController","_updateRowAndPageIndices","startInsertIndex","isNotCanceled","addInValidItem","isInsert","getIndexByChange","isInserted","_getInvisibleColumns","hasInvisibleRows","invisibleColumns","_createInvisibleColumnValidators","invisibleColumnValidators","disposeValidators","isFullValid","validationState","resetRowAndPageIndices","currentValidator","cellModified","isValidated","needValidation","isCellInvalid","_showRevertButton","$tooltipElement","tooltipOptions","$buttonElement","_positionedHandler","_hideFixedGroupCell","$nextFixedRowElement","$groupCellElement","nextRowOptions","__skipPositionProcessing","isRevertButton","normalizedPosition","_normalizeValidationMessagePositionAndMaxWidth","_showValidationMessage","revertTooltip","editorPopup","myPosition","atPosition","$overlayContainer","errorMessageText","$overlayElement","_shiftValidationMessageIfNeed","visibleTableWidth","w1","validationMessageWidth","needMaxWidth","boundaryNonFixedColumnsInfo","firstNonFixedColumnIndex","lastNonFixedColumnIndex","endColumnIndex","getBoundaryNonFixedColumnsInfo","$revertContent","contentOffset","revertContentOffset","_getTooltipsSelector","invalidMessageClass","skipValidator","updateCellState","errorMessages","$tooltips","oldValidationStatus","newValidationStatus","rowIsModified","cellIsMarkedAsInvalid","$tooltipContent","_$tooltip","_$slider","_updateTooltip","_removeTooltip","_saveTooltipElements","_saveTooltipLocation","_centeredTooltipPosition","arrowPosition","_renderTooltipPosition","_resetTooltipPosition","_$tooltipContent","_$tooltipArrow","_contentLocate","outerWidthWithoutRounding","tooltipOuterWidth","roundedTooltipOuterWidth","tooltipCenter","calculatePosition","isLeftSide","collisionSide","arrowLeft","arrowMinLeft","arrowMaxRight","_ensureTooltipIsCentered","foreachColumnInfo","newInfo","columnInfo","cellColspan","lastProcessedIndexes","processedColumnCount","_this$_getPopup","MonthDateTableCell","MonthDateTableCellProps","otherMonth","_setTopPocketOffset","_setPullDownOffset","_uiSchedulerAppointmentsStrategy2","_uiSchedulerAppointmentsStrategy3","_uiSchedulerAppointmentsStrategy4","_uiSchedulerAppointmentsStrategy5","RENDERING_STRATEGIES","horizontalMonth","horizontalMonthLine","AppointmentLayoutManager","allDayHeight","_getRealGroupOrientation","_renderingStrategyInstance","getCellDimensions","getGroupOrientation","createTaskPositionMap","_createAppointmentsMapCore","positionMap","keepAppointmentSettings","sourceSetting","newSettings","oldSettings","sourceAppointments","_getAssociatedSourceAppointment","_isDataChanged","_isSettingChanged","_isAppointmentShouldAppear","_getDeletedAppointments","setPublicElementWrapper","newStrategy","ButtonCollection","_prepareItemStyles","_getBasicButtonOptions","BUTTON_GROUP_CLASS","ButtonGroup","_createItemClickAction","$buttons","BUTTON_GROUP_ITEM_CLASS","_buttonsCollection","getKeyWrapper","getKey","getSameNewByOld","newIndexByKey","oldItems","isItemEquals","oldIndexByKey","addedCount","oldNextIndex","nextOldItem","oldIndex","jsPrefixes","cssPrefixes","Webkit","Moz","originalName","prefixedProp","cssPrefixesCount","jsPrefix","forEachPrefixes","specific","pxExceptions","setDimensionProperty","workWeekUtils","firstDayOfWeekOption","viewStart","_uiCalendar2","LEVEL_COMPARE_MAP","ZOOM_LEVEL","zoomLevel","maxZoomLevel","minZoomLevel","showTodayButton","_waitRenderView","_moveCurrentDateByOffset","_getRtlCorrection","_navigateUp","_navigateDown","sameView","_moveToClosestAvailableDate","_isMaxZoomLevel","_updateTimeComponent","_dateValue","_convertToDate","_shiftDate","baseDate","_getMaxDate","_getMinDate","isDateForwardInNeighborView","_areDatesInNeighborView","isDateForwardInRange","dateForward","_areDatesInSameView","getYear","isDateForwardInStartView","isDateBackwardInStartView","isCurrentDateAvailable","_isDateNotAvailable","isDateForwardAvailable","isDateBackwardAvailable","dateBackward","_correctZoomLevel","_initCurrentDate","_getNormalizedDate","_onContouredChanged","_updateCurrentDate","_$viewsWrapper","_getViewsOffset","_isOtherViewCellClicked","_suppressNavigation","_navigate","_setViewContoured","_updateAriaId","zoomCorrection","_getMonthsOffset","_alreadyViewRender","_getDateByOffset","_waitRenderViewTimeout","currentDay","_renderFooter","_updateAriaSelected","CALENDAR_VIEW_CLASS","_renderSpecificView","beforeDate","_beforeView","_isViewAvailable","afterDate","_afterView","_translateViews","specificView","$view","_viewConfig","_getViewPosition","coefficient","nextView","isMaxZoomLevel","newCurrentDate","_animateShowView","_navigatorConfig","_updateButtonsVisibility","_navigatorClickHandler","_updateNavigatorCaption","_isMinZoomLevel","_getRequiredView","_viewWidth","_isDateInInvalidRange","_animateWrapper","_viewWidthValue","$todayButton","_$footer","_popAnimationView","newView","_preventViewChangeAnimation","_wrapperAnimationEndHandler","_rearrangeViews","_resetLocation","viewOffset","viewToCreateKey","viewToRemoveKey","destinationDate","dateByOffset","_clearViewWidthCache","_disposeViews","_refreshViews","_updateViewsValue","$prevSelectedCell","$selectedCell","ariaId","_suppressingNavigation","BaseMaskRule","_next","rawValue","_prepareHandlingArgs","handlingProperty","_adjustedForward","_adjustedBackward","_tryAcceptChar","_accepted","_isAllowed","acceptedChar","_isAccepted","_isValid","hasValueProperty","nextArgs","inkRipple","RadioCollection","$radio","$radioContainer","RadioGroup","_renderRadios","_getItemValue","_setSelection","_updateItemsSize","_areRadiosCreated","$radios","isNullSelectable","_radios","_this$_radios","_this$_radios2","_validation_summary","ValidationGroup","validatorContainer","summaryContainer","linearSpider","circularSpider","circular","xyAxesLinear","getPolarQuarter","circularAxes","_this$_getViewportRan","_radius","_updateRadius","_updateCenter","originValue","tickOuterLength","_this$_center","labelBoxes","fromAngle","toAngle","halfRad","_this$getCenter","_ref$shift","radiusWithTicks","labelY","labelAngle","boxShiftX","boxShiftY","maxLabelBox","lastVisibleLabelIndex","_spiderTicks","lastTick","nextTick","spiderTicks","centerCoord","labelPos","_getGridPointsByRadius","innerPoints","SchedulerWorkSpaceWeek","ArrayStore","CustomStore","Guid","queryAdapters","dataUtils","parsers","parsedVal","numVal","AppointmentSettingsGeneratorVirtualStrategy","AppointmentSettingsGeneratorBaseStrategy","settingsStrategy","itemResources","appointmentList","_createAppointments","_canProcessNotNativeTimezoneDates","_getProcessedNotNativeTimezoneDates","gridAppointmentList","_createGridAppointmentList","_cropAppointmentsByStartDayHour","_getProcessedLongAppointmentsIfRequired","_createAppointmentInfos","_createRecurrenceAppointments","isTimeZoneSet","isAppointmentTimeZoneSet","dateRangeOffset","newDateMinusOneHour","startDateRange","endDateRange","diffStartDateOffset","diffEndDateOffset","_getProcessedNotNativeDateIfCrossDST","newEndDate","testNewStartDate","testNewEndDate","needSeparateAppointment","resultDates","gridAppointment","endDateOfPart","getIntervalDuration","startDatePart","_getGroupDateRange","commonTimeZone","_this$_createExtremeR2","_createExtremeRecurrenceDates","minRecurrenceDate","maxRecurrenceDate","_createRecurrenceOptions","_getAppointmentFirstViewDate","_getViewStartDayHour","_getAppointmentResultDate","gridAppointments","getCoordinatesByDateInGroup","_AppointmentSettingsG","_getGroupIndices","findGroupCellStartDate","groupEndDate","groupIndices","viewDataGroupIndices","getGroupIndices","_updateGroupIndices","ALLOWED_TYPES","winloss","_String","selectPointColor","pointIndexes","dxSparkline","_createSeries","_updateSeries","_seriesLabelGroup","_drawSeries","halfPointSize","_prepareDataSource","_prepareSeriesOptions","_simpleDataSource","_getCustomizeFunction","_groupsDataCategories","argField","valField","isDataNumber","parseNumericDataSource","_winlossDataSource","parseWinlossDataSource","drawnPointIndexes","_getExtremumPointsIndexes","winlossData","isWinloss","positiveColor","negativeColor","createBarCustomizeFunction","createLineCustomizeFunction","_minMaxIndexes","minIndexes","maxIndexes","dataLength","argCoef","isBarType","isWinlossType","hasMinY","hasMaxY","valCoef","_getBarWidth","_correctPoints","seriesType","pointsLength","formattedFirst","formattedLast","formattedMin","formattedMax","lastValue","originalFirstValue","originalLastValue","originalMaxValue","originalThresholdValue","thresholdValue","baseMethod","processLoadState","selectionChanged","_initialPageSize","_initialFilterValue","filterEnabled","getDataState","exportSelectionOnly","savingTimeout","isStateLoading","newState","oldStateHash","newStateHash","isVirtualScrollingMode","hasFilterState","stateStoringController","_restoreStateTimeoutID","isDeferredSelection","_uiPivot_grid3","_uiPivot_grid4","_uiPivot_grid5","_uiPivot_grid6","_uiPivot_grid7","_uiPivot_grid8","_uiPivot_grid9","TR","TD","FIELD_CALCULATED_OPTIONS","getArraySum","adjustSizeArray","sizeArray","unsubscribeScrollEvents","scrollBarInfoCache","getCommonBorderWidth","borderStyleNames","computedStyle","borderStyleName","PivotGrid","virtualRowHeight","virtualColumnWidth","fieldChooser","applyChangesMode","allowSortingBySummary","allowExpandAll","fieldPanel","showColumnFields","showFilterFields","showDataFields","showRowFields","allowFieldDragging","columnFieldArea","rowFieldArea","filterFieldArea","dataFieldArea","showRowTotals","showRowGrandTotals","showColumnTotals","showColumnGrandTotals","hideEmptySummaryCells","showTotalsPrior","rowHeaderLayout","noData","showFieldChooser","sortColumnBySummary","sortRowBySummary","removeAllSorting","dataNotAvailable","onExpandValueChanging","renderCellCountLimit","showRelevantValues","_updateCalculatedOptions","isCalculated","_getDataControllerOptions","onFieldsPrepared","_initDataController","progressChanged","expandValueChanging","_fieldChooserPopup","_renderFieldChooser","updateViewOptions","_renderContextMenu","_renderDescriptionArea","dataArea","scrolled","_scrollUpdating","updateWindowScrollPosition","subscribeToScrollEvent","_needDelayResizing","_pivotGridContainer","fieldChooserOptions","dxPivotGridFieldChooser","fieldChooserComponentOptions","resetTreeView","cancelChanges","_createEventArgs","_getContextMenuItems","oppositeAreaFields","sortingBySummaryItemCount","showDataFieldCaption","textFormat","_createFieldArgs","_createCellArgs","_handleCellClick","_renderNoDataText","loadPanelVisible","_startLoadingTime","$targetContainer","$descriptionCell","$toolbarContainer","$filterHeader","$columnHeader","getFieldChooserPopup","_$buttonElement","_detectHasContainerHeight","_renderHeaders","rowHeaderContainer","columnHeaderContainer","filterHeaderContainer","dataHeaderContainer","_rowFields","_columnFields","_filterFields","_dataFields","_renderDataArea","dataAreaElement","_renderRowsArea","rowsAreaElement","_renderColumnsArea","columnsAreaElement","updateHandler","bordersWidth","hasRowsScroll","hasColumnsScroll","rowsAreaWidth","scrollBarInfo","scrollBarUseNative","getScrollBarInfo","dataAreaCell","rowAreaCell","columnAreaCell","descriptionCell","filterHeaderCell","columnHeaderCell","rowFieldsHeader","needSynchronizeFieldPanel","calculateHasScroll","areaSize","totalSize","calculateGroupHeight","dataAreaHeight","rowsAreaHeights","dataAreaHeights","descriptionCellHeight","columnsAreaRowCount","resultHeights","columnsAreaRowHeights","columnsAreaHeight","rowsAreaColumnWidths","filterAreaHeight","$dataHeader","dataHeaderHeight","_diff","_diff2","virtualContentParams","calculateVirtualContentParams","itemWidths","itemHeights","viewportWidth","contentTop","contentLeft","updateScrollableResults","_getCoord","stripPos","_multi_view","TabPanel","itemTitleTemplate","onTitleClick","onTitleHold","swipeEnabled","_createTitleActions","_createTitleClickAction","_createTitleHoldAction","_createTitleRenderedAction","_titleClickAction","_titleHoldAction","_titleRenderedAction","_$tabContainer","$tabs","_tabConfig","tabsHeight","tabItems","$activeTab","_isFocusOutHandlerExecuting","_setTabsOption","selectedTabContent","_defaultOptions","dataConverter","_selectedNodesKeys","_expandedNodesKeys","_dataStructure","_createInternalDataStructure","onNodeChanged","_initialDataStructure","createPlainStructure","_updateExpansion","_setChildrenSelection","_setParentSelection","_updateNodesKeysArray","_updateOneBranch","_setParentExpansion","_getDataBySelectionMode","_isNodeVisible","_getByKey","getByKey","_toggleChildrenSelection","getParentNode","_iterateParents","newParentState","_calculateSelectedState","_setFieldState","_iterateChildren","processedKeys","selectedItemsCount","invisibleItemsCount","isChildInvisible","childState","_markChildren","_removeNode","_addNode","_updateFields","updateChildrenKeys","convertToPublicNodes","getItemsCount","getVisibleItemsCount","selectRecursive","isSingleModeUnselect","_isSingleModeUnselect","selectionState","lastSelectedKey","_filterDataStructure","_createCriteria","lookForParents","setChildrenKeys","sourceIsDefined","hasError","verifyData","updateDataType","argumentAxes","groupsIndexes","groupsWithUndefinedValueType","groupsWithUndefinedArgumentType","argumentTypeGroup","axisTypeParser","valueTypeGroup","defineArg","getType","checkValueTypeOfGroup","checkArgumentTypeOfGroup","checkType","userArgumentCategories","correctAxisType","valueCategories","optionsSeries","checkAxisType","getParsedCell","sizeParser","valueParser","argumentParser","createParserUnit","categoryParsers","getSizeField","argumentCategories","valueGroup","parseCategories","parseAxisCategories","prepareParsers","firstSeries","originalData","smallValuesGrouping","others","groupingValues","findIndexByThreshold","topCount","groupMinSlices","groupPieData","uniqueArgumentFields","reSortCategories","dataByArguments","userCategories","sortFunction","sortingMethodOption","sortByCallback","collectionItem","checkItemExistence","getCategories","sortByArgument","itemsHash","getUniqueArgumentFields","asc","valA","valB","aa","bb","newArray","parsedCategory","eigen","hasCategories","filterInfinity","parseUnit","validUnit","_comparator","cachedSetters","_changingCallback","_changedCallback","_namePreparedCallbacks","equals","unwrapObservables","valueName","_prepareRelevantNames","_name","_setPreparedValue","RowProps","ColumnHeadersView","_itemsCount","_visibleItemsCount","_convertItemsToNodes","_getParentId","_checkForDuplicateId","_itemHasChildren","_dataType","_getUniqueKey","_rootValue","_makeObjectFromPrimitive","_convertToPublicNode","publicNodes","updateIndexByKey","removeChildrenKeys","_that$component","isGroupPanelItem","_createIndicatorContainer","$span","indicatorAlignment","ignoreIndicatorAlignment","LANGUAGE_CODES","no","tn","sa","syr","iu","dv","quz","nso","ba","arn","moh","oc","qut","prs","sms","sma","smj","VerticalRenderingStrategy","deltaHeight","_getAllDayAppointmentGeometry","_getAdaptiveGeometry","_getVerticalAppointmentGeometry","isRecurring","isAppointmentTakesSeveralDays","currentSetting","multiDaysAppointmentParts","_isMultiDayAppointment","_reduceMultiDayAppointment","sourceAppointmentHeight","reducedHeight","groupTop","allDayPanelOffset","_getTailHeight","_calculateVerticalGeometryConfig","_customizeVerticalCoordinates","appointmentLeft","durationInHours","fullDuration","_getMinuteHeight","allDayCondition","_rowCondition","formatCellValue","createHeaderInfo","addInfoItem","breadth","infoItem","depthIndex","addInfoItemCore","isTree","isMetric","depthSize","dataSourceIndex","createInfoItem","getViewHeaderItems","headerDescriptions","cellDescriptions","cellDescriptionsCount","viewHeaderItems","headerDescriptionsCount","childrenStack","createHeaderItem","displayText","createViewHeaderItems","isEmptyGrandTotal","hideTotals","hiddenTotals","hideData","hiddenValues","parentChildren","isAdditionalTotal","addAdditionalTotalHeaderItems","isGrandTotal","isValue","hiddenGrandTotals","addMetricHeaderItems","showEmpty","removeEmptyParent","removeHiddenItems","sortBySummaryPaths","stringValuesUsed","isItemSorted","getHeaderItemsDepth","indexesByDepth","fillHeaderInfo","createSortPaths","headerFields","headerField","foreachRowInfo","rowsInfo","getHeaderIndexedItems","indexedItem","createScrollController","_changingDuration","virtualScrollControllerChanged","_createDataSource","totalRowCount","rowPageIndex","_columnsScrollController","columnPageIndex","_stateStoringController","_columnsInfo","_rowsInfo","_cellsInfo","startChanging","_lockChanged","_correctSkipsTakes","_calculatePagingForRowExpandedPaths","rowExpandedSkips","rowExpandedTakes","expandedPathIndexes","_calculatePagingForColumnExpandedPaths","expandedSkips","expandedTakes","skipByPath","takeByPath","_processPagingForExpandedPaths","_savePagingForExpandedPaths","isOppositeArea","_handleCustomizeStoreLoadOptions","columnsScrollController","contentParams","_handleExpandValueChanging","_handleProgressChanged","_handleFieldsPrepared","_expandValueChangingHandler","_fieldsPreparedHandler","_customizeStoreLoadOptionsHandler","_changedHandler","_progressChangedHandler","dataFieldsForRows","dataFieldsForColumns","getHiddenTotals","showValues","getHiddenValues","getHiddenGrandTotalsTotals","grandTotalsAreHiddenForNotAllDataFields","getAllData","scrollController","newRowsInfo","maxDepth","realColumnIndex","_rowPageSize","_columnPageSize","_columnPageIndex","dataFieldAreaInRows","dataRow","createCellsInfo","_template_engine_registry","compile","_compiledTemplate","_uiToolbarStrategy","_uiToolbarStrategy2","actionSheet","dropDownMenu","Toolbar","submenuType","_menuStrategy","actionSheetItem","_hideOverflowItems","_getItemsWidth","overflowItems","_isMenuItem","$hiddenItems","_restoreItems","$itemMarkup","_renderMenuStrategy","_requireDropDownStrategy","_isToolbarItem","_changeMenuOption","TimePanelTableLayoutProps","_cell2","_cellsRow$","allDayPanelVisible","__isVerticalGroupOrientation","oldDefaultOptions","originalDataControllerExtender","originalDataSourceAdapterExtender","viewportItemIndex","DX_POLYMORPH_WIDGET_TEMPLATE","widgetElement","_tempTemplates","_defaultTemplates","_anonymousTemplateName","_createTemplateIfNeeded","tempTemplate","_extractTemplates","_extractAnonymousTemplate","suitableTemplates","$anonymousTemplate","isTextNode","cachedTemplate","templateSourceResult","POINTERENTER_NAMESPACED_EVENT_NAME","POINTERLEAVE_NAMESPACED_EVENT_NAME","Hover","_handlerArrayKeyPath","_eventNamespace","_originalEventName","HoverStart","HoverEnd","ColumnsController","visibleColumnsLength","_transition_executor","DeferRendering","showLoadIndicator","renderWhen","staggerItemSelector","transitionExecutor","_initElement","_initRender","_$initialContent","_renderDeferredContent","_initContent","_setLoadingState","_abortRenderTask","_renderTask","shownArgs","_isElementInViewport","animatePromise","renderedArgs","_setRenderedState","hasCustomLoadIndicator","_showLoadIndicator","_$loadIndicator","_renderOrAnimate","mouseover","mouseout","mousemove","touchstart","touchmove","touchend","mousedown","mouseup","selectSeries","deselectSeries","_toast","$notify","userHiddenAction","nodesByEvent","WidgetCollector","_collection","_renderItemPosition","_itemElementWidth","Accordion","onItemTitleClick","collapsible","animationDuration","_animationEasing","multiselectable","selectedItemIndices","_renderSelection","_updateItemHeightsWrapper","_itemTitles","_itemContents","itemTitle","_attachItemTitleClickAction","_itemTitleClickHandler","_updateItems","skipAnimation","_animationTimer","_updateItemHeights","deferredAnimate","_deferredAnimate","itemHeight","_splitFreeSpace","_calculateFreeSpace","_updateItemHeight","startItemHeight","finalItemHeight","_animateItem","fixedHeight","$titles","itemsHeight","_tryParseItemPropertyName","algorithms","defaultAlgorithm","setDefault","getFirstItem","childrenItem","compareOrder","compareItems","FieldChooser","filterFields","_expandedPaths","_dataChangedHandlers","skipStateSetting","_renderLayout0","$row1","$row2","$col1","$col2","$col3","$col4","_renderArea","_renderLayout1","_renderLayout2","_getContextMenuArgs","targetFieldElement","targetGroupElement","fieldCopy","_createTreeItems","groupFieldNames","groupFieldName","fieldsByGroup","_createFieldsDataSource","treeItems","_renderFieldsTreeView","needSelectDefaultItem","_processDemandState","getDimensionFields","_renderAreaFields","$fieldsContent","$areaContainer","$fieldsHeaderContainer","$fieldsContainer","_getSortableOptions","_adjustSortableOnChangedArgs","_getTheme","_addCacheItem","_removeCacheItem","getThemePart","pathItem","_current","_themeName","_defaultPalette","createDiscretePalette","getDiscretePalette","createGradientPalette","getGradientPalette","getAccentColor","_initializeFont","_image","_align","_dropImage","_variables","QuillRegistrator","_customModules","isModule","isRegisteredModule","specificClass","secondClass","_getToolbarOptions","itemRenderedCallback","_toolbarOptions","itemOptionPrefix","updateToolbarDimensions","getHeaderPanel","getDateMonthFormat","monthName","getMonthYearFormat","getCaptionFormat","dateMonthFormat","lastIntervalDate","defaultViewDuration","isDifferentMonthDates","useShortFormat","getWeekCaption","rejectWeekend","getDefaultFirstDayOfWeekIndex","firstWeekDate","lastWeekDate","formatCaptionByMonths","lastDateText","firstDateText","isDifferentYears","getMonthCaption","isSameYear","getCaption","_getConfig","SchedulerNavigator","displayedDate","_useShortDateFormat","_setCalendarOption","_prev","_initButtons","$next","$prev","_getNextDate","stepConfig","_renderCaptionKeys","_isMobileLayout","overlayType","popoverContainer","_createScrollable","_calendarOptions","captionConfig","customizationFunction","executeHandler","trackerSettings","getLabelOrientation","isDiscreteValue","isFullStacked","yCorrection","xCorrection","_that$getMarkerCoords","getGraphicSettings","_getEdgeTooltipParams","xCoord","yCoord","invertedBusinessRange","_truncateCoord","argVisibleArea","minVal","valIntervalName","argIntervalName","valVisibleArea","isStartFromAxis","clearStack","baseZIndex","zIndexStack","ZIndex","editOptionsRegistry","registerOption","enabledFunc","decoratorTypeFunc","decoratorSubTypeFunc","decoratorType","decoratorSubType","_fetchRequiredDecorators","_decorators","decorator","_createDecorator","subType","_findDecorator","foundDecorator","_prependBeforeBags","_appendAfterBags","_applyDecorators","$beforeBags","_collectDecoratorsMarkup","$afterBags","containerClass","$collector","_handlerExists","decorators","currentPalette","keepLastColorInEnd","baseColorSet","getPalette","registerPalette","paletteName","simpleSet","indicatingSet","gradientSet","accentColor","palettes","themeDefault","themeDefaultPalette","colorCount","sourceCount","addColor","kr","blend","createDiscreteColors","color1","color2","_palettes","currentPaletteName","RingBuf","buf","ind","getAlternateColorsStrategy","stepHighlight","paletteSteps","_reset","originalPalette","getNewColor","getAlteredPalette","getExtrapolateColorsStrategy","paletteCount","cycles","cycleIndex","cycleCount","hsl","diapason","minL","maxL","cycleMiddle","cycleDiff","fromHSL","convertColor","getColorMixer","extendedPalette","distributeColors","colorsCount","distribution","getColorAndDistance","extendPalette","colorInGroups","currentColorIndex","cleanColorIndices","paletteWithEmptyColors","paletteLength","c2","blendColors","paletteObj","_extensionStrategy","currentColor","alter","lightness","_hide_callback","zIndexPool","OVERLAY_STACK","realVersion","firefoxDesktop","iOS","hasSafariAddressBar","android4_0nativeBrowser","isEvent","Overlay","allowedOffsets","_allowedOffsets","_changePosition","realPlatform","_initCloseOnOutsideClickHandler","_initTabTerminatorHandler","_initInnerOverlayClass","_toggleViewPortSubscription","_initHideTopOverlayHandler","_initTarget","_hideTopOverlayHandler","_documentDownHandler","_showAnimationProcessing","_stopAnimation","isAttachedTarget","isInnerOverlay","_outsideClickHandler","_isTopOverlay","overlayStack","tabbableElements","_findTabbableBounds","_viewPortChangeHandle","_viewPortChangeHandler","_renderVisibilityAnimate","_normalizePosition","_getAnimationConfig","_parentHidden","_isParentHidden","_currentVisible","showAnimation","_normalizeAnimation","startShowAnimation","completeShowAnimation","_isHidingActionCanceled","_isShowingActionCanceled","_stopShowTimer","_asyncShowTimeout","hideAnimation","startHideAnimation","completeHideAnimation","_forceFocusLost","_toggleShading","_toggleSubscriptions","_that$_actions","completeCallback","startCallback","_updateZIndexStackPosition","showingArgs","_moveFromContainer","_moveToContainer","pushToStack","_zIndex","_toggleTabTerminator","_proxiedTabTerminatorHandler","_tabKeyHandler","elementsCount","isTabOnLast","isShiftTabOnFirst","isEmptyTabList","isOutsideTarget","$focusElement","_toggleHideTopOverlayCallback","closeOnScroll","scrollEvent","_targetParentsScrollHandler","_$prevTargetParents","closeHandled","_appendContentToElement","shouldDeferRendering","isHidden","whenContentRendered","contentTemplateOption","$dragTarget","startEventName","updateEventName","_dragUpdateHandler","_getDragResizeContainer","_positionChangeHandled","$scrollTerminator","terminatorEventName","_prevOffset","_deltaSize","_isWindow","prevOffset","deltaSize","isAllowedDrag","shaderOffset","_detachWrapperToContainer","_attachWrapperToContainer","renderContainer","_fixHeightAfterSafariAddressBarResizing","_fixWrapperPosition","_useFixedPosition","_renderWrapperDimensions","_renderWrapperPosition","wrapperWidth","wrapperHeight","positionOf","_renderOverlayBoundaryOffset","_transformStringPosition","forceRepaint","_deferShowTimer","_animateDeferred","animateDeferred","_export_pivot_grid","hasNegation","_addEvents","_getXCoord","_getYCoord","scrollElement","dX","dY","lx","_applyPosition","_translateWithOffset","_that$_scroll$attr","_that$_scroll$attr2","getMainGroupField","getStringState","$fieldContent","$fieldElement","mainGroupField","pivotGrid","pivotGridFieldChooser","sourceItem","wrapperContainer","isInstantlyMode","pivotGridState","isHeaderFilter","isExcludeFilterType","preparedFilterValueByText","preparedFilterValue","_wheelHandler","deltaMode","deltaZ","_normalizeDelta","subtractSegmentAsc","segmentStart","segmentEnd","otherStart","otherEnd","subtractSegmentDesc","isNotEmptySegmentAsc","isNotEmptySegmentDesc","_getRanges","totalStart","totalEnd","totalDelta","isNotEmptySegment","subtractSegment","backgroundRanges","rangeOptions","classIndex","paletteColor","sub","subs","newRanges","newBackgroundRanges","INTERACTIVE_ELEMENTS_SELECTOR","isCellElement","isElementDefined","isMobile","isCellInHeaderRow","enterKeyAction","enterKeyDirection","editOnKeyPress","_selectionController","_updateFocusTimeout","_fastEditingStarted","_canceledCellPosition","setupFocusedView","_isNeedScroll","_focusedView","_initViewHandlers","_initDocumentHandlers","$rowsView","isFullUpdate","isFocusedViewCorrect","isFocusedElementCorrect","_initPointerEventHandler","_initKeyDownHandler","_setRowsViewAttributes","_isNeedFocus","_isHiddenFocus","isCurrentRowsViewClick","_isEventInCurrentGrid","isEditorOverlay","isColumnResizing","_resetFocusedView","_getRowsViewElement","_applyTabIndexToElement","pointerEventName","_pointerEventAction","_pointerEventHandler","_keyDownListener","focusType","setCellFocusType","needStopPropagation","isHandled","_processOnKeyDown","_updateFocusedCellPositionByTarget","_upDownKeysHandler","_pageUpDownKeyHandler","_spaceKeyHandler","_ctrlAKeyHandler","_beginFastEditing","_ctrlFKeyHandler","_f2KeyHandler","_isFastEditingAllowed","_closeEditCell","_isVirtualColumnRender","_processVirtualHorizontalPosition","_getNextCell","_arrowKeysHandlerFocusCell","isUpArrow","_navigateNextCell","_isVirtualRowRender","pagingEnabled","isPageUp","pageStep","isFocusedRowElement","startSelectionWithCheckboxes","isOriginalHandlerRequired","_isLastValidCell","_isFirstValidCell","focusedViewElement","_handleTabKeyOnMasterDetailCell","_resetFocusedCell","_editingCellTabHandler","_targetCellTabHandler","_getMaxHorizontalOffset","_isColumnRendered","allVisibleColumns","renderedVisibleColumns","_isFixedColumn","_isColumnVirtual","localColumnIndex","getColumnIndex","horizontalScrollPosition","needToScroll","_getVisibleColumnCount","_getHorizontalScrollPositionOffset","positionOffset","_getCell","currentCellWidth","rtlMultiplier","isEditingAllowed","nextCellInfo","_getNextCellByTabKey","_getRowIndex","_isDataRow","_focusCell","isHighlighted","_editFocusedCell","_focusInteractiveElement","$lastInteractiveElement","_getInteractiveElement","_checkNewLineTransition","_fireFocusedCellChanging","$newCellElement","_fireFocusedRowChanging","rowIndexChanged","_processEnterKeyForDataCell","_getEnterKeyDirection","allowEditingOnEnterKey","_allowEditingOnEnterKey","_handleEnterKeyEditingCell","_startEditing","isShift","_focusEditFormCell","searchTextEditor","_isCellValid","isVerticalDirection","_fireFocusChangingEvents","isDeleting","fastEditingKey","isInteractiveElement","isExpandCommandCell","_isInsideEditForm","_focusView","_isMasterDetailCell","_clickTargetCellHandler","_isCellEditMode","resetFocusedRow","_allowRowUpdating","isInteractiveTarget","activeElementSelector","_focusElement","getFocusedView","rowsViewElement","$focusedView","_getFocusedViewByElement","disableFocus","isNotFocusedRow","focusedView","isRenderView","_hasSkipRow","_checkCellOverlapped","$focusedElementInsideCell","isFocusedElementDefined","_this$_focusedCellPos","_getFocusedColumnIndexOffset","_getFixedColumnIndexOffset","isFixedColumnIndexOffsetRequired","_applyColumnIndexBoundaries","renderFocusState","restoreFocusableElement","_getNewPositionByCode","_hasValidCellAfterPosition","_isLastRow","_hasValidCellBeforePosition","visibleColumnsCount","_isCellByPositionValid","isFirstValidCell","hasValidCells","checkingPosition","visibleColumnCount","visibleRows","isClick","isShowWhenGrouped","isDataCell","rowItems","isRowEditingInCurrentRow","_isLegacyNavigation","focusedCellPosition","includeCommandCells","newFocusedCellPosition","isLastCellOnDirection","_isCellInRow","visibleColumnIndex","_isAllowEditing","_startEditCell","editResult","_editingCellHandler","editorValue","keyPressEvent","inputEvent","$widgetContainer","fireRowEvent","prevCellIndex","localRowIndex","$newFocusedRow","prevFocusedRowIndex","$masterDetailCell","$masterDetailGrid","_processNextCellInMasterDetail","_processCanceledEditCellPosition","isCanceled","needTriggerPointerEventHandler","_triggerPointerDownEventHandler","_updateFocusedCellTabIndex","cellElementsLength","updateCellTabIndex","isMasterDetailCell","isValidCell","_getEditorInstance","_handleEditingNavigationMode","originalKeyHandler","keyboardNavigationController","_keyboardNavigationController","_correctRowIndices","getRowIndexCorrection","focusedRowIndexCorrection","adaptiveColumns","_showHiddenCellsInView","_hideVisibleCellInView","_intervalize","_to","rMin","rMax","origInterval","setStrategy","_DeferredObj","whenFunc","deferredConfig","catch","contexts","resolvedCount","_base_point","scatterSeries","_range_series","_bubble_series","pieSeries","financialSeries","stackedSeries","seriesNS","APPLY_SELECTED","APPLY_HOVER","RESET_ITEM","includePointsMode","mergePointOptionsCore","_eventPipe","eventPipe","_legendCallback","getValueChecker","getLegendStyles","legendStyles","_createStyles","wideId","forceClipping","clipLabels","_clipLabels","applyClip","resetClip","_createPoint","oldPoint","lastSelectionMode","pointByArgument","_deleteGroup","_checkType","_checkPolarBarType","_defineDrawingState","_pointOptions","_seriesModes","commonSeriesModes","barOverlapGroup","_disposePoints","_getOldPoint","oldPointsByArgument","_canRenderCompleteHandle","itemsWithoutArgument","pointDataItem","_resample","_normalizeUsingAllAggregatedPoints","_createPoints","_removeOldSegments","_drawElements","translateAllPoints","closeSegment","groupForPoint","_changeStyle","_setPointsView","_resetPointsView","_resetNearestPoint","_nearestPoint","_setSelectedState","_releaseSelectedState","isStackedSeries","_canChangeView","skipPoints","currentNearestPoint","_getMainAxisName","areLabelsVisible","customLabelOptions","customOptions","customizeLabel","_changeVisibility","visibilityChanged","parsedOptions","_getAggregationMethod","customAggregator","addAggregatedData","aggregationMethod","dataInInterval","aggregatedData","canRenderCompleteHandle","getAllPoints","_createAllAggregatedPoints","getPointByPos","setPointSelectedState","releasePointSelectedState","setPointHoverState","currentPoint","skipPointsCreation","argValue","seriesModes","targetOptions","pointHoverMode","selectionModeOfPoint","_hoverPointHandler","_clearPointHoverHandler","_selectPointHandler","_deselectPointHandler","_deletePoints","_deleteTrackers","_rangeData","getOpacity","nativeDOMAdapterStrategy","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","_document","isAdd","resultClassName","classNameSupported","elementClass","getReadyState","removeEventListener","COLUMN_VIEWS","getDataCellElements","adaptiveCellTemplate","$adaptiveColumnButton","adaptiveColumnsController","toggleExpandAdaptiveDetailRow","columnHidingEnabled","onAdaptiveDetailRowPreparing","_isItemModified","_renderFormViewTemplate","focusAction","renderFormTemplate","isItemEdited","_isItemEdited","_isVisibleColumnsValid","getCommandColumnsCount","_calculatePercentWidths","percentWidths","_getItemPercentWidth","_isPercentWidth","_isColumnHidden","_hiddenColumns","hiddenColumn","columnsCanFit","fixedColumnsWidth","columnsWithoutFixedWidthCount","_calculatePercentWidth","_calculateColumnWidth","contentColumns","columnFitted","partialWidth","_getNotTruncatedColumnWidth","_getCommandColumnsWidth","adaptiveExpandedKey","_getFormItemsByHiddenColumns","hiddenColumns","_getAdaptiveColumnVisibleIndex","_hideAdaptiveColumn","_hideVisibleColumn","cssClassNameToRemove","_showHiddenColumns","$hiddenCommandCells","$hiddenCells","_hideVisibleColumnInView","currentVisibleIndex","_findCellElementInRow","$rowCells","cellIsInsideGroup","groupCellLength","cssClassNameToAdd","hideRedundantColumns","hiddenQueue","hasHiddenColumns","needHideColumn","rootElementWidth","getVisibleContentColumns","visibleContentColumns","contentColumnsCount","columnBestFitWidth","getItemContentByColumnIndex","_$itemContents","alwaysExpanded","createFormByHiddenColumns","userFormOptions","defaultFormOptions","formOptions","updateForm","hasAdaptiveDetailRowExpanded","updateHidingQueue","columnsHasHidingPriority","hideableColumns","_hidingColumnsQueue","hidingPriority","getHiddenColumns","getHidingColumnsQueue","adaptiveHidden","isAdaptiveVisible","isAdaptiveDetailRowExpanded","expandAdaptiveDetailRow","collapseAdaptiveDetailRow","_adaptiveColumnsController","hidingColumnsQueueLength","hiddenColumnsLength","isClickableElement","hasHiddenColumnsOnly","hasAdaptiveHiddenWidth","$itemContents","_adaptiveController","oldExpandRowIndex","_isForceRowAdaptiveExpand","_collapseAdaptiveDetailRow","_cancelEditAdaptiveDetailRow","expandedKey","_adaptiveExpandedKey","_updateScrollableForIE","_updateScrollableTimeoutID","adaptiveController","oldHiddenColumns","hidingColumnsQueue","expandRowIndex","oldExpandLoadedRowIndex","newExpandLoadedRowIndex","rowIndexDelta","allowInvisibleRowIndices","isCellOrBatchMode","focusHandler","$dataCells","isCellElementsEquals","polarBarSeries","_getMainColor","baseGetter","labelAnimFunc","typeOfObject","jquery","DateTableBodyProps","__cell","webkitRegExp","ieRegExp","ie11RegExp","msEdge","mozillaRegExp","browserFromUA","browserName","browserVersion","chartScatterSeries","_pointsCount","labelSpace","paintNullPoints","pointsByArg","mainColor","_getArrangeMinShownValue","minSegmentSize","totalMinSegmentSize","totalNotMinValues","normalInitialValue","_applyArrangeCorrection","isClockWise","shiftedAngle","zeroTotalCorrection","updatedZeroValue","_removePoint","originalPoints","isAllPointsNegative","labelRadius","animatePoint","completeFunc","typeFormat","diffFormat","createFormat","rangeFormat","getHighAndSelfDiffFormat","_rangeFormat","getHighDiffFormat","formatDateRange","dateUnits","processDateInterval","nextDate","tickFormat","prevDifferences","nextDifferences","dateUnitsLength","tickFormatIndex","setDateUnitInterval","resetDateUnitInterval","isDateTimeStart","unitNumbers","unitIndex","intervalIndex","getTransitionTickIndex","curDiff","nearestTickIndex","splitDecimalNumber","tickIntervalIndex","tickIndex","actualIndex","separatedTickInterval","log10Tick","prevDateIndex","nextDateIndex","stringTick","indexOfFormat","indexOfTick","getExponent","_postponed_operations","getEventName","_getDeprecatedOptions","applyRules","isInitial","_getOptionsByReference","_optionChangedCallbacks","_disposingCallbacks","_createOptions","onDeprecated","_logDeprecatedOptionWarning","onStartChange","onEndChange","addRules","onInitializing","_createOptionChangedAction","_createDisposingAction","_disposingAction","_lockUpdate","_unlockUpdate","_initializing","_commitUpdate","callPostponedOperations","_initializeComponent","getAliasesByName","_cancelOptionChange","actionSource","actionFunc","beforeActionExecute","wrappedAction","isOptionDeprecated","isDeprecated","halfNeckWidth","offsetFromCorner","funnelHeight","neckLeftCorner","neckRightCorner","isNegationValue","isNegationGroup","convertNegationGroupToGroup","convertGroupToNegationGroup","convertGroupToNewStructure","getNormalizedGroupValue","changeCriteriaValue","availableGroups","groupValue","getFilterOperations","getCaptionByOperation","isLookupField","isEmptyGroup","normalizedField","AVAILABLE_FIELD_PROPERTIES","getConditionFilterExpression","_filterExpression","itemsForRemove","normalizedGroupValue","isValidCondition","setGroupCriteria","lookupDataSource","checkDefaultValue","getArrayValueText","getPrimitiveValueText","hasParent","getParentIdFromItemDataField","betweenCaption","betweenIndex","_between","isMatchedCondition","syncConditionIntoGroup","addedFilter","DEFAULT_FORMAT","LOOKUP_OPERATIONS","getCriteriaOperation","getDefaultFilterOperations","filteredOperations","extendedFields","convertToInnerGroup","groupOperation","innerGroup","convertToInnerCondition","conditionHasCustomOperation","fieldFormat","getFormattedValueText","itemExists","pushItemAndCheckParent","originalItems","generateCaptionByDataField","addedFilterDataField","canPush","FILTER_BUILDER_ITEM_TEXT_CLASS","FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS","filterEnabledHint","filterPanelView","$leftContainer","FILTER_PANEL_CLASS","_filterValueBuffer","_getCheckElement","_getFilterElement","_getTextElement","_getRemoveButtonElement","_showFilterBuilder","_addTabIndexToElement","filterText","$textElement","getFilterText","customText","clearFilterValue","tabindex","_getConditionText","fieldText","operationText","_getValueMaskedText","_getValueText","hasCustomOperation","getConditionText","getGroupText","isInnerGroup","groupText","addEventsListener","pointerEquals","onPointerAdding","getPointerIndex","removePointer","_uiMulti_view","toNumber","MultiView","_itemWidth","_itemWidthValue","_clearItemWidthCache","_normalizeIndex","_getRTLSignCorrection","_initSwipeable","_updateItemsVisibility","_updateItemsPosition","positionSign","_animationDirection","_renderSpecificItem","hasItemContent","animationDirection","_animateItemContainer","containerPosition","indexDifference","_getItemFocusLoopSignCorrection","directionSignVariable","_getSwipeDisabledState","_swipeDirection","swipeDirection","$selectedElement","_itemFocusLooped","_updateSwipeDisabledState","selectionCellTemplate","selectionHeaderTemplate","SHOW_CHECKBOXES_MODE","processLongTap","isSelectionWithCheckboxes","stopSelectionWithCheckboxes","allowSelectAll","_attachSelectAllCheckBoxClickEvent","_selectionMode","_isSelectionWithCheckboxes","_createSelection","selectionOptions","isSelectColumnVisible","_updateCheckboxesState","isDeferredMode","isComplexKey","isSeveralRowsSelected","selectionChangedOptions","changedItemIndexes","getChangedItemIndexes","itemIndexes","_selectedItemsInternalChange","oldSelectionMode","_isOnePageSelectAll","selectRowsByIndexes","hasSelectColumn","_repaintChangesOnly","isUpdateSelection","removedKeys","_updateSelectAllValue","_e$event","_updateCheckboxesClass","isSelectionDisabled","isCheckBoxesHidden","setInverted","domain1","domain2","_domain1","_domain2","_domainDelta","codomain1","codomain2","_codomain1","_codomain2","_codomainDelta","getCodomainEnd","getDomainRange","extractTemplateMarkup","endTarget","$startTarget","$endTarget","$startParents","$endParents","templateTag","includePaddings","fontVariant","letterSpacing","jQuery","tmpl","jsrender","Mustache","Hogan","Handlebars","doT","chartSeries","polarSeries","baseBarSeriesMethods","_getAffineCoordOptions","_animatePoints","drawnPoints","animateFunc","markersSettings","groupSettings","colorHelper","_tryConvertColor","colorCode","_getContinuousPoints","openCoord","closeCoord","highCoord","_getCrockPoints","_isReduction","_isPositive","_getMarkerGroup","reductionPositiveMarkersGroup","reductionMarkersGroup","defaultPositiveMarkersGroup","defaultMarkersGroup","centerValue","origY","originalLowValue","originalHighValue","originalOpenValue","originalCloseValue","Autocomplete","_clearFocusedItem","maxItemCount","_renderValueEventName","accountingFormat","encodedCurrencySymbol","encodeSymbols","VerticalGroupedStrategy","maxAllowedPosition","getRowCountInGroup","workspaceContainerWidth","getGroupTableWidth","dayHeight","bottomOffset","_groupBoundsOffset","tableOffset","horzRe","vertRe","collisionRe","scaleRe","IS_SAFARI","normalizeAlign","normalizeOffset","getAlignFactor","inverseAlign","calculateOversize","myLocation","initMyLocation","atLocation","atAlign","atSize","myAlign","mySize","collisionResolvers","inverseData","flipfit","calculateScrollbarWidth","$scrollDiv","defaultPositionResult","$what","normalizeCollision","ofRect","getOffsetWithoutScale","hZoomLevel","vZoomLevel","boundaryWidth","boundaryHeight","$boundary","boundaryPosition","preciser","$startElement","_currentElement$getAt","_style$match","$currentElement","currentElement","patternFillHelper","nextDataKey","DraggingHeaderViewController","createAnnotations","POINTER_UP_EVENT_NAME","coreAnnotation","annotationGroup","_isAnnotationBounded","_getAnnotationCoords","_dragOffsetX","_dragOffsetY","hitTest","annotation","tooltipTemplate","getTemplateFunction","imageWidth","imageHeight","getImageObject","commonAnnotationSettings","customizeAnnotation","pullOptions","commonImageOptions","currentImageOptions","customizedItem","templateFunction","chartPlugin","_axis2","argCoordName","valCoordName","_axis3","_series2","_annotationsPointerEventHandler","_hideToolTipForDrag","_pullOptions","_forceAnnotationRender","polarChartPlugin","pointCoords","polarOptions","vectorMapPlugin","vectorMapOptions","_getAnnotationStyles","renderElements","pieChartPlugin","_argument$getAnnotati","getSeriesByName","getAnnotationCoords","pieChartOptions","clearItems","_annotationsGroup","_buildAnnotations","_setAnnotationTooltipOptions","standardColorNames","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","standardColorTypes","re","colorString","hsvToRgb","hslToRgb","parseColor","toHsvFromRgb","convertTo01Bounds","maxMinSum","calculateHue","toHslFromRgb","colorComponent","vMin","vInc","vDec","makeColorTint","colorPart","colorTint","hueToRgb","modifyColorTint","isIntegerBetweenMinAndMax","darken","blendColor","DIRECTION_APPOINTMENT_CLASSES","REDUCED_APPOINTMENT_PARTS_CLASSES","ALL_DAY_APPOINTMENT_CLASS","EMPTY_APPOINTMENT_CLASS","RECURRENCE_APPOINTMENT_CLASS","REDUCED_APPOINTMENT_ICON","REDUCED_APPOINTMENT_CLASS","LIST_ITEM_CLASS","_originalEvents","_isNoBubble","_getDelegateTarget","_setSelector","_selector","_getSelector","POSITION_FLIP_MAP","WEIGHT_OF_SIDES","getEventNameByOption","attachEvent","isSelector","getEventDelay","_clearEventsTimeouts","_timeouts","EVENT_HANDLER_NAME","detachEvent","Popover","arrowOffset","_renderArrow","_isOutsideClick","_getContainerPosition","_renderOverlayPosition","_resetOverlayPosition","_updateContentSize","contentPosition","resultLocation","_getSideByLocation","_toggleFlippedClass","_isHorizontalSide","_isVerticalSide","_renderArrowPosition","_positionSide","containerLocation","newContainerWidth","newOverlayContentHeight","newPopupContentHeight","vOffset","isVerticalSide","isHorizontalSide","_isPopoverInside","_getContentBorderWidth","isFlippedByVertical","isFlippedByHorizontal","isFlippedHorizontal","isFlippedVertical","arrowRect","arrowFlip","arrowLocation","sizeProperty","arrowSize","contentLocation","finalArrowLocation","_getDisplaySide","weightSign","_clearEventTimeout","prepareAxis","setAxisVisualRangeByOption","isDirectOption","pathElements","destElem","COMMON_AXIS_SETTINGS","disposeObjectsInArray","_disposeObjectsInArray","_disposeAxes","_cleanPanesClipRects","clipArrayName","_populateAxes","crosshairOptions","crosshairEnabled","argumentAxesPopulatedOptions","paneWithNonVirtualAxis","argumentAxesOptions","valueAxisOption","valueAxesPopulatedOptions","axisNames","valueAxesCounter","_axisOptions$panes","axisPanes","_redesignAxes","isArgumentAxes","axesBasis","curAxes","axisTypes","_groupsData$groups$fi","getAxisTypes","reverseEach","basis","_disposeAxis","_processValueAxisFormat","_that$seriesFamilies","familyOptions","seriesFamilies","_gridGroup","_axesGroup","_populateMarginOptions","panesCount","argumentMarginOptions","groupSeries","seriesMarginOptions","processBubbleMargin","updatedAxis","keepRange","groupRange","_getGroupsData","axesWithFullStackedFormat","preparedUserOptions","_prepareStripsAndConstantLines","_getValFilter","renderingSettings","_parseVisualRangeOption","_change_VISUAL_RANGE","_layoutAxes","drawAxes","_createCanvasFromRect","_setCustomVisualRange","axesName","_getAxesByOptionPath","axisPath","sourceAxes","resizePanesOnZoom","_doRender","drawTitle","searchEditorOptions","searchBoxClassName","rootElementClassName","_$searchEditorElement","userEditorOptions","_valueChangeDeferred","_valueChangeTimeout","_cleanAria","_responsive_box","DATA_OPTIONS","EDITORS_WITH_ARRAY_VALUE","_itemWatchers","_updateReferencedOptions","_initDataAndItems","_cleanItemWatchers","initialData","_syncDataWithItems","userItems","_getDataByField","_isCheckboxUndefinedStateEnabled","allowIndeterminateState","isUserItemsExist","_generateItemsByData","processedItems","_updateItemWatchers","_setItems","_sortItems","_getWatch","itemField","_getEditorTypeByDataType","_item$allowIndetermin","_sortIndexes","indexA","indexB","_renderResponsiveBox","_hasBrowserFlex","templatesInfo","_prepareItemsWithMerging","layoutItems","_generateLayoutItems","_extendItemsWithDefaultTemplateOptions","_responsiveBox","_getResponsiveBoxConfig","_renderTemplates","targetItems","_itemStateChangedHandler","_renderEmptyItem","_renderButtonItem","_renderFieldItem","xsColCount","itemRenderedCountInPreviousRows","$fieldItem","isLastColumn","_getRowsCount","isLastRow","_generateRatio","screenFactor","_cashedColCount","_getMaxColCount","maxColCount","isCachedColCountObsolete","itemsMergedByCol","_getColByIndex","generatedItem","_getButtonHorizontalAlignment","_getButtonVerticalAlignment","_addItemClasses","_getName","_hasRequiredRuleInSet","_getLabelOptions","helpID","helpText","_isLabelNeedBaselineAlign","_appendEditorToField","_getTemplateByFieldItem","labelID","editorElem","$validationTarget","_renderValidator","_renderHelpText","_attachClickHandler","hasRequiredRule","_isLabelNeedId","showColon","_options$labelID","labelClasses","$labelContent","_renderLabelMark","$mark","requiredMarksConfig","_getRequiredMarksConfig","isRequiredMark","isOptionalMark","markClass","markText","_cashedRequiredConfig","defaultEditorOptions","formInstance","_replaceDataOptions","_createEditor","originalOptions","_getFieldLabelName","_prepareValidationRules","isItemHaveCustomLabel","itemName","userValidationRules","isItemRequired","_addWrapperInvalidClass","toggleInvalidClass","_getComponentOwner","_bindDataField","componentOwner","_createWatcher","linkEditorToDataField","_watch","locationSpecificClass","_getItemContentLocationSpecificClass","readOnlyState","fieldItem","_addInnerItemAlignmentClass","isSimpleItem","isAutoSize","newLayoutData","_resetWidget","_disableEditorValueChangedHandler","_resetColCount","isValueReferenceType","responsiveBox","isFocusingOnCaretChange","getCaret","setCaret","_acos","DEG","argumentChanged","_isLabelDrawingWithoutPoints","_getLabelExtraCoord","_checkVerticalLabelPosition","elementRadius","columnsPosition","_correctLabelCoord","rightBorderX","leftBorderX","angleOfPoint","_checkHorizontalLabelPosition","shiftCoord","seriesStyle","strokeWidthBy2","ly","normalizeMouseEvent","MouseStrategy","subscribeReady","windowExists","doScroll","eventEmitterMethods","REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME","REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME","Appointment","_getHorizontalResizingRule","reducedHandles","_getVerticalResizingRule","_renderAppointmentGeometry","_renderEmptyClass","_renderReducedAppointment","_renderAllDayClass","_renderRecurrenceClass","_renderResizable","reducedPart","_renderAppointmentReducedIcon","_getEndDate","tooltipText","_createResizingConfig","underscore","_upperCaseFirst","_chop","upperFirst","DIGIT_CHARS","captionList","isPrevCharNewWord","isNewWord","linearIndicators","_linear_range_container","dxLinearGauge","_getInvertedState","textCorrection","verticalTextCorrection","isIndentPositive","selectRectBySizes","_scroll_rtl_behavior","_utils3","TagBox","sendToList","_isCaretAtTheStart","_isTagRemoved","$tagToDelete","_$focusedTag","_tagElements","_moveTagFocus","_preserveFocusedTag","_removeTagElement","isListItemFocused","isInputActive","_scrollContainer","_updateTagsContainer","_$tagsContainer","clearOnBoundary","tagElements","$nextFocusedTag","_replaceFocusedTag","_clearTagFocus","_focusClassTarget","_getScrollPosition","_getBorderPosition","_getFocusedTagPosition","isScrollLeft","scrollBehavior","isScrollInverted","scrollSign","maxFilterLength","tagTemplate","hideSelectedItems","maxDisplayedTags","showMultiTagOnly","onMultiTagPreparing","_selectedItems","_initSelectAllValueChangedAction","_initMultiTagPreparingAction","_multiTagPreparingAction","_multiTagPreparingHandler","selectedCount","$tagContent","_toggleSubmitElement","$options","useDisplayText","_tagElementsCache","isSingleLineMode","_initTagTemplate","_renderTagRemoveAction","_renderSingleLineScroll","_tagTemplate","isDefaultFieldTemplate","tagRemoveAction","_removeTagHandler","_renderTypingEvent","mouseWheelEvent","isMultiline","_tagContainerMouseWheelHandler","_renderMultiSelect","_selectAllValueChangeAction","_setListDataSourceFilter","_renderInputSize","_renderTags","shouldClearFilter","isEmptyInput","canTypeText","$calculationElement","_multiTagRequired","_renderMultiTag","$tag","multiTagElement","_getFilteredItems","clientFilterFunction","selectedItemsAlreadyLoaded","_isDataSourceChanged","_dataSource$loadOptio","mappedItems","_createTagsData","isValueExprSpecified","filteredValues","filteredItem","filteredItemValue","loadItemPromises","_createTagData","valueIndex","_isGroupedData","_getItemsByValues","_getFilteredGroupedItems","_loadTagsData","tagData","isPlainDataUsed","_shouldGetItemsFromPlain","_valuesToUpdate","_getItemsFromPlain","_renderTagsImpl","_renderTagsCore","_renderEmptyState","_cleanTags","$multiTag","_renderTag","_refreshTagElements","$tags","_toggleEmptiness","_applyTagTemplate","_getTag","itemModel","_getItemModel","_createTag","tagsLength","_removeTagWithUpdate","_removeTag","_lastValue","removedItem","_addTag","_updateWidgetHeight","listSelectionChangeEvent","_valueIndex","useButtons","indexByValues","selectedValue","originalHeight","_resetListDataSourceFilter","_userFilter","valueGetterExpr","_dataSourceFilterExpr","_dataSourceFilterFunction","_getSortedListValues","listValues","_getListValues","existedItems","_defaultTagTemplate","_createCompactButton","_makeBackgroundColor","_makeBackgroundDarker","_createTooltipInfos","_items$settings","_getExtraOptionsForTooltip","_clickEvent","_createTooltipDragBehavior","createClickEvent","_createDragAppointment","_getCollectorRightOffset","_makeBackgroundColorCore","itemsColors","currentItemColor","paintButton","_createCompactButtonElement","_onButtonClick","APPOINTMENT_COLLECTOR_CLASS","_getCollectorOffset","_setPosition","_initButtonTemplate","appointmentCollector","_createButtonTemplate","FILE_EXTESIONS","CSS","PNG","JPEG","GIF","SVG","PDF","_revokeObjectURLTimeout","_getDataUri","_getMimeType","_linkDownloader","exportLinkElement","download","_formDownloader","formAttributes","enctype","exportForm","setAttributes","_saveByProxy","_winJSBlobSave","savePicker","Windows","Storage","Pickers","FileSavePicker","suggestedStartLocation","PickerLocationId","documentsLibrary","fileTypeChoices","suggestedFileName","pickSaveFileAsync","openAsync","FileAccessMode","readWrite","outputStream","inputStream","msDetachStream","Streams","RandomAccessStream","copyAsync","flushAsync","dispatchEvent","MouseEvent","initMouseEvent","_saveBlobAs","_blobSaved","msSaveOrOpenBlob","WinJS","URL","webkitURL","mozURL","msURL","oURL","objectURL","createObjectURL","downloadLink","revokeObjectURL","_objectUrlRevoked","proxyURL","showSortIndexes","$cellElementFromEvent","editingMode","_processGroupItemAction","trackerModule","ACTIONS_BY_PRIORITY","checkHeightRollingStock","rollingStocks","stubCanvas","canvasSize","rollingStock","findAndKillSmallValue","smallestObject","checkStackOverlap","iLength","jLength","overlap","checkStacksOverlapping","firstRolling","secondRolling","inTwoSides","firstRect","secondRect","oppositeOverlapping","oppositeStart","oppositeEnd","prepareOverlapStacks","currentRollingStock","toChain","moveRollingStock","nextRollingStock","currentBBox","rollingStocksIsOut","setRollingStockInCanvas","RollingStock","shiftFunction","endX","endY","_initialPosition","nextRollingStockBBox","_changeBoxWidth","shiftLength","getInitialPosition","customSorting","hasStackedSeries","rollingStocksTmp","onSeriesClick","onPointClick","onArgumentAxisClick","onSeriesSelectionChanged","onPointSelectionChanged","onSeriesHoverChanged","onPointHoverChanged","onZoomStart","onZoomEnd","chartOption","_canvasClipRect","_createLegend","_needHandleRenderComplete","_reinit","createConstantLinesGroup","_backgroundRect","_legendGroup","disposeObject","unlinkGroup","_processRefreshData","_resize","__renderOptions","isResize","_getSelectionModes","_updateTracker","trackerCanvases","currentCanvas","_prepareDrawOptions","__currentCanvas","_renderElements","__originalCanvas","argBusinessRange","zoomMinArg","zoomMaxArg","layoutTargets","axisDrawOptions","_appendSeriesGroups","seriesLength","_renderCompleteHandler","_resolveLabelOverlappingHide","getAllSeries","currentLabel","nextLabel","currentLabelRect","nextLabelRect","legendDataField","formatObjectFields","legendSettings","indexField","itemGroupClass","titleGroupClass","allowInsidePosition","_updateLegend","legendOptions","animationOptions","newRefreshAction","currentRefreshActionPosition","_currentRefreshData","newRefreshActionPosition","textOpacity","opacityStyle","_that$series","_disposeSeriesFamilies","_change_ANIMATION","_change_PALETTE","_refreshSeries","_change_REFRESH_SERIES_DATA_INIT","_change_DATA_INIT","needToPopulateSeries","_dataInit","_change_FORCE_DATA_INIT","_change_REFRESH_SERIES_FAMILIES","_change_FORCE_RENDER","_change_AXES_AND_PANES","_change_ROTATED","_change_REFRESH_SERIES_REINIT","_change_REFRESH_AXES","_change_SCROLL_BAR","_change_REINIT","_change_FORCE_DRAWING","_resetComponentsAnimation","_change_FORCE_FIRST_DRAWING","_change_CORRECT_AXIS","_doRefresh","_dataSpecificInit","needRedraw","_populateSeries","_repopulateSeries","_forceRender","dataValidatorOptions","allSeriesInited","_populateSeriesOptions","seriesThemes","seriesVisibilityChanged","particularSeries","seriesBasis","disposeSeriesFamilies","curSeries","sb","getSeriesByPos","_change_REFRESH","_change_INIT","_change_TITLE","dataCellTemplateProps","__dataCellTemplateProps","GroupingHeaderPanelExtender","_uiData_gridGrouping2","GroupingDataSourceAdapterExtender","_initGroupingHelper","isAutoExpandAll","isFocusedRowEnabled","_collapseExpandAll","isExpand","_hasGroupLevelsExpandState","GroupingDataControllerExtender","_beforeProcessItems","groupedColumns","onGroupingMenuItemClick","_appendGroupingItem","_isGroupPanelVisible","$groupPanel","_updateGroupPanelContent","_renderGroupPanelItems","$groupPanelItem","$toolbarElement","$groupedColumnElement","isColumnGrouped","groupingTexts","ungroup","ungroupAll","GroupingRowsViewExtender","isGroupRowStateChanged","isExpandButtonClicked","_changeGroupRowState","columnHeadersViewExtender","groupByThisColumn","initConfig","durations","getDurations","getWaves","getInkRipple","$currentWave","$wave","hidingTimeout","hideSelectedWave","elementDiagonal","waveSize","getWaveStyleConfig","showingTimeout","showingWaveHandler","durationCss","showingScale","hidingScale","hidingOpacity","_index2","ALLOWED_STYLE_CLASSES","TEXTEDITOR_STYLING_MODE_PREFIX","EVENTS_LIST","CONTROL_KEYS","checkButtonsOptionType","_buttonCollection","onKeyPress","onKeyUp","onInput","onEnterKey","_buttonsContainer","stylingModeClass","defaultOptionValue","_updateButtonsStyling","_renderEnterKeyAction","_renderPendingIndicator","$inputContainer","_pendingIndicator","_disposePendingIndicator","_showValidMark","renderBeforeButtons","renderAfterButtons","inputAttrName","inputAttributes","defaultAttributes","updateButtons","buttonInstance","valid","_toggleSpellcheckState","_toggleTabIndex","_renderPlaceholderMarkup","_attachPlaceholderEvents","_$placeholder","placeholderText","startEvent","_placeholder","isCtrlEnter","isNewValue","_cleanValueChangeEvent","valueChangeNamespace","textChangeNamespace","_focusEventTarget","_isNestedTarget","_enterKeyAction","_enterKeyHandlerUp","_refreshFocusEvent","_enumParser","_normalizeEnum","parseOrientation","parseItemTextPosition","parsePosition","parseItemsAlignment","stateName","colorFromAction","getAttributes","applyMarkerState","idToIndexMap","renderMarker","parseMargins","itemsAlignment","createSquareMarker","createCircleMarker","inRect","checkLinesSize","countItems","maxMeasureLength","maxAltMeasureLength","lineLength","altDirection","altMeasure","altOffset","altSpacing","countItem","altCountItem","decreaseItemCount","getLineLength","getPos","setMaxInLine","maxLineSize","itemMeasure","transpose","transposeArray","getMarkerCreator","getTitleHorizontalAlignment","_backgroundClass","_itemGroupClass","_textField","_getCustomizeObject","_titleGroupClass","_allowInsidePosition","_updated","_Legend","legendPrototype","themeManagerTitleOptions","initMarkerSize","customizeItems","_insideLegendGroup","_createBackground","horizontalPadding","_createItems","_updateElementsPosition","_measureElements","maxBBoxHeight","markerBBox","getSizeItem","_locateElements","_finalUpdate","createMarker","markerShape","_markersId","markerTemplate","_templatesGroups","stateOfDataItem","normalState","normalStateFill","markerColor","itemGroup","markerGroup","markerOffset","_createHint","_adjustBackgroundSettings","_setBoundingRect","insideLegendGroup","_x1","_x2","_y2","locationOptions","_moveInInitialValues","_locateRowsColumns","getAlign","iteration","_getItemsLayoutOptions","_alignLines","_applyItemPosition","tableLine","firstLine","secondLine","markerBox","inverseLabelPosition","processLine","maxLineLength","getMaxLineLength","initPosition","getInitPositionForDirection","itemBBoxOptions","itemBBox","itemLegend","marginTextLabel","legendBox","_calculateTotalBox","backgroundSettings","widthWithoutMargins","verticalPadding","_shiftTitle","_shiftMarkers","_y1","boxWidth","titleY","titleX","legendGroup","_applyLegendItemStyle","_createLegendItems","sortDimension","sortingMethodByLevel","getMemberForSortBy","summaryValueSelector","sortBySummaryFieldIndex","areRows","sortByDimension","sliceIndex","textPath","getSliceIndex","getFieldSummaryValueSelector","summaryCompare","getSortingMethod","changePaging","cacheEnabled","onDataErrorOccurred","_skipProcessingPagingChange","_currentOperationTypes","_columnsChangedHandler","_handleColumnsChanged","_setPagingOptions","_useSortingGroupingFromColumns","returnDataField","additionalFilter","_readyDeferred","_columnsUpdating","filterApplied","_needApplyFilter","updateItemsHandler","isAsyncDataSourceApplying","_isDataSourceApplying","needApplyFilter","_isAllDataTypesDefined","_fireLoadingChanged","oldDataSource","lastVisibleItem","isModified","_applyChangeFull","_getRowIndices","correctedRowIndex","rowIndexCorrection","equalItems","oldNextItem","newNextItem","_partialUpdateRow","changedColumnIndices","_item1$data","_item2$data","_item1$data2","_item2$data2","expandedMatch","summaryCellsMatch","continuationMatch","getRowKey","isDataChanged","_loadingText","clearColumnOption","_fireDataSourceChanged","changedHandler","isCustomStore","_createDataSourceAdapter","enabledRemoteOperations","getDataByKeys","rowKeys","keyData","beginCustomLoading","endCustomLoading","customizeLoadResult","FONT_FAMILY","registerMaterialColorScheme","accentName","materialAccents","accent","unwrapVariable","bracketsToDots","assignPropValue","prepareOptions","functionAsIs","hasDefaultValue","pathPart","combineGetters","compiledGetters","ensurePropValueDefined","lastLevelIndex","levelIndex","propertyValue","readPropValue","isPropertyFunc","caseSensitive","separatedAdjustedValue","separatedValue","absValue","isExponentValue","_isEdgeBug","getRoot","D2","roots","u","D3","_valueString$split$","dividend","quotient","isMinValueUndefined","isMaxValueUndefined","mantissa","positionOfDelimiter","Widget","hoveredElement","innerWidget","optionsContainer","syncOptions","_renderHint","_isFocusable","_toggleIndependentState","_resetActiveState","_renderAccessKey","_this$option4","_this$option6","hasChildListeners","onlyChildProcessing","keyboardListeners","_hoverEndHandler","_updatedHover","_findHoverTarget","$previous","_this$option10","newHoveredElement","widgetOptionMap","SwitchableButtonEditDecorator","$buttonWrapper","$buttonInnerWrapper","_$buttonContainer","listWidth","_buttonWidth","fromValue","toValue","_buttonContainerWidth","$toggle","_concat","STATE_TO_INDEX","SELECTIONS","single","EmptySource","ArraySource","GeoJsonSource","isGeoJsonObject","features","setAreaLabelVisibility","spaceSize","setLineLabelVisibility","getDataValue","bbox","TYPE_TO_TYPE_MAP","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","pick","groupByColor","groupBySize","emptyStrategy","updateGrouping","getDefaultColor","strategiesByType","strategiesByGeometry","strategiesByElementType","sample","guessTypeByData","fullType","applyElementState","projectPointList","output","projectLineString","projectPolygon","transformList","transformPointList","combineSettings","findGroupingIndex","applyGrouping","paletteIndex","raiseChanged","partial","valueCallback","projectLabel","centroid","resultCentroid","maxArea","calculatePolygonCentroid","transformLabel","getLabelOffset","hoveredOpacity","selectedOpacity","setState","hasLabelsGroup","resultData","calculateLineStringData","_getStyles","_setState","projectMultiPolygon","dot","hoveredSize","selectedSize","hoveredBackSize","selectedBackSize","sizeGroups","deltaValue","zeroSum","hoveredStep","MapLayerElement","performGrouping","settingField","valuesCallback","dropGrouping","setFlag","hasFlag","colorGroups","colorGroupingField","sizeGroupingField","MapLayer","_onProjection","getElements","getProxies","createLayerProxy","_dataSourceLoaded","cross","totalLength","min0","max0","min1","max1","_layers","_layerByName","_clip","_dataReady","getDataReadyCallback","_removeHandlers","_project","_transform","_transformCore","sourceType","_specificDataSourceOption","_normalizeDataSource","_destroyHandles","labelRoot","_options_dataSource","isContextChanged","paletteSize","processCommonSettings","hasSeparateLabel","resetSelected","_createHandles","_updateHandles","proxies","restoreSelected","measureLabel","adjustLabel","raiseClick","hoverItem","setHovered","setSelected","applySettings","createProxy","_ctx","_fig","_coordinates","_projectLabel","_labelProjection","_transformLabel","_refreshLabel","labelSettings","_setForeground","layerByName","_updateClip","bw","_borderWidth","AllDayPanelTableBodyProps","WidgetObserver","_uiScroll_viewNative","_uiScroll_viewNative2","_uiScroll_view","refreshStrategies","pullDown","swipeDown","simulated","scrollViewServerConfig","ScrollView","refreshStrategy","_loadingIndicatorEnabled","_initTopPocket","_initBottomPocket","_initLoadPanel","SCROLLVIEW_CLASS","$reachBottom","_$reachBottom","SCROLLVIEW_REACHBOTTOM_CLASS","_$reachBottomText","_updateReachBottomText","$loadPanelElement","strategyClass","_reachBottomHandler","_pullDownAction","_reachBottomAction","_tryRefreshPocketState","_pullDownEnable","_reachBottomEnable","_pullDownLoading","preventReachBottom","showOrHide","baseStyle","baseBorder","borderVisible","Item"],"mappings":"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KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,aAAc,KACd,aAAc,KACd,cAAe,KACf,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,SAAU,KACV,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,MACT,QAAS,MACT,QAAS,MACT,aAAc,MACd,QAAS,MACT,QAAS,MACT,QAAS,MACT,aAAc,MACd,QAAS,MACT,QAAS,MACT,QAAS,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","file":"devextreme.46cdd20581f3c4b6a3a0.chunk.js","sourcesContent":["/**\r\n * DevExtreme (data/data_source/data_source.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataSource = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = _interopRequireDefault(require(\"../utils\"));\r\nvar _array_utils = require(\"../array_utils\");\r\nvar _custom_store = _interopRequireDefault(require(\"../custom_store\"));\r\nvar _events_strategy = require(\"../../core/events_strategy\");\r\nvar _errors = _interopRequireDefault(require(\"../errors\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _queue = require(\"../../core/utils/queue\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _operation_manager = _interopRequireDefault(require(\"./operation_manager\"));\r\nvar _utils2 = require(\"./utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DataSource = _class.default.inherit({\r\n    ctor: function(options) {\r\n        var _options$reshapeOnPus, _this = this;\r\n        options = (0, _utils2.normalizeDataSourceOptions)(options);\r\n        this._eventsStrategy = new _events_strategy.EventsStrategy(this);\r\n        var onPushHandler = 0 !== options.pushAggregationTimeout ? _utils.default.throttleChanges(this._onPush, function() {\r\n            return void 0 === options.pushAggregationTimeout ? 5 * _this._changedTime : options.pushAggregationTimeout\r\n        }) : this._onPush;\r\n        this._changedTime = 0;\r\n        this._onPushHandler = function(changes) {\r\n            _this._aggregationTimeoutId = onPushHandler.call(_this, changes)\r\n        };\r\n        this._store = options.store;\r\n        this._store.on(\"push\", this._onPushHandler);\r\n        this._storeLoadOptions = this._extractLoadOptions(options);\r\n        this._mapFunc = options.map;\r\n        this._postProcessFunc = options.postProcess;\r\n        this._pageIndex = void 0 !== options.pageIndex ? options.pageIndex : 0;\r\n        this._pageSize = void 0 !== options.pageSize ? options.pageSize : 20;\r\n        this._loadingCount = 0;\r\n        this._loadQueue = this._createLoadQueue();\r\n        this._searchValue = \"searchValue\" in options ? options.searchValue : null;\r\n        this._searchOperation = options.searchOperation || \"contains\";\r\n        this._searchExpr = options.searchExpr;\r\n        this._paginate = options.paginate;\r\n        this._reshapeOnPush = null !== (_options$reshapeOnPus = options.reshapeOnPush) && void 0 !== _options$reshapeOnPus ? _options$reshapeOnPus : false;\r\n        (0, _iterator.each)([\"onChanged\", \"onLoadError\", \"onLoadingChanged\", \"onCustomizeLoadResult\", \"onCustomizeStoreLoadOptions\"], function(_, optionName) {\r\n            if (optionName in options) {\r\n                _this.on(optionName.substr(2, 1).toLowerCase() + optionName.substr(3), options[optionName])\r\n            }\r\n        });\r\n        this._operationManager = new _operation_manager.default;\r\n        this._init()\r\n    },\r\n    _init: function() {\r\n        this._items = [];\r\n        this._userData = {};\r\n        this._totalCount = -1;\r\n        this._isLoaded = false;\r\n        if (!(0, _type.isDefined)(this._paginate)) {\r\n            this._paginate = !this.group()\r\n        }\r\n        this._isLastPage = !this._paginate\r\n    },\r\n    dispose: function() {\r\n        var _this$_delayedLoadTas;\r\n        this._store.off(\"push\", this._onPushHandler);\r\n        this._eventsStrategy.dispose();\r\n        clearTimeout(this._aggregationTimeoutId);\r\n        delete this._store;\r\n        null === (_this$_delayedLoadTas = this._delayedLoadTask) || void 0 === _this$_delayedLoadTas ? void 0 : _this$_delayedLoadTas.abort();\r\n        this._operationManager.cancelAll();\r\n        this._disposed = true\r\n    },\r\n    _extractLoadOptions: function(options) {\r\n        var result = {};\r\n        var names = [\"sort\", \"filter\", \"select\", \"group\", \"requireTotalCount\"];\r\n        var customNames = this._store._customLoadOptions();\r\n        if (customNames) {\r\n            names = names.concat(customNames)\r\n        }(0, _iterator.each)(names, function() {\r\n            result[this] = options[this]\r\n        });\r\n        return result\r\n    },\r\n    loadOptions: function() {\r\n        return this._storeLoadOptions\r\n    },\r\n    items: function() {\r\n        return this._items\r\n    },\r\n    pageIndex: function(newIndex) {\r\n        if (!(0, _type.isNumeric)(newIndex)) {\r\n            return this._pageIndex\r\n        }\r\n        this._pageIndex = newIndex;\r\n        this._isLastPage = !this._paginate\r\n    },\r\n    paginate: function(value) {\r\n        if (!(0, _type.isBoolean)(value)) {\r\n            return this._paginate\r\n        }\r\n        if (this._paginate !== value) {\r\n            this._paginate = value;\r\n            this.pageIndex(0)\r\n        }\r\n    },\r\n    pageSize: function(value) {\r\n        if (!(0, _type.isNumeric)(value)) {\r\n            return this._pageSize\r\n        }\r\n        this._pageSize = value\r\n    },\r\n    isLastPage: function() {\r\n        return this._isLastPage\r\n    },\r\n    generateStoreLoadOptionAccessor: function(optionName) {\r\n        var _this2 = this;\r\n        return function(args) {\r\n            var normalizedArgs = (0, _utils2.normalizeStoreLoadOptionAccessorArguments)(args);\r\n            if (void 0 === normalizedArgs) {\r\n                return _this2._storeLoadOptions[optionName]\r\n            }\r\n            _this2._storeLoadOptions[optionName] = normalizedArgs\r\n        }\r\n    },\r\n    sort: function() {\r\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n            args[_key] = arguments[_key]\r\n        }\r\n        return this.generateStoreLoadOptionAccessor(\"sort\")(args)\r\n    },\r\n    filter: function() {\r\n        var newFilter = (0, _utils2.normalizeStoreLoadOptionAccessorArguments)(arguments);\r\n        if (void 0 === newFilter) {\r\n            return this._storeLoadOptions.filter\r\n        }\r\n        this._storeLoadOptions.filter = newFilter;\r\n        this.pageIndex(0)\r\n    },\r\n    group: function() {\r\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n            args[_key2] = arguments[_key2]\r\n        }\r\n        return this.generateStoreLoadOptionAccessor(\"group\")(args)\r\n    },\r\n    select: function() {\r\n        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\r\n            args[_key3] = arguments[_key3]\r\n        }\r\n        return this.generateStoreLoadOptionAccessor(\"select\")(args)\r\n    },\r\n    requireTotalCount: function(value) {\r\n        if (!(0, _type.isBoolean)(value)) {\r\n            return this._storeLoadOptions.requireTotalCount\r\n        }\r\n        this._storeLoadOptions.requireTotalCount = value\r\n    },\r\n    searchValue: function(value) {\r\n        if (arguments.length < 1) {\r\n            return this._searchValue\r\n        }\r\n        this._searchValue = value;\r\n        this.pageIndex(0)\r\n    },\r\n    searchOperation: function(op) {\r\n        if (!(0, _type.isString)(op)) {\r\n            return this._searchOperation\r\n        }\r\n        this._searchOperation = op;\r\n        this.pageIndex(0)\r\n    },\r\n    searchExpr: function(expr) {\r\n        var argc = arguments.length;\r\n        if (0 === argc) {\r\n            return this._searchExpr\r\n        }\r\n        if (argc > 1) {\r\n            expr = [].slice.call(arguments)\r\n        }\r\n        this._searchExpr = expr;\r\n        this.pageIndex(0)\r\n    },\r\n    store: function() {\r\n        return this._store\r\n    },\r\n    key: function() {\r\n        var _this$_store;\r\n        return null === (_this$_store = this._store) || void 0 === _this$_store ? void 0 : _this$_store.key()\r\n    },\r\n    totalCount: function() {\r\n        return this._totalCount\r\n    },\r\n    isLoaded: function() {\r\n        return this._isLoaded\r\n    },\r\n    isLoading: function() {\r\n        return this._loadingCount > 0\r\n    },\r\n    beginLoading: function() {\r\n        this._changeLoadingCount(1)\r\n    },\r\n    endLoading: function() {\r\n        this._changeLoadingCount(-1)\r\n    },\r\n    _createLoadQueue: function() {\r\n        return (0, _queue.create)()\r\n    },\r\n    _changeLoadingCount: function(increment) {\r\n        var oldLoading = this.isLoading();\r\n        this._loadingCount += increment;\r\n        var newLoading = this.isLoading();\r\n        if (oldLoading ^ newLoading) {\r\n            this._eventsStrategy.fireEvent(\"loadingChanged\", [newLoading])\r\n        }\r\n    },\r\n    _scheduleLoadCallbacks: function(deferred) {\r\n        var _this3 = this;\r\n        this.beginLoading();\r\n        deferred.always(function() {\r\n            _this3.endLoading()\r\n        })\r\n    },\r\n    _scheduleFailCallbacks: function(deferred) {\r\n        var _this4 = this;\r\n        deferred.fail(function() {\r\n            for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\r\n                args[_key4] = arguments[_key4]\r\n            }\r\n            if (args[0] === _utils2.CANCELED_TOKEN) {\r\n                return\r\n            }\r\n            _this4._eventsStrategy.fireEvent(\"loadError\", args)\r\n        })\r\n    },\r\n    _fireChanged: function(args) {\r\n        var date = new Date;\r\n        this._eventsStrategy.fireEvent(\"changed\", args);\r\n        this._changedTime = new Date - date\r\n    },\r\n    _scheduleChangedCallbacks: function(deferred) {\r\n        var _this5 = this;\r\n        deferred.done(function() {\r\n            return _this5._fireChanged()\r\n        })\r\n    },\r\n    loadSingle: function(propName, propValue) {\r\n        var _this6 = this;\r\n        var d = new _deferred.Deferred;\r\n        var key = this.key();\r\n        var store = this._store;\r\n        var options = this._createStoreLoadOptions();\r\n        var handleDone = function(data) {\r\n            if (!(0, _type.isDefined)(data) || (0, _array.isEmpty)(data)) {\r\n                d.reject(new _errors.default.errors.Error(\"E4009\"))\r\n            } else {\r\n                if (!Array.isArray(data)) {\r\n                    data = [data]\r\n                }\r\n                d.resolve(_this6._applyMapFunction(data)[0])\r\n            }\r\n        };\r\n        this._scheduleFailCallbacks(d);\r\n        if (arguments.length < 2) {\r\n            propValue = propName;\r\n            propName = key\r\n        }\r\n        delete options.skip;\r\n        delete options.group;\r\n        delete options.refresh;\r\n        delete options.pageIndex;\r\n        delete options.searchString;\r\n        var shouldForceByKey = function() {\r\n            return store instanceof _custom_store.default && !store._byKeyViaLoad()\r\n        };\r\n        (function() {\r\n            if (propName === key || shouldForceByKey()) {\r\n                return store.byKey(propValue, options)\r\n            }\r\n            options.take = 1;\r\n            options.filter = options.filter ? [options.filter, [propName, propValue]] : [propName, propValue];\r\n            return store.load(options)\r\n        })().fail(d.reject).done(handleDone);\r\n        return d.promise()\r\n    },\r\n    load: function() {\r\n        var _this7 = this;\r\n        var d = new _deferred.Deferred;\r\n        var loadTask = function() {\r\n            if (_this7._disposed) {\r\n                return\r\n            }\r\n            if (!(0, _utils2.isPending)(d)) {\r\n                return\r\n            }\r\n            return _this7._loadFromStore(loadOperation, d)\r\n        };\r\n        this._scheduleLoadCallbacks(d);\r\n        this._scheduleFailCallbacks(d);\r\n        this._scheduleChangedCallbacks(d);\r\n        var loadOperation = this._createLoadOperation(d);\r\n        this._eventsStrategy.fireEvent(\"customizeStoreLoadOptions\", [loadOperation]);\r\n        this._loadQueue.add(function() {\r\n            if (\"number\" === typeof loadOperation.delay) {\r\n                _this7._delayedLoadTask = (0, _common.executeAsync)(loadTask, loadOperation.delay)\r\n            } else {\r\n                loadTask()\r\n            }\r\n            return d.promise()\r\n        });\r\n        return d.promise({\r\n            operationId: loadOperation.operationId\r\n        })\r\n    },\r\n    _onPush: function(changes) {\r\n        var _this8 = this;\r\n        if (this._reshapeOnPush) {\r\n            this.load()\r\n        } else {\r\n            this._eventsStrategy.fireEvent(\"changing\", [{\r\n                changes: changes\r\n            }]);\r\n            var group = this.group();\r\n            var items = this.items();\r\n            var groupLevel = 0;\r\n            var dataSourceChanges = this.paginate() || group ? changes.filter(function(item) {\r\n                return \"update\" === item.type\r\n            }) : changes;\r\n            if (group) {\r\n                groupLevel = Array.isArray(group) ? group.length : 1\r\n            }\r\n            if (this._mapFunc) {\r\n                dataSourceChanges.forEach(function(item) {\r\n                    if (\"insert\" === item.type) {\r\n                        item.data = _this8._mapFunc(item.data)\r\n                    }\r\n                })\r\n            }(0, _array_utils.applyBatch)({\r\n                keyInfo: this.store(),\r\n                data: items,\r\n                changes: dataSourceChanges,\r\n                groupCount: groupLevel,\r\n                useInsertIndex: true\r\n            });\r\n            this._fireChanged([{\r\n                changes: changes\r\n            }])\r\n        }\r\n    },\r\n    _createLoadOperation: function(deferred) {\r\n        var _this9 = this;\r\n        var operationId = this._operationManager.add(deferred);\r\n        var storeLoadOptions = this._createStoreLoadOptions();\r\n        deferred.always(function() {\r\n            return _this9._operationManager.remove(operationId)\r\n        });\r\n        return {\r\n            operationId: operationId,\r\n            storeLoadOptions: storeLoadOptions\r\n        }\r\n    },\r\n    reload: function() {\r\n        var store = this.store();\r\n        if (store instanceof _custom_store.default) {\r\n            store.clearRawDataCache()\r\n        }\r\n        this._init();\r\n        return this.load()\r\n    },\r\n    cancel: function(operationId) {\r\n        return this._operationManager.cancel(operationId)\r\n    },\r\n    cancelAll: function() {\r\n        return this._operationManager.cancelAll()\r\n    },\r\n    _addSearchOptions: function(storeLoadOptions) {\r\n        if (this._disposed) {\r\n            return\r\n        }\r\n        if (this.store()._useDefaultSearch) {\r\n            this._addSearchFilter(storeLoadOptions)\r\n        } else {\r\n            storeLoadOptions.searchOperation = this._searchOperation;\r\n            storeLoadOptions.searchValue = this._searchValue;\r\n            storeLoadOptions.searchExpr = this._searchExpr\r\n        }\r\n    },\r\n    _createStoreLoadOptions: function() {\r\n        var result = (0, _extend.extend)({}, this._storeLoadOptions);\r\n        this._addSearchOptions(result);\r\n        if (this._paginate) {\r\n            if (this._pageSize) {\r\n                result.skip = this._pageIndex * this._pageSize;\r\n                result.take = this._pageSize\r\n            }\r\n        }\r\n        result.userData = this._userData;\r\n        return result\r\n    },\r\n    _addSearchFilter: function(storeLoadOptions) {\r\n        var value = this._searchValue;\r\n        var op = this._searchOperation;\r\n        var selector = this._searchExpr;\r\n        var searchFilter = [];\r\n        if (!value) {\r\n            return\r\n        }\r\n        if (!selector) {\r\n            selector = \"this\"\r\n        }\r\n        if (!Array.isArray(selector)) {\r\n            selector = [selector]\r\n        }(0, _iterator.each)(selector, function(i, item) {\r\n            if (searchFilter.length) {\r\n                searchFilter.push(\"or\")\r\n            }\r\n            searchFilter.push([item, op, value])\r\n        });\r\n        if (storeLoadOptions.filter) {\r\n            storeLoadOptions.filter = [searchFilter, storeLoadOptions.filter]\r\n        } else {\r\n            storeLoadOptions.filter = searchFilter\r\n        }\r\n    },\r\n    _loadFromStore: function(loadOptions, pendingDeferred) {\r\n        var _this10 = this;\r\n        var handleSuccess = function(data, extra) {\r\n            if (_this10._disposed) {\r\n                return\r\n            }\r\n            if (!(0, _utils2.isPending)(pendingDeferred)) {\r\n                return\r\n            }\r\n            var loadResult = (0, _extend.extend)((0, _utils2.normalizeLoadResult)(data, extra), loadOptions);\r\n            _this10._eventsStrategy.fireEvent(\"customizeLoadResult\", [loadResult]);\r\n            (0, _deferred.when)(loadResult.data).done(function(data) {\r\n                loadResult.data = data;\r\n                _this10._processStoreLoadResult(loadResult, pendingDeferred)\r\n            }).fail(pendingDeferred.reject)\r\n        };\r\n        if (loadOptions.data) {\r\n            return (new _deferred.Deferred).resolve(loadOptions.data).done(handleSuccess)\r\n        }\r\n        return this.store().load(loadOptions.storeLoadOptions).done(handleSuccess).fail(pendingDeferred.reject)\r\n    },\r\n    _processStoreLoadResult: function(loadResult, pendingDeferred) {\r\n        var _this11 = this;\r\n        var data = loadResult.data;\r\n        var extra = loadResult.extra;\r\n        var storeLoadOptions = loadResult.storeLoadOptions;\r\n        var resolvePendingDeferred = function() {\r\n            _this11._isLoaded = true;\r\n            _this11._totalCount = isFinite(extra.totalCount) ? extra.totalCount : -1;\r\n            return pendingDeferred.resolve(data, extra)\r\n        };\r\n        var proceedLoadingTotalCount = function() {\r\n            _this11.store().totalCount(storeLoadOptions).done(function(count) {\r\n                extra.totalCount = count;\r\n                resolvePendingDeferred()\r\n            }).fail(pendingDeferred.reject)\r\n        };\r\n        if (this._disposed) {\r\n            return\r\n        }\r\n        data = this._applyPostProcessFunction(this._applyMapFunction(data));\r\n        if (!(0, _type.isPlainObject)(extra)) {\r\n            extra = {}\r\n        }\r\n        this._items = data;\r\n        if (!data.length || !this._paginate || this._pageSize && data.length < this._pageSize) {\r\n            this._isLastPage = true\r\n        }\r\n        if (storeLoadOptions.requireTotalCount && !isFinite(extra.totalCount)) {\r\n            proceedLoadingTotalCount()\r\n        } else {\r\n            resolvePendingDeferred()\r\n        }\r\n    },\r\n    _applyMapFunction: function(data) {\r\n        if (this._mapFunc) {\r\n            return (0, _utils2.mapDataRespectingGrouping)(data, this._mapFunc, this.group())\r\n        }\r\n        return data\r\n    },\r\n    _applyPostProcessFunction: function(data) {\r\n        if (this._postProcessFunc) {\r\n            return this._postProcessFunc(data)\r\n        }\r\n        return data\r\n    },\r\n    on: function(eventName, eventHandler) {\r\n        this._eventsStrategy.on(eventName, eventHandler);\r\n        return this\r\n    },\r\n    off: function(eventName, eventHandler) {\r\n        this._eventsStrategy.off(eventName, eventHandler);\r\n        return this\r\n    }\r\n});\r\nexports.DataSource = DataSource;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.reorder.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit2 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\nvar _sortable = _interopRequireDefault(require(\"../sortable\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar REORDER_HANDLE_CONTAINER_CLASS = \"dx-list-reorder-handle-container\";\r\nvar REORDER_HANDLE_CLASS = \"dx-list-reorder-handle\";\r\nvar REORDERING_ITEM_GHOST_CLASS = \"dx-list-item-ghost-reordering\";\r\nvar STATE_HOVER_CLASS = \"dx-state-hover\";\r\n(0, _uiListEdit.register)(\"reorder\", \"default\", _uiListEdit2.default.inherit({\r\n    _init: function() {\r\n        var list = this._list;\r\n        this._groupedEnabled = this._list.option(\"grouped\");\r\n        this._lockedDrag = false;\r\n        var filter = this._groupedEnabled ? \"> .dx-list-group > .dx-list-group-body > .dx-list-item\" : \"> .dx-list-item\";\r\n        this._sortable = list._createComponent(list._scrollView.content(), _sortable.default, (0, _extend.extend)({\r\n            component: list,\r\n            contentTemplate: null,\r\n            allowReordering: false,\r\n            filter: filter,\r\n            container: list.$element(),\r\n            dragDirection: list.option(\"itemDragging.group\") ? \"both\" : \"vertical\",\r\n            handle: \".\".concat(REORDER_HANDLE_CLASS),\r\n            dragTemplate: this._dragTemplate,\r\n            onDragStart: this._dragStartHandler.bind(this),\r\n            onDragChange: this._dragChangeHandler.bind(this),\r\n            onReorder: this._reorderHandler.bind(this)\r\n        }, list.option(\"itemDragging\")))\r\n    },\r\n    _dragTemplate: function(e) {\r\n        return (0, _renderer.default)(e.itemElement).clone().width((0, _renderer.default)(e.itemElement).width()).addClass(REORDERING_ITEM_GHOST_CLASS).addClass(STATE_HOVER_CLASS)\r\n    },\r\n    _dragStartHandler: function(e) {\r\n        if (this._lockedDrag) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n    },\r\n    _dragChangeHandler: function(e) {\r\n        if (this._groupedEnabled && !this._sameParent(e.fromIndex, e.toIndex)) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n    },\r\n    _sameParent: function(fromIndex, toIndex) {\r\n        var $dragging = this._list.getItemElementByFlatIndex(fromIndex);\r\n        var $over = this._list.getItemElementByFlatIndex(toIndex);\r\n        return $over.parent().get(0) === $dragging.parent().get(0)\r\n    },\r\n    _reorderHandler: function(e) {\r\n        var $targetElement = this._list.getItemElementByFlatIndex(e.toIndex);\r\n        this._list.reorderItem((0, _renderer.default)(e.itemElement), $targetElement)\r\n    },\r\n    afterBag: function(config) {\r\n        var _this = this;\r\n        var $handle = (0, _renderer.default)(\"<div>\").addClass(REORDER_HANDLE_CLASS);\r\n        _events_engine.default.on($handle, \"dxpointerdown\", function(e) {\r\n            _this._lockedDrag = !(0, _index.isMouseEvent)(e)\r\n        });\r\n        _events_engine.default.on($handle, \"dxhold\", {\r\n            timeout: 30\r\n        }, function(e) {\r\n            e.cancel = true;\r\n            _this._lockedDrag = false\r\n        });\r\n        config.$container.addClass(REORDER_HANDLE_CONTAINER_CLASS).append($handle)\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/themes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.waitForThemeLoad = waitForThemeLoad;\r\nexports.init = init;\r\nexports.current = current;\r\nexports.attachCssClasses = attachCssClasses;\r\nexports.detachCssClasses = detachCssClasses;\r\nexports.isMaterial = isMaterial;\r\nexports.isGeneric = isGeneric;\r\nexports.isDark = isDark;\r\nexports.isWebFontLoaded = isWebFontLoaded;\r\nexports.waitWebFont = waitWebFont;\r\nexports.ready = themeReady;\r\nexports.resetTheme = resetTheme;\r\nexports.initialized = initialized;\r\nexports.setDefaultTimeout = setDefaultTimeout;\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _promise = _interopRequireDefault(require(\"../core/polyfills/promise\"));\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _html_parser = require(\"../core/utils/html_parser\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../core/utils/ready_callbacks\"));\r\nvar _view_port = require(\"../core/utils/view_port\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _themes_callback = require(\"./themes_callback\");\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar ready = _ready_callbacks.default.add;\r\nvar viewPort = _view_port.value;\r\nvar viewPortChanged = _view_port.changeCallback;\r\nvar initDeferred = new _deferred.Deferred;\r\nvar DX_LINK_SELECTOR = \"link[rel=dx-theme]\";\r\nvar THEME_ATTR = \"data-theme\";\r\nvar ACTIVE_ATTR = \"data-active\";\r\nvar DX_HAIRLINES_CLASS = \"dx-hairlines\";\r\nvar ANY_THEME = \"any\";\r\nvar context;\r\nvar $activeThemeLink;\r\nvar knownThemes;\r\nvar currentThemeName;\r\nvar pendingThemeName;\r\nvar defaultTimeout = 15e3;\r\nvar THEME_MARKER_PREFIX = \"dx.\";\r\n\r\nfunction readThemeMarker() {\r\n    if (!(0, _window.hasWindow)()) {\r\n        return null\r\n    }\r\n    var element = (0, _renderer.default)(\"<div>\", context).addClass(\"dx-theme-marker\").appendTo(context.documentElement);\r\n    var result;\r\n    try {\r\n        result = element.css(\"fontFamily\");\r\n        if (!result) {\r\n            return null\r\n        }\r\n        result = result.replace(/[\"']/g, \"\");\r\n        if (result.substr(0, THEME_MARKER_PREFIX.length) !== THEME_MARKER_PREFIX) {\r\n            return null\r\n        }\r\n        return result.substr(THEME_MARKER_PREFIX.length)\r\n    } finally {\r\n        element.remove()\r\n    }\r\n}\r\n\r\nfunction waitForThemeLoad(themeName) {\r\n    var waitStartTime;\r\n    var timerId;\r\n    var intervalCleared = true;\r\n    pendingThemeName = themeName;\r\n\r\n    function handleLoaded() {\r\n        pendingThemeName = null;\r\n        clearInterval(timerId);\r\n        intervalCleared = true;\r\n        _themes_callback.themeReadyCallback.fire();\r\n        _themes_callback.themeReadyCallback.empty();\r\n        initDeferred.resolve()\r\n    }\r\n    if (isPendingThemeLoaded() || !defaultTimeout) {\r\n        handleLoaded()\r\n    } else {\r\n        if (!intervalCleared) {\r\n            if (pendingThemeName) {\r\n                pendingThemeName = themeName\r\n            }\r\n            return\r\n        }\r\n        waitStartTime = Date.now();\r\n        intervalCleared = false;\r\n        timerId = setInterval(function() {\r\n            var isLoaded = isPendingThemeLoaded();\r\n            var isTimeout = !isLoaded && Date.now() - waitStartTime > defaultTimeout;\r\n            if (isTimeout) {\r\n                _ui.default.log(\"W0004\", pendingThemeName)\r\n            }\r\n            if (isLoaded || isTimeout) {\r\n                handleLoaded()\r\n            }\r\n        }, 10)\r\n    }\r\n}\r\n\r\nfunction isPendingThemeLoaded() {\r\n    if (!pendingThemeName) {\r\n        return true\r\n    }\r\n    var anyThemePending = pendingThemeName === ANY_THEME;\r\n    if (\"resolved\" === initDeferred.state() && anyThemePending) {\r\n        return true\r\n    }\r\n    var themeMarker = readThemeMarker();\r\n    if (themeMarker && anyThemePending) {\r\n        return true\r\n    }\r\n    return themeMarker === pendingThemeName\r\n}\r\n\r\nfunction processMarkup() {\r\n    var $allThemeLinks = (0, _renderer.default)(DX_LINK_SELECTOR, context);\r\n    if (!$allThemeLinks.length) {\r\n        return\r\n    }\r\n    knownThemes = {};\r\n    $activeThemeLink = (0, _renderer.default)((0, _html_parser.parseHTML)(\"<link rel=stylesheet>\"), context);\r\n    $allThemeLinks.each(function() {\r\n        var link = (0, _renderer.default)(this, context);\r\n        var fullThemeName = link.attr(THEME_ATTR);\r\n        var url = link.attr(\"href\");\r\n        var isActive = \"true\" === link.attr(ACTIVE_ATTR);\r\n        knownThemes[fullThemeName] = {\r\n            url: url,\r\n            isActive: isActive\r\n        }\r\n    });\r\n    $allThemeLinks.last().after($activeThemeLink);\r\n    $allThemeLinks.remove()\r\n}\r\n\r\nfunction resolveFullThemeName(desiredThemeName) {\r\n    var desiredThemeParts = desiredThemeName ? desiredThemeName.split(\".\") : [];\r\n    var result = null;\r\n    if (knownThemes) {\r\n        if (desiredThemeName in knownThemes) {\r\n            return desiredThemeName\r\n        }(0, _iterator.each)(knownThemes, function(knownThemeName, themeData) {\r\n            var knownThemeParts = knownThemeName.split(\".\");\r\n            if (desiredThemeParts[0] && knownThemeParts[0] !== desiredThemeParts[0]) {\r\n                return\r\n            }\r\n            if (desiredThemeParts[1] && desiredThemeParts[1] !== knownThemeParts[1]) {\r\n                return\r\n            }\r\n            if (desiredThemeParts[2] && desiredThemeParts[2] !== knownThemeParts[2]) {\r\n                return\r\n            }\r\n            if (!result || themeData.isActive) {\r\n                result = knownThemeName\r\n            }\r\n            if (themeData.isActive) {\r\n                return false\r\n            }\r\n        })\r\n    }\r\n    return result\r\n}\r\n\r\nfunction initContext(newContext) {\r\n    try {\r\n        if (newContext !== context) {\r\n            knownThemes = null\r\n        }\r\n    } catch (x) {\r\n        knownThemes = null\r\n    }\r\n    context = newContext\r\n}\r\n\r\nfunction init(options) {\r\n    options = options || {};\r\n    initContext(options.context || _dom_adapter.default.getDocument());\r\n    if (!context) {\r\n        return\r\n    }\r\n    processMarkup();\r\n    currentThemeName = void 0;\r\n    current(options)\r\n}\r\n\r\nfunction current(options) {\r\n    if (!arguments.length) {\r\n        currentThemeName = currentThemeName || readThemeMarker();\r\n        return currentThemeName\r\n    }\r\n    detachCssClasses(viewPort());\r\n    options = options || {};\r\n    if (\"string\" === typeof options) {\r\n        options = {\r\n            theme: options\r\n        }\r\n    }\r\n    var isAutoInit = options._autoInit;\r\n    var loadCallback = options.loadCallback;\r\n    var currentThemeData;\r\n    currentThemeName = resolveFullThemeName(options.theme || currentThemeName);\r\n    if (currentThemeName) {\r\n        currentThemeData = knownThemes[currentThemeName]\r\n    }\r\n    if (loadCallback) {\r\n        _themes_callback.themeReadyCallback.add(loadCallback)\r\n    }\r\n    if (currentThemeData) {\r\n        $activeThemeLink.attr(\"href\", knownThemes[currentThemeName].url);\r\n        if (_themes_callback.themeReadyCallback.has() || \"resolved\" !== initDeferred.state() || options._forceTimeout) {\r\n            waitForThemeLoad(currentThemeName)\r\n        }\r\n    } else {\r\n        if (isAutoInit) {\r\n            waitForThemeLoad(ANY_THEME);\r\n            _themes_callback.themeReadyCallback.fire();\r\n            _themes_callback.themeReadyCallback.empty()\r\n        } else {\r\n            throw _ui.default.Error(\"E0021\", currentThemeName)\r\n        }\r\n    }\r\n    initDeferred.done(function() {\r\n        return attachCssClasses((0, _view_port.originalViewPort)(), currentThemeName)\r\n    })\r\n}\r\n\r\nfunction getCssClasses(themeName) {\r\n    themeName = themeName || current();\r\n    var result = [];\r\n    var themeNameParts = themeName && themeName.split(\".\");\r\n    if (themeNameParts) {\r\n        result.push(\"dx-theme-\" + themeNameParts[0], \"dx-theme-\" + themeNameParts[0] + \"-typography\");\r\n        if (themeNameParts.length > 1) {\r\n            result.push(\"dx-color-scheme-\" + themeNameParts[1] + (isMaterial(themeName) ? \"-\" + themeNameParts[2] : \"\"))\r\n        }\r\n    }\r\n    return result\r\n}\r\nvar themeClasses;\r\n\r\nfunction attachCssClasses(element, themeName) {\r\n    themeClasses = getCssClasses(themeName).join(\" \");\r\n    (0, _renderer.default)(element).addClass(themeClasses);\r\n    var activateHairlines = function() {\r\n        var pixelRatio = (0, _window.hasWindow)() && window.devicePixelRatio;\r\n        if (!pixelRatio || pixelRatio < 2) {\r\n            return\r\n        }\r\n        var $tester = (0, _renderer.default)(\"<div>\");\r\n        $tester.css(\"border\", \".5px solid transparent\");\r\n        (0, _renderer.default)(\"body\").append($tester);\r\n        if (1 === $tester.outerHeight()) {\r\n            (0, _renderer.default)(element).addClass(DX_HAIRLINES_CLASS);\r\n            themeClasses += \" \" + DX_HAIRLINES_CLASS\r\n        }\r\n        $tester.remove()\r\n    };\r\n    activateHairlines()\r\n}\r\n\r\nfunction detachCssClasses(element) {\r\n    (0, _renderer.default)(element).removeClass(themeClasses)\r\n}\r\n\r\nfunction themeReady(callback) {\r\n    _themes_callback.themeReadyCallback.add(callback)\r\n}\r\n\r\nfunction isTheme(themeRegExp, themeName) {\r\n    if (!themeName) {\r\n        themeName = currentThemeName || readThemeMarker()\r\n    }\r\n    return new RegExp(themeRegExp).test(themeName)\r\n}\r\n\r\nfunction isMaterial(themeName) {\r\n    return isTheme(\"material\", themeName)\r\n}\r\n\r\nfunction isGeneric(themeName) {\r\n    return isTheme(\"generic\", themeName)\r\n}\r\n\r\nfunction isDark(themeName) {\r\n    return isTheme(\"dark\", themeName)\r\n}\r\n\r\nfunction isWebFontLoaded(text, fontWeight) {\r\n    var testedFont = \"Roboto, RobotoFallback, Arial\";\r\n    var etalonFont = \"Arial\";\r\n    var document = _dom_adapter.default.getDocument();\r\n    var testElement = document.createElement(\"span\");\r\n    testElement.style.position = \"absolute\";\r\n    testElement.style.top = \"-9999px\";\r\n    testElement.style.left = \"-9999px\";\r\n    testElement.style.visibility = \"hidden\";\r\n    testElement.style.fontFamily = etalonFont;\r\n    testElement.style.fontSize = \"250px\";\r\n    testElement.style.fontWeight = fontWeight;\r\n    testElement.innerHTML = text;\r\n    document.body.appendChild(testElement);\r\n    var etalonFontWidth = testElement.offsetWidth;\r\n    testElement.style.fontFamily = testedFont;\r\n    var testedFontWidth = testElement.offsetWidth;\r\n    testElement.parentNode.removeChild(testElement);\r\n    return etalonFontWidth !== testedFontWidth\r\n}\r\n\r\nfunction waitWebFont(text, fontWeight) {\r\n    var interval = 15;\r\n    var timeout = 2e3;\r\n    return new _promise.default(function(resolve) {\r\n        var check = function() {\r\n            if (isWebFontLoaded(text, fontWeight)) {\r\n                clear()\r\n            }\r\n        };\r\n        var clear = function() {\r\n            clearInterval(intervalId);\r\n            clearTimeout(timeoutId);\r\n            resolve()\r\n        };\r\n        var intervalId = setInterval(check, interval);\r\n        var timeoutId = setTimeout(clear, timeout)\r\n    })\r\n}\r\n\r\nfunction autoInit() {\r\n    init({\r\n        _autoInit: true,\r\n        _forceTimeout: true\r\n    });\r\n    if ((0, _renderer.default)(DX_LINK_SELECTOR, context).length) {\r\n        throw _ui.default.Error(\"E0022\")\r\n    }\r\n}\r\nif ((0, _window.hasWindow)()) {\r\n    autoInit()\r\n} else {\r\n    ready(autoInit)\r\n}\r\nviewPortChanged.add(function(viewPort, prevViewPort) {\r\n    initDeferred.done(function() {\r\n        detachCssClasses(prevViewPort);\r\n        attachCssClasses(viewPort)\r\n    })\r\n});\r\n_devices.default.changed.add(function() {\r\n    init({\r\n        _autoInit: true\r\n    })\r\n});\r\n\r\nfunction resetTheme() {\r\n    $activeThemeLink && $activeThemeLink.attr(\"href\", \"about:blank\");\r\n    currentThemeName = null;\r\n    pendingThemeName = null;\r\n    initDeferred = new _deferred.Deferred\r\n}\r\n\r\nfunction initialized(callback) {\r\n    initDeferred.done(callback)\r\n}\r\n\r\nfunction setDefaultTimeout(timeout) {\r\n    defaultTimeout = timeout\r\n}\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/pie_chart.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _consts = _interopRequireDefault(require(\"./components/consts\"));\r\nvar _utils = require(\"./core/utils\");\r\nvar _extend2 = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _range = require(\"./translators/range\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _base_chart = require(\"./chart_components/base_chart\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _translator1d = require(\"./translators/translator1d\");\r\nvar _annotations = require(\"./core/annotations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar states = _consts.default.states;\r\nvar seriesSpacing = _consts.default.pieSeriesSpacing;\r\nvar OPTIONS_FOR_REFRESH_SERIES = [\"startAngle\", \"innerRadius\", \"segmentsDirection\", \"type\"];\r\nvar NORMAL_STATE = states.normalMark;\r\nvar HOVER_STATE = states.hoverMark;\r\nvar SELECTED_STATE = states.selectedMark;\r\nvar MAX_RESOLVE_ITERATION_COUNT = 5;\r\nvar LEGEND_ACTIONS = [states.resetItem, states.applyHover, states.applySelected, states.applySelected];\r\n\r\nfunction getLegendItemAction(points) {\r\n    var state = NORMAL_STATE;\r\n    points.forEach(function(point) {\r\n        var _point$series;\r\n        var seriesOptions = null === (_point$series = point.series) || void 0 === _point$series ? void 0 : _point$series.getOptions();\r\n        var pointState = point.fullState;\r\n        if (\"none\" === (null === seriesOptions || void 0 === seriesOptions ? void 0 : seriesOptions.hoverMode)) {\r\n            pointState &= ~HOVER_STATE\r\n        }\r\n        if (\"none\" === (null === seriesOptions || void 0 === seriesOptions ? void 0 : seriesOptions.selectionMode)) {\r\n            pointState &= ~SELECTED_STATE\r\n        }\r\n        state |= pointState\r\n    });\r\n    return LEGEND_ACTIONS[state]\r\n}\r\n\r\nfunction correctPercentValue(value) {\r\n    if ((0, _type.isNumeric)(value)) {\r\n        if (value > 1) {\r\n            value = 1\r\n        } else {\r\n            if (value < 0) {\r\n                value = 0\r\n            }\r\n        }\r\n    } else {\r\n        value = void 0\r\n    }\r\n    return value\r\n}\r\nvar pieSizeEqualizer = function() {\r\n    function equalize(group, allPies) {\r\n        var pies = allPies.filter(function(p) {\r\n            return p._isVisible() && p.getSizeGroup() === group\r\n        });\r\n        var minRadius = Math.min.apply(null, pies.map(function(p) {\r\n            return p.getSizeGroupLayout().radius\r\n        }));\r\n        var minPie = pies.filter(function(p) {\r\n            return p.getSizeGroupLayout().radius === minRadius\r\n        });\r\n        pies.forEach(function(p) {\r\n            return p.render({\r\n                force: true,\r\n                sizeGroupLayout: minPie.length ? minPie[0].getSizeGroupLayout() : {}\r\n            })\r\n        })\r\n    }\r\n\r\n    function removeFromList(list, item) {\r\n        return list.filter(function(li) {\r\n            return li !== item\r\n        })\r\n    }\r\n\r\n    function addToList(list, item) {\r\n        return removeFromList(list, item).concat(item)\r\n    }\r\n    var pies = [];\r\n    var timers = {};\r\n    return {\r\n        queue: function(pie) {\r\n            var group = pie.getSizeGroup();\r\n            pies = addToList(pies, pie);\r\n            clearTimeout(timers[group]);\r\n            timers[group] = setTimeout(function() {\r\n                equalize(group, pies)\r\n            })\r\n        },\r\n        remove: function(pie) {\r\n            pies = removeFromList(pies, pie);\r\n            if (!pies.length) {\r\n                timers = {}\r\n            }\r\n        }\r\n    }\r\n}();\r\nvar dxPieChart = _base_chart.BaseChart.inherit({\r\n    _themeSection: \"pie\",\r\n    _layoutManagerOptions: function() {\r\n        return (0, _extend2.extend)(true, {}, this.callBase(), {\r\n            piePercentage: correctPercentValue(this._themeManager.getOptions(\"diameter\")),\r\n            minPiePercentage: correctPercentValue(this._themeManager.getOptions(\"minDiameter\"))\r\n        })\r\n    },\r\n    _optionChangesMap: {\r\n        diameter: \"REINIT\",\r\n        minDiameter: \"REINIT\",\r\n        sizeGroup: \"REINIT\"\r\n    },\r\n    _disposeCore: function() {\r\n        pieSizeEqualizer.remove(this);\r\n        this.callBase()\r\n    },\r\n    _groupSeries: function() {\r\n        var series = this.series;\r\n        this._groupsData = {\r\n            groups: [{\r\n                series: series,\r\n                valueOptions: {\r\n                    valueType: \"numeric\"\r\n                }\r\n            }],\r\n            argumentOptions: series[0] && series[0].getOptions()\r\n        }\r\n    },\r\n    getArgumentAxis: function() {\r\n        return null\r\n    },\r\n    _getValueAxis: function() {\r\n        var translator = (new _translator1d.Translator1D).setCodomain(360, 0);\r\n        return {\r\n            getTranslator: function() {\r\n                return translator\r\n            },\r\n            setBusinessRange: function(range) {\r\n                translator.setDomain(range.min, range.max)\r\n            }\r\n        }\r\n    },\r\n    _populateBusinessRange: function() {\r\n        this.series.map(function(series) {\r\n            var range = new _range.Range;\r\n            range.addRange(series.getRangeData().val);\r\n            series.getValueAxis().setBusinessRange(range);\r\n            return range\r\n        })\r\n    },\r\n    _specialProcessSeries: function() {\r\n        (0, _iterator.each)(this.series, function(_, singleSeries) {\r\n            singleSeries.arrangePoints()\r\n        })\r\n    },\r\n    _checkPaneName: function() {\r\n        return true\r\n    },\r\n    _processSingleSeries: function(singleSeries) {\r\n        this.callBase(singleSeries);\r\n        singleSeries.arrangePoints()\r\n    },\r\n    _handleSeriesDataUpdated: function() {\r\n        var maxPointCount = 0;\r\n        this.series.forEach(function(s) {\r\n            maxPointCount = Math.max(s.getPointsCount(), maxPointCount)\r\n        });\r\n        this.series.forEach(function(s) {\r\n            s.setMaxPointsCount(maxPointCount)\r\n        });\r\n        this.callBase()\r\n    },\r\n    _getLegendOptions: function(item) {\r\n        var legendItem = this.callBase(item);\r\n        var legendData = legendItem.legendData;\r\n        legendData.argument = item.argument;\r\n        legendData.argumentIndex = item.argumentIndex;\r\n        legendData.points = [item];\r\n        return legendItem\r\n    },\r\n    _getLegendTargets: function() {\r\n        var that = this;\r\n        var itemsByArgument = {};\r\n        (that.series || []).forEach(function(series) {\r\n            series.getPoints().forEach(function(point) {\r\n                var argument = point.argument.valueOf();\r\n                var index = series.getPointsByArg(argument).indexOf(point);\r\n                var key = argument.valueOf().toString() + index;\r\n                itemsByArgument[key] = itemsByArgument[key] || [];\r\n                var argumentCount = itemsByArgument[key].push(point);\r\n                point.index = itemsByArgument[key][argumentCount - 2] ? itemsByArgument[key][argumentCount - 2].index : Object.keys(itemsByArgument).length - 1;\r\n                point.argumentIndex = index\r\n            })\r\n        });\r\n        var items = [];\r\n        (0, _iterator.each)(itemsByArgument, function(_, points) {\r\n            points.forEach(function(point, index) {\r\n                if (0 === index) {\r\n                    items.push(that._getLegendOptions(point));\r\n                    return\r\n                }\r\n                var item = items[items.length - 1];\r\n                item.legendData.points.push(point);\r\n                if (!item.visible) {\r\n                    item.visible = point.isVisible()\r\n                }\r\n            })\r\n        });\r\n        return items\r\n    },\r\n    _getLayoutTargets: function() {\r\n        return [{\r\n            canvas: this._canvas\r\n        }]\r\n    },\r\n    _getLayoutSeries: function(series, drawOptions) {\r\n        var that = this;\r\n        var layout;\r\n        var canvas = that._canvas;\r\n        var drawnLabels = false;\r\n        layout = that.layoutManager.applyPieChartSeriesLayout(canvas, series, true);\r\n        series.forEach(function(singleSeries) {\r\n            singleSeries.correctPosition(layout, canvas);\r\n            drawnLabels = singleSeries.drawLabelsWOPoints() || drawnLabels\r\n        });\r\n        if (drawnLabels) {\r\n            layout = that.layoutManager.applyPieChartSeriesLayout(canvas, series, drawOptions.hideLayoutLabels)\r\n        }\r\n        series.forEach(function(singleSeries) {\r\n            singleSeries.hideLabels()\r\n        });\r\n        that._sizeGroupLayout = {\r\n            x: layout.centerX,\r\n            y: layout.centerY,\r\n            radius: layout.radiusOuter,\r\n            drawOptions: drawOptions\r\n        };\r\n        return layout\r\n    },\r\n    _getLayoutSeriesForEqualPies: function(series, sizeGroupLayout) {\r\n        var canvas = this._canvas;\r\n        var layout = this.layoutManager.applyEqualPieChartLayout(series, sizeGroupLayout);\r\n        series.forEach(function(s) {\r\n            s.correctPosition(layout, canvas);\r\n            s.drawLabelsWOPoints()\r\n        });\r\n        this.layoutManager.correctPieLabelRadius(series, layout, canvas);\r\n        return layout\r\n    },\r\n    _updateSeriesDimensions: function(drawOptions) {\r\n        var that = this;\r\n        var visibleSeries = that._getVisibleSeries();\r\n        var lengthVisibleSeries = visibleSeries.length;\r\n        var innerRad;\r\n        var delta;\r\n        var layout;\r\n        var sizeGroupLayout = drawOptions.sizeGroupLayout;\r\n        if (lengthVisibleSeries) {\r\n            layout = sizeGroupLayout ? that._getLayoutSeriesForEqualPies(visibleSeries, sizeGroupLayout) : that._getLayoutSeries(visibleSeries, drawOptions);\r\n            delta = (layout.radiusOuter - layout.radiusInner - seriesSpacing * (lengthVisibleSeries - 1)) / lengthVisibleSeries;\r\n            innerRad = layout.radiusInner;\r\n            that._setGeometry(layout);\r\n            visibleSeries.forEach(function(singleSeries) {\r\n                singleSeries.correctRadius({\r\n                    radiusInner: innerRad,\r\n                    radiusOuter: innerRad + delta\r\n                });\r\n                innerRad += delta + seriesSpacing\r\n            })\r\n        }\r\n    },\r\n    _renderSeries: function(drawOptions, isRotated, isLegendInside) {\r\n        this._calculateSeriesLayout(drawOptions, isRotated);\r\n        if (!drawOptions.sizeGroupLayout && this.getSizeGroup()) {\r\n            pieSizeEqualizer.queue(this);\r\n            this._clearCanvas();\r\n            return\r\n        }\r\n        this._renderSeriesElements(drawOptions, isLegendInside)\r\n    },\r\n    _renderExtraElements: function() {\r\n        var _this = this;\r\n        var template = this.option(\"centerTemplate\");\r\n        if (this._centerTemplateGroup) {\r\n            this._centerTemplateGroup.clear()\r\n        }\r\n        if (!template) {\r\n            return\r\n        }\r\n        if (!this._centerTemplateGroup) {\r\n            this._centerTemplateGroup = this._renderer.g().attr({\r\n                \"class\": \"dxc-hole-template\"\r\n            }).css((0, _utils.patchFontOptions)(this._themeManager._font))\r\n        }\r\n        this._centerTemplateGroup.attr({\r\n            visibility: \"hidden\"\r\n        }).append(this._renderer.root);\r\n        template = this._getTemplate(template);\r\n        template.render({\r\n            model: this,\r\n            container: this._centerTemplateGroup.element,\r\n            onRendered: function() {\r\n                var group = _this._centerTemplateGroup;\r\n                var bBox = group.getBBox();\r\n                group.move(_this._center.x - (bBox.x + bBox.width / 2), _this._center.y - (bBox.y + bBox.height / 2));\r\n                group.attr({\r\n                    visibility: \"visible\"\r\n                })\r\n            }\r\n        })\r\n    },\r\n    getInnerRadius: function() {\r\n        return this._innerRadius\r\n    },\r\n    _getLegendCallBack: function() {\r\n        var that = this;\r\n        var legend = this._legend;\r\n        var items = this._getLegendTargets().map(function(i) {\r\n            return i.legendData\r\n        });\r\n        return function(target) {\r\n            items.forEach(function(data) {\r\n                var points = [];\r\n                var callback = legend.getActionCallback({\r\n                    index: data.id\r\n                });\r\n                that.series.forEach(function(series) {\r\n                    var seriesPoints = series.getPointsByKeys(data.argument, data.argumentIndex);\r\n                    points.push.apply(points, seriesPoints)\r\n                });\r\n                if (target && target.argument === data.argument && target.argumentIndex === data.argumentIndex) {\r\n                    points.push(target)\r\n                }\r\n                callback(getLegendItemAction(points))\r\n            })\r\n        }\r\n    },\r\n    _locateLabels: function(resolveLabelOverlapping) {\r\n        var iterationCount = 0;\r\n        var labelsWereOverlapped;\r\n        var wordWrapApplied;\r\n        do {\r\n            wordWrapApplied = this._adjustSeriesLabels(\"shift\" === resolveLabelOverlapping);\r\n            labelsWereOverlapped = this._resolveLabelOverlapping(resolveLabelOverlapping)\r\n        } while ((labelsWereOverlapped || wordWrapApplied) && ++iterationCount < MAX_RESOLVE_ITERATION_COUNT)\r\n    },\r\n    _adjustSeriesLabels: function(moveLabelsFromCenter) {\r\n        return this.series.reduce(function(r, s) {\r\n            return s.adjustLabels(moveLabelsFromCenter) || r\r\n        }, false)\r\n    },\r\n    _applyExtraSettings: _common.noop,\r\n    _resolveLabelOverlappingShift: function() {\r\n        var that = this;\r\n        var inverseDirection = \"anticlockwise\" === that.option(\"segmentsDirection\");\r\n        var seriesByPosition = that.series.reduce(function(r, s) {\r\n            (r[s.getOptions().label.position] || r.outside).push(s);\r\n            return r\r\n        }, {\r\n            inside: [],\r\n            columns: [],\r\n            outside: []\r\n        });\r\n        var labelsOverlapped = false;\r\n        if (seriesByPosition.inside.length > 0) {\r\n            labelsOverlapped = resolve(seriesByPosition.inside.reduce(function(r, singleSeries) {\r\n                return singleSeries.getVisiblePoints().reduce(function(r, point) {\r\n                    r.left.push(point);\r\n                    return r\r\n                }, r)\r\n            }, {\r\n                left: [],\r\n                right: []\r\n            }), shiftInColumnFunction) || labelsOverlapped\r\n        }\r\n        labelsOverlapped = seriesByPosition.columns.reduce(function(r, singleSeries) {\r\n            return resolve(dividePoints(singleSeries), shiftInColumnFunction) || r\r\n        }, labelsOverlapped);\r\n        if (seriesByPosition.outside.length > 0) {\r\n            labelsOverlapped = resolve(seriesByPosition.outside.reduce(function(r, singleSeries) {\r\n                return dividePoints(singleSeries, r)\r\n            }, null), shiftFunction) || labelsOverlapped\r\n        }\r\n        return labelsOverlapped;\r\n\r\n        function dividePoints(series, points) {\r\n            return series.getVisiblePoints().reduce(function(r, point) {\r\n                var angle = (0, _utils.normalizeAngle)(point.middleAngle);\r\n                (angle <= 90 || angle >= 270 ? r.right : r.left).push(point);\r\n                return r\r\n            }, points || {\r\n                left: [],\r\n                right: []\r\n            })\r\n        }\r\n\r\n        function resolve(points, shiftCallback) {\r\n            var overlapped = false;\r\n            if (inverseDirection) {\r\n                points.left.reverse();\r\n                points.right.reverse()\r\n            }\r\n            overlapped = _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.left, that._canvas, false, shiftCallback);\r\n            return _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.right, that._canvas, false, shiftCallback) || overlapped\r\n        }\r\n\r\n        function shiftFunction(box, length) {\r\n            return (0, _utils.getVerticallyShiftedAngularCoords)(box, -length, that._center)\r\n        }\r\n\r\n        function shiftInColumnFunction(box, length) {\r\n            return {\r\n                x: box.x,\r\n                y: box.y - length\r\n            }\r\n        }\r\n    },\r\n    _setGeometry: function(_ref) {\r\n        var x = _ref.centerX,\r\n            y = _ref.centerY,\r\n            radiusInner = _ref.radiusInner;\r\n        this._center = {\r\n            x: x,\r\n            y: y\r\n        };\r\n        this._innerRadius = radiusInner\r\n    },\r\n    _disposeSeries: function(seriesIndex) {\r\n        this.callBase.apply(this, arguments);\r\n        this._abstractSeries = null\r\n    },\r\n    _legendDataField: \"point\",\r\n    _legendItemTextField: \"argument\",\r\n    _applyPointMarkersAutoHiding: _common.noop,\r\n    _renderTrackers: _common.noop,\r\n    _trackerType: \"PieTracker\",\r\n    _createScrollBar: _common.noop,\r\n    _updateAxesLayout: _common.noop,\r\n    _applyClipRects: _common.noop,\r\n    _appendAdditionalSeriesGroups: _common.noop,\r\n    _prepareToRender: _common.noop,\r\n    _isLegendInside: _common.noop,\r\n    _renderAxes: _common.noop,\r\n    _shrinkAxes: _common.noop,\r\n    _isRotated: _common.noop,\r\n    _seriesPopulatedHandlerCore: _common.noop,\r\n    _reinitAxes: _common.noop,\r\n    _correctAxes: _common.noop,\r\n    _getExtraOptions: function() {\r\n        var that = this;\r\n        return {\r\n            startAngle: that.option(\"startAngle\"),\r\n            innerRadius: that.option(\"innerRadius\"),\r\n            segmentsDirection: that.option(\"segmentsDirection\"),\r\n            type: that.option(\"type\")\r\n        }\r\n    },\r\n    getSizeGroup: function() {\r\n        return this._themeManager.getOptions(\"sizeGroup\")\r\n    },\r\n    getSizeGroupLayout: function() {\r\n        return this._sizeGroupLayout || {}\r\n    }\r\n});\r\n(0, _iterator.each)(OPTIONS_FOR_REFRESH_SERIES, function(_, name) {\r\n    dxPieChart.prototype._optionChangesMap[name] = \"REFRESH_SERIES_DATA_INIT\"\r\n});\r\ndxPieChart.addPlugin(_annotations.plugins.core);\r\ndxPieChart.addPlugin(_annotations.plugins.pieChart);\r\n(0, _component_registrator.default)(\"dxPieChart\", dxPieChart);\r\nvar _default = dxPieChart;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/pivot_grid_field_chooser.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiPivot_grid = _interopRequireDefault(require(\"./pivot_grid/ui.pivot_grid.field_chooser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _uiPivot_grid.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/drop_down_editor/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getSizeValue = exports.getElementWidth = void 0;\r\nvar _window = require(\"../../core/utils/window\");\r\nvar getElementWidth = function($element) {\r\n    if ((0, _window.hasWindow)()) {\r\n        return $element.outerWidth()\r\n    }\r\n};\r\nexports.getElementWidth = getElementWidth;\r\nvar getSizeValue = function(size) {\r\n    if (null === size) {\r\n        size = void 0\r\n    }\r\n    if (\"function\" === typeof size) {\r\n        size = size()\r\n    }\r\n    return size\r\n};\r\nexports.getSizeValue = getSizeValue;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.search.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiList = _interopRequireDefault(require(\"./ui.list.edit\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.search_box_mixin\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ListSearch = _uiList.default.inherit(_ui.default).inherit({\r\n    _addWidgetPrefix: function(className) {\r\n        return \"dx-list-\" + className\r\n    },\r\n    _getCombinedFilter: function() {\r\n        var filter;\r\n        var storeLoadOptions;\r\n        var dataSource = this._dataSource;\r\n        if (dataSource) {\r\n            storeLoadOptions = {\r\n                filter: dataSource.filter()\r\n            };\r\n            dataSource._addSearchFilter(storeLoadOptions);\r\n            filter = storeLoadOptions.filter\r\n        }\r\n        return filter\r\n    },\r\n    _initDataSource: function() {\r\n        var value = this.option(\"searchValue\");\r\n        var expr = this.option(\"searchExpr\");\r\n        var mode = this.option(\"searchMode\");\r\n        this.callBase();\r\n        if (this._dataSource) {\r\n            value && value.length && this._dataSource.searchValue(value);\r\n            mode.length && this._dataSource.searchOperation(_ui.default.getOperationBySearchMode(mode));\r\n            expr && this._dataSource.searchExpr(expr)\r\n        }\r\n    }\r\n});\r\nvar _default = ListSearch;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.subscribes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils.timeZone\"));\r\nvar _constants = require(\"./constants\");\r\nvar _utils2 = _interopRequireDefault(require(\"./utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar HOURS_IN_DAY = 24;\r\nvar MINUTES_IN_HOUR = 60;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar HOUR_MS = toMs(\"hour\");\r\nvar subscribes = {\r\n    isCurrentViewAgenda: function() {\r\n        return \"agenda\" === this.option(\"currentView\")\r\n    },\r\n    currentViewUpdated: function(currentView) {\r\n        this.option(\"currentView\", currentView)\r\n    },\r\n    currentDateUpdated: function(date) {\r\n        this.option(\"currentDate\", date)\r\n    },\r\n    getOption: function(name) {\r\n        return this.option(name)\r\n    },\r\n    isVirtualScrolling: function() {\r\n        return this.isVirtualScrolling()\r\n    },\r\n    setCellDataCacheAlias: function(appointment, geometry) {\r\n        this._workSpace.setCellDataCacheAlias(appointment, geometry)\r\n    },\r\n    createAppointmentSettings: function(appointment) {\r\n        return this._getAppointmentSettingsGenerator().create(appointment)\r\n    },\r\n    isGroupedByDate: function() {\r\n        return this.getWorkSpace().isGroupedByDate()\r\n    },\r\n    showAppointmentTooltip: function(options) {\r\n        var targetedAppointment = this.getTargetedAppointment(options.data, options.target);\r\n        this.showAppointmentTooltip(options.data, options.target, targetedAppointment)\r\n    },\r\n    hideAppointmentTooltip: function() {\r\n        this.hideAppointmentTooltip()\r\n    },\r\n    showAddAppointmentPopup: function(cellData, cellGroups) {\r\n        var appointmentAdapter = this.createAppointmentAdapter({});\r\n        appointmentAdapter.allDay = cellData.allDay;\r\n        appointmentAdapter.startDate = this.timeZoneCalculator.createDate(cellData.startDate, {\r\n            path: \"fromGrid\"\r\n        });\r\n        appointmentAdapter.endDate = this.timeZoneCalculator.createDate(cellData.endDate, {\r\n            path: \"fromGrid\"\r\n        });\r\n        var resultAppointment = (0, _extend.extend)(appointmentAdapter.source(), cellGroups);\r\n        this.showAppointmentPopup(resultAppointment, true)\r\n    },\r\n    showEditAppointmentPopup: function(options) {\r\n        var targetedData = this.getTargetedAppointment(options.data, options.target);\r\n        this.showAppointmentPopup(options.data, false, targetedData)\r\n    },\r\n    updateAppointmentAfterResize: function(options) {\r\n        var info = _utils2.default.dataAccessors.getAppointmentInfo(options.$appointment);\r\n        var exceptionDate = info.sourceAppointment.startDate;\r\n        this._checkRecurringAppointment(options.target, options.data, exceptionDate, function() {\r\n            this._updateAppointment(options.target, options.data, function() {\r\n                this._appointments.moveAppointmentBack()\r\n            })\r\n        }.bind(this))\r\n    },\r\n    getUpdatedData: function(options) {\r\n        return this._getUpdatedData({\r\n            data: options.data\r\n        })\r\n    },\r\n    updateAppointmentAfterDrag: function(options) {\r\n        var info = _utils2.default.dataAccessors.getAppointmentInfo(options.$appointment);\r\n        var sourceAppointment = options.data;\r\n        var sourceAppointmentAdapter = this.createAppointmentAdapter(sourceAppointment);\r\n        var currentAppointmentAdapter = this.createAppointmentAdapter((0, _extend.extend)({}, sourceAppointment, this._getUpdatedData(options))).clone({\r\n            pathTimeZone: \"fromGrid\"\r\n        });\r\n        var currentAppointmentWithoutConverting = currentAppointmentAdapter.source();\r\n        var newCellIndex = this._workSpace.getDroppableCellIndex();\r\n        var oldCellIndex = this._workSpace.getCellIndexByCoordinates(options.coordinates);\r\n        var becomeAllDay = currentAppointmentAdapter.allDay;\r\n        var wasAllDay = sourceAppointmentAdapter.allDay;\r\n        var dragEvent = options.event;\r\n        var movedBetweenAllDayAndSimple = this._workSpace.supportAllDayRow() && (wasAllDay && !becomeAllDay || !wasAllDay && becomeAllDay);\r\n        if (newCellIndex !== oldCellIndex || movedBetweenAllDayAndSimple) {\r\n            this._checkRecurringAppointment(sourceAppointment, currentAppointmentWithoutConverting, info.sourceAppointment.startDate, function() {\r\n                this._updateAppointment(sourceAppointment, currentAppointmentWithoutConverting, function() {\r\n                    this._appointments.moveAppointmentBack(dragEvent)\r\n                }, dragEvent)\r\n            }.bind(this), void 0, void 0, dragEvent)\r\n        } else {\r\n            this._appointments.moveAppointmentBack(dragEvent)\r\n        }\r\n    },\r\n    onDeleteButtonPress: function(options) {\r\n        var targetedData = this.getTargetedAppointment(options.data, (0, _renderer.default)(options.target));\r\n        this.checkAndDeleteAppointment(options.data, targetedData);\r\n        this.hideAppointmentTooltip()\r\n    },\r\n    getAppointmentColor: function(options) {\r\n        var resourcesManager = this._resourcesManager;\r\n        var resourceForPainting = resourcesManager.getResourceForPainting(this._getCurrentViewOption(\"groups\"));\r\n        var response = (new _deferred.Deferred).resolve().promise();\r\n        if (resourceForPainting) {\r\n            var field = resourcesManager.getField(resourceForPainting);\r\n            var groupIndex = options.groupIndex;\r\n            var groups = this._workSpace._getCellGroups(groupIndex);\r\n            var resourceValues = (0, _array.wrapToArray)(resourcesManager.getDataAccessors(field, \"getter\")(options.itemData));\r\n            var groupId = resourceValues.length ? resourceValues[0] : void 0;\r\n            for (var i = 0; i < groups.length; i++) {\r\n                if (groups[i].name === field) {\r\n                    groupId = groups[i].id;\r\n                    break\r\n                }\r\n            }\r\n            response = resourcesManager.getResourceColor(field, groupId)\r\n        }\r\n        return response\r\n    },\r\n    getHeaderHeight: function() {\r\n        return this._header._$element && parseInt(this._header._$element.outerHeight(), 10)\r\n    },\r\n    getResourcesFromItem: function(itemData) {\r\n        return this._resourcesManager.getResourcesFromItem(itemData)\r\n    },\r\n    getBoundOffset: function() {\r\n        return {\r\n            top: -this.getWorkSpaceAllDayHeight()\r\n        }\r\n    },\r\n    appointmentTakesSeveralDays: function(appointment) {\r\n        return this._appointmentModel.appointmentTakesSeveralDays(appointment)\r\n    },\r\n    getTextAndFormatDate: function(appointmentRaw, targetedAppointmentRaw, format) {\r\n        var appointmentAdapter = this.createAppointmentAdapter(appointmentRaw);\r\n        var targetedAdapter = this.createAppointmentAdapter(targetedAppointmentRaw || appointmentRaw);\r\n        var startDate = this.timeZoneCalculator.createDate(targetedAdapter.startDate, {\r\n            path: \"toGrid\"\r\n        });\r\n        var endDate = this.timeZoneCalculator.createDate(targetedAdapter.endDate, {\r\n            path: \"toGrid\"\r\n        });\r\n        var formatType = format || this.fire(\"_getTypeFormat\", startDate, endDate, targetedAdapter.allDay);\r\n        return {\r\n            text: targetedAdapter.text || appointmentAdapter.text,\r\n            formatDate: this.fire(\"_formatDates\", startDate, endDate, formatType)\r\n        }\r\n    },\r\n    _getTypeFormat: function(startDate, endDate, isAllDay) {\r\n        if (isAllDay) {\r\n            return \"DATE\"\r\n        }\r\n        if (\"month\" !== this.option(\"currentView\") && _date.default.sameDate(startDate, endDate)) {\r\n            return \"TIME\"\r\n        }\r\n        return \"DATETIME\"\r\n    },\r\n    _createAppointmentTitle: function(data) {\r\n        if ((0, _type.isPlainObject)(data)) {\r\n            return data.text\r\n        }\r\n        return String(data)\r\n    },\r\n    _formatDates: function(startDate, endDate, formatType) {\r\n        var dateFormat = \"monthandday\";\r\n        var timeFormat = \"shorttime\";\r\n        var isSameDate = startDate.getDate() === endDate.getDate();\r\n        switch (formatType) {\r\n            case \"DATETIME\":\r\n                return [_date2.default.format(startDate, dateFormat), \" \", _date2.default.format(startDate, timeFormat), \" - \", isSameDate ? \"\" : _date2.default.format(endDate, dateFormat) + \" \", _date2.default.format(endDate, timeFormat)].join(\"\");\r\n            case \"TIME\":\r\n                return \"\".concat(_date2.default.format(startDate, timeFormat), \" - \").concat(_date2.default.format(endDate, timeFormat));\r\n            case \"DATE\":\r\n                return \"\".concat(_date2.default.format(startDate, dateFormat)).concat(isSameDate ? \"\" : \" - \" + _date2.default.format(endDate, dateFormat))\r\n        }\r\n    },\r\n    getResizableAppointmentArea: function(options) {\r\n        var allDay = options.allDay;\r\n        var groups = this._getCurrentViewOption(\"groups\");\r\n        if (groups && groups.length) {\r\n            if (allDay || this.getLayoutManager().getRenderingStrategyInstance()._needHorizontalGroupBounds()) {\r\n                var horizontalGroupBounds = this._workSpace.getGroupBounds(options.coordinates);\r\n                return {\r\n                    left: horizontalGroupBounds.left,\r\n                    right: horizontalGroupBounds.right,\r\n                    top: 0,\r\n                    bottom: 0\r\n                }\r\n            }\r\n            if (this.getLayoutManager().getRenderingStrategyInstance()._needVerticalGroupBounds(allDay) && this._workSpace._isVerticalGroupedWorkSpace()) {\r\n                var verticalGroupBounds = this._workSpace.getGroupBounds(options.coordinates);\r\n                return {\r\n                    left: 0,\r\n                    right: 0,\r\n                    top: verticalGroupBounds.top,\r\n                    bottom: verticalGroupBounds.bottom\r\n                }\r\n            }\r\n        }\r\n    },\r\n    needRecalculateResizableArea: function() {\r\n        return this.getWorkSpace().needRecalculateResizableArea()\r\n    },\r\n    getAppointmentGeometry: function(settings) {\r\n        return this.getLayoutManager().getRenderingStrategyInstance().getAppointmentGeometry(settings)\r\n    },\r\n    isAllDay: function(appointmentData) {\r\n        return this.getLayoutManager().getRenderingStrategyInstance().isAllDay(appointmentData)\r\n    },\r\n    getDeltaTime: function(e, initialSize, itemData) {\r\n        return this.getLayoutManager().getRenderingStrategyInstance().getDeltaTime(e, initialSize, itemData)\r\n    },\r\n    getDropDownAppointmentWidth: function(isAllDay) {\r\n        return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentWidth(this._getViewCountConfig().intervalCount, isAllDay)\r\n    },\r\n    getDropDownAppointmentHeight: function() {\r\n        return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentHeight()\r\n    },\r\n    getCellWidth: function() {\r\n        return this.getWorkSpace().getCellWidth()\r\n    },\r\n    getCellHeight: function() {\r\n        return this.getWorkSpace().getCellHeight()\r\n    },\r\n    getResizableStep: function() {\r\n        var workSpace = this.getWorkSpace();\r\n        var cellWidth = workSpace.getCellWidth();\r\n        if (workSpace.isGroupedByDate()) {\r\n            return workSpace._getGroupCount() * cellWidth\r\n        }\r\n        return cellWidth\r\n    },\r\n    getRenderingStrategy: function() {\r\n        return this._getAppointmentsRenderingStrategy()\r\n    },\r\n    getMaxAppointmentCountPerCellByType: function(isAllDay) {\r\n        return this.getRenderingStrategyInstance()._getMaxAppointmentCountPerCellByType(isAllDay)\r\n    },\r\n    needCorrectAppointmentDates: function() {\r\n        return this.getRenderingStrategyInstance().needCorrectAppointmentDates()\r\n    },\r\n    getRenderingStrategyDirection: function() {\r\n        return this.getRenderingStrategyInstance().getDirection()\r\n    },\r\n    getWorkSpaceDateTableOffset: function() {\r\n        return this.getWorkSpaceDateTableOffset()\r\n    },\r\n    getFullWeekAppointmentWidth: function(options) {\r\n        var groupIndex = options.groupIndex;\r\n        return this._workSpace.getGroupWidth(groupIndex)\r\n    },\r\n    getMaxAppointmentWidth: function(options) {\r\n        var workSpace = this._workSpace;\r\n        return workSpace.getCellCountToLastViewDate(options.date) * workSpace.getCellWidth()\r\n    },\r\n    updateAppointmentStartDate: function(options) {\r\n        var appointment = options.appointment;\r\n        var firstViewDate = this._workSpace.getStartViewDate();\r\n        var startDate = new Date(options.startDate);\r\n        var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n        var updatedStartDate;\r\n        if (this.appointmentTakesAllDay(appointment)) {\r\n            updatedStartDate = _date.default.normalizeDate(startDate, firstViewDate)\r\n        } else {\r\n            if (startDate < firstViewDate) {\r\n                startDate = firstViewDate\r\n            }\r\n            updatedStartDate = _date.default.normalizeDate(options.startDate, new Date(startDate))\r\n        }\r\n        return _date.default.roundDateByStartDayHour(updatedStartDate, startDayHour)\r\n    },\r\n    updateAppointmentEndDate: function(options) {\r\n        var endDate = options.endDate;\r\n        var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n        var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n        var updatedEndDate = endDate;\r\n        if (endDate.getHours() >= endDayHour) {\r\n            updatedEndDate.setHours(endDayHour, 0, 0, 0)\r\n        } else {\r\n            if (!options.isSameDate && startDayHour > 0 && 60 * endDate.getHours() + endDate.getMinutes() < 60 * startDayHour) {\r\n                updatedEndDate = new Date(updatedEndDate.getTime() - toMs(\"day\"));\r\n                updatedEndDate.setHours(endDayHour, 0, 0, 0)\r\n            }\r\n        }\r\n        return updatedEndDate\r\n    },\r\n    renderCompactAppointments: function(options) {\r\n        this._compactAppointmentsHelper.render(options)\r\n    },\r\n    clearCompactAppointments: function() {\r\n        this._compactAppointmentsHelper.clear()\r\n    },\r\n    supportCompactDropDownAppointments: function() {\r\n        return this._workSpace._supportCompactDropDownAppointments()\r\n    },\r\n    isApplyCompactAppointmentOffset: function() {\r\n        return this._workSpace._isApplyCompactAppointmentOffset()\r\n    },\r\n    getGroupCount: function() {\r\n        return this._workSpace._getGroupCount()\r\n    },\r\n    mapAppointmentFields: function(config) {\r\n        var targetedData = this.getTargetedAppointment(config.itemData, config.itemElement);\r\n        return {\r\n            appointmentData: config.itemData,\r\n            appointmentElement: config.itemElement,\r\n            targetedAppointmentData: targetedData\r\n        }\r\n    },\r\n    getOffsetByAllDayPanel: function(groupIndex) {\r\n        return this._workSpace._getOffsetByAllDayPanel(groupIndex)\r\n    },\r\n    getGroupTop: function(groupIndex) {\r\n        return this._workSpace._getGroupTop(groupIndex)\r\n    },\r\n    updateResizableArea: function() {\r\n        var $allResizableElements = this.$element().find(\".dx-scheduler-appointment.dx-resizable\");\r\n        var horizontalResizables = (0, _common.grep)($allResizableElements, function(el) {\r\n            var $el = (0, _renderer.default)(el);\r\n            var resizableInst = $el.dxResizable(\"instance\");\r\n            var area = resizableInst.option(\"area\");\r\n            return (0, _array.inArray)(resizableInst.option(\"handles\"), [\"right left\", \"left right\"]) > -1 && (0, _type.isPlainObject)(area)\r\n        });\r\n        (0, _iterator.each)(horizontalResizables, function(_, el) {\r\n            var $el = (0, _renderer.default)(el);\r\n            var position = (0, _translator.locate)($el);\r\n            var appointmentData = this._appointments._getItemData($el);\r\n            var area = this._appointments._calculateResizableArea({\r\n                left: position.left\r\n            }, appointmentData);\r\n            $el.dxResizable(\"instance\").option(\"area\", area)\r\n        }.bind(this))\r\n    },\r\n    getField: function(field, obj) {\r\n        if (!(0, _type.isDefined)(this._dataAccessors.getter[field])) {\r\n            return\r\n        }\r\n        return this._dataAccessors.getter[field](obj)\r\n    },\r\n    setField: function(field, obj, value) {\r\n        if (!(0, _type.isDefined)(this._dataAccessors.setter[field])) {\r\n            return\r\n        }\r\n        var splitExprStr = this.option(field + \"Expr\").split(\".\");\r\n        var rootField = splitExprStr[0];\r\n        if (void 0 === obj[rootField] && splitExprStr.length > 1) {\r\n            var emptyChain = function(arr) {\r\n                var result = {};\r\n                var tmp = result;\r\n                var arrLength = arr.length - 1;\r\n                for (var i = 1; i < arrLength; i++) {\r\n                    tmp = tmp[arr[i]] = {}\r\n                }\r\n                return result\r\n            }(splitExprStr);\r\n            obj[rootField] = emptyChain\r\n        }\r\n        this._dataAccessors.setter[field](obj, value);\r\n        return obj\r\n    },\r\n    renderAppointments: function() {\r\n        this._renderAppointments()\r\n    },\r\n    prerenderFilter: function() {\r\n        var dateRange = this.getWorkSpace().getDateRange();\r\n        var resources = this._resourcesManager.getResourcesData();\r\n        var allDay;\r\n        if (!this.option(\"showAllDayPanel\") && this._workSpace.supportAllDayRow()) {\r\n            allDay = false\r\n        }\r\n        return this._appointmentModel.filterLoadedAppointments({\r\n            startDayHour: this._getCurrentViewOption(\"startDayHour\"),\r\n            endDayHour: this._getCurrentViewOption(\"endDayHour\"),\r\n            min: dateRange[0],\r\n            max: dateRange[1],\r\n            resources: resources,\r\n            allDay: allDay,\r\n            firstDayOfWeek: this.getFirstDayOfWeek(),\r\n            recurrenceException: this._getRecurrenceException.bind(this)\r\n        }, this.timeZoneCalculator)\r\n    },\r\n    prerenderFilterVirtual: function() {\r\n        var _this = this;\r\n        var workspace = this.getWorkSpace();\r\n        var resourcesManager = this._resourcesManager;\r\n        var isAllDaySupported = this.option(\"showAllDayPanel\") || !this._workSpace.supportAllDayRow();\r\n        var viewDataProvider = workspace.viewDataProvider;\r\n        var groupedData = viewDataProvider.viewData.groupedData;\r\n        var groupedDataToRender = groupedData.filter(function(_ref) {\r\n            var dateTable = _ref.dateTable;\r\n            return dateTable.length > 0\r\n        });\r\n        var isVerticalGrouping = workspace._isVerticalGroupedWorkSpace();\r\n        var endViewDate = workspace.getEndViewDateByEndDayHour();\r\n        var filterOptions = [];\r\n        groupedDataToRender.forEach(function(_ref2) {\r\n            var groupIndex = _ref2.groupIndex,\r\n                allDayPanel = _ref2.allDayPanel;\r\n            var startDate = viewDataProvider.getGroupStartDate(groupIndex);\r\n            var endDate = new Date(Math.min(viewDataProvider.getGroupEndDate(groupIndex), endViewDate));\r\n            var startDayHour = startDate.getHours();\r\n            var endDayHour = (startDayHour + (endDate - startDate) / HOUR_MS) % HOURS_IN_DAY;\r\n            var allDay = false !== isAllDaySupported && (null === allDayPanel || void 0 === allDayPanel ? void 0 : allDayPanel.length) > 0;\r\n            var groups = viewDataProvider.getCellsGroup(groupIndex);\r\n            var groupResources = isVerticalGrouping ? resourcesManager.getResourcesDataByGroups(groups) : resourcesManager.getResourcesData();\r\n            filterOptions.push({\r\n                isVirtualScrolling: true,\r\n                startDayHour: startDayHour,\r\n                endDayHour: endDayHour,\r\n                min: startDate,\r\n                max: endDate,\r\n                resources: groupResources,\r\n                allDay: allDay,\r\n                firstDayOfWeek: _this.getFirstDayOfWeek(),\r\n                recurrenceException: _this._getRecurrenceException.bind(_this)\r\n            })\r\n        });\r\n        var result = this._appointmentModel.filterLoadedVirtualAppointments(filterOptions, this.timeZoneCalculator, workspace._getGroupCount());\r\n        return result\r\n    },\r\n    dayHasAppointment: function(day, appointment, trimTime) {\r\n        return this.dayHasAppointment(day, appointment, trimTime)\r\n    },\r\n    createResourcesTree: function() {\r\n        return this._resourcesManager.createResourcesTree(this._loadedResources)\r\n    },\r\n    getResourceTreeLeaves: function(tree, appointmentResources) {\r\n        return this._resourcesManager.getResourceTreeLeaves(tree, appointmentResources)\r\n    },\r\n    createReducedResourcesTree: function() {\r\n        var tree = this._resourcesManager.createResourcesTree(this._loadedResources);\r\n        return this._resourcesManager.reduceResourcesTree(tree, this.getFilteredItems())\r\n    },\r\n    groupAppointmentsByResources: function(appointments) {\r\n        var result = {\r\n            0: appointments\r\n        };\r\n        var groups = this._getCurrentViewOption(\"groups\");\r\n        if (groups && groups.length && this._resourcesManager.getResourcesData().length) {\r\n            result = this._resourcesManager.groupAppointmentsByResources(appointments, this._loadedResources)\r\n        }\r\n        var totalResourceCount = 0;\r\n        (0, _iterator.each)(this._loadedResources, function(i, resource) {\r\n            if (!i) {\r\n                totalResourceCount = resource.items.length\r\n            } else {\r\n                totalResourceCount *= resource.items.length\r\n            }\r\n        });\r\n        for (var j = 0; j < totalResourceCount; j++) {\r\n            var index = j.toString();\r\n            if (result[index]) {\r\n                continue\r\n            }\r\n            result[index] = []\r\n        }\r\n        return result\r\n    },\r\n    getAgendaRows: function(options) {\r\n        var renderingStrategy = this._layoutManager.getRenderingStrategyInstance();\r\n        var calculateRows = renderingStrategy.calculateRows.bind(renderingStrategy);\r\n        var d = new _deferred.Deferred;\r\n\r\n        function rowsCalculated(appointments) {\r\n            var result = calculateRows(appointments, options.agendaDuration, options.currentDate);\r\n            this._dataSourceLoadedCallback.remove(rowsCalculated);\r\n            d.resolve(result)\r\n        }\r\n        this._dataSourceLoadedCallback.add(rowsCalculated);\r\n        return d.promise()\r\n    },\r\n    getAgendaVerticalStepHeight: function() {\r\n        return this.getWorkSpace().getAgendaVerticalStepHeight()\r\n    },\r\n    getAgendaDuration: function() {\r\n        return this._getCurrentViewOption(\"agendaDuration\")\r\n    },\r\n    getStartViewDate: function() {\r\n        return this.getStartViewDate()\r\n    },\r\n    getEndViewDate: function() {\r\n        return this.getEndViewDate()\r\n    },\r\n    getMaxAppointmentsPerCell: function() {\r\n        return this.getMaxAppointmentsPerCell()\r\n    },\r\n    forceMaxAppointmentPerCell: function() {\r\n        return this.forceMaxAppointmentPerCell()\r\n    },\r\n    onAgendaReady: function(rows) {\r\n        var $appts = this.getAppointmentsInstance()._itemElements();\r\n        var total = 0;\r\n        var applyClass = function(_, count) {\r\n            var index = count + total - 1;\r\n            $appts.eq(index).addClass(_constants.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS);\r\n            total += count\r\n        };\r\n        for (var i = 0; i < rows.length; i++) {\r\n            (0, _iterator.each)(rows[i], applyClass)\r\n        }\r\n    },\r\n    getTimezone: function() {\r\n        return this._getTimezoneOffsetByOption()\r\n    },\r\n    getClientTimezoneOffset: function(date) {\r\n        date = date || new Date;\r\n        return _utils.default.getClientTimezoneOffset(date)\r\n    },\r\n    convertDateByTimezone: function(date, appointmentTimezone, skipAppointmentTimezone) {\r\n        date = new Date(date);\r\n        var tzOffsets = this._subscribes.getComplexOffsets(this, date, appointmentTimezone);\r\n        date = this._subscribes.translateDateToAppointmentTimeZone(date, tzOffsets);\r\n        if (!skipAppointmentTimezone || skipAppointmentTimezone && !appointmentTimezone) {\r\n            date = this._subscribes.translateDateToCommonTimeZone(date, tzOffsets)\r\n        }\r\n        return date\r\n    },\r\n    convertDateByTimezoneBack: function(date, appointmentTimezone, skipAppointmentTimezone) {\r\n        date = new Date(date);\r\n        var tzOffsets = this._subscribes.getComplexOffsets(this, date, appointmentTimezone);\r\n        date = this._subscribes.translateDateToAppointmentTimeZone(date, tzOffsets, true);\r\n        if (!skipAppointmentTimezone || skipAppointmentTimezone && !appointmentTimezone) {\r\n            date = this._subscribes.translateDateToCommonTimeZone(date, tzOffsets, true)\r\n        }\r\n        return date\r\n    },\r\n    translateDateToAppointmentTimeZone: function(date, offsets, back) {\r\n        var operation = back ? -1 : 1;\r\n        var dateInUTC = date.getTime() - operation * offsets.client * toMs(\"hour\");\r\n        return new Date(dateInUTC + operation * offsets.appointment * toMs(\"hour\"))\r\n    },\r\n    translateDateToCommonTimeZone: function(date, offsets, back) {\r\n        var operation = back ? -1 : 1;\r\n        if (\"number\" === typeof offsets.common) {\r\n            var offset = offsets.common - offsets.appointment;\r\n            var hoursOffset = (offset < 0 ? -1 : 1) * Math.floor(Math.abs(offset));\r\n            var minutesOffset = offset % 1;\r\n            date.setHours(date.getHours() + operation * hoursOffset);\r\n            date.setMinutes(date.getMinutes() + operation * minutesOffset * MINUTES_IN_HOUR)\r\n        }\r\n        return date\r\n    },\r\n    getComplexOffsets: function(scheduler, date, appointmentTimezone) {\r\n        var clientTimezoneOffset = -this.getClientTimezoneOffset(date) / toMs(\"hour\");\r\n        var commonTimezoneOffset = scheduler._getTimezoneOffsetByOption(date);\r\n        var appointmentTimezoneOffset = _utils.default.calculateTimezoneByValue(appointmentTimezone, date);\r\n        if (\"number\" !== typeof appointmentTimezoneOffset) {\r\n            appointmentTimezoneOffset = clientTimezoneOffset\r\n        }\r\n        return {\r\n            client: clientTimezoneOffset,\r\n            common: (0, _type.isDefined)(commonTimezoneOffset) ? commonTimezoneOffset : clientTimezoneOffset,\r\n            appointment: appointmentTimezoneOffset\r\n        }\r\n    },\r\n    getTargetedAppointmentData: function(appointment, element) {\r\n        return this.getTargetedAppointment(appointment, element)\r\n    },\r\n    getAppointmentDurationInMs: function(options) {\r\n        var startDate = options.startDate;\r\n        var endDate = options.endDate;\r\n        var allDay = options.allDay;\r\n        var appointmentDuration = endDate.getTime() - startDate.getTime();\r\n        var dayDuration = toMs(\"day\");\r\n        var visibleDayDuration = this._workSpace.getVisibleDayDuration();\r\n        var result = 0;\r\n        if (allDay) {\r\n            var ceilQuantityOfDays = Math.ceil(appointmentDuration / dayDuration);\r\n            result = ceilQuantityOfDays * visibleDayDuration\r\n        } else {\r\n            var isDifferentDates = !_utils.default.isSameAppointmentDates(startDate, endDate);\r\n            var floorQuantityOfDays = Math.floor(appointmentDuration / dayDuration);\r\n            var tailDuration;\r\n            if (isDifferentDates) {\r\n                var startDateEndHour = new Date(new Date(startDate).setHours(this.option(\"endDayHour\"), 0, 0));\r\n                var hiddenDayDuration = dayDuration - visibleDayDuration - (startDate.getTime() > startDateEndHour.getTime() ? startDate.getTime() - startDateEndHour.getTime() : 0);\r\n                tailDuration = appointmentDuration - (floorQuantityOfDays ? floorQuantityOfDays * dayDuration : hiddenDayDuration);\r\n                var startDayTime = this.option(\"startDayHour\") * toMs(\"hour\");\r\n                var endPartDuration = endDate - _date.default.trimTime(endDate);\r\n                if (endPartDuration < startDayTime) {\r\n                    if (floorQuantityOfDays) {\r\n                        tailDuration -= hiddenDayDuration\r\n                    }\r\n                    tailDuration += startDayTime - endPartDuration\r\n                }\r\n            } else {\r\n                tailDuration = appointmentDuration % dayDuration\r\n            }\r\n            if (tailDuration > visibleDayDuration) {\r\n                tailDuration = visibleDayDuration\r\n            }\r\n            result = floorQuantityOfDays * visibleDayDuration + tailDuration || toMs(\"minute\")\r\n        }\r\n        return result\r\n    },\r\n    replaceWrongEndDate: function(appointment, startDate, endDate) {\r\n        this._appointmentModel.replaceWrongEndDate(appointment, startDate, endDate)\r\n    },\r\n    calculateAppointmentEndDate: function(isAllDay, startDate) {\r\n        return this._appointmentModel._calculateAppointmentEndDate(isAllDay, startDate)\r\n    },\r\n    getEndDayHour: function() {\r\n        return this._workSpace.option(\"endDayHour\") || this.option(\"endDayHour\")\r\n    },\r\n    getStartDayHour: function() {\r\n        return this._workSpace.option(\"startDayHour\") || this.option(\"startDayHour\")\r\n    },\r\n    isAdaptive: function() {\r\n        return this.option(\"adaptivityEnabled\")\r\n    },\r\n    moveBack: function() {\r\n        var dragBehavior = this.getWorkSpace().dragBehavior;\r\n        dragBehavior && dragBehavior.moveBack()\r\n    },\r\n    validateDayHours: function() {\r\n        var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n        var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n        if (startDayHour >= endDayHour) {\r\n            throw _ui.default.Error(\"E1058\")\r\n        }\r\n    },\r\n    removeDroppableCellClass: function() {\r\n        this._workSpace.removeDroppableCellClass()\r\n    }\r\n};\r\nvar _default = subscribes;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_builder.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_builder\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"filterBuilder\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/axes/axes_constants.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _default = {\r\n    logarithmic: \"logarithmic\",\r\n    discrete: \"discrete\",\r\n    numeric: \"numeric\",\r\n    left: \"left\",\r\n    right: \"right\",\r\n    top: \"top\",\r\n    bottom: \"bottom\",\r\n    center: \"center\",\r\n    horizontal: \"horizontal\",\r\n    vertical: \"vertical\",\r\n    convertTicksToValues: function(ticks) {\r\n        return (0, _utils.map)(ticks || [], function(item) {\r\n            return item.value\r\n        })\r\n    },\r\n    validateOverlappingMode: function(mode) {\r\n        return \"ignore\" === mode || \"none\" === mode ? mode : \"hide\"\r\n    },\r\n    getTicksCountInRange: function(ticks, valueKey, range) {\r\n        var i = 1;\r\n        if (ticks.length > 1) {\r\n            for (; i < ticks.length; i++) {\r\n                if (Math.abs(ticks[i].coords[valueKey] - ticks[0].coords[valueKey]) >= range) {\r\n                    break\r\n                }\r\n            }\r\n        }\r\n        return i\r\n    },\r\n    areLabelsOverlap: function(bBox1, bBox2, spacing, alignment) {\r\n        var horizontalInverted = bBox1.x > bBox2.x;\r\n        var verticalInverted = bBox1.y > bBox2.y;\r\n        var x1 = bBox1.x;\r\n        var x2 = bBox2.x;\r\n        var width1 = bBox1.width;\r\n        var width2 = bBox2.width;\r\n        if (\"left\" === alignment) {\r\n            x1 += width1 / 2;\r\n            x2 += width2 / 2\r\n        } else {\r\n            if (\"right\" === alignment) {\r\n                x1 -= width1 / 2;\r\n                x2 -= width2 / 2\r\n            }\r\n        }\r\n        var hasHorizontalOverlapping = horizontalInverted ? x2 + width2 + spacing > x1 : x1 + width1 + spacing > x2;\r\n        var hasVerticalOverlapping = verticalInverted ? bBox2.y + bBox2.height > bBox1.y : bBox1.y + bBox1.height > bBox2.y;\r\n        return hasHorizontalOverlapping && hasVerticalOverlapping\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/errors.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _error = _interopRequireDefault(require(\"./utils/error\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = (0, _error.default)({\r\n    E0001: \"Method is not implemented\",\r\n    E0002: \"Member name collision: {0}\",\r\n    E0003: \"A class must be instantiated using the 'new' keyword\",\r\n    E0004: \"The NAME property of the component is not specified\",\r\n    E0005: \"Unknown device\",\r\n    E0006: \"Unknown endpoint key is requested\",\r\n    E0007: \"'Invalidate' method is called outside the update transaction\",\r\n    E0008: \"Type of the option name is not appropriate to create an action\",\r\n    E0009: \"Component '{0}' has not been initialized for an element\",\r\n    E0010: \"Animation configuration with the '{0}' type requires '{1}' configuration as {2}\",\r\n    E0011: \"Unknown animation type '{0}'\",\r\n    E0012: \"jQuery version is too old. Please upgrade jQuery to 1.10.0 or later\",\r\n    E0013: \"KnockoutJS version is too old. Please upgrade KnockoutJS to 2.3.0 or later\",\r\n    E0014: \"The 'release' method shouldn't be called for an unlocked Lock object\",\r\n    E0015: \"Queued task returned an unexpected result\",\r\n    E0017: \"Event namespace is not defined\",\r\n    E0018: \"DevExpress.ui.DevExpressPopup widget is required\",\r\n    E0020: \"Template engine '{0}' is not supported\",\r\n    E0021: \"Unknown theme is set: {0}\",\r\n    E0022: \"LINK[rel=DevExpress-theme] tags must go before DevExpress included scripts\",\r\n    E0023: \"Template name is not specified\",\r\n    E0024: \"DevExtreme bundle already included\",\r\n    E0025: \"Unexpected argument type\",\r\n    E0100: \"Unknown validation type is detected\",\r\n    E0101: \"Misconfigured range validation rule is detected\",\r\n    E0102: \"Misconfigured comparison validation rule is detected\",\r\n    E0103: \"validationCallback of an asynchronous rule should return a jQuery or a native promise\",\r\n    E0110: \"Unknown validation group is detected\",\r\n    E0120: \"Adapter for a DevExpressValidator component cannot be configured\",\r\n    E0121: \"The 'customItem' field of the 'onCustomItemCreating' function's parameter should contain a custom item or Promise that is resolved after the item is created.\",\r\n    W0000: \"'{0}' is deprecated in {1}. {2}\",\r\n    W0001: \"{0} - '{1}' option is deprecated in {2}. {3}\",\r\n    W0002: \"{0} - '{1}' method is deprecated in {2}. {3}\",\r\n    W0003: \"{0} - '{1}' property is deprecated in {2}. {3}\",\r\n    W0004: \"Timeout for theme loading is over: {0}\",\r\n    W0005: \"'{0}' event is deprecated in {1}. {2}\",\r\n    W0006: \"Invalid recurrence rule: '{0}'\",\r\n    W0007: \"'{0}' Globalize culture is not defined\",\r\n    W0008: \"Invalid view name: '{0}'\",\r\n    W0009: \"Invalid time zone name: '{0}'\",\r\n    W0010: \"{0} is deprecated in {1}. {2}\",\r\n    W0011: \"Number parsing is invoked while the parser is not defined\",\r\n    W0012: \"Date parsing is invoked while the parser is not defined\",\r\n    W0013: \"'{0}' file is deprecated in {1}. {2}\",\r\n    W0014: \"{0} - '{1}' type is deprecated in {2}. {3}\",\r\n    W0015: \"Instead of returning a value from the '{0}' function, write it into the '{1}' field of the function's parameter.\",\r\n    W0016: 'The \"{0}\" option does not accept the \"{1}\" value since v.{2}. {3}.'\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/ldml/date.format.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getFormat = void 0;\r\nvar _number = _interopRequireDefault(require(\"../number\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ARABIC_COMMA = \"\\u060c\";\r\nvar FORMAT_SEPARATORS = \" .,:;/\\\\<>()-[]\" + ARABIC_COMMA;\r\nvar AM_PM_PATTERN = \". m.\";\r\nvar checkDigit = function(char) {\r\n    var code = char && _number.default.convertDigits(char, false).charCodeAt(0);\r\n    var zeroCode = _number.default.convertDigits(\"0\", false).charCodeAt(0);\r\n    return zeroCode <= code && code < zeroCode + 10\r\n};\r\nvar checkPatternContinue = function(text, index, isDigit) {\r\n    var char = text[index];\r\n    var nextChar = text[index + 1];\r\n    if (!isDigit) {\r\n        if (\".\" === char || \" \" === char && text.slice(index - 1, index + 3) === AM_PM_PATTERN) {\r\n            return true\r\n        }\r\n        if (\"-\" === char && !checkDigit(nextChar)) {\r\n            return true\r\n        }\r\n    }\r\n    return FORMAT_SEPARATORS.indexOf(char) < 0 && isDigit === checkDigit(char)\r\n};\r\nvar getPatternStartIndex = function(defaultPattern, index) {\r\n    if (!checkDigit(defaultPattern[index])) {\r\n        while (index > 0 && !checkDigit(defaultPattern[index - 1]) && (\".\" === defaultPattern[index - 1] || FORMAT_SEPARATORS.indexOf(defaultPattern[index - 1]) < 0)) {\r\n            index--\r\n        }\r\n    }\r\n    return index\r\n};\r\nvar getDifference = function(defaultPattern, patterns, processedIndexes, isDigit) {\r\n    var i = 0;\r\n    var result = [];\r\n    var patternsFilter = function(pattern) {\r\n        return defaultPattern[i] !== pattern[i] && (void 0 === isDigit || checkDigit(defaultPattern[i]) === isDigit)\r\n    };\r\n    if (!Array.isArray(patterns)) {\r\n        patterns = [patterns]\r\n    }\r\n    for (i = 0; i < defaultPattern.length; i++) {\r\n        if (processedIndexes.indexOf(i) < 0 && patterns.filter(patternsFilter).length) {\r\n            i = getPatternStartIndex(defaultPattern, i);\r\n            do {\r\n                isDigit = checkDigit(defaultPattern[i]);\r\n                if (!result.length && !isDigit && checkDigit(patterns[0][i])) {\r\n                    break\r\n                }\r\n                result.push(i);\r\n                processedIndexes.unshift(i);\r\n                i++\r\n            } while (defaultPattern[i] && checkPatternContinue(defaultPattern, i, isDigit));\r\n            break\r\n        }\r\n    }\r\n    if (1 === result.length && (\"0\" === defaultPattern[processedIndexes[0] - 1] || \"\\u0660\" === defaultPattern[processedIndexes[0] - 1])) {\r\n        processedIndexes.unshift(processedIndexes[0] - 1)\r\n    }\r\n    return result\r\n};\r\nvar replaceCharsCore = function(pattern, indexes, char, patternPositions) {\r\n    var baseCharIndex = indexes[0];\r\n    var patternIndex = baseCharIndex < patternPositions.length ? patternPositions[baseCharIndex] : baseCharIndex;\r\n    indexes.forEach(function(_, index) {\r\n        pattern = pattern.substr(0, patternIndex + index) + (char.length > 1 ? char[index] : char) + pattern.substr(patternIndex + index + 1)\r\n    });\r\n    if (1 === indexes.length) {\r\n        pattern = pattern.replace(\"0\" + char, char + char);\r\n        pattern = pattern.replace(\"\\u0660\" + char, char + char)\r\n    }\r\n    return pattern\r\n};\r\nvar replaceChars = function(pattern, indexes, char, patternPositions) {\r\n    var i;\r\n    var index;\r\n    var patternIndex;\r\n    if (!checkDigit(pattern[indexes[0]] || \"0\")) {\r\n        var letterCount = Math.max(indexes.length <= 3 ? 3 : 4, char.length);\r\n        while (indexes.length > letterCount) {\r\n            index = indexes.pop();\r\n            patternIndex = patternPositions[index];\r\n            patternPositions[index] = -1;\r\n            for (i = index + 1; i < patternPositions.length; i++) {\r\n                patternPositions[i]--\r\n            }\r\n            pattern = pattern.substr(0, patternIndex) + pattern.substr(patternIndex + 1)\r\n        }\r\n        index = indexes[indexes.length - 1] + 1, patternIndex = index < patternPositions.length ? patternPositions[index] : index;\r\n        while (indexes.length < letterCount) {\r\n            indexes.push(indexes[indexes.length - 1] + 1);\r\n            for (i = index; i < patternPositions.length; i++) {\r\n                patternPositions[i]++\r\n            }\r\n            pattern = pattern.substr(0, patternIndex) + \" \" + pattern.substr(patternIndex)\r\n        }\r\n    }\r\n    pattern = replaceCharsCore(pattern, indexes, char, patternPositions);\r\n    return pattern\r\n};\r\nvar formatValue = function(value, formatter) {\r\n    if (Array.isArray(value)) {\r\n        return value.map(function(value) {\r\n            return (formatter(value) || \"\").toString()\r\n        })\r\n    }\r\n    return (formatter(value) || \"\").toString()\r\n};\r\nvar ESCAPE_CHARS_REGEXP = /[a-zA-Z]/g;\r\nvar escapeChars = function(pattern, defaultPattern, processedIndexes, patternPositions) {\r\n    var escapeIndexes = defaultPattern.split(\"\").map(function(char, index) {\r\n        if (processedIndexes.indexOf(index) < 0 && (char.match(ESCAPE_CHARS_REGEXP) || \"'\" === char)) {\r\n            return patternPositions[index]\r\n        }\r\n        return -1\r\n    });\r\n    pattern = pattern.split(\"\").map(function(char, index) {\r\n        var result = char;\r\n        var isCurrentCharEscaped = escapeIndexes.indexOf(index) >= 0;\r\n        var isPrevCharEscaped = index > 0 && escapeIndexes.indexOf(index - 1) >= 0;\r\n        var isNextCharEscaped = escapeIndexes.indexOf(index + 1) >= 0;\r\n        if (isCurrentCharEscaped) {\r\n            if (!isPrevCharEscaped) {\r\n                result = \"'\" + result\r\n            }\r\n            if (!isNextCharEscaped) {\r\n                result += \"'\"\r\n            }\r\n        }\r\n        return result\r\n    }).join(\"\");\r\n    return pattern\r\n};\r\nvar getFormat = function(formatter) {\r\n    var processedIndexes = [];\r\n    var defaultPattern = formatValue(new Date(2009, 8, 8, 6, 5, 4), formatter);\r\n    var patternPositions = defaultPattern.split(\"\").map(function(_, index) {\r\n        return index\r\n    });\r\n    var result = defaultPattern;\r\n    var replacedPatterns = {};\r\n    var datePatterns = [{\r\n        date: new Date(2009, 8, 8, 6, 5, 4, 100),\r\n        pattern: \"S\"\r\n    }, {\r\n        date: new Date(2009, 8, 8, 6, 5, 2),\r\n        pattern: \"s\"\r\n    }, {\r\n        date: new Date(2009, 8, 8, 6, 2, 4),\r\n        pattern: \"m\"\r\n    }, {\r\n        date: new Date(2009, 8, 8, 18, 5, 4),\r\n        pattern: \"H\",\r\n        isDigit: true\r\n    }, {\r\n        date: new Date(2009, 8, 8, 2, 5, 4),\r\n        pattern: \"h\",\r\n        isDigit: true\r\n    }, {\r\n        date: new Date(2009, 8, 8, 18, 5, 4),\r\n        pattern: \"a\",\r\n        isDigit: false\r\n    }, {\r\n        date: new Date(2009, 8, 1, 6, 5, 4),\r\n        pattern: \"d\"\r\n    }, {\r\n        date: [new Date(2009, 8, 2, 6, 5, 4), new Date(2009, 8, 3, 6, 5, 4), new Date(2009, 8, 4, 6, 5, 4)],\r\n        pattern: \"E\"\r\n    }, {\r\n        date: new Date(2009, 9, 6, 6, 5, 4),\r\n        pattern: \"M\"\r\n    }, {\r\n        date: new Date(1998, 8, 8, 6, 5, 4),\r\n        pattern: \"y\"\r\n    }];\r\n    if (!result) {\r\n        return\r\n    }\r\n    datePatterns.forEach(function(test) {\r\n        var diff = getDifference(defaultPattern, formatValue(test.date, formatter), processedIndexes, test.isDigit);\r\n        var pattern = \"M\" === test.pattern && !replacedPatterns.d ? \"L\" : test.pattern;\r\n        result = replaceChars(result, diff, pattern, patternPositions);\r\n        replacedPatterns[pattern] = diff.length\r\n    });\r\n    result = escapeChars(result, defaultPattern, processedIndexes, patternPositions);\r\n    if (processedIndexes.length) {\r\n        return result\r\n    }\r\n};\r\nexports.getFormat = getFormat;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.context.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiListEdit = _interopRequireDefault(require(\"./ui.list.edit.decorator_menu_helper\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiListEdit2 = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit3 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _uiList = require(\"./ui.list.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CONTEXTMENU_CLASS = \"dx-list-context-menu\";\r\nvar CONTEXTMENU_MENUCONTENT_CLASS = \"dx-list-context-menucontent\";\r\n(0, _uiListEdit2.register)(\"menu\", \"context\", _uiListEdit3.default.inherit({\r\n    _init: function() {\r\n        var $menu = (0, _renderer.default)(\"<div>\").addClass(CONTEXTMENU_CLASS);\r\n        this._list.$element().append($menu);\r\n        this._menu = this._renderOverlay($menu)\r\n    },\r\n    _renderOverlay: function($element) {\r\n        return this._list._createComponent($element, _overlay.default, {\r\n            shading: false,\r\n            deferRendering: true,\r\n            closeOnTargetScroll: true,\r\n            closeOnOutsideClick: function(e) {\r\n                return !(0, _renderer.default)(e.target).closest(\".\" + CONTEXTMENU_CLASS).length\r\n            },\r\n            animation: {\r\n                show: {\r\n                    type: \"slide\",\r\n                    duration: 300,\r\n                    from: {\r\n                        height: 0,\r\n                        opacity: 1\r\n                    },\r\n                    to: {\r\n                        height: function() {\r\n                            return this._$menuList.outerHeight()\r\n                        }.bind(this),\r\n                        opacity: 1\r\n                    }\r\n                },\r\n                hide: {\r\n                    type: \"slide\",\r\n                    duration: 0,\r\n                    from: {\r\n                        opacity: 1\r\n                    },\r\n                    to: {\r\n                        opacity: 0\r\n                    }\r\n                }\r\n            },\r\n            height: function() {\r\n                return this._$menuList ? this._$menuList.outerHeight() : 0\r\n            }.bind(this),\r\n            width: function() {\r\n                return this._list.$element().outerWidth()\r\n            }.bind(this),\r\n            onContentReady: this._renderMenuContent.bind(this)\r\n        })\r\n    },\r\n    _renderMenuContent: function(e) {\r\n        var $overlayContent = e.component.$content();\r\n        var items = this._menuItems().slice();\r\n        if (this._deleteEnabled()) {\r\n            items.push({\r\n                text: _message.default.format(\"dxListEditDecorator-delete\"),\r\n                action: this._deleteItem.bind(this)\r\n            })\r\n        }\r\n        this._$menuList = (0, _renderer.default)(\"<div>\");\r\n        this._list._createComponent(this._$menuList, _uiList.ListBase, {\r\n            items: items,\r\n            onItemClick: this._menuItemClickHandler.bind(this),\r\n            height: \"auto\",\r\n            integrationOptions: {}\r\n        });\r\n        $overlayContent.addClass(CONTEXTMENU_MENUCONTENT_CLASS);\r\n        $overlayContent.append(this._$menuList)\r\n    },\r\n    _menuItemClickHandler: function(args) {\r\n        this._menu.hide();\r\n        this._fireMenuAction(this._$itemWithMenu, args.itemData.action)\r\n    },\r\n    _deleteItem: function() {\r\n        this._list.deleteItem(this._$itemWithMenu)\r\n    },\r\n    handleContextMenu: function($itemElement) {\r\n        this._$itemWithMenu = $itemElement;\r\n        this._menu.option({\r\n            position: {\r\n                my: \"top\",\r\n                at: \"bottom\",\r\n                of: $itemElement,\r\n                collision: \"flip\"\r\n            }\r\n        });\r\n        this._menu.show();\r\n        return true\r\n    },\r\n    dispose: function() {\r\n        if (this._menu) {\r\n            this._menu.$element().remove()\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    }\r\n}).include(_uiListEdit.default));\r\n","/**\r\n * DevExtreme (ui/collection/ui.collection_widget.async.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./ui.collection_widget.edit\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar AsyncCollectionWidget = _uiCollection_widget.default.inherit({\r\n    _initMarkup: function() {\r\n        this._deferredItems = [];\r\n        this.callBase()\r\n    },\r\n    _renderItemContent: function(args) {\r\n        var renderContentDeferred = new _deferred.Deferred;\r\n        var itemDeferred = new _deferred.Deferred;\r\n        var that = this;\r\n        this._deferredItems[args.index] = itemDeferred;\r\n        var $itemContent = this.callBase.call(that, args);\r\n        itemDeferred.done(function() {\r\n            renderContentDeferred.resolve($itemContent)\r\n        });\r\n        return renderContentDeferred.promise()\r\n    },\r\n    _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n        var _this = this;\r\n        return itemTemplate.render({\r\n            model: renderArgs.itemData,\r\n            container: renderArgs.container,\r\n            index: renderArgs.index,\r\n            onRendered: function() {\r\n                _this._deferredItems[renderArgs.index].resolve()\r\n            }\r\n        })\r\n    },\r\n    _postProcessRenderItems: _common.noop,\r\n    _renderItemsAsync: function() {\r\n        var _this2 = this;\r\n        var d = new _deferred.Deferred;\r\n        _deferred.when.apply(this, this._deferredItems).done(function() {\r\n            _this2._postProcessRenderItems();\r\n            d.resolve()\r\n        });\r\n        return d.promise()\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        this._deferredItems = []\r\n    }\r\n});\r\nvar _default = AsyncCollectionWidget;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.row_dragging.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.row_dragging\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"rowDragging\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointment_form.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.AppointmentForm = exports.APPOINTMENT_FORM_GROUP_NAMES = void 0;\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _data_source = _interopRequireDefault(require(\"../../data/data_source\"));\r\nvar _utils = _interopRequireDefault(require(\"./timezones/utils.timezones_data\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nrequire(\"./ui.scheduler.recurrence_editor\");\r\nrequire(\"../text_area\");\r\nrequire(\"../tag_box\");\r\nrequire(\"../switch\");\r\nrequire(\"../select_box\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCREEN_SIZE_OF_SINGLE_COLUMN = 600;\r\nvar APPOINTMENT_FORM_GROUP_NAMES = {\r\n    Main: \"mainGroup\",\r\n    Recurrence: \"recurrenceGroup\"\r\n};\r\nexports.APPOINTMENT_FORM_GROUP_NAMES = APPOINTMENT_FORM_GROUP_NAMES;\r\nvar SchedulerAppointmentForm = {\r\n    _appointmentForm: {},\r\n    _lockDateShiftFlag: false,\r\n    _validateAppointmentFormDate: function(editor, value, previousValue) {\r\n        var isCurrentDateCorrect = null === value || !!value;\r\n        var isPreviousDateCorrect = null === previousValue || !!previousValue;\r\n        if (!isCurrentDateCorrect && isPreviousDateCorrect) {\r\n            editor.option(\"value\", previousValue)\r\n        }\r\n    },\r\n    _getAllDayStartDate: function(startDate) {\r\n        return new Date(new Date(startDate).setHours(0, 0, 0, 0))\r\n    },\r\n    _getAllDayEndDate: function(startDate) {\r\n        return new Date(new Date(startDate).setDate(startDate.getDate() + 1))\r\n    },\r\n    _getStartDateWithStartHour: function(startDate, startDayHour) {\r\n        return new Date(new Date(startDate).setHours(startDayHour))\r\n    },\r\n    create: function(componentCreator, $container, isReadOnly, formData) {\r\n        this._appointmentForm = componentCreator($container, _form.default, {\r\n            items: this._editors,\r\n            readOnly: isReadOnly,\r\n            showValidationSummary: true,\r\n            scrollingEnabled: true,\r\n            colCount: \"auto\",\r\n            colCountByScreen: {\r\n                lg: 2,\r\n                xs: 1\r\n            },\r\n            formData: formData,\r\n            showColonAfterLabel: false,\r\n            labelLocation: \"top\",\r\n            screenByWidth: function(width) {\r\n                return width < SCREEN_SIZE_OF_SINGLE_COLUMN || \"desktop\" !== _devices.default.current().deviceType ? \"xs\" : \"lg\"\r\n            }\r\n        });\r\n        return this._appointmentForm\r\n    },\r\n    _dateBoxValueChanged: function(args, dateExpr, isNeedCorrect) {\r\n        this._validateAppointmentFormDate(args.component, args.value, args.previousValue);\r\n        var value = _date_serialization.default.deserializeDate(args.value);\r\n        var previousValue = _date_serialization.default.deserializeDate(args.previousValue);\r\n        var dateEditor = this._appointmentForm.getEditor(dateExpr);\r\n        var dateValue = _date_serialization.default.deserializeDate(dateEditor.option(\"value\"));\r\n        if (!this._appointmentForm._lockDateShiftFlag && dateValue && value && isNeedCorrect(dateValue, value)) {\r\n            var duration = previousValue ? dateValue.getTime() - previousValue.getTime() : 0;\r\n            dateEditor.option(\"value\", new Date(value.getTime() + duration))\r\n        }\r\n    },\r\n    _createTimezoneEditor: function(timeZoneExpr, secondTimeZoneExpr, visibleIndex, colSpan, isMainTimeZone) {\r\n        var _this = this;\r\n        var isShow = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : false;\r\n        var noTzTitle = _message.default.format(\"dxScheduler-noTimezoneTitle\");\r\n        return {\r\n            dataField: timeZoneExpr,\r\n            editorType: \"dxSelectBox\",\r\n            visibleIndex: visibleIndex,\r\n            colSpan: colSpan,\r\n            label: {\r\n                text: \" \"\r\n            },\r\n            editorOptions: {\r\n                displayExpr: \"title\",\r\n                valueExpr: \"id\",\r\n                placeholder: noTzTitle,\r\n                searchEnabled: true,\r\n                onValueChanged: function(args) {\r\n                    var form = _this._appointmentForm;\r\n                    var secondTimezoneEditor = form.getEditor(secondTimeZoneExpr);\r\n                    if (isMainTimeZone) {\r\n                        secondTimezoneEditor.option(\"value\", args.value)\r\n                    }\r\n                }\r\n            },\r\n            visible: isShow\r\n        }\r\n    },\r\n    _createDateBoxEditor: function(dataExpr, colSpan, firstDayOfWeek, label, callback) {\r\n        return {\r\n            dataField: dataExpr,\r\n            editorType: \"dxDateBox\",\r\n            colSpan: colSpan,\r\n            label: {\r\n                text: _message.default.format(label)\r\n            },\r\n            validationRules: [{\r\n                type: \"required\"\r\n            }],\r\n            editorOptions: {\r\n                width: \"100%\",\r\n                calendarOptions: {\r\n                    firstDayOfWeek: firstDayOfWeek\r\n                },\r\n                onValueChanged: callback\r\n            }\r\n        }\r\n    },\r\n    _createDateBoxItems: function(dataExprs, schedulerInst, allowTimeZoneEditing) {\r\n        var _this2 = this;\r\n        var colSpan = allowTimeZoneEditing ? 2 : 1;\r\n        var firstDayOfWeek = schedulerInst.option(\"firstDayOfWeek\");\r\n        return [this._createDateBoxEditor(dataExprs.startDateExpr, colSpan, firstDayOfWeek, \"dxScheduler-editorLabelStartDate\", function(args) {\r\n            _this2._dateBoxValueChanged(args, dataExprs.endDateExpr, function(endValue, startValue) {\r\n                return endValue < startValue\r\n            })\r\n        }), this._createTimezoneEditor(dataExprs.startDateTimeZoneExpr, dataExprs.endDateTimeZoneExpr, 1, colSpan, true, allowTimeZoneEditing), this._createDateBoxEditor(dataExprs.endDateExpr, colSpan, firstDayOfWeek, \"dxScheduler-editorLabelEndDate\", function(args) {\r\n            _this2._dateBoxValueChanged(args, dataExprs.startDateExpr, function(startValue, endValue) {\r\n                return endValue < startValue\r\n            })\r\n        }), this._createTimezoneEditor(dataExprs.endDateTimeZoneExpr, dataExprs.startDateTimeZoneExpr, 3, colSpan, false, allowTimeZoneEditing)]\r\n    },\r\n    _createMainItems: function(dataExprs, schedulerInst, triggerResize, changeSize, allowTimeZoneEditing) {\r\n        var _this3 = this;\r\n        return [{\r\n            dataField: dataExprs.textExpr,\r\n            editorType: \"dxTextBox\",\r\n            colSpan: 2,\r\n            label: {\r\n                text: _message.default.format(\"dxScheduler-editorLabelTitle\")\r\n            }\r\n        }, {\r\n            itemType: \"group\",\r\n            colSpan: 2,\r\n            colCountByScreen: {\r\n                lg: 2,\r\n                xs: 1\r\n            },\r\n            items: this._createDateBoxItems(dataExprs, schedulerInst, allowTimeZoneEditing)\r\n        }, {\r\n            itemType: \"group\",\r\n            colCountByScreen: {\r\n                lg: 3,\r\n                xs: 3\r\n            },\r\n            colSpan: 2,\r\n            items: [{\r\n                dataField: dataExprs.allDayExpr,\r\n                cssClass: \"dx-appointment-form-switch\",\r\n                editorType: \"dxSwitch\",\r\n                label: {\r\n                    text: _message.default.format(\"dxScheduler-allDay\"),\r\n                    location: \"right\"\r\n                },\r\n                editorOptions: {\r\n                    onValueChanged: function(args) {\r\n                        var value = args.value;\r\n                        var startDateEditor = _this3._appointmentForm.getEditor(dataExprs.startDateExpr);\r\n                        var endDateEditor = _this3._appointmentForm.getEditor(dataExprs.endDateExpr);\r\n                        var startDate = _date_serialization.default.deserializeDate(startDateEditor.option(\"value\"));\r\n                        if (!_this3._appointmentForm._lockDateShiftFlag && startDate) {\r\n                            if (value) {\r\n                                var allDayStartDate = _this3._getAllDayStartDate(startDate);\r\n                                startDateEditor.option(\"value\", allDayStartDate);\r\n                                endDateEditor.option(\"value\", _this3._getAllDayEndDate(allDayStartDate))\r\n                            } else {\r\n                                var startDateWithStartHour = _this3._getStartDateWithStartHour(startDate, schedulerInst.option(\"startDayHour\"));\r\n                                var endDate = schedulerInst._workSpace.calculateEndDate(startDateWithStartHour);\r\n                                startDateEditor.option(\"value\", startDateWithStartHour);\r\n                                endDateEditor.option(\"value\", endDate)\r\n                            }\r\n                        }\r\n                        startDateEditor.option(\"type\", value ? \"date\" : \"datetime\");\r\n                        endDateEditor.option(\"type\", value ? \"date\" : \"datetime\")\r\n                    }\r\n                }\r\n            }, {\r\n                editorType: \"dxSwitch\",\r\n                dataField: \"repeat\",\r\n                cssClass: \"dx-appointment-form-switch\",\r\n                name: \"visibilityChanged\",\r\n                label: {\r\n                    text: _message.default.format(\"dxScheduler-editorLabelRecurrence\"),\r\n                    location: \"right\"\r\n                },\r\n                editorOptions: {\r\n                    onValueChanged: function(args) {\r\n                        var form = _this3._appointmentForm;\r\n                        var colSpan = args.value ? 1 : 2;\r\n                        form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Main, \"colSpan\", colSpan);\r\n                        form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, \"colSpan\", colSpan);\r\n                        _this3._updateRecurrenceItemVisibility(dataExprs.recurrenceRuleExpr, args.value, form);\r\n                        changeSize(args.value);\r\n                        triggerResize()\r\n                    }\r\n                }\r\n            }]\r\n        }, {\r\n            itemType: \"empty\",\r\n            colSpan: 2\r\n        }, {\r\n            dataField: dataExprs.descriptionExpr,\r\n            editorType: \"dxTextArea\",\r\n            colSpan: 2,\r\n            label: {\r\n                text: _message.default.format(\"dxScheduler-editorLabelDescription\")\r\n            }\r\n        }, {\r\n            itemType: \"empty\",\r\n            colSpan: 2\r\n        }]\r\n    },\r\n    _updateRecurrenceItemVisibility: function(recurrenceRuleExpr, value, form) {\r\n        var _form$getEditor;\r\n        form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, \"visible\", value);\r\n        !value && form.updateData(recurrenceRuleExpr, \"\");\r\n        null === (_form$getEditor = form.getEditor(recurrenceRuleExpr)) || void 0 === _form$getEditor ? void 0 : _form$getEditor.changeValueByVisibility(value)\r\n    },\r\n    prepareAppointmentFormEditors: function(dataExprs, schedulerInst, triggerResize, changeSize, appointmentData, allowTimeZoneEditing, readOnly) {\r\n        var recurrenceEditorVisibility = !!this.getRecurrenceRule(appointmentData, dataExprs);\r\n        changeSize(recurrenceEditorVisibility);\r\n        this._editors = [{\r\n            itemType: \"group\",\r\n            name: APPOINTMENT_FORM_GROUP_NAMES.Main,\r\n            colCountByScreen: {\r\n                lg: 2,\r\n                xs: 1\r\n            },\r\n            colSpan: recurrenceEditorVisibility ? 1 : 2,\r\n            items: this._createMainItems(dataExprs, schedulerInst, triggerResize, changeSize, allowTimeZoneEditing)\r\n        }, {\r\n            itemType: \"group\",\r\n            name: APPOINTMENT_FORM_GROUP_NAMES.Recurrence,\r\n            visible: recurrenceEditorVisibility,\r\n            colSpan: recurrenceEditorVisibility ? 1 : 2,\r\n            items: this._createRecurrenceEditor(dataExprs, schedulerInst, readOnly)\r\n        }];\r\n        return this._editors\r\n    },\r\n    _createRecurrenceEditor: function(dataExprs, schedulerInst, readOnly) {\r\n        return [{\r\n            dataField: dataExprs.recurrenceRuleExpr,\r\n            editorType: \"dxRecurrenceEditor\",\r\n            editorOptions: {\r\n                readOnly: readOnly,\r\n                firstDayOfWeek: schedulerInst.option(\"firstDayOfWeek\")\r\n            },\r\n            label: {\r\n                text: \" \",\r\n                visible: false\r\n            }\r\n        }]\r\n    },\r\n    getRecurrenceRule: function(data, dataExprs) {\r\n        return data[dataExprs.recurrenceRuleExpr]\r\n    },\r\n    concatResources: function(resources) {\r\n        this._editors[0].items = this._editors[0].items.concat(resources)\r\n    },\r\n    setEditorsType: function(form, startDateExpr, endDateExpr, allDay) {\r\n        var startDateItemPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.Main, \".\").concat(startDateExpr);\r\n        var endDateItemPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, \".\").concat(endDateExpr);\r\n        var startDateFormItem = form.itemOption(startDateItemPath);\r\n        var endDateFormItem = form.itemOption(endDateItemPath);\r\n        if (startDateFormItem && endDateFormItem) {\r\n            var startDateEditorOptions = startDateFormItem.editorOptions;\r\n            var endDateEditorOptions = endDateFormItem.editorOptions;\r\n            startDateEditorOptions.type = endDateEditorOptions.type = allDay ? \"date\" : \"datetime\";\r\n            form.itemOption(startDateItemPath, \"editorOptions\", startDateEditorOptions);\r\n            form.itemOption(endDateItemPath, \"editorOptions\", endDateEditorOptions)\r\n        }\r\n    },\r\n    updateTimeZoneEditorDataSource: function(date, expression) {\r\n        var timeZoneDataSource = new _data_source.default({\r\n            store: _utils.default.getDisplayedTimeZones(date),\r\n            paginate: true,\r\n            pageSize: 10\r\n        });\r\n        var options = {\r\n            dataSource: timeZoneDataSource\r\n        };\r\n        this.setEditorOptions(expression, \"Main\", options)\r\n    },\r\n    updateRecurrenceEditorStartDate: function(date, expression) {\r\n        var options = {\r\n            startDate: date\r\n        };\r\n        this.setEditorOptions(expression, \"Recurrence\", options)\r\n    },\r\n    setEditorOptions: function(name, groupName, options) {\r\n        var editorPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.groupName, \".\").concat(name);\r\n        var editor = this._appointmentForm.itemOption(editorPath);\r\n        editor && this._appointmentForm.itemOption(editorPath, \"editorOptions\", (0, _extend.extend)({}, editor.editorOptions, options))\r\n    },\r\n    updateFormData: function(appointmentForm, formData, dataExprs) {\r\n        appointmentForm._lockDateShiftFlag = true;\r\n        var startDate = new Date(formData[dataExprs.startDateExpr]);\r\n        var endDate = new Date(formData[dataExprs.endDateExpr]);\r\n        this.updateTimeZoneEditorDataSource(startDate, dataExprs.startDateTimeZoneExpr);\r\n        this.updateTimeZoneEditorDataSource(endDate, dataExprs.endDateTimeZoneExpr);\r\n        this.updateRecurrenceEditorStartDate(startDate, dataExprs.recurrenceRuleExpr);\r\n        appointmentForm.option(\"formData\", formData);\r\n        appointmentForm._lockDateShiftFlag = false\r\n    }\r\n};\r\nexports.AppointmentForm = SchedulerAppointmentForm;\r\n","/**\r\n * DevExtreme (ui/lookup.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _support = require(\"../core/utils/support\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _element = require(\"../core/element\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _utils = require(\"./widget/utils.ink_ripple\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _ui = _interopRequireDefault(require(\"./drop_down_editor/ui.drop_down_list\"));\r\nvar _themes = require(\"./themes\");\r\nvar _click = require(\"../events/click\");\r\nvar _popover = _interopRequireDefault(require(\"./popover\"));\r\nvar _text_box = _interopRequireDefault(require(\"./text_box\"));\r\nvar _child_default_template = require(\"../core/templates/child_default_template\");\r\nvar _translator = require(\"../animation/translator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _utils2 = require(\"./drop_down_editor/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar LOOKUP_CLASS = \"dx-lookup\";\r\nvar LOOKUP_SEARCH_CLASS = \"dx-lookup-search\";\r\nvar LOOKUP_SEARCH_WRAPPER_CLASS = \"dx-lookup-search-wrapper\";\r\nvar LOOKUP_FIELD_CLASS = \"dx-lookup-field\";\r\nvar LOOKUP_ARROW_CLASS = \"dx-lookup-arrow\";\r\nvar LOOKUP_FIELD_WRAPPER_CLASS = \"dx-lookup-field-wrapper\";\r\nvar LOOKUP_POPUP_CLASS = \"dx-lookup-popup\";\r\nvar LOOKUP_POPUP_WRAPPER_CLASS = \"dx-lookup-popup-wrapper\";\r\nvar LOOKUP_POPUP_SEARCH_CLASS = \"dx-lookup-popup-search\";\r\nvar LOOKUP_POPOVER_MODE = \"dx-lookup-popover-mode\";\r\nvar LOOKUP_EMPTY_CLASS = \"dx-lookup-empty\";\r\nvar LOOKUP_POPOVER_FLIP_VERTICAL_CLASS = \"dx-popover-flipped-vertical\";\r\nvar TEXTEDITOR_INPUT_CLASS = \"dx-texteditor-input\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_ITEM_SELECTED_CLASS = \"dx-list-item-selected\";\r\nvar GROUP_LIST_HEADER_CLASS = \"dx-list-group-header\";\r\nvar MATERIAL_LOOKUP_LIST_ITEMS_COUNT = 5;\r\nvar MATERIAL_LOOKUP_LIST_PADDING = 8;\r\nvar Lookup = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            space: function(e) {\r\n                e.preventDefault();\r\n                this._validatedOpening()\r\n            },\r\n            enter: function() {\r\n                this._validatedOpening()\r\n            }\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            placeholder: _message.default.format(\"Select\"),\r\n            searchPlaceholder: _message.default.format(\"Search\"),\r\n            searchEnabled: true,\r\n            cleanSearchOnOpening: true,\r\n            showCancelButton: true,\r\n            showClearButton: false,\r\n            clearButtonText: _message.default.format(\"Clear\"),\r\n            applyButtonText: _message.default.format(\"OK\"),\r\n            pullRefreshEnabled: false,\r\n            useNativeScrolling: true,\r\n            pullingDownText: _message.default.format(\"dxList-pullingDownText\"),\r\n            pulledDownText: _message.default.format(\"dxList-pulledDownText\"),\r\n            refreshingText: _message.default.format(\"dxList-refreshingText\"),\r\n            pageLoadingText: _message.default.format(\"dxList-pageLoadingText\"),\r\n            onScroll: null,\r\n            onPullRefresh: null,\r\n            onPageLoading: null,\r\n            pageLoadMode: \"scrollBottom\",\r\n            nextButtonText: _message.default.format(\"dxList-nextButtonText\"),\r\n            grouped: false,\r\n            groupTemplate: \"group\",\r\n            usePopover: false,\r\n            showDropDownButton: false,\r\n            focusStateEnabled: false,\r\n            animation: {},\r\n            dropDownOptions: {\r\n                showTitle: true,\r\n                width: function() {\r\n                    return .8 * (0, _renderer.default)(window).width()\r\n                },\r\n                height: function() {\r\n                    return .8 * (0, _renderer.default)(window).height()\r\n                },\r\n                shading: true,\r\n                closeOnOutsideClick: false,\r\n                position: void 0,\r\n                animation: {},\r\n                title: \"\",\r\n                titleTemplate: \"title\",\r\n                onTitleRendered: null,\r\n                fullScreen: false\r\n            },\r\n            dropDownCentered: false,\r\n            _scrollToSelectedItemEnabled: false,\r\n            useHiddenSubmitElement: true\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        var _this = this;\r\n        var themeName = (0, _themes.current)();\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return !_support.nativeScrolling\r\n            },\r\n            options: {\r\n                useNativeScrolling: false\r\n            }\r\n        }, {\r\n            device: function(_device) {\r\n                return !_devices.default.isSimulator() && \"desktop\" === _devices.default.real().deviceType && \"generic\" === _device.platform\r\n            },\r\n            options: {\r\n                usePopover: true,\r\n                dropDownOptions: {\r\n                    height: \"auto\"\r\n                }\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"ios\",\r\n                phone: true\r\n            },\r\n            options: {\r\n                dropDownOptions: {\r\n                    fullScreen: true\r\n                }\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"ios\",\r\n                tablet: true\r\n            },\r\n            options: {\r\n                dropDownOptions: {\r\n                    width: function() {\r\n                        return .4 * Math.min((0, _renderer.default)(window).width(), (0, _renderer.default)(window).height())\r\n                    },\r\n                    height: \"auto\"\r\n                },\r\n                usePopover: true,\r\n                useInkRipple: false\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)(themeName)\r\n            },\r\n            options: {\r\n                usePopover: false,\r\n                searchEnabled: false,\r\n                showCancelButton: false,\r\n                dropDownCentered: true,\r\n                _scrollToSelectedItemEnabled: true,\r\n                dropDownOptions: {\r\n                    closeOnOutsideClick: true,\r\n                    width: function() {\r\n                        return (0, _utils2.getElementWidth)(_this.$element())\r\n                    },\r\n                    height: function() {\r\n                        return this._getPopupHeight()\r\n                    }.bind(this),\r\n                    showTitle: false,\r\n                    shading: false\r\n                }\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initActions()\r\n    },\r\n    _initActions: function() {\r\n        this.callBase();\r\n        this._initScrollAction();\r\n        this._initPageLoadingAction();\r\n        this._initPullRefreshAction()\r\n    },\r\n    _initPageLoadingAction: function() {\r\n        this._pageLoadingAction = this._createActionByOption(\"onPageLoading\")\r\n    },\r\n    _initPullRefreshAction: function() {\r\n        this._pullRefreshAction = this._createActionByOption(\"onPullRefresh\")\r\n    },\r\n    _initScrollAction: function() {\r\n        this._scrollAction = this._createActionByOption(\"onScroll\")\r\n    },\r\n    _scrollHandler: function(e) {\r\n        this._scrollAction(e)\r\n    },\r\n    _pullRefreshHandler: function(e) {\r\n        this._pullRefreshAction(e)\r\n    },\r\n    _pageLoadingHandler: function(e) {\r\n        this._pageLoadingAction(e)\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            group: new _child_default_template.ChildDefaultTemplate(\"group\"),\r\n            title: new _child_default_template.ChildDefaultTemplate(\"title\")\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(LOOKUP_CLASS).toggleClass(LOOKUP_POPOVER_MODE, this.option(\"usePopover\"));\r\n        this.callBase()\r\n    },\r\n    _inputWrapper: function() {\r\n        return this.$element().find(\".\" + LOOKUP_FIELD_WRAPPER_CLASS)\r\n    },\r\n    _dataSourceOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            paginate: true\r\n        })\r\n    },\r\n    _fireContentReadyAction: _common.noop,\r\n    _popupWrapperClass: function() {\r\n        return \"\"\r\n    },\r\n    _renderInput: function() {\r\n        var _this2 = this;\r\n        var fieldClickAction = this._createAction(function() {\r\n            _this2._toggleOpenState()\r\n        });\r\n        this._$field = (0, _renderer.default)(\"<div>\").addClass(LOOKUP_FIELD_CLASS);\r\n        _events_engine.default.on(this._$field, (0, _index.addNamespace)(_click.name, this.NAME), function(e) {\r\n            fieldClickAction({\r\n                event: e\r\n            })\r\n        });\r\n        var $arrow = (0, _renderer.default)(\"<div>\").addClass(LOOKUP_ARROW_CLASS);\r\n        this._$fieldWrapper = (0, _renderer.default)(\"<div>\").addClass(LOOKUP_FIELD_WRAPPER_CLASS).append(this._$field).append($arrow).appendTo(this.$element());\r\n        this.option(\"useInkRipple\") && this._renderInkRipple()\r\n    },\r\n    _getInputContainer: function() {\r\n        return this._$fieldWrapper\r\n    },\r\n    _renderInkRipple: function() {\r\n        this._inkRipple = (0, _utils.render)()\r\n    },\r\n    _toggleOpenState: function() {\r\n        this.callBase();\r\n        if (!this.option(\"dropDownOptions.fullScreen\") && this.option(\"_scrollToSelectedItemEnabled\")) {\r\n            this._setPopupPosition()\r\n        }\r\n    },\r\n    _toggleActiveState: function($element, value, e) {\r\n        this.callBase.apply(this, arguments);\r\n        if (!this._inkRipple) {\r\n            return\r\n        }\r\n        var config = {\r\n            element: this._inputWrapper(),\r\n            event: e\r\n        };\r\n        if (value) {\r\n            this._inkRipple.showWave(config)\r\n        } else {\r\n            this._inkRipple.hideWave(config)\r\n        }\r\n    },\r\n    _renderField: function() {\r\n        var fieldTemplate = this._getTemplateByOption(\"fieldTemplate\");\r\n        if (fieldTemplate && this.option(\"fieldTemplate\")) {\r\n            this._renderFieldTemplate(fieldTemplate);\r\n            return\r\n        }\r\n        var displayValue = this.option(\"displayValue\");\r\n        this._updateField((0, _type.isDefined)(displayValue) && String(displayValue) || this.option(\"placeholder\"));\r\n        this.$element().toggleClass(LOOKUP_EMPTY_CLASS, !this.option(\"selectedItem\"))\r\n    },\r\n    _renderDisplayText: function(text) {\r\n        if (this._input().length) {\r\n            this.callBase(text)\r\n        } else {\r\n            this._updateField(text)\r\n        }\r\n    },\r\n    _updateField: function(text) {\r\n        this._$field.text(text)\r\n    },\r\n    _renderFieldTemplate: function(template) {\r\n        this._$field.empty();\r\n        var data = this._fieldRenderData();\r\n        template.render({\r\n            model: data,\r\n            container: (0, _element.getPublicElement)(this._$field)\r\n        })\r\n    },\r\n    _fieldRenderData: function() {\r\n        return this.option(\"selectedItem\")\r\n    },\r\n    _popupShowingHandler: function() {\r\n        this.callBase.apply(this, arguments);\r\n        if (this.option(\"cleanSearchOnOpening\")) {\r\n            if (this.option(\"searchEnabled\") && this._searchBox.option(\"value\")) {\r\n                this._searchBox.option(\"value\", \"\");\r\n                this._searchCanceled()\r\n            }\r\n            this._list && this._list.option(\"focusedElement\", null)\r\n        }\r\n        if (this.option(\"dropDownOptions.fullScreen\") && this.option(\"_scrollToSelectedItemEnabled\")) {\r\n            this._popup.option(\"position\").of = (0, _renderer.default)(window)\r\n        }\r\n    },\r\n    _scrollToSelectedItem: function() {\r\n        var selectedIndex = this._list.option(\"selectedIndex\");\r\n        var listItems = this._list.option(\"items\");\r\n        var itemsCount = listItems.length;\r\n        if (0 !== itemsCount) {\r\n            if (this._list.option(\"grouped\")) {\r\n                this._list.scrollToItem({\r\n                    group: itemsCount - 1,\r\n                    item: listItems[itemsCount - 1].items.length - 1\r\n                })\r\n            } else {\r\n                this._list.scrollToItem(itemsCount - 1)\r\n            }\r\n            this._list.scrollToItem(selectedIndex)\r\n        }\r\n    },\r\n    _getDifferenceOffsets: function(selectedListItem) {\r\n        return selectedListItem.offset().top - (0, _renderer.default)(this.element()).offset().top\r\n    },\r\n    _isCenteringEnabled: function(index, count) {\r\n        return 1 < index && index < count - 2\r\n    },\r\n    _getPopupOffset: function() {\r\n        var listItemsCount = this._listItemElements().length;\r\n        if (0 === listItemsCount) {\r\n            return\r\n        }\r\n        var selectedListItem = (0, _renderer.default)(this._list.element()).find(\".\" + LIST_ITEM_SELECTED_CLASS);\r\n        var selectedIndex = this._listItemElements().index(selectedListItem);\r\n        var differenceOfHeights = (selectedListItem.height() - (0, _renderer.default)(this.element()).height()) / 2;\r\n        var lookupOffset = (0, _renderer.default)(this._list.element()).offset().top;\r\n        var dropDownHeightOption = this.option(\"dropDownOptions.height\");\r\n        var popupHeight = \"function\" === typeof dropDownHeightOption ? dropDownHeightOption() : dropDownHeightOption;\r\n        var windowHeight = (0, _renderer.default)(window).height();\r\n        var offsetTop = 0;\r\n        if (selectedIndex !== -1) {\r\n            if (this._isCenteringEnabled(selectedIndex, listItemsCount)) {\r\n                this._scrollToSelectedItem();\r\n                var scrollOffsetTop = (popupHeight - selectedListItem.height()) / 2 - this._getDifferenceOffsets(selectedListItem);\r\n                this._list.scrollTo(this._list.scrollTop() + MATERIAL_LOOKUP_LIST_PADDING / 2 - scrollOffsetTop);\r\n                offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem);\r\n                if (lookupOffset < offsetTop && selectedIndex !== listItemsCount - 3) {\r\n                    this._list.scrollTo(this._list.scrollTop() + this._getDifferenceOffsets(selectedListItem) / 2);\r\n                    offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)\r\n                }\r\n            } else {\r\n                if (selectedIndex <= 1) {\r\n                    this._list.scrollTo(0);\r\n                    offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)\r\n                } else {\r\n                    if (selectedIndex >= listItemsCount - 2) {\r\n                        this._scrollToSelectedItem();\r\n                        offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)\r\n                    }\r\n                }\r\n            }\r\n            if (lookupOffset < offsetTop) {\r\n                this._scrollToSelectedItem();\r\n                offsetTop = differenceOfHeights + MATERIAL_LOOKUP_LIST_PADDING\r\n            }\r\n        }\r\n        var offsetBottom = popupHeight - offsetTop - (0, _renderer.default)(this.element()).height();\r\n        if (windowHeight - lookupOffset < offsetBottom) {\r\n            this._list.scrollTo(this._list.scrollTop() + differenceOfHeights - offsetBottom);\r\n            offsetTop = popupHeight - (0, _renderer.default)(this.element()).height() - MATERIAL_LOOKUP_LIST_PADDING\r\n        }\r\n        return offsetTop\r\n    },\r\n    _setPopupPosition: function() {\r\n        if (!this.option(\"dropDownCentered\")) {\r\n            return\r\n        }\r\n        var flipped = this._popup._$wrapper.hasClass(LOOKUP_POPOVER_FLIP_VERTICAL_CLASS);\r\n        if (flipped) {\r\n            return\r\n        }\r\n        var popupContentParent = (0, _renderer.default)(this._popup.content()).parent();\r\n        var popupOffset = this._getPopupOffset();\r\n        var position = (0, _translator.locate)(popupContentParent);\r\n        (0, _translator.move)(popupContentParent, {\r\n            top: position.top - popupOffset\r\n        })\r\n    },\r\n    _listItemGroupedElements: function() {\r\n        var groups = this._list._itemContainer().children();\r\n        var items = [];\r\n        groups.each(function(_, group) {\r\n            items.push((0, _renderer.default)(group).find(\".\" + GROUP_LIST_HEADER_CLASS)[0]);\r\n            var groupedItems = (0, _renderer.default)(group).find(\".\" + LIST_ITEM_CLASS);\r\n            groupedItems.each(function(_, item) {\r\n                items.push(item)\r\n            })\r\n        });\r\n        return (0, _renderer.default)(items)\r\n    },\r\n    _calculateListHeight: function(grouped) {\r\n        var listItems = grouped ? this._listItemGroupedElements() : this._listItemElements();\r\n        var selectedListItem = (0, _renderer.default)(\".\" + LIST_ITEM_SELECTED_CLASS);\r\n        var selectedIndex = listItems.index(selectedListItem);\r\n        var listHeight = 0;\r\n        var requireListItems = [];\r\n        if (0 === listItems.length) {\r\n            listHeight += MATERIAL_LOOKUP_LIST_PADDING\r\n        } else {\r\n            if (listItems.length < MATERIAL_LOOKUP_LIST_ITEMS_COUNT) {\r\n                listItems.each(function(_, item) {\r\n                    listHeight += (0, _renderer.default)(item).outerHeight()\r\n                })\r\n            } else {\r\n                if (selectedIndex <= 1) {\r\n                    requireListItems = listItems.slice(0, MATERIAL_LOOKUP_LIST_ITEMS_COUNT)\r\n                } else {\r\n                    if (this._isCenteringEnabled(selectedIndex, listItems.length)) {\r\n                        requireListItems = listItems.slice(selectedIndex - 2, selectedIndex + 3)\r\n                    } else {\r\n                        requireListItems = listItems.slice(listItems.length - MATERIAL_LOOKUP_LIST_ITEMS_COUNT, listItems.length)\r\n                    }\r\n                }\r\n                requireListItems.each(function(_, item) {\r\n                    listHeight += (0, _renderer.default)(item).outerHeight()\r\n                })\r\n            }\r\n        }\r\n        return listHeight + (grouped ? MATERIAL_LOOKUP_LIST_PADDING : 2 * MATERIAL_LOOKUP_LIST_PADDING)\r\n    },\r\n    _getPopupHeight: function() {\r\n        if (this._list && this._list.itemElements()) {\r\n            return this._calculateListHeight(this.option(\"grouped\")) + (this._$searchWrapper ? this._$searchWrapper.outerHeight() : 0) + (this._popup._$bottom ? this._popup._$bottom.outerHeight() : 0) + (this._popup._$title ? this._popup._$title.outerHeight() : 0)\r\n        } else {\r\n            return \"auto\"\r\n        }\r\n    },\r\n    _renderPopup: function() {\r\n        if (this.option(\"usePopover\") && !this.option(\"dropDownOptions.fullScreen\")) {\r\n            if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n                this.callBase()\r\n            } else {\r\n                this._renderPopover()\r\n            }\r\n        } else {\r\n            this.callBase()\r\n        }\r\n        this._$popup.addClass(LOOKUP_POPUP_CLASS);\r\n        this._popup._wrapper().addClass(LOOKUP_POPUP_WRAPPER_CLASS)\r\n    },\r\n    _renderPopover: function() {\r\n        this._popup = this._createComponent(this._$popup, _popover.default, (0, _extend.extend)(this._popupConfig(), this._options.cache(\"dropDownOptions\"), {\r\n            showEvent: null,\r\n            hideEvent: null,\r\n            target: this.$element(),\r\n            _fixedPosition: false,\r\n            fullScreen: false,\r\n            shading: false,\r\n            closeOnTargetScroll: true,\r\n            width: this._isInitialOptionValue(\"dropDownOptions.width\") ? function() {\r\n                return this.$element().outerWidth()\r\n            }.bind(this) : this._popupConfig().width\r\n        }));\r\n        this._popup.on({\r\n            showing: this._popupShowingHandler.bind(this),\r\n            shown: this._popupShownHandler.bind(this),\r\n            hiding: this._popupHidingHandler.bind(this),\r\n            hidden: this._popupHiddenHandler.bind(this),\r\n            contentReady: this._contentReadyHandler.bind(this)\r\n        });\r\n        if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n            this._popup._$arrow.remove()\r\n        }\r\n        this._setPopupContentId(this._popup.$content());\r\n        this._contentReadyHandler()\r\n    },\r\n    _popupHidingHandler: function() {\r\n        this.callBase();\r\n        this.option(\"focusStateEnabled\") && this.focus()\r\n    },\r\n    _popupHiddenHandler: function() {\r\n        this.callBase();\r\n        if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n            (0, _translator.resetPosition)((0, _renderer.default)(this._popup.content()).parent())\r\n        }\r\n    },\r\n    _preventFocusOnPopup: _common.noop,\r\n    _popupConfig: function() {\r\n        var _this3 = this;\r\n        var result = (0, _extend.extend)(this.callBase(), {\r\n            toolbarItems: this._getPopupToolbarItems(),\r\n            closeOnTargetScroll: false,\r\n            onPositioned: null,\r\n            maxHeight: function() {\r\n                return (0, _renderer.default)(window).height()\r\n            },\r\n            showTitle: this.option(\"dropDownOptions.showTitle\"),\r\n            title: this.option(\"dropDownOptions.title\"),\r\n            titleTemplate: this._getTemplateByOption(\"dropDownOptions.titleTemplate\"),\r\n            onTitleRendered: this.option(\"dropDownOptions.onTitleRendered\"),\r\n            fullScreen: this.option(\"dropDownOptions.fullScreen\"),\r\n            shading: this.option(\"dropDownOptions.shading\"),\r\n            closeOnOutsideClick: this.option(\"dropDownOptions.closeOnOutsideClick\")\r\n        });\r\n        delete result.animation;\r\n        delete result.position;\r\n        if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n            result.position = this.option(\"dropDownCentered\") ? {\r\n                my: \"left top\",\r\n                at: \"left top\",\r\n                of: this.element()\r\n            } : {\r\n                my: \"left top\",\r\n                at: \"left bottom\",\r\n                of: this.element()\r\n            }\r\n        }(0, _iterator.each)([\"position\", \"animation\", \"width\", \"height\"], function(_, optionName) {\r\n            var popupOptionValue = _this3.option(\"dropDownOptions.\".concat(optionName));\r\n            if (void 0 !== popupOptionValue) {\r\n                result[optionName] = popupOptionValue\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _getPopupToolbarItems: function() {\r\n        var buttonsConfig = \"useButtons\" === this.option(\"applyValueMode\") ? this._popupToolbarItemsConfig() : [];\r\n        var cancelButton = this._getCancelButtonConfig();\r\n        if (cancelButton) {\r\n            buttonsConfig.push(cancelButton)\r\n        }\r\n        var clearButton = this._getClearButtonConfig();\r\n        if (clearButton) {\r\n            buttonsConfig.push(clearButton)\r\n        }\r\n        return this._applyButtonsLocation(buttonsConfig)\r\n    },\r\n    _popupToolbarItemsConfig: function() {\r\n        return [{\r\n            shortcut: \"done\",\r\n            options: {\r\n                onClick: this._applyButtonHandler.bind(this),\r\n                text: this.option(\"applyButtonText\")\r\n            }\r\n        }]\r\n    },\r\n    _getCancelButtonConfig: function() {\r\n        var _this4 = this;\r\n        return this.option(\"showCancelButton\") ? {\r\n            shortcut: \"cancel\",\r\n            onClick: this._cancelButtonHandler.bind(this),\r\n            options: {\r\n                onInitialized: function(e) {\r\n                    e.component.registerKeyHandler(\"escape\", _this4.close.bind(_this4))\r\n                },\r\n                text: this.option(\"cancelButtonText\")\r\n            }\r\n        } : null\r\n    },\r\n    _getClearButtonConfig: function() {\r\n        return this.option(\"showClearButton\") ? {\r\n            shortcut: \"clear\",\r\n            onClick: this._resetValue.bind(this),\r\n            options: {\r\n                text: this.option(\"clearButtonText\")\r\n            }\r\n        } : null\r\n    },\r\n    _applyButtonHandler: function() {\r\n        this.option(\"value\", this._valueGetter(this._currentSelectedItem()));\r\n        this.callBase()\r\n    },\r\n    _cancelButtonHandler: function() {\r\n        this._refreshSelected();\r\n        this.callBase()\r\n    },\r\n    _refreshPopupVisibility: function() {\r\n        if (this.option(\"opened\")) {\r\n            this._updatePopupDimensions()\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        if (this.option(\"usePopover\") && !this.option(\"dropDownOptions.width\")) {\r\n            this.option(\"dropDownOptions.width\", this.$element().width())\r\n        }\r\n        this._popup && this._updatePopupDimensions()\r\n    },\r\n    _input: function() {\r\n        return this._$searchBox || this.callBase()\r\n    },\r\n    _renderPopupContent: function() {\r\n        this.callBase();\r\n        this._renderSearch()\r\n    },\r\n    _renderSearch: function() {\r\n        var _this5 = this;\r\n        var isSearchEnabled = this.option(\"searchEnabled\");\r\n        this._toggleSearchClass(isSearchEnabled);\r\n        if (isSearchEnabled) {\r\n            var $searchWrapper = this._$searchWrapper = (0, _renderer.default)(\"<div>\").addClass(LOOKUP_SEARCH_WRAPPER_CLASS);\r\n            var $searchBox = this._$searchBox = (0, _renderer.default)(\"<div>\").addClass(LOOKUP_SEARCH_CLASS).appendTo($searchWrapper);\r\n            var currentDevice = _devices.default.current();\r\n            var searchMode = currentDevice.android && currentDevice.version[0] >= 5 ? \"text\" : \"search\";\r\n            var isKeyboardListeningEnabled = false;\r\n            this._searchBox = this._createComponent($searchBox, _text_box.default, {\r\n                onDisposing: function() {\r\n                    return isKeyboardListeningEnabled = false\r\n                },\r\n                onFocusIn: function() {\r\n                    return isKeyboardListeningEnabled = true\r\n                },\r\n                onFocusOut: function() {\r\n                    return isKeyboardListeningEnabled = false\r\n                },\r\n                onKeyboardHandled: function(opts) {\r\n                    return isKeyboardListeningEnabled && _this5._list._keyboardHandler(opts)\r\n                },\r\n                mode: searchMode,\r\n                showClearButton: true,\r\n                valueChangeEvent: this.option(\"valueChangeEvent\"),\r\n                onValueChanged: this._searchHandler.bind(this)\r\n            });\r\n            this._registerSearchKeyHandlers();\r\n            $searchWrapper.insertBefore(this._$list);\r\n            this._setSearchPlaceholder()\r\n        }\r\n    },\r\n    _removeSearch: function() {\r\n        this._$searchWrapper && this._$searchWrapper.remove();\r\n        delete this._$searchWrapper;\r\n        this._$searchBox && this._$searchBox.remove();\r\n        delete this._$searchBox;\r\n        delete this._searchBox\r\n    },\r\n    _selectListItemHandler: function(e) {\r\n        var $itemElement = (0, _renderer.default)(this._list.option(\"focusedElement\"));\r\n        if (!$itemElement.length) {\r\n            return\r\n        }\r\n        e.preventDefault();\r\n        this._saveValueChangeEvent(e);\r\n        this._selectListItem(e.itemData, $itemElement)\r\n    },\r\n    _registerSearchKeyHandlers: function() {\r\n        this._searchBox.registerKeyHandler(\"escape\", this.close.bind(this));\r\n        this._searchBox.registerKeyHandler(\"enter\", this._selectListItemHandler.bind(this));\r\n        this._searchBox.registerKeyHandler(\"space\", this._selectListItemHandler.bind(this));\r\n        this._searchBox.registerKeyHandler(\"end\", _common.noop);\r\n        this._searchBox.registerKeyHandler(\"home\", _common.noop)\r\n    },\r\n    _toggleSearchClass: function(isSearchEnabled) {\r\n        if (this._popup) {\r\n            this._popup._wrapper().toggleClass(LOOKUP_POPUP_SEARCH_CLASS, isSearchEnabled)\r\n        }\r\n    },\r\n    _setSearchPlaceholder: function() {\r\n        if (!this._$searchBox) {\r\n            return\r\n        }\r\n        var minSearchLength = this.option(\"minSearchLength\");\r\n        var placeholder = this.option(\"searchPlaceholder\");\r\n        if (minSearchLength && placeholder === _message.default.format(\"Search\")) {\r\n            placeholder = _message.default.getFormatter(\"dxLookup-searchPlaceholder\")(minSearchLength)\r\n        }\r\n        this._searchBox.option(\"placeholder\", placeholder)\r\n    },\r\n    _setAriaTargetForList: _common.noop,\r\n    _renderList: function() {\r\n        var _this6 = this;\r\n        this.callBase();\r\n        this._list.registerKeyHandler(\"escape\", function() {\r\n            _this6.close()\r\n        })\r\n    },\r\n    _listConfig: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            tabIndex: 0,\r\n            grouped: this.option(\"grouped\"),\r\n            groupTemplate: this._getTemplateByOption(\"groupTemplate\"),\r\n            pullRefreshEnabled: this.option(\"pullRefreshEnabled\"),\r\n            useNativeScrolling: this.option(\"useNativeScrolling\"),\r\n            pullingDownText: this.option(\"pullingDownText\"),\r\n            pulledDownText: this.option(\"pulledDownText\"),\r\n            refreshingText: this.option(\"refreshingText\"),\r\n            pageLoadingText: this.option(\"pageLoadingText\"),\r\n            onScroll: this._scrollHandler.bind(this),\r\n            onPullRefresh: this._pullRefreshHandler.bind(this),\r\n            onPageLoading: this._pageLoadingHandler.bind(this),\r\n            pageLoadMode: this.option(\"pageLoadMode\"),\r\n            nextButtonText: this.option(\"nextButtonText\"),\r\n            indicateLoading: this.option(\"searchEnabled\"),\r\n            onSelectionChanged: this._getSelectionChangedHandler()\r\n        })\r\n    },\r\n    _getSelectionChangedHandler: function() {\r\n        return this.option(\"showSelectionControls\") ? this._selectionChangeHandler.bind(this) : _common.noop\r\n    },\r\n    _listContentReadyHandler: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._refreshSelected()\r\n    },\r\n    _setFocusPolicy: function() {\r\n        if (!this.option(\"focusStateEnabled\")) {\r\n            return\r\n        }\r\n        if (this.option(\"searchEnabled\")) {\r\n            this._searchBox.focus()\r\n        } else {\r\n            _events_engine.default.trigger(this._$list, \"focus\")\r\n        }\r\n    },\r\n    _focusTarget: function() {\r\n        return this._$field\r\n    },\r\n    _keyboardEventBindingTarget: function() {\r\n        return this._$field\r\n    },\r\n    _listItemClickHandler: function(e) {\r\n        this._saveValueChangeEvent(e.event);\r\n        this._selectListItem(e.itemData, e.event.currentTarget)\r\n    },\r\n    _selectListItem: function(itemData, target) {\r\n        this._list.selectItem(target);\r\n        if (\"instantly\" === this.option(\"applyValueMode\")) {\r\n            this._applyButtonHandler()\r\n        }\r\n    },\r\n    _currentSelectedItem: function() {\r\n        return this.option(\"grouped\") ? this._list.option(\"selectedItems[0]\").items[0] : this._list.option(\"selectedItems[0]\")\r\n    },\r\n    _resetValue: function(e) {\r\n        this._saveValueChangeEvent(e.event);\r\n        this.option(\"value\", null);\r\n        this.option(\"opened\", false)\r\n    },\r\n    _searchValue: function() {\r\n        return this.option(\"searchEnabled\") && this._searchBox ? this._searchBox.option(\"value\") : \"\"\r\n    },\r\n    _renderInputValue: function() {\r\n        var _this7 = this;\r\n        return this.callBase().always(function() {\r\n            _this7._refreshSelected()\r\n        })\r\n    },\r\n    _renderPlaceholder: function() {\r\n        if (0 === this.$element().find(\".\" + TEXTEDITOR_INPUT_CLASS).length) {\r\n            return\r\n        }\r\n        this.callBase()\r\n    },\r\n    _clean: function() {\r\n        this._$fieldWrapper.remove();\r\n        this._$searchBox = null;\r\n        delete this._inkRipple;\r\n        this.callBase()\r\n    },\r\n    _setDeprecatedOptions: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._deprecatedOptions, {\r\n            title: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.title\"\r\n            },\r\n            titleTemplate: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.titleTemplate\"\r\n            },\r\n            onTitleRendered: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.onTitleRendered\"\r\n            },\r\n            fullScreen: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.fullScreen\"\r\n            },\r\n            popupWidth: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.width\"\r\n            },\r\n            popupHeight: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.height\"\r\n            },\r\n            shading: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.shading\"\r\n            },\r\n            closeOnOutsideClick: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.closeOnOutsideClick\"\r\n            },\r\n            position: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.position\"\r\n            },\r\n            animation: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.animation\"\r\n            }\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name;\r\n        var value = args.value;\r\n        switch (name) {\r\n            case \"dataSource\":\r\n                this.callBase.apply(this, arguments);\r\n                this._renderField();\r\n                break;\r\n            case \"searchEnabled\":\r\n                if (this._popup) {\r\n                    this._removeSearch();\r\n                    this._renderSearch()\r\n                }\r\n                break;\r\n            case \"searchPlaceholder\":\r\n                this._setSearchPlaceholder();\r\n                break;\r\n            case \"minSearchLength\":\r\n                this._setSearchPlaceholder();\r\n                this.callBase.apply(this, arguments);\r\n                break;\r\n            case \"title\":\r\n            case \"titleTemplate\":\r\n            case \"onTitleRendered\":\r\n            case \"shading\":\r\n            case \"animation\":\r\n            case \"position\":\r\n            case \"closeOnOutsideClick\":\r\n            case \"fullScreen\":\r\n                this._setPopupOption(name, value);\r\n                break;\r\n            case \"usePopover\":\r\n            case \"placeholder\":\r\n                this._invalidate();\r\n                break;\r\n            case \"clearButtonText\":\r\n            case \"showClearButton\":\r\n            case \"showCancelButton\":\r\n                this._setPopupOption(\"toolbarItems\", this._getPopupToolbarItems());\r\n                break;\r\n            case \"applyValueMode\":\r\n                this.callBase.apply(this, arguments);\r\n                break;\r\n            case \"popupWidth\":\r\n                this._setPopupOption(\"width\", \"auto\" === value ? this.initialOption(\"dropDownOptions\").width : value);\r\n                break;\r\n            case \"popupHeight\":\r\n                this._setPopupOption(\"height\", \"auto\" === value ? this.initialOption(\"dropDownOptions\").height : value);\r\n                break;\r\n            case \"onPageLoading\":\r\n                this._initPageLoadingAction();\r\n                break;\r\n            case \"onPullRefresh\":\r\n                this._initPullRefreshAction();\r\n                break;\r\n            case \"pullRefreshEnabled\":\r\n            case \"useNativeScrolling\":\r\n            case \"pullingDownText\":\r\n            case \"pulledDownText\":\r\n            case \"refreshingText\":\r\n            case \"pageLoadingText\":\r\n            case \"nextButtonText\":\r\n            case \"grouped\":\r\n            case \"groupTemplate\":\r\n                this._setListOption(name);\r\n                break;\r\n            case \"onScroll\":\r\n                this._initScrollAction();\r\n                break;\r\n            case \"pageLoadMode\":\r\n                this._setListOption(\"pageLoadMode\", this.option(\"pageLoadMode\"));\r\n                break;\r\n            case \"cleanSearchOnOpening\":\r\n            case \"_scrollToSelectedItemEnabled\":\r\n                break;\r\n            case \"dropDownCentered\":\r\n                if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n                    this.option(\"dropDownOptions.position\", void 0);\r\n                    this._renderPopup()\r\n                }\r\n                break;\r\n            default:\r\n                this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    focus: function() {\r\n        this.option(\"opened\") ? this._setFocusPolicy() : _events_engine.default.trigger(this._focusTarget(), \"focus\")\r\n    },\r\n    field: function() {\r\n        return this._$field\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxLookup\", Lookup);\r\nvar _default = Lookup;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/axes/constant_line.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = createConstantLine;\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction createConstantLine(axis, options) {\r\n    var labelOptions = options.label || {};\r\n    var labelPosition = labelOptions.position || \"inside\";\r\n    var parsedValue;\r\n    var valueIsParsed = false;\r\n    var lastStoredCoordinates;\r\n    axis._checkAlignmentConstantLineLabels(labelOptions);\r\n    var storedCoord;\r\n    return {\r\n        options: options,\r\n        labelOptions: labelOptions,\r\n        labelPosition: labelPosition,\r\n        label: null,\r\n        line: null,\r\n        getParsedValue: function() {\r\n            if (!valueIsParsed) {\r\n                parsedValue = axis.validateUnit(options.value, \"E2105\", \"constantLine\");\r\n                valueIsParsed = true;\r\n                return parsedValue\r\n            }\r\n            return parsedValue\r\n        },\r\n        draw: function() {\r\n            if (!(0, _type.isDefined)(options.value) || axis._translator.getBusinessRange().isEmpty()) {\r\n                return this\r\n            }\r\n            var canvas = axis._getCanvasStartEnd();\r\n            var parsedValue = this.getParsedValue();\r\n            this.coord = axis._getConstantLinePos(parsedValue, canvas.start, canvas.end);\r\n            var rootGroup = options.displayBehindSeries ? axis._axisConstantLineGroups.under : axis._axisConstantLineGroups.above;\r\n            var group = rootGroup[labelPosition];\r\n            if (!group) {\r\n                var side = axis._isHorizontal ? labelOptions.verticalAlignment : labelOptions.horizontalAlignment;\r\n                group = rootGroup[side]\r\n            }\r\n            if (!(0, _type.isDefined)(this.coord)) {\r\n                return this\r\n            }\r\n            var path = axis._createConstantLine(this.coord, {\r\n                stroke: options.color,\r\n                \"stroke-width\": options.width,\r\n                dashStyle: options.dashStyle\r\n            });\r\n            this.line = path.append(rootGroup.inside);\r\n            this.label = labelOptions.visible ? axis._drawConstantLineLabels(parsedValue, labelOptions, this.coord, group) : null;\r\n            this.updatePosition();\r\n            return this\r\n        },\r\n        getContentContainer: function() {\r\n            return this.label\r\n        },\r\n        removeLabel: function() {\r\n            this.label && this.label.remove()\r\n        },\r\n        updatePosition: function(animate) {\r\n            var canvas = axis._getCanvasStartEnd();\r\n            var coord = axis._getConstantLinePos(this.getParsedValue(), canvas.start, canvas.end);\r\n            if (!(0, _type.isDefined)(coord)) {\r\n                return\r\n            }\r\n            this.coord = coord;\r\n            if (animate && storedCoord) {\r\n                this.label && this.label.attr(axis._getConstantLineLabelsCoords(storedCoord, this.labelOptions));\r\n                this.line && this.line.attr(axis._getConstantLineGraphicAttributes(storedCoord));\r\n                this.label && this.label.animate(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));\r\n                this.line && this.line.animate(axis._getConstantLineGraphicAttributes(this.coord))\r\n            } else {\r\n                this.label && this.label.attr(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));\r\n                this.line && this.line.attr(axis._getConstantLineGraphicAttributes(this.coord));\r\n                axis._rotateConstantLine(this.line, this.coord)\r\n            }\r\n        },\r\n        saveCoords: function() {\r\n            lastStoredCoordinates = storedCoord;\r\n            storedCoord = this.coord\r\n        },\r\n        resetCoordinates: function() {\r\n            storedCoord = lastStoredCoordinates\r\n        }\r\n    }\r\n}\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/formats/variable.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar Variable = {};\r\nif (_devextremeQuill.default) {\r\n    var Embed = _devextremeQuill.default.import(\"blots/embed\");\r\n    var VARIABLE_CLASS = \"dx-variable\";\r\n    Variable = function(_Embed) {\r\n        _inherits(Variable, _Embed);\r\n        var _super = _createSuper(Variable);\r\n\r\n        function Variable() {\r\n            _classCallCheck(this, Variable);\r\n            return _super.apply(this, arguments)\r\n        }\r\n        _createClass(Variable, null, [{\r\n            key: \"create\",\r\n            value: function(data) {\r\n                var node = _get(_getPrototypeOf(Variable), \"create\", this).call(this);\r\n                var startEscapeChar;\r\n                var endEscapeChar;\r\n                var text = data.value;\r\n                if (Array.isArray(data.escapeChar)) {\r\n                    startEscapeChar = (0, _common.ensureDefined)(data.escapeChar[0], \"\");\r\n                    endEscapeChar = (0, _common.ensureDefined)(data.escapeChar[1], \"\")\r\n                } else {\r\n                    startEscapeChar = endEscapeChar = data.escapeChar\r\n                }\r\n                node.innerText = startEscapeChar + text + endEscapeChar;\r\n                node.dataset.varStartEscChar = startEscapeChar;\r\n                node.dataset.varEndEscChar = endEscapeChar;\r\n                node.dataset.varValue = data.value;\r\n                return node\r\n            }\r\n        }, {\r\n            key: \"value\",\r\n            value: function(node) {\r\n                return (0, _extend.extend)({}, {\r\n                    value: node.dataset.varValue,\r\n                    escapeChar: [node.dataset.varStartEscChar || \"\", node.dataset.varEndEscChar || \"\"]\r\n                })\r\n            }\r\n        }]);\r\n        return Variable\r\n    }(Embed);\r\n    Variable.blotName = \"variable\";\r\n    Variable.tagName = \"span\";\r\n    Variable.className = VARIABLE_CLASS\r\n}\r\nvar _default = Variable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/projection.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"projection\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _projection.projection\r\n    }\r\n});\r\nvar _projection = require(\"./projection.main\");\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _sin = Math.sin;\r\nvar _asin = Math.asin;\r\nvar _tan = Math.tan;\r\nvar _atan = Math.atan;\r\nvar _exp = Math.exp;\r\nvar _log = Math.log;\r\nvar PI = Math.PI;\r\nvar PI_DIV_4 = PI / 4;\r\nvar GEO_LON_BOUND = 180;\r\nvar GEO_LAT_BOUND = 90;\r\nvar RADIANS = PI / 180;\r\nvar MERCATOR_LAT_BOUND = (2 * _atan(_exp(PI)) - PI / 2) / RADIANS;\r\nvar MILLER_LAT_BOUND = (2.5 * _atan(_exp(.8 * PI)) - .625 * PI) / RADIANS;\r\n\r\nfunction clamp(value, threshold) {\r\n    return _max(_min(value, +threshold), -threshold)\r\n}\r\n_projection.projection.add(\"mercator\", (0, _projection.projection)({\r\n    aspectRatio: 1,\r\n    to: function(coordinates) {\r\n        return [coordinates[0] / GEO_LON_BOUND, _log(_tan(PI_DIV_4 + clamp(coordinates[1], MERCATOR_LAT_BOUND) * RADIANS / 2)) / PI]\r\n    },\r\n    from: function(coordinates) {\r\n        return [coordinates[0] * GEO_LON_BOUND, (2 * _atan(_exp(coordinates[1] * PI)) - PI / 2) / RADIANS]\r\n    }\r\n}));\r\n_projection.projection.add(\"equirectangular\", (0, _projection.projection)({\r\n    aspectRatio: 2,\r\n    to: function(coordinates) {\r\n        return [coordinates[0] / GEO_LON_BOUND, coordinates[1] / GEO_LAT_BOUND]\r\n    },\r\n    from: function(coordinates) {\r\n        return [coordinates[0] * GEO_LON_BOUND, coordinates[1] * GEO_LAT_BOUND]\r\n    }\r\n}));\r\n_projection.projection.add(\"lambert\", (0, _projection.projection)({\r\n    aspectRatio: 2,\r\n    to: function(coordinates) {\r\n        return [coordinates[0] / GEO_LON_BOUND, _sin(clamp(coordinates[1], GEO_LAT_BOUND) * RADIANS)]\r\n    },\r\n    from: function(coordinates) {\r\n        return [coordinates[0] * GEO_LON_BOUND, _asin(clamp(coordinates[1], 1)) / RADIANS]\r\n    }\r\n}));\r\n_projection.projection.add(\"miller\", (0, _projection.projection)({\r\n    aspectRatio: 1,\r\n    to: function(coordinates) {\r\n        return [coordinates[0] / GEO_LON_BOUND, 1.25 * _log(_tan(PI_DIV_4 + clamp(coordinates[1], MILLER_LAT_BOUND) * RADIANS * .4)) / PI]\r\n    },\r\n    from: function(coordinates) {\r\n        return [coordinates[0] * GEO_LON_BOUND, (2.5 * _atan(_exp(.8 * coordinates[1] * PI)) - .625 * PI) / RADIANS]\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/data_grid/aggregate_calculator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _errors = _interopRequireDefault(require(\"../../data/errors\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction depthFirstSearch(i, depth, root, callback) {\r\n    var j = 0;\r\n    if (i < depth) {\r\n        for (; j < root.items.length; j++) {\r\n            depthFirstSearch(i + 1, depth, root.items[j], callback)\r\n        }\r\n    }\r\n    if (i === depth) {\r\n        callback(root)\r\n    }\r\n}\r\n\r\nfunction map(array, callback) {\r\n    var i;\r\n    if (\"map\" in array) {\r\n        return array.map(callback)\r\n    }\r\n    var result = new Array(array.length);\r\n    for (i in array) {\r\n        result[i] = callback(array[i], i)\r\n    }\r\n    return result\r\n}\r\n\r\nfunction isEmpty(x) {\r\n    return x !== x || \"\" === x || null === x || void 0 === x\r\n}\r\n\r\nfunction isCount(aggregator) {\r\n    return aggregator === _utils.default.aggregators.count\r\n}\r\n\r\nfunction normalizeAggregate(aggregate) {\r\n    var selector = (0, _data.compileGetter)(aggregate.selector);\r\n    var skipEmptyValues = \"skipEmptyValues\" in aggregate ? aggregate.skipEmptyValues : true;\r\n    var aggregator = aggregate.aggregator;\r\n    if (\"string\" === typeof aggregator) {\r\n        aggregator = _utils.default.aggregators[aggregator];\r\n        if (!aggregator) {\r\n            throw _errors.default.errors.Error(\"E4001\", aggregate.aggregator)\r\n        }\r\n    }\r\n    return {\r\n        selector: selector,\r\n        aggregator: aggregator,\r\n        skipEmptyValues: skipEmptyValues\r\n    }\r\n}\r\nvar _default = _class.default.inherit({\r\n    ctor: function(options) {\r\n        this._data = options.data;\r\n        this._groupLevel = options.groupLevel || 0;\r\n        this._totalAggregates = map(options.totalAggregates || [], normalizeAggregate);\r\n        this._groupAggregates = map(options.groupAggregates || [], normalizeAggregate);\r\n        this._totals = []\r\n    },\r\n    calculate: function() {\r\n        if (this._totalAggregates.length) {\r\n            this._calculateTotals(0, {\r\n                items: this._data\r\n            })\r\n        }\r\n        if (this._groupAggregates.length && this._groupLevel > 0) {\r\n            this._calculateGroups({\r\n                items: this._data\r\n            })\r\n        }\r\n    },\r\n    totalAggregates: function() {\r\n        return this._totals\r\n    },\r\n    _aggregate: function(aggregates, data, container) {\r\n        var length = data.items ? data.items.length : 0;\r\n        for (var i = 0; i < aggregates.length; i++) {\r\n            if (isCount(aggregates[i].aggregator)) {\r\n                container[i] = (container[i] || 0) + length;\r\n                continue\r\n            }\r\n            for (var j = 0; j < length; j++) {\r\n                this._accumulate(i, aggregates[i], container, data.items[j])\r\n            }\r\n        }\r\n    },\r\n    _calculateTotals: function(level, data) {\r\n        if (0 === level) {\r\n            this._totals = this._seed(this._totalAggregates)\r\n        }\r\n        if (level === this._groupLevel) {\r\n            this._aggregate(this._totalAggregates, data, this._totals)\r\n        } else {\r\n            for (var i = 0; i < data.items.length; i++) {\r\n                this._calculateTotals(level + 1, data.items[i])\r\n            }\r\n        }\r\n        if (0 === level) {\r\n            this._totals = this._finalize(this._totalAggregates, this._totals)\r\n        }\r\n    },\r\n    _calculateGroups: function(root) {\r\n        var maxLevel = this._groupLevel;\r\n        var currentLevel = maxLevel + 1;\r\n        var seedFn = this._seed.bind(this, this._groupAggregates);\r\n        var stepFn = this._aggregate.bind(this, this._groupAggregates);\r\n        var finalizeFn = this._finalize.bind(this, this._groupAggregates);\r\n\r\n        function aggregator(node) {\r\n            node.aggregates = seedFn(currentLevel - 1);\r\n            if (currentLevel === maxLevel) {\r\n                stepFn(node, node.aggregates)\r\n            } else {\r\n                depthFirstSearch(currentLevel, maxLevel, node, function(innerNode) {\r\n                    stepFn(innerNode, node.aggregates)\r\n                })\r\n            }\r\n            node.aggregates = finalizeFn(node.aggregates)\r\n        }\r\n        while (--currentLevel > 0) {\r\n            depthFirstSearch(0, currentLevel, root, aggregator)\r\n        }\r\n    },\r\n    _seed: function(aggregates, groupIndex) {\r\n        return map(aggregates, function(aggregate) {\r\n            var aggregator = aggregate.aggregator;\r\n            var seed = \"seed\" in aggregator ? (0, _type.isFunction)(aggregator.seed) ? aggregator.seed(groupIndex) : aggregator.seed : NaN;\r\n            return seed\r\n        })\r\n    },\r\n    _accumulate: function(aggregateIndex, aggregate, results, item) {\r\n        var value = aggregate.selector(item);\r\n        var aggregator = aggregate.aggregator;\r\n        var skipEmptyValues = aggregate.skipEmptyValues;\r\n        if (skipEmptyValues && isEmpty(value)) {\r\n            return\r\n        }\r\n        if (results[aggregateIndex] !== results[aggregateIndex]) {\r\n            results[aggregateIndex] = value\r\n        } else {\r\n            results[aggregateIndex] = aggregator.step(results[aggregateIndex], value)\r\n        }\r\n    },\r\n    _finalize: function(aggregates, results) {\r\n        return map(aggregates, function(aggregate, index) {\r\n            var fin = aggregate.aggregator.finalize;\r\n            return fin ? fin(results[index]) : results[index]\r\n        })\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/color_box/color_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _number_box = _interopRequireDefault(require(\"../number_box\"));\r\nvar _text_box = _interopRequireDefault(require(\"../text_box\"));\r\nvar _draggable = _interopRequireDefault(require(\"../draggable\"));\r\nvar _click = require(\"../../events/click\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COLOR_VIEW_CLASS = \"dx-colorview\";\r\nvar COLOR_VIEW_CONTAINER_CLASS = \"dx-colorview-container\";\r\nvar COLOR_VIEW_ROW_CLASS = \"dx-colorview-container-row\";\r\nvar COLOR_VIEW_CELL_CLASS = \"dx-colorview-container-cell\";\r\nvar COLOR_VIEW_PALETTE_CLASS = \"dx-colorview-palette\";\r\nvar COLOR_VIEW_PALETTE_CELL_CLASS = \"dx-colorview-palette-cell\";\r\nvar COLOR_VIEW_PALETTE_HANDLE_CLASS = \"dx-colorview-palette-handle\";\r\nvar COLOR_VIEW_PALETTE_GRADIENT_CLASS = \"dx-colorview-palette-gradient\";\r\nvar COLOR_VIEW_PALETTE_GRADIENT_WHITE_CLASS = \"dx-colorview-palette-gradient-white\";\r\nvar COLOR_VIEW_PALETTE_GRADIENT_BLACK_CLASS = \"dx-colorview-palette-gradient-black\";\r\nvar COLOR_VIEW_HUE_SCALE_CLASS = \"dx-colorview-hue-scale\";\r\nvar COLOR_VIEW_HUE_SCALE_CELL_CLASS = \"dx-colorview-hue-scale-cell\";\r\nvar COLOR_VIEW_HUE_SCALE_HANDLE_CLASS = \"dx-colorview-hue-scale-handle\";\r\nvar COLOR_VIEW_HUE_SCALE_WRAPPER_CLASS = \"dx-colorview-hue-scale-wrapper\";\r\nvar COLOR_VIEW_CONTROLS_CONTAINER_CLASS = \"dx-colorview-controls-container\";\r\nvar COLOR_VIEW_RED_LABEL_CLASS = \"dx-colorview-label-red\";\r\nvar COLOR_VIEW_GREEN_LABEL_CLASS = \"dx-colorview-label-green\";\r\nvar COLOR_VIEW_BLUE_LABEL_CLASS = \"dx-colorview-label-blue\";\r\nvar COLOR_VIEW_HEX_LABEL_CLASS = \"dx-colorview-label-hex\";\r\nvar COLOR_VIEW_ALPHA_CHANNEL_SCALE_CLASS = \"dx-colorview-alpha-channel-scale\";\r\nvar COLOR_VIEW_APLHA_CHANNEL_ROW_CLASS = \"dx-colorview-alpha-channel-row\";\r\nvar COLOR_VIEW_ALPHA_CHANNEL_SCALE_WRAPPER_CLASS = \"dx-colorview-alpha-channel-wrapper\";\r\nvar COLOR_VIEW_ALPHA_CHANNEL_LABEL_CLASS = \"dx-colorview-alpha-channel-label\";\r\nvar COLOR_VIEW_ALPHA_CHANNEL_HANDLE_CLASS = \"dx-colorview-alpha-channel-handle\";\r\nvar COLOR_VIEW_ALPHA_CHANNEL_CELL_CLASS = \"dx-colorview-alpha-channel-cell\";\r\nvar COLOR_VIEW_ALPHA_CHANNEL_BORDER_CLASS = \"dx-colorview-alpha-channel-border\";\r\nvar COLOR_VIEW_COLOR_PREVIEW = \"dx-colorview-color-preview\";\r\nvar COLOR_VIEW_COLOR_PREVIEW_CONTAINER_CLASS = \"dx-colorview-color-preview-container\";\r\nvar COLOR_VIEW_COLOR_PREVIEW_CONTAINER_INNER_CLASS = \"dx-colorview-color-preview-container-inner\";\r\nvar COLOR_VIEW_COLOR_PREVIEW_COLOR_CURRENT = \"dx-colorview-color-preview-color-current\";\r\nvar COLOR_VIEW_COLOR_PREVIEW_COLOR_NEW = \"dx-colorview-color-preview-color-new\";\r\nvar ColorView = _editor.default.inherit({\r\n    _supportedKeys: function() {\r\n        var isRTL = this.option(\"rtlEnabled\");\r\n        var that = this;\r\n        var getHorizontalPaletteStep = function(e) {\r\n            var step = 100 / that._paletteWidth;\r\n            if (e.shiftKey) {\r\n                step *= that.option(\"keyStep\")\r\n            }\r\n            step = step > 1 ? step : 1;\r\n            return Math.round(step)\r\n        };\r\n        var updateHorizontalPaletteValue = function(step) {\r\n            var value = that._currentColor.hsv.s + step;\r\n            if (value > 100) {\r\n                value = 100\r\n            } else {\r\n                if (value < 0) {\r\n                    value = 0\r\n                }\r\n            }\r\n            that._currentColor.hsv.s = value;\r\n            updatePaletteValue()\r\n        };\r\n        var getVerticalPaletteStep = function(e) {\r\n            var step = 100 / that._paletteHeight;\r\n            if (e.shiftKey) {\r\n                step *= that.option(\"keyStep\")\r\n            }\r\n            step = step > 1 ? step : 1;\r\n            return Math.round(step)\r\n        };\r\n        var updateVerticalPaletteValue = function(step) {\r\n            var value = that._currentColor.hsv.v + step;\r\n            if (value > 100) {\r\n                value = 100\r\n            } else {\r\n                if (value < 0) {\r\n                    value = 0\r\n                }\r\n            }\r\n            that._currentColor.hsv.v = value;\r\n            updatePaletteValue()\r\n        };\r\n\r\n        function updatePaletteValue() {\r\n            that._placePaletteHandle();\r\n            that._updateColorFromHsv(that._currentColor.hsv.h, that._currentColor.hsv.s, that._currentColor.hsv.v)\r\n        }\r\n        var getHueScaleStep = function(e) {\r\n            var step = 360 / (that._hueScaleWrapperHeight - that._hueScaleHandleHeight);\r\n            if (e.shiftKey) {\r\n                step *= that.option(\"keyStep\")\r\n            }\r\n            step = step > 1 ? step : 1;\r\n            return step\r\n        };\r\n        var updateHueScaleValue = function(step) {\r\n            that._currentColor.hsv.h += step;\r\n            that._placeHueScaleHandle();\r\n            var handleLocation = (0, _translator.locate)(that._$hueScaleHandle);\r\n            that._updateColorHue(handleLocation.top + that._hueScaleHandleHeight / 2)\r\n        };\r\n        var getAlphaScaleStep = function(e) {\r\n            var step = 1 / that._alphaChannelScaleWorkWidth;\r\n            if (e.shiftKey) {\r\n                step *= that.option(\"keyStep\")\r\n            }\r\n            step = step > .01 ? step : .01;\r\n            step = isRTL ? -step : step;\r\n            return step\r\n        };\r\n        var updateAlphaScaleValue = function(step) {\r\n            that._currentColor.a += step;\r\n            that._placeAlphaChannelHandle();\r\n            var handleLocation = (0, _translator.locate)(that._$alphaChannelHandle);\r\n            that._calculateColorTransparencyByScaleWidth(handleLocation.left + that._alphaChannelHandleWidth / 2)\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            upArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (e.ctrlKey) {\r\n                    if (this._currentColor.hsv.h <= 360 && !this._isTopColorHue) {\r\n                        updateHueScaleValue(getHueScaleStep(e))\r\n                    }\r\n                } else {\r\n                    if (this._currentColor.hsv.v < 100) {\r\n                        updateVerticalPaletteValue(getVerticalPaletteStep(e))\r\n                    }\r\n                }\r\n            },\r\n            downArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (e.ctrlKey) {\r\n                    if (this._currentColor.hsv.h >= 0) {\r\n                        if (this._isTopColorHue) {\r\n                            this._currentColor.hsv.h = 360\r\n                        }\r\n                        updateHueScaleValue(-getHueScaleStep(e))\r\n                    }\r\n                } else {\r\n                    if (this._currentColor.hsv.v > 0) {\r\n                        updateVerticalPaletteValue(-getVerticalPaletteStep(e))\r\n                    }\r\n                }\r\n            },\r\n            rightArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (e.ctrlKey) {\r\n                    if (isRTL ? this._currentColor.a < 1 : this._currentColor.a > 0 && this.option(\"editAlphaChannel\")) {\r\n                        updateAlphaScaleValue(-getAlphaScaleStep(e))\r\n                    }\r\n                } else {\r\n                    if (this._currentColor.hsv.s < 100) {\r\n                        updateHorizontalPaletteValue(getHorizontalPaletteStep(e))\r\n                    }\r\n                }\r\n            },\r\n            leftArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (e.ctrlKey) {\r\n                    if (isRTL ? this._currentColor.a > 0 : this._currentColor.a < 1 && this.option(\"editAlphaChannel\")) {\r\n                        updateAlphaScaleValue(getAlphaScaleStep(e))\r\n                    }\r\n                } else {\r\n                    if (this._currentColor.hsv.s > 0) {\r\n                        updateHorizontalPaletteValue(-getHorizontalPaletteStep(e))\r\n                    }\r\n                }\r\n            },\r\n            enter: function(e) {\r\n                this._fireEnterKeyPressed(e)\r\n            }\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: null,\r\n            matchValue: null,\r\n            onEnterKeyPressed: void 0,\r\n            editAlphaChannel: false,\r\n            keyStep: 1,\r\n            stylingMode: void 0\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initColorAndOpacity();\r\n        this._initEnterKeyPressedAction()\r\n    },\r\n    _initEnterKeyPressedAction: function() {\r\n        this._onEnterKeyPressedAction = this._createActionByOption(\"onEnterKeyPressed\")\r\n    },\r\n    _fireEnterKeyPressed: function(e) {\r\n        if (!this._onEnterKeyPressedAction) {\r\n            return\r\n        }\r\n        this._onEnterKeyPressedAction({\r\n            event: e\r\n        })\r\n    },\r\n    _initColorAndOpacity: function() {\r\n        this._setCurrentColor(this.option(\"value\"))\r\n    },\r\n    _setCurrentColor: function(value) {\r\n        value = value || \"#000000\";\r\n        var newColor = new _color.default(value);\r\n        if (!newColor.colorIsInvalid) {\r\n            if (!this._currentColor || this._makeRgba(this._currentColor) !== this._makeRgba(newColor)) {\r\n                this._currentColor = newColor;\r\n                if (this._$currentColor) {\r\n                    this._makeTransparentBackground(this._$currentColor, newColor)\r\n                }\r\n            }\r\n        } else {\r\n            this.option(\"value\", this._currentColor.baseColor)\r\n        }\r\n    },\r\n    _setBaseColor: function(value) {\r\n        var color = value || \"#000000\";\r\n        var newColor = new _color.default(color);\r\n        if (!newColor.colorIsInvalid) {\r\n            var isBaseColorChanged = this._makeRgba(this.option(\"matchValue\") !== this._makeRgba(newColor));\r\n            if (isBaseColorChanged) {\r\n                if (this._$baseColor) {\r\n                    this._makeTransparentBackground(this._$baseColor, newColor)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this.$element().addClass(COLOR_VIEW_CLASS);\r\n        this._renderColorPickerContainer()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderPalette();\r\n        this._renderHueScale();\r\n        this._renderControlsContainer();\r\n        this._renderControls();\r\n        this._renderAlphaChannelElements()\r\n    },\r\n    _makeTransparentBackground: function($el, color) {\r\n        if (!(color instanceof _color.default)) {\r\n            color = new _color.default(color)\r\n        }\r\n        $el.css(\"backgroundColor\", this._makeRgba(color))\r\n    },\r\n    _makeRgba: function(color) {\r\n        if (!(color instanceof _color.default)) {\r\n            color = new _color.default(color)\r\n        }\r\n        return \"rgba(\" + [color.r, color.g, color.b, color.a].join(\", \") + \")\"\r\n    },\r\n    _renderValue: function() {\r\n        this.callBase(this.option(\"editAlphaChannel\") ? this._makeRgba(this._currentColor) : this.option(\"value\"))\r\n    },\r\n    _renderColorPickerContainer: function() {\r\n        var $parent = this.$element();\r\n        this._$colorPickerContainer = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_CONTAINER_CLASS).appendTo($parent);\r\n        this._renderHtmlRows()\r\n    },\r\n    _renderHtmlRows: function(updatedOption) {\r\n        var $renderedRows = this._$colorPickerContainer.find(\".\" + COLOR_VIEW_ROW_CLASS);\r\n        var renderedRowsCount = $renderedRows.length;\r\n        var rowCount = this.option(\"editAlphaChannel\") ? 2 : 1;\r\n        var delta = renderedRowsCount - rowCount;\r\n        if (delta > 0) {\r\n            $renderedRows.eq(-1).remove()\r\n        }\r\n        if (delta < 0) {\r\n            delta = Math.abs(delta);\r\n            var rows = [];\r\n            var i;\r\n            for (i = 0; i < delta; i++) {\r\n                rows.push((0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_ROW_CLASS))\r\n            }\r\n            if (renderedRowsCount) {\r\n                for (i = 0; i < rows.length; i++) {\r\n                    $renderedRows.eq(0).after(rows[i])\r\n                }\r\n            } else {\r\n                this._$colorPickerContainer.append(rows)\r\n            }\r\n        }\r\n    },\r\n    _renderHtmlCellInsideRow: function(index, $rowParent, additionalClass) {\r\n        return (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_CELL_CLASS).addClass(additionalClass).appendTo($rowParent.find(\".\" + COLOR_VIEW_ROW_CLASS).eq(index))\r\n    },\r\n    _renderPalette: function() {\r\n        var $paletteCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer, COLOR_VIEW_PALETTE_CELL_CLASS);\r\n        var $paletteGradientWhite = (0, _renderer.default)(\"<div>\").addClass([COLOR_VIEW_PALETTE_GRADIENT_CLASS, COLOR_VIEW_PALETTE_GRADIENT_WHITE_CLASS].join(\" \"));\r\n        var $paletteGradientBlack = (0, _renderer.default)(\"<div>\").addClass([COLOR_VIEW_PALETTE_GRADIENT_CLASS, COLOR_VIEW_PALETTE_GRADIENT_BLACK_CLASS].join(\" \"));\r\n        this._$palette = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_PALETTE_CLASS).css(\"backgroundColor\", this._currentColor.getPureColor().toHex()).appendTo($paletteCell);\r\n        this._paletteHeight = this._$palette.height();\r\n        this._paletteWidth = this._$palette.width();\r\n        this._renderPaletteHandle();\r\n        this._$palette.append([$paletteGradientWhite, $paletteGradientBlack])\r\n    },\r\n    _renderPaletteHandle: function() {\r\n        this._$paletteHandle = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_PALETTE_HANDLE_CLASS).appendTo(this._$palette);\r\n        this._createComponent(this._$paletteHandle, _draggable.default, {\r\n            contentTemplate: null,\r\n            boundary: this._$palette,\r\n            allowMoveByClick: true,\r\n            boundOffset: function() {\r\n                return -this._paletteHandleHeight / 2\r\n            }.bind(this),\r\n            onDragMove: function() {\r\n                var paletteHandlePosition = (0, _translator.locate)(this._$paletteHandle);\r\n                this._updateByDrag = true;\r\n                this._updateColorFromHsv(this._currentColor.hsv.h, this._calculateColorSaturation(paletteHandlePosition), this._calculateColorValue(paletteHandlePosition))\r\n            }.bind(this)\r\n        });\r\n        this._paletteHandleWidth = this._$paletteHandle.width();\r\n        this._paletteHandleHeight = this._$paletteHandle.height();\r\n        this._placePaletteHandle()\r\n    },\r\n    _placePaletteHandle: function() {\r\n        (0, _translator.move)(this._$paletteHandle, {\r\n            left: Math.round(this._paletteWidth * this._currentColor.hsv.s / 100 - this._paletteHandleWidth / 2),\r\n            top: Math.round(this._paletteHeight - this._paletteHeight * this._currentColor.hsv.v / 100 - this._paletteHandleHeight / 2)\r\n        })\r\n    },\r\n    _calculateColorValue: function(paletteHandlePosition) {\r\n        var value = Math.floor(paletteHandlePosition.top + this._paletteHandleHeight / 2);\r\n        return 100 - Math.round(100 * value / this._paletteHeight)\r\n    },\r\n    _calculateColorSaturation: function(paletteHandlePosition) {\r\n        var saturation = Math.floor(paletteHandlePosition.left + this._paletteHandleWidth / 2);\r\n        return Math.round(100 * saturation / this._paletteWidth)\r\n    },\r\n    _updateColorFromHsv: function(hue, saturation, value) {\r\n        var a = this._currentColor.a;\r\n        this._currentColor = new _color.default(\"hsv(\" + [hue, saturation, value].join(\",\") + \")\");\r\n        this._currentColor.a = a;\r\n        this._updateColorParamsAndColorPreview();\r\n        this.applyColor()\r\n    },\r\n    _renderHueScale: function() {\r\n        var $hueScaleCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer, COLOR_VIEW_HUE_SCALE_CELL_CLASS);\r\n        this._$hueScaleWrapper = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_HUE_SCALE_WRAPPER_CLASS).appendTo($hueScaleCell);\r\n        this._$hueScale = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_HUE_SCALE_CLASS).appendTo(this._$hueScaleWrapper);\r\n        this._hueScaleHeight = this._$hueScale.height();\r\n        this._hueScaleWrapperHeight = this._$hueScaleWrapper.outerHeight();\r\n        this._renderHueScaleHandle()\r\n    },\r\n    _renderHueScaleHandle: function() {\r\n        this._$hueScaleHandle = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_HUE_SCALE_HANDLE_CLASS).appendTo(this._$hueScaleWrapper);\r\n        this._createComponent(this._$hueScaleHandle, _draggable.default, {\r\n            contentTemplate: null,\r\n            boundary: this._$hueScaleWrapper,\r\n            allowMoveByClick: true,\r\n            dragDirection: \"vertical\",\r\n            onDragMove: function() {\r\n                this._updateByDrag = true;\r\n                this._updateColorHue((0, _translator.locate)(this._$hueScaleHandle).top + this._hueScaleHandleHeight / 2)\r\n            }.bind(this)\r\n        });\r\n        this._hueScaleHandleHeight = this._$hueScaleHandle.height();\r\n        this._placeHueScaleHandle()\r\n    },\r\n    _placeHueScaleHandle: function() {\r\n        var hueScaleHeight = this._hueScaleWrapperHeight;\r\n        var handleHeight = this._hueScaleHandleHeight;\r\n        var top = (hueScaleHeight - handleHeight) * (360 - this._currentColor.hsv.h) / 360;\r\n        if (hueScaleHeight < top + handleHeight) {\r\n            top = hueScaleHeight - handleHeight\r\n        }\r\n        if (top < 0) {\r\n            top = 0\r\n        }(0, _translator.move)(this._$hueScaleHandle, {\r\n            top: Math.round(top)\r\n        })\r\n    },\r\n    _updateColorHue: function(handlePosition) {\r\n        var hue = 360 - Math.round(360 * (handlePosition - this._hueScaleHandleHeight / 2) / (this._hueScaleWrapperHeight - this._hueScaleHandleHeight));\r\n        var saturation = this._currentColor.hsv.s;\r\n        var value = this._currentColor.hsv.v;\r\n        this._isTopColorHue = false;\r\n        hue = hue < 0 ? 0 : hue;\r\n        if (hue >= 360) {\r\n            this._isTopColorHue = true;\r\n            hue = 0\r\n        }\r\n        this._updateColorFromHsv(hue, saturation, value);\r\n        this._$palette.css(\"backgroundColor\", this._currentColor.getPureColor().toHex())\r\n    },\r\n    _renderControlsContainer: function() {\r\n        var $controlsContainerCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer);\r\n        this._$controlsContainer = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_CONTROLS_CONTAINER_CLASS).appendTo($controlsContainerCell)\r\n    },\r\n    _renderControls: function() {\r\n        this._renderColorsPreview();\r\n        this._renderRgbInputs();\r\n        this._renderHexInput()\r\n    },\r\n    _renderColorsPreview: function() {\r\n        var $colorsPreviewContainer = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_COLOR_PREVIEW_CONTAINER_CLASS).appendTo(this._$controlsContainer);\r\n        var $colorsPreviewContainerInner = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_COLOR_PREVIEW_CONTAINER_INNER_CLASS).appendTo($colorsPreviewContainer);\r\n        this._$currentColor = (0, _renderer.default)(\"<div>\").addClass([COLOR_VIEW_COLOR_PREVIEW, COLOR_VIEW_COLOR_PREVIEW_COLOR_NEW].join(\" \"));\r\n        this._$baseColor = (0, _renderer.default)(\"<div>\").addClass([COLOR_VIEW_COLOR_PREVIEW, COLOR_VIEW_COLOR_PREVIEW_COLOR_CURRENT].join(\" \"));\r\n        this._makeTransparentBackground(this._$baseColor, this.option(\"matchValue\"));\r\n        this._makeTransparentBackground(this._$currentColor, this._currentColor);\r\n        $colorsPreviewContainerInner.append([this._$baseColor, this._$currentColor])\r\n    },\r\n    _renderAlphaChannelElements: function() {\r\n        if (this.option(\"editAlphaChannel\")) {\r\n            this._$colorPickerContainer.find(\".\" + COLOR_VIEW_ROW_CLASS).eq(1).addClass(COLOR_VIEW_APLHA_CHANNEL_ROW_CLASS);\r\n            this._renderAlphaChannelScale();\r\n            this._renderAlphaChannelInput()\r\n        }\r\n    },\r\n    _renderRgbInputs: function() {\r\n        this._rgbInputsWithLabels = [this._renderEditorWithLabel({\r\n            editorType: _number_box.default,\r\n            value: this._currentColor.r,\r\n            onValueChanged: this._updateColor.bind(this, false),\r\n            labelText: \"R\",\r\n            labelAriaText: _message.default.format(\"dxColorView-ariaRed\"),\r\n            labelClass: COLOR_VIEW_RED_LABEL_CLASS\r\n        }), this._renderEditorWithLabel({\r\n            editorType: _number_box.default,\r\n            value: this._currentColor.g,\r\n            onValueChanged: this._updateColor.bind(this, false),\r\n            labelText: \"G\",\r\n            labelAriaText: _message.default.format(\"dxColorView-ariaGreen\"),\r\n            labelClass: COLOR_VIEW_GREEN_LABEL_CLASS\r\n        }), this._renderEditorWithLabel({\r\n            editorType: _number_box.default,\r\n            value: this._currentColor.b,\r\n            onValueChanged: this._updateColor.bind(this, false),\r\n            labelText: \"B\",\r\n            labelAriaText: _message.default.format(\"dxColorView-ariaBlue\"),\r\n            labelClass: COLOR_VIEW_BLUE_LABEL_CLASS\r\n        })];\r\n        this._$controlsContainer.append(this._rgbInputsWithLabels);\r\n        this._rgbInputs = [this._rgbInputsWithLabels[0].find(\".dx-numberbox\").dxNumberBox(\"instance\"), this._rgbInputsWithLabels[1].find(\".dx-numberbox\").dxNumberBox(\"instance\"), this._rgbInputsWithLabels[2].find(\".dx-numberbox\").dxNumberBox(\"instance\")]\r\n    },\r\n    _renderEditorWithLabel: function(options) {\r\n        var _this = this;\r\n        var $editor = (0, _renderer.default)(\"<div>\");\r\n        var $label = (0, _renderer.default)(\"<label>\").addClass(options.labelClass).text(options.labelText + \":\").append($editor);\r\n        _events_engine.default.off($label, _click.name);\r\n        _events_engine.default.on($label, _click.name, function(e) {\r\n            e.preventDefault()\r\n        });\r\n        var editorType = options.editorType;\r\n        var editorOptions = (0, _extend.extend)({\r\n            value: options.value,\r\n            onValueChanged: options.onValueChanged,\r\n            onKeyboardHandled: function(opts) {\r\n                return _this._keyboardHandler(opts)\r\n            }\r\n        }, {\r\n            stylingMode: this.option(\"stylingMode\")\r\n        });\r\n        if (editorType === _number_box.default) {\r\n            editorOptions.min = options.min || 0;\r\n            editorOptions.max = options.max || 255;\r\n            editorOptions.step = options.step || 1\r\n        }\r\n        var editor = new editorType($editor, editorOptions);\r\n        editor.registerKeyHandler(\"enter\", function(e) {\r\n            this._fireEnterKeyPressed(e)\r\n        }.bind(this));\r\n        this.setAria(\"label\", options.labelAriaText, $editor);\r\n        return $label\r\n    },\r\n    hexInputOptions: function() {\r\n        return {\r\n            editorType: _text_box.default,\r\n            value: this._currentColor.toHex().replace(\"#\", \"\"),\r\n            onValueChanged: this._updateColor.bind(this, true),\r\n            labelClass: COLOR_VIEW_HEX_LABEL_CLASS,\r\n            labelText: \"#\",\r\n            labelAriaText: _message.default.format(\"dxColorView-ariaHex\")\r\n        }\r\n    },\r\n    _renderHexInput: function() {\r\n        this._hexInput = _text_box.default.getInstance(this._renderEditorWithLabel(this.hexInputOptions()).appendTo(this._$controlsContainer).find(\".dx-textbox\"))\r\n    },\r\n    _renderAlphaChannelScale: function() {\r\n        var $alphaChannelScaleCell = this._renderHtmlCellInsideRow(1, this._$colorPickerContainer, COLOR_VIEW_ALPHA_CHANNEL_CELL_CLASS);\r\n        var $alphaChannelBorder = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_ALPHA_CHANNEL_BORDER_CLASS).appendTo($alphaChannelScaleCell);\r\n        var $alphaChannelScaleWrapper = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_ALPHA_CHANNEL_SCALE_WRAPPER_CLASS).appendTo($alphaChannelBorder);\r\n        this._$alphaChannelScale = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_ALPHA_CHANNEL_SCALE_CLASS).appendTo($alphaChannelScaleWrapper);\r\n        this._makeCSSLinearGradient(this._$alphaChannelScale);\r\n        this._renderAlphaChannelHandle($alphaChannelScaleCell)\r\n    },\r\n    _makeCSSLinearGradient: function($el) {\r\n        var color = this._currentColor;\r\n        var colorAsRgb = [color.r, color.g, color.b].join(\",\");\r\n        var colorAsHex = color.toHex().replace(\"#\", \"\");\r\n        var combineGradientString = function(colorAsRgb, colorAsHex) {\r\n            var rtlEnabled = this.option(\"rtlEnabled\");\r\n            var startColor = \"rgba(\" + colorAsRgb + \", \" + (rtlEnabled ? \"1\" : \"0\") + \")\";\r\n            var finishColor = \"rgba(\" + colorAsRgb + \", \" + (rtlEnabled ? \"0\" : \"1\") + \")\";\r\n            var startColorIE = \"'#\" + (rtlEnabled ? \"00\" : \"\") + colorAsHex + \"'\";\r\n            var finishColorIE = \"'#\" + (rtlEnabled ? \"\" : \"00\") + colorAsHex + \"'\";\r\n            return [\"background-image: -webkit-linear-gradient(180deg, \" + startColor + \", \" + finishColor + \")\", \"background-image: -moz-linear-gradient(-90deg, \" + startColor + \", \" + finishColor + \")\", \"background-image: -o-linear-gradient(-90deg, \" + startColor + \", \" + finishColor + \")\", \"background-image: linear-gradient(-90deg, \" + startColor + \", \" + finishColor + \")\", \"filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=\" + startColorIE + \", endColorstr=\" + finishColorIE + \")\"].join(\";\")\r\n        };\r\n        $el.attr(\"style\", combineGradientString.call(this, colorAsRgb, colorAsHex))\r\n    },\r\n    _renderAlphaChannelInput: function() {\r\n        var that = this;\r\n        var $alphaChannelInputCell = this._renderHtmlCellInsideRow(1, this._$colorPickerContainer);\r\n        that._alphaChannelInput = this._renderEditorWithLabel({\r\n            editorType: _number_box.default,\r\n            value: this._currentColor.a,\r\n            max: 1,\r\n            step: .1,\r\n            onValueChanged: function(e) {\r\n                var value = e.value;\r\n                value = that._currentColor.isValidAlpha(value) ? value : that._currentColor.a;\r\n                that._updateColorTransparency(value);\r\n                that._placeAlphaChannelHandle()\r\n            },\r\n            labelClass: COLOR_VIEW_ALPHA_CHANNEL_LABEL_CLASS,\r\n            labelText: \"Alpha\",\r\n            labelAriaText: _message.default.format(\"dxColorView-ariaAlpha\")\r\n        }).appendTo($alphaChannelInputCell).find(\".dx-numberbox\").dxNumberBox(\"instance\")\r\n    },\r\n    _updateColorTransparency: function(transparency) {\r\n        this._currentColor.a = transparency;\r\n        this.applyColor()\r\n    },\r\n    _renderAlphaChannelHandle: function($parent) {\r\n        this._$alphaChannelHandle = (0, _renderer.default)(\"<div>\").addClass(COLOR_VIEW_ALPHA_CHANNEL_HANDLE_CLASS).appendTo($parent);\r\n        this._createComponent(this._$alphaChannelHandle, _draggable.default, {\r\n            contentTemplate: null,\r\n            boundary: $parent,\r\n            allowMoveByClick: true,\r\n            dragDirection: \"horizontal\",\r\n            onDragMove: function() {\r\n                this._updateByDrag = true;\r\n                var $alphaChannelHandle = this._$alphaChannelHandle;\r\n                var alphaChannelHandlePosition = (0, _translator.locate)($alphaChannelHandle).left + this._alphaChannelHandleWidth / 2;\r\n                this._calculateColorTransparencyByScaleWidth(alphaChannelHandlePosition)\r\n            }.bind(this)\r\n        });\r\n        this._alphaChannelHandleWidth = this._$alphaChannelHandle.width();\r\n        this._alphaChannelScaleWorkWidth = $parent.width() - this._alphaChannelHandleWidth;\r\n        this._placeAlphaChannelHandle()\r\n    },\r\n    _calculateColorTransparencyByScaleWidth: function(handlePosition) {\r\n        var transparency = (handlePosition - this._alphaChannelHandleWidth / 2) / this._alphaChannelScaleWorkWidth;\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        transparency = rtlEnabled ? transparency : 1 - transparency;\r\n        if (handlePosition >= this._alphaChannelScaleWorkWidth + this._alphaChannelHandleWidth / 2) {\r\n            transparency = rtlEnabled ? 1 : 0\r\n        } else {\r\n            if (transparency < 1) {\r\n                transparency = transparency.toFixed(2)\r\n            }\r\n        }\r\n        transparency = Math.max(transparency, 0);\r\n        transparency = Math.min(transparency, 1);\r\n        this._alphaChannelInput.option(\"value\", transparency)\r\n    },\r\n    _placeAlphaChannelHandle: function() {\r\n        var left = this._alphaChannelScaleWorkWidth * (1 - this._currentColor.a);\r\n        if (left < 0) {\r\n            left = 0\r\n        }\r\n        if (this._alphaChannelScaleWorkWidth < left) {\r\n            left = this._alphaChannelScaleWorkWidth\r\n        }(0, _translator.move)(this._$alphaChannelHandle, {\r\n            left: this.option(\"rtlEnabled\") ? this._alphaChannelScaleWorkWidth - left : left\r\n        })\r\n    },\r\n    applyColor: function() {\r\n        var colorValue = this.option(\"editAlphaChannel\") ? this._makeRgba(this._currentColor) : this._currentColor.toHex();\r\n        this._makeTransparentBackground(this._$currentColor, this._currentColor);\r\n        this.option(\"value\", colorValue)\r\n    },\r\n    cancelColor: function() {\r\n        this._initColorAndOpacity();\r\n        this._refreshMarkup()\r\n    },\r\n    _updateColor: function(isHex, e) {\r\n        var rgba;\r\n        var newColor;\r\n        if (isHex) {\r\n            newColor = this._validateHex(\"#\" + this._hexInput.option(\"value\"))\r\n        } else {\r\n            rgba = this._validateRgb();\r\n            if (this._alphaChannelInput) {\r\n                rgba.push(this._alphaChannelInput.option(\"value\"));\r\n                newColor = \"rgba(\" + rgba.join(\", \") + \")\"\r\n            } else {\r\n                newColor = \"rgb(\" + rgba.join(\", \") + \")\"\r\n            }\r\n        }\r\n        if (!this._suppressEditorsValueUpdating) {\r\n            this._currentColor = new _color.default(newColor);\r\n            this.applyColor();\r\n            this._refreshMarkup()\r\n        }\r\n    },\r\n    _validateHex: function(hex) {\r\n        return this._currentColor.isValidHex(hex) ? hex : this._currentColor.toHex()\r\n    },\r\n    _validateRgb: function() {\r\n        var r = this._rgbInputs[0].option(\"value\");\r\n        var g = this._rgbInputs[1].option(\"value\");\r\n        var b = this._rgbInputs[2].option(\"value\");\r\n        if (!this._currentColor.isValidRGB(r, g, b)) {\r\n            r = this._currentColor.r;\r\n            g = this._currentColor.g;\r\n            b = this._currentColor.b\r\n        }\r\n        return [r, g, b]\r\n    },\r\n    _refreshMarkup: function() {\r\n        this._placeHueScaleHandle();\r\n        this._placePaletteHandle();\r\n        this._updateColorParamsAndColorPreview();\r\n        this._$palette.css(\"backgroundColor\", this._currentColor.getPureColor().toHex());\r\n        if (this._$alphaChannelHandle) {\r\n            this._updateColorTransparency(this._currentColor.a);\r\n            this._placeAlphaChannelHandle()\r\n        }\r\n    },\r\n    _updateColorParamsAndColorPreview: function() {\r\n        this._suppressEditorsValueUpdating = true;\r\n        this._hexInput.option(\"value\", this._currentColor.toHex().replace(\"#\", \"\"));\r\n        this._rgbInputs[0].option(\"value\", this._currentColor.r);\r\n        this._rgbInputs[1].option(\"value\", this._currentColor.g);\r\n        this._rgbInputs[2].option(\"value\", this._currentColor.b);\r\n        this._suppressEditorsValueUpdating = false;\r\n        if (this.option(\"editAlphaChannel\")) {\r\n            this._makeCSSLinearGradient.call(this, this._$alphaChannelScale);\r\n            this._alphaChannelInput.option(\"value\", this._currentColor.a)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        var value = args.value;\r\n        switch (args.name) {\r\n            case \"value\":\r\n                this._setCurrentColor(value);\r\n                if (!this._updateByDrag) {\r\n                    this._refreshMarkup()\r\n                }\r\n                this._updateByDrag = false;\r\n                this.callBase(args);\r\n                break;\r\n            case \"matchValue\":\r\n                this._setBaseColor(value);\r\n                break;\r\n            case \"onEnterKeyPressed\":\r\n                this._initEnterKeyPressedAction();\r\n                break;\r\n            case \"editAlphaChannel\":\r\n                if (this._$colorPickerContainer) {\r\n                    this._renderHtmlRows(\"editAlphaChannel\");\r\n                    this._renderAlphaChannelElements()\r\n                }\r\n                break;\r\n            case \"keyStep\":\r\n                break;\r\n            case \"stylingMode\":\r\n                this._renderControls();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxColorView\", ColorView);\r\nvar _default = ColorView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/component_registrator_callbacks.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _memorized_callbacks = _interopRequireDefault(require(\"./memorized_callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = new _memorized_callbacks.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/resize_callbacks.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _window = require(\"./window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\nvar _callbacks = _interopRequireDefault(require(\"./callbacks\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"./ready_callbacks\"));\r\nvar _call_once = _interopRequireDefault(require(\"./call_once\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar resizeCallbacks = function() {\r\n    var prevSize;\r\n    var callbacks = (0, _callbacks.default)();\r\n    var originalCallbacksAdd = callbacks.add;\r\n    var originalCallbacksRemove = callbacks.remove;\r\n    if (!(0, _window.hasWindow)()) {\r\n        return callbacks\r\n    }\r\n    var formatSize = function() {\r\n        var window = (0, _window.getWindow)();\r\n        return {\r\n            width: window.innerWidth,\r\n            height: window.innerHeight\r\n        }\r\n    };\r\n    var handleResize = function() {\r\n        var now = formatSize();\r\n        if (now.width === prevSize.width && now.height === prevSize.height) {\r\n            return\r\n        }\r\n        var changedDimension;\r\n        if (now.width === prevSize.width) {\r\n            changedDimension = \"height\"\r\n        }\r\n        if (now.height === prevSize.height) {\r\n            changedDimension = \"width\"\r\n        }\r\n        prevSize = now;\r\n        callbacks.fire(changedDimension)\r\n    };\r\n    var setPrevSize = (0, _call_once.default)(function() {\r\n        prevSize = formatSize()\r\n    });\r\n    var removeListener;\r\n    callbacks.add = function() {\r\n        var result = originalCallbacksAdd.apply(callbacks, arguments);\r\n        setPrevSize();\r\n        _ready_callbacks.default.add(function() {\r\n            if (!removeListener && callbacks.has()) {\r\n                removeListener = _dom_adapter.default.listen((0, _window.getWindow)(), \"resize\", handleResize)\r\n            }\r\n        });\r\n        return result\r\n    };\r\n    callbacks.remove = function() {\r\n        var result = originalCallbacksRemove.apply(callbacks, arguments);\r\n        if (!callbacks.has() && removeListener) {\r\n            removeListener();\r\n            removeListener = void 0\r\n        }\r\n        return result\r\n    };\r\n    return callbacks\r\n}();\r\nvar _default = resizeCallbacks;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.column_fixing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_fixing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"columnFixing\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/text_box/ui.text_editor.mask.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils.caret\"));\r\nvar _utils2 = require(\"./utils.support\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _uiText_editorMask = require(\"./ui.text_editor.mask.rule\");\r\nvar _uiText_editor = _interopRequireDefault(require(\"./ui.text_editor.base\"));\r\nvar _uiText_editorMaskStrategy = _interopRequireDefault(require(\"./ui.text_editor.mask.strategy.default\"));\r\nvar _uiText_editorMaskStrategy2 = _interopRequireDefault(require(\"./ui.text_editor.mask.strategy.input_events\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar stubCaret = function() {\r\n    return {}\r\n};\r\nvar caret = _utils.default;\r\nvar EMPTY_CHAR = \" \";\r\nvar ESCAPED_CHAR = \"\\\\\";\r\nvar TEXTEDITOR_MASKED_CLASS = \"dx-texteditor-masked\";\r\nvar FORWARD_DIRECTION = \"forward\";\r\nvar BACKWARD_DIRECTION = \"backward\";\r\nvar buildInMaskRules = {\r\n    0: /[0-9]/,\r\n    9: /[0-9\\s]/,\r\n    \"#\": /[-+0-9\\s]/,\r\n    L: function(char) {\r\n        return isLiteralChar(char)\r\n    },\r\n    l: function(char) {\r\n        return isLiteralChar(char) || isSpaceChar(char)\r\n    },\r\n    C: /\\S/,\r\n    c: /./,\r\n    A: function(char) {\r\n        return isLiteralChar(char) || isNumericChar(char)\r\n    },\r\n    a: function(char) {\r\n        return isLiteralChar(char) || isNumericChar(char) || isSpaceChar(char)\r\n    }\r\n};\r\n\r\nfunction isNumericChar(char) {\r\n    return /[0-9]/.test(char)\r\n}\r\n\r\nfunction isLiteralChar(char) {\r\n    var code = char.charCodeAt();\r\n    return 64 < code && code < 91 || 96 < code && code < 123 || code > 127\r\n}\r\n\r\nfunction isSpaceChar(char) {\r\n    return \" \" === char\r\n}\r\nvar TextEditorMask = _uiText_editor.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            mask: \"\",\r\n            maskChar: \"_\",\r\n            maskRules: {},\r\n            maskInvalidMessage: _message.default.format(\"validation-mask\"),\r\n            useMaskedValue: false,\r\n            showMaskMode: \"always\"\r\n        })\r\n    },\r\n    _supportedKeys: function() {\r\n        var that = this;\r\n        var keyHandlerMap = {\r\n            backspace: that._maskStrategy.getHandler(\"backspace\"),\r\n            del: that._maskStrategy.getHandler(\"del\"),\r\n            enter: that._changeHandler\r\n        };\r\n        var result = that.callBase();\r\n        (0, _iterator.each)(keyHandlerMap, function(key, callback) {\r\n            var parentHandler = result[key];\r\n            result[key] = function(e) {\r\n                that.option(\"mask\") && callback.call(that, e);\r\n                parentHandler && parentHandler(e)\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _getSubmitElement: function() {\r\n        return !this.option(\"mask\") ? this.callBase() : this._$hiddenElement\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initMaskStrategy()\r\n    },\r\n    _initMaskStrategy: function() {\r\n        this._maskStrategy = (0, _utils2.isInputEventsL2Supported)() ? new _uiText_editorMaskStrategy2.default(this) : new _uiText_editorMaskStrategy.default(this)\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderHiddenElement();\r\n        this.callBase()\r\n    },\r\n    _attachMouseWheelEventHandlers: function() {\r\n        var hasMouseWheelHandler = this._onMouseWheel !== _common.noop;\r\n        if (!hasMouseWheelHandler) {\r\n            return\r\n        }\r\n        var input = this._input();\r\n        var eventName = (0, _index.addNamespace)(_wheel.name, this.NAME);\r\n        var mouseWheelAction = this._createAction(function(e) {\r\n            if ((0, _selectors.focused)(input)) {\r\n                var dxEvent = e.event;\r\n                this._onMouseWheel(dxEvent);\r\n                dxEvent.preventDefault();\r\n                dxEvent.stopPropagation()\r\n            }\r\n        }.bind(this));\r\n        _events_engine.default.off(input, eventName);\r\n        _events_engine.default.on(input, eventName, function(e) {\r\n            mouseWheelAction({\r\n                event: e\r\n            })\r\n        })\r\n    },\r\n    _onMouseWheel: _common.noop,\r\n    _render: function() {\r\n        this._renderMask();\r\n        this.callBase();\r\n        this._attachMouseWheelEventHandlers()\r\n    },\r\n    _renderHiddenElement: function() {\r\n        if (this.option(\"mask\")) {\r\n            this._$hiddenElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").appendTo(this._inputWrapper())\r\n        }\r\n    },\r\n    _removeHiddenElement: function() {\r\n        this._$hiddenElement && this._$hiddenElement.remove()\r\n    },\r\n    _renderMask: function() {\r\n        this.$element().removeClass(TEXTEDITOR_MASKED_CLASS);\r\n        this._maskRulesChain = null;\r\n        this._maskStrategy.detachEvents();\r\n        if (!this.option(\"mask\")) {\r\n            return\r\n        }\r\n        this.$element().addClass(TEXTEDITOR_MASKED_CLASS);\r\n        this._maskStrategy.attachEvents();\r\n        this._parseMask();\r\n        this._renderMaskedValue()\r\n    },\r\n    _suppressCaretChanging: function(callback, args) {\r\n        caret = stubCaret;\r\n        try {\r\n            callback.apply(this, args)\r\n        } finally {\r\n            caret = _utils.default\r\n        }\r\n    },\r\n    _changeHandler: function(e) {\r\n        var $input = this._input();\r\n        var inputValue = $input.val();\r\n        if (inputValue === this._changedValue) {\r\n            return\r\n        }\r\n        this._changedValue = inputValue;\r\n        var changeEvent = (0, _index.createEvent)(e, {\r\n            type: \"change\"\r\n        });\r\n        _events_engine.default.trigger($input, changeEvent)\r\n    },\r\n    _parseMask: function() {\r\n        this._maskRules = (0, _extend.extend)({}, buildInMaskRules, this.option(\"maskRules\"));\r\n        this._maskRulesChain = this._parseMaskRule(0)\r\n    },\r\n    _parseMaskRule: function(index) {\r\n        var mask = this.option(\"mask\");\r\n        if (index >= mask.length) {\r\n            return new _uiText_editorMask.EmptyMaskRule\r\n        }\r\n        var currentMaskChar = mask[index];\r\n        var isEscapedChar = currentMaskChar === ESCAPED_CHAR;\r\n        var result = isEscapedChar ? new _uiText_editorMask.StubMaskRule({\r\n            maskChar: mask[index + 1]\r\n        }) : this._getMaskRule(currentMaskChar);\r\n        result.next(this._parseMaskRule(index + 1 + isEscapedChar));\r\n        return result\r\n    },\r\n    _getMaskRule: function(pattern) {\r\n        var ruleConfig;\r\n        (0, _iterator.each)(this._maskRules, function(rulePattern, allowedChars) {\r\n            if (rulePattern === pattern) {\r\n                ruleConfig = {\r\n                    pattern: rulePattern,\r\n                    allowedChars: allowedChars\r\n                };\r\n                return false\r\n            }\r\n        });\r\n        return (0, _type.isDefined)(ruleConfig) ? new _uiText_editorMask.MaskRule((0, _extend.extend)({\r\n            maskChar: this.option(\"maskChar\")\r\n        }, ruleConfig)) : new _uiText_editorMask.StubMaskRule({\r\n            maskChar: pattern\r\n        })\r\n    },\r\n    _renderMaskedValue: function() {\r\n        if (!this._maskRulesChain) {\r\n            return\r\n        }\r\n        var value = this.option(\"value\") || \"\";\r\n        this._maskRulesChain.clear(this._normalizeChainArguments());\r\n        var chainArgs = {\r\n            length: value.length\r\n        };\r\n        chainArgs[this._isMaskedValueMode() ? \"text\" : \"value\"] = value;\r\n        this._handleChain(chainArgs);\r\n        this._displayMask()\r\n    },\r\n    _replaceSelectedText: function(text, selection, char) {\r\n        if (void 0 === char) {\r\n            return text\r\n        }\r\n        var textBefore = text.slice(0, selection.start);\r\n        var textAfter = text.slice(selection.end);\r\n        var edited = textBefore + char + textAfter;\r\n        return edited\r\n    },\r\n    _isMaskedValueMode: function() {\r\n        return this.option(\"useMaskedValue\")\r\n    },\r\n    _displayMask: function(caret) {\r\n        caret = caret || this._caret();\r\n        this._renderValue();\r\n        this._caret(caret)\r\n    },\r\n    _isValueEmpty: function() {\r\n        return (0, _string.isEmpty)(this._value)\r\n    },\r\n    _shouldShowMask: function() {\r\n        var showMaskMode = this.option(\"showMaskMode\");\r\n        if (\"onFocus\" === showMaskMode) {\r\n            return (0, _selectors.focused)(this._input()) || !this._isValueEmpty()\r\n        }\r\n        return true\r\n    },\r\n    _showMaskPlaceholder: function() {\r\n        if (this._shouldShowMask()) {\r\n            var text = this._maskRulesChain.text();\r\n            this.option(\"text\", text);\r\n            if (\"onFocus\" === this.option(\"showMaskMode\")) {\r\n                this._renderDisplayText(text)\r\n            }\r\n        }\r\n    },\r\n    _renderValue: function() {\r\n        if (this._maskRulesChain) {\r\n            var text = this._maskRulesChain.text();\r\n            this._showMaskPlaceholder();\r\n            if (this._$hiddenElement) {\r\n                var value = this._maskRulesChain.value();\r\n                var hiddenElementValue = this._isMaskedValueMode() ? text : value;\r\n                this._$hiddenElement.val(!(0, _string.isEmpty)(value) ? hiddenElementValue : \"\")\r\n            }\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _valueChangeEventHandler: function(e) {\r\n        if (!this._maskRulesChain) {\r\n            this.callBase.apply(this, arguments);\r\n            return\r\n        }\r\n        this._saveValueChangeEvent(e);\r\n        this.option(\"value\", this._convertToValue().replace(/\\s+$/, \"\"))\r\n    },\r\n    _isControlKeyFired: function(e) {\r\n        return this._isControlKey((0, _index.normalizeKeyName)(e)) || e.ctrlKey || e.metaKey\r\n    },\r\n    _handleChain: function(args) {\r\n        var handledCount = this._maskRulesChain.handle(this._normalizeChainArguments(args));\r\n        this._value = this._maskRulesChain.value();\r\n        this._textValue = this._maskRulesChain.text();\r\n        return handledCount\r\n    },\r\n    _normalizeChainArguments: function(args) {\r\n        args = args || {};\r\n        args.index = 0;\r\n        args.fullText = this._maskRulesChain.text();\r\n        return args\r\n    },\r\n    _convertToValue: function(text) {\r\n        if (this._isMaskedValueMode()) {\r\n            text = this._replaceMaskCharWithEmpty(text || this._textValue || \"\")\r\n        } else {\r\n            text = text || this._value || \"\"\r\n        }\r\n        return text\r\n    },\r\n    _replaceMaskCharWithEmpty: function(text) {\r\n        return text.replace(new RegExp(this.option(\"maskChar\"), \"g\"), EMPTY_CHAR)\r\n    },\r\n    _maskKeyHandler: function(e, keyHandler) {\r\n        var _this = this;\r\n        if (this.option(\"readOnly\")) {\r\n            return\r\n        }\r\n        this.setForwardDirection();\r\n        e.preventDefault();\r\n        this._handleSelection();\r\n        var previousText = this._input().val();\r\n        var raiseInputEvent = function() {\r\n            if (previousText !== _this._input().val()) {\r\n                _this._maskStrategy.runWithoutEventProcessing(function() {\r\n                    return _events_engine.default.trigger(_this._input(), \"input\")\r\n                })\r\n            }\r\n        };\r\n        var handled = keyHandler();\r\n        if (handled) {\r\n            handled.then(raiseInputEvent)\r\n        } else {\r\n            this.setForwardDirection();\r\n            this._adjustCaret();\r\n            this._displayMask();\r\n            this._maskRulesChain.reset();\r\n            raiseInputEvent()\r\n        }\r\n    },\r\n    _handleKey: function(key, direction) {\r\n        this._direction(direction || FORWARD_DIRECTION);\r\n        this._adjustCaret(key);\r\n        this._handleKeyChain(key);\r\n        this._moveCaret()\r\n    },\r\n    _handleSelection: function() {\r\n        if (!this._hasSelection()) {\r\n            return\r\n        }\r\n        var caret = this._caret();\r\n        var emptyChars = new Array(caret.end - caret.start + 1).join(EMPTY_CHAR);\r\n        this._handleKeyChain(emptyChars)\r\n    },\r\n    _handleKeyChain: function(chars) {\r\n        var caret = this._caret();\r\n        var start = this.isForwardDirection() ? caret.start : caret.start - 1;\r\n        var end = this.isForwardDirection() ? caret.end : caret.end - 1;\r\n        var length = start === end ? 1 : end - start;\r\n        this._handleChain({\r\n            text: chars,\r\n            start: start,\r\n            length: length\r\n        })\r\n    },\r\n    _tryMoveCaretBackward: function() {\r\n        this.setBackwardDirection();\r\n        var currentCaret = this._caret().start;\r\n        this._adjustCaret();\r\n        return !currentCaret || currentCaret !== this._caret().start\r\n    },\r\n    _adjustCaret: function(char) {\r\n        var caret = this._maskRulesChain.adjustedCaret(this._caret().start, this.isForwardDirection(), char);\r\n        this._caret({\r\n            start: caret,\r\n            end: caret\r\n        })\r\n    },\r\n    _moveCaret: function() {\r\n        var currentCaret = this._caret().start;\r\n        var maskRuleIndex = currentCaret + (this.isForwardDirection() ? 0 : -1);\r\n        var caret = this._maskRulesChain.isAccepted(maskRuleIndex) ? currentCaret + (this.isForwardDirection() ? 1 : -1) : currentCaret;\r\n        this._caret({\r\n            start: caret,\r\n            end: caret\r\n        })\r\n    },\r\n    _caret: function(position) {\r\n        var $input = this._input();\r\n        if (!$input.length) {\r\n            return\r\n        }\r\n        if (!arguments.length) {\r\n            return caret($input)\r\n        }\r\n        caret($input, position)\r\n    },\r\n    _hasSelection: function() {\r\n        var caret = this._caret();\r\n        return caret.start !== caret.end\r\n    },\r\n    _direction: function(direction) {\r\n        if (!arguments.length) {\r\n            return this._typingDirection\r\n        }\r\n        this._typingDirection = direction\r\n    },\r\n    setForwardDirection: function() {\r\n        this._direction(FORWARD_DIRECTION)\r\n    },\r\n    setBackwardDirection: function() {\r\n        this._direction(BACKWARD_DIRECTION)\r\n    },\r\n    isForwardDirection: function() {\r\n        return this._direction() === FORWARD_DIRECTION\r\n    },\r\n    _clean: function() {\r\n        this._maskStrategy && this._maskStrategy.clean();\r\n        this.callBase()\r\n    },\r\n    _validateMask: function() {\r\n        if (!this._maskRulesChain) {\r\n            return\r\n        }\r\n        var isValid = (0, _string.isEmpty)(this.option(\"value\")) || this._maskRulesChain.isValid(this._normalizeChainArguments());\r\n        this.option({\r\n            isValid: isValid,\r\n            validationError: isValid ? null : {\r\n                editorSpecific: true,\r\n                message: this.option(\"maskInvalidMessage\")\r\n            }\r\n        })\r\n    },\r\n    _updateHiddenElement: function() {\r\n        this._removeHiddenElement();\r\n        if (this.option(\"mask\")) {\r\n            this._input().removeAttr(\"name\");\r\n            this._renderHiddenElement()\r\n        }\r\n        this._setSubmitElementName(this.option(\"name\"))\r\n    },\r\n    _updateMaskOption: function() {\r\n        this._updateHiddenElement();\r\n        this._renderMask();\r\n        this._validateMask()\r\n    },\r\n    _processEmptyMask: function(mask) {\r\n        if (mask) {\r\n            return\r\n        }\r\n        var value = this.option(\"value\");\r\n        this.option({\r\n            text: value,\r\n            isValid: true\r\n        });\r\n        this.validationRequest.fire({\r\n            value: value,\r\n            editor: this\r\n        });\r\n        this._renderValue()\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"mask\":\r\n                this._updateMaskOption();\r\n                this._processEmptyMask(args.value);\r\n                break;\r\n            case \"maskChar\":\r\n            case \"maskRules\":\r\n            case \"useMaskedValue\":\r\n                this._updateMaskOption();\r\n                break;\r\n            case \"value\":\r\n                this._renderMaskedValue();\r\n                this._validateMask();\r\n                this.callBase(args);\r\n                this._changedValue = this._input().val();\r\n                break;\r\n            case \"maskInvalidMessage\":\r\n                break;\r\n            case \"showMaskMode\":\r\n                this.option(\"text\", \"\");\r\n                this._renderValue();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = TextEditorMask;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/helpers/range_data_calculator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../../core/utils\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar DISCRETE = \"discrete\";\r\nvar abs = Math.abs,\r\n    floor = Math.floor,\r\n    ceil = Math.ceil,\r\n    min = Math.min;\r\n\r\nfunction continuousRangeCalculator(range, minValue, maxValue) {\r\n    range.min = range.min < minValue ? range.min : minValue;\r\n    range.max = range.max > maxValue ? range.max : maxValue\r\n}\r\n\r\nfunction createGetLogFunction(axisType, axis) {\r\n    if (\"logarithmic\" !== axisType) {\r\n        return null\r\n    }\r\n    var base = axis.getOptions().logarithmBase;\r\n    return function(value) {\r\n        var log = (0, _utils.getLog)(abs(value), base);\r\n        var round = log < 0 ? floor : ceil;\r\n        return round(log)\r\n    }\r\n}\r\n\r\nfunction getRangeCalculator(axisType, axis, getLog) {\r\n    var rangeCalculator = continuousRangeCalculator;\r\n    if (axisType === DISCRETE) {\r\n        rangeCalculator = function(range, minValue, maxValue) {\r\n            if (minValue !== maxValue) {\r\n                range.categories.push(maxValue)\r\n            }\r\n            range.categories.push(minValue)\r\n        }\r\n    } else {\r\n        if (axis) {\r\n            rangeCalculator = function(range, value) {\r\n                var interval = axis.calculateInterval(value, range.prevValue);\r\n                var minInterval = range.interval;\r\n                range.interval = (minInterval < interval ? minInterval : interval) || minInterval;\r\n                range.prevValue = value;\r\n                continuousRangeCalculator(range, value, value)\r\n            }\r\n        }\r\n    }\r\n    if (getLog) {\r\n        return function(range, minValue, maxValue) {\r\n            var minArgs = [];\r\n            rangeCalculator(range, minValue, maxValue);\r\n            0 !== minValue && minArgs.push(getLog(minValue));\r\n            0 !== maxValue && minArgs.push(getLog(maxValue));\r\n            var linearThreshold = min.apply(null, minArgs);\r\n            range.linearThreshold = range.linearThreshold < linearThreshold ? range.linearThreshold : linearThreshold\r\n        }\r\n    }\r\n    return rangeCalculator\r\n}\r\n\r\nfunction getInitialRange(axisType, dataType, firstValue) {\r\n    var range = {\r\n        axisType: axisType,\r\n        dataType: dataType\r\n    };\r\n    if (axisType === DISCRETE) {\r\n        range.categories = []\r\n    } else {\r\n        range.min = firstValue;\r\n        range.max = firstValue\r\n    }\r\n    return range\r\n}\r\n\r\nfunction processCategories(range) {\r\n    if (range.categories) {\r\n        range.categories = (0, _utils.unique)(range.categories)\r\n    }\r\n    return range\r\n}\r\n\r\nfunction getValueForArgument(point, extraPoint, x, range) {\r\n    if (extraPoint && (0, _type.isDefined)(extraPoint.value)) {\r\n        var y1 = point.value;\r\n        var y2 = extraPoint.value;\r\n        var x1 = point.argument;\r\n        var x2 = extraPoint.argument;\r\n        var r = (x - x1) * (y2 - y1) / (x2 - x1) + y1.valueOf();\r\n        return \"datetime\" === range.dataType ? new Date(r) : r\r\n    } else {\r\n        return point.value\r\n    }\r\n}\r\n\r\nfunction calculateRangeBetweenPoints(rangeCalculator, range, point, prevPoint, bound) {\r\n    var value = getValueForArgument(point, prevPoint, bound, range);\r\n    rangeCalculator(range, value, value)\r\n}\r\n\r\nfunction isLineSeries(series) {\r\n    return series.type.toLowerCase().indexOf(\"line\") >= 0 || series.type.toLowerCase().indexOf(\"area\") >= 0\r\n}\r\n\r\nfunction getViewportReducer(series) {\r\n    var rangeCalculator = getRangeCalculator(series.valueAxisType);\r\n    var argumentAxis = series.getArgumentAxis();\r\n    var viewport = argumentAxis && series.getArgumentAxis().visualRange() || {};\r\n    var calculatePointBetweenPoints = isLineSeries(series) ? calculateRangeBetweenPoints : _common.noop;\r\n    if (argumentAxis && argumentAxis.getMarginOptions().checkInterval) {\r\n        var range = series.getArgumentAxis().getTranslator().getBusinessRange();\r\n        var add = (0, _utils.getAddFunction)(range, false);\r\n        var interval = range.interval;\r\n        if (isFinite(interval) && (0, _type.isDefined)(viewport.startValue) && (0, _type.isDefined)(viewport.endValue)) {\r\n            viewport.startValue = add(viewport.startValue, interval, -1);\r\n            viewport.endValue = add(viewport.endValue, interval)\r\n        }\r\n    }\r\n    var viewportFilter = getViewPortFilter(viewport);\r\n    return function(range, point, index, points) {\r\n        var argument = point.argument;\r\n        if (!point.hasValue()) {\r\n            return range\r\n        }\r\n        if (viewportFilter(argument)) {\r\n            if (!range.startCalc) {\r\n                range.startCalc = true;\r\n                calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)\r\n            }\r\n            rangeCalculator(range, point.getMinValue(), point.getMaxValue())\r\n        } else {\r\n            if (!viewport.categories && (0, _type.isDefined)(viewport.startValue) && argument > viewport.startValue) {\r\n                if (!range.startCalc) {\r\n                    calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)\r\n                }\r\n                range.endCalc = true;\r\n                calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.endValue)\r\n            }\r\n        }\r\n        return range\r\n    }\r\n}\r\n\r\nfunction getViewPortFilter(viewport) {\r\n    if (viewport.categories) {\r\n        var dictionary = viewport.categories.reduce(function(result, category) {\r\n            result[category.valueOf()] = true;\r\n            return result\r\n        }, {});\r\n        return function(argument) {\r\n            return (0, _type.isDefined)(argument) && dictionary[argument.valueOf()]\r\n        }\r\n    }\r\n    if (!(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue)) {\r\n        return function() {\r\n            return true\r\n        }\r\n    }\r\n    if (!(0, _type.isDefined)(viewport.endValue)) {\r\n        return function(argument) {\r\n            return argument >= viewport.startValue\r\n        }\r\n    }\r\n    if (!(0, _type.isDefined)(viewport.startValue)) {\r\n        return function(argument) {\r\n            return argument <= viewport.endValue\r\n        }\r\n    }\r\n    return function(argument) {\r\n        return argument >= viewport.startValue && argument <= viewport.endValue\r\n    }\r\n}\r\nvar _default = {\r\n    getViewPortFilter: getViewPortFilter,\r\n    getArgumentRange: function(series) {\r\n        var data = series._data || [];\r\n        var range = {};\r\n        if (data.length) {\r\n            if (series.argumentAxisType === DISCRETE) {\r\n                range = {\r\n                    categories: data.map(function(item) {\r\n                        return item.argument\r\n                    })\r\n                }\r\n            } else {\r\n                var interval;\r\n                if (data.length > 1) {\r\n                    var i1 = series.getArgumentAxis().calculateInterval(data[0].argument, data[1].argument);\r\n                    var i2 = series.getArgumentAxis().calculateInterval(data[data.length - 1].argument, data[data.length - 2].argument);\r\n                    interval = min(i1, i2)\r\n                }\r\n                range = {\r\n                    min: data[0].argument,\r\n                    max: data[data.length - 1].argument,\r\n                    interval: interval\r\n                }\r\n            }\r\n        }\r\n        return processCategories(range)\r\n    },\r\n    getRangeData: function(series) {\r\n        var points = series.getPoints();\r\n        var useAggregation = series.useAggregation();\r\n        var argumentCalculator = getRangeCalculator(series.argumentAxisType, points.length > 1 && series.getArgumentAxis(), createGetLogFunction(series.argumentAxisType, series.getArgumentAxis()));\r\n        var valueRangeCalculator = getRangeCalculator(series.valueAxisType, null, createGetLogFunction(series.valueAxisType, series.getValueAxis()));\r\n        var viewportReducer = getViewportReducer(series);\r\n        var range = points.reduce(function(range, point, index, points) {\r\n            var argument = point.argument;\r\n            if (!point.isArgumentCorrect()) {\r\n                return range\r\n            }\r\n            argumentCalculator(range.arg, argument, argument);\r\n            if (point.hasValue()) {\r\n                valueRangeCalculator(range.val, point.getMinValue(), point.getMaxValue());\r\n                viewportReducer(range.viewport, point, index, points)\r\n            }\r\n            return range\r\n        }, {\r\n            arg: getInitialRange(series.argumentAxisType, series.argumentType),\r\n            val: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0),\r\n            viewport: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0)\r\n        });\r\n        if (useAggregation) {\r\n            var argumentRange = this.getArgumentRange(series);\r\n            if (series.argumentAxisType === DISCRETE) {\r\n                range.arg = argumentRange\r\n            } else {\r\n                var viewport = series.getArgumentAxis().getViewport();\r\n                if ((0, _type.isDefined)(viewport.startValue) || (0, _type.isDefined)(viewport.length)) {\r\n                    argumentCalculator(range.arg, argumentRange.min, argumentRange.min)\r\n                }\r\n                if ((0, _type.isDefined)(viewport.endValue) || (0, _type.isDefined)(viewport.length) && (0, _type.isDefined)(viewport.startValue)) {\r\n                    argumentCalculator(range.arg, argumentRange.max, argumentRange.max)\r\n                }\r\n            }\r\n        }\r\n        processCategories(range.arg);\r\n        processCategories(range.val);\r\n        return range\r\n    },\r\n    getViewport: function(series) {\r\n        var points = series.getPoints();\r\n        var range = {};\r\n        var reducer = getViewportReducer(series);\r\n        range = getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0);\r\n        points.some(function(point, index) {\r\n            reducer(range, point, index, points);\r\n            return range.endCalc\r\n        });\r\n        return range\r\n    },\r\n    getPointsInViewPort: function(series) {\r\n        var argumentViewPortFilter = getViewPortFilter(series.getArgumentAxis().visualRange() || {});\r\n        var valueViewPort = series.getValueAxis().visualRange() || {};\r\n        var valueViewPortFilter = getViewPortFilter(valueViewPort);\r\n        var points = series.getPoints();\r\n        var addValue = function(values, point, isEdge) {\r\n            var minValue = point.getMinValue();\r\n            var maxValue = point.getMaxValue();\r\n            var isMinValueInViewPort = valueViewPortFilter(minValue);\r\n            var isMaxValueInViewPort = valueViewPortFilter(maxValue);\r\n            if (isMinValueInViewPort) {\r\n                values.push(minValue)\r\n            }\r\n            if (maxValue !== minValue && isMaxValueInViewPort) {\r\n                values.push(maxValue)\r\n            }\r\n            if (isEdge && !isMinValueInViewPort && !isMaxValueInViewPort) {\r\n                if (!values.length) {\r\n                    values.push(valueViewPort.startValue)\r\n                } else {\r\n                    values.push(valueViewPort.endValue)\r\n                }\r\n            }\r\n        };\r\n        var addEdgePoints = isLineSeries(series) ? function(result, points, index) {\r\n            var point = points[index];\r\n            var prevPoint = points[index - 1];\r\n            var nextPoint = points[index + 1];\r\n            if (nextPoint && argumentViewPortFilter(nextPoint.argument)) {\r\n                addValue(result[1], point, true)\r\n            }\r\n            if (prevPoint && argumentViewPortFilter(prevPoint.argument)) {\r\n                addValue(result[1], point, true)\r\n            }\r\n        } : _common.noop;\r\n        var checkPointInViewport = function(result, point, index) {\r\n            if (argumentViewPortFilter(point.argument)) {\r\n                addValue(result[0], point)\r\n            } else {\r\n                addEdgePoints(result, points, index)\r\n            }\r\n            return result\r\n        };\r\n        return points.reduce(checkPointInViewport, [\r\n            [],\r\n            []\r\n        ])\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/export.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = exports.ExportMenu = exports.combineMarkups = exports.exportWidgets = exports.getMarkup = exports.exportFromMarkup = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _utils = require(\"./utils\");\r\nvar _exporter = require(\"../../exporter\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _themes = require(\"../themes\");\r\nvar _hover = require(\"../../events/hover\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _console = require(\"../../core/utils/console\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar pointerActions = [_pointer.default.down, _pointer.default.move].join(\" \");\r\nvar BUTTON_SIZE = 35;\r\nvar ICON_COORDS = [\r\n    [9, 12, 26, 12, 26, 14, 9, 14],\r\n    [9, 17, 26, 17, 26, 19, 9, 19],\r\n    [9, 22, 26, 22, 26, 24, 9, 24]\r\n];\r\nvar LIST_PADDING_TOP = 4;\r\nvar LIST_WIDTH = 120;\r\nvar VERTICAL_TEXT_MARGIN = 8;\r\nvar HORIZONTAL_TEXT_MARGIN = 15;\r\nvar MENU_ITEM_HEIGHT = 30;\r\nvar LIST_STROKE_WIDTH = 1;\r\nvar MARGIN = 10;\r\nvar SHADOW_OFFSET = 2;\r\nvar SHADOW_BLUR = 3;\r\nvar DEFAULT_EXPORT_FORMAT = \"PNG\";\r\nvar ALLOWED_IMAGE_FORMATS = [DEFAULT_EXPORT_FORMAT, \"JPEG\", \"GIF\"];\r\nvar ALLOWED_EXTRA_FORMATS = [\"PDF\", \"SVG\"];\r\nvar EXPORT_CSS_CLASS = \"dx-export-menu\";\r\nvar EXPORT_DATA_KEY = \"export-element-type\";\r\nvar FORMAT_DATA_KEY = \"export-element-format\";\r\nvar GET_COLOR_REGEX = /data-backgroundcolor=\"([^\"]*)\"/;\r\n\r\nfunction getValidFormats() {\r\n    var imageFormats = _exporter.image.testFormats(ALLOWED_IMAGE_FORMATS);\r\n    return {\r\n        unsupported: imageFormats.unsupported,\r\n        supported: imageFormats.supported.concat(ALLOWED_EXTRA_FORMATS)\r\n    }\r\n}\r\n\r\nfunction validateFormat(format, incidentOccurred, validFormats) {\r\n    validFormats = validFormats || getValidFormats();\r\n    format = String(format).toUpperCase();\r\n    if (validFormats.supported.indexOf(format) !== -1) {\r\n        return format\r\n    }\r\n    if (validFormats.unsupported.indexOf(format) !== -1) {\r\n        incidentOccurred && incidentOccurred(\"W2108\", [format])\r\n    }\r\n}\r\n\r\nfunction getCreatorFunc(format) {\r\n    if (\"SVG\" === format) {\r\n        return _exporter.svg.getData\r\n    } else {\r\n        if (\"PDF\" === format) {\r\n            return _exporter.pdf.getData\r\n        } else {\r\n            return _exporter.image.getData\r\n        }\r\n    }\r\n}\r\n\r\nfunction _print(imageSrc, options) {\r\n    var document = (0, _window.getWindow)().document;\r\n    var iFrame = document.createElement(\"iframe\");\r\n    iFrame.onload = setPrint(imageSrc, options);\r\n    iFrame.style.position = \"fixed\";\r\n    iFrame.style.width = \"0\";\r\n    iFrame.style.height = \"0\";\r\n    iFrame.style.right = \"0\";\r\n    iFrame.style.bottom = \"0\";\r\n    document.body.appendChild(iFrame)\r\n}\r\n\r\nfunction setPrint(imageSrc, options) {\r\n    return function() {\r\n        var _this = this;\r\n        var window = this.contentWindow;\r\n        var img = window.document.createElement(\"img\");\r\n        window.document.body.appendChild(img);\r\n        var removeFrame = function() {\r\n            _this.parentElement.removeChild(_this)\r\n        };\r\n        img.addEventListener(\"load\", function() {\r\n            window.focus();\r\n            window.print()\r\n        });\r\n        img.addEventListener(\"error\", removeFrame);\r\n        window.addEventListener(\"afterprint\", function() {\r\n            setTimeout(removeFrame, 0)\r\n        });\r\n        img.src = imageSrc\r\n    }\r\n}\r\n\r\nfunction getItemAttributes(options, type, itemIndex) {\r\n    var x = BUTTON_SIZE - LIST_WIDTH;\r\n    var y = BUTTON_SIZE + LIST_PADDING_TOP + LIST_STROKE_WIDTH + itemIndex * MENU_ITEM_HEIGHT;\r\n    var attr = {\r\n        rect: {\r\n            width: LIST_WIDTH - 2 * LIST_STROKE_WIDTH,\r\n            height: MENU_ITEM_HEIGHT,\r\n            x: x + LIST_STROKE_WIDTH,\r\n            y: y\r\n        },\r\n        text: {\r\n            x: x + (options.rtl ? LIST_WIDTH - HORIZONTAL_TEXT_MARGIN : HORIZONTAL_TEXT_MARGIN),\r\n            y: y + MENU_ITEM_HEIGHT - VERTICAL_TEXT_MARGIN\r\n        }\r\n    };\r\n    if (\"printing\" === type) {\r\n        attr.separator = {\r\n            stroke: options.button.default.borderColor,\r\n            \"stroke-width\": LIST_STROKE_WIDTH,\r\n            cursor: \"pointer\",\r\n            sharp: \"v\",\r\n            d: \"M \" + x + \" \" + (y + MENU_ITEM_HEIGHT - LIST_STROKE_WIDTH) + \" L \" + (x + LIST_WIDTH) + \" \" + (y + MENU_ITEM_HEIGHT - LIST_STROKE_WIDTH)\r\n        }\r\n    }\r\n    return attr\r\n}\r\n\r\nfunction createMenuItem(renderer, options, settings) {\r\n    var itemData = {};\r\n    var type = settings.type;\r\n    var format = settings.format;\r\n    var attr = getItemAttributes(options, type, settings.itemIndex);\r\n    var fontStyle = (0, _utils.patchFontOptions)(options.font);\r\n    fontStyle[\"pointer-events\"] = \"none\";\r\n    var menuItem = renderer.g().attr({\r\n        \"class\": EXPORT_CSS_CLASS + \"-list-item\"\r\n    });\r\n    itemData[EXPORT_DATA_KEY] = type;\r\n    if (format) {\r\n        itemData[FORMAT_DATA_KEY] = format\r\n    }\r\n    var rect = renderer.rect();\r\n    rect.attr(attr.rect).css({\r\n        cursor: \"pointer\",\r\n        \"pointer-events\": \"all\"\r\n    }).data(itemData);\r\n    rect.on(_hover.start + \".export\", function() {\r\n        return rect.attr({\r\n            fill: options.button.hover.backgroundColor\r\n        })\r\n    }).on(_hover.end + \".export\", function() {\r\n        return rect.attr({\r\n            fill: null\r\n        })\r\n    });\r\n    rect.append(menuItem);\r\n    var text = renderer.text(settings.text).css(fontStyle).attr(attr.text).append(menuItem);\r\n    if (\"printing\" === type) {\r\n        renderer.path(null, \"line\").attr(attr.separator).append(menuItem)\r\n    }\r\n    return {\r\n        g: menuItem,\r\n        rect: rect,\r\n        resetState: function() {\r\n            return rect.attr({\r\n                fill: null\r\n            })\r\n        },\r\n        fixPosition: function() {\r\n            var textBBox = text.getBBox();\r\n            text.move(attr.text.x - textBBox.x - (options.rtl ? textBBox.width : 0))\r\n        }\r\n    }\r\n}\r\n\r\nfunction createMenuItems(renderer, options) {\r\n    var items = [];\r\n    if (options.printingEnabled) {\r\n        items.push(createMenuItem(renderer, options, {\r\n            type: \"printing\",\r\n            text: _message.default.format(\"vizExport-printingButtonText\"),\r\n            itemIndex: items.length\r\n        }))\r\n    }\r\n    items = options.formats.reduce(function(r, format) {\r\n        r.push(createMenuItem(renderer, options, {\r\n            type: \"exporting\",\r\n            text: _message.default.getFormatter(\"vizExport-exportButtonText\")(format),\r\n            format: format,\r\n            itemIndex: r.length\r\n        }));\r\n        return r\r\n    }, items);\r\n    return items\r\n}\r\n\r\nfunction getBackgroundColorFromMarkup(markup) {\r\n    var parsedMarkup = GET_COLOR_REGEX.exec(markup);\r\n    return null === parsedMarkup || void 0 === parsedMarkup ? void 0 : parsedMarkup[1]\r\n}\r\nvar exportFromMarkup = function(markup, options) {\r\n    options.format = validateFormat(options.format) || DEFAULT_EXPORT_FORMAT;\r\n    options.fileName = options.fileName || \"file\";\r\n    options.exportingAction = options.onExporting;\r\n    options.exportedAction = options.onExported;\r\n    options.fileSavingAction = options.onFileSaving;\r\n    options.margin = (0, _type.isDefined)(options.margin) ? options.margin : MARGIN;\r\n    options.backgroundColor = (0, _type.isDefined)(options.backgroundColor) ? options.backgroundColor : getBackgroundColorFromMarkup(markup) || (0, _themes.getTheme)().backgroundColor;\r\n    (0, _exporter.export)(markup, options, getCreatorFunc(options.format))\r\n};\r\nexports.exportFromMarkup = exportFromMarkup;\r\nvar getMarkup = function(widgets) {\r\n    return combineMarkups(widgets).markup\r\n};\r\nexports.getMarkup = getMarkup;\r\nvar exportWidgets = function(widgets, options) {\r\n    options = options || {};\r\n    var markupInfo = combineMarkups(widgets, {\r\n        gridLayout: options.gridLayout,\r\n        verticalAlignment: options.verticalAlignment,\r\n        horizontalAlignment: options.horizontalAlignment\r\n    });\r\n    options.width = markupInfo.width;\r\n    options.height = markupInfo.height;\r\n    exportFromMarkup(markupInfo.markup, options)\r\n};\r\nexports.exportWidgets = exportWidgets;\r\nvar combineMarkups = function(widgets) {\r\n    var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n    if (!Array.isArray(widgets)) {\r\n        widgets = [\r\n            [widgets]\r\n        ]\r\n    } else {\r\n        if (!Array.isArray(widgets[0])) {\r\n            widgets = widgets.map(function(item) {\r\n                return [item]\r\n            })\r\n        }\r\n    }\r\n    var compactView = !options.gridLayout;\r\n    var exportItems = widgets.reduce(function(r, row, rowIndex) {\r\n        var rowInfo = row.reduce(function(r, item, colIndex) {\r\n            var size = item.getSize();\r\n            var backgroundColor = item.option(\"backgroundColor\") || (0, _themes.getTheme)(item.option(\"theme\")).backgroundColor;\r\n            backgroundColor && r.backgroundColors.indexOf(backgroundColor) === -1 && r.backgroundColors.push(backgroundColor);\r\n            r.hOffset = r.width;\r\n            r.width += size.width;\r\n            r.height = Math.max(r.height, size.height);\r\n            r.itemWidth = Math.max(r.itemWidth, size.width);\r\n            r.items.push({\r\n                markup: item.svg(),\r\n                width: size.width,\r\n                height: size.height,\r\n                c: colIndex,\r\n                r: rowIndex,\r\n                hOffset: r.hOffset\r\n            });\r\n            return r\r\n        }, {\r\n            items: [],\r\n            height: 0,\r\n            itemWidth: 0,\r\n            hOffset: 0,\r\n            width: 0,\r\n            backgroundColors: r.backgroundColors\r\n        });\r\n        r.rowOffsets.push(r.totalHeight);\r\n        r.rowHeights.push(rowInfo.height);\r\n        r.totalHeight += rowInfo.height;\r\n        r.items = r.items.concat(rowInfo.items);\r\n        r.itemWidth = Math.max(r.itemWidth, rowInfo.itemWidth);\r\n        r.maxItemLen = Math.max(r.maxItemLen, rowInfo.items.length);\r\n        r.totalWidth = compactView ? Math.max(r.totalWidth, rowInfo.width) : r.maxItemLen * r.itemWidth;\r\n        return r\r\n    }, {\r\n        items: [],\r\n        rowOffsets: [],\r\n        rowHeights: [],\r\n        itemWidth: 0,\r\n        totalHeight: 0,\r\n        maxItemLen: 0,\r\n        totalWidth: 0,\r\n        backgroundColors: []\r\n    });\r\n    var backgroundColor = 'data-backgroundcolor=\"'.concat(1 === exportItems.backgroundColors.length ? exportItems.backgroundColors[0] : \"\", '\" ');\r\n    var getVOffset = function(item) {\r\n        var align = options.verticalAlignment;\r\n        var dy = exportItems.rowHeights[item.r] - item.height;\r\n        return exportItems.rowOffsets[item.r] + (\"bottom\" === align ? dy : \"center\" === align ? dy / 2 : 0)\r\n    };\r\n    var getHOffset = function(item) {\r\n        if (compactView) {\r\n            return item.hOffset\r\n        }\r\n        var align = options.horizontalAlignment;\r\n        var colWidth = exportItems.itemWidth;\r\n        var dx = colWidth - item.width;\r\n        return item.c * colWidth + (\"right\" === align ? dx : \"center\" === align ? dx / 2 : 0)\r\n    };\r\n    var totalHeight = exportItems.totalHeight;\r\n    var totalWidth = exportItems.totalWidth;\r\n    return {\r\n        markup: \"<svg \" + backgroundColor + 'height=\"' + totalHeight + '\" width=\"' + totalWidth + '\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">' + exportItems.items.map(function(item) {\r\n            return '<g transform=\"translate('.concat(getHOffset(item), \",\").concat(getVOffset(item), ')\">').concat(item.markup, \"</g>\")\r\n        }).join(\"\") + \"</svg>\",\r\n        width: totalWidth,\r\n        height: totalHeight\r\n    }\r\n};\r\nexports.combineMarkups = combineMarkups;\r\nvar ExportMenu = function(params) {\r\n    var renderer = this._renderer = params.renderer;\r\n    this._incidentOccurred = params.incidentOccurred;\r\n    this._exportTo = params.exportTo;\r\n    this._print = params.print;\r\n    this._shadow = renderer.shadowFilter(\"-50%\", \"-50%\", \"200%\", \"200%\", SHADOW_OFFSET, 6, SHADOW_BLUR);\r\n    this._shadow.attr({\r\n        opacity: .8\r\n    });\r\n    this._group = renderer.g().attr({\r\n        \"class\": EXPORT_CSS_CLASS,\r\n        \"hidden-for-export\": true\r\n    }).linkOn(renderer.root, {\r\n        name: \"export-menu\",\r\n        after: \"peripheral\"\r\n    });\r\n    this._buttonGroup = renderer.g().attr({\r\n        \"class\": EXPORT_CSS_CLASS + \"-button\"\r\n    }).append(this._group);\r\n    this._listGroup = renderer.g().attr({\r\n        \"class\": EXPORT_CSS_CLASS + \"-list\"\r\n    }).append(this._group);\r\n    this._overlay = renderer.rect(-LIST_WIDTH + BUTTON_SIZE, BUTTON_SIZE + LIST_PADDING_TOP, LIST_WIDTH, 0);\r\n    this._overlay.attr({\r\n        \"stroke-width\": LIST_STROKE_WIDTH,\r\n        cursor: \"pointer\",\r\n        rx: 4,\r\n        ry: 4,\r\n        filter: this._shadow.id\r\n    });\r\n    this._overlay.data({\r\n        \"export-element-type\": \"list\"\r\n    });\r\n    this.validFormats = getValidFormats();\r\n    this._subscribeEvents()\r\n};\r\nexports.ExportMenu = ExportMenu;\r\n(0, _extend.extend)(ExportMenu.prototype, {\r\n    getLayoutOptions: function() {\r\n        if (this._hiddenDueToLayout) {\r\n            return {\r\n                width: 0,\r\n                height: 0,\r\n                cutSide: \"vertical\",\r\n                cutLayoutSide: \"top\"\r\n            }\r\n        }\r\n        var bBox = this._buttonGroup.getBBox();\r\n        bBox.cutSide = \"vertical\";\r\n        bBox.cutLayoutSide = \"top\";\r\n        bBox.height += MARGIN;\r\n        bBox.position = {\r\n            vertical: \"top\",\r\n            horizontal: \"right\"\r\n        };\r\n        bBox.verticalAlignment = \"top\";\r\n        bBox.horizontalAlignment = \"right\";\r\n        return bBox\r\n    },\r\n    shift: function(_, y) {\r\n        this._group.attr({\r\n            translateY: this._group.attr(\"translateY\") + y\r\n        })\r\n    },\r\n    draw: function(width, height, canvas) {\r\n        this._group.move(width - BUTTON_SIZE - SHADOW_OFFSET - SHADOW_BLUR + canvas.left, Math.floor(height / 2 - BUTTON_SIZE / 2));\r\n        var layoutOptions = this.getLayoutOptions();\r\n        if (layoutOptions.width > width || layoutOptions.height > height) {\r\n            this.freeSpace()\r\n        }\r\n        return this\r\n    },\r\n    show: function() {\r\n        this._group.linkAppend()\r\n    },\r\n    hide: function() {\r\n        this._group.linkRemove()\r\n    },\r\n    setOptions: function(options) {\r\n        var _this2 = this;\r\n        this._options = options;\r\n        if (options.formats) {\r\n            options.formats = options.formats.reduce(function(r, format) {\r\n                format = validateFormat(format, _this2._incidentOccurred, _this2.validFormats);\r\n                format && r.push(format);\r\n                return r\r\n            }, [])\r\n        } else {\r\n            options.formats = this.validFormats.supported.slice()\r\n        }\r\n        options.printingEnabled = void 0 === options.printingEnabled ? true : options.printingEnabled;\r\n        if (options.enabled && (options.formats.length || options.printingEnabled)) {\r\n            this.show();\r\n            this._updateButton();\r\n            this._updateList();\r\n            this._hideList()\r\n        } else {\r\n            this.hide()\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._unsubscribeEvents();\r\n        this._group.linkRemove().linkOff();\r\n        this._group.dispose();\r\n        this._shadow.dispose()\r\n    },\r\n    layoutOptions: function() {\r\n        return this._options.enabled && {\r\n            horizontalAlignment: \"right\",\r\n            verticalAlignment: \"top\",\r\n            weak: true\r\n        }\r\n    },\r\n    measure: function() {\r\n        this._fillSpace();\r\n        var margin = this._options.button.margin;\r\n        return [BUTTON_SIZE + margin.left + margin.right, BUTTON_SIZE + margin.top + margin.bottom]\r\n    },\r\n    move: function(rect) {\r\n        var margin = this._options.button.margin;\r\n        this._group.attr({\r\n            translateX: Math.round(rect[0]) + margin.left,\r\n            translateY: Math.round(rect[1]) + margin.top\r\n        })\r\n    },\r\n    _fillSpace: function() {\r\n        this._hiddenDueToLayout = false;\r\n        this.show()\r\n    },\r\n    freeSpace: function() {\r\n        this._incidentOccurred(\"W2107\");\r\n        this._hiddenDueToLayout = true;\r\n        this.hide()\r\n    },\r\n    _hideList: function() {\r\n        this._listGroup.remove();\r\n        this._listShown = false;\r\n        this._setButtonState(\"default\");\r\n        this._menuItems.forEach(function(item) {\r\n            return item.resetState()\r\n        })\r\n    },\r\n    _showList: function() {\r\n        this._listGroup.append(this._group);\r\n        this._listShown = true;\r\n        this._menuItems.forEach(function(item) {\r\n            return item.fixPosition()\r\n        })\r\n    },\r\n    _setButtonState: function(state) {\r\n        var style = this._options.button[state];\r\n        this._button.attr({\r\n            stroke: style.borderColor,\r\n            fill: style.backgroundColor\r\n        });\r\n        this._icon.attr({\r\n            fill: style.color\r\n        })\r\n    },\r\n    _subscribeEvents: function() {\r\n        var _this3 = this;\r\n        this._renderer.root.on(_pointer.default.up + \".export\", function(e) {\r\n            var elementType = e.target[EXPORT_DATA_KEY];\r\n            if (!elementType) {\r\n                if (_this3._button) {\r\n                    _this3._hideList()\r\n                }\r\n                return\r\n            }\r\n            if (\"button\" === elementType) {\r\n                if (_this3._listShown) {\r\n                    _this3._setButtonState(\"default\");\r\n                    _this3._hideList()\r\n                } else {\r\n                    _this3._setButtonState(\"focus\");\r\n                    _this3._showList()\r\n                }\r\n            } else {\r\n                if (\"printing\" === elementType) {\r\n                    _this3._print();\r\n                    _this3._hideList()\r\n                } else {\r\n                    if (\"exporting\" === elementType) {\r\n                        _this3._exportTo(e.target[FORMAT_DATA_KEY]);\r\n                        _this3._hideList()\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        this._listGroup.on(pointerActions, function(e) {\r\n            return e.stopPropagation()\r\n        });\r\n        this._buttonGroup.on(_pointer.default.enter, function() {\r\n            return _this3._setButtonState(\"hover\")\r\n        });\r\n        this._buttonGroup.on(_pointer.default.leave, function() {\r\n            return _this3._setButtonState(_this3._listShown ? \"focus\" : \"default\")\r\n        });\r\n        this._buttonGroup.on(_pointer.default.down + \".export\", function() {\r\n            return _this3._setButtonState(\"active\")\r\n        })\r\n    },\r\n    _unsubscribeEvents: function() {\r\n        this._renderer.root.off(\".export\");\r\n        this._listGroup.off();\r\n        this._buttonGroup.off()\r\n    },\r\n    _updateButton: function() {\r\n        var renderer = this._renderer;\r\n        var options = this._options;\r\n        var exportData = {\r\n            \"export-element-type\": \"button\"\r\n        };\r\n        if (!this._button) {\r\n            this._button = renderer.rect(0, 0, BUTTON_SIZE, BUTTON_SIZE).append(this._buttonGroup);\r\n            this._button.attr({\r\n                rx: 4,\r\n                ry: 4,\r\n                fill: options.button.default.backgroundColor,\r\n                stroke: options.button.default.borderColor,\r\n                \"stroke-width\": 1,\r\n                cursor: \"pointer\"\r\n            });\r\n            this._button.data(exportData);\r\n            this._icon = renderer.path(ICON_COORDS).append(this._buttonGroup);\r\n            this._icon.attr({\r\n                fill: options.button.default.color,\r\n                cursor: \"pointer\"\r\n            });\r\n            this._icon.data(exportData);\r\n            this._buttonGroup.setTitle(_message.default.format(\"vizExport-titleMenuText\"))\r\n        }\r\n    },\r\n    _updateList: function() {\r\n        var options = this._options;\r\n        var buttonDefault = options.button.default;\r\n        var listGroup = this._listGroup;\r\n        var items = createMenuItems(this._renderer, options);\r\n        this._shadow.attr({\r\n            color: options.shadowColor\r\n        });\r\n        this._overlay.attr({\r\n            height: items.length * MENU_ITEM_HEIGHT + 2 * LIST_STROKE_WIDTH,\r\n            fill: buttonDefault.backgroundColor,\r\n            stroke: buttonDefault.borderColor\r\n        });\r\n        listGroup.clear();\r\n        this._overlay.append(listGroup);\r\n        items.forEach(function(item) {\r\n            return item.g.append(listGroup)\r\n        });\r\n        this._menuItems = items\r\n    }\r\n});\r\n\r\nfunction getExportOptions(widget, exportOptions, fileName, format) {\r\n    if (format || exportOptions.format) {\r\n        format = validateFormat(format || exportOptions.format, widget._incidentOccurred)\r\n    }\r\n    return {\r\n        format: format || DEFAULT_EXPORT_FORMAT,\r\n        fileName: fileName || exportOptions.fileName || \"file\",\r\n        proxyUrl: exportOptions.proxyUrl,\r\n        backgroundColor: exportOptions.backgroundColor,\r\n        width: widget._canvas.width,\r\n        height: widget._canvas.height,\r\n        margin: exportOptions.margin,\r\n        svgToCanvas: exportOptions.svgToCanvas,\r\n        forceProxy: exportOptions.forceProxy,\r\n        exportingAction: widget._createActionByOption(\"onExporting\"),\r\n        exportedAction: widget._createActionByOption(\"onExported\"),\r\n        fileSavingAction: widget._createActionByOption(\"onFileSaving\")\r\n    }\r\n}\r\nvar plugin = {\r\n    name: \"export\",\r\n    init: function() {\r\n        var _this4 = this;\r\n        this._exportMenu = new ExportMenu({\r\n            renderer: this._renderer,\r\n            incidentOccurred: this._incidentOccurred,\r\n            print: function() {\r\n                return _this4.print()\r\n            },\r\n            exportTo: function(format) {\r\n                return _this4.exportTo(void 0, format)\r\n            }\r\n        });\r\n        this._layout.add(this._exportMenu)\r\n    },\r\n    dispose: function() {\r\n        this._exportMenu.dispose()\r\n    },\r\n    members: {\r\n        _getExportMenuOptions: function() {\r\n            return (0, _extend.extend)({}, this._getOption(\"export\"), {\r\n                rtl: this._getOption(\"rtlEnabled\", true)\r\n            })\r\n        },\r\n        _disablePointerEvents: function() {\r\n            var pointerEventsValue = this._renderer.root.attr(\"pointer-events\");\r\n            this._renderer.root.attr({\r\n                \"pointer-events\": \"none\"\r\n            });\r\n            return pointerEventsValue\r\n        },\r\n        exportTo: function(fileName, format) {\r\n            var _this5 = this;\r\n            var menu = this._exportMenu;\r\n            var options = getExportOptions(this, this._getOption(\"export\") || {}, fileName, format);\r\n            menu && menu.hide();\r\n            var pointerEventsValue = this._disablePointerEvents();\r\n            var promise = (0, _exporter.export)(this._renderer.root.element, options, getCreatorFunc(options.format)).fail(_console.logger.error).always(function() {\r\n                _this5._renderer.root.attr({\r\n                    \"pointer-events\": pointerEventsValue\r\n                })\r\n            });\r\n            menu && menu.show();\r\n            return promise\r\n        },\r\n        print: function() {\r\n            var _this6 = this;\r\n            var menu = this._exportMenu;\r\n            var options = getExportOptions(this, this._getOption(\"export\") || {});\r\n            options.exportingAction = null;\r\n            options.exportedAction = null;\r\n            options.margin = 0;\r\n            options.format = \"PNG\";\r\n            options.forceProxy = true;\r\n            options.fileSavingAction = function(eventArgs) {\r\n                _print(\"data:image/png;base64,\".concat(eventArgs.data), {\r\n                    __test: options.__test\r\n                });\r\n                eventArgs.cancel = true\r\n            };\r\n            var pointerEventsValue = this._disablePointerEvents();\r\n            menu && menu.hide();\r\n            var promise = (0, _exporter.export)(this._renderer.root.element, options, getCreatorFunc(options.format)).fail(_console.logger.error).always(function() {\r\n                _this6._renderer.root.attr({\r\n                    \"pointer-events\": pointerEventsValue\r\n                })\r\n            });\r\n            menu && menu.show();\r\n            return promise\r\n        }\r\n    },\r\n    customize: function(constructor) {\r\n        var proto = constructor.prototype;\r\n        constructor.addChange({\r\n            code: \"EXPORT\",\r\n            handler: function() {\r\n                this._exportMenu.setOptions(this._getExportMenuOptions());\r\n                this._change([\"LAYOUT\"])\r\n            },\r\n            isThemeDependent: true,\r\n            isOptionChange: true,\r\n            option: \"export\"\r\n        });\r\n        proto._optionChangesMap.onExporting = \"EXPORT\";\r\n        proto._optionChangesMap.onExported = \"EXPORT\";\r\n        proto._optionChangesMap.onFileSaving = \"EXPORT\"\r\n    },\r\n    fontFields: [\"export.font\"]\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (ui/sortable.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _draggable = _interopRequireDefault(require(\"./draggable\"));\r\nvar _element = require(\"../core/element\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _position = require(\"../core/utils/position\");\r\nvar _translator = require(\"../animation/translator\");\r\nvar _fx = _interopRequireDefault(require(\"../animation/fx\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar SORTABLE = \"dxSortable\";\r\nvar PLACEHOLDER_CLASS = \"placeholder\";\r\nvar CLONE_CLASS = \"clone\";\r\nvar isElementVisible = function(itemElement) {\r\n    return (0, _renderer.default)(itemElement).is(\":visible\")\r\n};\r\nvar animate = function(element, config) {\r\n    var _config$to, _config$to2;\r\n    if (!element) {\r\n        return\r\n    }\r\n    var left = (null === (_config$to = config.to) || void 0 === _config$to ? void 0 : _config$to.left) || 0;\r\n    var top = (null === (_config$to2 = config.to) || void 0 === _config$to2 ? void 0 : _config$to2.top) || 0;\r\n    element.style.transform = \"translate(\".concat(left, \"px,\").concat(top, \"px)\");\r\n    element.style.transition = _fx.default.off ? \"\" : \"transform \".concat(config.duration, \"ms \").concat(config.easing)\r\n};\r\nvar stopAnimation = function(element) {\r\n    if (!element) {\r\n        return\r\n    }\r\n    element.style.transform = \"\";\r\n    element.style.transition = \"\"\r\n};\r\nvar Sortable = _draggable.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            clone: true,\r\n            filter: \"> *\",\r\n            itemOrientation: \"vertical\",\r\n            dropFeedbackMode: \"push\",\r\n            allowDropInsideItem: false,\r\n            allowReordering: true,\r\n            moveItemOnDrop: false,\r\n            onDragChange: null,\r\n            onAdd: null,\r\n            onRemove: null,\r\n            onReorder: null,\r\n            onPlaceholderPrepared: null,\r\n            animation: {\r\n                type: \"slide\",\r\n                duration: 300,\r\n                easing: \"ease\"\r\n            },\r\n            fromIndex: null,\r\n            toIndex: null,\r\n            dropInsideItem: false,\r\n            itemPoints: null,\r\n            fromIndexOffset: 0,\r\n            offset: 0,\r\n            autoUpdate: false,\r\n            draggableElementSize: 0\r\n        })\r\n    },\r\n    reset: function() {\r\n        this.option({\r\n            dropInsideItem: false,\r\n            toIndex: null,\r\n            fromIndex: null,\r\n            itemPoints: null,\r\n            fromIndexOffset: 0,\r\n            draggableElementSize: 0\r\n        });\r\n        if (this._$placeholderElement) {\r\n            this._$placeholderElement.remove()\r\n        }\r\n        this._$placeholderElement = null;\r\n        if (!this._isIndicateMode() && this._$modifiedItem) {\r\n            this._$modifiedItem.css(\"marginBottom\", this._modifiedItemMargin);\r\n            this._$modifiedItem = null\r\n        }\r\n    },\r\n    _getPrevVisibleItem: function(items, index) {\r\n        return items.slice(0, index).reverse().filter(isElementVisible)[0]\r\n    },\r\n    _dragStartHandler: function(e) {\r\n        this.callBase.apply(this, arguments);\r\n        if (true === e.cancel) {\r\n            return\r\n        }\r\n        var $sourceElement = this._getSourceElement();\r\n        this._updateItemPoints();\r\n        this.option(\"fromIndex\", this._getElementIndex($sourceElement));\r\n        this.option(\"fromIndexOffset\", this.option(\"offset\"))\r\n    },\r\n    _dragEnterHandler: function() {\r\n        this.callBase.apply(this, arguments);\r\n        if (this === this._getSourceDraggable()) {\r\n            return\r\n        }\r\n        this._updateItemPoints();\r\n        this.option(\"fromIndex\", -1);\r\n        if (!this._isIndicateMode()) {\r\n            var itemPoints = this.option(\"itemPoints\");\r\n            var lastItemPoint = itemPoints[itemPoints.length - 1];\r\n            if (lastItemPoint) {\r\n                var $element = this.$element();\r\n                var $sourceElement = this._getSourceElement();\r\n                var isVertical = this._isVerticalOrientation();\r\n                var sourceElementSize = isVertical ? $sourceElement.outerHeight(true) : $sourceElement.outerWidth(true);\r\n                var scrollSize = $element.get(0)[isVertical ? \"scrollHeight\" : \"scrollWidth\"];\r\n                var scrollPosition = $element.get(0)[isVertical ? \"scrollTop\" : \"scrollLeft\"];\r\n                var positionProp = isVertical ? \"top\" : \"left\";\r\n                var lastPointPosition = lastItemPoint[positionProp];\r\n                var elementPosition = $element.offset()[positionProp];\r\n                var freeSize = elementPosition + scrollSize - scrollPosition - lastPointPosition;\r\n                if (freeSize < sourceElementSize) {\r\n                    if (isVertical) {\r\n                        var items = this._getItems();\r\n                        var $lastItem = (0, _renderer.default)(this._getPrevVisibleItem(items));\r\n                        this._$modifiedItem = $lastItem;\r\n                        this._modifiedItemMargin = $lastItem.get(0).style.marginBottom;\r\n                        $lastItem.css(\"marginBottom\", sourceElementSize - freeSize);\r\n                        var $sortable = $lastItem.closest(\".dx-sortable\");\r\n                        var sortable = $sortable.data(\"dxScrollable\") || $sortable.data(\"dxScrollView\");\r\n                        sortable && sortable.update()\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    dragEnter: function() {\r\n        if (this !== this._getTargetDraggable()) {\r\n            this.option(\"toIndex\", -1)\r\n        }\r\n    },\r\n    dragLeave: function() {\r\n        if (this !== this._getTargetDraggable()) {\r\n            this.option(\"toIndex\", this.option(\"fromIndex\"))\r\n        }\r\n    },\r\n    _isInsideTargetDraggable: function(event) {\r\n        var $targetDraggable = this._getTargetDraggable().$element();\r\n        var $scrollable = this._getScrollable($targetDraggable);\r\n        if ($scrollable) {\r\n            var offset = $scrollable.offset();\r\n            var validY = offset.top + $scrollable.height() >= event.pageY && offset.top <= event.pageY;\r\n            var validX = offset.left + $scrollable.width() >= event.pageX && offset.left <= event.pageX;\r\n            return validY && validX\r\n        }\r\n        return true\r\n    },\r\n    dragEnd: function(sourceEvent) {\r\n        var $sourceElement = this._getSourceElement();\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        var isSourceDraggable = sourceDraggable.NAME !== this.NAME;\r\n        var toIndex = this.option(\"toIndex\");\r\n        var isInsideTargetDraggable = this._isInsideTargetDraggable(sourceEvent.event);\r\n        if (null !== toIndex && toIndex >= 0 && isInsideTargetDraggable) {\r\n            var cancelAdd;\r\n            var cancelRemove;\r\n            if (sourceDraggable !== this) {\r\n                cancelAdd = this._fireAddEvent(sourceEvent);\r\n                if (!cancelAdd) {\r\n                    cancelRemove = this._fireRemoveEvent(sourceEvent)\r\n                }\r\n            }\r\n            if (isSourceDraggable) {\r\n                (0, _translator.resetPosition)($sourceElement)\r\n            }\r\n            if (this.option(\"moveItemOnDrop\")) {\r\n                !cancelAdd && this._moveItem($sourceElement, toIndex, cancelRemove)\r\n            }\r\n            if (sourceDraggable === this) {\r\n                return this._fireReorderEvent(sourceEvent)\r\n            }\r\n        }\r\n        return (new _deferred.Deferred).resolve()\r\n    },\r\n    dragMove: function(e, scrollBy) {\r\n        var itemPoints = this.option(\"itemPoints\");\r\n        if (!itemPoints) {\r\n            return\r\n        }\r\n        this._correctItemPoints(scrollBy);\r\n        var isVertical = this._isVerticalOrientation();\r\n        var axisName = isVertical ? \"top\" : \"left\";\r\n        var cursorPosition = isVertical ? e.pageY : e.pageX;\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var itemPoint;\r\n        for (var i = itemPoints.length - 1; i >= 0; i--) {\r\n            var centerPosition = itemPoints[i + 1] && (itemPoints[i][axisName] + itemPoints[i + 1][axisName]) / 2;\r\n            if ((!isVertical && rtlEnabled ? cursorPosition > centerPosition : centerPosition > cursorPosition) || void 0 === centerPosition) {\r\n                itemPoint = itemPoints[i]\r\n            } else {\r\n                break\r\n            }\r\n        }\r\n        if (itemPoint) {\r\n            this._updatePlaceholderPosition(e, itemPoint);\r\n            if (this._verticalScrollHelper.isScrolling() && this._isIndicateMode()) {\r\n                this._movePlaceholder()\r\n            }\r\n        }\r\n    },\r\n    _isIndicateMode: function() {\r\n        return \"indicate\" === this.option(\"dropFeedbackMode\") || this.option(\"allowDropInsideItem\")\r\n    },\r\n    _createPlaceholder: function() {\r\n        var $placeholderContainer;\r\n        if (this._isIndicateMode()) {\r\n            $placeholderContainer = (0, _renderer.default)(\"<div>\").addClass(this._addWidgetPrefix(PLACEHOLDER_CLASS)).insertBefore(this._getSourceDraggable()._$dragElement)\r\n        }\r\n        this._$placeholderElement = $placeholderContainer;\r\n        return $placeholderContainer\r\n    },\r\n    _getItems: function() {\r\n        var itemsSelector = this._getItemsSelector();\r\n        return this._$content().find(itemsSelector).not(\".\" + this._addWidgetPrefix(PLACEHOLDER_CLASS)).not(\".\" + this._addWidgetPrefix(CLONE_CLASS)).toArray()\r\n    },\r\n    _allowReordering: function() {\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        var targetDraggable = this._getTargetDraggable();\r\n        return sourceDraggable !== targetDraggable || this.option(\"allowReordering\")\r\n    },\r\n    _isValidPoint: function(visibleIndex, draggableVisibleIndex, dropInsideItem) {\r\n        var allowDropInsideItem = this.option(\"allowDropInsideItem\");\r\n        var allowReordering = dropInsideItem || this._allowReordering();\r\n        if (!allowReordering && (0 !== visibleIndex || !allowDropInsideItem)) {\r\n            return false\r\n        }\r\n        if (!this._isIndicateMode()) {\r\n            return true\r\n        }\r\n        return draggableVisibleIndex === -1 || visibleIndex !== draggableVisibleIndex && (dropInsideItem || visibleIndex !== draggableVisibleIndex + 1)\r\n    },\r\n    _getItemPoints: function() {\r\n        var that = this;\r\n        var result = [];\r\n        var $item;\r\n        var offset;\r\n        var itemWidth;\r\n        var rtlEnabled = that.option(\"rtlEnabled\");\r\n        var isVertical = that._isVerticalOrientation();\r\n        var itemElements = that._getItems();\r\n        var visibleItemElements = itemElements.filter(isElementVisible);\r\n        var visibleItemCount = visibleItemElements.length;\r\n        var $draggableItem = this._getDraggableElement();\r\n        var draggableVisibleIndex = visibleItemElements.indexOf($draggableItem.get(0));\r\n        if (visibleItemCount) {\r\n            for (var i = 0; i <= visibleItemCount; i++) {\r\n                var needCorrectLeftPosition = !isVertical && rtlEnabled ^ i === visibleItemCount;\r\n                var needCorrectTopPosition = isVertical && i === visibleItemCount;\r\n                if (i < visibleItemCount) {\r\n                    $item = (0, _renderer.default)(visibleItemElements[i]);\r\n                    offset = $item.offset();\r\n                    itemWidth = $item.outerWidth()\r\n                }\r\n                result.push({\r\n                    dropInsideItem: false,\r\n                    left: offset.left + (needCorrectLeftPosition ? itemWidth : 0),\r\n                    top: offset.top + (needCorrectTopPosition ? result[i - 1].height : 0),\r\n                    index: i === visibleItemCount ? itemElements.length : itemElements.indexOf($item.get(0)),\r\n                    $item: $item,\r\n                    width: $item.outerWidth(),\r\n                    height: $item.outerHeight(),\r\n                    isValid: that._isValidPoint(i, draggableVisibleIndex)\r\n                })\r\n            }\r\n            if (this.option(\"allowDropInsideItem\")) {\r\n                var points = result;\r\n                result = [];\r\n                for (var _i = 0; _i < points.length; _i++) {\r\n                    result.push(points[_i]);\r\n                    if (points[_i + 1]) {\r\n                        result.push((0, _extend.extend)({}, points[_i], {\r\n                            dropInsideItem: true,\r\n                            top: Math.floor((points[_i].top + points[_i + 1].top) / 2),\r\n                            left: Math.floor((points[_i].left + points[_i + 1].left) / 2),\r\n                            isValid: this._isValidPoint(_i, draggableVisibleIndex, true)\r\n                        }))\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            result.push({\r\n                dropInsideItem: false,\r\n                index: 0,\r\n                isValid: true\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    _updateItemPoints: function(forceUpdate) {\r\n        if (forceUpdate || this.option(\"autoUpdate\") || !this.option(\"itemPoints\")) {\r\n            this.option(\"itemPoints\", this._getItemPoints())\r\n        }\r\n    },\r\n    _correctItemPoints: function(scrollBy) {\r\n        var itemPoints = this.option(\"itemPoints\");\r\n        if (scrollBy && itemPoints && !this.option(\"autoUpdate\")) {\r\n            var isVertical = this._isVerticalOrientation();\r\n            var positionPropName = isVertical ? \"top\" : \"left\";\r\n            itemPoints.forEach(function(itemPoint) {\r\n                itemPoint[positionPropName] -= scrollBy\r\n            })\r\n        }\r\n    },\r\n    _getElementIndex: function($itemElement) {\r\n        return this._getItems().indexOf($itemElement.get(0))\r\n    },\r\n    _getDragTemplateArgs: function($element) {\r\n        var args = this.callBase.apply(this, arguments);\r\n        args.model.fromIndex = this._getElementIndex($element);\r\n        return args\r\n    },\r\n    _togglePlaceholder: function(value) {\r\n        this._$placeholderElement && this._$placeholderElement.toggle(value)\r\n    },\r\n    _isVerticalOrientation: function() {\r\n        return \"vertical\" === this.option(\"itemOrientation\")\r\n    },\r\n    _normalizeToIndex: function(toIndex, dropInsideItem) {\r\n        var isAnotherDraggable = this._getSourceDraggable() !== this._getTargetDraggable();\r\n        var fromIndex = this.option(\"fromIndex\");\r\n        if (null === toIndex) {\r\n            return fromIndex\r\n        }\r\n        return Math.max(isAnotherDraggable || fromIndex >= toIndex || dropInsideItem ? toIndex : toIndex - 1, 0)\r\n    },\r\n    _updatePlaceholderPosition: function(e, itemPoint) {\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        var toIndex = this._normalizeToIndex(itemPoint.index, itemPoint.dropInsideItem);\r\n        var eventArgs = (0, _extend.extend)(this._getEventArgs(e), {\r\n            toIndex: toIndex,\r\n            dropInsideItem: itemPoint.dropInsideItem\r\n        });\r\n        itemPoint.isValid && this._getAction(\"onDragChange\")(eventArgs);\r\n        if (eventArgs.cancel || !itemPoint.isValid) {\r\n            if (!itemPoint.isValid) {\r\n                this.option({\r\n                    dropInsideItem: false,\r\n                    toIndex: null\r\n                })\r\n            }\r\n            return\r\n        }\r\n        this.option({\r\n            dropInsideItem: itemPoint.dropInsideItem,\r\n            toIndex: itemPoint.index\r\n        });\r\n        this._getAction(\"onPlaceholderPrepared\")((0, _extend.extend)(this._getEventArgs(e), {\r\n            placeholderElement: (0, _element.getPublicElement)(this._$placeholderElement),\r\n            dragElement: (0, _element.getPublicElement)(sourceDraggable._$dragElement)\r\n        }));\r\n        this._updateItemPoints()\r\n    },\r\n    _makeWidthCorrection: function($item, width) {\r\n        this._$scrollable = this._getScrollable($item);\r\n        if (this._$scrollable && this._$scrollable.width() < width) {\r\n            var scrollableWidth = this._$scrollable.width();\r\n            var offsetLeft = $item.offset().left - this._$scrollable.offset().left;\r\n            var offsetRight = scrollableWidth - $item.outerWidth() - offsetLeft;\r\n            if (offsetLeft > 0) {\r\n                width = scrollableWidth - offsetLeft\r\n            } else {\r\n                if (offsetRight > 0) {\r\n                    width = scrollableWidth - offsetRight\r\n                } else {\r\n                    width = scrollableWidth\r\n                }\r\n            }\r\n        }\r\n        return width\r\n    },\r\n    _updatePlaceholderSizes: function($placeholderElement, itemElement) {\r\n        var that = this;\r\n        var dropInsideItem = that.option(\"dropInsideItem\");\r\n        var $item = (0, _renderer.default)(itemElement);\r\n        var isVertical = that._isVerticalOrientation();\r\n        var width = \"\";\r\n        var height = \"\";\r\n        $placeholderElement.toggleClass(that._addWidgetPrefix(\"placeholder-inside\"), dropInsideItem);\r\n        if (isVertical || dropInsideItem) {\r\n            width = $item.outerWidth()\r\n        }\r\n        if (!isVertical || dropInsideItem) {\r\n            height = $item.outerHeight()\r\n        }\r\n        width = that._makeWidthCorrection($item, width);\r\n        $placeholderElement.css({\r\n            width: width,\r\n            height: height\r\n        })\r\n    },\r\n    _moveItem: function($itemElement, index, cancelRemove) {\r\n        var $prevTargetItemElement;\r\n        var $itemElements = this._getItems();\r\n        var $targetItemElement = $itemElements[index];\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        if (cancelRemove) {\r\n            $itemElement = $itemElement.clone();\r\n            sourceDraggable._toggleDragSourceClass(false, $itemElement)\r\n        }\r\n        if (!$targetItemElement) {\r\n            $prevTargetItemElement = $itemElements[index - 1]\r\n        }\r\n        this._moveItemCore($itemElement, $targetItemElement, $prevTargetItemElement)\r\n    },\r\n    _moveItemCore: function($targetItem, item, prevItem) {\r\n        if (!item && !prevItem) {\r\n            $targetItem.appendTo(this.$element())\r\n        } else {\r\n            if (prevItem) {\r\n                $targetItem.insertAfter((0, _renderer.default)(prevItem))\r\n            } else {\r\n                $targetItem.insertBefore((0, _renderer.default)(item))\r\n            }\r\n        }\r\n    },\r\n    _getDragStartArgs: function(e, $itemElement) {\r\n        return (0, _extend.extend)(this.callBase.apply(this, arguments), {\r\n            fromIndex: this._getElementIndex($itemElement)\r\n        })\r\n    },\r\n    _getEventArgs: function(e) {\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        var targetDraggable = this._getTargetDraggable();\r\n        var dropInsideItem = targetDraggable.option(\"dropInsideItem\");\r\n        return (0, _extend.extend)(this.callBase.apply(this, arguments), {\r\n            fromIndex: sourceDraggable.option(\"fromIndex\"),\r\n            toIndex: this._normalizeToIndex(targetDraggable.option(\"toIndex\"), dropInsideItem),\r\n            dropInsideItem: dropInsideItem\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        var _this = this;\r\n        var name = args.name;\r\n        switch (name) {\r\n            case \"onDragChange\":\r\n            case \"onPlaceholderPrepared\":\r\n            case \"onAdd\":\r\n            case \"onRemove\":\r\n            case \"onReorder\":\r\n                this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n                break;\r\n            case \"itemOrientation\":\r\n            case \"allowDropInsideItem\":\r\n            case \"moveItemOnDrop\":\r\n            case \"dropFeedbackMode\":\r\n            case \"itemPoints\":\r\n            case \"animation\":\r\n            case \"allowReordering\":\r\n            case \"fromIndexOffset\":\r\n            case \"offset\":\r\n            case \"draggableElementSize\":\r\n            case \"autoUpdate\":\r\n                break;\r\n            case \"fromIndex\":\r\n                if (!this._$sourceElement) {\r\n                    [false, true].forEach(function(isDragSource) {\r\n                        var fromIndex = isDragSource ? args.value : args.previousValue;\r\n                        if (null !== fromIndex) {\r\n                            var $fromElement = (0, _renderer.default)(_this._getItems()[fromIndex]);\r\n                            _this._toggleDragSourceClass(isDragSource, $fromElement)\r\n                        }\r\n                    })\r\n                }\r\n                break;\r\n            case \"dropInsideItem\":\r\n                this._optionChangedDropInsideItem(args);\r\n                break;\r\n            case \"toIndex\":\r\n                this._optionChangedToIndex(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _optionChangedDropInsideItem: function() {\r\n        if (this._isIndicateMode() && this._$placeholderElement) {\r\n            this._movePlaceholder()\r\n        }\r\n    },\r\n    _isPositionVisible: function(position) {\r\n        var $element = this.$element();\r\n        var scrollContainer;\r\n        if (\"hidden\" !== $element.css(\"overflow\")) {\r\n            scrollContainer = $element.get(0)\r\n        } else {\r\n            $element.parents().each(function() {\r\n                if (\"visible\" !== (0, _renderer.default)(this).css(\"overflow\")) {\r\n                    scrollContainer = this;\r\n                    return false\r\n                }\r\n            })\r\n        }\r\n        if (scrollContainer) {\r\n            var clientRect = (0, _position.getBoundingRect)(scrollContainer);\r\n            var isVerticalOrientation = this._isVerticalOrientation();\r\n            var start = isVerticalOrientation ? \"top\" : \"left\";\r\n            var end = isVerticalOrientation ? \"bottom\" : \"right\";\r\n            var window = (0, _window.getWindow)();\r\n            var pageOffset = isVerticalOrientation ? window.pageYOffset : window.pageXOffset;\r\n            if (position[start] < clientRect[start] + pageOffset || position[start] > clientRect[end] + pageOffset) {\r\n                return false\r\n            }\r\n        }\r\n        return true\r\n    },\r\n    _optionChangedToIndex: function(args) {\r\n        var toIndex = args.value;\r\n        if (this._isIndicateMode()) {\r\n            var showPlaceholder = null !== toIndex && toIndex >= 0;\r\n            this._togglePlaceholder(showPlaceholder);\r\n            if (showPlaceholder) {\r\n                this._movePlaceholder()\r\n            }\r\n        } else {\r\n            this._moveItems(args.previousValue, args.value, args.fullUpdate)\r\n        }\r\n    },\r\n    update: function() {\r\n        if (null === this.option(\"fromIndex\") && null === this.option(\"toIndex\")) {\r\n            return\r\n        }\r\n        this._updateItemPoints(true);\r\n        this._updateDragSourceClass();\r\n        var toIndex = this.option(\"toIndex\");\r\n        this._optionChangedToIndex({\r\n            value: toIndex,\r\n            fullUpdate: true\r\n        })\r\n    },\r\n    _updateDragSourceClass: function() {\r\n        var fromIndex = this._getActualFromIndex();\r\n        var $fromElement = (0, _renderer.default)(this._getItems()[fromIndex]);\r\n        if ($fromElement.length) {\r\n            this._$sourceElement = $fromElement;\r\n            this._toggleDragSourceClass(true, $fromElement)\r\n        }\r\n    },\r\n    _makeLeftCorrection: function(left, leftMargin) {\r\n        var that = this;\r\n        var $scrollable = that._$scrollable;\r\n        if ($scrollable && that._isVerticalOrientation() && $scrollable.scrollLeft() > leftMargin) {\r\n            left += $scrollable.scrollLeft() - leftMargin\r\n        }\r\n        return left\r\n    },\r\n    _movePlaceholder: function() {\r\n        var that = this;\r\n        var $placeholderElement = that._$placeholderElement || that._createPlaceholder();\r\n        var items = that._getItems();\r\n        var toIndex = that.option(\"toIndex\");\r\n        var isVerticalOrientation = that._isVerticalOrientation();\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var dropInsideItem = that.option(\"dropInsideItem\");\r\n        var position = null;\r\n        var leftMargin = 0;\r\n        var itemElement = items[toIndex];\r\n        if (itemElement) {\r\n            var $itemElement = (0, _renderer.default)(itemElement);\r\n            position = $itemElement.offset();\r\n            leftMargin = parseFloat($itemElement.css(\"marginLeft\"));\r\n            if (!isVerticalOrientation && rtlEnabled && !dropInsideItem) {\r\n                position.left += $itemElement.outerWidth(true)\r\n            }\r\n        } else {\r\n            var prevVisibleItemElement = itemElement = this._getPrevVisibleItem(items, toIndex);\r\n            if (prevVisibleItemElement) {\r\n                position = (0, _renderer.default)(prevVisibleItemElement).offset();\r\n                if (isVerticalOrientation) {\r\n                    position.top += (0, _renderer.default)(prevVisibleItemElement).outerHeight(true)\r\n                } else {\r\n                    if (!rtlEnabled) {\r\n                        position.left += (0, _renderer.default)(prevVisibleItemElement).outerWidth(true)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        that._updatePlaceholderSizes($placeholderElement, itemElement);\r\n        if (position && !that._isPositionVisible(position)) {\r\n            position = null\r\n        }\r\n        if (position) {\r\n            position.left = that._makeLeftCorrection(position.left, leftMargin);\r\n            that._move(position, $placeholderElement)\r\n        }\r\n        $placeholderElement.toggle(!!position)\r\n    },\r\n    _getPositions: function(items, elementSize, fromIndex, toIndex) {\r\n        var positions = [];\r\n        for (var i = 0; i < items.length; i++) {\r\n            var position = 0;\r\n            if (null === toIndex || null === fromIndex) {\r\n                positions.push(position);\r\n                continue\r\n            }\r\n            if (fromIndex === -1) {\r\n                if (i >= toIndex) {\r\n                    position = elementSize\r\n                }\r\n            } else {\r\n                if (toIndex === -1) {\r\n                    if (i > fromIndex) {\r\n                        position = -elementSize\r\n                    }\r\n                } else {\r\n                    if (fromIndex < toIndex) {\r\n                        if (i > fromIndex && i < toIndex) {\r\n                            position = -elementSize\r\n                        }\r\n                    } else {\r\n                        if (fromIndex > toIndex) {\r\n                            if (i >= toIndex && i < fromIndex) {\r\n                                position = elementSize\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            positions.push(position)\r\n        }\r\n        return positions\r\n    },\r\n    _getDraggableElementSize: function(isVerticalOrientation) {\r\n        var $draggableItem = this._getDraggableElement();\r\n        var size = this.option(\"draggableElementSize\");\r\n        if (!size) {\r\n            size = isVerticalOrientation ? ($draggableItem.outerHeight() + $draggableItem.outerHeight(true)) / 2 : ($draggableItem.outerWidth() + $draggableItem.outerWidth(true)) / 2;\r\n            if (!this.option(\"autoUpdate\")) {\r\n                this.option(\"draggableElementSize\", size)\r\n            }\r\n        }\r\n        return size\r\n    },\r\n    _getActualFromIndex: function() {\r\n        var _this$option = this.option(),\r\n            fromIndex = _this$option.fromIndex,\r\n            fromIndexOffset = _this$option.fromIndexOffset,\r\n            offset = _this$option.offset;\r\n        return null == fromIndex ? null : fromIndex + fromIndexOffset - offset\r\n    },\r\n    _moveItems: function(prevToIndex, toIndex, fullUpdate) {\r\n        var fromIndex = this._getActualFromIndex();\r\n        var isVerticalOrientation = this._isVerticalOrientation();\r\n        var positionPropName = isVerticalOrientation ? \"top\" : \"left\";\r\n        var elementSize = this._getDraggableElementSize(isVerticalOrientation);\r\n        var items = this._getItems();\r\n        var prevPositions = this._getPositions(items, elementSize, fromIndex, prevToIndex);\r\n        var positions = this._getPositions(items, elementSize, fromIndex, toIndex);\r\n        var animationConfig = this.option(\"animation\");\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        for (var i = 0; i < items.length; i++) {\r\n            var itemElement = items[i];\r\n            var prevPosition = prevPositions[i];\r\n            var position = positions[i];\r\n            if (null === toIndex || null === fromIndex) {\r\n                stopAnimation(itemElement)\r\n            } else {\r\n                if (prevPosition !== position || fullUpdate && position) {\r\n                    animate(itemElement, (0, _extend.extend)({}, animationConfig, {\r\n                        to: _defineProperty({}, positionPropName, !isVerticalOrientation && rtlEnabled ? -position : position)\r\n                    }))\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _toggleDragSourceClass: function(value, $element) {\r\n        var $sourceElement = $element || this._$sourceElement;\r\n        this.callBase.apply(this, arguments);\r\n        if (!this._isIndicateMode()) {\r\n            $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source-hidden\"), value)\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        this.reset();\r\n        this.callBase()\r\n    },\r\n    _fireAddEvent: function(sourceEvent) {\r\n        var args = this._getEventArgs(sourceEvent);\r\n        this._getAction(\"onAdd\")(args);\r\n        return args.cancel\r\n    },\r\n    _fireRemoveEvent: function(sourceEvent) {\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        var args = this._getEventArgs(sourceEvent);\r\n        sourceDraggable._getAction(\"onRemove\")(args);\r\n        return args.cancel\r\n    },\r\n    _fireReorderEvent: function(sourceEvent) {\r\n        var args = this._getEventArgs(sourceEvent);\r\n        this._getAction(\"onReorder\")(args);\r\n        return args.promise || (new _deferred.Deferred).resolve()\r\n    }\r\n});\r\n(0, _component_registrator.default)(SORTABLE, Sortable);\r\nvar _default = Sortable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (events/hold.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _index = require(\"./utils/index\");\r\nvar _emitter = _interopRequireDefault(require(\"./core/emitter\"));\r\nvar _emitter_registrator = _interopRequireDefault(require(\"./core/emitter_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abs = Math.abs;\r\nvar HOLD_EVENT_NAME = \"dxhold\";\r\nvar HOLD_TIMEOUT = 750;\r\nvar TOUCH_BOUNDARY = 5;\r\nvar HoldEmitter = _emitter.default.inherit({\r\n    start: function(e) {\r\n        this._startEventData = (0, _index.eventData)(e);\r\n        this._startTimer(e)\r\n    },\r\n    _startTimer: function(e) {\r\n        var holdTimeout = \"timeout\" in this ? this.timeout : HOLD_TIMEOUT;\r\n        this._holdTimer = setTimeout(function() {\r\n            this._requestAccept(e);\r\n            this._fireEvent(HOLD_EVENT_NAME, e, {\r\n                target: e.target\r\n            });\r\n            this._forgetAccept()\r\n        }.bind(this), holdTimeout)\r\n    },\r\n    move: function(e) {\r\n        if (this._touchWasMoved(e)) {\r\n            this._cancel(e)\r\n        }\r\n    },\r\n    _touchWasMoved: function(e) {\r\n        var delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));\r\n        return abs(delta.x) > TOUCH_BOUNDARY || abs(delta.y) > TOUCH_BOUNDARY\r\n    },\r\n    end: function() {\r\n        this._stopTimer()\r\n    },\r\n    _stopTimer: function() {\r\n        clearTimeout(this._holdTimer)\r\n    },\r\n    cancel: function() {\r\n        this._stopTimer()\r\n    },\r\n    dispose: function() {\r\n        this._stopTimer()\r\n    }\r\n});\r\n(0, _emitter_registrator.default)({\r\n    emitter: HoldEmitter,\r\n    bubble: true,\r\n    events: [HOLD_EVENT_NAME]\r\n});\r\nvar _default = {\r\n    name: HOLD_EVENT_NAME\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/virtual_selection_state.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar VirtualSelectionState = function() {\r\n    function VirtualSelectionState(viewDataProvider) {\r\n        _classCallCheck(this, VirtualSelectionState);\r\n        this._viewDataProvider = viewDataProvider;\r\n        this._focusedCell = null;\r\n        this._selectedCells = null;\r\n        this._firstSelectedCell = null\r\n    }\r\n    _createClass(VirtualSelectionState, [{\r\n        key: \"setFocusedCell\",\r\n        value: function(rowIndex, columnIndex, isAllDay) {\r\n            if (rowIndex >= 0) {\r\n                var cell = this._viewDataProvider.getCellData(rowIndex, columnIndex, isAllDay);\r\n                this._focusedCell = cell\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getFocusedCell\",\r\n        value: function(isVerticalGroupOrientation) {\r\n            var _focusedCell = this._focusedCell;\r\n            if (!_focusedCell) {\r\n                return\r\n            }\r\n            var columnIndex = this._getColumnIndexByCellData(_focusedCell, isVerticalGroupOrientation);\r\n            var rowIndex = this._getRowIndexByColumnAndData(_focusedCell, columnIndex, isVerticalGroupOrientation);\r\n            return {\r\n                coordinates: {\r\n                    cellIndex: columnIndex,\r\n                    rowIndex: rowIndex\r\n                },\r\n                cellData: _focusedCell\r\n            }\r\n        }\r\n    }, {\r\n        key: \"setSelectedCells\",\r\n        value: function(lastCellCoordinates) {\r\n            var _this = this;\r\n            var firstCellCoordinates = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0;\r\n            var viewDataProvider = this._viewDataProvider;\r\n            var lastRowIndex = lastCellCoordinates.rowIndex,\r\n                lastColumnIndex = lastCellCoordinates.columnIndex,\r\n                isLastCellAllDay = lastCellCoordinates.allDay;\r\n            if (lastRowIndex < 0) {\r\n                return\r\n            }\r\n            var firstCell = firstCellCoordinates ? viewDataProvider.getCellData(firstCellCoordinates.rowIndex, firstCellCoordinates.columnIndex, firstCellCoordinates.allDay) : this._firstSelectedCell;\r\n            var lastCell = viewDataProvider.getCellData(lastRowIndex, lastColumnIndex, isLastCellAllDay);\r\n            this._firstSelectedCell = firstCell;\r\n            if (firstCell.startDate.getTime() > lastCell.startDate.getTime()) {\r\n                var _ref = [lastCell, firstCell];\r\n                firstCell = _ref[0];\r\n                lastCell = _ref[1]\r\n            }\r\n            var _firstCell = firstCell,\r\n                firstStartDate = _firstCell.startDate,\r\n                firstGroupIndex = _firstCell.groupIndex;\r\n            var _lastCell = lastCell,\r\n                lastStartDate = _lastCell.startDate;\r\n            var cells = viewDataProvider.getCellsByGroupIndexAndAllDay(firstGroupIndex, isLastCellAllDay);\r\n            var filteredCells = cells.reduce(function(selectedCells, cellsRow) {\r\n                var filteredRow = _this._filterCellsByDate(cellsRow, firstStartDate, lastStartDate);\r\n                selectedCells.push.apply(selectedCells, _toConsumableArray(filteredRow));\r\n                return selectedCells\r\n            }, []);\r\n            this._selectedCells = filteredCells.sort(function(firstCell, secondCell) {\r\n                return firstCell.startDate.getTime() - secondCell.startDate.getTime()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"getSelectedCells\",\r\n        value: function() {\r\n            return this._selectedCells\r\n        }\r\n    }, {\r\n        key: \"releaseSelectedAndFocusedCells\",\r\n        value: function() {\r\n            this.releaseSelectedCells();\r\n            this.releaseFocusedCell()\r\n        }\r\n    }, {\r\n        key: \"releaseSelectedCells\",\r\n        value: function() {\r\n            this._selectedCells = null;\r\n            this._firstSelectedCell = null\r\n        }\r\n    }, {\r\n        key: \"releaseFocusedCell\",\r\n        value: function() {\r\n            this._focusedCell = null\r\n        }\r\n    }, {\r\n        key: \"isValidFocusedCell\",\r\n        value: function(nextFocusedCellData) {\r\n            var focusedCell = this._focusedCell;\r\n            if (!focusedCell) {\r\n                return true\r\n            }\r\n            var groupIndex = focusedCell.groupIndex,\r\n                allDay = focusedCell.allDay;\r\n            var nextGroupIndex = nextFocusedCellData.groupIndex,\r\n                nextAllDay = nextFocusedCellData.allDay;\r\n            return groupIndex === nextGroupIndex && allDay === nextAllDay\r\n        }\r\n    }, {\r\n        key: \"_getColumnIndexByCellData\",\r\n        value: function(cellData, isVerticalGroupOrientation) {\r\n            var viewDataMap = this._viewDataProvider.viewDataMap;\r\n            var startDate = cellData.startDate,\r\n                groupIndex = cellData.groupIndex;\r\n            var firstRow = viewDataMap[0];\r\n            var startTime = _date.default.trimTime(startDate).getTime();\r\n            for (var columnIndex = 0; columnIndex < firstRow.length; columnIndex += 1) {\r\n                var _firstRow$columnIndex = firstRow[columnIndex].cellData,\r\n                    currentStartDate = _firstRow$columnIndex.startDate,\r\n                    currentGroupIndex = _firstRow$columnIndex.groupIndex;\r\n                if (startTime === _date.default.trimTime(currentStartDate).getTime() && (groupIndex === currentGroupIndex || isVerticalGroupOrientation)) {\r\n                    return columnIndex\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getRowIndexByColumnAndData\",\r\n        value: function(cellData, columnIndex, isVerticalGroupOrientation) {\r\n            var viewDataMap = this._viewDataProvider.viewDataMap;\r\n            var startDate = cellData.startDate,\r\n                groupIndex = cellData.groupIndex,\r\n                allDay = cellData.allDay;\r\n            if (allDay && !isVerticalGroupOrientation) {\r\n                return 0\r\n            }\r\n            for (var rowIndex = 0; rowIndex < viewDataMap.length; rowIndex += 1) {\r\n                var currentCellData = viewDataMap[rowIndex][columnIndex].cellData;\r\n                var currentStartDate = currentCellData.startDate,\r\n                    currentGroupIndex = currentCellData.groupIndex,\r\n                    currentAllDay = currentCellData.allDay;\r\n                if (startDate.getTime() === currentStartDate.getTime() && groupIndex === currentGroupIndex && allDay === currentAllDay) {\r\n                    return rowIndex\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_filterCellsByDate\",\r\n        value: function(cellsRow, firstDate, lastDate) {\r\n            var firstTime = firstDate.getTime();\r\n            var lastTime = lastDate.getTime();\r\n            return cellsRow.filter(function(cell) {\r\n                var startDate = cell.startDate;\r\n                var time = startDate.getTime();\r\n                return firstTime <= time && time <= lastTime\r\n            })\r\n        }\r\n    }]);\r\n    return VirtualSelectionState\r\n}();\r\nexports.default = VirtualSelectionState;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/nav_bar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _item = _interopRequireDefault(require(\"./nav_bar/item\"));\r\nvar _tabs = _interopRequireDefault(require(\"./tabs\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar NAVBAR_CLASS = \"dx-navbar\";\r\nvar ITEM_CLASS = \"dx-item-content\";\r\nvar NAVBAR_ITEM_CLASS = \"dx-nav-item\";\r\nvar NAVBAR_ITEM_CONTENT_CLASS = \"dx-nav-item-content\";\r\nvar NavBar = _tabs.default.inherit({\r\n    ctor: function(element, options) {\r\n        this.callBase(element, options);\r\n        this._logDeprecatedComponentWarning(\"20.1\", \"dxTabs\")\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            scrollingEnabled: false\r\n        })\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.$element().addClass(NAVBAR_CLASS)\r\n    },\r\n    _postprocessRenderItem: function(args) {\r\n        this.callBase(args);\r\n        var $itemElement = args.itemElement;\r\n        var itemData = args.itemData;\r\n        $itemElement.addClass(NAVBAR_ITEM_CLASS);\r\n        $itemElement.find(\".\" + ITEM_CLASS).addClass(NAVBAR_ITEM_CONTENT_CLASS);\r\n        if (!itemData.icon) {\r\n            $itemElement.addClass(\"dx-navbar-text-item\")\r\n        }\r\n    }\r\n});\r\nNavBar.ItemClass = _item.default;\r\n(0, _component_registrator.default)(\"dxNavBar\", NavBar);\r\nvar _default = NavBar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.horizontal.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _uiSchedulerWork_spaceGrouped = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar HORIZONTAL_GROUPED_ATTR = \"dx-group-row-count\";\r\nvar HorizontalGroupedStrategy = function(_GroupedStrategy) {\r\n    _inherits(HorizontalGroupedStrategy, _GroupedStrategy);\r\n    var _super = _createSuper(HorizontalGroupedStrategy);\r\n\r\n    function HorizontalGroupedStrategy() {\r\n        _classCallCheck(this, HorizontalGroupedStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(HorizontalGroupedStrategy, [{\r\n        key: \"prepareCellIndexes\",\r\n        value: function(cellCoordinates, groupIndex, inAllDay) {\r\n            var groupByDay = this._workSpace.isGroupedByDate();\r\n            if (!groupByDay) {\r\n                return {\r\n                    rowIndex: cellCoordinates.rowIndex,\r\n                    cellIndex: cellCoordinates.cellIndex + groupIndex * this._workSpace._getCellCount()\r\n                }\r\n            } else {\r\n                return {\r\n                    rowIndex: cellCoordinates.rowIndex,\r\n                    cellIndex: cellCoordinates.cellIndex * this._workSpace._getGroupCount() + groupIndex\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"calculateCellIndex\",\r\n        value: function(rowIndex, cellIndex) {\r\n            cellIndex %= this._workSpace._getCellCount();\r\n            return this._workSpace._getRowCount() * cellIndex + rowIndex\r\n        }\r\n    }, {\r\n        key: \"getGroupIndex\",\r\n        value: function(rowIndex, cellIndex) {\r\n            var groupByDay = this._workSpace.isGroupedByDate();\r\n            var groupCount = this._workSpace._getGroupCount();\r\n            if (groupByDay) {\r\n                return cellIndex % groupCount\r\n            } else {\r\n                return Math.floor(cellIndex / this._workSpace._getCellCount())\r\n            }\r\n        }\r\n    }, {\r\n        key: \"calculateHeaderCellRepeatCount\",\r\n        value: function() {\r\n            return this._workSpace._getGroupCount() || 1\r\n        }\r\n    }, {\r\n        key: \"insertAllDayRowsIntoDateTable\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"getTotalCellCount\",\r\n        value: function(groupCount) {\r\n            groupCount = groupCount || 1;\r\n            return this._workSpace._getCellCount() * groupCount\r\n        }\r\n    }, {\r\n        key: \"getTotalRowCount\",\r\n        value: function() {\r\n            return this._workSpace._getRowCount()\r\n        }\r\n    }, {\r\n        key: \"addAdditionalGroupCellClasses\",\r\n        value: function(cellClass, index, i, j) {\r\n            var applyUnconditionally = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;\r\n            cellClass = this._addLastGroupCellClass(cellClass, index, applyUnconditionally);\r\n            return this._addFirstGroupCellClass(cellClass, index, applyUnconditionally)\r\n        }\r\n    }, {\r\n        key: \"_addLastGroupCellClass\",\r\n        value: function(cellClass, index, applyUnconditionally) {\r\n            if (applyUnconditionally) {\r\n                return \"\".concat(cellClass, \" \").concat(this.getLastGroupCellClass())\r\n            }\r\n            var groupByDate = this._workSpace.isGroupedByDate();\r\n            if (groupByDate) {\r\n                if (index % this._workSpace._getGroupCount() === 0) {\r\n                    return \"\".concat(cellClass, \" \").concat(this.getLastGroupCellClass())\r\n                }\r\n            } else {\r\n                if (index % this._workSpace._getCellCount() === 0) {\r\n                    return \"\".concat(cellClass, \" \").concat(this.getLastGroupCellClass())\r\n                }\r\n            }\r\n            return cellClass\r\n        }\r\n    }, {\r\n        key: \"_addFirstGroupCellClass\",\r\n        value: function(cellClass, index, applyUnconditionally) {\r\n            if (applyUnconditionally) {\r\n                return \"\".concat(cellClass, \" \").concat(this.getFirstGroupCellClass())\r\n            }\r\n            var groupByDate = this._workSpace.isGroupedByDate();\r\n            if (groupByDate) {\r\n                if ((index - 1) % this._workSpace._getGroupCount() === 0) {\r\n                    return \"\".concat(cellClass, \" \").concat(this.getFirstGroupCellClass())\r\n                }\r\n            } else {\r\n                if ((index - 1) % this._workSpace._getCellCount() === 0) {\r\n                    return \"\".concat(cellClass, \" \").concat(this.getFirstGroupCellClass())\r\n                }\r\n            }\r\n            return cellClass\r\n        }\r\n    }, {\r\n        key: \"getHorizontalMax\",\r\n        value: function(groupIndex) {\r\n            return this._workSpace.getMaxAllowedPosition()[groupIndex]\r\n        }\r\n    }, {\r\n        key: \"getVerticalMax\",\r\n        value: function(groupIndex) {\r\n            return this._workSpace.getMaxAllowedVerticalPosition(0)\r\n        }\r\n    }, {\r\n        key: \"calculateTimeCellRepeatCount\",\r\n        value: function() {\r\n            return 1\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceMinWidth\",\r\n        value: function() {\r\n            return (0, _position.getBoundingRect)(this._workSpace.$element().get(0)).width - this._workSpace.getTimePanelWidth()\r\n        }\r\n    }, {\r\n        key: \"getAllDayOffset\",\r\n        value: function() {\r\n            return this._workSpace.getAllDayHeight()\r\n        }\r\n    }, {\r\n        key: \"getAllDayTableHeight\",\r\n        value: function() {\r\n            return (0, _position.getBoundingRect)(this._workSpace._$allDayTable.get(0)).height || 0\r\n        }\r\n    }, {\r\n        key: \"getGroupCountAttr\",\r\n        value: function(groupRowCount, groupRows) {\r\n            return {\r\n                attr: HORIZONTAL_GROUPED_ATTR,\r\n                count: groupRows && groupRows.elements.length\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getLeftOffset\",\r\n        value: function() {\r\n            return this._workSpace.getTimePanelWidth()\r\n        }\r\n    }, {\r\n        key: \"getGroupBoundsOffset\",\r\n        value: function(cellCount, $cells, cellWidth, coordinates) {\r\n            var groupIndex;\r\n            var cellIndex;\r\n            var startCellIndex;\r\n            var startOffset;\r\n            var endOffset;\r\n            if (this._workSpace.isGroupedByDate()) {\r\n                startCellIndex = 0;\r\n                startOffset = $cells.eq(startCellIndex).offset().left - cellWidth / 2;\r\n                endOffset = $cells.eq(cellCount * this._workSpace._getGroupCount() - 1).offset().left + cellWidth + cellWidth / 2\r\n            } else {\r\n                cellIndex = this._workSpace.getCellIndexByCoordinates(coordinates);\r\n                groupIndex = coordinates.groupIndex || Math.floor(cellIndex / cellCount);\r\n                startCellIndex = groupIndex * cellCount;\r\n                startOffset = $cells.eq(startCellIndex).offset().left - cellWidth / 2;\r\n                endOffset = $cells.eq(startCellIndex + cellCount - 1).offset().left + cellWidth + cellWidth / 2\r\n            }\r\n            return {\r\n                left: startOffset,\r\n                right: endOffset,\r\n                top: 0,\r\n                bottom: 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"shiftIndicator\",\r\n        value: function($indicator, height, rtlOffset, groupIndex) {\r\n            var offset = this._getIndicatorOffset(groupIndex);\r\n            var horizontalOffset = rtlOffset ? rtlOffset - offset : offset;\r\n            $indicator.css(\"left\", horizontalOffset);\r\n            $indicator.css(\"top\", height)\r\n        }\r\n    }, {\r\n        key: \"_getIndicatorOffset\",\r\n        value: function(groupIndex) {\r\n            var groupByDay = this._workSpace.isGroupedByDate();\r\n            return groupByDay ? this._calculateGroupByDateOffset(groupIndex) : this._calculateOffset(groupIndex)\r\n        }\r\n    }, {\r\n        key: \"_calculateOffset\",\r\n        value: function(groupIndex) {\r\n            return this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex + this._workSpace.getIndicatorOffset(groupIndex) + groupIndex\r\n        }\r\n    }, {\r\n        key: \"_calculateGroupByDateOffset\",\r\n        value: function(groupIndex) {\r\n            return this._workSpace.getIndicatorOffset(0) * this._workSpace._getGroupCount() + this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex\r\n        }\r\n    }, {\r\n        key: \"getShaderOffset\",\r\n        value: function(i, width) {\r\n            var offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(i - 1) * i;\r\n            return this._workSpace.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this._workSpace._dateTableScrollable.$content().get(0)).width - offset - this._workSpace.getTimePanelWidth() - width : offset\r\n        }\r\n    }, {\r\n        key: \"getShaderTopOffset\",\r\n        value: function(i) {\r\n            return -this.getShaderMaxHeight() * (i > 0 ? 1 : 0)\r\n        }\r\n    }, {\r\n        key: \"getShaderHeight\",\r\n        value: function() {\r\n            var height = this._workSpace.getIndicationHeight();\r\n            return height\r\n        }\r\n    }, {\r\n        key: \"getShaderMaxHeight\",\r\n        value: function() {\r\n            return (0, _position.getBoundingRect)(this._workSpace._dateTableScrollable.$content().get(0)).height\r\n        }\r\n    }, {\r\n        key: \"getShaderWidth\",\r\n        value: function(i) {\r\n            return this._workSpace.getIndicationWidth(i)\r\n        }\r\n    }, {\r\n        key: \"getScrollableScrollTop\",\r\n        value: function(allDay) {\r\n            return !allDay ? this._workSpace.getScrollable().scrollTop() : 0\r\n        }\r\n    }, {\r\n        key: \"getGroupIndexByCell\",\r\n        value: function($cell) {\r\n            var rowIndex = $cell.parent().index();\r\n            var cellIndex = $cell.index();\r\n            return this.getGroupIndex(rowIndex, cellIndex)\r\n        }\r\n    }]);\r\n    return HorizontalGroupedStrategy\r\n}(_uiSchedulerWork_spaceGrouped.default);\r\nvar _default = HorizontalGroupedStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/polar_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polarBarPoint = exports.polarSymbolPoint = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _pie_point = _interopRequireDefault(require(\"./pie_point\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _max = _math.max;\r\nvar RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;\r\nvar ERROR_BARS_ANGLE_OFFSET = 90;\r\nvar CANVAS_POSITION_END = \"canvas_position_end\";\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\nvar polarSymbolPoint = _extend({}, _symbol_point.default, {\r\n    _getLabelCoords: _pie_point.default._getLabelCoords,\r\n    _getElementCoords: _pie_point.default._getElementCoords,\r\n    _moveLabelOnCanvas: function(coord, visibleArea, labelBBox) {\r\n        var x = coord.x;\r\n        var y = coord.y;\r\n        if (visibleArea.minX > x) {\r\n            x = visibleArea.minX\r\n        }\r\n        if (visibleArea.maxX < x + labelBBox.width) {\r\n            x = visibleArea.maxX - labelBBox.width\r\n        }\r\n        if (visibleArea.minY > y) {\r\n            y = visibleArea.minY\r\n        }\r\n        if (visibleArea.maxY < y + labelBBox.height) {\r\n            y = visibleArea.maxY - labelBBox.height\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y\r\n        }\r\n    },\r\n    _getLabelPosition: function() {\r\n        return \"outside\"\r\n    },\r\n    _getCoords: function(argument, value) {\r\n        var axis = this.series.getValueAxis();\r\n        var startAngle = axis.getAngles()[0];\r\n        var angle = this._getArgTranslator().translate(argument);\r\n        var radius = this._getValTranslator().translate(value);\r\n        var coords = (0, _utils.convertPolarToXY)(axis.getCenter(), axis.getAngles()[0], angle, radius);\r\n        coords.angle = angle + startAngle - 90, coords.radius = radius;\r\n        return coords\r\n    },\r\n    _translate: function() {\r\n        var that = this;\r\n        var center = that.series.getValueAxis().getCenter();\r\n        var coord = that._getCoords(that.argument, that.value);\r\n        var maxRadius = that._getValTranslator().translate(CANVAS_POSITION_END);\r\n        var normalizedRadius = (0, _type.isDefined)(coord.radius) && coord.radius >= 0 ? coord.radius : null;\r\n        that.vx = (0, _utils.normalizeAngle)(coord.angle);\r\n        that.vy = that.radiusOuter = that.radiusLabels = normalizedRadius;\r\n        that.radiusLabels += RADIAL_LABEL_INDENT;\r\n        that.radius = normalizedRadius;\r\n        that.middleAngle = -coord.angle;\r\n        that.angle = -coord.angle;\r\n        that.x = coord.x;\r\n        that.y = coord.y;\r\n        that.defaultX = that.centerX = center.x;\r\n        that.defaultY = that.centerY = center.y;\r\n        that._translateErrorBars();\r\n        that.inVisibleArea = that._checkRadiusForVisibleArea(normalizedRadius, maxRadius)\r\n    },\r\n    _checkRadiusForVisibleArea: function(radius, maxRadius) {\r\n        return (0, _type.isDefined)(radius) && radius <= maxRadius\r\n    },\r\n    _translateErrorBars: function() {\r\n        var that = this;\r\n        var errorBars = that._options.errorBars;\r\n        var translator = that._getValTranslator();\r\n        if (!errorBars) {\r\n            return\r\n        }(0, _type.isDefined)(that.lowError) && (that._lowErrorCoord = that.centerY - translator.translate(that.lowError));\r\n        (0, _type.isDefined)(that.highError) && (that._highErrorCoord = that.centerY - translator.translate(that.highError));\r\n        that._errorBarPos = that.centerX;\r\n        that._baseErrorBarPos = \"stdDeviation\" === errorBars.type ? that._lowErrorCoord + (that._highErrorCoord - that._lowErrorCoord) / 2 : that.centerY - that.radius\r\n    },\r\n    _getTranslates: function(animationEnabled) {\r\n        return animationEnabled ? this.getDefaultCoords() : {\r\n            x: this.x,\r\n            y: this.y\r\n        }\r\n    },\r\n    getDefaultCoords: function() {\r\n        var cosSin = (0, _utils.getCosAndSin)(-this.angle);\r\n        var radius = this._getValTranslator().translate(CANVAS_POSITION_DEFAULT);\r\n        var x = this.defaultX + radius * cosSin.cos;\r\n        var y = this.defaultY + radius * cosSin.sin;\r\n        return {\r\n            x: x,\r\n            y: y\r\n        }\r\n    },\r\n    _addLabelAlignmentAndOffset: function(label, coord) {\r\n        return coord\r\n    },\r\n    _checkLabelPosition: function(label, coord) {\r\n        var that = this;\r\n        var visibleArea = that._getVisibleArea();\r\n        var graphicBBox = that._getGraphicBBox();\r\n        if (that._isPointInVisibleArea(visibleArea, graphicBBox)) {\r\n            coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())\r\n        }\r\n        return coord\r\n    },\r\n    _getErrorBarSettings: function(errorBarOptions, animationEnabled) {\r\n        var settings = _symbol_point.default._getErrorBarSettings.call(this, errorBarOptions, animationEnabled);\r\n        settings.rotate = ERROR_BARS_ANGLE_OFFSET - this.angle;\r\n        settings.rotateX = this.centerX;\r\n        settings.rotateY = this.centerY;\r\n        return settings\r\n    },\r\n    getCoords: function(min) {\r\n        return min ? this.getDefaultCoords() : {\r\n            x: this.x,\r\n            y: this.y\r\n        }\r\n    }\r\n});\r\nexports.polarSymbolPoint = polarSymbolPoint;\r\nvar polarBarPoint = _extend({}, _bar_point.default, {\r\n    _translateErrorBars: polarSymbolPoint._translateErrorBars,\r\n    _getErrorBarSettings: polarSymbolPoint._getErrorBarSettings,\r\n    _moveLabelOnCanvas: polarSymbolPoint._moveLabelOnCanvas,\r\n    _getLabelCoords: _pie_point.default._getLabelCoords,\r\n    _getElementCoords: _pie_point.default._getElementCoords,\r\n    _getLabelConnector: _pie_point.default._getLabelConnector,\r\n    getTooltipParams: _pie_point.default.getTooltipParams,\r\n    _getLabelPosition: _pie_point.default._getLabelPosition,\r\n    _getCoords: polarSymbolPoint._getCoords,\r\n    _translate: function() {\r\n        var that = this;\r\n        var translator = that._getValTranslator();\r\n        var businessRange = translator.getBusinessRange();\r\n        var maxRadius = translator.translate(CANVAS_POSITION_END);\r\n        that.radiusInner = translator.translate(that.minValue);\r\n        polarSymbolPoint._translate.call(that);\r\n        if (null === that.radiusInner) {\r\n            that.radiusInner = that.radius = maxRadius\r\n        } else {\r\n            if (null === that.radius) {\r\n                that.radius = that.value >= businessRange.minVisible ? maxRadius : 0\r\n            } else {\r\n                if (that.radius > maxRadius) {\r\n                    that.radius = maxRadius\r\n                }\r\n            }\r\n        }\r\n        that.radiusOuter = that.radiusLabels = _max(that.radiusInner, that.radius);\r\n        that.radiusLabels += RADIAL_LABEL_INDENT;\r\n        that.radiusInner = that.defaultRadius = _math.min(that.radiusInner, that.radius);\r\n        that.middleAngle = that.angle = -(0, _utils.normalizeAngle)(that.middleAngleCorrection - that.angle)\r\n    },\r\n    _checkRadiusForVisibleArea: function(radius) {\r\n        return (0, _type.isDefined)(radius) || this._getValTranslator().translate(this.minValue) > 0\r\n    },\r\n    _getErrorBarBaseEdgeLength: function() {\r\n        var coord = this.getMarkerCoords();\r\n        return _math.PI * coord.outerRadius * _math.abs(coord.startAngle - coord.endAngle) / 180\r\n    },\r\n    getMarkerCoords: function() {\r\n        return {\r\n            x: this.centerX,\r\n            y: this.centerY,\r\n            outerRadius: this.radiusOuter,\r\n            innerRadius: this.defaultRadius,\r\n            startAngle: this.middleAngle - this.interval / 2,\r\n            endAngle: this.middleAngle + this.interval / 2\r\n        }\r\n    },\r\n    _drawMarker: function(renderer, group, animationEnabled) {\r\n        var that = this;\r\n        var styles = that._getStyle();\r\n        var coords = that.getMarkerCoords();\r\n        var innerRadius = coords.innerRadius;\r\n        var outerRadius = coords.outerRadius;\r\n        var start = that._getCoords(that.argument, CANVAS_POSITION_DEFAULT);\r\n        var x = coords.x;\r\n        var y = coords.y;\r\n        if (animationEnabled) {\r\n            innerRadius = 0;\r\n            outerRadius = 0;\r\n            x = start.x;\r\n            y = start.y\r\n        }\r\n        that.graphic = renderer.arc(x, y, innerRadius, outerRadius, coords.startAngle, coords.endAngle).attr(styles).data({\r\n            \"chart-data-point\": that\r\n        }).append(group)\r\n    },\r\n    _checkLabelPosition: function(label, coord) {\r\n        var that = this;\r\n        var visibleArea = that._getVisibleArea();\r\n        var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n        var x = that.centerX + that.defaultRadius * angleFunctions.cos;\r\n        var y = that.centerY - that.defaultRadius * angleFunctions.sin;\r\n        if (x > visibleArea.minX && x < visibleArea.maxX && y > visibleArea.minY && y < visibleArea.maxY) {\r\n            coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())\r\n        }\r\n        return coord\r\n    },\r\n    _addLabelAlignmentAndOffset: function(label, coord) {\r\n        return coord\r\n    },\r\n    correctCoordinates: function(correctOptions) {\r\n        this.middleAngleCorrection = correctOptions.offset;\r\n        this.interval = correctOptions.width\r\n    },\r\n    coordsIn: function(x, y) {\r\n        var val = (0, _utils.convertXYToPolar)(this.series.getValueAxis().getCenter(), x, y);\r\n        var coords = this.getMarkerCoords();\r\n        var isBetweenAngles = coords.startAngle < coords.endAngle ? -val.phi >= coords.startAngle && -val.phi <= coords.endAngle : -val.phi <= coords.startAngle && -val.phi >= coords.endAngle;\r\n        return val.r >= coords.innerRadius && val.r <= coords.outerRadius && isBetweenAngles\r\n    }\r\n});\r\nexports.polarBarPoint = polarBarPoint;\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointments.strategy.horizontal_month_line\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar MONTH_APPOINTMENT_HEIGHT_RATIO = .6;\r\nvar MONTH_APPOINTMENT_MIN_OFFSET = 26;\r\nvar MONTH_APPOINTMENT_MAX_OFFSET = 30;\r\nvar MONTH_DROPDOWN_APPOINTMENT_MIN_RIGHT_OFFSET = 36;\r\nvar MONTH_DROPDOWN_APPOINTMENT_MAX_RIGHT_OFFSET = 60;\r\nvar HorizontalMonthRenderingStrategy = function(_HorizontalMonthLineA) {\r\n    _inherits(HorizontalMonthRenderingStrategy, _HorizontalMonthLineA);\r\n    var _super = _createSuper(HorizontalMonthRenderingStrategy);\r\n\r\n    function HorizontalMonthRenderingStrategy() {\r\n        _classCallCheck(this, HorizontalMonthRenderingStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(HorizontalMonthRenderingStrategy, [{\r\n        key: \"_getAppointmentParts\",\r\n        value: function(appointmentGeometry, appointmentSettings, startDate) {\r\n            var deltaWidth = appointmentGeometry.sourceAppointmentWidth - appointmentGeometry.reducedWidth;\r\n            var height = appointmentGeometry.height;\r\n            var fullWeekAppointmentWidth = this._getFullWeekAppointmentWidth(appointmentSettings.groupIndex);\r\n            var maxAppointmentWidth = this._getMaxAppointmentWidth(startDate);\r\n            var longPartCount = Math.ceil(deltaWidth / fullWeekAppointmentWidth) - 1;\r\n            var realTailWidth = Math.floor(deltaWidth % fullWeekAppointmentWidth);\r\n            var tailWidth = longPartCount ? realTailWidth : realTailWidth || fullWeekAppointmentWidth;\r\n            var result = [];\r\n            var totalWidth = appointmentGeometry.reducedWidth + tailWidth;\r\n            var currentPartTop = appointmentSettings.top + this.getDefaultCellHeight();\r\n            var left = this._calculateMultiWeekAppointmentLeftOffset(appointmentSettings.hMax, fullWeekAppointmentWidth);\r\n            if (\"vertical\" === this.instance._groupOrientation) {\r\n                left += this.instance.fire(\"getWorkSpaceDateTableOffset\")\r\n            }\r\n            for (var i = 0; i < longPartCount; i++) {\r\n                if (totalWidth > maxAppointmentWidth) {\r\n                    break\r\n                }\r\n                result.push((0, _extend.extend)(true, {}, appointmentSettings, {\r\n                    top: currentPartTop,\r\n                    left: left,\r\n                    height: height,\r\n                    width: fullWeekAppointmentWidth,\r\n                    appointmentReduced: \"body\",\r\n                    rowIndex: ++appointmentSettings.rowIndex,\r\n                    cellIndex: 0\r\n                }));\r\n                currentPartTop += this.getDefaultCellHeight();\r\n                totalWidth += fullWeekAppointmentWidth\r\n            }\r\n            if (tailWidth) {\r\n                if (this._isRtl()) {\r\n                    left += fullWeekAppointmentWidth - tailWidth\r\n                }\r\n                result.push((0, _extend.extend)(true, {}, appointmentSettings, {\r\n                    top: currentPartTop,\r\n                    left: left,\r\n                    height: height,\r\n                    width: tailWidth,\r\n                    appointmentReduced: \"tail\",\r\n                    rowIndex: ++appointmentSettings.rowIndex,\r\n                    cellIndex: 0\r\n                }))\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_calculateMultiWeekAppointmentLeftOffset\",\r\n        value: function(max, width) {\r\n            return this._isRtl() ? max : max - width\r\n        }\r\n    }, {\r\n        key: \"_getFullWeekAppointmentWidth\",\r\n        value: function(groupIndex) {\r\n            this._maxFullWeekAppointmentWidth = this.instance.fire(\"getFullWeekAppointmentWidth\", {\r\n                groupIndex: groupIndex\r\n            });\r\n            return this._maxFullWeekAppointmentWidth\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDefaultHeight\",\r\n        value: function() {\r\n            return this._getAppointmentHeightByTheme()\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentMinHeight\",\r\n        value: function() {\r\n            return this._getAppointmentDefaultHeight()\r\n        }\r\n    }, {\r\n        key: \"_columnCondition\",\r\n        value: function(a, b) {\r\n            var conditions = this._getConditions(a, b);\r\n            return conditions.rowCondition || conditions.columnCondition || conditions.cellPositionCondition\r\n        }\r\n    }, {\r\n        key: \"createTaskPositionMap\",\r\n        value: function(items) {\r\n            return _get(_getPrototypeOf(HorizontalMonthRenderingStrategy.prototype), \"createTaskPositionMap\", this).call(this, items, true)\r\n        }\r\n    }, {\r\n        key: \"_getSortedPositions\",\r\n        value: function(map) {\r\n            return _get(_getPrototypeOf(HorizontalMonthRenderingStrategy.prototype), \"_getSortedPositions\", this).call(this, map, true)\r\n        }\r\n    }, {\r\n        key: \"_getDefaultRatio\",\r\n        value: function() {\r\n            return MONTH_APPOINTMENT_HEIGHT_RATIO\r\n        }\r\n    }, {\r\n        key: \"_getOffsets\",\r\n        value: function() {\r\n            return {\r\n                unlimited: MONTH_APPOINTMENT_MIN_OFFSET,\r\n                auto: MONTH_APPOINTMENT_MAX_OFFSET\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getDropDownAppointmentWidth\",\r\n        value: function(intervalCount) {\r\n            if (this.instance.fire(\"isAdaptive\")) {\r\n                return this.getDropDownButtonAdaptiveSize()\r\n            }\r\n            var offset = intervalCount > 1 ? MONTH_DROPDOWN_APPOINTMENT_MAX_RIGHT_OFFSET : MONTH_DROPDOWN_APPOINTMENT_MIN_RIGHT_OFFSET;\r\n            return this.getDefaultCellWidth() - offset\r\n        }\r\n    }, {\r\n        key: \"needCorrectAppointmentDates\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_needVerticalGroupBounds\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_needHorizontalGroupBounds\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }]);\r\n    return HorizontalMonthRenderingStrategy\r\n}(_uiSchedulerAppointmentsStrategy.default);\r\nvar _default = HorizontalMonthRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/guid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"./class\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar Guid = _class.default.inherit({\r\n    ctor: function(value) {\r\n        if (value) {\r\n            value = String(value)\r\n        }\r\n        this._value = this._normalize(value || this._generate())\r\n    },\r\n    _normalize: function(value) {\r\n        value = value.replace(/[^a-f0-9]/gi, \"\").toLowerCase();\r\n        while (value.length < 32) {\r\n            value += \"0\"\r\n        }\r\n        return [value.substr(0, 8), value.substr(8, 4), value.substr(12, 4), value.substr(16, 4), value.substr(20, 12)].join(\"-\")\r\n    },\r\n    _generate: function() {\r\n        var value = \"\";\r\n        for (var i = 0; i < 32; i++) {\r\n            value += Math.round(15 * Math.random()).toString(16)\r\n        }\r\n        return value\r\n    },\r\n    toString: function() {\r\n        return this._value\r\n    },\r\n    valueOf: function() {\r\n        return this._value\r\n    },\r\n    toJSON: function() {\r\n        return this._value\r\n    }\r\n});\r\nvar _default = Guid;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (exporter/exceljs/export_data_grid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.exportDataGrid = exportDataGrid;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _export = require(\"./export\");\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar privateOptions = {\r\n    _trySetAutoFilter: function(dataProvider, worksheet, cellRange, headerRowCount, autoFilterEnabled) {\r\n        if (autoFilterEnabled) {\r\n            if (!(0, _type.isDefined)(worksheet.autoFilter) && dataProvider.getRowsCount() > 0) {\r\n                var dataRange = {\r\n                    from: {\r\n                        row: cellRange.from.row + headerRowCount - 1,\r\n                        column: cellRange.from.column\r\n                    },\r\n                    to: cellRange.to\r\n                };\r\n                worksheet.autoFilter = dataRange\r\n            }\r\n        }\r\n    },\r\n    _trySetFont: function(excelCell, bold) {\r\n        if ((0, _type.isDefined)(bold)) {\r\n            excelCell.font = excelCell.font || {};\r\n            excelCell.font.bold = bold\r\n        }\r\n    },\r\n    _getWorksheetFrozenState: function(dataProvider, cellRange) {\r\n        return {\r\n            state: \"frozen\",\r\n            ySplit: cellRange.from.row + dataProvider.getFrozenArea().y - 1\r\n        }\r\n    },\r\n    _trySetOutlineLevel: function(dataProvider, row, rowIndex, headerRowCount) {\r\n        if (rowIndex >= headerRowCount) {\r\n            row.outlineLevel = dataProvider.getGroupLevel(rowIndex)\r\n        }\r\n    },\r\n    _getCustomizeCellOptions: function(excelCell, gridCell) {\r\n        var options = {\r\n            excelCell: excelCell,\r\n            gridCell: gridCell\r\n        };\r\n        Object.defineProperty(options, \"cell\", {\r\n            get: function() {\r\n                _errors.default.log(\"W0003\", \"CustomizeCell handler argument\", \"cell\", \"20.1\", \"Use the 'excelCell' field instead\");\r\n                return excelCell\r\n            }\r\n        });\r\n        return options\r\n    },\r\n    _needMergeRange: function(rowIndex, headerRowCount) {\r\n        return rowIndex < headerRowCount\r\n    },\r\n    _renderLoadPanel: function(component) {\r\n        var rowsView = component.getView(\"rowsView\");\r\n        rowsView._renderLoadPanel(rowsView.element(), rowsView.element().parent())\r\n    }\r\n};\r\n\r\nfunction exportDataGrid(options) {\r\n    return _export.Export.export(_getFullOptions(options), privateOptions)\r\n}\r\n\r\nfunction _getFullOptions(options) {\r\n    if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {\r\n        throw Error('The \"exportDataGrid\" method requires a configuration object.')\r\n    }\r\n    if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && \"dxDataGrid\" === options.component.NAME)) {\r\n        throw Error('The \"component\" field must contain a DataGrid instance.')\r\n    }\r\n    if (!(0, _type.isDefined)(options.selectedRowsOnly)) {\r\n        options.selectedRowsOnly = false\r\n    }\r\n    if (!(0, _type.isDefined)(options.autoFilterEnabled)) {\r\n        options.autoFilterEnabled = false\r\n    }\r\n    return _export.Export.getFullOptions(options)\r\n}\r\n","/**\r\n * DevExtreme (viz/core/layout_element.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.LayoutElement = LayoutElement;\r\nexports.WrapperLayoutElement = WrapperLayoutElement;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _round = Math.round;\r\nvar defaultOffset = {\r\n    horizontal: 0,\r\n    vertical: 0\r\n};\r\nvar alignFactors = {\r\n    center: .5,\r\n    right: 1,\r\n    bottom: 1,\r\n    left: 0,\r\n    top: 0\r\n};\r\n\r\nfunction LayoutElement(options) {\r\n    this._options = options\r\n}\r\nLayoutElement.prototype = {\r\n    constructor: LayoutElement,\r\n    position: function(options) {\r\n        var that = this;\r\n        var ofBBox = options.of.getLayoutOptions();\r\n        var myBBox = that.getLayoutOptions();\r\n        var at = options.at;\r\n        var my = options.my;\r\n        var offset = options.offset || defaultOffset;\r\n        var shiftX = -alignFactors[my.horizontal] * myBBox.width + ofBBox.x + alignFactors[at.horizontal] * ofBBox.width + parseInt(offset.horizontal);\r\n        var shiftY = -alignFactors[my.vertical] * myBBox.height + ofBBox.y + alignFactors[at.vertical] * ofBBox.height + parseInt(offset.vertical);\r\n        that.shift(_round(shiftX), _round(shiftY))\r\n    },\r\n    getLayoutOptions: _common.noop\r\n};\r\n\r\nfunction WrapperLayoutElement(renderElement, bBox) {\r\n    this._renderElement = renderElement;\r\n    this._cacheBBox = bBox\r\n}\r\nvar wrapperLayoutElementPrototype = WrapperLayoutElement.prototype = (0, _object.clone)(LayoutElement.prototype);\r\nwrapperLayoutElementPrototype.constructor = WrapperLayoutElement;\r\nwrapperLayoutElementPrototype.getLayoutOptions = function() {\r\n    return this._cacheBBox || this._renderElement.getBBox()\r\n};\r\nwrapperLayoutElementPrototype.shift = function(shiftX, shiftY) {\r\n    var bBox = this.getLayoutOptions();\r\n    this._renderElement.move(_round(shiftX - bBox.x), _round(shiftY - bBox.y))\r\n};\r\n","/**\r\n * DevExtreme (ui/html_editor.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./html_editor/ui.html_editor\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/form/ui.form.item_option_action.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar ItemOptionAction = function() {\r\n    function ItemOptionAction(options) {\r\n        _classCallCheck(this, ItemOptionAction);\r\n        this._options = options;\r\n        this._itemsRunTimeInfo = this._options.itemsRunTimeInfo\r\n    }\r\n    _createClass(ItemOptionAction, [{\r\n        key: \"findInstance\",\r\n        value: function() {\r\n            return this._itemsRunTimeInfo.findWidgetInstanceByItem(this._options.item)\r\n        }\r\n    }, {\r\n        key: \"findItemContainer\",\r\n        value: function() {\r\n            return this._itemsRunTimeInfo.findItemContainerByItem(this._options.item)\r\n        }\r\n    }, {\r\n        key: \"tryExecute\",\r\n        value: function() {\r\n            _class.default.abstract()\r\n        }\r\n    }]);\r\n    return ItemOptionAction\r\n}();\r\nexports.default = ItemOptionAction;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/element_data.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getDataStrategy = getDataStrategy;\r\nexports.data = data;\r\nexports.beforeCleanData = beforeCleanData;\r\nexports.afterCleanData = afterCleanData;\r\nexports.cleanData = cleanData;\r\nexports.removeData = removeData;\r\nexports.cleanDataRecursive = cleanDataRecursive;\r\nexports.setDataStrategy = exports.strategyChanging = void 0;\r\nvar _weak_map = _interopRequireDefault(require(\"./polyfills/weak_map\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"./dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _memorized_callbacks = _interopRequireDefault(require(\"./memorized_callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar dataMap = new _weak_map.default;\r\nvar strategy;\r\nvar strategyChanging = new _memorized_callbacks.default;\r\nexports.strategyChanging = strategyChanging;\r\nvar beforeCleanDataFunc = function() {};\r\nvar afterCleanDataFunc = function() {};\r\nvar setDataStrategy = function(value) {\r\n    strategyChanging.fire(value);\r\n    strategy = value;\r\n    var cleanData = strategy.cleanData;\r\n    strategy.cleanData = function(nodes) {\r\n        beforeCleanDataFunc(nodes);\r\n        var result = cleanData.call(this, nodes);\r\n        afterCleanDataFunc(nodes);\r\n        return result\r\n    }\r\n};\r\nexports.setDataStrategy = setDataStrategy;\r\nsetDataStrategy({\r\n    data: function() {\r\n        var element = arguments[0];\r\n        var key = arguments[1];\r\n        var value = arguments[2];\r\n        if (!element) {\r\n            return\r\n        }\r\n        var elementData = dataMap.get(element);\r\n        if (!elementData) {\r\n            elementData = {};\r\n            dataMap.set(element, elementData)\r\n        }\r\n        if (void 0 === key) {\r\n            return elementData\r\n        }\r\n        if (2 === arguments.length) {\r\n            return elementData[key]\r\n        }\r\n        elementData[key] = value;\r\n        return value\r\n    },\r\n    removeData: function(element, key) {\r\n        if (!element) {\r\n            return\r\n        }\r\n        if (void 0 === key) {\r\n            dataMap.delete(element)\r\n        } else {\r\n            var elementData = dataMap.get(element);\r\n            if (elementData) {\r\n                delete elementData[key]\r\n            }\r\n        }\r\n    },\r\n    cleanData: function(elements) {\r\n        for (var i = 0; i < elements.length; i++) {\r\n            _events_engine.default.off(elements[i]);\r\n            dataMap.delete(elements[i])\r\n        }\r\n    }\r\n});\r\n\r\nfunction getDataStrategy() {\r\n    return strategy\r\n}\r\n\r\nfunction data() {\r\n    return strategy.data.apply(this, arguments)\r\n}\r\n\r\nfunction beforeCleanData(callback) {\r\n    beforeCleanDataFunc = callback\r\n}\r\n\r\nfunction afterCleanData(callback) {\r\n    afterCleanDataFunc = callback\r\n}\r\n\r\nfunction cleanData(nodes) {\r\n    return strategy.cleanData.call(this, nodes)\r\n}\r\n\r\nfunction removeData(element, key) {\r\n    return strategy.removeData.call(this, element, key)\r\n}\r\n\r\nfunction cleanDataRecursive(element, cleanSelf) {\r\n    if (!_dom_adapter.default.isElementNode(element)) {\r\n        return\r\n    }\r\n    var childElements = element.getElementsByTagName(\"*\");\r\n    strategy.cleanData(childElements);\r\n    if (cleanSelf) {\r\n        strategy.cleanData([element])\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (core/utils/extend.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.extend = exports.extendFromObject = void 0;\r\nvar _type = require(\"./type\");\r\nvar extendFromObject = function(target, source, overrideExistingValues) {\r\n    target = target || {};\r\n    for (var prop in source) {\r\n        if (Object.prototype.hasOwnProperty.call(source, prop)) {\r\n            var value = source[prop];\r\n            if (!(prop in target) || overrideExistingValues) {\r\n                target[prop] = value\r\n            }\r\n        }\r\n    }\r\n    return target\r\n};\r\nexports.extendFromObject = extendFromObject;\r\nvar extend = function extend(target) {\r\n    target = target || {};\r\n    var i = 1;\r\n    var deep = false;\r\n    if (\"boolean\" === typeof target) {\r\n        deep = target;\r\n        target = arguments[1] || {};\r\n        i++\r\n    }\r\n    for (; i < arguments.length; i++) {\r\n        var source = arguments[i];\r\n        if (null == source) {\r\n            continue\r\n        }\r\n        for (var key in source) {\r\n            var targetValue = target[key];\r\n            var sourceValue = source[key];\r\n            var sourceValueIsArray = false;\r\n            var clone = void 0;\r\n            if (\"__proto__\" === key || target === sourceValue) {\r\n                continue\r\n            }\r\n            if (deep && sourceValue && ((0, _type.isPlainObject)(sourceValue) || (sourceValueIsArray = Array.isArray(sourceValue)))) {\r\n                if (sourceValueIsArray) {\r\n                    clone = targetValue && Array.isArray(targetValue) ? targetValue : []\r\n                } else {\r\n                    clone = targetValue && (0, _type.isPlainObject)(targetValue) ? targetValue : {}\r\n                }\r\n                target[key] = extend(deep, clone, sourceValue)\r\n            } else {\r\n                if (void 0 !== sourceValue) {\r\n                    target[key] = sourceValue\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return target\r\n};\r\nexports.extend = extend;\r\n","/**\r\n * DevExtreme (viz/gauges/linear_range_container.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _base_range_container = _interopRequireDefault(require(\"./base_range_container\"));\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _Number = Number;\r\nvar _max = Math.max;\r\nvar LinearRangeContainer = _base_range_container.default.inherit({\r\n    _processOptions: function() {\r\n        var that = this;\r\n        that.vertical = that._options.vertical;\r\n        that._inner = that._outer = 0;\r\n        if (that.vertical) {\r\n            switch ((0, _utils.normalizeEnum)(that._options.horizontalOrientation)) {\r\n                case \"left\":\r\n                    that._inner = 1;\r\n                    break;\r\n                case \"center\":\r\n                    that._inner = that._outer = .5;\r\n                    break;\r\n                default:\r\n                    that._outer = 1\r\n            }\r\n        } else {\r\n            switch ((0, _utils.normalizeEnum)(that._options.verticalOrientation)) {\r\n                case \"top\":\r\n                    that._inner = 1;\r\n                    break;\r\n                case \"center\":\r\n                    that._inner = that._outer = .5;\r\n                    break;\r\n                default:\r\n                    that._outer = 1\r\n            }\r\n        }\r\n    },\r\n    _isVisible: function() {\r\n        return true\r\n    },\r\n    _createRange: function(range, layout) {\r\n        var that = this;\r\n        var inner = that._inner;\r\n        var outer = that._outer;\r\n        var startPosition = that._translator.translate(range.start);\r\n        var endPosition = that._translator.translate(range.end);\r\n        var points;\r\n        var x = layout.x;\r\n        var y = layout.y;\r\n        var startWidth = range.startWidth;\r\n        var endWidth = range.endWidth;\r\n        if (that.vertical) {\r\n            points = [x - startWidth * inner, startPosition, x - endWidth * inner, endPosition, x + endWidth * outer, endPosition, x + startWidth * outer, startPosition]\r\n        } else {\r\n            points = [startPosition, y + startWidth * outer, startPosition, y - startWidth * inner, endPosition, y - endWidth * inner, endPosition, y + endWidth * outer]\r\n        }\r\n        return that._renderer.path(points, \"area\")\r\n    },\r\n    measure: function(layout) {\r\n        var result = {};\r\n        var width;\r\n        result.min = result.max = layout[this.vertical ? \"x\" : \"y\"];\r\n        width = this._options.width;\r\n        width = _Number(width) || _max(_Number(width.start), _Number(width.end));\r\n        result.min -= this._inner * width;\r\n        result.max += this._outer * width;\r\n        return result\r\n    }\r\n});\r\nvar _default = LinearRangeContainer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./date_box/ui.date_box\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_chooser.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.columns_view\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _themes = require(\"../themes\");\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COLUMN_CHOOSER_CLASS = \"column-chooser\";\r\nvar COLUMN_CHOOSER_BUTTON_CLASS = \"column-chooser-button\";\r\nvar NOTOUCH_ACTION_CLASS = \"notouch-action\";\r\nvar COLUMN_CHOOSER_LIST_CLASS = \"column-chooser-list\";\r\nvar COLUMN_CHOOSER_PLAIN_CLASS = \"column-chooser-plain\";\r\nvar COLUMN_CHOOSER_DRAG_CLASS = \"column-chooser-mode-drag\";\r\nvar COLUMN_CHOOSER_SELECT_CLASS = \"column-chooser-mode-select\";\r\nvar COLUMN_CHOOSER_ICON_NAME = \"column-chooser\";\r\nvar COLUMN_CHOOSER_ITEM_CLASS = \"dx-column-chooser-item\";\r\nvar TREEVIEW_NODE_SELECTOR = \".dx-treeview-node\";\r\nvar CHECKBOX_SELECTOR = \".dx-checkbox\";\r\nvar CLICK_TIMEOUT = 300;\r\nvar processItems = function(that, chooserColumns) {\r\n    var items = [];\r\n    var isSelectMode = \"select\" === that.option(\"columnChooser.mode\");\r\n    if (chooserColumns.length) {\r\n        (0, _iterator.each)(chooserColumns, function(index, column) {\r\n            var item = {\r\n                text: column.caption,\r\n                cssClass: column.cssClass,\r\n                allowHiding: column.allowHiding,\r\n                expanded: true,\r\n                id: column.index,\r\n                disabled: false,\r\n                disableCheckBox: false === column.allowHiding,\r\n                parentId: (0, _type.isDefined)(column.ownerBand) ? column.ownerBand : null\r\n            };\r\n            if (isSelectMode) {\r\n                item.selected = column.visible\r\n            }\r\n            items.push(item)\r\n        })\r\n    }\r\n    return items\r\n};\r\nvar ColumnChooserController = _uiGrid_core.default.ViewController.inherit({\r\n    renderShowColumnChooserButton: function($element) {\r\n        var that = this;\r\n        var columnChooserButtonClass = that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS);\r\n        var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n        var $showColumnChooserButton = $element.find(\".\" + columnChooserButtonClass);\r\n        var $columnChooserButton;\r\n        if (columnChooserEnabled) {\r\n            if (!$showColumnChooserButton.length) {\r\n                $columnChooserButton = (0, _renderer.default)(\"<div>\").addClass(columnChooserButtonClass).appendTo($element);\r\n                that._createComponent($columnChooserButton, _button.default, {\r\n                    icon: COLUMN_CHOOSER_ICON_NAME,\r\n                    onClick: function() {\r\n                        that.getView(\"columnChooserView\").showColumnChooser()\r\n                    },\r\n                    hint: that.option(\"columnChooser.title\"),\r\n                    integrationOptions: {}\r\n                })\r\n            } else {\r\n                $showColumnChooserButton.show()\r\n            }\r\n        } else {\r\n            $showColumnChooserButton.hide()\r\n        }\r\n    },\r\n    getPosition: function() {\r\n        var rowsView = this.getView(\"rowsView\");\r\n        return {\r\n            my: \"right bottom\",\r\n            at: \"right bottom\",\r\n            of: rowsView && rowsView.element(),\r\n            collision: \"fit\",\r\n            offset: \"-2 -2\",\r\n            boundaryOffset: \"2 2\"\r\n        }\r\n    }\r\n});\r\nvar ColumnChooserView = _uiGrid_core2.ColumnsView.inherit({\r\n    _resizeCore: _common.noop,\r\n    _isWinDevice: function() {\r\n        return !!_devices.default.real().win\r\n    },\r\n    _updateList: function(change) {\r\n        var items;\r\n        var $popupContent = this._popupContainer.$content();\r\n        var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n        var columnChooserList = this._columnChooserList;\r\n        var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n        if (isSelectMode && columnChooserList && change && \"selection\" === change.changeType) {\r\n            items = processItems(this, chooserColumns);\r\n            for (var i = 0; i < items.length; i++) {\r\n                var selected = items[i].selected;\r\n                var id = items[i].id;\r\n                if (id === change.columnIndex) {\r\n                    if (selected) {\r\n                        columnChooserList.selectItem(id, selected)\r\n                    } else {\r\n                        columnChooserList.unselectItem(id, selected)\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            if (!isSelectMode || !columnChooserList || \"full\" === change) {\r\n                this._popupContainer._wrapper().toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_DRAG_CLASS), !isSelectMode).toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_SELECT_CLASS), isSelectMode);\r\n                items = processItems(this, chooserColumns);\r\n                this._renderTreeView($popupContent, items)\r\n            }\r\n        }\r\n    },\r\n    _initializePopupContainer: function() {\r\n        var that = this;\r\n        var $element = that.element().addClass(that.addWidgetPrefix(COLUMN_CHOOSER_CLASS));\r\n        var columnChooserOptions = that.option(\"columnChooser\");\r\n        var themeName = (0, _themes.current)();\r\n        var isGenericTheme = (0, _themes.isGeneric)(themeName);\r\n        var isMaterial = (0, _themes.isMaterial)(themeName);\r\n        var dxPopupOptions = {\r\n            visible: false,\r\n            shading: false,\r\n            showCloseButton: false,\r\n            dragEnabled: true,\r\n            resizeEnabled: true,\r\n            toolbarItems: [{\r\n                text: columnChooserOptions.title,\r\n                toolbar: \"top\",\r\n                location: isGenericTheme || isMaterial ? \"before\" : \"center\"\r\n            }],\r\n            position: that.getController(\"columnChooser\").getPosition(),\r\n            width: columnChooserOptions.width,\r\n            height: columnChooserOptions.height,\r\n            rtlEnabled: that.option(\"rtlEnabled\"),\r\n            onHidden: function() {\r\n                if (that._isWinDevice()) {\r\n                    (0, _renderer.default)(\"body\").removeClass(that.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n                }\r\n            },\r\n            container: columnChooserOptions.container\r\n        };\r\n        if (isGenericTheme || isMaterial) {\r\n            (0, _extend.extend)(dxPopupOptions, {\r\n                showCloseButton: true\r\n            })\r\n        } else {\r\n            dxPopupOptions.toolbarItems[dxPopupOptions.toolbarItems.length] = {\r\n                shortcut: \"cancel\"\r\n            }\r\n        }\r\n        if (!(0, _type.isDefined)(this._popupContainer)) {\r\n            that._popupContainer = that._createComponent($element, _popup.default, dxPopupOptions);\r\n            that._popupContainer.on(\"optionChanged\", function(args) {\r\n                if (\"visible\" === args.name) {\r\n                    that.renderCompleted.fire()\r\n                }\r\n            })\r\n        } else {\r\n            this._popupContainer.option(dxPopupOptions)\r\n        }\r\n    },\r\n    _renderCore: function(change) {\r\n        if (this._popupContainer) {\r\n            this._updateList(change)\r\n        }\r\n    },\r\n    _renderTreeView: function($container, items) {\r\n        var that = this;\r\n        var columnChooser = this.option(\"columnChooser\");\r\n        var isSelectMode = \"select\" === columnChooser.mode;\r\n        var treeViewConfig = {\r\n            items: items,\r\n            dataStructure: \"plain\",\r\n            activeStateEnabled: true,\r\n            focusStateEnabled: true,\r\n            hoverStateEnabled: true,\r\n            itemTemplate: \"item\",\r\n            showCheckBoxesMode: \"none\",\r\n            rootValue: null,\r\n            searchEnabled: columnChooser.allowSearch,\r\n            searchTimeout: columnChooser.searchTimeout,\r\n            onItemRendered: function(e) {\r\n                if (e.itemData.disableCheckBox) {\r\n                    var $treeViewNode = (0, _renderer.default)(e.itemElement).closest(TREEVIEW_NODE_SELECTOR);\r\n                    var $checkBox;\r\n                    if ($treeViewNode.length) {\r\n                        $checkBox = $treeViewNode.find(CHECKBOX_SELECTOR);\r\n                        if ($checkBox.length) {\r\n                            var checkBoxInstance = $checkBox.data(\"dxCheckBox\");\r\n                            checkBoxInstance && checkBoxInstance.option(\"disabled\", true)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        var scrollableInstance = $container.find(\".dx-scrollable\").data(\"dxScrollable\");\r\n        var scrollTop = scrollableInstance && scrollableInstance.scrollTop();\r\n        if (isSelectMode && !this._columnsController.isBandColumnsUsed()) {\r\n            $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_PLAIN_CLASS))\r\n        }\r\n        treeViewConfig.onContentReady = function(e) {\r\n            (0, _common.deferUpdate)(function() {\r\n                if (scrollTop) {\r\n                    var scrollable = (0, _renderer.default)(e.element).find(\".dx-scrollable\").data(\"dxScrollable\");\r\n                    scrollable && scrollable.scrollTo({\r\n                        y: scrollTop\r\n                    })\r\n                }\r\n                that.renderCompleted.fire()\r\n            })\r\n        };\r\n        if (this._isWinDevice()) {\r\n            treeViewConfig.useNativeScrolling = false\r\n        }(0, _extend.extend)(treeViewConfig, isSelectMode ? this._prepareSelectModeConfig() : this._prepareDragModeConfig());\r\n        if (this._columnChooserList) {\r\n            if (!treeViewConfig.searchEnabled) {\r\n                treeViewConfig.searchValue = \"\"\r\n            }\r\n            this._columnChooserList.option(treeViewConfig)\r\n        } else {\r\n            this._columnChooserList = this._createComponent($container, _tree_view.default, treeViewConfig);\r\n            $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_LIST_CLASS))\r\n        }\r\n    },\r\n    _prepareDragModeConfig: function() {\r\n        var columnChooserOptions = this.option(\"columnChooser\");\r\n        return {\r\n            noDataText: columnChooserOptions.emptyPanelText,\r\n            activeStateEnabled: false,\r\n            focusStateEnabled: false,\r\n            hoverStateEnabled: false,\r\n            itemTemplate: function(data, index, item) {\r\n                (0, _renderer.default)(item).text(data.text).parent().addClass(data.cssClass).addClass(COLUMN_CHOOSER_ITEM_CLASS)\r\n            }\r\n        }\r\n    },\r\n    _prepareSelectModeConfig: function() {\r\n        var that = this;\r\n        var selectionChangedHandler = function(e) {\r\n            var visibleColumns = that._columnsController.getVisibleColumns().filter(function(item) {\r\n                return !item.command\r\n            });\r\n            var isLastColumnUnselected = 1 === visibleColumns.length && !e.itemData.selected;\r\n            if (isLastColumnUnselected) {\r\n                e.component.selectItem(e.itemElement)\r\n            } else {\r\n                setTimeout(function() {\r\n                    that._columnsController.columnOption(e.itemData.id, \"visible\", e.itemData.selected)\r\n                }, CLICK_TIMEOUT)\r\n            }\r\n        };\r\n        return {\r\n            selectNodesRecursive: false,\r\n            showCheckBoxesMode: \"normal\",\r\n            onItemSelectionChanged: selectionChangedHandler\r\n        }\r\n    },\r\n    _columnOptionChanged: function(e) {\r\n        var changeTypes = e.changeTypes;\r\n        var optionNames = e.optionNames;\r\n        var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n        this.callBase(e);\r\n        if (isSelectMode) {\r\n            var needPartialRender = optionNames.visible && 1 === optionNames.length && void 0 !== e.columnIndex;\r\n            var needFullRender = optionNames.showInColumnChooser || optionNames.caption || optionNames.visible || changeTypes.columns && optionNames.all;\r\n            if (needPartialRender) {\r\n                this.render(null, {\r\n                    changeType: \"selection\",\r\n                    columnIndex: e.columnIndex\r\n                })\r\n            } else {\r\n                if (needFullRender) {\r\n                    this.render(null, \"full\")\r\n                }\r\n            }\r\n        }\r\n    },\r\n    optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"columnChooser\":\r\n                this._initializePopupContainer();\r\n                this.render(null, \"full\");\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    getColumnElements: function() {\r\n        var result = [];\r\n        var $node;\r\n        var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n        var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n        var $content = this._popupContainer && this._popupContainer.$content();\r\n        var $nodes = $content && $content.find(\".dx-treeview-node\");\r\n        if ($nodes) {\r\n            chooserColumns.forEach(function(column) {\r\n                $node = $nodes.filter(\"[data-item-id = '\" + column.index + \"']\");\r\n                var item = $node.length ? $node.children(\".\" + COLUMN_CHOOSER_ITEM_CLASS).get(0) : null;\r\n                result.push(item)\r\n            })\r\n        }\r\n        return (0, _renderer.default)(result)\r\n    },\r\n    getName: function() {\r\n        return \"columnChooser\"\r\n    },\r\n    getColumns: function() {\r\n        return this._columnsController.getChooserColumns()\r\n    },\r\n    allowDragging: function(column, sourceLocation) {\r\n        var columnVisible = column && column.allowHiding && (\"columnChooser\" !== sourceLocation || !column.visible && this._columnsController.isParentColumnVisible(column.index));\r\n        return this.isColumnChooserVisible() && columnVisible\r\n    },\r\n    getBoundingRect: function() {\r\n        var that = this;\r\n        var container = that._popupContainer && that._popupContainer._container();\r\n        if (container && container.is(\":visible\")) {\r\n            var offset = container.offset();\r\n            return {\r\n                left: offset.left,\r\n                top: offset.top,\r\n                right: offset.left + container.outerWidth(),\r\n                bottom: offset.top + container.outerHeight()\r\n            }\r\n        }\r\n        return null\r\n    },\r\n    showColumnChooser: function() {\r\n        if (!this._popupContainer) {\r\n            this._initializePopupContainer();\r\n            this.render()\r\n        }\r\n        this._popupContainer.show();\r\n        if (this._isWinDevice()) {\r\n            (0, _renderer.default)(\"body\").addClass(this.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n        }\r\n    },\r\n    hideColumnChooser: function() {\r\n        if (this._popupContainer) {\r\n            this._popupContainer.hide()\r\n        }\r\n    },\r\n    isColumnChooserVisible: function() {\r\n        var popupContainer = this._popupContainer;\r\n        return popupContainer && popupContainer.option(\"visible\")\r\n    },\r\n    publicMethods: function() {\r\n        return [\"showColumnChooser\", \"hideColumnChooser\"]\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            columnChooser: {\r\n                enabled: false,\r\n                allowSearch: false,\r\n                searchTimeout: 500,\r\n                mode: \"dragAndDrop\",\r\n                width: 250,\r\n                height: 260,\r\n                title: _message.default.format(\"dxDataGrid-columnChooserTitle\"),\r\n                emptyPanelText: _message.default.format(\"dxDataGrid-columnChooserEmptyText\"),\r\n                container: void 0\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        columnChooser: ColumnChooserController\r\n    },\r\n    views: {\r\n        columnChooserView: ColumnChooserView\r\n    },\r\n    extenders: {\r\n        views: {\r\n            headerPanel: {\r\n                _getToolbarItems: function() {\r\n                    var items = this.callBase();\r\n                    return this._appendColumnChooserItem(items)\r\n                },\r\n                _appendColumnChooserItem: function(items) {\r\n                    var that = this;\r\n                    var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n                    if (columnChooserEnabled) {\r\n                        var onClickHandler = function() {\r\n                            that.component.getView(\"columnChooserView\").showColumnChooser()\r\n                        };\r\n                        var onInitialized = function(e) {\r\n                            (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS)))\r\n                        };\r\n                        var hintText = that.option(\"columnChooser.title\");\r\n                        var toolbarItem = {\r\n                            widget: \"dxButton\",\r\n                            options: {\r\n                                icon: COLUMN_CHOOSER_ICON_NAME,\r\n                                onClick: onClickHandler,\r\n                                hint: hintText,\r\n                                text: hintText,\r\n                                onInitialized: onInitialized\r\n                            },\r\n                            showText: \"inMenu\",\r\n                            location: \"after\",\r\n                            name: \"columnChooserButton\",\r\n                            locateInMenu: \"auto\",\r\n                            sortIndex: 40\r\n                        };\r\n                        items.push(toolbarItem)\r\n                    }\r\n                    return items\r\n                },\r\n                optionChanged: function(args) {\r\n                    switch (args.name) {\r\n                        case \"columnChooser\":\r\n                            this._invalidate();\r\n                            args.handled = true;\r\n                            break;\r\n                        default:\r\n                            this.callBase(args)\r\n                    }\r\n                },\r\n                isVisible: function() {\r\n                    var that = this;\r\n                    var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n                    return that.callBase() || columnChooserEnabled\r\n                }\r\n            }\r\n        },\r\n        controllers: {\r\n            columns: {\r\n                allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n                    var columnChooserMode = this.option(\"columnChooser.mode\");\r\n                    var isMoveColumnDisallowed = \"select\" === columnChooserMode && \"columnChooser\" === targetLocation;\r\n                    return isMoveColumnDisallowed ? false : this.callBase(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.spins.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _button = _interopRequireDefault(require(\"../text_box/texteditor_button_collection/button\"));\r\nvar _number_box = _interopRequireDefault(require(\"./number_box.spin\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_CONTAINER_CLASS = \"dx-numberbox-spin-container\";\r\nvar SPIN_TOUCH_FRIENDLY_CLASS = \"dx-numberbox-spin-touch-friendly\";\r\nvar SpinButtons = function(_TextEditorButton) {\r\n    _inherits(SpinButtons, _TextEditorButton);\r\n    var _super = _createSuper(SpinButtons);\r\n\r\n    function SpinButtons() {\r\n        _classCallCheck(this, SpinButtons);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SpinButtons, [{\r\n        key: \"_attachEvents\",\r\n        value: function(instance, $spinContainer) {\r\n            var editor = this.editor;\r\n            var eventName = (0, _index.addNamespace)(_pointer.default.down, editor.NAME);\r\n            var $spinContainerChildren = $spinContainer.children();\r\n            var pointerDownAction = editor._createAction(function(e) {\r\n                return editor._spinButtonsPointerDownHandler(e)\r\n            });\r\n            _events_engine.default.off($spinContainer, eventName);\r\n            _events_engine.default.on($spinContainer, eventName, function(e) {\r\n                return pointerDownAction({\r\n                    event: e\r\n                })\r\n            });\r\n            _number_box.default.getInstance($spinContainerChildren.eq(0)).option(\"onChange\", function(e) {\r\n                return editor._spinUpChangeHandler(e)\r\n            });\r\n            _number_box.default.getInstance($spinContainerChildren.eq(1)).option(\"onChange\", function(e) {\r\n                return editor._spinDownChangeHandler(e)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_create\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            var $spinContainer = (0, _renderer.default)(\"<div>\").addClass(SPIN_CONTAINER_CLASS);\r\n            var $spinUp = (0, _renderer.default)(\"<div>\").appendTo($spinContainer);\r\n            var $spinDown = (0, _renderer.default)(\"<div>\").appendTo($spinContainer);\r\n            var options = this._getOptions();\r\n            this._addToContainer($spinContainer);\r\n            editor._createComponent($spinUp, _number_box.default, (0, _extend.extend)({\r\n                direction: \"up\"\r\n            }, options));\r\n            editor._createComponent($spinDown, _number_box.default, (0, _extend.extend)({\r\n                direction: \"down\"\r\n            }, options));\r\n            this._legacyRender(editor.$element(), this._isTouchFriendly(), options.visible);\r\n            return {\r\n                instance: $spinContainer,\r\n                $element: $spinContainer\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getOptions\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            var visible = this._isVisible();\r\n            var disabled = editor.option(\"disabled\");\r\n            return {\r\n                visible: visible,\r\n                disabled: disabled\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isVisible\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            return _get(_getPrototypeOf(SpinButtons.prototype), \"_isVisible\", this).call(this) && editor.option(\"showSpinButtons\")\r\n        }\r\n    }, {\r\n        key: \"_isTouchFriendly\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            return editor.option(\"showSpinButtons\") && editor.option(\"useLargeSpinButtons\")\r\n        }\r\n    }, {\r\n        key: \"_legacyRender\",\r\n        value: function($editor, isTouchFriendly, isVisible) {\r\n            $editor.toggleClass(SPIN_TOUCH_FRIENDLY_CLASS, isTouchFriendly);\r\n            $editor.toggleClass(SPIN_CLASS, isVisible)\r\n        }\r\n    }, {\r\n        key: \"update\",\r\n        value: function() {\r\n            var shouldUpdate = _get(_getPrototypeOf(SpinButtons.prototype), \"update\", this).call(this);\r\n            if (shouldUpdate) {\r\n                var editor = this.editor,\r\n                    instance = this.instance;\r\n                var $editor = editor.$element();\r\n                var isVisible = this._isVisible();\r\n                var isTouchFriendly = this._isTouchFriendly();\r\n                var $spinButtons = instance.children();\r\n                var spinUp = _number_box.default.getInstance($spinButtons.eq(0));\r\n                var spinDown = _number_box.default.getInstance($spinButtons.eq(1));\r\n                var options = this._getOptions();\r\n                spinUp.option(options);\r\n                spinDown.option(options);\r\n                this._legacyRender($editor, isTouchFriendly, isVisible)\r\n            }\r\n        }\r\n    }]);\r\n    return SpinButtons\r\n}(_button.default);\r\nexports.default = SpinButtons;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.recurrence_editor.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _button_group = _interopRequireDefault(require(\"../button_group\"));\r\nvar _date_box = _interopRequireDefault(require(\"../date_box\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _number_box = _interopRequireDefault(require(\"../number_box\"));\r\nvar _recurrence = require(\"./recurrence\");\r\nrequire(\"../radio_group\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar RECURRENCE_EDITOR = \"dx-recurrence-editor\";\r\nvar LABEL_POSTFIX = \"-label\";\r\nvar WRAPPER_POSTFIX = \"-wrapper\";\r\nvar RECURRENCE_EDITOR_CONTAINER = \"dx-recurrence-editor-container\";\r\nvar REPEAT_END_EDITOR = \"dx-recurrence-repeat-end\";\r\nvar REPEAT_END_TYPE_EDITOR = \"dx-recurrence-radiogroup-repeat-type\";\r\nvar REPEAT_COUNT_EDITOR = \"dx-recurrence-numberbox-repeat-count\";\r\nvar REPEAT_UNTIL_DATE_EDITOR = \"dx-recurrence-datebox-until-date\";\r\nvar RECURRENCE_BUTTON_GROUP = \"dx-recurrence-button-group\";\r\nvar FREQUENCY_EDITOR = \"dx-recurrence-selectbox-freq\";\r\nvar INTERVAL_EDITOR = \"dx-recurrence-numberbox-interval\";\r\nvar REPEAT_ON_EDITOR = \"dx-recurrence-repeat-on\";\r\nvar DAY_OF_MONTH = \"dx-recurrence-numberbox-day-of-month\";\r\nvar MONTH_OF_YEAR = \"dx-recurrence-selectbox-month-of-year\";\r\nvar recurrentEditorNumberBoxWidth = 70;\r\nvar recurrentEditorSelectBoxWidth = 120;\r\nvar defaultRecurrenceTypeIndex = 1;\r\nvar frequenciesMessages = [{\r\n    recurrence: \"dxScheduler-recurrenceHourly\",\r\n    value: \"hourly\"\r\n}, {\r\n    recurrence: \"dxScheduler-recurrenceDaily\",\r\n    value: \"daily\"\r\n}, {\r\n    recurrence: \"dxScheduler-recurrenceWeekly\",\r\n    value: \"weekly\"\r\n}, {\r\n    recurrence: \"dxScheduler-recurrenceMonthly\",\r\n    value: \"monthly\"\r\n}, {\r\n    recurrence: \"dxScheduler-recurrenceYearly\",\r\n    value: \"yearly\"\r\n}];\r\nvar frequencies = frequenciesMessages.map(function(item) {\r\n    return {\r\n        text: function() {\r\n            return _message.default.format(item.recurrence)\r\n        },\r\n        value: item.value\r\n    }\r\n});\r\nvar repeatEndTypes = [{\r\n    type: \"never\"\r\n}, {\r\n    type: \"until\"\r\n}, {\r\n    type: \"count\"\r\n}];\r\nvar days = [\"SU\", \"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\"];\r\nvar RecurrenceRule = function() {\r\n    function RecurrenceRule(rule) {\r\n        _classCallCheck(this, RecurrenceRule);\r\n        this._recurrenceProcessor = (0, _recurrence.getRecurrenceProcessor)();\r\n        this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(rule).rule\r\n    }\r\n    _createClass(RecurrenceRule, [{\r\n        key: \"makeRules\",\r\n        value: function(string) {\r\n            this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(string).rule\r\n        }\r\n    }, {\r\n        key: \"makeRule\",\r\n        value: function(field, value) {\r\n            if (!value || Array.isArray(value) && !value.length) {\r\n                delete this._recurrenceRule[field];\r\n                return\r\n            }\r\n            if ((0, _type.isDefined)(field)) {\r\n                if (\"until\" === field) {\r\n                    delete this._recurrenceRule.count\r\n                }\r\n                if (\"count\" === field) {\r\n                    delete this._recurrenceRule.until\r\n                }\r\n                this._recurrenceRule[field] = value\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getRepeatEndRule\",\r\n        value: function() {\r\n            var rules = this._recurrenceRule;\r\n            if (\"count\" in rules) {\r\n                return \"count\"\r\n            }\r\n            if (\"until\" in rules) {\r\n                return \"until\"\r\n            }\r\n            return \"never\"\r\n        }\r\n    }, {\r\n        key: \"getRecurrenceString\",\r\n        value: function() {\r\n            return this._recurrenceProcessor.getRecurrenceString(this._recurrenceRule)\r\n        }\r\n    }, {\r\n        key: \"getRules\",\r\n        value: function() {\r\n            return this._recurrenceRule\r\n        }\r\n    }, {\r\n        key: \"getDaysFromByDayRule\",\r\n        value: function() {\r\n            return this._recurrenceProcessor.daysFromByDayRule(this._recurrenceRule)\r\n        }\r\n    }]);\r\n    return RecurrenceRule\r\n}();\r\nvar RecurrenceEditor = function(_Editor) {\r\n    _inherits(RecurrenceEditor, _Editor);\r\n    var _super = _createSuper(RecurrenceEditor);\r\n\r\n    function RecurrenceEditor() {\r\n        _classCallCheck(this, RecurrenceEditor);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(RecurrenceEditor, [{\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            var defaultOptions = _get(_getPrototypeOf(RecurrenceEditor.prototype), \"_getDefaultOptions\", this).call(this);\r\n            return (0, _extend.extend)(defaultOptions, {\r\n                value: null,\r\n                startDate: new Date,\r\n                firstDayOfWeek: void 0\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getFirstDayOfWeek\",\r\n        value: function() {\r\n            var firstDayOfWeek = this.option(\"firstDayOfWeek\");\r\n            return (0, _type.isDefined)(firstDayOfWeek) ? firstDayOfWeek : _date2.default.firstDayOfWeekIndex()\r\n        }\r\n    }, {\r\n        key: \"_createComponent\",\r\n        value: function(element, name) {\r\n            var config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n            this._extendConfig(config, {\r\n                readOnly: this.option(\"readOnly\")\r\n            });\r\n            return _get(_getPrototypeOf(RecurrenceEditor.prototype), \"_createComponent\", this).call(this, element, name, config)\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(RecurrenceEditor.prototype), \"_init\", this).call(this);\r\n            this._recurrenceRule = new RecurrenceRule(this.option(\"value\"))\r\n        }\r\n    }, {\r\n        key: \"_render\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(RecurrenceEditor.prototype), \"_render\", this).call(this);\r\n            this.$element().addClass(RECURRENCE_EDITOR);\r\n            this._$container = (0, _renderer.default)(\"<div>\").addClass(RECURRENCE_EDITOR_CONTAINER).appendTo(this.$element());\r\n            this._prepareEditors();\r\n            this._renderEditors(this._$container)\r\n        }\r\n    }, {\r\n        key: \"getEditorByField\",\r\n        value: function(fieldName) {\r\n            var editor = this.getRecurrenceForm().getEditor(fieldName);\r\n            if (!(0, _type.isDefined)(editor)) {\r\n                switch (fieldName) {\r\n                    case \"byday\":\r\n                        editor = this._weekEditor;\r\n                        break;\r\n                    case \"count\":\r\n                        editor = this._repeatCountEditor;\r\n                        break;\r\n                    case \"until\":\r\n                        editor = this._repeatUntilDate\r\n                }\r\n            }\r\n            return editor\r\n        }\r\n    }, {\r\n        key: \"_prepareEditors\",\r\n        value: function() {\r\n            var freq = (this._recurrenceRule.getRules().freq || frequenciesMessages[defaultRecurrenceTypeIndex].value).toLowerCase();\r\n            this._editors = [this._createFreqEditor(freq), this._createIntervalEditor(freq), this._createRepeatOnLabel(freq), {\r\n                itemType: \"group\",\r\n                cssClass: REPEAT_ON_EDITOR,\r\n                colCount: 2,\r\n                colCountByScreen: {\r\n                    xs: 2\r\n                },\r\n                items: this._createRepeatOnEditor(freq)\r\n            }, {\r\n                itemType: \"group\",\r\n                items: this._createRepeatEndEditor()\r\n            }];\r\n            return this._editors\r\n        }\r\n    }, {\r\n        key: \"_createFreqEditor\",\r\n        value: function(freq) {\r\n            var _this = this;\r\n            return {\r\n                dataField: \"freq\",\r\n                name: \"FREQ\",\r\n                editorType: \"dxSelectBox\",\r\n                cssClass: FREQUENCY_EDITOR,\r\n                editorOptions: {\r\n                    items: frequencies,\r\n                    value: freq,\r\n                    field: \"freq\",\r\n                    valueExpr: \"value\",\r\n                    displayExpr: \"text\",\r\n                    layout: \"horizontal\",\r\n                    elementAttr: {\r\n                        \"class\": FREQUENCY_EDITOR\r\n                    },\r\n                    onValueChanged: function(args) {\r\n                        return _this._valueChangedHandler(args)\r\n                    }\r\n                },\r\n                label: {\r\n                    text: _message.default.format(\"dxScheduler-editorLabelRecurrence\")\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createIntervalEditor\",\r\n        value: function(freq) {\r\n            var _this2 = this;\r\n            var interval = this._recurrenceRule.getRules().interval || 1;\r\n            return {\r\n                itemType: \"group\",\r\n                colCount: 2,\r\n                cssClass: \"\".concat(INTERVAL_EDITOR).concat(WRAPPER_POSTFIX),\r\n                colCountByScreen: {\r\n                    xs: 2\r\n                },\r\n                items: [{\r\n                    dataField: \"interval\",\r\n                    editorType: \"dxNumberBox\",\r\n                    editorOptions: {\r\n                        width: recurrentEditorNumberBoxWidth,\r\n                        min: 1,\r\n                        field: \"interval\",\r\n                        value: interval,\r\n                        showSpinButtons: true,\r\n                        useLargeSpinButtons: false,\r\n                        elementAttr: {\r\n                            \"class\": INTERVAL_EDITOR\r\n                        },\r\n                        onValueChanged: function(args) {\r\n                            return _this2._valueChangedHandler(args)\r\n                        }\r\n                    },\r\n                    label: {\r\n                        text: _message.default.format(\"dxScheduler-recurrenceRepeatEvery\")\r\n                    }\r\n                }, {\r\n                    name: \"intervalLabel\",\r\n                    cssClass: \"\".concat(INTERVAL_EDITOR).concat(LABEL_POSTFIX),\r\n                    template: function() {\r\n                        return _message.default.format(\"dxScheduler-recurrenceRepeat\".concat(freq.charAt(0).toUpperCase()).concat(freq.substr(1).toLowerCase()))\r\n                    }\r\n                }]\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createRepeatOnLabel\",\r\n        value: function(freq) {\r\n            return {\r\n                itemType: \"group\",\r\n                cssClass: \"\".concat(REPEAT_ON_EDITOR).concat(LABEL_POSTFIX),\r\n                items: [{\r\n                    name: \"repeatOnLabel\",\r\n                    colSpan: 2,\r\n                    template: function() {\r\n                        return _message.default.format(\"dxScheduler-recurrenceRepeatOn\")\r\n                    },\r\n                    visible: freq && \"daily\" !== freq && \"hourly\" !== freq\r\n                }]\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createRepeatOnEditor\",\r\n        value: function(freq) {\r\n            return [this._createByDayEditor(freq), this._createByMonthEditor(freq), this._createByMonthDayEditor(freq)]\r\n        }\r\n    }, {\r\n        key: \"_createByDayEditor\",\r\n        value: function(freq) {\r\n            var _this3 = this;\r\n            return {\r\n                dataField: \"byday\",\r\n                colSpan: 2,\r\n                template: function(_, itemElement) {\r\n                    var firstDayOfWeek = _this3._getFirstDayOfWeek();\r\n                    var byDay = _this3._daysOfWeekByRules();\r\n                    var localDaysNames = _date2.default.getDayNames(\"abbreviated\");\r\n                    var dayNames = days.slice(firstDayOfWeek).concat(days.slice(0, firstDayOfWeek));\r\n                    var itemsButtonGroup = localDaysNames.slice(firstDayOfWeek).concat(localDaysNames.slice(0, firstDayOfWeek)).map(function(item, index) {\r\n                        return {\r\n                            text: item,\r\n                            key: dayNames[index]\r\n                        }\r\n                    });\r\n                    _this3._$repeatOnWeek = (0, _renderer.default)(\"<div>\").addClass(RECURRENCE_BUTTON_GROUP).appendTo(itemElement);\r\n                    _this3._weekEditor = _this3._createComponent(_this3._$repeatOnWeek, _button_group.default, {\r\n                        items: itemsButtonGroup,\r\n                        field: \"byday\",\r\n                        selectionMode: \"multiple\",\r\n                        selectedItemKeys: byDay,\r\n                        keyExpr: \"key\",\r\n                        onSelectionChanged: function(e) {\r\n                            var selectedKeys = e.component.option(\"selectedItemKeys\");\r\n                            _this3._recurrenceRule.makeRule(\"byday\", selectedKeys);\r\n                            _this3._changeEditorValue()\r\n                        }\r\n                    })\r\n                },\r\n                visible: \"weekly\" === freq,\r\n                label: {\r\n                    visible: false\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createByMonthEditor\",\r\n        value: function(freq) {\r\n            var _this4 = this;\r\n            var monthsName = _date2.default.getMonthNames(\"wide\");\r\n            var months = _toConsumableArray(Array(12)).map(function(_, i) {\r\n                return {\r\n                    value: \"\".concat(i + 1),\r\n                    text: monthsName[i]\r\n                }\r\n            });\r\n            return {\r\n                dataField: \"bymonth\",\r\n                editorType: \"dxSelectBox\",\r\n                editorOptions: {\r\n                    field: \"bymonth\",\r\n                    items: months,\r\n                    value: this._monthOfYearByRules(),\r\n                    width: recurrentEditorSelectBoxWidth,\r\n                    displayExpr: \"text\",\r\n                    valueExpr: \"value\",\r\n                    elementAttr: {\r\n                        \"class\": MONTH_OF_YEAR\r\n                    },\r\n                    onValueChanged: function(args) {\r\n                        return _this4._valueChangedHandler(args)\r\n                    }\r\n                },\r\n                visible: \"yearly\" === freq,\r\n                label: {\r\n                    visible: false\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createByMonthDayEditor\",\r\n        value: function(freq) {\r\n            var _this5 = this;\r\n            return {\r\n                dataField: \"bymonthday\",\r\n                editorType: \"dxNumberBox\",\r\n                editorOptions: {\r\n                    min: 1,\r\n                    max: 31,\r\n                    width: recurrentEditorNumberBoxWidth,\r\n                    field: \"bymonthday\",\r\n                    showSpinButtons: true,\r\n                    useLargeSpinButtons: false,\r\n                    value: this._dayOfMonthByRules(),\r\n                    elementAttr: {\r\n                        \"class\": DAY_OF_MONTH\r\n                    },\r\n                    onValueChanged: function(args) {\r\n                        return _this5._valueChangedHandler(args)\r\n                    }\r\n                },\r\n                visible: \"monthly\" === freq || \"yearly\" === freq,\r\n                label: {\r\n                    visible: false\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createRepeatEndEditor\",\r\n        value: function() {\r\n            var _this6 = this;\r\n            var repeatType = this._recurrenceRule.getRepeatEndRule();\r\n            return [{\r\n                dataField: \"repeatEnd\",\r\n                editorType: \"dxRadioGroup\",\r\n                editorOptions: {\r\n                    items: repeatEndTypes,\r\n                    value: repeatType,\r\n                    valueExpr: \"type\",\r\n                    field: \"repeatEnd\",\r\n                    itemTemplate: function(itemData) {\r\n                        if (\"count\" === itemData.type) {\r\n                            return _this6._renderRepeatCountEditor()\r\n                        }\r\n                        if (\"until\" === itemData.type) {\r\n                            return _this6._renderRepeatUntilEditor()\r\n                        }\r\n                        return _this6._renderDefaultRepeatEnd()\r\n                    },\r\n                    layout: \"vertical\",\r\n                    elementAttr: {\r\n                        \"class\": REPEAT_END_TYPE_EDITOR\r\n                    },\r\n                    onValueChanged: function(args) {\r\n                        return _this6._repeatEndValueChangedHandler(args)\r\n                    }\r\n                },\r\n                label: {\r\n                    text: _message.default.format(\"dxScheduler-recurrenceEnd\")\r\n                }\r\n            }]\r\n        }\r\n    }, {\r\n        key: \"_renderEditors\",\r\n        value: function($container) {\r\n            this._recurrenceForm = this._createComponent($container, _form.default, {\r\n                items: this._editors,\r\n                showValidationSummary: true,\r\n                scrollingEnabled: true,\r\n                showColonAfterLabel: false,\r\n                labelLocation: \"top\"\r\n            });\r\n            this._disableRepeatEndParts()\r\n        }\r\n    }, {\r\n        key: \"_setAriaDescribedBy\",\r\n        value: function(editor, $label) {\r\n            var labelId = \"label-\".concat(new _guid.default);\r\n            editor.setAria(\"describedby\", labelId);\r\n            editor.setAria(\"id\", labelId, $label)\r\n        }\r\n    }, {\r\n        key: \"getRecurrenceForm\",\r\n        value: function() {\r\n            return this._recurrenceForm\r\n        }\r\n    }, {\r\n        key: \"changeValueByVisibility\",\r\n        value: function(value) {\r\n            if (value) {\r\n                if (!this.option(\"value\")) {\r\n                    this._handleDefaults()\r\n                }\r\n            } else {\r\n                this._recurrenceRule.makeRules(\"\");\r\n                this.option(\"value\", \"\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_handleDefaults\",\r\n        value: function() {\r\n            this._recurrenceRule.makeRule(\"freq\", frequenciesMessages[defaultRecurrenceTypeIndex].value);\r\n            this._changeEditorValue()\r\n        }\r\n    }, {\r\n        key: \"_changeEditorValue\",\r\n        value: function() {\r\n            this.option(\"value\", this._recurrenceRule.getRecurrenceString() || \"\")\r\n        }\r\n    }, {\r\n        key: \"_daysOfWeekByRules\",\r\n        value: function() {\r\n            var daysByRule = this._recurrenceRule.getDaysFromByDayRule();\r\n            if (!daysByRule.length) {\r\n                daysByRule = [days[this.option(\"startDate\").getDay()]]\r\n            }\r\n            return daysByRule\r\n        }\r\n    }, {\r\n        key: \"_dayOfMonthByRules\",\r\n        value: function() {\r\n            var dayByRule = this._recurrenceRule.getRules().bymonthday;\r\n            if (!dayByRule) {\r\n                dayByRule = this.option(\"startDate\").getDate()\r\n            }\r\n            return dayByRule\r\n        }\r\n    }, {\r\n        key: \"_monthOfYearByRules\",\r\n        value: function() {\r\n            var monthByRule = this._recurrenceRule.getRules().bymonth;\r\n            if (!monthByRule) {\r\n                monthByRule = this.option(\"startDate\").getMonth() + 1\r\n            }\r\n            return String(monthByRule)\r\n        }\r\n    }, {\r\n        key: \"_renderDefaultRepeatEnd\",\r\n        value: function() {\r\n            var $editorTemplate = (0, _renderer.default)(\"<div>\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n            (0, _renderer.default)(\"<div>\").text(_message.default.format(\"dxScheduler-recurrenceNever\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorTemplate);\r\n            return $editorTemplate\r\n        }\r\n    }, {\r\n        key: \"_repeatEndValueChangedHandler\",\r\n        value: function(args) {\r\n            var value = args.value;\r\n            this._disableRepeatEndParts(value);\r\n            if (\"until\" === value) {\r\n                this._recurrenceRule.makeRule(value, this._getUntilValue())\r\n            }\r\n            if (\"count\" === value) {\r\n                this._recurrenceRule.makeRule(value, this._repeatCountEditor.option(\"value\"))\r\n            }\r\n            if (\"never\" === value) {\r\n                this._recurrenceRule.makeRule(\"count\", \"\");\r\n                this._recurrenceRule.makeRule(\"until\", \"\")\r\n            }\r\n            this._changeEditorValue()\r\n        }\r\n    }, {\r\n        key: \"_disableRepeatEndParts\",\r\n        value: function() {\r\n            var value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._recurrenceRule.getRepeatEndRule();\r\n            if (\"until\" === value) {\r\n                this._repeatCountEditor.option(\"disabled\", true);\r\n                this._repeatUntilDate.option(\"disabled\", false)\r\n            }\r\n            if (\"count\" === value) {\r\n                this._repeatCountEditor.option(\"disabled\", false);\r\n                this._repeatUntilDate.option(\"disabled\", true)\r\n            }\r\n            if (\"never\" === value) {\r\n                this._repeatCountEditor.option(\"disabled\", true);\r\n                this._repeatUntilDate.option(\"disabled\", true)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderRepeatCountEditor\",\r\n        value: function() {\r\n            var repeatCount = this._recurrenceRule.getRules().count || 1;\r\n            var $editorWrapper = (0, _renderer.default)(\"<div>\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n            (0, _renderer.default)(\"<div>\").text(_message.default.format(\"dxScheduler-recurrenceAfter\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n            this._$repeatCountEditor = (0, _renderer.default)(\"<div>\").addClass(REPEAT_COUNT_EDITOR).appendTo($editorWrapper);\r\n            (0, _renderer.default)(\"<div>\").text(_message.default.format(\"dxScheduler-recurrenceRepeatCount\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n            this._repeatCountEditor = this._createComponent(this._$repeatCountEditor, _number_box.default, {\r\n                field: \"count\",\r\n                width: recurrentEditorNumberBoxWidth,\r\n                min: 1,\r\n                showSpinButtons: true,\r\n                useLargeSpinButtons: false,\r\n                value: repeatCount,\r\n                onValueChanged: this._repeatCountValueChangeHandler.bind(this)\r\n            });\r\n            return $editorWrapper\r\n        }\r\n    }, {\r\n        key: \"_repeatCountValueChangeHandler\",\r\n        value: function(args) {\r\n            if (\"count\" === this._recurrenceRule.getRepeatEndRule()) {\r\n                var value = args.value;\r\n                this._recurrenceRule.makeRule(\"count\", value);\r\n                this._changeEditorValue()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_formatUntilDate\",\r\n        value: function(date) {\r\n            if (this._recurrenceRule.getRules().until && _date.default.sameDate(this._recurrenceRule.getRules().until, date)) {\r\n                return date\r\n            }\r\n            return _date.default.setToDayEnd(date)\r\n        }\r\n    }, {\r\n        key: \"_renderRepeatUntilEditor\",\r\n        value: function() {\r\n            var repeatUntil = this._recurrenceRule.getRules().until || this._formatUntilDate(new Date);\r\n            var $editorWrapper = (0, _renderer.default)(\"<div>\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n            (0, _renderer.default)(\"<div>\").text(_message.default.format(\"dxScheduler-recurrenceOn\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n            this._$repeatDateEditor = (0, _renderer.default)(\"<div>\").addClass(REPEAT_UNTIL_DATE_EDITOR).appendTo($editorWrapper);\r\n            this._repeatUntilDate = this._createComponent(this._$repeatDateEditor, _date_box.default, {\r\n                field: \"until\",\r\n                value: repeatUntil,\r\n                type: \"date\",\r\n                onValueChanged: this._repeatUntilValueChangeHandler.bind(this),\r\n                calendarOptions: {\r\n                    firstDayOfWeek: this._getFirstDayOfWeek()\r\n                }\r\n            });\r\n            return $editorWrapper\r\n        }\r\n    }, {\r\n        key: \"_repeatUntilValueChangeHandler\",\r\n        value: function(args) {\r\n            if (\"until\" === this._recurrenceRule.getRepeatEndRule()) {\r\n                var untilDate = this._formatUntilDate(new Date(args.value));\r\n                this._repeatUntilDate.option(\"value\", untilDate);\r\n                this._recurrenceRule.makeRule(\"until\", untilDate);\r\n                this._changeEditorValue()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_valueChangedHandler\",\r\n        value: function(args) {\r\n            var value = args.value,\r\n                previousValue = args.previousValue;\r\n            var field = args.component.option(\"field\");\r\n            if (!this.option(\"visible\")) {\r\n                this.option(\"value\", \"\")\r\n            } else {\r\n                this._recurrenceRule.makeRule(field, value);\r\n                if (\"freq\" === field) {\r\n                    this._makeRepeatOnRule(value);\r\n                    this._changeRepeatOnVisibility(value, previousValue)\r\n                }\r\n                this._changeEditorValue()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_makeRepeatOnRule\",\r\n        value: function(value) {\r\n            if (\"daily\" === value || \"hourly\" === value) {\r\n                this._recurrenceRule.makeRule(\"byday\", \"\");\r\n                this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n                this._recurrenceRule.makeRule(\"bymonthday\", \"\")\r\n            }\r\n            if (\"weekly\" === value) {\r\n                this._recurrenceRule.makeRule(\"byday\", this._daysOfWeekByRules());\r\n                this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n                this._recurrenceRule.makeRule(\"bymonthday\", \"\")\r\n            }\r\n            if (\"monthly\" === value) {\r\n                this._recurrenceRule.makeRule(\"bymonthday\", this._dayOfMonthByRules());\r\n                this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n                this._recurrenceRule.makeRule(\"byday\", \"\")\r\n            }\r\n            if (\"yearly\" === value) {\r\n                this._recurrenceRule.makeRule(\"bymonthday\", this._dayOfMonthByRules());\r\n                this._recurrenceRule.makeRule(\"bymonth\", this._monthOfYearByRules());\r\n                this._recurrenceRule.makeRule(\"byday\", \"\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            switch (args.name) {\r\n                case \"value\":\r\n                    this._recurrenceRule.makeRules(args.value);\r\n                    this._changeRepeatIntervalLabel();\r\n                    this._disableRepeatEndParts();\r\n                    this._changeEditorsValue(this._recurrenceRule.getRules());\r\n                    _get(_getPrototypeOf(RecurrenceEditor.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                case \"startDate\":\r\n                    this._makeRepeatOnRule(this._recurrenceRule.getRules().freq);\r\n                    if ((0, _type.isDefined)(this._recurrenceRule.getRecurrenceString())) {\r\n                        this._changeEditorValue()\r\n                    }\r\n                    break;\r\n                case \"firstDayOfWeek\":\r\n                    if (this._weekEditor) {\r\n                        var localDaysNames = _date2.default.getDayNames(\"abbreviated\");\r\n                        var dayNames = days.slice(args.value).concat(days.slice(0, args.value));\r\n                        var itemsButtonGroup = localDaysNames.slice(args.value).concat(localDaysNames.slice(0, args.value)).map(function(item, index) {\r\n                            return {\r\n                                text: item,\r\n                                key: dayNames[index]\r\n                            }\r\n                        });\r\n                        this._weekEditor.option(\"items\", itemsButtonGroup)\r\n                    }\r\n                    if (this._$repeatDateEditor) {\r\n                        this._repeatUntilDate.option(\"calendarOptions.firstDayOfWeek\", this._getFirstDayOfWeek())\r\n                    }\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(RecurrenceEditor.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_changeRepeatOnVisibility\",\r\n        value: function(freq, previousFreq) {\r\n            if (freq !== previousFreq) {\r\n                this._recurrenceForm.itemOption(\"byday\", \"visible\", false);\r\n                this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", false);\r\n                this._recurrenceForm.itemOption(\"bymonth\", \"visible\", false);\r\n                this._recurrenceForm.itemOption(\"repeatOnLabel\", \"visible\", freq && \"daily\" !== freq && \"hourly\" !== freq);\r\n                if (\"weekly\" === freq) {\r\n                    this._recurrenceForm.itemOption(\"byday\", \"visible\", true)\r\n                }\r\n                if (\"monthly\" === freq) {\r\n                    this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", true)\r\n                }\r\n                if (\"yearly\" === freq) {\r\n                    this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", true);\r\n                    this._recurrenceForm.itemOption(\"bymonth\", \"visible\", true)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_changeRepeatIntervalLabel\",\r\n        value: function() {\r\n            var freq = this._recurrenceRule.getRules().freq;\r\n            freq && this._recurrenceForm.itemOption(\"intervalLabel\", \"template\", _message.default.format(\"dxScheduler-recurrenceRepeat\".concat(freq.charAt(0).toUpperCase()).concat(freq.substr(1).toLowerCase())))\r\n        }\r\n    }, {\r\n        key: \"_changeEditorsValue\",\r\n        value: function(rules) {\r\n            this._recurrenceForm.getEditor(\"freq\").option(\"value\", (rules.freq || frequenciesMessages[defaultRecurrenceTypeIndex].value).toLowerCase());\r\n            this._changeDayOfWeekValue();\r\n            this._changeDayOfMonthValue();\r\n            this._changeMonthOfYearValue();\r\n            this._changeIntervalValue(rules.interval);\r\n            this._changeRepeatCountValue();\r\n            this._changeRepeatEndValue();\r\n            this._changeRepeatUntilValue()\r\n        }\r\n    }, {\r\n        key: \"_changeIntervalValue\",\r\n        value: function(value) {\r\n            this._recurrenceForm.getEditor(\"interval\").option(\"value\", value || 1)\r\n        }\r\n    }, {\r\n        key: \"_changeRepeatEndValue\",\r\n        value: function() {\r\n            var repeatType = this._recurrenceRule.getRepeatEndRule();\r\n            this._recurrenceForm.getEditor(\"repeatEnd\").option(\"value\", repeatType)\r\n        }\r\n    }, {\r\n        key: \"_changeDayOfWeekValue\",\r\n        value: function() {\r\n            var isEditorVisible = this._recurrenceForm.itemOption(\"byday\").visible;\r\n            if (isEditorVisible) {\r\n                var _days = this._daysOfWeekByRules();\r\n                this.getEditorByField(\"byday\").option(\"selectedItemKeys\", _days)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_changeDayOfMonthValue\",\r\n        value: function() {\r\n            var isEditorVisible = this._recurrenceForm.itemOption(\"bymonthday\").visible;\r\n            if (isEditorVisible) {\r\n                var day = this._dayOfMonthByRules();\r\n                this._recurrenceForm.getEditor(\"bymonthday\").option(\"value\", day)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_changeMonthOfYearValue\",\r\n        value: function() {\r\n            var isEditorVisible = this._recurrenceForm.itemOption(\"bymonth\").visible;\r\n            if (isEditorVisible) {\r\n                var month = this._monthOfYearByRules();\r\n                this._recurrenceForm.getEditor(\"bymonth\").option(\"value\", month)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_changeRepeatCountValue\",\r\n        value: function() {\r\n            var count = this._recurrenceRule.getRules().count || 1;\r\n            this._repeatCountEditor.option(\"value\", count)\r\n        }\r\n    }, {\r\n        key: \"_changeRepeatUntilValue\",\r\n        value: function() {\r\n            this._repeatUntilDate.option(\"value\", this._getUntilValue())\r\n        }\r\n    }, {\r\n        key: \"_getUntilValue\",\r\n        value: function() {\r\n            return this._recurrenceRule.getRules().until || this._formatUntilDate(new Date)\r\n        }\r\n    }, {\r\n        key: \"toggle\",\r\n        value: function() {\r\n            this._freqEditor.focus()\r\n        }\r\n    }, {\r\n        key: \"setAria\",\r\n        value: function() {\r\n            if (this._switchEditor) {\r\n                this._switchEditor.setAria(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1])\r\n            }\r\n        }\r\n    }]);\r\n    return RecurrenceEditor\r\n}(_editor.default);\r\n(0, _component_registrator.default)(\"dxRecurrenceEditor\", RecurrenceEditor);\r\nvar _default = RecurrenceEditor;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/funnel/label.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = void 0;\r\nvar _label = require(\"../series/points/label\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _slicedToArray(arr, i) {\r\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n    if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n        return\r\n    }\r\n    var _arr = [];\r\n    var _n = true;\r\n    var _d = false;\r\n    var _e = void 0;\r\n    try {\r\n        for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n            _arr.push(_s.value);\r\n            if (i && _arr.length === i) {\r\n                break\r\n            }\r\n        }\r\n    } catch (err) {\r\n        _d = true;\r\n        _e = err\r\n    } finally {\r\n        try {\r\n            if (!_n && null != _i.return) {\r\n                _i.return()\r\n            }\r\n        } finally {\r\n            if (_d) {\r\n                throw _e\r\n            }\r\n        }\r\n    }\r\n    return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return arr\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar OUTSIDE_POSITION = \"outside\";\r\nvar INSIDE_POSITION = \"inside\";\r\nvar OUTSIDE_LABEL_INDENT = 5;\r\nvar COLUMNS_LABEL_INDENT = 20;\r\nvar CONNECTOR_INDENT = 4;\r\nvar PREVENT_EMPTY_PIXEL_OFFSET = 1;\r\n\r\nfunction getLabelIndent(pos) {\r\n    pos = (0, _utils.normalizeEnum)(pos);\r\n    if (pos === OUTSIDE_POSITION) {\r\n        return OUTSIDE_LABEL_INDENT\r\n    } else {\r\n        if (pos === INSIDE_POSITION) {\r\n            return 0\r\n        }\r\n    }\r\n    return COLUMNS_LABEL_INDENT\r\n}\r\n\r\nfunction isOutsidePosition(pos) {\r\n    pos = (0, _utils.normalizeEnum)(pos);\r\n    return pos === OUTSIDE_POSITION || pos !== INSIDE_POSITION\r\n}\r\n\r\nfunction correctYForInverted(y, bBox, inverted) {\r\n    return inverted ? y - bBox.height : y\r\n}\r\n\r\nfunction getOutsideRightLabelPosition(coords, bBox, options, inverted) {\r\n    return {\r\n        x: coords[2] + options.horizontalOffset + OUTSIDE_LABEL_INDENT,\r\n        y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)\r\n    }\r\n}\r\n\r\nfunction getOutsideLeftLabelPosition(coords, bBox, options, inverted) {\r\n    return {\r\n        x: coords[0] - bBox.width - options.horizontalOffset - OUTSIDE_LABEL_INDENT,\r\n        y: correctYForInverted(coords[1] + options.verticalOffset, bBox, inverted)\r\n    }\r\n}\r\n\r\nfunction getInsideLabelPosition(coords, bBox, options) {\r\n    var width = coords[2] - coords[0];\r\n    var height = coords[7] - coords[1];\r\n    return {\r\n        x: coords[0] + width / 2 + options.horizontalOffset - bBox.width / 2,\r\n        y: coords[1] + options.verticalOffset + height / 2 - bBox.height / 2\r\n    }\r\n}\r\n\r\nfunction getColumnLabelRightPosition(labelRect, rect, textAlignment) {\r\n    return function(coords, bBox, options, inverted) {\r\n        return {\r\n            x: \"left\" === textAlignment ? rect[2] + options.horizontalOffset + COLUMNS_LABEL_INDENT : labelRect[2] - bBox.width,\r\n            y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)\r\n        }\r\n    }\r\n}\r\n\r\nfunction getColumnLabelLeftPosition(labelRect, rect, textAlignment) {\r\n    return function(coords, bBox, options, inverted) {\r\n        return {\r\n            x: \"left\" === textAlignment ? labelRect[0] : rect[0] - bBox.width - options.horizontalOffset - COLUMNS_LABEL_INDENT,\r\n            y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)\r\n        }\r\n    }\r\n}\r\n\r\nfunction getConnectorStrategy(options, inverted) {\r\n    var isLeftPos = \"left\" === options.horizontalAlignment;\r\n    var connectorIndent = isLeftPos ? CONNECTOR_INDENT : -CONNECTOR_INDENT;\r\n    var verticalCorrection = inverted ? -PREVENT_EMPTY_PIXEL_OFFSET : 0;\r\n\r\n    function getFigureCenter(figure) {\r\n        return isLeftPos ? [figure[0] + PREVENT_EMPTY_PIXEL_OFFSET, figure[1] + verticalCorrection] : [figure[2] - PREVENT_EMPTY_PIXEL_OFFSET, figure[3] + verticalCorrection]\r\n    }\r\n    return {\r\n        isLabelInside: function() {\r\n            return !isOutsidePosition(options.position)\r\n        },\r\n        getFigureCenter: getFigureCenter,\r\n        prepareLabelPoints: function(bBox) {\r\n            var x = bBox.x + connectorIndent;\r\n            var y = bBox.y;\r\n            var x1 = x + bBox.width;\r\n            return _toConsumableArray(Array(bBox.height + 1)).map(function(_, i) {\r\n                return [x, y + i]\r\n            }).concat(_toConsumableArray(Array(bBox.height + 1)).map(function(_, i) {\r\n                return [x1, y + i]\r\n            }))\r\n        },\r\n        isHorizontal: function() {\r\n            return true\r\n        },\r\n        findFigurePoint: function(figure) {\r\n            return getFigureCenter(figure)\r\n        },\r\n        adjustPoints: function(points) {\r\n            return points.map(Math.round)\r\n        }\r\n    }\r\n}\r\n\r\nfunction getLabelOptions(labelOptions, defaultColor, defaultTextAlignment) {\r\n    var opt = labelOptions || {};\r\n    var labelFont = (0, _extend.extend)({}, opt.font) || {};\r\n    var labelBorder = opt.border || {};\r\n    var labelConnector = opt.connector || {};\r\n    var backgroundAttr = {\r\n        fill: opt.backgroundColor || defaultColor,\r\n        \"stroke-width\": labelBorder.visible ? labelBorder.width || 0 : 0,\r\n        stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : \"none\",\r\n        dashStyle: labelBorder.dashStyle\r\n    };\r\n    var connectorAttr = {\r\n        stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : \"none\",\r\n        \"stroke-width\": labelConnector.visible ? labelConnector.width || 0 : 0,\r\n        opacity: labelConnector.opacity\r\n    };\r\n    labelFont.color = \"none\" === opt.backgroundColor && \"#ffffff\" === (0, _utils.normalizeEnum)(labelFont.color) && \"inside\" !== opt.position ? defaultColor : labelFont.color;\r\n    return {\r\n        format: opt.format,\r\n        textAlignment: opt.textAlignment || (isOutsidePosition(opt.position) ? defaultTextAlignment : \"center\"),\r\n        customizeText: opt.customizeText,\r\n        attributes: {\r\n            font: labelFont\r\n        },\r\n        visible: 0 !== labelFont.size ? opt.visible : false,\r\n        showForZeroValues: opt.showForZeroValues,\r\n        horizontalOffset: opt.horizontalOffset,\r\n        verticalOffset: opt.verticalOffset,\r\n        background: backgroundAttr,\r\n        connector: connectorAttr,\r\n        wordWrap: labelOptions.wordWrap,\r\n        textOverflow: labelOptions.textOverflow\r\n    }\r\n}\r\n\r\nfunction correctLabelPosition(pos, bBox, rect) {\r\n    if (pos.x < rect[0]) {\r\n        pos.x = rect[0]\r\n    }\r\n    if (pos.x + bBox.width > rect[2]) {\r\n        pos.x = rect[2] - bBox.width\r\n    }\r\n    if (pos.y < rect[1]) {\r\n        pos.y = rect[1]\r\n    }\r\n    if (pos.y + bBox.height > rect[3]) {\r\n        pos.y = rect[3] - bBox.height\r\n    }\r\n    return pos\r\n}\r\n\r\nfunction removeEmptySpace(labels, requiredSpace, startPoint) {\r\n    labels.reduce(function(requiredSpace, label, index, labels) {\r\n        var prevLabel = labels[index + 1];\r\n        if (requiredSpace > 0) {\r\n            var bBox = label.getBoundingRect();\r\n            var point = prevLabel ? prevLabel.getBoundingRect().y + prevLabel.getBoundingRect().height : startPoint;\r\n            var emptySpace = bBox.y - point;\r\n            var shift = Math.min(emptySpace, requiredSpace);\r\n            labels.slice(0, index + 1).forEach(function(label) {\r\n                var bBox = label.getBoundingRect();\r\n                label.shift(bBox.x, bBox.y - shift)\r\n            });\r\n            requiredSpace -= shift\r\n        }\r\n        return requiredSpace\r\n    }, requiredSpace)\r\n}\r\nvar plugin = {\r\n    name: \"lables\",\r\n    init: _common.noop,\r\n    dispose: _common.noop,\r\n    extenders: {\r\n        _initCore: function() {\r\n            this._labelsGroup = this._renderer.g().attr({\r\n                \"class\": this._rootClassPrefix + \"-labels\"\r\n            }).append(this._renderer.root);\r\n            this._labels = []\r\n        },\r\n        _applySize: function() {\r\n            var options = this._getOption(\"label\");\r\n            var adaptiveLayout = this._getOption(\"adaptiveLayout\");\r\n            var rect = this._rect;\r\n            var labelWidth = 0;\r\n            var width = rect[2] - rect[0];\r\n            this._labelRect = rect.slice();\r\n            if (!this._labels.length || !isOutsidePosition(options.position)) {\r\n                if ((0, _utils.normalizeEnum)(\"none\" !== this._getOption(\"resolveLabelOverlapping\", true))) {\r\n                    this._labels.forEach(function(l) {\r\n                        return !l.isVisible() && l.draw(true)\r\n                    })\r\n                }\r\n                return\r\n            }\r\n            var groupWidth = this._labels.map(function(label) {\r\n                label.resetEllipsis();\r\n                return label.getBoundingRect().width\r\n            }).reduce(function(max, width) {\r\n                return Math.max(max, width)\r\n            }, 0);\r\n            labelWidth = groupWidth + options.horizontalOffset + getLabelIndent(options.position);\r\n            if (!adaptiveLayout.keepLabels && width - labelWidth < adaptiveLayout.width) {\r\n                this._labels.forEach(function(label) {\r\n                    label.draw(false)\r\n                });\r\n                return\r\n            } else {\r\n                if (width - labelWidth < adaptiveLayout.width) {\r\n                    labelWidth = width - adaptiveLayout.width;\r\n                    labelWidth = labelWidth > 0 ? labelWidth : 0\r\n                }\r\n                this._labels.forEach(function(label) {\r\n                    label.draw(true)\r\n                })\r\n            }\r\n            if (\"left\" === options.horizontalAlignment) {\r\n                rect[0] += labelWidth\r\n            } else {\r\n                rect[2] -= labelWidth\r\n            }\r\n        },\r\n        _buildNodes: function() {\r\n            this._createLabels()\r\n        },\r\n        _change_TILING: function() {\r\n            var that = this;\r\n            var options = that._getOption(\"label\");\r\n            var getCoords = getInsideLabelPosition;\r\n            var inverted = that._getOption(\"inverted\", true);\r\n            var textAlignment;\r\n            if (isOutsidePosition(options.position)) {\r\n                if ((0, _utils.normalizeEnum)(options.position) === OUTSIDE_POSITION) {\r\n                    getCoords = \"left\" === options.horizontalAlignment ? getOutsideLeftLabelPosition : getOutsideRightLabelPosition\r\n                } else {\r\n                    textAlignment = this._defaultLabelTextAlignment();\r\n                    getCoords = \"left\" === options.horizontalAlignment ? getColumnLabelLeftPosition(this._labelRect, this._rect, textAlignment) : getColumnLabelRightPosition(this._labelRect, this._rect, textAlignment)\r\n                }\r\n            }\r\n            that._labels.forEach(function(label, index) {\r\n                var item = that._items[index];\r\n                var borderWidth = item.getNormalStyle()[\"stroke-width\"];\r\n                var halfBorderWidth = inverted ? borderWidth / 2 : -borderWidth / 2;\r\n                var coords = halfBorderWidth ? item.coords.map(function(coord, index) {\r\n                    if (1 === index || 3 === index) {\r\n                        return coord - halfBorderWidth\r\n                    } else {\r\n                        if (2 === index) {\r\n                            return coord - borderWidth\r\n                        } else {\r\n                            if (0 === index) {\r\n                                return coord + borderWidth\r\n                            }\r\n                        }\r\n                    }\r\n                    return coord\r\n                }) : item.coords;\r\n                if (!options.showForZeroValues && 0 === item.value) {\r\n                    label.draw(false);\r\n                    return\r\n                }\r\n                if (isOutsidePosition(options.position)) {\r\n                    that._correctLabelWidth(label, item.coords, options)\r\n                }\r\n                var bBox = label.getBoundingRect();\r\n                var pos = correctLabelPosition(getCoords(coords, bBox, options, inverted), bBox, that._labelRect);\r\n                label.setFigureToDrawConnector(coords);\r\n                label.shift(pos.x, pos.y)\r\n            });\r\n            that._resolveLabelOverlapping()\r\n        }\r\n    },\r\n    members: {\r\n        _resolveLabelOverlapping: function() {\r\n            var that = this;\r\n            var resolveLabelOverlapping = (0, _utils.normalizeEnum)(that._getOption(\"resolveLabelOverlapping\", true));\r\n            var labels = this._getOption(\"inverted\", true) ? that._labels.slice().reverse() : that._labels;\r\n            if (\"hide\" === resolveLabelOverlapping) {\r\n                labels.reduce(function(height, label) {\r\n                    if (label.getBoundingRect().y < height) {\r\n                        label.hide()\r\n                    } else {\r\n                        height = label.getBoundingRect().y + label.getBoundingRect().height\r\n                    }\r\n                    return height\r\n                }, 0)\r\n            } else {\r\n                if (\"shift\" === resolveLabelOverlapping) {\r\n                    var maxHeight = this._labelRect[3];\r\n                    labels.reduce(function(_ref, label, index, labels) {\r\n                        var _ref2 = _slicedToArray(_ref, 2),\r\n                            height = _ref2[0],\r\n                            emptySpace = _ref2[1];\r\n                        var bBox = label.getBoundingRect();\r\n                        var y = bBox.y;\r\n                        if (bBox.y < height) {\r\n                            label.shift(bBox.x, height);\r\n                            y = height\r\n                        }\r\n                        if (y - height > 0) {\r\n                            emptySpace += y - height\r\n                        }\r\n                        if (y + bBox.height > maxHeight) {\r\n                            if (emptySpace && emptySpace > y + bBox.height - maxHeight) {\r\n                                removeEmptySpace(labels.slice(0, index).reverse(), y + bBox.height - maxHeight, that._labelRect[1]);\r\n                                emptySpace -= y + bBox.height - maxHeight;\r\n                                label.shift(bBox.x, y - (y + bBox.height - maxHeight));\r\n                                height = y - (y + bBox.height - maxHeight) + bBox.height\r\n                            } else {\r\n                                label.hide()\r\n                            }\r\n                        } else {\r\n                            height = y + bBox.height\r\n                        }\r\n                        return [height, emptySpace]\r\n                    }, [this._labelRect[1], 0])\r\n                }\r\n            }\r\n        },\r\n        _defaultLabelTextAlignment: function() {\r\n            return this._getOption(\"rtlEnabled\", true) ? \"right\" : \"left\"\r\n        },\r\n        _correctLabelWidth: function(label, item, options) {\r\n            var isLeftPos = \"left\" === options.horizontalAlignment;\r\n            var minX = isLeftPos ? this._labelRect[0] : item[2];\r\n            var maxX = isLeftPos ? item[0] : this._labelRect[2];\r\n            var maxWidth = maxX - minX;\r\n            if (label.getBoundingRect().width > maxWidth) {\r\n                label.fit(maxWidth)\r\n            }\r\n        },\r\n        _createLabels: function() {\r\n            var that = this;\r\n            var labelOptions = that._getOption(\"label\");\r\n            var connectorStrategy = getConnectorStrategy(labelOptions, that._getOption(\"inverted\", true));\r\n            this._labelsGroup.clear();\r\n            if (!labelOptions.visible) {\r\n                return\r\n            }\r\n            this._labels = that._items.map(function(item) {\r\n                var label = new _label.Label({\r\n                    renderer: that._renderer,\r\n                    labelsGroup: that._labelsGroup,\r\n                    strategy: connectorStrategy\r\n                });\r\n                label.setOptions(getLabelOptions(labelOptions, item.color, that._defaultLabelTextAlignment()));\r\n                label.setData({\r\n                    item: item,\r\n                    value: item.value,\r\n                    percent: item.percent\r\n                });\r\n                label.draw(true);\r\n                return label\r\n            });\r\n            if (this._labels.length && isOutsidePosition(labelOptions.position)) {\r\n                this._requestChange([\"LAYOUT\"])\r\n            }\r\n        }\r\n    },\r\n    customize: function(constructor) {\r\n        constructor.prototype._proxyData.push(function(x, y) {\r\n            var that = this;\r\n            var data;\r\n            that._labels.forEach(function(label, index) {\r\n                var rect = label.getBoundingRect();\r\n                if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {\r\n                    var pos = isOutsidePosition(that._getOption(\"label\").position) ? \"outside\" : \"inside\";\r\n                    data = {\r\n                        id: index,\r\n                        type: pos + \"-label\"\r\n                    };\r\n                    return true\r\n                }\r\n            });\r\n            return data\r\n        });\r\n        [\"label\", \"resolveLabelOverlapping\"].forEach(function(optionName) {\r\n            constructor.addChange({\r\n                code: optionName.toUpperCase(),\r\n                handler: function() {\r\n                    this._createLabels();\r\n                    this._requestChange([\"LAYOUT\"])\r\n                },\r\n                isThemeDependent: true,\r\n                isOptionChange: true,\r\n                option: optionName\r\n            })\r\n        })\r\n    },\r\n    fontFields: [\"label.font\"]\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (ui/tree_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiTree_view = _interopRequireDefault(require(\"./tree_view/ui.tree_view.search\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _uiTree_view.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_sync.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _utils = require(\"../filter_builder/utils\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _uiGrid_core3 = require(\"./ui.grid_core.filter_custom_operations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar FILTER_ROW_OPERATIONS = [\"=\", \"<>\", \"<\", \"<=\", \">\", \">=\", \"notcontains\", \"contains\", \"startswith\", \"endswith\", \"between\"];\r\nvar FILTER_TYPES_INCLUDE = \"include\";\r\nvar FILTER_TYPES_EXCLUDE = \"exclude\";\r\n\r\nfunction getColumnIdentifier(column) {\r\n    return column.dataField || column.name\r\n}\r\n\r\nfunction checkForErrors(columns) {\r\n    columns.forEach(function(column) {\r\n        var identifier = getColumnIdentifier(column);\r\n        if (!(0, _type.isDefined)(identifier) && column.allowFiltering) {\r\n            throw new _ui.default.Error(\"E1049\", column.caption)\r\n        }\r\n    })\r\n}\r\nvar FilterSyncController = _uiGrid_core.default.Controller.inherit(function() {\r\n    var getEmptyFilterValues = function() {\r\n        return {\r\n            filterType: FILTER_TYPES_INCLUDE,\r\n            filterValues: void 0\r\n        }\r\n    };\r\n    var canSyncHeaderFilterWithFilterRow = function(column) {\r\n        return !_filtering.default.getGroupInterval(column) && !(column.headerFilter && column.headerFilter.dataSource)\r\n    };\r\n    var getHeaderFilterFromCondition = function(headerFilterCondition, column) {\r\n        if (!headerFilterCondition) {\r\n            return getEmptyFilterValues()\r\n        }\r\n        var filterType;\r\n        var selectedFilterOperation = headerFilterCondition[1];\r\n        var value = headerFilterCondition[2];\r\n        var hasArrayValue = Array.isArray(value);\r\n        if (!hasArrayValue) {\r\n            if (!canSyncHeaderFilterWithFilterRow(column)) {\r\n                return getEmptyFilterValues()\r\n            }\r\n        }\r\n        switch (selectedFilterOperation) {\r\n            case \"anyof\":\r\n            case \"=\":\r\n                filterType = FILTER_TYPES_INCLUDE;\r\n                break;\r\n            case \"noneof\":\r\n            case \"<>\":\r\n                filterType = FILTER_TYPES_EXCLUDE;\r\n                break;\r\n            default:\r\n                return getEmptyFilterValues()\r\n        }\r\n        return {\r\n            filterType: filterType,\r\n            filterValues: hasArrayValue ? value : [value]\r\n        }\r\n    };\r\n    var getConditionFromFilterRow = function(column) {\r\n        var value = column.filterValue;\r\n        if ((0, _type.isDefined)(value)) {\r\n            var operation = column.selectedFilterOperation || column.defaultFilterOperation || (0, _utils.getDefaultOperation)(column);\r\n            var filter = [getColumnIdentifier(column), operation, column.filterValue];\r\n            return filter\r\n        } else {\r\n            return null\r\n        }\r\n    };\r\n    var getConditionFromHeaderFilter = function(column) {\r\n        var selectedOperation;\r\n        var value;\r\n        var filterValues = column.filterValues;\r\n        if (!filterValues) {\r\n            return null\r\n        }\r\n        if (canSyncHeaderFilterWithFilterRow(column) && 1 === column.filterValues.length && !Array.isArray(filterValues[0])) {\r\n            column.filterType === FILTER_TYPES_EXCLUDE ? selectedOperation = \"<>\" : selectedOperation = \"=\";\r\n            value = filterValues[0]\r\n        } else {\r\n            column.filterType === FILTER_TYPES_EXCLUDE ? selectedOperation = \"noneof\" : selectedOperation = \"anyof\";\r\n            value = filterValues\r\n        }\r\n        return [getColumnIdentifier(column), selectedOperation, value]\r\n    };\r\n    var updateHeaderFilterCondition = function(columnsController, column, headerFilterCondition) {\r\n        var headerFilter = getHeaderFilterFromCondition(headerFilterCondition, column);\r\n        columnsController.columnOption(getColumnIdentifier(column), headerFilter)\r\n    };\r\n    var updateFilterRowCondition = function(columnsController, column, condition) {\r\n        var filterRowOptions;\r\n        var selectedFilterOperation = condition && condition[1];\r\n        var filterOperations = column.filterOperations || column.defaultFilterOperations;\r\n        if ((!filterOperations || filterOperations.indexOf(selectedFilterOperation) >= 0 || selectedFilterOperation === column.defaultFilterOperation) && FILTER_ROW_OPERATIONS.indexOf(selectedFilterOperation) >= 0) {\r\n            if (selectedFilterOperation === column.defaultFilterOperation && !(0, _type.isDefined)(column.selectedFilterOperation)) {\r\n                selectedFilterOperation = column.selectedFilterOperation\r\n            }\r\n            filterRowOptions = {\r\n                filterValue: condition[2],\r\n                selectedFilterOperation: selectedFilterOperation\r\n            }\r\n        } else {\r\n            filterRowOptions = {\r\n                filterValue: void 0,\r\n                selectedFilterOperation: void 0\r\n            }\r\n        }\r\n        columnsController.columnOption(getColumnIdentifier(column), filterRowOptions)\r\n    };\r\n    return {\r\n        syncFilterValue: function() {\r\n            var that = this;\r\n            var columnsController = that.getController(\"columns\");\r\n            var columns = columnsController.getFilteringColumns();\r\n            this._skipSyncColumnOptions = true;\r\n            columns.forEach(function(column) {\r\n                var filterConditions = (0, _utils.getMatchedConditions)(that.option(\"filterValue\"), getColumnIdentifier(column));\r\n                if (1 === filterConditions.length) {\r\n                    var filterCondition = filterConditions[0];\r\n                    updateHeaderFilterCondition(columnsController, column, filterCondition);\r\n                    updateFilterRowCondition(columnsController, column, filterCondition)\r\n                } else {\r\n                    (0, _type.isDefined)(column.filterValues) && updateHeaderFilterCondition(columnsController, column);\r\n                    (0, _type.isDefined)(column.filterValue) && updateFilterRowCondition(columnsController, column)\r\n                }\r\n            });\r\n            this._skipSyncColumnOptions = false\r\n        },\r\n        _initSync: function() {\r\n            var columns = this.getController(\"columns\").getColumns();\r\n            var dataController = this.getController(\"data\");\r\n            var pageIndex = dataController.pageIndex();\r\n            checkForErrors(columns);\r\n            if (!this.option(\"filterValue\")) {\r\n                var filteringColumns = this.getController(\"columns\").getFilteringColumns();\r\n                var filterValue = this.getFilterValueFromColumns(filteringColumns);\r\n                this.option(\"filterValue\", filterValue)\r\n            }\r\n            this.syncFilterValue();\r\n            dataController.pageIndex(pageIndex)\r\n        },\r\n        init: function() {\r\n            var _this = this;\r\n            var dataController = this.getController(\"data\");\r\n            if (dataController.isFilterSyncActive()) {\r\n                if (this.getController(\"columns\").isAllDataTypesDefined()) {\r\n                    this._initSync()\r\n                } else {\r\n                    dataController.dataSourceChanged.add(function() {\r\n                        return _this._initSync()\r\n                    })\r\n                }\r\n            }\r\n        },\r\n        _getSyncFilterRow: function(filterValue, column) {\r\n            var filter = getConditionFromFilterRow(column);\r\n            if ((0, _type.isDefined)(filter)) {\r\n                return (0, _utils.syncFilters)(filterValue, filter)\r\n            } else {\r\n                return (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column))\r\n            }\r\n        },\r\n        _getSyncHeaderFilter: function(filterValue, column) {\r\n            var filter = getConditionFromHeaderFilter(column);\r\n            if (filter) {\r\n                return (0, _utils.syncFilters)(filterValue, filter)\r\n            } else {\r\n                return (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column))\r\n            }\r\n        },\r\n        getFilterValueFromColumns: function(columns) {\r\n            if (!this.getController(\"data\").isFilterSyncActive()) {\r\n                return null\r\n            }\r\n            var filterValue = [\"and\"];\r\n            columns && columns.forEach(function(column) {\r\n                var headerFilter = getConditionFromHeaderFilter(column);\r\n                var filterRow = getConditionFromFilterRow(column);\r\n                headerFilter && (0, _utils.addItem)(headerFilter, filterValue);\r\n                filterRow && (0, _utils.addItem)(filterRow, filterValue)\r\n            });\r\n            return (0, _utils.getNormalizedFilter)(filterValue)\r\n        },\r\n        syncFilterRow: function(column, value) {\r\n            this.option(\"filterValue\", this._getSyncFilterRow(this.option(\"filterValue\"), column))\r\n        },\r\n        syncHeaderFilter: function(column) {\r\n            this.option(\"filterValue\", this._getSyncHeaderFilter(this.option(\"filterValue\"), column))\r\n        },\r\n        getCustomFilterOperations: function() {\r\n            var filterBuilderCustomOperations = this.option(\"filterBuilder.customOperations\") || [];\r\n            return [(0, _uiGrid_core3.anyOf)(this.component), (0, _uiGrid_core3.noneOf)(this.component)].concat(filterBuilderCustomOperations)\r\n        },\r\n        publicMethods: function() {\r\n            return [\"getCustomFilterOperations\"]\r\n        }\r\n    }\r\n}());\r\nvar DataControllerFilterSyncExtender = {\r\n    isFilterSyncActive: function() {\r\n        var filterSyncEnabledValue = this.option(\"filterSyncEnabled\");\r\n        return \"auto\" === filterSyncEnabledValue ? this.option(\"filterPanel.visible\") : filterSyncEnabledValue\r\n    },\r\n    skipCalculateColumnFilters: function() {\r\n        return (0, _type.isDefined)(this.option(\"filterValue\")) && this.isFilterSyncActive()\r\n    },\r\n    _calculateAdditionalFilter: function() {\r\n        var that = this;\r\n        if (false === that.option(\"filterPanel.filterEnabled\")) {\r\n            return that.callBase()\r\n        }\r\n        var filters = [that.callBase()];\r\n        var columns = that.getController(\"columns\").getFilteringColumns();\r\n        var filterValue = that.option(\"filterValue\");\r\n        if (that.isFilterSyncActive()) {\r\n            var currentColumn = that.getController(\"headerFilter\").getCurrentColumn();\r\n            if (currentColumn && filterValue) {\r\n                filterValue = (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(currentColumn))\r\n            }\r\n        }\r\n        var customOperations = that.getController(\"filterSync\").getCustomFilterOperations();\r\n        var calculatedFilterValue = (0, _utils.getFilterExpression)(filterValue, columns, customOperations, \"filterBuilder\");\r\n        if (calculatedFilterValue) {\r\n            filters.push(calculatedFilterValue)\r\n        }\r\n        return _uiGrid_core2.default.combineFilters(filters)\r\n    },\r\n    _parseColumnPropertyName: function(fullName) {\r\n        var matched = fullName.match(/.*\\.(.*)/);\r\n        return matched[1]\r\n    },\r\n    clearFilter: function(filterName) {\r\n        this.component.beginUpdate();\r\n        if (arguments.length > 0) {\r\n            if (\"filterValue\" === filterName) {\r\n                this.option(\"filterValue\", null)\r\n            }\r\n            this.callBase(filterName)\r\n        } else {\r\n            this.option(\"filterValue\", null);\r\n            this.callBase()\r\n        }\r\n        this.component.endUpdate()\r\n    },\r\n    optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"filterValue\":\r\n                this._applyFilter();\r\n                this.isFilterSyncActive() && this.getController(\"filterSync\").syncFilterValue();\r\n                args.handled = true;\r\n                break;\r\n            case \"filterSyncEnabled\":\r\n                args.handled = true;\r\n                break;\r\n            case \"columns\":\r\n                if (this.isFilterSyncActive()) {\r\n                    var column = this.getController(\"columns\").getColumnByPath(args.fullName);\r\n                    var filterSyncController = this.getController(\"filterSync\");\r\n                    if (column && !filterSyncController._skipSyncColumnOptions) {\r\n                        var propertyName = this._parseColumnPropertyName(args.fullName);\r\n                        filterSyncController._skipSyncColumnOptions = true;\r\n                        if (\"filterType\" === propertyName) {\r\n                            if (FILTER_TYPES_EXCLUDE === args.value || FILTER_TYPES_EXCLUDE === args.previousValue) {\r\n                                filterSyncController.syncHeaderFilter(column)\r\n                            }\r\n                        } else {\r\n                            if (\"filterValues\" === propertyName) {\r\n                                filterSyncController.syncHeaderFilter(column)\r\n                            } else {\r\n                                if ([\"filterValue\", \"selectedFilterOperation\"].indexOf(propertyName) > -1) {\r\n                                    filterSyncController.syncFilterRow(column, column.filterValue)\r\n                                }\r\n                            }\r\n                        }\r\n                        filterSyncController._skipSyncColumnOptions = false\r\n                    }\r\n                }\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n};\r\nvar ColumnHeadersViewFilterSyncExtender = {\r\n    _isHeaderFilterEmpty: function(column) {\r\n        if (this.getController(\"data\").isFilterSyncActive()) {\r\n            return !(0, _utils.filterHasField)(this.option(\"filterValue\"), getColumnIdentifier(column))\r\n        }\r\n        return this.callBase(column)\r\n    },\r\n    _needUpdateFilterIndicators: function() {\r\n        return !this.getController(\"data\").isFilterSyncActive()\r\n    },\r\n    optionChanged: function(args) {\r\n        if (\"filterValue\" === args.name) {\r\n            this._updateHeaderFilterIndicators()\r\n        } else {\r\n            this.callBase(args)\r\n        }\r\n    }\r\n};\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            filterValue: null,\r\n            filterSyncEnabled: \"auto\"\r\n        }\r\n    },\r\n    controllers: {\r\n        filterSync: FilterSyncController\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: DataControllerFilterSyncExtender\r\n        },\r\n        views: {\r\n            columnHeadersView: ColumnHeadersViewFilterSyncExtender\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/gesture_handler.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.GestureHandler = GestureHandler;\r\nvar _ln = Math.log;\r\nvar _LN2 = Math.LN2;\r\n\r\nfunction GestureHandler(params) {\r\n    var that = this;\r\n    that._projection = params.projection;\r\n    that._renderer = params.renderer;\r\n    that._x = that._y = 0;\r\n    that._subscribeToTracker(params.tracker)\r\n}\r\nGestureHandler.prototype = {\r\n    constructor: GestureHandler,\r\n    dispose: function() {\r\n        this._offTracker();\r\n        this._offTracker = null\r\n    },\r\n    _subscribeToTracker: function(tracker) {\r\n        var that = this;\r\n        var isActive = false;\r\n        that._offTracker = tracker.on({\r\n            start: function(arg) {\r\n                isActive = \"control-bar\" !== arg.data.name;\r\n                if (isActive) {\r\n                    that._processStart(arg)\r\n                }\r\n            },\r\n            move: function(arg) {\r\n                if (isActive) {\r\n                    that._processMove(arg)\r\n                }\r\n            },\r\n            end: function() {\r\n                if (isActive) {\r\n                    that._processEnd()\r\n                }\r\n            },\r\n            zoom: function(arg) {\r\n                that._processZoom(arg)\r\n            }\r\n        })\r\n    },\r\n    setInteraction: function(options) {\r\n        this._processEnd();\r\n        this._centeringEnabled = options.centeringEnabled;\r\n        this._zoomingEnabled = options.zoomingEnabled\r\n    },\r\n    _processStart: function(arg) {\r\n        if (this._centeringEnabled) {\r\n            this._x = arg.x;\r\n            this._y = arg.y;\r\n            this._projection.beginMoveCenter()\r\n        }\r\n    },\r\n    _processMove: function(arg) {\r\n        var that = this;\r\n        if (that._centeringEnabled) {\r\n            that._renderer.root.attr({\r\n                cursor: \"move\"\r\n            });\r\n            that._projection.moveCenter([that._x - arg.x, that._y - arg.y]);\r\n            that._x = arg.x;\r\n            that._y = arg.y\r\n        }\r\n    },\r\n    _processEnd: function() {\r\n        if (this._centeringEnabled) {\r\n            this._renderer.root.attr({\r\n                cursor: \"default\"\r\n            });\r\n            this._projection.endMoveCenter()\r\n        }\r\n    },\r\n    _processZoom: function(arg) {\r\n        var that = this;\r\n        var delta;\r\n        var screenPosition;\r\n        var coords;\r\n        if (that._zoomingEnabled) {\r\n            if (arg.delta) {\r\n                delta = arg.delta\r\n            } else {\r\n                if (arg.ratio) {\r\n                    delta = _ln(arg.ratio) / _LN2\r\n                }\r\n            }\r\n            if (that._centeringEnabled) {\r\n                screenPosition = that._renderer.getRootOffset();\r\n                screenPosition = [arg.x - screenPosition.left, arg.y - screenPosition.top];\r\n                coords = that._projection.fromScreenPoint(screenPosition)\r\n            }\r\n            that._projection.changeScaledZoom(delta);\r\n            if (that._centeringEnabled) {\r\n                that._projection.setCenterByPoint(coords, screenPosition)\r\n            }\r\n        }\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_scrolling.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = require(\"./ui.grid_core.virtual_scrolling_core\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _position = require(\"../../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TABLE_CLASS = \"table\";\r\nvar BOTTOM_LOAD_PANEL_CLASS = \"bottom-load-panel\";\r\nvar TABLE_CONTENT_CLASS = \"table-content\";\r\nvar GROUP_SPACE_CLASS = \"group-space\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar FREESPACE_CLASS = \"dx-freespace-row\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-virtual-row\";\r\nvar SCROLLING_MODE_INFINITE = \"infinite\";\r\nvar SCROLLING_MODE_VIRTUAL = \"virtual\";\r\nvar SCROLLING_MODE_STANDARD = \"standard\";\r\nvar PIXELS_LIMIT = 25e4;\r\nvar LOAD_TIMEOUT = 300;\r\nvar isVirtualMode = function(that) {\r\n    return that.option(\"scrolling.mode\") === SCROLLING_MODE_VIRTUAL\r\n};\r\nvar isAppendMode = function(that) {\r\n    return that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE\r\n};\r\nvar isVirtualRowRendering = function(that) {\r\n    var rowRenderingMode = that.option(\"scrolling.rowRenderingMode\");\r\n    if (rowRenderingMode === SCROLLING_MODE_VIRTUAL) {\r\n        return true\r\n    } else {\r\n        if (rowRenderingMode === SCROLLING_MODE_STANDARD) {\r\n            return false\r\n        }\r\n    }\r\n};\r\nvar _correctCount = function(items, count, fromEnd, isItemCountableFunc) {\r\n    for (var i = 0; i < count + 1; i++) {\r\n        var item = items[fromEnd ? items.length - 1 - i : i];\r\n        if (item && !isItemCountableFunc(item, i === count, fromEnd)) {\r\n            count++\r\n        }\r\n    }\r\n    return count\r\n};\r\nvar VirtualScrollingDataSourceAdapterExtender = function() {\r\n    var _updateLoading = function(that) {\r\n        var beginPageIndex = that._virtualScrollController.beginPageIndex(-1);\r\n        if (isVirtualMode(that)) {\r\n            if (beginPageIndex < 0 || that.viewportSize() >= 0 && that.getViewportItemIndex() >= 0 && (beginPageIndex * that.pageSize() > that.getViewportItemIndex() || beginPageIndex * that.pageSize() + that.itemsCount() < that.getViewportItemIndex() + that.viewportSize()) && that._dataSource.isLoading()) {\r\n                if (!that._isLoading) {\r\n                    that._isLoading = true;\r\n                    that.loadingChanged.fire(true)\r\n                }\r\n            } else {\r\n                if (that._isLoading) {\r\n                    that._isLoading = false;\r\n                    that.loadingChanged.fire(false)\r\n                }\r\n            }\r\n        }\r\n    };\r\n    var result = {\r\n        init: function(dataSource) {\r\n            var that = this;\r\n            that.callBase.apply(that, arguments);\r\n            that._items = [];\r\n            that._isLoaded = true;\r\n            that._virtualScrollController = new _uiGrid_core.VirtualScrollController(that.component, {\r\n                pageSize: function() {\r\n                    return that.pageSize()\r\n                },\r\n                totalItemsCount: function() {\r\n                    return that.totalItemsCount()\r\n                },\r\n                hasKnownLastPage: function() {\r\n                    return that.hasKnownLastPage()\r\n                },\r\n                pageIndex: function(index) {\r\n                    return dataSource.pageIndex(index)\r\n                },\r\n                isLoading: function() {\r\n                    return dataSource.isLoading() && !that.isCustomLoading()\r\n                },\r\n                pageCount: function() {\r\n                    return that.pageCount()\r\n                },\r\n                load: function() {\r\n                    return dataSource.load()\r\n                },\r\n                updateLoading: function() {\r\n                    _updateLoading(that)\r\n                },\r\n                itemsCount: function() {\r\n                    return that.itemsCount(true)\r\n                },\r\n                items: function() {\r\n                    return dataSource.items()\r\n                },\r\n                viewportItems: function(items) {\r\n                    if (items) {\r\n                        that._items = items\r\n                    }\r\n                    return that._items\r\n                },\r\n                onChanged: function(e) {\r\n                    that.changed.fire(e)\r\n                },\r\n                changingDuration: function(e) {\r\n                    if (that.isLoading()) {\r\n                        return LOAD_TIMEOUT\r\n                    }\r\n                    return that._renderTime || 0\r\n                }\r\n            })\r\n        },\r\n        _handleLoadingChanged: function(isLoading) {\r\n            if (!isVirtualMode(this) || this._isLoadingAll) {\r\n                this._isLoading = isLoading;\r\n                this.callBase.apply(this, arguments)\r\n            }\r\n            if (isLoading) {\r\n                this._startLoadTime = new Date\r\n            } else {\r\n                this._startLoadTime = void 0\r\n            }\r\n        },\r\n        _handleLoadError: function() {\r\n            var that = this;\r\n            that._isLoading = false;\r\n            that.loadingChanged.fire(false);\r\n            that.callBase.apply(that, arguments)\r\n        },\r\n        _handleDataChanged: function(e) {\r\n            var callBase = this.callBase.bind(this);\r\n            this._virtualScrollController.handleDataChanged(callBase, e)\r\n        },\r\n        _customizeRemoteOperations: function(options, operationTypes) {\r\n            var that = this;\r\n            if (!that.option(\"legacyRendering\") && isVirtualMode(that) && !operationTypes.reload && operationTypes.skip && that._renderTime < that.option(\"scrolling.renderingThreshold\")) {\r\n                options.delay = void 0\r\n            }\r\n            that.callBase.apply(that, arguments)\r\n        },\r\n        items: function() {\r\n            return this._items\r\n        },\r\n        itemsCount: function(isBase) {\r\n            if (isBase) {\r\n                return this.callBase()\r\n            }\r\n            return this._virtualScrollController.itemsCount()\r\n        },\r\n        load: function(loadOptions) {\r\n            if (loadOptions) {\r\n                return this.callBase(loadOptions)\r\n            }\r\n            return this._virtualScrollController.load()\r\n        },\r\n        isLoading: function() {\r\n            return this._isLoading\r\n        },\r\n        isLoaded: function() {\r\n            return this._dataSource.isLoaded() && this._isLoaded\r\n        },\r\n        resetPagesCache: function(isLiveUpdate) {\r\n            if (!isLiveUpdate) {\r\n                this._virtualScrollController.reset(true)\r\n            }\r\n            this.callBase.apply(this, arguments)\r\n        },\r\n        _changeRowExpandCore: function() {\r\n            var result = this.callBase.apply(this, arguments);\r\n            this.resetPagesCache();\r\n            _updateLoading(this);\r\n            return result\r\n        },\r\n        reload: function() {\r\n            this._dataSource.pageIndex(this.pageIndex());\r\n            var virtualScrollController = this._virtualScrollController;\r\n            if (virtualScrollController) {\r\n                var d = new _deferred.Deferred;\r\n                this.callBase.apply(this, arguments).done(function(r) {\r\n                    var delayDeferred = virtualScrollController._delayDeferred;\r\n                    if (delayDeferred) {\r\n                        delayDeferred.done(d.resolve).fail(d.reject)\r\n                    } else {\r\n                        d.resolve(r)\r\n                    }\r\n                }).fail(d.reject);\r\n                return d\r\n            } else {\r\n                return this.callBase.apply(this, arguments)\r\n            }\r\n        },\r\n        refresh: function(options, operationTypes) {\r\n            var that = this;\r\n            var storeLoadOptions = options.storeLoadOptions;\r\n            var dataSource = that._dataSource;\r\n            if (operationTypes.reload) {\r\n                that._virtualScrollController.reset();\r\n                dataSource.items().length = 0;\r\n                that._isLoaded = false;\r\n                _updateLoading(that);\r\n                that._isLoaded = true;\r\n                if (isAppendMode(that)) {\r\n                    that.pageIndex(0);\r\n                    dataSource.pageIndex(0);\r\n                    storeLoadOptions.pageIndex = 0;\r\n                    options.pageIndex = 0;\r\n                    storeLoadOptions.skip = 0\r\n                } else {\r\n                    dataSource.pageIndex(that.pageIndex());\r\n                    if (dataSource.paginate()) {\r\n                        options.pageIndex = that.pageIndex();\r\n                        storeLoadOptions.skip = that.pageIndex() * that.pageSize()\r\n                    }\r\n                }\r\n            } else {\r\n                if (isAppendMode(that) && storeLoadOptions.skip && that._skipCorrection < 0) {\r\n                    storeLoadOptions.skip += that._skipCorrection\r\n                }\r\n            }\r\n            return that.callBase.apply(that, arguments)\r\n        },\r\n        dispose: function() {\r\n            this._virtualScrollController.dispose();\r\n            this.callBase.apply(this, arguments)\r\n        }\r\n    };\r\n    [\"virtualItemsCount\", \"getContentOffset\", \"getVirtualContentSize\", \"setContentSize\", \"setViewportPosition\", \"getViewportItemIndex\", \"setViewportItemIndex\", \"getItemIndexByPosition\", \"viewportSize\", \"viewportItemSize\", \"getItemSize\", \"getItemSizes\", \"pageIndex\", \"beginPageIndex\", \"endPageIndex\", \"loadIfNeed\"].forEach(function(name) {\r\n        result[name] = function() {\r\n            var virtualScrollController = this._virtualScrollController;\r\n            return virtualScrollController[name].apply(virtualScrollController, arguments)\r\n        }\r\n    });\r\n    return result\r\n}();\r\nvar VirtualScrollingRowsViewExtender = function() {\r\n    var removeEmptyRows = function($emptyRows, className) {\r\n        var getRowParent = function(row) {\r\n            return (0, _renderer.default)(row).parent(\".\" + className).get(0)\r\n        };\r\n        var tBodies = $emptyRows.toArray().map(getRowParent).filter(function(row) {\r\n            return row\r\n        });\r\n        if (tBodies.length) {\r\n            $emptyRows = (0, _renderer.default)(tBodies)\r\n        }\r\n        var rowCount = className === FREESPACE_CLASS ? $emptyRows.length - 1 : $emptyRows.length;\r\n        for (var i = 0; i < rowCount; i++) {\r\n            $emptyRows.eq(i).remove()\r\n        }\r\n    };\r\n    return {\r\n        init: function() {\r\n            var _dataController$state, _this = this;\r\n            var dataController = this.getController(\"data\");\r\n            this.callBase();\r\n            dataController.pageChanged.add(function() {\r\n                _this.scrollToPage(dataController.pageIndex())\r\n            });\r\n            null === (_dataController$state = dataController.stateLoaded) || void 0 === _dataController$state ? void 0 : _dataController$state.add(function() {\r\n                _this._scrollToCurrentPageOnResize()\r\n            });\r\n            this._scrollToCurrentPageOnResize()\r\n        },\r\n        _scrollToCurrentPageOnResize: function() {\r\n            var _this2 = this;\r\n            var dataController = this.getController(\"data\");\r\n            if (!this.option(\"legacyRendering\") && dataController.pageIndex() > 0) {\r\n                var resizeHandler = function resizeHandler() {\r\n                    _this2.resizeCompleted.remove(resizeHandler);\r\n                    _this2.scrollToPage(dataController.pageIndex())\r\n                };\r\n                this.resizeCompleted.add(resizeHandler)\r\n            }\r\n        },\r\n        scrollToPage: function(pageIndex) {\r\n            var that = this;\r\n            var dataController = that._dataController;\r\n            var pageSize = dataController ? dataController.pageSize() : 0;\r\n            var scrollPosition;\r\n            if (isVirtualMode(that) || isAppendMode(that)) {\r\n                var itemSize = dataController.getItemSize();\r\n                var itemSizes = dataController.getItemSizes();\r\n                var itemIndex = pageIndex * pageSize;\r\n                scrollPosition = itemIndex * itemSize;\r\n                for (var index in itemSizes) {\r\n                    if (index < itemIndex) {\r\n                        scrollPosition += itemSizes[index] - itemSize\r\n                    }\r\n                }\r\n            } else {\r\n                scrollPosition = 0\r\n            }\r\n            that.scrollTo({\r\n                y: scrollPosition,\r\n                x: that._scrollLeft\r\n            })\r\n        },\r\n        renderDelayedTemplates: function(e) {\r\n            this._updateContentPosition(true);\r\n            this.callBase.apply(this, arguments)\r\n        },\r\n        _renderCore: function(e) {\r\n            var that = this;\r\n            var startRenderTime = new Date;\r\n            that.callBase.apply(that, arguments);\r\n            var dataSource = that._dataController._dataSource;\r\n            if (dataSource && e) {\r\n                var itemCount = e.items ? e.items.length : 20;\r\n                var viewportSize = that._dataController.viewportSize() || 20;\r\n                if (isVirtualRowRendering(that)) {\r\n                    dataSource._renderTime = (new Date - startRenderTime) * viewportSize / itemCount\r\n                } else {\r\n                    dataSource._renderTime = new Date - startRenderTime\r\n                }\r\n            }\r\n        },\r\n        _getRowElements: function(tableElement) {\r\n            var $rows = this.callBase(tableElement);\r\n            return $rows && $rows.not(\".\" + VIRTUAL_ROW_CLASS)\r\n        },\r\n        _renderContent: function(contentElement, tableElement) {\r\n            var that = this;\r\n            var virtualItemsCount = that._dataController.virtualItemsCount();\r\n            if (virtualItemsCount && that.option(\"legacyRendering\")) {\r\n                if ((0, _window.hasWindow)()) {\r\n                    tableElement.addClass(that.addWidgetPrefix(TABLE_CONTENT_CLASS))\r\n                }\r\n                if (!contentElement.children().length) {\r\n                    contentElement.append(tableElement)\r\n                } else {\r\n                    contentElement.children().first().replaceWith(tableElement)\r\n                }\r\n                if (1 === contentElement.children(\"table\").length) {\r\n                    contentElement.append(that._createTable());\r\n                    that._contentHeight = 0\r\n                }\r\n                return contentElement\r\n            }\r\n            return that.callBase.apply(that, arguments)\r\n        },\r\n        _removeRowsElements: function(contentTable, removeCount, changeType) {\r\n            var rowElements = this._getRowElements(contentTable).toArray();\r\n            if (\"append\" === changeType) {\r\n                rowElements = rowElements.slice(0, removeCount)\r\n            } else {\r\n                rowElements = rowElements.slice(-removeCount)\r\n            }\r\n            var errorHandlingController = this.getController(\"errorHandling\");\r\n            rowElements.map(function(rowElement) {\r\n                var $rowElement = (0, _renderer.default)(rowElement);\r\n                errorHandlingController && errorHandlingController.removeErrorRow($rowElement.next());\r\n                $rowElement.remove()\r\n            })\r\n        },\r\n        _restoreErrorRow: function(contentTable) {\r\n            var editingController = this.getController(\"editing\");\r\n            editingController && editingController.hasChanges() && this._getRowElements(contentTable).each(function(_, item) {\r\n                var rowOptions = (0, _renderer.default)(item).data(\"options\");\r\n                if (rowOptions) {\r\n                    var change = editingController.getChangeByKey(rowOptions.key);\r\n                    change && editingController._showErrorRow(change)\r\n                }\r\n            })\r\n        },\r\n        _updateContent: function(tableElement, change) {\r\n            var that = this;\r\n            var $freeSpaceRowElements;\r\n            var contentElement = that._findContentElement();\r\n            var changeType = change && change.changeType;\r\n            if (\"append\" === changeType || \"prepend\" === changeType) {\r\n                var contentTable = contentElement.children().first();\r\n                var $tBodies = that._getBodies(tableElement);\r\n                if (!that.option(\"legacyRendering\") && 1 === $tBodies.length) {\r\n                    that._getBodies(contentTable)[\"append\" === changeType ? \"append\" : \"prepend\"]($tBodies.children())\r\n                } else {\r\n                    $tBodies[\"append\" === changeType ? \"appendTo\" : \"prependTo\"](contentTable)\r\n                }\r\n                tableElement.remove();\r\n                $freeSpaceRowElements = that._getFreeSpaceRowElements(contentTable);\r\n                removeEmptyRows($freeSpaceRowElements, FREESPACE_CLASS);\r\n                if (change.removeCount) {\r\n                    that._removeRowsElements(contentTable, change.removeCount, changeType)\r\n                }\r\n                that._restoreErrorRow(contentTable)\r\n            } else {\r\n                that.callBase.apply(that, arguments)\r\n            }\r\n            that._updateBottomLoading()\r\n        },\r\n        _addVirtualRow: function($table, isFixed, location, position) {\r\n            if (!position) {\r\n                return\r\n            }\r\n            var $virtualRow = this._createEmptyRow(VIRTUAL_ROW_CLASS, isFixed, position);\r\n            $virtualRow = this._wrapRowIfNeed($table, $virtualRow);\r\n            this._appendEmptyRow($table, $virtualRow, location)\r\n        },\r\n        _updateContentPosition: function(isRender) {\r\n            var that = this;\r\n            var dataController = that._dataController;\r\n            var rowHeight = that._rowHeight || 20;\r\n            dataController.viewportItemSize(rowHeight);\r\n            if (!that.option(\"legacyRendering\") && (isVirtualMode(that) || isVirtualRowRendering(that))) {\r\n                if (!isRender) {\r\n                    var rowHeights = that._getRowElements(that._tableElement).toArray().map(function(row) {\r\n                        return (0, _position.getBoundingRect)(row).height\r\n                    });\r\n                    dataController.setContentSize(rowHeights)\r\n                }\r\n                var top = dataController.getContentOffset(\"begin\");\r\n                var bottom = dataController.getContentOffset(\"end\");\r\n                var $tables = that.getTableElements();\r\n                var $virtualRows = $tables.children(\"tbody\").children(\".\" + VIRTUAL_ROW_CLASS);\r\n                removeEmptyRows($virtualRows, VIRTUAL_ROW_CLASS);\r\n                $tables.each(function(index) {\r\n                    var isFixed = index > 0;\r\n                    that._isFixedTableRendering = isFixed;\r\n                    that._addVirtualRow((0, _renderer.default)(this), isFixed, \"top\", top);\r\n                    that._addVirtualRow((0, _renderer.default)(this), isFixed, \"bottom\", bottom);\r\n                    that._isFixedTableRendering = false\r\n                })\r\n            } else {\r\n                (0, _common.deferUpdate)(function() {\r\n                    that._updateContentPositionCore()\r\n                })\r\n            }\r\n        },\r\n        _updateContentPositionCore: function() {\r\n            var that = this;\r\n            var contentHeight;\r\n            var $tables;\r\n            var $contentTable;\r\n            var rowHeight = that._rowHeight || 20;\r\n            var virtualItemsCount = that._dataController.virtualItemsCount();\r\n            if (virtualItemsCount) {\r\n                var contentElement = that._findContentElement();\r\n                $tables = contentElement.children();\r\n                $contentTable = $tables.eq(0);\r\n                var virtualTable = $tables.eq(1);\r\n                that._contentTableHeight = $contentTable[0].offsetHeight;\r\n                that._dataController.viewportItemSize(rowHeight);\r\n                that._dataController.setContentSize(that._contentTableHeight);\r\n                contentHeight = that._dataController.getVirtualContentSize();\r\n                var top = that._dataController.getContentOffset();\r\n                (0, _common.deferRender)(function() {\r\n                    (0, _translator.move)($contentTable, {\r\n                        left: 0,\r\n                        top: top\r\n                    });\r\n                    var isRenderVirtualTableContentRequired = that._contentHeight !== contentHeight || 0 === contentHeight || !that._isTableLinesDisplaysCorrect(virtualTable) || !that._isColumnElementsEqual($contentTable.find(\"col\"), virtualTable.find(\"col\"));\r\n                    if (isRenderVirtualTableContentRequired) {\r\n                        that._contentHeight = contentHeight;\r\n                        that._renderVirtualTableContent(virtualTable, contentHeight)\r\n                    }\r\n                })\r\n            }\r\n        },\r\n        _isTableLinesDisplaysCorrect: function(table) {\r\n            var hasColumnLines = table.find(\".\" + COLUMN_LINES_CLASS).length > 0;\r\n            return hasColumnLines === this.option(\"showColumnLines\")\r\n        },\r\n        _isColumnElementsEqual: function($columns, $virtualColumns) {\r\n            var result = $columns.length === $virtualColumns.length;\r\n            if (result) {\r\n                (0, _iterator.each)($columns, function(index, element) {\r\n                    if (element.style.width !== $virtualColumns[index].style.width) {\r\n                        result = false;\r\n                        return result\r\n                    }\r\n                })\r\n            }\r\n            return result\r\n        },\r\n        _renderVirtualTableContent: function(container, height) {\r\n            var that = this;\r\n            var columns = that._columnsController.getVisibleColumns();\r\n            var html = that._createColGroup(columns).prop(\"outerHTML\");\r\n            var freeSpaceCellsHtml = \"\";\r\n            var columnLinesClass = that.option(\"showColumnLines\") ? COLUMN_LINES_CLASS : \"\";\r\n            var createFreeSpaceRowHtml = function(height) {\r\n                return \"<tr style='height:\" + height + \"px;' class='\" + FREESPACE_CLASS + \" \" + ROW_CLASS + \" \" + columnLinesClass + \"' >\" + freeSpaceCellsHtml + \"</tr>\"\r\n            };\r\n            for (var i = 0; i < columns.length; i++) {\r\n                var classes = that._getCellClasses(columns[i]);\r\n                var classString = classes.length ? \" class='\" + classes.join(\" \") + \"'\" : \"\";\r\n                freeSpaceCellsHtml += \"<td\" + classString + \"/>\"\r\n            }\r\n            while (height > PIXELS_LIMIT) {\r\n                html += createFreeSpaceRowHtml(PIXELS_LIMIT);\r\n                height -= PIXELS_LIMIT\r\n            }\r\n            html += createFreeSpaceRowHtml(height);\r\n            container.addClass(that.addWidgetPrefix(TABLE_CLASS));\r\n            container.html(html)\r\n        },\r\n        _getCellClasses: function(column) {\r\n            var classes = [];\r\n            var cssClass = column.cssClass;\r\n            var isExpandColumn = \"expand\" === column.command;\r\n            cssClass && classes.push(cssClass);\r\n            isExpandColumn && classes.push(this.addWidgetPrefix(GROUP_SPACE_CLASS));\r\n            return classes\r\n        },\r\n        _findBottomLoadPanel: function($contentElement) {\r\n            var $element = $contentElement || this.element();\r\n            var $bottomLoadPanel = $element && $element.find(\".\" + this.addWidgetPrefix(BOTTOM_LOAD_PANEL_CLASS));\r\n            if ($bottomLoadPanel && $bottomLoadPanel.length) {\r\n                return $bottomLoadPanel\r\n            }\r\n        },\r\n        _updateBottomLoading: function() {\r\n            var that = this;\r\n            var scrollingMode = that.option(\"scrolling.mode\");\r\n            var virtualMode = scrollingMode === SCROLLING_MODE_VIRTUAL;\r\n            var appendMode = scrollingMode === SCROLLING_MODE_INFINITE;\r\n            var showBottomLoading = !that._dataController.hasKnownLastPage() && that._dataController.isLoaded() && (virtualMode || appendMode);\r\n            var $contentElement = that._findContentElement();\r\n            var bottomLoadPanelElement = that._findBottomLoadPanel($contentElement);\r\n            if (showBottomLoading) {\r\n                if (!bottomLoadPanelElement) {\r\n                    (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(BOTTOM_LOAD_PANEL_CLASS)).append(that._createComponent((0, _renderer.default)(\"<div>\"), _load_indicator.default).$element()).appendTo($contentElement)\r\n                }\r\n            } else {\r\n                if (bottomLoadPanelElement) {\r\n                    bottomLoadPanelElement.remove()\r\n                }\r\n            }\r\n        },\r\n        _handleScroll: function(e) {\r\n            var that = this;\r\n            if (that._hasHeight && that._rowHeight) {\r\n                that._dataController.setViewportPosition(e.scrollOffset.top)\r\n            }\r\n            that.callBase.apply(that, arguments)\r\n        },\r\n        _needUpdateRowHeight: function(itemsCount) {\r\n            var that = this;\r\n            return that.callBase.apply(that, arguments) || itemsCount > 0 && that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE && that.option(\"scrolling.rowRenderingMode\") !== SCROLLING_MODE_VIRTUAL\r\n        },\r\n        _updateRowHeight: function() {\r\n            var that = this;\r\n            that.callBase.apply(that, arguments);\r\n            if (that._rowHeight) {\r\n                that._updateContentPosition();\r\n                var viewportHeight = that._hasHeight ? that.element().outerHeight() : (0, _renderer.default)((0, _window.getWindow)()).outerHeight();\r\n                that._dataController.viewportSize(Math.ceil(viewportHeight / that._rowHeight))\r\n            }\r\n        },\r\n        updateFreeSpaceRowHeight: function() {\r\n            var result = this.callBase.apply(this, arguments);\r\n            if (result) {\r\n                this._updateContentPosition()\r\n            }\r\n            return result\r\n        },\r\n        setLoading: function(isLoading, messageText) {\r\n            var that = this;\r\n            var callBase = that.callBase;\r\n            var dataController = that._dataController;\r\n            var hasBottomLoadPanel = dataController.pageIndex() > 0 && dataController.isLoaded() && !!that._findBottomLoadPanel();\r\n            if (hasBottomLoadPanel) {\r\n                isLoading = false\r\n            }\r\n            callBase.call(that, isLoading, messageText)\r\n        },\r\n        _resizeCore: function() {\r\n            var that = this;\r\n            var $element = that.element();\r\n            that.callBase();\r\n            if (that.component.$element() && !that._windowScroll && $element.closest((0, _window.getWindow)().document).length) {\r\n                that._windowScroll = (0, _uiGrid_core.subscribeToExternalScrollers)($element, function(scrollPos) {\r\n                    if (!that._hasHeight && that._rowHeight) {\r\n                        that._dataController.setViewportPosition(scrollPos)\r\n                    }\r\n                }, that.component.$element());\r\n                that.on(\"disposing\", function() {\r\n                    that._windowScroll.dispose()\r\n                })\r\n            }\r\n            that.loadIfNeed()\r\n        },\r\n        loadIfNeed: function() {\r\n            var dataController = this._dataController;\r\n            if (dataController && dataController.loadIfNeed) {\r\n                dataController.loadIfNeed()\r\n            }\r\n        },\r\n        setColumnWidths: function(widths) {\r\n            var scrollable = this.getScrollable();\r\n            var $content;\r\n            this.callBase.apply(this, arguments);\r\n            if (\"virtual\" === this.option(\"scrolling.mode\")) {\r\n                $content = scrollable ? scrollable.$content() : this.element();\r\n                this.callBase(widths, $content.children(\".\" + this.addWidgetPrefix(CONTENT_CLASS)).children(\":not(.\" + this.addWidgetPrefix(TABLE_CONTENT_CLASS) + \")\"))\r\n            }\r\n        },\r\n        dispose: function() {\r\n            clearTimeout(this._scrollTimeoutID);\r\n            this.callBase()\r\n        }\r\n    }\r\n}();\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            scrolling: {\r\n                timeout: 300,\r\n                updateTimeout: 300,\r\n                minTimeout: 0,\r\n                renderingThreshold: 100,\r\n                removeInvisiblePages: true,\r\n                rowPageSize: 5,\r\n                mode: \"standard\",\r\n                preloadEnabled: false,\r\n                rowRenderingMode: \"standard\",\r\n                loadTwoPagesOnStart: false\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        dataSourceAdapter: VirtualScrollingDataSourceAdapterExtender,\r\n        controllers: {\r\n            data: function() {\r\n                var members = {\r\n                    _refreshDataSource: function() {\r\n                        var baseResult = this.callBase.apply(this, arguments) || (new _deferred.Deferred).resolve().promise();\r\n                        baseResult.done(this.initVirtualRows.bind(this));\r\n                        return baseResult\r\n                    },\r\n                    getRowPageSize: function() {\r\n                        var rowPageSize = this.option(\"scrolling.rowPageSize\");\r\n                        var pageSize = this.pageSize();\r\n                        return pageSize && pageSize < rowPageSize ? pageSize : rowPageSize\r\n                    },\r\n                    _applyFilter: function() {\r\n                        this.setViewportPosition(0);\r\n                        return this.callBase.apply(this, arguments)\r\n                    },\r\n                    reload: function() {\r\n                        var that = this;\r\n                        var rowsScrollController = that._rowsScrollController || that._dataSource;\r\n                        var itemIndex = rowsScrollController && rowsScrollController.getItemIndexByPosition();\r\n                        var result = this.callBase.apply(this, arguments);\r\n                        return result && result.done(function() {\r\n                            if (isVirtualMode(that) || isVirtualRowRendering(that)) {\r\n                                var rowIndexOffset = that.getRowIndexOffset();\r\n                                var rowIndex = Math.floor(itemIndex) - rowIndexOffset;\r\n                                var component = that.component;\r\n                                var scrollable = component.getScrollable && component.getScrollable();\r\n                                var isSortingOperation = that.dataSource().operationTypes().sorting;\r\n                                if (scrollable && !that.option(\"legacyRendering\") && !isSortingOperation) {\r\n                                    var rowElement = component.getRowElement(rowIndex);\r\n                                    var $rowElement = rowElement && rowElement[0] && (0, _renderer.default)(rowElement[0]);\r\n                                    var top = $rowElement && $rowElement.position().top;\r\n                                    var allowedTopOffset = _browser.default.mozilla || _browser.default.msie ? 1 : 0;\r\n                                    if (top > allowedTopOffset) {\r\n                                        top = Math.round(top + $rowElement.outerHeight() * (itemIndex % 1));\r\n                                        scrollable.scrollTo({\r\n                                            y: top\r\n                                        })\r\n                                    }\r\n                                }\r\n                            }\r\n                        })\r\n                    },\r\n                    initVirtualRows: function() {\r\n                        var that = this;\r\n                        var virtualRowsRendering = isVirtualRowRendering(that);\r\n                        if (\"virtual\" !== that.option(\"scrolling.mode\") && true !== virtualRowsRendering || false === virtualRowsRendering || that.option(\"legacyRendering\") || !that.option(\"scrolling.rowPageSize\")) {\r\n                            that._visibleItems = null;\r\n                            that._rowsScrollController = null;\r\n                            return\r\n                        }\r\n                        that._rowPageIndex = Math.ceil(that.pageIndex() * that.pageSize() / that.getRowPageSize());\r\n                        that._visibleItems = [];\r\n                        var isItemCountable = function(item) {\r\n                            return \"data\" === item.rowType && !item.isNewRow || \"group\" === item.rowType && that._dataSource.isGroupItemCountable(item.data)\r\n                        };\r\n                        that._rowsScrollController = new _uiGrid_core.VirtualScrollController(that.component, {\r\n                            pageSize: function() {\r\n                                return that.getRowPageSize()\r\n                            },\r\n                            totalItemsCount: function() {\r\n                                return isVirtualMode(that) ? that.totalItemsCount() : that._items.filter(isItemCountable).length\r\n                            },\r\n                            hasKnownLastPage: function() {\r\n                                return true\r\n                            },\r\n                            pageIndex: function(index) {\r\n                                if (void 0 !== index) {\r\n                                    that._rowPageIndex = index\r\n                                }\r\n                                return that._rowPageIndex\r\n                            },\r\n                            isLoading: function() {\r\n                                return that.isLoading()\r\n                            },\r\n                            pageCount: function pageCount() {\r\n                                var pageCount = Math.ceil(this.totalItemsCount() / this.pageSize());\r\n                                return pageCount ? pageCount : 1\r\n                            },\r\n                            load: function() {\r\n                                if (that._rowsScrollController.pageIndex() >= this.pageCount()) {\r\n                                    that._rowPageIndex = this.pageCount() - 1;\r\n                                    that._rowsScrollController.pageIndex(that._rowPageIndex)\r\n                                }\r\n                                if (!that._rowsScrollController._dataSource.items().length && this.totalItemsCount()) {\r\n                                    return\r\n                                }\r\n                                that._rowsScrollController.handleDataChanged(function(change) {\r\n                                    change = change || {};\r\n                                    change.changeType = change.changeType || \"refresh\";\r\n                                    change.items = change.items || that._visibleItems;\r\n                                    that._visibleItems.forEach(function(item, index) {\r\n                                        item.rowIndex = index\r\n                                    });\r\n                                    that._fireChanged(change)\r\n                                })\r\n                            },\r\n                            updateLoading: function() {},\r\n                            itemsCount: function() {\r\n                                return that._rowsScrollController._dataSource.items().filter(isItemCountable).length\r\n                            },\r\n                            correctCount: function(items, count, fromEnd) {\r\n                                return _correctCount(items, count, fromEnd, function(item, isNextAfterLast, fromEnd) {\r\n                                    if (item.isNewRow) {\r\n                                        return isNextAfterLast && !fromEnd\r\n                                    }\r\n                                    if (isNextAfterLast && fromEnd) {\r\n                                        return !item.isNewRow\r\n                                    }\r\n                                    return isItemCountable(item)\r\n                                })\r\n                            },\r\n                            items: function(countableOnly) {\r\n                                var dataSource = that.dataSource();\r\n                                var virtualItemsCount = dataSource && dataSource.virtualItemsCount();\r\n                                var begin = virtualItemsCount ? virtualItemsCount.begin : 0;\r\n                                var rowPageSize = that.getRowPageSize();\r\n                                var skip = that._rowPageIndex * rowPageSize - begin;\r\n                                var take = rowPageSize;\r\n                                var result = that._items;\r\n                                if (skip < 0) {\r\n                                    return []\r\n                                }\r\n                                if (skip) {\r\n                                    skip = this.correctCount(result, skip);\r\n                                    result = result.slice(skip)\r\n                                }\r\n                                if (take) {\r\n                                    take = this.correctCount(result, take);\r\n                                    result = result.slice(0, take)\r\n                                }\r\n                                return countableOnly ? result.filter(isItemCountable) : result\r\n                            },\r\n                            viewportItems: function(items) {\r\n                                if (items) {\r\n                                    that._visibleItems = items\r\n                                }\r\n                                return that._visibleItems\r\n                            },\r\n                            onChanged: function() {},\r\n                            changingDuration: function(e) {\r\n                                var dataSource = that.dataSource();\r\n                                if (dataSource.isLoading()) {\r\n                                    return LOAD_TIMEOUT\r\n                                }\r\n                                return (null === dataSource || void 0 === dataSource ? void 0 : dataSource._renderTime) || 0\r\n                            }\r\n                        }, true);\r\n                        that._rowsScrollController.positionChanged.add(function() {\r\n                            var _that$_dataSource;\r\n                            null === (_that$_dataSource = that._dataSource) || void 0 === _that$_dataSource ? void 0 : _that$_dataSource.setViewportItemIndex(that._rowsScrollController.getViewportItemIndex())\r\n                        });\r\n                        if (that.isLoaded()) {\r\n                            that._rowsScrollController.load()\r\n                        }\r\n                    },\r\n                    _updateItemsCore: function(change) {\r\n                        var _this3 = this;\r\n                        var delta = this.getRowIndexDelta();\r\n                        this.callBase.apply(this, arguments);\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        if (rowsScrollController) {\r\n                            var visibleItems = this._visibleItems;\r\n                            var isRefresh = \"refresh\" === change.changeType || change.isLiveUpdate;\r\n                            if (\"append\" === change.changeType && change.items && !change.items.length) {\r\n                                return\r\n                            }\r\n                            if (isRefresh || \"append\" === change.changeType || \"prepend\" === change.changeType) {\r\n                                change.cancel = true;\r\n                                isRefresh && rowsScrollController.reset(true);\r\n                                rowsScrollController.load()\r\n                            } else {\r\n                                if (\"update\" === change.changeType) {\r\n                                    change.rowIndices.forEach(function(rowIndex, index) {\r\n                                        var changeType = change.changeTypes[index];\r\n                                        var newItem = change.items[index];\r\n                                        if (\"update\" === changeType) {\r\n                                            visibleItems[rowIndex] = newItem\r\n                                        } else {\r\n                                            if (\"insert\" === changeType) {\r\n                                                visibleItems.splice(rowIndex, 0, newItem)\r\n                                            } else {\r\n                                                if (\"remove\" === changeType) {\r\n                                                    visibleItems.splice(rowIndex, 1)\r\n                                                }\r\n                                            }\r\n                                        }\r\n                                    })\r\n                                } else {\r\n                                    visibleItems.forEach(function(item, index) {\r\n                                        visibleItems[index] = _this3._items[index + delta] || visibleItems[index]\r\n                                    });\r\n                                    change.items = visibleItems\r\n                                }\r\n                                visibleItems.forEach(function(item, index) {\r\n                                    item.rowIndex = index\r\n                                })\r\n                            }\r\n                        }\r\n                    },\r\n                    _applyChange: function(change) {\r\n                        var that = this;\r\n                        var items = change.items;\r\n                        var changeType = change.changeType;\r\n                        var removeCount = change.removeCount;\r\n                        if (removeCount) {\r\n                            var fromEnd = \"prepend\" === changeType;\r\n                            removeCount = _correctCount(that._items, removeCount, fromEnd, function(item, isNextAfterLast) {\r\n                                return \"data\" === item.rowType && !item.isNewRow || \"group\" === item.rowType && (that._dataSource.isGroupItemCountable(item.data) || isNextAfterLast)\r\n                            });\r\n                            change.removeCount = removeCount\r\n                        }\r\n                        switch (changeType) {\r\n                            case \"prepend\":\r\n                                that._items.unshift.apply(that._items, items);\r\n                                if (removeCount) {\r\n                                    that._items.splice(-removeCount)\r\n                                }\r\n                                break;\r\n                            case \"append\":\r\n                                that._items.push.apply(that._items, items);\r\n                                if (removeCount) {\r\n                                    that._items.splice(0, removeCount)\r\n                                }\r\n                                break;\r\n                            default:\r\n                                that.callBase(change)\r\n                        }\r\n                    },\r\n                    items: function(allItems) {\r\n                        return allItems ? this._items : this._visibleItems || this._items\r\n                    },\r\n                    getRowIndexDelta: function() {\r\n                        var visibleItems = this._visibleItems;\r\n                        var delta = 0;\r\n                        if (visibleItems && visibleItems[0]) {\r\n                            delta = this._items.indexOf(visibleItems[0])\r\n                        }\r\n                        return delta < 0 ? 0 : delta\r\n                    },\r\n                    getRowIndexOffset: function(byLoadedRows) {\r\n                        var offset = 0;\r\n                        var dataSource = this.dataSource();\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        if (rowsScrollController && !byLoadedRows) {\r\n                            offset = rowsScrollController.beginPageIndex() * rowsScrollController._dataSource.pageSize()\r\n                        } else {\r\n                            if (\"virtual\" === this.option(\"scrolling.mode\") && dataSource) {\r\n                                offset = dataSource.beginPageIndex() * dataSource.pageSize()\r\n                            }\r\n                        }\r\n                        return offset\r\n                    },\r\n                    viewportSize: function() {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        rowsScrollController && rowsScrollController.viewportSize.apply(rowsScrollController, arguments);\r\n                        var dataSource = this._dataSource;\r\n                        return dataSource && dataSource.viewportSize.apply(dataSource, arguments)\r\n                    },\r\n                    viewportItemSize: function() {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        rowsScrollController && rowsScrollController.viewportItemSize.apply(rowsScrollController, arguments);\r\n                        var dataSource = this._dataSource;\r\n                        return dataSource && dataSource.viewportItemSize.apply(dataSource, arguments)\r\n                    },\r\n                    setViewportPosition: function() {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        var dataSource = this._dataSource;\r\n                        if (rowsScrollController) {\r\n                            rowsScrollController.setViewportPosition.apply(rowsScrollController, arguments)\r\n                        } else {\r\n                            null === dataSource || void 0 === dataSource ? void 0 : dataSource.setViewportPosition.apply(dataSource, arguments)\r\n                        }\r\n                    },\r\n                    setContentSize: function(sizes) {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        rowsScrollController && rowsScrollController.setContentSize(sizes);\r\n                        var dataSource = this._dataSource;\r\n                        return dataSource && dataSource.setContentSize(sizes)\r\n                    },\r\n                    loadIfNeed: function() {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        rowsScrollController && rowsScrollController.loadIfNeed();\r\n                        var dataSource = this._dataSource;\r\n                        return dataSource && dataSource.loadIfNeed()\r\n                    },\r\n                    getItemSize: function() {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        if (rowsScrollController) {\r\n                            return rowsScrollController.getItemSize.apply(rowsScrollController, arguments)\r\n                        }\r\n                        var dataSource = this._dataSource;\r\n                        return dataSource && dataSource.getItemSize.apply(dataSource, arguments)\r\n                    },\r\n                    getItemSizes: function() {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        if (rowsScrollController) {\r\n                            return rowsScrollController.getItemSizes.apply(rowsScrollController, arguments)\r\n                        }\r\n                        var dataSource = this._dataSource;\r\n                        return dataSource && dataSource.getItemSizes.apply(dataSource, arguments)\r\n                    },\r\n                    getContentOffset: function() {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        if (rowsScrollController) {\r\n                            return rowsScrollController.getContentOffset.apply(rowsScrollController, arguments)\r\n                        }\r\n                        var dataSource = this._dataSource;\r\n                        return dataSource && dataSource.getContentOffset.apply(dataSource, arguments)\r\n                    },\r\n                    refresh: function(options) {\r\n                        var dataSource = this._dataSource;\r\n                        if (dataSource && options && options.load && isAppendMode(this)) {\r\n                            dataSource.resetCurrentTotalCount()\r\n                        }\r\n                        return this.callBase.apply(this, arguments)\r\n                    },\r\n                    dispose: function() {\r\n                        var rowsScrollController = this._rowsScrollController;\r\n                        rowsScrollController && rowsScrollController.dispose();\r\n                        this.callBase.apply(this, arguments)\r\n                    }\r\n                };\r\n                _uiGrid_core2.default.proxyMethod(members, \"virtualItemsCount\");\r\n                _uiGrid_core2.default.proxyMethod(members, \"getVirtualContentSize\");\r\n                _uiGrid_core2.default.proxyMethod(members, \"setViewportItemIndex\");\r\n                return members\r\n            }(),\r\n            resizing: {\r\n                resize: function() {\r\n                    var that = this;\r\n                    var callBase = that.callBase;\r\n                    var result;\r\n                    if (!that.option(\"legacyRendering\") && (isVirtualMode(that) || isVirtualRowRendering(that))) {\r\n                        clearTimeout(that._resizeTimeout);\r\n                        var diff = new Date - that._lastTime;\r\n                        var updateTimeout = that.option(\"scrolling.updateTimeout\");\r\n                        if (that._lastTime && diff < updateTimeout) {\r\n                            result = new _deferred.Deferred;\r\n                            that._resizeTimeout = setTimeout(function() {\r\n                                callBase.apply(that).done(result.resolve).fail(result.reject);\r\n                                that._lastTime = new Date\r\n                            }, updateTimeout);\r\n                            that._lastTime = new Date\r\n                        } else {\r\n                            result = callBase.apply(that);\r\n                            if (that._dataController.isLoaded()) {\r\n                                that._lastTime = new Date\r\n                            }\r\n                        }\r\n                    } else {\r\n                        result = callBase.apply(that)\r\n                    }\r\n                    return result\r\n                },\r\n                dispose: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    clearTimeout(this._resizeTimeout)\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            rowsView: VirtualScrollingRowsViewExtender\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/config.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"./utils/extend\");\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar config = {\r\n    rtlEnabled: false,\r\n    defaultCurrency: \"USD\",\r\n    oDataFilterToLower: true,\r\n    serverDecimalSeparator: \".\",\r\n    decimalSeparator: \".\",\r\n    thousandsSeparator: \",\",\r\n    forceIsoDateParsing: true,\r\n    wrapActionsBeforeExecute: true,\r\n    useLegacyStoreResult: false,\r\n    useJQuery: void 0,\r\n    editorStylingMode: void 0,\r\n    useLegacyVisibleIndex: false,\r\n    floatingActionButtonConfig: {\r\n        icon: \"add\",\r\n        closeIcon: \"close\",\r\n        label: \"\",\r\n        position: {\r\n            at: \"right bottom\",\r\n            my: \"right bottom\",\r\n            offset: {\r\n                x: -16,\r\n                y: -16\r\n            }\r\n        },\r\n        maxSpeedDialActionCount: 5,\r\n        shading: false,\r\n        direction: \"auto\"\r\n    },\r\n    optionsParser: function(optionsString) {\r\n        if (\"{\" !== optionsString.trim().charAt(0)) {\r\n            optionsString = \"{\" + optionsString + \"}\"\r\n        }\r\n        try {\r\n            return new Function(\"return \" + optionsString)()\r\n        } catch (ex) {\r\n            throw _errors.default.Error(\"E3018\", ex, optionsString)\r\n        }\r\n    }\r\n};\r\nvar deprecatedFields = [\"decimalSeparator\", \"thousandsSeparator\"];\r\nvar configMethod = function() {\r\n    if (!arguments.length) {\r\n        return config\r\n    }\r\n    var newConfig = arguments.length <= 0 ? void 0 : arguments[0];\r\n    deprecatedFields.forEach(function(deprecatedField) {\r\n        if (newConfig[deprecatedField]) {\r\n            var message = \"Now, the \".concat(deprecatedField, \" is selected based on the specified locale.\");\r\n            _errors.default.log(\"W0003\", \"config\", deprecatedField, \"19.2\", message)\r\n        }\r\n    });\r\n    (0, _extend.extend)(config, newConfig)\r\n};\r\nif (\"undefined\" !== typeof DevExpress && DevExpress.config) {\r\n    configMethod(DevExpress.config)\r\n}\r\nvar _default = configMethod;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_builder.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _filter_builder = _interopRequireDefault(require(\"./../filter_builder\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _scroll_view = _interopRequireDefault(require(\"./../scroll_view\"));\r\nvar _popup = _interopRequireDefault(require(\"./../popup\"));\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar FilterBuilderView = _uiGrid_core.default.View.inherit({\r\n    _renderCore: function() {\r\n        this._updatePopupOptions()\r\n    },\r\n    _updatePopupOptions: function() {\r\n        if (this.option(\"filterBuilderPopup.visible\")) {\r\n            this._initPopup()\r\n        } else {\r\n            if (this._filterBuilderPopup) {\r\n                this._filterBuilderPopup.hide()\r\n            }\r\n        }\r\n    },\r\n    _disposePopup: function() {\r\n        if (this._filterBuilderPopup) {\r\n            this._filterBuilderPopup.dispose();\r\n            this._filterBuilderPopup = void 0\r\n        }\r\n        if (this._filterBuilder) {\r\n            this._filterBuilder.dispose();\r\n            this._filterBuilder = void 0\r\n        }\r\n    },\r\n    _initPopup: function() {\r\n        var that = this;\r\n        that._disposePopup();\r\n        that._filterBuilderPopup = that._createComponent(that.element(), _popup.default, (0, _extend.extend)({\r\n            title: _message.default.format(\"dxDataGrid-filterBuilderPopupTitle\"),\r\n            contentTemplate: function($contentElement) {\r\n                return that._getPopupContentTemplate($contentElement)\r\n            },\r\n            onOptionChanged: function(args) {\r\n                if (\"visible\" === args.name) {\r\n                    that.option(\"filterBuilderPopup.visible\", args.value)\r\n                }\r\n            },\r\n            toolbarItems: that._getPopupToolbarItems()\r\n        }, that.option(\"filterBuilderPopup\"), {\r\n            onHidden: function(e) {\r\n                (0, _accessibility.restoreFocus)(that);\r\n                that._disposePopup()\r\n            }\r\n        }))\r\n    },\r\n    _getPopupContentTemplate: function(contentElement) {\r\n        var $contentElement = (0, _renderer.default)(contentElement);\r\n        var $filterBuilderContainer = (0, _renderer.default)(\"<div>\").appendTo((0, _renderer.default)(contentElement));\r\n        this._filterBuilder = this._createComponent($filterBuilderContainer, _filter_builder.default, (0, _extend.extend)({\r\n            value: this.option(\"filterValue\"),\r\n            fields: this.getController(\"columns\").getFilteringColumns()\r\n        }, this.option(\"filterBuilder\"), {\r\n            customOperations: this.getController(\"filterSync\").getCustomFilterOperations()\r\n        }));\r\n        this._createComponent($contentElement, _scroll_view.default, {\r\n            direction: \"both\"\r\n        })\r\n    },\r\n    _getPopupToolbarItems: function() {\r\n        var that = this;\r\n        return [{\r\n            toolbar: \"bottom\",\r\n            location: \"after\",\r\n            widget: \"dxButton\",\r\n            options: {\r\n                text: _message.default.format(\"OK\"),\r\n                onClick: function(e) {\r\n                    var filter = that._filterBuilder.option(\"value\");\r\n                    that.option(\"filterValue\", filter);\r\n                    that._filterBuilderPopup.hide()\r\n                }\r\n            }\r\n        }, {\r\n            toolbar: \"bottom\",\r\n            location: \"after\",\r\n            widget: \"dxButton\",\r\n            options: {\r\n                text: _message.default.format(\"Cancel\"),\r\n                onClick: function(e) {\r\n                    that._filterBuilderPopup.hide()\r\n                }\r\n            }\r\n        }]\r\n    },\r\n    optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"filterBuilder\":\r\n            case \"filterBuilderPopup\":\r\n                this._invalidate();\r\n                args.handled = true;\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            filterBuilder: {\r\n                groupOperationDescriptions: {\r\n                    and: _message.default.format(\"dxFilterBuilder-and\"),\r\n                    or: _message.default.format(\"dxFilterBuilder-or\"),\r\n                    notAnd: _message.default.format(\"dxFilterBuilder-notAnd\"),\r\n                    notOr: _message.default.format(\"dxFilterBuilder-notOr\")\r\n                },\r\n                filterOperationDescriptions: {\r\n                    between: _message.default.format(\"dxFilterBuilder-filterOperationBetween\"),\r\n                    equal: _message.default.format(\"dxFilterBuilder-filterOperationEquals\"),\r\n                    notEqual: _message.default.format(\"dxFilterBuilder-filterOperationNotEquals\"),\r\n                    lessThan: _message.default.format(\"dxFilterBuilder-filterOperationLess\"),\r\n                    lessThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationLessOrEquals\"),\r\n                    greaterThan: _message.default.format(\"dxFilterBuilder-filterOperationGreater\"),\r\n                    greaterThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationGreaterOrEquals\"),\r\n                    startsWith: _message.default.format(\"dxFilterBuilder-filterOperationStartsWith\"),\r\n                    contains: _message.default.format(\"dxFilterBuilder-filterOperationContains\"),\r\n                    notContains: _message.default.format(\"dxFilterBuilder-filterOperationNotContains\"),\r\n                    endsWith: _message.default.format(\"dxFilterBuilder-filterOperationEndsWith\"),\r\n                    isBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n                    isNotBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n                }\r\n            },\r\n            filterBuilderPopup: {}\r\n        }\r\n    },\r\n    views: {\r\n        filterBuilderView: FilterBuilderView\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_view_roller\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATEVIEW_CLASS = \"dx-dateview\";\r\nvar DATEVIEW_COMPACT_CLASS = \"dx-dateview-compact\";\r\nvar DATEVIEW_WRAPPER_CLASS = \"dx-dateview-wrapper\";\r\nvar DATEVIEW_ROLLER_CONTAINER_CLASS = \"dx-dateview-rollers\";\r\nvar DATEVIEW_ROLLER_CLASS = \"dx-dateviewroller\";\r\nvar TYPE = {\r\n    date: \"date\",\r\n    datetime: \"datetime\",\r\n    time: \"time\"\r\n};\r\nvar ROLLER_TYPE = {\r\n    year: \"year\",\r\n    month: \"month\",\r\n    day: \"day\",\r\n    hours: \"hours\"\r\n};\r\nvar DateView = _editor.default.inherit({\r\n    _valueOption: function() {\r\n        var value = this.option(\"value\");\r\n        var date = new Date(value);\r\n        return !value || isNaN(date) ? this._getDefaultDate() : date\r\n    },\r\n    _getDefaultDate: function() {\r\n        var date = new Date;\r\n        if (this.option(\"type\") === TYPE.date) {\r\n            return new Date(date.getFullYear(), date.getMonth(), date.getDate())\r\n        }\r\n        return date\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            minDate: _ui2.default.MIN_DATEVIEW_DEFAULT_DATE,\r\n            maxDate: _ui2.default.MAX_DATEVIEW_DEFAULT_DATE,\r\n            type: TYPE.date,\r\n            value: new Date,\r\n            applyCompactClass: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function(_device) {\r\n                return \"desktop\" !== _device.deviceType\r\n            },\r\n            options: {\r\n                applyCompactClass: true\r\n            }\r\n        }])\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.$element().addClass(DATEVIEW_CLASS);\r\n        this._toggleFormatClasses(this.option(\"type\"));\r\n        this._toggleCompactClass()\r\n    },\r\n    _toggleFormatClasses: function(currentFormat, previousFormat) {\r\n        this.$element().addClass(DATEVIEW_CLASS + \"-\" + currentFormat);\r\n        previousFormat && this.$element().removeClass(DATEVIEW_CLASS + \"-\" + previousFormat)\r\n    },\r\n    _toggleCompactClass: function() {\r\n        this.$element().toggleClass(DATEVIEW_COMPACT_CLASS, this.option(\"applyCompactClass\"))\r\n    },\r\n    _wrapper: function() {\r\n        return this._$wrapper\r\n    },\r\n    _renderContentImpl: function() {\r\n        this._$wrapper = (0, _renderer.default)(\"<div>\").addClass(DATEVIEW_WRAPPER_CLASS);\r\n        this._renderRollers();\r\n        this._$wrapper.appendTo(this.$element())\r\n    },\r\n    _renderRollers: function() {\r\n        if (!this._$rollersContainer) {\r\n            this._$rollersContainer = (0, _renderer.default)(\"<div>\").addClass(DATEVIEW_ROLLER_CONTAINER_CLASS)\r\n        }\r\n        this._$rollersContainer.empty();\r\n        this._createRollerConfigs();\r\n        this._rollers = {};\r\n        var that = this;\r\n        (0, _iterator.each)(that._rollerConfigs, function(name) {\r\n            var $roller = (0, _renderer.default)(\"<div>\").appendTo(that._$rollersContainer).addClass(DATEVIEW_ROLLER_CLASS + \"-\" + that._rollerConfigs[name].type);\r\n            that._rollers[that._rollerConfigs[name].type] = that._createComponent($roller, _ui.default, {\r\n                items: that._rollerConfigs[name].displayItems,\r\n                selectedIndex: that._rollerConfigs[name].selectedIndex,\r\n                showScrollbar: false,\r\n                onStart: function(e) {\r\n                    var roller = e.component;\r\n                    roller._toggleActive(true);\r\n                    that._setActiveRoller(that._rollerConfigs[name], roller.option(\"selectedIndex\"))\r\n                },\r\n                onEnd: function(e) {\r\n                    var roller = e.component;\r\n                    roller._toggleActive(false)\r\n                },\r\n                onClick: function(e) {\r\n                    var roller = e.component;\r\n                    roller._toggleActive(true);\r\n                    that._setActiveRoller(that._rollerConfigs[name], roller.option(\"selectedIndex\"));\r\n                    that._setRollerState(that._rollerConfigs[name], roller.option(\"selectedIndex\"));\r\n                    roller._toggleActive(false)\r\n                },\r\n                onSelectedIndexChanged: function(e) {\r\n                    var roller = e.component;\r\n                    that._setRollerState(that._rollerConfigs[name], roller.option(\"selectedIndex\"))\r\n                }\r\n            })\r\n        });\r\n        that._$rollersContainer.appendTo(that._wrapper())\r\n    },\r\n    _createRollerConfigs: function(type) {\r\n        var that = this;\r\n        type = type || that.option(\"type\");\r\n        that._rollerConfigs = {};\r\n        _date2.default.getFormatParts(_ui2.default.FORMATS_MAP[type]).forEach(function(partName) {\r\n            that._createRollerConfig(partName)\r\n        })\r\n    },\r\n    _createRollerConfig: function(componentName) {\r\n        var componentInfo = _ui2.default.DATE_COMPONENTS_INFO[componentName];\r\n        var valueRange = this._calculateRollerConfigValueRange(componentName);\r\n        var startValue = valueRange.startValue;\r\n        var endValue = valueRange.endValue;\r\n        var formatter = componentInfo.formatter;\r\n        var curDate = this._getCurrentDate();\r\n        var config = {\r\n            type: componentName,\r\n            setValue: componentInfo.setter,\r\n            valueItems: [],\r\n            displayItems: [],\r\n            getIndex: function(value) {\r\n                return value[componentInfo.getter]() - startValue\r\n            }\r\n        };\r\n        for (var i = startValue; i <= endValue; i++) {\r\n            config.valueItems.push(i);\r\n            config.displayItems.push(formatter(i, curDate))\r\n        }\r\n        config.selectedIndex = config.getIndex(curDate);\r\n        this._rollerConfigs[componentName] = config\r\n    },\r\n    _setActiveRoller: function(currentRoller) {\r\n        var activeRoller = currentRoller && this._rollers[currentRoller.type];\r\n        (0, _iterator.each)(this._rollers, function() {\r\n            this.toggleActiveState(this === activeRoller)\r\n        })\r\n    },\r\n    _updateRollersPosition: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(this._rollers, function(type) {\r\n            var correctIndex = that._rollerConfigs[type].getIndex(that._getCurrentDate());\r\n            this.option(\"selectedIndex\", correctIndex)\r\n        })\r\n    },\r\n    _setRollerState: function(roller, selectedIndex) {\r\n        if (selectedIndex !== roller.selectedIndex) {\r\n            var rollerValue = roller.valueItems[selectedIndex];\r\n            var setValue = roller.setValue;\r\n            var currentValue = new Date(this._getCurrentDate());\r\n            var currentDate = currentValue.getDate();\r\n            var minDate = this.option(\"minDate\");\r\n            var maxDate = this.option(\"maxDate\");\r\n            if (roller.type === ROLLER_TYPE.month) {\r\n                currentDate = Math.min(currentDate, _ui2.default.getMaxMonthDay(currentValue.getFullYear(), rollerValue))\r\n            } else {\r\n                if (roller.type === ROLLER_TYPE.year) {\r\n                    currentDate = Math.min(currentDate, _ui2.default.getMaxMonthDay(rollerValue, currentValue.getMonth()))\r\n                }\r\n            }\r\n            currentValue.setDate(currentDate);\r\n            currentValue[setValue](rollerValue);\r\n            var normalizedDate = _date.default.normalizeDate(currentValue, minDate, maxDate);\r\n            currentValue = _ui2.default.mergeDates(normalizedDate, currentValue, \"time\");\r\n            currentValue = _date.default.normalizeDate(currentValue, minDate, maxDate);\r\n            this.option(\"value\", currentValue);\r\n            roller.selectedIndex = selectedIndex\r\n        }\r\n        if (roller.type === ROLLER_TYPE.year) {\r\n            this._refreshRollers()\r\n        }\r\n        if (roller.type === ROLLER_TYPE.month) {\r\n            this._refreshRoller(ROLLER_TYPE.day);\r\n            this._refreshRoller(ROLLER_TYPE.hours)\r\n        }\r\n    },\r\n    _refreshRoller: function(rollerType) {\r\n        var roller = this._rollers[rollerType];\r\n        if (roller) {\r\n            this._createRollerConfig(rollerType);\r\n            var rollerConfig = this._rollerConfigs[rollerType];\r\n            if (rollerType === ROLLER_TYPE.day || rollerConfig.displayItems.toString() !== roller.option(\"items\").toString()) {\r\n                roller.option({\r\n                    items: rollerConfig.displayItems,\r\n                    selectedIndex: rollerConfig.selectedIndex\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _getCurrentDate: function() {\r\n        var curDate = this._valueOption();\r\n        var minDate = this.option(\"minDate\");\r\n        var maxDate = this.option(\"maxDate\");\r\n        return _date.default.normalizeDate(curDate, minDate, maxDate)\r\n    },\r\n    _calculateRollerConfigValueRange: function(componentName) {\r\n        var curDate = this._getCurrentDate();\r\n        var minDate = this.option(\"minDate\");\r\n        var maxDate = this.option(\"maxDate\");\r\n        var minYear = _date.default.sameYear(curDate, minDate);\r\n        var minMonth = minYear && curDate.getMonth() === minDate.getMonth();\r\n        var maxYear = _date.default.sameYear(curDate, maxDate);\r\n        var maxMonth = maxYear && curDate.getMonth() === maxDate.getMonth();\r\n        var minHour = minMonth && curDate.getDate() === minDate.getDate();\r\n        var maxHour = maxMonth && curDate.getDate() === maxDate.getDate();\r\n        var componentInfo = _ui2.default.DATE_COMPONENTS_INFO[componentName];\r\n        var startValue = componentInfo.startValue;\r\n        var endValue = componentInfo.endValue;\r\n        if (componentName === ROLLER_TYPE.year) {\r\n            startValue = minDate.getFullYear();\r\n            endValue = maxDate.getFullYear()\r\n        }\r\n        if (componentName === ROLLER_TYPE.month) {\r\n            if (minYear) {\r\n                startValue = minDate.getMonth()\r\n            }\r\n            if (maxYear) {\r\n                endValue = maxDate.getMonth()\r\n            }\r\n        }\r\n        if (componentName === ROLLER_TYPE.day) {\r\n            endValue = _ui2.default.getMaxMonthDay(curDate.getFullYear(), curDate.getMonth());\r\n            if (minYear && minMonth) {\r\n                startValue = minDate.getDate()\r\n            }\r\n            if (maxYear && maxMonth) {\r\n                endValue = maxDate.getDate()\r\n            }\r\n        }\r\n        if (componentName === ROLLER_TYPE.hours) {\r\n            startValue = minHour ? minDate.getHours() : startValue;\r\n            endValue = maxHour ? maxDate.getHours() : endValue\r\n        }\r\n        return {\r\n            startValue: startValue,\r\n            endValue: endValue\r\n        }\r\n    },\r\n    _refreshRollers: function() {\r\n        this._refreshRoller(ROLLER_TYPE.month);\r\n        this._refreshRoller(ROLLER_TYPE.day);\r\n        this._refreshRoller(ROLLER_TYPE.hours)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"minDate\":\r\n            case \"maxDate\":\r\n            case \"type\":\r\n                this._renderRollers();\r\n                this._toggleFormatClasses(args.value, args.previousValue);\r\n                break;\r\n            case \"visible\":\r\n                this.callBase(args);\r\n                if (args.value) {\r\n                    this._renderRollers()\r\n                }\r\n                break;\r\n            case \"value\":\r\n                this.option(\"value\", this._valueOption());\r\n                this._refreshRollers();\r\n                this._updateRollersPosition();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        delete this._$rollersContainer\r\n    },\r\n    _dispose: function() {\r\n        clearTimeout(this._deferredRenderDayTimeout);\r\n        clearTimeout(this._deferredRenderMonthTimeout);\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxDateView\", DateView);\r\nvar _default = DateView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sparklines/base_sparkline.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _translator2d = require(\"../translators/translator2d\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _export = require(\"../core/export\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_LINE_SPACING = 2;\r\nvar EVENT_NS = \"sparkline-tooltip\";\r\nvar POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);\r\nvar _extend = _extend2.extend;\r\nvar _floor = Math.floor;\r\n\r\nfunction inCanvas(_ref, x, y) {\r\n    var left = _ref.left,\r\n        top = _ref.top,\r\n        bottom = _ref.bottom,\r\n        right = _ref.right,\r\n        width = _ref.width,\r\n        height = _ref.height;\r\n    return (0, _utils.pointInCanvas)({\r\n        left: left,\r\n        top: top,\r\n        right: width - right,\r\n        bottom: height - bottom,\r\n        width: width,\r\n        height: height\r\n    }, x, y)\r\n}\r\n\r\nfunction pointerHandler(_ref2) {\r\n    var data = _ref2.data;\r\n    var that = data.widget;\r\n    that._enableOutHandler();\r\n    that._showTooltip()\r\n}\r\n\r\nfunction generateDefaultCustomizeTooltipCallback(fontOptions, rtlEnabled) {\r\n    var lineSpacing = fontOptions.lineSpacing;\r\n    var lineHeight = (void 0 !== lineSpacing && null !== lineSpacing ? lineSpacing : DEFAULT_LINE_SPACING) + fontOptions.size;\r\n    return function(customizeObject) {\r\n        var html = \"\";\r\n        var vt = customizeObject.valueText;\r\n        for (var i = 0; i < vt.length; i += 2) {\r\n            html += \"<tr><td>\" + vt[i] + \"</td><td style='width: 15px'></td><td style='text-align: \" + (rtlEnabled ? \"left\" : \"right\") + \"'>\" + vt[i + 1] + \"</td></tr>\"\r\n        }\r\n        return {\r\n            html: \"<table style='border-spacing:0px; line-height: \" + lineHeight + \"px'>\" + html + \"</table>\"\r\n        }\r\n    }\r\n}\r\n\r\nfunction generateCustomizeTooltipCallback(customizeTooltip, fontOptions, rtlEnabled) {\r\n    var defaultCustomizeTooltip = generateDefaultCustomizeTooltipCallback(fontOptions, rtlEnabled);\r\n    if ((0, _type.isFunction)(customizeTooltip)) {\r\n        return function(customizeObject) {\r\n            var res = customizeTooltip.call(customizeObject, customizeObject);\r\n            if (!(\"html\" in res) && !(\"text\" in res)) {\r\n                _extend(res, defaultCustomizeTooltip.call(customizeObject, customizeObject))\r\n            }\r\n            return res\r\n        }\r\n    } else {\r\n        return defaultCustomizeTooltip\r\n    }\r\n}\r\n\r\nfunction createAxis(isHorizontal) {\r\n    var translator = new _translator2d.Translator2D({}, {}, {\r\n        shiftZeroValue: !isHorizontal,\r\n        isHorizontal: !!isHorizontal\r\n    });\r\n    return {\r\n        getTranslator: function() {\r\n            return translator\r\n        },\r\n        update: function(range, canvas, options) {\r\n            translator.update(range, canvas, options)\r\n        },\r\n        getVisibleArea: function() {\r\n            var visibleArea = translator.getCanvasVisibleArea();\r\n            return [visibleArea.min, visibleArea.max]\r\n        },\r\n        visualRange: _common.noop,\r\n        calculateInterval: _common.noop,\r\n        getMarginOptions: function() {\r\n            return {}\r\n        }\r\n    }\r\n}\r\nvar _initTooltip;\r\nvar BaseSparkline = _base_widget.default.inherit({\r\n    _getLayoutItems: _common.noop,\r\n    _useLinks: false,\r\n    _themeDependentChanges: [\"OPTIONS\"],\r\n    _initCore: function() {\r\n        var that = this;\r\n        that._tooltipTracker = that._renderer.root;\r\n        that._tooltipTracker.attr({\r\n            \"pointer-events\": \"visible\"\r\n        });\r\n        that._createHtmlElements();\r\n        that._initTooltipEvents();\r\n        that._argumentAxis = createAxis(true);\r\n        that._valueAxis = createAxis()\r\n    },\r\n    _getDefaultSize: function() {\r\n        return this._defaultSize\r\n    },\r\n    _disposeCore: function() {\r\n        this._disposeWidgetElements();\r\n        this._disposeTooltipEvents();\r\n        this._ranges = null\r\n    },\r\n    _optionChangesOrder: [\"OPTIONS\"],\r\n    _change_OPTIONS: function() {\r\n        this._prepareOptions();\r\n        this._change([\"UPDATE\"])\r\n    },\r\n    _customChangesOrder: [\"UPDATE\"],\r\n    _change_UPDATE: function() {\r\n        this._update()\r\n    },\r\n    _update: function() {\r\n        var that = this;\r\n        if (that._tooltipShown) {\r\n            that._tooltipShown = false;\r\n            that._tooltip.hide()\r\n        }\r\n        that._cleanWidgetElements();\r\n        that._updateWidgetElements();\r\n        that._drawWidgetElements()\r\n    },\r\n    _updateWidgetElements: function() {\r\n        var canvas = this._getCorrectCanvas();\r\n        this._updateRange();\r\n        this._argumentAxis.update(this._ranges.arg, canvas, this._getStick());\r\n        this._valueAxis.update(this._ranges.val, canvas)\r\n    },\r\n    _getStick: function() {},\r\n    _applySize: function(rect) {\r\n        this._allOptions.size = {\r\n            width: rect[2] - rect[0],\r\n            height: rect[3] - rect[1]\r\n        };\r\n        this._change([\"UPDATE\"])\r\n    },\r\n    _setupResizeHandler: _common.noop,\r\n    _prepareOptions: function() {\r\n        return _extend(true, {}, this._themeManager.theme(), this.option())\r\n    },\r\n    _getTooltipCoords: function() {\r\n        var canvas = this._canvas;\r\n        var rootOffset = this._renderer.getRootOffset();\r\n        return {\r\n            x: canvas.width / 2 + rootOffset.left,\r\n            y: canvas.height / 2 + rootOffset.top\r\n        }\r\n    },\r\n    _initTooltipEvents: function() {\r\n        var data = {\r\n            widget: this\r\n        };\r\n        this._renderer.root.off(\".\" + EVENT_NS).on(POINTER_ACTION, data, pointerHandler)\r\n    },\r\n    _showTooltip: function() {\r\n        var that = this;\r\n        var tooltip;\r\n        if (!that._tooltipShown) {\r\n            that._tooltipShown = true;\r\n            tooltip = that._getTooltip();\r\n            tooltip.isEnabled() && that._tooltip.show(that._getTooltipData(), that._getTooltipCoords(), {})\r\n        }\r\n    },\r\n    _hideTooltip: function() {\r\n        if (this._tooltipShown) {\r\n            this._tooltipShown = false;\r\n            this._tooltip.hide()\r\n        }\r\n    },\r\n    _stopCurrentHandling: function() {\r\n        this._hideTooltip()\r\n    },\r\n    _enableOutHandler: function() {\r\n        var that = this;\r\n        if (that._outHandler) {\r\n            return\r\n        }\r\n        var handler = function(_ref3) {\r\n            var pageX = _ref3.pageX,\r\n                pageY = _ref3.pageY;\r\n            var _that$_renderer$getRo = that._renderer.getRootOffset(),\r\n                left = _that$_renderer$getRo.left,\r\n                top = _that$_renderer$getRo.top;\r\n            var x = _floor(pageX - left);\r\n            var y = _floor(pageY - top);\r\n            if (!inCanvas(that._canvas, x, y)) {\r\n                that._hideTooltip();\r\n                that._disableOutHandler()\r\n            }\r\n        };\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), POINTER_ACTION, handler);\r\n        this._outHandler = handler\r\n    },\r\n    _disableOutHandler: function() {\r\n        this._outHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), POINTER_ACTION, this._outHandler);\r\n        this._outHandler = null\r\n    },\r\n    _disposeTooltipEvents: function() {\r\n        this._tooltipTracker.off();\r\n        this._disableOutHandler();\r\n        this._renderer.root.off(\".\" + EVENT_NS)\r\n    },\r\n    _getTooltip: function() {\r\n        var that = this;\r\n        if (!that._tooltip) {\r\n            _initTooltip.apply(this, arguments);\r\n            that._setTooltipRendererOptions(that._tooltipRendererOptions);\r\n            that._tooltipRendererOptions = null;\r\n            that._setTooltipOptions()\r\n        }\r\n        return that._tooltip\r\n    }\r\n});\r\nvar _default = BaseSparkline;\r\nexports.default = _default;\r\nBaseSparkline.addPlugin(_tooltip.plugin);\r\n_initTooltip = BaseSparkline.prototype._initTooltip;\r\nBaseSparkline.prototype._initTooltip = _common.noop;\r\nvar _disposeTooltip = BaseSparkline.prototype._disposeTooltip;\r\nBaseSparkline.prototype._disposeTooltip = function() {\r\n    if (this._tooltip) {\r\n        _disposeTooltip.apply(this, arguments)\r\n    }\r\n};\r\nBaseSparkline.prototype._setTooltipRendererOptions = function() {\r\n    var options = this._getRendererOptions();\r\n    if (this._tooltip) {\r\n        this._tooltip.setRendererOptions(options)\r\n    } else {\r\n        this._tooltipRendererOptions = options\r\n    }\r\n};\r\nBaseSparkline.prototype._setTooltipOptions = function() {\r\n    var tooltip = this._tooltip;\r\n    var options = tooltip && this._getOption(\"tooltip\");\r\n    tooltip && tooltip.update(_extend({}, options, {\r\n        customizeTooltip: generateCustomizeTooltipCallback(options.customizeTooltip, options.font, this.option(\"rtlEnabled\")),\r\n        enabled: options.enabled && this._isTooltipEnabled()\r\n    }))\r\n};\r\nvar exportPlugin = (0, _extend2.extend)(true, {}, _export.plugin, {\r\n    init: _common.noop,\r\n    dispose: _common.noop,\r\n    customize: null,\r\n    members: {\r\n        _getExportMenuOptions: null\r\n    }\r\n});\r\nBaseSparkline.addPlugin(exportPlugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (data/remote_query.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _query_adapters = _interopRequireDefault(require(\"./query_adapters\"));\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _array_query = _interopRequireDefault(require(\"./array_query\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar remoteQueryImpl = function remoteQueryImpl(url, queryOptions, tasks) {\r\n    tasks = tasks || [];\r\n    queryOptions = queryOptions || {};\r\n    var createTask = function(name, args) {\r\n        return {\r\n            name: name,\r\n            args: args\r\n        }\r\n    };\r\n    var exec = function(executorTask) {\r\n        var d = new _deferred.Deferred;\r\n        var _adapterFactory;\r\n        var _adapter;\r\n        var _taskQueue;\r\n        var _currentTask;\r\n        var _mergedSortArgs;\r\n        var rejectWithNotify = function(error) {\r\n            var handler = queryOptions.errorHandler;\r\n            if (handler) {\r\n                handler(error)\r\n            }\r\n            _errors.default._errorHandler(error);\r\n            d.reject(error)\r\n        };\r\n\r\n        function mergeSortTask(task) {\r\n            switch (task.name) {\r\n                case \"sortBy\":\r\n                    _mergedSortArgs = [task.args];\r\n                    return true;\r\n                case \"thenBy\":\r\n                    if (!_mergedSortArgs) {\r\n                        throw _errors.default.errors.Error(\"E4004\")\r\n                    }\r\n                    _mergedSortArgs.push(task.args);\r\n                    return true\r\n            }\r\n            return false\r\n        }\r\n\r\n        function unmergeSortTasks() {\r\n            var head = _taskQueue[0];\r\n            var unmergedTasks = [];\r\n            if (head && \"multiSort\" === head.name) {\r\n                _taskQueue.shift();\r\n                (0, _iterator.each)(head.args[0], function() {\r\n                    unmergedTasks.push(createTask(unmergedTasks.length ? \"thenBy\" : \"sortBy\", this))\r\n                })\r\n            }\r\n            _taskQueue = unmergedTasks.concat(_taskQueue)\r\n        }\r\n        try {\r\n            _adapterFactory = queryOptions.adapter;\r\n            if (!(0, _type.isFunction)(_adapterFactory)) {\r\n                _adapterFactory = _query_adapters.default[_adapterFactory]\r\n            }\r\n            _adapter = _adapterFactory(queryOptions);\r\n            _taskQueue = [].concat(tasks).concat(executorTask);\r\n            var optimize = _adapter.optimize;\r\n            if (optimize) {\r\n                optimize(_taskQueue)\r\n            }\r\n            while (_taskQueue.length) {\r\n                _currentTask = _taskQueue[0];\r\n                if (!mergeSortTask(_currentTask)) {\r\n                    if (_mergedSortArgs) {\r\n                        _taskQueue.unshift(createTask(\"multiSort\", [_mergedSortArgs]));\r\n                        _mergedSortArgs = null;\r\n                        continue\r\n                    }\r\n                    if (\"enumerate\" !== String(_currentTask.name)) {\r\n                        if (!_adapter[_currentTask.name] || false === _adapter[_currentTask.name].apply(_adapter, _currentTask.args)) {\r\n                            break\r\n                        }\r\n                    }\r\n                }\r\n                _taskQueue.shift()\r\n            }\r\n            unmergeSortTasks();\r\n            _adapter.exec(url).done(function(result, extra) {\r\n                if (!_taskQueue.length) {\r\n                    d.resolve(result, extra)\r\n                } else {\r\n                    var clientChain = (0, _array_query.default)(result, {\r\n                        errorHandler: queryOptions.errorHandler\r\n                    });\r\n                    (0, _iterator.each)(_taskQueue, function() {\r\n                        clientChain = clientChain[this.name].apply(clientChain, this.args)\r\n                    });\r\n                    clientChain.done(d.resolve).fail(d.reject)\r\n                }\r\n            }).fail(rejectWithNotify)\r\n        } catch (x) {\r\n            rejectWithNotify(x)\r\n        }\r\n        return d.promise()\r\n    };\r\n    var query = {};\r\n    (0, _iterator.each)([\"sortBy\", \"thenBy\", \"filter\", \"slice\", \"select\", \"groupBy\"], function() {\r\n        var name = String(this);\r\n        query[name] = function() {\r\n            return remoteQueryImpl(url, queryOptions, tasks.concat(createTask(name, arguments)))\r\n        }\r\n    });\r\n    (0, _iterator.each)([\"count\", \"min\", \"max\", \"sum\", \"avg\", \"aggregate\", \"enumerate\"], function() {\r\n        var name = String(this);\r\n        query[name] = function() {\r\n            return exec.call(this, createTask(name, arguments))\r\n        }\r\n    });\r\n    return query\r\n};\r\nvar _default = remoteQueryImpl;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/image_creator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getData = getData;\r\nexports.testFormats = testFormats;\r\nexports.imageCreator = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _color = _interopRequireDefault(require(\"../color\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _svg = require(\"../core/utils/svg\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar _math = Math;\r\nvar PI = _math.PI;\r\nvar _min = _math.min;\r\nvar _abs = _math.abs;\r\nvar _sqrt = _math.sqrt;\r\nvar _pow = _math.pow;\r\nvar _atan2 = _math.atan2;\r\nvar _cos = _math.cos;\r\nvar _sin = _math.sin;\r\nvar _number = Number;\r\nvar IMAGE_QUALITY = 1;\r\nvar TEXT_DECORATION_LINE_WIDTH_COEFF = .05;\r\nvar DEFAULT_FONT_SIZE = \"10px\";\r\nvar DEFAULT_FONT_FAMILY = \"sans-serif\";\r\nvar DEFAULT_TEXT_COLOR = \"#000\";\r\nvar parseAttributes;\r\n\r\nfunction createCanvas(width, height, margin) {\r\n    var canvas = (0, _renderer.default)(\"<canvas>\")[0];\r\n    canvas.width = width + 2 * margin;\r\n    canvas.height = height + 2 * margin;\r\n    canvas.hidden = true;\r\n    return canvas\r\n}\r\n\r\nfunction getStringFromCanvas(canvas, mimeType) {\r\n    var dataURL = canvas.toDataURL(mimeType, IMAGE_QUALITY);\r\n    var imageData = window.atob(dataURL.substring((\"data:\" + mimeType + \";base64,\").length));\r\n    return imageData\r\n}\r\n\r\nfunction arcTo(x1, y1, x2, y2, radius, largeArcFlag, clockwise, context) {\r\n    var cBx = (x1 + x2) / 2;\r\n    var cBy = (y1 + y2) / 2;\r\n    var aB = _atan2(y1 - y2, x1 - x2);\r\n    var k = largeArcFlag ? 1 : -1;\r\n    aB += 90 * (PI / 180) * (clockwise ? 1 : -1);\r\n    var opSide = _sqrt(_pow(x2 - x1, 2) + _pow(y2 - y1, 2)) / 2;\r\n    var adjSide = _sqrt(_abs(_pow(radius, 2) - _pow(opSide, 2)));\r\n    var centerX = cBx + k * (adjSide * _cos(aB));\r\n    var centerY = cBy + k * (adjSide * _sin(aB));\r\n    var startAngle = _atan2(y1 - centerY, x1 - centerX);\r\n    var endAngle = _atan2(y2 - centerY, x2 - centerX);\r\n    context.arc(centerX, centerY, radius, startAngle, endAngle, !clockwise)\r\n}\r\n\r\nfunction getElementOptions(element, rootAppended) {\r\n    var attr = parseAttributes(element.attributes || {});\r\n    var options = (0, _extend.extend)({}, attr, {\r\n        text: element.textContent.replace(/\\s+/g, \" \"),\r\n        textAlign: \"middle\" === attr[\"text-anchor\"] ? \"center\" : attr[\"text-anchor\"]\r\n    });\r\n    var transform = attr.transform;\r\n    var coords;\r\n    if (transform) {\r\n        coords = transform.match(/translate\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*)*/);\r\n        if (coords) {\r\n            coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n            options.translateX = _number(coords[0]);\r\n            options.translateY = coords[1] ? _number(coords[1]) : 0\r\n        }\r\n        coords = transform.match(/rotate\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*,*\\s*-*\\d+([.]\\d+)*)*/);\r\n        if (coords) {\r\n            coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n            options.rotationAngle = _number(coords[0]);\r\n            options.rotationX = coords[1] && _number(coords[1]);\r\n            options.rotationY = coords[2] && _number(coords[2])\r\n        }\r\n        coords = transform.match(/scale\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*)*/);\r\n        if (coords) {\r\n            coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n            options.scaleX = _number(coords[0]);\r\n            if (coords.length > 1) {\r\n                options.scaleY = _number(coords[1])\r\n            } else {\r\n                options.scaleY = options.scaleX\r\n            }\r\n        }\r\n    }\r\n    parseStyles(element, options, rootAppended);\r\n    return options\r\n}\r\n\r\nfunction drawRect(context, options) {\r\n    var x = options.x;\r\n    var y = options.y;\r\n    var width = options.width;\r\n    var height = options.height;\r\n    var cornerRadius = options.rx;\r\n    if (!cornerRadius) {\r\n        context.rect(x, y, width, height)\r\n    } else {\r\n        cornerRadius = _min(cornerRadius, width / 2, height / 2);\r\n        context.save();\r\n        context.translate(x, y);\r\n        context.moveTo(width / 2, 0);\r\n        context.arcTo(width, 0, width, height, cornerRadius);\r\n        context.arcTo(width, height, 0, height, cornerRadius);\r\n        context.arcTo(0, height, 0, 0, cornerRadius);\r\n        context.arcTo(0, 0, cornerRadius, 0, cornerRadius);\r\n        context.lineTo(width / 2, 0);\r\n        context.restore()\r\n    }\r\n}\r\n\r\nfunction drawImage(context, options, shared) {\r\n    var d = new _deferred.Deferred;\r\n    var image = new window.Image;\r\n    image.onload = function() {\r\n        context.save();\r\n        context.globalAlpha = options.globalAlpha;\r\n        transformElement(context, options);\r\n        clipElement(context, options, shared);\r\n        context.drawImage(image, options.x, options.y, options.width, options.height);\r\n        context.restore();\r\n        d.resolve()\r\n    };\r\n    image.onerror = function() {\r\n        d.resolve()\r\n    };\r\n    image.setAttribute(\"crossOrigin\", \"anonymous\");\r\n    image.src = options.href || options[\"xlink:href\"];\r\n    return d\r\n}\r\n\r\nfunction drawPath(context, dAttr) {\r\n    var dArray = dAttr.replace(/,/g, \" \").split(/([A-Z])/i).filter(function(item) {\r\n        return \"\" !== item.trim()\r\n    });\r\n    var i = 0;\r\n    var params;\r\n    var prevParams;\r\n    var prevParamsLen;\r\n    do {\r\n        params = (dArray[i + 1] || \"\").trim().split(\" \");\r\n        switch (dArray[i]) {\r\n            case \"M\":\r\n                context.moveTo(_number(params[0]), _number(params[1]));\r\n                i += 2;\r\n                break;\r\n            case \"L\":\r\n                for (var j = 0; j < params.length / 2; j++) {\r\n                    context.lineTo(_number(params[2 * j]), _number(params[2 * j + 1]))\r\n                }\r\n                i += 2;\r\n                break;\r\n            case \"C\":\r\n                context.bezierCurveTo(_number(params[0]), _number(params[1]), _number(params[2]), _number(params[3]), _number(params[4]), _number(params[5]));\r\n                i += 2;\r\n                break;\r\n            case \"a\":\r\n                prevParams = dArray[i - 1].trim().split(\" \");\r\n                prevParamsLen = prevParams.length - 1;\r\n                arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(prevParams[prevParamsLen - 1]) + _number(params[5]), _number(prevParams[prevParamsLen]) + _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);\r\n                i += 2;\r\n                break;\r\n            case \"A\":\r\n                prevParams = dArray[i - 1].trim().split(\" \");\r\n                prevParamsLen = prevParams.length - 1;\r\n                arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(params[5]), _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);\r\n                i += 2;\r\n                break;\r\n            case \"Z\":\r\n                context.closePath();\r\n                i += 1;\r\n                break;\r\n            default:\r\n                i++\r\n        }\r\n    } while (i < dArray.length)\r\n}\r\n\r\nfunction parseStyles(element, options, rootAppended) {\r\n    var style = element.style || {};\r\n    var field;\r\n    for (field in style) {\r\n        if (\"\" !== style[field]) {\r\n            options[(0, _inflector.camelize)(field)] = style[field]\r\n        }\r\n    }\r\n    if (rootAppended && _dom_adapter.default.isElementNode(element)) {\r\n        style = window.getComputedStyle(element);\r\n        [\"fill\", \"stroke\", \"stroke-width\", \"font-family\", \"font-size\", \"font-style\", \"font-weight\"].forEach(function(prop) {\r\n            if (prop in style && \"\" !== style[prop]) {\r\n                options[(0, _inflector.camelize)(prop)] = style[prop]\r\n            }\r\n        });\r\n        [\"opacity\", \"fill-opacity\", \"stroke-opacity\"].forEach(function(prop) {\r\n            if (prop in style && \"\" !== style[prop] && \"1\" !== style[prop]) {\r\n                options[prop] = _number(style[prop])\r\n            }\r\n        })\r\n    }\r\n    options.textDecoration = options.textDecoration || options.textDecorationLine;\r\n    options.globalAlpha = (0, _type.isDefined)(options.opacity) ? options.opacity : options.globalAlpha\r\n}\r\n\r\nfunction parseUrl(urlString) {\r\n    var matches = urlString && urlString.match(/url\\(.*#(.*?)[\"']?\\)/i);\r\n    return matches && matches[1]\r\n}\r\n\r\nfunction setFontStyle(context, options) {\r\n    var fontParams = [];\r\n    options.fontSize = options.fontSize || DEFAULT_FONT_SIZE;\r\n    options.fontFamily || DEFAULT_FONT_FAMILY;\r\n    options.fill = options.fill || DEFAULT_TEXT_COLOR;\r\n    options.fontStyle && fontParams.push(options.fontStyle);\r\n    options.fontWeight && fontParams.push(options.fontWeight);\r\n    fontParams.push(options.fontSize);\r\n    fontParams.push(options.fontFamily);\r\n    context.font = fontParams.join(\" \");\r\n    context.textAlign = options.textAlign;\r\n    context.fillStyle = options.fill;\r\n    context.globalAlpha = options.globalAlpha\r\n}\r\n\r\nfunction drawText(context, options, shared) {\r\n    setFontStyle(context, options);\r\n    applyFilter(context, options, shared);\r\n    options.text && context.fillText(options.text, options.x || 0, options.y || 0);\r\n    strokeElement(context, options, true);\r\n    drawTextDecoration(context, options, shared)\r\n}\r\n\r\nfunction drawTextDecoration(context, options, shared) {\r\n    if (!options.textDecoration || \"none\" === options.textDecoration) {\r\n        return\r\n    }\r\n    var x = options.x;\r\n    var textWidth = context.measureText(options.text).width;\r\n    var textHeight = parseInt(options.fontSize, 10);\r\n    var lineHeight = textHeight * TEXT_DECORATION_LINE_WIDTH_COEFF < 1 ? 1 : textHeight * TEXT_DECORATION_LINE_WIDTH_COEFF;\r\n    var y = options.y;\r\n    switch (options.textDecoration) {\r\n        case \"line-through\":\r\n            y -= textHeight / 3 + lineHeight / 2;\r\n            break;\r\n        case \"overline\":\r\n            y -= textHeight - lineHeight;\r\n            break;\r\n        case \"underline\":\r\n            y += lineHeight\r\n    }\r\n    context.rect(x, y, textWidth, lineHeight);\r\n    fillElement(context, options, shared);\r\n    strokeElement(context, options)\r\n}\r\n\r\nfunction aggregateOpacity(options) {\r\n    options.strokeOpacity = void 0 !== options[\"stroke-opacity\"] ? options[\"stroke-opacity\"] : 1;\r\n    options.fillOpacity = void 0 !== options[\"fill-opacity\"] ? options[\"fill-opacity\"] : 1;\r\n    if (void 0 !== options.opacity) {\r\n        options.strokeOpacity *= options.opacity;\r\n        options.fillOpacity *= options.opacity\r\n    }\r\n}\r\n\r\nfunction hasTspan(element) {\r\n    var nodes = element.childNodes;\r\n    for (var i = 0; i < nodes.length; i++) {\r\n        if (\"tspan\" === nodes[i].tagName) {\r\n            return true\r\n        }\r\n    }\r\n    return false\r\n}\r\n\r\nfunction drawTextElement(childNodes, context, options, shared) {\r\n    var lines = [];\r\n    var line;\r\n    var offset = 0;\r\n    for (var i = 0; i < childNodes.length; i++) {\r\n        var element = childNodes[i];\r\n        if (void 0 === element.tagName) {\r\n            drawElement(element, context, options, shared)\r\n        } else {\r\n            if (\"tspan\" === element.tagName || \"text\" === element.tagName) {\r\n                var elementOptions = getElementOptions(element, shared.rootAppended);\r\n                var mergedOptions = (0, _extend.extend)({}, options, elementOptions);\r\n                if (\"tspan\" === element.tagName && hasTspan(element)) {\r\n                    drawTextElement(element.childNodes, context, mergedOptions, shared);\r\n                    continue\r\n                }\r\n                mergedOptions.textAlign = \"start\";\r\n                if (!line || void 0 !== elementOptions.x) {\r\n                    line = {\r\n                        elements: [],\r\n                        options: [],\r\n                        widths: [],\r\n                        offsets: []\r\n                    };\r\n                    lines.push(line)\r\n                }\r\n                if (void 0 !== elementOptions.y) {\r\n                    offset = 0\r\n                }\r\n                if (void 0 !== elementOptions.dy) {\r\n                    offset += parseFloat(elementOptions.dy)\r\n                }\r\n                line.elements.push(element);\r\n                line.options.push(mergedOptions);\r\n                line.offsets.push(offset);\r\n                setFontStyle(context, mergedOptions);\r\n                line.widths.push(context.measureText(mergedOptions.text).width)\r\n            }\r\n        }\r\n    }\r\n    lines.forEach(function(line) {\r\n        var commonWidth = line.widths.reduce(function(commonWidth, width) {\r\n            return commonWidth + width\r\n        }, 0);\r\n        var xDiff = 0;\r\n        var currentOffset = 0;\r\n        if (\"center\" === options.textAlign) {\r\n            xDiff = commonWidth / 2\r\n        }\r\n        if (\"end\" === options.textAlign) {\r\n            xDiff = commonWidth\r\n        }\r\n        line.options.forEach(function(o, index) {\r\n            var width = line.widths[index];\r\n            o.x = o.x - xDiff + currentOffset;\r\n            o.y += line.offsets[index];\r\n            currentOffset += width\r\n        });\r\n        line.elements.forEach(function(element, index) {\r\n            drawTextElement(element.childNodes, context, line.options[index], shared)\r\n        })\r\n    })\r\n}\r\n\r\nfunction drawElement(element, context, parentOptions, shared) {\r\n    var tagName = element.tagName;\r\n    var isText = \"text\" === tagName || \"tspan\" === tagName || void 0 === tagName;\r\n    var isImage = \"image\" === tagName;\r\n    var options = (0, _extend.extend)({}, parentOptions, getElementOptions(element, shared.rootAppended));\r\n    if (\"hidden\" === options.visibility || options[\"hidden-for-export\"]) {\r\n        return\r\n    }\r\n    context.save();\r\n    !isImage && transformElement(context, options);\r\n    clipElement(context, options, shared);\r\n    aggregateOpacity(options);\r\n    var promise;\r\n    context.beginPath();\r\n    switch (element.tagName) {\r\n        case void 0:\r\n            drawText(context, options, shared);\r\n            break;\r\n        case \"text\":\r\n        case \"tspan\":\r\n            drawTextElement(element.childNodes, context, options, shared);\r\n            break;\r\n        case \"image\":\r\n            promise = drawImage(context, options, shared);\r\n            break;\r\n        case \"path\":\r\n            drawPath(context, options.d);\r\n            break;\r\n        case \"rect\":\r\n            drawRect(context, options);\r\n            context.closePath();\r\n            break;\r\n        case \"circle\":\r\n            context.arc(options.cx, options.cy, options.r, 0, 2 * PI, 1)\r\n    }\r\n    if (!isText) {\r\n        applyFilter(context, options, shared);\r\n        fillElement(context, options, shared);\r\n        strokeElement(context, options)\r\n    }\r\n    applyGradient(context, options, shared, element);\r\n    context.restore();\r\n    return promise\r\n}\r\n\r\nfunction applyGradient(context, options, _ref, element) {\r\n    var gradients = _ref.gradients;\r\n    if (0 === gradients.length) {\r\n        return\r\n    }\r\n    var id = parseUrl(options.fill);\r\n    if (id && gradients[id]) {\r\n        var box = element.getBBox();\r\n        var gradient = context.createLinearGradient(box.x, 0, box.x + box.width, 0);\r\n        gradients[id].forEach(function(opt) {\r\n            var offset = parseInt(opt.offset.replace(/%/, \"\"));\r\n            gradient.addColorStop(offset / 100, opt.stopColor)\r\n        });\r\n        context.globalAlpha = options.opacity;\r\n        context.fillStyle = gradient;\r\n        context.fill()\r\n    }\r\n}\r\n\r\nfunction applyFilter(context, options, shared) {\r\n    var filterOptions;\r\n    var id = parseUrl(options.filter);\r\n    if (id) {\r\n        filterOptions = shared.filters[id];\r\n        if (!filterOptions) {\r\n            filterOptions = {\r\n                offsetX: 0,\r\n                offsetY: 0,\r\n                blur: 0,\r\n                color: \"#000\"\r\n            }\r\n        }\r\n        context.shadowOffsetX = filterOptions.offsetX;\r\n        context.shadowOffsetY = filterOptions.offsetY;\r\n        context.shadowColor = filterOptions.color;\r\n        context.shadowBlur = filterOptions.blur\r\n    }\r\n}\r\n\r\nfunction transformElement(context, options) {\r\n    context.translate(options.translateX || 0, options.translateY || 0);\r\n    options.translateX = void 0;\r\n    options.translateY = void 0;\r\n    if (options.rotationAngle) {\r\n        context.translate(options.rotationX || 0, options.rotationY || 0);\r\n        context.rotate(options.rotationAngle * PI / 180);\r\n        context.translate(-(options.rotationX || 0), -(options.rotationY || 0));\r\n        options.rotationAngle = void 0;\r\n        options.rotationX = void 0;\r\n        options.rotationY = void 0\r\n    }\r\n    if (isFinite(options.scaleX)) {\r\n        context.scale(options.scaleX, options.scaleY);\r\n        options.scaleX = void 0;\r\n        options.scaleY = void 0\r\n    }\r\n}\r\n\r\nfunction clipElement(context, options, shared) {\r\n    if (options[\"clip-path\"]) {\r\n        drawElement(shared.clipPaths[parseUrl(options[\"clip-path\"])], context, {}, shared);\r\n        context.clip();\r\n        options[\"clip-path\"] = void 0\r\n    }\r\n}\r\n\r\nfunction hex2rgba(hexColor, alpha) {\r\n    var color = new _color.default(hexColor);\r\n    return \"rgba(\" + color.r + \",\" + color.g + \",\" + color.b + \",\" + alpha + \")\"\r\n}\r\n\r\nfunction createGradient(element) {\r\n    var options = [];\r\n    (0, _iterator.each)(element.childNodes, function(_, _ref2) {\r\n        var attributes = _ref2.attributes;\r\n        options.push({\r\n            offset: attributes.offset.value,\r\n            stopColor: attributes[\"stop-color\"].value\r\n        })\r\n    });\r\n    return options\r\n}\r\n\r\nfunction createFilter(element) {\r\n    var color;\r\n    var opacity;\r\n    var filterOptions = {};\r\n    (0, _iterator.each)(element.childNodes, function(_, node) {\r\n        var attr = node.attributes;\r\n        if (!attr.result) {\r\n            return\r\n        }\r\n        switch (attr.result.value) {\r\n            case \"gaussianBlurResult\":\r\n                filterOptions.blur = _number(attr.stdDeviation.value);\r\n                break;\r\n            case \"offsetResult\":\r\n                filterOptions.offsetX = _number(attr.dx.value);\r\n                filterOptions.offsetY = _number(attr.dy.value);\r\n                break;\r\n            case \"floodResult\":\r\n                color = attr[\"flood-color\"] ? attr[\"flood-color\"].value : \"#000\";\r\n                opacity = attr[\"flood-opacity\"] ? attr[\"flood-opacity\"].value : 1;\r\n                filterOptions.color = hex2rgba(color, opacity)\r\n        }\r\n    });\r\n    return filterOptions\r\n}\r\n\r\nfunction asyncEach(array, callback) {\r\n    var d = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : new _deferred.Deferred;\r\n    var i = 0;\r\n    for (; i < array.length; i++) {\r\n        var result = callback(array[i]);\r\n        if ((0, _type.isPromise)(result)) {\r\n            result.then(function() {\r\n                asyncEach(Array.prototype.slice.call(array, i + 1), callback, d)\r\n            });\r\n            break\r\n        }\r\n    }\r\n    if (i === array.length) {\r\n        d.resolve()\r\n    }\r\n    return d\r\n}\r\n\r\nfunction drawCanvasElements(elements, context, parentOptions, shared) {\r\n    return asyncEach(elements, function(element) {\r\n        switch (element.tagName && element.tagName.toLowerCase()) {\r\n            case \"g\":\r\n            case \"svg\":\r\n                var options = (0, _extend.extend)({}, parentOptions, getElementOptions(element, shared.rootAppended));\r\n                context.save();\r\n                transformElement(context, options);\r\n                clipElement(context, options, shared);\r\n                var onDone = function() {\r\n                    context.restore()\r\n                };\r\n                var d = drawCanvasElements(element.childNodes, context, options, shared);\r\n                if ((0, _type.isPromise)(d)) {\r\n                    d.then(onDone)\r\n                } else {\r\n                    onDone()\r\n                }\r\n                return d;\r\n            case \"defs\":\r\n                return drawCanvasElements(element.childNodes, context, {}, shared);\r\n            case \"clippath\":\r\n                shared.clipPaths[element.attributes.id.textContent] = element.childNodes[0];\r\n                break;\r\n            case \"pattern\":\r\n                shared.patterns[element.attributes.id.textContent] = element;\r\n                break;\r\n            case \"filter\":\r\n                shared.filters[element.id] = createFilter(element);\r\n                break;\r\n            case \"lineargradient\":\r\n                shared.gradients[element.attributes.id.textContent] = createGradient(element);\r\n                break;\r\n            default:\r\n                return drawElement(element, context, parentOptions, shared)\r\n        }\r\n    })\r\n}\r\n\r\nfunction setLineDash(context, options) {\r\n    var matches = options[\"stroke-dasharray\"] && options[\"stroke-dasharray\"].match(/(\\d+)/g);\r\n    if (matches && matches.length) {\r\n        matches = (0, _iterator.map)(matches, function(item) {\r\n            return _number(item)\r\n        });\r\n        context.setLineDash(matches)\r\n    }\r\n}\r\n\r\nfunction strokeElement(context, options, isText) {\r\n    var stroke = options.stroke;\r\n    if (stroke && \"none\" !== stroke && 0 !== options[\"stroke-width\"]) {\r\n        setLineDash(context, options);\r\n        context.lineJoin = options[\"stroke-linejoin\"];\r\n        context.lineWidth = options[\"stroke-width\"];\r\n        context.globalAlpha = options.strokeOpacity;\r\n        context.strokeStyle = stroke;\r\n        isText ? context.strokeText(options.text, options.x, options.y) : context.stroke();\r\n        context.globalAlpha = 1\r\n    }\r\n}\r\n\r\nfunction getPattern(context, pattern, shared) {\r\n    var options = getElementOptions(pattern, shared.rootAppended);\r\n    var patternCanvas = createCanvas(options.width, options.height, 0);\r\n    var patternContext = patternCanvas.getContext(\"2d\");\r\n    drawCanvasElements(pattern.childNodes, patternContext, options, shared);\r\n    return context.createPattern(patternCanvas, \"repeat\")\r\n}\r\n\r\nfunction fillElement(context, options, shared) {\r\n    var fill = options.fill;\r\n    if (fill && \"none\" !== fill) {\r\n        if (fill.search(/url/) === -1) {\r\n            context.fillStyle = fill\r\n        } else {\r\n            var pattern = shared.patterns[parseUrl(fill)];\r\n            if (!pattern) {\r\n                return\r\n            }\r\n            context.fillStyle = getPattern(context, pattern, shared)\r\n        }\r\n        context.globalAlpha = options.fillOpacity;\r\n        context.fill();\r\n        context.globalAlpha = 1\r\n    }\r\n}\r\nparseAttributes = function(attributes) {\r\n    var newAttributes = {};\r\n    var attr;\r\n    (0, _iterator.each)(attributes, function(index, item) {\r\n        attr = item.textContent;\r\n        if (isFinite(attr)) {\r\n            attr = _number(attr)\r\n        }\r\n        newAttributes[item.name.toLowerCase()] = attr\r\n    });\r\n    return newAttributes\r\n};\r\n\r\nfunction drawBackground(context, width, height, backgroundColor, margin) {\r\n    context.fillStyle = backgroundColor || \"#ffffff\";\r\n    context.fillRect(-margin, -margin, width + 2 * margin, height + 2 * margin)\r\n}\r\n\r\nfunction createInvisibleDiv() {\r\n    var invisibleDiv = _dom_adapter.default.createElement(\"div\");\r\n    invisibleDiv.style.left = \"-9999px\";\r\n    invisibleDiv.style.position = \"absolute\";\r\n    return invisibleDiv\r\n}\r\n\r\nfunction convertSvgToCanvas(svg, canvas, rootAppended) {\r\n    return drawCanvasElements(svg.childNodes, canvas.getContext(\"2d\"), {}, {\r\n        clipPaths: {},\r\n        patterns: {},\r\n        filters: {},\r\n        gradients: {},\r\n        rootAppended: rootAppended\r\n    })\r\n}\r\n\r\nfunction getCanvasFromSvg(markup, width, height, backgroundColor, margin) {\r\n    var svgToCanvas = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : convertSvgToCanvas;\r\n    var canvas = createCanvas(width, height, margin);\r\n    var context = canvas.getContext(\"2d\");\r\n    var svgElem = (0, _svg.getSvgElement)(markup);\r\n    var invisibleDiv;\r\n    var markupIsDomElement = _dom_adapter.default.isElementNode(markup);\r\n    context.translate(margin, margin);\r\n    _dom_adapter.default.getBody().appendChild(canvas);\r\n    if (!markupIsDomElement) {\r\n        invisibleDiv = createInvisibleDiv();\r\n        invisibleDiv.appendChild(svgElem);\r\n        _dom_adapter.default.getBody().appendChild(invisibleDiv)\r\n    }\r\n    if (svgElem.attributes.direction) {\r\n        canvas.dir = svgElem.attributes.direction.textContent\r\n    }\r\n    drawBackground(context, width, height, backgroundColor, margin);\r\n    return (0, _deferred.fromPromise)(svgToCanvas(svgElem, canvas, markupIsDomElement && (0, _dom.contains)(_dom_adapter.default.getBody(), markup))).then(function() {\r\n        return canvas\r\n    }).always(function() {\r\n        invisibleDiv && _dom_adapter.default.getBody().removeChild(invisibleDiv);\r\n        _dom_adapter.default.getBody().removeChild(canvas)\r\n    })\r\n}\r\nvar imageCreator = {\r\n    getImageData: function(markup, options) {\r\n        var mimeType = \"image/\" + options.format;\r\n        var width = options.width;\r\n        var height = options.height;\r\n        var backgroundColor = options.backgroundColor;\r\n        if ((0, _type.isFunction)(options.__parseAttributesFn)) {\r\n            parseAttributes = options.__parseAttributesFn\r\n        }\r\n        return getCanvasFromSvg(markup, width, height, backgroundColor, options.margin, options.svgToCanvas).then(function(canvas) {\r\n            return getStringFromCanvas(canvas, mimeType)\r\n        })\r\n    },\r\n    getData: function(markup, options) {\r\n        var that = this;\r\n        return imageCreator.getImageData(markup, options).then(function(binaryData) {\r\n            var mimeType = \"image/\" + options.format;\r\n            var data = (0, _type.isFunction)(window.Blob) && !options.forceProxy ? that._getBlob(binaryData, mimeType) : that._getBase64(binaryData);\r\n            return data\r\n        })\r\n    },\r\n    _getBlob: function(binaryData, mimeType) {\r\n        var i;\r\n        var dataArray = new Uint8Array(binaryData.length);\r\n        for (i = 0; i < binaryData.length; i++) {\r\n            dataArray[i] = binaryData.charCodeAt(i)\r\n        }\r\n        return new window.Blob([dataArray.buffer], {\r\n            type: mimeType\r\n        })\r\n    },\r\n    _getBase64: function(binaryData) {\r\n        return window.btoa(binaryData)\r\n    }\r\n};\r\nexports.imageCreator = imageCreator;\r\n\r\nfunction getData(data, options) {\r\n    return imageCreator.getData(data, options)\r\n}\r\n\r\nfunction testFormats(formats) {\r\n    var canvas = createCanvas(100, 100, 0);\r\n    return formats.reduce(function(r, f) {\r\n        var mimeType = (\"image/\" + f).toLowerCase();\r\n        if (canvas.toDataURL(mimeType).indexOf(mimeType) !== -1) {\r\n            r.supported.push(f)\r\n        } else {\r\n            r.unsupported.push(f)\r\n        }\r\n        return r\r\n    }, {\r\n        supported: [],\r\n        unsupported: []\r\n    })\r\n}\r\n","/**\r\n * DevExtreme (viz/chart_components/zoom_and_pan.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar transformEvents = _interopRequireWildcard(require(\"../../events/transform\"));\r\nvar _drag = require(\"../../events/drag\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\nvar EVENTS_NS = \".zoomAndPanNS\";\r\nvar DRAG_START_EVENT_NAME = _drag.start + EVENTS_NS;\r\nvar DRAG_EVENT_NAME = _drag.move + EVENTS_NS;\r\nvar DRAG_END_EVENT_NAME = _drag.end + EVENTS_NS;\r\nvar PINCH_START_EVENT_NAME = transformEvents.pinchstart + EVENTS_NS;\r\nvar PINCH_EVENT_NAME = transformEvents.pinch + EVENTS_NS;\r\nvar PINCH_END_EVENT_NAME = transformEvents.pinchend + EVENTS_NS;\r\nvar SCROLL_BAR_START_EVENT_NAME = \"dxc-scroll-start\" + EVENTS_NS;\r\nvar SCROLL_BAR_MOVE_EVENT_NAME = \"dxc-scroll-move\" + EVENTS_NS;\r\nvar SCROLL_BAR_END_EVENT_NAME = \"dxc-scroll-end\" + EVENTS_NS;\r\nvar GESTURE_TIMEOUT = 300;\r\nvar MIN_DRAG_DELTA = 5;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _abs = Math.abs;\r\n\r\nfunction canvasToRect(canvas) {\r\n    return {\r\n        x: canvas.left,\r\n        y: canvas.top,\r\n        width: canvas.width - canvas.left - canvas.right,\r\n        height: canvas.height - canvas.top - canvas.bottom\r\n    }\r\n}\r\n\r\nfunction checkCoords(rect, coords) {\r\n    var x = coords.x;\r\n    var y = coords.y;\r\n    return x >= rect.x && x <= rect.width + rect.x && y >= rect.y && y <= rect.height + rect.y\r\n}\r\n\r\nfunction sortAxes(axes, onlyAxisToNotify) {\r\n    if (onlyAxisToNotify) {\r\n        axes = axes.sort(function(a, b) {\r\n            if (a === onlyAxisToNotify) {\r\n                return -1\r\n            }\r\n            if (b === onlyAxisToNotify) {\r\n                return 1\r\n            }\r\n            return 0\r\n        })\r\n    }\r\n    return axes\r\n}\r\n\r\nfunction isNotEmptyAxisBusinessRange(axis) {\r\n    return !axis.getTranslator().getBusinessRange().isEmpty()\r\n}\r\n\r\nfunction axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionField, scale, e) {\r\n    var silent = onlyAxisToNotify && axis !== onlyAxisToNotify;\r\n    var range = getRange(axis);\r\n    var _axis$checkZoomingLow = axis.checkZoomingLowerLimitOvercome(actionField, scale, range),\r\n        stopInteraction = _axis$checkZoomingLow.stopInteraction,\r\n        correctedRange = _axis$checkZoomingLow.correctedRange;\r\n    var result = axis.handleZooming(stopInteraction ? null : correctedRange, getParameters(silent), e, actionField);\r\n    stopInteraction && axis.handleZoomEnd();\r\n    return {\r\n        stopInteraction: stopInteraction,\r\n        result: result\r\n    }\r\n}\r\nvar _default = {\r\n    name: \"zoom_and_pan\",\r\n    init: function() {\r\n        var chart = this;\r\n        var renderer = this._renderer;\r\n\r\n        function cancelEvent(e) {\r\n            if (e.originalEvent) {\r\n                cancelEvent(e.originalEvent)\r\n            }\r\n            if (false !== e.cancelable) {\r\n                e.cancel = true\r\n            }\r\n        }\r\n\r\n        function startAxesViewportChanging(zoomAndPan, actionField, e) {\r\n            var options = zoomAndPan.options;\r\n            var actionData = zoomAndPan.actionData;\r\n            var axes = [];\r\n            if (options.argumentAxis[actionField]) {\r\n                axes.push(chart.getArgumentAxis())\r\n            }\r\n            if (options.valueAxis[actionField]) {\r\n                axes = axes.concat(actionData.valueAxes)\r\n            }\r\n            axes.reduce(function(isPrevented, axis) {\r\n                if (isPrevented) {\r\n                    return isPrevented\r\n                }\r\n                if (isNotEmptyAxisBusinessRange(axis)) {\r\n                    return axis.handleZooming(null, {\r\n                        end: true\r\n                    }, e, actionField).isPrevented\r\n                }\r\n                return isPrevented\r\n            }, false) && cancelEvent(e)\r\n        }\r\n\r\n        function axesViewportChanging(zoomAndPan, actionField, e, offsetCalc, centerCalc) {\r\n            function zoomAxes(axes, criteria, coordField, e, actionData) {\r\n                var zoom = {\r\n                    zoomed: false\r\n                };\r\n                criteria && axes.filter(isNotEmptyAxisBusinessRange).forEach(function(axis) {\r\n                    var options = axis.getOptions();\r\n                    var viewport = axis.visualRange();\r\n                    var scale = axis.getTranslator().getEventScale(e);\r\n                    var translate = -offsetCalc(e, actionData, coordField, scale);\r\n                    zoom = (0, _extend.extend)(true, zoom, axis.getTranslator().zoom(translate, scale, axis.getZoomBounds()));\r\n                    var range = axis.adjustRange((0, _utils.getVizRangeObject)([zoom.min, zoom.max]));\r\n                    var _axis$checkZoomingLow2 = axis.checkZoomingLowerLimitOvercome(actionField, scale, range),\r\n                        stopInteraction = _axis$checkZoomingLow2.stopInteraction,\r\n                        correctedRange = _axis$checkZoomingLow2.correctedRange;\r\n                    if (!(0, _type.isDefined)(viewport) || viewport.startValue.valueOf() !== correctedRange.startValue.valueOf() || viewport.endValue.valueOf() !== correctedRange.endValue.valueOf()) {\r\n                        axis.handleZooming(stopInteraction ? null : correctedRange, {\r\n                            start: true,\r\n                            end: true\r\n                        }, e, actionField);\r\n                        if (!stopInteraction) {\r\n                            zoom.zoomed = true;\r\n                            zoom.deltaTranslate = translate - zoom.translate\r\n                        }\r\n                    } else {\r\n                        if (\"touch\" === e.pointerType && \"discrete\" === options.type) {\r\n                            var isMinPosition = axis.isExtremePosition(false);\r\n                            var isMaxPosition = axis.isExtremePosition(true);\r\n                            var zoomInEnabled = scale > 1 && !stopInteraction;\r\n                            var zoomOutEnabled = scale < 1 && (!isMinPosition || !isMaxPosition);\r\n                            var panningEnabled = 1 === scale && !(isMinPosition && (translate < 0 && !options.inverted || translate > 0 && options.inverted) || isMaxPosition && (translate > 0 && !options.inverted || translate < 0 && options.inverted));\r\n                            zoom.enabled = zoomInEnabled || zoomOutEnabled || panningEnabled\r\n                        }\r\n                    }\r\n                });\r\n                return zoom\r\n            }\r\n\r\n            function storeOffset(e, actionData, zoom, coordField) {\r\n                if (zoom.zoomed) {\r\n                    actionData.offset[coordField] = (e.offset ? e.offset[coordField] : actionData.offset[coordField]) + zoom.deltaTranslate\r\n                }\r\n            }\r\n\r\n            function storeCenter(center, actionData, zoom, coordField) {\r\n                if (zoom.zoomed) {\r\n                    actionData.center[coordField] = center[coordField] + zoom.deltaTranslate\r\n                }\r\n            }\r\n            var rotated = chart.option(\"rotated\");\r\n            var actionData = zoomAndPan.actionData;\r\n            var options = zoomAndPan.options;\r\n            var argZoom = {};\r\n            var valZoom = {};\r\n            if (!actionData.fallback) {\r\n                argZoom = zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? \"y\" : \"x\", e, actionData);\r\n                valZoom = zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? \"x\" : \"y\", e, actionData);\r\n                chart._requestChange([\"VISUAL_RANGE\"]);\r\n                storeOffset(e, actionData, argZoom, rotated ? \"y\" : \"x\");\r\n                storeOffset(e, actionData, valZoom, rotated ? \"x\" : \"y\")\r\n            }\r\n            var center = centerCalc(e);\r\n            storeCenter(center, actionData, argZoom, rotated ? \"y\" : \"x\");\r\n            storeCenter(center, actionData, valZoom, rotated ? \"x\" : \"y\");\r\n            if (!argZoom.zoomed && !valZoom.zoomed) {\r\n                actionData.center = center\r\n            }\r\n            return argZoom.zoomed || valZoom.zoomed || actionData.fallback || argZoom.enabled || valZoom.enabled\r\n        }\r\n\r\n        function finishAxesViewportChanging(zoomAndPan, actionField, e, offsetCalc) {\r\n            function zoomAxes(axes, criteria, coordField, actionData, onlyAxisToNotify) {\r\n                var zoomStarted = false;\r\n                var scale = e.scale || 1;\r\n                var getRange = function(axis) {\r\n                    var zoom = axis.getTranslator().zoom(-offsetCalc(e, actionData, coordField, scale), scale, axis.getZoomBounds());\r\n                    return {\r\n                        startValue: zoom.min,\r\n                        endValue: zoom.max\r\n                    }\r\n                };\r\n                var getParameters = function(silent) {\r\n                    return {\r\n                        start: true,\r\n                        end: silent\r\n                    }\r\n                };\r\n                criteria && axes.forEach(function(axis) {\r\n                    zoomStarted = !axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionField, scale, e).stopInteraction\r\n                });\r\n                return zoomStarted\r\n            }\r\n            var rotated = chart.option(\"rotated\");\r\n            var actionData = zoomAndPan.actionData;\r\n            var options = zoomAndPan.options;\r\n            var zoomStarted = true;\r\n            if (actionData.fallback) {\r\n                zoomStarted &= zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? \"y\" : \"x\", actionData, chart.getArgumentAxis());\r\n                zoomStarted |= zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? \"x\" : \"y\", actionData)\r\n            } else {\r\n                var axes = [];\r\n                if (options.argumentAxis[actionField]) {\r\n                    axes.push(chart.getArgumentAxis())\r\n                }\r\n                if (options.valueAxis[actionField]) {\r\n                    axes = axes.concat(actionData.valueAxes)\r\n                }\r\n                axes.filter(isNotEmptyAxisBusinessRange).forEach(function(axis) {\r\n                    axis.handleZooming(null, {\r\n                        start: true\r\n                    }, e, actionField)\r\n                });\r\n                zoomStarted = zoomStarted && axes.length\r\n            }\r\n            zoomStarted && chart._requestChange([\"VISUAL_RANGE\"])\r\n        }\r\n\r\n        function prepareActionData(coords, action) {\r\n            var axes = chart._argumentAxes.filter(function(axis) {\r\n                return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n            });\r\n            return {\r\n                fallback: chart._lastRenderingTime > GESTURE_TIMEOUT,\r\n                cancel: !axes.length || !(0, _type.isDefined)(action),\r\n                action: action,\r\n                curAxisRect: axes.length && canvasToRect(axes[0].getCanvas()),\r\n                valueAxes: axes.length && chart._valueAxes.filter(function(axis) {\r\n                    return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n                }),\r\n                offset: {\r\n                    x: 0,\r\n                    y: 0\r\n                },\r\n                center: coords,\r\n                startCenter: coords\r\n            }\r\n        }\r\n\r\n        function getPointerCoord(rect, e) {\r\n            var rootOffset = renderer.getRootOffset();\r\n            return {\r\n                x: _min(_max(e.pageX - rootOffset.left, rect.x), rect.width + rect.x),\r\n                y: _min(_max(e.pageY - rootOffset.top, rect.y), rect.height + rect.y)\r\n            }\r\n        }\r\n\r\n        function calcCenterForPinch(e) {\r\n            var rootOffset = renderer.getRootOffset();\r\n            var x1 = e.pointers[0].pageX;\r\n            var x2 = e.pointers[1].pageX;\r\n            var y1 = e.pointers[0].pageY;\r\n            var y2 = e.pointers[1].pageY;\r\n            return {\r\n                x: _min(x1, x2) + _abs(x2 - x1) / 2 - rootOffset.left,\r\n                y: _min(y1, y2) + _abs(y2 - y1) / 2 - rootOffset.top\r\n            }\r\n        }\r\n\r\n        function calcCenterForDrag(e) {\r\n            var rootOffset = renderer.getRootOffset();\r\n            return {\r\n                x: e.pageX - rootOffset.left,\r\n                y: e.pageY - rootOffset.top\r\n            }\r\n        }\r\n\r\n        function calcOffsetForDrag(e, actionData, coordField) {\r\n            return e.offset[coordField] - actionData.offset[coordField]\r\n        }\r\n\r\n        function preventDefaults(e) {\r\n            if (false !== e.cancelable) {\r\n                e.preventDefault();\r\n                e.stopPropagation()\r\n            }\r\n            chart._stopCurrentHandling()\r\n        }\r\n        var zoomAndPan = {\r\n            dragStartHandler: function(e) {\r\n                var options = zoomAndPan.options;\r\n                var isTouch = \"touch\" === e.pointerType;\r\n                var wantPan = options.argumentAxis.pan || options.valueAxis.pan;\r\n                var wantZoom = options.argumentAxis.zoom || options.valueAxis.zoom;\r\n                var panKeyPressed = (0, _type.isDefined)(options.panKey) && e[(0, _utils.normalizeEnum)(options.panKey) + \"Key\"];\r\n                var dragToZoom = options.dragToZoom;\r\n                var action;\r\n                e._cancelPreventDefault = true;\r\n                if (isTouch) {\r\n                    if (options.allowTouchGestures && wantPan) {\r\n                        var cancelPanning = !zoomAndPan.panningVisualRangeEnabled() || zoomAndPan.skipEvent;\r\n                        action = cancelPanning ? null : \"pan\"\r\n                    }\r\n                } else {\r\n                    if (dragToZoom && wantPan && panKeyPressed) {\r\n                        action = \"pan\"\r\n                    } else {\r\n                        if (!dragToZoom && wantPan) {\r\n                            action = \"pan\"\r\n                        } else {\r\n                            if (dragToZoom && wantZoom) {\r\n                                action = \"zoom\"\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                var actionData = prepareActionData(calcCenterForDrag(e), action);\r\n                if (actionData.cancel) {\r\n                    zoomAndPan.skipEvent = false;\r\n                    if (false !== e.cancelable) {\r\n                        e.cancel = true\r\n                    }\r\n                    return\r\n                }\r\n                zoomAndPan.actionData = actionData;\r\n                if (\"zoom\" === action) {\r\n                    actionData.startCoords = getPointerCoord(actionData.curAxisRect, e);\r\n                    actionData.rect = renderer.rect(0, 0, 0, 0).attr(options.dragBoxStyle).append(renderer.root)\r\n                } else {\r\n                    startAxesViewportChanging(zoomAndPan, \"pan\", e)\r\n                }\r\n            },\r\n            dragHandler: function(e) {\r\n                var rotated = chart.option(\"rotated\");\r\n                var options = zoomAndPan.options;\r\n                var actionData = zoomAndPan.actionData;\r\n                var isTouch = \"touch\" === e.pointerType;\r\n                e._cancelPreventDefault = true;\r\n                if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled()) {\r\n                    return\r\n                }\r\n                if (\"zoom\" === actionData.action) {\r\n                    preventDefaults(e);\r\n                    var curCanvas = actionData.curAxisRect;\r\n                    var startCoords = actionData.startCoords;\r\n                    var curCoords = getPointerCoord(curCanvas, e);\r\n                    var zoomArg = options.argumentAxis.zoom;\r\n                    var zoomVal = options.valueAxis.zoom;\r\n                    var rect = {\r\n                        x: _min(startCoords.x, curCoords.x),\r\n                        y: _min(startCoords.y, curCoords.y),\r\n                        width: _abs(startCoords.x - curCoords.x),\r\n                        height: _abs(startCoords.y - curCoords.y)\r\n                    };\r\n                    if (!zoomArg || !zoomVal) {\r\n                        if (!zoomArg && !rotated || !zoomVal && rotated) {\r\n                            rect.x = curCanvas.x;\r\n                            rect.width = curCanvas.width\r\n                        } else {\r\n                            rect.y = curCanvas.y;\r\n                            rect.height = curCanvas.height\r\n                        }\r\n                    }\r\n                    actionData.rect.attr(rect)\r\n                } else {\r\n                    if (\"pan\" === actionData.action) {\r\n                        axesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag, function(e) {\r\n                            return e.offset\r\n                        });\r\n                        var deltaOffsetY = Math.abs(e.offset.y - actionData.offset.y);\r\n                        var deltaOffsetX = Math.abs(e.offset.x - actionData.offset.x);\r\n                        if (isTouch && (deltaOffsetY > MIN_DRAG_DELTA && deltaOffsetY > Math.abs(actionData.offset.x) || deltaOffsetX > MIN_DRAG_DELTA && deltaOffsetX > Math.abs(actionData.offset.y))) {\r\n                            return\r\n                        }\r\n                        preventDefaults(e)\r\n                    }\r\n                }\r\n            },\r\n            dragEndHandler: function(e) {\r\n                var rotated = chart.option(\"rotated\");\r\n                var options = zoomAndPan.options;\r\n                var actionData = zoomAndPan.actionData;\r\n                var isTouch = \"touch\" === e.pointerType;\r\n                var panIsEmpty = actionData && \"pan\" === actionData.action && !actionData.fallback && 0 === actionData.offset.x && 0 === actionData.offset.y;\r\n                if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled() || panIsEmpty) {\r\n                    return\r\n                }(!isTouch || !zoomAndPan.actionData.isNative) && preventDefaults(e);\r\n                if (\"zoom\" === actionData.action) {\r\n                    var zoomAxes = function(axes, criteria, coordField, startCoords, curCoords, onlyAxisToNotify) {\r\n                        axes = sortAxes(axes, onlyAxisToNotify);\r\n                        var curCoord = curCoords[coordField];\r\n                        var startCoord = startCoords[coordField];\r\n                        var zoomStarted = false;\r\n                        var getParameters = function(silent) {\r\n                            return {\r\n                                start: !!silent,\r\n                                end: !!silent\r\n                            }\r\n                        };\r\n                        if (criteria && _abs(curCoord - startCoord) > MIN_DRAG_DELTA) {\r\n                            axes.some(function(axis) {\r\n                                var tr = axis.getTranslator();\r\n                                if (tr.getBusinessRange().isEmpty()) {\r\n                                    return\r\n                                }\r\n                                var getRange = function() {\r\n                                    return [tr.from(startCoord), tr.from(curCoord)]\r\n                                };\r\n                                var _axisZoom = axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionData.action, tr.getMinScale(true), e),\r\n                                    stopInteraction = _axisZoom.stopInteraction,\r\n                                    result = _axisZoom.result;\r\n                                zoomStarted = !stopInteraction;\r\n                                return onlyAxisToNotify && result.isPrevented\r\n                            })\r\n                        }\r\n                        return zoomStarted\r\n                    };\r\n                    var curCoords = getPointerCoord(actionData.curAxisRect, e);\r\n                    var argumentAxesZoomed = zoomAxes(chart._argumentAxes, options.argumentAxis.zoom, rotated ? \"y\" : \"x\", actionData.startCoords, curCoords, chart.getArgumentAxis());\r\n                    var valueAxesZoomed = zoomAxes(actionData.valueAxes, options.valueAxis.zoom, rotated ? \"x\" : \"y\", actionData.startCoords, curCoords);\r\n                    if (valueAxesZoomed || argumentAxesZoomed) {\r\n                        chart._requestChange([\"VISUAL_RANGE\"])\r\n                    }\r\n                    actionData.rect.dispose()\r\n                } else {\r\n                    if (\"pan\" === actionData.action) {\r\n                        finishAxesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag)\r\n                    }\r\n                }\r\n                zoomAndPan.actionData = null\r\n            },\r\n            pinchStartHandler: function(e) {\r\n                var actionData = prepareActionData(calcCenterForPinch(e), \"zoom\");\r\n                actionData.isNative = !zoomAndPan.panningVisualRangeEnabled();\r\n                if (actionData.cancel) {\r\n                    cancelEvent(e);\r\n                    return\r\n                }\r\n                zoomAndPan.actionData = actionData;\r\n                startAxesViewportChanging(zoomAndPan, \"zoom\", e)\r\n            },\r\n            pinchHandler: function(e) {\r\n                if (!zoomAndPan.actionData) {\r\n                    return\r\n                }\r\n                var viewportChanged = axesViewportChanging(zoomAndPan, \"zoom\", e, function(e, actionData, coordField, scale) {\r\n                    return calcCenterForPinch(e)[coordField] - actionData.center[coordField] + (actionData.center[coordField] - actionData.center[coordField] * scale)\r\n                }, calcCenterForPinch);\r\n                zoomAndPan.defineTouchBehavior(!viewportChanged, e);\r\n                !viewportChanged && (zoomAndPan.actionData = null)\r\n            },\r\n            pinchEndHandler: function(e) {\r\n                if (!zoomAndPan.actionData) {\r\n                    return\r\n                }\r\n                finishAxesViewportChanging(zoomAndPan, \"zoom\", e, function(e, actionData, coordField, scale) {\r\n                    return actionData.center[coordField] - actionData.startCenter[coordField] + (actionData.startCenter[coordField] - actionData.startCenter[coordField] * scale)\r\n                });\r\n                zoomAndPan.actionData = null\r\n            },\r\n            cleanup: function() {\r\n                renderer.root.off(EVENTS_NS);\r\n                zoomAndPan.actionData && zoomAndPan.actionData.rect && zoomAndPan.actionData.rect.dispose();\r\n                zoomAndPan.actionData = null;\r\n                renderer.root.css({\r\n                    \"touch-action\": \"\",\r\n                    \"-ms-touch-action\": \"\"\r\n                })\r\n            },\r\n            setup: function(options) {\r\n                zoomAndPan.cleanup();\r\n                if (!options.argumentAxis.pan) {\r\n                    renderer.root.on(SCROLL_BAR_START_EVENT_NAME, cancelEvent)\r\n                }\r\n                if (options.argumentAxis.none && options.valueAxis.none) {\r\n                    return\r\n                }\r\n                zoomAndPan.options = options;\r\n                var rotated = chart.option(\"rotated\");\r\n                if ((options.argumentAxis.zoom || options.valueAxis.zoom) && options.allowMouseWheel) {\r\n                    renderer.root.on(_wheel.name + EVENTS_NS, function(e) {\r\n                        function zoomAxes(axes, coord, delta, onlyAxisToNotify) {\r\n                            axes = sortAxes(axes, onlyAxisToNotify);\r\n                            var zoomStarted = false;\r\n                            var getParameters = function(silent) {\r\n                                return {\r\n                                    start: !!silent,\r\n                                    end: !!silent\r\n                                }\r\n                            };\r\n                            axes.some(function(axis) {\r\n                                var translator = axis.getTranslator();\r\n                                if (translator.getBusinessRange().isEmpty()) {\r\n                                    return\r\n                                }\r\n                                var scale = translator.getMinScale(delta > 0);\r\n                                var getRange = function() {\r\n                                    var zoom = translator.zoom(-(coord - coord * scale), scale, axis.getZoomBounds());\r\n                                    return {\r\n                                        startValue: zoom.min,\r\n                                        endValue: zoom.max\r\n                                    }\r\n                                };\r\n                                var _axisZoom2 = axisZoom(axis, onlyAxisToNotify, getRange, getParameters, \"zoom\", scale, e),\r\n                                    stopInteraction = _axisZoom2.stopInteraction,\r\n                                    result = _axisZoom2.result;\r\n                                zoomStarted = !stopInteraction;\r\n                                return onlyAxisToNotify && result.isPrevented\r\n                            });\r\n                            return zoomStarted\r\n                        }\r\n                        var coords = calcCenterForDrag(e);\r\n                        var axesZoomed = false;\r\n                        var targetAxes;\r\n                        if (options.valueAxis.zoom) {\r\n                            targetAxes = chart._valueAxes.filter(function(axis) {\r\n                                return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n                            });\r\n                            if (0 === targetAxes.length) {\r\n                                var targetCanvas = chart._valueAxes.reduce(function(r, axis) {\r\n                                    if (!r && axis.coordsIn(coords.x, coords.y)) {\r\n                                        r = axis.getCanvas()\r\n                                    }\r\n                                    return r\r\n                                }, null);\r\n                                if (targetCanvas) {\r\n                                    targetAxes = chart._valueAxes.filter(function(axis) {\r\n                                        return checkCoords(canvasToRect(axis.getCanvas()), {\r\n                                            x: targetCanvas.left,\r\n                                            y: targetCanvas.top\r\n                                        })\r\n                                    })\r\n                                }\r\n                            }\r\n                            axesZoomed |= zoomAxes(targetAxes, rotated ? coords.x : coords.y, e.delta)\r\n                        }\r\n                        if (options.argumentAxis.zoom) {\r\n                            var canZoom = chart._argumentAxes.some(function(axis) {\r\n                                if (checkCoords(canvasToRect(axis.getCanvas()), coords) || axis.coordsIn(coords.x, coords.y)) {\r\n                                    return true\r\n                                }\r\n                                return false\r\n                            });\r\n                            axesZoomed |= canZoom && zoomAxes(chart._argumentAxes, rotated ? coords.y : coords.x, e.delta, chart.getArgumentAxis())\r\n                        }\r\n                        if (axesZoomed) {\r\n                            chart._requestChange([\"VISUAL_RANGE\"]);\r\n                            zoomAndPan.panningVisualRangeEnabled(targetAxes) && preventDefaults(e)\r\n                        }\r\n                    })\r\n                }\r\n                if (options.allowTouchGestures) {\r\n                    if (options.argumentAxis.zoom || options.valueAxis.zoom) {\r\n                        renderer.root.on(PINCH_START_EVENT_NAME, {\r\n                            passive: false\r\n                        }, zoomAndPan.pinchStartHandler).on(PINCH_EVENT_NAME, {\r\n                            passive: false\r\n                        }, zoomAndPan.pinchHandler).on(PINCH_END_EVENT_NAME, zoomAndPan.pinchEndHandler)\r\n                    }\r\n                }\r\n                renderer.root.on(DRAG_START_EVENT_NAME, {\r\n                    immediate: true,\r\n                    passive: false\r\n                }, zoomAndPan.dragStartHandler).on(DRAG_EVENT_NAME, {\r\n                    immediate: true,\r\n                    passive: false\r\n                }, zoomAndPan.dragHandler).on(DRAG_END_EVENT_NAME, zoomAndPan.dragEndHandler);\r\n                if (options.argumentAxis.pan) {\r\n                    renderer.root.on(SCROLL_BAR_START_EVENT_NAME, function(e) {\r\n                        zoomAndPan.actionData = {\r\n                            valueAxes: [],\r\n                            offset: {\r\n                                x: 0,\r\n                                y: 0\r\n                            },\r\n                            center: {\r\n                                x: 0,\r\n                                y: 0\r\n                            }\r\n                        };\r\n                        preventDefaults(e);\r\n                        startAxesViewportChanging(zoomAndPan, \"pan\", e)\r\n                    }).on(SCROLL_BAR_MOVE_EVENT_NAME, function(e) {\r\n                        preventDefaults(e);\r\n                        axesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag, function(e) {\r\n                            return e.offset\r\n                        })\r\n                    }).on(SCROLL_BAR_END_EVENT_NAME, function(e) {\r\n                        preventDefaults(e);\r\n                        finishAxesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag);\r\n                        zoomAndPan.actionData = null\r\n                    })\r\n                }\r\n            },\r\n            defineTouchBehavior: function(isDefault, e) {\r\n                zoomAndPan.actionData && (zoomAndPan.actionData.isNative = isDefault);\r\n                if (!isDefault) {\r\n                    preventDefaults(e)\r\n                }\r\n            },\r\n            panningVisualRangeEnabled: function(targetAxes) {\r\n                if (null !== targetAxes && void 0 !== targetAxes && targetAxes.length) {\r\n                    return targetAxes.some(function(axis) {\r\n                        return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n                    })\r\n                }\r\n                var enablePanByValueAxis = chart._valueAxes.some(function(axis) {\r\n                    return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n                });\r\n                var enablePanByArgumentAxis = chart._argumentAxes.some(function(axis) {\r\n                    return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n                });\r\n                return enablePanByValueAxis || enablePanByArgumentAxis\r\n            }\r\n        };\r\n        this._zoomAndPan = zoomAndPan\r\n    },\r\n    members: {\r\n        _setupZoomAndPan: function() {\r\n            this._zoomAndPan.setup(this._themeManager.getOptions(\"zoomAndPan\"))\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._zoomAndPan.cleanup()\r\n    },\r\n    customize: function(constructor) {\r\n        constructor.addChange({\r\n            code: \"ZOOM_AND_PAN\",\r\n            handler: function() {\r\n                this._setupZoomAndPan()\r\n            },\r\n            isThemeDependent: true,\r\n            isOptionChange: true,\r\n            option: \"zoomAndPan\"\r\n        })\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/shaders/ui.scheduler.current_time_shader.horizontal.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _uiScheduler = _interopRequireDefault(require(\"../shaders/ui.scheduler.current_time_shader\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar HorizontalCurrentTimeShader = function(_CurrentTimeShader) {\r\n    _inherits(HorizontalCurrentTimeShader, _CurrentTimeShader);\r\n    var _super = _createSuper(HorizontalCurrentTimeShader);\r\n\r\n    function HorizontalCurrentTimeShader() {\r\n        _classCallCheck(this, HorizontalCurrentTimeShader);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(HorizontalCurrentTimeShader, [{\r\n        key: \"renderShader\",\r\n        value: function() {\r\n            var groupCount = this._workSpace._isHorizontalGroupedWorkSpace() ? this._workSpace._getGroupCount() : 1;\r\n            for (var i = 0; i < groupCount; i++) {\r\n                var isFirstShader = 0 === i;\r\n                var $shader = isFirstShader ? this._$shader : this.createShader();\r\n                this.applyShaderMargin($shader);\r\n                if (this._workSpace.isGroupedByDate()) {\r\n                    this._customizeGroupedByDateShader($shader, i)\r\n                } else {\r\n                    this._customizeShader($shader, i)\r\n                }!isFirstShader && this._shader.push($shader)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_customizeShader\",\r\n        value: function($shader, groupIndex) {\r\n            var shaderWidth = this._workSpace.getIndicationWidth();\r\n            this._applyShaderWidth($shader, shaderWidth);\r\n            if (groupIndex >= 1) {\r\n                var workSpace = this._workSpace;\r\n                var indicationWidth = workSpace._getCellCount() * workSpace.getCellWidth();\r\n                $shader.css(\"left\", indicationWidth)\r\n            } else {\r\n                $shader.css(\"left\", 0)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_applyShaderWidth\",\r\n        value: function($shader, width) {\r\n            var maxWidth = (0, _position.getBoundingRect)(this._$container.get(0)).width;\r\n            if (width > maxWidth) {\r\n                width = maxWidth\r\n            }\r\n            if (width > 0) {\r\n                $shader.width(width)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_customizeGroupedByDateShader\",\r\n        value: function($shader, groupIndex) {\r\n            var cellCount = this._workSpace.getIndicationCellCount();\r\n            var integerPart = Math.floor(cellCount);\r\n            var fractionPart = cellCount - integerPart;\r\n            var isFirstShaderPart = 0 === groupIndex;\r\n            var workSpace = this._workSpace;\r\n            var shaderWidth = isFirstShaderPart ? workSpace.getIndicationWidth() : fractionPart * workSpace.getCellWidth();\r\n            var shaderLeft;\r\n            this._applyShaderWidth($shader, shaderWidth);\r\n            if (isFirstShaderPart) {\r\n                shaderLeft = workSpace._getCellCount() * workSpace.getCellWidth() * groupIndex\r\n            } else {\r\n                shaderLeft = workSpace.getCellWidth() * integerPart * workSpace._getGroupCount() + groupIndex * workSpace.getCellWidth()\r\n            }\r\n            $shader.css(\"left\", shaderLeft)\r\n        }\r\n    }]);\r\n    return HorizontalCurrentTimeShader\r\n}(_uiScheduler.default);\r\nvar _default = HorizontalCurrentTimeShader;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.rows.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.RowsView = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.rows\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar RowsView = _uiGrid_core.default.views.rowsView;\r\nexports.RowsView = RowsView;\r\n_uiData_grid.default.registerModule(\"rows\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"refreshPaths\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _renderer.refreshPaths\r\n    }\r\n});\r\nexports.prepareSegmentRectPoints = void 0;\r\nvar _renderer = require(\"./core/renderers/renderer\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar prepareSegmentRectPoints = function(left, top, width, height, borderOptions) {\r\n    var maxSW = ~~((width < height ? width : height) / 2);\r\n    var sw = borderOptions.width || 0;\r\n    var newSW = sw < maxSW ? sw : maxSW;\r\n    left += newSW / 2;\r\n    top += newSW / 2;\r\n    width -= newSW;\r\n    height -= newSW;\r\n    var right = left + width;\r\n    var bottom = top + height;\r\n    var points = [];\r\n    var segments = [];\r\n    var segmentSequence;\r\n    var visiblyOpt = 0;\r\n    var prevSegmentVisibility = 0;\r\n    var allSegment = {\r\n        top: [\r\n            [left, top],\r\n            [right, top]\r\n        ],\r\n        right: [\r\n            [right, top],\r\n            [right, bottom]\r\n        ],\r\n        bottom: [\r\n            [right, bottom],\r\n            [left, bottom]\r\n        ],\r\n        left: [\r\n            [left, bottom],\r\n            [left, top]\r\n        ]\r\n    };\r\n    (0, _iterator.each)(allSegment, function(seg) {\r\n        var visibility = !!borderOptions[seg];\r\n        visiblyOpt = 2 * visiblyOpt + ~~visibility\r\n    });\r\n    switch (visiblyOpt) {\r\n        case 13:\r\n        case 9:\r\n            segmentSequence = [\"left\", \"top\", \"right\", \"bottom\"];\r\n            break;\r\n        case 11:\r\n            segmentSequence = [\"bottom\", \"left\", \"top\", \"right\"];\r\n            break;\r\n        default:\r\n            segmentSequence = [\"top\", \"right\", \"bottom\", \"left\"]\r\n    }(0, _iterator.each)(segmentSequence, function(_, seg) {\r\n        var segmentVisibility = !!borderOptions[seg];\r\n        if (!prevSegmentVisibility && segments.length) {\r\n            points.push(segments);\r\n            segments = []\r\n        }\r\n        if (segmentVisibility) {\r\n            (0, _iterator.each)(allSegment[seg].slice(prevSegmentVisibility), function(_, segment) {\r\n                segments = segments.concat(segment)\r\n            })\r\n        }\r\n        prevSegmentVisibility = ~~segmentVisibility\r\n    });\r\n    segments.length && points.push(segments);\r\n    1 === points.length && (points = points[0]);\r\n    return {\r\n        points: points,\r\n        pathType: 15 === visiblyOpt ? \"area\" : \"line\"\r\n    }\r\n};\r\nexports.prepareSegmentRectPoints = prepareSegmentRectPoints;\r\n","/**\r\n * DevExtreme (ui/radio_group/radio_button.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../widget/utils.ink_ripple\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar RADIO_BUTTON_CLASS = \"dx-radiobutton\";\r\nvar RADIO_BUTTON_ICON_CLASS = \"dx-radiobutton-icon\";\r\nvar RADIO_BUTTON_ICON_DOT_CLASS = \"dx-radiobutton-icon-dot\";\r\nvar RADIO_BUTTON_CHECKED_CLASS = \"dx-radiobutton-checked\";\r\nvar RADIO_BUTTON_ICON_CHECKED_CLASS = \"dx-radiobutton-icon-checked\";\r\nvar RadioButton = _editor.default.inherit({\r\n    _supportedKeys: function() {\r\n        var click = function(e) {\r\n            e.preventDefault();\r\n            this._clickAction({\r\n                event: e\r\n            })\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            space: click\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: true,\r\n            activeStateEnabled: true,\r\n            value: false,\r\n            useInkRipple: false\r\n        })\r\n    },\r\n    _canValueBeChangedByClick: function() {\r\n        return true\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(RADIO_BUTTON_CLASS)\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._renderIcon();\r\n        this.option(\"useInkRipple\") && this._renderInkRipple();\r\n        this._renderCheckedState(this.option(\"value\"));\r\n        this._renderClick();\r\n        this.setAria(\"role\", \"radio\")\r\n    },\r\n    _renderInkRipple: function() {\r\n        this._inkRipple = (0, _utils.render)({\r\n            waveSizeCoefficient: 3.3,\r\n            useHoldAnimation: false,\r\n            wavesNumber: 2,\r\n            isCentered: true\r\n        })\r\n    },\r\n    _renderInkWave: function(element, dxEvent, doRender, waveIndex) {\r\n        if (!this._inkRipple) {\r\n            return\r\n        }\r\n        var config = {\r\n            element: element,\r\n            event: dxEvent,\r\n            wave: waveIndex\r\n        };\r\n        if (doRender) {\r\n            this._inkRipple.showWave(config)\r\n        } else {\r\n            this._inkRipple.hideWave(config)\r\n        }\r\n    },\r\n    _updateFocusState: function(e, value) {\r\n        this.callBase.apply(this, arguments);\r\n        this._renderInkWave(this._$icon, e, value, 0)\r\n    },\r\n    _toggleActiveState: function($element, value, e) {\r\n        this.callBase.apply(this, arguments);\r\n        this._renderInkWave(this._$icon, e, value, 1)\r\n    },\r\n    _renderIcon: function() {\r\n        this._$icon = (0, _renderer.default)(\"<div>\").addClass(RADIO_BUTTON_ICON_CLASS);\r\n        (0, _renderer.default)(\"<div>\").addClass(RADIO_BUTTON_ICON_DOT_CLASS).appendTo(this._$icon);\r\n        this.$element().append(this._$icon)\r\n    },\r\n    _renderCheckedState: function(checked) {\r\n        this.$element().toggleClass(RADIO_BUTTON_CHECKED_CLASS, checked).find(\".\" + RADIO_BUTTON_ICON_CLASS).toggleClass(RADIO_BUTTON_ICON_CHECKED_CLASS, checked);\r\n        this.setAria(\"checked\", checked)\r\n    },\r\n    _renderClick: function() {\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        this._clickAction = this._createAction(function(args) {\r\n            this._clickHandler(args.event)\r\n        }.bind(this));\r\n        _events_engine.default.off(this.$element(), eventName);\r\n        _events_engine.default.on(this.$element(), eventName, function(e) {\r\n            this._clickAction({\r\n                event: e\r\n            })\r\n        }.bind(this))\r\n    },\r\n    _clickHandler: function(e) {\r\n        this._saveValueChangeEvent(e);\r\n        this.option(\"value\", true)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"useInkRipple\":\r\n                this._invalidate();\r\n                break;\r\n            case \"value\":\r\n                this._renderCheckedState(args.value);\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clean: function() {\r\n        delete this._inkRipple;\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxRadioButton\", RadioButton);\r\nvar _default = RadioButton;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.virtual_scrolling.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _index = require(\"../../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar ROW_HEIGHT = 50;\r\nvar MIN_SCROLL_OFFSET = 10;\r\nvar VIRTUAL_APPOINTMENTS_RENDER_TIMEOUT = 15;\r\nvar DOCUMENT_SCROLL_EVENT_NAMESPACE = (0, _index.addNamespace)(\"scroll\", \"dxSchedulerVirtualScrolling\");\r\nvar VirtualScrollingDispatcher = function() {\r\n    function VirtualScrollingDispatcher(workspace) {\r\n        _classCallCheck(this, VirtualScrollingDispatcher);\r\n        this._workspace = workspace;\r\n        this._virtualScrolling = null;\r\n        this._rowHeight = ROW_HEIGHT;\r\n        this._createVirtualScrolling();\r\n        this._attachScrollableEvents()\r\n    }\r\n    _createClass(VirtualScrollingDispatcher, [{\r\n        key: \"getRenderTimeout\",\r\n        value: function() {\r\n            return VIRTUAL_APPOINTMENTS_RENDER_TIMEOUT\r\n        }\r\n    }, {\r\n        key: \"getState\",\r\n        value: function() {\r\n            return this.virtualScrolling.getState()\r\n        }\r\n    }, {\r\n        key: \"calculateCoordinatesByDataAndPosition\",\r\n        value: function(cellData, position, date) {\r\n            return this.virtualScrolling.calculateCoordinatesByDataAndPosition(cellData, position, date)\r\n        }\r\n    }, {\r\n        key: \"dispose\",\r\n        value: function() {\r\n            if (this._onScrollHandler) {\r\n                _events_engine.default.off(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createVirtualScrolling\",\r\n        value: function() {\r\n            this.virtualScrolling = new VirtualScrolling(this.workspace, this.viewportHeight, this.rowHeight)\r\n        }\r\n    }, {\r\n        key: \"_attachScrollableEvents\",\r\n        value: function() {\r\n            this.height ? this._attachScrollableScroll() : this._attachWindowScroll()\r\n        }\r\n    }, {\r\n        key: \"_attachScrollableScroll\",\r\n        value: function() {\r\n            var _this = this;\r\n            var scrollable = this.workspace.getScrollable();\r\n            var currentOnScroll = scrollable.option(\"onScroll\");\r\n            scrollable.option(\"onScroll\", function(e) {\r\n                null === currentOnScroll || void 0 === currentOnScroll ? void 0 : currentOnScroll.apply(scrollable, [e]);\r\n                _this._process(null === e || void 0 === e ? void 0 : e.scrollOffset)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_attachWindowScroll\",\r\n        value: function() {\r\n            var _this2 = this;\r\n            var window = (0, _window.getWindow)();\r\n            this._onScrollHandler = this.workspace._createAction(function() {\r\n                var scrollX = window.scrollX,\r\n                    scrollY = window.scrollY;\r\n                if (scrollX >= _this2.minScrollOffset || scrollY >= _this2.minScrollOffset) {\r\n                    _this2._process({\r\n                        left: scrollX,\r\n                        top: scrollY\r\n                    })\r\n                }\r\n            });\r\n            _events_engine.default.on(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler)\r\n        }\r\n    }, {\r\n        key: \"_process\",\r\n        value: function(scrollPosition) {\r\n            scrollPosition && this.virtualScrolling.updateState(scrollPosition) && this._updateRender()\r\n        }\r\n    }, {\r\n        key: \"updateDimensions\",\r\n        value: function() {\r\n            var cellHeight = this.workspace.getCellHeight(false);\r\n            if (cellHeight !== this.rowHeight) {\r\n                this.rowHeight = cellHeight;\r\n                this._createVirtualScrolling();\r\n                this._renderDateTable()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_updateRender\",\r\n        value: function() {\r\n            this._renderDateTable();\r\n            this._renderAppointments()\r\n        }\r\n    }, {\r\n        key: \"_renderDateTable\",\r\n        value: function() {\r\n            this.workspace.renderRWorkspace(false)\r\n        }\r\n    }, {\r\n        key: \"_renderAppointments\",\r\n        value: function() {\r\n            var workspace = this.workspace;\r\n            var renderTimeout = this.getRenderTimeout();\r\n            if (renderTimeout >= 0) {\r\n                clearTimeout(this._renderAppointmentTimeout);\r\n                this._renderAppointmentTimeout = setTimeout(function() {\r\n                    return workspace.invoke(\"renderAppointments\")\r\n                }, renderTimeout)\r\n            } else {\r\n                workspace.invoke(\"renderAppointments\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"workspace\",\r\n        get: function() {\r\n            return this._workspace\r\n        }\r\n    }, {\r\n        key: \"isVirtualScrolling\",\r\n        get: function() {\r\n            return this.workspace.isVirtualScrolling()\r\n        }\r\n    }, {\r\n        key: \"minScrollOffset\",\r\n        get: function() {\r\n            return MIN_SCROLL_OFFSET\r\n        }\r\n    }, {\r\n        key: \"virtualScrolling\",\r\n        get: function() {\r\n            return this._virtualScrolling\r\n        },\r\n        set: function(value) {\r\n            this._virtualScrolling = value\r\n        }\r\n    }, {\r\n        key: \"document\",\r\n        get: function() {\r\n            return _dom_adapter.default.getDocument()\r\n        }\r\n    }, {\r\n        key: \"height\",\r\n        get: function() {\r\n            return this.workspace.invoke(\"getOption\", \"height\")\r\n        }\r\n    }, {\r\n        key: \"rowHeight\",\r\n        get: function() {\r\n            return this._rowHeight\r\n        },\r\n        set: function(value) {\r\n            this._rowHeight = value\r\n        }\r\n    }, {\r\n        key: \"viewportHeight\",\r\n        get: function() {\r\n            return this.height ? this.workspace.$element().height() : (0, _window.getWindow)().innerHeight\r\n        }\r\n    }]);\r\n    return VirtualScrollingDispatcher\r\n}();\r\nexports.default = VirtualScrollingDispatcher;\r\nvar VirtualScrolling = function() {\r\n    function VirtualScrolling(workspace, viewportHeight, rowHeight) {\r\n        _classCallCheck(this, VirtualScrolling);\r\n        this._workspace = workspace;\r\n        this._viewportHeight = viewportHeight;\r\n        this._renderAppointmentTimeout = null;\r\n        this._rowHeight = rowHeight;\r\n        this._init()\r\n    }\r\n    _createClass(VirtualScrolling, [{\r\n        key: \"getWorkspace\",\r\n        value: function() {\r\n            return this._workspace\r\n        }\r\n    }, {\r\n        key: \"getState\",\r\n        value: function() {\r\n            return this._state\r\n        }\r\n    }, {\r\n        key: \"_getPageSize\",\r\n        value: function() {\r\n            return Math.ceil(this.viewportHeight / this.rowHeight)\r\n        }\r\n    }, {\r\n        key: \"_getOutlineCount\",\r\n        value: function() {\r\n            return Math.floor(this._getPageSize() / 2)\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            var scrollPosition = {\r\n                top: 0,\r\n                left: 0\r\n            };\r\n            this._state = {\r\n                pageSize: this._getPageSize(),\r\n                prevScrollPosition: scrollPosition,\r\n                startIndex: -1,\r\n                rowCount: 0,\r\n                topVirtualRowCount: 0,\r\n                bottomVirtualRowCount: 0,\r\n                topOutlineCount: 0,\r\n                bottomOutlineCount: 0,\r\n                topVirtualRowHeight: 0,\r\n                bottomVirtualRowHeight: 0,\r\n                topOutlineHeight: 0,\r\n                bottomOutlineHeight: 0\r\n            };\r\n            this.updateState(scrollPosition)\r\n        }\r\n    }, {\r\n        key: \"needUpdateState\",\r\n        value: function(scrollPosition) {\r\n            var state = this.getState();\r\n            var top = scrollPosition.top;\r\n            var currentTopPosition = state.prevScrollPosition.top;\r\n            var currentTopRowsCount = Math.floor(currentTopPosition / this.rowHeight);\r\n            var isFirstInitialization = state.startIndex < 0;\r\n            var topRowsCount = Math.floor(top / this.rowHeight);\r\n            var isStartIndexChanged = Math.abs(currentTopRowsCount - topRowsCount) > this._getOutlineCount();\r\n            return isFirstInitialization || isStartIndexChanged\r\n        }\r\n    }, {\r\n        key: \"updateState\",\r\n        value: function(scrollPosition) {\r\n            if (!this.needUpdateState(scrollPosition)) {\r\n                return false\r\n            }\r\n            var topRowsInfo = this._calcTopRowsInfo(scrollPosition);\r\n            var topRowsDelta = this._calcTopRowsDelta(topRowsInfo);\r\n            var _this$_calcBottomRows = this._calcBottomRowsInfo(topRowsDelta),\r\n                bottomOutlineCount = _this$_calcBottomRows.bottomOutlineCount,\r\n                bottomVirtualRowCount = _this$_calcBottomRows.bottomVirtualRowCount,\r\n                rowCountWithBottom = _this$_calcBottomRows.rowCountWithBottom;\r\n            var topVirtualRowCount = topRowsInfo.topVirtualRowCount,\r\n                topOutlineCount = topRowsInfo.topOutlineCount;\r\n            var rowCount = topOutlineCount + rowCountWithBottom + bottomOutlineCount;\r\n            var top = scrollPosition.top;\r\n            var topRowsCount = Math.floor(top / this.rowHeight);\r\n            var state = this.getState();\r\n            state.prevScrollPosition = scrollPosition;\r\n            state.startIndex = topRowsCount - topOutlineCount;\r\n            state.topVirtualRowCount = topVirtualRowCount;\r\n            state.topOutlineCount = topOutlineCount;\r\n            state.rowCount = rowCount;\r\n            state.bottomOutlineCount = bottomOutlineCount;\r\n            state.bottomVirtualRowCount = bottomVirtualRowCount;\r\n            this._updateStateCore();\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"calculateCoordinatesByDataAndPosition\",\r\n        value: function(cellData, position, date) {\r\n            var workSpace = this._workspace;\r\n            var rowIndex = position.rowIndex,\r\n                columnIndex = position.columnIndex;\r\n            var startDate = cellData.startDate,\r\n                endDate = cellData.endDate,\r\n                allDay = cellData.allDay;\r\n            var timeToScroll = date.getTime();\r\n            var cellStartTime = startDate.getTime();\r\n            var cellEndTime = endDate.getTime();\r\n            var scrollInCell = allDay ? 0 : (timeToScroll - cellStartTime) / (cellEndTime - cellStartTime);\r\n            var cellWidth = workSpace.getCellWidth();\r\n            var top = (rowIndex + scrollInCell) * this.rowHeight;\r\n            var left = cellWidth * columnIndex;\r\n            if (workSpace.option(\"rtlEnabled\")) {\r\n                left = workSpace.getScrollableOuterWidth() - left\r\n            }\r\n            return {\r\n                top: top,\r\n                left: left\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_calcTopRowsInfo\",\r\n        value: function(scrollPosition) {\r\n            var top = scrollPosition.top;\r\n            var topVirtualRowCount = Math.floor(top / this.rowHeight);\r\n            var topOutlineCount = Math.min(topVirtualRowCount, this._getOutlineCount());\r\n            topVirtualRowCount -= topOutlineCount;\r\n            return {\r\n                topVirtualRowCount: topVirtualRowCount,\r\n                topOutlineCount: topOutlineCount\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_calcTopRowsDelta\",\r\n        value: function(topRowsInfo) {\r\n            var topVirtualRowCount = topRowsInfo.topVirtualRowCount,\r\n                topOutlineCount = topRowsInfo.topOutlineCount;\r\n            var workspace = this.getWorkspace();\r\n            var groupCount = workspace._getGroupCount();\r\n            var isVerticalGrouping = workspace._isVerticalGroupedWorkSpace();\r\n            var totalRowCount = workspace._getTotalRowCount(groupCount, isVerticalGrouping);\r\n            return totalRowCount - topVirtualRowCount - topOutlineCount\r\n        }\r\n    }, {\r\n        key: \"_calcBottomRowsInfo\",\r\n        value: function(topRowsDelta) {\r\n            var _this$getState = this.getState(),\r\n                pageSize = _this$getState.pageSize;\r\n            var rowCountWithBottom = topRowsDelta >= pageSize ? pageSize : topRowsDelta;\r\n            var bottomVirtualRowCount = topRowsDelta - rowCountWithBottom;\r\n            var bottomOutlineCount = bottomVirtualRowCount > 0 ? Math.min(bottomVirtualRowCount, this._getOutlineCount()) : 0;\r\n            if (bottomVirtualRowCount > 0) {\r\n                bottomVirtualRowCount -= bottomOutlineCount\r\n            }\r\n            return {\r\n                bottomVirtualRowCount: bottomVirtualRowCount,\r\n                bottomOutlineCount: bottomOutlineCount,\r\n                rowCountWithBottom: rowCountWithBottom\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_updateStateCore\",\r\n        value: function() {\r\n            var state = this.getState();\r\n            var topVirtualRowCount = state.topVirtualRowCount;\r\n            var bottomVirtualRowCount = state.bottomVirtualRowCount;\r\n            var topOutlineCount = state.topOutlineCount;\r\n            var bottomOutlineCount = state.bottomOutlineCount;\r\n            var prevTopVirtualRowHeight = state.topVirtualRowHeight;\r\n            var prevBottomVirtualRowHeight = state.bottomVirtualRowHeight;\r\n            var prevTopOutlineHeight = state.topOutlineHeight;\r\n            var prevBottomOutlineHeight = state.bottomOutlineHeight;\r\n            var topVirtualRowHeight = this.rowHeight * topVirtualRowCount;\r\n            var bottomVirtualRowHeight = this.rowHeight * bottomVirtualRowCount;\r\n            var topOutlineHeight = this.rowHeight * topOutlineCount;\r\n            var bottomOutlineHeight = this.rowHeight * bottomOutlineCount;\r\n            var prevTopVirtualHeight = prevTopVirtualRowHeight + prevTopOutlineHeight;\r\n            var topVirtualHeight = topVirtualRowHeight + topOutlineHeight;\r\n            var prevBottomVirtualHeight = prevBottomVirtualRowHeight + prevBottomOutlineHeight;\r\n            var bottomVirtualHeight = bottomVirtualRowHeight + bottomOutlineHeight;\r\n            var isAppend = prevTopVirtualHeight < topVirtualHeight;\r\n            var isPrepend = prevBottomVirtualHeight < bottomVirtualHeight;\r\n            var needAddRows = isAppend || isPrepend;\r\n            if (needAddRows) {\r\n                state.topVirtualRowHeight = topVirtualRowHeight;\r\n                state.bottomVirtualRowHeight = bottomVirtualRowHeight\r\n            }\r\n        }\r\n    }, {\r\n        key: \"viewportHeight\",\r\n        get: function() {\r\n            return this._viewportHeight\r\n        }\r\n    }, {\r\n        key: \"rowHeight\",\r\n        get: function() {\r\n            return this._rowHeight\r\n        }\r\n    }]);\r\n    return VirtualScrolling\r\n}();\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.virtual_columns.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.virtual_columns\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"virtualColumns\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (core/utils/date_serialization.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _config = _interopRequireDefault(require(\"../config\"));\r\nvar _date = require(\"../../localization/ldml/date.formatter\");\r\nvar _default_date_names = _interopRequireDefault(require(\"../../localization/default_date_names\"));\r\nvar _type = require(\"./type\");\r\nvar _browser = _interopRequireDefault(require(\"./browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar NUMBER_SERIALIZATION_FORMAT = \"number\";\r\nvar DATE_SERIALIZATION_FORMAT = \"yyyy/MM/dd\";\r\nvar DATETIME_SERIALIZATION_FORMAT = \"yyyy/MM/dd HH:mm:ss\";\r\nvar ISO8601_PATTERN = /^(\\d{4,})(-)?(\\d{2})(-)?(\\d{2})(?:T(\\d{2})(:)?(\\d{2})?(:)?(\\d{2}(?:\\.(\\d{1,3})\\d*)?)?)?(Z|([+-])(\\d{2})(:)?(\\d{2})?)?$/;\r\nvar ISO8601_TIME_PATTERN = /^(\\d{2}):(\\d{2})(:(\\d{2}))?$/;\r\nvar ISO8601_PATTERN_PARTS = [\"\", \"yyyy\", \"\", \"MM\", \"\", \"dd\", \"THH\", \"\", \"mm\", \"\", \"ss\", \".SSS\"];\r\nvar DATE_SERIALIZATION_PATTERN = /^(\\d{4})\\/(\\d{2})\\/(\\d{2})$/;\r\nvar MILLISECOND_LENGHT = 3;\r\nvar isIE11 = _browser.default.msie && parseInt(_browser.default.version) <= 11;\r\nvar dateParser = function(text, skipISO8601Parsing) {\r\n    var result;\r\n    if ((0, _type.isString)(text) && !skipISO8601Parsing) {\r\n        result = parseISO8601String(text)\r\n    }\r\n    return result || parseDate(text)\r\n};\r\n\r\nfunction getTimePart(part) {\r\n    return +part || 0\r\n}\r\n\r\nfunction parseDate(text) {\r\n    var isDefaultSerializationFormat = getDateSerializationFormat(text) === DATE_SERIALIZATION_FORMAT;\r\n    var parsedValue = !(0, _type.isDate)(text) && Date.parse(text);\r\n    if ((!parsedValue || isIE11) && isDefaultSerializationFormat) {\r\n        var parts = text.match(DATE_SERIALIZATION_PATTERN);\r\n        if (parts) {\r\n            var newDate = new Date(getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[3]));\r\n            newDate.setFullYear(getTimePart(parts[1]));\r\n            newDate.setMonth(getTimePart(parts[2]) - 1);\r\n            newDate.setDate(getTimePart(parts[3]));\r\n            return newDate\r\n        }\r\n    }\r\n    return (0, _type.isNumeric)(parsedValue) ? new Date(parsedValue) : text\r\n}\r\n\r\nfunction parseISO8601String(text) {\r\n    var parts = text.match(ISO8601_PATTERN);\r\n    if (!parts) {\r\n        parts = text.match(ISO8601_TIME_PATTERN);\r\n        if (parts) {\r\n            return new Date(0, 0, 0, getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[4]))\r\n        }\r\n        return\r\n    }\r\n    var year = parts[1];\r\n    var month = --parts[3];\r\n    var day = parts[5];\r\n    var timeZoneHour = 0;\r\n    var timeZoneMinute = 0;\r\n    timeZoneHour = getTimePart(parts[14]);\r\n    timeZoneMinute = getTimePart(parts[16]);\r\n    if (\"-\" === parts[13]) {\r\n        timeZoneHour = -timeZoneHour;\r\n        timeZoneMinute = -timeZoneMinute\r\n    }\r\n    var hour = getTimePart(parts[6]) - timeZoneHour;\r\n    var minute = getTimePart(parts[8]) - timeZoneMinute;\r\n    var second = getTimePart(parts[10]);\r\n    var parseMilliseconds = function(part) {\r\n        part = part || \"\";\r\n        return getTimePart(part) * Math.pow(10, MILLISECOND_LENGHT - part.length)\r\n    };\r\n    var millisecond = parseMilliseconds(parts[11]);\r\n    if (parts[12]) {\r\n        return new Date(Date.UTC(year, month, day, hour, minute, second, millisecond))\r\n    }\r\n    return new Date(year, month, day, hour, minute, second, millisecond)\r\n}\r\nvar getIso8601Format = function(text, useUtc) {\r\n    var parts = text.match(ISO8601_PATTERN);\r\n    var result = \"\";\r\n    if (!parts) {\r\n        parts = text.match(ISO8601_TIME_PATTERN);\r\n        if (parts) {\r\n            return parts[3] ? \"HH:mm:ss\" : \"HH:mm\"\r\n        }\r\n        return\r\n    }\r\n    for (var i = 1; i < ISO8601_PATTERN_PARTS.length; i++) {\r\n        if (parts[i]) {\r\n            result += ISO8601_PATTERN_PARTS[i] || parts[i]\r\n        }\r\n    }\r\n    if (\"Z\" === parts[12]) {\r\n        result += \"'Z'\"\r\n    }\r\n    if (parts[14]) {\r\n        if (parts[15]) {\r\n            result += \"xxx\"\r\n        } else {\r\n            if (parts[16]) {\r\n                result += \"xx\"\r\n            } else {\r\n                result += \"x\"\r\n            }\r\n        }\r\n    }\r\n    return result\r\n};\r\nvar deserializeDate = function(value) {\r\n    if (\"number\" === typeof value) {\r\n        return new Date(value)\r\n    }\r\n    return dateParser(value, !(0, _config.default)().forceIsoDateParsing)\r\n};\r\nvar serializeDate = function(value, serializationFormat) {\r\n    if (!serializationFormat) {\r\n        return value\r\n    }\r\n    if (!(0, _type.isDate)(value)) {\r\n        return null\r\n    }\r\n    if (serializationFormat === NUMBER_SERIALIZATION_FORMAT) {\r\n        return value && value.valueOf ? value.valueOf() : null\r\n    }\r\n    return (0, _date.getFormatter)(serializationFormat, _default_date_names.default)(value)\r\n};\r\nvar getDateSerializationFormat = function(value) {\r\n    if (\"number\" === typeof value) {\r\n        return NUMBER_SERIALIZATION_FORMAT\r\n    } else {\r\n        if ((0, _type.isString)(value)) {\r\n            var format;\r\n            if ((0, _config.default)().forceIsoDateParsing) {\r\n                format = getIso8601Format(value)\r\n            }\r\n            if (format) {\r\n                return format\r\n            } else {\r\n                if (value.indexOf(\":\") >= 0) {\r\n                    return DATETIME_SERIALIZATION_FORMAT\r\n                } else {\r\n                    return DATE_SERIALIZATION_FORMAT\r\n                }\r\n            }\r\n        } else {\r\n            if (value) {\r\n                return null\r\n            }\r\n        }\r\n    }\r\n};\r\nvar _default = {\r\n    dateParser: dateParser,\r\n    deserializeDate: deserializeDate,\r\n    serializeDate: serializeDate,\r\n    getDateSerializationFormat: getDateSerializationFormat\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/http_request.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _window = require(\"./utils/window\");\r\nvar _dependency_injector = _interopRequireDefault(require(\"./utils/dependency_injector\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar nativeXMLHttpRequest = {\r\n    getXhr: function() {\r\n        return new window.XMLHttpRequest\r\n    }\r\n};\r\nvar _default = (0, _dependency_injector.default)(nativeXMLHttpRequest);\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel_format_converter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _string = require(\"../core/utils/string\");\r\nvar _number = _interopRequireDefault(require(\"../localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"../localization/date\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _date2 = require(\"../localization/ldml/date.format\");\r\nvar _language_codes = require(\"../localization/language_codes\");\r\nrequire(\"../localization/currency\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ARABIC_ZERO_CODE = 1632;\r\nvar DEFINED_NUMBER_FORMTATS = {\r\n    thousands: \"#,##0{0},&quot;K&quot;\",\r\n    millions: \"#,##0{0},,&quot;M&quot;\",\r\n    billions: \"#,##0{0},,,&quot;B&quot;\",\r\n    trillions: \"#,##0{0},,,,&quot;T&quot;\",\r\n    percent: \"0{0}%\",\r\n    decimal: \"#{0}\",\r\n    fixedpoint: \"#,##0{0}\",\r\n    exponential: \"0{0}E+00\",\r\n    currency: \" \"\r\n};\r\nvar PERIOD_REGEXP = /a+/g;\r\nvar DAY_REGEXP = /E/g;\r\nvar DO_REGEXP = /dE+/g;\r\nvar STANDALONE_MONTH_REGEXP = /L/g;\r\nvar HOUR_REGEXP = /h/g;\r\nvar SLASH_REGEXP = /\\//g;\r\nvar SQUARE_OPEN_BRACKET_REGEXP = /\\[/g;\r\nvar SQUARE_CLOSE_BRACKET_REGEXP = /]/g;\r\nvar ANY_REGEXP = /./g;\r\nvar excelFormatConverter = {\r\n    _applyPrecision: function(format, precision) {\r\n        var result;\r\n        var i;\r\n        if (precision > 0) {\r\n            result = \"decimal\" !== format ? \".\" : \"\";\r\n            for (i = 0; i < precision; i++) {\r\n                result += \"0\"\r\n            }\r\n            return result\r\n        }\r\n        return \"\"\r\n    },\r\n    _hasArabicDigits: function(text) {\r\n        var code;\r\n        for (var i = 0; i < text.length; i++) {\r\n            code = text.charCodeAt(i);\r\n            if (code >= ARABIC_ZERO_CODE && code < ARABIC_ZERO_CODE + 10) {\r\n                return true\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _convertDateFormatToOpenXml: function(format) {\r\n        return format.replace(SLASH_REGEXP, \"\\\\/\").split(\"'\").map(function(datePart, index) {\r\n            if (index % 2 === 0) {\r\n                return datePart.replace(PERIOD_REGEXP, \"AM/PM\").replace(DO_REGEXP, \"d\").replace(DAY_REGEXP, \"d\").replace(STANDALONE_MONTH_REGEXP, \"M\").replace(HOUR_REGEXP, \"H\").replace(SQUARE_OPEN_BRACKET_REGEXP, \"\\\\[\").replace(SQUARE_CLOSE_BRACKET_REGEXP, \"\\\\]\")\r\n            }\r\n            if (datePart) {\r\n                return datePart.replace(ANY_REGEXP, \"\\\\$&\")\r\n            }\r\n            return \"'\"\r\n        }).join(\"\")\r\n    },\r\n    _convertDateFormat: function(format) {\r\n        var formattedValue = (_date.default.format(new Date(2009, 8, 8, 6, 5, 4), format) || \"\").toString();\r\n        var result = (0, _date2.getFormat)(function(value) {\r\n            return _date.default.format(value, format)\r\n        });\r\n        if (result) {\r\n            result = this._convertDateFormatToOpenXml(result);\r\n            result = this._getLanguageInfo(formattedValue) + result\r\n        }\r\n        return result\r\n    },\r\n    _getLanguageInfo: function(defaultPattern) {\r\n        var languageID = (0, _language_codes.getLanguageId)();\r\n        var languageIDStr = languageID ? languageID.toString(16) : \"\";\r\n        var languageInfo = \"\";\r\n        if (this._hasArabicDigits(defaultPattern)) {\r\n            while (languageIDStr.length < 3) {\r\n                languageIDStr = \"0\" + languageIDStr\r\n            }\r\n            languageInfo = \"[$-2010\" + languageIDStr + \"]\"\r\n        } else {\r\n            if (languageIDStr) {\r\n                languageInfo = \"[$-\" + languageIDStr + \"]\"\r\n            }\r\n        }\r\n        return languageInfo\r\n    },\r\n    _convertNumberFormat: function(format, precision, currency) {\r\n        var result;\r\n        var excelFormat;\r\n        if (\"currency\" === format) {\r\n            excelFormat = _number.default.getOpenXmlCurrencyFormat(currency)\r\n        } else {\r\n            excelFormat = DEFINED_NUMBER_FORMTATS[format.toLowerCase()]\r\n        }\r\n        if (excelFormat) {\r\n            result = (0, _string.format)(excelFormat, this._applyPrecision(format, precision))\r\n        }\r\n        return result\r\n    },\r\n    convertFormat: function(format, precision, type, currency) {\r\n        if ((0, _type.isDefined)(format)) {\r\n            if (\"date\" === type) {\r\n                return excelFormatConverter._convertDateFormat(format)\r\n            } else {\r\n                if ((0, _type.isString)(format) && DEFINED_NUMBER_FORMTATS[format.toLowerCase()]) {\r\n                    return excelFormatConverter._convertNumberFormat(format, precision, currency)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nvar _default = excelFormatConverter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_sync.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_sync\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"filterSync\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (core/utils/object.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.deepExtendArraySafe = exports.orderEach = exports.clone = void 0;\r\nvar _type = require(\"./type\");\r\nvar _variable_wrapper = _interopRequireDefault(require(\"./variable_wrapper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar clone = function() {\r\n    function Clone() {}\r\n    return function(obj) {\r\n        Clone.prototype = obj;\r\n        return new Clone\r\n    }\r\n}();\r\nexports.clone = clone;\r\nvar orderEach = function(map, func) {\r\n    var keys = [];\r\n    var key;\r\n    var i;\r\n    for (key in map) {\r\n        if (Object.prototype.hasOwnProperty.call(map, key)) {\r\n            keys.push(key)\r\n        }\r\n    }\r\n    keys.sort(function(x, y) {\r\n        var isNumberX = (0, _type.isNumeric)(x);\r\n        var isNumberY = (0, _type.isNumeric)(y);\r\n        if (isNumberX && isNumberY) {\r\n            return x - y\r\n        }\r\n        if (isNumberX && !isNumberY) {\r\n            return -1\r\n        }\r\n        if (!isNumberX && isNumberY) {\r\n            return 1\r\n        }\r\n        if (x < y) {\r\n            return -1\r\n        }\r\n        if (x > y) {\r\n            return 1\r\n        }\r\n        return 0\r\n    });\r\n    for (i = 0; i < keys.length; i++) {\r\n        key = keys[i];\r\n        func(key, map[key])\r\n    }\r\n};\r\nexports.orderEach = orderEach;\r\nvar assignValueToProperty = function(target, property, value, assignByReference) {\r\n    if (!assignByReference && _variable_wrapper.default.isWrapped(target[property])) {\r\n        _variable_wrapper.default.assign(target[property], value)\r\n    } else {\r\n        target[property] = value\r\n    }\r\n};\r\nvar deepExtendArraySafe = function deepExtendArraySafe(target, changes, extendComplexObject, assignByReference) {\r\n    var prevValue;\r\n    var newValue;\r\n    for (var name in changes) {\r\n        prevValue = target[name];\r\n        newValue = changes[name];\r\n        if (\"__proto__\" === name || target === newValue) {\r\n            continue\r\n        }\r\n        if ((0, _type.isPlainObject)(newValue)) {\r\n            var goDeeper = extendComplexObject ? (0, _type.isObject)(prevValue) : (0, _type.isPlainObject)(prevValue);\r\n            newValue = deepExtendArraySafe(goDeeper ? prevValue : {}, newValue, extendComplexObject, assignByReference)\r\n        }\r\n        if (void 0 !== newValue && prevValue !== newValue) {\r\n            assignValueToProperty(target, name, newValue, assignByReference)\r\n        }\r\n    }\r\n    return target\r\n};\r\nexports.deepExtendArraySafe = deepExtendArraySafe;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.collapsed.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.GroupingHelper = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiData_gridGrouping = require(\"./ui.data_grid.grouping.core\");\r\nvar _uiData_grid2 = require(\"./ui.data_grid.utils\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _errors = _interopRequireDefault(require(\"../../data/errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction getContinuationGroupCount(groupOffset, pageSize, groupSize, groupIndex) {\r\n    groupIndex = groupIndex || 0;\r\n    if (pageSize > 1 && groupSize > 0) {\r\n        var pageOffset = groupOffset - Math.floor(groupOffset / pageSize) * pageSize || pageSize;\r\n        pageOffset += groupSize - groupIndex - 2;\r\n        if (pageOffset < 0) {\r\n            pageOffset += pageSize\r\n        }\r\n        return Math.floor(pageOffset / (pageSize - groupIndex - 1))\r\n    }\r\n    return 0\r\n}\r\nvar GroupingHelper = _uiData_gridGrouping.GroupingHelper.inherit(function() {\r\n    var foreachExpandedGroups = function(that, callback, updateGroups) {\r\n        return that.foreachGroups(function(groupInfo, parents) {\r\n            if (groupInfo.isExpanded) {\r\n                return callback(groupInfo, parents)\r\n            }\r\n        }, true, false, updateGroups, updateGroups)\r\n    };\r\n    var processGroupItems = function processGroupItems(that, items, groupsCount, expandedInfo, path, isCustomLoading, isLastGroupExpanded) {\r\n        var isExpanded;\r\n        expandedInfo.items = expandedInfo.items || [];\r\n        expandedInfo.paths = expandedInfo.paths || [];\r\n        expandedInfo.count = expandedInfo.count || 0;\r\n        expandedInfo.lastCount = expandedInfo.lastCount || 0;\r\n        if (!groupsCount) {\r\n            return\r\n        }\r\n        for (var i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            if (void 0 !== item.items) {\r\n                path.push(item.key);\r\n                if (isCustomLoading) {\r\n                    isExpanded = true\r\n                } else {\r\n                    var groupInfo = that.findGroupInfo(path);\r\n                    isExpanded = groupInfo && groupInfo.isExpanded\r\n                }\r\n                if (!isExpanded) {\r\n                    item.collapsedItems = item.items;\r\n                    item.items = null\r\n                } else {\r\n                    if (item.items) {\r\n                        processGroupItems(that, item.items, groupsCount - 1, expandedInfo, path, isCustomLoading, isLastGroupExpanded)\r\n                    } else {\r\n                        if (1 === groupsCount && item.count && (!isCustomLoading || isLastGroupExpanded)) {\r\n                            expandedInfo.items.push(item);\r\n                            expandedInfo.paths.push(path.slice(0));\r\n                            expandedInfo.count += expandedInfo.lastCount;\r\n                            expandedInfo.lastCount = item.count\r\n                        }\r\n                    }\r\n                }\r\n                path.pop()\r\n            }\r\n        }\r\n    };\r\n    var updateGroupInfoItem = function(that, item, isLastGroupLevel, path, offset) {\r\n        var groupInfo = that.findGroupInfo(path);\r\n        var count;\r\n        if (!groupInfo) {\r\n            if (isLastGroupLevel) {\r\n                count = item.count > 0 ? item.count : item.items.length\r\n            }\r\n            that.addGroupInfo({\r\n                isExpanded: that._isGroupExpanded(path.length - 1),\r\n                path: path.slice(0),\r\n                offset: offset,\r\n                count: count || 0\r\n            })\r\n        } else {\r\n            if (isLastGroupLevel) {\r\n                groupInfo.count = item.count > 0 ? item.count : item.items && item.items.length || 0\r\n            } else {\r\n                item.count = groupInfo.count || item.count\r\n            }\r\n            groupInfo.offset = offset\r\n        }\r\n    };\r\n    var updateGroupInfos = function updateGroupInfos(that, options, items, loadedGroupCount, groupIndex, path, parentIndex) {\r\n        var groupCount = options.group ? options.group.length : 0;\r\n        var isLastGroupLevel = groupCount === loadedGroupCount;\r\n        var remotePaging = options.remoteOperations.paging;\r\n        var offset = 0;\r\n        var totalCount = 0;\r\n        var count;\r\n        groupIndex = groupIndex || 0;\r\n        path = path || [];\r\n        if (remotePaging && !parentIndex) {\r\n            offset = 0 === groupIndex ? options.skip || 0 : options.skips[groupIndex - 1] || 0\r\n        }\r\n        if (groupIndex >= loadedGroupCount) {\r\n            return items.length\r\n        }\r\n        for (var i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            if (item) {\r\n                path.push(item.key);\r\n                if (!item.count && !item.items || void 0 === item.items) {\r\n                    return -1\r\n                }\r\n                updateGroupInfoItem(that, item, isLastGroupLevel, path, offset + i);\r\n                count = item.items ? updateGroupInfos(that, options, item.items, loadedGroupCount, groupIndex + 1, path, i) : item.count || -1;\r\n                if (count < 0) {\r\n                    return -1\r\n                }\r\n                totalCount += count;\r\n                path.pop()\r\n            }\r\n        }\r\n        return totalCount\r\n    };\r\n    var isGroupExpanded = function(groups, groupIndex) {\r\n        return groups && groups.length && groups[groupIndex] && !!groups[groupIndex].isExpanded\r\n    };\r\n    var getTotalOffset = function(groupInfos, pageSize, offset) {\r\n        var groupSize;\r\n        var totalOffset = offset;\r\n        for (var groupIndex = 0; groupIndex < groupInfos.length; groupIndex++) {\r\n            groupSize = groupInfos[groupIndex].offset + 1;\r\n            if (groupIndex > 0) {\r\n                groupSize += groupInfos[groupIndex - 1].childrenTotalCount;\r\n                if (pageSize) {\r\n                    groupSize += getContinuationGroupCount(totalOffset, pageSize, groupSize, groupIndex - 1) * groupIndex\r\n                }\r\n            }\r\n            totalOffset += groupSize\r\n        }\r\n        return totalOffset\r\n    };\r\n\r\n    function applyContinuationToGroupItem(options, expandedInfo, groupLevel, expandedItemIndex) {\r\n        var item = expandedInfo.items[expandedItemIndex];\r\n        var skip = options.skips && options.skips[groupLevel];\r\n        var take = options.takes && options.takes[groupLevel];\r\n        var isLastExpandedItem = expandedItemIndex === expandedInfo.items.length - 1;\r\n        var isFirstExpandedItem = 0 === expandedItemIndex;\r\n        var lastExpandedItemSkip = isFirstExpandedItem && skip || 0;\r\n        var isItemsTruncatedByTake = item.count > take + lastExpandedItemSkip;\r\n        if (isFirstExpandedItem && void 0 !== skip) {\r\n            item.isContinuation = true\r\n        }\r\n        if (isLastExpandedItem && void 0 !== take && isItemsTruncatedByTake) {\r\n            item.isContinuationOnNextPage = true\r\n        }\r\n    }\r\n\r\n    function fillSkipTakeInExpandedInfo(options, expandedInfo, currentGroupCount) {\r\n        var currentGroupIndex = currentGroupCount - 1;\r\n        var groupCount = options.group ? options.group.length : 0;\r\n        expandedInfo.skip = options.skips && options.skips[currentGroupIndex];\r\n        if (options.takes && void 0 !== options.takes[currentGroupIndex]) {\r\n            if (groupCount === currentGroupCount) {\r\n                expandedInfo.take = expandedInfo.count ? expandedInfo.count - (expandedInfo.skip || 0) : 0\r\n            } else {\r\n                expandedInfo.take = 0\r\n            }\r\n            expandedInfo.take += options.takes[currentGroupIndex]\r\n        }\r\n    }\r\n\r\n    function isDataDeferred(data) {\r\n        return !Array.isArray(data)\r\n    }\r\n\r\n    function makeDataDeferred(options) {\r\n        if (!isDataDeferred(options.data)) {\r\n            options.data = new _deferred.Deferred\r\n        }\r\n    }\r\n\r\n    function loadGroupItems(that, options, loadedGroupCount, expandedInfo, groupLevel, data) {\r\n        if (!options.isCustomLoading) {\r\n            expandedInfo = {};\r\n            processGroupItems(that, data, loadedGroupCount, expandedInfo, []);\r\n            fillSkipTakeInExpandedInfo(options, expandedInfo, loadedGroupCount)\r\n        }\r\n        var groupCount = options.group ? options.group.length : 0;\r\n        if (expandedInfo.paths.length && groupCount - loadedGroupCount > 0) {\r\n            makeDataDeferred(options);\r\n            loadExpandedGroups(that, options, expandedInfo, loadedGroupCount, groupLevel, data)\r\n        } else {\r\n            if (expandedInfo.paths.length && options.storeLoadOptions.group) {\r\n                makeDataDeferred(options);\r\n                loadLastLevelGroupItems(that, options, expandedInfo, data)\r\n            } else {\r\n                if (isDataDeferred(options.data)) {\r\n                    options.data.resolve(data)\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    function loadExpandedGroups(that, options, expandedInfo, loadedGroupCount, groupLevel, data) {\r\n        var groups = options.group || [];\r\n        var currentGroup = groups[groupLevel + 1];\r\n        var deferreds = [];\r\n        (0, _iterator.each)(expandedInfo.paths, function(expandedItemIndex) {\r\n            var loadOptions = {\r\n                requireTotalCount: false,\r\n                requireGroupCount: true,\r\n                group: [currentGroup],\r\n                groupSummary: options.storeLoadOptions.groupSummary,\r\n                filter: (0, _uiData_grid2.createGroupFilter)(expandedInfo.paths[expandedItemIndex], {\r\n                    filter: options.storeLoadOptions.filter,\r\n                    group: groups\r\n                }),\r\n                select: options.storeLoadOptions.select\r\n            };\r\n            if (0 === expandedItemIndex) {\r\n                loadOptions.skip = expandedInfo.skip || 0\r\n            }\r\n            if (expandedItemIndex === expandedInfo.paths.length - 1) {\r\n                loadOptions.take = expandedInfo.take\r\n            }\r\n            var loadResult = 0 === loadOptions.take ? [] : that._dataSource.loadFromStore(loadOptions);\r\n            (0, _deferred.when)(loadResult).done(function(data) {\r\n                var item = expandedInfo.items[expandedItemIndex];\r\n                applyContinuationToGroupItem(options, expandedInfo, groupLevel, expandedItemIndex);\r\n                item.items = data\r\n            });\r\n            deferreds.push(loadResult)\r\n        });\r\n        _deferred.when.apply(null, deferreds).done(function() {\r\n            updateGroupInfos(that, options, data, loadedGroupCount + 1);\r\n            loadGroupItems(that, options, loadedGroupCount + 1, expandedInfo, groupLevel + 1, data)\r\n        })\r\n    }\r\n\r\n    function loadLastLevelGroupItems(that, options, expandedInfo, data) {\r\n        var expandedFilters = [];\r\n        var groups = options.group || [];\r\n        (0, _iterator.each)(expandedInfo.paths, function(_, expandedPath) {\r\n            expandedFilters.push((0, _uiData_grid2.createGroupFilter)(expandedPath, {\r\n                group: options.isCustomLoading ? options.storeLoadOptions.group : groups\r\n            }))\r\n        });\r\n        var filter = options.storeLoadOptions.filter;\r\n        if (!options.storeLoadOptions.isLoadingAll) {\r\n            filter = _uiData_grid.default.combineFilters([filter, _uiData_grid.default.combineFilters(expandedFilters, \"or\")])\r\n        }\r\n        var loadOptions = (0, _extend.extend)({}, options.storeLoadOptions, {\r\n            requireTotalCount: false,\r\n            requireGroupCount: false,\r\n            group: null,\r\n            sort: groups.concat(_uiData_grid.default.normalizeSortingInfo(options.storeLoadOptions.sort || [])),\r\n            filter: filter\r\n        });\r\n        var isPagingLocal = that._dataSource.isLastLevelGroupItemsPagingLocal();\r\n        if (!isPagingLocal) {\r\n            loadOptions.skip = expandedInfo.skip;\r\n            loadOptions.take = expandedInfo.take\r\n        }(0, _deferred.when)(0 === expandedInfo.take ? [] : that._dataSource.loadFromStore(loadOptions)).done(function(items, extra) {\r\n            if (isPagingLocal) {\r\n                items = that._dataSource.sortLastLevelGroupItems(items, groups, expandedInfo.paths);\r\n                items = expandedInfo.skip ? items.slice(expandedInfo.skip) : items;\r\n                items = expandedInfo.take ? items.slice(0, expandedInfo.take) : items\r\n            }(0, _iterator.each)(expandedInfo.items, function(index, item) {\r\n                var itemCount = item.count - (0 === index && expandedInfo.skip || 0);\r\n                var expandedItems = items.splice(0, itemCount);\r\n                applyContinuationToGroupItem(options, expandedInfo, groups.length - 1, index);\r\n                item.items = expandedItems\r\n            });\r\n            options.data.resolve(data)\r\n        }).fail(options.data.reject)\r\n    }\r\n    var loadGroupTotalCount = function(dataSource, options) {\r\n        var d = new _deferred.Deferred;\r\n        var isGrouping = !!(options.group && options.group.length);\r\n        var loadOptions = (0, _extend.extend)({\r\n            skip: 0,\r\n            take: 1,\r\n            requireGroupCount: isGrouping,\r\n            requireTotalCount: !isGrouping\r\n        }, options, {\r\n            group: isGrouping ? options.group : null\r\n        });\r\n        dataSource.load(loadOptions).done(function(data, extra) {\r\n            var count = extra && (isGrouping ? extra.groupCount : extra.totalCount);\r\n            if (!isFinite(count)) {\r\n                d.reject(_errors.default.errors.Error(isGrouping ? \"E4022\" : \"E4021\"));\r\n                return\r\n            }\r\n            d.resolve(count)\r\n        }).fail(d.reject.bind(d));\r\n        return d\r\n    };\r\n    return {\r\n        updateTotalItemsCount: function(options) {\r\n            var totalItemsCount = 0;\r\n            var totalCount = options.extra && options.extra.totalCount || 0;\r\n            var groupCount = options.extra && options.extra.groupCount || 0;\r\n            var pageSize = this._dataSource.pageSize();\r\n            var isVirtualPaging = this._isVirtualPaging();\r\n            foreachExpandedGroups(this, function(groupInfo) {\r\n                groupInfo.childrenTotalCount = 0\r\n            });\r\n            foreachExpandedGroups(this, function(groupInfo, parents) {\r\n                var totalOffset = getTotalOffset(parents, isVirtualPaging ? 0 : pageSize, totalItemsCount);\r\n                var count = groupInfo.count + groupInfo.childrenTotalCount;\r\n                if (!isVirtualPaging) {\r\n                    count += getContinuationGroupCount(totalOffset, pageSize, count, parents.length - 1)\r\n                }\r\n                if (parents[parents.length - 2]) {\r\n                    parents[parents.length - 2].childrenTotalCount += count\r\n                } else {\r\n                    totalItemsCount += count\r\n                }\r\n            });\r\n            this.callBase(totalItemsCount - totalCount + groupCount)\r\n        },\r\n        _isGroupExpanded: function(groupIndex) {\r\n            var groups = this._dataSource.group();\r\n            return isGroupExpanded(groups, groupIndex)\r\n        },\r\n        _updatePagingOptions: function(options, callback) {\r\n            var that = this;\r\n            var isVirtualPaging = that._isVirtualPaging();\r\n            var pageSize = that._dataSource.pageSize();\r\n            var skips = [];\r\n            var takes = [];\r\n            var skipChildrenTotalCount = 0;\r\n            var childrenTotalCount = 0;\r\n            if (options.take) {\r\n                foreachExpandedGroups(this, function(groupInfo) {\r\n                    groupInfo.childrenTotalCount = 0;\r\n                    groupInfo.skipChildrenTotalCount = 0\r\n                });\r\n                foreachExpandedGroups(that, function(groupInfo, parents) {\r\n                    var take;\r\n                    var takeCorrection = 0;\r\n                    var parentTakeCorrection = 0;\r\n                    var totalOffset = getTotalOffset(parents, isVirtualPaging ? 0 : pageSize, childrenTotalCount);\r\n                    var continuationGroupCount = 0;\r\n                    var skipContinuationGroupCount = 0;\r\n                    var groupInfoCount = groupInfo.count + groupInfo.childrenTotalCount;\r\n                    var childrenGroupInfoCount = groupInfoCount;\r\n                    callback && callback(groupInfo, totalOffset);\r\n                    var skip = options.skip - totalOffset;\r\n                    if (totalOffset <= options.skip + options.take && groupInfoCount) {\r\n                        take = options.take;\r\n                        if (!isVirtualPaging) {\r\n                            continuationGroupCount = getContinuationGroupCount(totalOffset, pageSize, groupInfoCount, parents.length - 1);\r\n                            groupInfoCount += continuationGroupCount * parents.length;\r\n                            childrenGroupInfoCount += continuationGroupCount;\r\n                            if (pageSize && skip >= 0) {\r\n                                takeCorrection = parents.length;\r\n                                parentTakeCorrection = parents.length - 1;\r\n                                skipContinuationGroupCount = Math.floor(skip / pageSize)\r\n                            }\r\n                        }\r\n                        if (skip >= 0) {\r\n                            if (totalOffset + groupInfoCount > options.skip) {\r\n                                skips.unshift(skip - skipContinuationGroupCount * takeCorrection - groupInfo.skipChildrenTotalCount)\r\n                            }\r\n                            if (totalOffset + groupInfoCount >= options.skip + take) {\r\n                                takes.unshift(take - takeCorrection - groupInfo.childrenTotalCount + groupInfo.skipChildrenTotalCount)\r\n                            }\r\n                        } else {\r\n                            if (totalOffset + groupInfoCount >= options.skip + take) {\r\n                                takes.unshift(take + skip - groupInfo.childrenTotalCount)\r\n                            }\r\n                        }\r\n                    }\r\n                    if (totalOffset <= options.skip) {\r\n                        if (parents[parents.length - 2]) {\r\n                            parents[parents.length - 2].skipChildrenTotalCount += Math.min(childrenGroupInfoCount, skip + 1 - skipContinuationGroupCount * parentTakeCorrection)\r\n                        } else {\r\n                            skipChildrenTotalCount += Math.min(childrenGroupInfoCount, skip + 1)\r\n                        }\r\n                    }\r\n                    if (totalOffset <= options.skip + take) {\r\n                        groupInfoCount = Math.min(childrenGroupInfoCount, skip + take - (skipContinuationGroupCount + 1) * parentTakeCorrection);\r\n                        if (parents[parents.length - 2]) {\r\n                            parents[parents.length - 2].childrenTotalCount += groupInfoCount\r\n                        } else {\r\n                            childrenTotalCount += groupInfoCount\r\n                        }\r\n                    }\r\n                });\r\n                options.skip -= skipChildrenTotalCount;\r\n                options.take -= childrenTotalCount - skipChildrenTotalCount\r\n            }\r\n            options.skips = skips;\r\n            options.takes = takes\r\n        },\r\n        changeRowExpand: function(path) {\r\n            var that = this;\r\n            var groupInfo = that.findGroupInfo(path);\r\n            var dataSource = that._dataSource;\r\n            var remoteGroupPaging = dataSource.remoteOperations().groupPaging;\r\n            var groups = _uiData_grid.default.normalizeSortingInfo(dataSource.group());\r\n            if (groupInfo) {\r\n                groupInfo.isExpanded = !groupInfo.isExpanded;\r\n                if (remoteGroupPaging && groupInfo.isExpanded && path.length < groups.length) {\r\n                    return loadGroupTotalCount(dataSource, {\r\n                        filter: (0, _uiData_grid2.createGroupFilter)(path, {\r\n                            filter: dataSource.lastLoadOptions().filter,\r\n                            group: dataSource.group()\r\n                        }),\r\n                        group: [groups[path.length]],\r\n                        select: dataSource.select()\r\n                    }).done(function(groupCount) {\r\n                        groupInfo.count = groupCount\r\n                    })\r\n                }\r\n                return (new _deferred.Deferred).resolve()\r\n            }\r\n            return (new _deferred.Deferred).reject()\r\n        },\r\n        handleDataLoading: function(options) {\r\n            var that = this;\r\n            var storeLoadOptions = options.storeLoadOptions;\r\n            var groups = _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group || options.loadOptions.group);\r\n            if (options.isCustomLoading || !groups.length) {\r\n                return\r\n            }\r\n            if (options.remoteOperations.grouping) {\r\n                var remotePaging = that._dataSource.remoteOperations().paging;\r\n                storeLoadOptions.group = _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group);\r\n                storeLoadOptions.group.forEach(function(group, index) {\r\n                    var isLastGroup = index === storeLoadOptions.group.length - 1;\r\n                    group.isExpanded = !remotePaging || !isLastGroup\r\n                })\r\n            }\r\n            options.group = options.group || groups;\r\n            if (options.remoteOperations.paging) {\r\n                options.skip = storeLoadOptions.skip;\r\n                options.take = storeLoadOptions.take;\r\n                storeLoadOptions.requireGroupCount = true;\r\n                storeLoadOptions.group = groups.slice(0, 1);\r\n                that._updatePagingOptions(options);\r\n                storeLoadOptions.skip = options.skip;\r\n                storeLoadOptions.take = options.take\r\n            }\r\n        },\r\n        handleDataLoadedCore: function(options, callBase) {\r\n            var that = this;\r\n            var loadedGroupCount = _uiData_grid.default.normalizeSortingInfo(options.storeLoadOptions.group || options.loadOptions.group).length;\r\n            var groupCount = options.group ? options.group.length : 0;\r\n            var totalCount;\r\n            var expandedInfo = {};\r\n            if (options.isCustomLoading) {\r\n                callBase(options);\r\n                processGroupItems(that, options.data, loadedGroupCount, expandedInfo, [], options.isCustomLoading, options.storeLoadOptions.isLoadingAll)\r\n            } else {\r\n                if (!options.remoteOperations.paging) {\r\n                    that.foreachGroups(function(groupInfo) {\r\n                        groupInfo.count = 0\r\n                    })\r\n                }\r\n                totalCount = updateGroupInfos(that, options, options.data, loadedGroupCount);\r\n                if (totalCount < 0) {\r\n                    options.data = (new _deferred.Deferred).reject(_ui.default.Error(\"E1037\"));\r\n                    return\r\n                }\r\n                if (!options.remoteOperations.paging) {\r\n                    if (loadedGroupCount && options.extra && options.loadOptions.requireTotalCount) {\r\n                        options.extra.totalCount = totalCount;\r\n                        options.extra.groupCount = options.data.length\r\n                    }\r\n                }\r\n                if (groupCount && options.storeLoadOptions.requireGroupCount && !isFinite(options.extra.groupCount)) {\r\n                    options.data = (new _deferred.Deferred).reject(_errors.default.errors.Error(\"E4022\"));\r\n                    return\r\n                }\r\n                that.updateTotalItemsCount(options);\r\n                if (!options.remoteOperations.paging) {\r\n                    that._updatePagingOptions(options)\r\n                }\r\n                callBase(options);\r\n                if (!options.remoteOperations.paging) {\r\n                    that._processPaging(options, loadedGroupCount)\r\n                }\r\n            }\r\n            loadGroupItems(that, options, loadedGroupCount, expandedInfo, 0, options.data)\r\n        },\r\n        _processSkips: function(items, skips, groupCount) {\r\n            if (!groupCount) {\r\n                return\r\n            }\r\n            var firstItem = items[0];\r\n            var skip = skips[0];\r\n            var children = firstItem && firstItem.items;\r\n            if (void 0 !== skip) {\r\n                firstItem.isContinuation = true;\r\n                if (children) {\r\n                    firstItem.items = children.slice(skip);\r\n                    this._processSkips(firstItem.items, skips.slice(1), groupCount - 1)\r\n                }\r\n            }\r\n        },\r\n        _processTakes: function(items, skips, takes, groupCount, parents) {\r\n            if (!groupCount || !items) {\r\n                return\r\n            }\r\n            parents = parents || [];\r\n            var lastItem = items[items.length - 1];\r\n            var children = lastItem && lastItem.items;\r\n            var take = takes[0];\r\n            var skip = skips[0];\r\n            if (lastItem) {\r\n                var maxTakeCount = lastItem.count - (lastItem.isContinuation && skip || 0) || children.length;\r\n                if (void 0 !== take && maxTakeCount > take) {\r\n                    lastItem.isContinuationOnNextPage = true;\r\n                    parents.forEach(function(parent) {\r\n                        parent.isContinuationOnNextPage = true\r\n                    });\r\n                    if (children) {\r\n                        children = children.slice(0, take);\r\n                        lastItem.items = children\r\n                    }\r\n                }\r\n                parents.push(lastItem);\r\n                this._processTakes(children, skips.slice(1), takes.slice(1), groupCount - 1, parents)\r\n            }\r\n        },\r\n        _processPaging: function(options, groupCount) {\r\n            this._processSkips(options.data, options.skips, groupCount);\r\n            this._processTakes(options.data, options.skips, options.takes, groupCount)\r\n        },\r\n        isLastLevelGroupItemsPagingLocal: function() {\r\n            return false\r\n        },\r\n        sortLastLevelGroupItems: function(items) {\r\n            return items\r\n        },\r\n        refresh: function(options, operationTypes) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var storeLoadOptions = options.storeLoadOptions;\r\n            var group = options.group || options.storeLoadOptions.group;\r\n            var oldGroups = _uiData_grid.default.normalizeSortingInfo(that._group);\r\n            var isExpanded;\r\n            var groupIndex;\r\n\r\n            function handleGroup(groupInfo, parents) {\r\n                if (parents.length === groupIndex + 1) {\r\n                    groupInfo.isExpanded = isExpanded\r\n                }\r\n            }\r\n            for (groupIndex = 0; groupIndex < oldGroups.length; groupIndex++) {\r\n                isExpanded = isGroupExpanded(group, groupIndex);\r\n                if (isGroupExpanded(that._group, groupIndex) !== isExpanded) {\r\n                    that.foreachGroups(handleGroup)\r\n                }\r\n            }\r\n            that.callBase.apply(this, arguments);\r\n            if (group && options.remoteOperations.paging && operationTypes.reload) {\r\n                return foreachExpandedGroups(that, function(groupInfo) {\r\n                    var groupCountQuery = loadGroupTotalCount(dataSource, {\r\n                        filter: (0, _uiData_grid2.createGroupFilter)(groupInfo.path, {\r\n                            filter: storeLoadOptions.filter,\r\n                            group: group\r\n                        }),\r\n                        group: group.slice(groupInfo.path.length),\r\n                        select: storeLoadOptions.select\r\n                    });\r\n                    var groupOffsetQuery = loadGroupTotalCount(dataSource, {\r\n                        filter: (0, _uiData_gridGrouping.createOffsetFilter)(groupInfo.path, {\r\n                            filter: storeLoadOptions.filter,\r\n                            group: group\r\n                        }),\r\n                        group: group.slice(groupInfo.path.length - 1, groupInfo.path.length),\r\n                        select: storeLoadOptions.select\r\n                    });\r\n                    return (0, _deferred.when)(groupOffsetQuery, groupCountQuery).done(function(offset, count) {\r\n                        offset = parseInt(offset.length ? offset[0] : offset);\r\n                        count = parseInt(count.length ? count[0] : count);\r\n                        groupInfo.offset = offset;\r\n                        if (groupInfo.count !== count) {\r\n                            groupInfo.count = count;\r\n                            that.updateTotalItemsCount(options)\r\n                        }\r\n                    })\r\n                }, true)\r\n            }\r\n        }\r\n    }\r\n}());\r\nexports.GroupingHelper = GroupingHelper;\r\n","/**\r\n * DevExtreme (ui/text_box/texteditor_button_collection/custom.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _button = _interopRequireDefault(require(\"./button\"));\r\nvar _button2 = _interopRequireDefault(require(\"../../button\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _hover = require(\"../../../events/hover\");\r\nvar _click = require(\"../../../events/click\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar CUSTOM_BUTTON_HOVERED_CLASS = \"dx-custom-button-hovered\";\r\nvar CustomButton = function(_TextEditorButton) {\r\n    _inherits(CustomButton, _TextEditorButton);\r\n    var _super = _createSuper(CustomButton);\r\n\r\n    function CustomButton() {\r\n        _classCallCheck(this, CustomButton);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(CustomButton, [{\r\n        key: \"_attachEvents\",\r\n        value: function(instance, $element) {\r\n            var editor = this.editor;\r\n            _events_engine.default.on($element, _hover.start, function() {\r\n                editor.$element().addClass(CUSTOM_BUTTON_HOVERED_CLASS)\r\n            });\r\n            _events_engine.default.on($element, _hover.end, function() {\r\n                editor.$element().removeClass(CUSTOM_BUTTON_HOVERED_CLASS)\r\n            });\r\n            _events_engine.default.on($element, _click.name, function(e) {\r\n                e.stopPropagation()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_create\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            var $element = (0, _renderer.default)(\"<div>\");\r\n            this._addToContainer($element);\r\n            var instance = editor._createComponent($element, _button2.default, (0, _extend.extend)({}, this.options, {\r\n                ignoreParentReadOnly: true,\r\n                disabled: this._isDisabled(),\r\n                integrationOptions: this._prepareIntegrationOptions(editor)\r\n            }));\r\n            return {\r\n                $element: $element,\r\n                instance: instance\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_prepareIntegrationOptions\",\r\n        value: function(editor) {\r\n            return (0, _extend.extend)({}, editor.option(\"integrationOptions\"), {\r\n                skipTemplates: [\"content\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"update\",\r\n        value: function() {\r\n            var isUpdated = _get(_getPrototypeOf(CustomButton.prototype), \"update\", this).call(this);\r\n            if (this.instance) {\r\n                this.instance.option(\"disabled\", this._isDisabled())\r\n            }\r\n            return isUpdated\r\n        }\r\n    }, {\r\n        key: \"_isVisible\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            return editor.option(\"visible\")\r\n        }\r\n    }, {\r\n        key: \"_isDisabled\",\r\n        value: function() {\r\n            var isDefinedByUser = void 0 !== this.options.disabled;\r\n            if (isDefinedByUser) {\r\n                return this.instance ? this.instance.option(\"disabled\") : this.options.disabled\r\n            } else {\r\n                return this.editor.option(\"readOnly\")\r\n            }\r\n        }\r\n    }]);\r\n    return CustomButton\r\n}(_button.default);\r\nexports.default = CustomButton;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/contextmenu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.name = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _support = require(\"../core/utils/support\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _event_registrator = _interopRequireDefault(require(\"./core/event_registrator\"));\r\nvar _index = require(\"./utils/index\");\r\nvar _hold = _interopRequireDefault(require(\"./hold\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CONTEXTMENU_NAMESPACE = \"dxContexMenu\";\r\nvar CONTEXTMENU_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(\"contextmenu\", CONTEXTMENU_NAMESPACE);\r\nvar HOLD_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_hold.default.name, CONTEXTMENU_NAMESPACE);\r\nvar CONTEXTMENU_EVENT_NAME = \"dxcontextmenu\";\r\nvar ContextMenu = _class.default.inherit({\r\n    setup: function(element) {\r\n        var $element = (0, _renderer.default)(element);\r\n        _events_engine.default.on($element, CONTEXTMENU_NAMESPACED_EVENT_NAME, this._contextMenuHandler.bind(this));\r\n        if (_support.touch || _devices.default.isSimulator()) {\r\n            _events_engine.default.on($element, HOLD_NAMESPACED_EVENT_NAME, this._holdHandler.bind(this))\r\n        }\r\n    },\r\n    _holdHandler: function(e) {\r\n        if ((0, _index.isMouseEvent)(e) && !_devices.default.isSimulator()) {\r\n            return\r\n        }\r\n        this._fireContextMenu(e)\r\n    },\r\n    _contextMenuHandler: function(e) {\r\n        this._fireContextMenu(e)\r\n    },\r\n    _fireContextMenu: function(e) {\r\n        return (0, _index.fireEvent)({\r\n            type: CONTEXTMENU_EVENT_NAME,\r\n            originalEvent: e\r\n        })\r\n    },\r\n    teardown: function(element) {\r\n        _events_engine.default.off(element, \".\" + CONTEXTMENU_NAMESPACE)\r\n    }\r\n});\r\n(0, _event_registrator.default)(CONTEXTMENU_EVENT_NAME, new ContextMenu);\r\nvar name = CONTEXTMENU_EVENT_NAME;\r\nexports.name = name;\r\n","/**\r\n * DevExtreme (events/gesture/emitter.gesture.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _call_once = _interopRequireDefault(require(\"../../core/utils/call_once\"));\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _index = require(\"../utils/index\");\r\nvar _emitter = _interopRequireDefault(require(\"../core/emitter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ready = _ready_callbacks.default.add;\r\nvar abs = Math.abs;\r\nvar SLEEP = 0;\r\nvar INITED = 1;\r\nvar STARTED = 2;\r\nvar TOUCH_BOUNDARY = 10;\r\nvar IMMEDIATE_TOUCH_BOUNDARY = 0;\r\nvar IMMEDIATE_TIMEOUT = 180;\r\nvar supportPointerEvents = function() {\r\n    return (0, _style.styleProp)(\"pointer-events\")\r\n};\r\nvar setGestureCover = (0, _call_once.default)(function() {\r\n    var GESTURE_COVER_CLASS = \"dx-gesture-cover\";\r\n    var isDesktop = \"desktop\" === _devices.default.real().deviceType;\r\n    if (!supportPointerEvents() || !isDesktop) {\r\n        return _common.noop\r\n    }\r\n    var $cover = (0, _renderer.default)(\"<div>\").addClass(GESTURE_COVER_CLASS).css(\"pointerEvents\", \"none\");\r\n    _events_engine.default.subscribeGlobal($cover, \"dxmousewheel\", function(e) {\r\n        e.preventDefault()\r\n    });\r\n    ready(function() {\r\n        $cover.appendTo(\"body\")\r\n    });\r\n    return function(toggle, cursor) {\r\n        $cover.css(\"pointerEvents\", toggle ? \"all\" : \"none\");\r\n        toggle && $cover.css(\"cursor\", cursor)\r\n    }\r\n});\r\nvar gestureCover = function(toggle, cursor) {\r\n    var gestureCoverStrategy = setGestureCover();\r\n    gestureCoverStrategy(toggle, cursor)\r\n};\r\nvar GestureEmitter = _emitter.default.inherit({\r\n    gesture: true,\r\n    configure: function(data) {\r\n        this.getElement().css(\"msTouchAction\", data.immediate ? \"pinch-zoom\" : \"\");\r\n        this.callBase(data)\r\n    },\r\n    allowInterruptionByMouseWheel: function() {\r\n        return this._stage !== STARTED\r\n    },\r\n    getDirection: function() {\r\n        return this.direction\r\n    },\r\n    _cancel: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._toggleGestureCover(false);\r\n        this._stage = SLEEP\r\n    },\r\n    start: function(e) {\r\n        if (e._needSkipEvent || (0, _index.needSkipEvent)(e)) {\r\n            this._cancel(e);\r\n            return\r\n        }\r\n        this._startEvent = (0, _index.createEvent)(e);\r\n        this._startEventData = (0, _index.eventData)(e);\r\n        this._stage = INITED;\r\n        this._init(e);\r\n        this._setupImmediateTimer()\r\n    },\r\n    _setupImmediateTimer: function() {\r\n        clearTimeout(this._immediateTimer);\r\n        this._immediateAccepted = false;\r\n        if (!this.immediate) {\r\n            return\r\n        }\r\n        this._immediateTimer = setTimeout(function() {\r\n            this._immediateAccepted = true\r\n        }.bind(this), IMMEDIATE_TIMEOUT)\r\n    },\r\n    move: function(e) {\r\n        if (this._stage === INITED && this._directionConfirmed(e)) {\r\n            this._stage = STARTED;\r\n            this._resetActiveElement();\r\n            this._toggleGestureCover(true);\r\n            this._clearSelection(e);\r\n            this._adjustStartEvent(e);\r\n            this._start(this._startEvent);\r\n            if (this._stage === SLEEP) {\r\n                return\r\n            }\r\n            this._requestAccept(e);\r\n            this._move(e);\r\n            this._forgetAccept()\r\n        } else {\r\n            if (this._stage === STARTED) {\r\n                this._clearSelection(e);\r\n                this._move(e)\r\n            }\r\n        }\r\n    },\r\n    _directionConfirmed: function(e) {\r\n        var touchBoundary = this._getTouchBoundary(e);\r\n        var delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));\r\n        var deltaX = abs(delta.x);\r\n        var deltaY = abs(delta.y);\r\n        var horizontalMove = this._validateMove(touchBoundary, deltaX, deltaY);\r\n        var verticalMove = this._validateMove(touchBoundary, deltaY, deltaX);\r\n        var direction = this.getDirection(e);\r\n        var bothAccepted = \"both\" === direction && (horizontalMove || verticalMove);\r\n        var horizontalAccepted = \"horizontal\" === direction && horizontalMove;\r\n        var verticalAccepted = \"vertical\" === direction && verticalMove;\r\n        return bothAccepted || horizontalAccepted || verticalAccepted || this._immediateAccepted\r\n    },\r\n    _validateMove: function(touchBoundary, mainAxis, crossAxis) {\r\n        return mainAxis && mainAxis >= touchBoundary && (this.immediate ? mainAxis >= crossAxis : true)\r\n    },\r\n    _getTouchBoundary: function(e) {\r\n        return this.immediate || (0, _index.isDxMouseWheelEvent)(e) ? IMMEDIATE_TOUCH_BOUNDARY : TOUCH_BOUNDARY\r\n    },\r\n    _adjustStartEvent: function(e) {\r\n        var touchBoundary = this._getTouchBoundary(e);\r\n        var delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));\r\n        this._startEvent.pageX += (0, _math.sign)(delta.x) * touchBoundary;\r\n        this._startEvent.pageY += (0, _math.sign)(delta.y) * touchBoundary\r\n    },\r\n    _resetActiveElement: function() {\r\n        if (\"ios\" === _devices.default.real().platform && this.getElement().find(\":focus\").length) {\r\n            (0, _dom.resetActiveElement)()\r\n        }\r\n    },\r\n    _toggleGestureCover: function(toggle) {\r\n        this._toggleGestureCoverImpl(toggle)\r\n    },\r\n    _toggleGestureCoverImpl: function(toggle) {\r\n        var isStarted = this._stage === STARTED;\r\n        if (isStarted) {\r\n            gestureCover(toggle, this.getElement().css(\"cursor\"))\r\n        }\r\n    },\r\n    _clearSelection: function(e) {\r\n        if ((0, _index.isDxMouseWheelEvent)(e) || (0, _index.isTouchEvent)(e)) {\r\n            return\r\n        }(0, _dom.clearSelection)()\r\n    },\r\n    end: function(e) {\r\n        this._toggleGestureCover(false);\r\n        if (this._stage === STARTED) {\r\n            this._end(e)\r\n        } else {\r\n            if (this._stage === INITED) {\r\n                this._stop(e)\r\n            }\r\n        }\r\n        this._stage = SLEEP\r\n    },\r\n    dispose: function() {\r\n        clearTimeout(this._immediateTimer);\r\n        this.callBase.apply(this, arguments);\r\n        this._toggleGestureCover(false)\r\n    },\r\n    _init: _common.noop,\r\n    _start: _common.noop,\r\n    _move: _common.noop,\r\n    _stop: _common.noop,\r\n    _end: _common.noop\r\n});\r\nGestureEmitter.initialTouchBoundary = TOUCH_BOUNDARY;\r\nGestureEmitter.touchBoundary = function(newBoundary) {\r\n    if ((0, _type.isDefined)(newBoundary)) {\r\n        TOUCH_BOUNDARY = newBoundary;\r\n        return\r\n    }\r\n    return TOUCH_BOUNDARY\r\n};\r\nvar _default = GestureEmitter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sparkline.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _sparkline = _interopRequireDefault(require(\"./sparklines/sparkline\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _sparkline.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (data/data_source/operation_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"./utils\");\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar OperationManager = function() {\r\n    function OperationManager() {\r\n        _classCallCheck(this, OperationManager);\r\n        this._counter = -1;\r\n        this._deferreds = {}\r\n    }\r\n    _createClass(OperationManager, [{\r\n        key: \"add\",\r\n        value: function(deferred) {\r\n            this._counter++;\r\n            this._deferreds[this._counter] = deferred;\r\n            return this._counter\r\n        }\r\n    }, {\r\n        key: \"remove\",\r\n        value: function(operationId) {\r\n            return delete this._deferreds[operationId]\r\n        }\r\n    }, {\r\n        key: \"cancel\",\r\n        value: function(operationId) {\r\n            if (operationId in this._deferreds) {\r\n                this._deferreds[operationId].reject(_utils.CANCELED_TOKEN);\r\n                return true\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"cancelAll\",\r\n        value: function() {\r\n            while (this._counter > -1) {\r\n                this.cancel(this._counter);\r\n                this._counter--\r\n            }\r\n        }\r\n    }]);\r\n    return OperationManager\r\n}();\r\nexports.default = OperationManager;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/collection/ui.collection_widget.edit.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./ui.collection_widget.base\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiCollection_widgetEditStrategy = _interopRequireDefault(require(\"./ui.collection_widget.edit.strategy.plain\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _selection = _interopRequireDefault(require(\"../selection/selection\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar ITEM_DELETING_DATA_KEY = \"dxItemDeleting\";\r\nvar NOT_EXISTING_INDEX = -1;\r\nvar indexExists = function(index) {\r\n    return index !== NOT_EXISTING_INDEX\r\n};\r\nvar CollectionWidget = _uiCollection_widget.default.inherit({\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            selectedItem: true\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            selectionMode: \"none\",\r\n            selectionRequired: false,\r\n            selectionByClick: true,\r\n            selectedItems: [],\r\n            selectedItemKeys: [],\r\n            maxFilterLengthInRequest: 1500,\r\n            keyExpr: null,\r\n            selectedIndex: NOT_EXISTING_INDEX,\r\n            selectedItem: null,\r\n            onSelectionChanged: null,\r\n            onItemReordered: null,\r\n            onItemDeleting: null,\r\n            onItemDeleted: null\r\n        })\r\n    },\r\n    ctor: function(element, options) {\r\n        this._userOptions = options || {};\r\n        this.callBase(element, options)\r\n    },\r\n    _init: function() {\r\n        this._initEditStrategy();\r\n        this.callBase();\r\n        this._initKeyGetter();\r\n        this._initSelectionModule()\r\n    },\r\n    _initKeyGetter: function() {\r\n        this._keyGetter = (0, _data.compileGetter)(this.option(\"keyExpr\"))\r\n    },\r\n    _getKeysByItems: function(selectedItems) {\r\n        return this._editStrategy.getKeysByItems(selectedItems)\r\n    },\r\n    _getItemsByKeys: function(selectedItemKeys, selectedItems) {\r\n        return this._editStrategy.getItemsByKeys(selectedItemKeys, selectedItems)\r\n    },\r\n    _getKeyByIndex: function(index) {\r\n        return this._editStrategy.getKeyByIndex(index)\r\n    },\r\n    _getIndexByKey: function(key) {\r\n        return this._editStrategy.getIndexByKey(key)\r\n    },\r\n    _getIndexByItemData: function(itemData) {\r\n        return this._editStrategy.getIndexByItemData(itemData)\r\n    },\r\n    _isKeySpecified: function() {\r\n        return !!(this._dataSource && this._dataSource.key())\r\n    },\r\n    _getCombinedFilter: function() {\r\n        return this._dataSource && this._dataSource.filter()\r\n    },\r\n    key: function() {\r\n        if (this.option(\"keyExpr\")) {\r\n            return this.option(\"keyExpr\")\r\n        }\r\n        return this._dataSource && this._dataSource.key()\r\n    },\r\n    keyOf: function(item) {\r\n        var key = item;\r\n        var store = this._dataSource && this._dataSource.store();\r\n        if (this.option(\"keyExpr\")) {\r\n            key = this._keyGetter(item)\r\n        } else {\r\n            if (store) {\r\n                key = store.keyOf(item)\r\n            }\r\n        }\r\n        return key\r\n    },\r\n    _nullValueSelectionSupported: function() {\r\n        return false\r\n    },\r\n    _initSelectionModule: function() {\r\n        var that = this;\r\n        var itemsGetter = that._editStrategy.itemsGetter;\r\n        this._selection = new _selection.default({\r\n            allowNullValue: this._nullValueSelectionSupported(),\r\n            mode: this.option(\"selectionMode\"),\r\n            maxFilterLengthInRequest: this.option(\"maxFilterLengthInRequest\"),\r\n            equalByReference: !this._isKeySpecified(),\r\n            onSelectionChanged: function(args) {\r\n                if (args.addedItemKeys.length || args.removedItemKeys.length) {\r\n                    that.option(\"selectedItems\", that._getItemsByKeys(args.selectedItemKeys, args.selectedItems));\r\n                    that._updateSelectedItems(args)\r\n                }\r\n            },\r\n            filter: that._getCombinedFilter.bind(that),\r\n            totalCount: function() {\r\n                var items = that.option(\"items\");\r\n                var dataSource = that._dataSource;\r\n                return dataSource && dataSource.totalCount() >= 0 ? dataSource.totalCount() : items.length\r\n            },\r\n            key: that.key.bind(that),\r\n            keyOf: that.keyOf.bind(that),\r\n            load: function(options) {\r\n                if (that._dataSource) {\r\n                    var loadOptions = that._dataSource.loadOptions();\r\n                    options.customQueryParams = loadOptions.customQueryParams;\r\n                    options.userData = that._dataSource._userData\r\n                }\r\n                var store = that._dataSource && that._dataSource.store();\r\n                if (store) {\r\n                    return store.load(options).done(function(loadResult) {\r\n                        if (that._disposed) {\r\n                            return\r\n                        }\r\n                        var items = (0, _utils.normalizeLoadResult)(loadResult).data;\r\n                        that._dataSource._applyMapFunction(items)\r\n                    })\r\n                } else {\r\n                    return (new _deferred.Deferred).resolve(this.plainItems())\r\n                }\r\n            },\r\n            dataFields: function() {\r\n                return that._dataSource && that._dataSource.select()\r\n            },\r\n            plainItems: itemsGetter.bind(that._editStrategy)\r\n        })\r\n    },\r\n    _initEditStrategy: function() {\r\n        var Strategy = _uiCollection_widgetEditStrategy.default;\r\n        this._editStrategy = new Strategy(this)\r\n    },\r\n    _getSelectedItemIndices: function(keys) {\r\n        var that = this;\r\n        var indices = [];\r\n        keys = keys || this._selection.getSelectedItemKeys();\r\n        that._editStrategy.beginCache();\r\n        (0, _iterator.each)(keys, function(_, key) {\r\n            var selectedIndex = that._getIndexByKey(key);\r\n            if (indexExists(selectedIndex)) {\r\n                indices.push(selectedIndex)\r\n            }\r\n        });\r\n        that._editStrategy.endCache();\r\n        return indices\r\n    },\r\n    _initMarkup: function() {\r\n        var _this = this;\r\n        this._rendering = true;\r\n        if (!this._dataSource || !this._dataSource.isLoading()) {\r\n            this._syncSelectionOptions().done(function() {\r\n                return _this._normalizeSelectedItems()\r\n            })\r\n        }\r\n        this.callBase()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._rendering = false\r\n    },\r\n    _fireContentReadyAction: function() {\r\n        this._rendering = false;\r\n        this._rendered = true;\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _syncSelectionOptions: function(byOption) {\r\n        byOption = byOption || this._chooseSelectOption();\r\n        var selectedItem;\r\n        var selectedIndex;\r\n        var selectedItemKeys;\r\n        var selectedItems;\r\n        switch (byOption) {\r\n            case \"selectedIndex\":\r\n                selectedItem = this._editStrategy.getItemDataByIndex(this.option(\"selectedIndex\"));\r\n                if ((0, _type.isDefined)(selectedItem)) {\r\n                    this._setOptionWithoutOptionChange(\"selectedItems\", [selectedItem]);\r\n                    this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem);\r\n                    this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems([selectedItem]))\r\n                } else {\r\n                    this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n                    this._setOptionWithoutOptionChange(\"selectedItemKeys\", []);\r\n                    this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n                }\r\n                break;\r\n            case \"selectedItems\":\r\n                selectedItems = this.option(\"selectedItems\") || [];\r\n                selectedIndex = selectedItems.length ? this._editStrategy.getIndexByItemData(selectedItems[0]) : NOT_EXISTING_INDEX;\r\n                if (this.option(\"selectionRequired\") && !indexExists(selectedIndex)) {\r\n                    return this._syncSelectionOptions(\"selectedIndex\")\r\n                }\r\n                this._setOptionWithoutOptionChange(\"selectedItem\", selectedItems[0]);\r\n                this._setOptionWithoutOptionChange(\"selectedIndex\", selectedIndex);\r\n                this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems(selectedItems));\r\n                break;\r\n            case \"selectedItem\":\r\n                selectedItem = this.option(\"selectedItem\");\r\n                selectedIndex = this._editStrategy.getIndexByItemData(selectedItem);\r\n                if (this.option(\"selectionRequired\") && !indexExists(selectedIndex)) {\r\n                    return this._syncSelectionOptions(\"selectedIndex\")\r\n                }\r\n                if ((0, _type.isDefined)(selectedItem)) {\r\n                    this._setOptionWithoutOptionChange(\"selectedItems\", [selectedItem]);\r\n                    this._setOptionWithoutOptionChange(\"selectedIndex\", selectedIndex);\r\n                    this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems([selectedItem]))\r\n                } else {\r\n                    this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n                    this._setOptionWithoutOptionChange(\"selectedItemKeys\", []);\r\n                    this._setOptionWithoutOptionChange(\"selectedIndex\", NOT_EXISTING_INDEX)\r\n                }\r\n                break;\r\n            case \"selectedItemKeys\":\r\n                selectedItemKeys = this.option(\"selectedItemKeys\");\r\n                if (this.option(\"selectionRequired\")) {\r\n                    var selectedItemIndex = this._getIndexByKey(selectedItemKeys[0]);\r\n                    if (!indexExists(selectedItemIndex)) {\r\n                        return this._syncSelectionOptions(\"selectedIndex\")\r\n                    }\r\n                }\r\n                return this._selection.setSelection(selectedItemKeys)\r\n        }\r\n        return (new _deferred.Deferred).resolve().promise()\r\n    },\r\n    _chooseSelectOption: function() {\r\n        var optionName = \"selectedIndex\";\r\n        var isOptionDefined = function(optionName) {\r\n            var optionValue = this.option(optionName);\r\n            var length = (0, _type.isDefined)(optionValue) && optionValue.length;\r\n            return length || optionName in this._userOptions\r\n        }.bind(this);\r\n        if (isOptionDefined(\"selectedItems\")) {\r\n            optionName = \"selectedItems\"\r\n        } else {\r\n            if (isOptionDefined(\"selectedItem\")) {\r\n                optionName = \"selectedItem\"\r\n            } else {\r\n                if (isOptionDefined(\"selectedItemKeys\")) {\r\n                    optionName = \"selectedItemKeys\"\r\n                }\r\n            }\r\n        }\r\n        return optionName\r\n    },\r\n    _compareKeys: function(oldKeys, newKeys) {\r\n        if (oldKeys.length !== newKeys.length) {\r\n            return false\r\n        }\r\n        for (var i = 0; i < newKeys.length; i++) {\r\n            if (oldKeys[i] !== newKeys[i]) {\r\n                return false\r\n            }\r\n        }\r\n        return true\r\n    },\r\n    _normalizeSelectedItems: function() {\r\n        if (\"none\" === this.option(\"selectionMode\")) {\r\n            this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n            this._syncSelectionOptions(\"selectedItems\")\r\n        } else {\r\n            if (\"single\" === this.option(\"selectionMode\")) {\r\n                var newSelection = this.option(\"selectedItems\");\r\n                if (newSelection.length > 1 || !newSelection.length && this.option(\"selectionRequired\") && this.option(\"items\") && this.option(\"items\").length) {\r\n                    var currentSelection = this._selection.getSelectedItems();\r\n                    var normalizedSelection = void 0 === newSelection[0] ? currentSelection[0] : newSelection[0];\r\n                    if (void 0 === normalizedSelection) {\r\n                        normalizedSelection = this._editStrategy.itemsGetter()[0]\r\n                    }\r\n                    if (this.option(\"grouped\") && normalizedSelection && normalizedSelection.items) {\r\n                        normalizedSelection.items = [normalizedSelection.items[0]]\r\n                    }\r\n                    this._selection.setSelection(this._getKeysByItems([normalizedSelection]));\r\n                    this._setOptionWithoutOptionChange(\"selectedItems\", [normalizedSelection]);\r\n                    return this._syncSelectionOptions(\"selectedItems\")\r\n                } else {\r\n                    this._selection.setSelection(this._getKeysByItems(newSelection))\r\n                }\r\n            } else {\r\n                var newKeys = this._getKeysByItems(this.option(\"selectedItems\"));\r\n                var oldKeys = this._selection.getSelectedItemKeys();\r\n                if (!this._compareKeys(oldKeys, newKeys)) {\r\n                    this._selection.setSelection(newKeys)\r\n                }\r\n            }\r\n        }\r\n        return (new _deferred.Deferred).resolve().promise()\r\n    },\r\n    _itemClickHandler: function(e) {\r\n        this._createAction(function(e) {\r\n            this._itemSelectHandler(e.event)\r\n        }.bind(this), {\r\n            validatingTargetName: \"itemElement\"\r\n        })({\r\n            itemElement: (0, _renderer.default)(e.currentTarget),\r\n            event: e\r\n        });\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _itemSelectHandler: function(e) {\r\n        if (!this.option(\"selectionByClick\")) {\r\n            return\r\n        }\r\n        var $itemElement = e.currentTarget;\r\n        if (this.isItemSelected($itemElement)) {\r\n            this.unselectItem(e.currentTarget)\r\n        } else {\r\n            this.selectItem(e.currentTarget)\r\n        }\r\n    },\r\n    _selectedItemElement: function(index) {\r\n        return this._itemElements().eq(index)\r\n    },\r\n    _postprocessRenderItem: function(args) {\r\n        if (\"none\" !== this.option(\"selectionMode\")) {\r\n            var $itemElement = (0, _renderer.default)(args.itemElement);\r\n            var normalizedItemIndex = this._editStrategy.getNormalizedIndex($itemElement);\r\n            var isItemSelected = this._isItemSelected(normalizedItemIndex);\r\n            this._processSelectableItem($itemElement, isItemSelected)\r\n        }\r\n    },\r\n    _processSelectableItem: function($itemElement, isSelected) {\r\n        $itemElement.toggleClass(this._selectedItemClass(), isSelected);\r\n        this._setAriaSelected($itemElement, String(isSelected))\r\n    },\r\n    _updateSelectedItems: function(args) {\r\n        var that = this;\r\n        var addedItemKeys = args.addedItemKeys;\r\n        var removedItemKeys = args.removedItemKeys;\r\n        if (that._rendered && (addedItemKeys.length || removedItemKeys.length)) {\r\n            var selectionChangePromise = that._selectionChangePromise;\r\n            if (!that._rendering) {\r\n                var addedSelection = [];\r\n                var normalizedIndex;\r\n                var removedSelection = [];\r\n                that._editStrategy.beginCache();\r\n                for (var i = 0; i < addedItemKeys.length; i++) {\r\n                    normalizedIndex = that._getIndexByKey(addedItemKeys[i]);\r\n                    addedSelection.push(normalizedIndex);\r\n                    that._addSelection(normalizedIndex)\r\n                }\r\n                for (var _i = 0; _i < removedItemKeys.length; _i++) {\r\n                    normalizedIndex = that._getIndexByKey(removedItemKeys[_i]);\r\n                    removedSelection.push(normalizedIndex);\r\n                    that._removeSelection(normalizedIndex)\r\n                }\r\n                that._editStrategy.endCache();\r\n                that._updateSelection(addedSelection, removedSelection)\r\n            }(0, _deferred.when)(selectionChangePromise).done(function() {\r\n                that._fireSelectionChangeEvent(args.addedItems, args.removedItems)\r\n            })\r\n        }\r\n    },\r\n    _fireSelectionChangeEvent: function(addedItems, removedItems) {\r\n        this._createActionByOption(\"onSelectionChanged\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })({\r\n            addedItems: addedItems,\r\n            removedItems: removedItems\r\n        })\r\n    },\r\n    _updateSelection: _common.noop,\r\n    _setAriaSelected: function($target, value) {\r\n        this.setAria(\"selected\", value, $target)\r\n    },\r\n    _removeSelection: function(normalizedIndex) {\r\n        var $itemElement = this._editStrategy.getItemElement(normalizedIndex);\r\n        if (indexExists(normalizedIndex)) {\r\n            this._processSelectableItem($itemElement, false);\r\n            _events_engine.default.triggerHandler($itemElement, \"stateChanged\", false)\r\n        }\r\n    },\r\n    _addSelection: function(normalizedIndex) {\r\n        var $itemElement = this._editStrategy.getItemElement(normalizedIndex);\r\n        if (indexExists(normalizedIndex)) {\r\n            this._processSelectableItem($itemElement, true);\r\n            _events_engine.default.triggerHandler($itemElement, \"stateChanged\", true)\r\n        }\r\n    },\r\n    _isItemSelected: function(index) {\r\n        var key = this._getKeyByIndex(index);\r\n        return this._selection.isItemSelected(key)\r\n    },\r\n    _optionChanged: function(args) {\r\n        var _this2 = this;\r\n        switch (args.name) {\r\n            case \"selectionMode\":\r\n                this._invalidate();\r\n                break;\r\n            case \"dataSource\":\r\n                if (!args.value || Array.isArray(args.value) && !args.value.length) {\r\n                    this.option(\"selectedItemKeys\", [])\r\n                }\r\n                this.callBase(args);\r\n                break;\r\n            case \"selectedIndex\":\r\n            case \"selectedItem\":\r\n            case \"selectedItems\":\r\n            case \"selectedItemKeys\":\r\n                this._syncSelectionOptions(args.name).done(function() {\r\n                    return _this2._normalizeSelectedItems()\r\n                });\r\n                break;\r\n            case \"keyExpr\":\r\n                this._initKeyGetter();\r\n                break;\r\n            case \"selectionRequired\":\r\n                this._normalizeSelectedItems();\r\n                break;\r\n            case \"selectionByClick\":\r\n            case \"onSelectionChanged\":\r\n            case \"onItemDeleting\":\r\n            case \"onItemDeleted\":\r\n            case \"onItemReordered\":\r\n            case \"maxFilterLengthInRequest\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clearSelectedItems: function() {\r\n        this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n        this._syncSelectionOptions(\"selectedItems\")\r\n    },\r\n    _waitDeletingPrepare: function($itemElement) {\r\n        if ($itemElement.data(ITEM_DELETING_DATA_KEY)) {\r\n            return (new _deferred.Deferred).resolve().promise()\r\n        }\r\n        $itemElement.data(ITEM_DELETING_DATA_KEY, true);\r\n        var deferred = new _deferred.Deferred;\r\n        var deletingActionArgs = {\r\n            cancel: false\r\n        };\r\n        var deletePromise = this._itemEventHandler($itemElement, \"onItemDeleting\", deletingActionArgs, {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        });\r\n        (0, _deferred.when)(deletePromise).always(function(value) {\r\n            var deletePromiseExists = !deletePromise;\r\n            var deletePromiseResolved = !deletePromiseExists && \"resolved\" === deletePromise.state();\r\n            var argumentsSpecified = !!arguments.length;\r\n            var shouldDelete = deletePromiseExists || deletePromiseResolved && !argumentsSpecified || deletePromiseResolved && value;\r\n            (0, _deferred.when)((0, _deferred.fromPromise)(deletingActionArgs.cancel)).always(function() {\r\n                $itemElement.data(ITEM_DELETING_DATA_KEY, false)\r\n            }).done(function(cancel) {\r\n                shouldDelete && !cancel ? deferred.resolve() : deferred.reject()\r\n            }).fail(deferred.reject)\r\n        }.bind(this));\r\n        return deferred.promise()\r\n    },\r\n    _deleteItemFromDS: function($item) {\r\n        if (!this._dataSource) {\r\n            return (new _deferred.Deferred).resolve().promise()\r\n        }\r\n        var deferred = new _deferred.Deferred;\r\n        var disabledState = this.option(\"disabled\");\r\n        var dataStore = this._dataSource.store();\r\n        this.option(\"disabled\", true);\r\n        if (!dataStore.remove) {\r\n            throw _ui.default.Error(\"E1011\")\r\n        }\r\n        dataStore.remove(dataStore.keyOf(this._getItemData($item))).done(function(key) {\r\n            if (void 0 !== key) {\r\n                deferred.resolve()\r\n            } else {\r\n                deferred.reject()\r\n            }\r\n        }).fail(function() {\r\n            deferred.reject()\r\n        });\r\n        deferred.always(function() {\r\n            this.option(\"disabled\", disabledState)\r\n        }.bind(this));\r\n        return deferred\r\n    },\r\n    _tryRefreshLastPage: function() {\r\n        var deferred = new _deferred.Deferred;\r\n        if (this._isLastPage() || this.option(\"grouped\")) {\r\n            deferred.resolve()\r\n        } else {\r\n            this._refreshLastPage().done(function() {\r\n                deferred.resolve()\r\n            })\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    _refreshLastPage: function() {\r\n        this._expectLastItemLoading();\r\n        return this._dataSource.load()\r\n    },\r\n    _updateSelectionAfterDelete: function(index) {\r\n        var key = this._getKeyByIndex(index);\r\n        this._selection.deselect([key])\r\n    },\r\n    _updateIndicesAfterIndex: function(index) {\r\n        var itemElements = this._itemElements();\r\n        for (var i = index + 1; i < itemElements.length; i++) {\r\n            (0, _renderer.default)(itemElements[i]).data(this._itemIndexKey(), i - 1)\r\n        }\r\n    },\r\n    _simulateOptionChange: function(optionName) {\r\n        var optionValue = this.option(optionName);\r\n        if (optionValue instanceof _data_source.DataSource) {\r\n            return\r\n        }\r\n        this._optionChangedAction({\r\n            name: optionName,\r\n            fullName: optionName,\r\n            value: optionValue\r\n        })\r\n    },\r\n    isItemSelected: function(itemElement) {\r\n        return this._isItemSelected(this._editStrategy.getNormalizedIndex(itemElement))\r\n    },\r\n    selectItem: function(itemElement) {\r\n        if (\"none\" === this.option(\"selectionMode\")) {\r\n            return\r\n        }\r\n        var itemIndex = this._editStrategy.getNormalizedIndex(itemElement);\r\n        if (!indexExists(itemIndex)) {\r\n            return\r\n        }\r\n        var key = this._getKeyByIndex(itemIndex);\r\n        if (this._selection.isItemSelected(key)) {\r\n            return\r\n        }\r\n        if (\"single\" === this.option(\"selectionMode\")) {\r\n            this._selection.setSelection([key])\r\n        } else {\r\n            var selectedItemKeys = this.option(\"selectedItemKeys\") || [];\r\n            this._selection.setSelection([].concat(_toConsumableArray(selectedItemKeys), [key]))\r\n        }\r\n    },\r\n    unselectItem: function(itemElement) {\r\n        var itemIndex = this._editStrategy.getNormalizedIndex(itemElement);\r\n        if (!indexExists(itemIndex)) {\r\n            return\r\n        }\r\n        var selectedItemKeys = this._selection.getSelectedItemKeys();\r\n        if (this.option(\"selectionRequired\") && selectedItemKeys.length <= 1) {\r\n            return\r\n        }\r\n        var key = this._getKeyByIndex(itemIndex);\r\n        if (!this._selection.isItemSelected(key)) {\r\n            return\r\n        }\r\n        this._selection.deselect([key])\r\n    },\r\n    _deleteItemElementByIndex: function(index) {\r\n        this._updateSelectionAfterDelete(index);\r\n        this._updateIndicesAfterIndex(index);\r\n        this._editStrategy.deleteItemAtIndex(index)\r\n    },\r\n    _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n        var changingOption = this._dataSource ? \"dataSource\" : \"items\";\r\n        this._simulateOptionChange(changingOption);\r\n        this._itemEventHandler($item, \"onItemDeleted\", deletedActionArgs, {\r\n            beforeExecute: function() {\r\n                $item.remove()\r\n            },\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        });\r\n        this._renderEmptyMessage()\r\n    },\r\n    deleteItem: function(itemElement) {\r\n        var that = this;\r\n        var deferred = new _deferred.Deferred;\r\n        var $item = this._editStrategy.getItemElement(itemElement);\r\n        var index = this._editStrategy.getNormalizedIndex(itemElement);\r\n        var itemResponseWaitClass = this._itemResponseWaitClass();\r\n        if (indexExists(index)) {\r\n            this._waitDeletingPrepare($item).done(function() {\r\n                $item.addClass(itemResponseWaitClass);\r\n                var deletedActionArgs = that._extendActionArgs($item);\r\n                that._deleteItemFromDS($item).done(function() {\r\n                    that._deleteItemElementByIndex(index);\r\n                    that._afterItemElementDeleted($item, deletedActionArgs);\r\n                    that._tryRefreshLastPage().done(function() {\r\n                        deferred.resolveWith(that)\r\n                    })\r\n                }).fail(function() {\r\n                    $item.removeClass(itemResponseWaitClass);\r\n                    deferred.rejectWith(that)\r\n                })\r\n            }).fail(function() {\r\n                deferred.rejectWith(that)\r\n            })\r\n        } else {\r\n            deferred.rejectWith(that)\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    reorderItem: function(itemElement, toItemElement) {\r\n        var deferred = new _deferred.Deferred;\r\n        var that = this;\r\n        var strategy = this._editStrategy;\r\n        var $movingItem = strategy.getItemElement(itemElement);\r\n        var $destinationItem = strategy.getItemElement(toItemElement);\r\n        var movingIndex = strategy.getNormalizedIndex(itemElement);\r\n        var destinationIndex = strategy.getNormalizedIndex(toItemElement);\r\n        var changingOption = this._dataSource ? \"dataSource\" : \"items\";\r\n        var canMoveItems = indexExists(movingIndex) && indexExists(destinationIndex) && movingIndex !== destinationIndex;\r\n        if (canMoveItems) {\r\n            deferred.resolveWith(this)\r\n        } else {\r\n            deferred.rejectWith(this)\r\n        }\r\n        return deferred.promise().done(function() {\r\n            $destinationItem[strategy.itemPlacementFunc(movingIndex, destinationIndex)]($movingItem);\r\n            strategy.moveItemAtIndexToIndex(movingIndex, destinationIndex);\r\n            this._updateIndicesAfterIndex(movingIndex);\r\n            that.option(\"selectedItems\", that._getItemsByKeys(that._selection.getSelectedItemKeys(), that._selection.getSelectedItems()));\r\n            if (\"items\" === changingOption) {\r\n                that._simulateOptionChange(changingOption)\r\n            }\r\n            that._itemEventHandler($movingItem, \"onItemReordered\", {\r\n                fromIndex: strategy.getIndex(movingIndex),\r\n                toIndex: strategy.getIndex(destinationIndex)\r\n            }, {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            })\r\n        })\r\n    }\r\n});\r\nvar _default = CollectionWidget;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _string = require(\"../core/utils/string\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _click = require(\"../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _select_box = _interopRequireDefault(require(\"./select_box\"));\r\nvar _number_box = _interopRequireDefault(require(\"./number_box\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _accessibility = require(\"./shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PAGES_LIMITER = 4;\r\nvar PAGER_CLASS = \"dx-pager\";\r\nvar PAGER_PAGE_CLASS = \"dx-page\";\r\nvar PAGER_PAGE_CLASS_SELECTOR = \".\" + PAGER_PAGE_CLASS;\r\nvar PAGER_PAGES_CLASS = \"dx-pages\";\r\nvar LIGHT_MODE_CLASS = \"dx-light-mode\";\r\nvar LIGHT_PAGES_CLASS = \"dx-light-pages\";\r\nvar PAGER_PAGE_INDEX_CLASS = \"dx-page-index\";\r\nvar PAGER_PAGES_COUNT_CLASS = \"dx-pages-count\";\r\nvar PAGER_SELECTION_CLASS = \"dx-selection\";\r\nvar PAGER_PAGE_SEPARATOR_CLASS = \"dx-separator\";\r\nvar PAGER_PAGE_SIZES_CLASS = \"dx-page-sizes\";\r\nvar PAGER_PAGE_SIZE_CLASS = \"dx-page-size\";\r\nvar PAGER_PAGE_SIZE_CLASS_SELECTOR = \".\" + PAGER_PAGE_SIZE_CLASS;\r\nvar PAGER_NAVIGATE_BUTTON = \"dx-navigate-button\";\r\nvar PAGER_PREV_BUTTON_CLASS = \"dx-prev-button\";\r\nvar PAGER_NEXT_BUTTON_CLASS = \"dx-next-button\";\r\nvar PAGER_INFO_CLASS = \"dx-info\";\r\nvar PAGER_INFO_TEXT_CLASS = \"dx-info-text\";\r\nvar PAGER_BUTTON_DISABLE_CLASS = \"dx-button-disable\";\r\nvar Page = _class.default.inherit({\r\n    ctor: function(value, index) {\r\n        var that = this;\r\n        that.index = index;\r\n        that._$page = (0, _renderer.default)(\"<div>\").text(value).addClass(PAGER_PAGE_CLASS)\r\n    },\r\n    value: function(_value) {\r\n        var that = this;\r\n        if ((0, _type.isDefined)(_value)) {\r\n            that._$page.text(_value)\r\n        } else {\r\n            var text = that._$page.text();\r\n            if ((0, _type.isNumeric)(text)) {\r\n                return parseInt(text)\r\n            } else {\r\n                return text\r\n            }\r\n        }\r\n    },\r\n    element: function() {\r\n        return this._$page\r\n    },\r\n    select: function(value) {\r\n        this._$page.toggleClass(PAGER_SELECTION_CLASS, value)\r\n    },\r\n    render: function(rootElement, rtlEnabled) {\r\n        rtlEnabled ? this._$page.prependTo(rootElement) : this._$page.appendTo(rootElement)\r\n    }\r\n});\r\nvar Pager = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            visible: true,\r\n            pagesNavigatorVisible: \"auto\",\r\n            pageIndex: 1,\r\n            maxPagesCount: 10,\r\n            pageCount: 10,\r\n            totalCount: 0,\r\n            pageSize: 5,\r\n            showPageSizes: true,\r\n            pageSizes: [5, 10],\r\n            hasKnownLastPage: true,\r\n            showNavigationButtons: false,\r\n            showInfo: false,\r\n            infoText: _message.default.getFormatter(\"dxPager-infoText\"),\r\n            pagesCountText: _message.default.getFormatter(\"dxPager-pagesCountText\"),\r\n            rtlEnabled: false,\r\n            lightModeEnabled: false,\r\n            pageIndexChanged: _common.noop,\r\n            pageSizeChanged: _common.noop\r\n        })\r\n    },\r\n    _toggleVisibility: function(value) {\r\n        var $element = this.$element();\r\n        if ($element) {\r\n            $element.css(\"display\", value ? \"\" : \"none\")\r\n        }\r\n    },\r\n    _getPages: function(currentPage, count) {\r\n        var pages = [];\r\n        var showMoreButton = !this.option(\"hasKnownLastPage\");\r\n        var firstValue;\r\n        var i;\r\n        if (count > 0 || showMoreButton) {\r\n            if (count <= this.option(\"maxPagesCount\")) {\r\n                for (i = 1; i <= count; i++) {\r\n                    pages.push(new Page(i, i - 1))\r\n                }\r\n                if (showMoreButton) {\r\n                    pages.push(new Page(\">\", i - 1))\r\n                }\r\n            } else {\r\n                pages.push(new Page(1, 0));\r\n                firstValue = currentPage ? currentPage.value() - currentPage.index : 1;\r\n                for (i = 1; i <= PAGES_LIMITER; i++) {\r\n                    pages.push(new Page(firstValue + i, i))\r\n                }\r\n                pages.push(new Page(count, PAGES_LIMITER + 1));\r\n                if (showMoreButton) {\r\n                    pages.push(new Page(\">\", PAGES_LIMITER + 1))\r\n                }\r\n            }\r\n        }\r\n        return pages\r\n    },\r\n    _getPageByValue: function(value) {\r\n        var that = this;\r\n        var page;\r\n        var i;\r\n        for (i = 0; i < that._pages.length; i++) {\r\n            page = that._pages[i];\r\n            if (page.value() === value) {\r\n                return page\r\n            }\r\n        }\r\n    },\r\n    _processSelectedPage: function(maxPagesCount, pageIndex, pageCount) {\r\n        var that = this;\r\n        var isPageIndexValid = false;\r\n        var selectedPageIndex;\r\n        if (that._pages) {\r\n            (0, _iterator.each)(that._pages, function(key, page) {\r\n                if (pageIndex === page.value()) {\r\n                    isPageIndexValid = true\r\n                }\r\n            });\r\n            if (!isPageIndexValid) {\r\n                that.selectedPage = null\r\n            }\r\n        }\r\n        if ((0, _type.isDefined)(that.selectedPage)) {\r\n            if (pageIndex === pageCount && pageCount > maxPagesCount && that.selectedPage.index !== PAGES_LIMITER + 1) {\r\n                that.selectedPage.index = PAGES_LIMITER + 1\r\n            }\r\n        } else {\r\n            if (pageIndex > PAGES_LIMITER && pageIndex < pageCount) {\r\n                selectedPageIndex = pageCount - PAGES_LIMITER < pageIndex ? PAGES_LIMITER - (pageCount - pageIndex) + 1 : 2;\r\n                that.selectedPage = new Page(pageIndex, selectedPageIndex)\r\n            }\r\n        }\r\n    },\r\n    _selectPageByValue: function(value) {\r\n        var that = this;\r\n        var i;\r\n        var page = that._getPageByValue(value);\r\n        var pages = that._pages;\r\n        var pagesLength = pages.length;\r\n        var nextPage;\r\n        var morePage;\r\n        if (!(0, _type.isDefined)(page)) {\r\n            return\r\n        }\r\n        var prevPage = that._pages[page.index - 1];\r\n        nextPage = that._pages[page.index + 1];\r\n        if (nextPage && \">\" === nextPage.value()) {\r\n            morePage = nextPage;\r\n            nextPage = void 0;\r\n            pagesLength--;\r\n            pages.pop()\r\n        }\r\n        if (that.selectedPage) {\r\n            that.selectedPage.select(false)\r\n        }\r\n        page.select(true);\r\n        that.selectedPage = page;\r\n        if (nextPage && nextPage.value() - value > 1) {\r\n            if (0 !== page.index) {\r\n                prevPage.value(value + 1);\r\n                that._pages.splice(page.index, 1);\r\n                that._pages.splice(page.index - 1, 0, page);\r\n                that._pages[page.index].index = page.index;\r\n                page.index = page.index - 1;\r\n                for (i = page.index - 1; i > 0; i--) {\r\n                    that._pages[i].value(that._pages[i + 1].value() - 1)\r\n                }\r\n            } else {\r\n                for (i = 0; i < pagesLength - 1; i++) {\r\n                    that._pages[i].value(i + 1)\r\n                }\r\n            }\r\n        }\r\n        if (prevPage && value - prevPage.value() > 1) {\r\n            if (page.index !== pagesLength - 1) {\r\n                nextPage.value(value - 1);\r\n                that._pages.splice(page.index, 1);\r\n                that._pages.splice(page.index + 1, 0, page);\r\n                that._pages[page.index].index = page.index;\r\n                page.index = page.index + 1;\r\n                for (i = page.index + 1; i < pagesLength - 1; i++) {\r\n                    that._pages[i].value(that._pages[i - 1].value() + 1)\r\n                }\r\n            } else {\r\n                for (i = 1; i <= pagesLength - 2; i++) {\r\n                    that._pages[pagesLength - 1 - i].value(that._pages[pagesLength - 1].value() - i)\r\n                }\r\n            }\r\n        }\r\n        if (morePage) {\r\n            pages.push(morePage)\r\n        }\r\n    },\r\n    _updatePagesTabIndices: function() {\r\n        var _this = this;\r\n        var $selectedPage = this.selectedPage._$page;\r\n        var updatePageIndices = function updatePageIndices() {\r\n            var buttons = (0, _renderer.default)(_this.element()).find(\"[role=button]:not(.dx-button-disable)\");\r\n            (0, _iterator.each)(buttons, function(_, element) {\r\n                return (0, _renderer.default)(element).attr(\"tabindex\", 0)\r\n            });\r\n            _events_engine.default.off($selectedPage, \"focus\", updatePageIndices)\r\n        };\r\n        _events_engine.default.on($selectedPage, \"focus\", updatePageIndices)\r\n    },\r\n    _nextPage: function(direction) {\r\n        var pageIndex = this.option(\"pageIndex\");\r\n        var pageCount = this.option(\"pageCount\");\r\n        if ((0, _type.isDefined)(pageIndex)) {\r\n            pageIndex = \"next\" === direction ? ++pageIndex : --pageIndex;\r\n            if (pageIndex > 0 && pageIndex <= pageCount) {\r\n                this.option(\"pageIndex\", pageIndex)\r\n            }\r\n        }\r\n    },\r\n    _wrapClickAction: function(action) {\r\n        var _this2 = this;\r\n        return function(e) {\r\n            if (\"dxpointerup\" === e.type) {\r\n                _this2._pointerUpHappened = true\r\n            } else {\r\n                if (_this2._pointerUpHappened) {\r\n                    _this2._pointerUpHappened = false;\r\n                    return\r\n                }\r\n            }\r\n            action({\r\n                event: e\r\n            })\r\n        }\r\n    },\r\n    _renderPages: function(pages) {\r\n        var that = this;\r\n        var $separator;\r\n        var pagesLength = pages.length;\r\n        var clickPagesIndexAction = that._createAction(function(args) {\r\n            var e = args.event;\r\n            var pageNumber = (0, _renderer.default)(e.target).text();\r\n            var pageIndex = \">\" === pageNumber ? that.option(\"pageCount\") + 1 : Number(pageNumber);\r\n            that.option(\"pageIndex\", pageIndex)\r\n        });\r\n        var page;\r\n        if (pagesLength > 1) {\r\n            that._pageClickHandler = this._wrapClickAction(clickPagesIndexAction);\r\n            _events_engine.default.on(that._$pagesChooser, (0, _index.addNamespace)([_pointer.default.up, _click.name], that.Name + \"Pages\"), PAGER_PAGE_CLASS_SELECTOR, that._pageClickHandler);\r\n            (0, _accessibility.registerKeyboardAction)(\"pager\", that, that._$pagesChooser, PAGER_PAGE_CLASS_SELECTOR, clickPagesIndexAction)\r\n        }\r\n        for (var i = 0; i < pagesLength; i++) {\r\n            page = pages[i];\r\n            page.render(that._$pagesChooser, that.option(\"rtlEnabled\"));\r\n            that.setAria({\r\n                role: \"button\",\r\n                label: \"Page \" + page.value()\r\n            }, page.element());\r\n            (0, _accessibility.setTabIndex)(that, page.element());\r\n            if (pages[i + 1] && pages[i + 1].value() - page.value() > 1) {\r\n                $separator = (0, _renderer.default)(\"<div>\").text(\". . .\").addClass(PAGER_PAGE_SEPARATOR_CLASS);\r\n                that.option(\"rtlEnabled\") ? $separator.prependTo(that._$pagesChooser) : $separator.appendTo(that._$pagesChooser)\r\n            }\r\n        }\r\n    },\r\n    _calculateLightPagesWidth: function($pageIndex, pageCount) {\r\n        return Number($pageIndex.css(\"minWidth\").replace(\"px\", \"\")) + 10 * pageCount.toString().length\r\n    },\r\n    _renderLightPages: function() {\r\n        var that = this;\r\n        var pageCount = this.option(\"pageCount\");\r\n        var pageIndex = this.option(\"pageIndex\");\r\n        var clickAction = that._createAction(function() {\r\n            that.option(\"pageIndex\", pageCount)\r\n        });\r\n        var pagesCountText = this.option(\"pagesCountText\");\r\n        var $container = (0, _renderer.default)(\"<div>\").addClass(LIGHT_PAGES_CLASS).appendTo(this._$pagesChooser);\r\n        var $pageIndex = (0, _renderer.default)(\"<div>\").addClass(PAGER_PAGE_INDEX_CLASS).appendTo($container);\r\n        that._pageIndexEditor = that._createComponent($pageIndex, _number_box.default, {\r\n            value: pageIndex,\r\n            min: 1,\r\n            max: pageCount,\r\n            width: that._calculateLightPagesWidth($pageIndex, pageCount),\r\n            onValueChanged: function(e) {\r\n                if (null === e.value) {\r\n                    return\r\n                }\r\n                that.option(\"pageIndex\", e.value)\r\n            }\r\n        });\r\n        (0, _renderer.default)(\"<span>\").text(pagesCountText).addClass(PAGER_INFO_TEXT_CLASS + \" \" + PAGER_INFO_CLASS).appendTo($container);\r\n        var $pageCount = (0, _renderer.default)(\"<span>\").addClass(PAGER_PAGES_COUNT_CLASS).text(pageCount);\r\n        _events_engine.default.on($pageCount, (0, _index.addNamespace)(_click.name, that.Name + \"PagesCount\"), function(e) {\r\n            clickAction({\r\n                event: e\r\n            })\r\n        });\r\n        (0, _accessibility.registerKeyboardAction)(\"pager\", that, $pageCount, void 0, clickAction);\r\n        $pageCount.appendTo($container);\r\n        that.setAria({\r\n            role: \"button\",\r\n            label: \"Navigates to the last page\"\r\n        }, $pageCount)\r\n    },\r\n    _renderPagesChooser: function() {\r\n        var that = this;\r\n        var lightModeEnabled = that.option(\"lightModeEnabled\");\r\n        var pagesNavigatorVisible = that.option(\"pagesNavigatorVisible\");\r\n        var $element = that.$element();\r\n        that._$pagesChooser && that._$pagesChooser.remove();\r\n        if (!pagesNavigatorVisible) {\r\n            return\r\n        }\r\n        if (that._pages && 0 === that._pages.length) {\r\n            that.selectedPage = null;\r\n            return\r\n        }\r\n        that._$pagesChooser = (0, _renderer.default)(\"<div>\").addClass(PAGER_PAGES_CLASS).appendTo($element);\r\n        if (\"auto\" === pagesNavigatorVisible) {\r\n            that._$pagesChooser.css(\"visibility\", 1 === that.option(\"pageCount\") ? \"hidden\" : \"\")\r\n        }\r\n        if (!lightModeEnabled) {\r\n            that._renderInfo()\r\n        }\r\n        that._renderNavigateButton(\"prev\");\r\n        if (lightModeEnabled) {\r\n            that._renderLightPages()\r\n        } else {\r\n            that._renderPages(that._pages)\r\n        }\r\n        that._renderNavigateButton(\"next\");\r\n        that._updatePagesChooserWidth()\r\n    },\r\n    _renderPageSizes: function() {\r\n        var that = this;\r\n        var i;\r\n        var pageSizes = that.option(\"pageSizes\");\r\n        var pagesSizesLength = pageSizes && pageSizes.length;\r\n        var pageSizeValue;\r\n        var currentPageSize = that.option(\"pageSize\");\r\n        var $pageSize;\r\n        var clickPagesSizeAction = that._createAction(function(args) {\r\n            var e = args.event;\r\n            pageSizeValue = parseInt((0, _renderer.default)(e.target).text());\r\n            that.option(\"pageSize\", pageSizeValue)\r\n        });\r\n        _events_engine.default.on(that._$pagesSizeChooser, (0, _index.addNamespace)(_click.name, that.Name + \"PageSize\"), PAGER_PAGE_SIZE_CLASS_SELECTOR, function(e) {\r\n            clickPagesSizeAction({\r\n                event: e\r\n            })\r\n        });\r\n        (0, _accessibility.registerKeyboardAction)(\"pager\", that, that._$pagesSizeChooser, PAGER_PAGE_SIZE_CLASS_SELECTOR, clickPagesSizeAction);\r\n        for (i = 0; i < pagesSizesLength; i++) {\r\n            $pageSize = (0, _renderer.default)(\"<div>\").text(pageSizes[i]).addClass(PAGER_PAGE_SIZE_CLASS);\r\n            that.setAria({\r\n                role: \"button\",\r\n                label: \"Display \" + pageSizes[i] + \" items on page\"\r\n            }, $pageSize);\r\n            (0, _accessibility.setTabIndex)(that, $pageSize);\r\n            if (currentPageSize === pageSizes[i]) {\r\n                $pageSize.addClass(PAGER_SELECTION_CLASS)\r\n            }\r\n            that._$pagesSizeChooser.append($pageSize)\r\n        }\r\n    },\r\n    _calculateLightPageSizesWidth: function(pageSizes) {\r\n        return Number(this._$pagesSizeChooser.css(\"minWidth\").replace(\"px\", \"\")) + 10 * Math.max.apply(Math, pageSizes).toString().length\r\n    },\r\n    _renderLightPageSizes: function() {\r\n        var that = this;\r\n        var pageSizes = that.option(\"pageSizes\");\r\n        var $editor = (0, _renderer.default)(\"<div>\").appendTo(that._$pagesSizeChooser);\r\n        that._pageSizeEditor = that._createComponent($editor, _select_box.default, {\r\n            dataSource: pageSizes,\r\n            value: that.option(\"pageSize\"),\r\n            onSelectionChanged: function(e) {\r\n                that.option(\"pageSize\", e.selectedItem)\r\n            },\r\n            width: that._calculateLightPageSizesWidth(pageSizes)\r\n        })\r\n    },\r\n    _renderPagesSizeChooser: function() {\r\n        var that = this;\r\n        var pageSizes = that.option(\"pageSizes\");\r\n        var showPageSizes = that.option(\"showPageSizes\");\r\n        var pagesSizesLength = pageSizes && pageSizes.length;\r\n        var $element = that.$element();\r\n        that._$pagesSizeChooser && that._$pagesSizeChooser.remove();\r\n        if (!showPageSizes || !pagesSizesLength) {\r\n            return\r\n        }\r\n        that._$pagesSizeChooser = (0, _renderer.default)(\"<div>\").addClass(PAGER_PAGE_SIZES_CLASS).appendTo($element);\r\n        if (that.option(\"lightModeEnabled\")) {\r\n            that._renderLightPageSizes()\r\n        } else {\r\n            that._renderPageSizes()\r\n        }\r\n        that._pagesSizeChooserWidth = that._$pagesSizeChooser.width()\r\n    },\r\n    _renderInfo: function() {\r\n        var infoText = this.option(\"infoText\");\r\n        if (this.option(\"showInfo\") && (0, _type.isDefined)(infoText)) {\r\n            this._$info = (0, _renderer.default)(\"<div>\").css(\"display\", this._isInfoHide ? \"none\" : \"\").addClass(PAGER_INFO_CLASS).text((0, _string.format)(infoText, this.selectedPage && this.selectedPage.value(), this.option(\"pageCount\"), this.option(\"totalCount\"))).appendTo(this._$pagesChooser);\r\n            if (!this._isInfoHide) {\r\n                this._infoWidth = this._$info.outerWidth(true)\r\n            }\r\n        }\r\n    },\r\n    _renderNavigateButton: function(direction) {\r\n        var that = this;\r\n        var clickAction = that._createAction(function() {\r\n            that._nextPage(direction)\r\n        });\r\n        var $button;\r\n        if (that.option(\"showNavigationButtons\") || that.option(\"lightModeEnabled\")) {\r\n            $button = (0, _renderer.default)(\"<div>\").addClass(PAGER_NAVIGATE_BUTTON);\r\n            _events_engine.default.on($button, (0, _index.addNamespace)([_pointer.default.up, _click.name], that.Name + \"Pages\"), that._wrapClickAction(clickAction));\r\n            (0, _accessibility.registerKeyboardAction)(\"pager\", that, $button, void 0, clickAction);\r\n            that.setAria({\r\n                role: \"button\",\r\n                label: \"prev\" === direction ? \"Previous page\" : \" Next page\"\r\n            }, $button);\r\n            (0, _accessibility.setTabIndex)(that, $button);\r\n            if (that.option(\"rtlEnabled\")) {\r\n                $button.addClass(\"prev\" === direction ? PAGER_NEXT_BUTTON_CLASS : PAGER_PREV_BUTTON_CLASS);\r\n                $button.prependTo(this._$pagesChooser)\r\n            } else {\r\n                $button.addClass(\"prev\" === direction ? PAGER_PREV_BUTTON_CLASS : PAGER_NEXT_BUTTON_CLASS);\r\n                $button.appendTo(this._$pagesChooser)\r\n            }\r\n        }\r\n    },\r\n    _renderContentImpl: function() {\r\n        this.$element().toggleClass(LIGHT_MODE_CLASS, this.option(\"lightModeEnabled\"));\r\n        this._toggleVisibility(this.option(\"visible\"));\r\n        this._updatePageSizes(true);\r\n        this._updatePages(true);\r\n        (0, _accessibility.restoreFocus)(this)\r\n    },\r\n    _initMarkup: function() {\r\n        var $element = this.$element();\r\n        $element.addClass(PAGER_CLASS);\r\n        var $pageSize = (0, _renderer.default)(\"<div>\").addClass(PAGER_PAGE_CLASS);\r\n        this._$pagesChooser = (0, _renderer.default)(\"<div>\").addClass(PAGER_PAGES_CLASS).append($pageSize).appendTo($element)\r\n    },\r\n    _render: function() {\r\n        this.option().lightModeEnabled = false;\r\n        this.callBase();\r\n        this._updateLightMode()\r\n    },\r\n    _updatePageSizes: function(forceRender) {\r\n        var lightModeEnabled = this.option(\"lightModeEnabled\");\r\n        var pageSize = this.option(\"pageSize\");\r\n        var pageSizes = this.option(\"pageSizes\");\r\n        if (lightModeEnabled) {\r\n            this._pageSizeEditor && this._pageSizeEditor.option({\r\n                value: pageSize,\r\n                dataSource: pageSizes,\r\n                width: this._calculateLightPageSizesWidth(pageSizes)\r\n            })\r\n        }\r\n        if (!lightModeEnabled || forceRender) {\r\n            this._renderPagesSizeChooser()\r\n        }\r\n    },\r\n    _updatePages: function(forceRender) {\r\n        var pageCount = this.option(\"pageCount\");\r\n        var pageIndex = this.option(\"pageIndex\");\r\n        var lightModeEnabled = this.option(\"lightModeEnabled\");\r\n        if (!lightModeEnabled) {\r\n            this._processSelectedPage(this.option(\"maxPagesCount\"), pageIndex, pageCount);\r\n            this._pages = this._getPages(this.selectedPage, pageCount);\r\n            this._selectPageByValue(pageIndex)\r\n        } else {\r\n            this._pageIndexEditor && this._pageIndexEditor.option({\r\n                value: pageIndex,\r\n                width: this._calculateLightPagesWidth(this._pageIndexEditor.$element(), pageCount)\r\n            })\r\n        }\r\n        if (!lightModeEnabled || forceRender) {\r\n            this._renderPagesChooser()\r\n        }\r\n        this._updateButtonsState(pageIndex)\r\n    },\r\n    _isPageIndexInvalid: function(direction, pageIndex) {\r\n        var isNextDirection = \"next\" === direction;\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        if (rtlEnabled && isNextDirection || !rtlEnabled && !isNextDirection) {\r\n            return pageIndex <= 1\r\n        }\r\n        return pageIndex >= this.option(\"pageCount\")\r\n    },\r\n    _updateButtonsState: function(pageIndex) {\r\n        var nextButton = this.$element().find(\".\" + PAGER_NEXT_BUTTON_CLASS);\r\n        var prevButton = this.$element().find(\".\" + PAGER_PREV_BUTTON_CLASS);\r\n        nextButton.toggleClass(PAGER_BUTTON_DISABLE_CLASS, this._isPageIndexInvalid(\"next\", pageIndex));\r\n        prevButton.toggleClass(PAGER_BUTTON_DISABLE_CLASS, this._isPageIndexInvalid(\"prev\", pageIndex))\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"visible\":\r\n                this._toggleVisibility(args.value);\r\n                break;\r\n            case \"pageIndex\":\r\n                var pageIndexChanged = this.option(\"pageIndexChanged\");\r\n                if (pageIndexChanged) {\r\n                    pageIndexChanged(args.value)\r\n                }\r\n                this._updatePages();\r\n                break;\r\n            case \"maxPagesCount\":\r\n            case \"pageCount\":\r\n            case \"totalCount\":\r\n            case \"hasKnownLastPage\":\r\n            case \"pagesNavigatorVisible\":\r\n            case \"showNavigationButtons\":\r\n                this._updatePages();\r\n                break;\r\n            case \"pageSize\":\r\n                var pageSizeChanged = this.option(\"pageSizeChanged\");\r\n                if (pageSizeChanged) {\r\n                    pageSizeChanged(args.value)\r\n                }\r\n                this._updatePageSizes();\r\n                break;\r\n            case \"pageSizes\":\r\n                this._updatePageSizes();\r\n                break;\r\n            case \"lightModeEnabled\":\r\n                this._renderContentImpl();\r\n                !args.value && this._updateLightMode();\r\n                break;\r\n            default:\r\n                this._invalidate()\r\n        }\r\n    },\r\n    _clean: function() {\r\n        if (this._$pagesChooser) {\r\n            _events_engine.default.off(this._$pagesChooser, (0, _index.addNamespace)([_pointer.default.up, _click.name], this.Name + \"Pages\"), PAGER_PAGE_CLASS_SELECTOR, this._pageClickHandler);\r\n            (0, _accessibility.registerKeyboardAction)(\"pager\", this, this._$pagesChooser, PAGER_PAGE_CLASS_SELECTOR, this._pageKeyDownHandler)\r\n        }\r\n        this.callBase()\r\n    },\r\n    _getMinPagerWidth: function() {\r\n        var pagesChooserWidth = (0, _type.isDefined)(this._pagesChooserWidth) ? this._pagesChooserWidth : 0;\r\n        var pagesSizeChooserWidth = (0, _type.isDefined)(this._pagesSizeChooserWidth) ? this._pagesSizeChooserWidth : 0;\r\n        return pagesChooserWidth + pagesSizeChooserWidth\r\n    },\r\n    _updatePagesChooserWidth: (0, _common.deferUpdater)(function() {\r\n        var lastPageWidth = this._pages && this._pages.length > 0 ? this._pages[this._pages.length - 1]._$page.width() : 0;\r\n        this._pagesChooserWidth = this._$pagesChooser.width() + lastPageWidth\r\n    }),\r\n    _updateLightMode: (0, _common.deferUpdater)(function() {\r\n        var that = this;\r\n        var width = this.$element().width();\r\n        var infoWidth = (0, _type.isDefined)(this._infoWidth) ? this._infoWidth : 0;\r\n        (0, _common.deferRender)(function() {\r\n            if (that._isInfoHide && width > that._getMinPagerWidth() + infoWidth) {\r\n                that._$info.show();\r\n                that._updatePagesChooserWidth();\r\n                that._isInfoHide = false\r\n            }\r\n            if (!that._isInfoHide && width > that._getMinPagerWidth() - infoWidth && width < that._getMinPagerWidth()) {\r\n                that._$info.hide();\r\n                that._updatePagesChooserWidth();\r\n                that._isInfoHide = true\r\n            }(0, _common.deferUpdate)(function() {\r\n                (0, _common.deferRender)(function() {\r\n                    if (that.option(\"lightModeEnabled\") && width > that._previousWidth) {\r\n                        that.option(\"lightModeEnabled\", false)\r\n                    } else {\r\n                        if (width < that._getMinPagerWidth()) {\r\n                            that.option(\"lightModeEnabled\", true)\r\n                        }\r\n                    }\r\n                    that._previousWidth = width\r\n                })\r\n            })\r\n        })\r\n    }),\r\n    _dimensionChanged: function() {\r\n        this._updateLightMode()\r\n    },\r\n    getHeight: function() {\r\n        return this.option(\"visible\") ? this.$element().outerHeight() : 0\r\n    }\r\n});\r\nvar _default = Pager;\r\nexports.default = _default;\r\n(0, _component_registrator.default)(\"dxPager\", Pager);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.AllDayPanelLayout = AllDayPanelLayout;\r\nexports.AllDayPanelLayoutProps = exports.viewFunction = void 0;\r\nvar _combine_classes = require(\"../../../../../../utils/combine_classes\");\r\nvar _table = require(\"../../table\");\r\nvar _table_body = require(\"./table_body\");\r\nvar _layout_props = require(\"../../layout_props\");\r\nvar _const = require(\"../../../const\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(\"div\", _extends({}, viewModel.restAttributes, {\r\n        className: viewModel.classes\r\n    }), viewModel.props.visible && Preact.h(_table.Table, {\r\n        className: \"dx-scheduler-all-day-table\",\r\n        height: viewModel.emptyTableHeight\r\n    }, Preact.h(_table_body.AllDayPanelTableBody, {\r\n        viewData: viewModel.allDayPanelData,\r\n        dataCellTemplate: viewModel.props.dataCellTemplate\r\n    })))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar AllDayPanelLayoutProps = _objectSpread(_objectSpread({}, _layout_props.LayoutProps), {}, {\r\n    className: \"\",\r\n    visible: true\r\n});\r\nexports.AllDayPanelLayoutProps = AllDayPanelLayoutProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction AllDayPanelLayout(props) {\r\n    var __allDayPanelData = (0, _hooks.useCallback)(function() {\r\n        return props.viewData.groupedData[0].allDayPanel\r\n    }, [props.viewData]);\r\n    var __emptyTableHeight = (0, _hooks.useCallback)(function() {\r\n        return __allDayPanelData() ? void 0 : _const.DefaultSizes.allDayPanelHeight\r\n    }, [props.viewData]);\r\n    var __classes = (0, _hooks.useCallback)(function() {\r\n        return (0, _combine_classes.combineClasses)(_defineProperty({\r\n            \"dx-scheduler-all-day-panel\": true,\r\n            \"dx-hidden\": !props.visible\r\n        }, props.className, !!props.className))\r\n    }, [props.visible, props.className]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.className, props.dataCellTemplate, props.groupOrientation, props.viewData, props.visible, _objectWithoutProperties(props, [\"className\", \"dataCellTemplate\", \"groupOrientation\", \"viewData\", \"visible\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n        }),\r\n        allDayPanelData: __allDayPanelData(),\r\n        emptyTableHeight: __emptyTableHeight(),\r\n        classes: __classes(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nAllDayPanelLayout.defaultProps = _objectSpread({}, AllDayPanelLayoutProps);\r\n","/**\r\n * DevExtreme (ui/range_slider.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _slider = _interopRequireDefault(require(\"./slider\"));\r\nvar _ui = _interopRequireDefault(require(\"./slider/ui.slider_handle\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar RANGE_SLIDER_CLASS = \"dx-rangeslider\";\r\nvar RANGE_SLIDER_START_HANDLE_CLASS = RANGE_SLIDER_CLASS + \"-start-handle\";\r\nvar RANGE_SLIDER_END_HANDLE_CLASS = RANGE_SLIDER_CLASS + \"-end-handle\";\r\nvar RangeSlider = _slider.default.inherit({\r\n    _supportedKeys: function() {\r\n        var isRTL = this.option(\"rtlEnabled\");\r\n        var that = this;\r\n        var _changeHandle = function(e, capturedHandle) {\r\n            if (that.option(\"start\") === that.option(\"end\")) {\r\n                that._capturedHandle = capturedHandle;\r\n                e.target = that._capturedHandle;\r\n                _events_engine.default.trigger(that._capturedHandle, \"focus\")\r\n            }\r\n        };\r\n        var _setHandleValue = function(e, step, sign) {\r\n            var isStart = (0, _renderer.default)(e.target).hasClass(RANGE_SLIDER_START_HANDLE_CLASS);\r\n            var valueOption = isStart ? \"start\" : \"end\";\r\n            var val = that.option(valueOption);\r\n            step = that._valueStep(step);\r\n            val += sign * (isRTL ? -step : step);\r\n            that.option(valueOption, val)\r\n        };\r\n        var moveHandleRight = function(e, step) {\r\n            _changeHandle(e, isRTL ? that._$handleStart : that._$handleEnd);\r\n            _setHandleValue(e, step, 1)\r\n        };\r\n        var moveHandleLeft = function(e, step) {\r\n            _changeHandle(e, isRTL ? that._$handleEnd : that._$handleStart);\r\n            _setHandleValue(e, step, -1)\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            leftArrow: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                moveHandleLeft(e, this.option(\"step\"))\r\n            },\r\n            rightArrow: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                moveHandleRight(e, this.option(\"step\"))\r\n            },\r\n            pageUp: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                moveHandleRight(e, this.option(\"step\") * this.option(\"keyStep\"))\r\n            },\r\n            pageDown: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                moveHandleLeft(e, this.option(\"step\") * this.option(\"keyStep\"))\r\n            },\r\n            home: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                var isStart = (0, _renderer.default)(e.target).hasClass(RANGE_SLIDER_START_HANDLE_CLASS);\r\n                var valueOption = isStart ? \"start\" : \"end\";\r\n                var startOption = isStart ? \"min\" : \"start\";\r\n                var val = this.option(startOption);\r\n                this.option(valueOption, val)\r\n            },\r\n            end: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                var isStart = (0, _renderer.default)(e.target).hasClass(RANGE_SLIDER_START_HANDLE_CLASS);\r\n                var valueOption = isStart ? \"start\" : \"end\";\r\n                var endOption = isStart ? \"end\" : \"max\";\r\n                var val = this.option(endOption);\r\n                this.option(valueOption, val)\r\n            }\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            start: 40,\r\n            end: 60,\r\n            value: [40, 60],\r\n            startName: \"\",\r\n            endName: \"\"\r\n        })\r\n    },\r\n    _renderSubmitElement: function() {\r\n        var $element = this.$element();\r\n        this._$submitStartElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").attr(\"name\", this.option(\"startName\")).appendTo($element);\r\n        this._$submitEndElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").attr(\"name\", this.option(\"endName\")).appendTo($element)\r\n    },\r\n    _initOptions: function(options) {\r\n        this.callBase(options);\r\n        var initialValue = this.initialOption(\"value\");\r\n        var value = this.option(\"value\");\r\n        if (value[0] === initialValue[0] && value[1] === initialValue[1]) {\r\n            this.option(\"value\", [this.option(\"start\"), this.option(\"end\")])\r\n        } else {\r\n            this.option({\r\n                start: value[0],\r\n                end: value[1]\r\n            })\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(RANGE_SLIDER_CLASS);\r\n        this.callBase()\r\n    },\r\n    _renderContentImpl: function() {\r\n        this._callHandlerMethod(\"repaint\");\r\n        this.callBase()\r\n    },\r\n    _renderHandle: function() {\r\n        this._$handleStart = this._renderHandleImpl(this.option(\"start\"), this._$handleStart).addClass(RANGE_SLIDER_START_HANDLE_CLASS);\r\n        this._$handleEnd = this._renderHandleImpl(this.option(\"end\"), this._$handleEnd).addClass(RANGE_SLIDER_END_HANDLE_CLASS);\r\n        this._updateHandleAriaLabels()\r\n    },\r\n    _startHandler: function(args) {\r\n        var e = args.event;\r\n        var $range = this._$range;\r\n        var rangeWidth = $range.width();\r\n        var eventOffsetX = (0, _index.eventData)(e).x - this._$bar.offset().left;\r\n        var startHandleX = $range.position().left;\r\n        var endHandleX = $range.position().left + rangeWidth;\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var startHandleIsClosest = (rtlEnabled ? -1 : 1) * ((startHandleX + endHandleX) / 2 - eventOffsetX) > 0;\r\n        this._capturedHandle = startHandleIsClosest ? this._$handleStart : this._$handleEnd;\r\n        this.callBase(args)\r\n    },\r\n    _updateHandleAriaLabels: function() {\r\n        this.setAria(\"label\", _message.default.getFormatter(\"dxRangeSlider-ariaFrom\")(this.option(\"dxRangeSlider-ariaFrom\")), this._$handleStart);\r\n        this.setAria(\"label\", _message.default.getFormatter(\"dxRangeSlider-ariaTill\")(this.option(\"dxRangeSlider-ariaTill\")), this._$handleEnd)\r\n    },\r\n    _activeHandle: function() {\r\n        return this._capturedHandle\r\n    },\r\n    _updateHandlePosition: function(e) {\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var offsetDirection = rtlEnabled ? -1 : 1;\r\n        var max = this.option(\"max\");\r\n        var min = this.option(\"min\");\r\n        var newRatio = this._startOffset + offsetDirection * e.event.offset / this._swipePixelRatio();\r\n        newRatio = newRatio.toPrecision(12);\r\n        var newValue = newRatio * (max - min) + min;\r\n        this._updateSelectedRangePosition(newRatio, newRatio);\r\n        _ui.default.getInstance(this._activeHandle()).fitTooltipPosition;\r\n        this._changeValueOnSwipe(newRatio);\r\n        var startValue = this.option(\"start\");\r\n        var endValue = this.option(\"end\");\r\n        var $nextHandle;\r\n        if (startValue === endValue) {\r\n            if (newValue < startValue) {\r\n                $nextHandle = this._$handleStart\r\n            } else {\r\n                $nextHandle = this._$handleEnd\r\n            }\r\n            _events_engine.default.trigger($nextHandle, \"focus\");\r\n            if ($nextHandle && $nextHandle !== this._capturedHandle) {\r\n                this._updateSelectedRangePosition((startValue - min) / (max - min), (endValue - min) / (max - min));\r\n                this._toggleActiveState(this._activeHandle(), false);\r\n                this._toggleActiveState($nextHandle, true);\r\n                this._capturedHandle = $nextHandle\r\n            }\r\n            this._updateSelectedRangePosition(newRatio, newRatio);\r\n            this._changeValueOnSwipe(newRatio)\r\n        }\r\n    },\r\n    _updateSelectedRangePosition: function(leftRatio, rightRatio) {\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var moveRight = this._capturedHandle === this._$handleStart && rtlEnabled || this._capturedHandle === this._$handleEnd && !rtlEnabled;\r\n        var prop = moveRight ? \"right\" : \"left\";\r\n        if (rtlEnabled ^ moveRight) {\r\n            this._$range.css(prop, 100 - 100 * rightRatio + \"%\")\r\n        } else {\r\n            this._$range.css(prop, 100 * leftRatio + \"%\")\r\n        }\r\n    },\r\n    _setValueOnSwipe: function(value) {\r\n        var option = this._capturedHandle === this._$handleStart ? \"start\" : \"end\";\r\n        var start = this.option(\"start\");\r\n        var end = this.option(\"end\");\r\n        var max = this.option(\"max\");\r\n        var min = this.option(\"min\");\r\n        start = Math.min(Math.max(start, min), max);\r\n        end = Math.min(Math.max(end, min), max);\r\n        if (\"start\" === option) {\r\n            start = value > end ? end : value\r\n        } else {\r\n            end = value < start ? start : value\r\n        }\r\n        this.option(\"value\", [start, end])\r\n    },\r\n    _renderValue: function() {\r\n        var valStart = this.option(\"start\");\r\n        var valEnd = this.option(\"end\");\r\n        var min = this.option(\"min\");\r\n        var max = this.option(\"max\");\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        valStart = Math.max(min, Math.min(valStart, max));\r\n        valEnd = Math.max(valStart, Math.min(valEnd, max));\r\n        this._setOptionWithoutOptionChange(\"start\", valStart);\r\n        this._setOptionWithoutOptionChange(\"end\", valEnd);\r\n        this._setOptionWithoutOptionChange(\"value\", [valStart, valEnd]);\r\n        this._$submitStartElement.val((0, _common.applyServerDecimalSeparator)(valStart));\r\n        this._$submitEndElement.val((0, _common.applyServerDecimalSeparator)(valEnd));\r\n        var ratio1 = max === min ? 0 : (valStart - min) / (max - min);\r\n        var ratio2 = max === min ? 0 : (valEnd - min) / (max - min);\r\n        var startOffset = parseFloat((100 * ratio1).toPrecision(12)) + \"%\";\r\n        var endOffset = parseFloat((100 * (1 - ratio2)).toPrecision(12)) + \"%\";\r\n        !this._needPreventAnimation && this._setRangeStyles({\r\n            right: rtlEnabled ? startOffset : endOffset,\r\n            left: rtlEnabled ? endOffset : startOffset\r\n        });\r\n        _ui.default.getInstance(this._$handleStart).option(\"value\", valStart);\r\n        _ui.default.getInstance(this._$handleEnd).option(\"value\", valEnd)\r\n    },\r\n    _callHandlerMethod: function(name, args) {\r\n        _ui.default.getInstance(this._$handleStart)[name](args);\r\n        _ui.default.getInstance(this._$handleEnd)[name](args)\r\n    },\r\n    _setValueOption: function() {\r\n        var start = this.option(\"start\");\r\n        var end = this.option(\"end\");\r\n        this.option(\"value\", [start, end])\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"value\":\r\n                if (args.value[0] === args.previousValue[0] && args.value[1] === args.previousValue[1]) {\r\n                    break\r\n                }\r\n                this._setOptionWithoutOptionChange(\"start\", args.value[0]);\r\n                this._setOptionWithoutOptionChange(\"end\", args.value[1]);\r\n                this._renderValue();\r\n                var start = this.option(\"start\");\r\n                var end = this.option(\"end\");\r\n                this._createActionByOption(\"onValueChanged\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                })({\r\n                    start: start,\r\n                    end: end,\r\n                    value: [start, end],\r\n                    event: this._valueChangeEventInstance\r\n                });\r\n                this.validationRequest.fire({\r\n                    value: [start, end],\r\n                    editor: this\r\n                });\r\n                this._saveValueChangeEvent(void 0);\r\n                break;\r\n            case \"start\":\r\n            case \"end\":\r\n                this._setValueOption();\r\n                break;\r\n            case \"startName\":\r\n                this._$submitStartElement.attr(\"name\", args.value);\r\n                break;\r\n            case \"endName\":\r\n                this._$submitEndElement.attr(\"name\", args.value);\r\n                break;\r\n            case \"name\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxRangeSlider\", RangeSlider);\r\nvar _default = RangeSlider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.header_panel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.HeaderPanel = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.header_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar HeaderPanel = _uiGrid_core.default.views.headerPanel;\r\nexports.HeaderPanel = HeaderPanel;\r\n_uiData_grid.default.registerModule(\"headerPanel\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/scheduler/timezones/utils.timezones_data.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _query = _interopRequireDefault(require(\"../../../data/query\"));\r\nvar _errors = _interopRequireDefault(require(\"../../../core/errors\"));\r\nvar _timezones_data = _interopRequireDefault(require(\"./timezones_data\"));\r\nvar _math = require(\"../../../core/utils/math\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar timeZoneDataUtils = {\r\n    _timeZones: _timezones_data.default.zones,\r\n    getDisplayedTimeZones: function(timestamp) {\r\n        var _this = this;\r\n        var timeZones = this._timeZones.map(function(timezone) {\r\n            var offset = _this.getUtcOffset(timezone.offsets, timezone.offsetIndices, timezone.untils, timestamp);\r\n            var title = \"(GMT \".concat(_this.formatOffset(offset), \") \").concat(_this.formatId(timezone.id));\r\n            return {\r\n                offset: offset,\r\n                title: title,\r\n                id: timezone.id\r\n            }\r\n        });\r\n        return (0, _query.default)(timeZones).sortBy(\"offset\").toArray()\r\n    },\r\n    formatOffset: function(offset) {\r\n        var hours = Math.floor(offset);\r\n        var minutesInDecimal = offset - hours;\r\n        var signString = (0, _math.sign)(offset) >= 0 ? \"+\" : \"-\";\r\n        var hoursString = \"0\".concat(Math.abs(hours)).slice(-2);\r\n        var minutesString = minutesInDecimal > 0 ? \":\".concat(60 * minutesInDecimal) : \":00\";\r\n        return signString + hoursString + minutesString\r\n    },\r\n    formatId: function(id) {\r\n        return id.split(\"/\").join(\" - \").split(\"_\").join(\" \")\r\n    },\r\n    getTimezoneById: function(id) {\r\n        var result;\r\n        var i = 0;\r\n        var tzList = this._timeZones;\r\n        if (id) {\r\n            while (!result) {\r\n                if (!tzList[i]) {\r\n                    _errors.default.log(\"W0009\", id);\r\n                    return\r\n                }\r\n                var currentId = tzList[i].id;\r\n                if (currentId === id) {\r\n                    result = tzList[i]\r\n                }\r\n                i++\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    getTimeZoneOffsetById: function(id, timestamp) {\r\n        var tz = this.getTimezoneById(id);\r\n        var offsets;\r\n        var offsetIndices;\r\n        var untils;\r\n        var result;\r\n        if (tz) {\r\n            offsets = tz.offsets;\r\n            untils = tz.untils;\r\n            offsetIndices = tz.offsetIndices;\r\n            result = this.getUtcOffset(offsets, offsetIndices, untils, timestamp)\r\n        }\r\n        return result\r\n    },\r\n    getUtcOffset: function(offsets, offsetIndices, untils, dateTimeStamp) {\r\n        var index = 0;\r\n        var offsetIndicesList = offsetIndices.split(\"\");\r\n        var offsetsList = offsets.split(\"|\");\r\n        var untilsList = untils.split(\"|\").map(function(until) {\r\n            if (\"Infinity\" === until) {\r\n                return null\r\n            }\r\n            return 1e3 * parseInt(until, 36)\r\n        });\r\n        var currentUntil = 0;\r\n        for (var i = 0, listLength = untilsList.length; i < listLength; i++) {\r\n            currentUntil += untilsList[i];\r\n            if (dateTimeStamp >= currentUntil) {\r\n                index = i;\r\n                continue\r\n            } else {\r\n                break\r\n            }\r\n        }\r\n        if (untilsList[index + 1]) {\r\n            index++\r\n        }\r\n        var offset = Number(offsetsList[Number(offsetIndicesList[index])]);\r\n        return -offset / 60 || offset\r\n    }\r\n};\r\nvar _default = timeZoneDataUtils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/modules/mentions.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _data = require(\"../../../core/utils/data\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _element = require(\"../../../core/element\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _popup = _interopRequireDefault(require(\"./popup\"));\r\nvar _mention = _interopRequireDefault(require(\"../formats/mention\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar MentionModule = {};\r\nif (_devextremeQuill.default) {\r\n    var USER_ACTION = \"user\";\r\n    var SILENT_ACTION = \"silent\";\r\n    var DEFAULT_MARKER = \"@\";\r\n    var KEYS = {\r\n        ARROW_UP: \"upArrow\",\r\n        ARROW_DOWN: \"downArrow\",\r\n        ARROW_LEFT: \"leftArrow\",\r\n        ARROW_RIGHT: \"rightArrow\",\r\n        ENTER: \"enter\",\r\n        ESCAPE: \"escape\",\r\n        SPACE: \"space\",\r\n        PAGE_UP: \"pageUp\",\r\n        PAGE_DOWN: \"pageDown\",\r\n        END: \"end\",\r\n        HOME: \"home\"\r\n    };\r\n    var NAVIGATION_KEYS = [KEYS.ARROW_LEFT, KEYS.ARROW_RIGHT, KEYS.PAGE_UP, KEYS.PAGE_DOWN, KEYS.END, KEYS.HOME];\r\n    var ALLOWED_PREFIX_CHARS = [\" \", \"\\n\"];\r\n    var DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\n    _devextremeQuill.default.register({\r\n        \"formats/mention\": _mention.default\r\n    }, true);\r\n    MentionModule = function(_PopupModule) {\r\n        _inherits(MentionModule, _PopupModule);\r\n        var _super = _createSuper(MentionModule);\r\n        _createClass(MentionModule, [{\r\n            key: \"_getDefaultOptions\",\r\n            value: function() {\r\n                var baseConfig = _get(_getPrototypeOf(MentionModule.prototype), \"_getDefaultOptions\", this).call(this);\r\n                return (0, _extend.extend)(baseConfig, {\r\n                    itemTemplate: \"item\",\r\n                    valueExpr: \"this\",\r\n                    displayExpr: \"this\",\r\n                    template: null,\r\n                    searchExpr: null,\r\n                    searchTimeout: 500,\r\n                    minSearchLength: 0\r\n                })\r\n            }\r\n        }]);\r\n\r\n        function MentionModule(quill, options) {\r\n            var _this;\r\n            _classCallCheck(this, MentionModule);\r\n            _this = _super.call(this, quill, options);\r\n            _this._mentions = {};\r\n            _this.editorInstance = options.editorInstance;\r\n            options.mentions.forEach(function(item) {\r\n                var marker = item.marker;\r\n                if (!marker) {\r\n                    item.marker = marker = DEFAULT_MARKER\r\n                }\r\n                var template = item.template;\r\n                if (template) {\r\n                    var preparedTemplate = _this.editorInstance._getTemplate(template);\r\n                    preparedTemplate && _mention.default.addTemplate(marker, preparedTemplate)\r\n                }\r\n                _this._mentions[marker] = (0, _extend.extend)({}, _this._getDefaultOptions(), item)\r\n            });\r\n            _this._attachKeyboardHandlers();\r\n            _this.editorInstance.addCleanCallback(_this.clean.bind(_assertThisInitialized(_this)));\r\n            _this.quill.on(\"text-change\", _this.onTextChange.bind(_assertThisInitialized(_this)));\r\n            return _this\r\n        }\r\n        _createClass(MentionModule, [{\r\n            key: \"_attachKeyboardHandlers\",\r\n            value: function() {\r\n                this.quill.keyboard.addBinding({\r\n                    key: KEYS.ARROW_UP\r\n                }, this._moveToItem.bind(this, \"prev\"));\r\n                this.quill.keyboard.addBinding({\r\n                    key: KEYS.ARROW_DOWN\r\n                }, this._moveToItem.bind(this, \"next\"));\r\n                this.quill.keyboard.addBinding({\r\n                    key: [KEYS.ENTER, KEYS.SPACE]\r\n                }, this._selectItemHandler.bind(this));\r\n                var enterBindings = this.quill.keyboard.bindings[KEYS.ENTER];\r\n                enterBindings.unshift(enterBindings.pop());\r\n                this.quill.keyboard.addBinding({\r\n                    key: KEYS.ESCAPE\r\n                }, this._escapeKeyHandler.bind(this));\r\n                this.quill.keyboard.addBinding({\r\n                    key: [KEYS.ARROW_LEFT, KEYS.ARROW_RIGHT],\r\n                    shiftKey: true\r\n                }, this._ignoreKeyHandler.bind(this));\r\n                this.quill.keyboard.addBinding({\r\n                    key: NAVIGATION_KEYS\r\n                }, this._ignoreKeyHandler.bind(this))\r\n            }\r\n        }, {\r\n            key: \"_moveToItem\",\r\n            value: function(direction) {\r\n                var dataSource = this._list.getDataSource();\r\n                if (this._isMentionActive && !dataSource.isLoading()) {\r\n                    var $focusedItem = (0, _renderer.default)(this._list.option(\"focusedElement\"));\r\n                    var defaultItemPosition = \"next\" === direction ? \"first\" : \"last\";\r\n                    var $nextItem = $focusedItem[direction]();\r\n                    $nextItem = $nextItem.length ? $nextItem : this._activeListItems[defaultItemPosition]();\r\n                    this._list.option(\"focusedElement\", (0, _element.getPublicElement)($nextItem));\r\n                    this._list.scrollToItem($nextItem)\r\n                }\r\n                return !this._isMentionActive\r\n            }\r\n        }, {\r\n            key: \"_ignoreKeyHandler\",\r\n            value: function() {\r\n                return !this._isMentionActive\r\n            }\r\n        }, {\r\n            key: \"_fitIntoRange\",\r\n            value: function(value, start, end) {\r\n                if (value > end) {\r\n                    return start\r\n                }\r\n                if (value < start) {\r\n                    return end\r\n                }\r\n                return value\r\n            }\r\n        }, {\r\n            key: \"_selectItemHandler\",\r\n            value: function() {\r\n                if (this._isMentionActive) {\r\n                    this._list.selectItem(this._list.option(\"focusedElement\"))\r\n                }\r\n                return !this._isMentionActive\r\n            }\r\n        }, {\r\n            key: \"_escapeKeyHandler\",\r\n            value: function() {\r\n                if (this._isMentionActive) {\r\n                    this._popup.hide()\r\n                }\r\n                return !this._isMentionActive\r\n            }\r\n        }, {\r\n            key: \"renderList\",\r\n            value: function($container, options) {\r\n                this.compileGetters(this.options);\r\n                _get(_getPrototypeOf(MentionModule.prototype), \"renderList\", this).call(this, $container, options)\r\n            }\r\n        }, {\r\n            key: \"compileGetters\",\r\n            value: function(_ref) {\r\n                var displayExpr = _ref.displayExpr,\r\n                    valueExpr = _ref.valueExpr;\r\n                this._valueGetter = (0, _data.compileGetter)(displayExpr);\r\n                this._idGetter = (0, _data.compileGetter)(valueExpr)\r\n            }\r\n        }, {\r\n            key: \"_getListConfig\",\r\n            value: function(options) {\r\n                var _this2 = this;\r\n                var baseConfig = _get(_getPrototypeOf(MentionModule.prototype), \"_getListConfig\", this).call(this, options);\r\n                return (0, _extend.extend)(baseConfig, {\r\n                    itemTemplate: this.options.itemTemplate,\r\n                    onContentReady: function() {\r\n                        if (_this2._hasSearch) {\r\n                            _this2._popup.repaint();\r\n                            _this2._focusFirstElement();\r\n                            _this2._hasSearch = false\r\n                        }\r\n                    }\r\n                })\r\n            }\r\n        }, {\r\n            key: \"insertEmbedContent\",\r\n            value: function() {\r\n                var markerLength = this._activeMentionConfig.marker.length;\r\n                var textLength = markerLength + this._searchValue.length;\r\n                var caretPosition = this.getPosition();\r\n                var startIndex = Math.max(0, caretPosition - markerLength);\r\n                var selectedItem = this._list.option(\"selectedItem\");\r\n                var value = {\r\n                    value: this._valueGetter(selectedItem),\r\n                    id: this._idGetter(selectedItem),\r\n                    marker: this._activeMentionConfig.marker\r\n                };\r\n                setTimeout(function() {\r\n                    this.quill.insertText(startIndex, \" \", SILENT_ACTION);\r\n                    this.quill.deleteText(startIndex + 1, textLength, SILENT_ACTION);\r\n                    this.quill.insertEmbed(startIndex, \"mention\", value);\r\n                    this.quill.setSelection(startIndex + 2)\r\n                }.bind(this))\r\n            }\r\n        }, {\r\n            key: \"_getLastInsertOperation\",\r\n            value: function(ops) {\r\n                var lastOperation = ops[ops.length - 1];\r\n                var isLastOperationInsert = \"insert\" in lastOperation;\r\n                if (isLastOperationInsert) {\r\n                    return lastOperation\r\n                }\r\n                var isLastOperationDelete = \"delete\" in lastOperation;\r\n                if (isLastOperationDelete && ops.length >= 2) {\r\n                    var penultOperation = ops[ops.length - 2];\r\n                    var isPenultOperationInsert = \"insert\" in penultOperation;\r\n                    var isSelectionReplacing = isLastOperationDelete && isPenultOperationInsert;\r\n                    if (isSelectionReplacing) {\r\n                        return penultOperation\r\n                    }\r\n                }\r\n                return null\r\n            }\r\n        }, {\r\n            key: \"onTextChange\",\r\n            value: function(newDelta, oldDelta, source) {\r\n                if (source === USER_ACTION) {\r\n                    var lastOperation = newDelta.ops[newDelta.ops.length - 1];\r\n                    if (this._isMentionActive && this._isPopupVisible) {\r\n                        this._processSearchValue(lastOperation) && this._filterList(this._searchValue)\r\n                    } else {\r\n                        var ops = newDelta.ops;\r\n                        var lastInsertOperation = this._getLastInsertOperation(ops);\r\n                        if (lastInsertOperation) {\r\n                            this.checkMentionRequest(lastInsertOperation, ops)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_processSearchValue\",\r\n            value: function(operation) {\r\n                var isInsertOperation = \"insert\" in operation;\r\n                if (isInsertOperation) {\r\n                    this._searchValue += operation.insert\r\n                } else {\r\n                    if (!this._searchValue.length || operation.delete > 1) {\r\n                        this._popup.hide();\r\n                        return false\r\n                    } else {\r\n                        this._searchValue = this._searchValue.slice(0, -1)\r\n                    }\r\n                }\r\n                return true\r\n            }\r\n        }, {\r\n            key: \"checkMentionRequest\",\r\n            value: function(_ref2, ops) {\r\n                var insert = _ref2.insert;\r\n                var caret = this.quill.getSelection();\r\n                if (!insert || !(0, _type.isString)(insert) || !caret || this._isMarkerPartOfText(ops[0].retain)) {\r\n                    return\r\n                }\r\n                this._activeMentionConfig = this._mentions[insert];\r\n                if (this._activeMentionConfig) {\r\n                    this._updateList(this._activeMentionConfig);\r\n                    this.savePosition(caret.index);\r\n                    this._popup.option(\"position\", this._popupPosition);\r\n                    this._searchValue = \"\";\r\n                    this._popup.show()\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_isMarkerPartOfText\",\r\n            value: function(retain) {\r\n                if (!retain || ALLOWED_PREFIX_CHARS.indexOf(this._getCharByIndex(retain - 1)) !== -1) {\r\n                    return false\r\n                }\r\n                return true\r\n            }\r\n        }, {\r\n            key: \"_getCharByIndex\",\r\n            value: function(index) {\r\n                return this.quill.getContents(index, 1).ops[0].insert\r\n            }\r\n        }, {\r\n            key: \"_updateList\",\r\n            value: function(_ref3) {\r\n                var dataSource = _ref3.dataSource,\r\n                    displayExpr = _ref3.displayExpr,\r\n                    valueExpr = _ref3.valueExpr,\r\n                    itemTemplate = _ref3.itemTemplate,\r\n                    searchExpr = _ref3.searchExpr;\r\n                this.compileGetters({\r\n                    displayExpr: displayExpr,\r\n                    valueExpr: valueExpr\r\n                });\r\n                this._list.unselectAll();\r\n                this._list.option({\r\n                    dataSource: dataSource,\r\n                    displayExpr: displayExpr,\r\n                    itemTemplate: itemTemplate,\r\n                    searchExpr: searchExpr\r\n                })\r\n            }\r\n        }, {\r\n            key: \"_filterList\",\r\n            value: function(searchValue) {\r\n                var _this3 = this;\r\n                if (!this._isMinSearchLengthExceeded(searchValue)) {\r\n                    this._resetFilter();\r\n                    return\r\n                }\r\n                var searchTimeout = this._activeMentionConfig.searchTimeout;\r\n                if (searchTimeout) {\r\n                    clearTimeout(this._searchTimer);\r\n                    this._searchTimer = setTimeout(function() {\r\n                        _this3._search(searchValue)\r\n                    }, searchTimeout)\r\n                } else {\r\n                    this._search(searchValue)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_isMinSearchLengthExceeded\",\r\n            value: function(searchValue) {\r\n                return searchValue.length >= this._activeMentionConfig.minSearchLength\r\n            }\r\n        }, {\r\n            key: \"_resetFilter\",\r\n            value: function() {\r\n                clearTimeout(this._searchTimer);\r\n                this._search(null)\r\n            }\r\n        }, {\r\n            key: \"_search\",\r\n            value: function(searchValue) {\r\n                this._hasSearch = true;\r\n                this._list.option(\"searchValue\", searchValue)\r\n            }\r\n        }, {\r\n            key: \"_focusFirstElement\",\r\n            value: function() {\r\n                if (!this._list) {\r\n                    return\r\n                }\r\n                var $firstItem = this._activeListItems.first();\r\n                this._list.option(\"focusedElement\", (0, _element.getPublicElement)($firstItem));\r\n                this._list.scrollToItem($firstItem)\r\n            }\r\n        }, {\r\n            key: \"_getPopupConfig\",\r\n            value: function() {\r\n                var _this4 = this;\r\n                return (0, _extend.extend)(_get(_getPrototypeOf(MentionModule.prototype), \"_getPopupConfig\", this).call(this), {\r\n                    closeOnTargetScroll: false,\r\n                    onShown: function() {\r\n                        _this4._isMentionActive = true;\r\n                        _this4._hasSearch = false;\r\n                        _this4._focusFirstElement()\r\n                    },\r\n                    onHidden: function() {\r\n                        _this4._list.unselectAll();\r\n                        _this4._list.option(\"focusedElement\", null);\r\n                        _this4._isMentionActive = false;\r\n                        _this4._search(null)\r\n                    },\r\n                    focusStateEnabled: false\r\n                })\r\n            }\r\n        }, {\r\n            key: \"clean\",\r\n            value: function() {\r\n                var _this5 = this;\r\n                Object.keys(this._mentions).forEach(function(marker) {\r\n                    if (_this5._mentions[marker].template) {\r\n                        _mention.default.removeTemplate(marker)\r\n                    }\r\n                })\r\n            }\r\n        }, {\r\n            key: \"_isPopupVisible\",\r\n            get: function() {\r\n                var _this$_popup;\r\n                return null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.option(\"visible\")\r\n            }\r\n        }, {\r\n            key: \"_popupPosition\",\r\n            get: function() {\r\n                var position = this.getPosition();\r\n                var _this$quill$getBounds = this.quill.getBounds(position ? position - 1 : position),\r\n                    mentionLeft = _this$quill$getBounds.left,\r\n                    mentionTop = _this$quill$getBounds.top,\r\n                    mentionHeight = _this$quill$getBounds.height;\r\n                var _$$offset = (0, _renderer.default)(this.quill.root).offset(),\r\n                    leftOffset = _$$offset.left,\r\n                    topOffset = _$$offset.top;\r\n                var positionEvent = _events_engine.default.Event(\"positionEvent\", {\r\n                    pageX: leftOffset + mentionLeft,\r\n                    pageY: topOffset + mentionTop\r\n                });\r\n                return {\r\n                    of: positionEvent,\r\n                    offset: {\r\n                        v: mentionHeight\r\n                    },\r\n                    my: \"top left\",\r\n                    at: \"top left\",\r\n                    collision: {\r\n                        y: \"flip\",\r\n                        x: \"flipfit\"\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_activeListItems\",\r\n            get: function() {\r\n                return this._list.itemElements().filter(\":not(.\".concat(DISABLED_STATE_CLASS, \")\"))\r\n            }\r\n        }]);\r\n        return MentionModule\r\n    }(_popup.default)\r\n}\r\nvar _default = MentionModule;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/modules/popup.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _popup = _interopRequireDefault(require(\"../../popup\"));\r\nvar _list = _interopRequireDefault(require(\"../../list\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar ListPopupModule = {};\r\nif (_devextremeQuill.default) {\r\n    var SUGGESTION_LIST_CLASS = \"dx-suggestion-list\";\r\n    var SUGGESTION_LIST_WRAPPER_CLASS = \"dx-suggestion-list-wrapper\";\r\n    var BaseModule = _devextremeQuill.default.import(\"core/module\");\r\n    var MIN_HEIGHT = 100;\r\n    ListPopupModule = function(_BaseModule) {\r\n        _inherits(ListPopupModule, _BaseModule);\r\n        var _super = _createSuper(ListPopupModule);\r\n        _createClass(ListPopupModule, [{\r\n            key: \"_getDefaultOptions\",\r\n            value: function() {\r\n                return {\r\n                    dataSource: null\r\n                }\r\n            }\r\n        }]);\r\n\r\n        function ListPopupModule(quill, options) {\r\n            var _this;\r\n            _classCallCheck(this, ListPopupModule);\r\n            _this = _super.call(this, quill, options);\r\n            _this.options = (0, _extend.extend)({}, _this._getDefaultOptions(), options);\r\n            _this._popup = _this.renderPopup();\r\n            _this._popup._wrapper().addClass(SUGGESTION_LIST_WRAPPER_CLASS);\r\n            return _this\r\n        }\r\n        _createClass(ListPopupModule, [{\r\n            key: \"renderList\",\r\n            value: function($container, options) {\r\n                var $list = (0, _renderer.default)(\"<div>\").addClass(SUGGESTION_LIST_CLASS).appendTo($container);\r\n                this._list = this.options.editorInstance._createComponent($list, _list.default, options)\r\n            }\r\n        }, {\r\n            key: \"renderPopup\",\r\n            value: function() {\r\n                var editorInstance = this.options.editorInstance;\r\n                var $container = (0, _renderer.default)(\"<div>\").appendTo(editorInstance.$element());\r\n                var popupConfig = this._getPopupConfig();\r\n                return editorInstance._createComponent($container, _popup.default, popupConfig)\r\n            }\r\n        }, {\r\n            key: \"_getPopupConfig\",\r\n            value: function() {\r\n                var _this2 = this;\r\n                return {\r\n                    contentTemplate: function(contentElem) {\r\n                        var listConfig = _this2._getListConfig(_this2.options);\r\n                        _this2.renderList((0, _renderer.default)(contentElem), listConfig)\r\n                    },\r\n                    deferRendering: false,\r\n                    onShown: function() {\r\n                        _this2._list.focus()\r\n                    },\r\n                    onHidden: function() {\r\n                        _this2._list.unselectAll();\r\n                        _this2._list.option(\"focusedElement\", null)\r\n                    },\r\n                    showTitle: false,\r\n                    width: \"auto\",\r\n                    height: \"auto\",\r\n                    shading: false,\r\n                    closeOnTargetScroll: true,\r\n                    closeOnOutsideClick: true,\r\n                    animation: {\r\n                        show: {\r\n                            type: \"fade\",\r\n                            duration: 0,\r\n                            from: 0,\r\n                            to: 1\r\n                        },\r\n                        hide: {\r\n                            type: \"fade\",\r\n                            duration: 400,\r\n                            from: 1,\r\n                            to: 0\r\n                        }\r\n                    },\r\n                    fullScreen: false,\r\n                    maxHeight: this.maxHeight\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_getListConfig\",\r\n            value: function(options) {\r\n                return {\r\n                    dataSource: options.dataSource,\r\n                    onSelectionChanged: this.selectionChangedHandler.bind(this),\r\n                    selectionMode: \"single\",\r\n                    pageLoadMode: \"scrollBottom\"\r\n                }\r\n            }\r\n        }, {\r\n            key: \"selectionChangedHandler\",\r\n            value: function(e) {\r\n                if (this._popup.option(\"visible\")) {\r\n                    this._popup.hide();\r\n                    this.insertEmbedContent(e)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"insertEmbedContent\",\r\n            value: function(selectionChangedEvent) {}\r\n        }, {\r\n            key: \"showPopup\",\r\n            value: function() {\r\n                this._popup && this._popup.show()\r\n            }\r\n        }, {\r\n            key: \"savePosition\",\r\n            value: function(position) {\r\n                this.caretPosition = position\r\n            }\r\n        }, {\r\n            key: \"getPosition\",\r\n            value: function() {\r\n                return this.caretPosition\r\n            }\r\n        }, {\r\n            key: \"maxHeight\",\r\n            get: function() {\r\n                var window = (0, _window.getWindow)();\r\n                var windowHeight = window && (0, _renderer.default)(window).height() || 0;\r\n                return Math.max(MIN_HEIGHT, .5 * windowHeight)\r\n            }\r\n        }]);\r\n        return ListPopupModule\r\n    }(BaseModule)\r\n}\r\nvar _default = ListPopupModule;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/selection/selection.strategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _class.default.inherit({\r\n    ctor: function(options) {\r\n        this.options = options;\r\n        this._setOption(\"disabledItemKeys\", []);\r\n        this._clearItemKeys()\r\n    },\r\n    _clearItemKeys: function() {\r\n        this._setOption(\"addedItemKeys\", []);\r\n        this._setOption(\"removedItemKeys\", []);\r\n        this._setOption(\"removedItems\", []);\r\n        this._setOption(\"addedItems\", [])\r\n    },\r\n    validate: _common.noop,\r\n    _setOption: function(name, value) {\r\n        this.options[name] = value\r\n    },\r\n    onSelectionChanged: function onSelectionChanged() {\r\n        var addedItemKeys = this.options.addedItemKeys;\r\n        var removedItemKeys = this.options.removedItemKeys;\r\n        var addedItems = this.options.addedItems;\r\n        var removedItems = this.options.removedItems;\r\n        var selectedItems = this.options.selectedItems;\r\n        var selectedItemKeys = this.options.selectedItemKeys;\r\n        var onSelectionChanged = this.options.onSelectionChanged || _common.noop;\r\n        this._clearItemKeys();\r\n        onSelectionChanged({\r\n            selectedItems: selectedItems,\r\n            selectedItemKeys: selectedItemKeys,\r\n            addedItemKeys: addedItemKeys,\r\n            removedItemKeys: removedItemKeys,\r\n            addedItems: addedItems,\r\n            removedItems: removedItems\r\n        })\r\n    },\r\n    equalKeys: function(key1, key2) {\r\n        if (this.options.equalByReference) {\r\n            if ((0, _type.isObject)(key1) && (0, _type.isObject)(key2)) {\r\n                return key1 === key2\r\n            }\r\n        }\r\n        return (0, _common.equalByValue)(key1, key2)\r\n    },\r\n    getSelectableItems: function(items) {\r\n        return items.filter(function(item) {\r\n            return !item.disabled\r\n        })\r\n    },\r\n    _clearSelection: function(keys, preserve, isDeselect, isSelectAll) {\r\n        keys = keys || [];\r\n        keys = Array.isArray(keys) ? keys : [keys];\r\n        this.validate();\r\n        return this.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)\r\n    },\r\n    _loadFilteredData: function(remoteFilter, localFilter, select, isSelectAll) {\r\n        var filterLength = encodeURI(JSON.stringify(remoteFilter)).length;\r\n        var needLoadAllData = this.options.maxFilterLengthInRequest && filterLength > this.options.maxFilterLengthInRequest;\r\n        var deferred = new _deferred.Deferred;\r\n        var loadOptions = {\r\n            filter: needLoadAllData ? void 0 : remoteFilter,\r\n            select: needLoadAllData ? this.options.dataFields() : select || this.options.dataFields()\r\n        };\r\n        if (remoteFilter && 0 === remoteFilter.length) {\r\n            deferred.resolve([])\r\n        } else {\r\n            this.options.load(loadOptions).done(function(items) {\r\n                var filteredItems = (0, _type.isPlainObject)(items) ? items.data : items;\r\n                if (localFilter && !isSelectAll) {\r\n                    filteredItems = filteredItems.filter(localFilter)\r\n                } else {\r\n                    if (needLoadAllData) {\r\n                        filteredItems = (0, _query.default)(filteredItems).filter(remoteFilter).toArray()\r\n                    }\r\n                }\r\n                deferred.resolve(filteredItems)\r\n            }).fail(deferred.reject.bind(deferred))\r\n        }\r\n        return deferred\r\n    },\r\n    updateSelectedItemKeyHash: function(keys) {\r\n        for (var i = 0; i < keys.length; i++) {\r\n            var keyHash = (0, _common.getKeyHash)(keys[i]);\r\n            if (!(0, _type.isObject)(keyHash)) {\r\n                this.options.keyHashIndices[keyHash] = this.options.keyHashIndices[keyHash] || [];\r\n                var keyIndices = this.options.keyHashIndices[keyHash];\r\n                keyIndices.push(i)\r\n            }\r\n        }\r\n    },\r\n    _isAnyItemSelected: function(items) {\r\n        for (var i = 0; i < items.length; i++) {\r\n            if (this.options.isItemSelected(items[i])) {\r\n                return\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _getFullSelectAllState: function() {\r\n        var items = this.options.plainItems();\r\n        var dataFilter = this.options.filter();\r\n        var selectedItems = this.options.selectedItems;\r\n        if (dataFilter) {\r\n            selectedItems = (0, _query.default)(selectedItems).filter(dataFilter).toArray()\r\n        }\r\n        var selectedItemsLength = selectedItems.length;\r\n        if (!selectedItemsLength) {\r\n            return this._isAnyItemSelected(items)\r\n        }\r\n        if (selectedItemsLength >= this.options.totalCount() - this.options.disabledItemKeys.length) {\r\n            return true\r\n        }\r\n        return\r\n    },\r\n    _getVisibleSelectAllState: function() {\r\n        var items = this.getSelectableItems(this.options.plainItems());\r\n        var hasSelectedItems = false;\r\n        var hasUnselectedItems = false;\r\n        for (var i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            var itemData = this.options.getItemData(item);\r\n            var key = this.options.keyOf(itemData);\r\n            if (this.options.isSelectableItem(item)) {\r\n                if (this.isItemKeySelected(key)) {\r\n                    hasSelectedItems = true\r\n                } else {\r\n                    hasUnselectedItems = true\r\n                }\r\n            }\r\n        }\r\n        if (hasSelectedItems) {\r\n            return !hasUnselectedItems ? true : void 0\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (bundles/modules/core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar windowUtils = require(\"../../core/utils/window\");\r\nvar window = windowUtils.getWindow();\r\nvar DevExpress = window.DevExpress = window.DevExpress || {};\r\nvar errors = DevExpress.errors = require(\"../../core/errors\");\r\nif (DevExpress._DEVEXTREME_BUNDLE_INITIALIZED) {\r\n    throw errors.Error(\"E0024\")\r\n}\r\nDevExpress._DEVEXTREME_BUNDLE_INITIALIZED = true;\r\nDevExpress.clientExporter = require(\"../../exporter\");\r\nDevExpress.excelExporter = require(\"../../excel_exporter\");\r\nDevExpress.pdfExporter = require(\"../../pdf_exporter\");\r\nDevExpress.VERSION = require(\"../../core/version\");\r\nDevExpress.Class = require(\"../../core/class\");\r\nDevExpress.DOMComponent = require(\"../../core/dom_component\");\r\nDevExpress.Component = require(\"../../core/component\");\r\nDevExpress.registerComponent = require(\"../../core/component_registrator\");\r\nDevExpress.devices = require(\"../../core/devices\");\r\nDevExpress.Color = require(\"../../color\");\r\nvar animationFrame = require(\"../../animation/frame\");\r\nDevExpress.utils = {};\r\nDevExpress.utils.requestAnimationFrame = animationFrame.requestAnimationFrame;\r\nDevExpress.utils.cancelAnimationFrame = animationFrame.cancelAnimationFrame;\r\nDevExpress.utils.initMobileViewport = require(\"../../mobile/init_mobile_viewport/init_mobile_viewport\").initMobileViewport;\r\nDevExpress.utils.getTimeZones = require(\"../../time_zone_utils\").getTimeZones;\r\nDevExpress.utils.extendFromObject = require(\"../../core/utils/extend\").extendFromObject;\r\nDevExpress.utils.triggerShownEvent = require(\"../../events/visibility_change\").triggerShownEvent;\r\nDevExpress.utils.triggerHidingEvent = require(\"../../events/visibility_change\").triggerHidingEvent;\r\nDevExpress.utils.resetActiveElement = require(\"../../core/utils/dom\").resetActiveElement;\r\nDevExpress.utils.findBestMatches = require(\"../../core/utils/common\").findBestMatches;\r\nDevExpress.createQueue = require(\"../../core/utils/queue\").create;\r\nDevExpress.utils.dom = require(\"../../core/utils/dom\");\r\nDevExpress.utils.common = require(\"../../core/utils/common\");\r\nDevExpress.utils.date = require(\"../../core/utils/date\");\r\nDevExpress.utils.browser = require(\"../../core/utils/browser\");\r\nDevExpress.utils.inflector = require(\"../../core/utils/inflector\");\r\nDevExpress.utils.iterator = require(\"../../core/utils/iterator\");\r\nDevExpress.utils.readyCallbacks = require(\"../../core/utils/ready_callbacks\");\r\nDevExpress.utils.resizeCallbacks = require(\"../../core/utils/resize_callbacks\");\r\nDevExpress.utils.console = require(\"../../core/utils/console\");\r\nDevExpress.utils.string = require(\"../../core/utils/string\");\r\nDevExpress.utils.support = require(\"../../core/utils/support\");\r\nDevExpress.utils.ajax = require(\"../../core/utils/ajax\");\r\nDevExpress.viewPort = require(\"../../core/utils/view_port\").value;\r\nDevExpress.hideTopOverlay = require(\"../../mobile/hide_top_overlay\");\r\nDevExpress.formatHelper = require(\"../../format_helper\");\r\nDevExpress.config = require(\"../../core/config\");\r\nDevExpress.animationPresets = require(\"../../animation/presets/presets\").presets;\r\nDevExpress.fx = require(\"../../animation/fx\");\r\nDevExpress.TransitionExecutor = require(\"../../animation/transition_executor/transition_executor\").TransitionExecutor;\r\nDevExpress.AnimationPresetCollection = require(\"../../animation/presets/presets\").PresetCollection;\r\nDevExpress.events = require(\"../../events/index\");\r\nDevExpress.events.click = require(\"../../events/click\");\r\nDevExpress.events.utils = require(\"../../events/utils/index\");\r\nDevExpress.events.GestureEmitter = require(\"../../events/gesture/emitter.gesture\");\r\nDevExpress.localization = require(\"../../localization\");\r\nDevExpress.templateRendered = require(\"../../core/templates/template_base\").renderedCallbacks;\r\nDevExpress.setTemplateEngine = require(\"../../core/templates/template_engine_registry\").setTemplateEngine;\r\nmodule.exports = DevExpress;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/xmla_store.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _xmla_store = require(\"./xmla_store/xmla_store\");\r\nvar _default = _xmla_store.XmlaStore;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/chart_components/multi_axes_synchronizer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _console = require(\"../../core/utils/console\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _math2 = require(\"../../core/utils/math\");\r\nvar _math = Math;\r\nvar _floor = _math.floor;\r\nvar _max = _math.max;\r\nvar _abs = _math.abs;\r\n\r\nfunction getValueAxesPerPanes(valueAxes) {\r\n    var result = {};\r\n    valueAxes.forEach(function(axis) {\r\n        var pane = axis.pane;\r\n        if (!result[pane]) {\r\n            result[pane] = []\r\n        }\r\n        result[pane].push(axis)\r\n    });\r\n    return result\r\n}\r\nvar linearConverter = {\r\n    transform: function(v, b) {\r\n        return (0, _math2.adjust)((0, _utils.getLog)(v, b))\r\n    },\r\n    addInterval: function(v, i) {\r\n        return (0, _math2.adjust)(v + i)\r\n    },\r\n    getInterval: function(base, tickInterval) {\r\n        return tickInterval\r\n    }\r\n};\r\nvar logConverter = {\r\n    transform: function(v, b) {\r\n        return (0, _math2.adjust)((0, _utils.raiseTo)(v, b))\r\n    },\r\n    addInterval: function(v, i) {\r\n        return (0, _math2.adjust)(v * i)\r\n    },\r\n    getInterval: function(base, tickInterval) {\r\n        return _math.pow(base, tickInterval)\r\n    }\r\n};\r\n\r\nfunction convertAxisInfo(axisInfo, converter) {\r\n    if (!axisInfo.isLogarithmic) {\r\n        return\r\n    }\r\n    var base = axisInfo.logarithmicBase;\r\n    var tickValues = axisInfo.tickValues;\r\n    var tick;\r\n    var ticks = [];\r\n    axisInfo.minValue = converter.transform(axisInfo.minValue, base);\r\n    axisInfo.oldMinValue = converter.transform(axisInfo.oldMinValue, base);\r\n    axisInfo.maxValue = converter.transform(axisInfo.maxValue, base);\r\n    axisInfo.oldMaxValue = converter.transform(axisInfo.oldMaxValue, base);\r\n    axisInfo.tickInterval = _math.round(axisInfo.tickInterval);\r\n    if (axisInfo.tickInterval < 1) {\r\n        axisInfo.tickInterval = 1\r\n    }\r\n    var interval = converter.getInterval(base, axisInfo.tickInterval);\r\n    tick = converter.transform(tickValues[0], base);\r\n    while (ticks.length < tickValues.length) {\r\n        ticks.push(tick);\r\n        tick = converter.addInterval(tick, interval)\r\n    }\r\n    ticks.tickInterval = axisInfo.tickInterval;\r\n    axisInfo.tickValues = ticks\r\n}\r\n\r\nfunction populateAxesInfo(axes) {\r\n    return axes.reduce(function(result, axis) {\r\n        var ticksValues = axis.getTicksValues();\r\n        var majorTicks = ticksValues.majorTicksValues;\r\n        var options = axis.getOptions();\r\n        var businessRange = axis.getTranslator().getBusinessRange();\r\n        var visibleArea = axis.getVisibleArea();\r\n        var axisInfo;\r\n        var tickInterval = axis._tickInterval;\r\n        var synchronizedValue = options.synchronizedValue;\r\n        if (majorTicks && majorTicks.length > 0 && (0, _type.isNumeric)(majorTicks[0]) && \"discrete\" !== options.type && !businessRange.isEmpty() && !(businessRange.breaks && businessRange.breaks.length) && \"zoom\" !== axis.getViewport().action) {\r\n            axis.applyMargins();\r\n            var startValue = axis.getTranslator().from(visibleArea[0]);\r\n            var endValue = axis.getTranslator().from(visibleArea[1]);\r\n            var minValue = startValue < endValue ? startValue : endValue;\r\n            var maxValue = startValue < endValue ? endValue : startValue;\r\n            if (minValue === maxValue && (0, _type.isDefined)(synchronizedValue)) {\r\n                tickInterval = _abs(majorTicks[0] - synchronizedValue) || 1;\r\n                minValue = majorTicks[0] - tickInterval;\r\n                maxValue = majorTicks[0] + tickInterval\r\n            }\r\n            axisInfo = {\r\n                axis: axis,\r\n                isLogarithmic: \"logarithmic\" === options.type,\r\n                logarithmicBase: businessRange.base,\r\n                tickValues: majorTicks,\r\n                minorValues: ticksValues.minorTicksValues,\r\n                minorTickInterval: axis._minorTickInterval,\r\n                minValue: minValue,\r\n                oldMinValue: minValue,\r\n                maxValue: maxValue,\r\n                oldMaxValue: maxValue,\r\n                inverted: businessRange.invert,\r\n                tickInterval: tickInterval,\r\n                synchronizedValue: synchronizedValue\r\n            };\r\n            convertAxisInfo(axisInfo, linearConverter);\r\n            result.push(axisInfo)\r\n        }\r\n        return result\r\n    }, [])\r\n}\r\n\r\nfunction updateTickValues(axesInfo) {\r\n    var maxTicksCount = axesInfo.reduce(function(max, axisInfo) {\r\n        return _max(max, axisInfo.tickValues.length)\r\n    }, 0);\r\n    axesInfo.forEach(function(axisInfo) {\r\n        var ticksMultiplier;\r\n        var ticksCount;\r\n        var additionalStartTicksCount = 0;\r\n        var synchronizedValue = axisInfo.synchronizedValue;\r\n        var tickValues = axisInfo.tickValues;\r\n        var tickInterval = axisInfo.tickInterval;\r\n        if ((0, _type.isDefined)(synchronizedValue)) {\r\n            axisInfo.baseTickValue = axisInfo.invertedBaseTickValue = synchronizedValue;\r\n            axisInfo.tickValues = [axisInfo.baseTickValue]\r\n        } else {\r\n            if (tickValues.length > 1 && tickInterval) {\r\n                ticksMultiplier = _floor((maxTicksCount + 1) / tickValues.length);\r\n                ticksCount = ticksMultiplier > 1 ? _floor((maxTicksCount + 1) / ticksMultiplier) : maxTicksCount;\r\n                additionalStartTicksCount = _floor((ticksCount - tickValues.length) / 2);\r\n                while (additionalStartTicksCount > 0 && 0 !== tickValues[0]) {\r\n                    tickValues.unshift((0, _math2.adjust)(tickValues[0] - tickInterval));\r\n                    additionalStartTicksCount--\r\n                }\r\n                while (tickValues.length < ticksCount) {\r\n                    tickValues.push((0, _math2.adjust)(tickValues[tickValues.length - 1] + tickInterval))\r\n                }\r\n                axisInfo.tickInterval = tickInterval / ticksMultiplier\r\n            }\r\n            axisInfo.baseTickValue = tickValues[0];\r\n            axisInfo.invertedBaseTickValue = tickValues[tickValues.length - 1]\r\n        }\r\n    })\r\n}\r\n\r\nfunction getAxisRange(axisInfo) {\r\n    return axisInfo.maxValue - axisInfo.minValue || 1\r\n}\r\n\r\nfunction getMainAxisInfo(axesInfo) {\r\n    for (var i = 0; i < axesInfo.length; i++) {\r\n        if (!axesInfo[i].stubData) {\r\n            return axesInfo[i]\r\n        }\r\n    }\r\n    return null\r\n}\r\n\r\nfunction correctMinMaxValues(axesInfo) {\r\n    var mainAxisInfo = getMainAxisInfo(axesInfo);\r\n    var mainAxisInfoTickInterval = mainAxisInfo.tickInterval;\r\n    axesInfo.forEach(function(axisInfo) {\r\n        var scale;\r\n        var move;\r\n        var mainAxisBaseValueOffset;\r\n        var valueFromAxisInfo;\r\n        if (axisInfo !== mainAxisInfo) {\r\n            if (mainAxisInfoTickInterval && axisInfo.tickInterval) {\r\n                if (axisInfo.stubData && (0, _type.isDefined)(axisInfo.synchronizedValue)) {\r\n                    axisInfo.oldMinValue = axisInfo.minValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.minValue) / mainAxisInfoTickInterval * axisInfo.tickInterval;\r\n                    axisInfo.oldMaxValue = axisInfo.maxValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.maxValue) / mainAxisInfoTickInterval * axisInfo.tickInterval\r\n                }\r\n                scale = mainAxisInfoTickInterval / getAxisRange(mainAxisInfo) / axisInfo.tickInterval * getAxisRange(axisInfo);\r\n                axisInfo.maxValue = axisInfo.minValue + getAxisRange(axisInfo) / scale\r\n            }\r\n            if (mainAxisInfo.inverted && !axisInfo.inverted || !mainAxisInfo.inverted && axisInfo.inverted) {\r\n                mainAxisBaseValueOffset = mainAxisInfo.maxValue - mainAxisInfo.invertedBaseTickValue\r\n            } else {\r\n                mainAxisBaseValueOffset = mainAxisInfo.baseTickValue - mainAxisInfo.minValue\r\n            }\r\n            valueFromAxisInfo = getAxisRange(axisInfo);\r\n            move = (mainAxisBaseValueOffset / getAxisRange(mainAxisInfo) - (axisInfo.baseTickValue - axisInfo.minValue) / valueFromAxisInfo) * valueFromAxisInfo;\r\n            axisInfo.minValue -= move;\r\n            axisInfo.maxValue -= move\r\n        }\r\n    })\r\n}\r\n\r\nfunction calculatePaddings(axesInfo) {\r\n    var minPadding;\r\n    var maxPadding;\r\n    var startPadding = 0;\r\n    var endPadding = 0;\r\n    axesInfo.forEach(function(axisInfo) {\r\n        var inverted = axisInfo.inverted;\r\n        minPadding = axisInfo.minValue > axisInfo.oldMinValue ? (axisInfo.minValue - axisInfo.oldMinValue) / getAxisRange(axisInfo) : 0;\r\n        maxPadding = axisInfo.maxValue < axisInfo.oldMaxValue ? (axisInfo.oldMaxValue - axisInfo.maxValue) / getAxisRange(axisInfo) : 0;\r\n        startPadding = _max(startPadding, inverted ? maxPadding : minPadding);\r\n        endPadding = _max(endPadding, inverted ? minPadding : maxPadding)\r\n    });\r\n    return {\r\n        start: startPadding,\r\n        end: endPadding\r\n    }\r\n}\r\n\r\nfunction correctMinMaxValuesByPaddings(axesInfo, paddings) {\r\n    axesInfo.forEach(function(info) {\r\n        var range = getAxisRange(info);\r\n        var inverted = info.inverted;\r\n        info.minValue = (0, _math2.adjust)(info.minValue - paddings[inverted ? \"end\" : \"start\"] * range);\r\n        info.maxValue = (0, _math2.adjust)(info.maxValue + paddings[inverted ? \"start\" : \"end\"] * range)\r\n    })\r\n}\r\n\r\nfunction updateTickValuesIfSynchronizedValueUsed(axesInfo) {\r\n    var hasSynchronizedValue = false;\r\n    axesInfo.forEach(function(info) {\r\n        hasSynchronizedValue = hasSynchronizedValue || (0, _type.isDefined)(info.synchronizedValue)\r\n    });\r\n    axesInfo.forEach(function(info) {\r\n        var tickInterval = info.tickInterval;\r\n        var tickValues = info.tickValues;\r\n        var maxValue = info.maxValue;\r\n        var minValue = info.minValue;\r\n        var tick;\r\n        if (hasSynchronizedValue && tickInterval) {\r\n            while ((tick = (0, _math2.adjust)(tickValues[0] - tickInterval)) >= minValue) {\r\n                tickValues.unshift(tick)\r\n            }\r\n            tick = tickValues[tickValues.length - 1];\r\n            while ((tick = (0, _math2.adjust)(tick + tickInterval)) <= maxValue) {\r\n                tickValues.push(tick)\r\n            }\r\n        }\r\n        while (tickValues[0] + tickInterval / 10 < minValue) {\r\n            tickValues.shift()\r\n        }\r\n        while (tickValues[tickValues.length - 1] - tickInterval / 10 > maxValue) {\r\n            tickValues.pop()\r\n        }\r\n    })\r\n}\r\n\r\nfunction applyMinMaxValues(axesInfo) {\r\n    axesInfo.forEach(function(info) {\r\n        var axis = info.axis;\r\n        var range = axis.getTranslator().getBusinessRange();\r\n        if (range.min === range.minVisible) {\r\n            range.min = info.minValue\r\n        }\r\n        if (range.max === range.maxVisible) {\r\n            range.max = info.maxValue\r\n        }\r\n        range.minVisible = info.minValue;\r\n        range.maxVisible = info.maxValue;\r\n        if (range.min > range.minVisible) {\r\n            range.min = range.minVisible\r\n        }\r\n        if (range.max < range.maxVisible) {\r\n            range.max = range.maxVisible\r\n        }\r\n        axis.getTranslator().updateBusinessRange(range);\r\n        axis.setTicks({\r\n            majorTicks: info.tickValues,\r\n            minorTicks: info.minorValues\r\n        })\r\n    })\r\n}\r\n\r\nfunction correctAfterSynchronize(axesInfo) {\r\n    var invalidAxisInfo = [];\r\n    var correctValue;\r\n    axesInfo.forEach(function(info) {\r\n        if (info.oldMaxValue - info.oldMinValue === 0) {\r\n            invalidAxisInfo.push(info)\r\n        } else {\r\n            if (!(0, _type.isDefined)(correctValue) && !(0, _type.isDefined)(info.synchronizedValue)) {\r\n                correctValue = _abs((info.maxValue - info.minValue) / (info.tickValues[_floor(info.tickValues.length / 2)] - info.minValue || info.maxValue))\r\n            }\r\n        }\r\n    });\r\n    if (!(0, _type.isDefined)(correctValue)) {\r\n        return\r\n    }\r\n    invalidAxisInfo.forEach(function(info) {\r\n        var firstTick = info.tickValues[0];\r\n        var correctedTick = firstTick * correctValue;\r\n        if (firstTick > 0) {\r\n            info.maxValue = correctedTick;\r\n            info.minValue = 0\r\n        } else {\r\n            if (firstTick < 0) {\r\n                info.minValue = correctedTick;\r\n                info.maxValue = 0\r\n            }\r\n        }\r\n    })\r\n}\r\n\r\nfunction updateMinorTicks(axesInfo) {\r\n    axesInfo.forEach(function(axisInfo) {\r\n        if (!axisInfo.minorTickInterval) {\r\n            return\r\n        }\r\n        var ticks = [];\r\n        var interval = axisInfo.minorTickInterval;\r\n        var tickCount = axisInfo.tickInterval / interval - 1;\r\n        for (var i = 1; i < axisInfo.tickValues.length; i++) {\r\n            var tick = axisInfo.tickValues[i - 1];\r\n            for (var j = 0; j < tickCount; j++) {\r\n                tick += interval;\r\n                ticks.push(tick)\r\n            }\r\n        }\r\n        axisInfo.minorValues = ticks\r\n    })\r\n}\r\n\r\nfunction correctPaddings(axesInfo, paddings) {\r\n    return axesInfo.reduce(function(prev, info) {\r\n        var inverted = info.inverted;\r\n        var _info$axis$getCorrect = info.axis.getCorrectedValuesToZero(info.minValue, info.maxValue),\r\n            start = _info$axis$getCorrect.start,\r\n            end = _info$axis$getCorrect.end;\r\n        if ((0, _type.isDefined)(start) || (0, _type.isDefined)(end)) {\r\n            return inverted ? {\r\n                start: prev.start,\r\n                end: Math.min(prev.end, end)\r\n            } : {\r\n                start: Math.min(prev.start, start),\r\n                end: prev.end\r\n            }\r\n        }\r\n        return prev\r\n    }, paddings)\r\n}\r\nvar multiAxesSynchronizer = {\r\n    synchronize: function(valueAxes) {\r\n        (0, _iterator.each)(getValueAxesPerPanes(valueAxes), function(_, axes) {\r\n            var axesInfo;\r\n            var paddings;\r\n            if (axes.length > 1) {\r\n                axesInfo = populateAxesInfo(axes);\r\n                if (axesInfo.length < 2 || !getMainAxisInfo(axesInfo)) {\r\n                    return\r\n                }\r\n                updateTickValues(axesInfo);\r\n                correctMinMaxValues(axesInfo);\r\n                paddings = calculatePaddings(axesInfo);\r\n                paddings = correctPaddings(axesInfo, paddings);\r\n                correctMinMaxValuesByPaddings(axesInfo, paddings);\r\n                correctAfterSynchronize(axesInfo);\r\n                updateTickValuesIfSynchronizedValueUsed(axesInfo);\r\n                updateMinorTicks(axesInfo);\r\n                axesInfo.forEach(function(info) {\r\n                    convertAxisInfo(info, logConverter)\r\n                });\r\n                applyMinMaxValues(axesInfo)\r\n            }\r\n        })\r\n    }\r\n};\r\nvar _default = multiAxesSynchronizer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.selection.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.selection\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"selection\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/funnel/tiling.funnel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar CENTER = .5;\r\nvar _default = {\r\n    getFigures: function(data) {\r\n        var height = 1 / data.length;\r\n        return data.map(function(value, index, array) {\r\n            var nextValue = array[index + 1] ? array[index + 1] : array[index];\r\n            return [CENTER - value / 2, height * index, CENTER + value / 2, height * index, CENTER + nextValue / 2, height * (index + 1), CENTER - nextValue / 2, height * (index + 1)]\r\n        })\r\n    },\r\n    normalizeValues: function(items) {\r\n        var max = items.reduce(function(max, item) {\r\n            return Math.max(item.value, max)\r\n        }, items[0] && items[0].value || 0);\r\n        return items.map(function(item) {\r\n            return item.value / max\r\n        })\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/local_store.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.LocalStore = void 0;\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _custom_store = _interopRequireDefault(require(\"../../data/custom_store\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PATH_DELIMETER = \"/./\";\r\nvar LocalStore = _class.default.inherit(function() {\r\n    var DATE_INTERVAL_SELECTORS = {\r\n        year: function(date) {\r\n            return date && date.getFullYear()\r\n        },\r\n        quarter: function(date) {\r\n            return date && Math.floor(date.getMonth() / 3) + 1\r\n        },\r\n        month: function(date) {\r\n            return date && date.getMonth() + 1\r\n        },\r\n        day: function(date) {\r\n            return date && date.getDate()\r\n        },\r\n        dayOfWeek: function(date) {\r\n            return date && date.getDay()\r\n        }\r\n    };\r\n\r\n    function getDataSelector(dataField) {\r\n        return dataField.indexOf(\".\") !== -1 ? (0, _data.compileGetter)(dataField) : function(data) {\r\n            return data[dataField]\r\n        }\r\n    }\r\n\r\n    function getDateValue(dataSelector) {\r\n        return function(data) {\r\n            var value = dataSelector(data);\r\n            if (value && !(value instanceof Date)) {\r\n                value = _date_serialization.default.deserializeDate(value)\r\n            }\r\n            return value\r\n        }\r\n    }\r\n\r\n    function prepareFields(fields) {\r\n        (0, _iterator.each)(fields || [], function(_, field) {\r\n            var fieldSelector;\r\n            var intervalSelector;\r\n            var dataField = field.dataField;\r\n            var groupInterval;\r\n            var levels = field.levels;\r\n            var dataSelector;\r\n            if (!field.selector) {\r\n                if (!dataField) {\r\n                    dataSelector = function(data) {\r\n                        return data\r\n                    }\r\n                } else {\r\n                    dataSelector = getDataSelector(dataField)\r\n                }\r\n                if (levels) {\r\n                    prepareFields(levels)\r\n                }\r\n                if (\"date\" === field.dataType) {\r\n                    intervalSelector = DATE_INTERVAL_SELECTORS[field.groupInterval];\r\n                    var valueSelector = getDateValue(dataSelector);\r\n                    fieldSelector = function(data) {\r\n                        var value = valueSelector(data);\r\n                        return intervalSelector ? intervalSelector(value) : value\r\n                    }\r\n                } else {\r\n                    if (\"number\" === field.dataType) {\r\n                        groupInterval = (0, _type.isNumeric)(field.groupInterval) && field.groupInterval > 0 && field.groupInterval;\r\n                        fieldSelector = function(data) {\r\n                            var value = dataSelector(data);\r\n                            if ((0, _type.isString)(value)) {\r\n                                value = Number(value)\r\n                            }\r\n                            return groupInterval ? Math.floor(value / groupInterval) * groupInterval : value\r\n                        }\r\n                    } else {\r\n                        fieldSelector = dataSelector\r\n                    }\r\n                }(0, _uiPivot_grid.setDefaultFieldValueFormatting)(field);\r\n                (0, _uiPivot_grid.setFieldProperty)(field, \"selector\", fieldSelector)\r\n            }\r\n        })\r\n    }\r\n    var addHierarchyItem = function(value, hierarchyItems, pathHash, childrenHash) {\r\n        var hierarchyItem = childrenHash[pathHash];\r\n        if (!hierarchyItem) {\r\n            hierarchyItem = {\r\n                value: value,\r\n                index: childrenHash.length++\r\n            };\r\n            childrenHash[pathHash] = hierarchyItem;\r\n            hierarchyItems.push(hierarchyItem)\r\n        }\r\n        return hierarchyItem\r\n    };\r\n\r\n    function fillHierarchyItemIndexesCore(indexes, options, children, expandIndex, pathHash) {\r\n        var dimension = options.dimensions[expandIndex];\r\n        var expandedPathsHash = options.expandedPathsHash;\r\n        var dimensionValue;\r\n        var hierarchyItem;\r\n        if (dimension) {\r\n            dimensionValue = dimension.selector(options.data);\r\n            pathHash = void 0 !== pathHash ? pathHash + PATH_DELIMETER + dimensionValue : dimensionValue + \"\";\r\n            hierarchyItem = addHierarchyItem(dimensionValue, children, pathHash, options.childrenHash);\r\n            indexes.push(hierarchyItem.index);\r\n            if (expandedPathsHash && expandedPathsHash[pathHash] || dimension.expanded) {\r\n                if (!hierarchyItem.children) {\r\n                    hierarchyItem.children = []\r\n                }\r\n                fillHierarchyItemIndexesCore(indexes, options, hierarchyItem.children, expandIndex + 1, pathHash)\r\n            }\r\n        }\r\n    }\r\n\r\n    function generateHierarchyItems(data, loadOptions, headers, headerName) {\r\n        var result = [0];\r\n        var expandIndex = loadOptions.headerName === headerName ? loadOptions.path.length : 0;\r\n        var expandedPaths = \"rows\" === headerName ? loadOptions.rowExpandedPaths : loadOptions.columnExpandedPaths;\r\n        var options = {\r\n            data: data,\r\n            childrenHash: headers[headerName + \"Hash\"],\r\n            dimensions: loadOptions[headerName],\r\n            expandedPathsHash: loadOptions.headerName !== headerName && expandedPaths && expandedPaths.hash\r\n        };\r\n        fillHierarchyItemIndexesCore(result, options, headers[headerName], expandIndex);\r\n        return result\r\n    }\r\n\r\n    function generateAggregationCells(data, cells, headers, options) {\r\n        var cellSet = [];\r\n        var x;\r\n        var y;\r\n        var rowIndex;\r\n        var columnIndex;\r\n        var rowIndexes = generateHierarchyItems(data, options, headers, \"rows\");\r\n        var columnIndexes = generateHierarchyItems(data, options, headers, \"columns\");\r\n        for (y = 0; y < rowIndexes.length; y++) {\r\n            rowIndex = rowIndexes[y];\r\n            cells[rowIndex] = cells[rowIndex] || [];\r\n            for (x = 0; x < columnIndexes.length; x++) {\r\n                columnIndex = columnIndexes[x];\r\n                cellSet.push(cells[rowIndex][columnIndex] = cells[rowIndex][columnIndex] || [])\r\n            }\r\n        }\r\n        return cellSet\r\n    }\r\n\r\n    function fillHashExpandedPath(expandedPaths) {\r\n        if (expandedPaths) {\r\n            var hash = expandedPaths.hash = {};\r\n            expandedPaths.forEach(function(path) {\r\n                var pathValue = path.map(function(value) {\r\n                    return value + \"\"\r\n                }).join(PATH_DELIMETER);\r\n                hash[pathValue] = true\r\n            })\r\n        }\r\n    }\r\n\r\n    function prepareLoadOption(options) {\r\n        options.rows = options.rows || [];\r\n        options.columns = options.columns || [];\r\n        options.filters = options.filters || [];\r\n        fillHashExpandedPath(options.columnExpandedPaths);\r\n        fillHashExpandedPath(options.rowExpandedPaths);\r\n        prepareFields(options.columns);\r\n        prepareFields(options.rows);\r\n        prepareFields(options.values);\r\n        prepareFields(options.filters)\r\n    }\r\n\r\n    function getAggregator(field) {\r\n        if (\"custom\" === field.summaryType) {\r\n            field.calculateCustomSummary = field.calculateCustomSummary || _common.noop;\r\n            return {\r\n                seed: function() {\r\n                    var options = {\r\n                        summaryProcess: \"start\",\r\n                        totalValue: void 0\r\n                    };\r\n                    field.calculateCustomSummary(options);\r\n                    return options\r\n                },\r\n                step: function(options, value) {\r\n                    options.summaryProcess = \"calculate\";\r\n                    options.value = value;\r\n                    field.calculateCustomSummary(options);\r\n                    return options\r\n                },\r\n                finalize: function(options) {\r\n                    options.summaryProcess = \"finalize\";\r\n                    delete options.value;\r\n                    field.calculateCustomSummary(options);\r\n                    return options.totalValue\r\n                }\r\n            }\r\n        }\r\n        return _utils.default.aggregators[field.summaryType] || _utils.default.aggregators.count\r\n    }\r\n\r\n    function aggregationStep(measures, aggregationCells, data) {\r\n        for (var aggregatorIndex = 0; aggregatorIndex < measures.length; aggregatorIndex++) {\r\n            var cellField = measures[aggregatorIndex];\r\n            var cellValue = cellField.selector(data);\r\n            var aggregator = getAggregator(cellField);\r\n            var isAggregatorSeedFunction = \"function\" === typeof aggregator.seed;\r\n            for (var cellSetIndex = 0; cellSetIndex < aggregationCells.length; cellSetIndex++) {\r\n                var cell = aggregationCells[cellSetIndex];\r\n                if (cell.length <= aggregatorIndex) {\r\n                    cell[aggregatorIndex] = isAggregatorSeedFunction ? aggregator.seed() : aggregator.seed\r\n                }\r\n                if (void 0 === cell[aggregatorIndex]) {\r\n                    cell[aggregatorIndex] = cellValue\r\n                } else {\r\n                    if ((0, _type.isDefined)(cellValue)) {\r\n                        cell[aggregatorIndex] = aggregator.step(cell[aggregatorIndex], cellValue)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    function aggregationFinalize(measures, cells) {\r\n        (0, _iterator.each)(measures, function(aggregatorIndex, cellField) {\r\n            var aggregator = getAggregator(cellField);\r\n            if (aggregator.finalize) {\r\n                (0, _iterator.each)(cells, function(_, row) {\r\n                    (0, _iterator.each)(row, function(_, cell) {\r\n                        if (cell && void 0 !== cell[aggregatorIndex]) {\r\n                            cell[aggregatorIndex] = aggregator.finalize(cell[aggregatorIndex])\r\n                        }\r\n                    })\r\n                })\r\n            }\r\n        })\r\n    }\r\n\r\n    function areValuesEqual(filterValue, fieldValue) {\r\n        var valueOfFilter = filterValue && filterValue.valueOf();\r\n        var valueOfField = fieldValue && fieldValue.valueOf();\r\n        if (Array.isArray(filterValue)) {\r\n            fieldValue = fieldValue || [];\r\n            for (var i = 0; i < filterValue.length; i++) {\r\n                valueOfFilter = filterValue[i] && filterValue[i].valueOf();\r\n                valueOfField = fieldValue[i] && fieldValue[i].valueOf();\r\n                if (valueOfFilter !== valueOfField) {\r\n                    return false\r\n                }\r\n            }\r\n            return true\r\n        } else {\r\n            return valueOfFilter === valueOfField\r\n        }\r\n    }\r\n\r\n    function getGroupValue(levels, data) {\r\n        var value = [];\r\n        (0, _iterator.each)(levels, function(_, field) {\r\n            value.push(field.selector(data))\r\n        });\r\n        return value\r\n    }\r\n\r\n    function createDimensionFilters(dimension) {\r\n        var filters = [];\r\n        (0, _iterator.each)(dimension, function(_, field) {\r\n            var filterValues = field.filterValues || [];\r\n            var groupName = field.groupName;\r\n            if (groupName && (0, _type.isNumeric)(field.groupIndex)) {\r\n                return\r\n            }\r\n            var filter = function(dataItem) {\r\n                var value = field.levels ? getGroupValue(field.levels, dataItem) : field.selector(dataItem);\r\n                var result = false;\r\n                for (var i = 0; i < filterValues.length; i++) {\r\n                    if (areValuesEqual(filterValues[i], value)) {\r\n                        result = true;\r\n                        break\r\n                    }\r\n                }\r\n                return \"exclude\" === field.filterType ? !result : result\r\n            };\r\n            filterValues.length && filters.push(filter)\r\n        });\r\n        return filters\r\n    }\r\n\r\n    function createFilter(options) {\r\n        var filters = createDimensionFilters(options.rows).concat(createDimensionFilters(options.columns)).concat(createDimensionFilters(options.filters));\r\n        var expandedDimensions = options[options.headerName];\r\n        var path = options.path;\r\n        if (expandedDimensions) {\r\n            filters.push(function(dataItem) {\r\n                var expandValue;\r\n                for (var i = 0; i < path.length; i++) {\r\n                    expandValue = expandedDimensions[i].selector(dataItem);\r\n                    if ((0, _data.toComparable)(expandValue, true) !== (0, _data.toComparable)(path[i], true)) {\r\n                        return false\r\n                    }\r\n                }\r\n                return true\r\n            })\r\n        }\r\n        return function(dataItem) {\r\n            for (var i = 0; i < filters.length; i++) {\r\n                if (!filters[i](dataItem)) {\r\n                    return false\r\n                }\r\n            }\r\n            return true\r\n        }\r\n    }\r\n\r\n    function loadCore(items, options, notifyProgress) {\r\n        var headers = {\r\n            columns: [],\r\n            rows: [],\r\n            columnsHash: {\r\n                length: 1\r\n            },\r\n            rowsHash: {\r\n                length: 1\r\n            }\r\n        };\r\n        var values = [];\r\n        var aggregationCells;\r\n        var data;\r\n        var d = new _deferred.Deferred;\r\n        var i = 0;\r\n        var filter = createFilter(options);\r\n\r\n        function processData() {\r\n            var t = new Date;\r\n            var startIndex = i;\r\n            for (; i < items.length; i++) {\r\n                if (i > startIndex && i % 1e4 === 0) {\r\n                    if (new Date - t >= 300) {\r\n                        notifyProgress(i / items.length);\r\n                        setTimeout(processData, 0);\r\n                        return\r\n                    }\r\n                }\r\n                data = items[i];\r\n                if (filter(data)) {\r\n                    aggregationCells = generateAggregationCells(data, values, headers, options);\r\n                    aggregationStep(options.values, aggregationCells, data)\r\n                }\r\n            }\r\n            aggregationFinalize(options.values, values);\r\n            notifyProgress(1);\r\n            d.resolve({\r\n                rows: headers.rows,\r\n                columns: headers.columns,\r\n                values: values,\r\n                grandTotalRowIndex: 0,\r\n                grandTotalColumnIndex: 0\r\n            })\r\n        }\r\n        processData();\r\n        return d\r\n    }\r\n\r\n    function filterDataSource(dataSource, fieldSelectors) {\r\n        var filter = dataSource.filter();\r\n        if (dataSource.store() instanceof _custom_store.default && filter) {\r\n            filter = processFilter(filter, fieldSelectors);\r\n            return (0, _query.default)(dataSource.items()).filter(filter).toArray()\r\n        }\r\n        return dataSource.items()\r\n    }\r\n\r\n    function loadDataSource(dataSource, fieldSelectors, reload) {\r\n        var d = new _deferred.Deferred;\r\n        var customizeStoreLoadOptionsHandler = function(options) {\r\n            if (dataSource.store() instanceof _array_store.default) {\r\n                options.storeLoadOptions.filter = processFilter(options.storeLoadOptions.filter, fieldSelectors)\r\n            }\r\n        };\r\n        dataSource.on(\"customizeStoreLoadOptions\", customizeStoreLoadOptionsHandler);\r\n        if (!dataSource.isLoaded() || reload) {\r\n            var loadDeferred = reload ? dataSource.load() : dataSource.reload();\r\n            (0, _deferred.when)(loadDeferred).done(function() {\r\n                loadDataSource(dataSource, fieldSelectors).done(function() {\r\n                    d.resolve(filterDataSource(dataSource, fieldSelectors))\r\n                }).fail(d.reject)\r\n            }).fail(d.reject)\r\n        } else {\r\n            d.resolve(filterDataSource(dataSource, fieldSelectors))\r\n        }\r\n        return d.always(function() {\r\n            dataSource.off(\"customizeStoreLoadOptions\", customizeStoreLoadOptionsHandler)\r\n        })\r\n    }\r\n\r\n    function fillSelectorsByFields(selectors, fields) {\r\n        fields.forEach(function(field) {\r\n            if (field.dataField && \"date\" === field.dataType) {\r\n                var valueSelector = getDateValue(getDataSelector(field.dataField));\r\n                selectors[field.dataField] = function(data) {\r\n                    return valueSelector(data)\r\n                }\r\n            }\r\n        })\r\n    }\r\n\r\n    function getFieldSelectors(options) {\r\n        var selectors = {};\r\n        if (Array.isArray(options)) {\r\n            fillSelectorsByFields(selectors, options)\r\n        } else {\r\n            if (options) {\r\n                [\"rows\", \"columns\", \"filters\"].forEach(function(area) {\r\n                    options[area] && fillSelectorsByFields(selectors, options[area])\r\n                })\r\n            }\r\n        }\r\n        return selectors\r\n    }\r\n\r\n    function processFilter(filter, fieldSelectors) {\r\n        if (!Array.isArray(filter)) {\r\n            return filter\r\n        }\r\n        filter = filter.slice(0);\r\n        if ((0, _type.isString)(filter[0]) && (filter[1] instanceof Date || filter[2] instanceof Date)) {\r\n            filter[0] = fieldSelectors[filter[0]]\r\n        }\r\n        for (var i = 0; i < filter.length; i++) {\r\n            filter[i] = processFilter(filter[i], fieldSelectors)\r\n        }\r\n        return filter\r\n    }\r\n    return {\r\n        ctor: function(options) {\r\n            this._progressChanged = options.onProgressChanged || _common.noop;\r\n            this._dataSource = new _data_source.DataSource(options);\r\n            this._dataSource.paginate(false)\r\n        },\r\n        getFields: function(fields) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var d = new _deferred.Deferred;\r\n            loadDataSource(dataSource, getFieldSelectors(fields)).done(function(data) {\r\n                d.resolve((0, _uiPivot_grid.discoverObjectFields)(data, fields))\r\n            }).fail(d.reject);\r\n            return d\r\n        },\r\n        key: function() {\r\n            return this._dataSource.key()\r\n        },\r\n        load: function(options) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var d = new _deferred.Deferred;\r\n            prepareLoadOption(options);\r\n            loadDataSource(dataSource, getFieldSelectors(options), options.reload).done(function(data) {\r\n                (0, _deferred.when)(loadCore(data, options, that._progressChanged)).done(d.resolve)\r\n            }).fail(d.reject);\r\n            return d\r\n        },\r\n        filter: function() {\r\n            var dataSource = this._dataSource;\r\n            return dataSource.filter.apply(dataSource, arguments)\r\n        },\r\n        supportPaging: function() {\r\n            return false\r\n        },\r\n        getDrillDownItems: function(loadOptions, params) {\r\n            loadOptions = loadOptions || {};\r\n            params = params || {};\r\n            prepareLoadOption(loadOptions);\r\n            var drillDownItems = [];\r\n            var items = this._dataSource.items();\r\n            var item;\r\n            var maxRowCount = params.maxRowCount;\r\n            var customColumns = params.customColumns;\r\n            var filter = createFilter(loadOptions);\r\n            var pathFilter = createFilter({\r\n                rows: (0, _uiPivot_grid.getFiltersByPath)(loadOptions.rows, params.rowPath),\r\n                columns: (0, _uiPivot_grid.getFiltersByPath)(loadOptions.columns, params.columnPath),\r\n                filters: []\r\n            });\r\n            for (var i = 0; i < items.length; i++) {\r\n                if (pathFilter(items[i]) && filter(items[i])) {\r\n                    if (customColumns) {\r\n                        item = {};\r\n                        for (var j = 0; j < customColumns.length; j++) {\r\n                            item[customColumns[j]] = items[i][customColumns[j]]\r\n                        }\r\n                    } else {\r\n                        item = items[i]\r\n                    }\r\n                    drillDownItems.push(item)\r\n                }\r\n                if (maxRowCount > 0 && drillDownItems.length === maxRowCount) {\r\n                    break\r\n                }\r\n            }\r\n            return drillDownItems\r\n        }\r\n    }\r\n}()).include(_uiPivot_grid.storeDrillDownMixin);\r\nexports.LocalStore = LocalStore;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_panel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"filterPanel\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (core/class.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _type = require(\"./utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar wrapOverridden = function(baseProto, methodName, method) {\r\n    return function() {\r\n        var prevCallBase = this.callBase;\r\n        this.callBase = baseProto[methodName];\r\n        try {\r\n            return method.apply(this, arguments)\r\n        } finally {\r\n            this.callBase = prevCallBase\r\n        }\r\n    }\r\n};\r\nvar clonePrototype = function(obj) {\r\n    var func = function() {};\r\n    func.prototype = obj.prototype;\r\n    return new func\r\n};\r\nvar redefine = function(members) {\r\n    var that = this;\r\n    var overridden;\r\n    var memberName;\r\n    var member;\r\n    if (!members) {\r\n        return that\r\n    }\r\n    for (memberName in members) {\r\n        member = members[memberName];\r\n        overridden = \"function\" === typeof that.prototype[memberName] && \"function\" === typeof member;\r\n        that.prototype[memberName] = overridden ? wrapOverridden(that.parent.prototype, memberName, member) : member\r\n    }\r\n    return that\r\n};\r\nvar include = function() {\r\n    var classObj = this;\r\n    var argument;\r\n    var name;\r\n    var i;\r\n    var hasClassObjOwnProperty = Object.prototype.hasOwnProperty.bind(classObj);\r\n    var isES6Class = !hasClassObjOwnProperty(\"_includedCtors\") && !hasClassObjOwnProperty(\"_includedPostCtors\");\r\n    if (isES6Class) {\r\n        classObj._includedCtors = classObj._includedCtors.slice(0);\r\n        classObj._includedPostCtors = classObj._includedPostCtors.slice(0)\r\n    }\r\n    for (i = 0; i < arguments.length; i++) {\r\n        argument = arguments[i];\r\n        if (argument.ctor) {\r\n            classObj._includedCtors.push(argument.ctor)\r\n        }\r\n        if (argument.postCtor) {\r\n            classObj._includedPostCtors.push(argument.postCtor)\r\n        }\r\n        for (name in argument) {\r\n            if (\"ctor\" === name || \"postCtor\" === name) {\r\n                continue\r\n            }\r\n            classObj.prototype[name] = argument[name]\r\n        }\r\n    }\r\n    return classObj\r\n};\r\nvar subclassOf = function(parentClass) {\r\n    var hasParentProperty = Object.prototype.hasOwnProperty.bind(this)(\"parent\");\r\n    var isES6Class = !hasParentProperty && this.parent;\r\n    if (isES6Class) {\r\n        var baseClass = Object.getPrototypeOf(this);\r\n        return baseClass === parentClass || baseClass.subclassOf(parentClass)\r\n    } else {\r\n        if (this.parent === parentClass) {\r\n            return true\r\n        }\r\n        if (!this.parent || !this.parent.subclassOf) {\r\n            return false\r\n        }\r\n        return this.parent.subclassOf(parentClass)\r\n    }\r\n};\r\nvar abstract = function() {\r\n    throw _errors.default.Error(\"E0001\")\r\n};\r\nvar copyStatic = function() {\r\n    var hasOwn = Object.prototype.hasOwnProperty;\r\n    return function(source, destination) {\r\n        for (var key in source) {\r\n            if (!hasOwn.call(source, key)) {\r\n                return\r\n            }\r\n            destination[key] = source[key]\r\n        }\r\n    }\r\n}();\r\nvar classImpl = function() {};\r\nclassImpl.inherit = function(members) {\r\n    var inheritor = function() {\r\n        if (!this || (0, _type.isWindow)(this) || \"function\" !== typeof this.constructor) {\r\n            throw _errors.default.Error(\"E0003\")\r\n        }\r\n        var instance = this;\r\n        var ctor = instance.ctor;\r\n        var includedCtors = instance.constructor._includedCtors;\r\n        var includedPostCtors = instance.constructor._includedPostCtors;\r\n        var i;\r\n        for (i = 0; i < includedCtors.length; i++) {\r\n            includedCtors[i].call(instance)\r\n        }\r\n        if (ctor) {\r\n            ctor.apply(instance, arguments)\r\n        }\r\n        for (i = 0; i < includedPostCtors.length; i++) {\r\n            includedPostCtors[i].call(instance)\r\n        }\r\n    };\r\n    inheritor.prototype = clonePrototype(this);\r\n    copyStatic(this, inheritor);\r\n    inheritor.inherit = this.inherit;\r\n    inheritor.abstract = abstract;\r\n    inheritor.redefine = redefine;\r\n    inheritor.include = include;\r\n    inheritor.subclassOf = subclassOf;\r\n    inheritor.parent = this;\r\n    inheritor._includedCtors = this._includedCtors ? this._includedCtors.slice(0) : [];\r\n    inheritor._includedPostCtors = this._includedPostCtors ? this._includedPostCtors.slice(0) : [];\r\n    inheritor.prototype.constructor = inheritor;\r\n    inheritor.redefine(members);\r\n    return inheritor\r\n};\r\nclassImpl.abstract = abstract;\r\nvar _default = classImpl;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/date.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"./type\");\r\nvar _math = require(\"./math\");\r\nvar _iterator = require(\"./iterator\");\r\nvar _inflector = require(\"./inflector\");\r\nvar _browser = _interopRequireDefault(require(\"./browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _construct(Parent, args, Class) {\r\n    if (_isNativeReflectConstruct()) {\r\n        _construct = Reflect.construct\r\n    } else {\r\n        _construct = function(Parent, args, Class) {\r\n            var a = [null];\r\n            a.push.apply(a, args);\r\n            var Constructor = Function.bind.apply(Parent, a);\r\n            var instance = new Constructor;\r\n            if (Class) {\r\n                _setPrototypeOf(instance, Class.prototype)\r\n            }\r\n            return instance\r\n        }\r\n    }\r\n    return _construct.apply(null, arguments)\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\nvar isIE11 = _browser.default.msie && parseInt(_browser.default.version) <= 11;\r\nvar dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\", \"year\"];\r\nvar toMilliseconds = function toMilliseconds(value) {\r\n    switch (value) {\r\n        case \"millisecond\":\r\n            return 1;\r\n        case \"second\":\r\n            return 1e3 * toMilliseconds(\"millisecond\");\r\n        case \"minute\":\r\n            return 60 * toMilliseconds(\"second\");\r\n        case \"hour\":\r\n            return 60 * toMilliseconds(\"minute\");\r\n        case \"day\":\r\n            return 24 * toMilliseconds(\"hour\");\r\n        case \"week\":\r\n            return 7 * toMilliseconds(\"day\");\r\n        case \"month\":\r\n            return 30 * toMilliseconds(\"day\");\r\n        case \"quarter\":\r\n            return 3 * toMilliseconds(\"month\");\r\n        case \"year\":\r\n            return 365 * toMilliseconds(\"day\");\r\n        default:\r\n            return 0\r\n    }\r\n};\r\nvar getDatesInterval = function(startDate, endDate, intervalUnit) {\r\n    var delta = endDate.getTime() - startDate.getTime();\r\n    var millisecondCount = toMilliseconds(intervalUnit) || 1;\r\n    return Math.floor(delta / millisecondCount)\r\n};\r\nvar getNextDateUnit = function(unit, withWeeks) {\r\n    var interval = getDateUnitInterval(unit);\r\n    switch (interval) {\r\n        case \"millisecond\":\r\n            return \"second\";\r\n        case \"second\":\r\n            return \"minute\";\r\n        case \"minute\":\r\n            return \"hour\";\r\n        case \"hour\":\r\n            return \"day\";\r\n        case \"day\":\r\n            return withWeeks ? \"week\" : \"month\";\r\n        case \"week\":\r\n            return \"month\";\r\n        case \"month\":\r\n            return \"quarter\";\r\n        case \"quarter\":\r\n            return \"year\";\r\n        case \"year\":\r\n            return \"year\";\r\n        default:\r\n            return 0\r\n    }\r\n};\r\nvar convertMillisecondsToDateUnits = function(value) {\r\n    var i;\r\n    var dateUnitCount;\r\n    var dateUnitInterval;\r\n    var dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"month\", \"year\"];\r\n    var result = {};\r\n    for (i = dateUnitIntervals.length - 1; i >= 0; i--) {\r\n        dateUnitInterval = dateUnitIntervals[i];\r\n        dateUnitCount = Math.floor(value / toMilliseconds(dateUnitInterval));\r\n        if (dateUnitCount > 0) {\r\n            result[dateUnitInterval + \"s\"] = dateUnitCount;\r\n            value -= convertDateUnitToMilliseconds(dateUnitInterval, dateUnitCount)\r\n        }\r\n    }\r\n    return result\r\n};\r\nvar dateToMilliseconds = function(tickInterval) {\r\n    var milliseconds = 0;\r\n    if ((0, _type.isObject)(tickInterval)) {\r\n        (0, _iterator.each)(tickInterval, function(key, value) {\r\n            milliseconds += convertDateUnitToMilliseconds(key.substr(0, key.length - 1), value)\r\n        })\r\n    }\r\n    if ((0, _type.isString)(tickInterval)) {\r\n        milliseconds = convertDateUnitToMilliseconds(tickInterval, 1)\r\n    }\r\n    return milliseconds\r\n};\r\n\r\nfunction convertDateUnitToMilliseconds(dateUnit, count) {\r\n    return toMilliseconds(dateUnit) * count\r\n}\r\n\r\nfunction getDateUnitInterval(tickInterval) {\r\n    var maxInterval = -1;\r\n    var i;\r\n    if ((0, _type.isString)(tickInterval)) {\r\n        return tickInterval\r\n    }\r\n    if ((0, _type.isObject)(tickInterval)) {\r\n        (0, _iterator.each)(tickInterval, function(key, value) {\r\n            for (i = 0; i < dateUnitIntervals.length; i++) {\r\n                if (value && (key === dateUnitIntervals[i] + \"s\" || key === dateUnitIntervals[i]) && maxInterval < i) {\r\n                    maxInterval = i\r\n                }\r\n            }\r\n        });\r\n        return dateUnitIntervals[maxInterval]\r\n    }\r\n    return \"\"\r\n}\r\nvar tickIntervalToFormatMap = {\r\n    millisecond: \"millisecond\",\r\n    second: \"longtime\",\r\n    minute: \"shorttime\",\r\n    hour: \"shorttime\",\r\n    day: \"day\",\r\n    week: \"day\",\r\n    month: \"month\",\r\n    quarter: \"quarter\",\r\n    year: \"year\"\r\n};\r\n\r\nfunction getDateFormatByTickInterval(tickInterval) {\r\n    return tickIntervalToFormatMap[getDateUnitInterval(tickInterval)] || \"\"\r\n}\r\nvar getQuarter = function(month) {\r\n    return Math.floor(month / 3)\r\n};\r\nvar getFirstQuarterMonth = function(month) {\r\n    return 3 * getQuarter(month)\r\n};\r\n\r\nfunction correctDateWithUnitBeginning(date, dateInterval, withCorrection, firstDayOfWeek) {\r\n    date = new Date(date.getTime());\r\n    var oldDate = new Date(date.getTime());\r\n    var firstQuarterMonth;\r\n    var month;\r\n    var dateUnitInterval = getDateUnitInterval(dateInterval);\r\n    switch (dateUnitInterval) {\r\n        case \"second\":\r\n            date = new Date(1e3 * Math.floor(oldDate.getTime() / 1e3));\r\n            break;\r\n        case \"minute\":\r\n            date = new Date(6e4 * Math.floor(oldDate.getTime() / 6e4));\r\n            break;\r\n        case \"hour\":\r\n            date = new Date(36e5 * Math.floor(oldDate.getTime() / 36e5));\r\n            break;\r\n        case \"year\":\r\n            date.setMonth(0);\r\n        case \"month\":\r\n            date.setDate(1);\r\n        case \"day\":\r\n            date.setHours(0, 0, 0, 0);\r\n            break;\r\n        case \"week\":\r\n            date = getFirstWeekDate(date, firstDayOfWeek || 0);\r\n            date.setHours(0, 0, 0, 0);\r\n            break;\r\n        case \"quarter\":\r\n            firstQuarterMonth = getFirstQuarterMonth(date.getMonth());\r\n            month = date.getMonth();\r\n            date.setDate(1);\r\n            date.setHours(0, 0, 0, 0);\r\n            if (month !== firstQuarterMonth) {\r\n                date.setMonth(firstQuarterMonth)\r\n            }\r\n    }\r\n    if (withCorrection && \"hour\" !== dateUnitInterval && \"minute\" !== dateUnitInterval && \"second\" !== dateUnitInterval) {\r\n        fixTimezoneGap(oldDate, date)\r\n    }\r\n    return date\r\n}\r\n\r\nfunction trimTime(date) {\r\n    return correctDateWithUnitBeginning(date, \"day\")\r\n}\r\nvar setToDayEnd = function(date) {\r\n    var result = trimTime(date);\r\n    result.setDate(result.getDate() + 1);\r\n    return new Date(result.getTime() - 1)\r\n};\r\nvar getDatesDifferences = function(date1, date2) {\r\n    var counter = 0;\r\n    var differences = {\r\n        year: date1.getFullYear() !== date2.getFullYear(),\r\n        month: date1.getMonth() !== date2.getMonth(),\r\n        day: date1.getDate() !== date2.getDate(),\r\n        hour: date1.getHours() !== date2.getHours(),\r\n        minute: date1.getMinutes() !== date2.getMinutes(),\r\n        second: date1.getSeconds() !== date2.getSeconds(),\r\n        millisecond: date1.getMilliseconds() !== date2.getMilliseconds()\r\n    };\r\n    (0, _iterator.each)(differences, function(key, value) {\r\n        if (value) {\r\n            counter++\r\n        }\r\n    });\r\n    if (0 === counter && 0 !== getTimezonesDifference(date1, date2)) {\r\n        differences.hour = true;\r\n        counter++\r\n    }\r\n    differences.count = counter;\r\n    return differences\r\n};\r\n\r\nfunction addDateInterval(value, interval, dir) {\r\n    var result = new Date(value.getTime());\r\n    var intervalObject = (0, _type.isString)(interval) ? getDateIntervalByString(interval.toLowerCase()) : (0, _type.isNumeric)(interval) ? convertMillisecondsToDateUnits(interval) : interval;\r\n    if (intervalObject.years) {\r\n        result.setFullYear(result.getFullYear() + intervalObject.years * dir)\r\n    }\r\n    if (intervalObject.quarters) {\r\n        result.setMonth(result.getMonth() + 3 * intervalObject.quarters * dir)\r\n    }\r\n    if (intervalObject.months) {\r\n        result.setMonth(result.getMonth() + intervalObject.months * dir)\r\n    }\r\n    if (intervalObject.weeks) {\r\n        result.setDate(result.getDate() + 7 * intervalObject.weeks * dir)\r\n    }\r\n    if (intervalObject.days) {\r\n        result.setDate(result.getDate() + intervalObject.days * dir)\r\n    }\r\n    if (intervalObject.hours) {\r\n        result.setTime(result.getTime() + 36e5 * intervalObject.hours * dir)\r\n    }\r\n    if (intervalObject.minutes) {\r\n        result.setTime(result.getTime() + 6e4 * intervalObject.minutes * dir)\r\n    }\r\n    if (intervalObject.seconds) {\r\n        result.setTime(result.getTime() + 1e3 * intervalObject.seconds * dir)\r\n    }\r\n    if (intervalObject.milliseconds) {\r\n        result.setTime(result.getTime() + intervalObject.milliseconds * dir)\r\n    }\r\n    return result\r\n}\r\nvar addInterval = function(value, interval, isNegative) {\r\n    var dir = isNegative ? -1 : 1;\r\n    return (0, _type.isDate)(value) ? addDateInterval(value, interval, dir) : (0, _math.adjust)(value + interval * dir, interval)\r\n};\r\nvar getSequenceByInterval = function(min, max, interval) {\r\n    var intervals = [];\r\n    var cur;\r\n    intervals.push((0, _type.isDate)(min) ? new Date(min.getTime()) : min);\r\n    cur = min;\r\n    while (cur < max) {\r\n        cur = addInterval(cur, interval);\r\n        intervals.push(cur)\r\n    }\r\n    return intervals\r\n};\r\nvar getViewFirstCellDate = function(viewType, date) {\r\n    if (\"month\" === viewType) {\r\n        return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)\r\n    }\r\n    if (\"year\" === viewType) {\r\n        return createDateWithFullYear(date.getFullYear(), 0, date.getDate())\r\n    }\r\n    if (\"decade\" === viewType) {\r\n        return createDateWithFullYear(getFirstYearInDecade(date), date.getMonth(), date.getDate())\r\n    }\r\n    if (\"century\" === viewType) {\r\n        return createDateWithFullYear(getFirstDecadeInCentury(date), date.getMonth(), date.getDate())\r\n    }\r\n};\r\nvar getViewLastCellDate = function(viewType, date) {\r\n    if (\"month\" === viewType) {\r\n        return createDateWithFullYear(date.getFullYear(), date.getMonth(), getLastMonthDay(date))\r\n    }\r\n    if (\"year\" === viewType) {\r\n        return createDateWithFullYear(date.getFullYear(), 11, date.getDate())\r\n    }\r\n    if (\"decade\" === viewType) {\r\n        return createDateWithFullYear(getFirstYearInDecade(date) + 9, date.getMonth(), date.getDate())\r\n    }\r\n    if (\"century\" === viewType) {\r\n        return createDateWithFullYear(getFirstDecadeInCentury(date) + 90, date.getMonth(), date.getDate())\r\n    }\r\n};\r\nvar getViewMinBoundaryDate = function(viewType, date) {\r\n    var resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth(), 1);\r\n    if (\"month\" === viewType) {\r\n        return resultDate\r\n    }\r\n    resultDate.setMonth(0);\r\n    if (\"year\" === viewType) {\r\n        return resultDate\r\n    }\r\n    if (\"decade\" === viewType) {\r\n        resultDate.setFullYear(getFirstYearInDecade(date))\r\n    }\r\n    if (\"century\" === viewType) {\r\n        resultDate.setFullYear(getFirstDecadeInCentury(date))\r\n    }\r\n    return resultDate\r\n};\r\nvar getViewMaxBoundaryDate = function(viewType, date) {\r\n    var resultDate = new Date(date);\r\n    resultDate.setDate(getLastMonthDay(date));\r\n    if (\"month\" === viewType) {\r\n        return resultDate\r\n    }\r\n    resultDate.setMonth(11);\r\n    resultDate.setDate(getLastMonthDay(resultDate));\r\n    if (\"year\" === viewType) {\r\n        return resultDate\r\n    }\r\n    if (\"decade\" === viewType) {\r\n        resultDate.setFullYear(getFirstYearInDecade(date) + 9)\r\n    }\r\n    if (\"century\" === viewType) {\r\n        resultDate.setFullYear(getFirstDecadeInCentury(date) + 99)\r\n    }\r\n    return resultDate\r\n};\r\n\r\nfunction getLastMonthDay(date) {\r\n    var resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0);\r\n    return resultDate.getDate()\r\n}\r\nvar getViewUp = function(typeView) {\r\n    switch (typeView) {\r\n        case \"month\":\r\n            return \"year\";\r\n        case \"year\":\r\n            return \"decade\";\r\n        case \"decade\":\r\n            return \"century\"\r\n    }\r\n};\r\nvar getViewDown = function(typeView) {\r\n    switch (typeView) {\r\n        case \"century\":\r\n            return \"decade\";\r\n        case \"decade\":\r\n            return \"year\";\r\n        case \"year\":\r\n            return \"month\"\r\n    }\r\n};\r\nvar getDifferenceInMonth = function(typeView) {\r\n    var difference = 1;\r\n    if (\"year\" === typeView) {\r\n        difference = 12\r\n    }\r\n    if (\"decade\" === typeView) {\r\n        difference = 120\r\n    }\r\n    if (\"century\" === typeView) {\r\n        difference = 1200\r\n    }\r\n    return difference\r\n};\r\nvar getDifferenceInMonthForCells = function(typeView) {\r\n    var difference = 1;\r\n    if (\"decade\" === typeView) {\r\n        difference = 12\r\n    }\r\n    if (\"century\" === typeView) {\r\n        difference = 120\r\n    }\r\n    return difference\r\n};\r\n\r\nfunction getDateIntervalByString(intervalString) {\r\n    var result = {};\r\n    switch (intervalString) {\r\n        case \"year\":\r\n            result.years = 1;\r\n            break;\r\n        case \"month\":\r\n            result.months = 1;\r\n            break;\r\n        case \"quarter\":\r\n            result.months = 3;\r\n            break;\r\n        case \"week\":\r\n            result.weeks = 1;\r\n            break;\r\n        case \"day\":\r\n            result.days = 1;\r\n            break;\r\n        case \"hour\":\r\n            result.hours = 1;\r\n            break;\r\n        case \"minute\":\r\n            result.minutes = 1;\r\n            break;\r\n        case \"second\":\r\n            result.seconds = 1;\r\n            break;\r\n        case \"millisecond\":\r\n            result.milliseconds = 1\r\n    }\r\n    return result\r\n}\r\n\r\nfunction sameDate(date1, date2) {\r\n    return sameMonthAndYear(date1, date2) && date1.getDate() === date2.getDate()\r\n}\r\n\r\nfunction sameMonthAndYear(date1, date2) {\r\n    return sameYear(date1, date2) && date1.getMonth() === date2.getMonth()\r\n}\r\n\r\nfunction sameYear(date1, date2) {\r\n    return date1 && date2 && date1.getFullYear() === date2.getFullYear()\r\n}\r\nvar sameDecade = function(date1, date2) {\r\n    if (!(0, _type.isDefined)(date1) || !(0, _type.isDefined)(date2)) {\r\n        return\r\n    }\r\n    var startDecadeDate1 = date1.getFullYear() - date1.getFullYear() % 10;\r\n    var startDecadeDate2 = date2.getFullYear() - date2.getFullYear() % 10;\r\n    return date1 && date2 && startDecadeDate1 === startDecadeDate2\r\n};\r\nvar sameCentury = function(date1, date2) {\r\n    if (!(0, _type.isDefined)(date1) || !(0, _type.isDefined)(date2)) {\r\n        return\r\n    }\r\n    var startCenturyDate1 = date1.getFullYear() - date1.getFullYear() % 100;\r\n    var startCenturyDate2 = date2.getFullYear() - date2.getFullYear() % 100;\r\n    return date1 && date2 && startCenturyDate1 === startCenturyDate2\r\n};\r\n\r\nfunction getFirstDecadeInCentury(date) {\r\n    return date && date.getFullYear() - date.getFullYear() % 100\r\n}\r\n\r\nfunction getFirstYearInDecade(date) {\r\n    return date && date.getFullYear() - date.getFullYear() % 10\r\n}\r\nvar getShortDateFormat = function() {\r\n    return \"yyyy/MM/dd\"\r\n};\r\nvar getFirstMonthDate = function(date) {\r\n    if (!(0, _type.isDefined)(date)) {\r\n        return\r\n    }\r\n    return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)\r\n};\r\nvar getLastMonthDate = function(date) {\r\n    if (!(0, _type.isDefined)(date)) {\r\n        return\r\n    }\r\n    return createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0)\r\n};\r\n\r\nfunction getFirstWeekDate(date, firstDayOfWeek) {\r\n    var delta = (date.getDay() - firstDayOfWeek + 7) % 7;\r\n    var result = new Date(date);\r\n    result.setDate(date.getDate() - delta);\r\n    return result\r\n}\r\nvar normalizeDateByWeek = function(date, currentDate) {\r\n    var differenceInDays = dateUtils.getDatesInterval(date, currentDate, \"day\");\r\n    var resultDate = new Date(date);\r\n    if (differenceInDays >= 6) {\r\n        resultDate = new Date(resultDate.setDate(resultDate.getDate() + 7))\r\n    }\r\n    return resultDate\r\n};\r\nvar dateInRange = function(date, min, max, format) {\r\n    if (\"date\" === format) {\r\n        min = min && dateUtils.correctDateWithUnitBeginning(min, \"day\");\r\n        max = max && dateUtils.correctDateWithUnitBeginning(max, \"day\");\r\n        date = date && dateUtils.correctDateWithUnitBeginning(date, \"day\")\r\n    }\r\n    return normalizeDate(date, min, max) === date\r\n};\r\nvar dateTimeFromDecimal = function(number) {\r\n    var hours = Math.floor(number);\r\n    var minutes = number % 1 * 60;\r\n    return {\r\n        hours: hours,\r\n        minutes: minutes\r\n    }\r\n};\r\nvar roundDateByStartDayHour = function(date, startDayHour) {\r\n    var startTime = this.dateTimeFromDecimal(startDayHour);\r\n    var result = new Date(date);\r\n    if (date.getHours() === startTime.hours && date.getMinutes() < startTime.minutes || date.getHours() < startTime.hours) {\r\n        result.setHours(startTime.hours, startTime.minutes, 0, 0)\r\n    }\r\n    return result\r\n};\r\n\r\nfunction normalizeDate(date, min, max) {\r\n    var normalizedDate = date;\r\n    if (!(0, _type.isDefined)(date)) {\r\n        return date\r\n    }\r\n    if ((0, _type.isDefined)(min) && date < min) {\r\n        normalizedDate = min\r\n    }\r\n    if ((0, _type.isDefined)(max) && date > max) {\r\n        normalizedDate = max\r\n    }\r\n    return normalizedDate\r\n}\r\n\r\nfunction fixTimezoneGap(oldDate, newDate) {\r\n    if (!(0, _type.isDefined)(oldDate)) {\r\n        return\r\n    }\r\n    var diff = newDate.getHours() - oldDate.getHours();\r\n    if (0 === diff) {\r\n        return\r\n    }\r\n    var sign = 1 === diff || diff === -23 ? -1 : 1;\r\n    var trial = new Date(newDate.getTime() + 36e5 * sign);\r\n    if (sign > 0 || trial.getDate() === newDate.getDate()) {\r\n        newDate.setTime(trial.getTime())\r\n    }\r\n}\r\nvar roundToHour = function(date) {\r\n    date.setHours(date.getHours() + 1);\r\n    date.setMinutes(0);\r\n    return date\r\n};\r\n\r\nfunction getTimezonesDifference(min, max) {\r\n    return 60 * (max.getTimezoneOffset() - min.getTimezoneOffset()) * 1e3\r\n}\r\nvar makeDate = function(date) {\r\n    return new Date(date)\r\n};\r\nvar getDatesOfInterval = function(startDate, endDate, step) {\r\n    var result = [];\r\n    var currentDate = new Date(startDate.getTime());\r\n    while (currentDate < endDate) {\r\n        result.push(new Date(currentDate.getTime()));\r\n        currentDate = this.addInterval(currentDate, step)\r\n    }\r\n    return result\r\n};\r\nvar createDate = function(date) {\r\n    return new Date(isIE11 && (0, _type.isDate)(date) ? date.getTime() : date)\r\n};\r\nvar createDateWithFullYear = function(year) {\r\n    var result = _construct(Date, Array.prototype.slice.call(arguments));\r\n    result.setFullYear(year);\r\n    return result\r\n};\r\nvar dateUtils = {\r\n    dateUnitIntervals: dateUnitIntervals,\r\n    convertMillisecondsToDateUnits: convertMillisecondsToDateUnits,\r\n    dateToMilliseconds: dateToMilliseconds,\r\n    getNextDateUnit: getNextDateUnit,\r\n    convertDateUnitToMilliseconds: convertDateUnitToMilliseconds,\r\n    getDateUnitInterval: getDateUnitInterval,\r\n    getDateFormatByTickInterval: getDateFormatByTickInterval,\r\n    getDatesDifferences: getDatesDifferences,\r\n    correctDateWithUnitBeginning: correctDateWithUnitBeginning,\r\n    trimTime: trimTime,\r\n    setToDayEnd: setToDayEnd,\r\n    roundDateByStartDayHour: roundDateByStartDayHour,\r\n    dateTimeFromDecimal: dateTimeFromDecimal,\r\n    addDateInterval: addDateInterval,\r\n    addInterval: addInterval,\r\n    getSequenceByInterval: getSequenceByInterval,\r\n    getDateIntervalByString: getDateIntervalByString,\r\n    sameDate: sameDate,\r\n    sameMonthAndYear: sameMonthAndYear,\r\n    sameMonth: sameMonthAndYear,\r\n    sameYear: sameYear,\r\n    sameDecade: sameDecade,\r\n    sameCentury: sameCentury,\r\n    getDifferenceInMonth: getDifferenceInMonth,\r\n    getDifferenceInMonthForCells: getDifferenceInMonthForCells,\r\n    getFirstYearInDecade: getFirstYearInDecade,\r\n    getFirstDecadeInCentury: getFirstDecadeInCentury,\r\n    getShortDateFormat: getShortDateFormat,\r\n    getViewFirstCellDate: getViewFirstCellDate,\r\n    getViewLastCellDate: getViewLastCellDate,\r\n    getViewDown: getViewDown,\r\n    getViewUp: getViewUp,\r\n    getLastMonthDay: getLastMonthDay,\r\n    getLastMonthDate: getLastMonthDate,\r\n    getFirstMonthDate: getFirstMonthDate,\r\n    getFirstWeekDate: getFirstWeekDate,\r\n    normalizeDateByWeek: normalizeDateByWeek,\r\n    getQuarter: getQuarter,\r\n    getFirstQuarterMonth: getFirstQuarterMonth,\r\n    dateInRange: dateInRange,\r\n    roundToHour: roundToHour,\r\n    normalizeDate: normalizeDate,\r\n    getViewMinBoundaryDate: getViewMinBoundaryDate,\r\n    getViewMaxBoundaryDate: getViewMaxBoundaryDate,\r\n    fixTimezoneGap: fixTimezoneGap,\r\n    getTimezonesDifference: getTimezonesDifference,\r\n    makeDate: makeDate,\r\n    getDatesInterval: getDatesInterval,\r\n    getDatesOfInterval: getDatesOfInterval,\r\n    createDate: createDate,\r\n    createDateWithFullYear: createDateWithFullYear\r\n};\r\ndateUtils.sameView = function(view, date1, date2) {\r\n    return dateUtils[(0, _inflector.camelize)(\"same \" + view)](date1, date2)\r\n};\r\nvar _default = dateUtils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.spin.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_BUTTON_CLASS = \"dx-numberbox-spin-button\";\r\nvar SPIN_HOLD_DELAY = 100;\r\nvar NUMBER_BOX = \"dxNumberBox\";\r\nvar POINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, NUMBER_BOX);\r\nvar POINTERCANCEL_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.cancel, NUMBER_BOX);\r\nvar SpinButton = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            direction: \"up\",\r\n            onChange: null,\r\n            activeStateEnabled: true,\r\n            hoverStateEnabled: true\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        var direction = SPIN_CLASS + \"-\" + this.option(\"direction\");\r\n        this.$element().addClass(SPIN_BUTTON_CLASS).addClass(direction);\r\n        this._spinIcon = (0, _renderer.default)(\"<div>\").addClass(direction + \"-icon\").appendTo(this.$element())\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        var eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n        var $element = this.$element();\r\n        _events_engine.default.off($element, eventName);\r\n        _events_engine.default.on($element, eventName, this._spinDownHandler.bind(this));\r\n        this._spinChangeHandler = this._createActionByOption(\"onChange\")\r\n    },\r\n    _spinDownHandler: function(e) {\r\n        e.preventDefault();\r\n        this._clearTimer();\r\n        _events_engine.default.on(this.$element(), _hold.default.name, function() {\r\n            this._feedBackDeferred = new _deferred.Deferred;\r\n            (0, _emitter.lock)(this._feedBackDeferred);\r\n            this._spinChangeHandler({\r\n                event: e\r\n            });\r\n            this._holdTimer = setInterval(this._spinChangeHandler, SPIN_HOLD_DELAY, {\r\n                event: e\r\n            })\r\n        }.bind(this));\r\n        var document = _dom_adapter.default.getDocument();\r\n        _events_engine.default.on(document, POINTERUP_EVENT_NAME, this._clearTimer.bind(this));\r\n        _events_engine.default.on(document, POINTERCANCEL_EVENT_NAME, this._clearTimer.bind(this));\r\n        this._spinChangeHandler({\r\n            event: e\r\n        })\r\n    },\r\n    _dispose: function() {\r\n        this._clearTimer();\r\n        this.callBase()\r\n    },\r\n    _clearTimer: function() {\r\n        _events_engine.default.off(this.$element(), _hold.default.name);\r\n        var document = _dom_adapter.default.getDocument();\r\n        _events_engine.default.off(document, POINTERUP_EVENT_NAME);\r\n        _events_engine.default.off(document, POINTERCANCEL_EVENT_NAME);\r\n        if (this._feedBackDeferred) {\r\n            this._feedBackDeferred.resolve()\r\n        }\r\n        if (this._holdTimer) {\r\n            clearInterval(this._holdTimer)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"onChange\":\r\n            case \"direction\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = SpinButton;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tooltip/ui.tooltip.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.show = show;\r\nexports.hide = hide;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _tooltip = _interopRequireDefault(require(\"./tooltip\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _view_port = require(\"../../core/utils/view_port\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar tooltip = null;\r\nvar removeTooltipElement = null;\r\nvar createTooltip = function(options) {\r\n    options = (0, _extend.extend)({\r\n        position: \"top\"\r\n    }, options);\r\n    var content = options.content;\r\n    delete options.content;\r\n    var $tooltip = (0, _renderer.default)(\"<div>\").html(content).appendTo((0, _view_port.value)());\r\n    removeTooltipElement = function() {\r\n        $tooltip.remove()\r\n    };\r\n    tooltip = new _tooltip.default($tooltip, options)\r\n};\r\nvar removeTooltip = function() {\r\n    if (!tooltip) {\r\n        return\r\n    }\r\n    removeTooltipElement();\r\n    tooltip = null\r\n};\r\n\r\nfunction show(options) {\r\n    removeTooltip();\r\n    createTooltip(options);\r\n    return tooltip.show()\r\n}\r\n\r\nfunction hide() {\r\n    if (!tooltip) {\r\n        return (new _deferred.Deferred).resolve()\r\n    }\r\n    return tooltip.hide().done(removeTooltip).promise()\r\n}\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.export.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ExportController = exports.DataProvider = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.export_mixin\"));\r\nvar _exporter = require(\"../../exporter\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _list = _interopRequireDefault(require(\"../list\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATAGRID_EXPORT_MENU_CLASS = \"dx-datagrid-export-menu\";\r\nvar DATAGRID_EXPORT_BUTTON_CLASS = \"dx-datagrid-export-button\";\r\nvar DATAGRID_EXPORT_ICON = \"export-to\";\r\nvar DATAGRID_EXPORT_EXCEL_ICON = \"xlsxfile\";\r\nvar DATAGRID_EXPORT_SELECTED_ICON = \"exportselected\";\r\nvar DATAGRID_EXPORT_EXCEL_BUTTON_ICON = \"export-excel-button\";\r\nvar TOOLBAR_ITEM_AUTO_HIDE_CLASS = \"dx-toolbar-item-auto-hide\";\r\nvar TOOLBAR_HIDDEN_BUTTON_CLASS = \"dx-toolbar-hidden-button\";\r\nvar BUTTON_CLASS = \"dx-button\";\r\nvar DATA_STYLE_OFFSET = 3;\r\nvar DataProvider = _class.default.inherit({\r\n    _getGroupValue: function(item) {\r\n        var key = item.key,\r\n            data = item.data,\r\n            rowType = item.rowType,\r\n            groupIndex = item.groupIndex,\r\n            summaryCells = item.summaryCells;\r\n        var groupColumn = this._options.groupColumns[groupIndex];\r\n        var value = _uiData_grid.default.getDisplayValue(groupColumn, groupColumn.deserializeValue ? groupColumn.deserializeValue(key[groupIndex]) : key[groupIndex], data, rowType);\r\n        var result = groupColumn.caption + \": \" + _uiData_grid.default.formatValue(value, groupColumn);\r\n        if (summaryCells && summaryCells[0] && summaryCells[0].length) {\r\n            result += \" \" + _uiData_grid.default.getGroupRowSummaryText(summaryCells[0], this._options.summaryTexts)\r\n        }\r\n        return result\r\n    },\r\n    _correctCellIndex: function(cellIndex) {\r\n        return cellIndex\r\n    },\r\n    _initOptions: function() {\r\n        var exportController = this._exportController;\r\n        var groupColumns = exportController._columnsController.getGroupColumns();\r\n        var excelWrapTextEnabled = exportController.option(\"export.excelWrapTextEnabled\");\r\n        this._options = {\r\n            columns: exportController._getColumns(this._initialColumnWidthsByColumnIndex),\r\n            groupColumns: groupColumns,\r\n            items: this._selectedRowsOnly || exportController._selectionOnly ? exportController._getSelectedItems() : exportController._getAllItems(),\r\n            getVisibleIndex: exportController._columnsController.getVisibleIndex.bind(exportController._columnsController),\r\n            isHeadersVisible: exportController.option(\"showColumnHeaders\"),\r\n            summaryTexts: exportController.option(\"summary.texts\"),\r\n            customizeExportData: exportController.option(\"customizeExportData\"),\r\n            rtlEnabled: exportController.option(\"rtlEnabled\"),\r\n            wrapTextEnabled: (0, _type.isDefined)(excelWrapTextEnabled) ? excelWrapTextEnabled : !!exportController.option(\"wordWrapEnabled\"),\r\n            customizeExcelCell: exportController.option(\"export.customizeExcelCell\")\r\n        }\r\n    },\r\n    hasCustomizeExcelCell: function() {\r\n        return (0, _type.isDefined)(this._options.customizeExcelCell)\r\n    },\r\n    customizeExcelCell: function(e, cellSourceData) {\r\n        if (this._options.customizeExcelCell) {\r\n            e.gridCell = cellSourceData;\r\n            if ((0, _type.isDefined)(this._exportController) && (0, _type.isDefined)(this._exportController.component)) {\r\n                e.component = this._exportController.component\r\n            }\r\n            this._options.customizeExcelCell(e)\r\n        }\r\n    },\r\n    ctor: function(exportController, initialColumnWidthsByColumnIndex, selectedRowsOnly) {\r\n        this._exportController = exportController;\r\n        this._initialColumnWidthsByColumnIndex = initialColumnWidthsByColumnIndex;\r\n        this._selectedRowsOnly = selectedRowsOnly\r\n    },\r\n    getStyles: function() {\r\n        var wrapTextEnabled = this._options.wrapTextEnabled;\r\n        var styles = [\"center\", \"left\", \"right\"].map(function(alignment) {\r\n            return {\r\n                bold: true,\r\n                alignment: alignment,\r\n                wrapText: true\r\n            }\r\n        });\r\n        this.getColumns().forEach(function(column) {\r\n            styles.push({\r\n                alignment: column.alignment || \"left\",\r\n                format: column.format,\r\n                wrapText: wrapTextEnabled,\r\n                dataType: column.dataType\r\n            })\r\n        });\r\n        styles.push({\r\n            bold: true,\r\n            wrapText: false,\r\n            alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled)\r\n        });\r\n        return styles\r\n    },\r\n    _getTotalCellStyleId: function(cellIndex) {\r\n        var alignment = this.getColumns()[cellIndex] && this.getColumns()[cellIndex].alignment || \"right\";\r\n        return [\"center\", \"left\", \"right\"].indexOf(alignment)\r\n    },\r\n    getStyleId: function(rowIndex, cellIndex) {\r\n        if (rowIndex < this.getHeaderRowCount()) {\r\n            return 0\r\n        } else {\r\n            if (this.isTotalCell(rowIndex - this.getHeaderRowCount(), cellIndex)) {\r\n                return this._getTotalCellStyleId(cellIndex)\r\n            } else {\r\n                if (this.isGroupRow(rowIndex - this.getHeaderRowCount())) {\r\n                    return DATA_STYLE_OFFSET + this.getColumns().length\r\n                } else {\r\n                    return cellIndex + DATA_STYLE_OFFSET\r\n                }\r\n            }\r\n        }\r\n    },\r\n    getColumns: function(getColumnsByAllRows) {\r\n        var columns = this._options.columns;\r\n        return getColumnsByAllRows ? columns : columns[columns.length - 1]\r\n    },\r\n    getColumnsWidths: function() {\r\n        var columns = this.getColumns();\r\n        return (0, _type.isDefined)(columns) ? columns.map(function(c) {\r\n            return c.width\r\n        }) : void 0\r\n    },\r\n    getRowsCount: function() {\r\n        return this._options.items.length + this.getHeaderRowCount()\r\n    },\r\n    getHeaderRowCount: function() {\r\n        if (this.isHeadersVisible()) {\r\n            return this._options.columns.length - 1\r\n        }\r\n        return 0\r\n    },\r\n    isGroupRow: function(rowIndex) {\r\n        return rowIndex < this._options.items.length && \"group\" === this._options.items[rowIndex].rowType\r\n    },\r\n    getGroupLevel: function(rowIndex) {\r\n        var item = this._options.items[rowIndex - this.getHeaderRowCount()];\r\n        var groupIndex = item && item.groupIndex;\r\n        if (item && \"totalFooter\" === item.rowType) {\r\n            return 0\r\n        }\r\n        return (0, _type.isDefined)(groupIndex) ? groupIndex : this._options.groupColumns.length\r\n    },\r\n    getCellType: function(rowIndex, cellIndex) {\r\n        var columns = this.getColumns();\r\n        if (rowIndex < this.getHeaderRowCount()) {\r\n            return \"string\"\r\n        } else {\r\n            rowIndex -= this.getHeaderRowCount()\r\n        }\r\n        if (cellIndex < columns.length) {\r\n            var item = this._options.items.length && this._options.items[rowIndex];\r\n            var column = columns[cellIndex];\r\n            if (item && \"data\" === item.rowType) {\r\n                if (isFinite(item.values[this._correctCellIndex(cellIndex)]) && !(0, _type.isDefined)(column.customizeText)) {\r\n                    return (0, _type.isDefined)(column.lookup) ? column.lookup.dataType : column.dataType\r\n                }\r\n            }\r\n            return \"string\"\r\n        }\r\n    },\r\n    ready: function() {\r\n        var that = this;\r\n        that._initOptions();\r\n        var options = that._options;\r\n        return (0, _deferred.when)(options.items).done(function(items) {\r\n            options.customizeExportData && options.customizeExportData(that.getColumns(that.getHeaderRowCount() > 1), items);\r\n            options.items = items\r\n        }).fail(function() {\r\n            options.items = []\r\n        })\r\n    },\r\n    _convertFromGridGroupSummaryItems: function(gridGroupSummaryItems) {\r\n        if ((0, _type.isDefined)(gridGroupSummaryItems) && gridGroupSummaryItems.length > 0) {\r\n            return gridGroupSummaryItems.map(function(item) {\r\n                return {\r\n                    value: item.value,\r\n                    name: item.name\r\n                }\r\n            })\r\n        }\r\n    },\r\n    getCellData: function(rowIndex, cellIndex, isExcelJS) {\r\n        var result = {\r\n            cellSourceData: {},\r\n            value: value\r\n        };\r\n        var column;\r\n        var value;\r\n        var columns = this.getColumns();\r\n        var correctedCellIndex = this._correctCellIndex(cellIndex);\r\n        if (rowIndex < this.getHeaderRowCount()) {\r\n            var columnsRow = this.getColumns(true)[rowIndex];\r\n            column = columnsRow[cellIndex];\r\n            result.cellSourceData.rowType = \"header\";\r\n            result.cellSourceData.column = column && column.gridColumn;\r\n            result.value = column && column.caption\r\n        } else {\r\n            rowIndex -= this.getHeaderRowCount();\r\n            var item = this._options.items.length && this._options.items[rowIndex];\r\n            if (item) {\r\n                var itemValues = item.values;\r\n                result.cellSourceData.rowType = item.rowType;\r\n                result.cellSourceData.column = columns[cellIndex] && columns[cellIndex].gridColumn;\r\n                switch (item.rowType) {\r\n                    case \"groupFooter\":\r\n                    case \"totalFooter\":\r\n                        if (correctedCellIndex < itemValues.length) {\r\n                            value = itemValues[correctedCellIndex];\r\n                            if ((0, _type.isDefined)(value)) {\r\n                                result.cellSourceData.value = value.value;\r\n                                result.cellSourceData.totalSummaryItemName = value.name;\r\n                                result.value = _uiData_grid.default.getSummaryText(value, this._options.summaryTexts)\r\n                            } else {\r\n                                result.cellSourceData.value = void 0\r\n                            }\r\n                        }\r\n                        break;\r\n                    case \"group\":\r\n                        result.cellSourceData.groupIndex = item.groupIndex;\r\n                        if (cellIndex < 1) {\r\n                            result.cellSourceData.column = this._options.groupColumns[item.groupIndex];\r\n                            result.cellSourceData.value = item.key[item.groupIndex];\r\n                            result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(item.summaryCells[0]);\r\n                            result.value = this._getGroupValue(item)\r\n                        } else {\r\n                            var summaryItems = item.values[correctedCellIndex];\r\n                            if (Array.isArray(summaryItems)) {\r\n                                result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(summaryItems);\r\n                                value = \"\";\r\n                                for (var i = 0; i < summaryItems.length; i++) {\r\n                                    value += (i > 0 ? isExcelJS ? \"\\n\" : \" \\n \" : \"\") + _uiData_grid.default.getSummaryText(summaryItems[i], this._options.summaryTexts)\r\n                                }\r\n                                result.value = value\r\n                            } else {\r\n                                result.cellSourceData.value = void 0\r\n                            }\r\n                        }\r\n                        break;\r\n                    default:\r\n                        column = columns[cellIndex];\r\n                        if (column) {\r\n                            var _value = itemValues[correctedCellIndex];\r\n                            var displayValue = _uiData_grid.default.getDisplayValue(column, _value, item.data, item.rowType);\r\n                            if (!isFinite(displayValue) || (0, _type.isDefined)(column.customizeText)) {\r\n                                if (isExcelJS && (0, _type.isDefined)(column.customizeText) && column.customizeText === this._exportController._columnsController.getCustomizeTextByDataType(\"boolean\")) {\r\n                                    result.value = displayValue\r\n                                } else {\r\n                                    result.value = _uiData_grid.default.formatValue(displayValue, column)\r\n                                }\r\n                            } else {\r\n                                result.value = displayValue\r\n                            }\r\n                            result.cellSourceData.value = _value\r\n                        }\r\n                        result.cellSourceData.data = item.data\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    isHeadersVisible: function() {\r\n        return this._options.isHeadersVisible\r\n    },\r\n    isTotalCell: function(rowIndex, cellIndex) {\r\n        var items = this._options.items;\r\n        var item = items[rowIndex];\r\n        var correctCellIndex = this._correctCellIndex(cellIndex);\r\n        var isSummaryAlignByColumn = item.summaryCells && item.summaryCells[correctCellIndex] && item.summaryCells[correctCellIndex].length > 0 && item.summaryCells[correctCellIndex][0].alignByColumn;\r\n        return item && \"groupFooter\" === item.rowType || \"totalFooter\" === item.rowType || isSummaryAlignByColumn\r\n    },\r\n    getCellMerging: function(rowIndex, cellIndex) {\r\n        var columns = this._options.columns;\r\n        var column = columns[rowIndex] && columns[rowIndex][cellIndex];\r\n        return column ? {\r\n            colspan: (column.exportColspan || 1) - 1,\r\n            rowspan: (column.rowspan || 1) - 1\r\n        } : {\r\n            colspan: 0,\r\n            rowspan: 0\r\n        }\r\n    },\r\n    getFrozenArea: function() {\r\n        var that = this;\r\n        return {\r\n            x: 0,\r\n            y: that.getHeaderRowCount()\r\n        }\r\n    }\r\n});\r\nexports.DataProvider = DataProvider;\r\nvar ExportController = _uiData_grid.default.ViewController.inherit({}).include(_uiGrid_core.default).inherit({\r\n    _getEmptyCell: function() {\r\n        return {\r\n            caption: \"\",\r\n            colspan: 1,\r\n            rowspan: 1\r\n        }\r\n    },\r\n    _updateColumnWidth: function(column, width) {\r\n        column.width = width\r\n    },\r\n    _getColumns: function(initialColumnWidthsByColumnIndex) {\r\n        var result = [];\r\n        var i;\r\n        var columns;\r\n        var columnsController = this._columnsController;\r\n        var rowCount = columnsController.getRowCount();\r\n        for (i = 0; i <= rowCount; i++) {\r\n            var currentHeaderRow = [];\r\n            columns = columnsController.getVisibleColumns(i, true);\r\n            var columnWidthsByColumnIndex = void 0;\r\n            if (i === rowCount) {\r\n                if (this._updateLockCount) {\r\n                    columnWidthsByColumnIndex = initialColumnWidthsByColumnIndex\r\n                } else {\r\n                    var columnWidths = this._getColumnWidths(this._headersView, this._rowsView);\r\n                    if (columnWidths && columnWidths.length) {\r\n                        columnWidthsByColumnIndex = {};\r\n                        for (var _i = 0; _i < columns.length; _i++) {\r\n                            columnWidthsByColumnIndex[columns[_i].index] = columnWidths[_i]\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            for (var j = 0; j < columns.length; j++) {\r\n                var column = (0, _extend.extend)({}, columns[j], {\r\n                    dataType: \"datetime\" === columns[j].dataType ? \"date\" : columns[j].dataType,\r\n                    gridColumn: columns[j]\r\n                });\r\n                if (this._needColumnExporting(column)) {\r\n                    var currentColspan = this._calculateExportColspan(column);\r\n                    if ((0, _type.isDefined)(currentColspan)) {\r\n                        column.exportColspan = currentColspan\r\n                    }\r\n                    if (columnWidthsByColumnIndex) {\r\n                        this._updateColumnWidth(column, columnWidthsByColumnIndex[column.index])\r\n                    }\r\n                    currentHeaderRow.push(column)\r\n                }\r\n            }\r\n            result.push(currentHeaderRow)\r\n        }\r\n        columns = result[rowCount];\r\n        result = this._prepareItems(result.slice(0, -1));\r\n        result.push(columns);\r\n        return result\r\n    },\r\n    _calculateExportColspan: function(column) {\r\n        var _this = this;\r\n        if (!column.isBand) {\r\n            return\r\n        }\r\n        var childColumns = this._columnsController.getChildrenByBandColumn(column.index, true);\r\n        if (!(0, _type.isDefined)(childColumns)) {\r\n            return\r\n        }\r\n        return childColumns.reduce(function(result, childColumn) {\r\n            if (_this._needColumnExporting(childColumn)) {\r\n                return result + (_this._calculateExportColspan(childColumn) || 1)\r\n            } else {\r\n                return result\r\n            }\r\n        }, 0)\r\n    },\r\n    _needColumnExporting: function(column) {\r\n        return !column.command && (column.allowExporting || void 0 === column.allowExporting)\r\n    },\r\n    _getFooterSummaryItems: function(summaryCells, isTotal) {\r\n        var result = [];\r\n        var estimatedItemsCount = 1;\r\n        var i = 0;\r\n        do {\r\n            var values = [];\r\n            for (var j = 0; j < summaryCells.length; j++) {\r\n                var summaryCell = summaryCells[j];\r\n                var itemsLength = summaryCell.length;\r\n                if (estimatedItemsCount < itemsLength) {\r\n                    estimatedItemsCount = itemsLength\r\n                }\r\n                values.push(summaryCell[i])\r\n            }\r\n            result.push({\r\n                values: values,\r\n                rowType: isTotal ? \"totalFooter\" : \"groupFooter\"\r\n            })\r\n        } while (i++ < estimatedItemsCount - 1);\r\n        return result\r\n    },\r\n    _hasSummaryGroupFooters: function() {\r\n        var groupItems = this.option(\"summary.groupItems\");\r\n        if ((0, _type.isDefined)(groupItems)) {\r\n            for (var i = 0; i < groupItems.length; i++) {\r\n                if (groupItems[i].showInGroupFooter) {\r\n                    return true\r\n                }\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _getItemsWithSummaryGroupFooters: function(sourceItems) {\r\n        var result = [];\r\n        var beforeGroupFooterItems = [];\r\n        var groupFooterItems = [];\r\n        for (var i = 0; i < sourceItems.length; i++) {\r\n            var item = sourceItems[i];\r\n            if (\"groupFooter\" === item.rowType) {\r\n                groupFooterItems = this._getFooterSummaryItems(item.summaryCells);\r\n                result = result.concat(beforeGroupFooterItems, groupFooterItems);\r\n                beforeGroupFooterItems = []\r\n            } else {\r\n                beforeGroupFooterItems.push(item)\r\n            }\r\n        }\r\n        return result.length ? result : beforeGroupFooterItems\r\n    },\r\n    _updateGroupValuesWithSummaryByColumn: function(sourceItems) {\r\n        var summaryValues = [];\r\n        for (var i = 0; i < sourceItems.length; i++) {\r\n            var item = sourceItems[i];\r\n            var summaryCells = item.summaryCells;\r\n            if (\"group\" === item.rowType && summaryCells && summaryCells.length > 1) {\r\n                var groupColumnCount = item.values.length;\r\n                for (var j = 1; j < summaryCells.length; j++) {\r\n                    for (var k = 0; k < summaryCells[j].length; k++) {\r\n                        var summaryItem = summaryCells[j][k];\r\n                        if (summaryItem && summaryItem.alignByColumn) {\r\n                            if (!Array.isArray(summaryValues[j - groupColumnCount])) {\r\n                                summaryValues[j - groupColumnCount] = []\r\n                            }\r\n                            summaryValues[j - groupColumnCount].push(summaryItem)\r\n                        }\r\n                    }\r\n                }\r\n                if (summaryValues.length > 0) {\r\n                    (0, _array.merge)(item.values, summaryValues);\r\n                    summaryValues = []\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _processUnExportedItems: function(items) {\r\n        var columns = this._columnsController.getVisibleColumns(null, true);\r\n        var groupColumns = this._columnsController.getGroupColumns();\r\n        var values;\r\n        var summaryCells;\r\n        for (var i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            var isDetailExpandColumn = false;\r\n            values = [];\r\n            summaryCells = [];\r\n            for (var j = 0; j < columns.length; j++) {\r\n                var column = columns[j];\r\n                isDetailExpandColumn = isDetailExpandColumn || \"detailExpand\" === column.type;\r\n                if (this._needColumnExporting(column)) {\r\n                    if (item.values) {\r\n                        if (\"group\" === item.rowType && !values.length) {\r\n                            values.push(item.key[item.groupIndex])\r\n                        } else {\r\n                            values.push(item.values[j])\r\n                        }\r\n                    }\r\n                    if (item.summaryCells) {\r\n                        if (\"group\" === item.rowType && !summaryCells.length) {\r\n                            var index = j - groupColumns.length + item.groupIndex;\r\n                            summaryCells.push(item.summaryCells[isDetailExpandColumn ? index - 1 : index])\r\n                        } else {\r\n                            summaryCells.push(item.summaryCells[j])\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (values.length) {\r\n                item.values = values\r\n            }\r\n            if (summaryCells.length) {\r\n                item.summaryCells = summaryCells\r\n            }\r\n        }\r\n    },\r\n    _getAllItems: function(data) {\r\n        var that = this;\r\n        var d = new _deferred.Deferred;\r\n        var dataController = this.getController(\"data\");\r\n        var footerItems = dataController.footerItems();\r\n        var totalItem = footerItems.length && footerItems[0];\r\n        var summaryTotalItems = that.option(\"summary.totalItems\");\r\n        var summaryCells;\r\n        (0, _deferred.when)(data).done(function(data) {\r\n            dataController.loadAll(data).done(function(sourceItems, totalAggregates) {\r\n                that._updateGroupValuesWithSummaryByColumn(sourceItems);\r\n                if (that._hasSummaryGroupFooters()) {\r\n                    sourceItems = that._getItemsWithSummaryGroupFooters(sourceItems)\r\n                }\r\n                summaryCells = totalItem && totalItem.summaryCells;\r\n                if ((0, _type.isDefined)(totalAggregates) && summaryTotalItems) {\r\n                    summaryCells = dataController._getSummaryCells(summaryTotalItems, totalAggregates)\r\n                }\r\n                var summaryItems = totalItem && that._getFooterSummaryItems(summaryCells, true);\r\n                if (summaryItems) {\r\n                    sourceItems = sourceItems.concat(summaryItems)\r\n                }\r\n                that._processUnExportedItems(sourceItems);\r\n                d.resolve(sourceItems)\r\n            }).fail(d.reject)\r\n        }).fail(d.reject);\r\n        return d\r\n    },\r\n    _getSelectedItems: function() {\r\n        var selectionController = this.getController(\"selection\");\r\n        var selectedRowData = selectionController.getSelectedRowsData();\r\n        return this._getAllItems(selectedRowData)\r\n    },\r\n    _getColumnWidths: function(headersView, rowsView) {\r\n        return headersView && headersView.isVisible() ? headersView.getColumnWidths() : rowsView.getColumnWidths()\r\n    },\r\n    init: function() {\r\n        this._columnsController = this.getController(\"columns\");\r\n        this._rowsView = this.getView(\"rowsView\");\r\n        this._headersView = this.getView(\"columnHeadersView\");\r\n        this.createAction(\"onExporting\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        });\r\n        this.createAction(\"onExported\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        });\r\n        this.createAction(\"onFileSaving\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    callbackNames: function() {\r\n        return [\"selectionOnlyChanged\"]\r\n    },\r\n    getExportFormat: function() {\r\n        return [\"EXCEL\"]\r\n    },\r\n    getDataProvider: function(selectedRowsOnly) {\r\n        var columnWidths = this._getColumnWidths(this._headersView, this._rowsView);\r\n        var initialColumnWidthsByColumnIndex;\r\n        if (columnWidths && columnWidths.length) {\r\n            initialColumnWidthsByColumnIndex = {};\r\n            var columnsLastRowVisibleColumns = this._columnsController.getVisibleColumns(this._columnsController.getRowCount(), true);\r\n            for (var i = 0; i < columnsLastRowVisibleColumns.length; i++) {\r\n                initialColumnWidthsByColumnIndex[columnsLastRowVisibleColumns[i].index] = columnWidths[i]\r\n            }\r\n        }\r\n        return new DataProvider(this, initialColumnWidthsByColumnIndex, selectedRowsOnly)\r\n    },\r\n    exportToExcel: function(selectionOnly) {\r\n        var that = this;\r\n        that._selectionOnly = selectionOnly;\r\n        (0, _exporter.export)(that.component.getDataProvider(), {\r\n            fileName: that.option(\"export.fileName\"),\r\n            proxyUrl: that.option(\"export.proxyUrl\"),\r\n            format: \"EXCEL\",\r\n            autoFilterEnabled: !!that.option(\"export.excelFilterEnabled\"),\r\n            rtlEnabled: that.option(\"rtlEnabled\"),\r\n            ignoreErrors: that.option(\"export.ignoreExcelErrors\"),\r\n            exportingAction: that.getAction(\"onExporting\"),\r\n            exportedAction: that.getAction(\"onExported\"),\r\n            fileSavingAction: that.getAction(\"onFileSaving\")\r\n        }, _exporter.excel.getData)\r\n    },\r\n    publicMethods: function() {\r\n        return [\"getDataProvider\", \"getExportFormat\", \"exportToExcel\"]\r\n    },\r\n    selectionOnly: function(value) {\r\n        if ((0, _type.isDefined)(value)) {\r\n            this._isSelectedRows = value;\r\n            this.selectionOnlyChanged.fire()\r\n        } else {\r\n            return this._isSelectedRows\r\n        }\r\n    }\r\n});\r\nexports.ExportController = ExportController;\r\n_uiData_grid.default.registerModule(\"export\", {\r\n    defaultOptions: function() {\r\n        return {\r\n            \"export\": {\r\n                enabled: false,\r\n                fileName: \"DataGrid\",\r\n                excelFilterEnabled: false,\r\n                excelWrapTextEnabled: void 0,\r\n                proxyUrl: void 0,\r\n                allowExportSelectedData: false,\r\n                ignoreExcelErrors: true,\r\n                texts: {\r\n                    exportTo: _message.default.format(\"dxDataGrid-exportTo\"),\r\n                    exportAll: _message.default.format(\"dxDataGrid-exportAll\"),\r\n                    exportSelectedRows: _message.default.format(\"dxDataGrid-exportSelectedRows\")\r\n                }\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        \"export\": ExportController\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            editing: {\r\n                callbackNames: function() {\r\n                    var callbackList = this.callBase();\r\n                    return (0, _type.isDefined)(callbackList) ? callbackList.push(\"editingChanged\") : [\"editingChanged\"]\r\n                },\r\n                _updateEditButtons: function() {\r\n                    this.callBase();\r\n                    this.editingChanged.fire(this.hasChanges())\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            headerPanel: {\r\n                _getToolbarItems: function() {\r\n                    var items = this.callBase();\r\n                    return this._appendExportItems(items)\r\n                },\r\n                _appendExportItems: function(items) {\r\n                    var that = this;\r\n                    var exportOptions = that.option(\"export\");\r\n                    if (exportOptions.enabled) {\r\n                        var exportItems = [];\r\n                        if (exportOptions.allowExportSelectedData) {\r\n                            exportItems.push({\r\n                                template: function(data, index, container) {\r\n                                    var $container = (0, _renderer.default)(container);\r\n                                    that._renderButton(data, $container);\r\n                                    that._renderExportMenu($container)\r\n                                },\r\n                                menuItemTemplate: function(data, index, container) {\r\n                                    that._renderList(data, (0, _renderer.default)(container))\r\n                                },\r\n                                name: \"exportButton\",\r\n                                allowExportSelected: true,\r\n                                location: \"after\",\r\n                                locateInMenu: \"auto\",\r\n                                sortIndex: 30\r\n                            })\r\n                        } else {\r\n                            exportItems.push({\r\n                                template: function(data, index, container) {\r\n                                    that._renderButton(data, (0, _renderer.default)(container))\r\n                                },\r\n                                menuItemTemplate: function(data, index, container) {\r\n                                    that._renderButton(data, (0, _renderer.default)(container), true)\r\n                                },\r\n                                name: \"exportButton\",\r\n                                location: \"after\",\r\n                                locateInMenu: \"auto\",\r\n                                sortIndex: 30\r\n                            })\r\n                        }\r\n                        items = items.concat(exportItems);\r\n                        that._correctItemsPosition(items)\r\n                    }\r\n                    return items\r\n                },\r\n                _renderButton: function(data, $container, withText) {\r\n                    var that = this;\r\n                    var buttonOptions = that._getButtonOptions(data.allowExportSelected);\r\n                    var $buttonContainer = that._getButtonContainer().addClass(DATAGRID_EXPORT_BUTTON_CLASS).appendTo($container);\r\n                    if (withText) {\r\n                        var wrapperNode = (0, _renderer.default)(\"<div>\").addClass(TOOLBAR_ITEM_AUTO_HIDE_CLASS);\r\n                        $container.wrapInner(wrapperNode).parent().addClass(\"dx-toolbar-menu-action dx-toolbar-menu-button \" + TOOLBAR_HIDDEN_BUTTON_CLASS);\r\n                        buttonOptions.text = buttonOptions.hint\r\n                    }\r\n                    that._createComponent($buttonContainer, _button.default, buttonOptions)\r\n                },\r\n                _renderList: function(data, $container) {\r\n                    var that = this;\r\n                    var texts = that.option(\"export.texts\");\r\n                    var items = [{\r\n                        template: function(data, index, container) {\r\n                            that._renderFakeButton(data, (0, _renderer.default)(container), DATAGRID_EXPORT_EXCEL_ICON)\r\n                        },\r\n                        text: texts.exportAll\r\n                    }, {\r\n                        template: function(data, index, container) {\r\n                            that._renderFakeButton(data, (0, _renderer.default)(container), DATAGRID_EXPORT_SELECTED_ICON)\r\n                        },\r\n                        text: texts.exportSelectedRows,\r\n                        exportSelected: true\r\n                    }];\r\n                    that._createComponent($container, _list.default, {\r\n                        items: items,\r\n                        onItemClick: function(e) {\r\n                            that._exportController.exportToExcel(e.itemData.exportSelected)\r\n                        },\r\n                        scrollingEnabled: false\r\n                    })\r\n                },\r\n                _renderFakeButton: function(data, $container, iconName) {\r\n                    var $icon = (0, _renderer.default)(\"<div>\").addClass(\"dx-icon dx-icon-\" + iconName);\r\n                    var $text = (0, _renderer.default)(\"<span>\").addClass(\"dx-button-text\").text(data.text);\r\n                    var $content = (0, _renderer.default)(\"<div>\").addClass(\"dx-button-content\").append($icon).append($text);\r\n                    var $button = (0, _renderer.default)(\"<div>\").addClass(BUTTON_CLASS + \" dx-button-has-text dx-button-has-icon dx-datagrid-toolbar-button\").append($content);\r\n                    var $toolbarItem = (0, _renderer.default)(\"<div>\").addClass(TOOLBAR_ITEM_AUTO_HIDE_CLASS).append($button);\r\n                    $container.append($toolbarItem).parent().addClass(\"dx-toolbar-menu-custom \" + TOOLBAR_HIDDEN_BUTTON_CLASS)\r\n                },\r\n                _correctItemsPosition: function(items) {\r\n                    items.sort(function(itemA, itemB) {\r\n                        return itemA.sortIndex - itemB.sortIndex\r\n                    })\r\n                },\r\n                _renderExportMenu: function($buttonContainer) {\r\n                    var that = this;\r\n                    var $button = $buttonContainer.find(\".\" + BUTTON_CLASS);\r\n                    var texts = that.option(\"export.texts\");\r\n                    var menuItems = [{\r\n                        text: texts.exportAll,\r\n                        icon: DATAGRID_EXPORT_EXCEL_ICON\r\n                    }, {\r\n                        text: texts.exportSelectedRows,\r\n                        exportSelected: true,\r\n                        icon: DATAGRID_EXPORT_SELECTED_ICON\r\n                    }];\r\n                    var $menuContainer = (0, _renderer.default)(\"<div>\").appendTo($buttonContainer);\r\n                    that._contextMenu = that._createComponent($menuContainer, _context_menu.default, {\r\n                        showEvent: \"dxclick\",\r\n                        items: menuItems,\r\n                        cssClass: DATAGRID_EXPORT_MENU_CLASS,\r\n                        onItemClick: function(e) {\r\n                            that._exportController.exportToExcel(e.itemData.exportSelected)\r\n                        },\r\n                        target: $button,\r\n                        position: {\r\n                            at: \"left bottom\",\r\n                            my: \"left top\",\r\n                            offset: \"0 3\",\r\n                            collision: \"fit\",\r\n                            boundary: that._$parent,\r\n                            boundaryOffset: \"1 1\"\r\n                        }\r\n                    })\r\n                },\r\n                _isExportButtonVisible: function() {\r\n                    return this.option(\"export.enabled\")\r\n                },\r\n                _getButtonOptions: function(allowExportSelected) {\r\n                    var that = this;\r\n                    var texts = that.option(\"export.texts\");\r\n                    var options;\r\n                    if (allowExportSelected) {\r\n                        options = {\r\n                            hint: texts.exportTo,\r\n                            icon: DATAGRID_EXPORT_ICON\r\n                        }\r\n                    } else {\r\n                        options = {\r\n                            hint: texts.exportAll,\r\n                            icon: DATAGRID_EXPORT_EXCEL_BUTTON_ICON,\r\n                            onClick: function() {\r\n                                that._exportController.exportToExcel()\r\n                            }\r\n                        }\r\n                    }\r\n                    return options\r\n                },\r\n                optionChanged: function(args) {\r\n                    this.callBase(args);\r\n                    if (\"export\" === args.name) {\r\n                        args.handled = true;\r\n                        this._invalidate()\r\n                    }\r\n                },\r\n                init: function() {\r\n                    var that = this;\r\n                    this.callBase();\r\n                    this._exportController = this.getController(\"export\");\r\n                    this._editingController = this.getController(\"editing\");\r\n                    this._editingController.editingChanged.add(function(hasChanges) {\r\n                        that.setToolbarItemDisabled(\"exportButton\", hasChanges)\r\n                    })\r\n                },\r\n                isVisible: function() {\r\n                    return this.callBase() || this._isExportButtonVisible()\r\n                }\r\n            }\r\n        }\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.filter_panel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"filterPanel\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/series/stacked_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _area_series = require(\"./area_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _line_series = require(\"./line_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar chartAreaSeries = _area_series.chart.area;\r\nvar chartBarSeries = _bar_series.chart.bar;\r\nvar baseStackedSeries = {\r\n    _calculateErrorBars: _common.noop,\r\n    _updateOptions: function(options) {\r\n        this._stackName = \"axis_\" + (options.axis || \"default\")\r\n    }\r\n};\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nchart.stackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {});\r\nchart.stackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {});\r\nchart.fullstackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {\r\n    getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue\r\n});\r\nchart.fullstackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {\r\n    getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue\r\n});\r\nvar stackedBar = chart.stackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {\r\n    _updateOptions: function(options) {\r\n        baseStackedSeries._updateOptions.call(this, options);\r\n        this._stackName = this._stackName + \"_stack_\" + (options.stack || \"default\")\r\n    }\r\n});\r\nchart.fullstackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {\r\n    _updateOptions: stackedBar._updateOptions\r\n});\r\n\r\nfunction clonePoint(point, value, minValue, position) {\r\n    point = (0, _object.clone)(point);\r\n    point.value = value;\r\n    point.minValue = minValue;\r\n    point.translate();\r\n    point.argument = point.argument + position;\r\n    return point\r\n}\r\n\r\nfunction preparePointsForStackedAreaSegment(points) {\r\n    var i = 0;\r\n    var p;\r\n    var result = [];\r\n    var array;\r\n    var len = points.length;\r\n    while (i < len) {\r\n        p = points[i];\r\n        array = [p];\r\n        if (p.leftHole) {\r\n            array = [clonePoint(p, p.leftHole, p.minLeftHole, \"left\"), p]\r\n        }\r\n        if (p.rightHole) {\r\n            array.push(clonePoint(p, p.rightHole, p.minRightHole, \"right\"))\r\n        }\r\n        result.push(array);\r\n        i++\r\n    }\r\n    return [].concat.apply([], result)\r\n}\r\nchart.stackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {\r\n    _prepareSegment: function(points, rotated) {\r\n        return chartAreaSeries._prepareSegment.call(this, preparePointsForStackedAreaSegment(points), rotated)\r\n    },\r\n    _appendInGroup: function() {\r\n        this._group.append(this._extGroups.seriesGroup).toBackground()\r\n    }\r\n});\r\n\r\nfunction getPointsByArgFromPrevSeries(prevSeries, argument) {\r\n    var result;\r\n    while (!result && prevSeries) {\r\n        result = prevSeries._segmentByArg && prevSeries._segmentByArg[argument];\r\n        prevSeries = prevSeries._prevSeries\r\n    }\r\n    return result\r\n}\r\nchart.stackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {\r\n    _prepareSegment: function(points, rotated) {\r\n        var that = this;\r\n        var areaSegment;\r\n        points = preparePointsForStackedAreaSegment(points);\r\n        if (!this._prevSeries || 1 === points.length) {\r\n            areaSegment = _area_series.chart.splinearea._prepareSegment.call(this, points, rotated)\r\n        } else {\r\n            var forwardPoints = _line_series.chart.spline._calculateBezierPoints(points, rotated);\r\n            var backwardPoints = (0, _utils.map)(points, function(p) {\r\n                var point = p.getCoords(true);\r\n                point.argument = p.argument;\r\n                return point\r\n            });\r\n            var prevSeriesForwardPoints = [];\r\n            var pointByArg = {};\r\n            var i = 0;\r\n            var len = that._prevSeries._segments.length;\r\n            while (i < len) {\r\n                prevSeriesForwardPoints = prevSeriesForwardPoints.concat(that._prevSeries._segments[i].line);\r\n                i++\r\n            }(0, _iterator.each)(prevSeriesForwardPoints, function(_, p) {\r\n                if (null !== p.argument) {\r\n                    var argument = p.argument.valueOf();\r\n                    if (!pointByArg[argument]) {\r\n                        pointByArg[argument] = [p]\r\n                    } else {\r\n                        pointByArg[argument].push(p)\r\n                    }\r\n                }\r\n            });\r\n            that._prevSeries._segmentByArg = pointByArg;\r\n            backwardPoints = _line_series.chart.spline._calculateBezierPoints(backwardPoints, rotated);\r\n            (0, _iterator.each)(backwardPoints, function(i, p) {\r\n                var argument = p.argument.valueOf();\r\n                var prevSeriesPoints;\r\n                if (i % 3 === 0) {\r\n                    prevSeriesPoints = pointByArg[argument] || getPointsByArgFromPrevSeries(that._prevSeries, argument);\r\n                    if (prevSeriesPoints) {\r\n                        backwardPoints[i - 1] && prevSeriesPoints[0] && (backwardPoints[i - 1] = prevSeriesPoints[0]);\r\n                        backwardPoints[i + 1] && (backwardPoints[i + 1] = prevSeriesPoints[2] || p)\r\n                    }\r\n                }\r\n            });\r\n            areaSegment = {\r\n                line: forwardPoints,\r\n                area: forwardPoints.concat(backwardPoints.reverse())\r\n            };\r\n            that._areaPointsToSplineAreaPoints(areaSegment.area)\r\n        }\r\n        return areaSegment\r\n    },\r\n    _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\nchart.fullstackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {\r\n    _prepareSegment: chart.stackedarea._prepareSegment,\r\n    _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\nchart.fullstackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {\r\n    _prepareSegment: chart.stackedsplinearea._prepareSegment,\r\n    _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\npolar.stackedbar = (0, _extend2.extend)({}, _bar_series.polar.bar, baseStackedSeries, {});\r\n","/**\r\n * DevExtreme (animation/easing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.setEasing = setEasing;\r\nexports.getEasing = getEasing;\r\nexports.convertTransitionTimingFuncToEasing = void 0;\r\nvar _type = require(\"../core/utils/type\");\r\nvar CSS_TRANSITION_EASING_REGEX = /cubic-bezier\\((\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\)/;\r\nvar TransitionTimingFuncMap = {\r\n    linear: \"cubic-bezier(0, 0, 1, 1)\",\r\n    swing: \"cubic-bezier(0.445, 0.05, 0.55, 0.95)\",\r\n    ease: \"cubic-bezier(0.25, 0.1, 0.25, 1)\",\r\n    \"ease-in\": \"cubic-bezier(0.42, 0, 1, 1)\",\r\n    \"ease-out\": \"cubic-bezier(0, 0, 0.58, 1)\",\r\n    \"ease-in-out\": \"cubic-bezier(0.42, 0, 0.58, 1)\"\r\n};\r\nvar polynomBezier = function(x1, y1, x2, y2) {\r\n    var Cx = 3 * x1;\r\n    var Bx = 3 * (x2 - x1) - Cx;\r\n    var Ax = 1 - Cx - Bx;\r\n    var Cy = 3 * y1;\r\n    var By = 3 * (y2 - y1) - Cy;\r\n    var Ay = 1 - Cy - By;\r\n    var bezierX = function(t) {\r\n        return t * (Cx + t * (Bx + t * Ax))\r\n    };\r\n    var bezierY = function(t) {\r\n        return t * (Cy + t * (By + t * Ay))\r\n    };\r\n    var derivativeX = function(t) {\r\n        return Cx + t * (2 * Bx + 3 * t * Ax)\r\n    };\r\n    var findXFor = function(t) {\r\n        var x = t;\r\n        var i = 0;\r\n        var z;\r\n        while (i < 14) {\r\n            z = bezierX(x) - t;\r\n            if (Math.abs(z) < .001) {\r\n                break\r\n            }\r\n            x -= z / derivativeX(x);\r\n            i++\r\n        }\r\n        return x\r\n    };\r\n    return function(t) {\r\n        return bezierY(findXFor(t))\r\n    }\r\n};\r\nvar easing = {};\r\nvar convertTransitionTimingFuncToEasing = function(cssTransitionEasing) {\r\n    cssTransitionEasing = TransitionTimingFuncMap[cssTransitionEasing] || cssTransitionEasing;\r\n    var coeffs = cssTransitionEasing.match(CSS_TRANSITION_EASING_REGEX);\r\n    var forceName;\r\n    if (!coeffs) {\r\n        forceName = \"linear\";\r\n        coeffs = TransitionTimingFuncMap[forceName].match(CSS_TRANSITION_EASING_REGEX)\r\n    }\r\n    coeffs = coeffs.slice(1, 5);\r\n    for (var i = 0; i < coeffs.length; i++) {\r\n        coeffs[i] = parseFloat(coeffs[i])\r\n    }\r\n    var easingName = forceName || \"cubicbezier_\" + coeffs.join(\"_\").replace(/\\./g, \"p\");\r\n    if (!(0, _type.isFunction)(easing[easingName])) {\r\n        easing[easingName] = function(x, t, b, c, d) {\r\n            return c * polynomBezier(coeffs[0], coeffs[1], coeffs[2], coeffs[3])(t / d) + b\r\n        }\r\n    }\r\n    return easingName\r\n};\r\nexports.convertTransitionTimingFuncToEasing = convertTransitionTimingFuncToEasing;\r\n\r\nfunction setEasing(value) {\r\n    easing = value\r\n}\r\n\r\nfunction getEasing(name) {\r\n    return easing[name]\r\n}\r\n","/**\r\n * DevExtreme (viz/range_selector/series_data_source.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.SeriesDataSource = void 0;\r\nvar _base_series = require(\"../series/base_series\");\r\nvar _series_family = require(\"../core/series_family\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _range = require(\"../translators/range\");\r\nvar _data_validator = require(\"../components/data_validator\");\r\nvar _chart_theme_manager = require(\"../components/chart_theme_manager\");\r\nvar createThemeManager = function(chartOptions) {\r\n    return new _chart_theme_manager.ThemeManager({\r\n        options: chartOptions,\r\n        themeSection: \"rangeSelector.chart\",\r\n        fontFields: [\"commonSeriesSettings.label.font\"]\r\n    })\r\n};\r\nvar processSeriesFamilies = function(series, minBubbleSize, maxBubbleSize, barOptions, negativesAsZeroes) {\r\n    var families = [];\r\n    var types = [];\r\n    (0, _iterator.each)(series, function(i, item) {\r\n        if ((0, _array.inArray)(item.type, types) === -1) {\r\n            types.push(item.type)\r\n        }\r\n    });\r\n    (0, _iterator.each)(types, function(_, type) {\r\n        var family = new _series_family.SeriesFamily({\r\n            type: type,\r\n            minBubbleSize: minBubbleSize,\r\n            maxBubbleSize: maxBubbleSize,\r\n            barGroupPadding: barOptions.barGroupPadding,\r\n            barGroupWidth: barOptions.barGroupWidth,\r\n            negativesAsZeroes: negativesAsZeroes\r\n        });\r\n        family.add(series);\r\n        family.adjustSeriesValues();\r\n        families.push(family)\r\n    });\r\n    return families\r\n};\r\nvar SeriesDataSource = function(options) {\r\n    var that = this;\r\n    var themeManager = that._themeManager = createThemeManager(options.chart);\r\n    themeManager.setTheme(options.chart.theme);\r\n    var topIndent = themeManager.getOptions(\"topIndent\");\r\n    var bottomIndent = themeManager.getOptions(\"bottomIndent\");\r\n    that._indent = {\r\n        top: topIndent >= 0 && topIndent < 1 ? topIndent : 0,\r\n        bottom: bottomIndent >= 0 && bottomIndent < 1 ? bottomIndent : 0\r\n    };\r\n    that._valueAxis = themeManager.getOptions(\"valueAxisRangeSelector\") || {};\r\n    that._hideChart = false;\r\n    that._series = that._calculateSeries(options);\r\n    that._seriesFamilies = []\r\n};\r\nexports.SeriesDataSource = SeriesDataSource;\r\nSeriesDataSource.prototype = {\r\n    constructor: SeriesDataSource,\r\n    _calculateSeries: function(options) {\r\n        var that = this;\r\n        var series = [];\r\n        var particularSeriesOptions;\r\n        var seriesTheme;\r\n        var data = options.dataSource || [];\r\n        var parsedData;\r\n        var chartThemeManager = that._themeManager;\r\n        var seriesTemplate = chartThemeManager.getOptions(\"seriesTemplate\");\r\n        var allSeriesOptions = seriesTemplate ? (0, _utils.processSeriesTemplate)(seriesTemplate, data) : options.chart.series;\r\n        var dataSourceField;\r\n        var valueAxis = that._valueAxis;\r\n        var i;\r\n        var newSeries;\r\n        var groupsData;\r\n        if (options.dataSource && !allSeriesOptions) {\r\n            dataSourceField = options.dataSourceField || \"arg\";\r\n            allSeriesOptions = {\r\n                argumentField: dataSourceField,\r\n                valueField: dataSourceField\r\n            };\r\n            that._hideChart = true\r\n        }\r\n        allSeriesOptions = Array.isArray(allSeriesOptions) ? allSeriesOptions : allSeriesOptions ? [allSeriesOptions] : [];\r\n        for (i = 0; i < allSeriesOptions.length; i++) {\r\n            particularSeriesOptions = (0, _extend.extend)(true, {}, allSeriesOptions[i]);\r\n            particularSeriesOptions.rotated = false;\r\n            seriesTheme = chartThemeManager.getOptions(\"series\", particularSeriesOptions, allSeriesOptions.length);\r\n            seriesTheme.argumentField = seriesTheme.argumentField || options.dataSourceField;\r\n            if (!seriesTheme.name) {\r\n                seriesTheme.name = \"Series \" + (i + 1).toString()\r\n            }\r\n            if (data && data.length > 0) {\r\n                newSeries = new _base_series.Series({\r\n                    renderer: options.renderer,\r\n                    argumentAxis: options.argumentAxis,\r\n                    valueAxis: options.valueAxis,\r\n                    incidentOccurred: options.incidentOccurred\r\n                }, seriesTheme);\r\n                series.push(newSeries)\r\n            }\r\n        }\r\n        if (series.length) {\r\n            groupsData = {\r\n                groups: [{\r\n                    series: series,\r\n                    valueAxis: options.valueAxis,\r\n                    valueOptions: {\r\n                        type: valueAxis.type,\r\n                        valueType: dataSourceField ? options.valueType : valueAxis.valueType\r\n                    }\r\n                }],\r\n                argumentOptions: {\r\n                    categories: options.categories,\r\n                    argumentType: options.valueType,\r\n                    type: options.axisType\r\n                }\r\n            };\r\n            parsedData = (0, _data_validator.validateData)(data, groupsData, options.incidentOccurred, chartThemeManager.getOptions(\"dataPrepareSettings\"));\r\n            that.argCategories = groupsData.categories;\r\n            for (i = 0; i < series.length; i++) {\r\n                series[i].updateData(parsedData[series[i].getArgumentField()])\r\n            }\r\n        }\r\n        return series\r\n    },\r\n    createPoints: function() {\r\n        if (0 === this._series.length) {\r\n            return\r\n        }\r\n        var series = this._series;\r\n        var viewport = new _range.Range;\r\n        var axis = series[0].getArgumentAxis();\r\n        var themeManager = this._themeManager;\r\n        var negativesAsZeroes = themeManager.getOptions(\"negativesAsZeroes\");\r\n        var negativesAsZeros = themeManager.getOptions(\"negativesAsZeros\");\r\n        series.forEach(function(s) {\r\n            viewport.addRange(s.getArgumentRange())\r\n        });\r\n        axis.getTranslator().updateBusinessRange(viewport);\r\n        series.forEach(function(s) {\r\n            s.createPoints()\r\n        });\r\n        this._seriesFamilies = processSeriesFamilies(series, themeManager.getOptions(\"minBubbleSize\"), themeManager.getOptions(\"maxBubbleSize\"), {\r\n            barGroupPadding: themeManager.getOptions(\"barGroupPadding\"),\r\n            barGroupWidth: themeManager.getOptions(\"barGroupWidth\")\r\n        }, (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros)\r\n    },\r\n    adjustSeriesDimensions: function() {\r\n        (0, _iterator.each)(this._seriesFamilies, function(_, family) {\r\n            family.adjustSeriesDimensions()\r\n        })\r\n    },\r\n    getBoundRange: function() {\r\n        var that = this;\r\n        var rangeData;\r\n        var valueAxis = that._valueAxis;\r\n        var valRange = new _range.Range({\r\n            min: valueAxis.min,\r\n            minVisible: valueAxis.min,\r\n            max: valueAxis.max,\r\n            maxVisible: valueAxis.max,\r\n            axisType: valueAxis.type,\r\n            base: valueAxis.logarithmBase\r\n        });\r\n        var argRange = new _range.Range({});\r\n        var rangeYSize;\r\n        var rangeVisibleSizeY;\r\n        var minIndent;\r\n        var maxIndent;\r\n        (0, _iterator.each)(that._series, function(_, series) {\r\n            rangeData = series.getRangeData();\r\n            valRange.addRange(rangeData.val);\r\n            argRange.addRange(rangeData.arg)\r\n        });\r\n        if (!valRange.isEmpty() && !argRange.isEmpty()) {\r\n            minIndent = valueAxis.inverted ? that._indent.top : that._indent.bottom;\r\n            maxIndent = valueAxis.inverted ? that._indent.bottom : that._indent.top;\r\n            rangeYSize = valRange.max - valRange.min;\r\n            rangeVisibleSizeY = ((0, _type.isNumeric)(valRange.maxVisible) ? valRange.maxVisible : valRange.max) - ((0, _type.isNumeric)(valRange.minVisible) ? valRange.minVisible : valRange.min);\r\n            if ((0, _type.isDate)(valRange.min)) {\r\n                valRange.min = new Date(valRange.min.valueOf() - rangeYSize * minIndent)\r\n            } else {\r\n                valRange.min -= rangeYSize * minIndent\r\n            }\r\n            if ((0, _type.isDate)(valRange.max)) {\r\n                valRange.max = new Date(valRange.max.valueOf() + rangeYSize * maxIndent)\r\n            } else {\r\n                valRange.max += rangeYSize * maxIndent\r\n            }\r\n            if ((0, _type.isNumeric)(rangeVisibleSizeY)) {\r\n                valRange.maxVisible = valRange.maxVisible ? valRange.maxVisible + rangeVisibleSizeY * maxIndent : void 0;\r\n                valRange.minVisible = valRange.minVisible ? valRange.minVisible - rangeVisibleSizeY * minIndent : void 0\r\n            }\r\n            valRange.invert = valueAxis.inverted\r\n        }\r\n        return {\r\n            arg: argRange,\r\n            val: valRange\r\n        }\r\n    },\r\n    getMarginOptions: function(canvas) {\r\n        var bubbleSize = Math.min(canvas.width, canvas.height) * this._themeManager.getOptions(\"maxBubbleSize\");\r\n        return this._series.reduce(function(marginOptions, series) {\r\n            var seriesOptions = series.getMarginOptions();\r\n            if (true === seriesOptions.processBubbleSize) {\r\n                seriesOptions.size = bubbleSize\r\n            }\r\n            return (0, _utils.mergeMarginOptions)(marginOptions, seriesOptions)\r\n        }, {})\r\n    },\r\n    getSeries: function() {\r\n        return this._series\r\n    },\r\n    isEmpty: function() {\r\n        return 0 === this.getSeries().length\r\n    },\r\n    isShowChart: function() {\r\n        return !this._hideChart\r\n    },\r\n    getCalculatedValueType: function() {\r\n        var series = this._series[0];\r\n        return null === series || void 0 === series ? void 0 : series.argumentType\r\n    },\r\n    getThemeManager: function() {\r\n        return this._themeManager\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/widget/swatch_container.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _view_port = require(\"../../core/utils/view_port\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SWATCH_CONTAINER_CLASS_PREFIX = \"dx-swatch-\";\r\nvar getSwatchContainer = function(element) {\r\n    var $element = (0, _renderer.default)(element);\r\n    var swatchContainer = $element.closest('[class^=\"'.concat(SWATCH_CONTAINER_CLASS_PREFIX, '\"], [class*=\" ').concat(SWATCH_CONTAINER_CLASS_PREFIX, '\"]'));\r\n    var viewport = (0, _view_port.value)();\r\n    if (!swatchContainer.length) {\r\n        return viewport\r\n    }\r\n    var swatchClassRegex = new RegExp(\"(\\\\s|^)(\".concat(SWATCH_CONTAINER_CLASS_PREFIX, \".*?)(\\\\s|$)\"));\r\n    var swatchClass = swatchContainer[0].className.match(swatchClassRegex)[2];\r\n    var viewportSwatchContainer = viewport.children(\".\" + swatchClass);\r\n    if (!viewportSwatchContainer.length) {\r\n        viewportSwatchContainer = (0, _renderer.default)(\"<div>\").addClass(swatchClass).appendTo(viewport)\r\n    }\r\n    return viewportSwatchContainer\r\n};\r\nvar _default = {\r\n    getSwatchContainer: getSwatchContainer\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _console = require(\"../../core/utils/console\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _themes = require(\"../themes\");\r\nrequire(\"./ui.data_grid.column_headers\");\r\nrequire(\"./ui.data_grid.columns_controller\");\r\nrequire(\"./ui.data_grid.data_controller\");\r\nrequire(\"./ui.data_grid.sorting\");\r\nrequire(\"./ui.data_grid.rows\");\r\nrequire(\"./ui.data_grid.context_menu\");\r\nrequire(\"./ui.data_grid.error_handling\");\r\nrequire(\"./ui.data_grid.grid_view\");\r\nrequire(\"./ui.data_grid.header_panel\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATAGRID_ROW_SELECTOR = \".dx-row\";\r\nvar DATAGRID_DEPRECATED_TEMPLATE_WARNING = \"Specifying grid templates with the jQuery selector name is now deprecated. Use the DOM Node or the jQuery object that references this selector instead.\";\r\n_uiData_grid.default.registerModulesOrder([\"stateStoring\", \"columns\", \"selection\", \"editorFactory\", \"columnChooser\", \"grouping\", \"editing\", \"masterDetail\", \"validating\", \"adaptivity\", \"data\", \"virtualScrolling\", \"columnHeaders\", \"filterRow\", \"headerPanel\", \"headerFilter\", \"sorting\", \"search\", \"rows\", \"pager\", \"columnsResizingReordering\", \"contextMenu\", \"keyboardNavigation\", \"errorHandling\", \"summary\", \"columnFixing\", \"export\", \"gridView\"]);\r\nvar DataGrid = _ui.default.inherit({\r\n    _activeStateUnit: DATAGRID_ROW_SELECTOR,\r\n    _getDefaultOptions: function() {\r\n        var that = this;\r\n        var result = that.callBase();\r\n        (0, _iterator.each)(_uiData_grid.default.modules, function() {\r\n            if ((0, _type.isFunction)(this.defaultOptions)) {\r\n                (0, _extend.extend)(true, result, this.defaultOptions())\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _setDeprecatedOptions: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._deprecatedOptions, {\r\n            useKeyboard: {\r\n                since: \"19.2\",\r\n                alias: \"keyboardNavigation.enabled\"\r\n            }\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"ios\"\r\n            },\r\n            options: {\r\n                showRowLines: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                showRowLines: true,\r\n                showColumnLines: false,\r\n                headerFilter: {\r\n                    height: 315\r\n                },\r\n                editing: {\r\n                    useIcons: true\r\n                }\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return _browser.default.webkit\r\n            },\r\n            options: {\r\n                loadingTimeout: 30,\r\n                loadPanel: {\r\n                    animation: {\r\n                        show: {\r\n                            easing: \"cubic-bezier(1, 0, 1, 0)\",\r\n                            duration: 500,\r\n                            from: {\r\n                                opacity: 0\r\n                            },\r\n                            to: {\r\n                                opacity: 1\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            device: function(_device) {\r\n                return \"desktop\" !== _device.deviceType\r\n            },\r\n            options: {\r\n                grouping: {\r\n                    expandMode: \"rowClick\"\r\n                }\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        _uiData_grid.default.processModules(that, _uiData_grid.default);\r\n        _uiData_grid.default.callModuleItemsMethod(that, \"init\")\r\n    },\r\n    _clean: _common.noop,\r\n    _optionChanged: function(args) {\r\n        var that = this;\r\n        _uiData_grid.default.callModuleItemsMethod(that, \"optionChanged\", [args]);\r\n        if (!args.handled) {\r\n            that.callBase(args)\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        this.updateDimensions(true)\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this.updateDimensions()\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this.getView(\"gridView\").render(this.$element())\r\n    },\r\n    _renderContentImpl: function() {\r\n        this.getView(\"gridView\").update()\r\n    },\r\n    _renderContent: function() {\r\n        var that = this;\r\n        (0, _common.deferRender)(function() {\r\n            that._renderContentImpl()\r\n        })\r\n    },\r\n    _getTemplate: function(templateName) {\r\n        var template = templateName;\r\n        if ((0, _type.isString)(template) && \"#\" === template[0]) {\r\n            template = (0, _renderer.default)(templateName);\r\n            _console.logger.warn(DATAGRID_DEPRECATED_TEMPLATE_WARNING)\r\n        }\r\n        return this.callBase(template)\r\n    },\r\n    _dispose: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        _uiData_grid.default.callModuleItemsMethod(that, \"dispose\")\r\n    },\r\n    isReady: function() {\r\n        return this.getController(\"data\").isReady()\r\n    },\r\n    beginUpdate: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        _uiData_grid.default.callModuleItemsMethod(that, \"beginUpdate\")\r\n    },\r\n    endUpdate: function() {\r\n        var that = this;\r\n        _uiData_grid.default.callModuleItemsMethod(that, \"endUpdate\");\r\n        that.callBase()\r\n    },\r\n    getController: function(name) {\r\n        return this._controllers[name]\r\n    },\r\n    getView: function(name) {\r\n        return this._views[name]\r\n    },\r\n    focus: function(element) {\r\n        this.getController(\"keyboardNavigation\").focus(element)\r\n    }\r\n});\r\nDataGrid.registerModule = _uiData_grid.default.registerModule.bind(_uiData_grid.default);\r\n(0, _component_registrator.default)(\"dxDataGrid\", DataGrid);\r\nvar _default = DataGrid;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_custom_operations.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.anyOf = anyOf;\r\nexports.noneOf = noneOf;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = require(\"../filter_builder/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction baseOperation(grid) {\r\n    var calculateFilterExpression = function(filterValue, field, fields) {\r\n        var result = [];\r\n        var lastIndex = filterValue.length - 1;\r\n        filterValue && filterValue.forEach(function(value, index) {\r\n            if ((0, _utils.isCondition)(value) || (0, _utils.isGroup)(value)) {\r\n                var filterExpression = (0, _utils.getFilterExpression)(value, fields, [], \"headerFilter\");\r\n                result.push(filterExpression)\r\n            } else {\r\n                result.push((0, _utils.getFilterExpression)([field.dataField, \"=\", value], fields, [], \"headerFilter\"))\r\n            }\r\n            index !== lastIndex && result.push(\"or\")\r\n        });\r\n        if (1 === result.length) {\r\n            result = result[0]\r\n        }\r\n        return result\r\n    };\r\n    var getFullText = function(itemText, parentText) {\r\n        return parentText ? parentText + \"/\" + itemText : itemText\r\n    };\r\n    var getSelectedItemsTexts = function getSelectedItemsTexts(items, parentText) {\r\n        var result = [];\r\n        items.forEach(function(item) {\r\n            if (item.items) {\r\n                var selectedItemsTexts = getSelectedItemsTexts(item.items, getFullText(item.text, parentText));\r\n                result = result.concat(selectedItemsTexts)\r\n            }\r\n            item.selected && result.push(getFullText(item.text, parentText))\r\n        });\r\n        return result\r\n    };\r\n    var headerFilterController = grid && grid.getController(\"headerFilter\");\r\n    var customizeText = function(fieldInfo) {\r\n        var value = fieldInfo.value;\r\n        var column = grid.columnOption(fieldInfo.field.dataField);\r\n        var headerFilter = column && column.headerFilter;\r\n        var lookup = column && column.lookup;\r\n        if (headerFilter && headerFilter.dataSource || lookup && lookup.dataSource) {\r\n            column = (0, _extend.extend)({}, column, {\r\n                filterType: \"include\",\r\n                filterValues: [value]\r\n            });\r\n            var dataSourceOptions = headerFilterController.getDataSource(column);\r\n            dataSourceOptions.paginate = false;\r\n            var dataSource = new _data_source.DataSource(dataSourceOptions);\r\n            var result = new _deferred.Deferred;\r\n            var key = dataSource.store().key();\r\n            if (key) {\r\n                dataSource.filter([key, \"=\", fieldInfo.value])\r\n            }\r\n            dataSource.load().done(function(items) {\r\n                result.resolve(getSelectedItemsTexts(items)[0])\r\n            });\r\n            return result\r\n        } else {\r\n            var text = headerFilterController.getHeaderItemText(value, column, 0, grid.option(\"headerFilter\"));\r\n            return text\r\n        }\r\n    };\r\n    return {\r\n        dataTypes: [\"string\", \"date\", \"datetime\", \"number\", \"boolean\", \"object\"],\r\n        calculateFilterExpression: calculateFilterExpression,\r\n        editorTemplate: function(conditionInfo, container) {\r\n            var div = (0, _renderer.default)(\"<div>\").addClass(\"dx-filterbuilder-item-value-text\").appendTo(container);\r\n            var column = (0, _extend.extend)(true, {}, grid.columnOption(conditionInfo.field.dataField));\r\n            (0, _utils.renderValueText)(div, conditionInfo.text && conditionInfo.text.split(\"|\"));\r\n            var setValue = function(value) {\r\n                conditionInfo.setValue(value)\r\n            };\r\n            column.filterType = \"include\";\r\n            column.filterValues = conditionInfo.value ? conditionInfo.value.slice() : [];\r\n            headerFilterController.showHeaderFilterMenuBase({\r\n                columnElement: div,\r\n                column: column,\r\n                apply: function() {\r\n                    setValue(this.filterValues);\r\n                    headerFilterController.hideHeaderFilterMenu();\r\n                    conditionInfo.closeEditor()\r\n                },\r\n                onHidden: function() {\r\n                    conditionInfo.closeEditor()\r\n                },\r\n                isFilterBuilder: true\r\n            });\r\n            return container\r\n        },\r\n        customizeText: customizeText\r\n    }\r\n}\r\n\r\nfunction anyOf(grid) {\r\n    return (0, _extend.extend)(baseOperation(grid), {\r\n        name: \"anyof\",\r\n        icon: \"selectall\",\r\n        caption: _message.default.format(\"dxFilterBuilder-filterOperationAnyOf\")\r\n    })\r\n}\r\n\r\nfunction noneOf(grid) {\r\n    var baseOp = baseOperation(grid);\r\n    return (0, _extend.extend)({}, baseOp, {\r\n        calculateFilterExpression: function(filterValue, field, fields) {\r\n            var baseFilter = baseOp.calculateFilterExpression(filterValue, field, fields);\r\n            if (!baseFilter || 0 === baseFilter.length) {\r\n                return null\r\n            }\r\n            return \"!\" === baseFilter[0] ? baseFilter : [\"!\", baseFilter]\r\n        },\r\n        name: \"noneof\",\r\n        icon: \"unselectall\",\r\n        caption: _message.default.format(\"dxFilterBuilder-filterOperationNoneOf\")\r\n    })\r\n}\r\n","/**\r\n * DevExtreme (exporter/excel/excel.cell_format_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.cell_alignment_helper\"));\r\nvar _excel3 = _interopRequireDefault(require(\"./excel.fill_helper\"));\r\nvar _excel4 = _interopRequireDefault(require(\"./excel.font_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar cellFormatHelper = {\r\n    tryCreateTag: function(sourceObj, sharedItemsContainer) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(sourceObj)) {\r\n            var numberFormatId;\r\n            if (\"number\" === typeof sourceObj.numberFormat) {\r\n                numberFormatId = sourceObj.numberFormat\r\n            } else {\r\n                numberFormatId = sharedItemsContainer.registerNumberFormat(sourceObj.numberFormat)\r\n            }\r\n            var fill = sourceObj.fill;\r\n            if (!(0, _type.isDefined)(fill)) {\r\n                fill = _excel3.default.tryCreateFillFromSimpleFormat(sourceObj)\r\n            }\r\n            result = {\r\n                numberFormatId: numberFormatId,\r\n                alignment: _excel2.default.tryCreateTag(sourceObj.alignment),\r\n                fontId: sharedItemsContainer.registerFont(sourceObj.font),\r\n                fillId: sharedItemsContainer.registerFill(fill)\r\n            };\r\n            if (cellFormatHelper.isEmpty(result)) {\r\n                result = null\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    copy: function(source) {\r\n        var result;\r\n        if (null === source) {\r\n            result = null\r\n        } else {\r\n            if ((0, _type.isDefined)(source)) {\r\n                result = {};\r\n                if (void 0 !== source.numberFormat) {\r\n                    result.numberFormat = source.numberFormat\r\n                }\r\n                if (void 0 !== source.fill) {\r\n                    result.fill = _excel3.default.copy(source.fill)\r\n                } else {\r\n                    _excel3.default.copySimpleFormat(source, result)\r\n                }\r\n                if (void 0 !== source.alignment) {\r\n                    result.alignment = _excel2.default.copy(source.alignment)\r\n                }\r\n                if (void 0 !== source.font) {\r\n                    result.font = _excel4.default.copy(source.font)\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    areEqual: function(leftTag, rightTag) {\r\n        return cellFormatHelper.isEmpty(leftTag) && cellFormatHelper.isEmpty(rightTag) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.fontId === rightTag.fontId && leftTag.numberFormatId === rightTag.numberFormatId && leftTag.fillId === rightTag.fillId && _excel2.default.areEqual(leftTag.alignment, rightTag.alignment)\r\n    },\r\n    isEmpty: function(tag) {\r\n        return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.fontId) && !(0, _type.isDefined)(tag.numberFormatId) && !(0, _type.isDefined)(tag.fillId) && _excel2.default.isEmpty(tag.alignment)\r\n    },\r\n    toXml: function(tag) {\r\n        var isAlignmentEmpty = _excel2.default.isEmpty(tag.alignment);\r\n        var applyNumberFormat;\r\n        if ((0, _type.isDefined)(tag.numberFormatId)) {\r\n            applyNumberFormat = tag.numberFormatId > 0 ? 1 : 0\r\n        }\r\n        return _excel.default.toXml(\"xf\", {\r\n            xfId: 0,\r\n            applyAlignment: isAlignmentEmpty ? null : 1,\r\n            fontId: tag.fontId,\r\n            applyNumberFormat: applyNumberFormat,\r\n            fillId: tag.fillId,\r\n            numFmtId: tag.numberFormatId\r\n        }, isAlignmentEmpty ? null : _excel2.default.toXml(tag.alignment))\r\n    }\r\n};\r\nvar _default = cellFormatHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/tooltip.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = exports.Tooltip = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _renderer2 = require(\"./renderers/renderer\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"./utils\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _plaque = require(\"./plaque\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar format = _format_helper.default.format;\r\nvar mathCeil = Math.ceil;\r\nvar mathMax = Math.max;\r\nvar mathMin = Math.min;\r\nvar window = (0, _window.getWindow)();\r\nvar DEFAULT_HTML_GROUP_WIDTH = 3e3;\r\n\r\nfunction hideElement($element) {\r\n    $element.css({\r\n        left: \"-9999px\"\r\n    }).detach()\r\n}\r\n\r\nfunction getSpecialFormatOptions(options, specialFormat) {\r\n    var result = options;\r\n    switch (specialFormat) {\r\n        case \"argument\":\r\n            result = {\r\n                format: options.argumentFormat\r\n            };\r\n            break;\r\n        case \"percent\":\r\n            result = {\r\n                format: {\r\n                    type: \"percent\",\r\n                    precision: options.format && options.format.percentPrecision\r\n                }\r\n            }\r\n    }\r\n    return result\r\n}\r\nvar Tooltip = function(params) {\r\n    var that = this;\r\n    var renderer;\r\n    that._eventTrigger = params.eventTrigger;\r\n    that._widgetRoot = params.widgetRoot;\r\n    that._widget = params.widget;\r\n    that._wrapper = (0, _renderer.default)(\"<div>\").css({\r\n        position: \"absolute\",\r\n        overflow: \"hidden\",\r\n        pointerEvents: \"none\"\r\n    }).addClass(params.cssClass);\r\n    that._renderer = renderer = new _renderer2.Renderer({\r\n        pathModified: params.pathModified,\r\n        container: that._wrapper[0]\r\n    });\r\n    var root = renderer.root;\r\n    root.attr({\r\n        \"pointer-events\": \"none\"\r\n    });\r\n    that._text = renderer.text(void 0, 0, 0);\r\n    that._textGroupHtml = (0, _renderer.default)(\"<div>\").css({\r\n        position: \"absolute\",\r\n        padding: 0,\r\n        margin: 0,\r\n        border: \"0px solid transparent\"\r\n    }).appendTo(that._wrapper);\r\n    that._textHtml = (0, _renderer.default)(\"<div>\").css({\r\n        position: \"relative\",\r\n        display: \"inline-block\",\r\n        padding: 0,\r\n        margin: 0,\r\n        border: \"0px solid transparent\"\r\n    }).appendTo(that._textGroupHtml)\r\n};\r\nexports.Tooltip = Tooltip;\r\nTooltip.prototype = {\r\n    constructor: Tooltip,\r\n    dispose: function() {\r\n        this._wrapper.remove();\r\n        this._renderer.dispose();\r\n        this._options = this._widgetRoot = null\r\n    },\r\n    _getContainer: function() {\r\n        var options = this._options;\r\n        var container = (0, _renderer.default)(this._widgetRoot).closest(options.container);\r\n        if (0 === container.length) {\r\n            container = (0, _renderer.default)(options.container)\r\n        }\r\n        return (container.length ? container : (0, _renderer.default)(\"body\")).get(0)\r\n    },\r\n    setTemplate: function(contentTemplate) {\r\n        var that = this;\r\n        that._template = contentTemplate ? that._widget._getTemplate(contentTemplate) : null\r\n    },\r\n    setOptions: function(options) {\r\n        var _this = this;\r\n        options = options || {};\r\n        var that = this;\r\n        that._options = options;\r\n        that._textFontStyles = (0, _utils.patchFontOptions)(options.font);\r\n        that._textFontStyles.color = that._textFontStyles.fill;\r\n        that._wrapper.css({\r\n            zIndex: options.zIndex\r\n        });\r\n        that._customizeTooltip = options.customizeTooltip;\r\n        var textGroupHtml = that._textGroupHtml;\r\n        var textHtml = that._textHtml;\r\n        if (this.plaque) {\r\n            this.plaque.clear()\r\n        }\r\n        this.setTemplate(options.contentTemplate);\r\n        var pointerEvents = options.interactive ? \"auto\" : \"none\";\r\n        if (options.interactive) {\r\n            this._renderer.root.css({\r\n                \"-ms-user-select\": \"auto\",\r\n                \"-moz-user-select\": \"auto\",\r\n                \"-webkit-user-select\": \"auto\"\r\n            })\r\n        }\r\n        var drawTooltip = function(_ref) {\r\n            var group = _ref.group,\r\n                onRender = _ref.onRender,\r\n                eventData = _ref.eventData,\r\n                isMoving = _ref.isMoving,\r\n                _ref$templateCallback = _ref.templateCallback,\r\n                templateCallback = void 0 === _ref$templateCallback ? function() {} : _ref$templateCallback;\r\n            var state = that._state;\r\n            if (!isMoving) {\r\n                var template = that._template;\r\n                var useTemplate = template && !state.formatObject.skipTemplate;\r\n                if (state.html || useTemplate) {\r\n                    textGroupHtml.css({\r\n                        color: state.textColor,\r\n                        width: DEFAULT_HTML_GROUP_WIDTH,\r\n                        pointerEvents: pointerEvents\r\n                    });\r\n                    if (useTemplate) {\r\n                        template.render({\r\n                            model: state.formatObject,\r\n                            container: textHtml,\r\n                            onRendered: function() {\r\n                                state.html = textHtml.html();\r\n                                if (0 === textHtml.width() && 0 === textHtml.height()) {\r\n                                    _this.plaque.clear();\r\n                                    templateCallback(false);\r\n                                    return\r\n                                }\r\n                                onRender();\r\n                                that._riseEvents(eventData);\r\n                                that._moveWrapper();\r\n                                that.plaque.customizeCloud({\r\n                                    fill: state.color,\r\n                                    stroke: state.borderColor,\r\n                                    \"pointer-events\": pointerEvents\r\n                                });\r\n                                templateCallback(true)\r\n                            }\r\n                        });\r\n                        return\r\n                    } else {\r\n                        that._text.attr({\r\n                            text: \"\"\r\n                        });\r\n                        textHtml.html(state.html)\r\n                    }\r\n                } else {\r\n                    that._text.css({\r\n                        fill: state.textColor\r\n                    }).attr({\r\n                        text: state.text,\r\n                        \"class\": options.cssClass,\r\n                        \"pointer-events\": pointerEvents\r\n                    }).append(group.attr({\r\n                        align: options.textAlignment\r\n                    }))\r\n                }\r\n                that._riseEvents(eventData);\r\n                that.plaque.customizeCloud({\r\n                    fill: state.color,\r\n                    stroke: state.borderColor,\r\n                    \"pointer-events\": pointerEvents\r\n                })\r\n            }\r\n            onRender();\r\n            that._moveWrapper();\r\n            return true\r\n        };\r\n        this.plaque = new _plaque.Plaque({\r\n            opacity: that._options.opacity,\r\n            color: that._options.color,\r\n            border: that._options.border,\r\n            paddingLeftRight: that._options.paddingLeftRight,\r\n            paddingTopBottom: that._options.paddingTopBottom,\r\n            arrowLength: that._options.arrowLength,\r\n            arrowWidth: 20,\r\n            shadow: that._options.shadow,\r\n            cornerRadius: that._options.cornerRadius\r\n        }, that, that._renderer.root, drawTooltip, true, function(tooltip, g) {\r\n            var state = tooltip._state;\r\n            if (state.html) {\r\n                var bBox;\r\n                var getComputedStyle = window.getComputedStyle;\r\n                if (getComputedStyle) {\r\n                    bBox = getComputedStyle(textHtml.get(0));\r\n                    bBox = {\r\n                        x: 0,\r\n                        y: 0,\r\n                        width: mathCeil(parseFloat(bBox.width)),\r\n                        height: mathCeil(parseFloat(bBox.height))\r\n                    }\r\n                } else {\r\n                    bBox = textHtml.get(0).getBoundingClientRect();\r\n                    bBox = {\r\n                        x: 0,\r\n                        y: 0,\r\n                        width: mathCeil(bBox.width ? bBox.width : bBox.right - bBox.left),\r\n                        height: mathCeil(bBox.height ? bBox.height : bBox.bottom - bBox.top)\r\n                    }\r\n                }\r\n                return bBox\r\n            }\r\n            return g.getBBox()\r\n        }, function(tooltip, g, x, y) {\r\n            var state = tooltip._state;\r\n            if (state.html) {\r\n                that._textGroupHtml.css({\r\n                    left: x,\r\n                    top: y\r\n                })\r\n            } else {\r\n                g.move(x, y)\r\n            }\r\n        });\r\n        return that\r\n    },\r\n    _riseEvents: function(eventData) {\r\n        var that = this;\r\n        that._eventData && that._eventTrigger(\"tooltipHidden\", that._eventData);\r\n        that._eventData = eventData;\r\n        that._eventTrigger(\"tooltipShown\", that._eventData)\r\n    },\r\n    setRendererOptions: function(options) {\r\n        this._renderer.setOptions(options);\r\n        this._textGroupHtml.css({\r\n            direction: options.rtl ? \"rtl\" : \"ltr\"\r\n        });\r\n        return this\r\n    },\r\n    update: function(options) {\r\n        var that = this;\r\n        that.setOptions(options);\r\n        hideElement(that._wrapper);\r\n        var normalizedCSS = {};\r\n        for (var name in that._textFontStyles) {\r\n            normalizedCSS[(0, _inflector.camelize)(name)] = that._textFontStyles[name]\r\n        }\r\n        that._textGroupHtml.css(normalizedCSS);\r\n        that._text.css(that._textFontStyles);\r\n        that._eventData = null;\r\n        return that\r\n    },\r\n    _prepare: function(formatObject, state) {\r\n        var customizeTooltip = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this._customizeTooltip;\r\n        var options = this._options;\r\n        var customize = {};\r\n        if ((0, _type.isFunction)(customizeTooltip)) {\r\n            customize = customizeTooltip.call(formatObject, formatObject);\r\n            customize = (0, _type.isPlainObject)(customize) ? customize : {};\r\n            if (\"text\" in customize) {\r\n                state.text = (0, _type.isDefined)(customize.text) ? String(customize.text) : \"\"\r\n            }\r\n            if (\"html\" in customize) {\r\n                state.html = (0, _type.isDefined)(customize.html) ? String(customize.html) : \"\"\r\n            }\r\n        }\r\n        if (!(\"text\" in state) && !(\"html\" in state)) {\r\n            state.text = formatObject.valueText || formatObject.description || \"\"\r\n        }\r\n        state.color = customize.color || options.color;\r\n        state.borderColor = customize.borderColor || (options.border || {}).color;\r\n        state.textColor = customize.fontColor || (this._textFontStyles || {}).color;\r\n        return !!state.text || !!state.html || !!this._template\r\n    },\r\n    show: function(formatObject, params, eventData, customizeTooltip, templateCallback) {\r\n        var that = this;\r\n        if (that._options.forceEvents) {\r\n            eventData.x = params.x;\r\n            eventData.y = params.y - params.offset;\r\n            that._riseEvents(eventData);\r\n            return true\r\n        }\r\n        var state = {\r\n            formatObject: formatObject,\r\n            eventData: eventData,\r\n            templateCallback: templateCallback\r\n        };\r\n        if (!that._prepare(formatObject, state, customizeTooltip)) {\r\n            return false\r\n        }\r\n        that._state = state;\r\n        that._wrapper.appendTo(that._getContainer());\r\n        that._clear();\r\n        var parameters = (0, _extend.extend)({}, that._options, {\r\n            canvas: that._getCanvas()\r\n        }, state, {\r\n            x: params.x,\r\n            y: params.y,\r\n            offset: params.offset\r\n        });\r\n        return this.plaque.clear().draw(parameters)\r\n    },\r\n    isCursorOnTooltip: function(x, y) {\r\n        if (this._options.interactive && this.isEnabled()) {\r\n            var box = this.plaque.getBBox();\r\n            return x > box.x && x < box.x + box.width && y > box.y && y < box.y + box.height\r\n        }\r\n        return false\r\n    },\r\n    hide: function() {\r\n        var that = this;\r\n        hideElement(that._wrapper);\r\n        if (that._eventData) {\r\n            that._eventTrigger(\"tooltipHidden\", that._eventData);\r\n            that._clear();\r\n            that._eventData = null\r\n        }\r\n    },\r\n    _clear: function() {\r\n        this._textHtml.empty()\r\n    },\r\n    move: function(x, y, offset) {\r\n        this.plaque.draw({\r\n            x: x,\r\n            y: y,\r\n            offset: offset,\r\n            canvas: this._getCanvas(),\r\n            isMoving: true\r\n        })\r\n    },\r\n    _moveWrapper: function() {\r\n        var that = this;\r\n        var plaqueBBox = this.plaque.getBBox();\r\n        that._renderer.resize(plaqueBBox.width, plaqueBBox.height);\r\n        var offset = that._wrapper.css({\r\n            left: 0,\r\n            top: 0\r\n        }).offset();\r\n        var left = plaqueBBox.x;\r\n        var top = plaqueBBox.y;\r\n        that._wrapper.css({\r\n            left: left - offset.left,\r\n            top: top - offset.top\r\n        });\r\n        this.plaque.moveRoot(-left, -top);\r\n        if (this._state.html) {\r\n            that._textHtml.css({\r\n                left: -left,\r\n                top: -top\r\n            });\r\n            that._textGroupHtml.css({\r\n                width: plaqueBBox.width\r\n            })\r\n        }\r\n    },\r\n    formatValue: function(value, _specialFormat) {\r\n        var options = _specialFormat ? getSpecialFormatOptions(this._options, _specialFormat) : this._options;\r\n        return format(value, options.format)\r\n    },\r\n    getLocation: function() {\r\n        return (0, _utils.normalizeEnum)(this._options.location)\r\n    },\r\n    isEnabled: function() {\r\n        return !!this._options.enabled || !!this._options.forceEvents\r\n    },\r\n    isShared: function() {\r\n        return !!this._options.shared\r\n    },\r\n    _getCanvas: function() {\r\n        var container = this._getContainer();\r\n        var containerBox = container.getBoundingClientRect();\r\n        var html = _dom_adapter.default.getDocumentElement();\r\n        var document = _dom_adapter.default.getDocument();\r\n        var left = window.pageXOffset || html.scrollLeft || 0;\r\n        var top = window.pageYOffset || html.scrollTop || 0;\r\n        var box = {\r\n            left: left,\r\n            top: top,\r\n            width: html.clientWidth + left || 0,\r\n            height: mathMax(document.body.scrollHeight, html.scrollHeight, document.body.offsetHeight, html.offsetHeight, document.body.clientHeight, html.clientHeight) || 0,\r\n            right: 0,\r\n            bottom: 0\r\n        };\r\n        if (container !== _dom_adapter.default.getBody()) {\r\n            left = mathMax(box.left, box.left + containerBox.left);\r\n            top = mathMax(box.top, box.top + containerBox.top);\r\n            box.width = mathMin(containerBox.width, box.width) + left + box.left;\r\n            box.height = mathMin(containerBox.height, box.height) + top + box.top;\r\n            box.left = left;\r\n            box.top = top\r\n        }\r\n        return box\r\n    }\r\n};\r\nvar plugin = {\r\n    name: \"tooltip\",\r\n    init: function() {\r\n        this._initTooltip()\r\n    },\r\n    dispose: function() {\r\n        this._disposeTooltip()\r\n    },\r\n    members: {\r\n        _initTooltip: function() {\r\n            this._tooltip = new Tooltip({\r\n                cssClass: this._rootClassPrefix + \"-tooltip\",\r\n                eventTrigger: this._eventTrigger,\r\n                pathModified: this.option(\"pathModified\"),\r\n                widgetRoot: this.element(),\r\n                widget: this\r\n            })\r\n        },\r\n        _disposeTooltip: function() {\r\n            this._tooltip.dispose();\r\n            this._tooltip = null\r\n        },\r\n        _setTooltipRendererOptions: function() {\r\n            this._tooltip.setRendererOptions(this._getRendererOptions())\r\n        },\r\n        _setTooltipOptions: function() {\r\n            this._tooltip.update(this._getOption(\"tooltip\"))\r\n        }\r\n    },\r\n    extenders: {\r\n        _stopCurrentHandling: function() {\r\n            this._tooltip && this._tooltip.hide()\r\n        }\r\n    },\r\n    customize: function(constructor) {\r\n        var proto = constructor.prototype;\r\n        proto._eventsMap.onTooltipShown = {\r\n            name: \"tooltipShown\"\r\n        };\r\n        proto._eventsMap.onTooltipHidden = {\r\n            name: \"tooltipHidden\"\r\n        };\r\n        constructor.addChange({\r\n            code: \"TOOLTIP_RENDERER\",\r\n            handler: function() {\r\n                this._setTooltipRendererOptions()\r\n            },\r\n            isThemeDependent: true,\r\n            isOptionChange: true\r\n        });\r\n        constructor.addChange({\r\n            code: \"TOOLTIP\",\r\n            handler: function() {\r\n                this._setTooltipOptions()\r\n            },\r\n            isThemeDependent: true,\r\n            isOptionChange: true,\r\n            option: \"tooltip\"\r\n        })\r\n    },\r\n    fontFields: [\"tooltip.font\"]\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (viz/chart_components/crosshair.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getMargins = getMargins;\r\nexports.Crosshair = Crosshair;\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar math = Math;\r\nvar mathAbs = math.abs;\r\nvar mathMin = math.min;\r\nvar mathMax = math.max;\r\nvar mathFloor = math.floor;\r\nvar HORIZONTAL = \"horizontal\";\r\nvar VERTICAL = \"vertical\";\r\nvar LABEL_BACKGROUND_PADDING_X = 8;\r\nvar LABEL_BACKGROUND_PADDING_Y = 4;\r\nvar CENTER = \"center\";\r\nvar RIGHT = \"right\";\r\nvar LEFT = \"left\";\r\nvar TOP = \"top\";\r\nvar BOTTOM = \"bottom\";\r\n\r\nfunction getMargins() {\r\n    return {\r\n        x: LABEL_BACKGROUND_PADDING_X,\r\n        y: LABEL_BACKGROUND_PADDING_Y\r\n    }\r\n}\r\n\r\nfunction getRectangleBBox(bBox) {\r\n    return {\r\n        x: bBox.x - LABEL_BACKGROUND_PADDING_X,\r\n        y: bBox.y - LABEL_BACKGROUND_PADDING_Y,\r\n        width: bBox.width + 2 * LABEL_BACKGROUND_PADDING_X,\r\n        height: bBox.height + 2 * LABEL_BACKGROUND_PADDING_Y\r\n    }\r\n}\r\n\r\nfunction getLabelCheckerPosition(x, y, isHorizontal, canvas) {\r\n    var params = isHorizontal ? [\"x\", \"width\", \"y\", \"height\", y, 0] : [\"y\", \"height\", \"x\", \"width\", x, 1];\r\n    return function(bBox, position, coord) {\r\n        var labelCoord = {\r\n            x: coord.x,\r\n            y: coord.y\r\n        };\r\n        var rectangleBBox = getRectangleBBox(bBox);\r\n        var delta = isHorizontal ? coord.y - bBox.y - bBox.height / 2 : coord.y - bBox.y;\r\n        labelCoord.y = isHorizontal || !isHorizontal && position === BOTTOM ? coord.y + delta : coord.y;\r\n        if (rectangleBBox[params[0]] < 0) {\r\n            labelCoord[params[0]] -= rectangleBBox[params[0]]\r\n        } else {\r\n            if (rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] > canvas[params[1]]) {\r\n                labelCoord[params[0]] -= rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] - canvas[params[1]]\r\n            }\r\n        }\r\n        if (params[4] - rectangleBBox[params[3]] / 2 < 0) {\r\n            labelCoord[params[2]] -= params[4] - rectangleBBox[params[3]] / 2\r\n        } else {\r\n            if (params[4] + rectangleBBox[params[3]] / 2 > canvas[params[3]]) {\r\n                labelCoord[params[2]] -= params[4] + rectangleBBox[params[3]] / 2 - canvas[params[3]]\r\n            }\r\n        }\r\n        return labelCoord\r\n    }\r\n}\r\n\r\nfunction Crosshair(renderer, options, params, group) {\r\n    var that = this;\r\n    that._renderer = renderer;\r\n    that._crosshairGroup = group;\r\n    that._options = {};\r\n    that.update(options, params)\r\n}\r\nCrosshair.prototype = {\r\n    constructor: Crosshair,\r\n    update: function(options, params) {\r\n        var that = this;\r\n        var canvas = params.canvas;\r\n        that._canvas = {\r\n            top: canvas.top,\r\n            bottom: canvas.height - canvas.bottom,\r\n            left: canvas.left,\r\n            right: canvas.width - canvas.right,\r\n            width: canvas.width,\r\n            height: canvas.height\r\n        };\r\n        that._axes = params.axes;\r\n        that._panes = params.panes;\r\n        that._prepareOptions(options, HORIZONTAL);\r\n        that._prepareOptions(options, VERTICAL)\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        that._renderer = that._crosshairGroup = that._options = that._axes = that._canvas = that._horizontalGroup = that._verticalGroup = that._horizontal = that._vertical = that._circle = that._panes = null\r\n    },\r\n    _prepareOptions: function(options, direction) {\r\n        var lineOptions = options[direction + \"Line\"];\r\n        this._options[direction] = {\r\n            visible: lineOptions.visible,\r\n            line: {\r\n                stroke: lineOptions.color || options.color,\r\n                \"stroke-width\": lineOptions.width || options.width,\r\n                dashStyle: lineOptions.dashStyle || options.dashStyle,\r\n                opacity: lineOptions.opacity || options.opacity,\r\n                \"stroke-linecap\": \"butt\"\r\n            },\r\n            label: (0, _extend.extend)(true, {}, options.label, lineOptions.label)\r\n        }\r\n    },\r\n    _createLines: function(options, sharpParam, group) {\r\n        var lines = [];\r\n        var canvas = this._canvas;\r\n        var points = [canvas.left, canvas.top, canvas.left, canvas.top];\r\n        for (var i = 0; i < 2; i++) {\r\n            lines.push(this._renderer.path(points, \"line\").attr(options).sharp(sharpParam).append(group))\r\n        }\r\n        return lines\r\n    },\r\n    render: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var options = that._options;\r\n        var verticalOptions = options.vertical;\r\n        var horizontalOptions = options.horizontal;\r\n        var extraOptions = horizontalOptions.visible ? horizontalOptions.line : verticalOptions.line;\r\n        var circleOptions = {\r\n            stroke: extraOptions.stroke,\r\n            \"stroke-width\": extraOptions[\"stroke-width\"],\r\n            dashStyle: extraOptions.dashStyle,\r\n            opacity: extraOptions.opacity\r\n        };\r\n        var canvas = that._canvas;\r\n        that._horizontal = {};\r\n        that._vertical = {};\r\n        that._circle = renderer.circle(canvas.left, canvas.top, 0).attr(circleOptions).append(that._crosshairGroup);\r\n        that._horizontalGroup = renderer.g().append(that._crosshairGroup);\r\n        that._verticalGroup = renderer.g().append(that._crosshairGroup);\r\n        if (verticalOptions.visible) {\r\n            that._vertical.lines = that._createLines(verticalOptions.line, \"h\", that._verticalGroup);\r\n            that._vertical.labels = that._createLabels(that._axes[0], verticalOptions, false, that._verticalGroup)\r\n        }\r\n        if (horizontalOptions.visible) {\r\n            that._horizontal.lines = that._createLines(horizontalOptions.line, \"v\", that._horizontalGroup);\r\n            that._horizontal.labels = that._createLabels(that._axes[1], horizontalOptions, true, that._horizontalGroup)\r\n        }\r\n        that.hide()\r\n    },\r\n    _createLabels: function(axes, options, isHorizontal, group) {\r\n        var that = this;\r\n        var canvas = that._canvas;\r\n        var renderer = that._renderer;\r\n        var x;\r\n        var y;\r\n        var text;\r\n        var labels = [];\r\n        var background;\r\n        var currentLabelPos;\r\n        var labelOptions = options.label;\r\n        if (labelOptions.visible) {\r\n            axes.forEach(function(axis) {\r\n                var position = axis.getOptions().position;\r\n                if (axis.getTranslator().getBusinessRange().isEmpty()) {\r\n                    return\r\n                }\r\n                currentLabelPos = axis.getLabelsPosition();\r\n                if (isHorizontal) {\r\n                    y = canvas.top;\r\n                    x = currentLabelPos\r\n                } else {\r\n                    x = canvas.left;\r\n                    y = currentLabelPos\r\n                }\r\n                var align = position === TOP || position === BOTTOM ? CENTER : position === RIGHT ? LEFT : RIGHT;\r\n                background = renderer.rect(0, 0, 0, 0).attr({\r\n                    fill: labelOptions.backgroundColor || options.line.stroke\r\n                }).append(group);\r\n                text = renderer.text(\"0\", 0, 0).css((0, _utils.patchFontOptions)(options.label.font)).attr({\r\n                    align: align,\r\n                    \"class\": labelOptions.cssClass\r\n                }).append(group);\r\n                labels.push({\r\n                    text: text,\r\n                    background: background,\r\n                    axis: axis,\r\n                    options: labelOptions,\r\n                    pos: {\r\n                        coord: currentLabelPos,\r\n                        side: position\r\n                    },\r\n                    startXY: {\r\n                        x: x,\r\n                        y: y\r\n                    }\r\n                })\r\n            })\r\n        }\r\n        return labels\r\n    },\r\n    _updateText: function(value, axisName, labels, point, func) {\r\n        var that = this;\r\n        labels.forEach(function(label) {\r\n            var axis = label.axis;\r\n            var coord = label.startXY;\r\n            var textElement = label.text;\r\n            var backgroundElement = label.background;\r\n            var text = \"\";\r\n            if (!axis.name || axis.name === axisName) {\r\n                text = axis.getFormattedValue(value, label.options, point)\r\n            }\r\n            if (text) {\r\n                textElement.attr({\r\n                    text: text,\r\n                    x: coord.x,\r\n                    y: coord.y\r\n                });\r\n                textElement.attr(func(textElement.getBBox(), label.pos.side, coord));\r\n                that._updateLinesCanvas(label);\r\n                backgroundElement.attr(getRectangleBBox(textElement.getBBox()))\r\n            } else {\r\n                textElement.attr({\r\n                    text: \"\"\r\n                });\r\n                backgroundElement.attr({\r\n                    x: 0,\r\n                    y: 0,\r\n                    width: 0,\r\n                    height: 0\r\n                })\r\n            }\r\n        })\r\n    },\r\n    hide: function() {\r\n        this._crosshairGroup.attr({\r\n            visibility: \"hidden\"\r\n        })\r\n    },\r\n    _updateLinesCanvas: function(label) {\r\n        var position = label.pos.side;\r\n        var labelCoord = label.pos.coord;\r\n        var coords = this._linesCanvas;\r\n        var canvas = this._canvas;\r\n        coords[position] = coords[position] !== canvas[position] && mathAbs(coords[position] - canvas[position]) < mathAbs(labelCoord - canvas[position]) ? coords[position] : labelCoord\r\n    },\r\n    _updateLines: function(lines, x, y, r, isHorizontal) {\r\n        var coords = this._linesCanvas;\r\n        var canvas = this._canvas;\r\n        var points = isHorizontal ? [\r\n            [mathMin(x - r, coords.left), canvas.top, x - r, canvas.top],\r\n            [x + r, canvas.top, mathMax(coords.right, x + r), canvas.top]\r\n        ] : [\r\n            [canvas.left, mathMin(coords.top, y - r), canvas.left, y - r],\r\n            [canvas.left, y + r, canvas.left, mathMax(coords.bottom, y + r)]\r\n        ];\r\n        for (var i = 0; i < 2; i++) {\r\n            lines[i].attr({\r\n                points: points[i]\r\n            }).sharp(isHorizontal ? \"v\" : \"h\", isHorizontal ? y === canvas.bottom ? -1 : 1 : x === canvas.right ? -1 : 1)\r\n        }\r\n    },\r\n    _resetLinesCanvas: function() {\r\n        var canvas = this._canvas;\r\n        this._linesCanvas = {\r\n            left: canvas.left,\r\n            right: canvas.right,\r\n            top: canvas.top,\r\n            bottom: canvas.bottom\r\n        }\r\n    },\r\n    _getClipRectForPane: function(x, y) {\r\n        var panes = this._panes;\r\n        var i;\r\n        var coords;\r\n        for (i = 0; i < panes.length; i++) {\r\n            coords = panes[i].coords;\r\n            if (coords.left <= x && coords.right >= x && coords.top <= y && coords.bottom >= y) {\r\n                return panes[i].clipRect\r\n            }\r\n        }\r\n        return {\r\n            id: null\r\n        }\r\n    },\r\n    show: function(data) {\r\n        var that = this;\r\n        var point = data.point;\r\n        var pointData = point.getCrosshairData(data.x, data.y);\r\n        var r = point.getPointRadius();\r\n        var horizontal = that._horizontal;\r\n        var vertical = that._vertical;\r\n        var rad = !r ? 0 : r + 3;\r\n        var canvas = that._canvas;\r\n        var x = mathFloor(pointData.x);\r\n        var y = mathFloor(pointData.y);\r\n        if (x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom) {\r\n            that._crosshairGroup.attr({\r\n                visibility: \"visible\"\r\n            });\r\n            that._resetLinesCanvas();\r\n            that._circle.attr({\r\n                cx: x,\r\n                cy: y,\r\n                r: rad,\r\n                \"clip-path\": that._getClipRectForPane(x, y).id\r\n            });\r\n            if (horizontal.lines) {\r\n                that._updateText(pointData.yValue, pointData.axis, horizontal.labels, point, getLabelCheckerPosition(x, y, true, canvas));\r\n                that._updateLines(horizontal.lines, x, y, rad, true);\r\n                that._horizontalGroup.attr({\r\n                    translateY: y - canvas.top\r\n                })\r\n            }\r\n            if (vertical.lines) {\r\n                that._updateText(pointData.xValue, pointData.axis, vertical.labels, point, getLabelCheckerPosition(x, y, false, canvas));\r\n                that._updateLines(vertical.lines, x, y, rad, false);\r\n                that._verticalGroup.attr({\r\n                    translateX: x - canvas.left\r\n                })\r\n            }\r\n        } else {\r\n            that.hide()\r\n        }\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.switchable.slide.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _click = require(\"../../events/click\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\nvar _uiListEdit = _interopRequireDefault(require(\"./ui.list.edit.decorator_menu_helper\"));\r\nvar _uiListEdit2 = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEditDecorator = _interopRequireDefault(require(\"./ui.list.edit.decorator.switchable\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _themes = require(\"../themes\");\r\nvar _action_sheet = _interopRequireDefault(require(\"../action_sheet\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar CLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, LIST_EDIT_DECORATOR);\r\nvar ACTIVE_EVENT_NAME = (0, _index.addNamespace)(_emitter.active, LIST_EDIT_DECORATOR);\r\nvar SLIDE_MENU_CLASS = \"dx-list-slide-menu\";\r\nvar SLIDE_MENU_WRAPPER_CLASS = \"dx-list-slide-menu-wrapper\";\r\nvar SLIDE_MENU_CONTENT_CLASS = \"dx-list-slide-menu-content\";\r\nvar SLIDE_MENU_BUTTONS_CONTAINER_CLASS = \"dx-list-slide-menu-buttons-container\";\r\nvar SLIDE_MENU_BUTTONS_CLASS = \"dx-list-slide-menu-buttons\";\r\nvar SLIDE_MENU_BUTTON_CLASS = \"dx-list-slide-menu-button\";\r\nvar SLIDE_MENU_BUTTON_MENU_CLASS = \"dx-list-slide-menu-button-menu\";\r\nvar SLIDE_MENU_BUTTON_DELETE_CLASS = \"dx-list-slide-menu-button-delete\";\r\nvar SLIDE_MENU_ANIMATION_DURATION = 400;\r\nvar SLIDE_MENU_ANIMATION_EASING = \"cubic-bezier(0.075, 0.82, 0.165, 1)\";\r\n(0, _uiListEdit2.register)(\"menu\", \"slide\", _uiListEditDecorator.default.inherit({\r\n    _shouldHandleSwipe: true,\r\n    _init: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._$buttonsContainer = (0, _renderer.default)(\"<div>\").addClass(SLIDE_MENU_BUTTONS_CONTAINER_CLASS);\r\n        _events_engine.default.on(this._$buttonsContainer, ACTIVE_EVENT_NAME, _common.noop);\r\n        this._$buttons = (0, _renderer.default)(\"<div>\").addClass(SLIDE_MENU_BUTTONS_CLASS).appendTo(this._$buttonsContainer);\r\n        this._renderMenu();\r\n        this._renderDeleteButton()\r\n    },\r\n    _renderMenu: function() {\r\n        if (!this._menuEnabled()) {\r\n            return\r\n        }\r\n        var menuItems = this._menuItems();\r\n        if (1 === menuItems.length) {\r\n            var menuItem = menuItems[0];\r\n            this._renderMenuButton(menuItem.text, function(e) {\r\n                e.stopPropagation();\r\n                this._fireAction(menuItem)\r\n            }.bind(this))\r\n        } else {\r\n            var $menu = (0, _renderer.default)(\"<div>\").addClass(SLIDE_MENU_CLASS);\r\n            this._menu = this._list._createComponent($menu, _action_sheet.default, {\r\n                showTitle: false,\r\n                items: menuItems,\r\n                onItemClick: function(args) {\r\n                    this._fireAction(args.itemData)\r\n                }.bind(this),\r\n                integrationOptions: {}\r\n            });\r\n            $menu.appendTo(this._list.$element());\r\n            var $menuButton = this._renderMenuButton(_message.default.format(\"dxListEditDecorator-more\"), function(e) {\r\n                e.stopPropagation();\r\n                this._menu.show()\r\n            }.bind(this));\r\n            this._menu.option(\"target\", $menuButton)\r\n        }\r\n    },\r\n    _renderMenuButton: function(text, action) {\r\n        var $menuButton = (0, _renderer.default)(\"<div>\").addClass(SLIDE_MENU_BUTTON_CLASS).addClass(SLIDE_MENU_BUTTON_MENU_CLASS).text(text);\r\n        this._$buttons.append($menuButton);\r\n        _events_engine.default.on($menuButton, CLICK_EVENT_NAME, action);\r\n        return $menuButton\r\n    },\r\n    _renderDeleteButton: function() {\r\n        if (!this._deleteEnabled()) {\r\n            return\r\n        }\r\n        var $deleteButton = (0, _renderer.default)(\"<div>\").addClass(SLIDE_MENU_BUTTON_CLASS).addClass(SLIDE_MENU_BUTTON_DELETE_CLASS).text((0, _themes.isMaterial)() ? \"\" : _message.default.format(\"dxListEditDecorator-delete\"));\r\n        _events_engine.default.on($deleteButton, CLICK_EVENT_NAME, function(e) {\r\n            e.stopPropagation();\r\n            this._deleteItem()\r\n        }.bind(this));\r\n        this._$buttons.append($deleteButton)\r\n    },\r\n    _fireAction: function(menuItem) {\r\n        this._fireMenuAction((0, _renderer.default)(this._cachedNode), menuItem.action);\r\n        this._cancelDeleteReadyItem()\r\n    },\r\n    modifyElement: function(config) {\r\n        this.callBase.apply(this, arguments);\r\n        var $itemElement = config.$itemElement;\r\n        $itemElement.addClass(SLIDE_MENU_WRAPPER_CLASS);\r\n        var $slideMenuContent = (0, _renderer.default)(\"<div>\").addClass(SLIDE_MENU_CONTENT_CLASS);\r\n        $itemElement.wrapInner($slideMenuContent)\r\n    },\r\n    _getDeleteButtonContainer: function() {\r\n        return this._$buttonsContainer\r\n    },\r\n    handleClick: function(_, e) {\r\n        if ((0, _renderer.default)(e.target).closest(\".\" + SLIDE_MENU_CONTENT_CLASS).length) {\r\n            return this.callBase.apply(this, arguments)\r\n        }\r\n        return false\r\n    },\r\n    _swipeStartHandler: function($itemElement) {\r\n        this._enablePositioning($itemElement);\r\n        this._cacheItemData($itemElement);\r\n        this._setPositions(this._getPositions(0))\r\n    },\r\n    _swipeUpdateHandler: function($itemElement, args) {\r\n        var rtl = this._isRtlEnabled();\r\n        var signCorrection = rtl ? -1 : 1;\r\n        var isItemReadyToDelete = this._isReadyToDelete($itemElement);\r\n        var moveJustStarted = this._getCurrentPositions().content === this._getStartPositions().content;\r\n        if (moveJustStarted && !isItemReadyToDelete && args.offset * signCorrection > 0) {\r\n            args.cancel = true;\r\n            return\r\n        }\r\n        var offset = this._cachedItemWidth * args.offset;\r\n        var startOffset = isItemReadyToDelete ? -this._cachedButtonWidth * signCorrection : 0;\r\n        var correctedOffset = (offset + startOffset) * signCorrection;\r\n        var percent = correctedOffset < 0 ? Math.abs((offset + startOffset) / this._cachedButtonWidth) : 0;\r\n        this._setPositions(this._getPositions(percent));\r\n        return true\r\n    },\r\n    _getStartPositions: function() {\r\n        var rtl = this._isRtlEnabled();\r\n        var signCorrection = rtl ? -1 : 1;\r\n        return {\r\n            content: 0,\r\n            buttonsContainer: rtl ? -this._cachedButtonWidth : this._cachedItemWidth,\r\n            buttons: -this._cachedButtonWidth * signCorrection\r\n        }\r\n    },\r\n    _getPositions: function(percent) {\r\n        var rtl = this._isRtlEnabled();\r\n        var signCorrection = rtl ? -1 : 1;\r\n        var startPositions = this._getStartPositions();\r\n        return {\r\n            content: startPositions.content - percent * this._cachedButtonWidth * signCorrection,\r\n            buttonsContainer: startPositions.buttonsContainer - Math.min(percent, 1) * this._cachedButtonWidth * signCorrection,\r\n            buttons: startPositions.buttons + Math.min(percent, 1) * this._cachedButtonWidth * signCorrection\r\n        }\r\n    },\r\n    _getCurrentPositions: function() {\r\n        return {\r\n            content: (0, _translator.locate)(this._$cachedContent).left,\r\n            buttonsContainer: (0, _translator.locate)(this._$buttonsContainer).left,\r\n            buttons: (0, _translator.locate)(this._$buttons).left\r\n        }\r\n    },\r\n    _setPositions: function(positions) {\r\n        (0, _translator.move)(this._$cachedContent, {\r\n            left: positions.content\r\n        });\r\n        (0, _translator.move)(this._$buttonsContainer, {\r\n            left: positions.buttonsContainer\r\n        });\r\n        (0, _translator.move)(this._$buttons, {\r\n            left: positions.buttons\r\n        })\r\n    },\r\n    _cacheItemData: function($itemElement) {\r\n        if ($itemElement[0] === this._cachedNode) {\r\n            return\r\n        }\r\n        this._$cachedContent = $itemElement.find(\".\" + SLIDE_MENU_CONTENT_CLASS);\r\n        this._cachedItemWidth = $itemElement.outerWidth();\r\n        this._cachedButtonWidth = this._cachedButtonWidth || this._$buttons.outerWidth();\r\n        this._$buttonsContainer.width(this._cachedButtonWidth);\r\n        if (this._$cachedContent.length) {\r\n            this._cachedNode = $itemElement[0]\r\n        }\r\n    },\r\n    _minButtonContainerLeftOffset: function() {\r\n        return this._cachedItemWidth - this._cachedButtonWidth\r\n    },\r\n    _swipeEndHandler: function($itemElement, args) {\r\n        this._cacheItemData($itemElement);\r\n        var signCorrection = this._isRtlEnabled() ? 1 : -1;\r\n        var offset = this._cachedItemWidth * args.offset;\r\n        var endedAtReadyToDelete = !this._isReadyToDelete($itemElement) && offset * signCorrection > .2 * this._cachedButtonWidth;\r\n        var readyToDelete = args.targetOffset === signCorrection && endedAtReadyToDelete;\r\n        this._toggleDeleteReady($itemElement, readyToDelete);\r\n        return true\r\n    },\r\n    _enablePositioning: function($itemElement) {\r\n        _fx.default.stop(this._$cachedContent, true);\r\n        this.callBase.apply(this, arguments);\r\n        this._$buttonsContainer.appendTo($itemElement)\r\n    },\r\n    _disablePositioning: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._$buttonsContainer.detach()\r\n    },\r\n    _animatePrepareDeleteReady: function() {\r\n        return this._animateToPositions(this._getPositions(1))\r\n    },\r\n    _animateForgetDeleteReady: function($itemElement) {\r\n        this._cacheItemData($itemElement);\r\n        return this._animateToPositions(this._getPositions(0))\r\n    },\r\n    _animateToPositions: function(positions) {\r\n        var that = this;\r\n        var currentPosition = this._getCurrentPositions();\r\n        var durationTimePart = Math.min(Math.abs(currentPosition.content - positions.content) / this._cachedButtonWidth, 1);\r\n        return _fx.default.animate(this._$cachedContent, {\r\n            from: currentPosition,\r\n            to: positions,\r\n            easing: SLIDE_MENU_ANIMATION_EASING,\r\n            duration: SLIDE_MENU_ANIMATION_DURATION * durationTimePart,\r\n            strategy: \"frame\",\r\n            draw: function(positions) {\r\n                that._setPositions(positions)\r\n            }\r\n        })\r\n    },\r\n    dispose: function() {\r\n        if (this._menu) {\r\n            this._menu.$element().remove()\r\n        }\r\n        if (this._$buttonsContainer) {\r\n            this._$buttonsContainer.remove()\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    }\r\n}).include(_uiListEdit.default));\r\n","/**\r\n * DevExtreme (ui/scheduler/appointmentPopup.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _uiScheduler = require(\"./ui.scheduler.appointment_form\");\r\nvar _ui = require(\"./ui.loading\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar WIDGET_CLASS = \"dx-scheduler\";\r\nvar APPOINTMENT_POPUP_CLASS = \"\".concat(WIDGET_CLASS, \"-appointment-popup\");\r\nvar APPOINTMENT_POPUP_WIDTH = 485;\r\nvar APPOINTMENT_POPUP_WIDTH_WITH_RECURRENCE = 970;\r\nvar APPOINTMENT_POPUP_FULLSCREEN_WINDOW_WIDTH = 1e3;\r\nvar APPOINTMENT_POPUP_FULLSCREEN_WINDOW_WIDTH_MOBILE = 500;\r\nvar APPOINTMENT_POPUP_WIDTH_MOBILE = 350;\r\nvar TOOLBAR_ITEM_AFTER_LOCATION = \"after\";\r\nvar TOOLBAR_ITEM_BEFORE_LOCATION = \"before\";\r\nvar DAY_IN_MS = toMs(\"day\");\r\nvar AppointmentPopup = function() {\r\n    function AppointmentPopup(scheduler) {\r\n        _classCallCheck(this, AppointmentPopup);\r\n        this.scheduler = scheduler;\r\n        this._popup = null;\r\n        this._appointmentForm = null;\r\n        this.state = {\r\n            lastEditData: null,\r\n            saveChangesLocker: false,\r\n            appointment: {\r\n                data: null,\r\n                isEmptyText: false,\r\n                isEmptyDescription: false\r\n            }\r\n        }\r\n    }\r\n    _createClass(AppointmentPopup, [{\r\n        key: \"show\",\r\n        value: function() {\r\n            var data = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n            var isDoneButtonVisible = arguments.length > 1 ? arguments[1] : void 0;\r\n            if ((0, _type.isEmptyObject)(data)) {\r\n                var startDate = this.scheduler.option(\"currentDate\");\r\n                var endDate = new Date(startDate.getTime() + this.scheduler.option(\"cellDuration\") * toMs(\"minute\"));\r\n                this.scheduler.fire(\"setField\", \"startDate\", data, startDate);\r\n                this.scheduler.fire(\"setField\", \"endDate\", data, endDate)\r\n            }\r\n            this.state.appointment.data = data;\r\n            if (!this._popup) {\r\n                var popupConfig = this._createPopupConfig();\r\n                this._popup = this._createPopup(popupConfig)\r\n            }\r\n            this._popup.option(\"toolbarItems\", this._createPopupToolbarItems(isDoneButtonVisible));\r\n            this._popup.show()\r\n        }\r\n    }, {\r\n        key: \"hide\",\r\n        value: function() {\r\n            this._popup.hide()\r\n        }\r\n    }, {\r\n        key: \"isVisible\",\r\n        value: function() {\r\n            return this._popup ? this._popup.option(\"visible\") : false\r\n        }\r\n    }, {\r\n        key: \"dispose\",\r\n        value: function() {\r\n            if (this._$popup) {\r\n                this._popup.$element().remove();\r\n                this._$popup = null\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createPopup\",\r\n        value: function(options) {\r\n            var popupElement = (0, _renderer.default)(\"<div>\").addClass(APPOINTMENT_POPUP_CLASS).appendTo(this.scheduler.$element());\r\n            return this.scheduler._createComponent(popupElement, _popup.default, options)\r\n        }\r\n    }, {\r\n        key: \"_createPopupConfig\",\r\n        value: function() {\r\n            var _this = this;\r\n            return {\r\n                height: \"auto\",\r\n                maxHeight: \"100%\",\r\n                showCloseButton: false,\r\n                showTitle: false,\r\n                onHiding: function() {\r\n                    _this.scheduler.focus()\r\n                },\r\n                contentTemplate: function() {\r\n                    return _this._createPopupContent()\r\n                },\r\n                onShowing: function(e) {\r\n                    return _this._onShowing(e)\r\n                },\r\n                defaultOptionsRules: [{\r\n                    device: function() {\r\n                        return _devices.default.current().android\r\n                    },\r\n                    options: {\r\n                        showTitle: false\r\n                    }\r\n                }]\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_onShowing\",\r\n        value: function(e) {\r\n            var _this2 = this;\r\n            this._updateForm();\r\n            var arg = {\r\n                form: this._appointmentForm,\r\n                popup: this._popup,\r\n                appointmentData: this.state.appointment.data,\r\n                cancel: false\r\n            };\r\n            this.scheduler._actions.onAppointmentFormOpening(arg);\r\n            this.scheduler._processActionResult(arg, function(canceled) {\r\n                if (canceled) {\r\n                    e.cancel = true\r\n                } else {\r\n                    _this2.updatePopupFullScreenMode()\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createPopupContent\",\r\n        value: function() {\r\n            var formElement = (0, _renderer.default)(\"<div>\");\r\n            this._appointmentForm = this._createForm(formElement);\r\n            return formElement\r\n        }\r\n    }, {\r\n        key: \"_createAppointmentFormData\",\r\n        value: function(rawAppointment) {\r\n            var appointment = this._createAppointmentAdapter(rawAppointment);\r\n            var result = (0, _extend.extend)(true, {\r\n                repeat: !!appointment.recurrenceRule\r\n            }, rawAppointment);\r\n            (0, _iterator.each)(this.scheduler._resourcesManager.getResourcesFromItem(result, true) || {}, function(name, value) {\r\n                return result[name] = value\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_createForm\",\r\n        value: function(element) {\r\n            var expr = this.scheduler._dataAccessors.expr;\r\n            var resources = this.scheduler.option(\"resources\");\r\n            var allowTimeZoneEditing = this._getAllowTimeZoneEditing();\r\n            var rawAppointment = this.state.appointment.data;\r\n            var formData = this._createAppointmentFormData(rawAppointment);\r\n            var readOnly = this._isReadOnly(rawAppointment);\r\n            _uiScheduler.AppointmentForm.prepareAppointmentFormEditors(expr, this.scheduler, this.triggerResize.bind(this), this.changeSize.bind(this), formData, allowTimeZoneEditing, readOnly);\r\n            if (resources && resources.length) {\r\n                _uiScheduler.AppointmentForm.concatResources(this.scheduler._resourcesManager.getEditors())\r\n            }\r\n            return _uiScheduler.AppointmentForm.create(this.scheduler._createComponent.bind(this.scheduler), element, readOnly, formData)\r\n        }\r\n    }, {\r\n        key: \"_getAllowTimeZoneEditing\",\r\n        value: function() {\r\n            var scheduler = this.scheduler;\r\n            return scheduler.option(\"editing.allowTimeZoneEditing\") || scheduler.option(\"editing.allowEditingTimeZones\")\r\n        }\r\n    }, {\r\n        key: \"_isReadOnly\",\r\n        value: function(rawAppointment) {\r\n            var adapter = this.scheduler.createAppointmentAdapter(rawAppointment);\r\n            if (rawAppointment && adapter.disabled) {\r\n                return true\r\n            }\r\n            return this.scheduler._editAppointmentData ? !this.scheduler._editing.allowUpdating : false\r\n        }\r\n    }, {\r\n        key: \"_createAppointmentAdapter\",\r\n        value: function(rawAppointment) {\r\n            return this.scheduler.createAppointmentAdapter(rawAppointment)\r\n        }\r\n    }, {\r\n        key: \"_updateForm\",\r\n        value: function() {\r\n            var data = this.state.appointment.data;\r\n            var adapter = this._createAppointmentAdapter(data);\r\n            var allDay = adapter.allDay;\r\n            var startDate = adapter.startDate && adapter.calculateStartDate(\"toAppointment\");\r\n            var endDate = adapter.endDate && adapter.calculateEndDate(\"toAppointment\");\r\n            this.state.appointment.isEmptyText = void 0 === data || void 0 === adapter.text;\r\n            this.state.appointment.isEmptyDescription = void 0 === data || void 0 === adapter.description;\r\n            var appointment = this._createAppointmentAdapter(this._createAppointmentFormData(data));\r\n            if (void 0 === appointment.text) {\r\n                appointment.text = \"\"\r\n            }\r\n            if (void 0 === appointment.description) {\r\n                appointment.description = \"\"\r\n            }\r\n            if (void 0 === appointment.recurrenceRule) {\r\n                appointment.recurrenceRule = \"\"\r\n            }\r\n            var formData = appointment.source();\r\n            if (startDate) {\r\n                this.scheduler.fire(\"setField\", \"startDate\", formData, startDate)\r\n            }\r\n            if (endDate) {\r\n                this.scheduler.fire(\"setField\", \"endDate\", formData, endDate)\r\n            }\r\n            var _this$scheduler$_data = this.scheduler._dataAccessors.expr,\r\n                startDateExpr = _this$scheduler$_data.startDateExpr,\r\n                endDateExpr = _this$scheduler$_data.endDateExpr;\r\n            this._appointmentForm.option(\"readOnly\", this._isReadOnly(data));\r\n            _uiScheduler.AppointmentForm.updateFormData(this._appointmentForm, formData, this.scheduler._dataAccessors.expr);\r\n            _uiScheduler.AppointmentForm.setEditorsType(this._appointmentForm, startDateExpr, endDateExpr, allDay)\r\n        }\r\n    }, {\r\n        key: \"_isDeviceMobile\",\r\n        value: function() {\r\n            return \"desktop\" !== _devices.default.current().deviceType\r\n        }\r\n    }, {\r\n        key: \"_isPopupFullScreenNeeded\",\r\n        value: function() {\r\n            var width = this._tryGetWindowWidth();\r\n            if (width) {\r\n                return this._isDeviceMobile() ? width < APPOINTMENT_POPUP_FULLSCREEN_WINDOW_WIDTH_MOBILE : width < APPOINTMENT_POPUP_FULLSCREEN_WINDOW_WIDTH\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_tryGetWindowWidth\",\r\n        value: function() {\r\n            if ((0, _window.hasWindow)()) {\r\n                var window = (0, _window.getWindow)();\r\n                return (0, _renderer.default)(window).width()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"triggerResize\",\r\n        value: function() {\r\n            this._popup && (0, _visibility_change.triggerResizeEvent)(this._popup.$element())\r\n        }\r\n    }, {\r\n        key: \"_getMaxWidth\",\r\n        value: function(isRecurrence) {\r\n            if (this._isDeviceMobile()) {\r\n                return APPOINTMENT_POPUP_WIDTH_MOBILE\r\n            }\r\n            return isRecurrence ? APPOINTMENT_POPUP_WIDTH_WITH_RECURRENCE : APPOINTMENT_POPUP_WIDTH\r\n        }\r\n    }, {\r\n        key: \"changeSize\",\r\n        value: function(isRecurrence) {\r\n            var isFullScreen = this._isPopupFullScreenNeeded();\r\n            this._popup.option({\r\n                maxWidth: isFullScreen ? \"100%\" : this._getMaxWidth(isRecurrence),\r\n                fullScreen: isFullScreen\r\n            })\r\n        }\r\n    }, {\r\n        key: \"updatePopupFullScreenMode\",\r\n        value: function() {\r\n            if (!this._appointmentForm) {\r\n                return\r\n            }\r\n            var isRecurrence = _uiScheduler.AppointmentForm.getRecurrenceRule(this._appointmentForm.option(\"formData\"), this.scheduler._dataAccessors.expr);\r\n            if (this.isVisible()) {\r\n                this.changeSize(isRecurrence)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createPopupToolbarItems\",\r\n        value: function(isDoneButtonVisible) {\r\n            var _this3 = this;\r\n            var result = [];\r\n            var isIOs = \"ios\" === _devices.default.current().platform;\r\n            if (isDoneButtonVisible) {\r\n                result.push({\r\n                    shortcut: \"done\",\r\n                    options: {\r\n                        text: _message.default.format(\"Done\")\r\n                    },\r\n                    location: TOOLBAR_ITEM_AFTER_LOCATION,\r\n                    onClick: function(e) {\r\n                        return _this3._doneButtonClickHandler(e)\r\n                    }\r\n                })\r\n            }\r\n            result.push({\r\n                shortcut: \"cancel\",\r\n                location: isIOs ? TOOLBAR_ITEM_BEFORE_LOCATION : TOOLBAR_ITEM_AFTER_LOCATION\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"saveChanges\",\r\n        value: function(showLoadPanel) {\r\n            var _this4 = this;\r\n            var deferred = new _deferred.Deferred;\r\n            var validation = this._appointmentForm.validate();\r\n            var state = this.state.appointment;\r\n            showLoadPanel && this._showLoadPanel();\r\n            (0, _deferred.when)(validation && validation.complete || validation).done(function(validation) {\r\n                if (validation && !validation.isValid) {\r\n                    _this4._hideLoadPanel();\r\n                    deferred.resolve(false);\r\n                    return\r\n                }\r\n                var formData = _this4._appointmentForm.option(\"formData\");\r\n                var adapter = _this4.scheduler.createAppointmentAdapter(formData);\r\n                var appointment = adapter.clone({\r\n                    pathTimeZone: \"fromAppointment\"\r\n                }).source();\r\n                var oldData = _this4.scheduler._editAppointmentData;\r\n                var recData = _this4.scheduler._updatedRecAppointment;\r\n                if (state.isEmptyText && \"\" === adapter.text) {\r\n                    delete appointment.text\r\n                }\r\n                if (state.isEmptyDescription && \"\" === adapter.description) {\r\n                    delete appointment.description\r\n                }\r\n                if (void 0 === state.data.recurrenceRule && \"\" === adapter.recurrenceRule) {\r\n                    delete appointment.recurrenceRule\r\n                }\r\n                if ((0, _type.isDefined)(appointment.repeat)) {\r\n                    delete appointment.repeat\r\n                }\r\n                if (oldData && !recData) {\r\n                    _this4.scheduler.updateAppointment(oldData, appointment).done(deferred.resolve)\r\n                } else {\r\n                    if (recData) {\r\n                        _this4.scheduler.updateAppointment(oldData, recData);\r\n                        delete _this4.scheduler._updatedRecAppointment\r\n                    }\r\n                    _this4.scheduler.addAppointment(appointment).done(deferred.resolve)\r\n                }\r\n                deferred.done(function() {\r\n                    _this4._hideLoadPanel();\r\n                    _this4.state.lastEditData = appointment\r\n                })\r\n            });\r\n            return deferred.promise()\r\n        }\r\n    }, {\r\n        key: \"_doneButtonClickHandler\",\r\n        value: function(e) {\r\n            e.cancel = true;\r\n            this.saveEditData()\r\n        }\r\n    }, {\r\n        key: \"saveEditData\",\r\n        value: function() {\r\n            var _this5 = this;\r\n            var deferred = new _deferred.Deferred;\r\n            if (this._tryLockSaveChanges()) {\r\n                (0, _deferred.when)(this.saveChanges(true)).done(function() {\r\n                    if (_this5.state.lastEditData) {\r\n                        var adapter = _this5.scheduler.createAppointmentAdapter(_this5.state.lastEditData);\r\n                        var startDate = adapter.startDate,\r\n                            endDate = adapter.endDate,\r\n                            allDay = adapter.allDay;\r\n                        var startTime = startDate.getTime();\r\n                        var endTime = endDate.getTime();\r\n                        var inAllDayRow = allDay || endTime - startTime >= DAY_IN_MS;\r\n                        _this5.scheduler._workSpace.updateScrollPosition(startDate, _this5.scheduler._resourcesManager.getResourcesFromItem(_this5.state.lastEditData, true), inAllDayRow);\r\n                        _this5.state.lastEditData = null\r\n                    }\r\n                    _this5._unlockSaveChanges();\r\n                    deferred.resolve()\r\n                })\r\n            }\r\n            return deferred.promise()\r\n        }\r\n    }, {\r\n        key: \"_hideLoadPanel\",\r\n        value: function() {\r\n            (0, _ui.hide)()\r\n        }\r\n    }, {\r\n        key: \"_showLoadPanel\",\r\n        value: function() {\r\n            var $overlayContent = this._popup.overlayContent();\r\n            (0, _ui.show)({\r\n                container: $overlayContent,\r\n                position: {\r\n                    of: $overlayContent\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_tryLockSaveChanges\",\r\n        value: function() {\r\n            if (false === this.state.saveChangesLocker) {\r\n                this.state.saveChangesLocker = true;\r\n                return true\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_unlockSaveChanges\",\r\n        value: function() {\r\n            this.state.saveChangesLocker = false\r\n        }\r\n    }]);\r\n    return AppointmentPopup\r\n}();\r\nexports.default = AppointmentPopup;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.adaptivity.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.adaptivity\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"adaptivity\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_fixing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _translator = require(\"../../animation/translator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CONTENT_CLASS = \"content\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar FIRST_CELL_CLASS = \"dx-first-cell\";\r\nvar LAST_CELL_CLASS = \"dx-last-cell\";\r\nvar HOVER_STATE_CLASS = \"dx-state-hover\";\r\nvar FIXED_COL_CLASS = \"dx-col-fixed\";\r\nvar FIXED_COLUMNS_CLASS = \"dx-fixed-columns\";\r\nvar POINTER_EVENTS_NONE_CLASS = \"dx-pointer-events-none\";\r\nvar COMMAND_TRANSPARENT = \"transparent\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar getTransparentColumnIndex = function(fixedColumns) {\r\n    var transparentColumnIndex = -1;\r\n    (0, _iterator.each)(fixedColumns, function(index, column) {\r\n        if (column.command === COMMAND_TRANSPARENT) {\r\n            transparentColumnIndex = index;\r\n            return false\r\n        }\r\n    });\r\n    return transparentColumnIndex\r\n};\r\nvar normalizeColumnWidths = function(fixedColumns, widths, fixedWidths) {\r\n    var fixedColumnIndex = 0;\r\n    if (fixedColumns && widths && fixedWidths) {\r\n        for (var i = 0; i < fixedColumns.length; i++) {\r\n            if (fixedColumns[i].command === COMMAND_TRANSPARENT) {\r\n                fixedColumnIndex += fixedColumns[i].colspan\r\n            } else {\r\n                if (widths[fixedColumnIndex] < fixedWidths[i]) {\r\n                    widths[fixedColumnIndex] = fixedWidths[i]\r\n                }\r\n                fixedColumnIndex++\r\n            }\r\n        }\r\n    }\r\n    return widths\r\n};\r\nvar baseFixedColumns = {\r\n    init: function() {\r\n        this.callBase();\r\n        this._isFixedTableRendering = false;\r\n        this._isFixedColumns = false\r\n    },\r\n    _createCol: function(column) {\r\n        return this.callBase(column).toggleClass(FIXED_COL_CLASS, !!(this._isFixedTableRendering && (column.fixed || column.command && column.command !== COMMAND_TRANSPARENT)))\r\n    },\r\n    _correctColumnIndicesForFixedColumns: function(fixedColumns, change) {\r\n        var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n        var transparentColspan = fixedColumns[transparentColumnIndex].colspan;\r\n        var columnIndices = change && change.columnIndices;\r\n        if (columnIndices) {\r\n            change.columnIndices = columnIndices.map(function(columnIndices) {\r\n                if (columnIndices) {\r\n                    return columnIndices.map(function(columnIndex) {\r\n                        if (columnIndex < transparentColumnIndex) {\r\n                            return columnIndex\r\n                        } else {\r\n                            if (columnIndex >= transparentColumnIndex + transparentColspan) {\r\n                                return columnIndex - transparentColspan + 1\r\n                            }\r\n                        }\r\n                        return -1\r\n                    }).filter(function(columnIndex) {\r\n                        return columnIndex >= 0\r\n                    })\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _renderTable: function(options) {\r\n        var that = this;\r\n        var $fixedTable;\r\n        var fixedColumns = that.getFixedColumns();\r\n        that._isFixedColumns = !!fixedColumns.length;\r\n        var $table = that.callBase(options);\r\n        if (that._isFixedColumns) {\r\n            that._isFixedTableRendering = true;\r\n            var change = options && options.change;\r\n            var columnIndices = change && change.columnIndices;\r\n            that._correctColumnIndicesForFixedColumns(fixedColumns, change);\r\n            $fixedTable = that._createTable(fixedColumns);\r\n            that._renderRows($fixedTable, (0, _extend.extend)({}, options, {\r\n                columns: fixedColumns\r\n            }));\r\n            that._updateContent($fixedTable, change);\r\n            if (columnIndices) {\r\n                change.columnIndices = columnIndices\r\n            }\r\n            that._isFixedTableRendering = false\r\n        } else {\r\n            that._fixedTableElement && that._fixedTableElement.parent().remove();\r\n            that._fixedTableElement = null\r\n        }\r\n        return $table\r\n    },\r\n    _renderRow: function($table, options) {\r\n        var fixedCorrection;\r\n        var cells = options.row.cells;\r\n        this.callBase.apply(this, arguments);\r\n        if (this._isFixedTableRendering && cells && cells.length) {\r\n            fixedCorrection = 0;\r\n            var fixedCells = options.row.cells || [];\r\n            cells = cells.slice();\r\n            options.row.cells = cells;\r\n            for (var i = 0; i < fixedCells.length; i++) {\r\n                if (fixedCells[i].column && fixedCells[i].column.command === COMMAND_TRANSPARENT) {\r\n                    fixedCorrection = (fixedCells[i].column.colspan || 1) - 1;\r\n                    continue\r\n                }\r\n                cells[i + fixedCorrection] = fixedCells[i]\r\n            }\r\n        }\r\n    },\r\n    _createCell: function(options) {\r\n        var that = this;\r\n        var column = options.column;\r\n        var columnCommand = column && column.command;\r\n        var rowType = options.rowType;\r\n        var $cell = that.callBase.apply(that, arguments);\r\n        var fixedColumns;\r\n        var prevFixedColumn;\r\n        var transparentColumnIndex;\r\n        if (that._isFixedTableRendering || \"filter\" === rowType) {\r\n            fixedColumns = that.getFixedColumns();\r\n            transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n            prevFixedColumn = fixedColumns[transparentColumnIndex - 1]\r\n        }\r\n        if (that._isFixedTableRendering) {\r\n            if (columnCommand === COMMAND_TRANSPARENT) {\r\n                $cell.addClass(POINTER_EVENTS_NONE_CLASS).toggleClass(FIRST_CELL_CLASS, 0 === transparentColumnIndex || prevFixedColumn && \"expand\" === prevFixedColumn.command).toggleClass(LAST_CELL_CLASS, fixedColumns.length && transparentColumnIndex === fixedColumns.length - 1);\r\n                if (\"freeSpace\" !== rowType) {\r\n                    _uiGrid_core.default.setEmptyText($cell)\r\n                }\r\n            }\r\n        } else {\r\n            if (\"filter\" === rowType) {\r\n                $cell.toggleClass(FIRST_CELL_CLASS, options.columnIndex === transparentColumnIndex)\r\n            }\r\n        }\r\n        var isRowAltStyle = that.option(\"rowAlternationEnabled\") && options.isAltRow;\r\n        if (_browser.default.mozilla && options.column.fixed && \"group\" !== options.rowType && !isRowAltStyle) {\r\n            $cell.addClass(FIXED_COL_CLASS)\r\n        }\r\n        return $cell\r\n    },\r\n    _wrapTableInScrollContainer: function() {\r\n        var $scrollContainer = this.callBase.apply(this, arguments);\r\n        if (this._isFixedTableRendering) {\r\n            $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_FIXED_CLASS))\r\n        }\r\n        return $scrollContainer\r\n    },\r\n    _renderCellContent: function($cell, options) {\r\n        var that = this;\r\n        var isEmptyCell;\r\n        var column = options.column;\r\n        var isFixedTableRendering = that._isFixedTableRendering;\r\n        var isGroupCell = \"group\" === options.rowType && (0, _type.isDefined)(column.groupIndex);\r\n        if (isFixedTableRendering && isGroupCell && !column.command && !column.groupCellTemplate) {\r\n            $cell.css(\"pointerEvents\", \"none\")\r\n        }\r\n        if (!isFixedTableRendering && that._isFixedColumns) {\r\n            isEmptyCell = column.fixed || column.command && false !== column.fixed;\r\n            if (isGroupCell) {\r\n                isEmptyCell = false;\r\n                if (options.row.summaryCells && options.row.summaryCells.length) {\r\n                    var columns = that._columnsController.getVisibleColumns();\r\n                    var alignByFixedColumnCellCount = that._getAlignByColumnCellCount ? that._getAlignByColumnCellCount(column.colspan, {\r\n                        columns: columns,\r\n                        row: options.row,\r\n                        isFixed: true\r\n                    }) : 0;\r\n                    if (alignByFixedColumnCellCount > 0) {\r\n                        var transparentColumnIndex = getTransparentColumnIndex(that._columnsController.getFixedColumns());\r\n                        isEmptyCell = columns.length - alignByFixedColumnCellCount < transparentColumnIndex\r\n                    }\r\n                }\r\n            }\r\n            if (isEmptyCell) {\r\n                if (that.option(\"legacyRendering\") || column.command && \"buttons\" !== column.type || \"group\" === options.rowType) {\r\n                    $cell.html(\"&nbsp;\").addClass(column.cssClass);\r\n                    return\r\n                } else {\r\n                    $cell.addClass(\"dx-hidden-cell\")\r\n                }\r\n            }\r\n        }\r\n        if (column.command !== COMMAND_TRANSPARENT) {\r\n            that.callBase($cell, options)\r\n        }\r\n    },\r\n    _getCellElementsCore: function(rowIndex) {\r\n        var that = this;\r\n        var cellElements = that.callBase(rowIndex);\r\n        var isGroupRow = cellElements.parent().hasClass(GROUP_ROW_CLASS);\r\n        var index = \"columnHeadersView\" === that.name ? rowIndex : void 0;\r\n        if (that._fixedTableElement && cellElements) {\r\n            var fixedColumns = that.getFixedColumns(index);\r\n            var fixedCellElements = that._getRowElements(that._fixedTableElement).eq(rowIndex).children(\"td\");\r\n            (0, _iterator.each)(fixedCellElements, function(columnIndex, cell) {\r\n                if (isGroupRow) {\r\n                    if (cellElements[columnIndex] && \"hidden\" !== cell.style.visibility) {\r\n                        cellElements[columnIndex] = cell\r\n                    }\r\n                } else {\r\n                    var fixedColumn = fixedColumns[columnIndex];\r\n                    if (fixedColumn) {\r\n                        if (fixedColumn.command === COMMAND_TRANSPARENT) {\r\n                            if (fixedCellElements.eq(columnIndex).hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n                                cellElements[columnIndex] = cell || cellElements[columnIndex]\r\n                            }\r\n                        } else {\r\n                            var fixedColumnIndex = that._columnsController.getVisibleIndex(fixedColumn.index, index);\r\n                            cellElements[fixedColumnIndex] = cell || cellElements[fixedColumnIndex]\r\n                        }\r\n                    }\r\n                }\r\n            })\r\n        }\r\n        return cellElements\r\n    },\r\n    getColumnWidths: function() {\r\n        var that = this;\r\n        var fixedWidths;\r\n        var result = that.callBase();\r\n        var fixedColumns = that.getFixedColumns();\r\n        if (that._fixedTableElement && result.length) {\r\n            fixedWidths = that.callBase(that._fixedTableElement)\r\n        }\r\n        return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n    },\r\n    _getTableElement: function() {\r\n        var tableElement = this._isFixedTableRendering ? this._fixedTableElement : this.callBase();\r\n        return tableElement\r\n    },\r\n    _setTableElement: function(tableElement) {\r\n        if (this._isFixedTableRendering) {\r\n            this._fixedTableElement = tableElement.addClass(POINTER_EVENTS_NONE_CLASS)\r\n        } else {\r\n            this.callBase(tableElement)\r\n        }\r\n    },\r\n    getColumns: function(rowIndex, $tableElement) {\r\n        $tableElement = $tableElement || this._getTableElement();\r\n        if (this._isFixedTableRendering || $tableElement && $tableElement.closest(\"table\").parent(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).length) {\r\n            return this.getFixedColumns(rowIndex)\r\n        }\r\n        return this.callBase(rowIndex, $tableElement)\r\n    },\r\n    getRowIndex: function($row) {\r\n        var $fixedTable = this._fixedTableElement;\r\n        if ($fixedTable && $fixedTable.find($row).length) {\r\n            return this._getRowElements($fixedTable).index($row)\r\n        }\r\n        return this.callBase($row)\r\n    },\r\n    getTableElements: function() {\r\n        var result = this.callBase.apply(this, arguments);\r\n        if (this._fixedTableElement) {\r\n            result = (0, _renderer.default)([result.get(0), this._fixedTableElement.get(0)])\r\n        }\r\n        return result\r\n    },\r\n    getFixedColumns: function(rowIndex) {\r\n        return this._columnsController.getFixedColumns(rowIndex)\r\n    },\r\n    getFixedColumnsOffset: function() {\r\n        var offset = {\r\n            left: 0,\r\n            right: 0\r\n        };\r\n        var $transparentColumn;\r\n        if (this._fixedTableElement) {\r\n            $transparentColumn = this.getTransparentColumnElement();\r\n            var positionTransparentColumn = $transparentColumn.position();\r\n            offset = {\r\n                left: positionTransparentColumn.left,\r\n                right: this.element().outerWidth(true) - ($transparentColumn.outerWidth(true) + positionTransparentColumn.left)\r\n            }\r\n        }\r\n        return offset\r\n    },\r\n    getTransparentColumnElement: function() {\r\n        return this._fixedTableElement && this._fixedTableElement.find(\".\" + POINTER_EVENTS_NONE_CLASS).first()\r\n    },\r\n    getFixedTableElement: function() {\r\n        return this._fixedTableElement\r\n    },\r\n    isFixedColumns: function() {\r\n        return this._isFixedColumns\r\n    },\r\n    _resizeCore: function() {\r\n        this.callBase();\r\n        this.synchronizeRows()\r\n    },\r\n    setColumnWidths: function(options) {\r\n        var columns;\r\n        var visibleColumns = this._columnsController.getVisibleColumns();\r\n        var widths = options.widths;\r\n        var isWidthsSynchronized = widths && widths.length && (0, _type.isDefined)(visibleColumns[0].visibleWidth);\r\n        var optionNames = options.optionNames;\r\n        var isColumnWidthChanged = optionNames && optionNames.width;\r\n        var useVisibleColumns = false;\r\n        this.callBase.apply(this, arguments);\r\n        if (this._fixedTableElement) {\r\n            if (this.option(\"legacyRendering\")) {\r\n                useVisibleColumns = widths && widths.length && !this.isScrollbarVisible(true)\r\n            } else {\r\n                var hasAutoWidth = widths && widths.some(function(width) {\r\n                    return \"auto\" === width\r\n                });\r\n                useVisibleColumns = hasAutoWidth && (!isWidthsSynchronized || !this.isScrollbarVisible(true))\r\n            }\r\n            if (useVisibleColumns) {\r\n                columns = visibleColumns\r\n            }\r\n            this.callBase((0, _extend.extend)({}, options, {\r\n                $tableElement: this._fixedTableElement,\r\n                columns: columns,\r\n                fixed: true\r\n            }))\r\n        }\r\n        if (isWidthsSynchronized || isColumnWidthChanged && this.option(\"wordWrapEnabled\")) {\r\n            this.synchronizeRows()\r\n        }\r\n    },\r\n    _createColGroup: function(columns) {\r\n        if (!this.option(\"legacyRendering\") && this._isFixedTableRendering && !this.option(\"columnAutoWidth\")) {\r\n            var visibleColumns = this._columnsController.getVisibleColumns();\r\n            var useVisibleColumns = visibleColumns.filter(function(column) {\r\n                return !column.width\r\n            }).length;\r\n            if (useVisibleColumns) {\r\n                columns = visibleColumns\r\n            }\r\n        }\r\n        return this.callBase(columns)\r\n    },\r\n    _getClientHeight: function(element) {\r\n        var boundingClientRectElement = element.getBoundingClientRect && (0, _position.getBoundingRect)(element);\r\n        return boundingClientRectElement && boundingClientRectElement.height ? boundingClientRectElement.height : element.clientHeight\r\n    },\r\n    synchronizeRows: function() {\r\n        var that = this;\r\n        var rowHeights = [];\r\n        var fixedRowHeights = [];\r\n        var rowIndex;\r\n        var $rowElements;\r\n        var $fixedRowElements;\r\n        var $contentElement;\r\n        if (that._isFixedColumns && that._tableElement && that._fixedTableElement) {\r\n            var heightTable = that._getClientHeight(that._tableElement.get(0));\r\n            var heightFixedTable = that._getClientHeight(that._fixedTableElement.get(0));\r\n            $rowElements = that._getRowElements(that._tableElement);\r\n            $fixedRowElements = that._getRowElements(that._fixedTableElement);\r\n            $contentElement = that._findContentElement();\r\n            if (heightTable !== heightFixedTable) {\r\n                $contentElement && $contentElement.css(\"height\", heightTable);\r\n                $rowElements.css(\"height\", \"\");\r\n                $fixedRowElements.css(\"height\", \"\");\r\n                for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n                    rowHeights.push(that._getClientHeight($rowElements.get(rowIndex)));\r\n                    fixedRowHeights.push(that._getClientHeight($fixedRowElements.get(rowIndex)))\r\n                }\r\n                for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n                    var rowHeight = rowHeights[rowIndex];\r\n                    var fixedRowHeight = fixedRowHeights[rowIndex];\r\n                    if (rowHeight > fixedRowHeight) {\r\n                        $fixedRowElements.eq(rowIndex).css(\"height\", rowHeight)\r\n                    } else {\r\n                        if (rowHeight < fixedRowHeight) {\r\n                            $rowElements.eq(rowIndex).css(\"height\", fixedRowHeight)\r\n                        }\r\n                    }\r\n                }\r\n                $contentElement && $contentElement.css(\"height\", \"\")\r\n            }\r\n        }\r\n    },\r\n    setScrollerSpacing: function(width) {\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        this.callBase(width);\r\n        this.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).css({\r\n            paddingLeft: rtlEnabled ? width : \"\",\r\n            paddingRight: !rtlEnabled ? width : \"\"\r\n        })\r\n    }\r\n};\r\nvar ColumnHeadersViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {\r\n    _getRowVisibleColumns: function(rowIndex) {\r\n        if (this._isFixedTableRendering) {\r\n            return this.getFixedColumns(rowIndex)\r\n        }\r\n        return this.callBase(rowIndex)\r\n    },\r\n    getContextMenuItems: function(options) {\r\n        var that = this;\r\n        var column = options.column;\r\n        var columnFixingOptions = that.option(\"columnFixing\");\r\n        var items = that.callBase(options);\r\n        if (options.row && \"header\" === options.row.rowType) {\r\n            if (column && column.allowFixing) {\r\n                var onItemClick = function(params) {\r\n                    switch (params.itemData.value) {\r\n                        case \"none\":\r\n                            that._columnsController.columnOption(column.index, \"fixed\", false);\r\n                            break;\r\n                        case \"left\":\r\n                            that._columnsController.columnOption(column.index, {\r\n                                fixed: true,\r\n                                fixedPosition: \"left\"\r\n                            });\r\n                            break;\r\n                        case \"right\":\r\n                            that._columnsController.columnOption(column.index, {\r\n                                fixed: true,\r\n                                fixedPosition: \"right\"\r\n                            })\r\n                    }\r\n                };\r\n                items = items || [];\r\n                items.push({\r\n                    text: columnFixingOptions.texts.fix,\r\n                    beginGroup: true,\r\n                    items: [{\r\n                        text: columnFixingOptions.texts.leftPosition,\r\n                        value: \"left\",\r\n                        disabled: column.fixed && (!column.fixedPosition || \"left\" === column.fixedPosition),\r\n                        onItemClick: onItemClick\r\n                    }, {\r\n                        text: columnFixingOptions.texts.rightPosition,\r\n                        value: \"right\",\r\n                        disabled: column.fixed && \"right\" === column.fixedPosition,\r\n                        onItemClick: onItemClick\r\n                    }]\r\n                }, {\r\n                    text: columnFixingOptions.texts.unfix,\r\n                    value: \"none\",\r\n                    disabled: !column.fixed,\r\n                    onItemClick: onItemClick\r\n                })\r\n            }\r\n        }\r\n        return items\r\n    },\r\n    getFixedColumnElements: function(rowIndex) {\r\n        var that = this;\r\n        if ((0, _type.isDefined)(rowIndex)) {\r\n            return this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).children()\r\n        }\r\n        var columnElements = that.getColumnElements();\r\n        var $transparentColumnElement = that.getTransparentColumnElement();\r\n        if (columnElements && $transparentColumnElement && $transparentColumnElement.length) {\r\n            var transparentColumnIndex = getTransparentColumnIndex(that.getFixedColumns());\r\n            columnElements.splice(transparentColumnIndex, $transparentColumnElement.get(0).colSpan, $transparentColumnElement.get(0))\r\n        }\r\n        return columnElements\r\n    },\r\n    getColumnWidths: function() {\r\n        var that = this;\r\n        var fixedWidths;\r\n        var result = that.callBase();\r\n        var $fixedColumnElements = that.getFixedColumnElements();\r\n        var fixedColumns = that.getFixedColumns();\r\n        if (that._fixedTableElement) {\r\n            if ($fixedColumnElements && $fixedColumnElements.length) {\r\n                fixedWidths = that._getWidths($fixedColumnElements)\r\n            } else {\r\n                fixedWidths = that.callBase(that._fixedTableElement)\r\n            }\r\n        }\r\n        return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n    }\r\n});\r\nvar RowsViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {\r\n    _detachHoverEvents: function() {\r\n        this._fixedTableElement && _events_engine.default.off(this._fixedTableElement, \"mouseover mouseout\", \".dx-data-row\");\r\n        this._tableElement && _events_engine.default.off(this._tableElement, \"mouseover mouseout\", \".dx-data-row\")\r\n    },\r\n    _attachHoverEvents: function() {\r\n        var that = this;\r\n        var attachHoverEvent = function($table) {\r\n            _events_engine.default.on($table, \"mouseover mouseout\", \".dx-data-row\", that.createAction(function(args) {\r\n                var event = args.event;\r\n                var rowIndex = that.getRowIndex((0, _renderer.default)(event.target).closest(\".dx-row\"));\r\n                var isHover = \"mouseover\" === event.type;\r\n                if (rowIndex >= 0) {\r\n                    that._tableElement && that._getRowElements(that._tableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover);\r\n                    that._fixedTableElement && that._getRowElements(that._fixedTableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover)\r\n                }\r\n            }))\r\n        };\r\n        if (that._fixedTableElement && that._tableElement) {\r\n            attachHoverEvent(that._fixedTableElement);\r\n            attachHoverEvent(that._tableElement)\r\n        }\r\n    },\r\n    _findContentElement: function() {\r\n        var that = this;\r\n        var $content;\r\n        var scrollTop;\r\n        var contentClass = that.addWidgetPrefix(CONTENT_CLASS);\r\n        var element = that.element();\r\n        var scrollDelay = _browser.default.mozilla ? 60 : 0;\r\n        if (element && that._isFixedTableRendering) {\r\n            $content = element.children(\".\" + contentClass);\r\n            var scrollable = that.getScrollable();\r\n            if (!$content.length && scrollable) {\r\n                $content = (0, _renderer.default)(\"<div>\").addClass(contentClass);\r\n                _events_engine.default.on($content, \"scroll\", function(e) {\r\n                    clearTimeout(that._fixedScrollTimeout);\r\n                    that._fixedScrollTimeout = setTimeout(function() {\r\n                        scrollTop = (0, _renderer.default)(e.target).scrollTop();\r\n                        scrollable.scrollTo({\r\n                            y: scrollTop\r\n                        })\r\n                    }, scrollDelay)\r\n                });\r\n                _events_engine.default.on($content, _wheel.name, function(e) {\r\n                    var $nearestScrollable = (0, _renderer.default)(e.target).closest(\".dx-scrollable\");\r\n                    if (scrollable && scrollable.$element().is($nearestScrollable)) {\r\n                        scrollTop = scrollable.scrollTop();\r\n                        scrollable.scrollTo({\r\n                            y: scrollTop - e.delta\r\n                        });\r\n                        if (scrollable.scrollTop() > 0 && scrollable.scrollTop() + scrollable.clientHeight() < scrollable.scrollHeight() + that.getScrollbarWidth()) {\r\n                            return false\r\n                        }\r\n                    }\r\n                });\r\n                $content.appendTo(element)\r\n            }\r\n            return $content\r\n        }\r\n        return that.callBase()\r\n    },\r\n    _updateScrollable: function() {\r\n        this.callBase();\r\n        var scrollable = this.getScrollable();\r\n        var scrollTop = scrollable && scrollable.scrollOffset().top;\r\n        this._updateFixedTablePosition(scrollTop)\r\n    },\r\n    _renderContent: function(contentElement, tableElement) {\r\n        if (this._isFixedTableRendering) {\r\n            return contentElement.empty().addClass(this.addWidgetPrefix(CONTENT_CLASS) + \" \" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).append(tableElement)\r\n        }\r\n        return this.callBase(contentElement, tableElement)\r\n    },\r\n    _getGroupCellOptions: function(options) {\r\n        if (this._isFixedTableRendering) {\r\n            return this.callBase((0, _extend.extend)({}, options, {\r\n                columns: this._columnsController.getVisibleColumns()\r\n            }))\r\n        }\r\n        return this.callBase(options)\r\n    },\r\n    _renderGroupedCells: function($row, options) {\r\n        return this.callBase($row, (0, _extend.extend)({}, options, {\r\n            columns: this._columnsController.getVisibleColumns()\r\n        }))\r\n    },\r\n    _renderGroupSummaryCells: function($row, options) {\r\n        if (this._isFixedTableRendering) {\r\n            this.callBase($row, (0, _extend.extend)({}, options, {\r\n                columns: this._columnsController.getVisibleColumns()\r\n            }))\r\n        } else {\r\n            this.callBase($row, options)\r\n        }\r\n    },\r\n    _hasAlignByColumnSummaryItems: function(columnIndex, options) {\r\n        var result = this.callBase.apply(this, arguments);\r\n        var column = options.columns[columnIndex];\r\n        if (options.isFixed) {\r\n            return column.fixed && (result || \"right\" === column.fixedPosition)\r\n        }\r\n        return result && !column.fixed\r\n    },\r\n    _renderGroupSummaryCellsCore: function($groupCell, options, groupCellColSpan, alignByColumnCellCount) {\r\n        var alignByFixedColumnCellCount;\r\n        if (this._isFixedTableRendering) {\r\n            options.isFixed = true;\r\n            alignByFixedColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);\r\n            options.isFixed = false;\r\n            var startColumnIndex = options.columns.length - alignByFixedColumnCellCount;\r\n            options = (0, _extend.extend)({}, options, {\r\n                columns: this.getFixedColumns()\r\n            });\r\n            var transparentColumnIndex = getTransparentColumnIndex(options.columns);\r\n            if (startColumnIndex < transparentColumnIndex) {\r\n                alignByFixedColumnCellCount -= options.columns[transparentColumnIndex].colspan - 1 || 0;\r\n                groupCellColSpan -= options.columns[transparentColumnIndex].colspan - 1 || 0\r\n            } else {\r\n                if (alignByColumnCellCount > 0) {\r\n                    $groupCell.css(\"visibility\", \"hidden\")\r\n                }\r\n            }\r\n            alignByColumnCellCount = alignByFixedColumnCellCount\r\n        }\r\n        this.callBase($groupCell, options, groupCellColSpan, alignByColumnCellCount)\r\n    },\r\n    _getSummaryCellIndex: function(columnIndex, columns) {\r\n        if (this._isFixedTableRendering) {\r\n            var transparentColumnIndex = getTransparentColumnIndex(columns);\r\n            if (columnIndex > transparentColumnIndex) {\r\n                columnIndex += columns[transparentColumnIndex].colspan - 1\r\n            }\r\n            return columnIndex\r\n        }\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    _renderCore: function(change) {\r\n        this._detachHoverEvents();\r\n        this.callBase(change);\r\n        var isFixedColumns = this._isFixedColumns;\r\n        this.element().toggleClass(FIXED_COLUMNS_CLASS, isFixedColumns);\r\n        if (this.option(\"hoverStateEnabled\") && isFixedColumns) {\r\n            this._attachHoverEvents()\r\n        }\r\n    },\r\n    setRowsOpacity: function(columnIndex, value) {\r\n        this.callBase(columnIndex, value);\r\n        var $rows = this._getRowElements(this._fixedTableElement);\r\n        this._setRowsOpacityCore($rows, this.getFixedColumns(), columnIndex, value)\r\n    },\r\n    optionChanged: function(args) {\r\n        var that = this;\r\n        that.callBase(args);\r\n        if (\"hoverStateEnabled\" === args.name && that._isFixedColumns) {\r\n            args.value ? this._attachHoverEvents() : this._detachHoverEvents()\r\n        }\r\n    },\r\n    getCellIndex: function($cell) {\r\n        var $fixedTable = this._fixedTableElement;\r\n        var cellIndex = 0;\r\n        if ($fixedTable && $cell.is(\"td\") && $cell.closest($fixedTable).length) {\r\n            var columns = this.getFixedColumns();\r\n            (0, _iterator.each)(columns, function(index, column) {\r\n                if (index === $cell[0].cellIndex) {\r\n                    return false\r\n                }\r\n                if (column.colspan) {\r\n                    cellIndex += column.colspan;\r\n                    return\r\n                }\r\n                cellIndex++\r\n            });\r\n            return cellIndex\r\n        }\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    _updateFixedTablePosition: function(scrollTop, needFocus) {\r\n        if (this._fixedTableElement && this._tableElement) {\r\n            var $focusedElement;\r\n            var editorFactory = this.getController(\"editorFactory\");\r\n            this._fixedTableElement.parent().scrollTop(scrollTop);\r\n            if (needFocus && editorFactory) {\r\n                $focusedElement = editorFactory.focus();\r\n                $focusedElement && editorFactory.focus($focusedElement)\r\n            }\r\n        }\r\n    },\r\n    setScrollerSpacing: function(vWidth, hWidth) {\r\n        var that = this;\r\n        var styles = {\r\n            marginBottom: 0\r\n        };\r\n        var $fixedContent = that.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n        if ($fixedContent.length && that._fixedTableElement) {\r\n            $fixedContent.css(styles);\r\n            that._fixedTableElement.css(styles);\r\n            styles[that.option(\"rtlEnabled\") ? \"marginLeft\" : \"marginRight\"] = vWidth;\r\n            styles.marginBottom = hWidth;\r\n            var useNativeScrolling = that._scrollable && that._scrollable.option(\"useNative\");\r\n            (useNativeScrolling ? $fixedContent : that._fixedTableElement).css(styles)\r\n        }\r\n    },\r\n    _getElasticScrollTop: function(e) {\r\n        var elasticScrollTop = 0;\r\n        var scrollbarWidth = this.getScrollbarWidth(true);\r\n        if (e.scrollOffset.top < 0) {\r\n            elasticScrollTop = -e.scrollOffset.top\r\n        } else {\r\n            if (e.reachedBottom) {\r\n                var scrollableContent = this._findContentElement();\r\n                var scrollableContainer = e.component._container();\r\n                var maxScrollTop = Math.max(scrollableContent.height() + scrollbarWidth - scrollableContainer.height(), 0);\r\n                elasticScrollTop = maxScrollTop - e.scrollOffset.top\r\n            }\r\n        }\r\n        return elasticScrollTop\r\n    },\r\n    _applyElasticScrolling: function(e) {\r\n        if (this._fixedTableElement) {\r\n            var elasticScrollTop = this._getElasticScrollTop(e);\r\n            if (0 !== Math.ceil(elasticScrollTop)) {\r\n                (0, _translator.move)(this._fixedTableElement, {\r\n                    top: elasticScrollTop\r\n                })\r\n            } else {\r\n                this._fixedTableElement.css(\"transform\", \"\")\r\n            }\r\n        }\r\n    },\r\n    _handleScroll: function(e) {\r\n        this._updateFixedTablePosition(e.scrollOffset.top, true);\r\n        this._applyElasticScrolling(e);\r\n        this.callBase(e)\r\n    },\r\n    _updateContentPosition: function(isRender) {\r\n        this.callBase.apply(this, arguments);\r\n        if (!isRender) {\r\n            this._updateFixedTablePosition(this._scrollTop)\r\n        }\r\n    },\r\n    _afterRowPrepared: function(e) {\r\n        if (this._isFixedTableRendering) {\r\n            return\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    _scrollToElement: function($element) {\r\n        this.callBase($element, this.getFixedColumnsOffset())\r\n    },\r\n    dispose: function() {\r\n        this.callBase.apply(this, arguments);\r\n        clearTimeout(this._fixedScrollTimeout)\r\n    }\r\n});\r\nvar FooterViewFixedColumnsExtender = baseFixedColumns;\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            columnFixing: {\r\n                enabled: false,\r\n                texts: {\r\n                    fix: _message.default.format(\"dxDataGrid-columnFixingFix\"),\r\n                    unfix: _message.default.format(\"dxDataGrid-columnFixingUnfix\"),\r\n                    leftPosition: _message.default.format(\"dxDataGrid-columnFixingLeftPosition\"),\r\n                    rightPosition: _message.default.format(\"dxDataGrid-columnFixingRightPosition\")\r\n                }\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        views: {\r\n            columnHeadersView: ColumnHeadersViewFixedColumnsExtender,\r\n            rowsView: RowsViewFixedColumnsExtender,\r\n            footerView: FooterViewFixedColumnsExtender\r\n        },\r\n        controllers: function() {\r\n            var normalizeColumnIndicesByPoints = function(columns, fixedColumns, pointsByColumns) {\r\n                var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n                var correctIndex = columns.length - fixedColumns.length;\r\n                (0, _iterator.each)(pointsByColumns, function(_, point) {\r\n                    if (point.index > transparentColumnIndex) {\r\n                        point.columnIndex += correctIndex;\r\n                        point.index += correctIndex\r\n                    }\r\n                });\r\n                return pointsByColumns\r\n            };\r\n            return {\r\n                draggingHeader: {\r\n                    _generatePointsByColumns: function(options) {\r\n                        var visibleColumns = options.columns;\r\n                        var targetDraggingPanel = options.targetDraggingPanel;\r\n                        if (targetDraggingPanel && \"headers\" === targetDraggingPanel.getName() && targetDraggingPanel.isFixedColumns()) {\r\n                            if (options.sourceColumn.fixed) {\r\n                                if (!options.rowIndex) {\r\n                                    options.columnElements = targetDraggingPanel.getFixedColumnElements(0)\r\n                                }\r\n                                options.columns = targetDraggingPanel.getFixedColumns(options.rowIndex);\r\n                                var pointsByColumns = this.callBase(options);\r\n                                normalizeColumnIndicesByPoints(visibleColumns, options.columns, pointsByColumns);\r\n                                return pointsByColumns\r\n                            }\r\n                        }\r\n                        return this.callBase(options)\r\n                    },\r\n                    _pointCreated: function(point, columns, location, sourceColumn) {\r\n                        var result = this.callBase.apply(this, arguments);\r\n                        var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n                        if (!result && \"headers\" === location && $transparentColumn && $transparentColumn.length) {\r\n                            var boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));\r\n                            if (sourceColumn && sourceColumn.fixed) {\r\n                                return \"right\" === sourceColumn.fixedPosition ? point.x < boundingRect.right : point.x > boundingRect.left\r\n                            } else {\r\n                                return point.x < boundingRect.left || point.x > boundingRect.right\r\n                            }\r\n                        }\r\n                        return result\r\n                    }\r\n                },\r\n                columnsResizer: {\r\n                    _generatePointsByColumns: function() {\r\n                        var that = this;\r\n                        var columnsController = that._columnsController;\r\n                        var columns = columnsController && that._columnsController.getVisibleColumns();\r\n                        var fixedColumns = columnsController && that._columnsController.getFixedColumns();\r\n                        var cells = that._columnHeadersView.getFixedColumnElements();\r\n                        var pointsByFixedColumns = [];\r\n                        that.callBase();\r\n                        if (cells && cells.length > 0) {\r\n                            pointsByFixedColumns = _uiGrid_core.default.getPointsByColumns(cells, function(point) {\r\n                                return that._pointCreated(point, cells.length, fixedColumns)\r\n                            });\r\n                            that._pointsByFixedColumns = normalizeColumnIndicesByPoints(columns, fixedColumns, pointsByFixedColumns)\r\n                        }\r\n                    },\r\n                    _pointCreated: function(point, cellsLength, columns) {\r\n                        var isWidgetResizingMode = \"widget\" === this.option(\"columnResizingMode\");\r\n                        if (point.index > 0 && point.index < cellsLength) {\r\n                            var currentColumn = columns[point.columnIndex - 1] || {};\r\n                            var nextColumn = columns[point.columnIndex] || {};\r\n                            if (currentColumn.fixed || nextColumn.fixed) {\r\n                                point.columnIndex -= 1;\r\n                                return !((currentColumn.allowResizing || currentColumn.command === COMMAND_TRANSPARENT) && (isWidgetResizingMode || nextColumn.allowResizing || nextColumn.command === COMMAND_TRANSPARENT))\r\n                            }\r\n                        }\r\n                        return this.callBase.apply(this, arguments)\r\n                    },\r\n                    _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n                        var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n                        if ($transparentColumn && $transparentColumn.length) {\r\n                            var boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));\r\n                            if (currentX <= boundingRect.left || currentX >= boundingRect.right) {\r\n                                return this.callBase(this._pointsByFixedColumns, currentX, deltaX)\r\n                            }\r\n                        }\r\n                        return this.callBase(pointsByColumns, currentX, deltaX)\r\n                    }\r\n                }\r\n            }\r\n        }()\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_work_week.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline_week\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils.work_week\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-work-week\";\r\nvar LAST_DAY_WEEK_INDEX = 5;\r\nvar SchedulerTimelineWorkWeek = function(_SchedulerTimelineWee) {\r\n    _inherits(SchedulerTimelineWorkWeek, _SchedulerTimelineWee);\r\n    var _super = _createSuper(SchedulerTimelineWorkWeek);\r\n\r\n    function SchedulerTimelineWorkWeek() {\r\n        var _this;\r\n        _classCallCheck(this, SchedulerTimelineWorkWeek);\r\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n            args[_key] = arguments[_key]\r\n        }\r\n        _this = _super.call.apply(_super, [this].concat(args));\r\n        _this._getWeekendsCount = _utils.default.getWeekendsCount;\r\n        _this._isSkippedData = _utils.default.isDataOnWeekend;\r\n        return _this\r\n    }\r\n    _createClass(SchedulerTimelineWorkWeek, [{\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return TIMELINE_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getWeekDuration\",\r\n        value: function() {\r\n            return 5\r\n        }\r\n    }, {\r\n        key: \"_firstDayOfWeek\",\r\n        value: function() {\r\n            return _utils.default.getFirstDayOfWeek(this.option(\"firstDayOfWeek\"))\r\n        }\r\n    }, {\r\n        key: \"_isSkippedData\",\r\n        value: function() {\r\n            return _utils.default.isDataOnWeekend\r\n        }\r\n    }, {\r\n        key: \"_incrementDate\",\r\n        value: function(date) {\r\n            var day = date.getDay();\r\n            if (day === LAST_DAY_WEEK_INDEX) {\r\n                date.setDate(date.getDate() + 2)\r\n            }\r\n            _get(_getPrototypeOf(SchedulerTimelineWorkWeek.prototype), \"_incrementDate\", this).call(this, date)\r\n        }\r\n    }, {\r\n        key: \"_getOffsetByCount\",\r\n        value: function(cellIndex) {\r\n            var weekendCount = Math.floor(cellIndex / (5 * this._getCellCountInDay()));\r\n            return toMs(\"day\") * weekendCount * 2\r\n        }\r\n    }, {\r\n        key: \"_setFirstViewDate\",\r\n        value: function() {\r\n            this._firstViewDate = _utils.default.getFirstViewDate(this.option(\"currentDate\"), this._firstDayOfWeek());\r\n            this._setStartDayHour(this._firstViewDate)\r\n        }\r\n    }]);\r\n    return SchedulerTimelineWorkWeek\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineWorkWeek\", SchedulerTimelineWorkWeek);\r\nvar _default = SchedulerTimelineWorkWeek;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.pager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.pager\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"pager\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.agenda.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _array = require(\"../../../core/utils/array\");\r\nvar _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointments.strategy.base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar AgendaRenderingStrategy = function(_BaseAppointmentsStra) {\r\n    _inherits(AgendaRenderingStrategy, _BaseAppointmentsStra);\r\n    var _super = _createSuper(AgendaRenderingStrategy);\r\n\r\n    function AgendaRenderingStrategy() {\r\n        _classCallCheck(this, AgendaRenderingStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(AgendaRenderingStrategy, [{\r\n        key: \"getAppointmentMinSize\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"getDeltaTime\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"keepAppointmentSettings\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"getAppointmentGeometry\",\r\n        value: function(geometry) {\r\n            return geometry\r\n        }\r\n    }, {\r\n        key: \"createTaskPositionMap\",\r\n        value: function(appointments) {\r\n            var height;\r\n            var appointmentsByResources;\r\n            if (appointments.length) {\r\n                height = this.instance.fire(\"getAgendaVerticalStepHeight\");\r\n                appointmentsByResources = this.instance.fire(\"groupAppointmentsByResources\", appointments);\r\n                var groupedAppts = [];\r\n                (0, _iterator.each)(appointmentsByResources, function(i, appts) {\r\n                    var additionalAppointments = [];\r\n                    var recurrentIndexes = [];\r\n                    (0, _iterator.each)(appts, function(index, appointment) {\r\n                        var recurrenceBatch = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index);\r\n                        var appointmentBatch = null;\r\n                        if (!recurrenceBatch.indexes.length) {\r\n                            appointmentBatch = {\r\n                                parts: []\r\n                            };\r\n                            appointmentBatch = this.instance.getAppointmentsInstance()._processLongAppointment(appointment);\r\n                            additionalAppointments = additionalAppointments.concat(appointmentBatch.parts)\r\n                        }\r\n                        additionalAppointments = additionalAppointments.concat(recurrenceBatch.parts);\r\n                        recurrentIndexes = recurrentIndexes.concat(recurrenceBatch.indexes)\r\n                    }.bind(this));\r\n                    this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(recurrentIndexes, appts);\r\n                    this.instance.getAppointmentsInstance()._combineAppointments(appts, additionalAppointments);\r\n                    groupedAppts = groupedAppts.concat(appts)\r\n                }.bind(this));\r\n                Array.prototype.splice.apply(appointments, [0, appointments.length].concat(groupedAppts))\r\n            }\r\n            var result = [];\r\n            var sortedIndex = 0;\r\n            appointments.forEach(function(appt, index) {\r\n                result.push([{\r\n                    height: height,\r\n                    width: \"100%\",\r\n                    sortedIndex: sortedIndex++,\r\n                    groupIndex: this._calculateGroupIndex(index, appointmentsByResources)\r\n                }])\r\n            }.bind(this));\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_calculateGroupIndex\",\r\n        value: function(apptIndex, appointmentsByResources) {\r\n            var resultInd;\r\n            var counter = 0;\r\n            for (var i in appointmentsByResources) {\r\n                var countApptInGroup = appointmentsByResources[i].length;\r\n                if (apptIndex >= counter && apptIndex < counter + countApptInGroup) {\r\n                    resultInd = Number(i);\r\n                    break\r\n                }\r\n                counter += countApptInGroup\r\n            }\r\n            return resultInd\r\n        }\r\n    }, {\r\n        key: \"_getDeltaWidth\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_getAppointmentMaxWidth\",\r\n        value: function() {\r\n            return this.getDefaultCellWidth()\r\n        }\r\n    }, {\r\n        key: \"_needVerifyItemSize\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_isRtl\",\r\n        value: function() {\r\n            return this.instance.option(\"rtlEnabled\")\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentParts\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_reduceMultiWeekAppointment\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"calculateAppointmentHeight\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"calculateAppointmentWidth\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"isAppointmentGreaterThan\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"isAllDay\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_sortCondition\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_rowCondition\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_columnCondition\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_findIndexByKey\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_markAppointmentAsVirtual\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"getDropDownAppointmentWidth\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"getDefaultCellWidth\",\r\n        value: function() {\r\n            return this._defaultWidth\r\n        }\r\n    }, {\r\n        key: \"getCollectorLeftOffset\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"getCollectorTopOffset\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"calculateRows\",\r\n        value: function(appointments, agendaDuration, currentDate, needClearSettings) {\r\n            this._rows = [];\r\n            var groupedAppointments = this.instance.fire(\"groupAppointmentsByResources\", appointments);\r\n            currentDate = _date.default.trimTime(new Date(currentDate));\r\n            (0, _iterator.each)(groupedAppointments, function(groupIndex, currentAppointments) {\r\n                var groupResult = [];\r\n                var appts = {\r\n                    indexes: [],\r\n                    parts: []\r\n                };\r\n                if (!currentAppointments.length) {\r\n                    this._rows.push([]);\r\n                    return true\r\n                }(0, _iterator.each)(currentAppointments, function(index, appointment) {\r\n                    var startDate = this.instance.fire(\"getField\", \"startDate\", appointment);\r\n                    var endDate = this.instance.fire(\"getField\", \"endDate\", appointment);\r\n                    this.instance.fire(\"replaceWrongEndDate\", appointment, startDate, endDate);\r\n                    needClearSettings && delete appointment.settings;\r\n                    var result = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index, false);\r\n                    appts.parts = appts.parts.concat(result.parts);\r\n                    appts.indexes = appts.indexes.concat(result.indexes)\r\n                }.bind(this));\r\n                this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(appts.indexes, currentAppointments);\r\n                (0, _array.merge)(currentAppointments, appts.parts);\r\n                var appointmentCount = currentAppointments.length;\r\n                for (var i = 0; i < agendaDuration; i++) {\r\n                    var day = new Date(currentDate);\r\n                    day.setMilliseconds(day.getMilliseconds() + 864e5 * i);\r\n                    if (void 0 === groupResult[i]) {\r\n                        groupResult[i] = 0\r\n                    }\r\n                    for (var j = 0; j < appointmentCount; j++) {\r\n                        var appointmentData = currentAppointments[j].settings || currentAppointments[j];\r\n                        var appointmentIsLong = this.instance.fire(\"appointmentTakesSeveralDays\", currentAppointments[j]);\r\n                        var appointmentIsRecurrence = this.instance.fire(\"getField\", \"recurrenceRule\", currentAppointments[j]);\r\n                        if (this.instance.fire(\"dayHasAppointment\", day, appointmentData, true) || !appointmentIsRecurrence && appointmentIsLong && this.instance.fire(\"dayHasAppointment\", day, currentAppointments[j], true)) {\r\n                            groupResult[i] += 1\r\n                        }\r\n                    }\r\n                }\r\n                this._rows.push(groupResult)\r\n            }.bind(this));\r\n            return this._rows\r\n        }\r\n    }, {\r\n        key: \"_iterateRow\",\r\n        value: function(row, obj, index) {\r\n            for (var i = 0; i < row.length; i++) {\r\n                obj.counter = obj.counter + row[i];\r\n                if (obj.counter >= index) {\r\n                    obj.indexInRow = i;\r\n                    break\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getDateByIndex\",\r\n        value: function(index, rows, startViewDate) {\r\n            var obj = {\r\n                counter: 0,\r\n                indexInRow: 0\r\n            };\r\n            index++;\r\n            for (var i = 0; i < rows.length; i++) {\r\n                this._iterateRow(rows[i], obj, index);\r\n                if (obj.indexInRow) {\r\n                    break\r\n                }\r\n            }\r\n            return new Date(new Date(startViewDate).setDate(startViewDate.getDate() + obj.indexInRow))\r\n        }\r\n    }, {\r\n        key: \"getAppointmentDataCalculator\",\r\n        value: function() {\r\n            return function($appointment, originalStartDate) {\r\n                var apptIndex = $appointment.index();\r\n                var startViewDate = this.instance.getStartViewDate();\r\n                var calculatedStartDate = this.getDateByIndex(apptIndex, this._rows, startViewDate);\r\n                var wrappedOriginalStartDate = new Date(originalStartDate);\r\n                return {\r\n                    startDate: new Date(calculatedStartDate.setHours(wrappedOriginalStartDate.getHours(), wrappedOriginalStartDate.getMinutes(), wrappedOriginalStartDate.getSeconds(), wrappedOriginalStartDate.getMilliseconds()))\r\n                }\r\n            }.bind(this)\r\n        }\r\n    }]);\r\n    return AgendaRenderingStrategy\r\n}(_uiSchedulerAppointmentsStrategy.default);\r\nvar _default = AgendaRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.validating.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.validating\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"validating\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_row.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _menu = _interopRequireDefault(require(\"../menu\"));\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar OPERATION_ICONS = {\r\n    \"=\": \"filter-operation-equals\",\r\n    \"<>\": \"filter-operation-not-equals\",\r\n    \"<\": \"filter-operation-less\",\r\n    \"<=\": \"filter-operation-less-equal\",\r\n    \">\": \"filter-operation-greater\",\r\n    \">=\": \"filter-operation-greater-equal\",\r\n    \"default\": \"filter-operation-default\",\r\n    notcontains: \"filter-operation-not-contains\",\r\n    contains: \"filter-operation-contains\",\r\n    startswith: \"filter-operation-starts-with\",\r\n    endswith: \"filter-operation-ends-with\",\r\n    between: \"filter-operation-between\"\r\n};\r\nvar OPERATION_DESCRIPTORS = {\r\n    \"=\": \"equal\",\r\n    \"<>\": \"notEqual\",\r\n    \"<\": \"lessThan\",\r\n    \"<=\": \"lessThanOrEqual\",\r\n    \">\": \"greaterThan\",\r\n    \">=\": \"greaterThanOrEqual\",\r\n    startswith: \"startsWith\",\r\n    contains: \"contains\",\r\n    notcontains: \"notContains\",\r\n    endswith: \"endsWith\",\r\n    between: \"between\"\r\n};\r\nvar FILTERING_TIMEOUT = 700;\r\nvar CORRECT_FILTER_RANGE_OVERLAY_WIDTH = 1;\r\nvar FILTER_ROW_CLASS = \"filter-row\";\r\nvar FILTER_RANGE_OVERLAY_CLASS = \"filter-range-overlay\";\r\nvar FILTER_RANGE_START_CLASS = \"filter-range-start\";\r\nvar FILTER_RANGE_END_CLASS = \"filter-range-end\";\r\nvar MENU_CLASS = \"dx-menu\";\r\nvar EDITOR_WITH_MENU_CLASS = \"dx-editor-with-menu\";\r\nvar EDITOR_CONTAINER_CLASS = \"dx-editor-container\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar FILTER_MENU = \"dx-filter-menu\";\r\nvar APPLY_BUTTON_CLASS = \"dx-apply-button\";\r\nvar HIGHLIGHT_OUTLINE_CLASS = \"dx-highlight-outline\";\r\nvar FOCUSED_CLASS = \"dx-focused\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FILTER_RANGE_CONTENT_CLASS = \"dx-filter-range-content\";\r\nvar FILTER_MODIFIED_CLASS = \"dx-filter-modified\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar BETWEEN_OPERATION_DATA_TYPES = [\"date\", \"datetime\", \"number\"];\r\n\r\nfunction isOnClickApplyFilterMode(that) {\r\n    return \"onClick\" === that.option(\"filterRow.applyFilter\")\r\n}\r\nvar ColumnHeadersViewFilterRowExtender = function() {\r\n    var getEditorInstance = function($editorContainer) {\r\n        var $editor = $editorContainer && $editorContainer.children();\r\n        var componentNames = $editor && $editor.data(\"dxComponents\");\r\n        var editor = componentNames && componentNames.length && $editor.data(componentNames[0]);\r\n        if (editor instanceof _editor.default) {\r\n            return editor\r\n        }\r\n    };\r\n    var getRangeTextByFilterValue = function(that, column) {\r\n        var result = \"\";\r\n        var rangeEnd = \"\";\r\n        var filterValue = getColumnFilterValue(that, column);\r\n        var formatOptions = _uiGrid_core2.default.getFormatOptionsByColumn(column, \"filterRow\");\r\n        if (Array.isArray(filterValue)) {\r\n            result = _uiGrid_core2.default.formatValue(filterValue[0], formatOptions);\r\n            rangeEnd = _uiGrid_core2.default.formatValue(filterValue[1], formatOptions);\r\n            if (\"\" !== rangeEnd) {\r\n                result += \" - \" + rangeEnd\r\n            }\r\n        } else {\r\n            if ((0, _type.isDefined)(filterValue)) {\r\n                result = _uiGrid_core2.default.formatValue(filterValue, formatOptions)\r\n            }\r\n        }\r\n        return result\r\n    };\r\n\r\n    function getColumnFilterValue(that, column) {\r\n        if (column) {\r\n            return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedFilterValue ? column.bufferedFilterValue : column.filterValue\r\n        }\r\n    }\r\n    var getColumnSelectedFilterOperation = function(that, column) {\r\n        if (column) {\r\n            return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedSelectedFilterOperation ? column.bufferedSelectedFilterOperation : column.selectedFilterOperation\r\n        }\r\n    };\r\n    var isValidFilterValue = function(filterValue, column) {\r\n        if (column && BETWEEN_OPERATION_DATA_TYPES.indexOf(column.dataType) >= 0 && Array.isArray(filterValue)) {\r\n            return false\r\n        }\r\n        return void 0 !== filterValue\r\n    };\r\n    var getFilterValue = function(that, columnIndex, $editorContainer) {\r\n        var column = that._columnsController.columnOption(columnIndex);\r\n        var filterValue = getColumnFilterValue(that, column);\r\n        var isFilterRange = $editorContainer.closest(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).length;\r\n        var isRangeStart = $editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS));\r\n        if (filterValue && Array.isArray(filterValue) && \"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n            if (isRangeStart) {\r\n                return filterValue[0]\r\n            } else {\r\n                return filterValue[1]\r\n            }\r\n        }\r\n        return !isFilterRange && isValidFilterValue(filterValue, column) ? filterValue : null\r\n    };\r\n    var normalizeFilterValue = function(that, filterValue, column, $editorContainer) {\r\n        if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n            var columnFilterValue = getColumnFilterValue(that, column);\r\n            if ($editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS))) {\r\n                return [filterValue, Array.isArray(columnFilterValue) ? columnFilterValue[1] : void 0]\r\n            } else {\r\n                return [Array.isArray(columnFilterValue) ? columnFilterValue[0] : columnFilterValue, filterValue]\r\n            }\r\n        }\r\n        return filterValue\r\n    };\r\n    var updateFilterValue = function(that, options) {\r\n        var value = \"\" === options.value ? null : options.value;\r\n        var $editorContainer = options.container;\r\n        var column = that._columnsController.columnOption(options.column.index);\r\n        var filterValue = getFilterValue(that, column.index, $editorContainer);\r\n        if (!(0, _type.isDefined)(filterValue) && !(0, _type.isDefined)(value)) {\r\n            return\r\n        }\r\n        that._applyFilterViewController.setHighLight($editorContainer, filterValue !== value);\r\n        that._columnsController.columnOption(column.index, isOnClickApplyFilterMode(that) ? \"bufferedFilterValue\" : \"filterValue\", normalizeFilterValue(that, value, column, $editorContainer), options.notFireEvent)\r\n    };\r\n    return {\r\n        _updateEditorValue: function(column, $editorContainer) {\r\n            var that = this;\r\n            var editor = getEditorInstance($editorContainer);\r\n            editor && editor.option(\"value\", getFilterValue(that, column.index, $editorContainer))\r\n        },\r\n        _columnOptionChanged: function(e) {\r\n            var that = this;\r\n            var optionNames = e.optionNames;\r\n            var $cell;\r\n            var $editorContainer;\r\n            var $editorRangeElements;\r\n            var $menu;\r\n            if (_uiGrid_core2.default.checkChanges(optionNames, [\"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"bufferedSelectedFilterOperation\"]) && void 0 !== e.columnIndex) {\r\n                var visibleIndex = that._columnsController.getVisibleIndex(e.columnIndex);\r\n                var column = that._columnsController.columnOption(e.columnIndex);\r\n                $cell = that._getCellElement(that.element().find(\".\" + that.addWidgetPrefix(FILTER_ROW_CLASS)).index(), visibleIndex) || (0, _renderer.default)();\r\n                $editorContainer = $cell.find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n                if (optionNames.filterValue || optionNames.bufferedFilterValue) {\r\n                    that._updateEditorValue(column, $editorContainer);\r\n                    var overlayInstance = $cell.find(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).data(\"dxOverlay\");\r\n                    if (overlayInstance) {\r\n                        $editorRangeElements = overlayInstance.$content().find(\".\" + EDITOR_CONTAINER_CLASS);\r\n                        that._updateEditorValue(column, $editorRangeElements.first());\r\n                        that._updateEditorValue(column, $editorRangeElements.last())\r\n                    }\r\n                    if (!overlayInstance || !overlayInstance.option(\"visible\")) {\r\n                        that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column))\r\n                    }\r\n                }\r\n                if (optionNames.selectedFilterOperation || optionNames.bufferedSelectedFilterOperation) {\r\n                    if (visibleIndex >= 0 && column) {\r\n                        $menu = $cell.find(\".\" + MENU_CLASS);\r\n                        if ($menu.length) {\r\n                            that._updateFilterOperationChooser($menu, column, $editorContainer);\r\n                            if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n                                that._renderFilterRangeContent($cell, column)\r\n                            } else {\r\n                                if ($editorContainer.find(\".\" + FILTER_RANGE_CONTENT_CLASS).length) {\r\n                                    that._renderEditor($editorContainer, that._getEditorOptions($editorContainer, column));\r\n                                    that._hideFilterRange()\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return\r\n            }\r\n            that.callBase(e)\r\n        },\r\n        _renderCore: function() {\r\n            this._filterRangeOverlayInstance = null;\r\n            this.callBase.apply(this, arguments)\r\n        },\r\n        _resizeCore: function() {\r\n            this.callBase.apply(this, arguments);\r\n            this._filterRangeOverlayInstance && this._filterRangeOverlayInstance.repaint()\r\n        },\r\n        isFilterRowVisible: function() {\r\n            return this._isElementVisible(this.option(\"filterRow\"))\r\n        },\r\n        isVisible: function() {\r\n            return this.callBase() || this.isFilterRowVisible()\r\n        },\r\n        init: function() {\r\n            this.callBase();\r\n            this._applyFilterViewController = this.getController(\"applyFilter\")\r\n        },\r\n        _initFilterRangeOverlay: function($cell, column) {\r\n            var that = this;\r\n            var sharedData = {};\r\n            var $editorContainer = $cell.find(\".dx-editor-container\");\r\n            var $overlay = (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).appendTo($cell);\r\n            return that._createComponent($overlay, _overlay.default, {\r\n                height: \"auto\",\r\n                shading: false,\r\n                showTitle: false,\r\n                focusStateEnabled: false,\r\n                closeOnTargetScroll: false,\r\n                closeOnOutsideClick: true,\r\n                animation: false,\r\n                position: {\r\n                    my: \"top\",\r\n                    at: \"top\",\r\n                    of: $editorContainer.length && $editorContainer || $cell,\r\n                    offset: \"0 -1\"\r\n                },\r\n                contentTemplate: function(contentElement) {\r\n                    var editorOptions;\r\n                    var $editor = (0, _renderer.default)(\"<div>\").addClass(EDITOR_CONTAINER_CLASS + \" \" + that.addWidgetPrefix(FILTER_RANGE_START_CLASS)).appendTo(contentElement);\r\n                    column = that._columnsController.columnOption(column.index);\r\n                    editorOptions = that._getEditorOptions($editor, column);\r\n                    editorOptions.sharedData = sharedData;\r\n                    that._renderEditor($editor, editorOptions);\r\n                    _events_engine.default.on($editor.find(EDITORS_INPUT_SELECTOR), \"keydown\", function(e) {\r\n                        var $prevElement = $cell.find(\"[tabindex]\").not(e.target).first();\r\n                        if (\"tab\" === (0, _index.normalizeKeyName)(e) && e.shiftKey) {\r\n                            e.preventDefault();\r\n                            that._hideFilterRange();\r\n                            if (!$prevElement.length) {\r\n                                $prevElement = $cell.prev().find(\"[tabindex]\").last()\r\n                            }\r\n                            _events_engine.default.trigger($prevElement, \"focus\")\r\n                        }\r\n                    });\r\n                    $editor = (0, _renderer.default)(\"<div>\").addClass(EDITOR_CONTAINER_CLASS + \" \" + that.addWidgetPrefix(FILTER_RANGE_END_CLASS)).appendTo(contentElement);\r\n                    editorOptions = that._getEditorOptions($editor, column);\r\n                    editorOptions.sharedData = sharedData;\r\n                    that._renderEditor($editor, editorOptions);\r\n                    _events_engine.default.on($editor.find(EDITORS_INPUT_SELECTOR), \"keydown\", function(e) {\r\n                        if (\"tab\" === (0, _index.normalizeKeyName)(e) && !e.shiftKey) {\r\n                            e.preventDefault();\r\n                            that._hideFilterRange();\r\n                            _events_engine.default.trigger($cell.next().find(\"[tabindex]\").first(), \"focus\")\r\n                        }\r\n                    });\r\n                    return (0, _renderer.default)(contentElement).addClass(that.getWidgetContainerClass())\r\n                },\r\n                onShown: function(e) {\r\n                    var $editor = e.component.$content().find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n                    _events_engine.default.trigger($editor.find(EDITORS_INPUT_SELECTOR), \"focus\")\r\n                },\r\n                onHidden: function() {\r\n                    column = that._columnsController.columnOption(column.index);\r\n                    $cell.find(\".\" + MENU_CLASS).parent().addClass(EDITOR_WITH_MENU_CLASS);\r\n                    if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n                        that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column));\r\n                        that.component.updateDimensions()\r\n                    }\r\n                }\r\n            })\r\n        },\r\n        _updateFilterRangeOverlay: function(options) {\r\n            var overlayInstance = this._filterRangeOverlayInstance;\r\n            overlayInstance && overlayInstance.option(options)\r\n        },\r\n        _showFilterRange: function($cell, column) {\r\n            var that = this;\r\n            var $overlay = $cell.children(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS));\r\n            var overlayInstance = $overlay.length && $overlay.data(\"dxOverlay\");\r\n            if (!overlayInstance && column) {\r\n                overlayInstance = that._initFilterRangeOverlay($cell, column)\r\n            }\r\n            if (!overlayInstance.option(\"visible\")) {\r\n                that._filterRangeOverlayInstance && that._filterRangeOverlayInstance.hide();\r\n                that._filterRangeOverlayInstance = overlayInstance;\r\n                that._updateFilterRangeOverlay({\r\n                    width: $cell.outerWidth(true) + CORRECT_FILTER_RANGE_OVERLAY_WIDTH\r\n                });\r\n                that._filterRangeOverlayInstance && that._filterRangeOverlayInstance.show()\r\n            }\r\n        },\r\n        _hideFilterRange: function() {\r\n            var overlayInstance = this._filterRangeOverlayInstance;\r\n            overlayInstance && overlayInstance.hide()\r\n        },\r\n        getFilterRangeOverlayInstance: function() {\r\n            return this._filterRangeOverlayInstance\r\n        },\r\n        _createRow: function(row) {\r\n            var _this = this;\r\n            var $row = this.callBase(row);\r\n            if (\"filter\" === row.rowType) {\r\n                $row.addClass(this.addWidgetPrefix(FILTER_ROW_CLASS));\r\n                if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n                    _events_engine.default.on($row, \"keydown\", function(event) {\r\n                        return (0, _accessibility.selectView)(\"filterRow\", _this, event)\r\n                    })\r\n                }\r\n            }\r\n            return $row\r\n        },\r\n        _getRows: function() {\r\n            var result = this.callBase();\r\n            if (this.isFilterRowVisible()) {\r\n                result.push({\r\n                    rowType: \"filter\"\r\n                })\r\n            }\r\n            return result\r\n        },\r\n        _renderFilterCell: function(cell, options) {\r\n            var that = this;\r\n            var column = options.column;\r\n            var $cell = (0, _renderer.default)(cell);\r\n            if (that.component.option(\"showColumnHeaders\")) {\r\n                that.setAria(\"describedby\", column.headerId, $cell)\r\n            }\r\n            that.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaFilterCell\"), $cell);\r\n            $cell.addClass(EDITOR_CELL_CLASS);\r\n            var $container = (0, _renderer.default)(\"<div>\").appendTo($cell);\r\n            var $editorContainer = (0, _renderer.default)(\"<div>\").addClass(EDITOR_CONTAINER_CLASS).appendTo($container);\r\n            if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n                that._renderFilterRangeContent($cell, column)\r\n            } else {\r\n                var editorOptions = that._getEditorOptions($editorContainer, column);\r\n                that._renderEditor($editorContainer, editorOptions)\r\n            }\r\n            var alignment = column.alignment;\r\n            if (alignment && \"center\" !== alignment) {\r\n                $cell.find(EDITORS_INPUT_SELECTOR).first().css(\"textAlign\", column.alignment)\r\n            }\r\n            if (column.filterOperations && column.filterOperations.length) {\r\n                that._renderFilterOperationChooser($container, column, $editorContainer)\r\n            }\r\n        },\r\n        _renderCellContent: function($cell, options) {\r\n            var that = this;\r\n            var column = options.column;\r\n            if (\"filter\" === options.rowType) {\r\n                if (column.command) {\r\n                    $cell.html(\"&nbsp;\")\r\n                } else {\r\n                    if (column.allowFiltering) {\r\n                        that.renderTemplate($cell, that._renderFilterCell.bind(that), options).done(function() {\r\n                            that._updateCell($cell, options)\r\n                        });\r\n                        return\r\n                    }\r\n                }\r\n            }\r\n            that.callBase($cell, options)\r\n        },\r\n        _getEditorOptions: function($editorContainer, column) {\r\n            var that = this;\r\n            var accessibilityOptions = {\r\n                editorOptions: {\r\n                    inputAttr: that._getFilterInputAccessibilityAttributes(column)\r\n                }\r\n            };\r\n            var result = (0, _extend.extend)(accessibilityOptions, column, {\r\n                value: getFilterValue(that, column.index, $editorContainer),\r\n                parentType: \"filterRow\",\r\n                showAllText: that.option(\"filterRow.showAllText\"),\r\n                updateValueTimeout: \"onClick\" === that.option(\"filterRow.applyFilter\") ? 0 : FILTERING_TIMEOUT,\r\n                width: null,\r\n                setValue: function(value, notFireEvent) {\r\n                    updateFilterValue(that, {\r\n                        column: column,\r\n                        value: value,\r\n                        container: $editorContainer,\r\n                        notFireEvent: notFireEvent\r\n                    })\r\n                }\r\n            });\r\n            if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n                if ($editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS))) {\r\n                    result.placeholder = that.option(\"filterRow.betweenStartText\")\r\n                } else {\r\n                    result.placeholder = that.option(\"filterRow.betweenEndText\")\r\n                }\r\n            }\r\n            return result\r\n        },\r\n        _getFilterInputAccessibilityAttributes: function(column) {\r\n            var columnAriaLabel = _message.default.format(\"dxDataGrid-ariaFilterCell\");\r\n            if (this.component.option(\"showColumnHeaders\")) {\r\n                return {\r\n                    \"aria-label\": columnAriaLabel,\r\n                    \"aria-describedby\": column.headerId\r\n                }\r\n            }\r\n            return {\r\n                \"aria-label\": columnAriaLabel\r\n            }\r\n        },\r\n        _renderEditor: function($editorContainer, options) {\r\n            $editorContainer.empty();\r\n            return this.getController(\"editorFactory\").createEditor((0, _renderer.default)(\"<div>\").appendTo($editorContainer), options)\r\n        },\r\n        _renderFilterRangeContent: function($cell, column) {\r\n            var that = this;\r\n            var $editorContainer = $cell.find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n            $editorContainer.empty();\r\n            var $filterRangeContent = (0, _renderer.default)(\"<div>\").addClass(FILTER_RANGE_CONTENT_CLASS).attr(\"tabindex\", this.option(\"tabIndex\"));\r\n            _events_engine.default.on($filterRangeContent, \"focusin\", function() {\r\n                that._showFilterRange($cell, column)\r\n            });\r\n            $filterRangeContent.appendTo($editorContainer);\r\n            that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column))\r\n        },\r\n        _updateFilterRangeContent: function($cell, value) {\r\n            var $filterRangeContent = $cell.find(\".\" + FILTER_RANGE_CONTENT_CLASS);\r\n            if ($filterRangeContent.length) {\r\n                if (\"\" === value) {\r\n                    $filterRangeContent.html(\"&nbsp;\")\r\n                } else {\r\n                    $filterRangeContent.text(value)\r\n                }\r\n            }\r\n        },\r\n        _updateFilterOperationChooser: function($menu, column, $editorContainer) {\r\n            var that = this;\r\n            var isCellWasFocused;\r\n            var restoreFocus = function() {\r\n                var menu = _menu.default.getInstance($menu);\r\n                menu && menu.option(\"focusedElement\", null);\r\n                isCellWasFocused && that._focusEditor($editorContainer)\r\n            };\r\n            that._createComponent($menu, _menu.default, {\r\n                integrationOptions: {},\r\n                activeStateEnabled: false,\r\n                selectionMode: \"single\",\r\n                cssClass: that.getWidgetContainerClass() + \" \" + CELL_FOCUS_DISABLED_CLASS + \" \" + FILTER_MENU,\r\n                showFirstSubmenuMode: \"onHover\",\r\n                hideSubmenuOnMouseLeave: true,\r\n                items: [{\r\n                    disabled: column.filterOperations && column.filterOperations.length ? false : true,\r\n                    icon: OPERATION_ICONS[getColumnSelectedFilterOperation(that, column) || \"default\"],\r\n                    selectable: false,\r\n                    items: that._getFilterOperationMenuItems(column)\r\n                }],\r\n                onItemClick: function(properties) {\r\n                    var selectedFilterOperation = properties.itemData.name;\r\n                    var columnSelectedFilterOperation = getColumnSelectedFilterOperation(that, column);\r\n                    var notFocusEditor = false;\r\n                    var isOnClickMode = isOnClickApplyFilterMode(that);\r\n                    var options = {};\r\n                    if (properties.itemData.items || selectedFilterOperation && selectedFilterOperation === columnSelectedFilterOperation) {\r\n                        return\r\n                    }\r\n                    if (selectedFilterOperation) {\r\n                        options[isOnClickMode ? \"bufferedSelectedFilterOperation\" : \"selectedFilterOperation\"] = selectedFilterOperation;\r\n                        if (\"between\" === selectedFilterOperation || \"between\" === columnSelectedFilterOperation) {\r\n                            notFocusEditor = \"between\" === selectedFilterOperation;\r\n                            options[isOnClickMode ? \"bufferedFilterValue\" : \"filterValue\"] = null\r\n                        }\r\n                    } else {\r\n                        options[isOnClickMode ? \"bufferedFilterValue\" : \"filterValue\"] = null;\r\n                        options[isOnClickMode ? \"bufferedSelectedFilterOperation\" : \"selectedFilterOperation\"] = column.defaultSelectedFilterOperation || null\r\n                    }\r\n                    that._columnsController.columnOption(column.index, options);\r\n                    that._applyFilterViewController.setHighLight($editorContainer, true);\r\n                    if (!selectedFilterOperation) {\r\n                        var editor = getEditorInstance($editorContainer);\r\n                        if (editor && \"dxDateBox\" === editor.NAME && !editor.option(\"isValid\")) {\r\n                            editor.reset();\r\n                            editor.option(\"isValid\", true)\r\n                        }\r\n                    }\r\n                    if (!notFocusEditor) {\r\n                        that._focusEditor($editorContainer)\r\n                    } else {\r\n                        that._showFilterRange($editorContainer.closest(\".\" + EDITOR_CELL_CLASS), column)\r\n                    }\r\n                },\r\n                onSubmenuShown: function() {\r\n                    isCellWasFocused = that._isEditorFocused($editorContainer);\r\n                    that.getController(\"editorFactory\").loseFocus()\r\n                },\r\n                onSubmenuHiding: function() {\r\n                    _events_engine.default.trigger($menu, \"blur\");\r\n                    restoreFocus()\r\n                },\r\n                onContentReady: function(e) {\r\n                    _events_engine.default.on($menu, \"blur\", function() {\r\n                        var menu = e.component;\r\n                        menu._hideSubmenu(menu._visibleSubmenu);\r\n                        restoreFocus()\r\n                    })\r\n                },\r\n                rtlEnabled: that.option(\"rtlEnabled\")\r\n            })\r\n        },\r\n        _isEditorFocused: function($container) {\r\n            return $container.hasClass(FOCUSED_CLASS) || $container.parents(\".\" + FOCUSED_CLASS).length\r\n        },\r\n        _focusEditor: function($container) {\r\n            this.getController(\"editorFactory\").focus($container);\r\n            _events_engine.default.trigger($container.find(EDITORS_INPUT_SELECTOR), \"focus\")\r\n        },\r\n        _renderFilterOperationChooser: function($container, column, $editorContainer) {\r\n            var that = this;\r\n            var $menu;\r\n            if (that.option(\"filterRow.showOperationChooser\")) {\r\n                $container.addClass(EDITOR_WITH_MENU_CLASS);\r\n                $menu = (0, _renderer.default)(\"<div>\").prependTo($container);\r\n                that._updateFilterOperationChooser($menu, column, $editorContainer)\r\n            }\r\n        },\r\n        _getFilterOperationMenuItems: function(column) {\r\n            var that = this;\r\n            var result = [{}];\r\n            var filterRowOptions = that.option(\"filterRow\");\r\n            var operationDescriptions = filterRowOptions && filterRowOptions.operationDescriptions || {};\r\n            if (column.filterOperations && column.filterOperations.length) {\r\n                var availableFilterOperations = column.filterOperations.filter(function(value) {\r\n                    return (0, _type.isDefined)(OPERATION_DESCRIPTORS[value])\r\n                });\r\n                result = (0, _iterator.map)(availableFilterOperations, function(value) {\r\n                    var descriptionName = OPERATION_DESCRIPTORS[value];\r\n                    return {\r\n                        name: value,\r\n                        selected: (getColumnSelectedFilterOperation(that, column) || column.defaultFilterOperation) === value,\r\n                        text: operationDescriptions[descriptionName],\r\n                        icon: OPERATION_ICONS[value]\r\n                    }\r\n                });\r\n                result.push({\r\n                    name: null,\r\n                    text: filterRowOptions && filterRowOptions.resetOperationText,\r\n                    icon: OPERATION_ICONS.default\r\n                })\r\n            }\r\n            return result\r\n        },\r\n        optionChanged: function(args) {\r\n            var that = this;\r\n            switch (args.name) {\r\n                case \"filterRow\":\r\n                case \"showColumnLines\":\r\n                    this._invalidate(true, true);\r\n                    args.handled = true;\r\n                    break;\r\n                default:\r\n                    that.callBase(args)\r\n            }\r\n        }\r\n    }\r\n}();\r\nvar DataControllerFilterRowExtender = {\r\n    skipCalculateColumnFilters: function() {\r\n        return false\r\n    },\r\n    _calculateAdditionalFilter: function() {\r\n        if (this.skipCalculateColumnFilters()) {\r\n            return this.callBase()\r\n        }\r\n        var filters = [this.callBase()];\r\n        var columns = this._columnsController.getVisibleColumns(null, true);\r\n        (0, _iterator.each)(columns, function() {\r\n            if (this.allowFiltering && this.calculateFilterExpression && (0, _type.isDefined)(this.filterValue)) {\r\n                var filter = this.createFilterExpression(this.filterValue, this.selectedFilterOperation || this.defaultFilterOperation, \"filterRow\");\r\n                filters.push(filter)\r\n            }\r\n        });\r\n        return _uiGrid_core2.default.combineFilters(filters)\r\n    }\r\n};\r\nvar ApplyFilterViewController = _uiGrid_core.default.ViewController.inherit({\r\n    _getHeaderPanel: function() {\r\n        if (!this._headerPanel) {\r\n            this._headerPanel = this.getView(\"headerPanel\")\r\n        }\r\n        return this._headerPanel\r\n    },\r\n    setHighLight: function($element, value) {\r\n        if (isOnClickApplyFilterMode(this)) {\r\n            $element && $element.toggleClass(HIGHLIGHT_OUTLINE_CLASS, value) && $element.closest(\".\" + EDITOR_CELL_CLASS).toggleClass(FILTER_MODIFIED_CLASS, value);\r\n            this._getHeaderPanel().enableApplyButton(value)\r\n        }\r\n    },\r\n    applyFilter: function() {\r\n        var columnsController = this.getController(\"columns\");\r\n        var columns = columnsController.getColumns();\r\n        columnsController.beginUpdate();\r\n        for (var i = 0; i < columns.length; i++) {\r\n            var column = columns[i];\r\n            if (void 0 !== column.bufferedFilterValue) {\r\n                columnsController.columnOption(i, \"filterValue\", column.bufferedFilterValue);\r\n                column.bufferedFilterValue = void 0\r\n            }\r\n            if (void 0 !== column.bufferedSelectedFilterOperation) {\r\n                columnsController.columnOption(i, \"selectedFilterOperation\", column.bufferedSelectedFilterOperation);\r\n                column.bufferedSelectedFilterOperation = void 0\r\n            }\r\n        }\r\n        columnsController.endUpdate();\r\n        this.removeHighLights()\r\n    },\r\n    removeHighLights: function() {\r\n        if (isOnClickApplyFilterMode(this)) {\r\n            var columnHeadersViewElement = this.getView(\"columnHeadersView\").element();\r\n            columnHeadersViewElement.find(\".\" + this.addWidgetPrefix(FILTER_ROW_CLASS) + \" .\" + HIGHLIGHT_OUTLINE_CLASS).removeClass(HIGHLIGHT_OUTLINE_CLASS);\r\n            columnHeadersViewElement.find(\".\" + this.addWidgetPrefix(FILTER_ROW_CLASS) + \" .\" + FILTER_MODIFIED_CLASS).removeClass(FILTER_MODIFIED_CLASS);\r\n            this._getHeaderPanel().enableApplyButton(false)\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            filterRow: {\r\n                visible: false,\r\n                showOperationChooser: true,\r\n                showAllText: _message.default.format(\"dxDataGrid-filterRowShowAllText\"),\r\n                resetOperationText: _message.default.format(\"dxDataGrid-filterRowResetOperationText\"),\r\n                applyFilter: \"auto\",\r\n                applyFilterText: _message.default.format(\"dxDataGrid-applyFilterText\"),\r\n                operationDescriptions: {\r\n                    equal: _message.default.format(\"dxDataGrid-filterRowOperationEquals\"),\r\n                    notEqual: _message.default.format(\"dxDataGrid-filterRowOperationNotEquals\"),\r\n                    lessThan: _message.default.format(\"dxDataGrid-filterRowOperationLess\"),\r\n                    lessThanOrEqual: _message.default.format(\"dxDataGrid-filterRowOperationLessOrEquals\"),\r\n                    greaterThan: _message.default.format(\"dxDataGrid-filterRowOperationGreater\"),\r\n                    greaterThanOrEqual: _message.default.format(\"dxDataGrid-filterRowOperationGreaterOrEquals\"),\r\n                    startsWith: _message.default.format(\"dxDataGrid-filterRowOperationStartsWith\"),\r\n                    contains: _message.default.format(\"dxDataGrid-filterRowOperationContains\"),\r\n                    notContains: _message.default.format(\"dxDataGrid-filterRowOperationNotContains\"),\r\n                    endsWith: _message.default.format(\"dxDataGrid-filterRowOperationEndsWith\"),\r\n                    between: _message.default.format(\"dxDataGrid-filterRowOperationBetween\"),\r\n                    isBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n                    isNotBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n                },\r\n                betweenStartText: _message.default.format(\"dxDataGrid-filterRowOperationBetweenStartText\"),\r\n                betweenEndText: _message.default.format(\"dxDataGrid-filterRowOperationBetweenEndText\")\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        applyFilter: ApplyFilterViewController\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: DataControllerFilterRowExtender,\r\n            columnsResizer: {\r\n                _startResizing: function() {\r\n                    var that = this;\r\n                    that.callBase.apply(that, arguments);\r\n                    if (that.isResizing()) {\r\n                        var overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance();\r\n                        if (overlayInstance) {\r\n                            var cellIndex = overlayInstance.$element().closest(\"td\").index();\r\n                            if (cellIndex === that._targetPoint.columnIndex || cellIndex === that._targetPoint.columnIndex + 1) {\r\n                                overlayInstance.$content().hide()\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                _endResizing: function() {\r\n                    var that = this;\r\n                    var $cell;\r\n                    if (that.isResizing()) {\r\n                        var overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance();\r\n                        if (overlayInstance) {\r\n                            $cell = overlayInstance.$element().closest(\"td\");\r\n                            that._columnHeadersView._updateFilterRangeOverlay({\r\n                                width: $cell.outerWidth(true) + CORRECT_FILTER_RANGE_OVERLAY_WIDTH\r\n                            });\r\n                            overlayInstance.$content().show()\r\n                        }\r\n                    }\r\n                    that.callBase.apply(that, arguments)\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            columnHeadersView: ColumnHeadersViewFilterRowExtender,\r\n            headerPanel: {\r\n                _getToolbarItems: function() {\r\n                    var items = this.callBase();\r\n                    var filterItem = this._prepareFilterItem(items);\r\n                    return filterItem.concat(items)\r\n                },\r\n                _prepareFilterItem: function() {\r\n                    var that = this;\r\n                    var filterItem = [];\r\n                    if (that._isShowApplyFilterButton()) {\r\n                        var hintText = that.option(\"filterRow.applyFilterText\");\r\n                        var columns = that._columnsController.getColumns();\r\n                        var disabled = !columns.filter(function(column) {\r\n                            return void 0 !== column.bufferedFilterValue\r\n                        }).length;\r\n                        var onInitialized = function(e) {\r\n                            (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(APPLY_BUTTON_CLASS))\r\n                        };\r\n                        var onClickHandler = function() {\r\n                            that._applyFilterViewController.applyFilter()\r\n                        };\r\n                        var toolbarItem = {\r\n                            widget: \"dxButton\",\r\n                            options: {\r\n                                icon: \"apply-filter\",\r\n                                disabled: disabled,\r\n                                onClick: onClickHandler,\r\n                                hint: hintText,\r\n                                text: hintText,\r\n                                onInitialized: onInitialized\r\n                            },\r\n                            showText: \"inMenu\",\r\n                            name: \"applyFilterButton\",\r\n                            location: \"after\",\r\n                            locateInMenu: \"auto\",\r\n                            sortIndex: 10\r\n                        };\r\n                        filterItem.push(toolbarItem)\r\n                    }\r\n                    return filterItem\r\n                },\r\n                _isShowApplyFilterButton: function() {\r\n                    var filterRowOptions = this.option(\"filterRow\");\r\n                    return filterRowOptions && filterRowOptions.visible && \"onClick\" === filterRowOptions.applyFilter\r\n                },\r\n                init: function() {\r\n                    this.callBase();\r\n                    this._dataController = this.getController(\"data\");\r\n                    this._applyFilterViewController = this.getController(\"applyFilter\")\r\n                },\r\n                enableApplyButton: function(value) {\r\n                    this.setToolbarItemDisabled(\"applyFilterButton\", !value)\r\n                },\r\n                isVisible: function() {\r\n                    return this.callBase() || this._isShowApplyFilterButton()\r\n                },\r\n                optionChanged: function(args) {\r\n                    if (\"filterRow\" === args.name) {\r\n                        this._invalidate();\r\n                        args.handled = true\r\n                    } else {\r\n                        this.callBase(args)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/text_box/ui.text_editor.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _uiText_editor = _interopRequireDefault(require(\"./ui.text_editor.mask\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}(0, _component_registrator.default)(\"dxTextEditor\", _uiText_editor.default);\r\nvar _default = _uiText_editor.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/double_click.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.name = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _event_registrator = _interopRequireDefault(require(\"./core/event_registrator\"));\r\nvar _click = require(\"./click\");\r\nvar _index = require(\"./utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DBLCLICK_EVENT_NAME = \"dxdblclick\";\r\nexports.name = DBLCLICK_EVENT_NAME;\r\nvar DBLCLICK_NAMESPACE = \"dxDblClick\";\r\nvar NAMESPACED_CLICK_EVENT = (0, _index.addNamespace)(_click.name, DBLCLICK_NAMESPACE);\r\nvar DBLCLICK_TIMEOUT = 300;\r\nvar DblClick = _class.default.inherit({\r\n    ctor: function() {\r\n        this._handlerCount = 0;\r\n        this._forgetLastClick()\r\n    },\r\n    _forgetLastClick: function() {\r\n        this._firstClickTarget = null;\r\n        this._lastClickTimeStamp = -DBLCLICK_TIMEOUT\r\n    },\r\n    add: function() {\r\n        if (this._handlerCount <= 0) {\r\n            _events_engine.default.on(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT, this._clickHandler.bind(this))\r\n        }\r\n        this._handlerCount++\r\n    },\r\n    _clickHandler: function(e) {\r\n        var timeStamp = e.timeStamp || Date.now();\r\n        var timeBetweenClicks = timeStamp - this._lastClickTimeStamp;\r\n        var isSimulated = timeBetweenClicks < 0;\r\n        var isDouble = !isSimulated && timeBetweenClicks < DBLCLICK_TIMEOUT;\r\n        if (isDouble) {\r\n            (0, _index.fireEvent)({\r\n                type: DBLCLICK_EVENT_NAME,\r\n                target: (0, _dom.closestCommonParent)(this._firstClickTarget, e.target),\r\n                originalEvent: e\r\n            });\r\n            this._forgetLastClick()\r\n        } else {\r\n            this._firstClickTarget = e.target;\r\n            this._lastClickTimeStamp = timeStamp\r\n        }\r\n    },\r\n    remove: function() {\r\n        this._handlerCount--;\r\n        if (this._handlerCount <= 0) {\r\n            this._forgetLastClick();\r\n            _events_engine.default.off(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT)\r\n        }\r\n    }\r\n});\r\n(0, _event_registrator.default)(DBLCLICK_EVENT_NAME, new DblClick);\r\n","/**\r\n * DevExtreme (ui/filter_builder/between.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getConfig = getConfig;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar FILTER_BUILDER_RANGE_CLASS = \"dx-filterbuilder-range\";\r\nvar FILTER_BUILDER_RANGE_START_CLASS = FILTER_BUILDER_RANGE_CLASS + \"-start\";\r\nvar FILTER_BUILDER_RANGE_END_CLASS = FILTER_BUILDER_RANGE_CLASS + \"-end\";\r\nvar FILTER_BUILDER_RANGE_SEPARATOR_CLASS = FILTER_BUILDER_RANGE_CLASS + \"-separator\";\r\nvar SEPARATOR = \"\\u2013\";\r\n\r\nfunction editorTemplate(conditionInfo, container) {\r\n    var $editorStart = (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_RANGE_START_CLASS);\r\n    var $editorEnd = (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_RANGE_END_CLASS);\r\n    var values = conditionInfo.value || [];\r\n    var getStartValue = function(values) {\r\n        return values && values.length > 0 ? values[0] : null\r\n    };\r\n    var getEndValue = function(values) {\r\n        return values && 2 === values.length ? values[1] : null\r\n    };\r\n    container.append($editorStart);\r\n    container.append((0, _renderer.default)(\"<span>\").addClass(FILTER_BUILDER_RANGE_SEPARATOR_CLASS).text(SEPARATOR));\r\n    container.append($editorEnd);\r\n    container.addClass(FILTER_BUILDER_RANGE_CLASS);\r\n    this._editorFactory.createEditor.call(this, $editorStart, (0, _extend.extend)({}, conditionInfo.field, conditionInfo, {\r\n        value: getStartValue(values),\r\n        parentType: \"filterBuilder\",\r\n        setValue: function(value) {\r\n            values = [value, getEndValue(values)];\r\n            conditionInfo.setValue(values)\r\n        }\r\n    }));\r\n    this._editorFactory.createEditor.call(this, $editorEnd, (0, _extend.extend)({}, conditionInfo.field, conditionInfo, {\r\n        value: getEndValue(values),\r\n        parentType: \"filterBuilder\",\r\n        setValue: function(value) {\r\n            values = [getStartValue(values), value];\r\n            conditionInfo.setValue(values)\r\n        }\r\n    }))\r\n}\r\n\r\nfunction getConfig(caption, context) {\r\n    return {\r\n        name: \"between\",\r\n        caption: caption,\r\n        icon: \"range\",\r\n        valueSeparator: SEPARATOR,\r\n        dataTypes: [\"number\", \"date\", \"datetime\"],\r\n        editorTemplate: editorTemplate.bind(context),\r\n        notForLookup: true\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (viz/chart_components/layout_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.LayoutManager = LayoutManager;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _consts = _interopRequireDefault(require(\"../components/consts\"));\r\nvar _layout_element = require(\"../core/layout_element\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar floor = Math.floor,\r\n    sqrt = Math.sqrt;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;\r\n\r\nfunction getNearestCoord(firstCoord, secondCoord, pointCenterCoord) {\r\n    var nearestCoord;\r\n    if (pointCenterCoord < firstCoord) {\r\n        nearestCoord = firstCoord\r\n    } else {\r\n        if (secondCoord < pointCenterCoord) {\r\n            nearestCoord = secondCoord\r\n        } else {\r\n            nearestCoord = pointCenterCoord\r\n        }\r\n    }\r\n    return nearestCoord\r\n}\r\n\r\nfunction getLabelLayout(point) {\r\n    if (point._label.isVisible() && \"inside\" !== point._label.getLayoutOptions().position) {\r\n        return point._label.getBoundingRect()\r\n    }\r\n}\r\n\r\nfunction getPieRadius(series, paneCenterX, paneCenterY, accessibleRadius, minR) {\r\n    series.some(function(singleSeries) {\r\n        return singleSeries.getVisiblePoints().reduce(function(radiusIsFound, point) {\r\n            var labelBBox = getLabelLayout(point);\r\n            if (labelBBox) {\r\n                var xCoords = getNearestCoord(labelBBox.x, labelBBox.x + labelBBox.width, paneCenterX);\r\n                var yCoords = getNearestCoord(labelBBox.y, labelBBox.y + labelBBox.height, paneCenterY);\r\n                accessibleRadius = _min(_max(getLengthFromCenter(xCoords, yCoords, paneCenterX, paneCenterY) - RADIAL_LABEL_INDENT, minR), accessibleRadius);\r\n                radiusIsFound = true\r\n            }\r\n            return radiusIsFound\r\n        }, false)\r\n    });\r\n    return accessibleRadius\r\n}\r\n\r\nfunction getSizeLabels(series) {\r\n    return series.reduce(function(res, singleSeries) {\r\n        var maxWidth = singleSeries.getVisiblePoints().reduce(function(width, point) {\r\n            var labelBBox = getLabelLayout(point);\r\n            if (labelBBox && labelBBox.width > width) {\r\n                width = labelBBox.width\r\n            }\r\n            return width\r\n        }, 0);\r\n        var rWidth = maxWidth;\r\n        if (maxWidth) {\r\n            res.outerLabelsCount++;\r\n            if (res.outerLabelsCount > 1) {\r\n                maxWidth += _consts.default.pieLabelSpacing\r\n            }\r\n            rWidth += _consts.default.pieLabelSpacing\r\n        }\r\n        res.sizes.push(maxWidth);\r\n        res.rSizes.push(rWidth);\r\n        res.common += maxWidth;\r\n        return res\r\n    }, {\r\n        sizes: [],\r\n        rSizes: [],\r\n        common: 0,\r\n        outerLabelsCount: 0\r\n    })\r\n}\r\n\r\nfunction correctLabelRadius(labelSizes, radius, series, canvas, averageWidthLabels, centerX) {\r\n    var curRadius;\r\n    var i;\r\n    var runningWidth = 0;\r\n    var sizes = labelSizes.sizes;\r\n    var rSizes = labelSizes.rSizes;\r\n    for (i = 0; i < series.length; i++) {\r\n        if (0 === sizes[i]) {\r\n            curRadius && (curRadius += rSizes[i - 1]);\r\n            continue\r\n        }\r\n        curRadius = floor(curRadius ? curRadius + rSizes[i - 1] : radius);\r\n        series[i].correctLabelRadius(curRadius);\r\n        runningWidth += averageWidthLabels || sizes[i];\r\n        rSizes[i] = averageWidthLabels || rSizes[i];\r\n        series[i].setVisibleArea({\r\n            left: floor(centerX - radius - runningWidth),\r\n            right: floor(canvas.width - (centerX + radius + runningWidth)),\r\n            top: canvas.top,\r\n            bottom: canvas.bottom,\r\n            width: canvas.width,\r\n            height: canvas.height\r\n        })\r\n    }\r\n}\r\n\r\nfunction getLengthFromCenter(x, y, paneCenterX, paneCenterY) {\r\n    return sqrt((x - paneCenterX) * (x - paneCenterX) + (y - paneCenterY) * (y - paneCenterY))\r\n}\r\n\r\nfunction getInnerRadius(series) {\r\n    var innerRadius;\r\n    if (\"pie\" === series.type) {\r\n        innerRadius = 0\r\n    } else {\r\n        innerRadius = (0, _type.isNumeric)(series.innerRadius) ? Number(series.innerRadius) : .5;\r\n        innerRadius = innerRadius < .2 ? .2 : innerRadius;\r\n        innerRadius = innerRadius > .8 ? .8 : innerRadius\r\n    }\r\n    return innerRadius\r\n}\r\n\r\nfunction LayoutManager() {}\r\n\r\nfunction getAverageLabelWidth(centerX, radius, canvas, sizeLabels) {\r\n    return (centerX - radius - RADIAL_LABEL_INDENT - canvas.left) / sizeLabels.outerLabelsCount\r\n}\r\n\r\nfunction getFullRadiusWithLabels(centerX, canvas, sizeLabels) {\r\n    return centerX - canvas.left - (sizeLabels.outerLabelsCount > 0 ? sizeLabels.common + RADIAL_LABEL_INDENT : 0)\r\n}\r\n\r\nfunction correctAvailableRadius(availableRadius, canvas, series, minR, paneCenterX, paneCenterY) {\r\n    var sizeLabels = getSizeLabels(series);\r\n    var averageWidthLabels;\r\n    var fullRadiusWithLabels = getFullRadiusWithLabels(paneCenterX, canvas, sizeLabels);\r\n    if (fullRadiusWithLabels < minR) {\r\n        availableRadius = minR;\r\n        averageWidthLabels = getAverageLabelWidth(paneCenterX, availableRadius, canvas, sizeLabels)\r\n    } else {\r\n        availableRadius = _min(getPieRadius(series, paneCenterX, paneCenterY, availableRadius, minR), fullRadiusWithLabels)\r\n    }\r\n    correctLabelRadius(sizeLabels, availableRadius + RADIAL_LABEL_INDENT, series, canvas, averageWidthLabels, paneCenterX);\r\n    return availableRadius\r\n}\r\n\r\nfunction toLayoutElementCoords(canvas) {\r\n    return new _layout_element.WrapperLayoutElement(null, {\r\n        x: canvas.left,\r\n        y: canvas.top,\r\n        width: canvas.width - canvas.left - canvas.right,\r\n        height: canvas.height - canvas.top - canvas.bottom\r\n    })\r\n}\r\nLayoutManager.prototype = {\r\n    constructor: LayoutManager,\r\n    setOptions: function(options) {\r\n        this._options = options\r\n    },\r\n    applyPieChartSeriesLayout: function(canvas, series, hideLayoutLabels) {\r\n        var paneSpaceHeight = canvas.height - canvas.top - canvas.bottom;\r\n        var paneSpaceWidth = canvas.width - canvas.left - canvas.right;\r\n        var paneCenterX = paneSpaceWidth / 2 + canvas.left;\r\n        var paneCenterY = paneSpaceHeight / 2 + canvas.top;\r\n        var piePercentage = this._options.piePercentage;\r\n        var availableRadius;\r\n        var minR;\r\n        if ((0, _type.isNumeric)(piePercentage)) {\r\n            availableRadius = minR = piePercentage * _min(canvas.height, canvas.width) / 2\r\n        } else {\r\n            availableRadius = _min(paneSpaceWidth, paneSpaceHeight) / 2;\r\n            minR = this._options.minPiePercentage * availableRadius\r\n        }\r\n        if (!hideLayoutLabels) {\r\n            availableRadius = correctAvailableRadius(availableRadius, canvas, series, minR, paneCenterX, paneCenterY)\r\n        }\r\n        return {\r\n            centerX: floor(paneCenterX),\r\n            centerY: floor(paneCenterY),\r\n            radiusInner: floor(availableRadius * getInnerRadius(series[0])),\r\n            radiusOuter: floor(availableRadius)\r\n        }\r\n    },\r\n    applyEqualPieChartLayout: function(series, layout) {\r\n        var radius = layout.radius;\r\n        return {\r\n            centerX: floor(layout.x),\r\n            centerY: floor(layout.y),\r\n            radiusInner: floor(radius * getInnerRadius(series[0])),\r\n            radiusOuter: floor(radius)\r\n        }\r\n    },\r\n    correctPieLabelRadius: function(series, layout, canvas) {\r\n        var sizeLabels = getSizeLabels(series);\r\n        var averageWidthLabels;\r\n        var radius = layout.radiusOuter + RADIAL_LABEL_INDENT;\r\n        var availableLabelWidth = layout.centerX - canvas.left - radius;\r\n        if (sizeLabels.common + RADIAL_LABEL_INDENT > availableLabelWidth) {\r\n            averageWidthLabels = getAverageLabelWidth(layout.centerX, layout.radiusOuter, canvas, sizeLabels)\r\n        }\r\n        correctLabelRadius(sizeLabels, radius, series, canvas, averageWidthLabels, layout.centerX)\r\n    },\r\n    needMoreSpaceForPanesCanvas: function(panes, rotated, fixedSizeCallback) {\r\n        var options = this._options;\r\n        var width = options.width;\r\n        var height = options.height;\r\n        var piePercentage = options.piePercentage;\r\n        var percentageIsValid = (0, _type.isNumeric)(piePercentage);\r\n        var needHorizontalSpace = 0;\r\n        var needVerticalSpace = 0;\r\n        panes.forEach(function(pane) {\r\n            var paneCanvas = pane.canvas;\r\n            var minSize = percentageIsValid ? _min(paneCanvas.width, paneCanvas.height) * piePercentage : void 0;\r\n            var paneSized = fixedSizeCallback ? fixedSizeCallback(pane) : {\r\n                width: false,\r\n                height: false\r\n            };\r\n            var needPaneHorizontalSpace = !paneSized.width ? (percentageIsValid ? minSize : width) - (paneCanvas.width - paneCanvas.left - paneCanvas.right) : 0;\r\n            var needPaneVerticalSpace = !paneSized.height ? (percentageIsValid ? minSize : height) - (paneCanvas.height - paneCanvas.top - paneCanvas.bottom) : 0;\r\n            if (rotated) {\r\n                needHorizontalSpace += needPaneHorizontalSpace > 0 ? needPaneHorizontalSpace : 0;\r\n                needVerticalSpace = _max(needPaneVerticalSpace > 0 ? needPaneVerticalSpace : 0, needVerticalSpace)\r\n            } else {\r\n                needHorizontalSpace = _max(needPaneHorizontalSpace > 0 ? needPaneHorizontalSpace : 0, needHorizontalSpace);\r\n                needVerticalSpace += needPaneVerticalSpace > 0 ? needPaneVerticalSpace : 0\r\n            }\r\n        });\r\n        return needHorizontalSpace > 0 || needVerticalSpace > 0 ? {\r\n            width: needHorizontalSpace,\r\n            height: needVerticalSpace\r\n        } : false\r\n    },\r\n    layoutInsideLegend: function(legend, canvas) {\r\n        var inverseAlign = {\r\n            left: \"right\",\r\n            right: \"left\",\r\n            top: \"bottom\",\r\n            bottom: \"top\",\r\n            center: \"center\"\r\n        };\r\n        var layoutOptions = legend.getLayoutOptions();\r\n        if (!layoutOptions) {\r\n            return\r\n        }\r\n        var position = layoutOptions.position;\r\n        var cutSide = layoutOptions.cutSide;\r\n        var my = {\r\n            horizontal: position.horizontal,\r\n            vertical: position.vertical\r\n        };\r\n        canvas[layoutOptions.cutLayoutSide] += \"horizontal\" === layoutOptions.cutSide ? layoutOptions.width : layoutOptions.height;\r\n        my[cutSide] = inverseAlign[my[cutSide]];\r\n        legend.position({\r\n            of: toLayoutElementCoords(canvas),\r\n            my: my,\r\n            at: position\r\n        })\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_work_week.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils.work_week\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space_week\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar WORK_WEEK_CLASS = \"dx-scheduler-work-space-work-week\";\r\nvar dayIndexes = [1, 2, 3, 4, 5];\r\nvar weekCounter = 0;\r\nvar SchedulerWorkSpaceWorkWeek = function(_SchedulerWorkSpaceWe) {\r\n    _inherits(SchedulerWorkSpaceWorkWeek, _SchedulerWorkSpaceWe);\r\n    var _super = _createSuper(SchedulerWorkSpaceWorkWeek);\r\n\r\n    function SchedulerWorkSpaceWorkWeek() {\r\n        var _this;\r\n        _classCallCheck(this, SchedulerWorkSpaceWorkWeek);\r\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n            args[_key] = arguments[_key]\r\n        }\r\n        _this = _super.call.apply(_super, [this].concat(args));\r\n        _this._isSkippedData = _utils.default.isDataOnWeekend;\r\n        _this._getWeekendsCount = _utils.default.getWeekendsCount;\r\n        return _this\r\n    }\r\n    _createClass(SchedulerWorkSpaceWorkWeek, [{\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return WORK_WEEK_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            return 5 * this.option(\"intervalCount\")\r\n        }\r\n    }, {\r\n        key: \"_firstDayOfWeek\",\r\n        value: function() {\r\n            return _utils.default.getFirstDayOfWeek(this.option(\"firstDayOfWeek\"))\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndex\",\r\n        value: function(headerIndex) {\r\n            var resultDate = new Date(this._firstViewDate);\r\n            if (headerIndex % this._getCellCount() === 0) {\r\n                weekCounter = 0\r\n            }\r\n            resultDate.setDate(this._firstViewDate.getDate() + headerIndex + weekCounter);\r\n            var index = resultDate.getDay();\r\n            while (dayIndexes.indexOf(index) === -1) {\r\n                resultDate.setDate(resultDate.getDate() + 1);\r\n                index = resultDate.getDay();\r\n                weekCounter++\r\n            }\r\n            return resultDate\r\n        }\r\n    }, {\r\n        key: \"_renderView\",\r\n        value: function() {\r\n            weekCounter = 0;\r\n            _get(_getPrototypeOf(SchedulerWorkSpaceWorkWeek.prototype), \"_renderView\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_setFirstViewDate\",\r\n        value: function() {\r\n            this._firstViewDate = _utils.default.getFirstViewDate(this._getViewStartByOptions(), this._firstDayOfWeek());\r\n            this._setStartDayHour(this._firstViewDate)\r\n        }\r\n    }, {\r\n        key: \"_getOffsetByCount\",\r\n        value: function(cellIndex) {\r\n            var cellsInGroup = this._getCellCount();\r\n            var inGroup = Math.floor(cellIndex / cellsInGroup);\r\n            cellIndex -= cellsInGroup * inGroup;\r\n            var weekendCount = Math.floor(cellIndex / 5);\r\n            return toMs(\"day\") * weekendCount * 2\r\n        }\r\n    }]);\r\n    return SchedulerWorkSpaceWorkWeek\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceWorkWeek\", SchedulerWorkSpaceWorkWeek);\r\nvar _default = SchedulerWorkSpaceWorkWeek;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/switch.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _utils = require(\"./widget/utils.ink_ripple\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _editor = _interopRequireDefault(require(\"./editor/editor\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _emitter = require(\"../events/core/emitter.feedback\");\r\nvar _position = require(\"../core/utils/position\");\r\nvar _fx = _interopRequireDefault(require(\"../animation/fx\"));\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _click = require(\"../events/click\");\r\nvar _swipeable = _interopRequireDefault(require(\"../events/gesture/swipeable\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SWITCH_CLASS = \"dx-switch\";\r\nvar SWITCH_WRAPPER_CLASS = SWITCH_CLASS + \"-wrapper\";\r\nvar SWITCH_CONTAINER_CLASS = SWITCH_CLASS + \"-container\";\r\nvar SWITCH_INNER_CLASS = SWITCH_CLASS + \"-inner\";\r\nvar SWITCH_HANDLE_CLASS = SWITCH_CLASS + \"-handle\";\r\nvar SWITCH_ON_VALUE_CLASS = SWITCH_CLASS + \"-on-value\";\r\nvar SWITCH_ON_CLASS = SWITCH_CLASS + \"-on\";\r\nvar SWITCH_OFF_CLASS = SWITCH_CLASS + \"-off\";\r\nvar SWITCH_ANIMATION_DURATION = 100;\r\nvar Switch = _editor.default.inherit({\r\n    _supportedKeys: function() {\r\n        var isRTL = this.option(\"rtlEnabled\");\r\n        var click = function(e) {\r\n            e.preventDefault();\r\n            this._clickAction({\r\n                event: e\r\n            })\r\n        };\r\n        var move = function(value, e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            this._animateValue(value)\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            space: click,\r\n            enter: click,\r\n            leftArrow: move.bind(this, isRTL ? true : false),\r\n            rightArrow: move.bind(this, isRTL ? false : true)\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: true,\r\n            activeStateEnabled: true,\r\n            switchedOnText: _message.default.format(\"dxSwitch-switchedOnText\"),\r\n            switchedOffText: _message.default.format(\"dxSwitch-switchedOffText\"),\r\n            value: false,\r\n            useInkRipple: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }])\r\n    },\r\n    _feedbackHideTimeout: 0,\r\n    _animating: false,\r\n    _initMarkup: function() {\r\n        this._renderContainers();\r\n        this.option(\"useInkRipple\") && this._renderInkRipple();\r\n        this.$element().addClass(SWITCH_CLASS).append(this._$switchWrapper);\r\n        this._renderSubmitElement();\r\n        this._renderClick();\r\n        this.setAria(\"role\", \"button\");\r\n        this._renderSwipeable();\r\n        this.callBase();\r\n        this._renderSwitchInner();\r\n        this._renderLabels();\r\n        this._renderValue()\r\n    },\r\n    _getInnerOffset: function(value, offset) {\r\n        var ratio = (offset - this._offsetDirection() * Number(!value)) / 2;\r\n        return 100 * ratio + \"%\"\r\n    },\r\n    _getHandleOffset: function(value, offset) {\r\n        if (this.option(\"rtlEnabled\")) {\r\n            value = !value\r\n        }\r\n        if (value) {\r\n            var calcValue = -100 + 100 * -offset;\r\n            return calcValue + \"%\"\r\n        } else {\r\n            return 100 * -offset + \"%\"\r\n        }\r\n    },\r\n    _renderSwitchInner: function() {\r\n        this._$switchInner = (0, _renderer.default)(\"<div>\").addClass(SWITCH_INNER_CLASS).appendTo(this._$switchContainer);\r\n        this._$handle = (0, _renderer.default)(\"<div>\").addClass(SWITCH_HANDLE_CLASS).appendTo(this._$switchInner)\r\n    },\r\n    _renderLabels: function() {\r\n        this._$labelOn = (0, _renderer.default)(\"<div>\").addClass(SWITCH_ON_CLASS).prependTo(this._$switchInner);\r\n        this._$labelOff = (0, _renderer.default)(\"<div>\").addClass(SWITCH_OFF_CLASS).appendTo(this._$switchInner);\r\n        this._setLabelsText()\r\n    },\r\n    _renderContainers: function() {\r\n        this._$switchContainer = (0, _renderer.default)(\"<div>\").addClass(SWITCH_CONTAINER_CLASS);\r\n        this._$switchWrapper = (0, _renderer.default)(\"<div>\").addClass(SWITCH_WRAPPER_CLASS).append(this._$switchContainer)\r\n    },\r\n    _renderSwipeable: function() {\r\n        this._createComponent(this.$element(), _swipeable.default, {\r\n            elastic: false,\r\n            immediate: true,\r\n            onStart: this._swipeStartHandler.bind(this),\r\n            onUpdated: this._swipeUpdateHandler.bind(this),\r\n            onEnd: this._swipeEndHandler.bind(this),\r\n            itemSizeFunc: this._getItemSizeFunc.bind(this)\r\n        })\r\n    },\r\n    _getItemSizeFunc: function() {\r\n        return this._$switchContainer.outerWidth(true) - (0, _position.getBoundingRect)(this._$handle.get(0)).width\r\n    },\r\n    _renderSubmitElement: function() {\r\n        this._$submitElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n    },\r\n    _getSubmitElement: function() {\r\n        return this._$submitElement\r\n    },\r\n    _renderInkRipple: function() {\r\n        this._inkRipple = (0, _utils.render)({\r\n            waveSizeCoefficient: 1.7,\r\n            isCentered: true,\r\n            useHoldAnimation: false,\r\n            wavesNumber: 2\r\n        })\r\n    },\r\n    _renderInkWave: function(element, dxEvent, doRender, waveIndex) {\r\n        if (!this._inkRipple) {\r\n            return\r\n        }\r\n        var config = {\r\n            element: element,\r\n            event: dxEvent,\r\n            wave: waveIndex\r\n        };\r\n        if (doRender) {\r\n            this._inkRipple.showWave(config)\r\n        } else {\r\n            this._inkRipple.hideWave(config)\r\n        }\r\n    },\r\n    _updateFocusState: function(e, value) {\r\n        this.callBase.apply(this, arguments);\r\n        this._renderInkWave(this._$handle, e, value, 0)\r\n    },\r\n    _toggleActiveState: function($element, value, e) {\r\n        this.callBase.apply(this, arguments);\r\n        this._renderInkWave(this._$handle, e, value, 1)\r\n    },\r\n    _offsetDirection: function() {\r\n        return this.option(\"rtlEnabled\") ? -1 : 1\r\n    },\r\n    _renderPosition: function(state, swipeOffset) {\r\n        var innerOffset = this._getInnerOffset(state, swipeOffset);\r\n        var handleOffset = this._getHandleOffset(state, swipeOffset);\r\n        this._$switchInner.css(\"transform\", \" translateX(\" + innerOffset + \")\");\r\n        this._$handle.css(\"transform\", \" translateX(\" + handleOffset + \")\")\r\n    },\r\n    _validateValue: function() {\r\n        var check = this.option(\"value\");\r\n        if (\"boolean\" !== typeof check) {\r\n            this._options.silent(\"value\", !!check)\r\n        }\r\n    },\r\n    _renderClick: function() {\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        var $element = this.$element();\r\n        this._clickAction = this._createAction(this._clickHandler.bind(this));\r\n        _events_engine.default.off($element, eventName);\r\n        _events_engine.default.on($element, eventName, function(e) {\r\n            this._clickAction({\r\n                event: e\r\n            })\r\n        }.bind(this))\r\n    },\r\n    _clickHandler: function(args) {\r\n        var e = args.event;\r\n        this._saveValueChangeEvent(e);\r\n        if (this._animating || this._swiping) {\r\n            return\r\n        }\r\n        this._animateValue(!this.option(\"value\"))\r\n    },\r\n    _animateValue: function(value) {\r\n        var startValue = this.option(\"value\");\r\n        var endValue = value;\r\n        if (startValue === endValue) {\r\n            return\r\n        }\r\n        this._animating = true;\r\n        var fromInnerOffset = this._getInnerOffset(startValue, 0);\r\n        var toInnerOffset = this._getInnerOffset(endValue, 0);\r\n        var fromHandleOffset = this._getHandleOffset(startValue, 0);\r\n        var toHandleOffset = this._getHandleOffset(endValue, 0);\r\n        var that = this;\r\n        var fromInnerConfig = {};\r\n        var toInnerConfig = {};\r\n        var fromHandleConfig = {};\r\n        var toHandlerConfig = {};\r\n        fromInnerConfig.transform = \" translateX(\" + fromInnerOffset + \")\";\r\n        toInnerConfig.transform = \" translateX(\" + toInnerOffset + \")\";\r\n        fromHandleConfig.transform = \" translateX(\" + fromHandleOffset + \")\";\r\n        toHandlerConfig.transform = \" translateX(\" + toHandleOffset + \")\";\r\n        this.$element().toggleClass(SWITCH_ON_VALUE_CLASS, endValue);\r\n        _fx.default.animate(this._$handle, {\r\n            from: fromHandleConfig,\r\n            to: toHandlerConfig,\r\n            duration: SWITCH_ANIMATION_DURATION\r\n        });\r\n        _fx.default.animate(this._$switchInner, {\r\n            from: fromInnerConfig,\r\n            to: toInnerConfig,\r\n            duration: SWITCH_ANIMATION_DURATION,\r\n            complete: function() {\r\n                that._animating = false;\r\n                that.option(\"value\", endValue)\r\n            }\r\n        })\r\n    },\r\n    _swipeStartHandler: function(e) {\r\n        var state = this.option(\"value\");\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var maxOffOffset = rtlEnabled ? 0 : 1;\r\n        var maxOnOffset = rtlEnabled ? 1 : 0;\r\n        e.event.maxLeftOffset = state ? maxOffOffset : maxOnOffset;\r\n        e.event.maxRightOffset = state ? maxOnOffset : maxOffOffset;\r\n        this._swiping = true;\r\n        this._feedbackDeferred = new _deferred.Deferred;\r\n        (0, _emitter.lock)(this._feedbackDeferred);\r\n        this._toggleActiveState(this.$element(), this.option(\"activeStateEnabled\"))\r\n    },\r\n    _swipeUpdateHandler: function(e) {\r\n        this._renderPosition(this.option(\"value\"), e.event.offset)\r\n    },\r\n    _swipeEndHandler: function(e) {\r\n        var that = this;\r\n        var offsetDirection = this._offsetDirection();\r\n        var toInnerConfig = {};\r\n        var toHandleConfig = {};\r\n        var innerOffset = this._getInnerOffset(that.option(\"value\"), e.event.targetOffset);\r\n        var handleOffset = this._getHandleOffset(that.option(\"value\"), e.event.targetOffset);\r\n        toInnerConfig.transform = \" translateX(\" + innerOffset + \")\";\r\n        toHandleConfig.transform = \" translateX(\" + handleOffset + \")\";\r\n        _fx.default.animate(this._$handle, {\r\n            to: toHandleConfig,\r\n            duration: SWITCH_ANIMATION_DURATION\r\n        });\r\n        _fx.default.animate(this._$switchInner, {\r\n            to: toInnerConfig,\r\n            duration: SWITCH_ANIMATION_DURATION,\r\n            complete: function() {\r\n                that._swiping = false;\r\n                var pos = that.option(\"value\") + offsetDirection * e.event.targetOffset;\r\n                that._saveValueChangeEvent(e.event);\r\n                that.option(\"value\", Boolean(pos));\r\n                that._feedbackDeferred.resolve();\r\n                that._toggleActiveState(that.$element(), false)\r\n            }\r\n        })\r\n    },\r\n    _renderValue: function() {\r\n        this._validateValue();\r\n        var val = this.option(\"value\");\r\n        this._renderPosition(val, 0);\r\n        this.$element().toggleClass(SWITCH_ON_VALUE_CLASS, val);\r\n        this._getSubmitElement().val(val);\r\n        this.setAria({\r\n            pressed: val,\r\n            label: val ? this.option(\"switchedOnText\") : this.option(\"switchedOffText\")\r\n        })\r\n    },\r\n    _setLabelsText: function() {\r\n        this._$labelOn && this._$labelOn.text(this.option(\"switchedOnText\"));\r\n        this._$labelOff && this._$labelOff.text(this.option(\"switchedOffText\"))\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this.repaint()\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"useInkRipple\":\r\n                this._invalidate();\r\n                break;\r\n            case \"width\":\r\n                delete this._marginBound;\r\n                this._refresh();\r\n                break;\r\n            case \"switchedOnText\":\r\n            case \"switchedOffText\":\r\n                this._setLabelsText();\r\n                break;\r\n            case \"value\":\r\n                this._renderValue();\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clean: function() {\r\n        delete this._inkRipple;\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxSwitch\", Switch);\r\nvar _default = Switch;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator_registry.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.register = register;\r\nexports.registry = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar registry = {};\r\nexports.registry = registry;\r\n\r\nfunction register(option, type, decoratorClass) {\r\n    var decoratorsRegistry = registry;\r\n    var decoratorConfig = {};\r\n    decoratorConfig[option] = decoratorsRegistry[option] ? decoratorsRegistry[option] : {};\r\n    decoratorConfig[option][type] = decoratorClass;\r\n    decoratorsRegistry = (0, _extend.extend)(decoratorsRegistry, decoratorConfig)\r\n}\r\n","/**\r\n * DevExtreme (data/data_source/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.normalizeDataSourceOptions = exports.normalizeLoadResult = exports.mapDataRespectingGrouping = exports.normalizeStoreLoadOptionAccessorArguments = exports.isPending = exports.CANCELED_TOKEN = void 0;\r\nvar _ajax = _interopRequireDefault(require(\"../../core/utils/ajax\"));\r\nvar _abstract_store = _interopRequireDefault(require(\"../abstract_store\"));\r\nvar _array_store = _interopRequireDefault(require(\"../array_store\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _custom_store = _interopRequireDefault(require(\"../custom_store\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = _interopRequireDefault(require(\"../utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\nvar CANCELED_TOKEN = \"canceled\";\r\nexports.CANCELED_TOKEN = CANCELED_TOKEN;\r\nvar isPending = function(deferred) {\r\n    return \"pending\" === deferred.state()\r\n};\r\nexports.isPending = isPending;\r\nvar normalizeStoreLoadOptionAccessorArguments = function(originalArguments) {\r\n    switch (originalArguments.length) {\r\n        case 0:\r\n            return;\r\n        case 1:\r\n            return originalArguments[0]\r\n    }\r\n    return [].slice.call(originalArguments)\r\n};\r\nexports.normalizeStoreLoadOptionAccessorArguments = normalizeStoreLoadOptionAccessorArguments;\r\nvar mapGroup = function(group, level, mapper) {\r\n    return (0, _iterator.map)(group, function(item) {\r\n        var restItem = (item.items, _objectWithoutProperties(item, [\"items\"]));\r\n        return _objectSpread(_objectSpread({}, restItem), {}, {\r\n            items: mapRecursive(item.items, level - 1, mapper)\r\n        })\r\n    })\r\n};\r\nvar mapRecursive = function(items, level, mapper) {\r\n    if (!Array.isArray(items)) {\r\n        return items\r\n    }\r\n    return level ? mapGroup(items, level, mapper) : (0, _iterator.map)(items, mapper)\r\n};\r\nvar mapDataRespectingGrouping = function(items, mapper, groupInfo) {\r\n    var level = groupInfo ? _utils.default.normalizeSortingInfo(groupInfo).length : 0;\r\n    return mapRecursive(items, level, mapper)\r\n};\r\nexports.mapDataRespectingGrouping = mapDataRespectingGrouping;\r\nvar normalizeLoadResult = function(data, extra) {\r\n    var _data;\r\n    if (null !== (_data = data) && void 0 !== _data && _data.data) {\r\n        extra = data;\r\n        data = data.data\r\n    }\r\n    if (!Array.isArray(data)) {\r\n        data = [data]\r\n    }\r\n    return {\r\n        data: data,\r\n        extra: extra\r\n    }\r\n};\r\nexports.normalizeLoadResult = normalizeLoadResult;\r\nvar createCustomStoreFromLoadFunc = function(options) {\r\n    var storeConfig = {};\r\n    (0, _iterator.each)([\"useDefaultSearch\", \"key\", \"load\", \"loadMode\", \"cacheRawData\", \"byKey\", \"lookup\", \"totalCount\", \"insert\", \"update\", \"remove\"], function() {\r\n        storeConfig[this] = options[this];\r\n        delete options[this]\r\n    });\r\n    return new _custom_store.default(storeConfig)\r\n};\r\nvar createStoreFromConfig = function(storeConfig) {\r\n    var alias = storeConfig.type;\r\n    delete storeConfig.type;\r\n    return _abstract_store.default.create(alias, storeConfig)\r\n};\r\nvar createCustomStoreFromUrl = function(url, normalizationOptions) {\r\n    return new _custom_store.default({\r\n        load: function() {\r\n            return _ajax.default.sendRequest({\r\n                url: url,\r\n                dataType: \"json\"\r\n            })\r\n        },\r\n        loadMode: null === normalizationOptions || void 0 === normalizationOptions ? void 0 : normalizationOptions.fromUrlLoadMode\r\n    })\r\n};\r\nvar normalizeDataSourceOptions = function(options, normalizationOptions) {\r\n    var store;\r\n    if (\"string\" === typeof options) {\r\n        options = {\r\n            paginate: false,\r\n            store: createCustomStoreFromUrl(options, normalizationOptions)\r\n        }\r\n    }\r\n    if (void 0 === options) {\r\n        options = []\r\n    }\r\n    if (Array.isArray(options) || options instanceof _abstract_store.default) {\r\n        options = {\r\n            store: options\r\n        }\r\n    } else {\r\n        options = (0, _extend.extend)({}, options)\r\n    }\r\n    if (void 0 === options.store) {\r\n        options.store = []\r\n    }\r\n    store = options.store;\r\n    if (\"load\" in options) {\r\n        store = createCustomStoreFromLoadFunc(options)\r\n    } else {\r\n        if (Array.isArray(store)) {\r\n            store = new _array_store.default(store)\r\n        } else {\r\n            if ((0, _type.isPlainObject)(store)) {\r\n                store = createStoreFromConfig((0, _extend.extend)({}, store))\r\n            }\r\n        }\r\n    }\r\n    options.store = store;\r\n    return options\r\n};\r\nexports.normalizeDataSourceOptions = normalizeDataSourceOptions;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiSchedulerWork_space = _interopRequireDefault(require(\"./ui.scheduler.work_space.indicator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"../ui.scheduler.table_creator\"));\r\nvar _uiSchedulerCurrent_time_shader = _interopRequireDefault(require(\"../shaders/ui.scheduler.current_time_shader.horizontal\"));\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar tableCreator = _uiScheduler.default.tableCreator;\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline\";\r\nvar GROUP_TABLE_CLASS = \"dx-scheduler-group-table\";\r\nvar HORIZONTAL_GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-horizontal-grouped\";\r\nvar HEADER_PANEL_CELL_CLASS = \"dx-scheduler-header-panel-cell\";\r\nvar HEADER_PANEL_WEEK_CELL_CLASS = \"dx-scheduler-header-panel-week-cell\";\r\nvar HEADER_ROW_CLASS = \"dx-scheduler-header-row\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar DATE_TABLE_CELL_BORDER = 1;\r\nvar DATE_TABLE_HEADER_MARGIN = 10;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerTimeline = function(_SchedulerWorkSpace) {\r\n    _inherits(SchedulerTimeline, _SchedulerWorkSpace);\r\n    var _super = _createSuper(SchedulerTimeline);\r\n\r\n    function SchedulerTimeline() {\r\n        _classCallCheck(this, SchedulerTimeline);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerTimeline, [{\r\n        key: \"_init\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerTimeline.prototype), \"_init\", this).call(this);\r\n            this.$element().addClass(TIMELINE_CLASS);\r\n            this._$sidebarTable = (0, _renderer.default)(\"<div>\").addClass(GROUP_TABLE_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getCellFromNextRow\",\r\n        value: function(direction, isMultiSelection) {\r\n            if (!isMultiSelection) {\r\n                return _get(_getPrototypeOf(SchedulerTimeline.prototype), \"_getCellFromNextRow\", this).call(this, direction, isMultiSelection)\r\n            }\r\n            return this._$focusedCell\r\n        }\r\n    }, {\r\n        key: \"_getDefaultGroupStrategy\",\r\n        value: function() {\r\n            return \"vertical\"\r\n        }\r\n    }, {\r\n        key: \"_toggleGroupingDirectionClass\",\r\n        value: function() {\r\n            this.$element().toggleClass(HORIZONTAL_GROUPED_WORKSPACE_CLASS, this._isHorizontalGroupedWorkSpace())\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(SchedulerTimeline.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                groupOrientation: \"vertical\"\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getRowCount\",\r\n        value: function() {\r\n            return 1\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            return this._getCellCountInDay() * this.option(\"intervalCount\")\r\n        }\r\n    }, {\r\n        key: \"getGroupTableWidth\",\r\n        value: function() {\r\n            return this._$sidebarTable ? this._$sidebarTable.outerWidth() : 0\r\n        }\r\n    }, {\r\n        key: \"_getTotalRowCount\",\r\n        value: function(groupCount) {\r\n            if (this._isHorizontalGroupedWorkSpace()) {\r\n                return this._getRowCount()\r\n            } else {\r\n                groupCount = groupCount || 1;\r\n                return this._getRowCount() * groupCount\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getDateForHeaderText\",\r\n        value: function(index) {\r\n            var newFirstViewDate = _utils.default.getDateWithoutTimezoneChange(this._firstViewDate);\r\n            return this._getDateByIndexCore(newFirstViewDate, index)\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndexCore\",\r\n        value: function(date, index) {\r\n            var result = new Date(date);\r\n            var dayIndex = Math.floor(index / this._getCellCountInDay());\r\n            result.setTime(date.getTime() + this._calculateCellIndex(0, index) * this._getInterval() + dayIndex * this._getHiddenInterval());\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndex\",\r\n        value: function(index) {\r\n            var newFirstViewDate = _utils.default.getDateWithoutTimezoneChange(this._firstViewDate);\r\n            var result = this._getDateByIndexCore(newFirstViewDate, index);\r\n            if (_utils.default.isTimezoneChangeInDate(this._firstViewDate)) {\r\n                result.setDate(result.getDate() - 1)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getFormat\",\r\n        value: function() {\r\n            return \"shorttime\"\r\n        }\r\n    }, {\r\n        key: \"_needApplyLastGroupCellClass\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_calculateHiddenInterval\",\r\n        value: function(rowIndex, cellIndex) {\r\n            var dayIndex = Math.floor(cellIndex / this._getCellCountInDay());\r\n            return dayIndex * this._getHiddenInterval()\r\n        }\r\n    }, {\r\n        key: \"_getMillisecondsOffset\",\r\n        value: function(rowIndex, cellIndex) {\r\n            cellIndex = this._calculateCellIndex(rowIndex, cellIndex);\r\n            return this._getInterval() * cellIndex + this._calculateHiddenInterval(rowIndex, cellIndex)\r\n        }\r\n    }, {\r\n        key: \"_createWorkSpaceElements\",\r\n        value: function() {\r\n            this._createWorkSpaceScrollableElements()\r\n        }\r\n    }, {\r\n        key: \"_getWorkSpaceHeight\",\r\n        value: function() {\r\n            if (this.option(\"crossScrollingEnabled\")) {\r\n                return (0, _position.getBoundingRect)(this._$dateTable.get(0)).height\r\n            }\r\n            return (0, _position.getBoundingRect)(this.$element().get(0)).height\r\n        }\r\n    }, {\r\n        key: \"_dateTableScrollableConfig\",\r\n        value: function() {\r\n            var config = _get(_getPrototypeOf(SchedulerTimeline.prototype), \"_dateTableScrollableConfig\", this).call(this);\r\n            var timelineConfig = {\r\n                direction: HORIZONTAL\r\n            };\r\n            return this.option(\"crossScrollingEnabled\") ? config : (0, _extend.extend)(config, timelineConfig)\r\n        }\r\n    }, {\r\n        key: \"_needCreateCrossScrolling\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_headerScrollableConfig\",\r\n        value: function() {\r\n            var config = _get(_getPrototypeOf(SchedulerTimeline.prototype), \"_headerScrollableConfig\", this).call(this);\r\n            return (0, _extend.extend)(config, {\r\n                scrollByContent: true\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_renderTimePanel\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_renderAllDayPanel\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_getTableAllDay\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_getDateHeaderTemplate\",\r\n        value: function() {\r\n            return this.option(\"timeCellTemplate\")\r\n        }\r\n    }, {\r\n        key: \"_toggleAllDayVisibility\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_changeAllDayVisibility\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"supportAllDayRow\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_getGroupHeaderContainer\",\r\n        value: function() {\r\n            if (this._isHorizontalGroupedWorkSpace()) {\r\n                return this._$thead\r\n            }\r\n            return this._$sidebarTable\r\n        }\r\n    }, {\r\n        key: \"_insertAllDayRowsIntoDateTable\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_createAllDayPanelElements\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_renderDateHeader\",\r\n        value: function() {\r\n            var $headerRow = _get(_getPrototypeOf(SchedulerTimeline.prototype), \"_renderDateHeader\", this).call(this);\r\n            if (this._needRenderWeekHeader()) {\r\n                var firstViewDate = new Date(this._firstViewDate);\r\n                var $cells = [];\r\n                var colspan = this._getCellCountInDay();\r\n                var cellTemplate = this.option(\"dateCellTemplate\");\r\n                for (var i = 0; i < this._getWeekDuration() * this.option(\"intervalCount\"); i++) {\r\n                    var $th = (0, _renderer.default)(\"<th>\");\r\n                    var text = this._formatWeekdayAndDay(firstViewDate);\r\n                    if (cellTemplate) {\r\n                        var templateOptions = {\r\n                            model: {\r\n                                text: text,\r\n                                date: new Date(firstViewDate)\r\n                            },\r\n                            container: $th,\r\n                            index: i\r\n                        };\r\n                        cellTemplate.render(templateOptions)\r\n                    } else {\r\n                        $th.text(text)\r\n                    }\r\n                    $th.addClass(HEADER_PANEL_CELL_CLASS).addClass(HEADER_PANEL_WEEK_CELL_CLASS).attr(\"colSpan\", colspan);\r\n                    $cells.push($th);\r\n                    this._incrementDate(firstViewDate)\r\n                }\r\n                var $row = (0, _renderer.default)(\"<tr>\").addClass(HEADER_ROW_CLASS).append($cells);\r\n                $headerRow.before($row)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_needRenderWeekHeader\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_incrementDate\",\r\n        value: function(date) {\r\n            date.setDate(date.getDate() + 1)\r\n        }\r\n    }, {\r\n        key: \"_getWeekDuration\",\r\n        value: function() {\r\n            return 1\r\n        }\r\n    }, {\r\n        key: \"_renderView\",\r\n        value: function() {\r\n            this._setFirstViewDate();\r\n            var groupCellTemplates = this._renderGroupHeader();\r\n            this._renderDateHeader();\r\n            this._renderAllDayPanel();\r\n            this._renderTimePanel();\r\n            this._renderDateTable();\r\n            this._shader = new _uiSchedulerCurrent_time_shader.default(this);\r\n            this._updateGroupTableHeight();\r\n            this._$sidebarTable.appendTo(this._sidebarScrollable.$content());\r\n            this._applyCellTemplates(groupCellTemplates)\r\n        }\r\n    }, {\r\n        key: \"_setHorizontalGroupHeaderCellsHeight\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"getIndicationCellCount\",\r\n        value: function() {\r\n            var timeDiff = this._getTimeDiff();\r\n            return this._calculateDurationInCells(timeDiff)\r\n        }\r\n    }, {\r\n        key: \"_getTimeDiff\",\r\n        value: function() {\r\n            var today = this._getToday();\r\n            var date = this._getIndicationFirstViewDate();\r\n            return today.getTime() - date.getTime()\r\n        }\r\n    }, {\r\n        key: \"_calculateDurationInCells\",\r\n        value: function(timeDiff) {\r\n            var today = this._getToday();\r\n            var differenceInDays = Math.floor(timeDiff / toMs(\"day\"));\r\n            var duration = (timeDiff - differenceInDays * toMs(\"day\") - this.option(\"startDayHour\") * toMs(\"hour\")) / this.getCellDuration();\r\n            if (today.getHours() > this.option(\"endDayHour\")) {\r\n                duration = this._getCellCountInDay()\r\n            }\r\n            if (duration < 0) {\r\n                duration = 0\r\n            }\r\n            return differenceInDays * this._getCellCountInDay() + duration\r\n        }\r\n    }, {\r\n        key: \"getIndicationWidth\",\r\n        value: function() {\r\n            if (this.isGroupedByDate()) {\r\n                var cellCount = this.getIndicationCellCount();\r\n                var integerPart = Math.floor(cellCount);\r\n                var fractionPart = cellCount - integerPart;\r\n                return this.getCellWidth() * (integerPart * this._getGroupCount() + fractionPart)\r\n            } else {\r\n                return this.getIndicationCellCount() * this.getCellWidth()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderIndicator\",\r\n        value: function(height, rtlOffset, $container, groupCount) {\r\n            var $indicator;\r\n            var width = this.getIndicationWidth();\r\n            if (\"vertical\" === this.option(\"groupOrientation\")) {\r\n                $indicator = this._createIndicator($container);\r\n                $indicator.height((0, _position.getBoundingRect)($container.get(0)).height);\r\n                $indicator.css(\"left\", rtlOffset ? rtlOffset - width : width)\r\n            } else {\r\n                for (var i = 0; i < groupCount; i++) {\r\n                    var offset = this.isGroupedByDate() ? i * this.getCellWidth() : this._getCellCount() * this.getCellWidth() * i;\r\n                    $indicator = this._createIndicator($container);\r\n                    $indicator.height((0, _position.getBoundingRect)($container.get(0)).height);\r\n                    $indicator.css(\"left\", rtlOffset ? rtlOffset - width - offset : width + offset)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isVerticalShader\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_isCurrentTimeHeaderCell\",\r\n        value: function(headerIndex) {\r\n            var result = false;\r\n            if (this.isIndicationOnView()) {\r\n                var date = this._getDateByIndex(headerIndex);\r\n                var now = this._getToday();\r\n                date = new Date(date);\r\n                if (_date.default.sameDate(now, date)) {\r\n                    var startCellDate = new Date(date);\r\n                    var endCellDate = new Date(date);\r\n                    endCellDate = endCellDate.setMilliseconds(date.getMilliseconds() + this.getCellDuration());\r\n                    result = _date.default.dateInRange(now, startCellDate, endCellDate)\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_cleanView\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerTimeline.prototype), \"_cleanView\", this).call(this);\r\n            this._$sidebarTable.empty()\r\n        }\r\n    }, {\r\n        key: \"_visibilityChanged\",\r\n        value: function(visible) {\r\n            _get(_getPrototypeOf(SchedulerTimeline.prototype), \"_visibilityChanged\", this).call(this, visible)\r\n        }\r\n    }, {\r\n        key: \"_setTableSizes\",\r\n        value: function() {\r\n            var cellHeight = this.getCellHeight();\r\n            var minHeight = this._getWorkSpaceMinHeight();\r\n            var $groupCells = this._$sidebarTable.find(\"tr\");\r\n            var height = cellHeight * $groupCells.length;\r\n            if (height < minHeight) {\r\n                height = minHeight\r\n            }\r\n            this._$sidebarTable.height(height);\r\n            this._$dateTable.height(height);\r\n            _get(_getPrototypeOf(SchedulerTimeline.prototype), \"_setTableSizes\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_getWorkSpaceMinHeight\",\r\n        value: function() {\r\n            var minHeight = this._getWorkSpaceHeight();\r\n            var workspaceContainerHeight = this.$element().outerHeight(true) - this.getHeaderPanelHeight() - 2 * DATE_TABLE_CELL_BORDER - DATE_TABLE_HEADER_MARGIN;\r\n            if (minHeight < workspaceContainerHeight) {\r\n                minHeight = workspaceContainerHeight\r\n            }\r\n            return minHeight\r\n        }\r\n    }, {\r\n        key: \"_makeGroupRows\",\r\n        value: function(groups, groupByDate) {\r\n            var tableCreatorStrategy = \"vertical\" === this.option(\"groupOrientation\") ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;\r\n            return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {\r\n                groupRowClass: this._getGroupRowClass(),\r\n                groupHeaderRowClass: this._getGroupRowClass(),\r\n                groupHeaderClass: this._getGroupHeaderClass.bind(this),\r\n                groupHeaderContentClass: this._getGroupHeaderContentClass()\r\n            }, this._getCellCount() || 1, this.option(\"resourceCellTemplate\"), this._getTotalRowCount(this._getGroupCount()), groupByDate)\r\n        }\r\n    }, {\r\n        key: \"_ensureGroupHeaderCellsHeight\",\r\n        value: function(cellHeight) {\r\n            var minCellHeight = this._calculateMinCellHeight();\r\n            if (cellHeight < minCellHeight) {\r\n                return minCellHeight\r\n            }\r\n            return cellHeight\r\n        }\r\n    }, {\r\n        key: \"_calculateMinCellHeight\",\r\n        value: function() {\r\n            var dateTable = this._getDateTable();\r\n            var dateTableRowSelector = \".\" + this._getDateTableRowClass();\r\n            return (0, _position.getBoundingRect)(dateTable).height / dateTable.find(dateTableRowSelector).length - 2 * DATE_TABLE_CELL_BORDER\r\n        }\r\n    }, {\r\n        key: \"_getCellCoordinatesByIndex\",\r\n        value: function(index) {\r\n            return {\r\n                cellIndex: index % this._getCellCount(),\r\n                rowIndex: 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getCellByCoordinates\",\r\n        value: function(cellCoordinates, groupIndex) {\r\n            var indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex);\r\n            return this._$dateTable.find(\"tr\").eq(indexes.rowIndex).find(\"td\").eq(indexes.cellIndex)\r\n        }\r\n    }, {\r\n        key: \"_getWorkSpaceWidth\",\r\n        value: function() {\r\n            return this._$dateTable.outerWidth(true)\r\n        }\r\n    }, {\r\n        key: \"_getIndicationFirstViewDate\",\r\n        value: function() {\r\n            return _date.default.trimTime(new Date(this._firstViewDate))\r\n        }\r\n    }, {\r\n        key: \"_getIntervalBetween\",\r\n        value: function(currentDate, allDay) {\r\n            var startDayHour = this.option(\"startDayHour\");\r\n            var endDayHour = this.option(\"endDayHour\");\r\n            var firstViewDate = this.getStartViewDate();\r\n            var firstViewDateTime = firstViewDate.getTime();\r\n            var hiddenInterval = (24 - endDayHour + startDayHour) * toMs(\"hour\");\r\n            var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n            var apptStart = currentDate.getTime();\r\n            var fullInterval = apptStart - firstViewDateTime - timeZoneOffset;\r\n            var fullDays = Math.floor(fullInterval / toMs(\"day\"));\r\n            var tailDuration = fullInterval - fullDays * toMs(\"day\");\r\n            var tailDelta = 0;\r\n            var cellCount = this._getCellCountInDay() * (fullDays - this._getWeekendsCount(fullDays));\r\n            var gapBeforeAppt = apptStart - _date.default.trimTime(new Date(currentDate)).getTime();\r\n            var result = cellCount * this.option(\"hoursInterval\") * toMs(\"hour\");\r\n            if (!allDay) {\r\n                if (currentDate.getHours() < startDayHour) {\r\n                    tailDelta = tailDuration - hiddenInterval + gapBeforeAppt\r\n                } else {\r\n                    if (currentDate.getHours() >= startDayHour && currentDate.getHours() < endDayHour) {\r\n                        tailDelta = tailDuration\r\n                    } else {\r\n                        if (currentDate.getHours() >= startDayHour && currentDate.getHours() >= endDayHour) {\r\n                            tailDelta = tailDuration - (gapBeforeAppt - endDayHour * toMs(\"hour\"))\r\n                        } else {\r\n                            if (!fullDays) {\r\n                                result = fullInterval\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                result += tailDelta\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getWeekendsCount\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"getAllDayContainer\",\r\n        value: function() {\r\n            return null\r\n        }\r\n    }, {\r\n        key: \"getTimePanelWidth\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"getPositionShift\",\r\n        value: function(timeShift) {\r\n            var positionShift = _get(_getPrototypeOf(SchedulerTimeline.prototype), \"getPositionShift\", this).call(this, timeShift);\r\n            var left = this.getCellWidth() * timeShift;\r\n            if (this.option(\"rtlEnabled\")) {\r\n                left *= -1\r\n            }\r\n            left += positionShift.left;\r\n            return {\r\n                top: 0,\r\n                left: left,\r\n                cellPosition: left\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getVisibleBounds\",\r\n        value: function() {\r\n            var isRtl = this.option(\"rtlEnabled\");\r\n            var result = {};\r\n            var $scrollable = this.getScrollable().$element();\r\n            var cellWidth = this.getCellWidth();\r\n            var scrollableOffset = isRtl ? this.getScrollableOuterWidth() - this.getScrollableScrollLeft() : this.getScrollableScrollLeft();\r\n            var scrolledCellCount = scrollableOffset / cellWidth;\r\n            var visibleCellCount = $scrollable.width() / cellWidth;\r\n            var totalCellCount = isRtl ? scrolledCellCount - visibleCellCount : scrolledCellCount + visibleCellCount;\r\n            var leftDate = this._getDateByIndex(scrolledCellCount);\r\n            var rightDate = this._getDateByIndex(totalCellCount);\r\n            if (isRtl) {\r\n                leftDate = this._getDateByIndex(totalCellCount);\r\n                rightDate = this._getDateByIndex(scrolledCellCount)\r\n            }\r\n            result.left = {\r\n                hours: leftDate.getHours(),\r\n                minutes: leftDate.getMinutes() >= 30 ? 30 : 0,\r\n                date: _date.default.trimTime(leftDate)\r\n            };\r\n            result.right = {\r\n                hours: rightDate.getHours(),\r\n                minutes: rightDate.getMinutes() >= 30 ? 30 : 0,\r\n                date: _date.default.trimTime(rightDate)\r\n            };\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getIntervalDuration\",\r\n        value: function(allDay) {\r\n            return this.getCellDuration()\r\n        }\r\n    }, {\r\n        key: \"_supportCompactDropDownAppointments\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"getCellMinWidth\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceLeftOffset\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"scrollToTime\",\r\n        value: function(hours, minutes, date) {\r\n            var coordinates = this._getScrollCoordinates(hours, minutes, date);\r\n            var scrollable = this.getScrollable();\r\n            var offset = this.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this.getScrollableContainer().get(0)).width : 0;\r\n            if (this.option(\"templatesRenderAsynchronously\")) {\r\n                setTimeout(function() {\r\n                    scrollable.scrollBy({\r\n                        left: coordinates.left - scrollable.scrollLeft() - offset,\r\n                        top: 0\r\n                    })\r\n                })\r\n            } else {\r\n                scrollable.scrollBy({\r\n                    left: coordinates.left - scrollable.scrollLeft() - offset,\r\n                    top: 0\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getRowCountWithAllDayRows\",\r\n        value: function() {\r\n            return this._getRowCount()\r\n        }\r\n    }]);\r\n    return SchedulerTimeline\r\n}(_uiSchedulerWork_space.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimeline\", SchedulerTimeline);\r\nvar _default = SchedulerTimeline;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/themes/generic.darkmoon.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar ACCENT_COLOR = \"#3debd3\";\r\nvar BACKGROUND_COLOR = \"#465672\";\r\nvar TITLE_COLOR = \"#fff\";\r\nvar SUBTITLE_COLOR = \"#919bac\";\r\nvar TEXT_COLOR = \"#c7ccd4\";\r\nvar BORDER_COLOR = \"#596980\";\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.darkmoon\",\r\n    defaultPalette: \"Dark Moon\",\r\n    backgroundColor: BACKGROUND_COLOR,\r\n    primaryTitleColor: TITLE_COLOR,\r\n    secondaryTitleColor: SUBTITLE_COLOR,\r\n    gridColor: BORDER_COLOR,\r\n    axisColor: TEXT_COLOR,\r\n    \"export\": {\r\n        backgroundColor: BACKGROUND_COLOR,\r\n        font: {\r\n            color: TITLE_COLOR\r\n        },\r\n        button: {\r\n            \"default\": {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#7a889e\",\r\n                backgroundColor: BACKGROUND_COLOR\r\n            },\r\n            hover: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#9da8b8\",\r\n                backgroundColor: \"#596e92\"\r\n            },\r\n            focus: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#c4cad4\",\r\n                backgroundColor: \"#596e92\"\r\n            },\r\n            active: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#c4cad4\",\r\n                backgroundColor: \"#6b80a4\"\r\n            }\r\n        }\r\n    },\r\n    legend: {\r\n        font: {\r\n            color: TEXT_COLOR\r\n        }\r\n    },\r\n    tooltip: {\r\n        color: \"#62789e\",\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        font: {\r\n            color: TITLE_COLOR\r\n        }\r\n    },\r\n    \"chart:common\": {\r\n        commonSeriesSettings: {\r\n            label: {\r\n                border: {\r\n                    color: BORDER_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        font: {\r\n            color: TITLE_COLOR\r\n        },\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        color: \"#62789e\"\r\n    },\r\n    chart: {\r\n        commonPaneSettings: {\r\n            border: {\r\n                color: BORDER_COLOR\r\n            }\r\n        },\r\n        commonAxisSettings: {\r\n            breakStyle: {\r\n                color: \"#73869e\"\r\n            }\r\n        }\r\n    },\r\n    gauge: {\r\n        valueIndicators: {\r\n            rangebar: {\r\n                color: ACCENT_COLOR\r\n            },\r\n            textcloud: {\r\n                color: ACCENT_COLOR,\r\n                text: {\r\n                    font: {\r\n                        color: BACKGROUND_COLOR\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    barGauge: {\r\n        backgroundColor: \"#526280\"\r\n    },\r\n    funnel: {\r\n        item: {\r\n            border: {\r\n                color: BACKGROUND_COLOR\r\n            }\r\n        }\r\n    },\r\n    sparkline: {\r\n        pointColor: BACKGROUND_COLOR,\r\n        minColor: \"#f0ad4e\",\r\n        maxColor: \"#f9517e\"\r\n    },\r\n    treeMap: {\r\n        group: {\r\n            color: BORDER_COLOR,\r\n            label: {\r\n                font: {\r\n                    color: TITLE_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    map: {\r\n        background: {\r\n            borderColor: BORDER_COLOR\r\n        },\r\n        \"layer:area\": {\r\n            color: \"#97a3b6\",\r\n            borderColor: BACKGROUND_COLOR\r\n        }\r\n    },\r\n    rangeSelector: {\r\n        shutter: {\r\n            color: BACKGROUND_COLOR\r\n        },\r\n        scale: {\r\n            breakStyle: {\r\n                color: \"#73869e\"\r\n            },\r\n            tick: {\r\n                opacity: .2\r\n            }\r\n        },\r\n        selectedRangeColor: ACCENT_COLOR,\r\n        sliderMarker: {\r\n            color: ACCENT_COLOR,\r\n            font: {\r\n                color: \"#000\"\r\n            }\r\n        },\r\n        sliderHandle: {\r\n            color: ACCENT_COLOR,\r\n            opacity: .5\r\n        }\r\n    },\r\n    bullet: {\r\n        color: ACCENT_COLOR\r\n    },\r\n    sankey: {\r\n        link: {\r\n            border: {\r\n                color: BACKGROUND_COLOR\r\n            }\r\n        },\r\n        node: {\r\n            border: {\r\n                color: BACKGROUND_COLOR\r\n            }\r\n        }\r\n    }\r\n}, \"generic.dark\");\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.darkmoon.compact\"\r\n}, \"generic.darkmoon\");\r\n","/**\r\n * DevExtreme (ui/selection/selection.strategy.standard.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _selection_filter = require(\"../../core/utils/selection_filter\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _selection = _interopRequireDefault(require(\"./selection.strategy\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _selection.default.inherit({\r\n    ctor: function(options) {\r\n        this.callBase(options);\r\n        this._initSelectedItemKeyHash()\r\n    },\r\n    _initSelectedItemKeyHash: function() {\r\n        this._setOption(\"keyHashIndices\", this.options.equalByReference ? null : {})\r\n    },\r\n    getSelectedItemKeys: function() {\r\n        return this.options.selectedItemKeys.slice(0)\r\n    },\r\n    getSelectedItems: function() {\r\n        return this.options.selectedItems.slice(0)\r\n    },\r\n    _preserveSelectionUpdate: function(items, isDeselect) {\r\n        var keyOf = this.options.keyOf;\r\n        var keyIndicesToRemoveMap;\r\n        var keyIndex;\r\n        var i;\r\n        if (!keyOf) {\r\n            return\r\n        }\r\n        var isBatchDeselect = isDeselect && items.length > 1 && !this.options.equalByReference;\r\n        if (isBatchDeselect) {\r\n            keyIndicesToRemoveMap = {}\r\n        }\r\n        for (i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            var key = keyOf(item);\r\n            if (isDeselect) {\r\n                keyIndex = this.removeSelectedItem(key, keyIndicesToRemoveMap);\r\n                if (keyIndicesToRemoveMap && keyIndex >= 0) {\r\n                    keyIndicesToRemoveMap[keyIndex] = true\r\n                }\r\n            } else {\r\n                this.addSelectedItem(key, item)\r\n            }\r\n        }\r\n        if (isBatchDeselect) {\r\n            this._batchRemoveSelectedItems(keyIndicesToRemoveMap)\r\n        }\r\n    },\r\n    _batchRemoveSelectedItems: function(keyIndicesToRemoveMap) {\r\n        var selectedItemKeys = this.options.selectedItemKeys.slice(0);\r\n        var selectedItems = this.options.selectedItems.slice(0);\r\n        this.options.selectedItemKeys.length = 0;\r\n        this.options.selectedItems.length = 0;\r\n        for (var i = 0; i < selectedItemKeys.length; i++) {\r\n            if (!keyIndicesToRemoveMap[i]) {\r\n                this.options.selectedItemKeys.push(selectedItemKeys[i]);\r\n                this.options.selectedItems.push(selectedItems[i])\r\n            }\r\n        }\r\n        this._initSelectedItemKeyHash();\r\n        this.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n    },\r\n    _loadSelectedItemsCore: function(keys, isDeselect, isSelectAll) {\r\n        var deferred = new _deferred.Deferred;\r\n        var key = this.options.key();\r\n        if (!keys.length && !isSelectAll) {\r\n            deferred.resolve([]);\r\n            return deferred\r\n        }\r\n        var filter = this.options.filter();\r\n        if (isSelectAll && isDeselect && !filter) {\r\n            deferred.resolve(this.getSelectedItems());\r\n            return deferred\r\n        }\r\n        var selectionFilterCreator = new _selection_filter.SelectionFilterCreator(keys, isSelectAll);\r\n        var combinedFilter = selectionFilterCreator.getCombinedFilter(key, filter);\r\n        var deselectedItems = [];\r\n        if (isDeselect) {\r\n            deselectedItems = combinedFilter ? (0, _query.default)(this.options.selectedItems).filter(combinedFilter).toArray() : this.options.selectedItems.slice(0)\r\n        }\r\n        var filteredItems = deselectedItems.length ? deselectedItems : this.options.plainItems(true).filter(this.options.isSelectableItem).map(this.options.getItemData);\r\n        var localFilter = selectionFilterCreator.getLocalFilter(this.options.keyOf, this.equalKeys.bind(this), this.options.equalByReference, key);\r\n        filteredItems = filteredItems.filter(localFilter);\r\n        if (deselectedItems.length || !isSelectAll && filteredItems.length === keys.length) {\r\n            deferred.resolve(filteredItems)\r\n        } else {\r\n            deferred = this._loadFilteredData(combinedFilter, localFilter, null, isSelectAll)\r\n        }\r\n        return deferred\r\n    },\r\n    _replaceSelectionUpdate: function(items) {\r\n        var internalKeys = [];\r\n        var keyOf = this.options.keyOf;\r\n        if (!keyOf) {\r\n            return\r\n        }\r\n        for (var i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            var key = keyOf(item);\r\n            internalKeys.push(key)\r\n        }\r\n        this.setSelectedItems(internalKeys, items)\r\n    },\r\n    _warnOnIncorrectKeys: function(keys) {\r\n        var allowNullValue = this.options.allowNullValue;\r\n        for (var i = 0; i < keys.length; i++) {\r\n            var key = keys[i];\r\n            if ((!allowNullValue || null !== key) && !this.isItemKeySelected(key)) {\r\n                _ui.default.log(\"W1002\", key)\r\n            }\r\n        }\r\n    },\r\n    _loadSelectedItems: function(keys, isDeselect, isSelectAll) {\r\n        var that = this;\r\n        var deferred = new _deferred.Deferred;\r\n        (0, _deferred.when)(that._lastLoadDeferred).always(function() {\r\n            that._loadSelectedItemsCore(keys, isDeselect, isSelectAll).done(deferred.resolve).fail(deferred.reject)\r\n        });\r\n        that._lastLoadDeferred = deferred;\r\n        return deferred\r\n    },\r\n    selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n        var that = this;\r\n        var deferred = that._loadSelectedItems(keys, isDeselect, isSelectAll);\r\n        deferred.done(function(items) {\r\n            if (preserve) {\r\n                that._preserveSelectionUpdate(items, isDeselect)\r\n            } else {\r\n                that._replaceSelectionUpdate(items)\r\n            }\r\n            that.onSelectionChanged()\r\n        });\r\n        return deferred\r\n    },\r\n    addSelectedItem: function(key, itemData) {\r\n        if ((0, _type.isDefined)(itemData) && itemData.disabled) {\r\n            if (this.options.disabledItemKeys.indexOf(key) === -1) {\r\n                this.options.disabledItemKeys.push(key)\r\n            }\r\n            return\r\n        }\r\n        var keyHash = this._getKeyHash(key);\r\n        if (this._indexOfSelectedItemKey(keyHash) === -1) {\r\n            if (!(0, _type.isObject)(keyHash) && this.options.keyHashIndices) {\r\n                this.options.keyHashIndices[keyHash] = [this.options.selectedItemKeys.length]\r\n            }\r\n            this.options.selectedItemKeys.push(key);\r\n            this.options.addedItemKeys.push(key);\r\n            this.options.addedItems.push(itemData);\r\n            this.options.selectedItems.push(itemData)\r\n        }\r\n    },\r\n    _getSelectedIndexByKey: function(key, ignoreIndicesMap) {\r\n        var selectedItemKeys = this.options.selectedItemKeys;\r\n        for (var index = 0; index < selectedItemKeys.length; index++) {\r\n            if ((!ignoreIndicesMap || !ignoreIndicesMap[index]) && this.equalKeys(selectedItemKeys[index], key)) {\r\n                return index\r\n            }\r\n        }\r\n        return -1\r\n    },\r\n    _getSelectedIndexByHash: function(key, ignoreIndicesMap) {\r\n        var indices = this.options.keyHashIndices[key];\r\n        if (indices && indices.length > 1 && ignoreIndicesMap) {\r\n            indices = indices.filter(function(index) {\r\n                return !ignoreIndicesMap[index]\r\n            })\r\n        }\r\n        return indices && indices[0] >= 0 ? indices[0] : -1\r\n    },\r\n    _indexOfSelectedItemKey: function(key, ignoreIndicesMap) {\r\n        var selectedIndex;\r\n        if (this.options.equalByReference) {\r\n            selectedIndex = this.options.selectedItemKeys.indexOf(key)\r\n        } else {\r\n            if ((0, _type.isObject)(key)) {\r\n                selectedIndex = this._getSelectedIndexByKey(key, ignoreIndicesMap)\r\n            } else {\r\n                selectedIndex = this._getSelectedIndexByHash(key, ignoreIndicesMap)\r\n            }\r\n        }\r\n        return selectedIndex\r\n    },\r\n    _shiftSelectedKeyIndices: function(keyIndex) {\r\n        for (var currentKeyIndex = keyIndex; currentKeyIndex < this.options.selectedItemKeys.length; currentKeyIndex++) {\r\n            var currentKey = this.options.selectedItemKeys[currentKeyIndex];\r\n            var currentKeyHash = (0, _common.getKeyHash)(currentKey);\r\n            var currentKeyIndices = this.options.keyHashIndices[currentKeyHash];\r\n            if (!currentKeyIndices) {\r\n                continue\r\n            }\r\n            for (var i = 0; i < currentKeyIndices.length; i++) {\r\n                if (currentKeyIndices[i] > keyIndex) {\r\n                    currentKeyIndices[i]--\r\n                }\r\n            }\r\n        }\r\n    },\r\n    removeSelectedItem: function(key, keyIndicesToRemoveMap) {\r\n        var keyHash = this._getKeyHash(key);\r\n        var isBatchDeselect = !!keyIndicesToRemoveMap;\r\n        var keyIndex = this._indexOfSelectedItemKey(keyHash, keyIndicesToRemoveMap);\r\n        if (keyIndex < 0) {\r\n            return keyIndex\r\n        }\r\n        this.options.removedItemKeys.push(key);\r\n        this.options.removedItems.push(this.options.selectedItems[keyIndex]);\r\n        if (isBatchDeselect) {\r\n            return keyIndex\r\n        }\r\n        this.options.selectedItemKeys.splice(keyIndex, 1);\r\n        this.options.selectedItems.splice(keyIndex, 1);\r\n        if ((0, _type.isObject)(keyHash) || !this.options.keyHashIndices) {\r\n            return keyIndex\r\n        }\r\n        var keyIndices = this.options.keyHashIndices[keyHash];\r\n        if (!keyIndices) {\r\n            return keyIndex\r\n        }\r\n        keyIndices.shift();\r\n        if (!keyIndices.length) {\r\n            delete this.options.keyHashIndices[keyHash]\r\n        }\r\n        this._shiftSelectedKeyIndices(keyIndex);\r\n        return keyIndex\r\n    },\r\n    _updateAddedItemKeys: function(keys, items) {\r\n        for (var i = 0; i < keys.length; i++) {\r\n            if (!this.isItemKeySelected(keys[i])) {\r\n                this.options.addedItemKeys.push(keys[i]);\r\n                this.options.addedItems.push(items[i])\r\n            }\r\n        }\r\n    },\r\n    _updateRemovedItemKeys: function(keys, oldSelectedKeys, oldSelectedItems) {\r\n        for (var i = 0; i < oldSelectedKeys.length; i++) {\r\n            if (!this.isItemKeySelected(oldSelectedKeys[i])) {\r\n                this.options.removedItemKeys.push(oldSelectedKeys[i]);\r\n                this.options.removedItems.push(oldSelectedItems[i])\r\n            }\r\n        }\r\n    },\r\n    _getKeyHash: function(key) {\r\n        return this.options.equalByReference ? key : (0, _common.getKeyHash)(key)\r\n    },\r\n    setSelectedItems: function(keys, items) {\r\n        this._updateAddedItemKeys(keys, items);\r\n        var oldSelectedKeys = this.options.selectedItemKeys;\r\n        var oldSelectedItems = this.options.selectedItems;\r\n        if (!this.options.equalByReference) {\r\n            this._initSelectedItemKeyHash();\r\n            this.updateSelectedItemKeyHash(keys)\r\n        }\r\n        this._setOption(\"selectedItemKeys\", keys);\r\n        this._setOption(\"selectedItems\", items);\r\n        this._updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems)\r\n    },\r\n    isItemDataSelected: function(itemData) {\r\n        var key = this.options.keyOf(itemData);\r\n        return this.isItemKeySelected(key)\r\n    },\r\n    isItemKeySelected: function(key) {\r\n        var keyHash = this._getKeyHash(key);\r\n        var index = this._indexOfSelectedItemKey(keyHash);\r\n        return index !== -1\r\n    },\r\n    getSelectAllState: function(visibleOnly) {\r\n        if (visibleOnly) {\r\n            return this._getVisibleSelectAllState()\r\n        } else {\r\n            return this._getFullSelectAllState()\r\n        }\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/collection/item.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _public_component = require(\"../../core/utils/public_component\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar ITEM_CONTENT_PLACEHOLDER_CLASS = \"dx-item-content-placeholder\";\r\nvar forcibleWatcher = function(watchMethod, fn, callback) {\r\n    var filteredCallback = function() {\r\n        var oldValue;\r\n        return function(value) {\r\n            if (oldValue !== value) {\r\n                callback(value, oldValue);\r\n                oldValue = value\r\n            }\r\n        }\r\n    }();\r\n    return {\r\n        dispose: watchMethod(fn, filteredCallback),\r\n        force: function() {\r\n            filteredCallback(fn())\r\n        }\r\n    }\r\n};\r\nvar CollectionItem = _class.default.inherit({\r\n    ctor: function($element, options, rawData) {\r\n        this._$element = $element;\r\n        this._options = options;\r\n        this._rawData = rawData;\r\n        (0, _public_component.attachInstanceToElement)($element, this, this._dispose);\r\n        this._render()\r\n    },\r\n    _render: function() {\r\n        var $placeholder = (0, _renderer.default)(\"<div>\").addClass(ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n        this._$element.append($placeholder);\r\n        this._watchers = [];\r\n        this._renderWatchers()\r\n    },\r\n    _renderWatchers: function() {\r\n        this._startWatcher(\"disabled\", this._renderDisabled.bind(this));\r\n        this._startWatcher(\"visible\", this._renderVisible.bind(this))\r\n    },\r\n    _startWatcher: function(field, render) {\r\n        var rawData = this._rawData;\r\n        var exprGetter = this._options.fieldGetter(field);\r\n        var watcher = forcibleWatcher(this._options.watchMethod(), function() {\r\n            return exprGetter(rawData)\r\n        }, function(value, oldValue) {\r\n            this._dirty = true;\r\n            render(value, oldValue)\r\n        }.bind(this));\r\n        this._watchers.push(watcher)\r\n    },\r\n    setDataField: function() {\r\n        this._dirty = false;\r\n        (0, _iterator.each)(this._watchers, function(_, watcher) {\r\n            watcher.force()\r\n        });\r\n        if (this._dirty) {\r\n            return true\r\n        }\r\n    },\r\n    _renderDisabled: function(value, oldValue) {\r\n        this._$element.toggleClass(DISABLED_STATE_CLASS, !!value);\r\n        this._updateOwnerFocus(value)\r\n    },\r\n    _updateOwnerFocus: function(isDisabled) {\r\n        var ownerComponent = this._options.owner;\r\n        if (ownerComponent && isDisabled) {\r\n            ownerComponent._resetItemFocus(this._$element)\r\n        }\r\n    },\r\n    _renderVisible: function(value, oldValue) {\r\n        this._$element.toggleClass(INVISIBLE_STATE_CLASS, void 0 !== value && !value)\r\n    },\r\n    _dispose: function() {\r\n        (0, _iterator.each)(this._watchers, function(_, watcher) {\r\n            watcher.dispose()\r\n        })\r\n    }\r\n});\r\nCollectionItem.getInstance = function($element) {\r\n    return (0, _public_component.getInstanceByElement)($element, this)\r\n};\r\nvar _default = CollectionItem;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _load_panel = _interopRequireDefault(require(\"../load_panel\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATAGRID_SELECTION_DISABLED_CLASS = \"dx-selection-disabled\";\r\nvar DATAGRID_GROUP_OPENED_CLASS = \"dx-datagrid-group-opened\";\r\nvar DATAGRID_GROUP_CLOSED_CLASS = \"dx-datagrid-group-closed\";\r\nvar DATAGRID_EXPAND_CLASS = \"dx-datagrid-expand\";\r\nvar NO_DATA_CLASS = \"nodata\";\r\nvar DATE_INTERVAL_SELECTORS = {\r\n    year: function(value) {\r\n        return value && value.getFullYear()\r\n    },\r\n    month: function(value) {\r\n        return value && value.getMonth() + 1\r\n    },\r\n    day: function(value) {\r\n        return value && value.getDate()\r\n    },\r\n    quarter: function(value) {\r\n        return value && Math.floor(value.getMonth() / 3) + 1\r\n    },\r\n    hour: function(value) {\r\n        return value && value.getHours()\r\n    },\r\n    minute: function(value) {\r\n        return value && value.getMinutes()\r\n    },\r\n    second: function(value) {\r\n        return value && value.getSeconds()\r\n    }\r\n};\r\nvar getIntervalSelector = function() {\r\n    var data = arguments[1];\r\n    var value = this.calculateCellValue(data);\r\n    if (!(0, _type.isDefined)(value)) {\r\n        return null\r\n    } else {\r\n        if (isDateType(this.dataType)) {\r\n            var nameIntervalSelector = arguments[0];\r\n            return DATE_INTERVAL_SELECTORS[nameIntervalSelector](value)\r\n        } else {\r\n            if (\"number\" === this.dataType) {\r\n                var groupInterval = arguments[0];\r\n                return Math.floor(Number(value) / groupInterval) * groupInterval\r\n            }\r\n        }\r\n    }\r\n};\r\nvar equalSelectors = function(selector1, selector2) {\r\n    if ((0, _type.isFunction)(selector1) && (0, _type.isFunction)(selector2)) {\r\n        if (selector1.originalCallback && selector2.originalCallback) {\r\n            return selector1.originalCallback === selector2.originalCallback && selector1.columnIndex === selector2.columnIndex\r\n        }\r\n    }\r\n    return selector1 === selector2\r\n};\r\n\r\nfunction isDateType(dataType) {\r\n    return \"date\" === dataType || \"datetime\" === dataType\r\n}\r\nvar setEmptyText = function($container) {\r\n    $container.get(0).textContent = \"\\xa0\"\r\n};\r\nvar normalizeSortingInfo = function(sort) {\r\n    sort = sort || [];\r\n    var result = _utils.default.normalizeSortingInfo(sort);\r\n    for (var i = 0; i < sort.length; i++) {\r\n        if (sort && sort[i] && void 0 !== sort[i].isExpanded) {\r\n            result[i].isExpanded = sort[i].isExpanded\r\n        }\r\n        if (sort && sort[i] && void 0 !== sort[i].groupInterval) {\r\n            result[i].groupInterval = sort[i].groupInterval\r\n        }\r\n    }\r\n    return result\r\n};\r\nvar formatValue = function(value, options) {\r\n    var valueText = _format_helper.default.format(value, options.format) || value && value.toString() || \"\";\r\n    var formatObject = {\r\n        value: value,\r\n        valueText: options.getDisplayFormat ? options.getDisplayFormat(valueText) : valueText,\r\n        target: options.target || \"row\",\r\n        groupInterval: options.groupInterval\r\n    };\r\n    return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText\r\n};\r\nvar getSummaryText = function(summaryItem, summaryTexts) {\r\n    var displayFormat = summaryItem.displayFormat || summaryItem.columnCaption && summaryTexts[summaryItem.summaryType + \"OtherColumn\"] || summaryTexts[summaryItem.summaryType];\r\n    return formatValue(summaryItem.value, {\r\n        format: summaryItem.valueFormat,\r\n        getDisplayFormat: function(valueText) {\r\n            return displayFormat ? (0, _string.format)(displayFormat, valueText, summaryItem.columnCaption) : valueText\r\n        },\r\n        customizeText: summaryItem.customizeText\r\n    })\r\n};\r\nvar getWidgetInstance = function($element) {\r\n    var editorData = $element.data && $element.data();\r\n    var dxComponents = editorData && editorData.dxComponents;\r\n    var widgetName = dxComponents && dxComponents[0];\r\n    return widgetName && editorData[widgetName]\r\n};\r\nvar equalFilterParameters = function equalFilterParameters(filter1, filter2) {\r\n    if (Array.isArray(filter1) && Array.isArray(filter2)) {\r\n        if (filter1.length !== filter2.length) {\r\n            return false\r\n        } else {\r\n            for (var i = 0; i < filter1.length; i++) {\r\n                if (!equalFilterParameters(filter1[i], filter2[i])) {\r\n                    return false\r\n                }\r\n            }\r\n        }\r\n        return true\r\n    } else {\r\n        if ((0, _type.isFunction)(filter1) && filter1.columnIndex >= 0 && (0, _type.isFunction)(filter2) && filter2.columnIndex >= 0) {\r\n            return filter1.columnIndex === filter2.columnIndex && (0, _data.toComparable)(filter1.filterValue) === (0, _data.toComparable)(filter2.filterValue)\r\n        } else {\r\n            return (0, _data.toComparable)(filter1) == (0, _data.toComparable)(filter2)\r\n        }\r\n    }\r\n};\r\nvar _default = {\r\n    renderNoDataText: function($element) {\r\n        var that = this;\r\n        $element = $element || this.element();\r\n        if (!$element) {\r\n            return\r\n        }\r\n        var noDataClass = that.addWidgetPrefix(NO_DATA_CLASS);\r\n        var noDataElement = $element.find(\".\" + noDataClass).last();\r\n        var isVisible = this._dataController.isEmpty();\r\n        var isLoading = this._dataController.isLoading();\r\n        if (!noDataElement.length) {\r\n            noDataElement = (0, _renderer.default)(\"<span>\").addClass(noDataClass).appendTo($element)\r\n        }\r\n        if (isVisible && !isLoading) {\r\n            noDataElement.removeClass(\"dx-hidden\").text(that._getNoDataText())\r\n        } else {\r\n            noDataElement.addClass(\"dx-hidden\")\r\n        }\r\n    },\r\n    renderLoadPanel: function($element, $container, isLocalStore) {\r\n        var that = this;\r\n        var loadPanelOptions;\r\n        that._loadPanel && that._loadPanel.$element().remove();\r\n        loadPanelOptions = that.option(\"loadPanel\");\r\n        if (loadPanelOptions && (\"auto\" === loadPanelOptions.enabled ? !isLocalStore : loadPanelOptions.enabled)) {\r\n            loadPanelOptions = (0, _extend.extend)({\r\n                shading: false,\r\n                message: loadPanelOptions.text,\r\n                position: function() {\r\n                    var $window = (0, _renderer.default)((0, _window.getWindow)());\r\n                    if ($element.height() > $window.height()) {\r\n                        return {\r\n                            of: $window,\r\n                            boundary: $element,\r\n                            collision: \"fit\"\r\n                        }\r\n                    }\r\n                    return {\r\n                        of: $element\r\n                    }\r\n                },\r\n                container: $container\r\n            }, loadPanelOptions);\r\n            that._loadPanel = that._createComponent((0, _renderer.default)(\"<div>\").appendTo($container), _load_panel.default, loadPanelOptions)\r\n        } else {\r\n            that._loadPanel = null\r\n        }\r\n    },\r\n    getIndexByKey: function(key, items, keyName) {\r\n        var index = -1;\r\n        if (void 0 !== key && Array.isArray(items)) {\r\n            keyName = arguments.length <= 2 ? \"key\" : keyName;\r\n            for (var i = 0; i < items.length; i++) {\r\n                var item = (0, _type.isDefined)(keyName) ? items[i][keyName] : items[i];\r\n                if ((0, _common.equalByValue)(key, item)) {\r\n                    index = i;\r\n                    break\r\n                }\r\n            }\r\n        }\r\n        return index\r\n    },\r\n    combineFilters: function(filters, operation) {\r\n        var resultFilter = [];\r\n        operation = operation || \"and\";\r\n        for (var i = 0; i < filters.length; i++) {\r\n            if (!filters[i]) {\r\n                continue\r\n            }\r\n            if (resultFilter.length) {\r\n                resultFilter.push(operation)\r\n            }\r\n            resultFilter.push(filters[i])\r\n        }\r\n        if (1 === resultFilter.length) {\r\n            resultFilter = resultFilter[0]\r\n        }\r\n        if (resultFilter.length) {\r\n            return resultFilter\r\n        }\r\n    },\r\n    checkChanges: function(changes, changeNames) {\r\n        var changesWithChangeNamesCount = 0;\r\n        for (var i = 0; i < changeNames.length; i++) {\r\n            if (changes[changeNames[i]]) {\r\n                changesWithChangeNamesCount++\r\n            }\r\n        }\r\n        return changes.length && changes.length === changesWithChangeNamesCount\r\n    },\r\n    equalFilterParameters: equalFilterParameters,\r\n    proxyMethod: function(instance, methodName, defaultResult) {\r\n        if (!instance[methodName]) {\r\n            instance[methodName] = function() {\r\n                var dataSource = this._dataSource;\r\n                return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult\r\n            }\r\n        }\r\n    },\r\n    formatValue: formatValue,\r\n    getFormatOptionsByColumn: function(column, target) {\r\n        return {\r\n            format: column.format,\r\n            getDisplayFormat: column.getDisplayFormat,\r\n            customizeText: column.customizeText,\r\n            target: target,\r\n            trueText: column.trueText,\r\n            falseText: column.falseText\r\n        }\r\n    },\r\n    getDisplayValue: function(column, value, data, rowType) {\r\n        if (column.displayValueMap && void 0 !== column.displayValueMap[value]) {\r\n            return column.displayValueMap[value]\r\n        } else {\r\n            if (column.calculateDisplayValue && data && \"group\" !== rowType) {\r\n                return column.calculateDisplayValue(data)\r\n            } else {\r\n                if (column.lookup && !(\"group\" === rowType && (column.calculateGroupValue || column.calculateDisplayValue))) {\r\n                    return column.lookup.calculateCellValue(value)\r\n                }\r\n            }\r\n        }\r\n        return value\r\n    },\r\n    getGroupRowSummaryText: function(summaryItems, summaryTexts) {\r\n        var result = \"(\";\r\n        for (var i = 0; i < summaryItems.length; i++) {\r\n            var summaryItem = summaryItems[i];\r\n            result += (i > 0 ? \", \" : \"\") + getSummaryText(summaryItem, summaryTexts)\r\n        }\r\n        return result += \")\"\r\n    },\r\n    getSummaryText: getSummaryText,\r\n    normalizeSortingInfo: normalizeSortingInfo,\r\n    getFormatByDataType: function(dataType) {\r\n        switch (dataType) {\r\n            case \"date\":\r\n                return \"shortDate\";\r\n            case \"datetime\":\r\n                return \"shortDateShortTime\"\r\n        }\r\n    },\r\n    getHeaderFilterGroupParameters: function(column, remoteGrouping) {\r\n        var result = [];\r\n        var dataField = column.dataField || column.name;\r\n        var groupInterval = _filtering.default.getGroupInterval(column);\r\n        if (groupInterval) {\r\n            (0, _iterator.each)(groupInterval, function(index, interval) {\r\n                result.push(remoteGrouping ? {\r\n                    selector: dataField,\r\n                    groupInterval: interval,\r\n                    isExpanded: index < groupInterval.length - 1\r\n                } : getIntervalSelector.bind(column, interval))\r\n            });\r\n            return result\r\n        }\r\n        if (remoteGrouping) {\r\n            result = [{\r\n                selector: dataField,\r\n                isExpanded: false\r\n            }]\r\n        } else {\r\n            result = function result(data) {\r\n                var result = column.calculateCellValue(data);\r\n                if (void 0 === result || \"\" === result) {\r\n                    result = null\r\n                }\r\n                return result\r\n            };\r\n            if (column.sortingMethod) {\r\n                result = [{\r\n                    selector: result,\r\n                    compare: column.sortingMethod.bind(column)\r\n                }]\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    equalSortParameters: function(sortParameters1, sortParameters2, ignoreIsExpanded) {\r\n        sortParameters1 = normalizeSortingInfo(sortParameters1);\r\n        sortParameters2 = normalizeSortingInfo(sortParameters2);\r\n        if (Array.isArray(sortParameters1) && Array.isArray(sortParameters2)) {\r\n            if (sortParameters1.length !== sortParameters2.length) {\r\n                return false\r\n            } else {\r\n                for (var i = 0; i < sortParameters1.length; i++) {\r\n                    if (!equalSelectors(sortParameters1[i].selector, sortParameters2[i].selector) || sortParameters1[i].desc !== sortParameters2[i].desc || sortParameters1[i].groupInterval !== sortParameters2[i].groupInterval || !ignoreIsExpanded && Boolean(sortParameters1[i].isExpanded) !== Boolean(sortParameters2[i].isExpanded)) {\r\n                        return false\r\n                    }\r\n                }\r\n            }\r\n            return true\r\n        } else {\r\n            return (!sortParameters1 || !sortParameters1.length) === (!sortParameters2 || !sortParameters2.length)\r\n        }\r\n    },\r\n    getPointsByColumns: function(items, pointCreated, isVertical, startColumnIndex) {\r\n        var cellsLength = items.length;\r\n        var notCreatePoint = false;\r\n        var item;\r\n        var offset;\r\n        var columnIndex = startColumnIndex || 0;\r\n        var result = [];\r\n        var rtlEnabled;\r\n        for (var i = 0; i <= cellsLength; i++) {\r\n            if (i < cellsLength) {\r\n                item = items.eq(i);\r\n                offset = item.offset();\r\n                rtlEnabled = \"rtl\" === item.css(\"direction\")\r\n            }\r\n            var point = {\r\n                index: columnIndex,\r\n                x: offset ? offset.left + (!isVertical && rtlEnabled ^ i === cellsLength ? (0, _position.getBoundingRect)(item[0]).width : 0) : 0,\r\n                y: offset ? offset.top + (isVertical && i === cellsLength ? (0, _position.getBoundingRect)(item[0]).height : 0) : 0,\r\n                columnIndex: columnIndex\r\n            };\r\n            if (!isVertical && i > 0) {\r\n                var prevItemOffset = items.eq(i - 1).offset();\r\n                if (prevItemOffset.top < point.y) {\r\n                    point.y = prevItemOffset.top\r\n                }\r\n            }\r\n            if (pointCreated) {\r\n                notCreatePoint = pointCreated(point)\r\n            }\r\n            if (!notCreatePoint) {\r\n                result.push(point)\r\n            }\r\n            columnIndex++\r\n        }\r\n        return result\r\n    },\r\n    getExpandCellTemplate: function() {\r\n        return {\r\n            allowRenderToDetachedContainer: true,\r\n            render: function(container, options) {\r\n                var $container = (0, _renderer.default)(container);\r\n                if ((0, _type.isDefined)(options.value) && !(options.data && options.data.isContinuation) && !options.row.isNewRow) {\r\n                    var rowsView = options.component.getView(\"rowsView\");\r\n                    $container.addClass(DATAGRID_EXPAND_CLASS).addClass(DATAGRID_SELECTION_DISABLED_CLASS);\r\n                    (0, _renderer.default)(\"<div>\").addClass(options.value ? DATAGRID_GROUP_OPENED_CLASS : DATAGRID_GROUP_CLOSED_CLASS).appendTo($container);\r\n                    rowsView.setAria(\"label\", options.value ? rowsView.localize(\"dxDataGrid-ariaCollapse\") : rowsView.localize(\"dxDataGrid-ariaExpand\"), $container)\r\n                } else {\r\n                    setEmptyText($container)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    setEmptyText: setEmptyText,\r\n    isDateType: isDateType,\r\n    getSelectionRange: function(focusedElement) {\r\n        try {\r\n            if (focusedElement) {\r\n                return {\r\n                    selectionStart: focusedElement.selectionStart,\r\n                    selectionEnd: focusedElement.selectionEnd\r\n                }\r\n            }\r\n        } catch (e) {}\r\n        return {}\r\n    },\r\n    setSelectionRange: function(focusedElement, selectionRange) {\r\n        try {\r\n            if (focusedElement && focusedElement.setSelectionRange) {\r\n                focusedElement.setSelectionRange(selectionRange.selectionStart, selectionRange.selectionEnd)\r\n            }\r\n        } catch (e) {}\r\n    },\r\n    focusAndSelectElement: function(component, $element) {\r\n        _events_engine.default.trigger($element, \"focus\");\r\n        var isSelectTextOnEditingStart = component.option(\"editing.selectTextOnEditStart\");\r\n        var keyboardController = component.getController(\"keyboardNavigation\");\r\n        var isEditingNavigationMode = keyboardController && keyboardController._isFastEditingStarted();\r\n        var element = $element.get(0);\r\n        if (isSelectTextOnEditingStart && !isEditingNavigationMode && $element.is(\".dx-texteditor-input\") && !$element.is(\"[readonly]\")) {\r\n            var editor = getWidgetInstance($element.closest(\".dx-texteditor\"));\r\n            (0, _deferred.when)(editor && editor._loadItemDeferred).done(function() {\r\n                element.select()\r\n            })\r\n        }\r\n    },\r\n    getWidgetInstance: getWidgetInstance,\r\n    getLastResizableColumnIndex: function(columns, resultWidths) {\r\n        var hasResizableColumns = columns.some(function(column) {\r\n            return column && !column.command && !column.fixed && false !== column.allowResizing\r\n        });\r\n        var lastColumnIndex;\r\n        for (lastColumnIndex = columns.length - 1; columns[lastColumnIndex]; lastColumnIndex--) {\r\n            var column = columns[lastColumnIndex];\r\n            var width = resultWidths && resultWidths[lastColumnIndex];\r\n            var allowResizing = !hasResizableColumns || false !== column.allowResizing;\r\n            if (!column.command && !column.fixed && \"adaptiveHidden\" !== width && allowResizing) {\r\n                break\r\n            }\r\n        }\r\n        return lastColumnIndex\r\n    },\r\n    isElementInCurrentGrid: function(controller, $element) {\r\n        if ($element && $element.length) {\r\n            var $grid = $element.closest(\".\" + controller.getWidgetContainerClass()).parent();\r\n            return $grid.is(controller.component.$element())\r\n        }\r\n        return false\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/html_parser.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.isTablePart = exports.parseHTML = void 0;\r\nvar _array = require(\"./array\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar isTagName = /<([a-z][^/\\0>\\x20\\t\\r\\n\\f]+)/i;\r\nvar tagWrappers = {\r\n    \"default\": {\r\n        tagsCount: 0,\r\n        startTags: \"\",\r\n        endTags: \"\"\r\n    },\r\n    thead: {\r\n        tagsCount: 1,\r\n        startTags: \"<table>\",\r\n        endTags: \"</table>\"\r\n    },\r\n    td: {\r\n        tagsCount: 3,\r\n        startTags: \"<table><tbody><tr>\",\r\n        endTags: \"</tr></tbody></table>\"\r\n    },\r\n    col: {\r\n        tagsCount: 2,\r\n        startTags: \"<table><colgroup>\",\r\n        endTags: \"</colgroup></table>\"\r\n    },\r\n    tr: {\r\n        tagsCount: 2,\r\n        startTags: \"<table><tbody>\",\r\n        endTags: \"</tbody></table>\"\r\n    }\r\n};\r\ntagWrappers.tbody = tagWrappers.colgroup = tagWrappers.caption = tagWrappers.tfoot = tagWrappers.thead;\r\ntagWrappers.th = tagWrappers.td;\r\nvar parseHTML = function(html) {\r\n    if (\"string\" !== typeof html) {\r\n        return null\r\n    }\r\n    var fragment = _dom_adapter.default.createDocumentFragment();\r\n    var container = fragment.appendChild(_dom_adapter.default.createElement(\"div\"));\r\n    var tags = isTagName.exec(html);\r\n    var firstRootTag = tags && tags[1].toLowerCase();\r\n    var tagWrapper = tagWrappers[firstRootTag] || tagWrappers.default;\r\n    container.innerHTML = tagWrapper.startTags + html + tagWrapper.endTags;\r\n    for (var i = 0; i < tagWrapper.tagsCount; i++) {\r\n        container = container.lastChild\r\n    }\r\n    return (0, _array.merge)([], container.childNodes)\r\n};\r\nexports.parseHTML = parseHTML;\r\nvar isTablePart = function(html) {\r\n    var tags = isTagName.exec(html);\r\n    return tags && tags[1] in tagWrappers\r\n};\r\nexports.isTablePart = isTablePart;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.search.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.search\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"search\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/series/line_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar DISCRETE = \"discrete\";\r\nvar round = Math.round,\r\n    sqrt = Math.sqrt,\r\n    pow = Math.pow,\r\n    min = Math.min,\r\n    max = Math.max,\r\n    abs = Math.abs;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\n\r\nfunction clonePoint(point, newX, newY, newAngle) {\r\n    var p = (0, _object.clone)(point);\r\n    p.x = newX;\r\n    p.y = newY;\r\n    p.angle = newAngle;\r\n    return p\r\n}\r\n\r\nfunction getTangentPoint(point, prevPoint, centerPoint, tan, nextStepAngle) {\r\n    var correctAngle = point.angle + nextStepAngle;\r\n    var cosSin = (0, _utils.getCosAndSin)(correctAngle);\r\n    var x = centerPoint.x + (point.radius + tan * nextStepAngle) * cosSin.cos;\r\n    var y = centerPoint.y - (point.radius + tan * nextStepAngle) * cosSin.sin;\r\n    return clonePoint(prevPoint, x, y, correctAngle)\r\n}\r\n\r\nfunction obtainCubicBezierTCoef(p, p0, p1, p2, p3) {\r\n    var d = p0 - p;\r\n    var c = 3 * p1 - 3 * p0;\r\n    var b = 3 * p2 - 6 * p1 + 3 * p0;\r\n    var a = p3 - 3 * p2 + 3 * p1 - p0;\r\n    return (0, _math.solveCubicEquation)(a, b, c, d)\r\n}\r\nvar lineMethods = {\r\n    autoHidePointMarkersEnabled: function() {\r\n        return true\r\n    },\r\n    _applyGroupSettings: function(style, settings, group) {\r\n        var that = this;\r\n        settings = (0, _extend.extend)(settings, style);\r\n        that._applyElementsClipRect(settings);\r\n        group.attr(settings)\r\n    },\r\n    _setGroupsSettings: function(animationEnabled) {\r\n        var that = this;\r\n        var style = that._styles.normal;\r\n        that._applyGroupSettings(style.elements, {\r\n            \"class\": \"dxc-elements\"\r\n        }, that._elementsGroup);\r\n        that._bordersGroup && that._applyGroupSettings(style.border, {\r\n            \"class\": \"dxc-borders\"\r\n        }, that._bordersGroup);\r\n        _scatter_series.chart._setGroupsSettings.call(that, animationEnabled);\r\n        animationEnabled && that._markersGroup && that._markersGroup.attr({\r\n            opacity: .001\r\n        })\r\n    },\r\n    _createGroups: function() {\r\n        var that = this;\r\n        that._createGroup(\"_elementsGroup\", that, that._group);\r\n        that._areBordersVisible() && that._createGroup(\"_bordersGroup\", that, that._group);\r\n        _scatter_series.chart._createGroups.call(that)\r\n    },\r\n    _areBordersVisible: function() {\r\n        return false\r\n    },\r\n    _getDefaultSegment: function(segment) {\r\n        return {\r\n            line: (0, _utils.map)(segment.line || [], function(pt) {\r\n                return pt.getDefaultCoords()\r\n            })\r\n        }\r\n    },\r\n    _prepareSegment: function(points) {\r\n        return {\r\n            line: points\r\n        }\r\n    },\r\n    _parseLineOptions: function(options, defaultColor) {\r\n        return {\r\n            stroke: options.color || defaultColor,\r\n            \"stroke-width\": options.width,\r\n            dashStyle: options.dashStyle || \"solid\"\r\n        }\r\n    },\r\n    _parseStyle: function(options, defaultColor) {\r\n        return {\r\n            elements: this._parseLineOptions(options, defaultColor)\r\n        }\r\n    },\r\n    _applyStyle: function(style) {\r\n        var that = this;\r\n        that._elementsGroup && that._elementsGroup.attr(style.elements);\r\n        (0, _iterator.each)(that._graphics || [], function(_, graphic) {\r\n            graphic.line && graphic.line.attr({\r\n                \"stroke-width\": style.elements[\"stroke-width\"]\r\n            }).sharp()\r\n        })\r\n    },\r\n    _drawElement: function(segment, group) {\r\n        return {\r\n            line: this._createMainElement(segment.line, {\r\n                \"stroke-width\": this._styles.normal.elements[\"stroke-width\"]\r\n            }).append(group)\r\n        }\r\n    },\r\n    _removeElement: function(element) {\r\n        element.line.remove()\r\n    },\r\n    _updateElement: function(element, segment, animate, animationComplete) {\r\n        var params = {\r\n            points: segment.line\r\n        };\r\n        var lineElement = element.line;\r\n        animate ? lineElement.animate(params, {}, animationComplete) : lineElement.attr(params)\r\n    },\r\n    _animateComplete: function() {\r\n        var that = this;\r\n        _scatter_series.chart._animateComplete.call(that);\r\n        that._markersGroup && that._markersGroup.animate({\r\n            opacity: 1\r\n        }, {\r\n            duration: that._defaultDuration\r\n        })\r\n    },\r\n    _animate: function() {\r\n        var that = this;\r\n        var lastIndex = that._graphics.length - 1;\r\n        (0, _iterator.each)(that._graphics || [], function(i, elem) {\r\n            var complete;\r\n            if (i === lastIndex) {\r\n                complete = function() {\r\n                    that._animateComplete()\r\n                }\r\n            }\r\n            that._updateElement(elem, that._segments[i], true, complete)\r\n        })\r\n    },\r\n    _drawPoint: function(options) {\r\n        _scatter_series.chart._drawPoint.call(this, {\r\n            point: options.point,\r\n            groups: options.groups\r\n        })\r\n    },\r\n    _createMainElement: function(points, settings) {\r\n        return this._renderer.path(points, \"line\").attr(settings)\r\n    },\r\n    _sortPoints: function(points, rotated) {\r\n        return rotated ? points.sort(function(p1, p2) {\r\n            return p2.y - p1.y\r\n        }) : points.sort(function(p1, p2) {\r\n            return p1.x - p2.x\r\n        })\r\n    },\r\n    _drawSegment: function(points, animationEnabled, segmentCount, lastSegment) {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        var segment = that._prepareSegment(points, rotated, lastSegment);\r\n        that._segments.push(segment);\r\n        if (!that._graphics[segmentCount]) {\r\n            that._graphics[segmentCount] = that._drawElement(animationEnabled ? that._getDefaultSegment(segment) : segment, that._elementsGroup)\r\n        } else {\r\n            if (!animationEnabled) {\r\n                that._updateElement(that._graphics[segmentCount], segment)\r\n            }\r\n        }\r\n    },\r\n    _getTrackerSettings: function() {\r\n        var that = this;\r\n        var defaultTrackerWidth = that._defaultTrackerWidth;\r\n        var strokeWidthFromElements = that._styles.normal.elements[\"stroke-width\"];\r\n        return {\r\n            \"stroke-width\": strokeWidthFromElements > defaultTrackerWidth ? strokeWidthFromElements : defaultTrackerWidth,\r\n            fill: \"none\"\r\n        }\r\n    },\r\n    _getMainPointsFromSegment: function(segment) {\r\n        return segment.line\r\n    },\r\n    _drawTrackerElement: function(segment) {\r\n        return this._createMainElement(this._getMainPointsFromSegment(segment), this._getTrackerSettings(segment))\r\n    },\r\n    _updateTrackerElement: function(segment, element) {\r\n        var settings = this._getTrackerSettings(segment);\r\n        settings.points = this._getMainPointsFromSegment(segment);\r\n        element.attr(settings)\r\n    },\r\n    checkSeriesViewportCoord: function(axis, coord) {\r\n        if (0 === this._points.length) {\r\n            return false\r\n        }\r\n        var range = axis.isArgumentAxis ? this.getArgumentRange() : this.getViewport();\r\n        var min = axis.getTranslator().translate(range.categories ? range.categories[0] : range.min);\r\n        var max = axis.getTranslator().translate(range.categories ? range.categories[range.categories.length - 1] : range.max);\r\n        var rotated = this.getOptions().rotated;\r\n        var inverted = axis.getOptions().inverted;\r\n        return axis.isArgumentAxis && (!rotated && !inverted || rotated && inverted) || !axis.isArgumentAxis && (rotated && !inverted || !rotated && inverted) ? coord >= min && coord <= max : coord >= max && coord <= min\r\n    }\r\n};\r\nvar lineSeries = chart.line = (0, _extend.extend)({}, _scatter_series.chart, lineMethods, {\r\n    getPointCenterByArg: function(arg) {\r\n        var value = this.getArgumentAxis().getTranslator().translate(arg);\r\n        return {\r\n            x: value,\r\n            y: value\r\n        }\r\n    },\r\n    getSeriesPairCoord: function(coord, isArgument) {\r\n        var that = this;\r\n        var oppositeCoord = null;\r\n        var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n        var needValueCoord = isArgument && !that._options.rotated || !isArgument && that._options.rotated;\r\n        for (var i = 0; i < nearestPoints.length; i++) {\r\n            var p = nearestPoints[i];\r\n            var k = (p[1].vy - p[0].vy) / (p[1].vx - p[0].vx);\r\n            var b = p[0].vy - p[0].vx * k;\r\n            var tmpCoord = void 0;\r\n            if (p[1].vx - p[0].vx === 0) {\r\n                tmpCoord = needValueCoord ? p[0].vy : p[0].vx\r\n            } else {\r\n                tmpCoord = needValueCoord ? k * coord + b : (coord - b) / k\r\n            }\r\n            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n                oppositeCoord = tmpCoord;\r\n                break\r\n            }\r\n        }\r\n        return oppositeCoord\r\n    }\r\n});\r\nchart.stepline = (0, _extend.extend)({}, lineSeries, {\r\n    _calculateStepLinePoints: function(points) {\r\n        var segment = [];\r\n        var coordName = this._options.rotated ? \"x\" : \"y\";\r\n        (0, _iterator.each)(points, function(i, pt) {\r\n            var point;\r\n            if (!i) {\r\n                segment.push(pt);\r\n                return\r\n            }\r\n            var step = segment[segment.length - 1][coordName];\r\n            if (step !== pt[coordName]) {\r\n                point = (0, _object.clone)(pt);\r\n                point[coordName] = step;\r\n                segment.push(point)\r\n            }\r\n            segment.push(pt)\r\n        });\r\n        return segment\r\n    },\r\n    _prepareSegment: function(points) {\r\n        return lineSeries._prepareSegment(this._calculateStepLinePoints(points))\r\n    },\r\n    getSeriesPairCoord: function(coord, isArgument) {\r\n        var oppositeCoord;\r\n        var rotated = this._options.rotated;\r\n        var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n        var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n        var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n        var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n        for (var i = 0; i < nearestPoints.length; i++) {\r\n            var p = nearestPoints[i];\r\n            var tmpCoord = void 0;\r\n            if (isArgument) {\r\n                tmpCoord = coord !== p[1][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]\r\n            } else {\r\n                tmpCoord = coord === p[0][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]\r\n            }\r\n            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n                oppositeCoord = tmpCoord;\r\n                break\r\n            }\r\n        }\r\n        return oppositeCoord\r\n    }\r\n});\r\nchart.spline = (0, _extend.extend)({}, lineSeries, {\r\n    _calculateBezierPoints: function(src, rotated) {\r\n        var bezierPoints = [];\r\n        var pointsCopy = src;\r\n        var checkExtremum = function(otherPointCoord, pointCoord, controlCoord) {\r\n            return otherPointCoord > pointCoord && controlCoord > otherPointCoord || otherPointCoord < pointCoord && controlCoord < otherPointCoord ? otherPointCoord : controlCoord\r\n        };\r\n        if (1 !== pointsCopy.length) {\r\n            pointsCopy.forEach(function(curPoint, i) {\r\n                var leftControlX;\r\n                var leftControlY;\r\n                var rightControlX;\r\n                var rightControlY;\r\n                var prevPoint = pointsCopy[i - 1];\r\n                var nextPoint = pointsCopy[i + 1];\r\n                var x1;\r\n                var x2;\r\n                var y1;\r\n                var y2;\r\n                var lambda = .5;\r\n                var a;\r\n                var b;\r\n                var c;\r\n                var xc;\r\n                var yc;\r\n                var shift;\r\n                if (!i || i === pointsCopy.length - 1) {\r\n                    bezierPoints.push(curPoint, curPoint);\r\n                    return\r\n                }\r\n                var xCur = curPoint.x;\r\n                var yCur = curPoint.y;\r\n                x1 = prevPoint.x;\r\n                x2 = nextPoint.x;\r\n                y1 = prevPoint.y;\r\n                y2 = nextPoint.y;\r\n                var curIsExtremum = !!(!rotated && (yCur <= prevPoint.y && yCur <= nextPoint.y || yCur >= prevPoint.y && yCur >= nextPoint.y) || rotated && (xCur <= prevPoint.x && xCur <= nextPoint.x || xCur >= prevPoint.x && xCur >= nextPoint.x));\r\n                if (curIsExtremum) {\r\n                    if (!rotated) {\r\n                        rightControlY = leftControlY = yCur;\r\n                        rightControlX = (xCur + nextPoint.x) / 2;\r\n                        leftControlX = (xCur + prevPoint.x) / 2\r\n                    } else {\r\n                        rightControlX = leftControlX = xCur;\r\n                        rightControlY = (yCur + nextPoint.y) / 2;\r\n                        leftControlY = (yCur + prevPoint.y) / 2\r\n                    }\r\n                } else {\r\n                    a = y2 - y1;\r\n                    b = x1 - x2;\r\n                    c = y1 * x2 - x1 * y2;\r\n                    if (!rotated) {\r\n                        if (!b) {\r\n                            bezierPoints.push(curPoint, curPoint, curPoint);\r\n                            return\r\n                        }\r\n                        xc = xCur;\r\n                        yc = -1 * (a * xc + c) / b;\r\n                        shift = yc - yCur;\r\n                        y1 -= shift;\r\n                        y2 -= shift\r\n                    } else {\r\n                        if (!a) {\r\n                            bezierPoints.push(curPoint, curPoint, curPoint);\r\n                            return\r\n                        }\r\n                        yc = yCur;\r\n                        xc = -1 * (b * yc + c) / a;\r\n                        shift = xc - xCur;\r\n                        x1 -= shift;\r\n                        x2 -= shift\r\n                    }\r\n                    rightControlX = (xCur + lambda * x2) / (1 + lambda);\r\n                    rightControlY = (yCur + lambda * y2) / (1 + lambda);\r\n                    leftControlX = (xCur + lambda * x1) / (1 + lambda);\r\n                    leftControlY = (yCur + lambda * y1) / (1 + lambda)\r\n                }\r\n                if (!rotated) {\r\n                    leftControlY = checkExtremum(prevPoint.y, yCur, leftControlY);\r\n                    rightControlY = checkExtremum(nextPoint.y, yCur, rightControlY)\r\n                } else {\r\n                    leftControlX = checkExtremum(prevPoint.x, xCur, leftControlX);\r\n                    rightControlX = checkExtremum(nextPoint.x, xCur, rightControlX)\r\n                }\r\n                var leftPoint = clonePoint(curPoint, leftControlX, leftControlY);\r\n                var rightPoint = clonePoint(curPoint, rightControlX, rightControlY);\r\n                bezierPoints.push(leftPoint, curPoint, rightPoint)\r\n            })\r\n        } else {\r\n            bezierPoints.push(pointsCopy[0])\r\n        }\r\n        return bezierPoints\r\n    },\r\n    _prepareSegment: function(points, rotated) {\r\n        return lineSeries._prepareSegment(this._calculateBezierPoints(points, rotated))\r\n    },\r\n    _createMainElement: function(points, settings) {\r\n        return this._renderer.path(points, \"bezier\").attr(settings)\r\n    },\r\n    getSeriesPairCoord: function(coord, isArgument) {\r\n        var that = this;\r\n        var oppositeCoord = null;\r\n        var isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;\r\n        var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n        var bezierCoordName = !isOpposite ? \"x\" : \"y\";\r\n        var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n        var bezierOppositeCoordName = !isOpposite ? \"y\" : \"x\";\r\n        var axis = !isArgument ? that.getArgumentAxis() : that.getValueAxis();\r\n        var visibleArea = axis.getVisibleArea();\r\n        var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n        var _loop = function(i) {\r\n            var p = nearestPoints[i];\r\n            if (1 === p.length) {\r\n                visibleArea[0] <= p[0][oppositeCoordName] && visibleArea[1] >= p[0][oppositeCoordName] && (oppositeCoord = p[0][oppositeCoordName])\r\n            } else {\r\n                var ts = obtainCubicBezierTCoef(coord, p[0][coordName], p[1][bezierCoordName], p[2][bezierCoordName], p[3][coordName]);\r\n                ts.forEach(function(t) {\r\n                    if (t >= 0 && t <= 1) {\r\n                        var tmpCoord = Math.pow(1 - t, 3) * p[0][oppositeCoordName] + 3 * Math.pow(1 - t, 2) * t * p[1][bezierOppositeCoordName] + 3 * (1 - t) * t * t * p[2][bezierOppositeCoordName] + t * t * t * p[3][oppositeCoordName];\r\n                        if (visibleArea[0] <= tmpCoord && visibleArea[1] >= tmpCoord) {\r\n                            oppositeCoord = tmpCoord\r\n                        }\r\n                    }\r\n                })\r\n            }\r\n            if (null !== oppositeCoord) {\r\n                return \"break\"\r\n            }\r\n        };\r\n        for (var i = 0; i < nearestPoints.length; i++) {\r\n            var _ret = _loop(i);\r\n            if (\"break\" === _ret) {\r\n                break\r\n            }\r\n        }\r\n        return oppositeCoord\r\n    },\r\n    _getNearestPoints: function(point, nextPoint, bezierPoints) {\r\n        var index = bezierPoints.indexOf(point);\r\n        return [point, bezierPoints[index + 1], bezierPoints[index + 2], nextPoint]\r\n    },\r\n    _getBezierPoints: function() {\r\n        return this._segments.length > 0 ? this._segments.reduce(function(a, seg) {\r\n            return a.concat(seg.line)\r\n        }, []) : []\r\n    }\r\n});\r\npolar.line = (0, _extend.extend)({}, _scatter_series.polar, lineMethods, {\r\n    _sortPoints: function(points) {\r\n        return points\r\n    },\r\n    _prepareSegment: function(points, rotated, lastSegment) {\r\n        var preparedPoints = [];\r\n        var centerPoint = this.getValueAxis().getCenter();\r\n        var i;\r\n        lastSegment && this._closeSegment(points);\r\n        if (this.argumentAxisType !== DISCRETE && this.valueAxisType !== DISCRETE) {\r\n            for (i = 1; i < points.length; i++) {\r\n                preparedPoints = preparedPoints.concat(this._getTangentPoints(points[i], points[i - 1], centerPoint))\r\n            }\r\n            if (!preparedPoints.length) {\r\n                preparedPoints = points\r\n            }\r\n        } else {\r\n            return lineSeries._prepareSegment.call(this, points)\r\n        }\r\n        return {\r\n            line: preparedPoints\r\n        }\r\n    },\r\n    _getRemainingAngle: function(angle) {\r\n        var normAngle = (0, _utils.normalizeAngle)(angle);\r\n        return angle >= 0 ? 360 - normAngle : -normAngle\r\n    },\r\n    _closeSegment: function(points) {\r\n        var point;\r\n        if (this._segments.length) {\r\n            point = this._segments[0].line[0]\r\n        } else {\r\n            point = clonePoint(points[0], points[0].x, points[0].y, points[0].angle)\r\n        }\r\n        point = this._modifyReflectedPoint(point, points[points.length - 1]);\r\n        if (point) {\r\n            points.push(point)\r\n        }\r\n    },\r\n    _modifyReflectedPoint: function(point, lastPoint) {\r\n        if (lastPoint.angle === point.angle) {\r\n            return\r\n        }\r\n        if ((0, _utils.normalizeAngle)(round(lastPoint.angle)) === (0, _utils.normalizeAngle)(round(point.angle))) {\r\n            point.angle = lastPoint.angle\r\n        } else {\r\n            var differenceAngle = lastPoint.angle - point.angle;\r\n            point.angle = lastPoint.angle + this._getRemainingAngle(differenceAngle)\r\n        }\r\n        return point\r\n    },\r\n    _getTangentPoints: function(point, prevPoint, centerPoint) {\r\n        var tangentPoints = [];\r\n        var betweenAngle = Math.round(prevPoint.angle - point.angle);\r\n        var tan = (prevPoint.radius - point.radius) / betweenAngle;\r\n        var i;\r\n        if (0 === betweenAngle) {\r\n            tangentPoints = [prevPoint, point]\r\n        } else {\r\n            if (betweenAngle > 0) {\r\n                for (i = betweenAngle; i >= 0; i--) {\r\n                    tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, i))\r\n                }\r\n            } else {\r\n                for (i = 0; i >= betweenAngle; i--) {\r\n                    tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, betweenAngle - i))\r\n                }\r\n            }\r\n        }\r\n        return tangentPoints\r\n    },\r\n    getSeriesPairCoord: function(params, isArgument) {\r\n        var that = this;\r\n        var argAxis = that.getArgumentAxis();\r\n        var paramName = isArgument ? \"angle\" : \"radius\";\r\n        var coordParam = params[paramName];\r\n        var centerPoint = argAxis.getCenter();\r\n        var getLengthByCoords = function(p1, p2) {\r\n            return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2))\r\n        };\r\n        var isInsideInterval = function(prevPoint, point, _ref) {\r\n            var x = _ref.x,\r\n                y = _ref.y;\r\n            return getLengthByCoords({\r\n                x: x,\r\n                y: y\r\n            }, centerPoint) <= argAxis.getRadius() && min(prevPoint.x, point.x) <= x && max(prevPoint.x, point.x) >= x && min(prevPoint.y, point.y) <= y && max(prevPoint.y, point.y) >= y\r\n        };\r\n        var coords;\r\n        var neighborPoints = that.getNeighborPoints(coordParam, paramName);\r\n        if (1 === neighborPoints.length) {\r\n            coords = neighborPoints[0]\r\n        } else {\r\n            if (neighborPoints.length > 1) {\r\n                var prevPoint = neighborPoints[0];\r\n                var point = neighborPoints[1];\r\n                if (that.argumentAxisType !== DISCRETE && that.valueAxisType !== DISCRETE) {\r\n                    var tan;\r\n                    var stepAngle;\r\n                    if (isArgument) {\r\n                        tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);\r\n                        stepAngle = coordParam - point.angle\r\n                    } else {\r\n                        tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);\r\n                        stepAngle = (coordParam - point.radius) / tan\r\n                    }\r\n                    coords = getTangentPoint(point, prevPoint, centerPoint, tan, stepAngle)\r\n                } else {\r\n                    if (isArgument) {\r\n                        var cosSin = (0, _utils.getCosAndSin)(-coordParam);\r\n                        var k1 = (point.y - prevPoint.y) / (point.x - prevPoint.x);\r\n                        var b1 = prevPoint.y - prevPoint.x * k1;\r\n                        var k2 = cosSin.sin / cosSin.cos;\r\n                        var b2 = centerPoint.y - k2 * centerPoint.x;\r\n                        var x = (b2 - b1) / (k1 - k2);\r\n                        var y = k1 * x + b1;\r\n                        if (isInsideInterval(prevPoint, point, {\r\n                                x: x,\r\n                                y: y\r\n                            })) {\r\n                            var quarter = abs((0, _math.trunc)((360 + coordParam) / 90) % 4);\r\n                            if (0 === quarter && x >= centerPoint.x && y <= centerPoint.y || 1 === quarter && x <= centerPoint.x && y <= centerPoint.y || 2 === quarter && x <= centerPoint.x && y >= centerPoint.y || 3 === quarter && x >= centerPoint.x && y >= centerPoint.y) {\r\n                                coords = {\r\n                                    x: x,\r\n                                    y: y\r\n                                }\r\n                            }\r\n                        }\r\n                    } else {\r\n                        var k = (point.y - prevPoint.y) / (point.x - prevPoint.x);\r\n                        var y0 = prevPoint.y - prevPoint.x * k;\r\n                        var a = 1 + k * k;\r\n                        var b = -2 * centerPoint.x + 2 * k * y0 - 2 * k * centerPoint.y;\r\n                        var c = -pow(coordParam, 2) + pow(y0 - centerPoint.y, 2) + pow(centerPoint.x, 2);\r\n                        var d = b * b - 4 * a * c;\r\n                        if (d >= 0) {\r\n                            var x1 = (-b - sqrt(d)) / (2 * a);\r\n                            var x2 = (-b + sqrt(d)) / (2 * a);\r\n                            var y1 = k * x1 + y0;\r\n                            var y2 = k * x2 + y0;\r\n                            coords = isInsideInterval(prevPoint, point, {\r\n                                x: x1,\r\n                                y: y1\r\n                            }) ? {\r\n                                x: x1,\r\n                                y: y1\r\n                            } : isInsideInterval(prevPoint, point, {\r\n                                x: x2,\r\n                                y: y2\r\n                            }) ? {\r\n                                x: x2,\r\n                                y: y2\r\n                            } : void 0\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return coords\r\n    },\r\n    getNeighborPoints: function(param, paramName) {\r\n        var points = this.getPoints();\r\n        var neighborPoints = [];\r\n        if (this.getOptions().closed) {\r\n            points = (0, _extend.extend)(true, [], points);\r\n            var lastPoint = points[points.length - 1];\r\n            var firstPointCopy = clonePoint(points[0], points[0].x, points[0].y, points[0].angle);\r\n            var lastPointCopy = clonePoint(lastPoint, lastPoint.x, lastPoint.y, lastPoint.angle);\r\n            var rearwardRefPoint = this._modifyReflectedPoint(firstPointCopy, lastPoint);\r\n            var forwardRefPoint = this._modifyReflectedPoint(lastPointCopy, points[0]);\r\n            if (forwardRefPoint) {\r\n                points.unshift(forwardRefPoint)\r\n            }\r\n            if (rearwardRefPoint) {\r\n                points.push(rearwardRefPoint)\r\n            }\r\n        }\r\n        for (var i = 1; i < points.length; i++) {\r\n            if (points[i - 1][paramName] === param) {\r\n                neighborPoints.push(points[i - 1])\r\n            } else {\r\n                if (points[i][paramName] === param) {\r\n                    neighborPoints.push(points[i])\r\n                } else {\r\n                    if (points[i][paramName] > param && points[i - 1][paramName] < param || points[i - 1][paramName] > param && points[i][paramName] < param) {\r\n                        neighborPoints.push(points[i - 1]);\r\n                        neighborPoints.push(points[i])\r\n                    }\r\n                }\r\n            }\r\n            if (neighborPoints.length > 0) {\r\n                break\r\n            }\r\n        }\r\n        return neighborPoints\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/text_box/utils.support.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.isInputEventsL2Supported = isInputEventsL2Supported;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction isModernAndroidDevice() {\r\n    var _devices$real = _devices.default.real(),\r\n        android = _devices$real.android,\r\n        version = _devices$real.version;\r\n    return android && version[0] > 4\r\n}\r\n\r\nfunction isInputEventsL2Supported() {\r\n    return \"onbeforeinput\" in _dom_adapter.default.createElement(\"input\") || isModernAndroidDevice()\r\n}\r\n","/**\r\n * DevExtreme (ui/drop_down_editor/ui.drop_down_list.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.drop_down_editor\"));\r\nvar _list = _interopRequireDefault(require(\"../list\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _ui3 = _interopRequireDefault(require(\"../editor/ui.data_expression\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _child_default_template = require(\"../../core/templates/child_default_template\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _grouped_data_converter_mixin = _interopRequireDefault(require(\"../shared/grouped_data_converter_mixin\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar LIST_ITEM_SELECTOR = \".dx-list-item\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar DROPDOWNLIST_POPUP_WRAPPER_CLASS = \"dx-dropdownlist-popup-wrapper\";\r\nvar SKIP_GESTURE_EVENT_CLASS = \"dx-skip-gesture-event\";\r\nvar SEARCH_EVENT = \"input\";\r\nvar SEARCH_MODES = [\"startswith\", \"contains\", \"endwith\", \"notcontains\"];\r\nvar DropDownList = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        var parent = this.callBase();\r\n        return (0, _extend.extend)({}, parent, {\r\n            tab: function(e) {\r\n                if (this._allowSelectItemByTab()) {\r\n                    this._saveValueChangeEvent(e);\r\n                    var $focusedItem = (0, _renderer.default)(this._list.option(\"focusedElement\"));\r\n                    $focusedItem.length && this._setSelectedElement($focusedItem)\r\n                }\r\n                parent.tab.apply(this, arguments)\r\n            },\r\n            space: _common.noop,\r\n            home: _common.noop,\r\n            end: _common.noop\r\n        })\r\n    },\r\n    _allowSelectItemByTab: function() {\r\n        return this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")\r\n    },\r\n    _setSelectedElement: function($element) {\r\n        var value = this._valueGetter(this._list._getItemData($element));\r\n        this._setValue(value)\r\n    },\r\n    _setValue: function(value) {\r\n        this.option(\"value\", value)\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), (0, _extend.extend)(_ui3.default._dataExpressionDefaultOptions(), {\r\n            displayValue: void 0,\r\n            searchEnabled: false,\r\n            searchMode: \"contains\",\r\n            searchTimeout: 500,\r\n            minSearchLength: 0,\r\n            searchExpr: null,\r\n            valueChangeEvent: \"input change keyup\",\r\n            selectedItem: null,\r\n            noDataText: _message.default.format(\"dxCollectionWidget-noDataText\"),\r\n            onSelectionChanged: null,\r\n            onItemClick: _common.noop,\r\n            showDataBeforeSearch: false,\r\n            grouped: false,\r\n            groupTemplate: \"group\",\r\n            popupPosition: {\r\n                my: \"left top\",\r\n                at: \"left bottom\",\r\n                offset: {\r\n                    h: 0,\r\n                    v: 0\r\n                },\r\n                collision: \"flip\"\r\n            },\r\n            wrapItemText: false\r\n        }))\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"ios\"\r\n            },\r\n            options: {\r\n                popupPosition: {\r\n                    offset: {\r\n                        v: -1\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"generic\"\r\n            },\r\n            options: {\r\n                buttonsLocation: \"bottom center\"\r\n            }\r\n        }])\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            value: true,\r\n            selectedItem: true,\r\n            displayValue: true\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initDataExpressions();\r\n        this._initActions();\r\n        this._setListDataSource();\r\n        this._validateSearchMode();\r\n        this._clearSelectedItem();\r\n        this._initItems()\r\n    },\r\n    _setListFocusedElementOptionChange: function() {\r\n        this._list._updateParentActiveDescendant = this._updateActiveDescendant.bind(this)\r\n    },\r\n    _initItems: function() {\r\n        var items = this.option().items;\r\n        if (items && !items.length && this._dataSource) {\r\n            this.option().items = this._dataSource.items()\r\n        }\r\n    },\r\n    _initActions: function() {\r\n        this._initContentReadyAction();\r\n        this._initSelectionChangedAction();\r\n        this._initItemClickAction()\r\n    },\r\n    _initContentReadyAction: function() {\r\n        this._contentReadyAction = this._createActionByOption(\"onContentReady\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _initSelectionChangedAction: function() {\r\n        this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _initItemClickAction: function() {\r\n        this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            item: new _child_default_template.ChildDefaultTemplate(\"item\")\r\n        })\r\n    },\r\n    _saveFocusOnWidget: function(e) {\r\n        if (this._list && this._list.initialOption(\"focusStateEnabled\")) {\r\n            this._focusInput()\r\n        }\r\n    },\r\n    _fitIntoRange: function(value, start, end) {\r\n        if (value > end) {\r\n            return start\r\n        }\r\n        if (value < start) {\r\n            return end\r\n        }\r\n        return value\r\n    },\r\n    _items: function() {\r\n        var items = this._getPlainItems(!this._list && this._dataSource.items());\r\n        var availableItems = new _query.default(items).filter(\"disabled\", \"<>\", true).toArray();\r\n        return availableItems\r\n    },\r\n    _calcNextItem: function(step) {\r\n        var items = this._items();\r\n        var nextIndex = this._fitIntoRange(this._getSelectedIndex() + step, 0, items.length - 1);\r\n        return items[nextIndex]\r\n    },\r\n    _getSelectedIndex: function() {\r\n        var items = this._items();\r\n        var selectedItem = this.option(\"selectedItem\");\r\n        var result = -1;\r\n        (0, _iterator.each)(items, function(index, item) {\r\n            if (this._isValueEquals(item, selectedItem)) {\r\n                result = index;\r\n                return false\r\n            }\r\n        }.bind(this));\r\n        return result\r\n    },\r\n    _createPopup: function() {\r\n        this.callBase();\r\n        this._updateCustomBoundaryContainer();\r\n        this._popup._wrapper().addClass(this._popupWrapperClass());\r\n        var $popupContent = this._popup.$content();\r\n        _events_engine.default.off($popupContent, \"mouseup\");\r\n        _events_engine.default.on($popupContent, \"mouseup\", this._saveFocusOnWidget.bind(this));\r\n        var that = this;\r\n        this._popup.on({\r\n            shown: function() {\r\n                that.$element().addClass(SKIP_GESTURE_EVENT_CLASS)\r\n            },\r\n            hidden: function() {\r\n                that.$element().removeClass(SKIP_GESTURE_EVENT_CLASS)\r\n            }\r\n        })\r\n    },\r\n    _updateCustomBoundaryContainer: function() {\r\n        var customContainer = this.option(\"dropDownOptions.container\");\r\n        var $container = customContainer && (0, _renderer.default)(customContainer);\r\n        if ($container && $container.length && !(0, _type.isWindow)($container.get(0))) {\r\n            var $containerWithParents = [].slice.call($container.parents());\r\n            $containerWithParents.unshift($container.get(0));\r\n            (0, _iterator.each)($containerWithParents, function(i, parent) {\r\n                if (parent === (0, _renderer.default)(\"body\").get(0)) {\r\n                    return false\r\n                } else {\r\n                    if (\"hidden\" === window.getComputedStyle(parent).overflowY) {\r\n                        this._$customBoundaryContainer = (0, _renderer.default)(parent);\r\n                        return false\r\n                    }\r\n                }\r\n            }.bind(this))\r\n        }\r\n    },\r\n    _popupWrapperClass: function() {\r\n        return DROPDOWNLIST_POPUP_WRAPPER_CLASS\r\n    },\r\n    _renderInputValue: function() {\r\n        var value = this._getCurrentValue();\r\n        return this._loadInputValue(value, this._setSelectedItem.bind(this)).always(this.callBase.bind(this, value))\r\n    },\r\n    _loadInputValue: function(value, callback) {\r\n        return this._loadItem(value).always(callback)\r\n    },\r\n    _getItemFromPlain: function(value, cache) {\r\n        var plainItems;\r\n        var selectedItem;\r\n        if (cache && \"object\" !== _typeof(value)) {\r\n            if (!cache.itemByValue) {\r\n                cache.itemByValue = {};\r\n                plainItems = this._getPlainItems();\r\n                plainItems.forEach(function(item) {\r\n                    cache.itemByValue[this._valueGetter(item)] = item\r\n                }, this)\r\n            }\r\n            selectedItem = cache.itemByValue[value]\r\n        }\r\n        if (!selectedItem) {\r\n            plainItems = this._getPlainItems();\r\n            selectedItem = (0, _common.grep)(plainItems, function(item) {\r\n                return this._isValueEquals(this._valueGetter(item), value)\r\n            }.bind(this))[0]\r\n        }\r\n        return selectedItem\r\n    },\r\n    _loadItem: function(value, cache) {\r\n        var selectedItem = this._getItemFromPlain(value, cache);\r\n        return void 0 !== selectedItem ? (new _deferred.Deferred).resolve(selectedItem).promise() : this._loadValue(value)\r\n    },\r\n    _getPlainItems: function(items) {\r\n        var plainItems = [];\r\n        items = items || this.option(\"items\") || this._dataSource.items() || [];\r\n        for (var i = 0; i < items.length; i++) {\r\n            if (items[i] && items[i].items) {\r\n                plainItems = plainItems.concat(items[i].items)\r\n            } else {\r\n                plainItems.push(items[i])\r\n            }\r\n        }\r\n        return plainItems\r\n    },\r\n    _updateActiveDescendant: function() {\r\n        var _this$_list;\r\n        var opened = this.option(\"opened\");\r\n        var listFocusedItemId = null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.getFocusedItemId();\r\n        var isElementOnDom = (0, _renderer.default)(\"#\".concat(listFocusedItemId)).length > 0;\r\n        var activedescendant = opened && isElementOnDom && listFocusedItemId;\r\n        this.setAria({\r\n            activedescendant: activedescendant || null\r\n        })\r\n    },\r\n    _setSelectedItem: function(item) {\r\n        var displayValue = this._displayValue(item);\r\n        this.option(\"selectedItem\", (0, _common.ensureDefined)(item, null));\r\n        this.option(\"displayValue\", displayValue)\r\n    },\r\n    _displayValue: function(item) {\r\n        return this._displayGetter(item)\r\n    },\r\n    _refreshSelected: function() {\r\n        var cache = {};\r\n        this._listItemElements().each(function(_, itemElement) {\r\n            var $itemElement = (0, _renderer.default)(itemElement);\r\n            var itemValue = this._valueGetter($itemElement.data(LIST_ITEM_DATA_KEY));\r\n            var isItemSelected = this._isSelectedValue(itemValue, cache);\r\n            if (isItemSelected) {\r\n                this._list.selectItem($itemElement)\r\n            } else {\r\n                this._list.unselectItem($itemElement)\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _popupShownHandler: function() {\r\n        this.callBase();\r\n        this._setFocusPolicy()\r\n    },\r\n    _setFocusPolicy: function() {\r\n        if (!this.option(\"focusStateEnabled\") || !this._list) {\r\n            return\r\n        }\r\n        this._list.option(\"focusedElement\", null)\r\n    },\r\n    _isSelectedValue: function(value) {\r\n        return this._isValueEquals(value, this.option(\"value\"))\r\n    },\r\n    _validateSearchMode: function() {\r\n        var searchMode = this.option(\"searchMode\");\r\n        var normalizedSearchMode = searchMode.toLowerCase();\r\n        if ((0, _array.inArray)(normalizedSearchMode, SEARCH_MODES) < 0) {\r\n            throw _ui2.default.Error(\"E1019\", searchMode)\r\n        }\r\n    },\r\n    _clearSelectedItem: function() {\r\n        this.option(\"selectedItem\", null)\r\n    },\r\n    _processDataSourceChanging: function() {\r\n        this._setListDataSource();\r\n        this._renderInputValue().fail(function() {\r\n            if (this._isCustomValueAllowed()) {\r\n                return\r\n            }\r\n            this._clearSelectedItem()\r\n        }.bind(this))\r\n    },\r\n    _isCustomValueAllowed: function() {\r\n        return this.option(\"displayCustomValue\")\r\n    },\r\n    reset: function() {\r\n        this.callBase();\r\n        this._clearFilter();\r\n        this._clearSelectedItem();\r\n        this._preventFiltering = true\r\n    },\r\n    _listItemElements: function() {\r\n        return this._$list ? this._$list.find(LIST_ITEM_SELECTOR) : (0, _renderer.default)()\r\n    },\r\n    _popupConfig: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            templatesRenderAsynchronously: false,\r\n            autoResizeEnabled: false,\r\n            maxHeight: this._getMaxHeight.bind(this)\r\n        })\r\n    },\r\n    _renderPopupContent: function() {\r\n        this.callBase();\r\n        this._renderList()\r\n    },\r\n    _getKeyboardListeners: function() {\r\n        var canListHaveFocus = this._canListHaveFocus();\r\n        return this.callBase().concat([!canListHaveFocus && this._list])\r\n    },\r\n    _fireContentReadyAction: _common.noop,\r\n    _setAriaTargetForList: function() {\r\n        this._list._getAriaTarget = this._getAriaTarget.bind(this)\r\n    },\r\n    _renderList: function() {\r\n        this._listId = \"dx-\" + (new _guid.default)._value;\r\n        var $list = this._$list = (0, _renderer.default)(\"<div>\").attr(\"id\", this._listId).appendTo(this._popup.$content());\r\n        this._list = this._createComponent($list, _list.default, this._listConfig());\r\n        this._refreshList();\r\n        this._setAriaTargetForList();\r\n        this._list.option(\"_listAttributes\", {\r\n            role: \"combobox\"\r\n        });\r\n        this._renderPreventBlur(this._$list);\r\n        this._setListFocusedElementOptionChange()\r\n    },\r\n    _renderPreventBlur: function($target) {\r\n        var eventName = (0, _index.addNamespace)(\"mousedown\", \"dxDropDownList\");\r\n        _events_engine.default.off($target, eventName);\r\n        _events_engine.default.on($target, eventName, function(e) {\r\n            e.preventDefault()\r\n        }.bind(this))\r\n    },\r\n    _renderOpenedState: function() {\r\n        this.callBase();\r\n        this._list && this._updateActiveDescendant();\r\n        this.setAria({\r\n            controls: this._list && this._listId,\r\n            owns: this._popup && this._popupContentId\r\n        })\r\n    },\r\n    _setDefaultAria: function() {\r\n        this.setAria({\r\n            haspopup: \"listbox\",\r\n            autocomplete: \"list\"\r\n        })\r\n    },\r\n    _refreshList: function() {\r\n        if (this._list && this._shouldRefreshDataSource()) {\r\n            this._setListDataSource()\r\n        }\r\n    },\r\n    _shouldRefreshDataSource: function() {\r\n        var dataSourceProvided = !!this._list.option(\"dataSource\");\r\n        return dataSourceProvided !== this._needPassDataSourceToList()\r\n    },\r\n    _isDesktopDevice: function() {\r\n        return \"desktop\" === _devices.default.real().deviceType\r\n    },\r\n    _listConfig: function() {\r\n        var options = {\r\n            selectionMode: \"single\",\r\n            _templates: this.option(\"_templates\"),\r\n            templateProvider: this.option(\"templateProvider\"),\r\n            noDataText: this.option(\"noDataText\"),\r\n            grouped: this.option(\"grouped\"),\r\n            wrapItemText: this.option(\"wrapItemText\"),\r\n            onContentReady: this._listContentReadyHandler.bind(this),\r\n            itemTemplate: this.option(\"itemTemplate\"),\r\n            indicateLoading: false,\r\n            keyExpr: this._getCollectionKeyExpr(),\r\n            displayExpr: this._displayGetterExpr(),\r\n            groupTemplate: this.option(\"groupTemplate\"),\r\n            onItemClick: this._listItemClickAction.bind(this),\r\n            dataSource: this._getDataSource(),\r\n            _revertPageOnEmptyLoad: true,\r\n            hoverStateEnabled: this._isDesktopDevice() ? this.option(\"hoverStateEnabled\") : false,\r\n            focusStateEnabled: this._isDesktopDevice() ? this.option(\"focusStateEnabled\") : false\r\n        };\r\n        if (!this._canListHaveFocus()) {\r\n            options.tabIndex = null\r\n        }\r\n        return options\r\n    },\r\n    _canListHaveFocus: function() {\r\n        return false\r\n    },\r\n    _getDataSource: function() {\r\n        return this._needPassDataSourceToList() ? this._dataSource : null\r\n    },\r\n    _dataSourceOptions: function() {\r\n        return {\r\n            paginate: false\r\n        }\r\n    },\r\n    _getGroupedOption: function() {\r\n        return this.option(\"grouped\")\r\n    },\r\n    _dataSourceFromUrlLoadMode: function() {\r\n        return \"raw\"\r\n    },\r\n    _listContentReadyHandler: function() {\r\n        this._list = this._list || this._$list.dxList(\"instance\");\r\n        if (!this.option(\"deferRendering\")) {\r\n            this._refreshSelected()\r\n        }\r\n        this._dimensionChanged();\r\n        this._contentReadyAction()\r\n    },\r\n    _setListOption: function(optionName, value) {\r\n        this._setWidgetOption(\"_list\", arguments)\r\n    },\r\n    _listItemClickAction: function(e) {\r\n        this._listItemClickHandler(e);\r\n        this._itemClickAction(e)\r\n    },\r\n    _listItemClickHandler: _common.noop,\r\n    _setListDataSource: function() {\r\n        if (!this._list) {\r\n            return\r\n        }\r\n        this._setListOption(\"dataSource\", this._getDataSource());\r\n        if (!this._needPassDataSourceToList()) {\r\n            this._setListOption(\"items\", [])\r\n        }\r\n    },\r\n    _needPassDataSourceToList: function() {\r\n        return this.option(\"showDataBeforeSearch\") || this._isMinSearchLengthExceeded()\r\n    },\r\n    _isMinSearchLengthExceeded: function() {\r\n        return this._searchValue().toString().length >= this.option(\"minSearchLength\")\r\n    },\r\n    _needClearFilter: function() {\r\n        return this._canKeepDataSource() ? false : this._needPassDataSourceToList()\r\n    },\r\n    _canKeepDataSource: function() {\r\n        var _this$_dataSource;\r\n        var isMinSearchLengthExceeded = this._isMinSearchLengthExceeded();\r\n        return (null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.isLoaded()) && this.option(\"showDataBeforeSearch\") && this.option(\"minSearchLength\") && !isMinSearchLengthExceeded && !this._isLastMinSearchLengthExceeded\r\n    },\r\n    _searchValue: function() {\r\n        return this._input().val() || \"\"\r\n    },\r\n    _getSearchEvent: function() {\r\n        return (0, _index.addNamespace)(SEARCH_EVENT, this.NAME + \"Search\")\r\n    },\r\n    _getSetFocusPolicyEvent: function() {\r\n        return (0, _index.addNamespace)(\"input\", this.NAME + \"FocusPolicy\")\r\n    },\r\n    _renderEvents: function() {\r\n        this.callBase();\r\n        _events_engine.default.on(this._input(), this._getSetFocusPolicyEvent(), this._setFocusPolicy.bind(this));\r\n        if (this._shouldRenderSearchEvent()) {\r\n            _events_engine.default.on(this._input(), this._getSearchEvent(), this._searchHandler.bind(this))\r\n        }\r\n    },\r\n    _shouldRenderSearchEvent: function() {\r\n        return this.option(\"searchEnabled\")\r\n    },\r\n    _refreshEvents: function() {\r\n        _events_engine.default.off(this._input(), this._getSearchEvent());\r\n        _events_engine.default.off(this._input(), this._getSetFocusPolicyEvent());\r\n        this.callBase()\r\n    },\r\n    _searchHandler: function() {\r\n        if (!this._isMinSearchLengthExceeded()) {\r\n            this._searchCanceled();\r\n            return\r\n        }\r\n        var searchTimeout = this.option(\"searchTimeout\");\r\n        if (searchTimeout) {\r\n            this._clearSearchTimer();\r\n            this._searchTimer = setTimeout(this._searchDataSource.bind(this), searchTimeout)\r\n        } else {\r\n            this._searchDataSource()\r\n        }\r\n    },\r\n    _searchCanceled: function() {\r\n        this._clearSearchTimer();\r\n        if (this._needClearFilter()) {\r\n            this._filterDataSource(null)\r\n        }\r\n        this._refreshList()\r\n    },\r\n    _searchDataSource: function() {\r\n        this._filterDataSource(this._searchValue())\r\n    },\r\n    _filterDataSource: function(searchValue) {\r\n        this._clearSearchTimer();\r\n        var dataSource = this._dataSource;\r\n        if (dataSource) {\r\n            dataSource.searchExpr(this.option(\"searchExpr\") || this._displayGetterExpr());\r\n            dataSource.searchOperation(this.option(\"searchMode\"));\r\n            dataSource.searchValue(searchValue);\r\n            dataSource.load().done(this._dataSourceFiltered.bind(this, searchValue))\r\n        }\r\n    },\r\n    _clearFilter: function() {\r\n        var dataSource = this._dataSource;\r\n        dataSource && dataSource.searchValue() && dataSource.searchValue(null)\r\n    },\r\n    _dataSourceFiltered: function() {\r\n        this._isLastMinSearchLengthExceeded = this._isMinSearchLengthExceeded();\r\n        this._refreshList();\r\n        this._refreshPopupVisibility()\r\n    },\r\n    _shouldOpenPopup: function() {\r\n        return this._hasItemsToShow()\r\n    },\r\n    _refreshPopupVisibility: function() {\r\n        if (this.option(\"readOnly\") || !this._searchValue()) {\r\n            return\r\n        }\r\n        var shouldOpenPopup = this._shouldOpenPopup();\r\n        if (shouldOpenPopup && !this._isFocused()) {\r\n            return\r\n        }\r\n        this.option(\"opened\", shouldOpenPopup);\r\n        if (shouldOpenPopup) {\r\n            this._dimensionChanged()\r\n        }\r\n    },\r\n    _dataSourceChangedHandler: function(newItems) {\r\n        if (0 === this._dataSource.pageIndex()) {\r\n            this.option().items = newItems\r\n        } else {\r\n            this.option().items = this.option().items.concat(newItems)\r\n        }\r\n    },\r\n    _hasItemsToShow: function() {\r\n        var resultItems = this._dataSource && this._dataSource.items() || [];\r\n        var resultAmount = resultItems.length;\r\n        var isMinSearchLengthExceeded = this._needPassDataSourceToList();\r\n        return !!(isMinSearchLengthExceeded && resultAmount)\r\n    },\r\n    _clearSearchTimer: function() {\r\n        clearTimeout(this._searchTimer);\r\n        delete this._searchTimer\r\n    },\r\n    _popupShowingHandler: function() {\r\n        this._dimensionChanged()\r\n    },\r\n    _dimensionChanged: function() {\r\n        this.callBase(arguments);\r\n        this._popup && this._updatePopupDimensions()\r\n    },\r\n    _needPopupRepaint: function() {\r\n        if (!this._dataSource) {\r\n            return false\r\n        }\r\n        var currentPageIndex = this._dataSource.pageIndex();\r\n        var needRepaint = (0, _type.isDefined)(this._pageIndex) && currentPageIndex <= this._pageIndex;\r\n        this._pageIndex = currentPageIndex;\r\n        return needRepaint\r\n    },\r\n    _updatePopupDimensions: function() {\r\n        if (this._needPopupRepaint()) {\r\n            this._popup.repaint()\r\n        }\r\n        this._list && this._list.updateDimensions()\r\n    },\r\n    _getMaxHeight: function() {\r\n        var $element = this.$element();\r\n        var $customBoundaryContainer = this._$customBoundaryContainer;\r\n        var offsetTop = $element.offset().top - ($customBoundaryContainer ? $customBoundaryContainer.offset().top : 0);\r\n        var windowHeight = (0, _renderer.default)(window).outerHeight();\r\n        var containerHeight = $customBoundaryContainer ? Math.min($customBoundaryContainer.outerHeight(), windowHeight) : windowHeight;\r\n        var maxHeight = Math.max(offsetTop, containerHeight - offsetTop - $element.outerHeight());\r\n        return Math.min(.5 * containerHeight, maxHeight)\r\n    },\r\n    _clean: function() {\r\n        if (this._list) {\r\n            delete this._list\r\n        }\r\n        delete this._isLastMinSearchLengthExceeded;\r\n        this.callBase()\r\n    },\r\n    _dispose: function() {\r\n        this._clearSearchTimer();\r\n        this.callBase()\r\n    },\r\n    _setCollectionWidgetOption: function() {\r\n        this._setListOption.apply(this, arguments)\r\n    },\r\n    _setSubmitValue: function() {\r\n        var value = this.option(\"value\");\r\n        var submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value;\r\n        this._getSubmitElement().val(submitValue)\r\n    },\r\n    _shouldUseDisplayValue: function(value) {\r\n        return \"this\" === this.option(\"valueExpr\") && (0, _type.isObject)(value)\r\n    },\r\n    _optionChanged: function(args) {\r\n        this._dataExpressionOptionChanged(args);\r\n        switch (args.name) {\r\n            case \"hoverStateEnabled\":\r\n            case \"focusStateEnabled\":\r\n                this._isDesktopDevice() && this._setListOption(args.name, args.value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"items\":\r\n                if (!this.option(\"dataSource\")) {\r\n                    this._processDataSourceChanging()\r\n                }\r\n                break;\r\n            case \"dataSource\":\r\n                this._processDataSourceChanging();\r\n                break;\r\n            case \"valueExpr\":\r\n                this._renderValue();\r\n                this._setListOption(\"keyExpr\", this._getCollectionKeyExpr());\r\n                break;\r\n            case \"displayExpr\":\r\n                this._renderValue();\r\n                this._setListOption(\"displayExpr\", this._displayGetterExpr());\r\n                break;\r\n            case \"searchMode\":\r\n                this._validateSearchMode();\r\n                break;\r\n            case \"minSearchLength\":\r\n                this._refreshList();\r\n                break;\r\n            case \"searchEnabled\":\r\n            case \"showDataBeforeSearch\":\r\n            case \"searchExpr\":\r\n                this._invalidate();\r\n                break;\r\n            case \"onContentReady\":\r\n                this._initContentReadyAction();\r\n                break;\r\n            case \"onSelectionChanged\":\r\n                this._initSelectionChangedAction();\r\n                break;\r\n            case \"onItemClick\":\r\n                this._initItemClickAction();\r\n                break;\r\n            case \"grouped\":\r\n            case \"groupTemplate\":\r\n            case \"wrapItemText\":\r\n            case \"noDataText\":\r\n                this._setListOption(args.name);\r\n                break;\r\n            case \"displayValue\":\r\n                this.option(\"text\", args.value);\r\n                break;\r\n            case \"itemTemplate\":\r\n            case \"searchTimeout\":\r\n                break;\r\n            case \"selectedItem\":\r\n                if (args.previousValue !== args.value) {\r\n                    this._selectionChangedAction({\r\n                        selectedItem: args.value\r\n                    })\r\n                }\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n}).include(_ui3.default, _grouped_data_converter_mixin.default);\r\n(0, _component_registrator.default)(\"dxDropDownList\", DropDownList);\r\nvar _default = DropDownList;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/themes/generic.light.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar WHITE = \"#ffffff\";\r\nvar BLACK = \"#000000\";\r\nvar LIGHT_GREY = \"#d3d3d3\";\r\nvar GREY_GREEN = \"#303030\";\r\nvar SOME_GREY = \"#2b2b2b\";\r\nvar RED = \"#ff0000\";\r\nvar PRIMARY_TITLE_COLOR = \"#232323\";\r\nvar SECONDARY_TITLE_COLOR = \"#767676\";\r\nvar NONE = \"none\";\r\nvar SOLID = \"solid\";\r\nvar TOP = \"top\";\r\nvar RIGHT = \"right\";\r\nvar BOTTOM = \"bottom\";\r\nvar LEFT = \"left\";\r\nvar CENTER = \"center\";\r\nvar INSIDE = \"inside\";\r\nvar OUTSIDE = \"outside\";\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.light\",\r\n    isDefault: true,\r\n    font: {\r\n        color: SECONDARY_TITLE_COLOR,\r\n        family: \"'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif\",\r\n        weight: 400,\r\n        size: 12,\r\n        cursor: \"default\"\r\n    },\r\n    redrawOnResize: true,\r\n    backgroundColor: WHITE,\r\n    primaryTitleColor: PRIMARY_TITLE_COLOR,\r\n    secondaryTitleColor: SECONDARY_TITLE_COLOR,\r\n    gridColor: LIGHT_GREY,\r\n    axisColor: SECONDARY_TITLE_COLOR,\r\n    title: {\r\n        backgroundColor: WHITE,\r\n        font: {\r\n            size: 28,\r\n            family: \"'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif\",\r\n            weight: 200\r\n        },\r\n        subtitle: {\r\n            font: {\r\n                size: 16\r\n            },\r\n            offset: 0,\r\n            wordWrap: \"normal\",\r\n            textOverflow: \"ellipsis\"\r\n        },\r\n        wordWrap: \"normal\",\r\n        textOverflow: \"ellipsis\"\r\n    },\r\n    loadingIndicator: {\r\n        text: \"Loading...\"\r\n    },\r\n    \"export\": {\r\n        backgroundColor: WHITE,\r\n        margin: 10,\r\n        font: {\r\n            size: 14,\r\n            color: PRIMARY_TITLE_COLOR,\r\n            weight: 400\r\n        },\r\n        button: {\r\n            margin: {\r\n                top: 8,\r\n                left: 10,\r\n                right: 10,\r\n                bottom: 8\r\n            },\r\n            \"default\": {\r\n                color: \"#333\",\r\n                borderColor: \"#ddd\",\r\n                backgroundColor: WHITE\r\n            },\r\n            hover: {\r\n                color: \"#333\",\r\n                borderColor: \"#bebebe\",\r\n                backgroundColor: \"#e6e6e6\"\r\n            },\r\n            focus: {\r\n                color: BLACK,\r\n                borderColor: \"#9d9d9d\",\r\n                backgroundColor: \"#e6e6e6\"\r\n            },\r\n            active: {\r\n                color: \"#333\",\r\n                borderColor: \"#9d9d9d\",\r\n                backgroundColor: \"#d4d4d4\"\r\n            }\r\n        },\r\n        shadowColor: LIGHT_GREY\r\n    },\r\n    tooltip: {\r\n        enabled: false,\r\n        border: {\r\n            width: 1,\r\n            color: LIGHT_GREY,\r\n            dashStyle: SOLID,\r\n            visible: true\r\n        },\r\n        font: {\r\n            color: PRIMARY_TITLE_COLOR\r\n        },\r\n        color: WHITE,\r\n        arrowLength: 10,\r\n        paddingLeftRight: 18,\r\n        paddingTopBottom: 15,\r\n        textAlignment: \"center\",\r\n        shared: false,\r\n        location: CENTER,\r\n        shadow: {\r\n            opacity: .4,\r\n            offsetX: 0,\r\n            offsetY: 4,\r\n            blur: 2,\r\n            color: BLACK\r\n        },\r\n        interactive: false\r\n    },\r\n    legend: {\r\n        hoverMode: \"includePoints\",\r\n        verticalAlignment: TOP,\r\n        horizontalAlignment: RIGHT,\r\n        position: OUTSIDE,\r\n        visible: true,\r\n        margin: 10,\r\n        markerSize: 12,\r\n        border: {\r\n            visible: false,\r\n            width: 1,\r\n            cornerRadius: 0,\r\n            dashStyle: SOLID\r\n        },\r\n        paddingLeftRight: 20,\r\n        paddingTopBottom: 15,\r\n        columnCount: 0,\r\n        rowCount: 0,\r\n        columnItemSpacing: 20,\r\n        rowItemSpacing: 8,\r\n        title: {\r\n            backgroundColor: WHITE,\r\n            margin: {\r\n                left: 0,\r\n                bottom: 9,\r\n                right: 0,\r\n                top: 0\r\n            },\r\n            font: {\r\n                size: 18,\r\n                weight: 200\r\n            },\r\n            subtitle: {\r\n                offset: 0,\r\n                font: {\r\n                    size: 14\r\n                },\r\n                wordWrap: \"none\",\r\n                textOverflow: \"ellipsis\"\r\n            },\r\n            wordWrap: \"none\",\r\n            textOverflow: \"ellipsis\"\r\n        }\r\n    },\r\n    \"chart:common\": {\r\n        animation: {\r\n            enabled: true,\r\n            duration: 1e3,\r\n            easing: \"easeOutCubic\",\r\n            maxPointCountSupported: 300\r\n        },\r\n        commonSeriesSettings: {\r\n            border: {\r\n                visible: false,\r\n                width: 2\r\n            },\r\n            showInLegend: true,\r\n            visible: true,\r\n            hoverMode: \"nearestPoint\",\r\n            selectionMode: \"includePoints\",\r\n            hoverStyle: {\r\n                hatching: {\r\n                    direction: RIGHT,\r\n                    width: 2,\r\n                    step: 6,\r\n                    opacity: .75\r\n                },\r\n                border: {\r\n                    visible: false,\r\n                    width: 3\r\n                }\r\n            },\r\n            selectionStyle: {\r\n                hatching: {\r\n                    direction: RIGHT,\r\n                    width: 2,\r\n                    step: 6,\r\n                    opacity: .5\r\n                },\r\n                border: {\r\n                    visible: false,\r\n                    width: 3\r\n                }\r\n            },\r\n            valueErrorBar: {\r\n                displayMode: \"auto\",\r\n                value: 1,\r\n                color: BLACK,\r\n                lineWidth: 2,\r\n                edgeLength: 8\r\n            },\r\n            label: {\r\n                visible: false,\r\n                alignment: CENTER,\r\n                rotationAngle: 0,\r\n                horizontalOffset: 0,\r\n                verticalOffset: 0,\r\n                radialOffset: 0,\r\n                showForZeroValues: true,\r\n                customizeText: void 0,\r\n                maxLabelCount: void 0,\r\n                position: OUTSIDE,\r\n                font: {\r\n                    color: WHITE\r\n                },\r\n                border: {\r\n                    visible: false,\r\n                    width: 1,\r\n                    color: LIGHT_GREY,\r\n                    dashStyle: SOLID\r\n                },\r\n                connector: {\r\n                    visible: false,\r\n                    width: 1\r\n                }\r\n            }\r\n        },\r\n        seriesSelectionMode: \"single\",\r\n        pointSelectionMode: \"single\",\r\n        equalRowHeight: true,\r\n        dataPrepareSettings: {\r\n            checkTypeForAllData: false,\r\n            convertToAxisDataType: true,\r\n            sortingMethod: true\r\n        },\r\n        title: {\r\n            margin: 10\r\n        },\r\n        adaptiveLayout: {\r\n            width: 80,\r\n            height: 80,\r\n            keepLabels: true\r\n        },\r\n        _rtl: {\r\n            legend: {\r\n                itemTextPosition: LEFT\r\n            }\r\n        },\r\n        resolveLabelOverlapping: NONE\r\n    },\r\n    \"chart:common:axis\": {\r\n        visible: true,\r\n        valueMarginsEnabled: true,\r\n        placeholderSize: null,\r\n        logarithmBase: 10,\r\n        discreteAxisDivisionMode: \"betweenLabels\",\r\n        width: 1,\r\n        label: {\r\n            visible: true\r\n        },\r\n        grid: {\r\n            visible: false,\r\n            width: 1\r\n        },\r\n        minorGrid: {\r\n            visible: false,\r\n            width: 1,\r\n            opacity: .3\r\n        },\r\n        tick: {\r\n            visible: true,\r\n            width: 1,\r\n            length: 7,\r\n            shift: 3\r\n        },\r\n        minorTick: {\r\n            visible: false,\r\n            width: 1,\r\n            opacity: .3,\r\n            length: 7,\r\n            shift: 3\r\n        },\r\n        stripStyle: {\r\n            paddingLeftRight: 10,\r\n            paddingTopBottom: 5\r\n        },\r\n        constantLineStyle: {\r\n            width: 1,\r\n            color: BLACK,\r\n            dashStyle: SOLID,\r\n            label: {\r\n                visible: true,\r\n                position: INSIDE\r\n            }\r\n        },\r\n        marker: {\r\n            label: {}\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        font: {\r\n            color: \"#333333\"\r\n        },\r\n        tooltipEnabled: true,\r\n        border: {\r\n            width: 1,\r\n            color: \"#dddddd\",\r\n            dashStyle: SOLID,\r\n            visible: true\r\n        },\r\n        color: WHITE,\r\n        opacity: .9,\r\n        arrowLength: 14,\r\n        arrowWidth: 14,\r\n        paddingLeftRight: 10,\r\n        paddingTopBottom: 10,\r\n        shadow: {\r\n            opacity: .15,\r\n            offsetX: 0,\r\n            offsetY: 1,\r\n            blur: 4,\r\n            color: BLACK\r\n        },\r\n        image: {\r\n            width: 30,\r\n            height: 30\r\n        },\r\n        wordWrap: \"normal\",\r\n        textOverflow: \"ellipsis\",\r\n        allowDragging: false\r\n    },\r\n    chart: {\r\n        commonSeriesSettings: {\r\n            type: \"line\",\r\n            stack: \"default\",\r\n            aggregation: {\r\n                enabled: void 0\r\n            },\r\n            point: {\r\n                visible: true,\r\n                symbol: \"circle\",\r\n                size: 12,\r\n                border: {\r\n                    visible: false,\r\n                    width: 1\r\n                },\r\n                hoverMode: \"onlyPoint\",\r\n                selectionMode: \"onlyPoint\",\r\n                hoverStyle: {\r\n                    border: {\r\n                        visible: true,\r\n                        width: 4\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    border: {\r\n                        visible: true,\r\n                        width: 4\r\n                    }\r\n                }\r\n            },\r\n            scatter: {},\r\n            line: {\r\n                width: 2,\r\n                dashStyle: SOLID,\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            stackedline: {\r\n                width: 2,\r\n                dashStyle: SOLID,\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            stackedspline: {\r\n                width: 2,\r\n                dashStyle: SOLID,\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            fullstackedline: {\r\n                width: 2,\r\n                dashStyle: SOLID,\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            fullstackedspline: {\r\n                width: 2,\r\n                dashStyle: SOLID,\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            stepline: {\r\n                width: 2,\r\n                dashStyle: SOLID,\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            area: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            stackedarea: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            fullstackedarea: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            fullstackedsplinearea: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            steparea: {\r\n                border: {\r\n                    visible: true,\r\n                    width: 2\r\n                },\r\n                point: {\r\n                    visible: false\r\n                },\r\n                hoverStyle: {\r\n                    border: {\r\n                        visible: true,\r\n                        width: 3\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    border: {\r\n                        visible: true,\r\n                        width: 3\r\n                    }\r\n                },\r\n                opacity: .5\r\n            },\r\n            spline: {\r\n                width: 2,\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            splinearea: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            stackedsplinearea: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            bar: {\r\n                cornerRadius: 0,\r\n                point: {\r\n                    hoverStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    },\r\n                    selectionStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    }\r\n                }\r\n            },\r\n            stackedbar: {\r\n                cornerRadius: 0,\r\n                point: {\r\n                    hoverStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    },\r\n                    selectionStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    }\r\n                },\r\n                label: {\r\n                    position: INSIDE\r\n                }\r\n            },\r\n            fullstackedbar: {\r\n                cornerRadius: 0,\r\n                point: {\r\n                    hoverStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    },\r\n                    selectionStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    }\r\n                },\r\n                label: {\r\n                    position: INSIDE\r\n                }\r\n            },\r\n            rangebar: {\r\n                cornerRadius: 0,\r\n                point: {\r\n                    hoverStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    },\r\n                    selectionStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    }\r\n                }\r\n            },\r\n            rangearea: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            rangesplinearea: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            bubble: {\r\n                opacity: .5,\r\n                point: {\r\n                    hoverStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    },\r\n                    selectionStyle: {\r\n                        border: {\r\n                            visible: false\r\n                        }\r\n                    }\r\n                }\r\n            },\r\n            candlestick: {\r\n                width: 1,\r\n                reduction: {\r\n                    color: RED\r\n                },\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                },\r\n                point: {\r\n                    border: {\r\n                        visible: true\r\n                    }\r\n                }\r\n            },\r\n            stock: {\r\n                width: 1,\r\n                reduction: {\r\n                    color: RED\r\n                },\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                },\r\n                point: {\r\n                    border: {\r\n                        visible: true\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        crosshair: {\r\n            enabled: false,\r\n            color: \"#f05b41\",\r\n            width: 1,\r\n            dashStyle: SOLID,\r\n            label: {\r\n                visible: false,\r\n                font: {\r\n                    color: WHITE,\r\n                    size: 12\r\n                }\r\n            },\r\n            verticalLine: {\r\n                visible: true\r\n            },\r\n            horizontalLine: {\r\n                visible: true\r\n            }\r\n        },\r\n        commonAxisSettings: {\r\n            multipleAxesSpacing: 5,\r\n            forceUserTickInterval: false,\r\n            breakStyle: {\r\n                width: 5,\r\n                color: \"#ababab\",\r\n                line: \"waved\"\r\n            },\r\n            label: {\r\n                displayMode: \"standard\",\r\n                overlappingBehavior: \"hide\",\r\n                indentFromAxis: 10,\r\n                wordWrap: \"normal\",\r\n                textOverflow: \"none\"\r\n            },\r\n            title: {\r\n                font: {\r\n                    size: 16\r\n                },\r\n                margin: 6,\r\n                alignment: CENTER\r\n            },\r\n            constantLineStyle: {\r\n                paddingLeftRight: 10,\r\n                paddingTopBottom: 10\r\n            }\r\n        },\r\n        horizontalAxis: {\r\n            position: BOTTOM,\r\n            axisDivisionFactor: 70,\r\n            label: {\r\n                rotationAngle: 90,\r\n                staggeringSpacing: 5,\r\n                alignment: CENTER\r\n            },\r\n            stripStyle: {\r\n                label: {\r\n                    horizontalAlignment: CENTER,\r\n                    verticalAlignment: TOP\r\n                }\r\n            },\r\n            constantLineStyle: {\r\n                label: {\r\n                    horizontalAlignment: RIGHT,\r\n                    verticalAlignment: TOP\r\n                }\r\n            },\r\n            constantLines: []\r\n        },\r\n        verticalAxis: {\r\n            position: LEFT,\r\n            axisDivisionFactor: 40,\r\n            label: {\r\n                alignment: RIGHT\r\n            },\r\n            stripStyle: {\r\n                label: {\r\n                    horizontalAlignment: LEFT,\r\n                    verticalAlignment: CENTER\r\n                }\r\n            },\r\n            constantLineStyle: {\r\n                label: {\r\n                    horizontalAlignment: LEFT,\r\n                    verticalAlignment: TOP\r\n                }\r\n            },\r\n            constantLines: []\r\n        },\r\n        argumentAxis: {\r\n            endOnTick: false,\r\n            workWeek: [1, 2, 3, 4, 5]\r\n        },\r\n        valueAxis: {\r\n            grid: {\r\n                visible: true\r\n            },\r\n            autoBreaksEnabled: false,\r\n            maxAutoBreakCount: 4\r\n        },\r\n        commonPaneSettings: {\r\n            backgroundColor: NONE,\r\n            border: {\r\n                color: LIGHT_GREY,\r\n                width: 1,\r\n                visible: false,\r\n                top: true,\r\n                bottom: true,\r\n                left: true,\r\n                right: true,\r\n                dashStyle: SOLID\r\n            }\r\n        },\r\n        scrollBar: {\r\n            visible: false,\r\n            offset: 5,\r\n            color: \"gray\",\r\n            width: 10\r\n        },\r\n        adjustOnZoom: true,\r\n        autoHidePointMarkers: true,\r\n        rotated: false,\r\n        synchronizeMultiAxes: true,\r\n        stickyHovering: true,\r\n        barGroupPadding: .3,\r\n        minBubbleSize: 12,\r\n        maxBubbleSize: .2,\r\n        zoomAndPan: {\r\n            dragBoxStyle: {\r\n                color: \"#2a2a2a\",\r\n                opacity: .2\r\n            },\r\n            panKey: \"shift\",\r\n            allowMouseWheel: true,\r\n            allowTouchGestures: true\r\n        }\r\n    },\r\n    pie: {\r\n        innerRadius: .5,\r\n        minDiameter: .5,\r\n        type: \"pie\",\r\n        dataPrepareSettings: {\r\n            _skipArgumentSorting: true\r\n        },\r\n        commonSeriesSettings: {\r\n            pie: {\r\n                border: {\r\n                    visible: false,\r\n                    width: 2,\r\n                    color: WHITE\r\n                },\r\n                hoverStyle: {\r\n                    hatching: {\r\n                        direction: RIGHT,\r\n                        width: 4,\r\n                        step: 10,\r\n                        opacity: .75\r\n                    },\r\n                    border: {\r\n                        visible: false,\r\n                        width: 2\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    hatching: {\r\n                        direction: RIGHT,\r\n                        width: 4,\r\n                        step: 10,\r\n                        opacity: .5\r\n                    },\r\n                    border: {\r\n                        visible: false,\r\n                        width: 2\r\n                    }\r\n                }\r\n            },\r\n            doughnut: {\r\n                border: {\r\n                    visible: false,\r\n                    width: 2,\r\n                    color: WHITE\r\n                },\r\n                hoverStyle: {\r\n                    hatching: {\r\n                        direction: RIGHT,\r\n                        width: 4,\r\n                        step: 10,\r\n                        opacity: .75\r\n                    },\r\n                    border: {\r\n                        visible: false,\r\n                        width: 2\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    hatching: {\r\n                        direction: RIGHT,\r\n                        width: 4,\r\n                        step: 10,\r\n                        opacity: .5\r\n                    },\r\n                    border: {\r\n                        visible: false,\r\n                        width: 2\r\n                    }\r\n                }\r\n            },\r\n            donut: {\r\n                border: {\r\n                    visible: false,\r\n                    width: 2,\r\n                    color: WHITE\r\n                },\r\n                hoverStyle: {\r\n                    hatching: {\r\n                        direction: RIGHT,\r\n                        width: 4,\r\n                        step: 10,\r\n                        opacity: .75\r\n                    },\r\n                    border: {\r\n                        visible: false,\r\n                        width: 2\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    hatching: {\r\n                        direction: RIGHT,\r\n                        width: 4,\r\n                        step: 10,\r\n                        opacity: .5\r\n                    },\r\n                    border: {\r\n                        visible: false,\r\n                        width: 2\r\n                    }\r\n                }\r\n            },\r\n            label: {\r\n                textOverflow: \"ellipsis\",\r\n                wordWrap: \"normal\"\r\n            }\r\n        },\r\n        legend: {\r\n            hoverMode: \"allArgumentPoints\",\r\n            backgroundColor: NONE\r\n        },\r\n        adaptiveLayout: {\r\n            keepLabels: false\r\n        }\r\n    },\r\n    gauge: {\r\n        scale: {\r\n            tick: {\r\n                visible: true,\r\n                length: 5,\r\n                width: 2,\r\n                opacity: 1\r\n            },\r\n            minorTick: {\r\n                visible: false,\r\n                length: 3,\r\n                width: 1,\r\n                opacity: 1\r\n            },\r\n            label: {\r\n                visible: true,\r\n                alignment: CENTER,\r\n                hideFirstOrLast: \"last\",\r\n                overlappingBehavior: \"hide\"\r\n            },\r\n            position: TOP,\r\n            endOnTick: false\r\n        },\r\n        rangeContainer: {\r\n            offset: 0,\r\n            width: 5,\r\n            backgroundColor: \"#808080\"\r\n        },\r\n        valueIndicators: {\r\n            _default: {\r\n                color: \"#c2c2c2\"\r\n            },\r\n            rangebar: {\r\n                space: 2,\r\n                size: 10,\r\n                color: \"#cbc5cf\",\r\n                backgroundColor: NONE,\r\n                text: {\r\n                    indent: 0,\r\n                    font: {\r\n                        size: 14,\r\n                        color: null\r\n                    }\r\n                }\r\n            },\r\n            twocolorneedle: {\r\n                secondColor: \"#e18e92\"\r\n            },\r\n            trianglemarker: {\r\n                space: 2,\r\n                length: 14,\r\n                width: 13,\r\n                color: \"#8798a5\"\r\n            },\r\n            textcloud: {\r\n                arrowLength: 5,\r\n                horizontalOffset: 6,\r\n                verticalOffset: 3,\r\n                color: \"#679ec5\",\r\n                text: {\r\n                    font: {\r\n                        color: WHITE,\r\n                        size: 18\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        indicator: {\r\n            hasPositiveMeaning: true,\r\n            layout: {\r\n                horizontalAlignment: CENTER,\r\n                verticalAlignment: BOTTOM\r\n            },\r\n            text: {\r\n                font: {\r\n                    size: 18\r\n                }\r\n            }\r\n        },\r\n        _circular: {\r\n            scale: {\r\n                scaleDivisionFactor: 17,\r\n                orientation: OUTSIDE,\r\n                label: {\r\n                    indentFromTick: 10\r\n                }\r\n            },\r\n            rangeContainer: {\r\n                orientation: OUTSIDE\r\n            },\r\n            valueIndicatorType: \"rectangleneedle\",\r\n            subvalueIndicatorType: \"trianglemarker\",\r\n            valueIndicators: {\r\n                _type: \"rectangleneedle\",\r\n                _default: {\r\n                    offset: 20,\r\n                    indentFromCenter: 0,\r\n                    width: 2,\r\n                    spindleSize: 14,\r\n                    spindleGapSize: 10,\r\n                    beginAdaptingAtRadius: 50\r\n                },\r\n                triangleneedle: {\r\n                    width: 4\r\n                },\r\n                twocolorneedle: {\r\n                    space: 2,\r\n                    secondFraction: .4\r\n                },\r\n                rangebar: {\r\n                    offset: 30\r\n                },\r\n                trianglemarker: {\r\n                    offset: 6\r\n                },\r\n                textcloud: {\r\n                    offset: -6\r\n                }\r\n            }\r\n        },\r\n        _linear: {\r\n            scale: {\r\n                scaleDivisionFactor: 25,\r\n                horizontalOrientation: RIGHT,\r\n                verticalOrientation: BOTTOM,\r\n                label: {\r\n                    indentFromTick: -10\r\n                }\r\n            },\r\n            rangeContainer: {\r\n                horizontalOrientation: RIGHT,\r\n                verticalOrientation: BOTTOM\r\n            },\r\n            valueIndicatorType: \"rangebar\",\r\n            subvalueIndicatorType: \"trianglemarker\",\r\n            valueIndicators: {\r\n                _type: \"rectangle\",\r\n                _default: {\r\n                    offset: 2.5,\r\n                    length: 15,\r\n                    width: 15\r\n                },\r\n                rectangle: {\r\n                    width: 10\r\n                },\r\n                rangebar: {\r\n                    offset: 10,\r\n                    horizontalOrientation: RIGHT,\r\n                    verticalOrientation: BOTTOM\r\n                },\r\n                trianglemarker: {\r\n                    offset: 10,\r\n                    horizontalOrientation: LEFT,\r\n                    verticalOrientation: TOP\r\n                },\r\n                textcloud: {\r\n                    offset: -1,\r\n                    horizontalOrientation: LEFT,\r\n                    verticalOrientation: TOP\r\n                }\r\n            }\r\n        }\r\n    },\r\n    barGauge: {\r\n        backgroundColor: \"#e0e0e0\",\r\n        relativeInnerRadius: .3,\r\n        barSpacing: 4,\r\n        resolveLabelOverlapping: \"hide\",\r\n        label: {\r\n            indent: 20,\r\n            connectorWidth: 2,\r\n            font: {\r\n                size: 16\r\n            }\r\n        },\r\n        legend: {\r\n            visible: false\r\n        },\r\n        indicator: {\r\n            hasPositiveMeaning: true,\r\n            layout: {\r\n                horizontalAlignment: CENTER,\r\n                verticalAlignment: BOTTOM\r\n            },\r\n            text: {\r\n                font: {\r\n                    size: 18\r\n                }\r\n            }\r\n        }\r\n    },\r\n    rangeSelector: {\r\n        scale: {\r\n            valueMarginsEnabled: true,\r\n            width: 1,\r\n            color: BLACK,\r\n            opacity: .1,\r\n            showCustomBoundaryTicks: true,\r\n            label: {\r\n                overlappingBehavior: \"hide\",\r\n                alignment: CENTER,\r\n                visible: true,\r\n                topIndent: 7,\r\n                font: {\r\n                    size: 11\r\n                }\r\n            },\r\n            tick: {\r\n                width: 1,\r\n                color: BLACK,\r\n                opacity: .17,\r\n                visible: true,\r\n                length: 12\r\n            },\r\n            minorTick: {\r\n                width: 1,\r\n                color: BLACK,\r\n                opacity: .05,\r\n                visible: true,\r\n                length: 12\r\n            },\r\n            marker: {\r\n                width: 1,\r\n                color: \"#000000\",\r\n                opacity: .1,\r\n                visible: true,\r\n                separatorHeight: 33,\r\n                topIndent: 10,\r\n                textLeftIndent: 7,\r\n                textTopIndent: 11,\r\n                label: {}\r\n            },\r\n            logarithmBase: 10,\r\n            workWeek: [1, 2, 3, 4, 5],\r\n            breakStyle: {\r\n                width: 5,\r\n                color: \"#ababab\",\r\n                line: \"waved\"\r\n            },\r\n            endOnTick: false\r\n        },\r\n        selectedRangeColor: \"#606060\",\r\n        sliderMarker: {\r\n            visible: true,\r\n            paddingTopBottom: 2,\r\n            paddingLeftRight: 4,\r\n            color: \"#606060\",\r\n            invalidRangeColor: RED,\r\n            font: {\r\n                color: WHITE,\r\n                size: 11\r\n            }\r\n        },\r\n        sliderHandle: {\r\n            width: 1,\r\n            color: BLACK,\r\n            opacity: .2\r\n        },\r\n        shutter: {\r\n            opacity: .75\r\n        },\r\n        background: {\r\n            color: \"#c0bae1\",\r\n            visible: true,\r\n            image: {\r\n                location: \"full\"\r\n            }\r\n        },\r\n        behavior: {\r\n            snapToTicks: true,\r\n            animationEnabled: true,\r\n            moveSelectedRangeByClick: true,\r\n            manualRangeSelectionEnabled: true,\r\n            allowSlidersSwap: true,\r\n            callValueChanged: \"onMovingComplete\"\r\n        },\r\n        redrawOnResize: true,\r\n        chart: {\r\n            barGroupPadding: .3,\r\n            minBubbleSize: 12,\r\n            maxBubbleSize: .2,\r\n            topIndent: .1,\r\n            bottomIndent: 0,\r\n            valueAxis: {\r\n                inverted: false,\r\n                logarithmBase: 10\r\n            },\r\n            commonSeriesSettings: {\r\n                type: \"area\",\r\n                aggregation: {\r\n                    enabled: void 0\r\n                },\r\n                point: {\r\n                    visible: false\r\n                },\r\n                scatter: {\r\n                    point: {\r\n                        visible: true\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    map: {\r\n        title: {\r\n            margin: 10\r\n        },\r\n        background: {\r\n            borderWidth: 1,\r\n            borderColor: \"#cacaca\"\r\n        },\r\n        layer: {\r\n            label: {\r\n                enabled: false,\r\n                stroke: WHITE,\r\n                \"stroke-width\": 1,\r\n                \"stroke-opacity\": .7,\r\n                font: {\r\n                    color: SOME_GREY,\r\n                    size: 12\r\n                }\r\n            }\r\n        },\r\n        \"layer:area\": {\r\n            borderWidth: 1,\r\n            borderColor: WHITE,\r\n            color: \"#d2d2d2\",\r\n            hoveredBorderColor: GREY_GREEN,\r\n            selectedBorderWidth: 2,\r\n            selectedBorderColor: GREY_GREEN,\r\n            label: {\r\n                \"stroke-width\": 2,\r\n                font: {\r\n                    size: 16\r\n                }\r\n            }\r\n        },\r\n        \"layer:line\": {\r\n            borderWidth: 2,\r\n            color: \"#ba8365\",\r\n            hoveredColor: \"#a94813\",\r\n            selectedBorderWidth: 3,\r\n            selectedColor: \"#e55100\",\r\n            label: {\r\n                \"stroke-width\": 2,\r\n                font: {\r\n                    size: 16\r\n                }\r\n            }\r\n        },\r\n        \"layer:marker\": {\r\n            label: {\r\n                enabled: true,\r\n                \"stroke-width\": 1,\r\n                font: {\r\n                    size: 12\r\n                }\r\n            }\r\n        },\r\n        \"layer:marker:dot\": {\r\n            borderWidth: 2,\r\n            borderColor: WHITE,\r\n            size: 8,\r\n            selectedStep: 2,\r\n            backStep: 18,\r\n            backColor: WHITE,\r\n            backOpacity: .32,\r\n            shadow: true\r\n        },\r\n        \"layer:marker:bubble\": {\r\n            minSize: 20,\r\n            maxSize: 50,\r\n            hoveredBorderWidth: 1,\r\n            hoveredBorderColor: GREY_GREEN,\r\n            selectedBorderWidth: 2,\r\n            selectedBorderColor: GREY_GREEN\r\n        },\r\n        \"layer:marker:pie\": {\r\n            size: 50,\r\n            hoveredBorderWidth: 1,\r\n            hoveredBorderColor: GREY_GREEN,\r\n            selectedBorderWidth: 2,\r\n            selectedBorderColor: GREY_GREEN\r\n        },\r\n        \"layer:marker:image\": {\r\n            size: 20\r\n        },\r\n        legend: {\r\n            verticalAlignment: BOTTOM,\r\n            horizontalAlignment: RIGHT,\r\n            position: INSIDE,\r\n            backgroundOpacity: .65,\r\n            border: {\r\n                visible: true\r\n            },\r\n            paddingLeftRight: 16,\r\n            paddingTopBottom: 12\r\n        },\r\n        controlBar: {\r\n            borderColor: \"#5d5d5d\",\r\n            borderWidth: 3,\r\n            color: WHITE,\r\n            margin: 20,\r\n            opacity: .3\r\n        },\r\n        _rtl: {\r\n            legend: {\r\n                itemTextPosition: LEFT\r\n            }\r\n        }\r\n    },\r\n    treeMap: {\r\n        tile: {\r\n            border: {\r\n                width: 1,\r\n                opacity: .2,\r\n                color: \"#000000\"\r\n            },\r\n            color: \"#5f8b95\",\r\n            hoverStyle: {\r\n                hatching: {\r\n                    opacity: .75,\r\n                    step: 6,\r\n                    width: 2,\r\n                    direction: \"right\"\r\n                },\r\n                border: {}\r\n            },\r\n            selectionStyle: {\r\n                hatching: {\r\n                    opacity: .5,\r\n                    step: 6,\r\n                    width: 2,\r\n                    direction: \"right\"\r\n                },\r\n                border: {\r\n                    opacity: 1\r\n                }\r\n            },\r\n            label: {\r\n                visible: true,\r\n                paddingLeftRight: 5,\r\n                paddingTopBottom: 4,\r\n                font: {\r\n                    color: \"#ffffff\",\r\n                    weight: 600\r\n                },\r\n                shadow: {\r\n                    opacity: .6,\r\n                    offsetX: 0,\r\n                    offsetY: 1,\r\n                    blur: 2,\r\n                    color: \"#000000\"\r\n                },\r\n                wordWrap: \"normal\",\r\n                textOverflow: \"ellipsis\"\r\n            }\r\n        },\r\n        group: {\r\n            padding: 4,\r\n            border: {\r\n                width: 1\r\n            },\r\n            color: \"#eeeeee\",\r\n            hoverStyle: {\r\n                hatching: {\r\n                    opacity: 0,\r\n                    step: 6,\r\n                    width: 2,\r\n                    direction: \"right\"\r\n                },\r\n                border: {}\r\n            },\r\n            selectionStyle: {\r\n                hatching: {\r\n                    opacity: 0,\r\n                    step: 6,\r\n                    width: 2,\r\n                    direction: \"right\"\r\n                },\r\n                border: {}\r\n            },\r\n            label: {\r\n                visible: true,\r\n                paddingLeftRight: 5,\r\n                paddingTopBottom: 4,\r\n                font: {\r\n                    color: SECONDARY_TITLE_COLOR,\r\n                    weight: 600\r\n                },\r\n                textOverflow: \"ellipsis\"\r\n            }\r\n        },\r\n        title: {\r\n            subtitle: {}\r\n        },\r\n        tooltip: {},\r\n        loadingIndicator: {}\r\n    },\r\n    sparkline: {\r\n        lineColor: \"#666666\",\r\n        lineWidth: 2,\r\n        areaOpacity: .2,\r\n        minColor: \"#e8c267\",\r\n        maxColor: \"#e55253\",\r\n        barPositiveColor: \"#a9a9a9\",\r\n        barNegativeColor: \"#d7d7d7\",\r\n        winColor: \"#a9a9a9\",\r\n        lossColor: \"#d7d7d7\",\r\n        firstLastColor: \"#666666\",\r\n        pointSymbol: \"circle\",\r\n        pointColor: WHITE,\r\n        pointSize: 4,\r\n        type: \"line\",\r\n        argumentField: \"arg\",\r\n        valueField: \"val\",\r\n        winlossThreshold: 0,\r\n        showFirstLast: true,\r\n        showMinMax: false,\r\n        tooltip: {\r\n            enabled: true\r\n        }\r\n    },\r\n    bullet: {\r\n        color: \"#e8c267\",\r\n        targetColor: \"#666666\",\r\n        targetWidth: 4,\r\n        showTarget: true,\r\n        showZeroLevel: true,\r\n        tooltip: {\r\n            enabled: true\r\n        }\r\n    },\r\n    polar: {\r\n        commonSeriesSettings: {\r\n            type: \"scatter\",\r\n            closed: true,\r\n            point: {\r\n                visible: true,\r\n                symbol: \"circle\",\r\n                size: 12,\r\n                border: {\r\n                    visible: false,\r\n                    width: 1\r\n                },\r\n                hoverMode: \"onlyPoint\",\r\n                selectionMode: \"onlyPoint\",\r\n                hoverStyle: {\r\n                    border: {\r\n                        visible: true,\r\n                        width: 4\r\n                    },\r\n                    size: 12\r\n                },\r\n                selectionStyle: {\r\n                    border: {\r\n                        visible: true,\r\n                        width: 4\r\n                    },\r\n                    size: 12\r\n                }\r\n            },\r\n            scatter: {},\r\n            line: {\r\n                width: 2,\r\n                dashStyle: SOLID,\r\n                hoverStyle: {\r\n                    width: 3,\r\n                    hatching: {\r\n                        direction: NONE\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            area: {\r\n                point: {\r\n                    visible: false\r\n                },\r\n                opacity: .5\r\n            },\r\n            stackedline: {\r\n                width: 2\r\n            },\r\n            bar: {\r\n                opacity: .8\r\n            },\r\n            stackedbar: {\r\n                opacity: .8\r\n            }\r\n        },\r\n        adaptiveLayout: {\r\n            width: 80,\r\n            height: 80,\r\n            keepLabels: true\r\n        },\r\n        barGroupPadding: .3,\r\n        commonAxisSettings: {\r\n            visible: true,\r\n            forceUserTickInterval: false,\r\n            label: {\r\n                overlappingBehavior: \"hide\",\r\n                indentFromAxis: 5\r\n            },\r\n            grid: {\r\n                visible: true\r\n            },\r\n            minorGrid: {\r\n                visible: true\r\n            },\r\n            tick: {\r\n                visible: true\r\n            },\r\n            title: {\r\n                font: {\r\n                    size: 16\r\n                },\r\n                margin: 10\r\n            }\r\n        },\r\n        argumentAxis: {\r\n            startAngle: 0,\r\n            firstPointOnStartAngle: false,\r\n            period: void 0\r\n        },\r\n        valueAxis: {\r\n            endOnTick: false,\r\n            tick: {\r\n                visible: false\r\n            }\r\n        },\r\n        horizontalAxis: {\r\n            position: TOP,\r\n            axisDivisionFactor: 50,\r\n            label: {\r\n                alignment: CENTER\r\n            }\r\n        },\r\n        verticalAxis: {\r\n            position: TOP,\r\n            axisDivisionFactor: 30,\r\n            label: {\r\n                alignment: RIGHT\r\n            }\r\n        }\r\n    },\r\n    funnel: {\r\n        sortData: true,\r\n        valueField: \"val\",\r\n        colorField: \"color\",\r\n        argumentField: \"arg\",\r\n        hoverEnabled: true,\r\n        selectionMode: \"single\",\r\n        item: {\r\n            border: {\r\n                visible: false,\r\n                width: 2,\r\n                color: WHITE\r\n            },\r\n            hoverStyle: {\r\n                hatching: {\r\n                    opacity: .75,\r\n                    step: 6,\r\n                    width: 2,\r\n                    direction: RIGHT\r\n                },\r\n                border: {}\r\n            },\r\n            selectionStyle: {\r\n                hatching: {\r\n                    opacity: .5,\r\n                    step: 6,\r\n                    width: 2,\r\n                    direction: RIGHT\r\n                },\r\n                border: {}\r\n            }\r\n        },\r\n        title: {\r\n            margin: 10\r\n        },\r\n        adaptiveLayout: {\r\n            width: 80,\r\n            height: 80,\r\n            keepLabels: true\r\n        },\r\n        legend: {\r\n            visible: false\r\n        },\r\n        _rtl: {\r\n            legend: {\r\n                itemTextPosition: LEFT\r\n            }\r\n        },\r\n        tooltip: {\r\n            customizeTooltip: function(info) {\r\n                return {\r\n                    text: info.item.argument + \" \" + info.valueText\r\n                }\r\n            }\r\n        },\r\n        inverted: false,\r\n        algorithm: \"dynamicSlope\",\r\n        neckWidth: 0,\r\n        neckHeight: 0,\r\n        resolveLabelOverlapping: \"shift\",\r\n        label: {\r\n            textOverflow: \"ellipsis\",\r\n            wordWrap: \"normal\",\r\n            visible: true,\r\n            horizontalAlignment: RIGHT,\r\n            horizontalOffset: 0,\r\n            verticalOffset: 0,\r\n            showForZeroValues: false,\r\n            customizeText: function(info) {\r\n                return info.item.argument + \" \" + info.valueText\r\n            },\r\n            position: \"columns\",\r\n            font: {\r\n                color: WHITE\r\n            },\r\n            border: {\r\n                visible: false,\r\n                width: 1,\r\n                color: LIGHT_GREY,\r\n                dashStyle: SOLID\r\n            },\r\n            connector: {\r\n                visible: true,\r\n                width: 1,\r\n                opacity: .5\r\n            }\r\n        }\r\n    },\r\n    sankey: {\r\n        sourceField: \"source\",\r\n        targetField: \"target\",\r\n        weightField: \"weight\",\r\n        hoverEnabled: true,\r\n        alignment: CENTER,\r\n        adaptiveLayout: {\r\n            width: 80,\r\n            height: 80,\r\n            keepLabels: true\r\n        },\r\n        label: {\r\n            visible: true,\r\n            horizontalOffset: 8,\r\n            verticalOffset: 0,\r\n            overlappingBehavior: \"ellipsis\",\r\n            useNodeColors: false,\r\n            font: {\r\n                color: BLACK,\r\n                weight: 500\r\n            },\r\n            border: {\r\n                visible: false,\r\n                width: 2,\r\n                color: WHITE\r\n            },\r\n            customizeText: function(info) {\r\n                return info.title\r\n            },\r\n            shadow: {\r\n                opacity: .2,\r\n                offsetX: 0,\r\n                offsetY: 1,\r\n                blur: 1,\r\n                color: WHITE\r\n            }\r\n        },\r\n        title: {\r\n            margin: 10,\r\n            font: {\r\n                size: 28,\r\n                weight: 200\r\n            },\r\n            subtitle: {\r\n                font: {\r\n                    size: 16\r\n                }\r\n            }\r\n        },\r\n        tooltip: {\r\n            enabled: true\r\n        },\r\n        node: {\r\n            padding: 30,\r\n            width: 8,\r\n            opacity: 1,\r\n            border: {\r\n                color: WHITE,\r\n                width: 1,\r\n                visible: false\r\n            },\r\n            hoverStyle: {\r\n                hatching: {\r\n                    opacity: .75,\r\n                    step: 6,\r\n                    width: 2,\r\n                    direction: RIGHT\r\n                },\r\n                border: {}\r\n            }\r\n        },\r\n        link: {\r\n            color: \"#888888\",\r\n            colorMode: \"none\",\r\n            opacity: .3,\r\n            border: {\r\n                color: WHITE,\r\n                width: 1,\r\n                visible: false\r\n            },\r\n            hoverStyle: {\r\n                opacity: .5,\r\n                hatching: {\r\n                    opacity: .75,\r\n                    step: 6,\r\n                    width: 2,\r\n                    direction: RIGHT\r\n                },\r\n                border: {}\r\n            }\r\n        }\r\n    }\r\n});\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.light.compact\"\r\n}, \"generic.light\");\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointmentsPositioning.strategy.adaptive.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _uiSchedulerAppointmentsPositioningStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointmentsPositioning.strategy.base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar COLLECTOR_ADAPTIVE_SIZE = 28;\r\nvar COLLECTOR_ADAPTIVE_BOTTOM_OFFSET = 40;\r\nvar ADAPTIVE_APPOINTMENT_DEFAULT_OFFSET = 35;\r\nvar ADAPTIVE_APPOINTMENT_DEFAULT_WIDTH = 30;\r\nvar AdaptivePositioningStrategy = function(_BasePositioningStrat) {\r\n    _inherits(AdaptivePositioningStrategy, _BasePositioningStrat);\r\n    var _super = _createSuper(AdaptivePositioningStrategy);\r\n\r\n    function AdaptivePositioningStrategy() {\r\n        _classCallCheck(this, AdaptivePositioningStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(AdaptivePositioningStrategy, [{\r\n        key: \"getDropDownAppointmentWidth\",\r\n        value: function(intervalCount, isAllDay) {\r\n            return this.getDropDownButtonAdaptiveSize()\r\n        }\r\n    }, {\r\n        key: \"getDropDownButtonAdaptiveSize\",\r\n        value: function() {\r\n            return COLLECTOR_ADAPTIVE_SIZE\r\n        }\r\n    }, {\r\n        key: \"getCollectorTopOffset\",\r\n        value: function(allDay) {\r\n            var renderingStrategy = this.getRenderingStrategy();\r\n            if (renderingStrategy.hasAllDayAppointments() && allDay) {\r\n                return (renderingStrategy.getDefaultAllDayCellHeight() - renderingStrategy.getDropDownButtonAdaptiveSize()) / 2\r\n            } else {\r\n                return this.getRenderingStrategy().getDefaultCellHeight() - COLLECTOR_ADAPTIVE_BOTTOM_OFFSET\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getCollectorLeftOffset\",\r\n        value: function() {\r\n            return (this.getRenderingStrategy().getDefaultCellWidth() - COLLECTOR_ADAPTIVE_SIZE) / 2\r\n        }\r\n    }, {\r\n        key: \"getAppointmentDefaultOffset\",\r\n        value: function() {\r\n            return ADAPTIVE_APPOINTMENT_DEFAULT_OFFSET\r\n        }\r\n    }, {\r\n        key: \"getDynamicAppointmentCountPerCell\",\r\n        value: function() {\r\n            var renderingStrategy = this.getRenderingStrategy();\r\n            if (renderingStrategy.hasAllDayAppointments()) {\r\n                return {\r\n                    allDay: 0,\r\n                    simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount()\r\n                }\r\n            } else {\r\n                return 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getDropDownAppointmentHeight\",\r\n        value: function() {\r\n            return COLLECTOR_ADAPTIVE_SIZE\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentMinCount\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDefaultWidth\",\r\n        value: function() {\r\n            var renderingStrategy = this.getRenderingStrategy();\r\n            if (renderingStrategy.hasAllDayAppointments()) {\r\n                return ADAPTIVE_APPOINTMENT_DEFAULT_WIDTH\r\n            }\r\n            return _get(_getPrototypeOf(AdaptivePositioningStrategy.prototype), \"_getAppointmentDefaultWidth\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_calculateDynamicAppointmentCountPerCell\",\r\n        value: function() {\r\n            return Math.floor(this.getRenderingStrategy()._getAppointmentMaxWidth() / this.getRenderingStrategy()._getAppointmentDefaultWidth())\r\n        }\r\n    }]);\r\n    return AdaptivePositioningStrategy\r\n}(_uiSchedulerAppointmentsPositioningStrategy.default);\r\nvar _default = AdaptivePositioningStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.caret.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getCaretInBoundaries = getCaretInBoundaries;\r\nexports.getCaretOffset = exports.isCaretInBoundaries = exports.getCaretAfterFormat = exports.getCaretWithOffset = exports.getCaretBoundaries = void 0;\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getCaretBoundaries = function(text, format) {\r\n    if (\"string\" === typeof format) {\r\n        var signParts = format.split(\";\");\r\n        var sign = _number.default.getSign(text, format);\r\n        signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n        format = signParts[sign < 0 ? 1 : 0];\r\n        var mockEscapedStubs = function(str) {\r\n            return str.replace(/'([^']*)'/g, function(str) {\r\n                return str.split(\"\").map(function() {\r\n                    return \" \"\r\n                }).join(\"\").substr(2)\r\n            })\r\n        };\r\n        format = mockEscapedStubs(format);\r\n        var prefixStubLength = /^[^#0.,]*/.exec(format)[0].length;\r\n        var postfixStubLength = /[^#0.,]*$/.exec(format)[0].length;\r\n        return {\r\n            start: prefixStubLength,\r\n            end: text.length - postfixStubLength\r\n        }\r\n    } else {\r\n        return {\r\n            start: 0,\r\n            end: text.length\r\n        }\r\n    }\r\n};\r\nexports.getCaretBoundaries = getCaretBoundaries;\r\nvar _getDigitCountBeforeIndex = function(index, text) {\r\n    var decimalSeparator = _number.default.getDecimalSeparator();\r\n    var regExp = new RegExp(\"[^0-9\" + (0, _common.escapeRegExp)(decimalSeparator) + \"]\", \"g\");\r\n    var textBeforePosition = text.slice(0, index);\r\n    return textBeforePosition.replace(regExp, \"\").length\r\n};\r\nvar _reverseText = function(text) {\r\n    return text.split(\"\").reverse().join(\"\")\r\n};\r\nvar _getDigitPositionByIndex = function(digitIndex, text) {\r\n    if (!digitIndex) {\r\n        return -1\r\n    }\r\n    var regExp = /[0-9]/g;\r\n    var counter = 1;\r\n    var index = null;\r\n    var result = regExp.exec(text);\r\n    while (result) {\r\n        index = result.index;\r\n        if (!digitIndex || counter >= digitIndex) {\r\n            return index\r\n        }\r\n        counter++;\r\n        result = regExp.exec(text)\r\n    }\r\n    return null === index ? text.length : index\r\n};\r\nvar _trimNonNumericCharsFromEnd = function(text) {\r\n    return text.replace(/[^0-9e]+$/, \"\")\r\n};\r\nvar getCaretWithOffset = function(caret, offset) {\r\n    if (void 0 === caret.start) {\r\n        caret = {\r\n            start: caret,\r\n            end: caret\r\n        }\r\n    }\r\n    return {\r\n        start: caret.start + offset,\r\n        end: caret.end + offset\r\n    }\r\n};\r\nexports.getCaretWithOffset = getCaretWithOffset;\r\nvar getCaretAfterFormat = function(text, formatted, caret, format) {\r\n    caret = getCaretWithOffset(caret, 0);\r\n    var point = _number.default.getDecimalSeparator();\r\n    var isSeparatorBasedText = isSeparatorBasedString(text);\r\n    var pointPosition = isSeparatorBasedText ? 0 : text.indexOf(point);\r\n    var newPointPosition = formatted.indexOf(point);\r\n    var textParts = isSeparatorBasedText ? text.split(text[pointPosition]) : text.split(point);\r\n    var formattedParts = formatted.split(point);\r\n    var isCaretOnFloat = pointPosition !== -1 && caret.start > pointPosition;\r\n    if (isCaretOnFloat) {\r\n        var relativeIndex = caret.start - pointPosition - 1;\r\n        var digitsBefore = _getDigitCountBeforeIndex(relativeIndex, textParts[1]);\r\n        var newPosition = formattedParts[1] ? newPointPosition + 1 + _getDigitPositionByIndex(digitsBefore, formattedParts[1]) + 1 : formatted.length;\r\n        return getCaretInBoundaries(newPosition, formatted, format)\r\n    } else {\r\n        var formattedIntPart = _trimNonNumericCharsFromEnd(formattedParts[0]);\r\n        var positionFromEnd = textParts[0].length - caret.start;\r\n        var digitsFromEnd = _getDigitCountBeforeIndex(positionFromEnd, _reverseText(textParts[0]));\r\n        var newPositionFromEnd = _getDigitPositionByIndex(digitsFromEnd, _reverseText(formattedIntPart));\r\n        var newPositionFromBegin = formattedIntPart.length - (newPositionFromEnd + 1);\r\n        return getCaretInBoundaries(newPositionFromBegin, formatted, format)\r\n    }\r\n};\r\nexports.getCaretAfterFormat = getCaretAfterFormat;\r\n\r\nfunction isSeparatorBasedString(text) {\r\n    return 1 === text.length && !!text.match(/^[,.][0-9]*$/g)\r\n}\r\nvar isCaretInBoundaries = function(caret, text, format) {\r\n    caret = getCaretWithOffset(caret, 0);\r\n    var boundaries = getCaretInBoundaries(caret, text, format);\r\n    return caret.start >= boundaries.start && caret.end <= boundaries.end\r\n};\r\nexports.isCaretInBoundaries = isCaretInBoundaries;\r\n\r\nfunction getCaretInBoundaries(caret, text, format) {\r\n    caret = getCaretWithOffset(caret, 0);\r\n    var boundaries = getCaretBoundaries(text, format);\r\n    var adjustedCaret = {\r\n        start: (0, _math.fitIntoRange)(caret.start, boundaries.start, boundaries.end),\r\n        end: (0, _math.fitIntoRange)(caret.end, boundaries.start, boundaries.end)\r\n    };\r\n    return adjustedCaret\r\n}\r\nvar getCaretOffset = function(previousText, newText, format) {\r\n    var previousBoundaries = getCaretBoundaries(previousText, format);\r\n    var newBoundaries = getCaretBoundaries(newText, format);\r\n    return newBoundaries.start - previousBoundaries.start\r\n};\r\nexports.getCaretOffset = getCaretOffset;\r\n","/**\r\n * DevExtreme (viz/series/points/base_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Point = Point;\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _bubble_point = _interopRequireDefault(require(\"./bubble_point\"));\r\nvar _pie_point = _interopRequireDefault(require(\"./pie_point\"));\r\nvar _range_symbol_point = _interopRequireDefault(require(\"./range_symbol_point\"));\r\nvar _range_bar_point = _interopRequireDefault(require(\"./range_bar_point\"));\r\nvar _candlestick_point = _interopRequireDefault(require(\"./candlestick_point\"));\r\nvar _stock_point = _interopRequireDefault(require(\"./stock_point\"));\r\nvar _polar_point = require(\"./polar_point\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _common = require(\"../../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar mixins = {};\r\nvar _extend = _extend2.extend;\r\nvar statesConsts = _consts.default.states;\r\nvar SYMBOL_POINT = \"symbolPoint\";\r\nvar POLAR_SYMBOL_POINT = \"polarSymbolPoint\";\r\nvar BAR_POINT = \"barPoint\";\r\nvar POLAR_BAR_POINT = \"polarBarPoint\";\r\nvar PIE_POINT = \"piePoint\";\r\nvar SELECTED_STATE = statesConsts.selectedMark;\r\nvar HOVER_STATE = statesConsts.hoverMark;\r\nvar NORMAL_STATE = statesConsts.normalMark;\r\nvar HOVER = statesConsts.hover;\r\nvar NORMAL = statesConsts.normal;\r\nvar SELECTION = statesConsts.selection;\r\nvar pointTypes = {\r\n    chart: {\r\n        scatter: SYMBOL_POINT,\r\n        line: SYMBOL_POINT,\r\n        spline: SYMBOL_POINT,\r\n        stepline: SYMBOL_POINT,\r\n        stackedline: SYMBOL_POINT,\r\n        fullstackedline: SYMBOL_POINT,\r\n        stackedspline: SYMBOL_POINT,\r\n        fullstackedspline: SYMBOL_POINT,\r\n        stackedsplinearea: SYMBOL_POINT,\r\n        fullstackedsplinearea: SYMBOL_POINT,\r\n        area: SYMBOL_POINT,\r\n        splinearea: SYMBOL_POINT,\r\n        steparea: SYMBOL_POINT,\r\n        stackedarea: SYMBOL_POINT,\r\n        fullstackedarea: SYMBOL_POINT,\r\n        rangearea: \"rangeSymbolPoint\",\r\n        bar: BAR_POINT,\r\n        stackedbar: BAR_POINT,\r\n        fullstackedbar: BAR_POINT,\r\n        rangebar: \"rangeBarPoint\",\r\n        bubble: \"bubblePoint\",\r\n        stock: \"stockPoint\",\r\n        candlestick: \"candlestickPoint\"\r\n    },\r\n    pie: {\r\n        pie: PIE_POINT,\r\n        doughnut: PIE_POINT,\r\n        donut: PIE_POINT\r\n    },\r\n    polar: {\r\n        scatter: POLAR_SYMBOL_POINT,\r\n        line: POLAR_SYMBOL_POINT,\r\n        area: POLAR_SYMBOL_POINT,\r\n        bar: POLAR_BAR_POINT,\r\n        stackedbar: POLAR_BAR_POINT\r\n    }\r\n};\r\n\r\nfunction isNoneMode(mode) {\r\n    return \"none\" === (0, _utils.normalizeEnum)(mode)\r\n}\r\n\r\nfunction Point(series, dataItem, options) {\r\n    this.fullState = NORMAL_STATE;\r\n    this.series = series;\r\n    this.update(dataItem, options);\r\n    this._viewCounters = {\r\n        hover: 0,\r\n        selection: 0\r\n    };\r\n    this._emptySettings = {\r\n        fill: null,\r\n        stroke: null,\r\n        dashStyle: null\r\n    }\r\n}\r\nmixins.symbolPoint = _symbol_point.default;\r\nmixins.barPoint = _bar_point.default;\r\nmixins.bubblePoint = _bubble_point.default;\r\nmixins.piePoint = _pie_point.default;\r\nmixins.rangeSymbolPoint = _range_symbol_point.default;\r\nmixins.rangeBarPoint = _range_bar_point.default;\r\nmixins.candlestickPoint = _candlestick_point.default;\r\nmixins.stockPoint = _stock_point.default;\r\nmixins.polarSymbolPoint = _polar_point.polarSymbolPoint;\r\nmixins.polarBarPoint = _polar_point.polarBarPoint;\r\nPoint.prototype = {\r\n    constructor: Point,\r\n    getColor: function() {\r\n        if (!this.hasValue() && !this._styles.usePointCustomOptions) {\r\n            this.series.customizePoint(this, this._dataItem)\r\n        }\r\n        return this._styles.normal.fill || this.series.getColor()\r\n    },\r\n    _getStyle: function() {\r\n        return this._styles[this._currentStyle || \"normal\"]\r\n    },\r\n    update: function(dataItem, options) {\r\n        this.updateOptions(options);\r\n        this.updateData(dataItem)\r\n    },\r\n    updateData: function(dataItem) {\r\n        var that = this;\r\n        var argumentWasChanged = that.argument !== dataItem.argument;\r\n        that.argument = that.initialArgument = that.originalArgument = dataItem.argument;\r\n        that.tag = dataItem.tag;\r\n        that.index = dataItem.index;\r\n        that._dataItem = dataItem;\r\n        that.data = dataItem.data;\r\n        that.lowError = dataItem.lowError;\r\n        that.highError = dataItem.highError;\r\n        that.aggregationInfo = dataItem.aggregationInfo;\r\n        that._updateData(dataItem, argumentWasChanged);\r\n        !that.hasValue() && that.setInvisibility();\r\n        that._fillStyle();\r\n        that._updateLabelData()\r\n    },\r\n    deleteMarker: function() {\r\n        var that = this;\r\n        if (that.graphic) {\r\n            that.graphic.dispose()\r\n        }\r\n        that.graphic = null\r\n    },\r\n    draw: function(renderer, groups, animationEnabled, firstDrawing) {\r\n        var that = this;\r\n        if (that._needDeletingOnDraw || that.series.autoHidePointMarkers && !that.isSelected()) {\r\n            that.deleteMarker();\r\n            that._needDeletingOnDraw = false\r\n        }\r\n        if (that._needClearingOnDraw) {\r\n            that.clearMarker();\r\n            that._needClearingOnDraw = false\r\n        }\r\n        if (!that._hasGraphic()) {\r\n            that.getMarkerVisibility() && !that.series.autoHidePointMarkers && that._drawMarker(renderer, groups.markers, animationEnabled, firstDrawing)\r\n        } else {\r\n            that._updateMarker(animationEnabled, this._getStyle(), groups.markers)\r\n        }\r\n        that._drawLabel();\r\n        that._drawErrorBar(renderer, groups.errorBars, animationEnabled);\r\n        return that\r\n    },\r\n    _getViewStyle: function() {\r\n        var state = NORMAL_STATE;\r\n        var fullState = this.fullState;\r\n        var styles = [NORMAL, HOVER, SELECTION, SELECTION];\r\n        if (this._viewCounters.hover) {\r\n            state |= HOVER_STATE\r\n        }\r\n        if (this._viewCounters.selection) {\r\n            state |= SELECTED_STATE\r\n        }\r\n        if (isNoneMode(this.getOptions().selectionMode)) {\r\n            fullState &= ~SELECTED_STATE\r\n        }\r\n        if (isNoneMode(this.getOptions().hoverMode)) {\r\n            fullState &= ~HOVER_STATE\r\n        }\r\n        state |= fullState;\r\n        return styles[state]\r\n    },\r\n    applyView: function(legendCallback) {\r\n        var style = this._getViewStyle();\r\n        var that = this;\r\n        that._currentStyle = style;\r\n        if (!that.graphic && that.series.autoHidePointMarkers && (style === SELECTION || style === HOVER)) {\r\n            that._drawMarker(that.series.getRenderer(), that.series.getMarkersGroup())\r\n        }\r\n        if (that.graphic) {\r\n            if (that.series.autoHidePointMarkers && style !== SELECTION && style !== HOVER) {\r\n                that.deleteMarker()\r\n            } else {\r\n                if (\"normal\" === style) {\r\n                    that.clearMarker()\r\n                } else {\r\n                    that.graphic.toForeground()\r\n                }\r\n                that._updateMarker(true, that._styles[style], void 0, legendCallback)\r\n            }\r\n        }\r\n    },\r\n    setView: function(style) {\r\n        this._viewCounters[style]++;\r\n        this.applyView()\r\n    },\r\n    resetView: function(style) {\r\n        var viewCounters = this._viewCounters;\r\n        --viewCounters[style];\r\n        if (viewCounters[style] < 0) {\r\n            viewCounters[style] = 0\r\n        }\r\n        this.applyView()\r\n    },\r\n    releaseHoverState: function() {\r\n        var that = this;\r\n        if (that.graphic && !that.isSelected()) {\r\n            that.graphic.toBackground()\r\n        }\r\n    },\r\n    select: function() {\r\n        this.series.selectPoint(this)\r\n    },\r\n    clearSelection: function() {\r\n        this.series.deselectPoint(this)\r\n    },\r\n    hover: function() {\r\n        this.series.hoverPoint(this)\r\n    },\r\n    clearHover: function() {\r\n        this.series.clearPointHover()\r\n    },\r\n    showTooltip: function() {\r\n        this.series.showPointTooltip(this)\r\n    },\r\n    hideTooltip: function() {\r\n        this.series.hidePointTooltip(this)\r\n    },\r\n    _checkLabelsChanging: function(oldType, newType) {\r\n        var isNewRange = ~newType.indexOf(\"range\");\r\n        var isOldRange = ~oldType.indexOf(\"range\");\r\n        return isOldRange && !isNewRange || !isOldRange && isNewRange\r\n    },\r\n    updateOptions: function(newOptions) {\r\n        if (!newOptions) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var oldOptions = that._options;\r\n        var widgetType = newOptions.widgetType;\r\n        var oldType = oldOptions && oldOptions.type;\r\n        var newType = newOptions.type;\r\n        var newPointTypeMixin = pointTypes[widgetType][newType];\r\n        if (oldType !== newType) {\r\n            that._needDeletingOnDraw = true;\r\n            that._needClearingOnDraw = false;\r\n            if (oldType) {\r\n                that._checkLabelsChanging(oldType, newType) && that.deleteLabel();\r\n                that._resetType(mixins[pointTypes[oldType]])\r\n            }\r\n            that._setType(mixins[newPointTypeMixin])\r\n        } else {\r\n            that._needDeletingOnDraw = that._checkSymbol(oldOptions, newOptions);\r\n            that._needClearingOnDraw = that._checkCustomize(oldOptions, newOptions)\r\n        }\r\n        that._options = newOptions;\r\n        that._fillStyle();\r\n        that._updateLabelOptions(newPointTypeMixin)\r\n    },\r\n    translate: function() {\r\n        if (this.hasValue()) {\r\n            this._translate();\r\n            this.translated = true\r\n        }\r\n    },\r\n    _checkCustomize: function(oldOptions, newOptions) {\r\n        return oldOptions.styles.usePointCustomOptions && !newOptions.styles.usePointCustomOptions\r\n    },\r\n    _getCustomLabelVisibility: function() {\r\n        return this._styles.useLabelCustomOptions ? !!this._options.label.visible : null\r\n    },\r\n    getBoundingRect: function() {\r\n        return this._getGraphicBBox()\r\n    },\r\n    _resetType: function(methods) {\r\n        for (var methodName in methods) {\r\n            delete this[methodName]\r\n        }\r\n    },\r\n    _setType: function(methods) {\r\n        for (var methodName in methods) {\r\n            this[methodName] = methods[methodName]\r\n        }\r\n    },\r\n    isInVisibleArea: function() {\r\n        return this.inVisibleArea\r\n    },\r\n    isSelected: function() {\r\n        return !!(this.fullState & SELECTED_STATE)\r\n    },\r\n    isHovered: function() {\r\n        return !!(this.fullState & HOVER_STATE)\r\n    },\r\n    getOptions: function() {\r\n        return this._options\r\n    },\r\n    animate: function(complete, settings, partitionDuration) {\r\n        if (!this.graphic) {\r\n            complete && complete();\r\n            return\r\n        }\r\n        this.graphic.animate(settings, {\r\n            partitionDuration: partitionDuration\r\n        }, complete)\r\n    },\r\n    getCoords: function(min) {\r\n        var that = this;\r\n        if (!min) {\r\n            return {\r\n                x: that.x,\r\n                y: that.y\r\n            }\r\n        }\r\n        if (!that._options.rotated) {\r\n            return {\r\n                x: that.x,\r\n                y: that.minY + (that.y - that.minY ? 0 : 1)\r\n            }\r\n        }\r\n        return {\r\n            x: that.minX - (that.x - that.minX ? 0 : 1),\r\n            y: that.y\r\n        }\r\n    },\r\n    getDefaultCoords: function() {\r\n        var that = this;\r\n        return !that._options.rotated ? {\r\n            x: that.x,\r\n            y: that.defaultY\r\n        } : {\r\n            x: that.defaultX,\r\n            y: that.y\r\n        }\r\n    },\r\n    setDefaultCoords: function() {\r\n        var coords = this.getDefaultCoords();\r\n        this.x = coords.x;\r\n        this.y = coords.y\r\n    },\r\n    _getVisibleArea: function() {\r\n        return this.series.getVisibleArea()\r\n    },\r\n    _getArgTranslator: function() {\r\n        return this.series.getArgumentAxis().getTranslator()\r\n    },\r\n    _getValTranslator: function() {\r\n        return this.series.getValueAxis().getTranslator()\r\n    },\r\n    _calculateVisibility: function(x, y, width, height) {\r\n        var that = this;\r\n        var visibleArea = that._getVisibleArea();\r\n        var rotated = that._options.rotated;\r\n        if (visibleArea.minX > x + (width || 0) || visibleArea.maxX < x || visibleArea.minY > y + (height || 0) || visibleArea.maxY < y || rotated && (0, _type.isDefined)(width) && 0 !== width && (visibleArea.minX === x + width || visibleArea.maxX === x) || !rotated && (0, _type.isDefined)(height) && 0 !== height && (visibleArea.minY === y + height || visibleArea.maxY === y)) {\r\n            that.inVisibleArea = false\r\n        } else {\r\n            that.inVisibleArea = true\r\n        }\r\n    },\r\n    isArgumentCorrect: function() {\r\n        return this.series._argumentChecker(this.argument)\r\n    },\r\n    isValueCorrect: function() {\r\n        var valueChecker = this.series._valueChecker;\r\n        return valueChecker(this.getMinValue()) && valueChecker(this.getMaxValue())\r\n    },\r\n    hasValue: function() {\r\n        return null !== this.value && null !== this.minValue && this.isArgumentCorrect() && this.isValueCorrect()\r\n    },\r\n    hasCoords: _common.noop,\r\n    correctPosition: _common.noop,\r\n    correctRadius: _common.noop,\r\n    correctLabelRadius: _common.noop,\r\n    getCrosshairData: _common.noop,\r\n    getPointRadius: _common.noop,\r\n    _populatePointShape: _common.noop,\r\n    _checkSymbol: _common.noop,\r\n    getMarkerCoords: _common.noop,\r\n    hide: _common.noop,\r\n    show: _common.noop,\r\n    hideMarker: _common.noop,\r\n    setInvisibility: _common.noop,\r\n    clearVisibility: _common.noop,\r\n    isVisible: _common.noop,\r\n    resetCorrection: _common.noop,\r\n    correctValue: _common.noop,\r\n    resetValue: _common.noop,\r\n    setPercentValue: _common.noop,\r\n    correctCoordinates: _common.noop,\r\n    coordsIn: _common.noop,\r\n    getTooltipParams: _common.noop,\r\n    applyWordWrap: _common.noop,\r\n    setLabelTrackerData: _common.noop,\r\n    updateLabelCoord: _common.noop,\r\n    drawLabel: _common.noop,\r\n    correctLabelPosition: _common.noop,\r\n    getMinValue: _common.noop,\r\n    getMaxValue: _common.noop,\r\n    _drawErrorBar: _common.noop,\r\n    getMarkerVisibility: _common.noop,\r\n    dispose: function() {\r\n        var that = this;\r\n        that.deleteMarker();\r\n        that.deleteLabel();\r\n        that._errorBar && this._errorBar.dispose();\r\n        that._options = that._styles = that.series = that._errorBar = null\r\n    },\r\n    getTooltipFormatObject: function(tooltip, stackPoints) {\r\n        var that = this;\r\n        var tooltipFormatObject = that._getFormatObject(tooltip);\r\n        var sharedTooltipValuesArray = [];\r\n        var tooltipStackPointsFormatObject = [];\r\n        if (stackPoints) {\r\n            stackPoints.forEach(function(point) {\r\n                if (!point.isVisible()) {\r\n                    return\r\n                }\r\n                var formatObject = point._getFormatObject(tooltip);\r\n                tooltipStackPointsFormatObject.push(formatObject);\r\n                sharedTooltipValuesArray.push(formatObject.seriesName + \": \" + formatObject.valueText)\r\n            });\r\n            _extend(tooltipFormatObject, {\r\n                points: tooltipStackPointsFormatObject,\r\n                valueText: sharedTooltipValuesArray.join(\"\\n\"),\r\n                stackName: that.series.getStackName() || null\r\n            })\r\n        }\r\n        var aggregationInfo = that.aggregationInfo;\r\n        if (aggregationInfo) {\r\n            var axis = that.series.getArgumentAxis();\r\n            var rangeText = axis.formatRange(aggregationInfo.intervalStart, aggregationInfo.intervalEnd, aggregationInfo.aggregationInterval);\r\n            if (rangeText) {\r\n                tooltipFormatObject.valueText += \"\\n\".concat(rangeText)\r\n            }\r\n        }\r\n        return tooltipFormatObject\r\n    },\r\n    setHole: function(holeValue, position) {\r\n        var that = this;\r\n        var minValue = isFinite(that.minValue) ? that.minValue : 0;\r\n        if ((0, _type.isDefined)(holeValue)) {\r\n            if (\"left\" === position) {\r\n                that.leftHole = that.value - holeValue;\r\n                that.minLeftHole = minValue - holeValue\r\n            } else {\r\n                that.rightHole = that.value - holeValue;\r\n                that.minRightHole = minValue - holeValue\r\n            }\r\n        }\r\n    },\r\n    resetHoles: function() {\r\n        this.leftHole = null;\r\n        this.minLeftHole = null;\r\n        this.rightHole = null;\r\n        this.minRightHole = null\r\n    },\r\n    getLabel: function() {\r\n        return this._label\r\n    },\r\n    getLabels: function() {\r\n        return [this._label]\r\n    },\r\n    getCenterCoord: function() {\r\n        return {\r\n            x: this.x,\r\n            y: this.y\r\n        }\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/scheduler/tooltip_strategies/desktopTooltipStrategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.DesktopTooltipStrategy = void 0;\r\nvar _tooltipStrategyBase = require(\"./tooltipStrategyBase\");\r\nvar _tooltip = _interopRequireDefault(require(\"../../tooltip\"));\r\nvar _support = require(\"../../../core/utils/support\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar APPOINTMENT_TOOLTIP_WRAPPER_CLASS = \"dx-scheduler-appointment-tooltip-wrapper\";\r\nvar MAX_TOOLTIP_HEIGHT = 200;\r\nvar DesktopTooltipStrategy = function(_TooltipStrategyBase) {\r\n    _inherits(DesktopTooltipStrategy, _TooltipStrategyBase);\r\n    var _super = _createSuper(DesktopTooltipStrategy);\r\n\r\n    function DesktopTooltipStrategy() {\r\n        _classCallCheck(this, DesktopTooltipStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(DesktopTooltipStrategy, [{\r\n        key: \"_prepareBeforeVisibleChanged\",\r\n        value: function(dataList) {\r\n            this._tooltip.option(\"position\", {\r\n                my: \"bottom\",\r\n                at: \"top\",\r\n                boundary: this._getBoundary(dataList),\r\n                offset: this._extraOptions.offset,\r\n                collision: \"fit flipfit\"\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getBoundary\",\r\n        value: function(dataList) {\r\n            return this._options.isAppointmentInAllDayPanel(dataList[0].appointment) ? this._options.container : this._options.getScrollableContainer()\r\n        }\r\n    }, {\r\n        key: \"_onShown\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(DesktopTooltipStrategy.prototype), \"_onShown\", this).call(this);\r\n            if (this._extraOptions.isButtonClick) {\r\n                this._list.focus();\r\n                this._list.option(\"focusedElement\", null)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createListOption\",\r\n        value: function(target, dataList) {\r\n            var result = _get(_getPrototypeOf(DesktopTooltipStrategy.prototype), \"_createListOption\", this).call(this, target, dataList);\r\n            result.showScrollbar = _support.touch ? \"always\" : \"onHover\";\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_createTooltip\",\r\n        value: function(target, dataList) {\r\n            var tooltip = this._createTooltipElement(APPOINTMENT_TOOLTIP_WRAPPER_CLASS);\r\n            return this._options.createComponent(tooltip, _tooltip.default, {\r\n                target: target,\r\n                maxHeight: MAX_TOOLTIP_HEIGHT,\r\n                rtlEnabled: this._extraOptions.rtlEnabled,\r\n                onShown: this._onShown.bind(this),\r\n                contentTemplate: this._getContentTemplate(dataList)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_onListRender\",\r\n        value: function(e) {\r\n            return this._extraOptions.dragBehavior && this._extraOptions.dragBehavior(e)\r\n        }\r\n    }]);\r\n    return DesktopTooltipStrategy\r\n}(_tooltipStrategyBase.TooltipStrategyBase);\r\nexports.DesktopTooltipStrategy = DesktopTooltipStrategy;\r\n","/*!\n* DevExtreme (dx.messages.de.js)\n* Version: 20.2.4\n* Build date: Tue Dec 01 2020\n*\n* Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\n* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\n*/\n\"use strict\";\n\n! function(root, factory) {\r\n    if (\"function\" === typeof define && define.amd) {\r\n        define(function(require) {\r\n            factory(require(\"devextreme/localization\"))\r\n        })\r\n    } else {\r\n        if (\"object\" === typeof module && module.exports) {\r\n            factory(require(\"devextreme/localization\"))\r\n        } else {\r\n            factory(DevExpress.localization)\r\n        }\r\n    }\r\n}(this, function(localization) {\r\n    localization.loadMessages({\r\n        de: {\r\n            Yes: \"Ja\",\r\n            No: \"Nein\",\r\n            Cancel: \"Abbrechen\",\r\n            Clear: \"L\\xf6schen\",\r\n            Done: \"Fertig\",\r\n            Loading: \"Laden...\",\r\n            Select: \"Ausw\\xe4hlen...\",\r\n            Search: \"Suchen...\",\r\n            Back: \"Zur\\xfcck\",\r\n            OK: \"OK\",\r\n            \"dxCollectionWidget-noDataText\": \"Keine Daten verf\\xfcgbar\",\r\n            \"dxDropDownEditor-selectLabel\": \"Ausw\\xe4hlen\",\r\n            \"validation-required\": \"Pflichtfeld\",\r\n            \"validation-required-formatted\": \"{0} ist ein Pflichtfeld\",\r\n            \"validation-numeric\": \"Der Wert muss eine Zahl sein\",\r\n            \"validation-numeric-formatted\": \"{0} muss eine Zahl sein\",\r\n            \"validation-range\": \"Der Wert ist nicht im g\\xfcltigen Bereich\",\r\n            \"validation-range-formatted\": \"{0} ist nicht im g\\xfcltigen Bereich\",\r\n            \"validation-stringLength\": \"Die L\\xe4nge des Wertes ist nicht korrekt\",\r\n            \"validation-stringLength-formatted\": \"Die L\\xe4nge von {0} ist nicht korrekt\",\r\n            \"validation-custom\": \"Der Wert ist ung\\xfcltig\",\r\n            \"validation-custom-formatted\": \"{0} ist ung\\xfcltig\",\r\n            \"validation-async\": \"Der Wert ist ung\\xfcltig\",\r\n            \"validation-async-formatted\": \"{0} ist ung\\xfcltig\",\r\n            \"validation-compare\": \"Der Wert ist unpassend\",\r\n            \"validation-compare-formatted\": \"{0} ist unpassend\",\r\n            \"validation-pattern\": \"Der Wert passt nicht zum Muster\",\r\n            \"validation-pattern-formatted\": \"{0} passt nicht zum Muster\",\r\n            \"validation-email\": \"Die Email-Adresse ist ung\\xfcltig\",\r\n            \"validation-email-formatted\": \"{0} ist ung\\xfcltig\",\r\n            \"validation-mask\": \"Der Wert ist ung\\xfcltig\",\r\n            \"dxLookup-searchPlaceholder\": \"Minimale Anzahl Zeichen: {0}\",\r\n            \"dxList-pullingDownText\": \"Zum Aktualisieren nach unten ziehen\",\r\n            \"dxList-pulledDownText\": \"Zum Aktualisieren loslassen\",\r\n            \"dxList-refreshingText\": \"Aktualisiere...\",\r\n            \"dxList-pageLoadingText\": \"Laden...\",\r\n            \"dxList-nextButtonText\": \"Mehr\",\r\n            \"dxList-selectAll\": \"Alles ausw\\xe4hlen\",\r\n            \"dxListEditDecorator-delete\": \"Entfernen\",\r\n            \"dxListEditDecorator-more\": \"Mehr\",\r\n            \"dxScrollView-pullingDownText\": \"Zum Aktualisieren nach unten ziehen\",\r\n            \"dxScrollView-pulledDownText\": \"Zum Aktualisieren loslassen\",\r\n            \"dxScrollView-refreshingText\": \"Aktualisiere...\",\r\n            \"dxScrollView-reachBottomText\": \"Laden...\",\r\n            \"dxDateBox-simulatedDataPickerTitleTime\": \"Zeit ausw\\xe4hlen\",\r\n            \"dxDateBox-simulatedDataPickerTitleDate\": \"Datum ausw\\xe4hlen\",\r\n            \"dxDateBox-simulatedDataPickerTitleDateTime\": \"Datum und Zeit ausw\\xe4hlen\",\r\n            \"dxDateBox-validation-datetime\": \"Der Wert muss ein Datum oder eine Uhrzeit sein\",\r\n            \"dxFileUploader-selectFile\": \"Datei ausw\\xe4hlen\",\r\n            \"dxFileUploader-dropFile\": \"oder hierher ziehen\",\r\n            \"dxFileUploader-bytes\": \"Bytes\",\r\n            \"dxFileUploader-kb\": \"kb\",\r\n            \"dxFileUploader-Mb\": \"Mb\",\r\n            \"dxFileUploader-Gb\": \"Gb\",\r\n            \"dxFileUploader-upload\": \"Hochladen\",\r\n            \"dxFileUploader-uploaded\": \"Hochgeladen\",\r\n            \"dxFileUploader-readyToUpload\": \"Bereit zum hochladen\",\r\n            \"dxFileUploader-uploadAbortedMessage\": \"Upload abgebrochen\",\r\n            \"dxFileUploader-uploadFailedMessage\": \"Fehler beim hochladen\",\r\n            \"dxFileUploader-invalidFileExtension\": \"Unzul\\xe4ssiger Dateityp\",\r\n            \"dxFileUploader-invalidMaxFileSize\": \"Datei ist zu gro\\xdf\",\r\n            \"dxFileUploader-invalidMinFileSize\": \"Datei ist zu klein\",\r\n            \"dxRangeSlider-ariaFrom\": \"Von\",\r\n            \"dxRangeSlider-ariaTill\": \"Bis\",\r\n            \"dxSwitch-switchedOnText\": \"EIN\",\r\n            \"dxSwitch-switchedOffText\": \"AUS\",\r\n            \"dxForm-optionalMark\": \"optional\",\r\n            \"dxForm-requiredMessage\": \"{0} ist ein Pflichtfeld\",\r\n            \"dxNumberBox-invalidValueMessage\": \"Der Wert muss eine Zahl sein\",\r\n            \"dxNumberBox-noDataText\": \"Keine Daten\",\r\n            \"dxDataGrid-columnChooserTitle\": \"Spaltenauswahl\",\r\n            \"dxDataGrid-columnChooserEmptyText\": \"Ziehen Sie Spalten hierhin, um sie zu verstecken\",\r\n            \"dxDataGrid-groupContinuesMessage\": \"Weiter auf der n\\xe4chsten Seite\",\r\n            \"dxDataGrid-groupContinuedMessage\": \"Weiter von der vorherigen Seite\",\r\n            \"dxDataGrid-groupHeaderText\": \"Nach dieser Spalte gruppieren\",\r\n            \"dxDataGrid-ungroupHeaderText\": \"Gruppierung entfernen\",\r\n            \"dxDataGrid-ungroupAllText\": \"Alle Gruppierungen entfernen\",\r\n            \"dxDataGrid-editingEditRow\": \"Bearbeiten\",\r\n            \"dxDataGrid-editingSaveRowChanges\": \"Speichern\",\r\n            \"dxDataGrid-editingCancelRowChanges\": \"Abbrechen\",\r\n            \"dxDataGrid-editingDeleteRow\": \"Entfernen\",\r\n            \"dxDataGrid-editingUndeleteRow\": \"Wiederherstellen\",\r\n            \"dxDataGrid-editingConfirmDeleteMessage\": \"Sind Sie sicher, dass Sie diesen Datensatz l\\xf6schen wollen?\",\r\n            \"dxDataGrid-validationCancelChanges\": \"\\xc4nderungen verwerfen\",\r\n            \"dxDataGrid-groupPanelEmptyText\": \"Ziehen Sie eine Spalte hierhin, um danach zu gruppieren\",\r\n            \"dxDataGrid-noDataText\": \"Keine Daten\",\r\n            \"dxDataGrid-searchPanelPlaceholder\": \"Suchen...\",\r\n            \"dxDataGrid-filterRowShowAllText\": \"(Alle)\",\r\n            \"dxDataGrid-filterRowResetOperationText\": \"Zur\\xfccksetzen\",\r\n            \"dxDataGrid-filterRowOperationEquals\": \"Ist gleich\",\r\n            \"dxDataGrid-filterRowOperationNotEquals\": \"Ist nicht gleich\",\r\n            \"dxDataGrid-filterRowOperationLess\": \"Kleiner als\",\r\n            \"dxDataGrid-filterRowOperationLessOrEquals\": \"Kleiner oder gleich\",\r\n            \"dxDataGrid-filterRowOperationGreater\": \"Gr\\xf6\\xdfer als\",\r\n            \"dxDataGrid-filterRowOperationGreaterOrEquals\": \"Gr\\xf6\\xdfer oder gleich\",\r\n            \"dxDataGrid-filterRowOperationStartsWith\": \"Beginnt mit\",\r\n            \"dxDataGrid-filterRowOperationContains\": \"Enth\\xe4lt\",\r\n            \"dxDataGrid-filterRowOperationNotContains\": \"Enth\\xe4lt nicht\",\r\n            \"dxDataGrid-filterRowOperationEndsWith\": \"Endet mit\",\r\n            \"dxDataGrid-filterRowOperationBetween\": \"Zwischen\",\r\n            \"dxDataGrid-filterRowOperationBetweenStartText\": \"Anfang\",\r\n            \"dxDataGrid-filterRowOperationBetweenEndText\": \"Ende\",\r\n            \"dxDataGrid-applyFilterText\": \"Filter anwenden\",\r\n            \"dxDataGrid-trueText\": \"wahr\",\r\n            \"dxDataGrid-falseText\": \"falsch\",\r\n            \"dxDataGrid-sortingAscendingText\": \"Aufsteigend sortieren\",\r\n            \"dxDataGrid-sortingDescendingText\": \"Absteigend sortieren\",\r\n            \"dxDataGrid-sortingClearText\": \"Sortierung aufheben\",\r\n            \"dxDataGrid-editingSaveAllChanges\": \"\\xc4nderungen speichern\",\r\n            \"dxDataGrid-editingCancelAllChanges\": \"\\xc4nderungen verwerfen\",\r\n            \"dxDataGrid-editingAddRow\": \"Neue Zeile\",\r\n            \"dxDataGrid-summaryMin\": \"Min: {0}\",\r\n            \"dxDataGrid-summaryMinOtherColumn\": \"Minimum von {1} ist {0}\",\r\n            \"dxDataGrid-summaryMax\": \"Max: {0}\",\r\n            \"dxDataGrid-summaryMaxOtherColumn\": \"Maximum von {1} ist {0}\",\r\n            \"dxDataGrid-summaryAvg\": \"\\xd8: {0}\",\r\n            \"dxDataGrid-summaryAvgOtherColumn\": \"Durchschnitt von {1} ist {0}\",\r\n            \"dxDataGrid-summarySum\": \"Summe: {0}\",\r\n            \"dxDataGrid-summarySumOtherColumn\": \"Summe von {1} ist {0}\",\r\n            \"dxDataGrid-summaryCount\": \"Anzahl: {0}\",\r\n            \"dxDataGrid-columnFixingFix\": \"Fixieren\",\r\n            \"dxDataGrid-columnFixingUnfix\": \"L\\xf6sen\",\r\n            \"dxDataGrid-columnFixingLeftPosition\": \"Nach links\",\r\n            \"dxDataGrid-columnFixingRightPosition\": \"Nach rechts\",\r\n            \"dxDataGrid-exportTo\": \"Exportieren\",\r\n            \"dxDataGrid-exportToExcel\": \"Exportieren als Excel-Datei\",\r\n            \"dxDataGrid-exporting\": \"Exportieren ...\",\r\n            \"dxDataGrid-excelFormat\": \"Excel-Datei\",\r\n            \"dxDataGrid-selectedRows\": \"Ausgew\\xe4hlte Zeilen\",\r\n            \"dxDataGrid-exportAll\": \"Alle Daten exportieren\",\r\n            \"dxDataGrid-exportSelectedRows\": \"Ausgew\\xe4hlte Zeilen exportieren\",\r\n            \"dxDataGrid-headerFilterEmptyValue\": \"(Leerwerte)\",\r\n            \"dxDataGrid-headerFilterOK\": \"OK\",\r\n            \"dxDataGrid-headerFilterCancel\": \"Abbrechen\",\r\n            \"dxDataGrid-ariaColumn\": \"Spalte\",\r\n            \"dxDataGrid-ariaValue\": \"Wert\",\r\n            \"dxDataGrid-ariaFilterCell\": \"Filterzelle\",\r\n            \"dxDataGrid-ariaCollapse\": \"Zusammenklappen\",\r\n            \"dxDataGrid-ariaExpand\": \"Aufklappen\",\r\n            \"dxDataGrid-ariaDataGrid\": \"Datentabelle\",\r\n            \"dxDataGrid-ariaSearchInGrid\": \"Suchen in der Datentabelle\",\r\n            \"dxDataGrid-ariaSelectAll\": \"Alle ausw\\xe4hlen\",\r\n            \"dxDataGrid-ariaSelectRow\": \"Zeile ausw\\xe4hlen\",\r\n            \"dxDataGrid-filterBuilderPopupTitle\": \"Filter-Generator\",\r\n            \"dxDataGrid-filterPanelCreateFilter\": \"Filter erzeugen\",\r\n            \"dxDataGrid-filterPanelClearFilter\": \"Zur\\xfccksetzen\",\r\n            \"dxDataGrid-filterPanelFilterEnabledHint\": \"Filter aktivieren\",\r\n            \"dxTreeList-ariaTreeList\": \"Strukturliste\",\r\n            \"dxTreeList-editingAddRowToNode\": \"Hinzuf\\xfcgen\",\r\n            \"dxPager-infoText\": \"Seite {0} von {1} ({2} Elemente)\",\r\n            \"dxPager-pagesCountText\": \"von\",\r\n            \"dxPager-pageSizesAllText\": \"Alle\",\r\n            \"dxPivotGrid-grandTotal\": \"Gesamt\",\r\n            \"dxPivotGrid-total\": \"{0} Gesamt\",\r\n            \"dxPivotGrid-fieldChooserTitle\": \"Feldauswahl\",\r\n            \"dxPivotGrid-showFieldChooser\": \"Feldauswahl anzeigen\",\r\n            \"dxPivotGrid-expandAll\": \"Alle aufklappen\",\r\n            \"dxPivotGrid-collapseAll\": \"Alle zusammenklappen\",\r\n            \"dxPivotGrid-sortColumnBySummary\": '\"{0}\" nach dieser Spalte sortieren',\r\n            \"dxPivotGrid-sortRowBySummary\": '\"{0}\" nach dieser Zeile sortieren',\r\n            \"dxPivotGrid-removeAllSorting\": \"Sortierungen entfernen\",\r\n            \"dxPivotGrid-dataNotAvailable\": \"Entf.\",\r\n            \"dxPivotGrid-rowFields\": \"Zeilenfelder\",\r\n            \"dxPivotGrid-columnFields\": \"Spaltenfelder\",\r\n            \"dxPivotGrid-dataFields\": \"Datenfelder\",\r\n            \"dxPivotGrid-filterFields\": \"Filterfelder\",\r\n            \"dxPivotGrid-allFields\": \"Alle Felder\",\r\n            \"dxPivotGrid-columnFieldArea\": \"Spaltenfelder hierher ziehen\",\r\n            \"dxPivotGrid-dataFieldArea\": \"Datenfelder hierher ziehen\",\r\n            \"dxPivotGrid-rowFieldArea\": \"Zeilenfelder hierher ziehen\",\r\n            \"dxPivotGrid-filterFieldArea\": \"Filterfelder hierher ziehen\",\r\n            \"dxScheduler-editorLabelTitle\": \"Betreff\",\r\n            \"dxScheduler-editorLabelStartDate\": \"Anfangszeit\",\r\n            \"dxScheduler-editorLabelEndDate\": \"Endzeit\",\r\n            \"dxScheduler-editorLabelDescription\": \"Beschreibung\",\r\n            \"dxScheduler-editorLabelRecurrence\": \"Wiederholen\",\r\n            \"dxScheduler-openAppointment\": \"Termin \\xf6ffnen\",\r\n            \"dxScheduler-recurrenceNever\": \"Nie\",\r\n            \"dxScheduler-recurrenceMinutely\": \"Min\\xfctlich\",\r\n            \"dxScheduler-recurrenceHourly\": \"St\\xfcndlich\",\r\n            \"dxScheduler-recurrenceDaily\": \"T\\xe4glich\",\r\n            \"dxScheduler-recurrenceWeekly\": \"W\\xf6chentlich\",\r\n            \"dxScheduler-recurrenceMonthly\": \"Monatlich\",\r\n            \"dxScheduler-recurrenceYearly\": \"J\\xe4hrlich\",\r\n            \"dxScheduler-recurrenceRepeatEvery\": \"Wiederholen alle\",\r\n            \"dxScheduler-recurrenceRepeatOn\": \"Wiederholen an\",\r\n            \"dxScheduler-recurrenceEnd\": \"Wiederholungsende\",\r\n            \"dxScheduler-recurrenceAfter\": \"Nach\",\r\n            \"dxScheduler-recurrenceOn\": \"Am\",\r\n            \"dxScheduler-recurrenceRepeatMinutely\": \"Minute(n)\",\r\n            \"dxScheduler-recurrenceRepeatHourly\": \"Stunde(n)\",\r\n            \"dxScheduler-recurrenceRepeatDaily\": \"Tag(e)\",\r\n            \"dxScheduler-recurrenceRepeatWeekly\": \"Woche(n)\",\r\n            \"dxScheduler-recurrenceRepeatMonthly\": \"Monat(e)\",\r\n            \"dxScheduler-recurrenceRepeatYearly\": \"Jahr(e)\",\r\n            \"dxScheduler-switcherDay\": \"Tag\",\r\n            \"dxScheduler-switcherWeek\": \"Woche\",\r\n            \"dxScheduler-switcherWorkWeek\": \"Arbeitswoche\",\r\n            \"dxScheduler-switcherMonth\": \"Monat\",\r\n            \"dxScheduler-switcherTimelineDay\": \"Zeitstrahl Tag\",\r\n            \"dxScheduler-switcherTimelineWeek\": \"Zeitstrahl Woche\",\r\n            \"dxScheduler-switcherTimelineWorkWeek\": \"Zeitstrahl Arbeitswoche\",\r\n            \"dxScheduler-switcherTimelineMonth\": \"Zeitstrahl Monat\",\r\n            \"dxScheduler-switcherAgenda\": \"Agenda\",\r\n            \"dxScheduler-recurrenceRepeatOnDate\": \"am Datum\",\r\n            \"dxScheduler-recurrenceRepeatCount\": \"Ereignisse\",\r\n            \"dxScheduler-allDay\": \"Ganzt\\xe4gig\",\r\n            \"dxScheduler-confirmRecurrenceEditMessage\": \"M\\xf6chten Sie nur diesen Termin bearbeiten, oder die gesamte Serie?\",\r\n            \"dxScheduler-confirmRecurrenceDeleteMessage\": \"M\\xf6chten Sie nur diesen Termin l\\xf6schen, oder die gesamte Serie?\",\r\n            \"dxScheduler-confirmRecurrenceEditSeries\": \"Serie bearbeiten\",\r\n            \"dxScheduler-confirmRecurrenceDeleteSeries\": \"Serie l\\xf6schen\",\r\n            \"dxScheduler-confirmRecurrenceEditOccurrence\": \"Termin bearbeiten\",\r\n            \"dxScheduler-confirmRecurrenceDeleteOccurrence\": \"Termin l\\xf6schen\",\r\n            \"dxScheduler-noTimezoneTitle\": \"Keine Zeitzone\",\r\n            \"dxScheduler-moreAppointments\": \"{0} weitere\",\r\n            \"dxCalendar-todayButtonText\": \"Heute\",\r\n            \"dxCalendar-ariaWidgetName\": \"Kalendar\",\r\n            \"dxColorView-ariaRed\": \"Rot\",\r\n            \"dxColorView-ariaGreen\": \"Gr\\xfcn\",\r\n            \"dxColorView-ariaBlue\": \"Blau\",\r\n            \"dxColorView-ariaAlpha\": \"Transparenz\",\r\n            \"dxColorView-ariaHex\": \"Farbwert\",\r\n            \"dxTagBox-selected\": \"{0} ausgew\\xe4hlt\",\r\n            \"dxTagBox-allSelected\": \"Alle ausgew\\xe4hlt ({0})\",\r\n            \"dxTagBox-moreSelected\": \"{0} weitere\",\r\n            \"vizExport-printingButtonText\": \"Drucken\",\r\n            \"vizExport-titleMenuText\": \"Export/Druck\",\r\n            \"vizExport-exportButtonText\": \"{0}-Datei\",\r\n            \"dxFilterBuilder-and\": \"Und\",\r\n            \"dxFilterBuilder-or\": \"Oder\",\r\n            \"dxFilterBuilder-notAnd\": \"Nicht Und\",\r\n            \"dxFilterBuilder-notOr\": \"Nicht Oder\",\r\n            \"dxFilterBuilder-addCondition\": \"Bedingung hinzuf\\xfcgen\",\r\n            \"dxFilterBuilder-addGroup\": \"Gruppe hinzuf\\xfcgen\",\r\n            \"dxFilterBuilder-enterValueText\": \"<Wert eingeben>\",\r\n            \"dxFilterBuilder-filterOperationEquals\": \"Ist gleich\",\r\n            \"dxFilterBuilder-filterOperationNotEquals\": \"Ist nicht gleich\",\r\n            \"dxFilterBuilder-filterOperationLess\": \"Kleiner als\",\r\n            \"dxFilterBuilder-filterOperationLessOrEquals\": \"Kleiner oder gleich\",\r\n            \"dxFilterBuilder-filterOperationGreater\": \"Gr\\xf6\\xdfer als\",\r\n            \"dxFilterBuilder-filterOperationGreaterOrEquals\": \"Gr\\xf6\\xdfer oder gleich\",\r\n            \"dxFilterBuilder-filterOperationStartsWith\": \"Beginnt mit\",\r\n            \"dxFilterBuilder-filterOperationContains\": \"Enth\\xe4lt\",\r\n            \"dxFilterBuilder-filterOperationNotContains\": \"Enth\\xe4lt nicht\",\r\n            \"dxFilterBuilder-filterOperationEndsWith\": \"Endet mit\",\r\n            \"dxFilterBuilder-filterOperationIsBlank\": \"Ist leer\",\r\n            \"dxFilterBuilder-filterOperationIsNotBlank\": \"Ist nicht leer\",\r\n            \"dxFilterBuilder-filterOperationBetween\": \"Zwischen\",\r\n            \"dxFilterBuilder-filterOperationAnyOf\": \"Ist enthalten in\",\r\n            \"dxFilterBuilder-filterOperationNoneOf\": \"Ist nicht enthalten in\",\r\n            \"dxHtmlEditor-dialogColorCaption\": \"Schriftfarbe \\xe4ndern\",\r\n            \"dxHtmlEditor-dialogBackgroundCaption\": \"Hintergrundfarbe \\xe4ndern\",\r\n            \"dxHtmlEditor-dialogLinkCaption\": \"Link hinzuf\\xfcgen\",\r\n            \"dxHtmlEditor-dialogLinkUrlField\": \"URL\",\r\n            \"dxHtmlEditor-dialogLinkTextField\": \"Text\",\r\n            \"dxHtmlEditor-dialogLinkTargetField\": \"Link in neuem Fenster \\xf6ffnen\",\r\n            \"dxHtmlEditor-dialogImageCaption\": \"Bild hinzuf\\xfcgen\",\r\n            \"dxHtmlEditor-dialogImageUrlField\": \"URL\",\r\n            \"dxHtmlEditor-dialogImageAltField\": \"Alternativer Text\",\r\n            \"dxHtmlEditor-dialogImageWidthField\": \"Breite (px)\",\r\n            \"dxHtmlEditor-dialogImageHeightField\": \"Bildh\\xf6he (px)\",\r\n            \"dxHtmlEditor-dialogInsertTableRowsField\": \"Zeilen\",\r\n            \"dxHtmlEditor-dialogInsertTableColumnsField\": \"Spalten\",\r\n            \"dxHtmlEditor-dialogInsertTableCaption\": \"Tabelle einf\\xfcgen\",\r\n            \"dxHtmlEditor-heading\": \"\\xdcberschrift\",\r\n            \"dxHtmlEditor-normalText\": \"Normaler Text\",\r\n            \"dxFileManager-newDirectoryName\": \"Ohne Titel\",\r\n            \"dxFileManager-rootDirectoryName\": \"Dateien\",\r\n            \"dxFileManager-errorNoAccess\": \"Zugriff verweigert. Die Operation kann nicht durchgef\\xfchrt werden.\",\r\n            \"dxFileManager-errorDirectoryExistsFormat\": \"Ordner {0} existiert bereits.\",\r\n            \"dxFileManager-errorFileExistsFormat\": \"Datei {0} existiert bereits.\",\r\n            \"dxFileManager-errorFileNotFoundFormat\": \"Datei {0} wurde nicht gefunden.\",\r\n            \"dxFileManager-errorDirectoryNotFoundFormat\": \"Verzeichnis '{0}' nicht gefunden.\",\r\n            \"dxFileManager-errorWrongFileExtension\": \"Dateierweiterung ist nicht erlaubt.\",\r\n            \"dxFileManager-errorMaxFileSizeExceeded\": \"Die Dateigr\\xf6\\xdfe \\xfcbersteigt die maximal erlaubte Gr\\xf6\\xdfe.\",\r\n            \"dxFileManager-errorInvalidSymbols\": \"Der Dateiname enth\\xe4lt ung\\xfcltige Zeichen.\",\r\n            \"dxFileManager-errorDefault\": \"Unbekannter Fehler\",\r\n            \"dxFileManager-errorDirectoryOpenFailed\": \"Das Verzeichnis kann nicht ge\\xf6ffnet werden\",\r\n            \"dxFileManager-commandCreate\": \"Neues Verzeichnis\",\r\n            \"dxFileManager-commandRename\": \"Umbenennen\",\r\n            \"dxFileManager-commandMove\": \"Verschieben nach\",\r\n            \"dxFileManager-commandCopy\": \"Kopieren nach\",\r\n            \"dxFileManager-commandDelete\": \"L\\xf6schen\",\r\n            \"dxFileManager-commandDownload\": \"Herunterladen\",\r\n            \"dxFileManager-commandUpload\": \"Dateien hochladen\",\r\n            \"dxFileManager-commandRefresh\": \"Aktualisieren\",\r\n            \"dxFileManager-commandThumbnails\": \"Miniaturansicht\",\r\n            \"dxFileManager-commandDetails\": \"Detailansicht\",\r\n            \"dxFileManager-commandClearSelection\": \"Auswahl aufheben\",\r\n            \"dxFileManager-commandShowNavPane\": \"Navigationsbereich ein-/ausschalten\",\r\n            \"dxFileManager-dialogDirectoryChooserMoveTitle\": \"Verschieben nach\",\r\n            \"dxFileManager-dialogDirectoryChooserMoveButtonText\": \"Verschieben\",\r\n            \"dxFileManager-dialogDirectoryChooserCopyTitle\": \"Kopieren nach\",\r\n            \"dxFileManager-dialogDirectoryChooserCopyButtonText\": \"Kopieren\",\r\n            \"dxFileManager-dialogRenameItemTitle\": \"Umbenennen\",\r\n            \"dxFileManager-dialogRenameItemButtonText\": \"Speichern\",\r\n            \"dxFileManager-dialogCreateDirectoryTitle\": \"Neues Verzeichnis\",\r\n            \"dxFileManager-dialogCreateDirectoryButtonText\": \"Erstellen\",\r\n            \"dxFileManager-dialogDeleteItemTitle\": \"L\\xf6schen\",\r\n            \"dxFileManager-dialogDeleteItemButtonText\": \"L\\xf6schen\",\r\n            \"dxFileManager-dialogDeleteItemSingleItemConfirmation\": \"Sind Sie sicher, dass Sie {0} l\\xf6schen m\\xf6chten?\",\r\n            \"dxFileManager-dialogDeleteItemMultipleItemsConfirmation\": \"Sind Sie sicher, dass Sie {0} Elemente l\\xf6schen m\\xf6chten?\",\r\n            \"dxFileManager-dialogButtonCancel\": \"Abbrechen\",\r\n            \"dxFileManager-editingCreateSingleItemProcessingMessage\": \"Ein Verzeichnis wird in {0} erstellt\",\r\n            \"dxFileManager-editingCreateSingleItemSuccessMessage\": \"Ein Verzeichnis wurde in {0} erstellt\",\r\n            \"dxFileManager-editingCreateSingleItemErrorMessage\": \"Verzeichnis wurde nicht erstellt\",\r\n            \"dxFileManager-editingCreateCommonErrorMessage\": \"Verzeichnis wurde nicht erstellt\",\r\n            \"dxFileManager-editingRenameSingleItemProcessingMessage\": \"Ein Element in {0} wird umbenannt\",\r\n            \"dxFileManager-editingRenameSingleItemSuccessMessage\": \"Ein Element in {0} wurde umbenannt\",\r\n            \"dxFileManager-editingRenameSingleItemErrorMessage\": \"Element wurde nicht umbenannt\",\r\n            \"dxFileManager-editingRenameCommonErrorMessage\": \"Element wurde nicht umbenannt\",\r\n            \"dxFileManager-editingDeleteSingleItemProcessingMessage\": \"Ein Element aus {0} wird gel\\xf6scht\",\r\n            \"dxFileManager-editingDeleteMultipleItemsProcessingMessage\": \"{0} Elemente aus {1} werden gel\\xf6scht\",\r\n            \"dxFileManager-editingDeleteSingleItemSuccessMessage\": \"Ein Element aus {0} wurde gel\\xf6scht\",\r\n            \"dxFileManager-editingDeleteMultipleItemsSuccessMessage\": \"{0} Elemente aus {1} wurden gel\\xf6scht\",\r\n            \"dxFileManager-editingDeleteSingleItemErrorMessage\": \"Element wurde nicht gel\\xf6scht\",\r\n            \"dxFileManager-editingDeleteMultipleItemsErrorMessage\": \"{0} Elemente wurden nicht gel\\xf6scht\",\r\n            \"dxFileManager-editingDeleteCommonErrorMessage\": \"Einige Elemente wurden nicht gel\\xf6scht\",\r\n            \"dxFileManager-editingMoveSingleItemProcessingMessage\": \"Ein Element wird nach {0} verschoben\",\r\n            \"dxFileManager-editingMoveMultipleItemsProcessingMessage\": \"{0} Elemente werden nach {1} verschoben\",\r\n            \"dxFileManager-editingMoveSingleItemSuccessMessage\": \"Ein Element wurde nach {0} verschoben\",\r\n            \"dxFileManager-editingMoveMultipleItemsSuccessMessage\": \"{0} Elemente wurden nach {1} verschoben\",\r\n            \"dxFileManager-editingMoveSingleItemErrorMessage\": \"Element wurde nicht verschoben\",\r\n            \"dxFileManager-editingMoveMultipleItemsErrorMessage\": \"{0} Elemente wurden nicht verschoben\",\r\n            \"dxFileManager-editingMoveCommonErrorMessage\": \"Einige Elemente wurden nicht verschoben\",\r\n            \"dxFileManager-editingCopySingleItemProcessingMessage\": \"Ein Element wird nach {0} kopiert\",\r\n            \"dxFileManager-editingCopyMultipleItemsProcessingMessage\": \"{0} Elemente werden nach {1} kopiert\",\r\n            \"dxFileManager-editingCopySingleItemSuccessMessage\": \"Ein Element wurde nach {0} kopiert\",\r\n            \"dxFileManager-editingCopyMultipleItemsSuccessMessage\": \"{0} Elemente wurden nach {1} kopiert\",\r\n            \"dxFileManager-editingCopySingleItemErrorMessage\": \"Element wurde nicht kopiert\",\r\n            \"dxFileManager-editingCopyMultipleItemsErrorMessage\": \"{0} Elemente wurden nicht kopiert\",\r\n            \"dxFileManager-editingCopyCommonErrorMessage\": \"Einige Elemente wurden nicht kopiert\",\r\n            \"dxFileManager-editingUploadSingleItemProcessingMessage\": \"Ein Element wird nach {0} hochgeladen\",\r\n            \"dxFileManager-editingUploadMultipleItemsProcessingMessage\": \"{0} Elemente werden nach {1} hochgeladen\",\r\n            \"dxFileManager-editingUploadSingleItemSuccessMessage\": \"Ein Element wurde nach {0} hochgeladen\",\r\n            \"dxFileManager-editingUploadMultipleItemsSuccessMessage\": \"{0} Elemente wurden nach {1} hochgeladen\",\r\n            \"dxFileManager-editingUploadSingleItemErrorMessage\": \"Element wurde nicht hochgeladen\",\r\n            \"dxFileManager-editingUploadMultipleItemsErrorMessage\": \"{0} Elemente wurden nicht hochgeladen\",\r\n            \"dxFileManager-editingUploadCanceledMessage\": \"Abgebrochen\",\r\n            \"dxFileManager-listDetailsColumnCaptionName\": \"Name\",\r\n            \"dxFileManager-listDetailsColumnCaptionDateModified\": \"Zuletzt ge\\xe4ndert am\",\r\n            \"dxFileManager-listDetailsColumnCaptionFileSize\": \"Dateigr\\xf6\\xdfe\",\r\n            \"dxFileManager-listThumbnailsTooltipTextSize\": \"Gr\\xf6\\xdfe\",\r\n            \"dxFileManager-listThumbnailsTooltipTextDateModified\": \"Zuletzt ge\\xe4ndert am\",\r\n            \"dxFileManager-notificationProgressPanelTitle\": \"Fortschritt\",\r\n            \"dxFileManager-notificationProgressPanelEmptyListText\": \"Keine Vorg\\xe4nge\",\r\n            \"dxFileManager-notificationProgressPanelOperationCanceled\": \"Abgebrochen\",\r\n            \"dxDiagram-categoryGeneral\": \"Allgemein\",\r\n            \"dxDiagram-categoryFlowchart\": \"Flussdiagramm\",\r\n            \"dxDiagram-categoryOrgChart\": \"Organisationsdiagramm\",\r\n            \"dxDiagram-categoryContainers\": \"Container\",\r\n            \"dxDiagram-categoryCustom\": \"Benutzerdefiniert\",\r\n            \"dxDiagram-commandExportToSvg\": \"Export als SVG\",\r\n            \"dxDiagram-commandExportToPng\": \"Export als PNG\",\r\n            \"dxDiagram-commandExportToJpg\": \"Export als JPEG\",\r\n            \"dxDiagram-commandUndo\": \"R\\xfcckg\\xe4ngig\",\r\n            \"dxDiagram-commandRedo\": \"Wiederherstellen\",\r\n            \"dxDiagram-commandFontName\": \"Schriftartname\",\r\n            \"dxDiagram-commandFontSize\": \"Schriftgr\\xf6\\xdfe\",\r\n            \"dxDiagram-commandBold\": \"Fett\",\r\n            \"dxDiagram-commandItalic\": \"Kursiv\",\r\n            \"dxDiagram-commandUnderline\": \"Unterstrichen\",\r\n            \"dxDiagram-commandTextColor\": \"Textfarbe\",\r\n            \"dxDiagram-commandLineColor\": \"Linienfarbe\",\r\n            \"dxDiagram-commandLineWidth\": \"Linienst\\xe4rke\",\r\n            \"dxDiagram-commandLineStyle\": \"Linienart\",\r\n            \"dxDiagram-commandLineStyleSolid\": \"Durchgezogen\",\r\n            \"dxDiagram-commandLineStyleDotted\": \"Gepunktet\",\r\n            \"dxDiagram-commandLineStyleDashed\": \"Gestrichelt\",\r\n            \"dxDiagram-commandFillColor\": \"F\\xfcllfarbe\",\r\n            \"dxDiagram-commandAlignLeft\": \"Linksb\\xfcndig\",\r\n            \"dxDiagram-commandAlignCenter\": \"Zentriert\",\r\n            \"dxDiagram-commandAlignRight\": \"Rechtsb\\xfcndig\",\r\n            \"dxDiagram-commandConnectorLineType\": \"Konnektor Linienart\",\r\n            \"dxDiagram-commandConnectorLineStraight\": \"Gerade\",\r\n            \"dxDiagram-commandConnectorLineOrthogonal\": \"Rechtwinklig\",\r\n            \"dxDiagram-commandConnectorLineStart\": \"Konnektor Linienanfang\",\r\n            \"dxDiagram-commandConnectorLineEnd\": \"Konnektor Linienende\",\r\n            \"dxDiagram-commandConnectorLineNone\": \"Keine\",\r\n            \"dxDiagram-commandConnectorLineArrow\": \"Pfeil\",\r\n            \"dxDiagram-commandFullscreen\": \"Vollbild\",\r\n            \"dxDiagram-commandUnits\": \"Einheiten\",\r\n            \"dxDiagram-commandPageSize\": \"Seitengr\\xf6\\xdfe\",\r\n            \"dxDiagram-commandPageOrientation\": \"Seitenausrichtung\",\r\n            \"dxDiagram-commandPageOrientationLandscape\": \"Querformat\",\r\n            \"dxDiagram-commandPageOrientationPortrait\": \"Hochformat\",\r\n            \"dxDiagram-commandPageColor\": \"Seitenfarbe\",\r\n            \"dxDiagram-commandShowGrid\": \"Raster anzeigen\",\r\n            \"dxDiagram-commandSnapToGrid\": \"Am Raster ausrichten\",\r\n            \"dxDiagram-commandGridSize\": \"Rastergr\\xf6\\xdfe\",\r\n            \"dxDiagram-commandZoomLevel\": \"Vergr\\xf6\\xdferungsstufe\",\r\n            \"dxDiagram-commandAutoZoom\": \"Automatische Vergr\\xf6\\xdferung\",\r\n            \"dxDiagram-commandFitToContent\": \"An Inhalt anpassen\",\r\n            \"dxDiagram-commandFitToWidth\": \"An Breite anpassen\",\r\n            \"dxDiagram-commandAutoZoomByContent\": \"Automatisch an Inhalt anpassen\",\r\n            \"dxDiagram-commandAutoZoomByWidth\": \"Automatisch an Breite anpassen\",\r\n            \"dxDiagram-commandSimpleView\": \"Einfache Ansicht\",\r\n            \"dxDiagram-commandCut\": \"Ausschneiden\",\r\n            \"dxDiagram-commandCopy\": \"Kopieren\",\r\n            \"dxDiagram-commandPaste\": \"Einf\\xfcgen\",\r\n            \"dxDiagram-commandSelectAll\": \"Alles ausw\\xe4hlen\",\r\n            \"dxDiagram-commandDelete\": \"L\\xf6schen\",\r\n            \"dxDiagram-commandBringToFront\": \"In den Vordergrund\",\r\n            \"dxDiagram-commandSendToBack\": \"In den Hintergrund\",\r\n            \"dxDiagram-commandLock\": \"Sperren\",\r\n            \"dxDiagram-commandUnlock\": \"Entsperren\",\r\n            \"dxDiagram-commandInsertShapeImage\": \"Bild einf\\xfcgen...\",\r\n            \"dxDiagram-commandEditShapeImage\": \"Bild bearbeiten...\",\r\n            \"dxDiagram-commandDeleteShapeImage\": \"Bild l\\xf6schen\",\r\n            \"dxDiagram-commandLayoutLeftToRight\": \"Von links nach rechts\",\r\n            \"dxDiagram-commandLayoutRightToLeft\": \"Von rechts nach links\",\r\n            \"dxDiagram-commandLayoutTopToBottom\": \"Von oben nach unten\",\r\n            \"dxDiagram-commandLayoutBottomToTop\": \"Von unten nach oben\",\r\n            \"dxDiagram-unitIn\": \"in\",\r\n            \"dxDiagram-unitCm\": \"cm\",\r\n            \"dxDiagram-unitPx\": \"px\",\r\n            \"dxDiagram-dialogButtonOK\": \"OK\",\r\n            \"dxDiagram-dialogButtonCancel\": \"Abbrechen\",\r\n            \"dxDiagram-dialogInsertShapeImageTitle\": \"Bild einf\\xfcgen\",\r\n            \"dxDiagram-dialogEditShapeImageTitle\": \"Bild bearbeiten\",\r\n            \"dxDiagram-dialogEditShapeImageSelectButton\": \"Bild ausw\\xe4hlen\",\r\n            \"dxDiagram-dialogEditShapeImageLabelText\": \"oder Datei hier ablegen\",\r\n            \"dxDiagram-uiExport\": \"Export\",\r\n            \"dxDiagram-uiProperties\": \"Eigenschaften\",\r\n            \"dxDiagram-uiSettings\": \"Einstellungen\",\r\n            \"dxDiagram-uiShowToolbox\": \"Toolbox anzeigen\",\r\n            \"dxDiagram-uiSearch\": \"Suchen\",\r\n            \"dxDiagram-uiStyle\": \"Stil\",\r\n            \"dxDiagram-uiLayout\": \"Layout\",\r\n            \"dxDiagram-uiLayoutTree\": \"Baum\",\r\n            \"dxDiagram-uiLayoutLayered\": \"Mehrschichtig\",\r\n            \"dxDiagram-uiDiagram\": \"Diagramm\",\r\n            \"dxDiagram-uiText\": \"Text\",\r\n            \"dxDiagram-uiObject\": \"Objekt\",\r\n            \"dxDiagram-uiConnector\": \"Verbindung\",\r\n            \"dxDiagram-uiPage\": \"Seite\",\r\n            \"dxDiagram-shapeText\": \"Text\",\r\n            \"dxDiagram-shapeRectangle\": \"Rechteck\",\r\n            \"dxDiagram-shapeEllipse\": \"Ellipse\",\r\n            \"dxDiagram-shapeCross\": \"Kreuz\",\r\n            \"dxDiagram-shapeTriangle\": \"Dreieck\",\r\n            \"dxDiagram-shapeDiamond\": \"Raute\",\r\n            \"dxDiagram-shapeHeart\": \"Herz\",\r\n            \"dxDiagram-shapePentagon\": \"F\\xfcnfeck\",\r\n            \"dxDiagram-shapeHexagon\": \"Sechseck\",\r\n            \"dxDiagram-shapeOctagon\": \"Achteck\",\r\n            \"dxDiagram-shapeStar\": \"Stern\",\r\n            \"dxDiagram-shapeArrowLeft\": \"Pfeil nach links\",\r\n            \"dxDiagram-shapeArrowUp\": \"Pfeil nach oben\",\r\n            \"dxDiagram-shapeArrowRight\": \"Pfeil nach rechts\",\r\n            \"dxDiagram-shapeArrowDown\": \"Pfeil nach unten\",\r\n            \"dxDiagram-shapeArrowUpDown\": \"Pfeil nach oben und unten\",\r\n            \"dxDiagram-shapeArrowLeftRight\": \"Pfeil nach links und rechts\",\r\n            \"dxDiagram-shapeProcess\": \"Prozess\",\r\n            \"dxDiagram-shapeDecision\": \"Entscheidung\",\r\n            \"dxDiagram-shapeTerminator\": \"Abschluss\",\r\n            \"dxDiagram-shapePredefinedProcess\": \"Vordefinierter Prozess\",\r\n            \"dxDiagram-shapeDocument\": \"Dokument\",\r\n            \"dxDiagram-shapeMultipleDocuments\": \"Mehrere Dokumente\",\r\n            \"dxDiagram-shapeManualInput\": \"Manuelle Eingabe\",\r\n            \"dxDiagram-shapePreparation\": \"Vorbereitung\",\r\n            \"dxDiagram-shapeData\": \"Daten\",\r\n            \"dxDiagram-shapeDatabase\": \"Datenbank\",\r\n            \"dxDiagram-shapeHardDisk\": \"Festplatte\",\r\n            \"dxDiagram-shapeInternalStorage\": \"Lokaler Speicher\",\r\n            \"dxDiagram-shapePaperTape\": \"Lochstreifen\",\r\n            \"dxDiagram-shapeManualOperation\": \"Manuelle Verarbeitung\",\r\n            \"dxDiagram-shapeDelay\": \"Verz\\xf6gerung\",\r\n            \"dxDiagram-shapeStoredData\": \"Gespeicherte Daten\",\r\n            \"dxDiagram-shapeDisplay\": \"Anzeige\",\r\n            \"dxDiagram-shapeMerge\": \"Zusammenf\\xfchren\",\r\n            \"dxDiagram-shapeConnector\": \"Verbinder\",\r\n            \"dxDiagram-shapeOr\": \"Oder\",\r\n            \"dxDiagram-shapeSummingJunction\": \"Summierungsknoten\",\r\n            \"dxDiagram-shapeContainerDefaultText\": \"Container\",\r\n            \"dxDiagram-shapeVerticalContainer\": \"Vertikaler Container\",\r\n            \"dxDiagram-shapeHorizontalContainer\": \"Horizontaler Container\",\r\n            \"dxDiagram-shapeCardDefaultText\": \"Name der Person\",\r\n            \"dxDiagram-shapeCardWithImageOnLeft\": \"Karte mit Bild links\",\r\n            \"dxDiagram-shapeCardWithImageOnTop\": \"Karte mit Bild oben\",\r\n            \"dxDiagram-shapeCardWithImageOnRight\": \"Karte mit Bild rechts\",\r\n            \"dxGantt-dialogTitle\": \"Titel\",\r\n            \"dxGantt-dialogStartTitle\": \"Beginn\",\r\n            \"dxGantt-dialogEndTitle\": \"Ende\",\r\n            \"dxGantt-dialogProgressTitle\": \"Fortschritt\",\r\n            \"dxGantt-dialogResourcesTitle\": \"Ressourcen\",\r\n            \"dxGantt-dialogResourceManagerTitle\": \"Ressourcen-Manager\",\r\n            \"dxGantt-dialogTaskDetailsTitle\": \"Aufgabendetails\",\r\n            \"dxGantt-dialogEditResourceListHint\": \"Ressourcenliste bearbeiten\",\r\n            \"dxGantt-dialogEditNoResources\": \"Keine Ressourcen\",\r\n            \"dxGantt-dialogButtonAdd\": \"Hinzuf\\xfcgen\",\r\n            \"dxGantt-contextMenuNewTask\": \"Neue Aufgabe\",\r\n            \"dxGantt-contextMenuNewSubtask\": \"Neue Teilaufgabe\",\r\n            \"dxGantt-contextMenuDeleteTask\": \"Aufgabe l\\xf6schen\",\r\n            \"dxGantt-contextMenuDeleteDependency\": \"Abh\\xe4ngigkeit entfernen\",\r\n            \"dxGantt-dialogTaskDeleteConfirmation\": \"Abh\\xe4ngigkeiten und Teilaufgaben werden zusammen mit dieser Aufgabe gel\\xf6scht. M\\xf6chten Sie diese Aufgabe l\\xf6schen?\",\r\n            \"dxGantt-dialogDependencyDeleteConfirmation\": \"M\\xf6chten Sie die Abh\\xe4ngigkeit von der Aufgabe entfernen?\",\r\n            \"dxGantt-dialogResourcesDeleteConfirmation\": \"Wenn Sie diese Ressource l\\xf6schen, wird sie von allen Aufgaben entfernt. M\\xf6chten Sie die Ressource l\\xf6schen? Ressource: {0}\",\r\n            \"dxGantt-dialogConstraintCriticalViolationMessage\": \"Die Aufgabe, die Sie verschieben m\\xf6chten, ist mit einer zweiten Aufgabe durch eine Abh\\xe4ngigkeit verbunden. Die \\xc4nderung w\\xfcrde gegen Abh\\xe4ngigkeitsregeln verstossen. Wie m\\xf6chten Sie fortfahren?\",\r\n            \"dxGantt-dialogConstraintViolationMessage\": \"Die Aufgabe, die Sie verschieben m\\xf6chten, ist mit einer zweiten Aufgabe durch eine Abh\\xe4ngigkeit verbunden. Wie m\\xf6chten Sie fortfahren?\",\r\n            \"dxGantt-dialogCancelOperationMessage\": \"Vorgang abbrechen\",\r\n            \"dxGantt-dialogDeleteDependencyMessage\": \"Abh\\xe4ngigkeit l\\xf6schen\",\r\n            \"dxGantt-dialogMoveTaskAndKeepDependencyMessage\": \"Aufgabe verschieben und Abh\\xe4ngigkeit beibehalten\",\r\n            \"dxGantt-undo\": \"R\\xfcckg\\xe4ngig\",\r\n            \"dxGantt-redo\": \"Wiederherstellen\",\r\n            \"dxGantt-expandAll\": \"Alle erweitern\",\r\n            \"dxGantt-collapseAll\": \"Alle reduzieren\",\r\n            \"dxGantt-addNewTask\": \"Neue Aufgabe hinzuf\\xfcgen\",\r\n            \"dxGantt-deleteSelectedTask\": \"Ausgew\\xe4hlte Aufgabe l\\xf6schen\",\r\n            \"dxGantt-zoomIn\": \"Vergr\\xf6\\xdfern\",\r\n            \"dxGantt-zoomOut\": \"Verkleinern\",\r\n            \"dxGantt-fullScreen\": \"Vollbildmodus\"\r\n        }\r\n    })\r\n});\r\n","/**\r\n * DevExtreme (localization/default_messages.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = {\r\n    en: {\r\n        Yes: \"Yes\",\r\n        No: \"No\",\r\n        Cancel: \"Cancel\",\r\n        Clear: \"Clear\",\r\n        Done: \"Done\",\r\n        Loading: \"Loading...\",\r\n        Select: \"Select...\",\r\n        Search: \"Search\",\r\n        Back: \"Back\",\r\n        OK: \"OK\",\r\n        \"dxCollectionWidget-noDataText\": \"No data to display\",\r\n        \"dxDropDownEditor-selectLabel\": \"Select\",\r\n        \"validation-required\": \"Required\",\r\n        \"validation-required-formatted\": \"{0} is required\",\r\n        \"validation-numeric\": \"Value must be a number\",\r\n        \"validation-numeric-formatted\": \"{0} must be a number\",\r\n        \"validation-range\": \"Value is out of range\",\r\n        \"validation-range-formatted\": \"{0} is out of range\",\r\n        \"validation-stringLength\": \"The length of the value is not correct\",\r\n        \"validation-stringLength-formatted\": \"The length of {0} is not correct\",\r\n        \"validation-custom\": \"Value is invalid\",\r\n        \"validation-custom-formatted\": \"{0} is invalid\",\r\n        \"validation-async\": \"Value is invalid\",\r\n        \"validation-async-formatted\": \"{0} is invalid\",\r\n        \"validation-compare\": \"Values do not match\",\r\n        \"validation-compare-formatted\": \"{0} does not match\",\r\n        \"validation-pattern\": \"Value does not match pattern\",\r\n        \"validation-pattern-formatted\": \"{0} does not match pattern\",\r\n        \"validation-email\": \"Email is invalid\",\r\n        \"validation-email-formatted\": \"{0} is invalid\",\r\n        \"validation-mask\": \"Value is invalid\",\r\n        \"dxLookup-searchPlaceholder\": \"Minimum character number: {0}\",\r\n        \"dxList-pullingDownText\": \"Pull down to refresh...\",\r\n        \"dxList-pulledDownText\": \"Release to refresh...\",\r\n        \"dxList-refreshingText\": \"Refreshing...\",\r\n        \"dxList-pageLoadingText\": \"Loading...\",\r\n        \"dxList-nextButtonText\": \"More\",\r\n        \"dxList-selectAll\": \"Select All\",\r\n        \"dxListEditDecorator-delete\": \"Delete\",\r\n        \"dxListEditDecorator-more\": \"More\",\r\n        \"dxScrollView-pullingDownText\": \"Pull down to refresh...\",\r\n        \"dxScrollView-pulledDownText\": \"Release to refresh...\",\r\n        \"dxScrollView-refreshingText\": \"Refreshing...\",\r\n        \"dxScrollView-reachBottomText\": \"Loading...\",\r\n        \"dxDateBox-simulatedDataPickerTitleTime\": \"Select time\",\r\n        \"dxDateBox-simulatedDataPickerTitleDate\": \"Select date\",\r\n        \"dxDateBox-simulatedDataPickerTitleDateTime\": \"Select date and time\",\r\n        \"dxDateBox-validation-datetime\": \"Value must be a date or time\",\r\n        \"dxFileUploader-selectFile\": \"Select file\",\r\n        \"dxFileUploader-dropFile\": \"or Drop file here\",\r\n        \"dxFileUploader-bytes\": \"bytes\",\r\n        \"dxFileUploader-kb\": \"kb\",\r\n        \"dxFileUploader-Mb\": \"Mb\",\r\n        \"dxFileUploader-Gb\": \"Gb\",\r\n        \"dxFileUploader-upload\": \"Upload\",\r\n        \"dxFileUploader-uploaded\": \"Uploaded\",\r\n        \"dxFileUploader-readyToUpload\": \"Ready to upload\",\r\n        \"dxFileUploader-uploadAbortedMessage\": \"Upload cancelled\",\r\n        \"dxFileUploader-uploadFailedMessage\": \"Upload failed\",\r\n        \"dxFileUploader-invalidFileExtension\": \"File type is not allowed\",\r\n        \"dxFileUploader-invalidMaxFileSize\": \"File is too large\",\r\n        \"dxFileUploader-invalidMinFileSize\": \"File is too small\",\r\n        \"dxRangeSlider-ariaFrom\": \"From\",\r\n        \"dxRangeSlider-ariaTill\": \"Till\",\r\n        \"dxSwitch-switchedOnText\": \"ON\",\r\n        \"dxSwitch-switchedOffText\": \"OFF\",\r\n        \"dxForm-optionalMark\": \"optional\",\r\n        \"dxForm-requiredMessage\": \"{0} is required\",\r\n        \"dxNumberBox-invalidValueMessage\": \"Value must be a number\",\r\n        \"dxNumberBox-noDataText\": \"No data\",\r\n        \"dxDataGrid-columnChooserTitle\": \"Column Chooser\",\r\n        \"dxDataGrid-columnChooserEmptyText\": \"Drag a column here to hide it\",\r\n        \"dxDataGrid-groupContinuesMessage\": \"Continues on the next page\",\r\n        \"dxDataGrid-groupContinuedMessage\": \"Continued from the previous page\",\r\n        \"dxDataGrid-groupHeaderText\": \"Group by This Column\",\r\n        \"dxDataGrid-ungroupHeaderText\": \"Ungroup\",\r\n        \"dxDataGrid-ungroupAllText\": \"Ungroup All\",\r\n        \"dxDataGrid-editingEditRow\": \"Edit\",\r\n        \"dxDataGrid-editingSaveRowChanges\": \"Save\",\r\n        \"dxDataGrid-editingCancelRowChanges\": \"Cancel\",\r\n        \"dxDataGrid-editingDeleteRow\": \"Delete\",\r\n        \"dxDataGrid-editingUndeleteRow\": \"Undelete\",\r\n        \"dxDataGrid-editingConfirmDeleteMessage\": \"Are you sure you want to delete this record?\",\r\n        \"dxDataGrid-validationCancelChanges\": \"Cancel changes\",\r\n        \"dxDataGrid-groupPanelEmptyText\": \"Drag a column header here to group by that column\",\r\n        \"dxDataGrid-noDataText\": \"No data\",\r\n        \"dxDataGrid-searchPanelPlaceholder\": \"Search...\",\r\n        \"dxDataGrid-filterRowShowAllText\": \"(All)\",\r\n        \"dxDataGrid-filterRowResetOperationText\": \"Reset\",\r\n        \"dxDataGrid-filterRowOperationEquals\": \"Equals\",\r\n        \"dxDataGrid-filterRowOperationNotEquals\": \"Does not equal\",\r\n        \"dxDataGrid-filterRowOperationLess\": \"Less than\",\r\n        \"dxDataGrid-filterRowOperationLessOrEquals\": \"Less than or equal to\",\r\n        \"dxDataGrid-filterRowOperationGreater\": \"Greater than\",\r\n        \"dxDataGrid-filterRowOperationGreaterOrEquals\": \"Greater than or equal to\",\r\n        \"dxDataGrid-filterRowOperationStartsWith\": \"Starts with\",\r\n        \"dxDataGrid-filterRowOperationContains\": \"Contains\",\r\n        \"dxDataGrid-filterRowOperationNotContains\": \"Does not contain\",\r\n        \"dxDataGrid-filterRowOperationEndsWith\": \"Ends with\",\r\n        \"dxDataGrid-filterRowOperationBetween\": \"Between\",\r\n        \"dxDataGrid-filterRowOperationBetweenStartText\": \"Start\",\r\n        \"dxDataGrid-filterRowOperationBetweenEndText\": \"End\",\r\n        \"dxDataGrid-applyFilterText\": \"Apply filter\",\r\n        \"dxDataGrid-trueText\": \"true\",\r\n        \"dxDataGrid-falseText\": \"false\",\r\n        \"dxDataGrid-sortingAscendingText\": \"Sort Ascending\",\r\n        \"dxDataGrid-sortingDescendingText\": \"Sort Descending\",\r\n        \"dxDataGrid-sortingClearText\": \"Clear Sorting\",\r\n        \"dxDataGrid-editingSaveAllChanges\": \"Save changes\",\r\n        \"dxDataGrid-editingCancelAllChanges\": \"Discard changes\",\r\n        \"dxDataGrid-editingAddRow\": \"Add a row\",\r\n        \"dxDataGrid-summaryMin\": \"Min: {0}\",\r\n        \"dxDataGrid-summaryMinOtherColumn\": \"Min of {1} is {0}\",\r\n        \"dxDataGrid-summaryMax\": \"Max: {0}\",\r\n        \"dxDataGrid-summaryMaxOtherColumn\": \"Max of {1} is {0}\",\r\n        \"dxDataGrid-summaryAvg\": \"Avg: {0}\",\r\n        \"dxDataGrid-summaryAvgOtherColumn\": \"Avg of {1} is {0}\",\r\n        \"dxDataGrid-summarySum\": \"Sum: {0}\",\r\n        \"dxDataGrid-summarySumOtherColumn\": \"Sum of {1} is {0}\",\r\n        \"dxDataGrid-summaryCount\": \"Count: {0}\",\r\n        \"dxDataGrid-columnFixingFix\": \"Fix\",\r\n        \"dxDataGrid-columnFixingUnfix\": \"Unfix\",\r\n        \"dxDataGrid-columnFixingLeftPosition\": \"To the left\",\r\n        \"dxDataGrid-columnFixingRightPosition\": \"To the right\",\r\n        \"dxDataGrid-exportTo\": \"Export\",\r\n        \"dxDataGrid-exportToExcel\": \"Export to Excel file\",\r\n        \"dxDataGrid-exporting\": \"Exporting...\",\r\n        \"dxDataGrid-excelFormat\": \"Excel file\",\r\n        \"dxDataGrid-selectedRows\": \"Selected rows\",\r\n        \"dxDataGrid-exportSelectedRows\": \"Export selected rows\",\r\n        \"dxDataGrid-exportAll\": \"Export all data\",\r\n        \"dxDataGrid-headerFilterEmptyValue\": \"(Blanks)\",\r\n        \"dxDataGrid-headerFilterOK\": \"OK\",\r\n        \"dxDataGrid-headerFilterCancel\": \"Cancel\",\r\n        \"dxDataGrid-ariaColumn\": \"Column\",\r\n        \"dxDataGrid-ariaValue\": \"Value\",\r\n        \"dxDataGrid-ariaFilterCell\": \"Filter cell\",\r\n        \"dxDataGrid-ariaCollapse\": \"Collapse\",\r\n        \"dxDataGrid-ariaExpand\": \"Expand\",\r\n        \"dxDataGrid-ariaDataGrid\": \"Data grid\",\r\n        \"dxDataGrid-ariaSearchInGrid\": \"Search in data grid\",\r\n        \"dxDataGrid-ariaSelectAll\": \"Select all\",\r\n        \"dxDataGrid-ariaSelectRow\": \"Select row\",\r\n        \"dxDataGrid-filterBuilderPopupTitle\": \"Filter Builder\",\r\n        \"dxDataGrid-filterPanelCreateFilter\": \"Create Filter\",\r\n        \"dxDataGrid-filterPanelClearFilter\": \"Clear\",\r\n        \"dxDataGrid-filterPanelFilterEnabledHint\": \"Enable the filter\",\r\n        \"dxTreeList-ariaTreeList\": \"Tree list\",\r\n        \"dxTreeList-editingAddRowToNode\": \"Add\",\r\n        \"dxPager-infoText\": \"Page {0} of {1} ({2} items)\",\r\n        \"dxPager-pagesCountText\": \"of\",\r\n        \"dxPager-pageSizesAllText\": \"All\",\r\n        \"dxPivotGrid-grandTotal\": \"Grand Total\",\r\n        \"dxPivotGrid-total\": \"{0} Total\",\r\n        \"dxPivotGrid-fieldChooserTitle\": \"Field Chooser\",\r\n        \"dxPivotGrid-showFieldChooser\": \"Show Field Chooser\",\r\n        \"dxPivotGrid-expandAll\": \"Expand All\",\r\n        \"dxPivotGrid-collapseAll\": \"Collapse All\",\r\n        \"dxPivotGrid-sortColumnBySummary\": 'Sort \"{0}\" by This Column',\r\n        \"dxPivotGrid-sortRowBySummary\": 'Sort \"{0}\" by This Row',\r\n        \"dxPivotGrid-removeAllSorting\": \"Remove All Sorting\",\r\n        \"dxPivotGrid-dataNotAvailable\": \"N/A\",\r\n        \"dxPivotGrid-rowFields\": \"Row Fields\",\r\n        \"dxPivotGrid-columnFields\": \"Column Fields\",\r\n        \"dxPivotGrid-dataFields\": \"Data Fields\",\r\n        \"dxPivotGrid-filterFields\": \"Filter Fields\",\r\n        \"dxPivotGrid-allFields\": \"All Fields\",\r\n        \"dxPivotGrid-columnFieldArea\": \"Drop Column Fields Here\",\r\n        \"dxPivotGrid-dataFieldArea\": \"Drop Data Fields Here\",\r\n        \"dxPivotGrid-rowFieldArea\": \"Drop Row Fields Here\",\r\n        \"dxPivotGrid-filterFieldArea\": \"Drop Filter Fields Here\",\r\n        \"dxScheduler-editorLabelTitle\": \"Subject\",\r\n        \"dxScheduler-editorLabelStartDate\": \"Start Date\",\r\n        \"dxScheduler-editorLabelEndDate\": \"End Date\",\r\n        \"dxScheduler-editorLabelDescription\": \"Description\",\r\n        \"dxScheduler-editorLabelRecurrence\": \"Repeat\",\r\n        \"dxScheduler-openAppointment\": \"Open appointment\",\r\n        \"dxScheduler-recurrenceNever\": \"Never\",\r\n        \"dxScheduler-recurrenceMinutely\": \"Every minute\",\r\n        \"dxScheduler-recurrenceHourly\": \"Hourly\",\r\n        \"dxScheduler-recurrenceDaily\": \"Daily\",\r\n        \"dxScheduler-recurrenceWeekly\": \"Weekly\",\r\n        \"dxScheduler-recurrenceMonthly\": \"Monthly\",\r\n        \"dxScheduler-recurrenceYearly\": \"Yearly\",\r\n        \"dxScheduler-recurrenceRepeatEvery\": \"Repeat Every\",\r\n        \"dxScheduler-recurrenceRepeatOn\": \"Repeat On\",\r\n        \"dxScheduler-recurrenceEnd\": \"End repeat\",\r\n        \"dxScheduler-recurrenceAfter\": \"After\",\r\n        \"dxScheduler-recurrenceOn\": \"On\",\r\n        \"dxScheduler-recurrenceRepeatMinutely\": \"minute(s)\",\r\n        \"dxScheduler-recurrenceRepeatHourly\": \"hour(s)\",\r\n        \"dxScheduler-recurrenceRepeatDaily\": \"day(s)\",\r\n        \"dxScheduler-recurrenceRepeatWeekly\": \"week(s)\",\r\n        \"dxScheduler-recurrenceRepeatMonthly\": \"month(s)\",\r\n        \"dxScheduler-recurrenceRepeatYearly\": \"year(s)\",\r\n        \"dxScheduler-switcherDay\": \"Day\",\r\n        \"dxScheduler-switcherWeek\": \"Week\",\r\n        \"dxScheduler-switcherWorkWeek\": \"Work Week\",\r\n        \"dxScheduler-switcherMonth\": \"Month\",\r\n        \"dxScheduler-switcherAgenda\": \"Agenda\",\r\n        \"dxScheduler-switcherTimelineDay\": \"Timeline Day\",\r\n        \"dxScheduler-switcherTimelineWeek\": \"Timeline Week\",\r\n        \"dxScheduler-switcherTimelineWorkWeek\": \"Timeline Work Week\",\r\n        \"dxScheduler-switcherTimelineMonth\": \"Timeline Month\",\r\n        \"dxScheduler-recurrenceRepeatOnDate\": \"on date\",\r\n        \"dxScheduler-recurrenceRepeatCount\": \"occurrence(s)\",\r\n        \"dxScheduler-allDay\": \"All day\",\r\n        \"dxScheduler-confirmRecurrenceEditMessage\": \"Do you want to edit only this appointment or the whole series?\",\r\n        \"dxScheduler-confirmRecurrenceDeleteMessage\": \"Do you want to delete only this appointment or the whole series?\",\r\n        \"dxScheduler-confirmRecurrenceEditSeries\": \"Edit series\",\r\n        \"dxScheduler-confirmRecurrenceDeleteSeries\": \"Delete series\",\r\n        \"dxScheduler-confirmRecurrenceEditOccurrence\": \"Edit appointment\",\r\n        \"dxScheduler-confirmRecurrenceDeleteOccurrence\": \"Delete appointment\",\r\n        \"dxScheduler-noTimezoneTitle\": \"No timezone\",\r\n        \"dxScheduler-moreAppointments\": \"{0} more\",\r\n        \"dxCalendar-todayButtonText\": \"Today\",\r\n        \"dxCalendar-ariaWidgetName\": \"Calendar\",\r\n        \"dxColorView-ariaRed\": \"Red\",\r\n        \"dxColorView-ariaGreen\": \"Green\",\r\n        \"dxColorView-ariaBlue\": \"Blue\",\r\n        \"dxColorView-ariaAlpha\": \"Transparency\",\r\n        \"dxColorView-ariaHex\": \"Color code\",\r\n        \"dxTagBox-selected\": \"{0} selected\",\r\n        \"dxTagBox-allSelected\": \"All selected ({0})\",\r\n        \"dxTagBox-moreSelected\": \"{0} more\",\r\n        \"vizExport-printingButtonText\": \"Print\",\r\n        \"vizExport-titleMenuText\": \"Exporting/Printing\",\r\n        \"vizExport-exportButtonText\": \"{0} file\",\r\n        \"dxFilterBuilder-and\": \"And\",\r\n        \"dxFilterBuilder-or\": \"Or\",\r\n        \"dxFilterBuilder-notAnd\": \"Not And\",\r\n        \"dxFilterBuilder-notOr\": \"Not Or\",\r\n        \"dxFilterBuilder-addCondition\": \"Add Condition\",\r\n        \"dxFilterBuilder-addGroup\": \"Add Group\",\r\n        \"dxFilterBuilder-enterValueText\": \"<enter a value>\",\r\n        \"dxFilterBuilder-filterOperationEquals\": \"Equals\",\r\n        \"dxFilterBuilder-filterOperationNotEquals\": \"Does not equal\",\r\n        \"dxFilterBuilder-filterOperationLess\": \"Is less than\",\r\n        \"dxFilterBuilder-filterOperationLessOrEquals\": \"Is less than or equal to\",\r\n        \"dxFilterBuilder-filterOperationGreater\": \"Is greater than\",\r\n        \"dxFilterBuilder-filterOperationGreaterOrEquals\": \"Is greater than or equal to\",\r\n        \"dxFilterBuilder-filterOperationStartsWith\": \"Starts with\",\r\n        \"dxFilterBuilder-filterOperationContains\": \"Contains\",\r\n        \"dxFilterBuilder-filterOperationNotContains\": \"Does not contain\",\r\n        \"dxFilterBuilder-filterOperationEndsWith\": \"Ends with\",\r\n        \"dxFilterBuilder-filterOperationIsBlank\": \"Is blank\",\r\n        \"dxFilterBuilder-filterOperationIsNotBlank\": \"Is not blank\",\r\n        \"dxFilterBuilder-filterOperationBetween\": \"Is between\",\r\n        \"dxFilterBuilder-filterOperationAnyOf\": \"Is any of\",\r\n        \"dxFilterBuilder-filterOperationNoneOf\": \"Is none of\",\r\n        \"dxHtmlEditor-dialogColorCaption\": \"Change Font Color\",\r\n        \"dxHtmlEditor-dialogBackgroundCaption\": \"Change Background Color\",\r\n        \"dxHtmlEditor-dialogLinkCaption\": \"Add Link\",\r\n        \"dxHtmlEditor-dialogLinkUrlField\": \"URL\",\r\n        \"dxHtmlEditor-dialogLinkTextField\": \"Text\",\r\n        \"dxHtmlEditor-dialogLinkTargetField\": \"Open link in new window\",\r\n        \"dxHtmlEditor-dialogImageCaption\": \"Add Image\",\r\n        \"dxHtmlEditor-dialogImageUrlField\": \"URL\",\r\n        \"dxHtmlEditor-dialogImageAltField\": \"Alternate text\",\r\n        \"dxHtmlEditor-dialogImageWidthField\": \"Width (px)\",\r\n        \"dxHtmlEditor-dialogImageHeightField\": \"Height (px)\",\r\n        \"dxHtmlEditor-dialogInsertTableRowsField\": \"Rows\",\r\n        \"dxHtmlEditor-dialogInsertTableColumnsField\": \"Columns\",\r\n        \"dxHtmlEditor-dialogInsertTableCaption\": \"Insert Table\",\r\n        \"dxHtmlEditor-heading\": \"Heading\",\r\n        \"dxHtmlEditor-normalText\": \"Normal text\",\r\n        \"dxFileManager-newDirectoryName\": \"Untitled directory\",\r\n        \"dxFileManager-rootDirectoryName\": \"Files\",\r\n        \"dxFileManager-errorNoAccess\": \"Access Denied. Operation could not be completed.\",\r\n        \"dxFileManager-errorDirectoryExistsFormat\": \"Directory '{0}' already exists.\",\r\n        \"dxFileManager-errorFileExistsFormat\": \"File '{0}' already exists.\",\r\n        \"dxFileManager-errorFileNotFoundFormat\": \"File '{0}' not found.\",\r\n        \"dxFileManager-errorDirectoryNotFoundFormat\": \"Directory '{0}' not found.\",\r\n        \"dxFileManager-errorWrongFileExtension\": \"File extension is not allowed.\",\r\n        \"dxFileManager-errorMaxFileSizeExceeded\": \"File size exceeds the maximum allowed size.\",\r\n        \"dxFileManager-errorInvalidSymbols\": \"This name contains invalid characters.\",\r\n        \"dxFileManager-errorDefault\": \"Unspecified error.\",\r\n        \"dxFileManager-errorDirectoryOpenFailed\": \"The directory cannot be opened\",\r\n        \"dxFileManager-commandCreate\": \"New directory\",\r\n        \"dxFileManager-commandRename\": \"Rename\",\r\n        \"dxFileManager-commandMove\": \"Move to\",\r\n        \"dxFileManager-commandCopy\": \"Copy to\",\r\n        \"dxFileManager-commandDelete\": \"Delete\",\r\n        \"dxFileManager-commandDownload\": \"Download\",\r\n        \"dxFileManager-commandUpload\": \"Upload files\",\r\n        \"dxFileManager-commandRefresh\": \"Refresh\",\r\n        \"dxFileManager-commandThumbnails\": \"Thumbnails View\",\r\n        \"dxFileManager-commandDetails\": \"Details View\",\r\n        \"dxFileManager-commandClearSelection\": \"Clear selection\",\r\n        \"dxFileManager-commandShowNavPane\": \"Toggle navigation pane\",\r\n        \"dxFileManager-dialogDirectoryChooserMoveTitle\": \"Move to\",\r\n        \"dxFileManager-dialogDirectoryChooserMoveButtonText\": \"Move\",\r\n        \"dxFileManager-dialogDirectoryChooserCopyTitle\": \"Copy to\",\r\n        \"dxFileManager-dialogDirectoryChooserCopyButtonText\": \"Copy\",\r\n        \"dxFileManager-dialogRenameItemTitle\": \"Rename\",\r\n        \"dxFileManager-dialogRenameItemButtonText\": \"Save\",\r\n        \"dxFileManager-dialogCreateDirectoryTitle\": \"New directory\",\r\n        \"dxFileManager-dialogCreateDirectoryButtonText\": \"Create\",\r\n        \"dxFileManager-dialogDeleteItemTitle\": \"Delete\",\r\n        \"dxFileManager-dialogDeleteItemButtonText\": \"Delete\",\r\n        \"dxFileManager-dialogDeleteItemSingleItemConfirmation\": \"Are you sure you want to delete {0}?\",\r\n        \"dxFileManager-dialogDeleteItemMultipleItemsConfirmation\": \"Are you sure you want to delete {0} items?\",\r\n        \"dxFileManager-dialogButtonCancel\": \"Cancel\",\r\n        \"dxFileManager-editingCreateSingleItemProcessingMessage\": \"Creating a directory inside {0}\",\r\n        \"dxFileManager-editingCreateSingleItemSuccessMessage\": \"Created a directory inside {0}\",\r\n        \"dxFileManager-editingCreateSingleItemErrorMessage\": \"Directory was not created\",\r\n        \"dxFileManager-editingCreateCommonErrorMessage\": \"Directory was not created\",\r\n        \"dxFileManager-editingRenameSingleItemProcessingMessage\": \"Renaming an item inside {0}\",\r\n        \"dxFileManager-editingRenameSingleItemSuccessMessage\": \"Renamed an item inside {0}\",\r\n        \"dxFileManager-editingRenameSingleItemErrorMessage\": \"Item was not renamed\",\r\n        \"dxFileManager-editingRenameCommonErrorMessage\": \"Item was not renamed\",\r\n        \"dxFileManager-editingDeleteSingleItemProcessingMessage\": \"Deleting an item from {0}\",\r\n        \"dxFileManager-editingDeleteMultipleItemsProcessingMessage\": \"Deleting {0} items from {1}\",\r\n        \"dxFileManager-editingDeleteSingleItemSuccessMessage\": \"Deleted an item from {0}\",\r\n        \"dxFileManager-editingDeleteMultipleItemsSuccessMessage\": \"Deleted {0} items from {1}\",\r\n        \"dxFileManager-editingDeleteSingleItemErrorMessage\": \"Item was not deleted\",\r\n        \"dxFileManager-editingDeleteMultipleItemsErrorMessage\": \"{0} items were not deleted\",\r\n        \"dxFileManager-editingDeleteCommonErrorMessage\": \"Some items were not deleted\",\r\n        \"dxFileManager-editingMoveSingleItemProcessingMessage\": \"Moving an item to {0}\",\r\n        \"dxFileManager-editingMoveMultipleItemsProcessingMessage\": \"Moving {0} items to {1}\",\r\n        \"dxFileManager-editingMoveSingleItemSuccessMessage\": \"Moved an item to {0}\",\r\n        \"dxFileManager-editingMoveMultipleItemsSuccessMessage\": \"Moved {0} items to {1}\",\r\n        \"dxFileManager-editingMoveSingleItemErrorMessage\": \"Item was not moved\",\r\n        \"dxFileManager-editingMoveMultipleItemsErrorMessage\": \"{0} items were not moved\",\r\n        \"dxFileManager-editingMoveCommonErrorMessage\": \"Some items were not moved\",\r\n        \"dxFileManager-editingCopySingleItemProcessingMessage\": \"Copying an item to {0}\",\r\n        \"dxFileManager-editingCopyMultipleItemsProcessingMessage\": \"Copying {0} items to {1}\",\r\n        \"dxFileManager-editingCopySingleItemSuccessMessage\": \"Copied an item to {0}\",\r\n        \"dxFileManager-editingCopyMultipleItemsSuccessMessage\": \"Copied {0} items to {1}\",\r\n        \"dxFileManager-editingCopySingleItemErrorMessage\": \"Item was not copied\",\r\n        \"dxFileManager-editingCopyMultipleItemsErrorMessage\": \"{0} items were not copied\",\r\n        \"dxFileManager-editingCopyCommonErrorMessage\": \"Some items were not copied\",\r\n        \"dxFileManager-editingUploadSingleItemProcessingMessage\": \"Uploading an item to {0}\",\r\n        \"dxFileManager-editingUploadMultipleItemsProcessingMessage\": \"Uploading {0} items to {1}\",\r\n        \"dxFileManager-editingUploadSingleItemSuccessMessage\": \"Uploaded an item to {0}\",\r\n        \"dxFileManager-editingUploadMultipleItemsSuccessMessage\": \"Uploaded {0} items to {1}\",\r\n        \"dxFileManager-editingUploadSingleItemErrorMessage\": \"Item was not uploaded\",\r\n        \"dxFileManager-editingUploadMultipleItemsErrorMessage\": \"{0} items were not uploaded\",\r\n        \"dxFileManager-editingUploadCanceledMessage\": \"Canceled\",\r\n        \"dxFileManager-listDetailsColumnCaptionName\": \"Name\",\r\n        \"dxFileManager-listDetailsColumnCaptionDateModified\": \"Date Modified\",\r\n        \"dxFileManager-listDetailsColumnCaptionFileSize\": \"File Size\",\r\n        \"dxFileManager-listThumbnailsTooltipTextSize\": \"Size\",\r\n        \"dxFileManager-listThumbnailsTooltipTextDateModified\": \"Date Modified\",\r\n        \"dxFileManager-notificationProgressPanelTitle\": \"Progress\",\r\n        \"dxFileManager-notificationProgressPanelEmptyListText\": \"No operations\",\r\n        \"dxFileManager-notificationProgressPanelOperationCanceled\": \"Canceled\",\r\n        \"dxDiagram-categoryGeneral\": \"General\",\r\n        \"dxDiagram-categoryFlowchart\": \"Flowchart\",\r\n        \"dxDiagram-categoryOrgChart\": \"Org Chart\",\r\n        \"dxDiagram-categoryContainers\": \"Containers\",\r\n        \"dxDiagram-categoryCustom\": \"Custom\",\r\n        \"dxDiagram-commandExportToSvg\": \"Export to SVG\",\r\n        \"dxDiagram-commandExportToPng\": \"Export to PNG\",\r\n        \"dxDiagram-commandExportToJpg\": \"Export to JPEG\",\r\n        \"dxDiagram-commandUndo\": \"Undo\",\r\n        \"dxDiagram-commandRedo\": \"Redo\",\r\n        \"dxDiagram-commandFontName\": \"Font Name\",\r\n        \"dxDiagram-commandFontSize\": \"Font Size\",\r\n        \"dxDiagram-commandBold\": \"Bold\",\r\n        \"dxDiagram-commandItalic\": \"Italic\",\r\n        \"dxDiagram-commandUnderline\": \"Underline\",\r\n        \"dxDiagram-commandTextColor\": \"Font Color\",\r\n        \"dxDiagram-commandLineColor\": \"Line Color\",\r\n        \"dxDiagram-commandLineWidth\": \"Line Width\",\r\n        \"dxDiagram-commandLineStyle\": \"Line Style\",\r\n        \"dxDiagram-commandLineStyleSolid\": \"Solid\",\r\n        \"dxDiagram-commandLineStyleDotted\": \"Dotted\",\r\n        \"dxDiagram-commandLineStyleDashed\": \"Dashed\",\r\n        \"dxDiagram-commandFillColor\": \"Fill Color\",\r\n        \"dxDiagram-commandAlignLeft\": \"Align Left\",\r\n        \"dxDiagram-commandAlignCenter\": \"Align Center\",\r\n        \"dxDiagram-commandAlignRight\": \"Align Right\",\r\n        \"dxDiagram-commandConnectorLineType\": \"Connector Line Type\",\r\n        \"dxDiagram-commandConnectorLineStraight\": \"Straight\",\r\n        \"dxDiagram-commandConnectorLineOrthogonal\": \"Orthogonal\",\r\n        \"dxDiagram-commandConnectorLineStart\": \"Connector Line Start\",\r\n        \"dxDiagram-commandConnectorLineEnd\": \"Connector Line End\",\r\n        \"dxDiagram-commandConnectorLineNone\": \"None\",\r\n        \"dxDiagram-commandConnectorLineArrow\": \"Arrow\",\r\n        \"dxDiagram-commandFullscreen\": \"Full Screen\",\r\n        \"dxDiagram-commandUnits\": \"Units\",\r\n        \"dxDiagram-commandPageSize\": \"Page Size\",\r\n        \"dxDiagram-commandPageOrientation\": \"Page Orientation\",\r\n        \"dxDiagram-commandPageOrientationLandscape\": \"Landscape\",\r\n        \"dxDiagram-commandPageOrientationPortrait\": \"Portrait\",\r\n        \"dxDiagram-commandPageColor\": \"Page Color\",\r\n        \"dxDiagram-commandShowGrid\": \"Show Grid\",\r\n        \"dxDiagram-commandSnapToGrid\": \"Snap to Grid\",\r\n        \"dxDiagram-commandGridSize\": \"Grid Size\",\r\n        \"dxDiagram-commandZoomLevel\": \"Zoom Level\",\r\n        \"dxDiagram-commandAutoZoom\": \"Auto Zoom\",\r\n        \"dxDiagram-commandFitToContent\": \"Fit to Content\",\r\n        \"dxDiagram-commandFitToWidth\": \"Fit to Width\",\r\n        \"dxDiagram-commandAutoZoomByContent\": \"Auto Zoom by Content\",\r\n        \"dxDiagram-commandAutoZoomByWidth\": \"Auto Zoom by Width\",\r\n        \"dxDiagram-commandSimpleView\": \"Simple View\",\r\n        \"dxDiagram-commandCut\": \"Cut\",\r\n        \"dxDiagram-commandCopy\": \"Copy\",\r\n        \"dxDiagram-commandPaste\": \"Paste\",\r\n        \"dxDiagram-commandSelectAll\": \"Select All\",\r\n        \"dxDiagram-commandDelete\": \"Delete\",\r\n        \"dxDiagram-commandBringToFront\": \"Bring to Front\",\r\n        \"dxDiagram-commandSendToBack\": \"Send to Back\",\r\n        \"dxDiagram-commandLock\": \"Lock\",\r\n        \"dxDiagram-commandUnlock\": \"Unlock\",\r\n        \"dxDiagram-commandInsertShapeImage\": \"Insert Image...\",\r\n        \"dxDiagram-commandEditShapeImage\": \"Change Image...\",\r\n        \"dxDiagram-commandDeleteShapeImage\": \"Delete Image\",\r\n        \"dxDiagram-commandLayoutLeftToRight\": \"Left-to-right\",\r\n        \"dxDiagram-commandLayoutRightToLeft\": \"Right-to-left\",\r\n        \"dxDiagram-commandLayoutTopToBottom\": \"Top-to-bottom\",\r\n        \"dxDiagram-commandLayoutBottomToTop\": \"Bottom-to-top\",\r\n        \"dxDiagram-unitIn\": \"in\",\r\n        \"dxDiagram-unitCm\": \"cm\",\r\n        \"dxDiagram-unitPx\": \"px\",\r\n        \"dxDiagram-dialogButtonOK\": \"OK\",\r\n        \"dxDiagram-dialogButtonCancel\": \"Cancel\",\r\n        \"dxDiagram-dialogInsertShapeImageTitle\": \"Insert Image\",\r\n        \"dxDiagram-dialogEditShapeImageTitle\": \"Change Image\",\r\n        \"dxDiagram-dialogEditShapeImageSelectButton\": \"Select image\",\r\n        \"dxDiagram-dialogEditShapeImageLabelText\": \"or drop file here\",\r\n        \"dxDiagram-uiExport\": \"Export\",\r\n        \"dxDiagram-uiProperties\": \"Properties\",\r\n        \"dxDiagram-uiSettings\": \"Settings\",\r\n        \"dxDiagram-uiShowToolbox\": \"Show Toolbox\",\r\n        \"dxDiagram-uiSearch\": \"Search\",\r\n        \"dxDiagram-uiStyle\": \"Style\",\r\n        \"dxDiagram-uiLayout\": \"Layout\",\r\n        \"dxDiagram-uiLayoutTree\": \"Tree\",\r\n        \"dxDiagram-uiLayoutLayered\": \"Layered\",\r\n        \"dxDiagram-uiDiagram\": \"Diagram\",\r\n        \"dxDiagram-uiText\": \"Text\",\r\n        \"dxDiagram-uiObject\": \"Object\",\r\n        \"dxDiagram-uiConnector\": \"Connector\",\r\n        \"dxDiagram-uiPage\": \"Page\",\r\n        \"dxDiagram-shapeText\": \"Text\",\r\n        \"dxDiagram-shapeRectangle\": \"Rectangle\",\r\n        \"dxDiagram-shapeEllipse\": \"Ellipse\",\r\n        \"dxDiagram-shapeCross\": \"Cross\",\r\n        \"dxDiagram-shapeTriangle\": \"Triangle\",\r\n        \"dxDiagram-shapeDiamond\": \"Diamond\",\r\n        \"dxDiagram-shapeHeart\": \"Heart\",\r\n        \"dxDiagram-shapePentagon\": \"Pentagon\",\r\n        \"dxDiagram-shapeHexagon\": \"Hexagon\",\r\n        \"dxDiagram-shapeOctagon\": \"Octagon\",\r\n        \"dxDiagram-shapeStar\": \"Star\",\r\n        \"dxDiagram-shapeArrowLeft\": \"Left Arrow\",\r\n        \"dxDiagram-shapeArrowUp\": \"Up Arrow\",\r\n        \"dxDiagram-shapeArrowRight\": \"Right Arrow\",\r\n        \"dxDiagram-shapeArrowDown\": \"Down Arrow\",\r\n        \"dxDiagram-shapeArrowUpDown\": \"Up Down Arrow\",\r\n        \"dxDiagram-shapeArrowLeftRight\": \"Left Right Arrow\",\r\n        \"dxDiagram-shapeProcess\": \"Process\",\r\n        \"dxDiagram-shapeDecision\": \"Decision\",\r\n        \"dxDiagram-shapeTerminator\": \"Terminator\",\r\n        \"dxDiagram-shapePredefinedProcess\": \"Predefined Process\",\r\n        \"dxDiagram-shapeDocument\": \"Document\",\r\n        \"dxDiagram-shapeMultipleDocuments\": \"Multiple Documents\",\r\n        \"dxDiagram-shapeManualInput\": \"Manual Input\",\r\n        \"dxDiagram-shapePreparation\": \"Preparation\",\r\n        \"dxDiagram-shapeData\": \"Data\",\r\n        \"dxDiagram-shapeDatabase\": \"Database\",\r\n        \"dxDiagram-shapeHardDisk\": \"Hard Disk\",\r\n        \"dxDiagram-shapeInternalStorage\": \"Internal Storage\",\r\n        \"dxDiagram-shapePaperTape\": \"Paper Tape\",\r\n        \"dxDiagram-shapeManualOperation\": \"Manual Operation\",\r\n        \"dxDiagram-shapeDelay\": \"Delay\",\r\n        \"dxDiagram-shapeStoredData\": \"Stored Data\",\r\n        \"dxDiagram-shapeDisplay\": \"Display\",\r\n        \"dxDiagram-shapeMerge\": \"Merge\",\r\n        \"dxDiagram-shapeConnector\": \"Connector\",\r\n        \"dxDiagram-shapeOr\": \"Or\",\r\n        \"dxDiagram-shapeSummingJunction\": \"Summing Junction\",\r\n        \"dxDiagram-shapeContainerDefaultText\": \"Container\",\r\n        \"dxDiagram-shapeVerticalContainer\": \"Vertical Container\",\r\n        \"dxDiagram-shapeHorizontalContainer\": \"Horizontal Container\",\r\n        \"dxDiagram-shapeCardDefaultText\": \"Person's Name\",\r\n        \"dxDiagram-shapeCardWithImageOnLeft\": \"Card with Image on the Left\",\r\n        \"dxDiagram-shapeCardWithImageOnTop\": \"Card with Image on the Top\",\r\n        \"dxDiagram-shapeCardWithImageOnRight\": \"Card with Image on the Right\",\r\n        \"dxGantt-dialogTitle\": \"Title\",\r\n        \"dxGantt-dialogStartTitle\": \"Start\",\r\n        \"dxGantt-dialogEndTitle\": \"End\",\r\n        \"dxGantt-dialogProgressTitle\": \"Progress\",\r\n        \"dxGantt-dialogResourcesTitle\": \"Resources\",\r\n        \"dxGantt-dialogResourceManagerTitle\": \"Resource Manager\",\r\n        \"dxGantt-dialogTaskDetailsTitle\": \"Task Details\",\r\n        \"dxGantt-dialogEditResourceListHint\": \"Edit Resource List\",\r\n        \"dxGantt-dialogEditNoResources\": \"No resources\",\r\n        \"dxGantt-dialogButtonAdd\": \"Add\",\r\n        \"dxGantt-contextMenuNewTask\": \"New Task\",\r\n        \"dxGantt-contextMenuNewSubtask\": \"New Subtask\",\r\n        \"dxGantt-contextMenuDeleteTask\": \"Delete Task\",\r\n        \"dxGantt-contextMenuDeleteDependency\": \"Delete Dependency\",\r\n        \"dxGantt-dialogTaskDeleteConfirmation\": \"Deleting a task also deletes all its dependencies and subtasks. Are you sure you want to delete this task?\",\r\n        \"dxGantt-dialogDependencyDeleteConfirmation\": \"Are you sure you want to delete the dependency from the task?\",\r\n        \"dxGantt-dialogResourcesDeleteConfirmation\": \"Deleting a resource also deletes it from tasks to which this resource is assigned. Are you sure you want to delete these resources? Resource: {0}\",\r\n        \"dxGantt-dialogConstraintCriticalViolationMessage\": \"The task you are attempting to move is linked to a second task by a dependency relation. This change would conflict with dependency rules. How would you like to proceed?\",\r\n        \"dxGantt-dialogConstraintViolationMessage\": \"The task you are attempting to move is linked to a second task by a dependency relation. How would you like to proceed?\",\r\n        \"dxGantt-dialogCancelOperationMessage\": \"Cancel the operation\",\r\n        \"dxGantt-dialogDeleteDependencyMessage\": \"Delete the dependency\",\r\n        \"dxGantt-dialogMoveTaskAndKeepDependencyMessage\": \"Move the task and keep the dependency\",\r\n        \"dxGantt-undo\": \"Undo\",\r\n        \"dxGantt-redo\": \"Redo\",\r\n        \"dxGantt-expandAll\": \"Expand All\",\r\n        \"dxGantt-collapseAll\": \"Collapse All\",\r\n        \"dxGantt-addNewTask\": \"Add New Task\",\r\n        \"dxGantt-deleteSelectedTask\": \"Delete Selected Task\",\r\n        \"dxGantt-zoomIn\": \"Zoom In\",\r\n        \"dxGantt-zoomOut\": \"Zoom Out\",\r\n        \"dxGantt-fullScreen\": \"Full Screen\"\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/shaders/ui.scheduler.current_time_shader.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar DATE_TIME_SHADER_CLASS = \"dx-scheduler-date-time-shader\";\r\nvar CurrentTimeShader = function() {\r\n    function CurrentTimeShader(workSpace) {\r\n        _classCallCheck(this, CurrentTimeShader);\r\n        this._workSpace = workSpace;\r\n        this._$container = this._workSpace._dateTableScrollable.$content()\r\n    }\r\n    _createClass(CurrentTimeShader, [{\r\n        key: \"render\",\r\n        value: function() {\r\n            var _this = this;\r\n            this.initShaderElements();\r\n            this.renderShader();\r\n            this.applyShaderMargin(this._$shader);\r\n            this._shader.forEach(function(shader, index) {\r\n                _this._$container.append(shader)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"initShaderElements\",\r\n        value: function() {\r\n            this._$shader = this.createShader();\r\n            this._shader = [];\r\n            this._shader.push(this._$shader)\r\n        }\r\n    }, {\r\n        key: \"renderShader\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"applyShaderMargin\",\r\n        value: function($shader) {\r\n            if ($shader && this._workSpace.option(\"crossScrollingEnabled\")) {\r\n                $shader.css(\"marginTop\", -(0, _position.getBoundingRect)(this._$container.get(0)).height);\r\n                $shader.css(\"height\", (0, _position.getBoundingRect)(this._$container.get(0)).height)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"createShader\",\r\n        value: function() {\r\n            return (0, _renderer.default)(\"<div>\").addClass(DATE_TIME_SHADER_CLASS)\r\n        }\r\n    }, {\r\n        key: \"clean\",\r\n        value: function() {\r\n            this._$container && this._$container.find(\".\" + DATE_TIME_SHADER_CLASS).remove()\r\n        }\r\n    }]);\r\n    return CurrentTimeShader\r\n}();\r\nvar _default = CurrentTimeShader;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/gauges/circular_indicators.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.rangebar = exports.textcloud = exports.trianglemarker = exports.twocolorneedle = exports.triangleneedle = exports.rectangleneedle = exports._default = void 0;\r\nvar _base_indicators = require(\"./base_indicators\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _Number = Number;\r\nvar _getCosAndSin = _utils.getCosAndSin;\r\nvar _convertAngleToRendererSpace = _utils.convertAngleToRendererSpace;\r\nvar SimpleIndicator = _base_indicators.BaseIndicator.inherit({\r\n    _move: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var angle = _convertAngleToRendererSpace(that._actualPosition);\r\n        that._rootElement.rotate(angle, options.x, options.y);\r\n        that._trackerElement && that._trackerElement.rotate(angle, options.x, options.y)\r\n    },\r\n    _isEnabled: function() {\r\n        return this._options.width > 0\r\n    },\r\n    _isVisible: function(layout) {\r\n        return layout.radius - _Number(this._options.indentFromCenter) > 0\r\n    },\r\n    _getTrackerSettings: function() {\r\n        var options = this._options;\r\n        var radius = this._getRadius();\r\n        var indentFromCenter = this._getIndentFromCenter();\r\n        var x = options.x;\r\n        var y = options.y - (radius + indentFromCenter) / 2;\r\n        var width = options.width / 2;\r\n        var length = (radius - indentFromCenter) / 2;\r\n        width > 10 || (width = 10);\r\n        length > 10 || (length = 10);\r\n        return {\r\n            points: [x - width, y - length, x - width, y + length, x + width, y + length, x + width, y - length]\r\n        }\r\n    },\r\n    _render: function() {\r\n        var that = this;\r\n        that._renderPointer()\r\n    },\r\n    _clearPointer: function() {\r\n        delete this._element\r\n    },\r\n    _clear: function() {\r\n        this._clearPointer()\r\n    },\r\n    _getIndentFromCenter: function(radius) {\r\n        return Number(this._options.indentFromCenter) || 0\r\n    },\r\n    _getRadius: function() {\r\n        return 0\r\n    },\r\n    measure: function(layout) {\r\n        var result = {\r\n            max: layout.radius\r\n        };\r\n        if (this._options.indentFromCenter < 0) {\r\n            result.inverseHorizontalOffset = result.inverseVerticalOffset = -_Number(this._options.indentFromCenter)\r\n        }\r\n        return result\r\n    },\r\n    getTooltipParameters: function() {\r\n        var options = this._options;\r\n        var cosSin = _getCosAndSin(this._actualPosition);\r\n        var r = (this._getRadius() + this._getIndentFromCenter()) / 2;\r\n        return {\r\n            x: options.x + cosSin.cos * r,\r\n            y: options.y - cosSin.sin * r,\r\n            value: this._currentValue,\r\n            color: options.color,\r\n            offset: options.width / 2\r\n        }\r\n    }\r\n});\r\nvar NeedleIndicator = SimpleIndicator.inherit({\r\n    _isVisible: function(layout) {\r\n        var indentFromCenter = this._adjustOffset(Number(this._options.indentFromCenter), layout.radius);\r\n        var offset = this._adjustOffset(Number(this._options.offset), layout.radius);\r\n        return layout.radius - indentFromCenter - offset > 0\r\n    },\r\n    getOffset: function() {\r\n        return 0\r\n    },\r\n    _adjustOffset: function(value, radius) {\r\n        var minRadius = Number(this._options.beginAdaptingAtRadius);\r\n        var diff = radius / minRadius;\r\n        if (diff < 1) {\r\n            value = Math.floor(value * diff)\r\n        }\r\n        return value || 0\r\n    },\r\n    _getIndentFromCenter: function(radius) {\r\n        return this._adjustOffset(Number(this._options.indentFromCenter), this._options.radius)\r\n    },\r\n    _getRadius: function() {\r\n        var options = this._options;\r\n        return options.radius - this._adjustOffset(Number(options.offset), options.radius)\r\n    },\r\n    _renderSpindle: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var radius = options.radius;\r\n        var spindleSize = 2 * this._adjustOffset(_Number(options.spindleSize) / 2, radius);\r\n        var gapSize = 2 * this._adjustOffset(_Number(options.spindleGapSize) / 2, radius) || 0;\r\n        if (gapSize > 0) {\r\n            gapSize = gapSize <= spindleSize ? gapSize : spindleSize\r\n        }\r\n        if (spindleSize > 0) {\r\n            that._spindleOuter = that._spindleOuter || that._renderer.circle().append(that._rootElement);\r\n            that._spindleInner = that._spindleInner || that._renderer.circle().append(that._rootElement);\r\n            that._spindleOuter.attr({\r\n                \"class\": \"dxg-spindle-border\",\r\n                cx: options.x,\r\n                cy: options.y,\r\n                r: spindleSize / 2\r\n            });\r\n            that._spindleInner.attr({\r\n                \"class\": \"dxg-spindle-hole\",\r\n                cx: options.x,\r\n                cy: options.y,\r\n                r: gapSize / 2,\r\n                fill: options.containerBackgroundColor\r\n            })\r\n        }\r\n    },\r\n    _render: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        that._renderSpindle()\r\n    },\r\n    _clear: function() {\r\n        this.callBase();\r\n        delete this._spindleOuter;\r\n        delete this._spindleInner\r\n    }\r\n});\r\nvar rectangleNeedle = NeedleIndicator.inherit({\r\n    _renderPointer: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var y2 = options.y - this._getRadius();\r\n        var y1 = options.y - this._getIndentFromCenter();\r\n        var x1 = options.x - options.width / 2;\r\n        var x2 = x1 + _Number(options.width);\r\n        that._element = that._element || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._element.attr({\r\n            points: [x1, y1, x1, y2, x2, y2, x2, y1]\r\n        })\r\n    }\r\n});\r\nexports.rectangleneedle = exports._default = rectangleNeedle;\r\nvar triangleNeedle = NeedleIndicator.inherit({\r\n    _renderPointer: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var y2 = options.y - this._getRadius();\r\n        var y1 = options.y - this._getIndentFromCenter();\r\n        var x1 = options.x - options.width / 2;\r\n        var x2 = options.x + options.width / 2;\r\n        that._element = that._element || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._element.attr({\r\n            points: [x1, y1, options.x, y2, x2, y1]\r\n        })\r\n    }\r\n});\r\nexports.triangleneedle = triangleNeedle;\r\nvar twoColorNeedle = NeedleIndicator.inherit({\r\n    _renderPointer: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var x1 = options.x - options.width / 2;\r\n        var x2 = options.x + options.width / 2;\r\n        var y4 = options.y - this._getRadius();\r\n        var y1 = options.y - this._getIndentFromCenter();\r\n        var fraction = _Number(options.secondFraction) || 0;\r\n        var y2;\r\n        var y3;\r\n        if (fraction >= 1) {\r\n            y2 = y3 = y1\r\n        } else {\r\n            if (fraction <= 0) {\r\n                y2 = y3 = y4\r\n            } else {\r\n                y3 = y4 + (y1 - y4) * fraction;\r\n                y2 = y3 + _Number(options.space)\r\n            }\r\n        }\r\n        that._firstElement = that._firstElement || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._spaceElement = that._spaceElement || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._secondElement = that._secondElement || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._firstElement.attr({\r\n            points: [x1, y1, x1, y2, x2, y2, x2, y1]\r\n        });\r\n        that._spaceElement.attr({\r\n            points: [x1, y2, x1, y3, x2, y3, x2, y2],\r\n            \"class\": \"dxg-hole\",\r\n            fill: options.containerBackgroundColor\r\n        });\r\n        that._secondElement.attr({\r\n            points: [x1, y3, x1, y4, x2, y4, x2, y3],\r\n            \"class\": \"dxg-part\",\r\n            fill: options.secondColor\r\n        })\r\n    },\r\n    _clearPointer: function() {\r\n        delete this._firstElement;\r\n        delete this._secondElement;\r\n        delete this._spaceElement\r\n    }\r\n});\r\nexports.twocolorneedle = twoColorNeedle;\r\nvar triangleMarker = SimpleIndicator.inherit({\r\n    _isEnabled: function() {\r\n        return this._options.length > 0 && this._options.width > 0\r\n    },\r\n    _isVisible: function(layout) {\r\n        return layout.radius > 0\r\n    },\r\n    _render: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var x = options.x;\r\n        var y1 = options.y - options.radius;\r\n        var dx = options.width / 2 || 0;\r\n        var y2 = y1 - _Number(options.length);\r\n        that._element = that._element || that._renderer.path([], \"area\").append(that._rootElement);\r\n        var settings = {\r\n            points: [x, y1, x - dx, y2, x + dx, y2],\r\n            stroke: \"none\",\r\n            \"stroke-width\": 0,\r\n            \"stroke-linecap\": \"square\"\r\n        };\r\n        if (options.space > 0) {\r\n            settings[\"stroke-width\"] = Math.min(options.space, options.width / 4) || 0;\r\n            settings.stroke = settings[\"stroke-width\"] > 0 ? options.containerBackgroundColor || \"none\" : \"none\"\r\n        }\r\n        that._element.attr(settings).sharp()\r\n    },\r\n    _clear: function() {\r\n        delete this._element\r\n    },\r\n    _getTrackerSettings: function() {\r\n        var options = this._options;\r\n        var x = options.x;\r\n        var y = options.y - options.radius - options.length / 2;\r\n        var width = options.width / 2;\r\n        var length = options.length / 2;\r\n        width > 10 || (width = 10);\r\n        length > 10 || (length = 10);\r\n        return {\r\n            points: [x - width, y - length, x - width, y + length, x + width, y + length, x + width, y - length]\r\n        }\r\n    },\r\n    measure: function(layout) {\r\n        return {\r\n            min: layout.radius,\r\n            max: layout.radius + _Number(this._options.length)\r\n        }\r\n    },\r\n    getTooltipParameters: function() {\r\n        var options = this._options;\r\n        var cosSin = _getCosAndSin(this._actualPosition);\r\n        var r = options.radius + options.length / 2;\r\n        var parameters = this.callBase();\r\n        parameters.x = options.x + cosSin.cos * r;\r\n        parameters.y = options.y - cosSin.sin * r;\r\n        parameters.offset = options.length / 2;\r\n        return parameters\r\n    }\r\n});\r\nexports.trianglemarker = triangleMarker;\r\nvar textCloud = _base_indicators.BaseTextCloudMarker.inherit({\r\n    _isEnabled: function() {\r\n        return true\r\n    },\r\n    _isVisible: function(layout) {\r\n        return layout.radius > 0\r\n    },\r\n    _getTextCloudOptions: function() {\r\n        var that = this;\r\n        var cosSin = _getCosAndSin(that._actualPosition);\r\n        var nAngle = (0, _utils.normalizeAngle)(that._actualPosition);\r\n        return {\r\n            x: that._options.x + cosSin.cos * that._options.radius,\r\n            y: that._options.y - cosSin.sin * that._options.radius,\r\n            type: nAngle > 270 ? \"left-top\" : nAngle > 180 ? \"top-right\" : nAngle > 90 ? \"right-bottom\" : \"bottom-left\"\r\n        }\r\n    },\r\n    measure: function(layout) {\r\n        var that = this;\r\n        var arrowLength = _Number(that._options.arrowLength) || 0;\r\n        that._measureText();\r\n        var verticalOffset = that._textFullHeight + arrowLength;\r\n        var horizontalOffset = that._textFullWidth + arrowLength;\r\n        return {\r\n            min: layout.radius,\r\n            max: layout.radius,\r\n            horizontalOffset: horizontalOffset,\r\n            verticalOffset: verticalOffset,\r\n            inverseHorizontalOffset: horizontalOffset,\r\n            inverseVerticalOffset: verticalOffset\r\n        }\r\n    }\r\n});\r\nexports.textcloud = textCloud;\r\nvar rangeBar = _base_indicators.BaseRangeBar.inherit({\r\n    _isEnabled: function() {\r\n        return this._options.size > 0\r\n    },\r\n    _isVisible: function(layout) {\r\n        return layout.radius - _Number(this._options.size) > 0\r\n    },\r\n    _createBarItem: function() {\r\n        return this._renderer.arc().attr({\r\n            \"stroke-linejoin\": \"round\"\r\n        }).append(this._rootElement)\r\n    },\r\n    _createTracker: function() {\r\n        return this._renderer.arc().attr({\r\n            \"stroke-linejoin\": \"round\"\r\n        })\r\n    },\r\n    _setBarSides: function() {\r\n        var that = this;\r\n        that._maxSide = that._options.radius;\r\n        that._minSide = that._maxSide - _Number(that._options.size)\r\n    },\r\n    _getSpace: function() {\r\n        var options = this._options;\r\n        return options.space > 0 ? 180 * options.space / options.radius / Math.PI : 0\r\n    },\r\n    _isTextVisible: function() {\r\n        var options = this._options.text || {};\r\n        return options.indent > 0\r\n    },\r\n    _setTextItemsSides: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var indent = _Number(options.text.indent);\r\n        that._lineFrom = options.y - options.radius;\r\n        that._lineTo = that._lineFrom - indent;\r\n        that._textRadius = options.radius + indent\r\n    },\r\n    _getPositions: function() {\r\n        var that = this;\r\n        var basePosition = that._basePosition;\r\n        var actualPosition = that._actualPosition;\r\n        var mainPosition1;\r\n        var mainPosition2;\r\n        if (basePosition >= actualPosition) {\r\n            mainPosition1 = basePosition;\r\n            mainPosition2 = actualPosition\r\n        } else {\r\n            mainPosition1 = actualPosition;\r\n            mainPosition2 = basePosition\r\n        }\r\n        return {\r\n            start: that._startPosition,\r\n            end: that._endPosition,\r\n            main1: mainPosition1,\r\n            main2: mainPosition2,\r\n            back1: Math.min(mainPosition1 + that._space, that._startPosition),\r\n            back2: Math.max(mainPosition2 - that._space, that._endPosition)\r\n        }\r\n    },\r\n    _buildItemSettings: function(from, to) {\r\n        var that = this;\r\n        return {\r\n            x: that._options.x,\r\n            y: that._options.y,\r\n            innerRadius: that._minSide,\r\n            outerRadius: that._maxSide,\r\n            startAngle: to,\r\n            endAngle: from\r\n        }\r\n    },\r\n    _updateTextPosition: function() {\r\n        var that = this;\r\n        var cosSin = _getCosAndSin(that._actualPosition);\r\n        var x = that._options.x + that._textRadius * cosSin.cos;\r\n        var y = that._options.y - that._textRadius * cosSin.sin;\r\n        x += cosSin.cos * that._textWidth * .6;\r\n        y -= cosSin.sin * that._textHeight * .6;\r\n        that._text.attr({\r\n            x: x,\r\n            y: y + that._textVerticalOffset\r\n        })\r\n    },\r\n    _updateLinePosition: function() {\r\n        var that = this;\r\n        var x = that._options.x;\r\n        var x1;\r\n        var x2;\r\n        if (that._basePosition > that._actualPosition) {\r\n            x1 = x - 2;\r\n            x2 = x\r\n        } else {\r\n            if (that._basePosition < that._actualPosition) {\r\n                x1 = x;\r\n                x2 = x + 2\r\n            } else {\r\n                x1 = x - 1;\r\n                x2 = x + 1\r\n            }\r\n        }\r\n        that._line.attr({\r\n            points: [x1, that._lineFrom, x1, that._lineTo, x2, that._lineTo, x2, that._lineFrom]\r\n        }).rotate(_convertAngleToRendererSpace(that._actualPosition), x, that._options.y).sharp()\r\n    },\r\n    _getTooltipPosition: function() {\r\n        var that = this;\r\n        var cosSin = _getCosAndSin((that._basePosition + that._actualPosition) / 2);\r\n        var r = (that._minSide + that._maxSide) / 2;\r\n        return {\r\n            x: that._options.x + cosSin.cos * r,\r\n            y: that._options.y - cosSin.sin * r\r\n        }\r\n    },\r\n    measure: function(layout) {\r\n        var that = this;\r\n        var result = {\r\n            min: layout.radius - _Number(that._options.size),\r\n            max: layout.radius\r\n        };\r\n        that._measureText();\r\n        if (that._hasText) {\r\n            result.max += _Number(that._options.text.indent);\r\n            result.horizontalOffset = that._textWidth;\r\n            result.verticalOffset = that._textHeight\r\n        }\r\n        return result\r\n    }\r\n});\r\nexports.rangebar = rangeBar;\r\n","/**\r\n * DevExtreme (ui/drop_down_editor/ui.drop_down_editor.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _element = require(\"../../core/element\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _position2 = require(\"../../core/utils/position\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.drop_down_button\"));\r\nvar _ui3 = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _text_box = _interopRequireDefault(require(\"../text_box\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _function_template = require(\"../../core/templates/function_template\");\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _utils = require(\"./utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DROP_DOWN_EDITOR_CLASS = \"dx-dropdowneditor\";\r\nvar DROP_DOWN_EDITOR_INPUT_WRAPPER = \"dx-dropdowneditor-input-wrapper\";\r\nvar DROP_DOWN_EDITOR_BUTTON_ICON = \"dx-dropdowneditor-icon\";\r\nvar DROP_DOWN_EDITOR_OVERLAY = \"dx-dropdowneditor-overlay\";\r\nvar DROP_DOWN_EDITOR_OVERLAY_FLIPPED = \"dx-dropdowneditor-overlay-flipped\";\r\nvar DROP_DOWN_EDITOR_ACTIVE = \"dx-dropdowneditor-active\";\r\nvar DROP_DOWN_EDITOR_FIELD_CLICKABLE = \"dx-dropdowneditor-field-clickable\";\r\nvar DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER = \"dx-dropdowneditor-field-template-wrapper\";\r\nvar isIOs = \"ios\" === _devices.default.current().platform;\r\nvar DropDownEditor = _text_box.default.inherit({\r\n    _supportedKeys: function() {\r\n        return (0, _extend.extend)({}, this.callBase(), {\r\n            tab: function(e) {\r\n                if (!this.option(\"opened\")) {\r\n                    return\r\n                }\r\n                if (\"instantly\" === this.option(\"applyValueMode\")) {\r\n                    this.close();\r\n                    return\r\n                }\r\n                var $focusableElement = e.shiftKey ? this._getLastPopupElement() : this._getFirstPopupElement();\r\n                $focusableElement && _events_engine.default.trigger($focusableElement, \"focus\");\r\n                e.preventDefault()\r\n            },\r\n            escape: function(e) {\r\n                if (this.option(\"opened\")) {\r\n                    e.preventDefault()\r\n                }\r\n                this.close();\r\n                return true\r\n            },\r\n            upArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (e.altKey) {\r\n                    this.close();\r\n                    return false\r\n                }\r\n                return true\r\n            },\r\n            downArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (e.altKey) {\r\n                    this._validatedOpening();\r\n                    return false\r\n                }\r\n                return true\r\n            },\r\n            enter: function(e) {\r\n                if (this.option(\"opened\")) {\r\n                    e.preventDefault();\r\n                    this._valueChangeEventHandler(e)\r\n                }\r\n                return true\r\n            }\r\n        })\r\n    },\r\n    _getDefaultButtons: function() {\r\n        return this.callBase().concat([{\r\n            name: \"dropDown\",\r\n            Ctor: _ui2.default\r\n        }])\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: null,\r\n            onOpened: null,\r\n            onClosed: null,\r\n            opened: false,\r\n            acceptCustomValue: true,\r\n            applyValueMode: \"instantly\",\r\n            deferRendering: true,\r\n            activeStateEnabled: true,\r\n            dropDownButtonTemplate: \"dropDownButton\",\r\n            fieldTemplate: null,\r\n            openOnFieldClick: false,\r\n            showDropDownButton: true,\r\n            buttons: void 0,\r\n            dropDownOptions: {\r\n                showTitle: false\r\n            },\r\n            popupPosition: this._getDefaultPopupPosition(),\r\n            onPopupInitialized: null,\r\n            applyButtonText: _message.default.format(\"OK\"),\r\n            cancelButtonText: _message.default.format(\"Cancel\"),\r\n            buttonsLocation: \"default\",\r\n            useHiddenSubmitElement: false\r\n        })\r\n    },\r\n    _getDefaultPopupPosition: function(isRtlEnabled) {\r\n        var position = (0, _position2.getDefaultAlignment)(isRtlEnabled);\r\n        return {\r\n            offset: {\r\n                h: 0,\r\n                v: -1\r\n            },\r\n            my: position + \" top\",\r\n            at: position + \" bottom\",\r\n            collision: \"flip flip\"\r\n        }\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function(_device) {\r\n                var isGeneric = \"generic\" === _device.platform;\r\n                return isGeneric\r\n            },\r\n            options: {\r\n                popupPosition: {\r\n                    offset: {\r\n                        v: 0\r\n                    }\r\n                }\r\n            }\r\n        }])\r\n    },\r\n    _inputWrapper: function() {\r\n        return this.$element().find(\".\" + DROP_DOWN_EDITOR_INPUT_WRAPPER)\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initVisibilityActions();\r\n        this._initPopupInitializedAction();\r\n        this._updatePopupPosition(this.option(\"rtlEnabled\"));\r\n        this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"))\r\n    },\r\n    _updatePopupPosition: function(isRtlEnabled) {\r\n        var _this$_getDefaultPopu = this._getDefaultPopupPosition(isRtlEnabled),\r\n            my = _this$_getDefaultPopu.my,\r\n            at = _this$_getDefaultPopu.at;\r\n        var currentPosition = this.option(\"popupPosition\");\r\n        this.option(\"popupPosition\", (0, _extend.extend)({}, currentPosition, {\r\n            my: my,\r\n            at: at\r\n        }))\r\n    },\r\n    _initVisibilityActions: function() {\r\n        this._openAction = this._createActionByOption(\"onOpened\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        });\r\n        this._closeAction = this._createActionByOption(\"onClosed\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _initPopupInitializedAction: function() {\r\n        this._popupInitializedAction = this._createActionByOption(\"onPopupInitialized\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderSubmitElement();\r\n        this.callBase();\r\n        this.$element().addClass(DROP_DOWN_EDITOR_CLASS);\r\n        this.setAria(\"role\", \"combobox\")\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderOpenHandler();\r\n        this._attachFocusOutHandler();\r\n        this._renderOpenedState()\r\n    },\r\n    _renderContentImpl: function() {\r\n        if (!this.option(\"deferRendering\")) {\r\n            this._createPopup()\r\n        }\r\n    },\r\n    _renderInput: function() {\r\n        this.callBase();\r\n        this.$element().wrapInner((0, _renderer.default)(\"<div>\").addClass(DROP_DOWN_EDITOR_INPUT_WRAPPER));\r\n        this._$container = this.$element().children().eq(0);\r\n        this._setDefaultAria()\r\n    },\r\n    _setDefaultAria: function() {\r\n        this.setAria({\r\n            haspopup: \"true\",\r\n            autocomplete: \"list\"\r\n        })\r\n    },\r\n    _readOnlyPropValue: function() {\r\n        return !this.option(\"acceptCustomValue\") || this.callBase()\r\n    },\r\n    _cleanFocusState: function() {\r\n        this.callBase();\r\n        if (this.option(\"fieldTemplate\")) {\r\n            this._detachFocusEvents()\r\n        }\r\n    },\r\n    _getFieldTemplate: function() {\r\n        return this.option(\"fieldTemplate\") && this._getTemplateByOption(\"fieldTemplate\")\r\n    },\r\n    _renderMask: function() {\r\n        if (this.option(\"fieldTemplate\")) {\r\n            return\r\n        }\r\n        this.callBase()\r\n    },\r\n    _renderField: function() {\r\n        var fieldTemplate = this._getFieldTemplate();\r\n        fieldTemplate && this._renderTemplatedField(fieldTemplate, this._fieldRenderData())\r\n    },\r\n    _renderPlaceholder: function() {\r\n        var hasFieldTemplate = !!this._getFieldTemplate();\r\n        if (!hasFieldTemplate) {\r\n            this.callBase()\r\n        }\r\n    },\r\n    _renderValue: function() {\r\n        if (this.option(\"useHiddenSubmitElement\")) {\r\n            this._setSubmitValue()\r\n        }\r\n        var promise = this.callBase();\r\n        promise.always(this._renderField.bind(this))\r\n    },\r\n    _renderTemplatedField: function(fieldTemplate, data) {\r\n        var _this = this;\r\n        var isFocused = (0, _selectors.focused)(this._input());\r\n        var $container = this._$container;\r\n        this._detachKeyboardEvents();\r\n        this._refreshButtonsContainer();\r\n        var beforeButtonsContainerParent = this._$beforeButtonsContainer && this._$beforeButtonsContainer[0].parentNode;\r\n        var afterButtonsContainerParent = this._$afterButtonsContainer && this._$afterButtonsContainer[0].parentNode;\r\n        beforeButtonsContainerParent && beforeButtonsContainerParent.removeChild(this._$beforeButtonsContainer[0]);\r\n        afterButtonsContainerParent && afterButtonsContainerParent.removeChild(this._$afterButtonsContainer[0]);\r\n        this._detachFocusEvents();\r\n        $container.empty();\r\n        var $templateWrapper = (0, _renderer.default)(\"<div>\").addClass(DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER).appendTo($container);\r\n        fieldTemplate.render({\r\n            model: data,\r\n            container: (0, _element.getPublicElement)($templateWrapper),\r\n            onRendered: function() {\r\n                var $input = _this._input();\r\n                if (!$input.length) {\r\n                    throw _ui.default.Error(\"E1010\")\r\n                }\r\n                _this._integrateInput();\r\n                isFocused && _events_engine.default.trigger($input, \"focus\")\r\n            }\r\n        });\r\n        $container.prepend(this._$beforeButtonsContainer);\r\n        $container.append(this._$afterButtonsContainer)\r\n    },\r\n    _refreshButtonsContainer: function() {\r\n        this._$buttonsContainer = this.$element().children().eq(0)\r\n    },\r\n    _integrateInput: function() {\r\n        this._refreshEvents();\r\n        this._refreshValueChangeEvent();\r\n        this._renderFocusState();\r\n        this._refreshEmptinessEvent()\r\n    },\r\n    _refreshEmptinessEvent: function() {\r\n        _events_engine.default.off(this._input(), \"input blur\", this._toggleEmptinessEventHandler);\r\n        this._renderEmptinessEvent()\r\n    },\r\n    _fieldRenderData: function() {\r\n        return this.option(\"value\")\r\n    },\r\n    _initTemplates: function() {\r\n        this._templateManager.addDefaultTemplates({\r\n            dropDownButton: new _function_template.FunctionTemplate(function(options) {\r\n                var $icon = (0, _renderer.default)(\"<div>\").addClass(DROP_DOWN_EDITOR_BUTTON_ICON);\r\n                (0, _renderer.default)(options.container).append($icon)\r\n            })\r\n        });\r\n        this.callBase()\r\n    },\r\n    _renderOpenHandler: function() {\r\n        var $inputWrapper = this._inputWrapper();\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        var openOnFieldClick = this.option(\"openOnFieldClick\");\r\n        _events_engine.default.off($inputWrapper, eventName);\r\n        _events_engine.default.on($inputWrapper, eventName, this._getInputClickHandler(openOnFieldClick));\r\n        this.$element().toggleClass(DROP_DOWN_EDITOR_FIELD_CLICKABLE, openOnFieldClick);\r\n        if (openOnFieldClick) {\r\n            this._openOnFieldClickAction = this._createAction(this._openHandler.bind(this))\r\n        }\r\n    },\r\n    _attachFocusOutHandler: function() {\r\n        var _this2 = this;\r\n        if (isIOs) {\r\n            this._detachFocusOutEvents();\r\n            _events_engine.default.on(this._inputWrapper(), (0, _index.addNamespace)(\"focusout\", this.NAME), function(event) {\r\n                var newTarget = event.relatedTarget;\r\n                var popupWrapper = _this2.content ? (0, _renderer.default)(_this2.content()).closest(\".\" + DROP_DOWN_EDITOR_OVERLAY) : _this2._$popup;\r\n                if (newTarget && _this2.option(\"opened\")) {\r\n                    var isNewTargetOutside = 0 === (0, _renderer.default)(newTarget).closest(\".\" + DROP_DOWN_EDITOR_OVERLAY, popupWrapper).length;\r\n                    if (isNewTargetOutside) {\r\n                        _this2.close()\r\n                    }\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _detachFocusOutEvents: function() {\r\n        isIOs && _events_engine.default.off(this._inputWrapper(), (0, _index.addNamespace)(\"focusout\", this.NAME))\r\n    },\r\n    _getInputClickHandler: function(openOnFieldClick) {\r\n        var _this3 = this;\r\n        return openOnFieldClick ? function(e) {\r\n            _this3._executeOpenAction(e)\r\n        } : function(e) {\r\n            _this3._focusInput()\r\n        }\r\n    },\r\n    _openHandler: function() {\r\n        this._toggleOpenState()\r\n    },\r\n    _executeOpenAction: function(e) {\r\n        this._openOnFieldClickAction({\r\n            event: e\r\n        })\r\n    },\r\n    _keyboardEventBindingTarget: function() {\r\n        return this._input()\r\n    },\r\n    _focusInput: function() {\r\n        if (this.option(\"disabled\")) {\r\n            return false\r\n        }\r\n        if (this.option(\"focusStateEnabled\") && !(0, _selectors.focused)(this._input())) {\r\n            _events_engine.default.trigger(this._input(), \"focus\")\r\n        }\r\n        return true\r\n    },\r\n    _toggleOpenState: function(isVisible) {\r\n        if (!this._focusInput()) {\r\n            return\r\n        }\r\n        if (!this.option(\"readOnly\")) {\r\n            isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n            this.option(\"opened\", isVisible)\r\n        }\r\n    },\r\n    _renderOpenedState: function() {\r\n        var opened = this.option(\"opened\");\r\n        if (opened) {\r\n            this._createPopup()\r\n        }\r\n        this.$element().toggleClass(DROP_DOWN_EDITOR_ACTIVE, opened);\r\n        this._setPopupOption(\"visible\", opened);\r\n        this.setAria({\r\n            expanded: opened\r\n        });\r\n        this.setAria(\"owns\", (opened || void 0) && this._popupContentId, this.$element())\r\n    },\r\n    _createPopup: function() {\r\n        if (this._$popup) {\r\n            return\r\n        }\r\n        this._$popup = (0, _renderer.default)(\"<div>\").addClass(DROP_DOWN_EDITOR_OVERLAY).addClass(this.option(\"customOverlayCssClass\")).appendTo(this.$element());\r\n        this._renderPopup();\r\n        this._renderPopupContent()\r\n    },\r\n    _renderPopupContent: _common.noop,\r\n    _renderPopup: function() {\r\n        var popupConfig = (0, _extend.extend)(this._popupConfig(), this._options.cache(\"dropDownOptions\"));\r\n        this._popup = this._createComponent(this._$popup, _popup.default, popupConfig);\r\n        this._popup.on({\r\n            showing: this._popupShowingHandler.bind(this),\r\n            shown: this._popupShownHandler.bind(this),\r\n            hiding: this._popupHidingHandler.bind(this),\r\n            hidden: this._popupHiddenHandler.bind(this),\r\n            contentReady: this._contentReadyHandler.bind(this)\r\n        });\r\n        this._contentReadyHandler();\r\n        this._setPopupContentId(this._popup.$content());\r\n        this._bindInnerWidgetOptions(this._popup, \"dropDownOptions\")\r\n    },\r\n    _setPopupContentId: function($popupContent) {\r\n        this._popupContentId = \"dx-\" + new _guid.default;\r\n        this.setAria(\"id\", this._popupContentId, $popupContent)\r\n    },\r\n    _contentReadyHandler: _common.noop,\r\n    _popupConfig: function() {\r\n        var _this4 = this;\r\n        return {\r\n            onInitialized: this._popupInitializedHandler(),\r\n            position: (0, _extend.extend)(this.option(\"popupPosition\"), {\r\n                of: this.$element()\r\n            }),\r\n            showTitle: this.option(\"dropDownOptions.showTitle\"),\r\n            width: function() {\r\n                return (0, _utils.getElementWidth)(_this4.$element())\r\n            },\r\n            height: \"auto\",\r\n            shading: false,\r\n            closeOnTargetScroll: true,\r\n            closeOnOutsideClick: this._closeOutsideDropDownHandler.bind(this),\r\n            animation: {\r\n                show: {\r\n                    type: \"fade\",\r\n                    duration: 0,\r\n                    from: 0,\r\n                    to: 1\r\n                },\r\n                hide: {\r\n                    type: \"fade\",\r\n                    duration: 400,\r\n                    from: 1,\r\n                    to: 0\r\n                }\r\n            },\r\n            deferRendering: false,\r\n            focusStateEnabled: false,\r\n            showCloseButton: false,\r\n            dragEnabled: false,\r\n            toolbarItems: this._getPopupToolbarItems(),\r\n            onPositioned: this._popupPositionedHandler.bind(this),\r\n            fullScreen: false,\r\n            contentTemplate: null\r\n        }\r\n    },\r\n    _popupInitializedHandler: function() {\r\n        var _this5 = this;\r\n        if (!this.option(\"onPopupInitialized\")) {\r\n            return\r\n        }\r\n        return function(e) {\r\n            _this5._popupInitializedAction({\r\n                popup: e.component\r\n            })\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        var _this6 = this;\r\n        var popupWidth = (0, _utils.getSizeValue)(this.option(\"dropDownOptions.width\"));\r\n        if (void 0 === popupWidth) {\r\n            this._setPopupOption(\"width\", function() {\r\n                return (0, _utils.getElementWidth)(_this6.$element())\r\n            })\r\n        }\r\n    },\r\n    _popupPositionedHandler: function(e) {\r\n        e.position && this._popup.overlayContent().toggleClass(DROP_DOWN_EDITOR_OVERLAY_FLIPPED, e.position.v.flip)\r\n    },\r\n    _popupShowingHandler: _common.noop,\r\n    _popupHidingHandler: function() {\r\n        this.option(\"opened\", false)\r\n    },\r\n    _popupShownHandler: function() {\r\n        var _this$_validationMess;\r\n        this._openAction();\r\n        null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.option(\"positionRequest\", this._getValidationMessagePositionRequest())\r\n    },\r\n    _popupHiddenHandler: function() {\r\n        var _this$_validationMess2;\r\n        this._closeAction();\r\n        null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(\"positionRequest\", this._getValidationMessagePositionRequest())\r\n    },\r\n    _getValidationMessagePositionRequest: function() {\r\n        var positionRequest = \"below\";\r\n        if (this._popup && this._popup.option(\"visible\")) {\r\n            var _animationPosition$se = _position.default.setup(this.$element()),\r\n                myTop = _animationPosition$se.top;\r\n            var _animationPosition$se2 = _position.default.setup(this._popup.$content()),\r\n                popupTop = _animationPosition$se2.top;\r\n            positionRequest = myTop + this.option(\"popupPosition\").offset.v > popupTop ? \"below\" : \"above\"\r\n        }\r\n        return positionRequest\r\n    },\r\n    _closeOutsideDropDownHandler: function(_ref) {\r\n        var target = _ref.target;\r\n        var $target = (0, _renderer.default)(target);\r\n        var dropDownButton = this.getButton(\"dropDown\");\r\n        var $dropDownButton = dropDownButton && dropDownButton.$element();\r\n        var isInputClicked = !!$target.closest(this.$element()).length;\r\n        var isDropDownButtonClicked = !!$target.closest($dropDownButton).length;\r\n        var isOutsideClick = !isInputClicked && !isDropDownButtonClicked;\r\n        return isOutsideClick\r\n    },\r\n    _clean: function() {\r\n        delete this._openOnFieldClickAction;\r\n        if (this._$popup) {\r\n            this._$popup.remove();\r\n            delete this._$popup;\r\n            delete this._popup\r\n        }\r\n        this.callBase()\r\n    },\r\n    _setPopupOption: function(optionName, value) {\r\n        this._setWidgetOption(\"_popup\", arguments)\r\n    },\r\n    _validatedOpening: function() {\r\n        if (!this.option(\"readOnly\")) {\r\n            this._toggleOpenState(true)\r\n        }\r\n    },\r\n    _getPopupToolbarItems: function() {\r\n        return \"useButtons\" === this.option(\"applyValueMode\") ? this._popupToolbarItemsConfig() : []\r\n    },\r\n    _getFirstPopupElement: function() {\r\n        return this._popup._wrapper().find(\".dx-popup-done.dx-button\")\r\n    },\r\n    _getLastPopupElement: function() {\r\n        return this._popup._wrapper().find(\".dx-popup-cancel.dx-button\")\r\n    },\r\n    _popupElementTabHandler: function(e) {\r\n        var $element = (0, _renderer.default)(e.currentTarget);\r\n        if (e.shiftKey && $element.is(this._getFirstPopupElement()) || !e.shiftKey && $element.is(this._getLastPopupElement())) {\r\n            _events_engine.default.trigger(this._input(), \"focus\");\r\n            e.preventDefault()\r\n        }\r\n    },\r\n    _popupElementEscHandler: function() {\r\n        _events_engine.default.trigger(this._input(), \"focus\");\r\n        this.close()\r\n    },\r\n    _popupButtonInitializedHandler: function(e) {\r\n        e.component.registerKeyHandler(\"tab\", this._popupElementTabHandler.bind(this));\r\n        e.component.registerKeyHandler(\"escape\", this._popupElementEscHandler.bind(this))\r\n    },\r\n    _popupToolbarItemsConfig: function() {\r\n        var buttonsConfig = [{\r\n            shortcut: \"done\",\r\n            options: {\r\n                onClick: this._applyButtonHandler.bind(this),\r\n                text: this.option(\"applyButtonText\"),\r\n                onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n            }\r\n        }, {\r\n            shortcut: \"cancel\",\r\n            options: {\r\n                onClick: this._cancelButtonHandler.bind(this),\r\n                text: this.option(\"cancelButtonText\"),\r\n                onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n            }\r\n        }];\r\n        return this._applyButtonsLocation(buttonsConfig)\r\n    },\r\n    _applyButtonsLocation: function(buttonsConfig) {\r\n        var buttonsLocation = this.option(\"buttonsLocation\");\r\n        var resultConfig = buttonsConfig;\r\n        if (\"default\" !== buttonsLocation) {\r\n            var position = (0, _common.splitPair)(buttonsLocation);\r\n            (0, _iterator.each)(resultConfig, function(_, element) {\r\n                (0, _extend.extend)(element, {\r\n                    toolbar: position[0],\r\n                    location: position[1]\r\n                })\r\n            })\r\n        }\r\n        return resultConfig\r\n    },\r\n    _applyButtonHandler: function() {\r\n        this.close();\r\n        this.option(\"focusStateEnabled\") && this.focus()\r\n    },\r\n    _cancelButtonHandler: function() {\r\n        this.close();\r\n        this.option(\"focusStateEnabled\") && this.focus()\r\n    },\r\n    _popupOptionChanged: function(args) {\r\n        var options = _ui3.default.getOptionsFromContainer(args);\r\n        this._setPopupOption(options);\r\n        var optionsKeys = Object.keys(options);\r\n        if (optionsKeys.indexOf(\"width\") !== -1 || optionsKeys.indexOf(\"height\") !== -1) {\r\n            this._dimensionChanged()\r\n        }\r\n    },\r\n    _renderSubmitElement: function() {\r\n        if (this.option(\"useHiddenSubmitElement\")) {\r\n            this._$submitElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n        }\r\n    },\r\n    _setSubmitValue: function() {\r\n        this._getSubmitElement().val(this.option(\"value\"))\r\n    },\r\n    _getSubmitElement: function() {\r\n        if (this.option(\"useHiddenSubmitElement\")) {\r\n            return this._$submitElement\r\n        } else {\r\n            return this.callBase()\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        this._detachFocusOutEvents();\r\n        this.callBase()\r\n    },\r\n    _setDeprecatedOptions: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._deprecatedOptions, {\r\n            showPopupTitle: {\r\n                since: \"20.1\",\r\n                alias: \"dropDownOptions.showTitle\"\r\n            }\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        var _this$_popup;\r\n        switch (args.name) {\r\n            case \"width\":\r\n            case \"height\":\r\n                this.callBase(args);\r\n                null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.repaint();\r\n                break;\r\n            case \"opened\":\r\n                this._renderOpenedState();\r\n                break;\r\n            case \"onOpened\":\r\n            case \"onClosed\":\r\n                this._initVisibilityActions();\r\n                break;\r\n            case \"onPopupInitialized\":\r\n                this._initPopupInitializedAction();\r\n                break;\r\n            case \"fieldTemplate\":\r\n                if ((0, _type.isDefined)(args.value)) {\r\n                    this._renderField()\r\n                } else {\r\n                    this._invalidate()\r\n                }\r\n                break;\r\n            case \"acceptCustomValue\":\r\n            case \"openOnFieldClick\":\r\n                this._invalidate();\r\n                break;\r\n            case \"dropDownButtonTemplate\":\r\n            case \"showDropDownButton\":\r\n                this._updateButtons([\"dropDown\"]);\r\n                break;\r\n            case \"dropDownOptions\":\r\n                this._popupOptionChanged(args);\r\n                this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"));\r\n                break;\r\n            case \"popupPosition\":\r\n                break;\r\n            case \"deferRendering\":\r\n                if ((0, _window.hasWindow)()) {\r\n                    this._createPopup()\r\n                }\r\n                break;\r\n            case \"applyValueMode\":\r\n            case \"applyButtonText\":\r\n            case \"cancelButtonText\":\r\n            case \"buttonsLocation\":\r\n                this._setPopupOption(\"toolbarItems\", this._getPopupToolbarItems());\r\n                break;\r\n            case \"showPopupTitle\":\r\n                this._setPopupOption(\"showTitle\", args.value);\r\n                break;\r\n            case \"useHiddenSubmitElement\":\r\n                if (this._$submitElement) {\r\n                    this._$submitElement.remove();\r\n                    this._$submitElement = void 0\r\n                }\r\n                this._renderSubmitElement();\r\n                break;\r\n            case \"rtlEnabled\":\r\n                this._updatePopupPosition(args.value);\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    open: function() {\r\n        this.option(\"opened\", true)\r\n    },\r\n    close: function() {\r\n        this.option(\"opened\", false)\r\n    },\r\n    field: function() {\r\n        return (0, _element.getPublicElement)(this._input())\r\n    },\r\n    content: function() {\r\n        return this._popup ? this._popup.content() : null\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxDropDownEditor\", DropDownEditor);\r\nvar _default = DropDownEditor;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (renovation/preact_wrapper/component.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"./utils\");\r\nvar _element = require(\"../../core/element\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _slicedToArray(arr, i) {\r\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n    if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n        return\r\n    }\r\n    var _arr = [];\r\n    var _n = true;\r\n    var _d = false;\r\n    var _e = void 0;\r\n    try {\r\n        for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n            _arr.push(_s.value);\r\n            if (i && _arr.length === i) {\r\n                break\r\n            }\r\n        }\r\n    } catch (err) {\r\n        _d = true;\r\n        _e = err\r\n    } finally {\r\n        try {\r\n            if (!_n && null != _i.return) {\r\n                _i.return()\r\n            }\r\n        } finally {\r\n            if (_d) {\r\n                throw _e\r\n            }\r\n        }\r\n    }\r\n    return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return arr\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar setDefaultOptionValue = function(options, defaultValueGetter) {\r\n    return function(name) {\r\n        if (options.hasOwnProperty(name) && void 0 === options[name]) {\r\n            options[name] = defaultValueGetter(name)\r\n        }\r\n    }\r\n};\r\nvar PreactWrapper = function(_DOMComponent) {\r\n    _inherits(PreactWrapper, _DOMComponent);\r\n    var _super = _createSuper(PreactWrapper);\r\n\r\n    function PreactWrapper() {\r\n        _classCallCheck(this, PreactWrapper);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(PreactWrapper, [{\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            var _this = this;\r\n            return (0, _extend.extend)(true, _get(_getPrototypeOf(PreactWrapper.prototype), \"_getDefaultOptions\", this).call(this), this._viewComponent.defaultProps, this._propsInfo.twoWay.reduce(function(options, _ref) {\r\n                var _objectSpread2;\r\n                var _ref2 = _slicedToArray(_ref, 3),\r\n                    name = _ref2[0],\r\n                    defaultValue = _ref2[1],\r\n                    eventName = _ref2[2];\r\n                return _objectSpread(_objectSpread({}, options), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, name, defaultValue), _defineProperty(_objectSpread2, eventName, function(value) {\r\n                    return _this.option(name, value)\r\n                }), _objectSpread2))\r\n            }, {}))\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            var props = this.getProps();\r\n            if (this._shouldRefresh) {\r\n                this._shouldRefresh = false;\r\n                this._renderPreact(_objectSpread(_objectSpread({}, props), {}, {\r\n                    width: null,\r\n                    height: null,\r\n                    style: \"\",\r\n                    className: \"\",\r\n                    children: null\r\n                }))\r\n            }\r\n            this._renderPreact(props)\r\n        }\r\n    }, {\r\n        key: \"_renderPreact\",\r\n        value: function(props) {\r\n            var containerNode = this.$element()[0];\r\n            if (!containerNode.parentNode) {\r\n                this._documentFragment.appendChild(containerNode)\r\n            }\r\n            Preact.render(Preact.h(this._viewComponent, props), containerNode, this._preactReplaced ? void 0 : containerNode);\r\n            this._preactReplaced = true;\r\n            if (containerNode.parentNode === this._documentFragment) {\r\n                this._documentFragment.removeChild(containerNode)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_render\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_dispose\",\r\n        value: function() {\r\n            Preact.render(null, this.$element()[0]);\r\n            _get(_getPrototypeOf(PreactWrapper.prototype), \"_dispose\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_patchOptionValues\",\r\n        value: function(options) {\r\n            var _this2 = this;\r\n            var _this$_propsInfo = this._propsInfo,\r\n                allowNull = _this$_propsInfo.allowNull,\r\n                elements = _this$_propsInfo.elements,\r\n                twoWay = _this$_propsInfo.twoWay;\r\n            var defaultProps = this._viewComponent.defaultProps;\r\n            allowNull.forEach(setDefaultOptionValue(options, function() {\r\n                return null\r\n            }));\r\n            Object.keys(defaultProps).forEach(setDefaultOptionValue(options, function(name) {\r\n                return defaultProps[name]\r\n            }));\r\n            twoWay.forEach(function(_ref3) {\r\n                var _ref4 = _slicedToArray(_ref3, 2),\r\n                    name = _ref4[0],\r\n                    defaultValue = _ref4[1];\r\n                return setDefaultOptionValue(options, function() {\r\n                    return defaultValue\r\n                })(name)\r\n            });\r\n            elements.forEach(function(name) {\r\n                if (name in options) {\r\n                    options[name] = _this2._patchElementParam(options[name])\r\n                }\r\n            });\r\n            return options\r\n        }\r\n    }, {\r\n        key: \"getProps\",\r\n        value: function() {\r\n            var options = this._patchOptionValues(_objectSpread(_objectSpread({}, this.option()), {}, {\r\n                ref: this._viewRef,\r\n                children: this._extractDefaultSlot()\r\n            }));\r\n            return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, options), this.elementAttr), options.elementAttr), {}, {\r\n                className: [].concat(_toConsumableArray((this.elementAttr.class || \"\").split(\" \")), _toConsumableArray((options.elementAttr.class || \"\").split(\" \"))).filter(function(c, i, a) {\r\n                    return c && a.indexOf(c) === i\r\n                }).join(\" \").trim(),\r\n                \"class\": \"\"\r\n            }, this._actionsMap)\r\n        }\r\n    }, {\r\n        key: \"_getActionConfigs\",\r\n        value: function() {\r\n            return {}\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            var _this3 = this;\r\n            _get(_getPrototypeOf(PreactWrapper.prototype), \"_init\", this).call(this);\r\n            this._documentFragment = _dom_adapter.default.createDocumentFragment();\r\n            this._actionsMap = {};\r\n            Object.keys(this._getActionConfigs()).forEach(function(name) {\r\n                return _this3._addAction(name)\r\n            });\r\n            this._viewRef = Preact.createRef();\r\n            this._supportedKeys = function() {\r\n                return {}\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_addAction\",\r\n        value: function(event, action) {\r\n            if (!action) {\r\n                var actionByOption = this._createActionByOption(event, this._getActionConfigs()[event]);\r\n                action = function(actArgs) {\r\n                    Object.keys(actArgs).forEach(function(name) {\r\n                        if (_dom_adapter.default.isNode(actArgs[name])) {\r\n                            actArgs[name] = (0, _element.getPublicElement)((0, _renderer.default)(actArgs[name]))\r\n                        }\r\n                    });\r\n                    return actionByOption(actArgs)\r\n                }\r\n            }\r\n            this._actionsMap[event] = action\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(option) {\r\n            var _ref5 = option || {},\r\n                name = _ref5.name;\r\n            if (name && this._getActionConfigs()[name]) {\r\n                this._addAction(name)\r\n            }\r\n            _get(_getPrototypeOf(PreactWrapper.prototype), \"_optionChanged\", this).call(this, option);\r\n            this._invalidate()\r\n        }\r\n    }, {\r\n        key: \"_extractDefaultSlot\",\r\n        value: function() {\r\n            var _this4 = this;\r\n            if (this.option(\"_hasAnonymousTemplateContent\")) {\r\n                var dummyDivRefCallback = function(dummyDivRef) {\r\n                    if (dummyDivRef) {\r\n                        var parentNode = dummyDivRef.parentNode;\r\n                        parentNode.removeChild(dummyDivRef);\r\n                        _this4._getTemplate(_this4._templateManager.anonymousTemplateName).render({\r\n                            container: (0, _element.getPublicElement)((0, _renderer.default)(parentNode)),\r\n                            transclude: true\r\n                        })\r\n                    }\r\n                };\r\n                return Preact.h(Preact.Fragment, {}, Preact.h(\"div\", {\r\n                    style: {\r\n                        display: \"none\"\r\n                    },\r\n                    ref: dummyDivRefCallback\r\n                }))\r\n            }\r\n            return null\r\n        }\r\n    }, {\r\n        key: \"_createTemplateComponent\",\r\n        value: function(props, templateOption) {\r\n            if (!templateOption) {\r\n                return\r\n            }\r\n            var template = this._getTemplate(templateOption);\r\n            return function(_ref6) {\r\n                var data = _ref6.data,\r\n                    index = _ref6.index;\r\n                var dummyDivRef = (0, _hooks.useRef)();\r\n                (0, _hooks.useLayoutEffect)(function() {\r\n                    var parentNode = dummyDivRef.current.parentNode;\r\n                    parentNode.removeChild(dummyDivRef.current);\r\n                    var $parent = (0, _renderer.default)(parentNode);\r\n                    var $children = $parent.contents();\r\n                    Object.keys(data).forEach(function(name) {\r\n                        if (_dom_adapter.default.isNode(data[name])) {\r\n                            data[name] = (0, _element.getPublicElement)((0, _renderer.default)(data[name]))\r\n                        }\r\n                    });\r\n                    var $template = (0, _renderer.default)(template.render(_objectSpread({\r\n                        container: (0, _element.getPublicElement)($parent),\r\n                        model: data\r\n                    }, isFinite(index) ? {\r\n                        index: index\r\n                    } : {})));\r\n                    if ($template.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n                        (0, _utils.wrapElement)($parent, $template)\r\n                    }\r\n                    var $newChildren = $parent.contents();\r\n                    return function() {\r\n                        (0, _utils.removeDifferentElements)($children, $newChildren)\r\n                    }\r\n                }, Object.keys(props).map(function(key) {\r\n                    return props[key]\r\n                }));\r\n                return Preact.h(Preact.Fragment, {}, Preact.h(\"div\", {\r\n                    style: {\r\n                        display: \"none\"\r\n                    },\r\n                    ref: dummyDivRef\r\n                }))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_wrapKeyDownHandler\",\r\n        value: function(handler) {\r\n            var _this5 = this;\r\n            return function(options) {\r\n                var keyName = options.keyName,\r\n                    originalEvent = options.originalEvent,\r\n                    which = options.which;\r\n                var keys = _this5._supportedKeys();\r\n                var func = keys[keyName] || keys[which];\r\n                if (void 0 !== func) {\r\n                    var _handler = func.bind(_this5);\r\n                    var result = _handler(originalEvent, options);\r\n                    if (!result) {\r\n                        originalEvent.cancel = true;\r\n                        return originalEvent\r\n                    }\r\n                }\r\n                return null === handler || void 0 === handler ? void 0 : handler(originalEvent, options)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_toPublicElement\",\r\n        value: function(element) {\r\n            return (0, _element.getPublicElement)((0, _renderer.default)(element))\r\n        }\r\n    }, {\r\n        key: \"_patchElementParam\",\r\n        value: function(value) {\r\n            var _result, _result2;\r\n            var result;\r\n            try {\r\n                result = (0, _renderer.default)(value)\r\n            } catch (error) {\r\n                return value\r\n            }\r\n            result = null === (_result = result) || void 0 === _result ? void 0 : _result.get(0);\r\n            return null !== (_result2 = result) && void 0 !== _result2 && _result2.nodeType ? result : value\r\n        }\r\n    }, {\r\n        key: \"repaint\",\r\n        value: function() {\r\n            this._shouldRefresh = true;\r\n            this._refresh()\r\n        }\r\n    }, {\r\n        key: \"registerKeyHandler\",\r\n        value: function(key, handler) {\r\n            var currentKeys = this._supportedKeys();\r\n            this._supportedKeys = function() {\r\n                return _objectSpread(_objectSpread({}, currentKeys), {}, _defineProperty({}, key, handler))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"setAria\",\r\n        value: function() {\r\n            throw new Error('\"setAria\" method is deprecated, use \"aria\" property instead')\r\n        }\r\n    }, {\r\n        key: \"viewRef\",\r\n        get: function() {\r\n            return this._viewRef.current\r\n        }\r\n    }, {\r\n        key: \"elementAttr\",\r\n        get: function() {\r\n            var _this$_storedClasses;\r\n            if (!this._elementAttr) {\r\n                var attributes = this.$element()[0].attributes;\r\n                this._elementAttr = _objectSpread({}, Object.keys(attributes).reduce(function(a, key) {\r\n                    if (attributes[key].specified) {\r\n                        a[attributes[key].name] = attributes[key].value\r\n                    }\r\n                    return a\r\n                }, {}))\r\n            }\r\n            var elemStyle = this.$element()[0].style;\r\n            var style = {};\r\n            for (var i = 0; i < elemStyle.length; i++) {\r\n                style[elemStyle[i]] = elemStyle.getPropertyValue(elemStyle[i])\r\n            }\r\n            this._elementAttr.style = style;\r\n            var cssClass = this.$element()[0].getAttribute(\"class\") || \"\";\r\n            this._storedClasses = null !== (_this$_storedClasses = this._storedClasses) && void 0 !== _this$_storedClasses ? _this$_storedClasses : cssClass.split(\" \").filter(function(name) {\r\n                return 0 === name.indexOf(\"dx-\")\r\n            }).join(\" \");\r\n            this._elementAttr.class = cssClass.split(\" \").filter(function(name) {\r\n                return 0 !== name.indexOf(\"dx-\")\r\n            }).concat(this._storedClasses).join(\" \").trim();\r\n            return this._elementAttr\r\n        }\r\n    }]);\r\n    return PreactWrapper\r\n}(_dom_component.default);\r\nexports.default = PreactWrapper;\r\nPreactWrapper.IS_RENOVATED_WIDGET = false;\r\nPreactWrapper.IS_RENOVATED_WIDGET = true;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/ui/formDialog.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _popup = _interopRequireDefault(require(\"../../popup\"));\r\nvar _form = _interopRequireDefault(require(\"../../form\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _dom = require(\"../../../core/utils/dom\");\r\nvar _deferred = require(\"../../../core/utils/deferred\");\r\nvar _message = _interopRequireDefault(require(\"../../../localization/message\"));\r\nvar _browser = _interopRequireDefault(require(\"../../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar getActiveElement = _dom_adapter.default.getActiveElement;\r\nvar DIALOG_CLASS = \"dx-formdialog\";\r\nvar FORM_CLASS = \"dx-formdialog-form\";\r\nvar FormDialog = function() {\r\n    function FormDialog(editorInstance, popupConfig) {\r\n        _classCallCheck(this, FormDialog);\r\n        this._editorInstance = editorInstance;\r\n        this._popupUserConfig = popupConfig;\r\n        this._renderPopup()\r\n    }\r\n    _createClass(FormDialog, [{\r\n        key: \"_renderPopup\",\r\n        value: function() {\r\n            var editorInstance = this._editorInstance;\r\n            var $container = (0, _renderer.default)(\"<div>\").addClass(DIALOG_CLASS).appendTo(editorInstance.$element());\r\n            var popupConfig = this._getPopupConfig();\r\n            return editorInstance._createComponent($container, _popup.default, popupConfig)\r\n        }\r\n    }, {\r\n        key: \"_escKeyHandler\",\r\n        value: function() {\r\n            this._popup.hide()\r\n        }\r\n    }, {\r\n        key: \"_addEscapeHandler\",\r\n        value: function(e) {\r\n            e.component.registerKeyHandler(\"escape\", this._escKeyHandler.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_getPopupConfig\",\r\n        value: function() {\r\n            var _this = this;\r\n            return (0, _extend.extend)({\r\n                onInitialized: function(e) {\r\n                    _this._popup = e.component;\r\n                    _this._popup.on(\"hiding\", function() {\r\n                        _this.deferred.reject()\r\n                    });\r\n                    _this._popup.on(\"shown\", function() {\r\n                        _this._form.focus()\r\n                    })\r\n                },\r\n                deferRendering: false,\r\n                focusStateEnabled: false,\r\n                showCloseButton: false,\r\n                contentTemplate: function(contentElem) {\r\n                    var $formContainer = (0, _renderer.default)(\"<div>\").appendTo(contentElem);\r\n                    _this._renderForm($formContainer, {\r\n                        onEditorEnterKey: function(_ref) {\r\n                            var component = _ref.component,\r\n                                dataField = _ref.dataField,\r\n                                event = _ref.event;\r\n                            _this._updateEditorValue(component, dataField);\r\n                            _this.hide(component.option(\"formData\"), event)\r\n                        },\r\n                        customizeItem: function(item) {\r\n                            if (\"simple\" === item.itemType) {\r\n                                item.editorOptions = (0, _extend.extend)(true, {}, item.editorOptions, {\r\n                                    onInitialized: _this._addEscapeHandler.bind(_this)\r\n                                })\r\n                            }\r\n                        }\r\n                    })\r\n                },\r\n                toolbarItems: [{\r\n                    toolbar: \"bottom\",\r\n                    location: \"after\",\r\n                    widget: \"dxButton\",\r\n                    options: {\r\n                        onInitialized: this._addEscapeHandler.bind(this),\r\n                        text: _message.default.format(\"OK\"),\r\n                        onClick: function(_ref2) {\r\n                            var event = _ref2.event;\r\n                            _this.hide(_this._form.option(\"formData\"), event)\r\n                        }\r\n                    }\r\n                }, {\r\n                    toolbar: \"bottom\",\r\n                    location: \"after\",\r\n                    widget: \"dxButton\",\r\n                    options: {\r\n                        onInitialized: this._addEscapeHandler.bind(this),\r\n                        text: _message.default.format(\"Cancel\"),\r\n                        onClick: function() {\r\n                            _this._popup.hide()\r\n                        }\r\n                    }\r\n                }]\r\n            }, this._popupUserConfig)\r\n        }\r\n    }, {\r\n        key: \"_updateEditorValue\",\r\n        value: function(component, dataField) {\r\n            if (_browser.default.msie && parseInt(_browser.default.version) <= 11) {\r\n                var editor = component.getEditor(dataField);\r\n                var activeElement = getActiveElement();\r\n                if (editor.$element().find(activeElement).length) {\r\n                    (0, _dom.resetActiveElement)()\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderForm\",\r\n        value: function($container, options) {\r\n            $container.addClass(FORM_CLASS);\r\n            this._form = this._editorInstance._createComponent($container, _form.default, options)\r\n        }\r\n    }, {\r\n        key: \"show\",\r\n        value: function(formUserConfig) {\r\n            if (this._popup.option(\"visible\")) {\r\n                return\r\n            }\r\n            this.deferred = new _deferred.Deferred;\r\n            var formConfig = (0, _extend.extend)({}, formUserConfig);\r\n            this._form.option(formConfig);\r\n            this._popup.show();\r\n            return this.deferred.promise()\r\n        }\r\n    }, {\r\n        key: \"hide\",\r\n        value: function(formData, event) {\r\n            this.deferred.resolve(formData, event);\r\n            this._popup.hide()\r\n        }\r\n    }, {\r\n        key: \"popupOption\",\r\n        value: function(optionName, optionValue) {\r\n            return this._popup.option.apply(this._popup, arguments)\r\n        }\r\n    }]);\r\n    return FormDialog\r\n}();\r\nvar _default = FormDialog;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/components/chart_theme_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ThemeManager = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _base_theme_manager = require(\"../core/base_theme_manager\");\r\nvar _utils = require(\"../core/utils\");\r\nvar ThemeManager = _base_theme_manager.BaseThemeManager.inherit(function() {\r\n    var ctor = function(params) {\r\n        var that = this;\r\n        that.callBase.apply(that, arguments);\r\n        var options = params.options || {};\r\n        that._userOptions = options;\r\n        that._mergeAxisTitleOptions = [];\r\n        that._multiPieColors = {};\r\n        that._callback = _common.noop\r\n    };\r\n    var dispose = function() {\r\n        var that = this;\r\n        that.palette && that.palette.dispose();\r\n        that.palette = that._userOptions = that._mergedSettings = that._multiPieColors = null;\r\n        return that.callBase.apply(that, arguments)\r\n    };\r\n    var resetPalette = function() {\r\n        this.palette.reset();\r\n        this._multiPieColors = {}\r\n    };\r\n    var processTitleOptions = function(options) {\r\n        return (0, _type.isString)(options) ? {\r\n            text: options\r\n        } : options\r\n    };\r\n    var processAxisOptions = function(axisOptions) {\r\n        if (!axisOptions) {\r\n            return {}\r\n        }\r\n        axisOptions = (0, _extend.extend)(true, {}, axisOptions);\r\n        axisOptions.title = processTitleOptions(axisOptions.title);\r\n        if (\"logarithmic\" === axisOptions.type && axisOptions.logarithmBase <= 0 || axisOptions.logarithmBase && !(0, _type.isNumeric)(axisOptions.logarithmBase)) {\r\n            axisOptions.logarithmBase = void 0;\r\n            axisOptions.logarithmBaseError = true\r\n        }\r\n        if (axisOptions.label) {\r\n            if (axisOptions.label.alignment) {\r\n                axisOptions.label.userAlignment = true\r\n            }\r\n        }\r\n        return axisOptions\r\n    };\r\n    var applyParticularAxisOptions = function(name, userOptions, rotated) {\r\n        var theme = this._theme;\r\n        var position = !(rotated ^ \"valueAxis\" === name) ? \"horizontalAxis\" : \"verticalAxis\";\r\n        var processedUserOptions = processAxisOptions(userOptions, name);\r\n        var commonAxisSettings = processAxisOptions(this._userOptions.commonAxisSettings, name);\r\n        var mergeOptions = (0, _extend.extend)(true, {}, theme.commonAxisSettings, theme[position], theme[name], commonAxisSettings, processedUserOptions);\r\n        mergeOptions.workWeek = processedUserOptions.workWeek || theme[name].workWeek;\r\n        mergeOptions.forceUserTickInterval |= (0, _type.isDefined)(processedUserOptions.tickInterval) && !(0, _type.isDefined)(processedUserOptions.axisDivisionFactor);\r\n        return mergeOptions\r\n    };\r\n    var mergeOptions = function(name, userOptions) {\r\n        userOptions = userOptions || this._userOptions[name];\r\n        var theme = this._theme[name];\r\n        var result = this._mergedSettings[name];\r\n        if (result) {\r\n            return result\r\n        }\r\n        if ((0, _type.isPlainObject)(theme) && (0, _type.isPlainObject)(userOptions)) {\r\n            result = (0, _extend.extend)(true, {}, theme, userOptions)\r\n        } else {\r\n            result = (0, _type.isDefined)(userOptions) ? userOptions : theme\r\n        }\r\n        this._mergedSettings[name] = result;\r\n        return result\r\n    };\r\n    var applyParticularTheme = {\r\n        base: mergeOptions,\r\n        argumentAxis: applyParticularAxisOptions,\r\n        valueAxisRangeSelector: function() {\r\n            return mergeOptions.call(this, \"valueAxis\")\r\n        },\r\n        valueAxis: applyParticularAxisOptions,\r\n        series: function(name, userOptions, seriesCount) {\r\n            var that = this;\r\n            var theme = that._theme;\r\n            var userCommonSettings = that._userOptions.commonSeriesSettings || {};\r\n            var themeCommonSettings = theme.commonSeriesSettings;\r\n            var widgetType = that._themeSection.split(\".\").slice(-1)[0];\r\n            var type = (0, _utils.normalizeEnum)(userOptions.type || userCommonSettings.type || themeCommonSettings.type || \"pie\" === widgetType && theme.type);\r\n            var palette = that.palette;\r\n            var isBar = ~type.indexOf(\"bar\");\r\n            var isLine = ~type.indexOf(\"line\");\r\n            var isArea = ~type.indexOf(\"area\");\r\n            var isBubble = \"bubble\" === type;\r\n            var mainSeriesColor;\r\n            var resolveLabelsOverlapping = that.getOptions(\"resolveLabelsOverlapping\");\r\n            var containerBackgroundColor = that.getOptions(\"containerBackgroundColor\");\r\n            var seriesTemplate = applyParticularTheme.seriesTemplate.call(this);\r\n            var seriesVisibility;\r\n            if (isBar || isBubble) {\r\n                userOptions = (0, _extend.extend)(true, {}, userCommonSettings, userCommonSettings[type], userOptions);\r\n                seriesVisibility = userOptions.visible;\r\n                userCommonSettings = {\r\n                    type: {}\r\n                };\r\n                (0, _extend.extend)(true, userOptions, userOptions.point);\r\n                userOptions.visible = seriesVisibility\r\n            }\r\n            var settings = (0, _extend.extend)(true, {\r\n                aggregation: {}\r\n            }, themeCommonSettings, themeCommonSettings[type], userCommonSettings, userCommonSettings[type], userOptions);\r\n            settings.aggregation.enabled = \"chart\" === widgetType && !!settings.aggregation.enabled;\r\n            settings.type = type;\r\n            settings.widgetType = widgetType;\r\n            settings.containerBackgroundColor = containerBackgroundColor;\r\n            if (\"pie\" !== widgetType) {\r\n                mainSeriesColor = settings.color || palette.getNextColor(seriesCount)\r\n            } else {\r\n                mainSeriesColor = function(argument, index, count) {\r\n                    var cat = \"\".concat(argument, \"-\").concat(index);\r\n                    if (!that._multiPieColors[cat]) {\r\n                        that._multiPieColors[cat] = palette.getNextColor(count)\r\n                    }\r\n                    return that._multiPieColors[cat]\r\n                }\r\n            }\r\n            settings.mainSeriesColor = mainSeriesColor;\r\n            settings.resolveLabelsOverlapping = resolveLabelsOverlapping;\r\n            if (settings.label && (isLine || isArea && \"rangearea\" !== type || \"scatter\" === type)) {\r\n                settings.label.position = \"outside\"\r\n            }\r\n            if (seriesTemplate) {\r\n                settings.nameField = seriesTemplate.nameField\r\n            }\r\n            return settings\r\n        },\r\n        animation: function(name) {\r\n            var userOptions = this._userOptions[name];\r\n            userOptions = (0, _type.isPlainObject)(userOptions) ? userOptions : (0, _type.isDefined)(userOptions) ? {\r\n                enabled: !!userOptions\r\n            } : {};\r\n            return mergeOptions.call(this, name, userOptions)\r\n        },\r\n        seriesTemplate: function() {\r\n            var value = mergeOptions.call(this, \"seriesTemplate\");\r\n            if (value) {\r\n                value.nameField = value.nameField || \"series\"\r\n            }\r\n            return value\r\n        },\r\n        zoomAndPan: function() {\r\n            function parseOption(option) {\r\n                option = (0, _utils.normalizeEnum)(option);\r\n                var pan = \"pan\" === option || \"both\" === option;\r\n                var zoom = \"zoom\" === option || \"both\" === option;\r\n                return {\r\n                    pan: pan,\r\n                    zoom: zoom,\r\n                    none: !pan && !zoom\r\n                }\r\n            }\r\n            var options = mergeOptions.call(this, \"zoomAndPan\");\r\n            return {\r\n                valueAxis: parseOption(options.valueAxis),\r\n                argumentAxis: parseOption(options.argumentAxis),\r\n                dragToZoom: !!options.dragToZoom,\r\n                dragBoxStyle: {\r\n                    \"class\": \"dxc-shutter\",\r\n                    fill: options.dragBoxStyle.color,\r\n                    opacity: options.dragBoxStyle.opacity\r\n                },\r\n                panKey: options.panKey,\r\n                allowMouseWheel: !!options.allowMouseWheel,\r\n                allowTouchGestures: !!options.allowTouchGestures\r\n            }\r\n        }\r\n    };\r\n    return {\r\n        _themeSection: \"chart\",\r\n        ctor: ctor,\r\n        dispose: dispose,\r\n        resetPalette: resetPalette,\r\n        getOptions: function(name) {\r\n            return (applyParticularTheme[name] || applyParticularTheme.base).apply(this, arguments)\r\n        },\r\n        refresh: function() {\r\n            this._mergedSettings = {};\r\n            return this.callBase.apply(this, arguments)\r\n        },\r\n        _initializeTheme: function() {\r\n            var that = this;\r\n            that.callBase.apply(that, arguments);\r\n            that.updatePalette()\r\n        },\r\n        resetOptions: function(name) {\r\n            this._mergedSettings[name] = null\r\n        },\r\n        update: function(options) {\r\n            this._userOptions = options\r\n        },\r\n        updatePalette: function() {\r\n            var that = this;\r\n            that.palette = that.createPalette(that.getOptions(\"palette\"), {\r\n                useHighlight: true,\r\n                extensionMode: that.getOptions(\"paletteExtensionMode\")\r\n            })\r\n        }\r\n    }\r\n}());\r\nexports.ThemeManager = ThemeManager;\r\n","/**\r\n * DevExtreme (ui/scheduler/utils.timeZone.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _utils = _interopRequireDefault(require(\"./timezones/utils.timezones_data\"));\r\nvar _dateAdapter = _interopRequireDefault(require(\"./dateAdapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _slicedToArray(arr, i) {\r\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n    if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n        return\r\n    }\r\n    var _arr = [];\r\n    var _n = true;\r\n    var _d = false;\r\n    var _e = void 0;\r\n    try {\r\n        for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n            _arr.push(_s.value);\r\n            if (i && _arr.length === i) {\r\n                break\r\n            }\r\n        }\r\n    } catch (err) {\r\n        _d = true;\r\n        _e = err\r\n    } finally {\r\n        try {\r\n            if (!_n && null != _i.return) {\r\n                _i.return()\r\n            }\r\n        } finally {\r\n            if (_d) {\r\n                throw _e\r\n            }\r\n        }\r\n    }\r\n    return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return arr\r\n    }\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar MINUTES_IN_HOUR = 60;\r\nvar createUTCDateWithLocalOffset = function(date) {\r\n    if (!date) {\r\n        return null\r\n    }\r\n    return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()))\r\n};\r\nvar createDateFromUTCWithLocalOffset = function(date) {\r\n    var result = (0, _dateAdapter.default)(date);\r\n    var timezoneOffsetBeforeInMin = result.getTimezoneOffset();\r\n    result.addTime(result.getTimezoneOffset(\"minute\"));\r\n    result.subtractMinutes(timezoneOffsetBeforeInMin - result.getTimezoneOffset());\r\n    return result.source\r\n};\r\nvar getTimeZones = function() {\r\n    var date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;\r\n    var dateInUTC = createUTCDate(date);\r\n    return _utils.default.getDisplayedTimeZones(dateInUTC.getTime())\r\n};\r\nvar createUTCDate = function(date) {\r\n    return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes()))\r\n};\r\nvar getTimezoneOffsetChangeInMinutes = function(startDate, endDate, updatedStartDate, updatedEndDate) {\r\n    return getDaylightOffset(updatedStartDate, updatedEndDate) - getDaylightOffset(startDate, endDate)\r\n};\r\nvar getTimezoneOffsetChangeInMs = function(startDate, endDate, updatedStartDate, updatedEndDate) {\r\n    return getTimezoneOffsetChangeInMinutes(startDate, endDate, updatedStartDate, updatedEndDate) * toMs(\"minute\")\r\n};\r\nvar getDaylightOffset = function(startDate, endDate) {\r\n    return new Date(startDate).getTimezoneOffset() - new Date(endDate).getTimezoneOffset()\r\n};\r\nvar getDaylightOffsetInMs = function(startDate, endDate) {\r\n    return getDaylightOffset(startDate, endDate) * toMs(\"minute\")\r\n};\r\nvar calculateTimezoneByValue = function(timezone) {\r\n    var date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;\r\n    if (\"string\" === typeof timezone) {\r\n        var dateUtc = createUTCDate(date);\r\n        return _utils.default.getTimeZoneOffsetById(timezone, dateUtc.getTime())\r\n    }\r\n    return timezone\r\n};\r\nvar _getDaylightOffsetByTimezone = function(startDate, endDate, timeZone) {\r\n    return calculateTimezoneByValue(timeZone, startDate) - calculateTimezoneByValue(timeZone, endDate)\r\n};\r\nvar getCorrectedDateByDaylightOffsets = function(convertedOriginalStartDate, convertedDate, date, timeZone, startDateTimezone) {\r\n    var daylightOffsetByCommonTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, timeZone);\r\n    var daylightOffsetByAppointmentTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, startDateTimezone);\r\n    var diff = daylightOffsetByCommonTimezone - daylightOffsetByAppointmentTimezone;\r\n    return new Date(date.getTime() - diff * toMs(\"hour\"))\r\n};\r\nvar correctRecurrenceExceptionByTimezone = function(exception, exceptionByStartDate, timeZone, startDateTimeZone) {\r\n    var isBackConversion = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;\r\n    var timezoneOffset = (exception.getTimezoneOffset() - exceptionByStartDate.getTimezoneOffset()) / MINUTES_IN_HOUR;\r\n    if (startDateTimeZone) {\r\n        timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, startDateTimeZone)\r\n    } else {\r\n        if (timeZone) {\r\n            timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, timeZone)\r\n        }\r\n    }\r\n    return new Date(exception.getTime() + (isBackConversion ? -1 : 1) * timezoneOffset * toMs(\"hour\"))\r\n};\r\nvar isTimezoneChangeInDate = function(date) {\r\n    var startDayDate = new Date(new Date(date).setHours(0, 0, 0, 0));\r\n    var endDayDate = new Date(new Date(date).setHours(23, 59, 59, 0));\r\n    return startDayDate.getTimezoneOffset() - endDayDate.getTimezoneOffset() !== 0\r\n};\r\nvar getDateWithoutTimezoneChange = function(date) {\r\n    var clonedDate = new Date(date);\r\n    if (isTimezoneChangeInDate(clonedDate)) {\r\n        var result = new Date(clonedDate);\r\n        return new Date(result.setDate(result.getDate() + 1))\r\n    }\r\n    return clonedDate\r\n};\r\nvar isSameAppointmentDates = function(startDate, endDate) {\r\n    endDate = new Date(endDate.getTime() - 1);\r\n    return _date.default.sameDate(startDate, endDate)\r\n};\r\nvar getClientTimezoneOffset = function(date) {\r\n    return 6e4 * date.getTimezoneOffset()\r\n};\r\nvar isEqualLocalTimeZone = function(timeZoneName) {\r\n    if (Intl) {\r\n        var localTimeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n        if (localTimeZoneName) {\r\n            return localTimeZoneName === timeZoneName\r\n        }\r\n    }\r\n    return isEqualLocalTimeZoneByNativeDate(timeZoneName)\r\n};\r\nvar hasDSTInLocalTimeZone = function() {\r\n    var _getExtremeDates = getExtremeDates(),\r\n        _getExtremeDates2 = _slicedToArray(_getExtremeDates, 2),\r\n        startDate = _getExtremeDates2[0],\r\n        endDate = _getExtremeDates2[1];\r\n    return startDate.getTimezoneOffset() !== endDate.getTimezoneOffset()\r\n};\r\nvar isEqualLocalTimeZoneByNativeDate = function(timeZoneName) {\r\n    var _getExtremeDates3 = getExtremeDates(),\r\n        _getExtremeDates4 = _slicedToArray(_getExtremeDates3, 2),\r\n        startDate = _getExtremeDates4[0],\r\n        endDate = _getExtremeDates4[1];\r\n    var startDateLocalOffset = -startDate.getTimezoneOffset() / 60;\r\n    var endDateLocalOffset = -endDate.getTimezoneOffset() / 60;\r\n    var startDateOffset = calculateTimezoneByValue(timeZoneName, startDate);\r\n    var endDateOffset = calculateTimezoneByValue(timeZoneName, endDate);\r\n    if (startDateLocalOffset === startDateOffset && endDateLocalOffset === endDateOffset) {\r\n        return true\r\n    }\r\n    return false\r\n};\r\nvar getExtremeDates = function() {\r\n    var nowDate = new Date(Date.now());\r\n    var startDate = new Date;\r\n    var endDate = new Date;\r\n    startDate.setFullYear(nowDate.getFullYear(), 0, 1);\r\n    endDate.setFullYear(nowDate.getFullYear(), 6, 1);\r\n    return [startDate, endDate]\r\n};\r\nvar utils = {\r\n    getDaylightOffset: getDaylightOffset,\r\n    getDaylightOffsetInMs: getDaylightOffsetInMs,\r\n    getTimezoneOffsetChangeInMinutes: getTimezoneOffsetChangeInMinutes,\r\n    getTimezoneOffsetChangeInMs: getTimezoneOffsetChangeInMs,\r\n    calculateTimezoneByValue: calculateTimezoneByValue,\r\n    getCorrectedDateByDaylightOffsets: getCorrectedDateByDaylightOffsets,\r\n    isSameAppointmentDates: isSameAppointmentDates,\r\n    correctRecurrenceExceptionByTimezone: correctRecurrenceExceptionByTimezone,\r\n    getClientTimezoneOffset: getClientTimezoneOffset,\r\n    createUTCDateWithLocalOffset: createUTCDateWithLocalOffset,\r\n    createDateFromUTCWithLocalOffset: createDateFromUTCWithLocalOffset,\r\n    createUTCDate: createUTCDate,\r\n    isTimezoneChangeInDate: isTimezoneChangeInDate,\r\n    getDateWithoutTimezoneChange: getDateWithoutTimezoneChange,\r\n    hasDSTInLocalTimeZone: hasDSTInLocalTimeZone,\r\n    isEqualLocalTimeZone: isEqualLocalTimeZone,\r\n    getTimeZones: getTimeZones\r\n};\r\nvar _default = utils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.loading.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.show = show;\r\nexports.hide = hide;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _view_port = require(\"../../core/utils/view_port\");\r\nvar _load_panel = _interopRequireDefault(require(\"../load_panel\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar loading = null;\r\nvar createLoadPanel = function(options) {\r\n    return new _load_panel.default((0, _renderer.default)(\"<div>\").appendTo(options && options.container || (0, _view_port.value)()), options)\r\n};\r\nvar removeLoadPanel = function() {\r\n    if (!loading) {\r\n        return\r\n    }\r\n    loading.$element().remove();\r\n    loading = null\r\n};\r\n\r\nfunction show(options) {\r\n    removeLoadPanel();\r\n    loading = createLoadPanel(options);\r\n    return loading.show()\r\n}\r\n\r\nfunction hide() {\r\n    if (!loading) {\r\n        return (new _deferred.Deferred).resolve()\r\n    }\r\n    return loading.hide().done(removeLoadPanel).promise()\r\n}\r\n","/**\r\n * DevExtreme (ui/draggable.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _string = require(\"../core/utils/string\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _translator = require(\"../animation/translator\");\r\nvar _animator = _interopRequireDefault(require(\"./scroll_view/animator\"));\r\nvar _browser = _interopRequireDefault(require(\"../core/utils/browser\"));\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _dom_component = _interopRequireDefault(require(\"../core/dom_component\"));\r\nvar _element = require(\"../core/element\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _drag = require(\"../events/drag\");\r\nvar _position = _interopRequireDefault(require(\"../animation/position\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _view_port = require(\"../core/utils/view_port\");\r\nvar _empty_template = require(\"../core/templates/empty_template\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _position2 = require(\"../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DRAGGABLE = \"dxDraggable\";\r\nvar DRAGSTART_EVENT_NAME = (0, _index.addNamespace)(_drag.start, DRAGGABLE);\r\nvar DRAG_EVENT_NAME = (0, _index.addNamespace)(_drag.move, DRAGGABLE);\r\nvar DRAGEND_EVENT_NAME = (0, _index.addNamespace)(_drag.end, DRAGGABLE);\r\nvar DRAG_ENTER_EVENT_NAME = (0, _index.addNamespace)(_drag.enter, DRAGGABLE);\r\nvar DRAGEND_LEAVE_EVENT_NAME = (0, _index.addNamespace)(_drag.leave, DRAGGABLE);\r\nvar POINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, DRAGGABLE);\r\nvar CLONE_CLASS = \"clone\";\r\nvar targetDraggable;\r\nvar sourceDraggable;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar getMousePosition = function(event) {\r\n    return {\r\n        x: event.pageX - (0, _renderer.default)(window).scrollLeft(),\r\n        y: event.pageY - (0, _renderer.default)(window).scrollTop()\r\n    }\r\n};\r\nvar ScrollHelper = function() {\r\n    function ScrollHelper(orientation, component) {\r\n        _classCallCheck(this, ScrollHelper);\r\n        this._preventScroll = true;\r\n        this._component = component;\r\n        if (\"vertical\" === orientation) {\r\n            this._scrollValue = \"scrollTop\";\r\n            this._overFlowAttr = \"overflowY\";\r\n            this._sizeAttr = \"height\";\r\n            this._scrollSizeProp = \"scrollHeight\";\r\n            this._clientSizeProp = \"clientHeight\";\r\n            this._limitProps = {\r\n                start: \"top\",\r\n                end: \"bottom\"\r\n            }\r\n        } else {\r\n            this._scrollValue = \"scrollLeft\";\r\n            this._overFlowAttr = \"overflowX\";\r\n            this._sizeAttr = \"width\";\r\n            this._scrollSizeProp = \"scrollWidth\";\r\n            this._clientSizeProp = \"clientWidth\";\r\n            this._limitProps = {\r\n                start: \"left\",\r\n                end: \"right\"\r\n            }\r\n        }\r\n    }\r\n    _createClass(ScrollHelper, [{\r\n        key: \"updateScrollable\",\r\n        value: function(elements, mousePosition) {\r\n            var that = this;\r\n            if (!elements.some(function(element) {\r\n                    return that._trySetScrollable(element, mousePosition)\r\n                })) {\r\n                that._$scrollableAtPointer = null;\r\n                that._scrollSpeed = 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"isScrolling\",\r\n        value: function() {\r\n            return !!this._scrollSpeed\r\n        }\r\n    }, {\r\n        key: \"isScrollable\",\r\n        value: function($element) {\r\n            var that = this;\r\n            return (\"auto\" === $element.css(that._overFlowAttr) || $element.hasClass(\"dx-scrollable-container\")) && $element.prop(that._scrollSizeProp) > $element[that._sizeAttr]()\r\n        }\r\n    }, {\r\n        key: \"_trySetScrollable\",\r\n        value: function(element, mousePosition) {\r\n            var that = this;\r\n            var $element = (0, _renderer.default)(element);\r\n            var distanceToBorders;\r\n            var sensitivity = that._component.option(\"scrollSensitivity\");\r\n            var isScrollable = that.isScrollable($element);\r\n            if (isScrollable) {\r\n                distanceToBorders = that._calculateDistanceToBorders($element, mousePosition);\r\n                if (sensitivity > distanceToBorders[that._limitProps.start]) {\r\n                    if (!that._preventScroll) {\r\n                        that._scrollSpeed = -that._calculateScrollSpeed(distanceToBorders[that._limitProps.start]);\r\n                        that._$scrollableAtPointer = $element\r\n                    }\r\n                } else {\r\n                    if (sensitivity > distanceToBorders[that._limitProps.end]) {\r\n                        if (!that._preventScroll) {\r\n                            that._scrollSpeed = that._calculateScrollSpeed(distanceToBorders[that._limitProps.end]);\r\n                            that._$scrollableAtPointer = $element\r\n                        }\r\n                    } else {\r\n                        isScrollable = false;\r\n                        that._preventScroll = false\r\n                    }\r\n                }\r\n            }\r\n            return isScrollable\r\n        }\r\n    }, {\r\n        key: \"_calculateDistanceToBorders\",\r\n        value: function($area, mousePosition) {\r\n            var area = $area.get(0);\r\n            var areaBoundingRect;\r\n            if (area) {\r\n                areaBoundingRect = (0, _position2.getBoundingRect)(area);\r\n                return {\r\n                    left: mousePosition.x - areaBoundingRect.left,\r\n                    top: mousePosition.y - areaBoundingRect.top,\r\n                    right: areaBoundingRect.right - mousePosition.x,\r\n                    bottom: areaBoundingRect.bottom - mousePosition.y\r\n                }\r\n            } else {\r\n                return {}\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_calculateScrollSpeed\",\r\n        value: function(distance) {\r\n            var component = this._component;\r\n            var sensitivity = component.option(\"scrollSensitivity\");\r\n            var maxSpeed = component.option(\"scrollSpeed\");\r\n            return Math.ceil(Math.pow((sensitivity - distance) / sensitivity, 2) * maxSpeed)\r\n        }\r\n    }, {\r\n        key: \"scrollByStep\",\r\n        value: function() {\r\n            var that = this;\r\n            var nextScrollPosition;\r\n            var maxScrollPosition;\r\n            if (that._$scrollableAtPointer && that._scrollSpeed) {\r\n                if (that._$scrollableAtPointer.hasClass(\"dx-scrollable-container\")) {\r\n                    var $scrollable = that._$scrollableAtPointer.closest(\".dx-scrollable\");\r\n                    var scrollableInstance = $scrollable.data(\"dxScrollable\") || $scrollable.data(\"dxScrollView\");\r\n                    if (scrollableInstance) {\r\n                        nextScrollPosition = scrollableInstance.scrollOffset()[that._limitProps.start];\r\n                        maxScrollPosition = scrollableInstance[this._scrollSizeProp]() - scrollableInstance[this._clientSizeProp]();\r\n                        nextScrollPosition += that._scrollSpeed;\r\n                        scrollableInstance.scrollTo(_defineProperty({}, that._limitProps.start, nextScrollPosition))\r\n                    }\r\n                } else {\r\n                    nextScrollPosition = that._$scrollableAtPointer[that._scrollValue]() + that._scrollSpeed;\r\n                    maxScrollPosition = that._$scrollableAtPointer[0][this._scrollSizeProp] - that._$scrollableAtPointer[0][this._clientSizeProp];\r\n                    that._$scrollableAtPointer[that._scrollValue](nextScrollPosition)\r\n                }\r\n                var dragMoveArgs = that._component._dragMoveArgs;\r\n                if (dragMoveArgs) {\r\n                    var scrollBy = this._scrollSpeed;\r\n                    if (nextScrollPosition < 0) {\r\n                        scrollBy -= nextScrollPosition\r\n                    } else {\r\n                        if (nextScrollPosition > maxScrollPosition) {\r\n                            scrollBy -= nextScrollPosition - maxScrollPosition\r\n                        }\r\n                    }\r\n                    that._component._dragMoveHandler(dragMoveArgs, scrollBy)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"reset\",\r\n        value: function() {\r\n            this._$scrollableAtPointer = null;\r\n            this._scrollSpeed = 0;\r\n            this._preventScroll = true\r\n        }\r\n    }, {\r\n        key: \"isOutsideScrollable\",\r\n        value: function($scrollable, event) {\r\n            if (!$scrollable) {\r\n                return false\r\n            }\r\n            var scrollableSize = (0, _position2.getBoundingRect)($scrollable.get(0));\r\n            var start = scrollableSize[this._limitProps.start];\r\n            var size = scrollableSize[this._sizeAttr];\r\n            var mousePosition = getMousePosition(event);\r\n            var location = \"width\" === this._sizeAttr ? mousePosition.x : mousePosition.y;\r\n            return location < start || location > start + size\r\n        }\r\n    }]);\r\n    return ScrollHelper\r\n}();\r\nvar ScrollAnimator = _animator.default.inherit({\r\n    ctor: function(strategy) {\r\n        this.callBase();\r\n        this._strategy = strategy\r\n    },\r\n    _step: function() {\r\n        var horizontalScrollHelper = this._strategy._horizontalScrollHelper;\r\n        var verticalScrollHelper = this._strategy._verticalScrollHelper;\r\n        horizontalScrollHelper && horizontalScrollHelper.scrollByStep();\r\n        verticalScrollHelper && verticalScrollHelper.scrollByStep()\r\n    }\r\n});\r\nvar Draggable = _dom_component.default.inherit({\r\n    reset: _common.noop,\r\n    dragMove: _common.noop,\r\n    dragEnter: _common.noop,\r\n    dragLeave: _common.noop,\r\n    dragEnd: function(sourceEvent) {\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        sourceDraggable._fireRemoveEvent(sourceEvent);\r\n        return (new _deferred.Deferred).resolve()\r\n    },\r\n    _fireRemoveEvent: _common.noop,\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            onDragStart: null,\r\n            onDragMove: null,\r\n            onDragEnd: null,\r\n            onDragEnter: null,\r\n            onDragLeave: null,\r\n            onDrop: null,\r\n            immediate: true,\r\n            dragDirection: \"both\",\r\n            boundary: void 0,\r\n            boundOffset: 0,\r\n            allowMoveByClick: false,\r\n            itemData: null,\r\n            container: void 0,\r\n            dragTemplate: void 0,\r\n            contentTemplate: \"content\",\r\n            handle: \"\",\r\n            filter: \"\",\r\n            clone: false,\r\n            autoScroll: true,\r\n            scrollSpeed: 30,\r\n            scrollSensitivity: 60,\r\n            group: void 0,\r\n            data: void 0\r\n        })\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase.apply(this, arguments);\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            component: true,\r\n            group: true,\r\n            itemData: true,\r\n            data: true\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._attachEventHandlers();\r\n        this._scrollAnimator = new ScrollAnimator(this);\r\n        this._horizontalScrollHelper = new ScrollHelper(\"horizontal\", this);\r\n        this._verticalScrollHelper = new ScrollHelper(\"vertical\", this)\r\n    },\r\n    _normalizeCursorOffset: function(offset) {\r\n        if ((0, _type.isObject)(offset)) {\r\n            offset = {\r\n                h: offset.x,\r\n                v: offset.y\r\n            }\r\n        }\r\n        offset = (0, _common.splitPair)(offset).map(function(value) {\r\n            return parseFloat(value)\r\n        });\r\n        return {\r\n            left: offset[0],\r\n            top: 1 === offset.length ? offset[0] : offset[1]\r\n        }\r\n    },\r\n    _getNormalizedCursorOffset: function(offset, options) {\r\n        if ((0, _type.isFunction)(offset)) {\r\n            offset = offset.call(this, options)\r\n        }\r\n        return this._normalizeCursorOffset(offset)\r\n    },\r\n    _calculateElementOffset: function(options) {\r\n        var elementOffset;\r\n        var dragElementOffset;\r\n        var event = options.event;\r\n        var $element = (0, _renderer.default)(options.itemElement);\r\n        var $dragElement = (0, _renderer.default)(options.dragElement);\r\n        var isCloned = this._dragElementIsCloned();\r\n        var cursorOffset = this.option(\"cursorOffset\");\r\n        var normalizedCursorOffset = {\r\n            left: 0,\r\n            top: 0\r\n        };\r\n        var currentLocate = this._initialLocate = (0, _translator.locate)($dragElement);\r\n        if (isCloned || options.initialOffset || cursorOffset) {\r\n            elementOffset = options.initialOffset || $element.offset();\r\n            if (cursorOffset) {\r\n                normalizedCursorOffset = this._getNormalizedCursorOffset(cursorOffset, options);\r\n                if (isFinite(normalizedCursorOffset.left)) {\r\n                    elementOffset.left = event.pageX\r\n                }\r\n                if (isFinite(normalizedCursorOffset.top)) {\r\n                    elementOffset.top = event.pageY\r\n                }\r\n            }\r\n            dragElementOffset = $dragElement.offset();\r\n            elementOffset.top -= dragElementOffset.top + (normalizedCursorOffset.top || 0) - currentLocate.top;\r\n            elementOffset.left -= dragElementOffset.left + (normalizedCursorOffset.left || 0) - currentLocate.left\r\n        }\r\n        return elementOffset\r\n    },\r\n    _initPosition: function(options) {\r\n        var $dragElement = (0, _renderer.default)(options.dragElement);\r\n        var elementOffset = this._calculateElementOffset(options);\r\n        if (elementOffset) {\r\n            this._move(elementOffset, $dragElement)\r\n        }\r\n        this._startPosition = (0, _translator.locate)($dragElement)\r\n    },\r\n    _startAnimator: function() {\r\n        if (!this._scrollAnimator.inProgress()) {\r\n            this._scrollAnimator.start()\r\n        }\r\n    },\r\n    _stopAnimator: function() {\r\n        this._scrollAnimator.stop()\r\n    },\r\n    _addWidgetPrefix: function(className) {\r\n        var componentName = this.NAME;\r\n        return (0, _inflector.dasherize)(componentName) + (className ? \"-\" + className : \"\")\r\n    },\r\n    _getItemsSelector: function() {\r\n        return this.option(\"filter\") || \"\"\r\n    },\r\n    _$content: function() {\r\n        var $element = this.$element();\r\n        var $wrapper = $element.children(\".dx-template-wrapper\");\r\n        return $wrapper.length ? $wrapper : $element\r\n    },\r\n    _attachEventHandlers: function() {\r\n        var _this = this;\r\n        if (this.option(\"disabled\")) {\r\n            return\r\n        }\r\n        var $element = this._$content();\r\n        var itemsSelector = this._getItemsSelector();\r\n        var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n        var data = {\r\n            direction: this.option(\"dragDirection\"),\r\n            immediate: this.option(\"immediate\"),\r\n            checkDropTarget: function($target, event) {\r\n                var targetGroup = _this.option(\"group\");\r\n                var sourceGroup = _this._getSourceDraggable().option(\"group\");\r\n                var $scrollable = _this._getScrollable($target);\r\n                if (_this._verticalScrollHelper.isOutsideScrollable($scrollable, event) || _this._horizontalScrollHelper.isOutsideScrollable($scrollable, event)) {\r\n                    return false\r\n                }\r\n                return sourceGroup && sourceGroup === targetGroup\r\n            }\r\n        };\r\n        if (allowMoveByClick) {\r\n            $element = this._getArea();\r\n            _events_engine.default.on($element, POINTERDOWN_EVENT_NAME, data, this._pointerDownHandler.bind(this))\r\n        }\r\n        if (\">\" === itemsSelector[0]) {\r\n            itemsSelector = itemsSelector.slice(1)\r\n        }\r\n        _events_engine.default.on($element, DRAGSTART_EVENT_NAME, itemsSelector, data, this._dragStartHandler.bind(this));\r\n        _events_engine.default.on($element, DRAG_EVENT_NAME, data, this._dragMoveHandler.bind(this));\r\n        _events_engine.default.on($element, DRAGEND_EVENT_NAME, data, this._dragEndHandler.bind(this));\r\n        _events_engine.default.on($element, DRAG_ENTER_EVENT_NAME, data, this._dragEnterHandler.bind(this));\r\n        _events_engine.default.on($element, DRAGEND_LEAVE_EVENT_NAME, data, this._dragLeaveHandler.bind(this))\r\n    },\r\n    _dragElementIsCloned: function() {\r\n        return this._$dragElement && this._$dragElement.hasClass(this._addWidgetPrefix(CLONE_CLASS))\r\n    },\r\n    _getDragTemplateArgs: function($element, $container) {\r\n        return {\r\n            container: (0, _element.getPublicElement)($container),\r\n            model: {\r\n                itemData: this.option(\"itemData\"),\r\n                itemElement: (0, _element.getPublicElement)($element)\r\n            }\r\n        }\r\n    },\r\n    _createDragElement: function($element) {\r\n        var result = $element;\r\n        var clone = this.option(\"clone\");\r\n        var $container = this._getContainer();\r\n        var template = this.option(\"dragTemplate\");\r\n        if (template) {\r\n            template = this._getTemplate(template);\r\n            result = (0, _renderer.default)(\"<div>\").appendTo($container);\r\n            template.render(this._getDragTemplateArgs($element, result))\r\n        } else {\r\n            if (clone) {\r\n                result = (0, _renderer.default)(\"<div>\").appendTo($container);\r\n                $element.clone().css({\r\n                    width: $element.css(\"width\"),\r\n                    height: $element.css(\"height\")\r\n                }).appendTo(result)\r\n            }\r\n        }\r\n        return result.toggleClass(this._addWidgetPrefix(CLONE_CLASS), result.get(0) !== $element.get(0)).toggleClass(\"dx-rtl\", this.option(\"rtlEnabled\"))\r\n    },\r\n    _resetDragElement: function() {\r\n        if (this._dragElementIsCloned()) {\r\n            this._$dragElement.remove()\r\n        } else {\r\n            this._toggleDraggingClass(false)\r\n        }\r\n        this._$dragElement = null\r\n    },\r\n    _resetSourceElement: function() {\r\n        this._toggleDragSourceClass(false);\r\n        this._$sourceElement = null\r\n    },\r\n    _detachEventHandlers: function() {\r\n        _events_engine.default.off(this._$content(), \".\" + DRAGGABLE);\r\n        _events_engine.default.off(this._getArea(), \".\" + DRAGGABLE)\r\n    },\r\n    _move: function(position, $element) {\r\n        (0, _translator.move)($element || this._$dragElement, position)\r\n    },\r\n    _getDraggableElement: function(e) {\r\n        var $sourceElement = this._getSourceElement();\r\n        if ($sourceElement) {\r\n            return $sourceElement\r\n        }\r\n        var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n        if (allowMoveByClick) {\r\n            return this.$element()\r\n        }\r\n        var $target = (0, _renderer.default)(e && e.target);\r\n        var itemsSelector = this._getItemsSelector();\r\n        if (\">\" === itemsSelector[0]) {\r\n            var $items = this._$content().find(itemsSelector);\r\n            if (!$items.is($target)) {\r\n                $target = $target.closest($items)\r\n            }\r\n        }\r\n        return $target\r\n    },\r\n    _getSourceElement: function() {\r\n        var draggable = this._getSourceDraggable();\r\n        return draggable._$sourceElement\r\n    },\r\n    _pointerDownHandler: function(e) {\r\n        if ((0, _index.needSkipEvent)(e)) {\r\n            return\r\n        }\r\n        var position = {};\r\n        var $element = this.$element();\r\n        var dragDirection = this.option(\"dragDirection\");\r\n        if (\"horizontal\" === dragDirection || \"both\" === dragDirection) {\r\n            position.left = e.pageX - $element.offset().left + (0, _translator.locate)($element).left - $element.width() / 2\r\n        }\r\n        if (\"vertical\" === dragDirection || \"both\" === dragDirection) {\r\n            position.top = e.pageY - $element.offset().top + (0, _translator.locate)($element).top - $element.height() / 2\r\n        }\r\n        this._move(position, $element);\r\n        this._getAction(\"onDragMove\")(this._getEventArgs(e))\r\n    },\r\n    _isValidElement: function(event, $element) {\r\n        var handle = this.option(\"handle\");\r\n        var $target = (0, _renderer.default)(event.originalEvent && event.originalEvent.target);\r\n        if (handle && !$target.closest(handle).length) {\r\n            return false\r\n        }\r\n        if (!$element.length) {\r\n            return false\r\n        }\r\n        return !$element.is(\".dx-state-disabled, .dx-state-disabled *\")\r\n    },\r\n    _dragStartHandler: function(e) {\r\n        var $element = this._getDraggableElement(e);\r\n        if (this._$sourceElement) {\r\n            return\r\n        }\r\n        if (!this._isValidElement(e, $element)) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n        var dragStartArgs = this._getDragStartArgs(e, $element);\r\n        this._getAction(\"onDragStart\")(dragStartArgs);\r\n        if (dragStartArgs.cancel) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n        this.option(\"itemData\", dragStartArgs.itemData);\r\n        this._setSourceDraggable();\r\n        this._$sourceElement = $element;\r\n        var initialOffset = $element.offset();\r\n        var $dragElement = this._$dragElement = this._createDragElement($element);\r\n        this._toggleDraggingClass(true);\r\n        this._toggleDragSourceClass(true);\r\n        var isFixedPosition = \"fixed\" === $dragElement.css(\"position\");\r\n        this._initPosition((0, _extend.extend)({}, dragStartArgs, {\r\n            dragElement: $dragElement.get(0),\r\n            initialOffset: isFixedPosition && initialOffset\r\n        }));\r\n        var $area = this._getArea();\r\n        var areaOffset = this._getAreaOffset($area);\r\n        var boundOffset = this._getBoundOffset();\r\n        var areaWidth = $area.outerWidth();\r\n        var areaHeight = $area.outerHeight();\r\n        var elementWidth = $dragElement.width();\r\n        var elementHeight = $dragElement.height();\r\n        var startOffset = {\r\n            left: $dragElement.offset().left - areaOffset.left,\r\n            top: $dragElement.offset().top - areaOffset.top\r\n        };\r\n        if ($area.length) {\r\n            e.maxLeftOffset = startOffset.left - boundOffset.left;\r\n            e.maxRightOffset = areaWidth - startOffset.left - elementWidth - boundOffset.right;\r\n            e.maxTopOffset = startOffset.top - boundOffset.top;\r\n            e.maxBottomOffset = areaHeight - startOffset.top - elementHeight - boundOffset.bottom\r\n        }\r\n        if (this.option(\"autoScroll\")) {\r\n            this._startAnimator()\r\n        }\r\n    },\r\n    _getAreaOffset: function($area) {\r\n        var offset = $area && _position.default.offset($area);\r\n        return offset ? offset : {\r\n            left: 0,\r\n            top: 0\r\n        }\r\n    },\r\n    _toggleDraggingClass: function(value) {\r\n        this._$dragElement && this._$dragElement.toggleClass(this._addWidgetPrefix(\"dragging\"), value)\r\n    },\r\n    _toggleDragSourceClass: function(value, $element) {\r\n        var $sourceElement = $element || this._$sourceElement;\r\n        $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source\"), value)\r\n    },\r\n    _getBoundOffset: function() {\r\n        var boundOffset = this.option(\"boundOffset\");\r\n        if ((0, _type.isFunction)(boundOffset)) {\r\n            boundOffset = boundOffset.call(this)\r\n        }\r\n        return (0, _string.quadToObject)(boundOffset)\r\n    },\r\n    _getArea: function() {\r\n        var area = this.option(\"boundary\");\r\n        if ((0, _type.isFunction)(area)) {\r\n            area = area.call(this)\r\n        }\r\n        return (0, _renderer.default)(area)\r\n    },\r\n    _getContainer: function() {\r\n        var container = this.option(\"container\");\r\n        if (void 0 === container) {\r\n            container = (0, _view_port.value)()\r\n        }\r\n        return (0, _renderer.default)(container)\r\n    },\r\n    _dragMoveHandler: function(e, scrollBy) {\r\n        this._dragMoveArgs = e;\r\n        if (!this._$dragElement) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n        var offset = e.offset;\r\n        var startPosition = this._startPosition;\r\n        this._move({\r\n            left: startPosition.left + offset.x,\r\n            top: startPosition.top + offset.y\r\n        });\r\n        if (!scrollBy) {\r\n            this._updateScrollable(e)\r\n        }\r\n        var eventArgs = this._getEventArgs(e);\r\n        this._getAction(\"onDragMove\")(eventArgs);\r\n        if (true === eventArgs.cancel) {\r\n            return\r\n        }\r\n        var targetDraggable = this._getTargetDraggable();\r\n        targetDraggable.dragMove(e, scrollBy)\r\n    },\r\n    _updateScrollable: function(e) {\r\n        var that = this;\r\n        if (that.option(\"autoScroll\")) {\r\n            var mousePosition = getMousePosition(e);\r\n            var allObjects = that.getElementsFromPoint(mousePosition);\r\n            that._verticalScrollHelper.updateScrollable(allObjects, mousePosition);\r\n            that._horizontalScrollHelper.updateScrollable(allObjects, mousePosition)\r\n        }\r\n    },\r\n    getElementsFromPoint: function(position, dragElement) {\r\n        var ownerDocument = (dragElement || this._$dragElement.get(0)).ownerDocument;\r\n        if (_browser.default.msie) {\r\n            var msElements = ownerDocument.msElementsFromPoint(position.x, position.y);\r\n            if (msElements) {\r\n                return Array.prototype.slice.call(msElements)\r\n            }\r\n            return []\r\n        }\r\n        return ownerDocument.elementsFromPoint(position.x, position.y)\r\n    },\r\n    _getScrollable: function($element) {\r\n        var _this2 = this;\r\n        var $scrollable;\r\n        $element.parents().toArray().some(function(parent) {\r\n            var $parent = (0, _renderer.default)(parent);\r\n            if (_this2._horizontalScrollHelper.isScrollable($parent) || _this2._verticalScrollHelper.isScrollable($parent)) {\r\n                $scrollable = $parent;\r\n                return true\r\n            }\r\n        });\r\n        return $scrollable\r\n    },\r\n    _defaultActionArgs: function() {\r\n        var args = this.callBase.apply(this, arguments);\r\n        var component = this.option(\"component\");\r\n        if (component) {\r\n            args.component = component;\r\n            args.element = component.element()\r\n        }\r\n        return args\r\n    },\r\n    _getEventArgs: function(e) {\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        var targetDraggable = this._getTargetDraggable();\r\n        return {\r\n            event: e,\r\n            itemData: sourceDraggable.option(\"itemData\"),\r\n            itemElement: (0, _element.getPublicElement)(sourceDraggable._$sourceElement),\r\n            fromComponent: sourceDraggable.option(\"component\") || sourceDraggable,\r\n            toComponent: targetDraggable.option(\"component\") || targetDraggable,\r\n            fromData: sourceDraggable.option(\"data\"),\r\n            toData: targetDraggable.option(\"data\")\r\n        }\r\n    },\r\n    _getDragStartArgs: function(e, $itemElement) {\r\n        var args = this._getEventArgs(e);\r\n        return {\r\n            event: args.event,\r\n            itemData: args.itemData,\r\n            itemElement: $itemElement,\r\n            fromData: args.fromData\r\n        }\r\n    },\r\n    _revertItemToInitialPosition: function() {\r\n        !this._dragElementIsCloned() && this._move(this._initialLocate, this._$sourceElement)\r\n    },\r\n    _dragEndHandler: function(e) {\r\n        var _this3 = this;\r\n        var d = new _deferred.Deferred;\r\n        var dragEndEventArgs = this._getEventArgs(e);\r\n        var dropEventArgs = this._getEventArgs(e);\r\n        var targetDraggable = this._getTargetDraggable();\r\n        var needRevertPosition = true;\r\n        try {\r\n            this._getAction(\"onDragEnd\")(dragEndEventArgs)\r\n        } finally {\r\n            (0, _deferred.when)((0, _deferred.fromPromise)(dragEndEventArgs.cancel)).done(function(cancel) {\r\n                if (!cancel) {\r\n                    if (targetDraggable !== _this3) {\r\n                        targetDraggable._getAction(\"onDrop\")(dropEventArgs)\r\n                    }\r\n                    if (!dropEventArgs.cancel) {\r\n                        needRevertPosition = false;\r\n                        (0, _deferred.when)((0, _deferred.fromPromise)(targetDraggable.dragEnd(dragEndEventArgs))).always(d.resolve);\r\n                        return\r\n                    }\r\n                }\r\n                d.resolve()\r\n            }).fail(d.resolve);\r\n            d.done(function() {\r\n                if (needRevertPosition) {\r\n                    _this3._revertItemToInitialPosition()\r\n                }\r\n                _this3.reset();\r\n                targetDraggable.reset();\r\n                _this3._stopAnimator();\r\n                _this3._horizontalScrollHelper.reset();\r\n                _this3._verticalScrollHelper.reset();\r\n                _this3._resetDragElement();\r\n                _this3._resetSourceElement();\r\n                _this3._resetTargetDraggable();\r\n                _this3._resetSourceDraggable()\r\n            })\r\n        }\r\n    },\r\n    _isTargetOverAnotherDraggable: function(e) {\r\n        var _this4 = this;\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        if (this === sourceDraggable) {\r\n            return false\r\n        }\r\n        var $dragElement = sourceDraggable._$dragElement;\r\n        var $sourceDraggableElement = sourceDraggable.$element();\r\n        var $targetDraggableElement = this.$element();\r\n        var mousePosition = getMousePosition(e);\r\n        var elements = this.getElementsFromPoint(mousePosition, e.target);\r\n        var firstWidgetElement = elements.filter(function(element) {\r\n            var $element = (0, _renderer.default)(element);\r\n            if ($element.hasClass(_this4._addWidgetPrefix())) {\r\n                return !$element.closest($dragElement).length\r\n            }\r\n        })[0];\r\n        var $sourceElement = this._getSourceElement();\r\n        var isTargetOverItself = firstWidgetElement === $sourceDraggableElement.get(0);\r\n        var isTargetOverNestedDraggable = (0, _renderer.default)(firstWidgetElement).closest($sourceElement).length;\r\n        return !firstWidgetElement || firstWidgetElement === $targetDraggableElement.get(0) && !isTargetOverItself && !isTargetOverNestedDraggable\r\n    },\r\n    _dragEnterHandler: function(e) {\r\n        this._fireDragEnterEvent(e);\r\n        if (this._isTargetOverAnotherDraggable(e)) {\r\n            this._setTargetDraggable()\r\n        }\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        sourceDraggable.dragEnter(e)\r\n    },\r\n    _dragLeaveHandler: function(e) {\r\n        this._fireDragLeaveEvent(e);\r\n        this._resetTargetDraggable();\r\n        if (this !== this._getSourceDraggable()) {\r\n            this.reset()\r\n        }\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        sourceDraggable.dragLeave(e)\r\n    },\r\n    _getAction: function(name) {\r\n        return this[\"_\" + name + \"Action\"] || this._createActionByOption(name)\r\n    },\r\n    _getAnonymousTemplateName: function() {\r\n        return ANONYMOUS_TEMPLATE_NAME\r\n    },\r\n    _initTemplates: function() {\r\n        if (!this.option(\"contentTemplate\")) {\r\n            return\r\n        }\r\n        this._templateManager.addDefaultTemplates({\r\n            content: new _empty_template.EmptyTemplate\r\n        });\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.$element().addClass(this._addWidgetPrefix());\r\n        var transclude = this._templateManager.anonymousTemplateName === this.option(\"contentTemplate\");\r\n        var template = this._getTemplateByOption(\"contentTemplate\");\r\n        if (template) {\r\n            (0, _renderer.default)(template.render({\r\n                container: this.element(),\r\n                transclude: transclude\r\n            }))\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name;\r\n        switch (name) {\r\n            case \"onDragStart\":\r\n            case \"onDragMove\":\r\n            case \"onDragEnd\":\r\n            case \"onDrop\":\r\n            case \"onDragEnter\":\r\n            case \"onDragLeave\":\r\n                this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n                break;\r\n            case \"dragTemplate\":\r\n            case \"contentTemplate\":\r\n            case \"container\":\r\n            case \"clone\":\r\n                break;\r\n            case \"allowMoveByClick\":\r\n            case \"dragDirection\":\r\n            case \"disabled\":\r\n            case \"boundary\":\r\n            case \"filter\":\r\n            case \"immediate\":\r\n                this._resetDragElement();\r\n                this._detachEventHandlers();\r\n                this._attachEventHandlers();\r\n                break;\r\n            case \"autoScroll\":\r\n                this._verticalScrollHelper.reset();\r\n                this._horizontalScrollHelper.reset();\r\n                break;\r\n            case \"scrollSensitivity\":\r\n            case \"scrollSpeed\":\r\n            case \"boundOffset\":\r\n            case \"handle\":\r\n            case \"group\":\r\n            case \"data\":\r\n            case \"itemData\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _getTargetDraggable: function() {\r\n        return targetDraggable || this\r\n    },\r\n    _getSourceDraggable: function() {\r\n        return sourceDraggable || this\r\n    },\r\n    _setTargetDraggable: function() {\r\n        var currentGroup = this.option(\"group\");\r\n        var sourceDraggable = this._getSourceDraggable();\r\n        if (currentGroup && currentGroup === sourceDraggable.option(\"group\")) {\r\n            targetDraggable = this\r\n        }\r\n    },\r\n    _setSourceDraggable: function() {\r\n        sourceDraggable = this\r\n    },\r\n    _resetSourceDraggable: function() {\r\n        sourceDraggable = null\r\n    },\r\n    _resetTargetDraggable: function() {\r\n        targetDraggable = null\r\n    },\r\n    _dispose: function() {\r\n        this.callBase();\r\n        this._detachEventHandlers();\r\n        this._resetDragElement();\r\n        this._resetTargetDraggable();\r\n        this._resetSourceDraggable();\r\n        this._$sourceElement = null;\r\n        this._stopAnimator()\r\n    },\r\n    _fireDragEnterEvent: function(sourceEvent) {\r\n        var args = this._getEventArgs(sourceEvent);\r\n        this._getAction(\"onDragEnter\")(args)\r\n    },\r\n    _fireDragLeaveEvent: function(sourceEvent) {\r\n        var args = this._getEventArgs(sourceEvent);\r\n        this._getAction(\"onDragLeave\")(args)\r\n    }\r\n});\r\n(0, _component_registrator.default)(DRAGGABLE, Draggable);\r\nvar _default = Draggable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/axes/datetime_breaks.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.generateDateBreaks = generateDateBreaks;\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar days = [0, 1, 2, 3, 4, 5, 6];\r\n\r\nfunction getWeekendDays(workdays) {\r\n    return days.filter(function(day) {\r\n        return !workdays.some(function(workDay) {\r\n            return workDay === day\r\n        })\r\n    })\r\n}\r\n\r\nfunction getNextDayIndex(dayIndex) {\r\n    return (dayIndex + 1) % 7\r\n}\r\n\r\nfunction dayBetweenWeekend(weekend, day) {\r\n    var start = weekend.start;\r\n    var end = weekend.end;\r\n    while (start !== end) {\r\n        if (start === day) {\r\n            return true\r\n        }\r\n        start = getNextDayIndex(start)\r\n    }\r\n    return false\r\n}\r\n\r\nfunction getDaysDistance(day, end) {\r\n    var length = 0;\r\n    while (day !== end) {\r\n        day = getNextDayIndex(day);\r\n        length++\r\n    }\r\n    return length\r\n}\r\n\r\nfunction separateBreak(scaleBreak, day) {\r\n    var result = [];\r\n    var dayEnd = new Date(day);\r\n    dayEnd.setDate(day.getDate() + 1);\r\n    if (day > scaleBreak.from) {\r\n        result.push({\r\n            from: scaleBreak.from,\r\n            to: day\r\n        })\r\n    }\r\n    if (dayEnd < scaleBreak.to) {\r\n        result.push({\r\n            from: dayEnd,\r\n            to: scaleBreak.to\r\n        })\r\n    }\r\n    return result\r\n}\r\n\r\nfunction getWeekEndDayIndices(workDays) {\r\n    var indices = getWeekendDays(workDays);\r\n    if (indices.length < 7) {\r\n        while (getNextDayIndex(indices[indices.length - 1]) === indices[0]) {\r\n            indices.unshift(indices.pop())\r\n        }\r\n    }\r\n    return indices\r\n}\r\n\r\nfunction generateDateBreaksForWeekend(min, max, weekendDayIndices) {\r\n    var day = min.getDate();\r\n    var breaks = [];\r\n    var weekends = weekendDayIndices.reduce(function(obj, day) {\r\n        var currentWeekEnd = obj[1];\r\n        if (void 0 === currentWeekEnd.start) {\r\n            currentWeekEnd = {\r\n                start: day,\r\n                end: getNextDayIndex(day)\r\n            };\r\n            obj[0].push(currentWeekEnd);\r\n            return [obj[0], currentWeekEnd]\r\n        } else {\r\n            if (currentWeekEnd.end === day) {\r\n                currentWeekEnd.end = getNextDayIndex(day);\r\n                return obj\r\n            }\r\n        }\r\n        currentWeekEnd = {\r\n            start: day,\r\n            end: getNextDayIndex(day)\r\n        };\r\n        obj[0].push(currentWeekEnd);\r\n        return [obj[0], currentWeekEnd]\r\n    }, [\r\n        [], {}\r\n    ]);\r\n    weekends[0].forEach(function(weekend) {\r\n        var currentDate = new Date(min);\r\n        currentDate = _date.default.trimTime(currentDate);\r\n        while (currentDate < max) {\r\n            day = currentDate.getDay();\r\n            var date = currentDate.getDate();\r\n            if (dayBetweenWeekend(weekend, day)) {\r\n                var from = new Date(currentDate);\r\n                currentDate.setDate(date + getDaysDistance(day, weekend.end));\r\n                var to = new Date(currentDate);\r\n                breaks.push({\r\n                    from: from,\r\n                    to: to\r\n                })\r\n            }\r\n            currentDate.setDate(currentDate.getDate() + 1)\r\n        }\r\n    });\r\n    return breaks\r\n}\r\n\r\nfunction excludeWorkDaysFromWeekEndBreaks(breaks, exactWorkDays) {\r\n    var result = breaks.slice();\r\n    var i;\r\n    var processWorkDay = function(workday) {\r\n        workday = _date.default.trimTime(new Date(workday));\r\n        if (result[i].from <= workday && result[i].to > workday) {\r\n            var separatedBreak = separateBreak(result[i], workday);\r\n            if (2 === separatedBreak.length) {\r\n                result.splice(i, 1, separatedBreak[0], separatedBreak[1])\r\n            } else {\r\n                if (1 === separatedBreak.length) {\r\n                    result.splice(i, 1, separatedBreak[0])\r\n                } else {\r\n                    result.splice(i, 1)\r\n                }\r\n            }\r\n        }\r\n    };\r\n    for (i = 0; i < result.length; i++) {\r\n        exactWorkDays.forEach(processWorkDay)\r\n    }\r\n    return result\r\n}\r\n\r\nfunction generateBreaksForHolidays(min, max, holidays, weekendDayIndices) {\r\n    var day;\r\n    var dayInWeekend = function(dayIndex) {\r\n        return dayIndex === day\r\n    };\r\n    var adjustedMin = _date.default.trimTime(min);\r\n    var adjustedMax = _date.default.trimTime(max);\r\n    adjustedMax.setDate(max.getDate() + 1);\r\n    return holidays.reduce(function(breaks, holiday) {\r\n        var holidayStart;\r\n        var holidayEnd;\r\n        holiday = new Date(holiday);\r\n        day = holiday.getDay();\r\n        if (!weekendDayIndices.some(dayInWeekend) && holiday >= adjustedMin && holiday <= adjustedMax) {\r\n            holidayStart = _date.default.trimTime(holiday);\r\n            holidayEnd = new Date(holidayStart);\r\n            holidayEnd.setDate(holidayStart.getDate() + 1);\r\n            breaks.push({\r\n                from: holidayStart,\r\n                to: holidayEnd\r\n            })\r\n        }\r\n        return breaks\r\n    }, [])\r\n}\r\n\r\nfunction calculateGaps(breaks) {\r\n    return breaks.map(function(b) {\r\n        return {\r\n            from: b.from,\r\n            to: b.to,\r\n            gapSize: _date.default.convertMillisecondsToDateUnits(b.to - b.from)\r\n        }\r\n    })\r\n}\r\n\r\nfunction generateDateBreaks(min, max, workWeek, singleWorkdays, holidays) {\r\n    var weekendDayIndices = getWeekEndDayIndices(workWeek);\r\n    var breaks = generateDateBreaksForWeekend(min, max, weekendDayIndices);\r\n    breaks.push.apply(breaks, generateBreaksForHolidays(min, max, holidays || [], weekendDayIndices));\r\n    return calculateGaps(excludeWorkDaysFromWeekEndBreaks(breaks, singleWorkdays || []))\r\n}\r\n","/**\r\n * DevExtreme (data/local_store.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _array_store = _interopRequireDefault(require(\"./array_store\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar abstract = _class.default.abstract;\r\nvar LocalStoreBackend = _class.default.inherit({\r\n    ctor: function(store, storeOptions) {\r\n        this._store = store;\r\n        this._dirty = !!storeOptions.data;\r\n        this.save();\r\n        var immediate = this._immediate = storeOptions.immediate;\r\n        var flushInterval = Math.max(100, storeOptions.flushInterval || 1e4);\r\n        if (!immediate) {\r\n            var saveProxy = this.save.bind(this);\r\n            setInterval(saveProxy, flushInterval);\r\n            _events_engine.default.on(window, \"beforeunload\", saveProxy);\r\n            if (window.cordova) {\r\n                _dom_adapter.default.listen(_dom_adapter.default.getDocument(), \"pause\", saveProxy, false)\r\n            }\r\n        }\r\n    },\r\n    notifyChanged: function() {\r\n        this._dirty = true;\r\n        if (this._immediate) {\r\n            this.save()\r\n        }\r\n    },\r\n    load: function() {\r\n        this._store._array = this._loadImpl();\r\n        this._dirty = false\r\n    },\r\n    save: function() {\r\n        if (!this._dirty) {\r\n            return\r\n        }\r\n        this._saveImpl(this._store._array);\r\n        this._dirty = false\r\n    },\r\n    _loadImpl: abstract,\r\n    _saveImpl: abstract\r\n});\r\nvar DomLocalStoreBackend = LocalStoreBackend.inherit({\r\n    ctor: function(store, storeOptions) {\r\n        var name = storeOptions.name;\r\n        if (!name) {\r\n            throw _errors.default.errors.Error(\"E4013\")\r\n        }\r\n        this._key = \"dx-data-localStore-\" + name;\r\n        this.callBase(store, storeOptions)\r\n    },\r\n    _loadImpl: function() {\r\n        var raw = window.localStorage.getItem(this._key);\r\n        if (raw) {\r\n            return JSON.parse(raw)\r\n        }\r\n        return []\r\n    },\r\n    _saveImpl: function(array) {\r\n        if (!array.length) {\r\n            window.localStorage.removeItem(this._key)\r\n        } else {\r\n            window.localStorage.setItem(this._key, JSON.stringify(array))\r\n        }\r\n    }\r\n});\r\nvar localStoreBackends = {\r\n    dom: DomLocalStoreBackend\r\n};\r\nvar LocalStore = _array_store.default.inherit({\r\n    ctor: function(options) {\r\n        if (\"string\" === typeof options) {\r\n            options = {\r\n                name: options\r\n            }\r\n        } else {\r\n            options = options || {}\r\n        }\r\n        this.callBase(options);\r\n        this._backend = new localStoreBackends[options.backend || \"dom\"](this, options);\r\n        this._backend.load()\r\n    },\r\n    clear: function() {\r\n        this.callBase();\r\n        this._backend.notifyChanged()\r\n    },\r\n    _insertImpl: function(values) {\r\n        var b = this._backend;\r\n        return this.callBase(values).done(b.notifyChanged.bind(b))\r\n    },\r\n    _updateImpl: function(key, values) {\r\n        var b = this._backend;\r\n        return this.callBase(key, values).done(b.notifyChanged.bind(b))\r\n    },\r\n    _removeImpl: function(key) {\r\n        var b = this._backend;\r\n        return this.callBase(key).done(b.notifyChanged.bind(b))\r\n    }\r\n}, \"local\");\r\nvar _default = LocalStore;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/core/loading_indicator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = exports.LoadingIndicator = void 0;\r\nvar _utils = require(\"./utils\");\r\nvar STATE_HIDDEN = 0;\r\nvar STATE_SHOWN = 1;\r\nvar ANIMATION_EASING = \"linear\";\r\nvar ANIMATION_DURATION = 400;\r\nvar LOADING_INDICATOR_READY = \"loadingIndicatorReady\";\r\nvar LoadingIndicator = function(parameters) {\r\n    var that = this;\r\n    var renderer = parameters.renderer;\r\n    that._group = renderer.g().attr({\r\n        \"class\": \"dx-loading-indicator\"\r\n    }).linkOn(renderer.root, {\r\n        name: \"loading-indicator\",\r\n        after: \"peripheral\"\r\n    });\r\n    that._rect = renderer.rect().attr({\r\n        opacity: 0\r\n    }).append(that._group);\r\n    that._text = renderer.text().attr({\r\n        align: \"center\"\r\n    }).append(that._group);\r\n    that._createStates(parameters.eventTrigger, that._group, renderer.root, parameters.notify)\r\n};\r\nexports.LoadingIndicator = LoadingIndicator;\r\nLoadingIndicator.prototype = {\r\n    constructor: LoadingIndicator,\r\n    _createStates: function(eventTrigger, group, root, notify) {\r\n        var that = this;\r\n        that._states = [{\r\n            opacity: 0,\r\n            start: function() {\r\n                notify(false)\r\n            },\r\n            complete: function() {\r\n                group.linkRemove();\r\n                root.css({\r\n                    \"pointer-events\": \"\"\r\n                });\r\n                eventTrigger(LOADING_INDICATOR_READY)\r\n            }\r\n        }, {\r\n            opacity: .85,\r\n            start: function() {\r\n                group.linkAppend();\r\n                root.css({\r\n                    \"pointer-events\": \"none\"\r\n                });\r\n                notify(true)\r\n            },\r\n            complete: function() {\r\n                eventTrigger(LOADING_INDICATOR_READY)\r\n            }\r\n        }];\r\n        that._state = STATE_HIDDEN\r\n    },\r\n    setSize: function(size) {\r\n        var width = size.width;\r\n        var height = size.height;\r\n        this._rect.attr({\r\n            width: width,\r\n            height: height\r\n        });\r\n        this._text.attr({\r\n            x: width / 2,\r\n            y: height / 2\r\n        })\r\n    },\r\n    setOptions: function(options) {\r\n        this._rect.attr({\r\n            fill: options.backgroundColor\r\n        });\r\n        this._text.css((0, _utils.patchFontOptions)(options.font)).attr({\r\n            text: options.text,\r\n            \"class\": options.cssClass\r\n        });\r\n        this[options.show ? \"show\" : \"hide\"]()\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        that._group.linkRemove().linkOff();\r\n        that._group = that._rect = that._text = that._states = null\r\n    },\r\n    _transit: function(stateId) {\r\n        var that = this;\r\n        var state;\r\n        if (that._state !== stateId) {\r\n            that._state = stateId;\r\n            that._isHiding = false;\r\n            state = that._states[stateId];\r\n            that._rect.stopAnimation().animate({\r\n                opacity: state.opacity\r\n            }, {\r\n                complete: state.complete,\r\n                easing: ANIMATION_EASING,\r\n                duration: ANIMATION_DURATION,\r\n                unstoppable: true\r\n            });\r\n            that._noHiding = true;\r\n            state.start();\r\n            that._noHiding = false\r\n        }\r\n    },\r\n    show: function() {\r\n        this._transit(STATE_SHOWN)\r\n    },\r\n    hide: function() {\r\n        this._transit(STATE_HIDDEN)\r\n    },\r\n    scheduleHiding: function() {\r\n        if (!this._noHiding) {\r\n            this._isHiding = true\r\n        }\r\n    },\r\n    fulfillHiding: function() {\r\n        if (this._isHiding) {\r\n            this.hide()\r\n        }\r\n    }\r\n};\r\nvar plugin = {\r\n    name: \"loading_indicator\",\r\n    init: function() {\r\n        var that = this;\r\n        that._loadingIndicator = new LoadingIndicator({\r\n            eventTrigger: that._eventTrigger,\r\n            renderer: that._renderer,\r\n            notify: notify\r\n        });\r\n        that._scheduleLoadingIndicatorHiding();\r\n\r\n        function notify(state) {\r\n            that._skipLoadingIndicatorOptions = true;\r\n            that.option(\"loadingIndicator\", {\r\n                show: state\r\n            });\r\n            that._skipLoadingIndicatorOptions = false;\r\n            if (state) {\r\n                that._stopCurrentHandling()\r\n            }\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._loadingIndicator.dispose();\r\n        this._loadingIndicator = null\r\n    },\r\n    members: {\r\n        _scheduleLoadingIndicatorHiding: function() {\r\n            this._loadingIndicator.scheduleHiding()\r\n        },\r\n        _fulfillLoadingIndicatorHiding: function() {\r\n            this._loadingIndicator.fulfillHiding()\r\n        },\r\n        showLoadingIndicator: function() {\r\n            this._loadingIndicator.show()\r\n        },\r\n        hideLoadingIndicator: function() {\r\n            this._loadingIndicator.hide()\r\n        },\r\n        _onBeginUpdate: function() {\r\n            if (!this._optionChangedLocker) {\r\n                this._scheduleLoadingIndicatorHiding()\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        _dataSourceLoadingChangedHandler: function(isLoading) {\r\n            if (isLoading && (this._options.silent(\"loadingIndicator\") || {}).enabled) {\r\n                this._loadingIndicator.show()\r\n            }\r\n        },\r\n        _setContentSize: function() {\r\n            this._loadingIndicator.setSize(this._canvas)\r\n        },\r\n        endUpdate: function() {\r\n            if (this._initialized && this._dataIsReady()) {\r\n                this._fulfillLoadingIndicatorHiding()\r\n            }\r\n        }\r\n    },\r\n    customize: function(constructor) {\r\n        var proto = constructor.prototype;\r\n        if (proto._dataSourceChangedHandler) {\r\n            var _dataSourceChangedHandler = proto._dataSourceChangedHandler;\r\n            proto._dataSourceChangedHandler = function() {\r\n                this._scheduleLoadingIndicatorHiding();\r\n                _dataSourceChangedHandler.apply(this, arguments)\r\n            }\r\n        }\r\n        constructor.addChange({\r\n            code: \"LOADING_INDICATOR\",\r\n            handler: function() {\r\n                if (!this._skipLoadingIndicatorOptions) {\r\n                    this._loadingIndicator.setOptions(this._getOption(\"loadingIndicator\"))\r\n                }\r\n                this._scheduleLoadingIndicatorHiding()\r\n            },\r\n            isThemeDependent: true,\r\n            option: \"loadingIndicator\",\r\n            isOptionChange: true\r\n        });\r\n        proto._eventsMap.onLoadingIndicatorReady = {\r\n            name: \"loadingIndicatorReady\"\r\n        };\r\n        var _drawn = proto._drawn;\r\n        proto._drawn = function() {\r\n            _drawn.apply(this, arguments);\r\n            if (this._dataIsReady()) {\r\n                this._fulfillLoadingIndicatorHiding()\r\n            }\r\n        }\r\n    },\r\n    fontFields: [\"loadingIndicator.font\"]\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (localization/core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dependency_injector = _interopRequireDefault(require(\"../core/utils/dependency_injector\"));\r\nvar _parent_locales = _interopRequireDefault(require(\"./cldr-data/parent_locales\"));\r\nvar _parentLocale = _interopRequireDefault(require(\"./parentLocale\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_LOCALE = \"en\";\r\nvar _default = (0, _dependency_injector.default)({\r\n    locale: function() {\r\n        var currentLocale = DEFAULT_LOCALE;\r\n        return function(locale) {\r\n            if (!locale) {\r\n                return currentLocale\r\n            }\r\n            currentLocale = locale\r\n        }\r\n    }(),\r\n    getValueByClosestLocale: function(getter) {\r\n        var locale = this.locale();\r\n        var value = getter(locale);\r\n        var isRootLocale;\r\n        while (!value && !isRootLocale) {\r\n            locale = (0, _parentLocale.default)(_parent_locales.default, locale);\r\n            if (locale) {\r\n                value = getter(locale)\r\n            } else {\r\n                isRootLocale = true\r\n            }\r\n        }\r\n        if (void 0 === value && locale !== DEFAULT_LOCALE) {\r\n            return getter(DEFAULT_LOCALE)\r\n        }\r\n        return value\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/chart.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend2 = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _utils = require(\"./utils\");\r\nvar _utils2 = require(\"./core/utils\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _math = require(\"../core/utils/math\");\r\nvar _base_chart = require(\"./chart_components/base_chart\");\r\nvar _multi_axes_synchronizer = _interopRequireDefault(require(\"./chart_components/multi_axes_synchronizer\"));\r\nvar _advanced_chart = require(\"./chart_components/advanced_chart\");\r\nvar _scroll_bar = require(\"./chart_components/scroll_bar\");\r\nvar _crosshair = require(\"./chart_components/crosshair\");\r\nvar _range_data_calculator = _interopRequireDefault(require(\"./series/helpers/range_data_calculator\"));\r\nvar _layout_manager = require(\"./chart_components/layout_manager\");\r\nvar _range = require(\"./translators/range\");\r\nvar _shutter_zoom = _interopRequireDefault(require(\"./chart_components/shutter_zoom\"));\r\nvar _zoom_and_pan = _interopRequireDefault(require(\"./chart_components/zoom_and_pan\"));\r\nvar _annotations = require(\"./core/annotations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_PANE_NAME = \"default\";\r\nvar VISUAL_RANGE = \"VISUAL_RANGE\";\r\nvar DEFAULT_PANES = [{\r\n    name: DEFAULT_PANE_NAME,\r\n    border: {}\r\n}];\r\nvar DISCRETE = \"discrete\";\r\nvar _isArray = Array.isArray;\r\n\r\nfunction getFirstAxisNameForPane(axes, paneName, defaultPane) {\r\n    var result;\r\n    for (var i = 0; i < axes.length; i++) {\r\n        if (axes[i].pane === paneName || void 0 === axes[i].pane && paneName === defaultPane) {\r\n            result = axes[i].name;\r\n            break\r\n        }\r\n    }\r\n    if (!result) {\r\n        result = axes[0].name\r\n    }\r\n    return result\r\n}\r\n\r\nfunction changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility) {\r\n    var gridOpt = axis.getOptions().grid;\r\n    var minorGridOpt = axis.getOptions().minorGrid;\r\n    gridOpt.visible = gridVisibility;\r\n    minorGridOpt && (minorGridOpt.visible = minorGridVisibility)\r\n}\r\n\r\nfunction hideGridsOnNonFirstValueAxisForPane(axesForPane) {\r\n    var axisShown = false;\r\n    var hiddenStubAxis = [];\r\n    var minorGridVisibility = axesForPane.some(function(axis) {\r\n        var minorGridOptions = axis.getOptions().minorGrid;\r\n        return minorGridOptions && minorGridOptions.visible\r\n    });\r\n    var gridVisibility = axesForPane.some(function(axis) {\r\n        var gridOptions = axis.getOptions().grid;\r\n        return gridOptions && gridOptions.visible\r\n    });\r\n    if (axesForPane.length > 1) {\r\n        axesForPane.forEach(function(axis) {\r\n            var gridOpt = axis.getOptions().grid;\r\n            if (axisShown) {\r\n                changeVisibilityAxisGrids(axis, false, false)\r\n            } else {\r\n                if (gridOpt && gridOpt.visible) {\r\n                    if (axis.getTranslator().getBusinessRange().isEmpty()) {\r\n                        changeVisibilityAxisGrids(axis, false, false);\r\n                        hiddenStubAxis.push(axis)\r\n                    } else {\r\n                        axisShown = true;\r\n                        changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility)\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        !axisShown && hiddenStubAxis.length && changeVisibilityAxisGrids(hiddenStubAxis[0], gridVisibility, minorGridVisibility)\r\n    }\r\n}\r\n\r\nfunction findAxisOptions(valueAxes, valueAxesOptions, axisName) {\r\n    var result;\r\n    var axInd;\r\n    for (axInd = 0; axInd < valueAxesOptions.length; axInd++) {\r\n        if (valueAxesOptions[axInd].name === axisName) {\r\n            result = valueAxesOptions[axInd];\r\n            result.priority = axInd;\r\n            break\r\n        }\r\n    }\r\n    if (!result) {\r\n        for (axInd = 0; axInd < valueAxes.length; axInd++) {\r\n            if (valueAxes[axInd].name === axisName) {\r\n                result = valueAxes[axInd].getOptions();\r\n                result.priority = valueAxes[axInd].priority;\r\n                break\r\n            }\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction findAxis(paneName, axisName, axes) {\r\n    var axis;\r\n    var i;\r\n    for (i = 0; i < axes.length; i++) {\r\n        axis = axes[i];\r\n        if (axis.name === axisName && axis.pane === paneName) {\r\n            return axis\r\n        }\r\n    }\r\n    if (paneName) {\r\n        return findAxis(void 0, axisName, axes)\r\n    }\r\n}\r\n\r\nfunction compareAxes(a, b) {\r\n    return a.priority - b.priority\r\n}\r\n\r\nfunction doesPaneExist(panes, paneName) {\r\n    var found = false;\r\n    (0, _iterator.each)(panes, function(_, pane) {\r\n        if (pane.name === paneName) {\r\n            found = true;\r\n            return false\r\n        }\r\n    });\r\n    return found\r\n}\r\n\r\nfunction accumulate(field, src1, src2, auxSpacing) {\r\n    var val1 = src1[field] || 0;\r\n    var val2 = src2[field] || 0;\r\n    return val1 + val2 + (val1 && val2 ? auxSpacing : 0)\r\n}\r\n\r\nfunction pickMax(field, src1, src2) {\r\n    return pickMaxValue(src1[field], src2[field])\r\n}\r\n\r\nfunction pickMaxValue(val1, val2) {\r\n    return Math.max(val1 || 0, val2 || 0)\r\n}\r\n\r\nfunction getAxisMargins(axis) {\r\n    return axis.getMargins()\r\n}\r\n\r\nfunction getHorizontalAxesMargins(axes, getMarginsFunc) {\r\n    return axes.reduce(function(margins, axis) {\r\n        var axisMargins = getMarginsFunc(axis);\r\n        var paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};\r\n        var spacing = axis.getMultipleAxesSpacing();\r\n        paneMargins.top = accumulate(\"top\", paneMargins, axisMargins, spacing);\r\n        paneMargins.bottom = accumulate(\"bottom\", paneMargins, axisMargins, spacing);\r\n        paneMargins.left = pickMax(\"left\", paneMargins, axisMargins);\r\n        paneMargins.right = pickMax(\"right\", paneMargins, axisMargins);\r\n        margins.top = pickMax(\"top\", paneMargins, margins);\r\n        margins.bottom = pickMax(\"bottom\", paneMargins, margins);\r\n        margins.left = pickMax(\"left\", paneMargins, margins);\r\n        margins.right = pickMax(\"right\", paneMargins, margins);\r\n        return margins\r\n    }, {\r\n        panes: {}\r\n    })\r\n}\r\n\r\nfunction getVerticalAxesMargins(axes) {\r\n    return axes.reduce(function(margins, axis) {\r\n        var axisMargins = axis.getMargins();\r\n        var paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};\r\n        var spacing = axis.getMultipleAxesSpacing();\r\n        paneMargins.top = pickMax(\"top\", paneMargins, axisMargins);\r\n        paneMargins.bottom = pickMax(\"bottom\", paneMargins, axisMargins);\r\n        paneMargins.left = accumulate(\"left\", paneMargins, axisMargins, spacing);\r\n        paneMargins.right = accumulate(\"right\", paneMargins, axisMargins, spacing);\r\n        margins.top = pickMax(\"top\", paneMargins, margins);\r\n        margins.bottom = pickMax(\"bottom\", paneMargins, margins);\r\n        margins.left = pickMax(\"left\", paneMargins, margins);\r\n        margins.right = pickMax(\"right\", paneMargins, margins);\r\n        return margins\r\n    }, {\r\n        panes: {}\r\n    })\r\n}\r\n\r\nfunction performActionOnAxes(axes, action, actionArgument1, actionArgument2, actionArgument3) {\r\n    axes.forEach(function(axis) {\r\n        axis[action](actionArgument1 && actionArgument1[axis.pane], actionArgument2 && actionArgument2[axis.pane] || actionArgument2, actionArgument3)\r\n    })\r\n}\r\n\r\nfunction shrinkCanvases(isRotated, canvases, sizes, verticalMargins, horizontalMargins) {\r\n    function getMargin(side, margins, pane) {\r\n        var m = (isRotated ? [\"left\", \"right\"] : [\"top\", \"bottom\"]).indexOf(side) === -1 ? margins : margins.panes[pane] || {};\r\n        return m[side]\r\n    }\r\n\r\n    function getMaxMargin(side, margins1, margins2, pane) {\r\n        return pickMaxValue(getMargin(side, margins1, pane), getMargin(side, margins2, pane))\r\n    }\r\n    var getOriginalField = function(field) {\r\n        return \"original\".concat(field[0].toUpperCase()).concat(field.slice(1))\r\n    };\r\n\r\n    function shrink(canvases, paneNames, sizeField, startMargin, endMargin, oppositeMargins) {\r\n        paneNames = paneNames.sort(function(p1, p2) {\r\n            return canvases[p2][startMargin] - canvases[p1][startMargin]\r\n        });\r\n        paneNames.forEach(function(pane) {\r\n            var canvas = canvases[pane];\r\n            oppositeMargins.forEach(function(margin) {\r\n                canvas[margin] = canvas[getOriginalField(margin)] + getMaxMargin(margin, verticalMargins, horizontalMargins, pane)\r\n            })\r\n        });\r\n        var firstPane = canvases[paneNames[0]];\r\n        var emptySpace = paneNames.reduce(function(space, paneName) {\r\n            space -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, paneName) + getMaxMargin(endMargin, verticalMargins, horizontalMargins, paneName);\r\n            return space\r\n        }, firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - canvases[paneNames[paneNames.length - 1]][getOriginalField(startMargin)]) - _utils2.PANE_PADDING * (paneNames.length - 1);\r\n        var totalCustomSpace = Object.keys(sizes).reduce(function(prev, key) {\r\n            return prev + (sizes[key].unit ? sizes[key].height : 0)\r\n        }, 0);\r\n        emptySpace -= totalCustomSpace;\r\n        paneNames.reduce(function(offset, pane) {\r\n            var canvas = canvases[pane];\r\n            var paneSize = sizes[pane];\r\n            offset -= getMaxMargin(endMargin, verticalMargins, horizontalMargins, pane);\r\n            canvas[endMargin] = firstPane[sizeField] - offset;\r\n            offset -= paneSize.unit ? paneSize.height : Math.floor(emptySpace * paneSize.height);\r\n            canvas[startMargin] = offset;\r\n            offset -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, pane) + _utils2.PANE_PADDING;\r\n            return offset\r\n        }, firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - (emptySpace < 0 ? emptySpace : 0))\r\n    }\r\n    var paneNames = Object.keys(canvases);\r\n    if (!isRotated) {\r\n        shrink(canvases, paneNames, \"height\", \"top\", \"bottom\", [\"left\", \"right\"])\r\n    } else {\r\n        shrink(canvases, paneNames, \"width\", \"left\", \"right\", [\"top\", \"bottom\"])\r\n    }\r\n    return canvases\r\n}\r\n\r\nfunction drawAxesWithTicks(axes, condition, canvases, panesBorderOptions) {\r\n    if (condition) {\r\n        performActionOnAxes(axes, \"createTicks\", canvases);\r\n        _multi_axes_synchronizer.default.synchronize(axes)\r\n    }\r\n    performActionOnAxes(axes, \"draw\", !condition && canvases, panesBorderOptions)\r\n}\r\n\r\nfunction shiftAxis(side1, side2) {\r\n    var shifts = {};\r\n    return function(axis) {\r\n        if (!axis.customPositionIsAvailable() || axis.customPositionEqualsToPredefined()) {\r\n            var shift = shifts[axis.pane] = shifts[axis.pane] || {\r\n                top: 0,\r\n                left: 0,\r\n                bottom: 0,\r\n                right: 0\r\n            };\r\n            var spacing = axis.getMultipleAxesSpacing();\r\n            var margins = axis.getMargins();\r\n            axis.shift(shift);\r\n            shift[side1] = accumulate(side1, shift, margins, spacing);\r\n            shift[side2] = accumulate(side2, shift, margins, spacing)\r\n        } else {\r\n            axis.shift({\r\n                top: 0,\r\n                left: 0,\r\n                bottom: 0,\r\n                right: 0\r\n            })\r\n        }\r\n    }\r\n}\r\n\r\nfunction getCommonSize(side, margins) {\r\n    var size = 0;\r\n    var pane;\r\n    var paneMargins;\r\n    for (pane in margins.panes) {\r\n        paneMargins = margins.panes[pane];\r\n        size += \"height\" === side ? paneMargins.top + paneMargins.bottom : paneMargins.left + paneMargins.right\r\n    }\r\n    return size\r\n}\r\n\r\nfunction checkUsedSpace(sizeShortage, side, axes, getMarginFunc) {\r\n    var size = 0;\r\n    if (sizeShortage[side] > 0) {\r\n        size = getCommonSize(side, getMarginFunc(axes, getAxisMargins));\r\n        performActionOnAxes(axes, \"hideTitle\");\r\n        sizeShortage[side] -= size - getCommonSize(side, getMarginFunc(axes, getAxisMargins))\r\n    }\r\n    if (sizeShortage[side] > 0) {\r\n        performActionOnAxes(axes, \"hideOuterElements\")\r\n    }\r\n}\r\n\r\nfunction axisAnimationEnabled(drawOptions, pointsToAnimation) {\r\n    var pointsCount = pointsToAnimation.reduce(function(sum, count) {\r\n        return sum + count\r\n    }, 0) / pointsToAnimation.length;\r\n    return drawOptions.animate && pointsCount <= drawOptions.animationPointsLimit\r\n}\r\n\r\nfunction collectMarkersInfoBySeries(allSeries, filteredSeries, argAxis) {\r\n    var series = [];\r\n    var overloadedSeries = {};\r\n    var argVisualRange = argAxis.visualRange();\r\n    var argTranslator = argAxis.getTranslator();\r\n    var argViewPortFilter = _range_data_calculator.default.getViewPortFilter(argVisualRange || {});\r\n    filteredSeries.forEach(function(s) {\r\n        var valAxis = s.getValueAxis();\r\n        var valVisualRange = valAxis.getCanvasRange();\r\n        var valTranslator = valAxis.getTranslator();\r\n        var seriesIndex = allSeries.indexOf(s);\r\n        var valViewPortFilter = _range_data_calculator.default.getViewPortFilter(valVisualRange || {});\r\n        overloadedSeries[seriesIndex] = {};\r\n        filteredSeries.forEach(function(sr) {\r\n            return overloadedSeries[seriesIndex][allSeries.indexOf(sr)] = 0\r\n        });\r\n        var seriesPoints = [];\r\n        s.getPoints().filter(function(p) {\r\n            return p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true)))\r\n        }).forEach(function(p) {\r\n            var tp = {\r\n                seriesIndex: seriesIndex,\r\n                argument: p.argument,\r\n                value: p.getMaxValue(true),\r\n                size: p.bubbleSize || p.getOptions().size\r\n            };\r\n            if (p.getMinValue(true) !== p.getMaxValue(true)) {\r\n                var mp = (0, _extend2.extend)({}, tp);\r\n                mp.value = p.getMinValue(true);\r\n                mp.x = argTranslator.to(mp.argument, 1);\r\n                mp.y = valTranslator.to(mp.value, 1);\r\n                seriesPoints.push(mp)\r\n            }\r\n            tp.x = argTranslator.to(tp.argument, 1);\r\n            tp.y = valTranslator.to(tp.value, 1);\r\n            seriesPoints.push(tp)\r\n        });\r\n        overloadedSeries[seriesIndex].pointsCount = seriesPoints.length;\r\n        overloadedSeries[seriesIndex].total = 0;\r\n        overloadedSeries[seriesIndex].continuousSeries = 0;\r\n        series.push({\r\n            name: s.name,\r\n            index: seriesIndex,\r\n            points: seriesPoints\r\n        })\r\n    });\r\n    return {\r\n        series: series,\r\n        overloadedSeries: overloadedSeries\r\n    }\r\n}\r\n\r\nfunction applyAutoHidePointMarkers(allSeries, filteredSeries, overloadedSeries, argAxis) {\r\n    var argAxisType = argAxis.getOptions().type;\r\n    filteredSeries.forEach(function(s) {\r\n        var seriesIndex = allSeries.indexOf(s);\r\n        s.autoHidePointMarkers = false;\r\n        var tickCount = argAxis.getTicksValues().majorTicksValues.length;\r\n        if (s.autoHidePointMarkersEnabled() && (argAxisType === DISCRETE || overloadedSeries[seriesIndex].pointsCount > tickCount)) {\r\n            for (var index in overloadedSeries[seriesIndex]) {\r\n                var i = parseInt(index);\r\n                if (isNaN(i) || overloadedSeries[seriesIndex].total / overloadedSeries[seriesIndex].continuousSeries < 3) {\r\n                    continue\r\n                }\r\n                if (i === seriesIndex) {\r\n                    if (2 * overloadedSeries[i][i] >= overloadedSeries[i].pointsCount) {\r\n                        s.autoHidePointMarkers = true;\r\n                        break\r\n                    }\r\n                } else {\r\n                    if (overloadedSeries[seriesIndex].total >= overloadedSeries[seriesIndex].pointsCount) {\r\n                        s.autoHidePointMarkers = true;\r\n                        break\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    })\r\n}\r\n\r\nfunction fastHidingPointMarkersByArea(canvas, markersInfo, series) {\r\n    var area = canvas.width * canvas.height;\r\n    var seriesPoints = markersInfo.series;\r\n    var _loop = function(i) {\r\n        var currentSeries = series.filter(function(s) {\r\n            return s.name === seriesPoints[i].name\r\n        })[0];\r\n        var points = seriesPoints[i].points;\r\n        var pointSize = points.length ? points[0].size : 0;\r\n        var pointsArea = pointSize * pointSize * points.length;\r\n        if (currentSeries.autoHidePointMarkersEnabled() && pointsArea >= area / seriesPoints.length) {\r\n            var index = seriesPoints[i].index;\r\n            currentSeries.autoHidePointMarkers = true;\r\n            seriesPoints.splice(i, 1);\r\n            series.splice(series.indexOf(currentSeries), 1);\r\n            delete markersInfo.overloadedSeries[index]\r\n        }\r\n    };\r\n    for (var i = seriesPoints.length - 1; i >= 0; i--) {\r\n        _loop(i)\r\n    }\r\n}\r\n\r\nfunction updateMarkersInfo(points, overloadedSeries) {\r\n    var isContinuousSeries = false;\r\n    for (var i = 0; i < points.length - 1; i++) {\r\n        var curPoint = points[i];\r\n        var size = curPoint.size;\r\n        if ((0, _type.isDefined)(curPoint.x) && (0, _type.isDefined)(curPoint.y)) {\r\n            for (var j = i + 1; j < points.length; j++) {\r\n                var nextPoint = points[j];\r\n                var next_x = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.x;\r\n                var next_y = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.y;\r\n                if (!(0, _type.isDefined)(next_x) || Math.abs(curPoint.x - next_x) >= size) {\r\n                    isContinuousSeries &= j !== i + 1;\r\n                    break\r\n                } else {\r\n                    var distance = (0, _type.isDefined)(next_x) && (0, _type.isDefined)(next_y) && Math.sqrt(Math.pow(curPoint.x - next_x, 2) + Math.pow(curPoint.y - next_y, 2));\r\n                    if (distance && distance < size) {\r\n                        overloadedSeries[curPoint.seriesIndex][nextPoint.seriesIndex]++;\r\n                        overloadedSeries[curPoint.seriesIndex].total++;\r\n                        if (!isContinuousSeries) {\r\n                            overloadedSeries[curPoint.seriesIndex].continuousSeries++;\r\n                            isContinuousSeries = true\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\nvar dxChart = _advanced_chart.AdvancedChart.inherit({\r\n    _themeSection: \"chart\",\r\n    _fontFields: [\"crosshair.label.font\"],\r\n    _initCore: function() {\r\n        this.paneAxis = {};\r\n        this.callBase()\r\n    },\r\n    _correctAxes: function() {\r\n        this._correctValueAxes(true)\r\n    },\r\n    _getExtraOptions: _common.noop,\r\n    _createPanes: function() {\r\n        var that = this;\r\n        var panes = that.option(\"panes\");\r\n        var panesNameCounter = 0;\r\n        var defaultPane;\r\n        if (!panes || _isArray(panes) && !panes.length) {\r\n            panes = DEFAULT_PANES\r\n        }\r\n        that.callBase();\r\n        defaultPane = that.option(\"defaultPane\");\r\n        panes = (0, _extend2.extend)(true, [], _isArray(panes) ? panes : [panes]);\r\n        (0, _iterator.each)(panes, function(_, pane) {\r\n            pane.name = !(0, _type.isDefined)(pane.name) ? DEFAULT_PANE_NAME + panesNameCounter++ : pane.name\r\n        });\r\n        if ((0, _type.isDefined)(defaultPane)) {\r\n            if (!doesPaneExist(panes, defaultPane)) {\r\n                that._incidentOccurred(\"W2101\", [defaultPane]);\r\n                defaultPane = panes[panes.length - 1].name\r\n            }\r\n        } else {\r\n            defaultPane = panes[panes.length - 1].name\r\n        }\r\n        that.defaultPane = defaultPane;\r\n        panes = that._isRotated() ? panes.reverse() : panes;\r\n        return panes\r\n    },\r\n    _getAxisRenderingOptions: function() {\r\n        return {\r\n            axisType: \"xyAxes\",\r\n            drawingType: \"linear\"\r\n        }\r\n    },\r\n    _prepareAxisOptions: function(typeSelector, userOptions, rotated) {\r\n        return {\r\n            isHorizontal: \"argumentAxis\" === typeSelector !== rotated,\r\n            containerColor: this._themeManager.getOptions(\"containerBackgroundColor\")\r\n        }\r\n    },\r\n    _checkPaneName: function(seriesTheme) {\r\n        var paneList = (0, _utils2.map)(this.panes, function(pane) {\r\n            return pane.name\r\n        });\r\n        seriesTheme.pane = seriesTheme.pane || this.defaultPane;\r\n        return (0, _array.inArray)(seriesTheme.pane, paneList) !== -1\r\n    },\r\n    _initCustomPositioningAxes: function() {\r\n        var that = this;\r\n        var argumentAxis = that.getArgumentAxis();\r\n        var valueAxisName = argumentAxis.getOptions().customPositionAxis;\r\n        var valueAxis = that._valueAxes.filter(function(v) {\r\n            return v.pane === argumentAxis.pane && (!valueAxisName || valueAxisName === v.name)\r\n        })[0];\r\n        that._valueAxes.forEach(function(v) {\r\n            if (argumentAxis !== v.getOrthogonalAxis()) {\r\n                v.getOrthogonalAxis = function() {\r\n                    return argumentAxis\r\n                };\r\n                v.customPositionIsBoundaryOrthogonalAxis = function() {\r\n                    return argumentAxis.customPositionIsBoundary()\r\n                }\r\n            }\r\n        });\r\n        if ((0, _type.isDefined)(valueAxis) && valueAxis !== argumentAxis.getOrthogonalAxis()) {\r\n            argumentAxis.getOrthogonalAxis = function() {\r\n                return valueAxis\r\n            };\r\n            argumentAxis.customPositionIsBoundaryOrthogonalAxis = function() {\r\n                return that._valueAxes.some(function(v) {\r\n                    return v.customPositionIsBoundary()\r\n                })\r\n            }\r\n        } else {\r\n            if ((0, _type.isDefined)(argumentAxis.getOrthogonalAxis()) && !(0, _type.isDefined)(valueAxis)) {\r\n                argumentAxis.getOrthogonalAxis = _common.noop\r\n            }\r\n        }\r\n    },\r\n    _getAllAxes: function() {\r\n        return this._argumentAxes.concat(this._valueAxes)\r\n    },\r\n    _resetAxesAnimation: function(isFirstDrawing) {\r\n        this._getAllAxes().forEach(function(a) {\r\n            a.resetApplyingAnimation(isFirstDrawing)\r\n        })\r\n    },\r\n    _cleanGroups: function() {\r\n        this._getAllAxes().forEach(function(a) {\r\n            return a.beforeCleanGroups()\r\n        });\r\n        this.callBase();\r\n        this._getAllAxes().forEach(function(a) {\r\n            return a.afterCleanGroups()\r\n        })\r\n    },\r\n    _axesBoundaryPositioning: function() {\r\n        var that = this;\r\n        var allAxes = that._getAllAxes();\r\n        var boundaryStateChanged = false;\r\n        allAxes.forEach(function(a) {\r\n            if (!a.customPositionIsAvailable()) {\r\n                return false\r\n            }\r\n            var prevBoundaryState = a.customPositionIsBoundary();\r\n            a._customBoundaryPosition = a.getCustomBoundaryPosition();\r\n            boundaryStateChanged |= prevBoundaryState !== a.customPositionIsBoundary()\r\n        });\r\n        return boundaryStateChanged\r\n    },\r\n    _getValueAxis: function(paneName, axisName) {\r\n        var that = this;\r\n        var valueAxes = that._valueAxes;\r\n        var valueAxisOptions = that.option(\"valueAxis\") || {};\r\n        var valueAxesOptions = _isArray(valueAxisOptions) ? valueAxisOptions : [valueAxisOptions];\r\n        var rotated = that._isRotated();\r\n        var crosshairMargins = that._getCrosshairMargins();\r\n        var axisOptions;\r\n        var axis;\r\n        axisName = axisName || getFirstAxisNameForPane(valueAxes, paneName, that.defaultPane);\r\n        axis = findAxis(paneName, axisName, valueAxes);\r\n        if (!axis) {\r\n            axisOptions = findAxisOptions(valueAxes, valueAxesOptions, axisName);\r\n            if (!axisOptions) {\r\n                that._incidentOccurred(\"W2102\", [axisName]);\r\n                axisOptions = {\r\n                    name: axisName,\r\n                    priority: valueAxes.length\r\n                }\r\n            }\r\n            axis = that._createAxis(false, that._populateAxesOptions(\"valueAxis\", axisOptions, {\r\n                pane: paneName,\r\n                name: axisName,\r\n                optionPath: _isArray(valueAxisOptions) ? \"valueAxis[\".concat(axisOptions.priority, \"]\") : \"valueAxis\",\r\n                crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x\r\n            }, rotated));\r\n            axis.applyVisualRangeSetter(that._getVisualRangeSetter());\r\n            valueAxes.push(axis)\r\n        }\r\n        axis.setPane(paneName);\r\n        return axis\r\n    },\r\n    _correctValueAxes: function(needHideGrids) {\r\n        var that = this;\r\n        var synchronizeMultiAxes = that._themeManager.getOptions(\"synchronizeMultiAxes\");\r\n        var valueAxes = that._valueAxes;\r\n        var paneWithAxis = {};\r\n        that.series.forEach(function(series) {\r\n            var axis = series.getValueAxis();\r\n            paneWithAxis[axis.pane] = true\r\n        });\r\n        that.panes.forEach(function(pane) {\r\n            var paneName = pane.name;\r\n            if (!paneWithAxis[paneName]) {\r\n                that._getValueAxis(paneName)\r\n            }\r\n            if (needHideGrids && synchronizeMultiAxes) {\r\n                hideGridsOnNonFirstValueAxisForPane(valueAxes.filter(function(axis) {\r\n                    return axis.pane === paneName\r\n                }))\r\n            }\r\n        });\r\n        that._valueAxes = valueAxes.filter(function(axis) {\r\n            if (!axis.pane) {\r\n                axis.setPane(that.defaultPane)\r\n            }\r\n            return doesPaneExist(that.panes, axis.pane)\r\n        }).sort(compareAxes);\r\n        var defaultAxis = this.getValueAxis();\r\n        that._valueAxes.forEach(function(axis) {\r\n            var optionPath = axis.getOptions().optionPath;\r\n            if (optionPath) {\r\n                var axesWithSamePath = that._valueAxes.filter(function(a) {\r\n                    return a.getOptions().optionPath === optionPath\r\n                });\r\n                if (axesWithSamePath.length > 1) {\r\n                    if (axesWithSamePath.some(function(a) {\r\n                            return a === defaultAxis\r\n                        })) {\r\n                        axesWithSamePath.forEach(function(a) {\r\n                            if (a !== defaultAxis) {\r\n                                a.getOptions().optionPath = null\r\n                            }\r\n                        })\r\n                    } else {\r\n                        axesWithSamePath.forEach(function(a, i) {\r\n                            if (0 !== i) {\r\n                                a.getOptions().optionPath = null\r\n                            }\r\n                        })\r\n                    }\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _getSeriesForPane: function(paneName) {\r\n        var paneSeries = [];\r\n        (0, _iterator.each)(this.series, function(_, oneSeries) {\r\n            if (oneSeries.pane === paneName) {\r\n                paneSeries.push(oneSeries)\r\n            }\r\n        });\r\n        return paneSeries\r\n    },\r\n    _createPanesBorderOptions: function() {\r\n        var commonBorderOptions = this._themeManager.getOptions(\"commonPaneSettings\").border;\r\n        var panesBorderOptions = {};\r\n        this.panes.forEach(function(pane) {\r\n            return panesBorderOptions[pane.name] = (0, _extend2.extend)(true, {}, commonBorderOptions, pane.border)\r\n        });\r\n        return panesBorderOptions\r\n    },\r\n    _createScrollBar: function() {\r\n        var that = this;\r\n        var scrollBarOptions = that._themeManager.getOptions(\"scrollBar\") || {};\r\n        var scrollBarGroup = that._scrollBarGroup;\r\n        if (scrollBarOptions.visible) {\r\n            scrollBarOptions.rotated = that._isRotated();\r\n            that._scrollBar = (that._scrollBar || new _scroll_bar.ScrollBar(that._renderer, scrollBarGroup)).update(scrollBarOptions)\r\n        } else {\r\n            scrollBarGroup.linkRemove();\r\n            that._scrollBar && that._scrollBar.dispose();\r\n            that._scrollBar = null\r\n        }\r\n    },\r\n    _prepareToRender: function(drawOptions) {\r\n        var panesBorderOptions = this._createPanesBorderOptions();\r\n        this._createPanesBackground();\r\n        this._appendAxesGroups();\r\n        this._adjustViewport();\r\n        return panesBorderOptions\r\n    },\r\n    _adjustViewport: function() {\r\n        var that = this;\r\n        var series = that._getVisibleSeries();\r\n        var argumentAxis = that.getArgumentAxis();\r\n        var useAggregation = series.some(function(s) {\r\n            return s.useAggregation()\r\n        });\r\n        var adjustOnZoom = that._themeManager.getOptions(\"adjustOnZoom\");\r\n        var alignToBounds = !argumentAxis.dataVisualRangeIsReduced();\r\n        if (!useAggregation && !adjustOnZoom) {\r\n            return\r\n        }\r\n        that._valueAxes.forEach(function(axis) {\r\n            return axis.adjust(alignToBounds)\r\n        })\r\n    },\r\n    _recreateSizeDependentObjects: function(isCanvasChanged) {\r\n        var that = this;\r\n        var series = that._getVisibleSeries();\r\n        var useAggregation = series.some(function(s) {\r\n            return s.useAggregation()\r\n        });\r\n        var zoomChanged = that._isZooming();\r\n        if (!useAggregation) {\r\n            return\r\n        }\r\n        that._argumentAxes.forEach(function(axis) {\r\n            axis.updateCanvas(that._canvas, true)\r\n        });\r\n        series.forEach(function(series) {\r\n            if (series.useAggregation() && (isCanvasChanged || zoomChanged || !series._useAllAggregatedPoints)) {\r\n                series.createPoints()\r\n            }\r\n        });\r\n        that._processSeriesFamilies()\r\n    },\r\n    _isZooming: function() {\r\n        var that = this;\r\n        var argumentAxis = that.getArgumentAxis();\r\n        if (!argumentAxis || !argumentAxis.getTranslator()) {\r\n            return false\r\n        }\r\n        var businessRange = argumentAxis.getTranslator().getBusinessRange();\r\n        var zoomRange = argumentAxis.getViewport();\r\n        var min = zoomRange ? zoomRange.min : 0;\r\n        var max = zoomRange ? zoomRange.max : 0;\r\n        if (\"logarithmic\" === businessRange.axisType) {\r\n            min = (0, _utils2.getLog)(min, businessRange.base);\r\n            max = (0, _utils2.getLog)(max, businessRange.base)\r\n        }\r\n        var viewportDistance = businessRange.axisType === DISCRETE ? (0, _utils2.getCategoriesInfo)(businessRange.categories, min, max).categories.length : Math.abs(max - min);\r\n        var precision = (0, _math.getPrecision)(viewportDistance);\r\n        precision = precision > 1 ? Math.pow(10, precision - 2) : 1;\r\n        var zoomChanged = Math.round((that._zoomLength - viewportDistance) * precision) / precision !== 0;\r\n        that._zoomLength = viewportDistance;\r\n        return zoomChanged\r\n    },\r\n    _handleSeriesDataUpdated: function() {\r\n        var that = this;\r\n        var viewport = new _range.Range;\r\n        that.series.forEach(function(s) {\r\n            viewport.addRange(s.getArgumentRange())\r\n        });\r\n        that._argumentAxes.forEach(function(axis) {\r\n            axis.updateCanvas(that._canvas, true);\r\n            axis.setBusinessRange(viewport, that._axesReinitialized)\r\n        });\r\n        that.callBase()\r\n    },\r\n    _isLegendInside: function() {\r\n        return this._legend && \"inside\" === this._legend.getPosition()\r\n    },\r\n    _isRotated: function() {\r\n        return this._themeManager.getOptions(\"rotated\")\r\n    },\r\n    _getLayoutTargets: function() {\r\n        return this.panes\r\n    },\r\n    _applyClipRects: function(panesBorderOptions) {\r\n        var that = this;\r\n        that._drawPanesBorders(panesBorderOptions);\r\n        that._createClipRectsForPanes();\r\n        that._applyClipRectsForAxes();\r\n        that._fillPanesBackground()\r\n    },\r\n    _updateLegendPosition: function(drawOptions, legendHasInsidePosition) {\r\n        var that = this;\r\n        if (drawOptions.drawLegend && that._legend && legendHasInsidePosition) {\r\n            var panes = that.panes;\r\n            var newCanvas = (0, _extend2.extend)({}, panes[0].canvas);\r\n            var layoutManager = new _layout_manager.LayoutManager;\r\n            newCanvas.right = panes[panes.length - 1].canvas.right;\r\n            newCanvas.bottom = panes[panes.length - 1].canvas.bottom;\r\n            layoutManager.layoutInsideLegend(that._legend, newCanvas)\r\n        }\r\n    },\r\n    _allowLegendInsidePosition: function() {\r\n        return true\r\n    },\r\n    _applyExtraSettings: function(series) {\r\n        var that = this;\r\n        var paneIndex = that._getPaneIndex(series.pane);\r\n        var panesClipRects = that._panesClipRects;\r\n        var wideClipRect = panesClipRects.wide[paneIndex];\r\n        series.setClippingParams(panesClipRects.base[paneIndex].id, wideClipRect && wideClipRect.id, that._getPaneBorderVisibility(paneIndex))\r\n    },\r\n    _updatePanesCanvases: function(drawOptions) {\r\n        if (!drawOptions.recreateCanvas) {\r\n            return\r\n        }(0, _utils2.updatePanesCanvases)(this.panes, this._canvas, this._isRotated())\r\n    },\r\n    _normalizePanesHeight: function() {\r\n        (0, _utils2.normalizePanesHeight)(this.panes)\r\n    },\r\n    _renderScaleBreaks: function() {\r\n        this._valueAxes.concat(this._argumentAxes).forEach(function(axis) {\r\n            axis.drawScaleBreaks()\r\n        })\r\n    },\r\n    _getArgFilter: function() {\r\n        return _range_data_calculator.default.getViewPortFilter(this.getArgumentAxis().visualRange() || {})\r\n    },\r\n    _applyPointMarkersAutoHiding: function() {\r\n        var that = this;\r\n        var allSeries = that.series;\r\n        if (!that._themeManager.getOptions(\"autoHidePointMarkers\")) {\r\n            allSeries.forEach(function(s) {\r\n                return s.autoHidePointMarkers = false\r\n            });\r\n            return\r\n        }\r\n        that.panes.forEach(function(_ref) {\r\n            var borderCoords = _ref.borderCoords,\r\n                name = _ref.name;\r\n            var series = allSeries.filter(function(s) {\r\n                return s.pane === name && s.usePointsToDefineAutoHiding()\r\n            });\r\n            var argAxis = that.getArgumentAxis();\r\n            var markersInfo = collectMarkersInfoBySeries(allSeries, series, argAxis);\r\n            fastHidingPointMarkersByArea(borderCoords, markersInfo, series);\r\n            if (markersInfo.series.length) {\r\n                var argVisualRange = argAxis.visualRange();\r\n                var argAxisIsDiscrete = argAxis.getOptions().type === DISCRETE;\r\n                var sortingCallback = argAxisIsDiscrete ? function(p1, p2) {\r\n                    return argVisualRange.categories.indexOf(p1.argument) - argVisualRange.categories.indexOf(p2.argument)\r\n                } : function(p1, p2) {\r\n                    return p1.argument - p2.argument\r\n                };\r\n                var points = [];\r\n                markersInfo.series.forEach(function(s) {\r\n                    return points = points.concat(s.points)\r\n                });\r\n                points.sort(sortingCallback);\r\n                updateMarkersInfo(points, markersInfo.overloadedSeries);\r\n                applyAutoHidePointMarkers(allSeries, series, markersInfo.overloadedSeries, argAxis)\r\n            }\r\n        })\r\n    },\r\n    _renderAxes: function(drawOptions, panesBorderOptions) {\r\n        function calculateTitlesWidth(axes) {\r\n            return axes.map(function(axis) {\r\n                if (!axis.getTitle) {\r\n                    return 0\r\n                }\r\n                var title = axis.getTitle();\r\n                return title ? title.bBox.width : 0\r\n            })\r\n        }\r\n        var that = this;\r\n        var rotated = that._isRotated();\r\n        var synchronizeMultiAxes = that._themeManager.getOptions(\"synchronizeMultiAxes\");\r\n        var scrollBar = that._scrollBar ? [that._scrollBar] : [];\r\n        var extendedArgAxes = that._isArgumentAxisBeforeScrollBar() ? that._argumentAxes.concat(scrollBar) : scrollBar.concat(that._argumentAxes);\r\n        var verticalAxes = rotated ? that._argumentAxes : that._valueAxes;\r\n        var verticalElements = rotated ? extendedArgAxes : that._valueAxes;\r\n        var horizontalAxes = rotated ? that._valueAxes : that._argumentAxes;\r\n        var horizontalElements = rotated ? that._valueAxes : extendedArgAxes;\r\n        var allAxes = verticalAxes.concat(horizontalAxes);\r\n        var allElements = allAxes.concat(scrollBar);\r\n        that._normalizePanesHeight();\r\n        that._updatePanesCanvases(drawOptions);\r\n        var panesCanvases = that.panes.reduce(function(canvases, pane) {\r\n            canvases[pane.name] = (0, _extend2.extend)({}, pane.canvas);\r\n            return canvases\r\n        }, {});\r\n        var paneSizes = that.panes.reduce(function(sizes, pane) {\r\n            sizes[pane.name] = {\r\n                height: pane.height,\r\n                unit: pane.unit\r\n            };\r\n            return sizes\r\n        }, {});\r\n        var cleanPanesCanvases = (0, _extend2.extend)(true, {}, panesCanvases);\r\n        that._initCustomPositioningAxes();\r\n        var needCustomAdjustAxes = that._axesBoundaryPositioning();\r\n        if (!drawOptions.adjustAxes && !needCustomAdjustAxes) {\r\n            drawAxesWithTicks(verticalAxes, !rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);\r\n            drawAxesWithTicks(horizontalAxes, rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);\r\n            performActionOnAxes(allAxes, \"prepareAnimation\");\r\n            that._renderScaleBreaks();\r\n            horizontalAxes.forEach(function(a) {\r\n                return a.resolveOverlappingForCustomPositioning(verticalAxes)\r\n            });\r\n            verticalAxes.forEach(function(a) {\r\n                return a.resolveOverlappingForCustomPositioning(horizontalAxes)\r\n            });\r\n            return false\r\n        }\r\n        if (needCustomAdjustAxes) {\r\n            allAxes.forEach(function(a) {\r\n                return a.customPositionIsAvailable() && a.shift({\r\n                    top: 0,\r\n                    left: 0,\r\n                    bottom: 0,\r\n                    right: 0\r\n                })\r\n            })\r\n        }\r\n        if (that._scrollBar) {\r\n            that._scrollBar.setPane(that.panes)\r\n        }\r\n        var vAxesMargins = {\r\n            panes: {}\r\n        };\r\n        var hAxesMargins = getHorizontalAxesMargins(horizontalElements, function(axis) {\r\n            return axis.estimateMargins(panesCanvases[axis.pane])\r\n        });\r\n        panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);\r\n        var drawAxesAndSetCanvases = function(isHorizontal) {\r\n            var axes = isHorizontal ? horizontalAxes : verticalAxes;\r\n            var condition = (isHorizontal ? rotated : !rotated) && synchronizeMultiAxes;\r\n            drawAxesWithTicks(axes, condition, panesCanvases, panesBorderOptions);\r\n            if (isHorizontal) {\r\n                hAxesMargins = getHorizontalAxesMargins(horizontalElements, getAxisMargins)\r\n            } else {\r\n                vAxesMargins = getVerticalAxesMargins(verticalElements)\r\n            }\r\n            panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins)\r\n        };\r\n        drawAxesAndSetCanvases(false);\r\n        drawAxesAndSetCanvases(true);\r\n        if (!that._changesApplying && that._estimateTickIntervals(verticalAxes, panesCanvases)) {\r\n            drawAxesAndSetCanvases(false)\r\n        }\r\n        var oldTitlesWidth = calculateTitlesWidth(verticalAxes);\r\n        var visibleSeries = that._getVisibleSeries();\r\n        var pointsToAnimation = that._getPointsToAnimation(visibleSeries);\r\n        performActionOnAxes(allElements, \"updateSize\", panesCanvases, axisAnimationEnabled(drawOptions, pointsToAnimation));\r\n        horizontalElements.forEach(shiftAxis(\"top\", \"bottom\"));\r\n        verticalElements.forEach(shiftAxis(\"left\", \"right\"));\r\n        that._renderScaleBreaks();\r\n        that.panes.forEach(function(pane) {\r\n            (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])\r\n        });\r\n        that._valueAxes.forEach(function(axis) {\r\n            axis.setInitRange()\r\n        });\r\n        verticalAxes.forEach(function(axis, i) {\r\n            if (axis.hasWrap && axis.hasWrap()) {\r\n                var title = axis.getTitle();\r\n                var newTitleWidth = title ? title.bBox.width : 0;\r\n                var offset = newTitleWidth - oldTitlesWidth[i];\r\n                if (\"right\" === axis.getOptions().position) {\r\n                    vAxesMargins.right += offset\r\n                } else {\r\n                    vAxesMargins.left += offset;\r\n                    that.panes.forEach(function(_ref2) {\r\n                        var name = _ref2.name;\r\n                        return vAxesMargins.panes[name].left += offset\r\n                    })\r\n                }\r\n                panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);\r\n                performActionOnAxes(allElements, \"updateSize\", panesCanvases, false, false);\r\n                oldTitlesWidth = calculateTitlesWidth(verticalAxes)\r\n            }\r\n        });\r\n        if (verticalAxes.some(function(v) {\r\n                return v.customPositionIsAvailable() && v.getCustomPosition() !== v._axisPosition\r\n            })) {\r\n            performActionOnAxes(verticalAxes, \"updateSize\", panesCanvases, false)\r\n        }\r\n        horizontalAxes.forEach(function(a) {\r\n            return a.resolveOverlappingForCustomPositioning(verticalAxes)\r\n        });\r\n        verticalAxes.forEach(function(a) {\r\n            return a.resolveOverlappingForCustomPositioning(horizontalAxes)\r\n        });\r\n        return cleanPanesCanvases\r\n    },\r\n    _getExtraTemplatesItems: function() {\r\n        var that = this;\r\n        var allAxes = (that._argumentAxes || []).concat(that._valueAxes || []);\r\n        var elements = that._collectTemplatesFromItems(allAxes);\r\n        return {\r\n            items: elements.items,\r\n            groups: elements.groups,\r\n            launchRequest: function() {\r\n                allAxes.forEach(function(a) {\r\n                    a.setRenderedState(true)\r\n                })\r\n            },\r\n            doneRequest: function() {\r\n                allAxes.forEach(function(a) {\r\n                    a.setRenderedState(false)\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _estimateTickIntervals: function(axes, canvases) {\r\n        return axes.some(function(axis) {\r\n            return axis.estimateTickInterval(canvases[axis.pane])\r\n        })\r\n    },\r\n    checkForMoreSpaceForPanesCanvas: function() {\r\n        var that = this;\r\n        var rotated = that._isRotated();\r\n        var panesAreCustomSized = that.panes.filter(function(p) {\r\n            return p.unit\r\n        }).length === that.panes.length;\r\n        var needSpace = false;\r\n        if (panesAreCustomSized) {\r\n            var needHorizontalSpace = 0;\r\n            var needVerticalSpace = 0;\r\n            if (rotated) {\r\n                var argAxisRightMargin = that.getArgumentAxis().getMargins().right;\r\n                var rightPanesIndent = Math.min.apply(Math, that.panes.map(function(p) {\r\n                    return p.canvas.right\r\n                }));\r\n                needHorizontalSpace = that._canvas.right + argAxisRightMargin - rightPanesIndent\r\n            } else {\r\n                var argAxisBottomMargin = that.getArgumentAxis().getMargins().bottom;\r\n                var bottomPanesIndent = Math.min.apply(Math, that.panes.map(function(p) {\r\n                    return p.canvas.bottom\r\n                }));\r\n                needVerticalSpace = that._canvas.bottom + argAxisBottomMargin - bottomPanesIndent\r\n            }\r\n            needSpace = needHorizontalSpace > 0 || needVerticalSpace > 0 ? {\r\n                width: needHorizontalSpace,\r\n                height: needVerticalSpace\r\n            } : false;\r\n            if (0 !== needVerticalSpace) {\r\n                var realSize = that.getSize();\r\n                var customSize = that.option(\"size\");\r\n                var container = that._$element[0];\r\n                var containerHasStyledHeight = !!container.style.height || (0, _utils2.checkElementHasPropertyFromStyleSheet)(container, \"height\");\r\n                if (!rotated && !(customSize && customSize.height) && !containerHasStyledHeight) {\r\n                    that._forceResize(realSize.width, realSize.height + needVerticalSpace);\r\n                    needSpace = false\r\n                }\r\n            }\r\n        } else {\r\n            needSpace = that.layoutManager.needMoreSpaceForPanesCanvas(that._getLayoutTargets(), rotated, function(pane) {\r\n                return {\r\n                    width: rotated && !!pane.unit,\r\n                    height: !rotated && !!pane.unit\r\n                }\r\n            })\r\n        }\r\n        return needSpace\r\n    },\r\n    _forceResize: function(width, height) {\r\n        this._renderer.resize(width, height);\r\n        this._updateSize();\r\n        this._setContentSize();\r\n        this._preserveOriginalCanvas();\r\n        this._updateCanvasClipRect(this._canvas)\r\n    },\r\n    _shrinkAxes: function(sizeShortage, panesCanvases) {\r\n        if (!sizeShortage || !panesCanvases) {\r\n            return\r\n        }\r\n        this._renderer.stopAllAnimations(true);\r\n        var that = this;\r\n        var rotated = that._isRotated();\r\n        var scrollBar = that._scrollBar ? [that._scrollBar] : [];\r\n        var extendedArgAxes = that._isArgumentAxisBeforeScrollBar() ? that._argumentAxes.concat(scrollBar) : scrollBar.concat(that._argumentAxes);\r\n        var verticalAxes = rotated ? extendedArgAxes : that._valueAxes;\r\n        var horizontalAxes = rotated ? that._valueAxes : extendedArgAxes;\r\n        var allAxes = verticalAxes.concat(horizontalAxes);\r\n        if (sizeShortage.width || sizeShortage.height) {\r\n            checkUsedSpace(sizeShortage, \"height\", horizontalAxes, getHorizontalAxesMargins);\r\n            checkUsedSpace(sizeShortage, \"width\", verticalAxes, getVerticalAxesMargins);\r\n            performActionOnAxes(allAxes, \"updateSize\", panesCanvases);\r\n            var paneSizes = that.panes.reduce(function(sizes, pane) {\r\n                sizes[pane.name] = {\r\n                    height: pane.height,\r\n                    unit: pane.unit\r\n                };\r\n                return sizes\r\n            }, {});\r\n            panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, getVerticalAxesMargins(verticalAxes), getHorizontalAxesMargins(horizontalAxes, getAxisMargins));\r\n            performActionOnAxes(allAxes, \"updateSize\", panesCanvases);\r\n            horizontalAxes.forEach(shiftAxis(\"top\", \"bottom\"));\r\n            verticalAxes.forEach(shiftAxis(\"left\", \"right\"));\r\n            that.panes.forEach(function(pane) {\r\n                return (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])\r\n            })\r\n        }\r\n    },\r\n    _isArgumentAxisBeforeScrollBar: function() {\r\n        var that = this;\r\n        var argumentAxis = that.getArgumentAxis();\r\n        if (that._scrollBar) {\r\n            var _argumentAxis$getOpti;\r\n            var argAxisPosition = argumentAxis.getResolvedBoundaryPosition();\r\n            var argAxisLabelPosition = null === (_argumentAxis$getOpti = argumentAxis.getOptions().label) || void 0 === _argumentAxis$getOpti ? void 0 : _argumentAxis$getOpti.position;\r\n            var scrollBarPosition = that._scrollBar.getOptions().position;\r\n            return argumentAxis.hasCustomPosition() || scrollBarPosition === argAxisPosition && argAxisLabelPosition !== scrollBarPosition\r\n        }\r\n        return false\r\n    },\r\n    _getPanesParameters: function() {\r\n        var that = this;\r\n        var panes = that.panes;\r\n        var i;\r\n        var params = [];\r\n        for (i = 0; i < panes.length; i++) {\r\n            if (that._getPaneBorderVisibility(i)) {\r\n                params.push({\r\n                    coords: panes[i].borderCoords,\r\n                    clipRect: that._panesClipRects.fixed[i]\r\n                })\r\n            }\r\n        }\r\n        return params\r\n    },\r\n    _createCrosshairCursor: function() {\r\n        var that = this;\r\n        var options = that._themeManager.getOptions(\"crosshair\") || {};\r\n        var argumentAxis = that.getArgumentAxis();\r\n        var axes = !that._isRotated() ? [\r\n            [argumentAxis], that._valueAxes\r\n        ] : [that._valueAxes, [argumentAxis]];\r\n        var parameters = {\r\n            canvas: that._getCommonCanvas(),\r\n            panes: that._getPanesParameters(),\r\n            axes: axes\r\n        };\r\n        if (!options || !options.enabled) {\r\n            return\r\n        }\r\n        if (!that._crosshair) {\r\n            that._crosshair = new _crosshair.Crosshair(that._renderer, options, parameters, that._crosshairCursorGroup)\r\n        } else {\r\n            that._crosshair.update(options, parameters)\r\n        }\r\n        that._crosshair.render()\r\n    },\r\n    _getCommonCanvas: function() {\r\n        var i;\r\n        var canvas;\r\n        var commonCanvas;\r\n        var panes = this.panes;\r\n        for (i = 0; i < panes.length; i++) {\r\n            canvas = panes[i].canvas;\r\n            if (!commonCanvas) {\r\n                commonCanvas = (0, _extend2.extend)({}, canvas)\r\n            } else {\r\n                commonCanvas.right = canvas.right;\r\n                commonCanvas.bottom = canvas.bottom\r\n            }\r\n        }\r\n        return commonCanvas\r\n    },\r\n    _createPanesBackground: function() {\r\n        var that = this;\r\n        var defaultBackgroundColor = that._themeManager.getOptions(\"commonPaneSettings\").backgroundColor;\r\n        var backgroundColor;\r\n        var renderer = that._renderer;\r\n        var rect;\r\n        var i;\r\n        var rects = [];\r\n        that._panesBackgroundGroup.clear();\r\n        for (i = 0; i < that.panes.length; i++) {\r\n            backgroundColor = that.panes[i].backgroundColor || defaultBackgroundColor;\r\n            if (!backgroundColor || \"none\" === backgroundColor) {\r\n                rects.push(null);\r\n                continue\r\n            }\r\n            rect = renderer.rect(0, 0, 0, 0).attr({\r\n                fill: backgroundColor,\r\n                \"stroke-width\": 0\r\n            }).append(that._panesBackgroundGroup);\r\n            rects.push(rect)\r\n        }\r\n        that.panesBackground = rects\r\n    },\r\n    _fillPanesBackground: function() {\r\n        var that = this;\r\n        var bc;\r\n        (0, _iterator.each)(that.panes, function(i, pane) {\r\n            bc = pane.borderCoords;\r\n            if (null !== that.panesBackground[i]) {\r\n                that.panesBackground[i].attr({\r\n                    x: bc.left,\r\n                    y: bc.top,\r\n                    width: bc.width,\r\n                    height: bc.height\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _calcPaneBorderCoords: function(pane) {\r\n        var canvas = pane.canvas;\r\n        var bc = pane.borderCoords = pane.borderCoords || {};\r\n        bc.left = canvas.left;\r\n        bc.top = canvas.top;\r\n        bc.right = canvas.width - canvas.right;\r\n        bc.bottom = canvas.height - canvas.bottom;\r\n        bc.width = Math.max(bc.right - bc.left, 0);\r\n        bc.height = Math.max(bc.bottom - bc.top, 0)\r\n    },\r\n    _drawPanesBorders: function(panesBorderOptions) {\r\n        var that = this;\r\n        var rotated = that._isRotated();\r\n        that._panesBorderGroup.linkRemove().clear();\r\n        (0, _iterator.each)(that.panes, function(i, pane) {\r\n            var borderOptions = panesBorderOptions[pane.name];\r\n            var attr = {\r\n                fill: \"none\",\r\n                stroke: borderOptions.color,\r\n                \"stroke-opacity\": borderOptions.opacity,\r\n                \"stroke-width\": borderOptions.width,\r\n                dashStyle: borderOptions.dashStyle,\r\n                \"stroke-linecap\": \"square\"\r\n            };\r\n            that._calcPaneBorderCoords(pane, rotated);\r\n            if (!borderOptions.visible) {\r\n                return\r\n            }\r\n            var bc = pane.borderCoords;\r\n            var segmentRectParams = (0, _utils.prepareSegmentRectPoints)(bc.left, bc.top, bc.width, bc.height, borderOptions);\r\n            that._renderer.path(segmentRectParams.points, segmentRectParams.pathType).attr(attr).append(that._panesBorderGroup)\r\n        });\r\n        that._panesBorderGroup.linkAppend()\r\n    },\r\n    _createClipRect: function(clipArray, index, left, top, width, height) {\r\n        var that = this;\r\n        var clipRect = clipArray[index];\r\n        if (!clipRect) {\r\n            clipRect = that._renderer.clipRect(left, top, width, height);\r\n            clipArray[index] = clipRect\r\n        } else {\r\n            clipRect.attr({\r\n                x: left,\r\n                y: top,\r\n                width: width,\r\n                height: height\r\n            })\r\n        }\r\n    },\r\n    _createClipRectsForPanes: function() {\r\n        var that = this;\r\n        var canvas = that._canvas;\r\n        (0, _iterator.each)(that.panes, function(i, pane) {\r\n            var needWideClipRect = false;\r\n            var bc = pane.borderCoords;\r\n            var left = bc.left;\r\n            var top = bc.top;\r\n            var width = bc.width;\r\n            var height = bc.height;\r\n            var panesClipRects = that._panesClipRects;\r\n            that._createClipRect(panesClipRects.fixed, i, left, top, width, height);\r\n            that._createClipRect(panesClipRects.base, i, left, top, width, height);\r\n            (0, _iterator.each)(that.series, function(_, series) {\r\n                if (series.pane === pane.name && (series.isFinancialSeries() || series.areErrorBarsVisible())) {\r\n                    needWideClipRect = true\r\n                }\r\n            });\r\n            if (needWideClipRect) {\r\n                if (that._isRotated()) {\r\n                    top = 0;\r\n                    height = canvas.height\r\n                } else {\r\n                    left = 0;\r\n                    width = canvas.width\r\n                }\r\n                that._createClipRect(panesClipRects.wide, i, left, top, width, height)\r\n            } else {\r\n                panesClipRects.wide[i] = null\r\n            }\r\n        })\r\n    },\r\n    _applyClipRectsForAxes: function() {\r\n        var that = this;\r\n        var axes = that._getAllAxes();\r\n        var customPositionAxes = axes.filter(function(a) {\r\n            return a.hasCustomPosition()\r\n        });\r\n        var chartCanvasClipRectID = that._getCanvasClipRectID();\r\n        for (var i = 0; i < axes.length; i++) {\r\n            var elementsClipRectID = that._getElementsClipRectID(axes[i].pane);\r\n            var canvasClipRectID = customPositionAxes.indexOf(axes[i]) >= 0 ? elementsClipRectID : chartCanvasClipRectID;\r\n            axes[i].applyClipRects(elementsClipRectID, canvasClipRectID)\r\n        }\r\n    },\r\n    _getPaneBorderVisibility: function(paneIndex) {\r\n        var commonPaneBorderVisible = this._themeManager.getOptions(\"commonPaneSettings\").border.visible;\r\n        var pane = this.panes[paneIndex] || {};\r\n        var paneBorder = pane.border || {};\r\n        return \"visible\" in paneBorder ? paneBorder.visible : commonPaneBorderVisible\r\n    },\r\n    _getCanvasForPane: function(paneName) {\r\n        var panes = this.panes;\r\n        var panesNumber = panes.length;\r\n        var i;\r\n        for (i = 0; i < panesNumber; i++) {\r\n            if (panes[i].name === paneName) {\r\n                return panes[i].canvas\r\n            }\r\n        }\r\n    },\r\n    _getTrackerSettings: function() {\r\n        var that = this;\r\n        var themeManager = that._themeManager;\r\n        return (0, _extend2.extend)(this.callBase(), {\r\n            chart: that,\r\n            rotated: that._isRotated(),\r\n            crosshair: that._getCrosshairOptions().enabled ? that._crosshair : null,\r\n            stickyHovering: themeManager.getOptions(\"stickyHovering\")\r\n        })\r\n    },\r\n    _resolveLabelOverlappingStack: function() {\r\n        var that = this;\r\n        var isRotated = that._isRotated();\r\n        var shiftDirection = isRotated ? function(box, length) {\r\n            return {\r\n                x: box.x - length,\r\n                y: box.y\r\n            }\r\n        } : function(box, length) {\r\n            return {\r\n                x: box.x,\r\n                y: box.y - length\r\n            }\r\n        };\r\n        (0, _iterator.each)(that._getStackPoints(), function(_, stacks) {\r\n            (0, _iterator.each)(stacks, function(_, points) {\r\n                _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points, that._getCommonCanvas(), isRotated, shiftDirection, function(a, b) {\r\n                    var coordPosition = isRotated ? 1 : 0;\r\n                    var figureCenter1 = a.labels[0].getFigureCenter()[coordPosition];\r\n                    var figureCenter12 = b.labels[0].getFigureCenter()[coordPosition];\r\n                    if (figureCenter1 - figureCenter12 === 0) {\r\n                        return (a.value() - b.value()) * (a.labels[0].getPoint().series.getValueAxis().getTranslator().isInverted() ? -1 : 1)\r\n                    }\r\n                    return 0\r\n                })\r\n            })\r\n        })\r\n    },\r\n    _getStackPoints: function() {\r\n        var stackPoints = {};\r\n        var visibleSeries = this._getVisibleSeries();\r\n        (0, _iterator.each)(visibleSeries, function(_, singleSeries) {\r\n            var points = singleSeries.getPoints();\r\n            var stackName = singleSeries.getStackName() || null;\r\n            (0, _iterator.each)(points, function(_, point) {\r\n                var argument = point.argument;\r\n                if (!stackPoints[argument]) {\r\n                    stackPoints[argument] = {}\r\n                }\r\n                if (!stackPoints[argument][stackName]) {\r\n                    stackPoints[argument][stackName] = []\r\n                }\r\n                stackPoints[argument][stackName].push(point)\r\n            })\r\n        });\r\n        return stackPoints\r\n    },\r\n    _getCrosshairOptions: function() {\r\n        return this._getOption(\"crosshair\")\r\n    },\r\n    zoomArgument: function(min, max) {\r\n        var that = this;\r\n        if (!that._initialized || !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {\r\n            return\r\n        }\r\n        that.getArgumentAxis().visualRange([min, max])\r\n    },\r\n    resetVisualRange: function() {\r\n        var that = this;\r\n        var axes = that._argumentAxes;\r\n        var nonVirtualArgumentAxis = that.getArgumentAxis();\r\n        axes.forEach(function(axis) {\r\n            axis.resetVisualRange(nonVirtualArgumentAxis !== axis);\r\n            that._applyCustomVisualRangeOption(axis)\r\n        });\r\n        that.callBase()\r\n    },\r\n    getVisibleArgumentBounds: function() {\r\n        var translator = this._argumentAxes[0].getTranslator();\r\n        var range = translator.getBusinessRange();\r\n        var isDiscrete = range.axisType === DISCRETE;\r\n        var categories = range.categories;\r\n        return {\r\n            minVisible: isDiscrete ? range.minVisible || categories[0] : range.minVisible,\r\n            maxVisible: isDiscrete ? range.maxVisible || categories[categories.length - 1] : range.maxVisible\r\n        }\r\n    },\r\n    _change_FULL_RENDER: function() {\r\n        this.callBase();\r\n        if (this._changes.has(VISUAL_RANGE)) {\r\n            this._raiseZoomEndHandlers()\r\n        }\r\n    },\r\n    _getAxesForScaling: function() {\r\n        return [this.getArgumentAxis()].concat(this._valueAxes)\r\n    },\r\n    _applyVisualRangeByVirtualAxes: function(axis, range) {\r\n        var that = this;\r\n        if (axis.isArgumentAxis) {\r\n            if (axis !== that.getArgumentAxis()) {\r\n                return true\r\n            }\r\n            that._argumentAxes.filter(function(a) {\r\n                return a !== axis\r\n            }).forEach(function(a) {\r\n                return a.visualRange(range, {\r\n                    start: true,\r\n                    end: true\r\n                })\r\n            })\r\n        }\r\n        return false\r\n    },\r\n    _raiseZoomEndHandlers: function() {\r\n        this._argumentAxes.forEach(function(axis) {\r\n            return axis.handleZoomEnd()\r\n        });\r\n        this.callBase()\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend2.extend)(this._optionsByReference, {\r\n            \"argumentAxis.visualRange\": true\r\n        })\r\n    },\r\n    option: function option() {\r\n        var option = this.callBase.apply(this, arguments);\r\n        var valueAxis = this._options.silent(\"valueAxis\");\r\n        if (\"array\" === (0, _type.type)(valueAxis)) {\r\n            for (var i = 0; i < valueAxis.length; i++) {\r\n                var optionPath = \"valueAxis[\".concat(i, \"].visualRange\");\r\n                this._optionsByReference[optionPath] = true\r\n            }\r\n        }\r\n        return option\r\n    },\r\n    _notifyVisualRange: function() {\r\n        var that = this;\r\n        var argAxis = that._argumentAxes[0];\r\n        var argumentVisualRange = (0, _utils2.convertVisualRangeObject)(argAxis.visualRange(), !_isArray(that.option(\"argumentAxis.visualRange\")));\r\n        if (!argAxis.skipEventRising || !(0, _utils2.rangesAreEqual)(argumentVisualRange, that.option(\"argumentAxis.visualRange\"))) {\r\n            that.option(\"argumentAxis.visualRange\", argumentVisualRange)\r\n        } else {\r\n            argAxis.skipEventRising = null\r\n        }\r\n        that.callBase()\r\n    }\r\n});\r\ndxChart.addPlugin(_shutter_zoom.default);\r\ndxChart.addPlugin(_zoom_and_pan.default);\r\ndxChart.addPlugin(_annotations.plugins.core);\r\ndxChart.addPlugin(_annotations.plugins.chart);\r\n(0, _component_registrator.default)(\"dxChart\", dxChart);\r\nvar _default = dxChart;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.data_source_adapter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.data_source_adapter\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar queryByOptions = _store_helper.default.queryByOptions;\r\nvar DEFAULT_KEY_EXPRESSION = \"id\";\r\nvar isFullBranchFilterMode = function(that) {\r\n    return \"fullBranch\" === that.option(\"filterMode\")\r\n};\r\nvar DataSourceAdapterTreeList = _uiGrid_core2.default.inherit(function() {\r\n    var getChildKeys = function(that, keys) {\r\n        var childKeys = [];\r\n        keys.forEach(function(key) {\r\n            var node = that.getNodeByKey(key);\r\n            node && node.children.forEach(function(child) {\r\n                childKeys.push(child.key)\r\n            })\r\n        });\r\n        return childKeys\r\n    };\r\n    return {\r\n        _createKeyGetter: function() {\r\n            var keyExpr = this.getKeyExpr();\r\n            return (0, _data.compileGetter)(keyExpr)\r\n        },\r\n        _createKeySetter: function() {\r\n            var keyExpr = this.getKeyExpr();\r\n            if ((0, _type.isFunction)(keyExpr)) {\r\n                return keyExpr\r\n            }\r\n            return (0, _data.compileSetter)(keyExpr)\r\n        },\r\n        _createParentIdGetter: function() {\r\n            return (0, _data.compileGetter)(this.option(\"parentIdExpr\"))\r\n        },\r\n        createParentIdSetter: function() {\r\n            var parentIdExpr = this.option(\"parentIdExpr\");\r\n            if ((0, _type.isFunction)(parentIdExpr)) {\r\n                return parentIdExpr\r\n            }\r\n            return (0, _data.compileSetter)(parentIdExpr)\r\n        },\r\n        _createItemsGetter: function() {\r\n            return (0, _data.compileGetter)(this.option(\"itemsExpr\"))\r\n        },\r\n        _createHasItemsGetter: function() {\r\n            var hasItemsExpr = this.option(\"hasItemsExpr\");\r\n            return hasItemsExpr && (0, _data.compileGetter)(hasItemsExpr)\r\n        },\r\n        _createHasItemsSetter: function() {\r\n            var hasItemsExpr = this.option(\"hasItemsExpr\");\r\n            if ((0, _type.isFunction)(hasItemsExpr)) {\r\n                return hasItemsExpr\r\n            }\r\n            return hasItemsExpr && (0, _data.compileSetter)(hasItemsExpr)\r\n        },\r\n        _updateIndexByKeyObject: function(items) {\r\n            var that = this;\r\n            that._indexByKey = {};\r\n            (0, _iterator.each)(items, function(index, item) {\r\n                that._indexByKey[item.key] = index\r\n            })\r\n        },\r\n        _calculateHasItems: function(node, options) {\r\n            var that = this;\r\n            var parentIds = options.storeLoadOptions.parentIds;\r\n            var hasItems;\r\n            var isFullBranch = isFullBranchFilterMode(that);\r\n            if (that._hasItemsGetter && (parentIds || !options.storeLoadOptions.filter || isFullBranch)) {\r\n                hasItems = that._hasItemsGetter(node.data)\r\n            }\r\n            if (void 0 === hasItems) {\r\n                if (!that._isChildrenLoaded[node.key] && options.remoteOperations.filtering && (parentIds || isFullBranch)) {\r\n                    hasItems = true\r\n                } else {\r\n                    if (options.loadOptions.filter && !options.remoteOperations.filtering && isFullBranch) {\r\n                        hasItems = node.children.length\r\n                    } else {\r\n                        hasItems = node.hasChildren\r\n                    }\r\n                }\r\n            }\r\n            return !!hasItems\r\n        },\r\n        _createVisibleItemsByNodes: function(nodes, options) {\r\n            var that = this;\r\n            var result = [];\r\n            for (var i = 0; i < nodes.length; i++) {\r\n                if (nodes[i].visible) {\r\n                    result.push(nodes[i])\r\n                }\r\n                if ((that.isRowExpanded(nodes[i].key, options) || !nodes[i].visible) && nodes[i].hasChildren && nodes[i].children.length) {\r\n                    result = result.concat(that._createVisibleItemsByNodes(nodes[i].children, options))\r\n                }\r\n            }\r\n            return result\r\n        },\r\n        _convertItemToNode: function(item, rootValue, nodeByKey) {\r\n            var key = this._keyGetter(item);\r\n            var parentId = this._parentIdGetter(item);\r\n            parentId = (0, _type.isDefined)(parentId) ? parentId : rootValue;\r\n            var parentNode = nodeByKey[parentId] = nodeByKey[parentId] || {\r\n                key: parentId,\r\n                children: []\r\n            };\r\n            var node = nodeByKey[key] = nodeByKey[key] || {\r\n                key: key,\r\n                children: []\r\n            };\r\n            node.data = item;\r\n            node.parent = parentNode;\r\n            return node\r\n        },\r\n        _createNodesByItems: function(items, visibleItems) {\r\n            var that = this;\r\n            var rootValue = that.option(\"rootValue\");\r\n            var visibleByKey = {};\r\n            var nodeByKey = that._nodeByKey = {};\r\n            var i;\r\n            if (visibleItems) {\r\n                for (i = 0; i < visibleItems.length; i++) {\r\n                    visibleByKey[this._keyGetter(visibleItems[i])] = true\r\n                }\r\n            }\r\n            for (i = 0; i < items.length; i++) {\r\n                var node = that._convertItemToNode(items[i], rootValue, nodeByKey);\r\n                if (void 0 === node.key) {\r\n                    return\r\n                }\r\n                node.visible = !visibleItems || !!visibleByKey[node.key];\r\n                if (node.parent) {\r\n                    node.parent.children.push(node)\r\n                }\r\n            }\r\n            var rootNode = nodeByKey[rootValue] || {\r\n                key: rootValue,\r\n                children: []\r\n            };\r\n            rootNode.level = -1;\r\n            return rootNode\r\n        },\r\n        _convertDataToPlainStructure: function(data, parentId, result) {\r\n            var key;\r\n            if (this._itemsGetter && !data.isConverted) {\r\n                result = result || [];\r\n                for (var i = 0; i < data.length; i++) {\r\n                    var item = (0, _array_utils.createObjectWithChanges)(data[i]);\r\n                    key = this._keyGetter(item);\r\n                    if (void 0 === key) {\r\n                        key = result.length + 1;\r\n                        this._keySetter(item, key)\r\n                    }\r\n                    this._parentIdSetter(item, void 0 === parentId ? this.option(\"rootValue\") : parentId);\r\n                    result.push(item);\r\n                    var childItems = this._itemsGetter(item);\r\n                    if (childItems && childItems.length) {\r\n                        this._convertDataToPlainStructure(childItems, key, result);\r\n                        var itemsExpr = this.option(\"itemsExpr\");\r\n                        if (!(0, _type.isFunction)(itemsExpr)) {\r\n                            delete item[itemsExpr]\r\n                        }\r\n                    }\r\n                }\r\n                result.isConverted = true;\r\n                return result\r\n            }\r\n            return data\r\n        },\r\n        _createIdFilter: function(field, keys) {\r\n            var parentIdFilters = [];\r\n            for (var i = 0; i < keys.length; i++) {\r\n                parentIdFilters.push([field, \"=\", keys[i]])\r\n            }\r\n            return _uiGrid_core.default.combineFilters(parentIdFilters, \"or\")\r\n        },\r\n        _customizeRemoteOperations: function(options, operationTypes) {\r\n            this.callBase.apply(this, arguments);\r\n            options.remoteOperations.paging = false;\r\n            var expandVisibleNodes = false;\r\n            if (this.option(\"autoExpandAll\")) {\r\n                options.remoteOperations.sorting = false;\r\n                options.remoteOperations.filtering = false;\r\n                if ((!this._lastLoadOptions || operationTypes.filtering && !options.storeLoadOptions.filter) && !options.isCustomLoading) {\r\n                    expandVisibleNodes = true\r\n                }\r\n            }\r\n            if (!options.isCustomLoading) {\r\n                this._isReload = this._isReload || operationTypes.reload;\r\n                if (!options.cachedStoreData) {\r\n                    this._isChildrenLoaded = {};\r\n                    if (this._isReload) {\r\n                        this._nodeByKey = {}\r\n                    }\r\n                }\r\n                if (this.option(\"expandNodesOnFiltering\") && (operationTypes.filtering || this._isReload && options.storeLoadOptions.filter)) {\r\n                    if (options.storeLoadOptions.filter) {\r\n                        expandVisibleNodes = true\r\n                    } else {\r\n                        options.collapseVisibleNodes = true\r\n                    }\r\n                }\r\n            }\r\n            options.expandVisibleNodes = expandVisibleNodes\r\n        },\r\n        _getParentIdsToLoad: function(parentIds) {\r\n            var parentIdsToLoad = [];\r\n            for (var i = 0; i < parentIds.length; i++) {\r\n                var node = this.getNodeByKey(parentIds[i]);\r\n                if (!node || node.hasChildren && !node.children.length) {\r\n                    parentIdsToLoad.push(parentIds[i])\r\n                }\r\n            }\r\n            return parentIdsToLoad\r\n        },\r\n        _handleDataLoading: function(options) {\r\n            var rootValue = this.option(\"rootValue\");\r\n            var parentIdExpr = this.option(\"parentIdExpr\");\r\n            var parentIds = options.storeLoadOptions.parentIds;\r\n            if (parentIds) {\r\n                options.isCustomLoading = false\r\n            }\r\n            this.callBase.apply(this, arguments);\r\n            if (options.remoteOperations.filtering && !options.isCustomLoading) {\r\n                if (isFullBranchFilterMode(this) && options.cachedStoreData || !options.storeLoadOptions.filter) {\r\n                    var expandedRowKeys = options.collapseVisibleNodes ? [] : this.option(\"expandedRowKeys\");\r\n                    parentIds = [rootValue].concat(expandedRowKeys).concat(parentIds || []);\r\n                    var parentIdsToLoad = options.data ? this._getParentIdsToLoad(parentIds) : parentIds;\r\n                    if (parentIdsToLoad.length) {\r\n                        options.cachedPagingData = void 0;\r\n                        options.data = void 0;\r\n                        options.mergeStoreLoadData = true\r\n                    }\r\n                    options.storeLoadOptions.parentIds = parentIdsToLoad;\r\n                    options.storeLoadOptions.filter = this._createIdFilter(parentIdExpr, parentIdsToLoad)\r\n                }\r\n            }\r\n        },\r\n        _generateInfoToLoad: function(data, needChildren) {\r\n            var that = this;\r\n            var key;\r\n            var keyMap = {};\r\n            var resultKeyMap = {};\r\n            var resultKeys = [];\r\n            var rootValue = that.option(\"rootValue\");\r\n            var i;\r\n            for (i = 0; i < data.length; i++) {\r\n                key = needChildren ? that._parentIdGetter(data[i]) : that._keyGetter(data[i]);\r\n                keyMap[key] = true\r\n            }\r\n            for (i = 0; i < data.length; i++) {\r\n                key = needChildren ? that._keyGetter(data[i]) : that._parentIdGetter(data[i]);\r\n                var needToLoad = needChildren ? that.isRowExpanded(key) : key !== rootValue;\r\n                if (!keyMap[key] && !resultKeyMap[key] && needToLoad) {\r\n                    resultKeyMap[key] = true;\r\n                    resultKeys.push(key)\r\n                }\r\n            }\r\n            return {\r\n                keyMap: resultKeyMap,\r\n                keys: resultKeys\r\n            }\r\n        },\r\n        _loadParentsOrChildren: function(data, options, needChildren) {\r\n            var _this = this;\r\n            var that = this;\r\n            var filter;\r\n            var needLocalFiltering;\r\n            var _that$_generateInfoTo = that._generateInfoToLoad(data, needChildren),\r\n                keys = _that$_generateInfoTo.keys,\r\n                keyMap = _that$_generateInfoTo.keyMap;\r\n            var d = new _deferred.Deferred;\r\n            var isRemoteFiltering = options.remoteOperations.filtering;\r\n            var maxFilterLengthInRequest = that.option(\"maxFilterLengthInRequest\");\r\n            var loadOptions = isRemoteFiltering ? options.storeLoadOptions : options.loadOptions;\r\n\r\n            function concatLoadedData(loadedData) {\r\n                if (isRemoteFiltering) {\r\n                    that._cachedStoreData = that._cachedStoreData.concat(loadedData)\r\n                }\r\n                return data.concat(loadedData)\r\n            }\r\n            if (!keys.length) {\r\n                return d.resolve(data)\r\n            }\r\n            var cachedNodes = keys.map(function(id) {\r\n                return _this.getNodeByKey(id)\r\n            }).filter(function(node) {\r\n                return node && node.data\r\n            });\r\n            if (cachedNodes.length === keys.length) {\r\n                if (needChildren) {\r\n                    cachedNodes = cachedNodes.reduce(function(result, node) {\r\n                        return result.concat(node.children)\r\n                    }, [])\r\n                }\r\n                if (cachedNodes.length) {\r\n                    return that._loadParentsOrChildren(concatLoadedData(cachedNodes.map(function(node) {\r\n                        return node.data\r\n                    })), options, needChildren)\r\n                }\r\n            }\r\n            var keyExpr = needChildren ? that.option(\"parentIdExpr\") : that.getKeyExpr();\r\n            filter = that._createIdFilter(keyExpr, keys);\r\n            var filterLength = encodeURI(JSON.stringify(filter)).length;\r\n            if (filterLength > maxFilterLengthInRequest) {\r\n                filter = function(itemData) {\r\n                    return keyMap[that._keyGetter(itemData)]\r\n                };\r\n                needLocalFiltering = isRemoteFiltering\r\n            }\r\n            loadOptions = (0, _extend.extend)({}, loadOptions, {\r\n                filter: !needLocalFiltering ? filter : null\r\n            });\r\n            var store = options.fullData ? new _array_store.default(options.fullData) : that._dataSource.store();\r\n            that.loadFromStore(loadOptions, store).done(function(loadedData) {\r\n                if (loadedData.length) {\r\n                    if (needLocalFiltering) {\r\n                        loadedData = (0, _query.default)(loadedData).filter(filter).toArray()\r\n                    }\r\n                    that._loadParentsOrChildren(concatLoadedData(loadedData), options, needChildren).done(d.resolve).fail(d.reject)\r\n                } else {\r\n                    d.resolve(data)\r\n                }\r\n            }).fail(d.reject);\r\n            return d\r\n        },\r\n        _loadParents: function(data, options) {\r\n            return this._loadParentsOrChildren(data, options)\r\n        },\r\n        _loadChildrenIfNeed: function(data, options) {\r\n            if (isFullBranchFilterMode(this)) {\r\n                return this._loadParentsOrChildren(data, options, true)\r\n            }\r\n            return (0, _deferred.when)(data)\r\n        },\r\n        _updateHasItemsMap: function(options) {\r\n            var parentIds = options.storeLoadOptions.parentIds;\r\n            if (parentIds) {\r\n                for (var i = 0; i < parentIds.length; i++) {\r\n                    this._isChildrenLoaded[parentIds[i]] = true\r\n                }\r\n            }\r\n        },\r\n        _getKeyInfo: function() {\r\n            return {\r\n                key: function() {\r\n                    return \"key\"\r\n                },\r\n                keyOf: function(data) {\r\n                    return data.key\r\n                }\r\n            }\r\n        },\r\n        _applyBatch: function(changes) {\r\n            var _this2 = this;\r\n            var baseChanges = [];\r\n            changes.forEach(function(change) {\r\n                if (\"insert\" === change.type) {\r\n                    baseChanges = baseChanges.concat(_this2._applyInsert(change))\r\n                } else {\r\n                    if (\"remove\" === change.type) {\r\n                        baseChanges = baseChanges.concat(_this2._applyRemove(change))\r\n                    } else {\r\n                        if (\"update\" === change.type) {\r\n                            baseChanges.push({\r\n                                type: change.type,\r\n                                key: change.key,\r\n                                data: {\r\n                                    data: change.data\r\n                                }\r\n                            })\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n            this.callBase(baseChanges)\r\n        },\r\n        _setHasItems: function(node, value) {\r\n            var hasItemsSetter = this._hasItemsSetter;\r\n            node.hasChildren = value;\r\n            if (hasItemsSetter && node.data) {\r\n                hasItemsSetter(node.data, value)\r\n            }\r\n        },\r\n        _applyInsert: function(change) {\r\n            var that = this;\r\n            var baseChanges = [];\r\n            var parentId = that.parentKeyOf(change.data);\r\n            var parentNode = that.getNodeByKey(parentId);\r\n            if (parentNode) {\r\n                var rootValue = that.option(\"rootValue\");\r\n                var node = that._convertItemToNode(change.data, rootValue, that._nodeByKey);\r\n                node.hasChildren = false;\r\n                node.level = parentNode.level + 1;\r\n                node.visible = true;\r\n                parentNode.children.push(node);\r\n                that._isChildrenLoaded[node.key] = true;\r\n                that._setHasItems(parentNode, true);\r\n                if ((!parentNode.parent || that.isRowExpanded(parentNode.key)) && void 0 !== change.index) {\r\n                    var index = that.items().indexOf(parentNode) + 1;\r\n                    index += change.index >= 0 ? Math.min(change.index, parentNode.children.length) : parentNode.children.length;\r\n                    baseChanges.push({\r\n                        type: change.type,\r\n                        data: node,\r\n                        index: index\r\n                    })\r\n                }\r\n            }\r\n            return baseChanges\r\n        },\r\n        _applyRemove: function(change) {\r\n            var baseChanges = [];\r\n            var node = this.getNodeByKey(change.key);\r\n            var parentNode = node && node.parent;\r\n            if (parentNode) {\r\n                var index = parentNode.children.indexOf(node);\r\n                if (index >= 0) {\r\n                    parentNode.children.splice(index, 1);\r\n                    if (!parentNode.children.length) {\r\n                        this._setHasItems(parentNode, false)\r\n                    }\r\n                    baseChanges.push(change);\r\n                    baseChanges = baseChanges.concat(this.getChildNodeKeys(change.key).map(function(key) {\r\n                        return {\r\n                            type: change.type,\r\n                            key: key\r\n                        }\r\n                    }))\r\n                }\r\n            }\r\n            return baseChanges\r\n        },\r\n        _handleDataLoaded: function(options) {\r\n            var data = options.data = this._convertDataToPlainStructure(options.data);\r\n            if (!options.remoteOperations.filtering && options.loadOptions.filter) {\r\n                options.fullData = queryByOptions((0, _query.default)(options.data), {\r\n                    sort: options.loadOptions && options.loadOptions.sort\r\n                }).toArray()\r\n            }\r\n            this._updateHasItemsMap(options);\r\n            this.callBase(options);\r\n            if (data.isConverted && this._cachedStoreData) {\r\n                this._cachedStoreData.isConverted = true\r\n            }\r\n        },\r\n        _fillNodes: function(nodes, options, expandedRowKeys, level) {\r\n            var isFullBranch = isFullBranchFilterMode(this);\r\n            level = level || 0;\r\n            for (var i = 0; i < nodes.length; i++) {\r\n                var node = nodes[i];\r\n                var needToExpand = false;\r\n                this._fillNodes(nodes[i].children, options, expandedRowKeys, level + 1);\r\n                node.level = level;\r\n                node.hasChildren = this._calculateHasItems(node, options);\r\n                if (node.visible && node.hasChildren) {\r\n                    if (isFullBranch) {\r\n                        if (node.children.filter(function(node) {\r\n                                return node.visible\r\n                            }).length) {\r\n                            needToExpand = true\r\n                        } else {\r\n                            if (node.children.length) {\r\n                                _uiTree_list.default.foreachNodes(node.children, function(node) {\r\n                                    node.visible = true\r\n                                })\r\n                            }\r\n                        }\r\n                    } else {\r\n                        needToExpand = true\r\n                    }\r\n                    if (options.expandVisibleNodes && needToExpand) {\r\n                        expandedRowKeys.push(node.key)\r\n                    }\r\n                }\r\n                if (node.visible || node.hasChildren) {\r\n                    node.parent.hasChildren = true\r\n                }\r\n            }\r\n        },\r\n        _processTreeStructure: function(options, visibleItems) {\r\n            var data = options.data;\r\n            var parentIds = options.storeLoadOptions.parentIds;\r\n            var expandedRowKeys = [];\r\n            if (parentIds && parentIds.length || this._isReload) {\r\n                if (options.fullData && options.fullData.length > options.data.length) {\r\n                    data = options.fullData;\r\n                    visibleItems = visibleItems || options.data\r\n                }\r\n                this._rootNode = this._createNodesByItems(data, visibleItems);\r\n                if (!this._rootNode) {\r\n                    options.data = (new _deferred.Deferred).reject(_ui.default.Error(\"E1046\", this.getKeyExpr()));\r\n                    return\r\n                }\r\n                this._fillNodes(this._rootNode.children, options, expandedRowKeys);\r\n                this._isNodesInitializing = true;\r\n                if (options.collapseVisibleNodes || expandedRowKeys.length) {\r\n                    this.option(\"expandedRowKeys\", expandedRowKeys)\r\n                }\r\n                this._isReload = false;\r\n                this.executeAction(\"onNodesInitialized\", {\r\n                    root: this._rootNode\r\n                });\r\n                this._isNodesInitializing = false\r\n            }\r\n            data = this._createVisibleItemsByNodes(this._rootNode.children, options);\r\n            options.data = data;\r\n            this._totalItemsCount = data.length\r\n        },\r\n        _handleDataLoadedCore: function(options) {\r\n            var that = this;\r\n            var data = options.data;\r\n            var callBase = that.callBase;\r\n            var filter = options.storeLoadOptions.filter || options.loadOptions.filter;\r\n            var filterMode = that.option(\"filterMode\");\r\n            var visibleItems;\r\n            var parentIds = options.storeLoadOptions.parentIds;\r\n            var needLoadParents = filter && (!parentIds || !parentIds.length) && \"standard\" !== filterMode;\r\n            if (!options.isCustomLoading) {\r\n                if (needLoadParents) {\r\n                    var d = options.data = new _deferred.Deferred;\r\n                    if (\"matchOnly\" === filterMode) {\r\n                        visibleItems = data\r\n                    }\r\n                    return that._loadParents(data, options).done(function(data) {\r\n                        that._loadChildrenIfNeed(data, options).done(function(data) {\r\n                            options.data = data;\r\n                            that._processTreeStructure(options, visibleItems);\r\n                            callBase.call(that, options);\r\n                            d.resolve(options.data)\r\n                        })\r\n                    }).fail(d.reject)\r\n                } else {\r\n                    that._processTreeStructure(options)\r\n                }\r\n            }\r\n            that.callBase(options)\r\n        },\r\n        _handlePush: function(changes) {\r\n            var reshapeOnPush = this._dataSource._reshapeOnPush;\r\n            var isNeedReshape = reshapeOnPush && !!changes.length;\r\n            if (isNeedReshape) {\r\n                this._isReload = true\r\n            }\r\n            this.callBase.apply(this, arguments)\r\n        },\r\n        init: function(dataSource, remoteOperations) {\r\n            this.callBase.apply(this, arguments);\r\n            var dataStructure = this.option(\"dataStructure\");\r\n            this._keyGetter = this._createKeyGetter();\r\n            this._parentIdGetter = this._createParentIdGetter();\r\n            this._hasItemsGetter = this._createHasItemsGetter();\r\n            this._hasItemsSetter = this._createHasItemsSetter();\r\n            if (\"tree\" === dataStructure) {\r\n                this._itemsGetter = this._createItemsGetter();\r\n                this._keySetter = this._createKeySetter();\r\n                this._parentIdSetter = this.createParentIdSetter()\r\n            }\r\n            this._nodeByKey = {};\r\n            this._isChildrenLoaded = {};\r\n            this._totalItemsCount = 0;\r\n            this.createAction(\"onNodesInitialized\")\r\n        },\r\n        getKeyExpr: function() {\r\n            var store = this.store();\r\n            var key = store && store.key();\r\n            var keyExpr = this.option(\"keyExpr\");\r\n            if ((0, _type.isDefined)(key) && (0, _type.isDefined)(keyExpr)) {\r\n                if (!(0, _common.equalByValue)(key, keyExpr)) {\r\n                    throw _ui.default.Error(\"E1044\")\r\n                }\r\n            }\r\n            return key || keyExpr || DEFAULT_KEY_EXPRESSION\r\n        },\r\n        keyOf: function(data) {\r\n            return this._keyGetter && this._keyGetter(data)\r\n        },\r\n        parentKeyOf: function(data) {\r\n            return this._parentIdGetter && this._parentIdGetter(data)\r\n        },\r\n        getRootNode: function() {\r\n            return this._rootNode\r\n        },\r\n        totalItemsCount: function() {\r\n            return this._totalItemsCount\r\n        },\r\n        isRowExpanded: function(key, cache) {\r\n            if (cache) {\r\n                var isExpandedByKey = cache.isExpandedByKey;\r\n                if (!isExpandedByKey) {\r\n                    isExpandedByKey = cache.isExpandedByKey = {};\r\n                    this.option(\"expandedRowKeys\").forEach(function(key) {\r\n                        isExpandedByKey[key] = true\r\n                    })\r\n                }\r\n                return !!isExpandedByKey[key]\r\n            }\r\n            var indexExpandedNodeKey = _uiGrid_core.default.getIndexByKey(key, this.option(\"expandedRowKeys\"), null);\r\n            return indexExpandedNodeKey >= 0\r\n        },\r\n        _changeRowExpandCore: function(key) {\r\n            var expandedRowKeys = this.option(\"expandedRowKeys\").slice();\r\n            var indexExpandedNodeKey = _uiGrid_core.default.getIndexByKey(key, expandedRowKeys, null);\r\n            if (indexExpandedNodeKey < 0) {\r\n                expandedRowKeys.push(key)\r\n            } else {\r\n                expandedRowKeys.splice(indexExpandedNodeKey, 1)\r\n            }\r\n            this.option(\"expandedRowKeys\", expandedRowKeys)\r\n        },\r\n        changeRowExpand: function(key) {\r\n            this._changeRowExpandCore(key);\r\n            return this._isNodesInitializing ? (new _deferred.Deferred).resolve() : this.load()\r\n        },\r\n        getNodeByKey: function(key) {\r\n            if (this._nodeByKey) {\r\n                return this._nodeByKey[key]\r\n            }\r\n        },\r\n        getNodeLeafKeys: function() {\r\n            var that = this;\r\n            var result = [];\r\n            var keys = that._rootNode ? [that._rootNode.key] : [];\r\n            keys.forEach(function(key) {\r\n                var node = that.getNodeByKey(key);\r\n                node && _uiTree_list.default.foreachNodes([node], function(childNode) {\r\n                    !childNode.children.length && result.push(childNode.key)\r\n                })\r\n            });\r\n            return result\r\n        },\r\n        getChildNodeKeys: function(parentKey) {\r\n            var node = this.getNodeByKey(parentKey);\r\n            var childrenKeys = [];\r\n            node && _uiTree_list.default.foreachNodes(node.children, function(childNode) {\r\n                childrenKeys.push(childNode.key)\r\n            });\r\n            return childrenKeys\r\n        },\r\n        loadDescendants: function(keys, childrenOnly) {\r\n            var that = this;\r\n            var d = new _deferred.Deferred;\r\n            var remoteOperations = that.remoteOperations();\r\n            if ((0, _type.isDefined)(keys)) {\r\n                keys = Array.isArray(keys) ? keys : [keys]\r\n            } else {\r\n                keys = that.getNodeLeafKeys()\r\n            }\r\n            if (!remoteOperations.filtering || !keys.length) {\r\n                return d.resolve()\r\n            }\r\n            var loadOptions = that._dataSource._createStoreLoadOptions();\r\n            loadOptions.parentIds = keys;\r\n            that.load(loadOptions).done(function() {\r\n                if (!childrenOnly) {\r\n                    var childKeys = getChildKeys(that, keys);\r\n                    if (childKeys.length) {\r\n                        that.loadDescendants(childKeys, childrenOnly).done(d.resolve).fail(d.reject);\r\n                        return\r\n                    }\r\n                }\r\n                d.resolve()\r\n            }).fail(d.reject);\r\n            return d.promise()\r\n        },\r\n        forEachNode: function() {\r\n            var nodes = [];\r\n            var callback;\r\n            if (1 === arguments.length) {\r\n                callback = arguments[0];\r\n                var rootNode = this.getRootNode();\r\n                nodes = rootNode && rootNode.children || []\r\n            } else {\r\n                if (2 === arguments.length) {\r\n                    callback = arguments[1];\r\n                    nodes = arguments[0];\r\n                    nodes = Array.isArray(nodes) ? nodes : [nodes]\r\n                }\r\n            }\r\n            _uiTree_list.default.foreachNodes(nodes, callback)\r\n        }\r\n    }\r\n}());\r\nvar _default = {\r\n    extend: function(extender) {\r\n        DataSourceAdapterTreeList = DataSourceAdapterTreeList.inherit(extender)\r\n    },\r\n    create: function(component) {\r\n        return new DataSourceAdapterTreeList(component)\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/shared/filtering.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar DEFAULT_DATE_INTERVAL = [\"year\", \"month\", \"day\"];\r\nvar DEFAULT_DATETIME_INTERVAL = [\"year\", \"month\", \"day\", \"hour\", \"minute\"];\r\nvar isDateType = function(dataType) {\r\n    return \"date\" === dataType || \"datetime\" === dataType\r\n};\r\nvar getGroupInterval = function(column) {\r\n    var index;\r\n    var result = [];\r\n    var dateIntervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\r\n    var groupInterval = column.headerFilter && column.headerFilter.groupInterval;\r\n    var interval = \"quarter\" === groupInterval ? \"month\" : groupInterval;\r\n    if (isDateType(column.dataType) && null !== groupInterval) {\r\n        result = \"datetime\" === column.dataType ? DEFAULT_DATETIME_INTERVAL : DEFAULT_DATE_INTERVAL;\r\n        index = (0, _array.inArray)(interval, dateIntervals);\r\n        if (index >= 0) {\r\n            result = dateIntervals.slice(0, index);\r\n            result.push(groupInterval);\r\n            return result\r\n        }\r\n        return result\r\n    } else {\r\n        if ((0, _type.isDefined)(groupInterval)) {\r\n            return Array.isArray(groupInterval) ? groupInterval : [groupInterval]\r\n        }\r\n    }\r\n};\r\nvar _default = function() {\r\n    var getFilterSelector = function(column, target) {\r\n        var selector = column.dataField || column.selector;\r\n        if (\"search\" === target) {\r\n            selector = column.displayField || column.calculateDisplayValue || selector\r\n        }\r\n        return selector\r\n    };\r\n    var isZeroTime = function(date) {\r\n        return date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1\r\n    };\r\n    var getDateValues = function(dateValue) {\r\n        if ((0, _type.isDate)(dateValue)) {\r\n            return [dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate(), dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()]\r\n        }\r\n        return (0, _iterator.map)((\"\" + dateValue).split(\"/\"), function(value, index) {\r\n            return 1 === index ? Number(value) - 1 : Number(value)\r\n        })\r\n    };\r\n    var getFilterExpressionByRange = function(filterValue, target) {\r\n        var column = this;\r\n        var endFilterValue;\r\n        var startFilterExpression;\r\n        var endFilterExpression;\r\n        var selector = getFilterSelector(column, target);\r\n        if (Array.isArray(filterValue) && (0, _type.isDefined)(filterValue[0]) && (0, _type.isDefined)(filterValue[1])) {\r\n            startFilterExpression = [selector, \">=\", filterValue[0]];\r\n            endFilterExpression = [selector, \"<=\", filterValue[1]];\r\n            if (isDateType(column.dataType) && isZeroTime(filterValue[1])) {\r\n                endFilterValue = new Date(filterValue[1].getTime());\r\n                if (\"date\" === column.dataType) {\r\n                    endFilterValue.setDate(filterValue[1].getDate() + 1)\r\n                }\r\n                endFilterExpression = [selector, \"<\", endFilterValue]\r\n            }\r\n            return [startFilterExpression, \"and\", endFilterExpression]\r\n        }\r\n    };\r\n    var getFilterExpressionForDate = function(filterValue, selectedFilterOperation, target) {\r\n        var column = this;\r\n        var dateStart;\r\n        var dateEnd;\r\n        var dateInterval;\r\n        var values = getDateValues(filterValue);\r\n        var selector = getFilterSelector(column, target);\r\n        if (\"headerFilter\" === target) {\r\n            dateInterval = getGroupInterval(column)[values.length - 1]\r\n        } else {\r\n            if (\"datetime\" === column.dataType) {\r\n                dateInterval = \"minute\"\r\n            }\r\n        }\r\n        switch (dateInterval) {\r\n            case \"year\":\r\n                dateStart = new Date(values[0], 0, 1);\r\n                dateEnd = new Date(values[0] + 1, 0, 1);\r\n                break;\r\n            case \"month\":\r\n                dateStart = new Date(values[0], values[1], 1);\r\n                dateEnd = new Date(values[0], values[1] + 1, 1);\r\n                break;\r\n            case \"quarter\":\r\n                dateStart = new Date(values[0], 3 * values[1], 1);\r\n                dateEnd = new Date(values[0], 3 * values[1] + 3, 1);\r\n                break;\r\n            case \"hour\":\r\n                dateStart = new Date(values[0], values[1], values[2], values[3]);\r\n                dateEnd = new Date(values[0], values[1], values[2], values[3] + 1);\r\n                break;\r\n            case \"minute\":\r\n                dateStart = new Date(values[0], values[1], values[2], values[3], values[4]);\r\n                dateEnd = new Date(values[0], values[1], values[2], values[3], values[4] + 1);\r\n                break;\r\n            case \"second\":\r\n                dateStart = new Date(values[0], values[1], values[2], values[3], values[4], values[5]);\r\n                dateEnd = new Date(values[0], values[1], values[2], values[3], values[4], values[5] + 1);\r\n                break;\r\n            default:\r\n                dateStart = new Date(values[0], values[1], values[2]);\r\n                dateEnd = new Date(values[0], values[1], values[2] + 1)\r\n        }\r\n        switch (selectedFilterOperation) {\r\n            case \"<\":\r\n                return [selector, \"<\", dateStart];\r\n            case \"<=\":\r\n                return [selector, \"<\", dateEnd];\r\n            case \">\":\r\n                return [selector, \">=\", dateEnd];\r\n            case \">=\":\r\n                return [selector, \">=\", dateStart];\r\n            case \"<>\":\r\n                return [\r\n                    [selector, \"<\", dateStart], \"or\", [selector, \">=\", dateEnd]\r\n                ];\r\n            default:\r\n                return [\r\n                    [selector, \">=\", dateStart], \"and\", [selector, \"<\", dateEnd]\r\n                ]\r\n        }\r\n    };\r\n    var getFilterExpressionForNumber = function(filterValue, selectedFilterOperation, target) {\r\n        var column = this;\r\n        var selector = getFilterSelector(column, target);\r\n        var groupInterval = getGroupInterval(column);\r\n        if (\"headerFilter\" === target && groupInterval && (0, _type.isDefined)(filterValue)) {\r\n            var values = (\"\" + filterValue).split(\"/\");\r\n            var value = Number(values[values.length - 1]);\r\n            var interval = groupInterval[values.length - 1];\r\n            var startFilterValue = [selector, \">=\", value];\r\n            var endFilterValue = [selector, \"<\", value + interval];\r\n            var condition = [startFilterValue, \"and\", endFilterValue];\r\n            return condition\r\n        }\r\n        return [selector, selectedFilterOperation || \"=\", filterValue]\r\n    };\r\n    return {\r\n        defaultCalculateFilterExpression: function(filterValue, selectedFilterOperation, target) {\r\n            var column = this;\r\n            var selector = getFilterSelector(column, target);\r\n            var isSearchByDisplayValue = column.calculateDisplayValue && \"search\" === target;\r\n            var dataType = isSearchByDisplayValue && column.lookup && column.lookup.dataType || column.dataType;\r\n            var filter = null;\r\n            if ((\"headerFilter\" === target || \"filterBuilder\" === target) && null === filterValue) {\r\n                filter = [selector, selectedFilterOperation || \"=\", null];\r\n                if (\"string\" === dataType) {\r\n                    filter = [filter, \"=\" === selectedFilterOperation ? \"or\" : \"and\", [selector, selectedFilterOperation || \"=\", \"\"]]\r\n                }\r\n            } else {\r\n                if (\"string\" === dataType && (!column.lookup || isSearchByDisplayValue)) {\r\n                    filter = [selector, selectedFilterOperation || \"contains\", filterValue]\r\n                } else {\r\n                    if (\"between\" === selectedFilterOperation) {\r\n                        return getFilterExpressionByRange.apply(column, [filterValue, target])\r\n                    } else {\r\n                        if (isDateType(dataType) && (0, _type.isDefined)(filterValue)) {\r\n                            return getFilterExpressionForDate.apply(column, arguments)\r\n                        } else {\r\n                            if (\"number\" === dataType) {\r\n                                return getFilterExpressionForNumber.apply(column, arguments)\r\n                            } else {\r\n                                if (\"object\" !== dataType) {\r\n                                    filter = [selector, selectedFilterOperation || \"=\", filterValue]\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return filter\r\n        },\r\n        getGroupInterval: getGroupInterval\r\n    }\r\n}();\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/datetime_translator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction parse(value) {\r\n    return null !== value ? new Date(value) : value\r\n}\r\nvar _default = {\r\n    _fromValue: parse,\r\n    _toValue: parse,\r\n    _add: _date.default.addDateInterval,\r\n    convert: _date.default.dateToMilliseconds\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/range_symbol_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _label = require(\"./label\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar DEFAULT_IMAGE_WIDTH = 20;\r\nvar DEFAULT_IMAGE_HEIGHT = 20;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n    deleteLabel: function() {\r\n        var that = this;\r\n        that._topLabel.dispose();\r\n        that._topLabel = null;\r\n        that._bottomLabel.dispose();\r\n        that._bottomLabel = null\r\n    },\r\n    hideMarker: function(type) {\r\n        var graphic = this.graphic;\r\n        var marker = graphic && graphic[type + \"Marker\"];\r\n        var label = this[\"_\" + type + \"Label\"];\r\n        if (marker && \"hidden\" !== marker.attr(\"visibility\")) {\r\n            marker.attr({\r\n                visibility: \"hidden\"\r\n            })\r\n        }\r\n        label.draw(false)\r\n    },\r\n    setInvisibility: function() {\r\n        this.hideMarker(\"top\");\r\n        this.hideMarker(\"bottom\")\r\n    },\r\n    clearVisibility: function() {\r\n        var that = this;\r\n        var graphic = that.graphic;\r\n        var topMarker = graphic && graphic.topMarker;\r\n        var bottomMarker = graphic && graphic.bottomMarker;\r\n        if (topMarker && topMarker.attr(\"visibility\")) {\r\n            topMarker.attr({\r\n                visibility: null\r\n            })\r\n        }\r\n        if (bottomMarker && bottomMarker.attr(\"visibility\")) {\r\n            bottomMarker.attr({\r\n                visibility: null\r\n            })\r\n        }\r\n    },\r\n    clearMarker: function() {\r\n        var that = this;\r\n        var graphic = that.graphic;\r\n        var topMarker = graphic && graphic.topMarker;\r\n        var bottomMarker = graphic && graphic.bottomMarker;\r\n        var emptySettings = that._emptySettings;\r\n        topMarker && topMarker.attr(emptySettings);\r\n        bottomMarker && bottomMarker.attr(emptySettings)\r\n    },\r\n    _getLabelPosition: function(markerType) {\r\n        var position;\r\n        var labelsInside = \"inside\" === this._options.label.position;\r\n        if (!this._options.rotated) {\r\n            position = \"top\" === markerType ^ labelsInside ? \"top\" : \"bottom\"\r\n        } else {\r\n            position = \"top\" === markerType ^ labelsInside ? \"right\" : \"left\"\r\n        }\r\n        return position\r\n    },\r\n    _getLabelMinFormatObject: function() {\r\n        var that = this;\r\n        return {\r\n            index: 0,\r\n            argument: that.initialArgument,\r\n            value: that.initialMinValue,\r\n            seriesName: that.series.name,\r\n            originalValue: that.originalMinValue,\r\n            originalArgument: that.originalArgument,\r\n            point: that\r\n        }\r\n    },\r\n    _updateLabelData: function() {\r\n        var maxFormatObject = this._getLabelFormatObject();\r\n        maxFormatObject.index = 1;\r\n        this._topLabel.setData(maxFormatObject);\r\n        this._bottomLabel.setData(this._getLabelMinFormatObject())\r\n    },\r\n    _updateLabelOptions: function() {\r\n        var that = this;\r\n        var options = this._options.label;\r\n        (!that._topLabel || !that._bottomLabel) && that._createLabel();\r\n        that._topLabel.setOptions(options);\r\n        that._bottomLabel.setOptions(options)\r\n    },\r\n    _createLabel: function() {\r\n        var options = {\r\n            renderer: this.series._renderer,\r\n            labelsGroup: this.series._labelsGroup,\r\n            point: this\r\n        };\r\n        this._topLabel = new _label.Label(options);\r\n        this._bottomLabel = new _label.Label(options)\r\n    },\r\n    _getGraphicBBox: function(location) {\r\n        var options = this._options;\r\n        var images = this._getImage(options.image);\r\n        var image = \"top\" === location ? this._checkImage(images.top) : this._checkImage(images.bottom);\r\n        var bBox;\r\n        var coord = this._getPositionFromLocation(location);\r\n        if (options.visible) {\r\n            bBox = image ? this._getImageBBox(coord.x, coord.y) : this._getSymbolBBox(coord.x, coord.y, options.styles.normal.r)\r\n        } else {\r\n            bBox = {\r\n                x: coord.x,\r\n                y: coord.y,\r\n                width: 0,\r\n                height: 0\r\n            }\r\n        }\r\n        return bBox\r\n    },\r\n    _getPositionFromLocation: function(location) {\r\n        var x;\r\n        var y;\r\n        var isTop = \"top\" === location;\r\n        if (!this._options.rotated) {\r\n            x = this.x;\r\n            y = isTop ? _min(this.y, this.minY) : _max(this.y, this.minY)\r\n        } else {\r\n            x = isTop ? _max(this.x, this.minX) : _min(this.x, this.minX);\r\n            y = this.y\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y\r\n        }\r\n    },\r\n    _checkOverlay: function(bottomCoord, topCoord, topValue) {\r\n        return bottomCoord < topCoord + topValue\r\n    },\r\n    _getOverlayCorrections: function(topCoords, bottomCoords) {\r\n        var rotated = this._options.rotated;\r\n        var coordSelector = !rotated ? \"y\" : \"x\";\r\n        var valueSelector = !rotated ? \"height\" : \"width\";\r\n        var visibleArea = this.series.getValueAxis().getVisibleArea();\r\n        var minBound = visibleArea[0];\r\n        var maxBound = visibleArea[1];\r\n        var delta = _round((topCoords[coordSelector] + topCoords[valueSelector] - bottomCoords[coordSelector]) / 2);\r\n        var coord1 = topCoords[coordSelector] - delta;\r\n        var coord2 = bottomCoords[coordSelector] + delta;\r\n        if (coord1 < minBound) {\r\n            delta = minBound - coord1;\r\n            coord1 += delta;\r\n            coord2 += delta\r\n        } else {\r\n            if (coord2 + bottomCoords[valueSelector] > maxBound) {\r\n                delta = maxBound - coord2 - bottomCoords[valueSelector];\r\n                coord1 += delta;\r\n                coord2 += delta\r\n            }\r\n        }\r\n        return {\r\n            coord1: coord1,\r\n            coord2: coord2\r\n        }\r\n    },\r\n    _checkLabelsOverlay: function(topLocation) {\r\n        var that = this;\r\n        var topCoords = that._topLabel.getBoundingRect();\r\n        var bottomCoords = that._bottomLabel.getBoundingRect();\r\n        var corrections = {};\r\n        if (!that._options.rotated) {\r\n            if (\"top\" === topLocation) {\r\n                if (this._checkOverlay(bottomCoords.y, topCoords.y, topCoords.height)) {\r\n                    corrections = this._getOverlayCorrections(topCoords, bottomCoords);\r\n                    that._topLabel.shift(topCoords.x, corrections.coord1);\r\n                    that._bottomLabel.shift(bottomCoords.x, corrections.coord2)\r\n                }\r\n            } else {\r\n                if (this._checkOverlay(topCoords.y, bottomCoords.y, bottomCoords.height)) {\r\n                    corrections = this._getOverlayCorrections(bottomCoords, topCoords);\r\n                    that._topLabel.shift(topCoords.x, corrections.coord2);\r\n                    that._bottomLabel.shift(bottomCoords.x, corrections.coord1)\r\n                }\r\n            }\r\n        } else {\r\n            if (\"top\" === topLocation) {\r\n                if (this._checkOverlay(topCoords.x, bottomCoords.x, bottomCoords.width)) {\r\n                    corrections = this._getOverlayCorrections(bottomCoords, topCoords);\r\n                    that._topLabel.shift(corrections.coord2, topCoords.y);\r\n                    that._bottomLabel.shift(corrections.coord1, bottomCoords.y)\r\n                }\r\n            } else {\r\n                if (this._checkOverlay(bottomCoords.x, topCoords.x, topCoords.width)) {\r\n                    corrections = this._getOverlayCorrections(topCoords, bottomCoords);\r\n                    that._topLabel.shift(corrections.coord1, topCoords.y);\r\n                    that._bottomLabel.shift(corrections.coord2, bottomCoords.y)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _drawLabel: function() {\r\n        var that = this;\r\n        var labels = [];\r\n        var notInverted = that._options.rotated ? that.x >= that.minX : that.y < that.minY;\r\n        var customVisibility = that._getCustomLabelVisibility();\r\n        var topLabel = that._topLabel;\r\n        var bottomLabel = that._bottomLabel;\r\n        topLabel.pointPosition = notInverted ? \"top\" : \"bottom\";\r\n        bottomLabel.pointPosition = notInverted ? \"bottom\" : \"top\";\r\n        if ((that.series.getLabelVisibility() || customVisibility) && that.hasValue() && false !== customVisibility) {\r\n            false !== that.visibleTopMarker && labels.push(topLabel);\r\n            false !== that.visibleBottomMarker && labels.push(bottomLabel);\r\n            (0, _iterator.each)(labels, function(_, label) {\r\n                label.draw(true)\r\n            });\r\n            that._checkLabelsOverlay(that._topLabel.pointPosition)\r\n        } else {\r\n            topLabel.draw(false);\r\n            bottomLabel.draw(false)\r\n        }\r\n    },\r\n    _getImage: function(imageOption) {\r\n        var image = {};\r\n        if ((0, _type.isDefined)(imageOption)) {\r\n            if (\"string\" === typeof imageOption) {\r\n                image.top = image.bottom = imageOption\r\n            } else {\r\n                image.top = {\r\n                    url: \"string\" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMaxPoint,\r\n                    width: \"number\" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMaxPoint,\r\n                    height: \"number\" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMaxPoint\r\n                };\r\n                image.bottom = {\r\n                    url: \"string\" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMinPoint,\r\n                    width: \"number\" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMinPoint,\r\n                    height: \"number\" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMinPoint\r\n                }\r\n            }\r\n        }\r\n        return image\r\n    },\r\n    _checkSymbol: function(oldOptions, newOptions) {\r\n        var that = this;\r\n        var oldSymbol = oldOptions.symbol;\r\n        var newSymbol = newOptions.symbol;\r\n        var symbolChanged = \"circle\" === oldSymbol && \"circle\" !== newSymbol || \"circle\" !== oldSymbol && \"circle\" === newSymbol;\r\n        var oldImages = that._getImage(oldOptions.image);\r\n        var newImages = that._getImage(newOptions.image);\r\n        var topImageChanged = that._checkImage(oldImages.top) !== that._checkImage(newImages.top);\r\n        var bottomImageChanged = that._checkImage(oldImages.bottom) !== that._checkImage(newImages.bottom);\r\n        return symbolChanged || topImageChanged || bottomImageChanged\r\n    },\r\n    _getSettingsForTwoMarkers: function(style) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var settings = {};\r\n        var x = options.rotated ? _min(that.x, that.minX) : that.x;\r\n        var y = options.rotated ? that.y : _min(that.y, that.minY);\r\n        var radius = style.r;\r\n        var points = that._populatePointShape(options.symbol, radius);\r\n        settings.top = _extend({\r\n            translateX: x + that.width,\r\n            translateY: y,\r\n            r: radius\r\n        }, style);\r\n        settings.bottom = _extend({\r\n            translateX: x,\r\n            translateY: y + that.height,\r\n            r: radius\r\n        }, style);\r\n        if (points) {\r\n            settings.top.points = settings.bottom.points = points\r\n        }\r\n        return settings\r\n    },\r\n    _hasGraphic: function() {\r\n        return this.graphic && this.graphic.topMarker && this.graphic.bottomMarker\r\n    },\r\n    _drawOneMarker: function(renderer, markerType, imageSettings, settings) {\r\n        var that = this;\r\n        var graphic = that.graphic;\r\n        if (graphic[markerType]) {\r\n            that._updateOneMarker(markerType, settings)\r\n        } else {\r\n            graphic[markerType] = that._createMarker(renderer, graphic, imageSettings, settings)\r\n        }\r\n    },\r\n    _drawMarker: function(renderer, group, animationEnabled, firstDrawing, style) {\r\n        var that = this;\r\n        var settings = that._getSettingsForTwoMarkers(style || that._getStyle());\r\n        var image = that._getImage(that._options.image);\r\n        if (that._checkImage(image.top)) {\r\n            settings.top = that._getImageSettings(settings.top, image.top)\r\n        }\r\n        if (that._checkImage(image.bottom)) {\r\n            settings.bottom = that._getImageSettings(settings.bottom, image.bottom)\r\n        }\r\n        that.graphic = that.graphic || renderer.g().append(group);\r\n        that.visibleTopMarker && that._drawOneMarker(renderer, \"topMarker\", image.top, settings.top);\r\n        that.visibleBottomMarker && that._drawOneMarker(renderer, \"bottomMarker\", image.bottom, settings.bottom)\r\n    },\r\n    _getSettingsForTracker: function(radius) {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        return {\r\n            translateX: rotated ? _min(that.x, that.minX) - radius : that.x - radius,\r\n            translateY: rotated ? that.y - radius : _min(that.y, that.minY) - radius,\r\n            width: that.width + 2 * radius,\r\n            height: that.height + 2 * radius\r\n        }\r\n    },\r\n    isInVisibleArea: function() {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        var argument = !rotated ? that.x : that.y;\r\n        var maxValue = !rotated ? _max(that.minY, that.y) : _max(that.minX, that.x);\r\n        var minValue = !rotated ? _min(that.minY, that.y) : _min(that.minX, that.x);\r\n        var tmp;\r\n        var visibleTopMarker = true;\r\n        var visibleBottomMarker = true;\r\n        var visibleRangeArea = true;\r\n        var visibleArgArea = that.series.getArgumentAxis().getVisibleArea();\r\n        var visibleValArea = that.series.getValueAxis().getVisibleArea();\r\n        var notVisibleByArg = visibleArgArea[1] < argument || visibleArgArea[0] > argument;\r\n        var notVisibleByVal = visibleValArea[0] > minValue && visibleValArea[0] > maxValue || visibleValArea[1] < minValue && visibleValArea[1] < maxValue;\r\n        if (notVisibleByArg || notVisibleByVal) {\r\n            visibleTopMarker = visibleBottomMarker = visibleRangeArea = false\r\n        } else {\r\n            visibleTopMarker = visibleValArea[0] <= minValue && visibleValArea[1] > minValue;\r\n            visibleBottomMarker = visibleValArea[0] < maxValue && visibleValArea[1] >= maxValue;\r\n            if (rotated) {\r\n                tmp = visibleTopMarker;\r\n                visibleTopMarker = visibleBottomMarker;\r\n                visibleBottomMarker = tmp\r\n            }\r\n        }\r\n        that.visibleTopMarker = visibleTopMarker;\r\n        that.visibleBottomMarker = visibleBottomMarker;\r\n        return visibleRangeArea\r\n    },\r\n    getTooltipParams: function() {\r\n        var that = this;\r\n        var x;\r\n        var y;\r\n        var rotated = that._options.rotated;\r\n        var minValue = !rotated ? _min(that.y, that.minY) : _min(that.x, that.minX);\r\n        var side = !rotated ? \"height\" : \"width\";\r\n        var visibleArea = that._getVisibleArea();\r\n        var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n        var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n        var min = _max(minVisible, minValue);\r\n        var max = _min(maxVisible, minValue + that[side]);\r\n        if (!rotated) {\r\n            x = that.x;\r\n            y = min + (max - min) / 2\r\n        } else {\r\n            y = that.y;\r\n            x = min + (max - min) / 2\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y,\r\n            offset: 0\r\n        }\r\n    },\r\n    _translate: function() {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        _symbol_point.default._translate.call(that);\r\n        that.height = rotated ? 0 : _abs(that.minY - that.y);\r\n        that.width = rotated ? _abs(that.x - that.minX) : 0\r\n    },\r\n    hasCoords: function() {\r\n        return _symbol_point.default.hasCoords.call(this) && !(null === this.minX || null === this.minY)\r\n    },\r\n    _updateData: function(data) {\r\n        var that = this;\r\n        _symbol_point.default._updateData.call(that, data);\r\n        that.minValue = that.initialMinValue = that.originalMinValue = data.minValue\r\n    },\r\n    _getImageSettings: function(settings, image) {\r\n        return {\r\n            href: image.url || image.toString(),\r\n            width: image.width || DEFAULT_IMAGE_WIDTH,\r\n            height: image.height || DEFAULT_IMAGE_HEIGHT,\r\n            translateX: settings.translateX,\r\n            translateY: settings.translateY\r\n        }\r\n    },\r\n    getCrosshairData: function(x, y) {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        var minX = that.minX;\r\n        var minY = that.minY;\r\n        var vx = that.vx;\r\n        var vy = that.vy;\r\n        var value = that.value;\r\n        var minValue = that.minValue;\r\n        var argument = that.argument;\r\n        var coords = {\r\n            axis: that.series.axis,\r\n            x: vx,\r\n            y: vy,\r\n            yValue: value,\r\n            xValue: argument\r\n        };\r\n        if (rotated) {\r\n            coords.yValue = argument;\r\n            if (_abs(vx - x) < _abs(minX - x)) {\r\n                coords.xValue = value\r\n            } else {\r\n                coords.x = minX;\r\n                coords.xValue = minValue\r\n            }\r\n        } else {\r\n            if (_abs(vy - y) >= _abs(minY - y)) {\r\n                coords.y = minY;\r\n                coords.yValue = minValue\r\n            }\r\n        }\r\n        return coords\r\n    },\r\n    _updateOneMarker: function(markerType, settings) {\r\n        this.graphic && this.graphic[markerType] && this.graphic[markerType].attr(settings)\r\n    },\r\n    _updateMarker: function(animationEnabled, style) {\r\n        this._drawMarker(void 0, void 0, false, false, style)\r\n    },\r\n    _getFormatObject: function(tooltip) {\r\n        var that = this;\r\n        var initialMinValue = that.initialMinValue;\r\n        var initialValue = that.initialValue;\r\n        var initialArgument = that.initialArgument;\r\n        var minValue = tooltip.formatValue(initialMinValue);\r\n        var value = tooltip.formatValue(initialValue);\r\n        return {\r\n            argument: initialArgument,\r\n            argumentText: tooltip.formatValue(initialArgument, \"argument\"),\r\n            valueText: minValue + \" - \" + value,\r\n            rangeValue1Text: minValue,\r\n            rangeValue2Text: value,\r\n            rangeValue1: initialMinValue,\r\n            rangeValue2: initialValue,\r\n            seriesName: that.series.name,\r\n            point: that,\r\n            originalMinValue: that.originalMinValue,\r\n            originalValue: that.originalValue,\r\n            originalArgument: that.originalArgument\r\n        }\r\n    },\r\n    getLabel: function() {\r\n        return [this._topLabel, this._bottomLabel]\r\n    },\r\n    getLabels: function() {\r\n        return [this._topLabel, this._bottomLabel]\r\n    },\r\n    getBoundingRect: _common.noop,\r\n    coordsIn: function(x, y) {\r\n        var trackerRadius = this._storeTrackerR();\r\n        var xCond = x >= this.x - trackerRadius && x <= this.x + trackerRadius;\r\n        var yCond = y >= this.y - trackerRadius && y <= this.y + trackerRadius;\r\n        if (this._options.rotated) {\r\n            return yCond && (xCond || x >= this.minX - trackerRadius && x <= this.minX + trackerRadius)\r\n        } else {\r\n            return xCond && (yCond || y >= this.minY - trackerRadius && y <= this.minY + trackerRadius)\r\n        }\r\n    },\r\n    getMaxValue: function() {\r\n        if (\"discrete\" !== this.series.valueAxisType) {\r\n            return this.minValue > this.value ? this.minValue : this.value\r\n        }\r\n        return this.value\r\n    },\r\n    getMinValue: function() {\r\n        if (\"discrete\" !== this.series.valueAxisType) {\r\n            return this.minValue < this.value ? this.minValue : this.value\r\n        }\r\n        return this.minValue\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _themes = require(\"../themes\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.async\"));\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TOOLBAR_CLASS = \"dx-toolbar\";\r\nvar TOOLBAR_BEFORE_CLASS = \"dx-toolbar-before\";\r\nvar TOOLBAR_CENTER_CLASS = \"dx-toolbar-center\";\r\nvar TOOLBAR_AFTER_CLASS = \"dx-toolbar-after\";\r\nvar TOOLBAR_MINI_CLASS = \"dx-toolbar-mini\";\r\nvar TOOLBAR_ITEM_CLASS = \"dx-toolbar-item\";\r\nvar TOOLBAR_LABEL_CLASS = \"dx-toolbar-label\";\r\nvar TOOLBAR_BUTTON_CLASS = \"dx-toolbar-button\";\r\nvar TOOLBAR_ITEMS_CONTAINER_CLASS = \"dx-toolbar-items-container\";\r\nvar TOOLBAR_GROUP_CLASS = \"dx-toolbar-group\";\r\nvar TOOLBAR_COMPACT_CLASS = \"dx-toolbar-compact\";\r\nvar TOOLBAR_LABEL_SELECTOR = \".\" + TOOLBAR_LABEL_CLASS;\r\nvar TOOLBAR_MULTILINE_CLASS = \"dx-toolbar-multiline\";\r\nvar TEXT_BUTTON_MODE = \"text\";\r\nvar DEFAULT_BUTTON_TYPE = \"default\";\r\nvar TOOLBAR_ITEM_DATA_KEY = \"dxToolbarItemDataKey\";\r\nvar ToolbarBase = _uiCollection_widget.default.inherit({\r\n    compactMode: false,\r\n    ctor: function(element, options) {\r\n        this._userOptions = options || {};\r\n        this.callBase(element, options);\r\n        if (\"height\" in this._userOptions) {\r\n            _errors.default.log(\"W0001\", this.NAME, \"height\", \"20.1\", \"Functionality associated with this option is not intended for the Toolbar widget.\")\r\n        }\r\n    },\r\n    _getSynchronizableOptionsForCreateComponent: function() {\r\n        return this.callBase().filter(function(item) {\r\n            return \"disabled\" !== item\r\n        })\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        var template = new _bindable_template.BindableTemplate(function($container, data, rawModel) {\r\n            if ((0, _type.isPlainObject)(data)) {\r\n                if (data.text) {\r\n                    $container.text(data.text).wrapInner(\"<div>\")\r\n                }\r\n                if (data.html) {\r\n                    $container.html(data.html)\r\n                }\r\n                if (\"dxButton\" === data.widget) {\r\n                    if (this.option(\"useFlatButtons\")) {\r\n                        data.options = data.options || {};\r\n                        data.options.stylingMode = data.options.stylingMode || TEXT_BUTTON_MODE\r\n                    }\r\n                    if (this.option(\"useDefaultButtons\")) {\r\n                        data.options = data.options || {};\r\n                        data.options.type = data.options.type || DEFAULT_BUTTON_TYPE\r\n                    }\r\n                }\r\n            } else {\r\n                $container.text(String(data))\r\n            }\r\n            this._getTemplate(\"dx-polymorph-widget\").render({\r\n                container: $container,\r\n                model: rawModel,\r\n                parent: this\r\n            })\r\n        }.bind(this), [\"text\", \"html\", \"widget\", \"options\"], this.option(\"integrationOptions.watchMethod\"));\r\n        this._templateManager.addDefaultTemplates({\r\n            item: template,\r\n            menuItem: template\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            renderAs: \"topToolbar\",\r\n            grouped: false,\r\n            useFlatButtons: false,\r\n            useDefaultButtons: false,\r\n            multiline: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                useFlatButtons: true\r\n            }\r\n        }])\r\n    },\r\n    _itemContainer: function() {\r\n        return this._$toolbarItemsContainer.find([\".\" + TOOLBAR_BEFORE_CLASS, \".\" + TOOLBAR_CENTER_CLASS, \".\" + TOOLBAR_AFTER_CLASS].join(\",\"))\r\n    },\r\n    _itemClass: function() {\r\n        return TOOLBAR_ITEM_CLASS\r\n    },\r\n    _itemDataKey: function() {\r\n        return TOOLBAR_ITEM_DATA_KEY\r\n    },\r\n    _buttonClass: function() {\r\n        return TOOLBAR_BUTTON_CLASS\r\n    },\r\n    _dimensionChanged: function() {\r\n        this._arrangeItems();\r\n        this._applyCompactMode()\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderToolbar();\r\n        this._renderSections();\r\n        this.callBase();\r\n        this.setAria(\"role\", \"toolbar\")\r\n    },\r\n    _waitParentAnimationFinished: function() {\r\n        var _this = this;\r\n        var $element = this.$element();\r\n        var timeout = 15;\r\n        return new _promise.default(function(resolve) {\r\n            var check = function() {\r\n                var readyToResolve = true;\r\n                $element.parents().each(function(_, parent) {\r\n                    if (_fx.default.isAnimating((0, _renderer.default)(parent))) {\r\n                        readyToResolve = false;\r\n                        return false\r\n                    }\r\n                });\r\n                if (readyToResolve) {\r\n                    resolve()\r\n                }\r\n                return readyToResolve\r\n            };\r\n            var runCheck = function runCheck() {\r\n                clearTimeout(_this._waitParentAnimationTimeout);\r\n                _this._waitParentAnimationTimeout = setTimeout(function() {\r\n                    return check() || runCheck()\r\n                }, timeout)\r\n            };\r\n            runCheck()\r\n        })\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderItemsAsync();\r\n        if ((0, _themes.isMaterial)()) {\r\n            _promise.default.all([this._waitParentAnimationFinished(), this._checkWebFontForLabelsLoaded()]).then(this._dimensionChanged.bind(this))\r\n        }\r\n    },\r\n    _postProcessRenderItems: function() {\r\n        this._arrangeItems()\r\n    },\r\n    _renderToolbar: function() {\r\n        this.$element().addClass(TOOLBAR_CLASS).toggleClass(TOOLBAR_MULTILINE_CLASS, this.option(\"multiline\"));\r\n        this._$toolbarItemsContainer = (0, _renderer.default)(\"<div>\").addClass(TOOLBAR_ITEMS_CONTAINER_CLASS).appendTo(this.$element())\r\n    },\r\n    _renderSections: function() {\r\n        var $container = this._$toolbarItemsContainer;\r\n        var that = this;\r\n        (0, _iterator.each)([\"before\", \"center\", \"after\"], function() {\r\n            var sectionClass = \"dx-toolbar-\" + this;\r\n            var $section = $container.find(\".\" + sectionClass);\r\n            if (!$section.length) {\r\n                that[\"_$\" + this + \"Section\"] = $section = (0, _renderer.default)(\"<div>\").addClass(sectionClass).appendTo($container)\r\n            }\r\n        })\r\n    },\r\n    _checkWebFontForLabelsLoaded: function() {\r\n        var $labels = this.$element().find(TOOLBAR_LABEL_SELECTOR);\r\n        var promises = [];\r\n        $labels.each(function(_, label) {\r\n            var text = (0, _renderer.default)(label).text();\r\n            var fontWeight = (0, _renderer.default)(label).css(\"fontWeight\");\r\n            promises.push((0, _themes.waitWebFont)(text, fontWeight))\r\n        });\r\n        return _promise.default.all(promises)\r\n    },\r\n    _arrangeItems: function(elementWidth) {\r\n        elementWidth = elementWidth || this.$element().width();\r\n        this._$centerSection.css({\r\n            margin: \"0 auto\",\r\n            \"float\": \"none\"\r\n        });\r\n        var beforeRect = (0, _position.getBoundingRect)(this._$beforeSection.get(0));\r\n        var afterRect = (0, _position.getBoundingRect)(this._$afterSection.get(0));\r\n        this._alignCenterSection(beforeRect, afterRect, elementWidth);\r\n        var $label = this._$toolbarItemsContainer.find(TOOLBAR_LABEL_SELECTOR).eq(0);\r\n        var $section = $label.parent();\r\n        if (!$label.length) {\r\n            return\r\n        }\r\n        var labelOffset = beforeRect.width ? beforeRect.width : $label.position().left;\r\n        var widthBeforeSection = $section.hasClass(TOOLBAR_BEFORE_CLASS) ? 0 : labelOffset;\r\n        var widthAfterSection = $section.hasClass(TOOLBAR_AFTER_CLASS) ? 0 : afterRect.width;\r\n        var elemsAtSectionWidth = 0;\r\n        $section.children().not(TOOLBAR_LABEL_SELECTOR).each(function() {\r\n            elemsAtSectionWidth += (0, _renderer.default)(this).outerWidth()\r\n        });\r\n        var freeSpace = elementWidth - elemsAtSectionWidth;\r\n        var sectionMaxWidth = Math.max(freeSpace - widthBeforeSection - widthAfterSection, 0);\r\n        if ($section.hasClass(TOOLBAR_BEFORE_CLASS)) {\r\n            this._alignSection(this._$beforeSection, sectionMaxWidth)\r\n        } else {\r\n            var labelPaddings = $label.outerWidth() - $label.width();\r\n            $label.css(\"maxWidth\", sectionMaxWidth - labelPaddings)\r\n        }\r\n    },\r\n    _alignCenterSection: function(beforeRect, afterRect, elementWidth) {\r\n        this._alignSection(this._$centerSection, elementWidth - beforeRect.width - afterRect.width);\r\n        var isRTL = this.option(\"rtlEnabled\");\r\n        var leftRect = isRTL ? afterRect : beforeRect;\r\n        var rightRect = isRTL ? beforeRect : afterRect;\r\n        var centerRect = (0, _position.getBoundingRect)(this._$centerSection.get(0));\r\n        if (leftRect.right > centerRect.left || centerRect.right > rightRect.left) {\r\n            this._$centerSection.css({\r\n                marginLeft: leftRect.width,\r\n                marginRight: rightRect.width,\r\n                \"float\": leftRect.width > rightRect.width ? \"none\" : \"right\"\r\n            })\r\n        }\r\n    },\r\n    _alignSection: function($section, maxWidth) {\r\n        var $labels = $section.find(TOOLBAR_LABEL_SELECTOR);\r\n        var labels = $labels.toArray();\r\n        maxWidth -= this._getCurrentLabelsPaddings(labels);\r\n        var currentWidth = this._getCurrentLabelsWidth(labels);\r\n        var difference = Math.abs(currentWidth - maxWidth);\r\n        if (maxWidth < currentWidth) {\r\n            labels = labels.reverse();\r\n            this._alignSectionLabels(labels, difference, false)\r\n        } else {\r\n            this._alignSectionLabels(labels, difference, true)\r\n        }\r\n    },\r\n    _alignSectionLabels: function(labels, difference, expanding) {\r\n        var getRealLabelWidth = function(label) {\r\n            return (0, _position.getBoundingRect)(label).width\r\n        };\r\n        for (var i = 0; i < labels.length; i++) {\r\n            var $label = (0, _renderer.default)(labels[i]);\r\n            var currentLabelWidth = Math.ceil(getRealLabelWidth(labels[i]));\r\n            var labelMaxWidth = void 0;\r\n            if (expanding) {\r\n                $label.css(\"maxWidth\", \"inherit\")\r\n            }\r\n            var possibleLabelWidth = Math.ceil(expanding ? getRealLabelWidth(labels[i]) : currentLabelWidth);\r\n            if (possibleLabelWidth < difference) {\r\n                labelMaxWidth = expanding ? possibleLabelWidth : 0;\r\n                difference -= possibleLabelWidth\r\n            } else {\r\n                labelMaxWidth = expanding ? currentLabelWidth + difference : currentLabelWidth - difference;\r\n                $label.css(\"maxWidth\", labelMaxWidth);\r\n                break\r\n            }\r\n            $label.css(\"maxWidth\", labelMaxWidth)\r\n        }\r\n    },\r\n    _applyCompactMode: function() {\r\n        var $element = this.$element();\r\n        $element.removeClass(TOOLBAR_COMPACT_CLASS);\r\n        if (this.option(\"compactMode\") && this._getSummaryItemsWidth(this.itemElements(), true) > $element.width()) {\r\n            $element.addClass(TOOLBAR_COMPACT_CLASS)\r\n        }\r\n    },\r\n    _getCurrentLabelsWidth: function(labels) {\r\n        var width = 0;\r\n        labels.forEach(function(label, index) {\r\n            width += (0, _renderer.default)(label).outerWidth()\r\n        });\r\n        return width\r\n    },\r\n    _getCurrentLabelsPaddings: function(labels) {\r\n        var padding = 0;\r\n        labels.forEach(function(label, index) {\r\n            padding += (0, _renderer.default)(label).outerWidth() - (0, _renderer.default)(label).width()\r\n        });\r\n        return padding\r\n    },\r\n    _renderItem: function(index, item, itemContainer, $after) {\r\n        var location = item.location || \"center\";\r\n        var container = itemContainer || this[\"_$\" + location + \"Section\"];\r\n        var itemHasText = !!(item.text || item.html);\r\n        var itemElement = this.callBase(index, item, container, $after);\r\n        itemElement.toggleClass(this._buttonClass(), !itemHasText).toggleClass(TOOLBAR_LABEL_CLASS, itemHasText).addClass(item.cssClass);\r\n        return itemElement\r\n    },\r\n    _renderGroupedItems: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(this.option(\"items\"), function(groupIndex, group) {\r\n            var groupItems = group.items;\r\n            var $container = (0, _renderer.default)(\"<div>\").addClass(TOOLBAR_GROUP_CLASS);\r\n            var location = group.location || \"center\";\r\n            if (!groupItems || !groupItems.length) {\r\n                return\r\n            }(0, _iterator.each)(groupItems, function(itemIndex, item) {\r\n                that._renderItem(itemIndex, item, $container, null)\r\n            });\r\n            that._$toolbarItemsContainer.find(\".dx-toolbar-\" + location).append($container)\r\n        })\r\n    },\r\n    _renderItems: function(items) {\r\n        var grouped = this.option(\"grouped\") && items.length && items[0].items;\r\n        grouped ? this._renderGroupedItems() : this.callBase(items)\r\n    },\r\n    _getToolbarItems: function() {\r\n        return this.option(\"items\") || []\r\n    },\r\n    _renderContentImpl: function() {\r\n        var items = this._getToolbarItems();\r\n        this.$element().toggleClass(TOOLBAR_MINI_CLASS, 0 === items.length);\r\n        if (this._renderedItemsCount) {\r\n            this._renderItems(items.slice(this._renderedItemsCount))\r\n        } else {\r\n            this._renderItems(items)\r\n        }\r\n        this._applyCompactMode()\r\n    },\r\n    _renderEmptyMessage: _common.noop,\r\n    _clean: function() {\r\n        this._$toolbarItemsContainer.children().empty();\r\n        this.$element().empty()\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._arrangeItems()\r\n        }\r\n    },\r\n    _isVisible: function() {\r\n        return this.$element().width() > 0 && this.$element().height() > 0\r\n    },\r\n    _getIndexByItem: function(item) {\r\n        return (0, _array.inArray)(item, this._getToolbarItems())\r\n    },\r\n    _itemOptionChanged: function(item, property, value) {\r\n        this.callBase.apply(this, [item, property, value]);\r\n        this._arrangeItems()\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name;\r\n        switch (name) {\r\n            case \"width\":\r\n                this.callBase.apply(this, arguments);\r\n                this._dimensionChanged();\r\n                break;\r\n            case \"multiline\":\r\n                this.$element().toggleClass(TOOLBAR_MULTILINE_CLASS, args.value);\r\n                break;\r\n            case \"renderAs\":\r\n            case \"useFlatButtons\":\r\n            case \"useDefaultButtons\":\r\n                this._invalidate();\r\n                break;\r\n            case \"compactMode\":\r\n                this._applyCompactMode();\r\n                break;\r\n            case \"grouped\":\r\n                break;\r\n            default:\r\n                this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        this.callBase();\r\n        clearTimeout(this._waitParentAnimationTimeout)\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxToolbarBase\", ToolbarBase);\r\nvar _default = ToolbarBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _swipe = require(\"../../events/swipe\");\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar SWIPE_START_EVENT_NAME = (0, _index.addNamespace)(_swipe.start, LIST_EDIT_DECORATOR);\r\nvar SWIPE_UPDATE_EVENT_NAME = (0, _index.addNamespace)(_swipe.swipe, LIST_EDIT_DECORATOR);\r\nvar SWIPE_END_EVENT_NAME = (0, _index.addNamespace)(_swipe.end, LIST_EDIT_DECORATOR);\r\nvar EditDecorator = _class.default.inherit({\r\n    ctor: function(list) {\r\n        this._list = list;\r\n        this._init()\r\n    },\r\n    _init: _common.noop,\r\n    _shouldHandleSwipe: false,\r\n    _attachSwipeEvent: function(config) {\r\n        var swipeConfig = {\r\n            itemSizeFunc: function() {\r\n                if (this._clearSwipeCache) {\r\n                    this._itemWidthCache = this._list.$element().width();\r\n                    this._clearSwipeCache = false\r\n                }\r\n                return this._itemWidthCache\r\n            }.bind(this)\r\n        };\r\n        _events_engine.default.on(config.$itemElement, SWIPE_START_EVENT_NAME, swipeConfig, this._itemSwipeStartHandler.bind(this));\r\n        _events_engine.default.on(config.$itemElement, SWIPE_UPDATE_EVENT_NAME, this._itemSwipeUpdateHandler.bind(this));\r\n        _events_engine.default.on(config.$itemElement, SWIPE_END_EVENT_NAME, this._itemSwipeEndHandler.bind(this))\r\n    },\r\n    _itemSwipeStartHandler: function(e) {\r\n        var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n        if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n        clearTimeout(this._list._inkRippleTimer);\r\n        this._swipeStartHandler($itemElement, e)\r\n    },\r\n    _itemSwipeUpdateHandler: function(e) {\r\n        var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n        this._swipeUpdateHandler($itemElement, e)\r\n    },\r\n    _itemSwipeEndHandler: function(e) {\r\n        var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n        this._swipeEndHandler($itemElement, e);\r\n        this._clearSwipeCache = true\r\n    },\r\n    beforeBag: _common.noop,\r\n    afterBag: _common.noop,\r\n    _commonOptions: function() {\r\n        return {\r\n            activeStateEnabled: this._list.option(\"activeStateEnabled\"),\r\n            hoverStateEnabled: this._list.option(\"hoverStateEnabled\"),\r\n            focusStateEnabled: this._list.option(\"focusStateEnabled\")\r\n        }\r\n    },\r\n    modifyElement: function(config) {\r\n        if (this._shouldHandleSwipe) {\r\n            this._attachSwipeEvent(config);\r\n            this._clearSwipeCache = true\r\n        }\r\n    },\r\n    afterRender: _common.noop,\r\n    handleClick: _common.noop,\r\n    handleKeyboardEvents: _common.noop,\r\n    handleEnterPressing: _common.noop,\r\n    handleContextMenu: _common.noop,\r\n    _swipeStartHandler: _common.noop,\r\n    _swipeUpdateHandler: _common.noop,\r\n    _swipeEndHandler: _common.noop,\r\n    visibilityChange: _common.noop,\r\n    getExcludedSelectors: _common.noop,\r\n    dispose: _common.noop\r\n});\r\nvar _default = EditDecorator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollbar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCROLLBAR = \"dxScrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"\".concat(SCROLLABLE_SCROLLBAR_CLASS, \"-active\");\r\nvar SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nvar SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nvar HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar THUMB_MIN_SIZE = 15;\r\nvar SCROLLBAR_VISIBLE = {\r\n    onScroll: \"onScroll\",\r\n    onHover: \"onHover\",\r\n    always: \"always\",\r\n    never: \"never\"\r\n};\r\nvar activeScrollbar = null;\r\nvar Scrollbar = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            direction: null,\r\n            visible: false,\r\n            activeStateEnabled: false,\r\n            visibilityMode: SCROLLBAR_VISIBLE.onScroll,\r\n            containerSize: 0,\r\n            contentSize: 0,\r\n            expandable: true,\r\n            scaleRatio: 1\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._isHovered = false\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderThumb();\r\n        this.callBase()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderDirection();\r\n        this._update();\r\n        this._attachPointerDownHandler();\r\n        this.option(\"hoverStateEnabled\", this._isHoverMode());\r\n        this.$element().toggleClass(HOVER_ENABLED_STATE, this.option(\"hoverStateEnabled\"))\r\n    },\r\n    _renderThumb: function() {\r\n        this._$thumb = (0, _renderer.default)(\"<div>\").addClass(SCROLLABLE_SCROLL_CLASS);\r\n        (0, _renderer.default)(\"<div>\").addClass(SCROLLABLE_SCROLL_CONTENT_CLASS).appendTo(this._$thumb);\r\n        this.$element().addClass(SCROLLABLE_SCROLLBAR_CLASS).append(this._$thumb)\r\n    },\r\n    isThumb: function($element) {\r\n        return !!this.$element().find($element).length\r\n    },\r\n    _isHoverMode: function() {\r\n        var visibilityMode = this.option(\"visibilityMode\");\r\n        return (visibilityMode === SCROLLBAR_VISIBLE.onHover || visibilityMode === SCROLLBAR_VISIBLE.always) && this.option(\"expandable\")\r\n    },\r\n    _renderDirection: function() {\r\n        var direction = this.option(\"direction\");\r\n        this.$element().addClass(\"dx-scrollbar-\" + direction);\r\n        this._dimension = direction === HORIZONTAL ? \"width\" : \"height\";\r\n        this._prop = direction === HORIZONTAL ? \"left\" : \"top\"\r\n    },\r\n    _attachPointerDownHandler: function() {\r\n        _events_engine.default.on(this._$thumb, (0, _index.addNamespace)(_pointer.default.down, SCROLLBAR), this.feedbackOn.bind(this))\r\n    },\r\n    feedbackOn: function() {\r\n        this.$element().addClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n        activeScrollbar = this\r\n    },\r\n    feedbackOff: function() {\r\n        this.$element().removeClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n        activeScrollbar = null\r\n    },\r\n    cursorEnter: function() {\r\n        this._isHovered = true;\r\n        if (this._needScrollbar()) {\r\n            this.option(\"visible\", true)\r\n        }\r\n    },\r\n    cursorLeave: function() {\r\n        this._isHovered = false;\r\n        this.option(\"visible\", false)\r\n    },\r\n    _renderDimensions: function() {\r\n        this._$thumb.css({\r\n            width: this.option(\"width\"),\r\n            height: this.option(\"height\")\r\n        })\r\n    },\r\n    _toggleVisibility: function(visible) {\r\n        if (this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.onScroll) {\r\n            this._$thumb.css(\"opacity\")\r\n        }\r\n        visible = this._adjustVisibility(visible);\r\n        this.option().visible = visible;\r\n        this._$thumb.toggleClass(\"dx-state-invisible\", !visible)\r\n    },\r\n    _adjustVisibility: function(visible) {\r\n        if (this._baseContainerToContentRatio && !this._needScrollbar()) {\r\n            return false\r\n        }\r\n        switch (this.option(\"visibilityMode\")) {\r\n            case SCROLLBAR_VISIBLE.onScroll:\r\n                break;\r\n            case SCROLLBAR_VISIBLE.onHover:\r\n                visible = visible || !!this._isHovered;\r\n                break;\r\n            case SCROLLBAR_VISIBLE.never:\r\n                visible = false;\r\n                break;\r\n            case SCROLLBAR_VISIBLE.always:\r\n                visible = true\r\n        }\r\n        return visible\r\n    },\r\n    moveTo: function(location) {\r\n        if (this._isHidden()) {\r\n            return\r\n        }\r\n        if ((0, _type.isPlainObject)(location)) {\r\n            location = location[this._prop] || 0\r\n        }\r\n        var scrollBarLocation = {};\r\n        scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location);\r\n        (0, _translator.move)(this._$thumb, scrollBarLocation)\r\n    },\r\n    _calculateScrollBarPosition: function(location) {\r\n        return -location * this._thumbRatio\r\n    },\r\n    _update: function() {\r\n        var containerSize = Math.round(this.option(\"containerSize\"));\r\n        var contentSize = Math.round(this.option(\"contentSize\"));\r\n        var baseContainerSize = Math.round(this.option(\"baseContainerSize\"));\r\n        var baseContentSize = Math.round(this.option(\"baseContentSize\"));\r\n        if (isNaN(baseContainerSize)) {\r\n            baseContainerSize = containerSize;\r\n            baseContentSize = contentSize\r\n        }\r\n        this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize;\r\n        this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize;\r\n        var thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), THUMB_MIN_SIZE));\r\n        this._thumbRatio = (containerSize - thumbSize) / (this.option(\"scaleRatio\") * (contentSize - containerSize));\r\n        this.option(this._dimension, thumbSize / this.option(\"scaleRatio\"));\r\n        this.$element().css(\"display\", this._needScrollbar() ? \"\" : \"none\")\r\n    },\r\n    _isHidden: function() {\r\n        return this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.never\r\n    },\r\n    _needScrollbar: function() {\r\n        return !this._isHidden() && this._baseContainerToContentRatio < 1\r\n    },\r\n    containerToContentRatio: function() {\r\n        return this._realContainerToContentRatio\r\n    },\r\n    _normalizeSize: function(size) {\r\n        return (0, _type.isPlainObject)(size) ? size[this._dimension] || 0 : size\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        if (this === activeScrollbar) {\r\n            activeScrollbar = null\r\n        }\r\n        _events_engine.default.off(this._$thumb, \".\" + SCROLLBAR)\r\n    },\r\n    _optionChanged: function(args) {\r\n        if (this._isHidden()) {\r\n            return\r\n        }\r\n        switch (args.name) {\r\n            case \"containerSize\":\r\n            case \"contentSize\":\r\n                this.option()[args.name] = this._normalizeSize(args.value);\r\n                this._update();\r\n                break;\r\n            case \"baseContentSize\":\r\n            case \"baseContainerSize\":\r\n                this._update();\r\n                break;\r\n            case \"visibilityMode\":\r\n            case \"direction\":\r\n                this._invalidate();\r\n                break;\r\n            case \"scaleRatio\":\r\n                this._update();\r\n                break;\r\n            default:\r\n                this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    update: (0, _common.deferRenderer)(function() {\r\n        this._adjustVisibility() && this.option(\"visible\", true)\r\n    })\r\n});\r\n_ready_callbacks.default.add(function() {\r\n    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, SCROLLBAR), function() {\r\n        if (activeScrollbar) {\r\n            activeScrollbar.feedbackOff()\r\n        }\r\n    })\r\n});\r\nvar _default = Scrollbar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.data_controller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataController = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiTree_list2 = _interopRequireDefault(require(\"./ui.tree_list.data_source_adapter\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.data_controller\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DataController = _uiGrid_core.default.controllers.data.inherit(function() {\r\n    return {\r\n        _getDataSourceAdapter: function() {\r\n            return _uiTree_list2.default\r\n        },\r\n        _getNodeLevel: function(node) {\r\n            var level = -1;\r\n            while (node.parent) {\r\n                if (node.visible) {\r\n                    level++\r\n                }\r\n                node = node.parent\r\n            }\r\n            return level\r\n        },\r\n        _generateDataItem: function(node, options) {\r\n            return {\r\n                rowType: \"data\",\r\n                node: node,\r\n                key: node.key,\r\n                data: node.data,\r\n                isExpanded: this.isRowExpanded(node.key, options),\r\n                level: this._getNodeLevel(node)\r\n            }\r\n        },\r\n        _loadOnOptionChange: function() {\r\n            this._dataSource.load()\r\n        },\r\n        _isItemEquals: function(item1, item2) {\r\n            if (!this.callBase.apply(this, arguments)) {\r\n                return false\r\n            }\r\n            if (item1.node && item2.node && item1.node.hasChildren !== item2.node.hasChildren) {\r\n                return false\r\n            }\r\n            if (item1.level !== item2.level) {\r\n                return false\r\n            }\r\n            return true\r\n        },\r\n        init: function() {\r\n            this.createAction(\"onRowExpanding\");\r\n            this.createAction(\"onRowExpanded\");\r\n            this.createAction(\"onRowCollapsing\");\r\n            this.createAction(\"onRowCollapsed\");\r\n            this.callBase.apply(this, arguments)\r\n        },\r\n        keyOf: function(data) {\r\n            var dataSource = this._dataSource;\r\n            if (dataSource) {\r\n                return dataSource.keyOf(data)\r\n            }\r\n        },\r\n        key: function() {\r\n            var dataSource = this._dataSource;\r\n            if (dataSource) {\r\n                return dataSource.getKeyExpr()\r\n            }\r\n        },\r\n        publicMethods: function() {\r\n            return this.callBase().concat([\"expandRow\", \"collapseRow\", \"isRowExpanded\", \"getRootNode\", \"getNodeByKey\", \"loadDescendants\", \"forEachNode\"])\r\n        },\r\n        changeRowExpand: function(key) {\r\n            if (this._dataSource) {\r\n                var that = this;\r\n                var args = {\r\n                    key: key\r\n                };\r\n                var isExpanded = this.isRowExpanded(key);\r\n                that.executeAction(isExpanded ? \"onRowCollapsing\" : \"onRowExpanding\", args);\r\n                if (!args.cancel) {\r\n                    return that._dataSource.changeRowExpand(key).done(function() {\r\n                        that.executeAction(isExpanded ? \"onRowCollapsed\" : \"onRowExpanded\", args)\r\n                    })\r\n                }\r\n            }\r\n            return (new _deferred.Deferred).resolve()\r\n        },\r\n        isRowExpanded: function(key, cache) {\r\n            return this._dataSource && this._dataSource.isRowExpanded(key, cache)\r\n        },\r\n        expandRow: function(key) {\r\n            if (!this.isRowExpanded(key)) {\r\n                return this.changeRowExpand(key)\r\n            }\r\n            return (new _deferred.Deferred).resolve()\r\n        },\r\n        collapseRow: function(key) {\r\n            if (this.isRowExpanded(key)) {\r\n                return this.changeRowExpand(key)\r\n            }\r\n            return (new _deferred.Deferred).resolve()\r\n        },\r\n        getRootNode: function() {\r\n            return this._dataSource && this._dataSource.getRootNode()\r\n        },\r\n        optionChanged: function(args) {\r\n            switch (args.name) {\r\n                case \"rootValue\":\r\n                case \"parentIdExpr\":\r\n                case \"itemsExpr\":\r\n                case \"filterMode\":\r\n                case \"expandNodesOnFiltering\":\r\n                case \"autoExpandAll\":\r\n                case \"hasItemsExpr\":\r\n                case \"dataStructure\":\r\n                    this._columnsController.reset();\r\n                    this._items = [];\r\n                    this._refreshDataSource();\r\n                    args.handled = true;\r\n                    break;\r\n                case \"expandedRowKeys\":\r\n                case \"onNodesInitialized\":\r\n                    if (this._dataSource && !this._dataSource._isNodesInitializing && !(0, _common.equalByValue)(args.value, args.previousValue)) {\r\n                        this._loadOnOptionChange()\r\n                    }\r\n                    args.handled = true;\r\n                    break;\r\n                case \"maxFilterLengthInRequest\":\r\n                    args.handled = true;\r\n                    break;\r\n                default:\r\n                    this.callBase(args)\r\n            }\r\n        },\r\n        getNodeByKey: function(key) {\r\n            if (!this._dataSource) {\r\n                return\r\n            }\r\n            return this._dataSource.getNodeByKey(key)\r\n        },\r\n        getChildNodeKeys: function(parentKey) {\r\n            if (!this._dataSource) {\r\n                return\r\n            }\r\n            return this._dataSource.getChildNodeKeys(parentKey)\r\n        },\r\n        loadDescendants: function(keys, childrenOnly) {\r\n            if (!this._dataSource) {\r\n                return\r\n            }\r\n            return this._dataSource.loadDescendants(keys, childrenOnly)\r\n        },\r\n        forEachNode: function() {\r\n            this._dataSource.forEachNode.apply(this, arguments)\r\n        }\r\n    }\r\n}());\r\nexports.DataController = DataController;\r\n_uiTree_list.default.registerModule(\"data\", {\r\n    defaultOptions: function() {\r\n        return (0, _extend.extend)({}, _uiGrid_core.default.defaultOptions(), {\r\n            itemsExpr: \"items\",\r\n            parentIdExpr: \"parentId\",\r\n            rootValue: 0,\r\n            dataStructure: \"plain\",\r\n            expandedRowKeys: [],\r\n            filterMode: \"withAncestors\",\r\n            expandNodesOnFiltering: true,\r\n            autoExpandAll: false,\r\n            onNodesInitialized: null,\r\n            maxFilterLengthInRequest: 1500,\r\n            paging: {\r\n                enabled: false\r\n            }\r\n        })\r\n    },\r\n    controllers: {\r\n        data: DataController\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (core/options/index.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Options = void 0;\r\nvar _type = require(\"../utils/type\");\r\nvar _common = require(\"../utils/common\");\r\nvar _option_manager = require(\"./option_manager\");\r\nvar _object = require(\"../utils/object\");\r\nvar _utils = require(\"./utils\");\r\nvar _extend = require(\"../utils/extend\");\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar Options = function() {\r\n    function Options(options, defaultOptions, optionsByReference, deprecatedOptions) {\r\n        var _this = this;\r\n        _classCallCheck(this, Options);\r\n        this._deprecatedCallback;\r\n        this._startChangeCallback;\r\n        this._endChangeCallback;\r\n        this._default = defaultOptions;\r\n        this._deprecated = deprecatedOptions;\r\n        this._deprecatedNames = [];\r\n        this._initDeprecatedNames();\r\n        this._optionManager = new _option_manager.OptionManager(options, optionsByReference);\r\n        this._optionManager.onRelevantNamesPrepared(function(options, name, value, silent) {\r\n            return _this._setRelevantNames(options, name, value, silent)\r\n        });\r\n        this._cachedOptions = {};\r\n        this._rules = []\r\n    }\r\n    _createClass(Options, [{\r\n        key: \"_initDeprecatedNames\",\r\n        value: function() {\r\n            for (var optionName in this._deprecated) {\r\n                this._deprecatedNames.push(optionName)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getByRules\",\r\n        value: function(rules) {\r\n            rules = Array.isArray(rules) ? this._rules.concat(rules) : this._rules;\r\n            return (0, _utils.convertRulesToOptions)(rules)\r\n        }\r\n    }, {\r\n        key: \"_notifyDeprecated\",\r\n        value: function(option) {\r\n            var info = this._deprecated[option];\r\n            if (info) {\r\n                this._deprecatedCallback(option, info)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_setRelevantNames\",\r\n        value: function(options, name, value, silent) {\r\n            if (name) {\r\n                var normalizedName = this._normalizeName(name, silent);\r\n                if (normalizedName && normalizedName !== name) {\r\n                    this._setField(options, normalizedName, value);\r\n                    this._clearField(options, name)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_setField\",\r\n        value: function(options, fullName, value) {\r\n            var fieldName = \"\";\r\n            var fieldObject = null;\r\n            do {\r\n                fieldName = fieldName ? \".\".concat(fieldName) : \"\";\r\n                fieldName = (0, _utils.getFieldName)(fullName) + fieldName;\r\n                fullName = (0, _utils.getParentName)(fullName);\r\n                fieldObject = fullName ? this._optionManager.get(options, fullName, false) : options\r\n            } while (!fieldObject);\r\n            fieldObject[fieldName] = value\r\n        }\r\n    }, {\r\n        key: \"_clearField\",\r\n        value: function(options, name) {\r\n            delete options[name];\r\n            var previousFieldName = (0, _utils.getParentName)(name);\r\n            var fieldObject = previousFieldName ? this._optionManager.get(options, previousFieldName, false) : options;\r\n            if (fieldObject) {\r\n                delete fieldObject[(0, _utils.getFieldName)(name)]\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_normalizeName\",\r\n        value: function(name, silent) {\r\n            if (this._deprecatedNames.length && name) {\r\n                for (var i = 0; i < this._deprecatedNames.length; i++) {\r\n                    if (this._deprecatedNames[i] === name) {\r\n                        var deprecate = this._deprecated[name];\r\n                        if (deprecate) {\r\n                            !silent && this._notifyDeprecated(name);\r\n                            return deprecate.alias || name\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return name\r\n        }\r\n    }, {\r\n        key: \"addRules\",\r\n        value: function(rules) {\r\n            this._rules = rules.concat(this._rules)\r\n        }\r\n    }, {\r\n        key: \"applyRules\",\r\n        value: function(rules) {\r\n            var options = this._getByRules(rules);\r\n            this.silent(options)\r\n        }\r\n    }, {\r\n        key: \"dispose\",\r\n        value: function() {\r\n            this._deprecatedCallback = _common.noop;\r\n            this._startChangeCallback = _common.noop;\r\n            this._endChangeCallback = _common.noop;\r\n            this._optionManager.dispose()\r\n        }\r\n    }, {\r\n        key: \"onChanging\",\r\n        value: function(callBack) {\r\n            this._optionManager.onChanging(callBack)\r\n        }\r\n    }, {\r\n        key: \"onChanged\",\r\n        value: function(callBack) {\r\n            this._optionManager.onChanged(callBack)\r\n        }\r\n    }, {\r\n        key: \"onDeprecated\",\r\n        value: function(callBack) {\r\n            this._deprecatedCallback = callBack\r\n        }\r\n    }, {\r\n        key: \"onStartChange\",\r\n        value: function(callBack) {\r\n            this._startChangeCallback = callBack\r\n        }\r\n    }, {\r\n        key: \"onEndChange\",\r\n        value: function(callBack) {\r\n            this._endChangeCallback = callBack\r\n        }\r\n    }, {\r\n        key: \"isInitial\",\r\n        value: function(name) {\r\n            var value = this.silent(name);\r\n            var initialValue = this.initial(name);\r\n            var areFunctions = (0, _type.isFunction)(value) && (0, _type.isFunction)(initialValue);\r\n            return areFunctions ? value.toString() === initialValue.toString() : (0, _common.equalByValue)(value, initialValue)\r\n        }\r\n    }, {\r\n        key: \"initial\",\r\n        value: function(name) {\r\n            return (0, _utils.getNestedOptionValue)(this._initial, name)\r\n        }\r\n    }, {\r\n        key: \"option\",\r\n        value: function(options, value) {\r\n            var isGetter = arguments.length < 2 && \"object\" !== (0, _type.type)(options);\r\n            if (isGetter) {\r\n                return this._optionManager.get(void 0, this._normalizeName(options))\r\n            } else {\r\n                this._startChangeCallback();\r\n                try {\r\n                    this._optionManager.set(options, value)\r\n                } finally {\r\n                    this._endChangeCallback()\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"silent\",\r\n        value: function(options, value) {\r\n            var isGetter = arguments.length < 2 && \"object\" !== (0, _type.type)(options);\r\n            if (isGetter) {\r\n                return this._optionManager.get(void 0, options, void 0, true)\r\n            } else {\r\n                this._optionManager.set(options, value, void 0, true)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"reset\",\r\n        value: function(name) {\r\n            var _this2 = this;\r\n            if (name) {\r\n                var fullPath = name.replace(/\\[([^\\]])\\]/g, \".$1\").split(\".\");\r\n                var value = fullPath.reduce(function(value, field) {\r\n                    return value ? value[field] : _this2.initial(field)\r\n                }, null);\r\n                var defaultValue = (0, _type.isObject)(value) ? (0, _object.clone)(value) : value;\r\n                this._optionManager.set(name, defaultValue, false)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getAliasesByName\",\r\n        value: function(name) {\r\n            var _this3 = this;\r\n            return Object.keys(this._deprecated).filter(function(aliasName) {\r\n                return name === _this3._deprecated[aliasName].alias\r\n            })\r\n        }\r\n    }, {\r\n        key: \"isDeprecated\",\r\n        value: function(name) {\r\n            return Object.prototype.hasOwnProperty.call(this._deprecated, name)\r\n        }\r\n    }, {\r\n        key: \"cache\",\r\n        value: function(name, options) {\r\n            var isGetter = arguments.length < 2;\r\n            if (isGetter) {\r\n                return this._cachedOptions[name]\r\n            } else {\r\n                this._cachedOptions[name] = (0, _extend.extend)(this._cachedOptions[name], options)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_initial\",\r\n        set: function(value) {\r\n            this._initialOptions = value\r\n        },\r\n        get: function() {\r\n            if (!this._initialOptions) {\r\n                var rulesOptions = this._getByRules(this.silent(\"defaultOptionsRules\"));\r\n                this._initialOptions = this._default;\r\n                this._optionManager._setByReference(this._initialOptions, rulesOptions)\r\n            }\r\n            return this._initialOptions\r\n        }\r\n    }]);\r\n    return Options\r\n}();\r\nexports.Options = Options;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.mask.parts.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getDatePartIndexByPosition = exports.renderDateParts = void 0;\r\nvar _date = require(\"../../localization/ldml/date.parser\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _this = void 0;\r\nvar monthGetter = function(date) {\r\n    return date.getMonth() + 1\r\n};\r\nvar monthSetter = function(date, value) {\r\n    var day = date.getDate();\r\n    var monthLimits = getLimits(\"M\", date);\r\n    var newValue = (0, _math.fitIntoRange)(parseInt(value), monthLimits.min, monthLimits.max);\r\n    date.setMonth(newValue - 1, 1);\r\n    var _getLimits = getLimits(\"dM\", date),\r\n        min = _getLimits.min,\r\n        max = _getLimits.max;\r\n    var newDay = (0, _math.fitIntoRange)(day, min, max);\r\n    date.setDate(newDay)\r\n};\r\nvar PATTERN_GETTERS = {\r\n    a: function(date) {\r\n        return date.getHours() < 12 ? 0 : 1\r\n    },\r\n    E: \"getDay\",\r\n    y: \"getFullYear\",\r\n    M: monthGetter,\r\n    L: monthGetter,\r\n    d: \"getDate\",\r\n    H: \"getHours\",\r\n    h: \"getHours\",\r\n    m: \"getMinutes\",\r\n    s: \"getSeconds\",\r\n    S: \"getMilliseconds\"\r\n};\r\nvar PATTERN_SETTERS = (0, _extend.extend)({}, (0, _date.getPatternSetters)(), {\r\n    a: function(date, value) {\r\n        var hours = date.getHours();\r\n        var current = hours >= 12;\r\n        if (current === !!parseInt(value)) {\r\n            return\r\n        }\r\n        date.setHours((hours + 12) % 24)\r\n    },\r\n    d: function(date, value) {\r\n        var lastDayInMonth = getLimits(\"dM\", date).max;\r\n        if (value > lastDayInMonth) {\r\n            date.setMonth(date.getMonth() + 1)\r\n        }\r\n        date.setDate(value)\r\n    },\r\n    h: function(date, value) {\r\n        var isPM = date.getHours() >= 12;\r\n        date.setHours(+value % 12 + (isPM ? 12 : 0))\r\n    },\r\n    M: monthSetter,\r\n    L: monthSetter,\r\n    E: function(date, value) {\r\n        if (value < 0) {\r\n            return\r\n        }\r\n        date.setDate(date.getDate() - date.getDay() + parseInt(value))\r\n    },\r\n    y: function(date, value) {\r\n        var currentYear = date.getFullYear();\r\n        var valueLength = String(value).length;\r\n        var maxLimitLength = String(getLimits(\"y\", date).max).length;\r\n        var newValue = parseInt(String(currentYear).substr(0, maxLimitLength - valueLength) + value);\r\n        date.setFullYear(newValue)\r\n    }\r\n});\r\nvar getPatternGetter = function(patternChar) {\r\n    var unsupportedCharGetter = function() {\r\n        return patternChar\r\n    };\r\n    return PATTERN_GETTERS[patternChar] || unsupportedCharGetter\r\n};\r\nvar renderDateParts = function(text, regExpInfo) {\r\n    var result = regExpInfo.regexp.exec(text);\r\n    var start = 0;\r\n    var end = 0;\r\n    var sections = [];\r\n    for (var i = 1; i < result.length; i++) {\r\n        start = end;\r\n        end = start + result[i].length;\r\n        var pattern = regExpInfo.patterns[i - 1].replace(/^'|'$/g, \"\");\r\n        var getter = getPatternGetter(pattern[0]);\r\n        sections.push({\r\n            index: i - 1,\r\n            isStub: pattern === result[i],\r\n            caret: {\r\n                start: start,\r\n                end: end\r\n            },\r\n            pattern: pattern,\r\n            text: result[i],\r\n            limits: getLimits.bind(_this, pattern[0]),\r\n            setter: PATTERN_SETTERS[pattern[0]] || _common.noop,\r\n            getter: getter\r\n        })\r\n    }\r\n    return sections\r\n};\r\nexports.renderDateParts = renderDateParts;\r\nvar getLimits = function(pattern, date, forcedPattern) {\r\n    var limits = {\r\n        y: {\r\n            min: 0,\r\n            max: 9999\r\n        },\r\n        M: {\r\n            min: 1,\r\n            max: 12\r\n        },\r\n        L: {\r\n            min: 1,\r\n            max: 12\r\n        },\r\n        d: {\r\n            min: 1,\r\n            max: 31\r\n        },\r\n        dM: {\r\n            min: 1,\r\n            max: new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate()\r\n        },\r\n        E: {\r\n            min: 0,\r\n            max: 6\r\n        },\r\n        H: {\r\n            min: 0,\r\n            max: 23\r\n        },\r\n        h: {\r\n            min: 0,\r\n            max: 23\r\n        },\r\n        m: {\r\n            min: 0,\r\n            max: 59\r\n        },\r\n        s: {\r\n            min: 0,\r\n            max: 59\r\n        },\r\n        S: {\r\n            min: 0,\r\n            max: 999\r\n        },\r\n        a: {\r\n            min: 0,\r\n            max: 1\r\n        }\r\n    };\r\n    return limits[forcedPattern || pattern] || limits.getAmPm\r\n};\r\nvar getDatePartIndexByPosition = function(dateParts, position) {\r\n    for (var i = 0; i < dateParts.length; i++) {\r\n        var caretInGroup = dateParts[i].caret.end >= position;\r\n        if (!dateParts[i].isStub && caretInGroup) {\r\n            return i\r\n        }\r\n    }\r\n    return null\r\n};\r\nexports.getDatePartIndexByPosition = getDatePartIndexByPosition;\r\n","/**\r\n * DevExtreme (viz/axes/tick.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.tick = createTick;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction getPathStyle(options) {\r\n    return {\r\n        stroke: options.color,\r\n        \"stroke-width\": options.width,\r\n        \"stroke-opacity\": options.opacity,\r\n        opacity: 1\r\n    }\r\n}\r\n\r\nfunction createTick(axis, renderer, tickOptions, gridOptions, skippedCategory, skipLabels, offset) {\r\n    var tickOffset = offset || axis._tickOffset;\r\n    var lineGroup = axis._axisLineGroup;\r\n    var elementsGroup = axis._axisElementsGroup;\r\n    var tickStyle = getPathStyle(tickOptions);\r\n    var gridStyle = getPathStyle(gridOptions);\r\n    var emptyStrRegExp = /^\\s+$/;\r\n    var axisOptions = axis.getOptions();\r\n    var labelOptions = axisOptions.label;\r\n    var labelStyle = axis._textOptions;\r\n\r\n    function getLabelFontStyle(tick) {\r\n        var fontStyle = axis._textFontStyles;\r\n        var customizeColor = labelOptions.customizeColor;\r\n        if (customizeColor && customizeColor.call) {\r\n            fontStyle = (0, _extend.extend)({}, axis._textFontStyles, {\r\n                fill: customizeColor.call(tick, tick)\r\n            })\r\n        }\r\n        return fontStyle\r\n    }\r\n\r\n    function createLabelHint(tick, range) {\r\n        var labelHint = axis.formatHint(tick.value, labelOptions, range);\r\n        if ((0, _type.isDefined)(labelHint) && \"\" !== labelHint) {\r\n            tick.getContentContainer().setTitle(labelHint)\r\n        }\r\n    }\r\n    return function(value) {\r\n        var tick = {\r\n            value: value,\r\n            updateValue: function(newValue) {\r\n                this.value = value = newValue\r\n            },\r\n            initCoords: function() {\r\n                this.coords = axis._getTranslatedValue(value, tickOffset);\r\n                this.labelCoords = axis._getTranslatedValue(value)\r\n            },\r\n            saveCoords: function() {\r\n                this._lastStoredCoordinates = {\r\n                    coords: this._storedCoords,\r\n                    labelCoords: this._storedLabelsCoords\r\n                };\r\n                this._storedCoords = this.coords;\r\n                this._storedLabelsCoords = this.templateContainer ? this._getTemplateCoords() : this.labelCoords\r\n            },\r\n            resetCoordinates: function() {\r\n                this._storedCoords = this._lastStoredCoordinates.coords;\r\n                this._storedLabelsCoords = this._lastStoredCoordinates.labelCoords\r\n            },\r\n            drawMark: function(options) {\r\n                if (!tickOptions.visible || skippedCategory === value) {\r\n                    return\r\n                }\r\n                if (axis.areCoordsOutsideAxis(this.coords)) {\r\n                    return\r\n                }\r\n                if (this.mark) {\r\n                    this.mark.append(lineGroup);\r\n                    axis.sharp(this.mark, axis.getSharpDirectionByCoords(this.coords));\r\n                    this.updateTickPosition(options)\r\n                } else {\r\n                    this.mark = axis._createPathElement([], tickStyle, axis.getSharpDirectionByCoords(this.coords)).append(lineGroup);\r\n                    this.updateTickPosition(options)\r\n                }\r\n            },\r\n            setSkippedCategory: function(category) {\r\n                skippedCategory = category\r\n            },\r\n            _updateLine: function(lineElement, settings, storedSettings, animate, isGridLine) {\r\n                if (!lineElement) {\r\n                    return\r\n                }\r\n                if (null === settings.points || null === settings.r) {\r\n                    lineElement.remove();\r\n                    return\r\n                }\r\n                if (animate && storedSettings && null !== storedSettings.points) {\r\n                    settings.opacity = 1;\r\n                    lineElement.attr(storedSettings);\r\n                    lineElement.animate(settings)\r\n                } else {\r\n                    settings.opacity = animate ? 0 : 1;\r\n                    lineElement.attr(settings);\r\n                    animate && lineElement.animate({\r\n                        opacity: 1\r\n                    }, {\r\n                        delay: .5,\r\n                        partitionDuration: .5\r\n                    })\r\n                }\r\n                this.coords.angle && axis._rotateTick(lineElement, this.coords, isGridLine)\r\n            },\r\n            updateTickPosition: function(options, animate) {\r\n                this._updateLine(this.mark, {\r\n                    points: axis._getTickMarkPoints(tick.coords, tickOptions.length, options)\r\n                }, this._storedCoords && {\r\n                    points: axis._getTickMarkPoints(tick._storedCoords, tickOptions.length, options)\r\n                }, animate, false)\r\n            },\r\n            drawLabel: function(range, template) {\r\n                var _this = this;\r\n                if (this.templateContainer && axis.isRendered()) {\r\n                    this.updateLabelPosition();\r\n                    return\r\n                }\r\n                var labelIsVisible = labelOptions.visible && !skipLabels && !axis.getTranslator().getBusinessRange().isEmpty() && !axis.areCoordsOutsideAxis(this.labelCoords);\r\n                if (!labelIsVisible) {\r\n                    if (this.label) {\r\n                        this.removeLabel()\r\n                    }\r\n                    return\r\n                }\r\n                var templateOption = labelOptions.template;\r\n                var text = axis.formatLabel(value, labelOptions, range);\r\n                if (this.label) {\r\n                    this.label.attr({\r\n                        text: text,\r\n                        rotate: 0\r\n                    }).append(elementsGroup);\r\n                    createLabelHint(this, range);\r\n                    this.updateLabelPosition();\r\n                    return\r\n                }\r\n                if (templateOption) {\r\n                    this.templateContainer = renderer.g().append(elementsGroup);\r\n                    this._templateDef && this._templateDef.reject();\r\n                    this._templateDef = new _deferred.Deferred;\r\n                    template.render({\r\n                        model: {\r\n                            valueText: text,\r\n                            value: this.value,\r\n                            labelFontStyle: getLabelFontStyle(this),\r\n                            labelStyle: labelStyle\r\n                        },\r\n                        container: this.templateContainer.element,\r\n                        onRendered: function() {\r\n                            _this.updateLabelPosition();\r\n                            _this._templateDef.resolve()\r\n                        }\r\n                    })\r\n                } else {\r\n                    if ((0, _type.isDefined)(text) && \"\" !== text && !emptyStrRegExp.test(text)) {\r\n                        this.label = renderer.text(text).css(getLabelFontStyle(this)).attr(labelStyle).append(elementsGroup);\r\n                        this.updateLabelPosition();\r\n                        createLabelHint(this, range)\r\n                    }\r\n                }\r\n                var containerForData = this.getContentContainer();\r\n                containerForData && containerForData.data(\"chart-data-argument\", this.value);\r\n                this.templateContainer && createLabelHint(this, range)\r\n            },\r\n            getTemplateDeferred: function() {\r\n                return this._templateDef\r\n            },\r\n            getContentContainer: function() {\r\n                return this.templateContainer || this.label\r\n            },\r\n            fadeOutElements: function() {\r\n                var startSettings = {\r\n                    opacity: 1\r\n                };\r\n                var endSettings = {\r\n                    opacity: 0\r\n                };\r\n                var animationSettings = {\r\n                    partitionDuration: .5\r\n                };\r\n                if (this.getContentContainer()) {\r\n                    this._fadeOutLabel()\r\n                }\r\n                if (this.grid) {\r\n                    this.grid.append(axis._axisGridGroup).attr(startSettings).animate(endSettings, animationSettings)\r\n                }\r\n                if (this.mark) {\r\n                    this.mark.append(axis._axisLineGroup).attr(startSettings).animate(endSettings, animationSettings)\r\n                }\r\n            },\r\n            _fadeInLabel: function() {\r\n                var group = axis._renderer.g().attr({\r\n                    opacity: 0\r\n                }).append(axis._axisElementsGroup).animate({\r\n                    opacity: 1\r\n                }, {\r\n                    delay: .5,\r\n                    partitionDuration: .5\r\n                });\r\n                this.getContentContainer().append(group)\r\n            },\r\n            _fadeOutLabel: function() {\r\n                var group = axis._renderer.g().attr({\r\n                    opacity: 1\r\n                }).animate({\r\n                    opacity: 0\r\n                }, {\r\n                    partitionDuration: .5\r\n                }).append(axis._axisElementsGroup).toBackground();\r\n                this.getContentContainer().append(group)\r\n            },\r\n            _getTemplateCoords: function() {\r\n                return axis._getLabelAdjustedCoord(this, (axis._constantLabelOffset || 0) + (tick.labelOffset || 0))\r\n            },\r\n            updateLabelPosition: function(animate) {\r\n                var templateContainer = this.templateContainer;\r\n                if (!this.getContentContainer()) {\r\n                    return\r\n                }\r\n                if (animate && this._storedLabelsCoords) {\r\n                    if (templateContainer) {\r\n                        templateContainer.attr(this._storedLabelsCoords);\r\n                        var lCoords = this._getTemplateCoords();\r\n                        templateContainer.animate(lCoords)\r\n                    } else {\r\n                        this.label.attr({\r\n                            x: this._storedLabelsCoords.x,\r\n                            y: this._storedLabelsCoords.y\r\n                        });\r\n                        this.label.animate({\r\n                            x: this.labelCoords.x,\r\n                            y: this.labelCoords.y\r\n                        })\r\n                    }\r\n                } else {\r\n                    if (templateContainer) {\r\n                        var _lCoords = this._getTemplateCoords();\r\n                        templateContainer.attr(_lCoords)\r\n                    } else {\r\n                        this.label.attr({\r\n                            x: this.labelCoords.x,\r\n                            y: this.labelCoords.y\r\n                        })\r\n                    }\r\n                    if (animate) {\r\n                        this._fadeInLabel()\r\n                    }\r\n                }\r\n            },\r\n            updateMultilineTextAlignment: function() {\r\n                if (labelOptions.template || !this.label) {\r\n                    return\r\n                }\r\n                this.label.attr({\r\n                    textsAlignment: this.labelAlignment || axis.getOptions().label.alignment\r\n                })\r\n            },\r\n            drawGrid: function(drawLine) {\r\n                if (gridOptions.visible && skippedCategory !== this.value) {\r\n                    if (this.grid) {\r\n                        this.grid.append(axis._axisGridGroup);\r\n                        axis.sharp(this.grid, axis.getSharpDirectionByCoords(this.coords));\r\n                        this.updateGridPosition()\r\n                    } else {\r\n                        this.grid = drawLine(this, gridStyle);\r\n                        this.grid && this.grid.append(axis._axisGridGroup)\r\n                    }\r\n                }\r\n            },\r\n            updateGridPosition: function(animate) {\r\n                this._updateLine(this.grid, axis._getGridPoints(tick.coords), this._storedCoords && axis._getGridPoints(this._storedCoords), animate, true)\r\n            },\r\n            removeLabel: function() {\r\n                var contentContainer = this.getContentContainer();\r\n                contentContainer && contentContainer.remove();\r\n                this._templateDef && this._templateDef.reject();\r\n                this._templateDef = this.templateContainer = this.label = null\r\n            }\r\n        };\r\n        return tick\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (viz/range_selector/tracker.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Tracker = Tracker;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _support = require(\"../../core/utils/support\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar MIN_MANUAL_SELECTING_WIDTH = 10;\r\nvar window = (0, _window.getWindow)();\r\n\r\nfunction isLeftButtonPressed(event) {\r\n    var e = event || window.event;\r\n    var originalEvent = e.originalEvent;\r\n    var touches = e.touches;\r\n    var pointerType = originalEvent ? originalEvent.pointerType : false;\r\n    var eventTouches = originalEvent ? originalEvent.touches : false;\r\n    var isMSPointerLeftClick = originalEvent && void 0 !== pointerType && (pointerType === (originalEvent.MSPOINTER_TYPE_TOUCH || \"touch\") || pointerType === (originalEvent.MSPOINTER_TYPE_MOUSE || \"mouse\") && 1 === originalEvent.buttons);\r\n    var isTouches = touches && touches.length > 0 || eventTouches && eventTouches.length > 0;\r\n    return 1 === e.which || isMSPointerLeftClick || isTouches\r\n}\r\n\r\nfunction isMultiTouches(event) {\r\n    var originalEvent = event.originalEvent;\r\n    var touches = event.touches;\r\n    var eventTouches = originalEvent && originalEvent.touches;\r\n    return touches && touches.length > 1 || eventTouches && eventTouches.length > 1 || null\r\n}\r\n\r\nfunction preventDefault(e) {\r\n    if (!isMultiTouches(e)) {\r\n        e.preventDefault()\r\n    }\r\n}\r\n\r\nfunction stopPropagationAndPreventDefault(e) {\r\n    if (!isMultiTouches(e)) {\r\n        e.stopPropagation();\r\n        e.preventDefault()\r\n    }\r\n}\r\n\r\nfunction isTouchEventArgs(e) {\r\n    return e && e.type && 0 === e.type.indexOf(\"touch\")\r\n}\r\n\r\nfunction getEventPageX(event) {\r\n    var originalEvent = event.originalEvent;\r\n    var result = 0;\r\n    if (event.pageX) {\r\n        result = event.pageX\r\n    } else {\r\n        if (originalEvent && originalEvent.pageX) {\r\n            result = originalEvent.pageX\r\n        }\r\n    }\r\n    if (originalEvent && originalEvent.touches) {\r\n        if (originalEvent.touches.length > 0) {\r\n            result = originalEvent.touches[0].pageX\r\n        } else {\r\n            if (originalEvent.changedTouches.length > 0) {\r\n                result = originalEvent.changedTouches[0].pageX\r\n            }\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction initializeAreaEvents(controller, area, state, getRootOffsetLeft) {\r\n    var _docEvents;\r\n    var isTouchEvent;\r\n    var isActive = false;\r\n    var initialPosition;\r\n    var movingHandler = null;\r\n    var docEvents = (_docEvents = {}, _defineProperty(_docEvents, _pointer.default.move, function(e) {\r\n        var position;\r\n        var offset;\r\n        if (isTouchEvent !== isTouchEventArgs(e)) {\r\n            return\r\n        }\r\n        if (!isLeftButtonPressed(e)) {\r\n            cancel(e)\r\n        }\r\n        if (isActive) {\r\n            position = getEventPageX(e);\r\n            offset = getRootOffsetLeft();\r\n            if (movingHandler) {\r\n                movingHandler(position - offset, e)\r\n            } else {\r\n                if (state.manualRangeSelectionEnabled && Math.abs(initialPosition - position) >= MIN_MANUAL_SELECTING_WIDTH) {\r\n                    movingHandler = controller.placeSliderAndBeginMoving(initialPosition - offset, position - offset, e)\r\n                }\r\n            }\r\n        }\r\n    }), _defineProperty(_docEvents, _pointer.default.up, function(e) {\r\n        var position;\r\n        if (isActive) {\r\n            position = getEventPageX(e);\r\n            if (!movingHandler && state.moveSelectedRangeByClick && Math.abs(initialPosition - position) < MIN_MANUAL_SELECTING_WIDTH) {\r\n                controller.moveSelectedArea(position - getRootOffsetLeft(), e)\r\n            }\r\n            cancel(e)\r\n        }\r\n    }), _docEvents);\r\n\r\n    function cancel(e) {\r\n        if (isActive) {\r\n            isActive = false;\r\n            if (movingHandler) {\r\n                movingHandler.complete(e);\r\n                movingHandler = null\r\n            }\r\n        }\r\n    }\r\n    area.on(_pointer.default.down, function(e) {\r\n        if (!state.enabled || !isLeftButtonPressed(e) || isActive) {\r\n            return\r\n        }\r\n        isActive = true;\r\n        isTouchEvent = isTouchEventArgs(e);\r\n        initialPosition = getEventPageX(e)\r\n    });\r\n    return docEvents\r\n}\r\n\r\nfunction initializeSelectedAreaEvents(controller, area, state, getRootOffsetLeft) {\r\n    var _docEvents2;\r\n    var isTouchEvent;\r\n    var isActive = false;\r\n    var movingHandler = null;\r\n    var docEvents = (_docEvents2 = {}, _defineProperty(_docEvents2, _pointer.default.move, function(e) {\r\n        if (isTouchEvent !== isTouchEventArgs(e)) {\r\n            return\r\n        }\r\n        if (!isLeftButtonPressed(e)) {\r\n            cancel(e)\r\n        }\r\n        if (isActive) {\r\n            preventDefault(e);\r\n            movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)\r\n        }\r\n    }), _defineProperty(_docEvents2, _pointer.default.up, cancel), _docEvents2);\r\n\r\n    function cancel(e) {\r\n        if (isActive) {\r\n            isActive = false;\r\n            movingHandler.complete(e);\r\n            movingHandler = null\r\n        }\r\n    }\r\n    area.on(_pointer.default.down, function(e) {\r\n        if (!state.enabled || !isLeftButtonPressed(e) || isActive) {\r\n            return\r\n        }\r\n        isActive = true;\r\n        isTouchEvent = isTouchEventArgs(e);\r\n        movingHandler = controller.beginSelectedAreaMoving(getEventPageX(e) - getRootOffsetLeft());\r\n        stopPropagationAndPreventDefault(e)\r\n    });\r\n    return docEvents\r\n}\r\n\r\nfunction initializeSliderEvents(controller, sliders, state, getRootOffsetLeft) {\r\n    var _docEvents3;\r\n    var isTouchEvent;\r\n    var isActive = false;\r\n    var movingHandler = null;\r\n    var docEvents = (_docEvents3 = {}, _defineProperty(_docEvents3, _pointer.default.move, function(e) {\r\n        if (isTouchEvent !== isTouchEventArgs(e)) {\r\n            return\r\n        }\r\n        if (!isLeftButtonPressed(e)) {\r\n            cancel(e)\r\n        }\r\n        if (isActive) {\r\n            preventDefault(e);\r\n            movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)\r\n        }\r\n    }), _defineProperty(_docEvents3, _pointer.default.up, cancel), _docEvents3);\r\n    (0, _iterator.each)(sliders, function(i, slider) {\r\n        var _slider$on;\r\n        slider.on((_slider$on = {}, _defineProperty(_slider$on, _pointer.default.down, function(e) {\r\n            if (!state.enabled || !isLeftButtonPressed(e) || isActive) {\r\n                return\r\n            }\r\n            isActive = true;\r\n            isTouchEvent = isTouchEventArgs(e);\r\n            movingHandler = controller.beginSliderMoving(i, getEventPageX(e) - getRootOffsetLeft());\r\n            stopPropagationAndPreventDefault(e)\r\n        }), _defineProperty(_slider$on, _pointer.default.move, function() {\r\n            if (!movingHandler) {\r\n                controller.foregroundSlider(i)\r\n            }\r\n        }), _slider$on))\r\n    });\r\n\r\n    function cancel(e) {\r\n        if (isActive) {\r\n            isActive = false;\r\n            movingHandler.complete(e);\r\n            movingHandler = null\r\n        }\r\n    }\r\n    return docEvents\r\n}\r\n\r\nfunction Tracker(params) {\r\n    var state = this._state = {};\r\n    var targets = params.controller.getTrackerTargets();\r\n    if (_support.pointerEvents) {\r\n        params.renderer.root.css({\r\n            msTouchAction: \"pinch-zoom\"\r\n        })\r\n    }\r\n    this._docEvents = [initializeSelectedAreaEvents(params.controller, targets.selectedArea, state, getRootOffsetLeft), initializeAreaEvents(params.controller, targets.area, state, getRootOffsetLeft), initializeSliderEvents(params.controller, targets.sliders, state, getRootOffsetLeft)];\r\n    (0, _iterator.each)(this._docEvents, function(_, events) {\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), events)\r\n    });\r\n\r\n    function getRootOffsetLeft() {\r\n        return params.renderer.getRootOffset().left\r\n    }\r\n}\r\nTracker.prototype = {\r\n    constructor: Tracker,\r\n    dispose: function() {\r\n        (0, _iterator.each)(this._docEvents, function(_, events) {\r\n            _events_engine.default.off(_dom_adapter.default.getDocument(), events)\r\n        })\r\n    },\r\n    update: function(enabled, behavior) {\r\n        var state = this._state;\r\n        state.enabled = enabled;\r\n        state.moveSelectedRangeByClick = behavior.moveSelectedRangeByClick;\r\n        state.manualRangeSelectionEnabled = behavior.manualRangeSelectionEnabled\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/shared/grouped_data_converter_mixin.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar isCorrectStructure = function(data) {\r\n    return Array.isArray(data) && data.every(function(item) {\r\n        var hasTwoFields = 2 === Object.keys(item).length;\r\n        var hasCorrectFields = \"key\" in item && \"items\" in item;\r\n        return hasTwoFields && hasCorrectFields && Array.isArray(item.items)\r\n    })\r\n};\r\nvar _default = {\r\n    _getSpecificDataSourceOption: function() {\r\n        var groupKey = \"key\";\r\n        var dataSource = this.option(\"dataSource\");\r\n        var hasSimpleItems = false;\r\n        var data = {};\r\n        if (this._getGroupedOption() && isCorrectStructure(dataSource)) {\r\n            data = dataSource.reduce(function(accumulator, item) {\r\n                var items = item.items.map(function(innerItem) {\r\n                    if (!(0, _type.isObject)(innerItem)) {\r\n                        innerItem = {\r\n                            text: innerItem\r\n                        };\r\n                        hasSimpleItems = true\r\n                    }\r\n                    if (!(groupKey in innerItem)) {\r\n                        innerItem[groupKey] = item.key\r\n                    }\r\n                    return innerItem\r\n                });\r\n                return accumulator.concat(items)\r\n            }, []);\r\n            dataSource = {\r\n                store: {\r\n                    type: \"array\",\r\n                    data: data\r\n                },\r\n                group: {\r\n                    selector: \"key\",\r\n                    keepInitialKeyOrder: true\r\n                }\r\n            };\r\n            if (hasSimpleItems) {\r\n                dataSource.searchExpr = \"text\"\r\n            }\r\n        }\r\n        return dataSource\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/xmla_store/xmla_store.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.XmlaStore = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _class = _interopRequireDefault(require(\"../../../core/class\"));\r\nvar _string = require(\"../../../core/utils/string\");\r\nvar _errors = _interopRequireDefault(require(\"../../../data/errors\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _array = require(\"../../../core/utils/array\");\r\nvar _uiPivot_grid = require(\"../ui.pivot_grid.utils\");\r\nvar _deferred = require(\"../../../core/utils/deferred\");\r\nvar _language_codes = require(\"../../../localization/language_codes\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar errors = _errors.default.errors;\r\nvar window = (0, _window.getWindow)();\r\nvar XmlaStore = _class.default.inherit(function() {\r\n    var discover = '<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Body><Discover xmlns=\"urn:schemas-microsoft-com:xml-analysis\"><RequestType>{2}</RequestType><Restrictions><RestrictionList><CATALOG_NAME>{0}</CATALOG_NAME><CUBE_NAME>{1}</CUBE_NAME></RestrictionList></Restrictions><Properties><PropertyList><Catalog>{0}</Catalog>{3}</PropertyList></Properties></Discover></Body></Envelope>';\r\n    var execute = '<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Body><Execute xmlns=\"urn:schemas-microsoft-com:xml-analysis\"><Command><Statement>{0}</Statement></Command><Properties><PropertyList><Catalog>{1}</Catalog><ShowHiddenCubes>True</ShowHiddenCubes><SspropInitAppName>Microsoft SQL Server Management Studio</SspropInitAppName><Timeout>3600</Timeout>{2}</PropertyList></Properties></Execute></Body></Envelope>';\r\n    var mdx = \"SELECT {2} FROM {0} {1} CELL PROPERTIES VALUE, FORMAT_STRING, LANGUAGE, BACK_COLOR, FORE_COLOR, FONT_FLAGS\";\r\n    var mdxFilterSelect = \"(SELECT {0} FROM {1})\";\r\n    var mdxSubset = \"Subset({0}, {1}, {2})\";\r\n    var mdxOrder = \"Order({0}, {1}, {2})\";\r\n    var mdxWith = \"{0} {1} as {2}\";\r\n    var mdxSlice = \"WHERE ({0})\";\r\n    var mdxNonEmpty = \"NonEmpty({0}, {1})\";\r\n    var mdxAxis = \"{0} DIMENSION PROPERTIES PARENT_UNIQUE_NAME,HIERARCHY_UNIQUE_NAME, MEMBER_VALUE ON {1}\";\r\n    var mdxCrossJoin = \"CrossJoin({0})\";\r\n    var mdxSet = \"{{0}}\";\r\n    var MEASURE_DEMENSION_KEY = \"DX_MEASURES\";\r\n    var MD_DIMTYPE_MEASURE = \"2\";\r\n\r\n    function execXMLA(requestOptions, data) {\r\n        var deferred = new _deferred.Deferred;\r\n        var beforeSend = requestOptions.beforeSend;\r\n        var ajaxSettings = {\r\n            url: requestOptions.url,\r\n            dataType: \"text\",\r\n            data: data,\r\n            headers: {\r\n                \"Content-Type\": \"text/xml\"\r\n            },\r\n            xhrFields: {},\r\n            method: \"POST\"\r\n        };\r\n        if ((0, _type.isFunction)(beforeSend)) {\r\n            beforeSend(ajaxSettings)\r\n        }(0, _uiPivot_grid.sendRequest)(ajaxSettings).fail(function() {\r\n            deferred.reject(arguments)\r\n        }).done(function(text) {\r\n            var parser = new window.DOMParser;\r\n            var xml;\r\n            try {\r\n                try {\r\n                    xml = parser.parseFromString(text, \"text/xml\")\r\n                } catch (e) {\r\n                    xml = void 0\r\n                }\r\n                if (!xml || xml.getElementsByTagName(\"parsererror\").length || 0 === xml.childNodes.length) {\r\n                    throw new errors.Error(\"E4023\", text)\r\n                }\r\n            } catch (e) {\r\n                deferred.reject({\r\n                    statusText: e.message,\r\n                    stack: e.stack,\r\n                    responseText: text\r\n                })\r\n            }\r\n            deferred.resolve(xml)\r\n        });\r\n        return deferred\r\n    }\r\n\r\n    function getLocaleIdProperty() {\r\n        var languageId = (0, _language_codes.getLanguageId)();\r\n        if (void 0 !== languageId) {\r\n            return (0, _string.format)(\"<LocaleIdentifier>{0}</LocaleIdentifier>\", languageId)\r\n        }\r\n        return \"\"\r\n    }\r\n\r\n    function mdxDescendants(level, levelMember, nextLevel) {\r\n        var memberExpression = levelMember ? levelMember : level;\r\n        return \"Descendants({\" + memberExpression + \"}, \" + nextLevel + \", SELF_AND_BEFORE)\"\r\n    }\r\n\r\n    function getAllMember(dimension) {\r\n        return (dimension.hierarchyName || dimension.dataField) + \".[All]\"\r\n    }\r\n\r\n    function getAllMembers(field) {\r\n        var result = field.dataField + \".allMembers\";\r\n        var searchValue = field.searchValue;\r\n        if (searchValue) {\r\n            searchValue = searchValue.replace(/'/g, \"''\");\r\n            result = \"Filter(\" + result + \", instr(\" + field.dataField + \".currentmember.member_caption,'\" + searchValue + \"') > 0)\"\r\n        }\r\n        return result\r\n    }\r\n\r\n    function crossJoinElements(elements) {\r\n        var elementsString = elements.join(\",\");\r\n        return elements.length > 1 ? (0, _string.format)(mdxCrossJoin, elementsString) : elementsString\r\n    }\r\n\r\n    function union(elements) {\r\n        var elementsString = elements.join(\",\");\r\n        return elements.length > 1 ? \"Union(\" + elementsString + \")\" : elementsString\r\n    }\r\n\r\n    function generateCrossJoin(path, expandLevel, expandAllCount, expandIndex, slicePath, options, axisName, take) {\r\n        var crossJoinArgs = [];\r\n        var dimensions = options[axisName];\r\n        var fields = [];\r\n        var arg;\r\n        var prevDimension;\r\n        var member;\r\n        for (var i = expandIndex; i <= expandLevel; i++) {\r\n            var field = dimensions[i];\r\n            var dataField = field.dataField;\r\n            var prevHierarchyName = dimensions[i - 1] && dimensions[i - 1].hierarchyName;\r\n            var hierarchyName = field.hierarchyName;\r\n            var isLastDimensionInGroup = !hierarchyName || !dimensions[i + 1] || dimensions[i + 1].hierarchyName !== hierarchyName;\r\n            var expandAllIndex = path.length + expandAllCount + expandIndex;\r\n            arg = null;\r\n            fields.push(field);\r\n            if (i < path.length) {\r\n                if (isLastDimensionInGroup) {\r\n                    arg = \"(\" + dataField + \".\" + preparePathValue(path[i], dataField) + \")\"\r\n                }\r\n            } else {\r\n                if (i <= expandAllIndex) {\r\n                    if (0 === i && 0 === expandAllCount) {\r\n                        var allMember = getAllMember(dimensions[expandIndex]);\r\n                        if (!hierarchyName) {\r\n                            arg = getAllMembers(dimensions[expandIndex])\r\n                        } else {\r\n                            arg = allMember + \",\" + dimensions[expandIndex].dataField\r\n                        }\r\n                    } else {\r\n                        if (hierarchyName) {\r\n                            member = preparePathValue(slicePath[slicePath.length - 1]);\r\n                            if (isLastDimensionInGroup || i === expandAllIndex) {\r\n                                if (prevHierarchyName === hierarchyName) {\r\n                                    if (slicePath.length) {\r\n                                        prevDimension = dimensions[slicePath.length - 1]\r\n                                    }\r\n                                    if (!prevDimension || prevDimension.hierarchyName !== hierarchyName) {\r\n                                        prevDimension = dimensions[i - 1];\r\n                                        member = \"\"\r\n                                    }\r\n                                    arg = mdxDescendants(prevDimension.dataField, member, dataField)\r\n                                } else {\r\n                                    arg = getAllMembers(field)\r\n                                }\r\n                            }\r\n                        } else {\r\n                            arg = getAllMembers(field)\r\n                        }\r\n                    }\r\n                } else {\r\n                    var isFirstDimensionInGroup = !hierarchyName || prevHierarchyName !== hierarchyName;\r\n                    if (isFirstDimensionInGroup) {\r\n                        arg = \"(\" + getAllMember(field) + \")\"\r\n                    }\r\n                }\r\n            }\r\n            if (arg) {\r\n                arg = (0, _string.format)(mdxSet, arg);\r\n                if (take) {\r\n                    var sortBy = (field.hierarchyName || field.dataField) + (\"displayText\" === field.sortBy ? \".MEMBER_CAPTION\" : \".MEMBER_VALUE\");\r\n                    arg = (0, _string.format)(mdxOrder, arg, sortBy, \"desc\" === field.sortOrder ? \"DESC\" : \"ASC\")\r\n                }\r\n                crossJoinArgs.push(arg)\r\n            }\r\n        }\r\n        return crossJoinElements(crossJoinArgs)\r\n    }\r\n\r\n    function fillCrossJoins(crossJoins, path, expandLevel, expandIndex, slicePath, options, axisName, cellsString, take, totalsOnly) {\r\n        var expandAllCount = -1;\r\n        var dimensions = options[axisName];\r\n        var dimensionIndex;\r\n        do {\r\n            expandAllCount++;\r\n            dimensionIndex = path.length + expandAllCount + expandIndex;\r\n            var crossJoin = generateCrossJoin(path, expandLevel, expandAllCount, expandIndex, slicePath, options, axisName, take);\r\n            if (!take && !totalsOnly) {\r\n                crossJoin = (0, _string.format)(mdxNonEmpty, crossJoin, cellsString)\r\n            }\r\n            crossJoins.push(crossJoin)\r\n        } while (dimensions[dimensionIndex] && dimensions[dimensionIndex + 1] && dimensions[dimensionIndex].expanded)\r\n    }\r\n\r\n    function declare(expression, withArray, name, type) {\r\n        name = name || \"[DX_Set_\" + withArray.length + \"]\";\r\n        type = type || \"set\";\r\n        withArray.push((0, _string.format)(mdxWith, type, name, expression));\r\n        return name\r\n    }\r\n\r\n    function generateAxisMdx(options, axisName, cells, withArray, parseOptions) {\r\n        var dimensions = options[axisName];\r\n        var crossJoins = [];\r\n        var path = [];\r\n        var expandedPaths = [];\r\n        var expandIndex = 0;\r\n        var expandLevel = 0;\r\n        var result = [];\r\n        var cellsString = (0, _string.format)(mdxSet, cells.join(\",\"));\r\n        if (dimensions && dimensions.length) {\r\n            if (options.headerName === axisName) {\r\n                path = options.path;\r\n                expandIndex = path.length\r\n            } else {\r\n                if (options.headerName && options.oppositePath) {\r\n                    path = options.oppositePath;\r\n                    expandIndex = path.length\r\n                } else {\r\n                    expandedPaths = (\"columns\" === axisName ? options.columnExpandedPaths : options.rowExpandedPaths) || expandedPaths\r\n                }\r\n            }\r\n            expandLevel = (0, _uiPivot_grid.getExpandedLevel)(options, axisName);\r\n            fillCrossJoins(crossJoins, [], expandLevel, expandIndex, path, options, axisName, cellsString, \"rows\" === axisName ? options.rowTake : options.columnTake, options.totalsOnly);\r\n            (0, _iterator.each)(expandedPaths, function(_, expandedPath) {\r\n                fillCrossJoins(crossJoins, expandedPath, expandLevel, expandIndex, expandedPath, options, axisName, cellsString)\r\n            });\r\n            for (var i = expandLevel; i >= path.length; i--) {\r\n                if (dimensions[i].hierarchyName) {\r\n                    parseOptions.visibleLevels[dimensions[i].hierarchyName] = parseOptions.visibleLevels[dimensions[i].hierarchyName] || [];\r\n                    parseOptions.visibleLevels[dimensions[i].hierarchyName].push(dimensions[i].dataField)\r\n                }\r\n            }\r\n        }\r\n        if (crossJoins.length) {\r\n            var expression = union(crossJoins);\r\n            if (\"rows\" === axisName && options.rowTake) {\r\n                expression = (0, _string.format)(mdxSubset, expression, options.rowSkip > 0 ? options.rowSkip + 1 : 0, options.rowSkip > 0 ? options.rowTake : options.rowTake + 1)\r\n            }\r\n            if (\"columns\" === axisName && options.columnTake) {\r\n                expression = (0, _string.format)(mdxSubset, expression, options.columnSkip > 0 ? options.columnSkip + 1 : 0, options.columnSkip > 0 ? options.columnTake : options.columnTake + 1)\r\n            }\r\n            var axisSet = \"[DX_\".concat(axisName, \"]\");\r\n            result.push(declare(expression, withArray, axisSet));\r\n            if (options.totalsOnly) {\r\n                result.push(declare(\"COUNT(\".concat(axisSet, \")\"), withArray, \"[DX_\".concat(axisName, \"_count]\"), \"member\"))\r\n            }\r\n        }\r\n        if (\"columns\" === axisName && cells.length && !options.skipValues) {\r\n            result.push(cellsString)\r\n        }\r\n        return (0, _string.format)(mdxAxis, crossJoinElements(result), axisName)\r\n    }\r\n\r\n    function generateAxisFieldsFilter(fields) {\r\n        var filterMembers = [];\r\n        (0, _iterator.each)(fields, function(_, field) {\r\n            var dataField = field.dataField;\r\n            var filterExpression = [];\r\n            var filterValues = field.filterValues || [];\r\n            var filterStringExpression;\r\n            if (field.hierarchyName && (0, _type.isNumeric)(field.groupIndex)) {\r\n                return\r\n            }(0, _iterator.each)(filterValues, function(_, filterValue) {\r\n                var filterMdx = dataField + \".\" + preparePathValue(Array.isArray(filterValue) ? filterValue[filterValue.length - 1] : filterValue, dataField);\r\n                if (\"exclude\" === field.filterType) {\r\n                    filterExpression.push(filterMdx + \".parent\");\r\n                    filterMdx = \"Descendants(\" + filterMdx + \")\"\r\n                }\r\n                filterExpression.push(filterMdx)\r\n            });\r\n            if (filterValues.length) {\r\n                filterStringExpression = (0, _string.format)(mdxSet, filterExpression.join(\",\"));\r\n                if (\"exclude\" === field.filterType) {\r\n                    filterStringExpression = \"Except(\" + getAllMembers(field) + \",\" + filterStringExpression + \")\"\r\n                }\r\n                filterMembers.push(filterStringExpression)\r\n            }\r\n        });\r\n        return filterMembers.length ? crossJoinElements(filterMembers) : \"\"\r\n    }\r\n\r\n    function generateFrom(columnsFilter, rowsFilter, filter, cubeName) {\r\n        var from = \"[\" + cubeName + \"]\";\r\n        (0, _iterator.each)([columnsFilter, rowsFilter, filter], function(_, filter) {\r\n            if (filter) {\r\n                from = (0, _string.format)(mdxFilterSelect, filter + \"on 0\", from)\r\n            }\r\n        });\r\n        return from\r\n    }\r\n\r\n    function generateMdxCore(axisStrings, withArray, columns, rows, filters, slice, cubeName) {\r\n        var options = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : {};\r\n        var mdxString = \"\";\r\n        var withString = (withArray.length ? \"with \" + withArray.join(\" \") : \"\") + \" \";\r\n        if (axisStrings.length) {\r\n            var select;\r\n            if (options.totalsOnly) {\r\n                var countMembers = [];\r\n                if (rows.length) {\r\n                    countMembers.push(\"[DX_rows_count]\")\r\n                }\r\n                if (columns.length) {\r\n                    countMembers.push(\"[DX_columns_count]\")\r\n                }\r\n                select = \"{\".concat(countMembers.join(\",\"), \"} on columns\")\r\n            } else {\r\n                select = axisStrings.join(\",\")\r\n            }\r\n            mdxString = withString + (0, _string.format)(mdx, generateFrom(generateAxisFieldsFilter(columns), generateAxisFieldsFilter(rows), generateAxisFieldsFilter(filters || []), cubeName), slice.length ? (0, _string.format)(mdxSlice, slice.join(\",\")) : \"\", select)\r\n        }\r\n        return mdxString\r\n    }\r\n\r\n    function prepareDataFields(withArray, valueFields) {\r\n        return (0, _iterator.map)(valueFields, function(cell) {\r\n            if ((0, _type.isString)(cell.expression)) {\r\n                declare(cell.expression, withArray, cell.dataField, \"member\")\r\n            }\r\n            return cell.dataField\r\n        })\r\n    }\r\n\r\n    function addSlices(slices, options, headerName, path) {\r\n        (0, _iterator.each)(path, function(index, value) {\r\n            var dimension = options[headerName][index];\r\n            if (!dimension.hierarchyName || dimension.hierarchyName !== options[headerName][index + 1].hierarchyName) {\r\n                slices.push(dimension.dataField + \".\" + preparePathValue(value, dimension.dataField))\r\n            }\r\n        })\r\n    }\r\n\r\n    function generateMDX(options, cubeName, parseOptions) {\r\n        var columns = options.columns || [];\r\n        var rows = options.rows || [];\r\n        var values = options.values && options.values.length ? options.values : [{\r\n            dataField: \"[Measures]\"\r\n        }];\r\n        var slice = [];\r\n        var withArray = [];\r\n        var axisStrings = [];\r\n        var dataFields = prepareDataFields(withArray, values);\r\n        parseOptions.measureCount = options.skipValues ? 1 : values.length;\r\n        parseOptions.visibleLevels = {};\r\n        if (options.headerName && options.path) {\r\n            addSlices(slice, options, options.headerName, options.path)\r\n        }\r\n        if (options.headerName && options.oppositePath) {\r\n            addSlices(slice, options, \"rows\" === options.headerName ? \"columns\" : \"rows\", options.oppositePath)\r\n        }\r\n        if (columns.length || dataFields.length) {\r\n            axisStrings.push(generateAxisMdx(options, \"columns\", dataFields, withArray, parseOptions))\r\n        }\r\n        if (rows.length) {\r\n            axisStrings.push(generateAxisMdx(options, \"rows\", dataFields, withArray, parseOptions))\r\n        }\r\n        return generateMdxCore(axisStrings, withArray, columns, rows, options.filters, slice, cubeName, options)\r\n    }\r\n\r\n    function createDrillDownAxisSlice(slice, fields, path) {\r\n        (0, _iterator.each)(path, function(index, value) {\r\n            var field = fields[index];\r\n            if (field.hierarchyName && (fields[index + 1] || {}).hierarchyName === field.hierarchyName) {\r\n                return\r\n            }\r\n            slice.push(field.dataField + \".\" + preparePathValue(value, field.dataField))\r\n        })\r\n    }\r\n\r\n    function generateDrillDownMDX(options, cubeName, params) {\r\n        var columns = options.columns || [];\r\n        var rows = options.rows || [];\r\n        var values = options.values && options.values.length ? options.values : [{\r\n            dataField: \"[Measures]\"\r\n        }];\r\n        var slice = [];\r\n        var withArray = [];\r\n        var axisStrings = [];\r\n        var dataFields = prepareDataFields(withArray, values);\r\n        var maxRowCount = params.maxRowCount;\r\n        var customColumns = params.customColumns || [];\r\n        var customColumnsString = customColumns.length > 0 ? \" return \" + customColumns.join(\",\") : \"\";\r\n        createDrillDownAxisSlice(slice, columns, params.columnPath || []);\r\n        createDrillDownAxisSlice(slice, rows, params.rowPath || []);\r\n        if (columns.length || columns.length || dataFields.length) {\r\n            axisStrings.push([(dataFields[params.dataIndex] || dataFields[0]) + \" on 0\"])\r\n        }\r\n        var coreMDX = generateMdxCore(axisStrings, withArray, columns, rows, options.filters, slice, cubeName);\r\n        return coreMDX ? \"drillthrough\" + (maxRowCount > 0 ? \" maxrows \" + maxRowCount : \"\") + coreMDX + customColumnsString : coreMDX\r\n    }\r\n\r\n    function getNumber(str) {\r\n        return parseInt(str, 10)\r\n    }\r\n\r\n    function parseValue(valueText) {\r\n        return (0, _type.isNumeric)(valueText) ? parseFloat(valueText) : valueText\r\n    }\r\n\r\n    function getFirstChild(node, tagName) {\r\n        return (node.getElementsByTagName(tagName) || [])[0]\r\n    }\r\n\r\n    function getFirstChildText(node, childTagName) {\r\n        return getNodeText(getFirstChild(node, childTagName))\r\n    }\r\n\r\n    function parseAxes(xml, skipValues) {\r\n        var axes = [];\r\n        (0, _iterator.each)(xml.getElementsByTagName(\"Axis\"), function(_, axisElement) {\r\n            var name = axisElement.getAttribute(\"name\");\r\n            var axis = [];\r\n            var index = 0;\r\n            if (0 === name.indexOf(\"Axis\") && (0, _type.isNumeric)(getNumber(name.substr(4)))) {\r\n                axes.push(axis);\r\n                (0, _iterator.each)(axisElement.getElementsByTagName(\"Tuple\"), function(_, tupleElement) {\r\n                    var tupleMembers = tupleElement.childNodes;\r\n                    var levelSum = 0;\r\n                    var members = [];\r\n                    var membersCount = skipValues ? tupleMembers.length : tupleMembers.length - 1;\r\n                    var isAxisWithMeasure = 1 === axes.length;\r\n                    if (isAxisWithMeasure) {\r\n                        membersCount--\r\n                    }\r\n                    axis.push(members);\r\n                    for (var i = membersCount; i >= 0; i--) {\r\n                        var tuple = tupleMembers[i];\r\n                        var level = getNumber(getFirstChildText(tuple, \"LNum\"));\r\n                        members[i] = {\r\n                            caption: getFirstChildText(tuple, \"Caption\"),\r\n                            value: parseValue(getFirstChildText(tuple, \"MEMBER_VALUE\")),\r\n                            level: level,\r\n                            index: index++,\r\n                            hasValue: !levelSum && (!!level || 0 === i),\r\n                            name: getFirstChildText(tuple, \"UName\"),\r\n                            hierarchyName: tupleMembers[i].getAttribute(\"Hierarchy\"),\r\n                            parentName: getFirstChildText(tuple, \"PARENT_UNIQUE_NAME\"),\r\n                            levelName: getFirstChildText(tuple, \"LName\")\r\n                        };\r\n                        levelSum += level\r\n                    }\r\n                })\r\n            }\r\n        });\r\n        while (axes.length < 2) {\r\n            axes.push([\r\n                [{\r\n                    level: 0\r\n                }]\r\n            ])\r\n        }\r\n        return axes\r\n    }\r\n\r\n    function getNodeText(node) {\r\n        return node && node && (node.textContent || node.text || node.innerHTML) || \"\"\r\n    }\r\n\r\n    function parseCells(xml, axes, measureCount) {\r\n        var cells = [];\r\n        var cell = [];\r\n        var index = 0;\r\n        var cellsOriginal = [];\r\n        var cellElements = xml.getElementsByTagName(\"Cell\");\r\n        var errorDictionary = {};\r\n        for (var i = 0; i < cellElements.length; i++) {\r\n            var xmlCell = cellElements[i];\r\n            var valueElement = xmlCell.getElementsByTagName(\"Value\")[0];\r\n            var errorElements = valueElement && valueElement.getElementsByTagName(\"Error\") || [];\r\n            var text = 0 === errorElements.length ? getNodeText(valueElement) : \"#N/A\";\r\n            var value = parseFloat(text);\r\n            var _isNumeric = text - value + 1 > 0;\r\n            var cellOrdinal = getNumber(xmlCell.getAttribute(\"CellOrdinal\"));\r\n            if (errorElements.length) {\r\n                errorDictionary[getNodeText(errorElements[0].getElementsByTagName(\"ErrorCode\")[0])] = getNodeText(errorElements[0].getElementsByTagName(\"Description\")[0])\r\n            }\r\n            cellsOriginal[cellOrdinal] = {\r\n                value: _isNumeric ? value : text || null\r\n            }\r\n        }(0, _iterator.each)(axes[1], function() {\r\n            var row = [];\r\n            cells.push(row);\r\n            (0, _iterator.each)(axes[0], function() {\r\n                var measureIndex = index % measureCount;\r\n                if (0 === measureIndex) {\r\n                    cell = [];\r\n                    row.push(cell)\r\n                }\r\n                cell.push(cellsOriginal[index] ? cellsOriginal[index].value : null);\r\n                index++\r\n            })\r\n        });\r\n        Object.keys(errorDictionary).forEach(function(key) {\r\n            errors.log(\"W4002\", errorDictionary[key])\r\n        });\r\n        return cells\r\n    }\r\n\r\n    function preparePathValue(pathValue, dataField) {\r\n        if (pathValue) {\r\n            pathValue = (0, _type.isString)(pathValue) && pathValue.indexOf(\"&\") !== -1 ? pathValue : \"[\" + pathValue + \"]\";\r\n            if (dataField && 0 === pathValue.indexOf(dataField + \".\")) {\r\n                pathValue = pathValue.slice(dataField.length + 1, pathValue.length)\r\n            }\r\n        }\r\n        return pathValue\r\n    }\r\n\r\n    function getItem(hash, name, member, index) {\r\n        var item = hash[name];\r\n        if (!item) {\r\n            item = {};\r\n            hash[name] = item\r\n        }\r\n        if (!(0, _type.isDefined)(item.value) && member) {\r\n            item.text = member.caption;\r\n            item.value = member.value;\r\n            item.key = name ? name : \"\";\r\n            item.levelName = member.levelName;\r\n            item.hierarchyName = member.hierarchyName;\r\n            item.parentName = member.parentName;\r\n            item.index = index;\r\n            item.level = member.level\r\n        }\r\n        return item\r\n    }\r\n\r\n    function getVisibleChildren(item, visibleLevels) {\r\n        var result = [];\r\n        var children = item.children && (item.children.length ? item.children : Object.keys(item.children.grandTotalHash || {}).reduce(function(result, name) {\r\n            return result.concat(item.children.grandTotalHash[name].children)\r\n        }, []));\r\n        var firstChild = children && children[0];\r\n        if (firstChild && (visibleLevels[firstChild.hierarchyName] && (0, _array.inArray)(firstChild.levelName, visibleLevels[firstChild.hierarchyName]) !== -1 || !visibleLevels[firstChild.hierarchyName] || 0 === firstChild.level)) {\r\n            var newChildren = children.filter(function(child) {\r\n                return child.hierarchyName === firstChild.hierarchyName\r\n            });\r\n            newChildren.grandTotalHash = children.grandTotalHash;\r\n            return newChildren\r\n        } else {\r\n            if (firstChild) {\r\n                for (var i = 0; i < children.length; i++) {\r\n                    if (children[i].hierarchyName === firstChild.hierarchyName) {\r\n                        result.push.apply(result, getVisibleChildren(children[i], visibleLevels))\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    }\r\n\r\n    function processMember(dataIndex, member, parentItem) {\r\n        var children = parentItem.children = parentItem.children || [];\r\n        var hash = children.hash = children.hash || {};\r\n        var grandTotalHash = children.grandTotalHash = children.grandTotalHash || {};\r\n        if (member.parentName) {\r\n            parentItem = getItem(hash, member.parentName);\r\n            children = parentItem.children = parentItem.children || []\r\n        }\r\n        var currentItem = getItem(hash, member.name, member, dataIndex);\r\n        if (member.hasValue && !currentItem.added) {\r\n            currentItem.index = dataIndex;\r\n            currentItem.added = true;\r\n            children.push(currentItem)\r\n        }\r\n        if ((!parentItem.value || !parentItem.parentName) && member.parentName) {\r\n            grandTotalHash[member.parentName] = parentItem\r\n        } else {\r\n            if (grandTotalHash[parentItem.name]) {\r\n                delete grandTotalHash[member.parentName]\r\n            }\r\n        }\r\n        return currentItem\r\n    }\r\n\r\n    function getGrandTotalIndex(parentItem, visibleLevels) {\r\n        var grandTotalIndex;\r\n        if (1 === parentItem.children.length && \"\" === parentItem.children[0].parentName) {\r\n            grandTotalIndex = parentItem.children[0].index;\r\n            var grandTotalHash = parentItem.children.grandTotalHash;\r\n            parentItem.children = parentItem.children[0].children || [];\r\n            parentItem.children.grandTotalHash = grandTotalHash;\r\n            parentItem.children = getVisibleChildren(parentItem, visibleLevels)\r\n        } else {\r\n            if (0 === parentItem.children.length) {\r\n                grandTotalIndex = 0\r\n            }\r\n        }\r\n        return grandTotalIndex\r\n    }\r\n\r\n    function fillDataSourceAxes(dataSourceAxis, axisTuples, measureCount, visibleLevels) {\r\n        var result = [];\r\n        (0, _iterator.each)(axisTuples, function(tupleIndex, members) {\r\n            var parentItem = {\r\n                children: result\r\n            };\r\n            var dataIndex = (0, _type.isDefined)(measureCount) ? Math.floor(tupleIndex / measureCount) : tupleIndex;\r\n            (0, _iterator.each)(members, function(_, member) {\r\n                parentItem = processMember(dataIndex, member, parentItem)\r\n            })\r\n        });\r\n        var parentItem = {\r\n            children: result\r\n        };\r\n        parentItem.children = getVisibleChildren(parentItem, visibleLevels);\r\n        var grandTotalIndex = getGrandTotalIndex(parentItem, visibleLevels);\r\n        (0, _uiPivot_grid.foreachTree)(parentItem.children, function(items) {\r\n            var item = items[0];\r\n            var children = getVisibleChildren(item, visibleLevels);\r\n            if (children.length) {\r\n                item.children = children\r\n            } else {\r\n                delete item.children\r\n            }\r\n            delete item.levelName;\r\n            delete item.hierarchyName;\r\n            delete item.added;\r\n            delete item.parentName;\r\n            delete item.level\r\n        }, true);\r\n        (0, _iterator.each)(parentItem.children || [], function(_, e) {\r\n            dataSourceAxis.push(e)\r\n        });\r\n        return grandTotalIndex\r\n    }\r\n\r\n    function checkError(xml) {\r\n        var faultElementNS = xml.getElementsByTagName(\"soap:Fault\");\r\n        var faultElement = xml.getElementsByTagName(\"Fault\");\r\n        var errorElement = (0, _renderer.default)([].slice.call(faultElement.length ? faultElement : faultElementNS)).find(\"Error\");\r\n        if (errorElement.length) {\r\n            var description = errorElement.attr(\"Description\");\r\n            var error = new errors.Error(\"E4000\", description);\r\n            errors.log(\"E4000\", description);\r\n            return error\r\n        }\r\n        return null\r\n    }\r\n\r\n    function parseResult(xml, parseOptions) {\r\n        var dataSource = {\r\n            columns: [],\r\n            rows: []\r\n        };\r\n        var measureCount = parseOptions.measureCount;\r\n        var axes = parseAxes(xml, parseOptions.skipValues);\r\n        dataSource.grandTotalColumnIndex = fillDataSourceAxes(dataSource.columns, axes[0], measureCount, parseOptions.visibleLevels);\r\n        dataSource.grandTotalRowIndex = fillDataSourceAxes(dataSource.rows, axes[1], void 0, parseOptions.visibleLevels);\r\n        dataSource.values = parseCells(xml, axes, measureCount);\r\n        return dataSource\r\n    }\r\n\r\n    function parseDiscoverRowSet(xml, schema, dimensions, translatedDisplayFolders) {\r\n        var result = [];\r\n        var isMeasure = \"MEASURE\" === schema;\r\n        var displayFolderField = isMeasure ? \"MEASUREGROUP_NAME\" : schema + \"_DISPLAY_FOLDER\";\r\n        (0, _iterator.each)(xml.getElementsByTagName(\"row\"), function(_, row) {\r\n            var hierarchyName = \"LEVEL\" === schema ? getFirstChildText(row, \"HIERARCHY_UNIQUE_NAME\") : void 0;\r\n            var levelNumber = getFirstChildText(row, \"LEVEL_NUMBER\");\r\n            var displayFolder = getFirstChildText(row, displayFolderField);\r\n            if (isMeasure) {\r\n                displayFolder = translatedDisplayFolders[displayFolder] || displayFolder\r\n            }\r\n            if ((\"0\" !== levelNumber || \"true\" !== getFirstChildText(row, schema + \"_IS_VISIBLE\")) && getFirstChildText(row, \"DIMENSION_TYPE\") !== MD_DIMTYPE_MEASURE) {\r\n                var dimension = isMeasure ? MEASURE_DEMENSION_KEY : getFirstChildText(row, \"DIMENSION_UNIQUE_NAME\");\r\n                var dataField = getFirstChildText(row, schema + \"_UNIQUE_NAME\");\r\n                result.push({\r\n                    dimension: dimensions.names[dimension] || dimension,\r\n                    groupIndex: levelNumber ? getNumber(levelNumber) - 1 : void 0,\r\n                    dataField: dataField,\r\n                    caption: getFirstChildText(row, schema + \"_CAPTION\"),\r\n                    hierarchyName: hierarchyName,\r\n                    groupName: hierarchyName,\r\n                    displayFolder: displayFolder,\r\n                    isMeasure: isMeasure,\r\n                    isDefault: !!dimensions.defaultHierarchies[dataField]\r\n                })\r\n            }\r\n        });\r\n        return result\r\n    }\r\n\r\n    function parseMeasureGroupDiscoverRowSet(xml) {\r\n        var measureGroups = {};\r\n        (0, _iterator.each)(xml.getElementsByTagName(\"row\"), function(_, row) {\r\n            measureGroups[getFirstChildText(row, \"MEASUREGROUP_NAME\")] = getFirstChildText(row, \"MEASUREGROUP_CAPTION\")\r\n        });\r\n        return measureGroups\r\n    }\r\n\r\n    function parseDimensionsDiscoverRowSet(xml) {\r\n        var result = {\r\n            names: {},\r\n            defaultHierarchies: {}\r\n        };\r\n        (0, _iterator.each)((0, _renderer.default)(xml).find(\"row\"), function() {\r\n            var $row = (0, _renderer.default)(this);\r\n            var type = $row.children(\"DIMENSION_TYPE\").text();\r\n            var dimensionName = type === MD_DIMTYPE_MEASURE ? MEASURE_DEMENSION_KEY : $row.children(\"DIMENSION_UNIQUE_NAME\").text();\r\n            result.names[dimensionName] = $row.children(\"DIMENSION_CAPTION\").text();\r\n            result.defaultHierarchies[$row.children(\"DEFAULT_HIERARCHY\").text()] = true\r\n        });\r\n        return result\r\n    }\r\n\r\n    function parseStringWithUnicodeSymbols(str) {\r\n        str = str.replace(/_x(....)_/g, function(whole, group1) {\r\n            return String.fromCharCode(parseInt(group1, 16))\r\n        });\r\n        var stringArray = str.match(/\\[.+?\\]/gi);\r\n        if (stringArray && stringArray.length) {\r\n            str = stringArray[stringArray.length - 1]\r\n        }\r\n        return str.replace(/\\[/gi, \"\").replace(/\\]/gi, \"\").replace(/\\$/gi, \"\").replace(/\\./gi, \" \")\r\n    }\r\n\r\n    function parseDrillDownRowSet(xml) {\r\n        var rows = xml.getElementsByTagName(\"row\");\r\n        var result = [];\r\n        var columnNames = {};\r\n        for (var i = 0; i < rows.length; i++) {\r\n            var children = rows[i].childNodes;\r\n            var item = {};\r\n            for (var j = 0; j < children.length; j++) {\r\n                var tagName = children[j].tagName;\r\n                var name = columnNames[tagName] = columnNames[tagName] || parseStringWithUnicodeSymbols(tagName);\r\n                item[name] = getNodeText(children[j])\r\n            }\r\n            result.push(item)\r\n        }\r\n        return result\r\n    }\r\n\r\n    function sendQuery(storeOptions, mdxString) {\r\n        mdxString = (0, _renderer.default)(\"<div>\").text(mdxString).html();\r\n        return execXMLA(storeOptions, (0, _string.format)(execute, mdxString, storeOptions.catalog, getLocaleIdProperty()))\r\n    }\r\n\r\n    function processTotalCount(data, options, totalCountXml) {\r\n        var axes = [];\r\n        var columnOptions = options.columns || [];\r\n        var rowOptions = options.rows || [];\r\n        if (columnOptions.length) {\r\n            axes.push({})\r\n        }\r\n        if (rowOptions.length) {\r\n            axes.push({})\r\n        }\r\n        var cells = parseCells(totalCountXml, [\r\n            [{}],\r\n            [{}, {}]\r\n        ], 1);\r\n        if (!columnOptions.length && rowOptions.length) {\r\n            data.rowCount = Math.max(cells[0][0][0] - 1, 0)\r\n        }\r\n        if (!rowOptions.length && columnOptions.length) {\r\n            data.columnCount = Math.max(cells[0][0][0] - 1, 0)\r\n        }\r\n        if (rowOptions.length && columnOptions.length) {\r\n            data.rowCount = Math.max(cells[0][0][0] - 1, 0);\r\n            data.columnCount = Math.max(cells[1][0][0] - 1, 0)\r\n        }\r\n        if (void 0 !== data.rowCount && options.rowTake) {\r\n            data.rows = _toConsumableArray(Array(options.rowSkip)).concat(data.rows);\r\n            data.rows.length = data.rowCount;\r\n            for (var i = 0; i < data.rows.length; i++) {\r\n                data.rows[i] = data.rows[i] || {}\r\n            }\r\n        }\r\n        if (void 0 !== data.columnCount && options.columnTake) {\r\n            data.columns = _toConsumableArray(Array(options.columnSkip)).concat(data.columns);\r\n            data.columns.length = data.columnCount;\r\n            for (var _i = 0; _i < data.columns.length; _i++) {\r\n                data.columns[_i] = data.columns[_i] || {}\r\n            }\r\n        }\r\n    }\r\n    return {\r\n        ctor: function(options) {\r\n            this._options = options\r\n        },\r\n        getFields: function() {\r\n            var options = this._options;\r\n            var catalog = options.catalog;\r\n            var cube = options.cube;\r\n            var localeIdProperty = getLocaleIdProperty();\r\n            var dimensionsRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_DIMENSIONS\", localeIdProperty));\r\n            var measuresRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_MEASURES\", localeIdProperty));\r\n            var hierarchiesRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_HIERARCHIES\", localeIdProperty));\r\n            var levelsRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_LEVELS\", localeIdProperty));\r\n            var result = new _deferred.Deferred;\r\n            (0, _deferred.when)(dimensionsRequest, measuresRequest, hierarchiesRequest, levelsRequest).then(function(dimensionsResponse, measuresResponse, hierarchiesResponse, levelsResponse) {\r\n                execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_MEASUREGROUPS\", localeIdProperty)).done(function(measureGroupsResponse) {\r\n                    var dimensions = parseDimensionsDiscoverRowSet(dimensionsResponse);\r\n                    var hierarchies = parseDiscoverRowSet(hierarchiesResponse, \"HIERARCHY\", dimensions);\r\n                    var levels = parseDiscoverRowSet(levelsResponse, \"LEVEL\", dimensions);\r\n                    var measureGroups = parseMeasureGroupDiscoverRowSet(measureGroupsResponse);\r\n                    var fields = parseDiscoverRowSet(measuresResponse, \"MEASURE\", dimensions, measureGroups).concat(hierarchies);\r\n                    var levelsByHierarchy = {};\r\n                    (0, _iterator.each)(levels, function(_, level) {\r\n                        levelsByHierarchy[level.hierarchyName] = levelsByHierarchy[level.hierarchyName] || [];\r\n                        levelsByHierarchy[level.hierarchyName].push(level)\r\n                    });\r\n                    (0, _iterator.each)(hierarchies, function(_, hierarchy) {\r\n                        if (levelsByHierarchy[hierarchy.dataField] && levelsByHierarchy[hierarchy.dataField].length > 1) {\r\n                            hierarchy.groupName = hierarchy.hierarchyName = hierarchy.dataField;\r\n                            fields.push.apply(fields, levelsByHierarchy[hierarchy.hierarchyName])\r\n                        }\r\n                    });\r\n                    result.resolve(fields)\r\n                }).fail(result.reject)\r\n            }).fail(result.reject);\r\n            return result\r\n        },\r\n        load: function load(options) {\r\n            var result = new _deferred.Deferred;\r\n            var storeOptions = this._options;\r\n            var parseOptions = {\r\n                skipValues: options.skipValues\r\n            };\r\n            var mdxString = generateMDX(options, storeOptions.cube, parseOptions);\r\n            var rowCountMdx;\r\n            if (options.rowSkip || options.rowTake || options.columnTake || options.columnSkip) {\r\n                rowCountMdx = generateMDX((0, _extend.extend)({}, options, {\r\n                    totalsOnly: true,\r\n                    rowSkip: null,\r\n                    rowTake: null,\r\n                    columnSkip: null,\r\n                    columnTake: null\r\n                }), storeOptions.cube, {})\r\n            }\r\n            var load = function() {\r\n                if (mdxString) {\r\n                    (0, _deferred.when)(sendQuery(storeOptions, mdxString), rowCountMdx && sendQuery(storeOptions, rowCountMdx)).done(function(executeXml, rowCountXml) {\r\n                        var error = checkError(executeXml) || rowCountXml && checkError(rowCountXml);\r\n                        if (!error) {\r\n                            var response = parseResult(executeXml, parseOptions);\r\n                            if (rowCountXml) {\r\n                                processTotalCount(response, options, rowCountXml)\r\n                            }\r\n                            result.resolve(response)\r\n                        } else {\r\n                            result.reject(error)\r\n                        }\r\n                    }).fail(result.reject)\r\n                } else {\r\n                    result.resolve({\r\n                        columns: [],\r\n                        rows: [],\r\n                        values: [],\r\n                        grandTotalColumnIndex: 0,\r\n                        grandTotalRowIndex: 0\r\n                    })\r\n                }\r\n            };\r\n            if (options.delay) {\r\n                setTimeout(load, options.delay)\r\n            } else {\r\n                load()\r\n            }\r\n            return result\r\n        },\r\n        supportPaging: function() {\r\n            return true\r\n        },\r\n        getDrillDownItems: function(options, params) {\r\n            var result = new _deferred.Deferred;\r\n            var storeOptions = this._options;\r\n            var mdxString = generateDrillDownMDX(options, storeOptions.cube, params);\r\n            if (mdxString) {\r\n                (0, _deferred.when)(sendQuery(storeOptions, mdxString)).done(function(executeXml) {\r\n                    var error = checkError(executeXml);\r\n                    if (!error) {\r\n                        result.resolve(parseDrillDownRowSet(executeXml))\r\n                    } else {\r\n                        result.reject(error)\r\n                    }\r\n                }).fail(result.reject)\r\n            } else {\r\n                result.resolve([])\r\n            }\r\n            return result\r\n        },\r\n        key: _common.noop,\r\n        filter: _common.noop\r\n    }\r\n}()).include(_uiPivot_grid.storeDrillDownMixin);\r\nexports.XmlaStore = XmlaStore;\r\n","/**\r\n * DevExtreme (core/utils/selection_filter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.SelectionFilterCreator = void 0;\r\nvar _common = require(\"./common\");\r\nvar _type = require(\"./type\");\r\nvar SelectionFilterCreator = function(selectedItemKeys, isSelectAll) {\r\n    this.getLocalFilter = function(keyGetter, equalKeys, equalByReference, keyExpr) {\r\n        equalKeys = void 0 === equalKeys ? _common.equalByValue : equalKeys;\r\n        return functionFilter.bind(this, equalKeys, keyGetter, equalByReference, keyExpr)\r\n    };\r\n    this.getExpr = function(keyExpr) {\r\n        if (!keyExpr) {\r\n            return\r\n        }\r\n        var filterExpr;\r\n        selectedItemKeys.forEach(function(key, index) {\r\n            filterExpr = filterExpr || [];\r\n            var filterExprPart;\r\n            if (index > 0) {\r\n                filterExpr.push(isSelectAll ? \"and\" : \"or\")\r\n            }\r\n            if ((0, _type.isString)(keyExpr)) {\r\n                filterExprPart = getFilterForPlainKey(keyExpr, key)\r\n            } else {\r\n                filterExprPart = getFilterForCompositeKey(keyExpr, key)\r\n            }\r\n            filterExpr.push(filterExprPart)\r\n        });\r\n        if (filterExpr && 1 === filterExpr.length) {\r\n            filterExpr = filterExpr[0]\r\n        }\r\n        return filterExpr\r\n    };\r\n    this.getCombinedFilter = function(keyExpr, dataSourceFilter) {\r\n        var filterExpr = this.getExpr(keyExpr);\r\n        var combinedFilter = filterExpr;\r\n        if (isSelectAll && dataSourceFilter) {\r\n            if (filterExpr) {\r\n                combinedFilter = [];\r\n                combinedFilter.push(filterExpr);\r\n                combinedFilter.push(dataSourceFilter)\r\n            } else {\r\n                combinedFilter = dataSourceFilter\r\n            }\r\n        }\r\n        return combinedFilter\r\n    };\r\n    var selectedItemKeyHashesMap;\r\n    var getSelectedItemKeyHashesMap = function(selectedItemKeys) {\r\n        if (!selectedItemKeyHashesMap) {\r\n            selectedItemKeyHashesMap = {};\r\n            for (var i = 0; i < selectedItemKeys.length; i++) {\r\n                selectedItemKeyHashesMap[(0, _common.getKeyHash)(selectedItemKeys[i])] = true\r\n            }\r\n        }\r\n        return selectedItemKeyHashesMap\r\n    };\r\n    var normalizeKeys = function(keys, keyOf, keyExpr) {\r\n        return Array.isArray(keyExpr) ? keys.map(function(key) {\r\n            return keyOf(key)\r\n        }) : keys\r\n    };\r\n\r\n    function functionFilter(equalKeys, keyOf, equalByReference, keyExpr, item) {\r\n        var key = keyOf(item);\r\n        var keyHash;\r\n        var i;\r\n        if (!equalByReference) {\r\n            keyHash = (0, _common.getKeyHash)(key);\r\n            if (!(0, _type.isObject)(keyHash)) {\r\n                var selectedKeyHashesMap = getSelectedItemKeyHashesMap(normalizeKeys(selectedItemKeys, keyOf, keyExpr));\r\n                if (selectedKeyHashesMap[keyHash]) {\r\n                    return !isSelectAll\r\n                }\r\n                return !!isSelectAll\r\n            }\r\n        }\r\n        for (i = 0; i < selectedItemKeys.length; i++) {\r\n            if (equalKeys(selectedItemKeys[i], key)) {\r\n                return !isSelectAll\r\n            }\r\n        }\r\n        return !!isSelectAll\r\n    }\r\n\r\n    function getFilterForPlainKey(keyExpr, keyValue) {\r\n        if (void 0 === keyValue) {\r\n            return\r\n        }\r\n        return [keyExpr, isSelectAll ? \"<>\" : \"=\", keyValue]\r\n    }\r\n\r\n    function getFilterForCompositeKey(keyExpr, itemKeyValue) {\r\n        var filterExpr = [];\r\n        for (var i = 0, length = keyExpr.length; i < length; i++) {\r\n            var currentKeyExpr = keyExpr[i];\r\n            var currentKeyValue = itemKeyValue && itemKeyValue[currentKeyExpr];\r\n            var filterExprPart = getFilterForPlainKey(currentKeyExpr, currentKeyValue);\r\n            if (!filterExprPart) {\r\n                break\r\n            }\r\n            if (i > 0) {\r\n                filterExpr.push(isSelectAll ? \"or\" : \"and\")\r\n            }\r\n            filterExpr.push(filterExprPart)\r\n        }\r\n        return filterExpr\r\n    }\r\n};\r\nexports.SelectionFilterCreator = SelectionFilterCreator;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.validating.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.validating\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar EditingControllerExtender = (0, _extend.extend)({}, _uiGrid_core.default.extenders.controllers.editing);\r\ndelete EditingControllerExtender.processItems;\r\ndelete EditingControllerExtender.processDataItem;\r\n_uiTree_list.default.registerModule(\"validating\", {\r\n    defaultOptions: _uiGrid_core.default.defaultOptions,\r\n    controllers: _uiGrid_core.default.controllers,\r\n    extenders: {\r\n        controllers: {\r\n            editing: EditingControllerExtender,\r\n            editorFactory: _uiGrid_core.default.extenders.controllers.editorFactory\r\n        },\r\n        views: _uiGrid_core.default.extenders.views\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.modules\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar _default = _objectSpread(_objectSpread(_objectSpread({}, _uiGrid_core2.default), _uiGrid_core.default), {}, {\r\n    modules: []\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/color_box/color_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\nvar _color_view = _interopRequireDefault(require(\"./color_view\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"../drop_down_editor/ui.drop_down_editor\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COLOR_BOX_CLASS = \"dx-colorbox\";\r\nvar COLOR_BOX_INPUT_CLASS = COLOR_BOX_CLASS + \"-input\";\r\nvar COLOR_BOX_INPUT_CONTAINER_CLASS = COLOR_BOX_INPUT_CLASS + \"-container\";\r\nvar COLOR_BOX_COLOR_RESULT_PREVIEW_CLASS = COLOR_BOX_CLASS + \"-color-result-preview\";\r\nvar COLOR_BOX_COLOR_IS_NOT_DEFINED = COLOR_BOX_CLASS + \"-color-is-not-defined\";\r\nvar COLOR_BOX_OVERLAY_CLASS = COLOR_BOX_CLASS + \"-overlay\";\r\nvar COLOR_BOX_CONTAINER_CELL_CLASS = \"dx-colorview-container-cell\";\r\nvar COLOR_BOX_BUTTON_CELL_CLASS = \"dx-colorview-button-cell\";\r\nvar COLOR_BOX_BUTTONS_CONTAINER_CLASS = \"dx-colorview-buttons-container\";\r\nvar COLOR_BOX_APPLY_BUTTON_CLASS = \"dx-colorview-apply-button\";\r\nvar COLOR_BOX_CANCEL_BUTTON_CLASS = \"dx-colorview-cancel-button\";\r\nvar colorEditorPrototype = _color_view.default.prototype;\r\nvar colorUtils = {\r\n    makeTransparentBackground: colorEditorPrototype._makeTransparentBackground.bind(colorEditorPrototype),\r\n    makeRgba: colorEditorPrototype._makeRgba.bind(colorEditorPrototype)\r\n};\r\nvar ColorBox = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        var arrowHandler = function(e) {\r\n            e.stopPropagation();\r\n            if (this.option(\"opened\")) {\r\n                e.preventDefault();\r\n                return true\r\n            }\r\n        };\r\n        var upArrowHandler = function(e) {\r\n            if (!this.option(\"opened\")) {\r\n                e.preventDefault();\r\n                return false\r\n            }\r\n            if (e.altKey) {\r\n                this.close();\r\n                return false\r\n            }\r\n            return true\r\n        };\r\n        var downArrowHandler = function(e) {\r\n            if (!this.option(\"opened\") && !e.altKey) {\r\n                e.preventDefault();\r\n                return false\r\n            }\r\n            if (!this.option(\"opened\") && e.altKey) {\r\n                this._validatedOpening();\r\n                return false\r\n            }\r\n            return true\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            tab: function(e) {\r\n                if (this.option(\"opened\")) {\r\n                    e.preventDefault();\r\n                    this._colorView._rgbInputs[0].focus()\r\n                }\r\n            },\r\n            enter: this._enterKeyHandler,\r\n            leftArrow: arrowHandler,\r\n            rightArrow: arrowHandler,\r\n            upArrow: upArrowHandler,\r\n            downArrow: downArrowHandler\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            editAlphaChannel: false,\r\n            applyValueMode: \"useButtons\",\r\n            keyStep: 1,\r\n            fieldTemplate: null,\r\n            buttonsLocation: \"bottom after\"\r\n        })\r\n    },\r\n    _popupHidingHandler: function() {\r\n        this.callBase();\r\n        if (\"useButtons\" === this.option(\"applyValueMode\")) {\r\n            this._updateColorViewValue(this.option(\"value\"))\r\n        }\r\n    },\r\n    _popupConfig: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            width: \"\"\r\n        })\r\n    },\r\n    _contentReadyHandler: function() {\r\n        this._createColorView();\r\n        this._addPopupBottomClasses()\r\n    },\r\n    _addPopupBottomClasses: function() {\r\n        var $popupBottom = this._popup.bottomToolbar();\r\n        if ($popupBottom) {\r\n            $popupBottom.addClass(COLOR_BOX_CONTAINER_CELL_CLASS).addClass(COLOR_BOX_BUTTON_CELL_CLASS).find(\".dx-toolbar-items-container\").addClass(COLOR_BOX_BUTTONS_CONTAINER_CLASS);\r\n            $popupBottom.find(\".dx-popup-done\").addClass(COLOR_BOX_APPLY_BUTTON_CLASS);\r\n            $popupBottom.find(\".dx-popup-cancel\").addClass(COLOR_BOX_CANCEL_BUTTON_CLASS)\r\n        }\r\n    },\r\n    _createColorView: function() {\r\n        this._popup.overlayContent().addClass(COLOR_BOX_OVERLAY_CLASS);\r\n        var $colorView = (0, _renderer.default)(\"<div>\").appendTo(this._popup.$content());\r\n        this._colorView = this._createComponent($colorView, _color_view.default, this._colorViewConfig());\r\n        this._colorView.registerKeyHandler(\"escape\", this._escapeHandler.bind(this));\r\n        _events_engine.default.on($colorView, \"focus\", function() {\r\n            this.focus()\r\n        }.bind(this))\r\n    },\r\n    _escapeHandler: function() {\r\n        this.close();\r\n        this.focus()\r\n    },\r\n    _applyNewColor: function(value) {\r\n        this.option(\"value\", value);\r\n        if (value) {\r\n            colorUtils.makeTransparentBackground(this._$colorResultPreview, value)\r\n        }\r\n        if (this._colorViewEnterKeyPressed) {\r\n            this.close();\r\n            this._colorViewEnterKeyPressed = false\r\n        }\r\n    },\r\n    _colorViewConfig: function() {\r\n        var that = this;\r\n        return {\r\n            value: that.option(\"value\"),\r\n            matchValue: that.option(\"value\"),\r\n            editAlphaChannel: that.option(\"editAlphaChannel\"),\r\n            applyValueMode: that.option(\"applyValueMode\"),\r\n            focusStateEnabled: that.option(\"focusStateEnabled\"),\r\n            stylingMode: this.option(\"stylingMode\"),\r\n            onEnterKeyPressed: function() {\r\n                that._colorViewEnterKeyPressed = true;\r\n                if (that._colorView.option(\"value\") !== that.option(\"value\")) {\r\n                    that._applyNewColor(that._colorView.option(\"value\"));\r\n                    that.close()\r\n                }\r\n            },\r\n            onValueChanged: function(args) {\r\n                if (colorUtils.makeRgba(args.value) === args.previousValue) {\r\n                    return\r\n                }\r\n                var instantlyMode = \"instantly\" === that.option(\"applyValueMode\");\r\n                if (!instantlyMode && !that._colorViewEnterKeyPressed) {\r\n                    return\r\n                }\r\n                that._applyNewColor(args.value)\r\n            }\r\n        }\r\n    },\r\n    _enterKeyHandler: function() {\r\n        var newValue = this._input().val();\r\n        var value = this.option(\"value\");\r\n        var oldValue = this.option(\"editAlphaChannel\") ? colorUtils.makeRgba(value) : value;\r\n        if (!newValue) {\r\n            return false\r\n        }\r\n        var color = new _color.default(newValue);\r\n        if (color.colorIsInvalid) {\r\n            this._input().val(oldValue);\r\n            return\r\n        }\r\n        if (newValue !== oldValue) {\r\n            this._applyColorFromInput(newValue);\r\n            this.option(\"value\", this.option(\"editAlphaChannel\") ? colorUtils.makeRgba(newValue) : newValue)\r\n        }\r\n        if (this._colorView) {\r\n            var colorViewValue = this._colorView.option(\"value\");\r\n            if (value !== colorViewValue) {\r\n                this.option(\"value\", colorViewValue)\r\n            }\r\n        }\r\n        this.close();\r\n        return false\r\n    },\r\n    _applyButtonHandler: function() {\r\n        this._applyNewColor(this._colorView.option(\"value\"));\r\n        this.callBase()\r\n    },\r\n    _cancelButtonHandler: function() {\r\n        this._resetInputValue();\r\n        this.callBase()\r\n    },\r\n    _getKeyboardListeners: function() {\r\n        return this.callBase().concat([this._colorView])\r\n    },\r\n    _init: function() {\r\n        this.callBase()\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(COLOR_BOX_CLASS);\r\n        this.callBase()\r\n    },\r\n    _renderInput: function() {\r\n        this.callBase();\r\n        this._input().addClass(COLOR_BOX_INPUT_CLASS);\r\n        this._renderColorPreview()\r\n    },\r\n    _renderColorPreview: function() {\r\n        this.$element().wrapInner((0, _renderer.default)(\"<div>\").addClass(COLOR_BOX_INPUT_CONTAINER_CLASS));\r\n        this._$colorBoxInputContainer = this.$element().children().eq(0);\r\n        this._$colorResultPreview = (0, _renderer.default)(\"<div>\").addClass(COLOR_BOX_COLOR_RESULT_PREVIEW_CLASS).appendTo(this._$textEditorInputContainer);\r\n        if (!this.option(\"value\")) {\r\n            this._$colorBoxInputContainer.addClass(COLOR_BOX_COLOR_IS_NOT_DEFINED)\r\n        } else {\r\n            colorUtils.makeTransparentBackground(this._$colorResultPreview, this.option(\"value\"))\r\n        }\r\n    },\r\n    _renderValue: function() {\r\n        var value = this.option(\"value\");\r\n        this.option(\"text\", this.option(\"editAlphaChannel\") ? colorUtils.makeRgba(value) : value);\r\n        return this.callBase()\r\n    },\r\n    _resetInputValue: function() {\r\n        var $input = this._input();\r\n        var value = this.option(\"value\");\r\n        $input.val(value);\r\n        this._updateColorViewValue(value)\r\n    },\r\n    _updateColorViewValue: function(value) {\r\n        if (this._colorView) {\r\n            this._colorView.option({\r\n                value: value,\r\n                matchValue: value\r\n            })\r\n        }\r\n    },\r\n    _valueChangeEventHandler: function(e) {\r\n        var value = this._input().val();\r\n        if (value) {\r\n            value = this._applyColorFromInput(value);\r\n            this._updateColorViewValue(value)\r\n        }\r\n        this.callBase(e, value)\r\n    },\r\n    _applyColorFromInput: function(value) {\r\n        var newColor = new _color.default(value);\r\n        if (newColor.colorIsInvalid) {\r\n            this._resetInputValue();\r\n            value = this.option(\"value\")\r\n        }\r\n        return value\r\n    },\r\n    _optionChanged: function(args) {\r\n        var value = args.value;\r\n        var name = args.name;\r\n        switch (name) {\r\n            case \"value\":\r\n                this._$colorBoxInputContainer.toggleClass(COLOR_BOX_COLOR_IS_NOT_DEFINED, !value);\r\n                if (value) {\r\n                    colorUtils.makeTransparentBackground(this._$colorResultPreview, value)\r\n                } else {\r\n                    this._$colorResultPreview.removeAttr(\"style\")\r\n                }\r\n                this._updateColorViewValue(value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"applyButtonText\":\r\n            case \"cancelButtonText\":\r\n                this.callBase(args);\r\n                this._popup && this._addPopupBottomClasses();\r\n                break;\r\n            case \"editAlphaChannel\":\r\n            case \"keyStep\":\r\n                if (this._colorView) {\r\n                    this._colorView.option(name, value)\r\n                }\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxColorBox\", ColorBox);\r\nvar _default = ColorBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/number.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dependency_injector = _interopRequireDefault(require(\"../core/utils/dependency_injector\"));\r\nvar _array = require(\"../core/utils/array\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _number = require(\"./ldml/number\");\r\nvar _config = _interopRequireDefault(require(\"../core/config\"));\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\nvar _utils = require(\"./utils\");\r\nvar _currency = _interopRequireDefault(require(\"./currency\"));\r\nvar _number2 = _interopRequireDefault(require(\"./intl/number\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _slicedToArray(arr, i) {\r\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n    if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n        return\r\n    }\r\n    var _arr = [];\r\n    var _n = true;\r\n    var _d = false;\r\n    var _e = void 0;\r\n    try {\r\n        for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n            _arr.push(_s.value);\r\n            if (i && _arr.length === i) {\r\n                break\r\n            }\r\n        }\r\n    } catch (err) {\r\n        _d = true;\r\n        _e = err\r\n    } finally {\r\n        try {\r\n            if (!_n && null != _i.return) {\r\n                _i.return()\r\n            }\r\n        } finally {\r\n            if (_d) {\r\n                throw _e\r\n            }\r\n        }\r\n    }\r\n    return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return arr\r\n    }\r\n}\r\nvar hasIntl = \"undefined\" !== typeof Intl;\r\nvar MAX_LARGE_NUMBER_POWER = 4;\r\nvar DECIMAL_BASE = 10;\r\nvar NUMERIC_FORMATS = [\"currency\", \"fixedpoint\", \"exponential\", \"percent\", \"decimal\"];\r\nvar LargeNumberFormatPostfixes = {\r\n    1: \"K\",\r\n    2: \"M\",\r\n    3: \"B\",\r\n    4: \"T\"\r\n};\r\nvar LargeNumberFormatPowers = {\r\n    largenumber: \"auto\",\r\n    thousands: 1,\r\n    millions: 2,\r\n    billions: 3,\r\n    trillions: 4\r\n};\r\nvar numberLocalization = (0, _dependency_injector.default)({\r\n    engine: function() {\r\n        return \"base\"\r\n    },\r\n    numericFormats: NUMERIC_FORMATS,\r\n    defaultLargeNumberFormatPostfixes: LargeNumberFormatPostfixes,\r\n    _parseNumberFormatString: function(formatType) {\r\n        var formatObject = {};\r\n        if (!formatType || \"string\" !== typeof formatType) {\r\n            return\r\n        }\r\n        var formatList = formatType.toLowerCase().split(\" \");\r\n        (0, _iterator.each)(formatList, function(index, value) {\r\n            if ((0, _array.inArray)(value, NUMERIC_FORMATS) > -1) {\r\n                formatObject.formatType = value\r\n            } else {\r\n                if (value in LargeNumberFormatPowers) {\r\n                    formatObject.power = LargeNumberFormatPowers[value]\r\n                }\r\n            }\r\n        });\r\n        if (formatObject.power && !formatObject.formatType) {\r\n            formatObject.formatType = \"fixedpoint\"\r\n        }\r\n        if (formatObject.formatType) {\r\n            return formatObject\r\n        }\r\n    },\r\n    _calculateNumberPower: function(value, base, minPower, maxPower) {\r\n        var number = Math.abs(value);\r\n        var power = 0;\r\n        if (number > 1) {\r\n            while (number && number >= base && (void 0 === maxPower || power < maxPower)) {\r\n                power++;\r\n                number /= base\r\n            }\r\n        } else {\r\n            if (number > 0 && number < 1) {\r\n                while (number < 1 && (void 0 === minPower || power > minPower)) {\r\n                    power--;\r\n                    number *= base\r\n                }\r\n            }\r\n        }\r\n        return power\r\n    },\r\n    _getNumberByPower: function(number, power, base) {\r\n        var result = number;\r\n        while (power > 0) {\r\n            result /= base;\r\n            power--\r\n        }\r\n        while (power < 0) {\r\n            result *= base;\r\n            power++\r\n        }\r\n        return result\r\n    },\r\n    _formatNumber: function(value, formatObject, formatConfig) {\r\n        if (\"auto\" === formatObject.power) {\r\n            formatObject.power = this._calculateNumberPower(value, 1e3, 0, MAX_LARGE_NUMBER_POWER)\r\n        }\r\n        if (formatObject.power) {\r\n            value = this._getNumberByPower(value, formatObject.power, 1e3)\r\n        }\r\n        var powerPostfix = this.defaultLargeNumberFormatPostfixes[formatObject.power] || \"\";\r\n        var result = this._formatNumberCore(value, formatObject.formatType, formatConfig);\r\n        result = result.replace(/(\\d|.$)(\\D*)$/, \"$1\" + powerPostfix + \"$2\");\r\n        return result\r\n    },\r\n    _formatNumberExponential: function(value, formatConfig) {\r\n        var power = this._calculateNumberPower(value, DECIMAL_BASE);\r\n        var number = this._getNumberByPower(value, power, DECIMAL_BASE);\r\n        if (void 0 === formatConfig.precision) {\r\n            formatConfig.precision = 1\r\n        }\r\n        if (number.toFixed(formatConfig.precision || 0) >= DECIMAL_BASE) {\r\n            power++;\r\n            number /= DECIMAL_BASE\r\n        }\r\n        var powString = (power >= 0 ? \"+\" : \"\") + power.toString();\r\n        return this._formatNumberCore(number, \"fixedpoint\", formatConfig) + \"E\" + powString\r\n    },\r\n    _addZeroes: function(value, precision) {\r\n        var multiplier = Math.pow(10, precision);\r\n        var sign = value < 0 ? \"-\" : \"\";\r\n        value = (Math.abs(value) * multiplier >>> 0) / multiplier;\r\n        var result = value.toString();\r\n        while (result.length < precision) {\r\n            result = \"0\" + result\r\n        }\r\n        return sign + result\r\n    },\r\n    _addGroupSeparators: function(value) {\r\n        var parts = value.toString().split(\".\");\r\n        return parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, (0, _config.default)().thousandsSeparator) + (parts[1] ? (0, _config.default)().decimalSeparator + parts[1] : \"\")\r\n    },\r\n    _formatNumberCore: function(value, format, formatConfig) {\r\n        if (\"exponential\" === format) {\r\n            return this._formatNumberExponential(value, formatConfig)\r\n        }\r\n        if (\"decimal\" !== format && null !== formatConfig.precision) {\r\n            formatConfig.precision = formatConfig.precision || 0\r\n        }\r\n        if (\"percent\" === format) {\r\n            value = 100 * value\r\n        }\r\n        if (void 0 !== formatConfig.precision) {\r\n            if (\"decimal\" === format) {\r\n                value = this._addZeroes(value, formatConfig.precision)\r\n            } else {\r\n                value = null === formatConfig.precision ? value.toPrecision() : (0, _utils.toFixed)(value, formatConfig.precision)\r\n            }\r\n        }\r\n        if (\"decimal\" !== format) {\r\n            value = this._addGroupSeparators(value)\r\n        } else {\r\n            value = value.toString().replace(\".\", (0, _config.default)().decimalSeparator)\r\n        }\r\n        if (\"percent\" === format) {\r\n            value += \"%\"\r\n        }\r\n        return value\r\n    },\r\n    _normalizeFormat: function(format) {\r\n        if (!format) {\r\n            return {}\r\n        }\r\n        if (\"function\" === typeof format) {\r\n            return format\r\n        }\r\n        if (!(0, _type.isPlainObject)(format)) {\r\n            format = {\r\n                type: format\r\n            }\r\n        }\r\n        return format\r\n    },\r\n    _getSeparators: function() {\r\n        return {\r\n            decimalSeparator: this.getDecimalSeparator(),\r\n            thousandsSeparator: this.getThousandsSeparator()\r\n        }\r\n    },\r\n    getThousandsSeparator: function() {\r\n        return this.format(1e4, \"fixedPoint\")[2]\r\n    },\r\n    getDecimalSeparator: function() {\r\n        return this.format(1.2, {\r\n            type: \"fixedPoint\",\r\n            precision: 1\r\n        })[1]\r\n    },\r\n    convertDigits: function(value, toStandard) {\r\n        var digits = this.format(90, \"decimal\");\r\n        if (\"string\" !== typeof value || \"0\" === digits[1]) {\r\n            return value\r\n        }\r\n        var fromFirstDigit = toStandard ? digits[1] : \"0\";\r\n        var toFirstDigit = toStandard ? \"0\" : digits[1];\r\n        var fromLastDigit = toStandard ? digits[0] : \"9\";\r\n        var regExp = new RegExp(\"[\" + fromFirstDigit + \"-\" + fromLastDigit + \"]\", \"g\");\r\n        return value.replace(regExp, function(char) {\r\n            return String.fromCharCode(char.charCodeAt(0) + (toFirstDigit.charCodeAt(0) - fromFirstDigit.charCodeAt(0)))\r\n        })\r\n    },\r\n    getNegativeEtalonRegExp: function(format) {\r\n        var separators = this._getSeparators();\r\n        var digitalRegExp = new RegExp(\"[0-9\" + (0, _common.escapeRegExp)(separators.decimalSeparator + separators.thousandsSeparator) + \"]+\", \"g\");\r\n        var specialCharacters = [\"\\\\\", \"(\", \")\", \"[\", \"]\", \"*\", \"+\", \"$\", \"^\", \"?\", \"|\", \"{\", \"}\"];\r\n        var negativeEtalon = this.format(-1, format).replace(digitalRegExp, \"1\");\r\n        specialCharacters.forEach(function(char) {\r\n            negativeEtalon = negativeEtalon.replace(char, \"\\\\\".concat(char))\r\n        });\r\n        negativeEtalon = negativeEtalon.replace(\" \", \"\\\\s\");\r\n        negativeEtalon = negativeEtalon.replace(\"1\", \".+\");\r\n        return new RegExp(negativeEtalon, \"g\")\r\n    },\r\n    getSign: function(text, format) {\r\n        if (\"-\" === text.replace(/[^0-9-]/g, \"\").charAt(0)) {\r\n            return -1\r\n        }\r\n        if (!format) {\r\n            return 1\r\n        }\r\n        var negativeEtalon = this.getNegativeEtalonRegExp(format);\r\n        return text.match(negativeEtalon) ? -1 : 1\r\n    },\r\n    format: function(value, _format) {\r\n        if (\"number\" !== typeof value) {\r\n            return value\r\n        }\r\n        if (\"number\" === typeof _format) {\r\n            return value\r\n        }\r\n        _format = _format && _format.formatter || _format;\r\n        if (\"function\" === typeof _format) {\r\n            return _format(value)\r\n        }\r\n        _format = this._normalizeFormat(_format);\r\n        if (!_format.type) {\r\n            _format.type = \"decimal\"\r\n        }\r\n        var numberConfig = this._parseNumberFormatString(_format.type);\r\n        if (!numberConfig) {\r\n            var formatterConfig = this._getSeparators();\r\n            formatterConfig.unlimitedIntegerDigits = _format.unlimitedIntegerDigits;\r\n            return this.convertDigits((0, _number.getFormatter)(_format.type, formatterConfig)(value))\r\n        }\r\n        return this._formatNumber(value, numberConfig, _format)\r\n    },\r\n    parse: function(text, format) {\r\n        if (!text) {\r\n            return\r\n        }\r\n        if (format && format.parser) {\r\n            return format.parser(text)\r\n        }\r\n        text = this.convertDigits(text, true);\r\n        if (format && \"string\" !== typeof format) {\r\n            _errors.default.log(\"W0011\")\r\n        }\r\n        var decimalSeparator = this.getDecimalSeparator();\r\n        var regExp = new RegExp(\"[^0-9\" + (0, _common.escapeRegExp)(decimalSeparator) + \"]\", \"g\");\r\n        var cleanedText = text.replace(regExp, \"\").replace(decimalSeparator, \".\").replace(/\\.$/g, \"\");\r\n        if (\".\" === cleanedText || \"\" === cleanedText) {\r\n            return null\r\n        }\r\n        if (this._calcSignificantDigits(cleanedText) > 15) {\r\n            return NaN\r\n        }\r\n        var parsed = +cleanedText * this.getSign(text, format);\r\n        format = this._normalizeFormat(format);\r\n        var formatConfig = this._parseNumberFormatString(format.type);\r\n        var power = null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.power;\r\n        if (power) {\r\n            if (\"auto\" === power) {\r\n                var match = text.match(/\\d(K|M|B|T)/);\r\n                if (match) {\r\n                    power = (0, _array.find)(Object.keys(LargeNumberFormatPostfixes), function(power) {\r\n                        return LargeNumberFormatPostfixes[power] === match[1]\r\n                    })\r\n                }\r\n            }\r\n            parsed *= Math.pow(10, 3 * power)\r\n        }\r\n        if (\"percent\" === (null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.formatType)) {\r\n            parsed /= 100\r\n        }\r\n        return parsed\r\n    },\r\n    _calcSignificantDigits: function(text) {\r\n        var _text$split = text.split(\".\"),\r\n            _text$split2 = _slicedToArray(_text$split, 2),\r\n            integer = _text$split2[0],\r\n            fractional = _text$split2[1];\r\n        var calcDigitsAfterLeadingZeros = function(digits) {\r\n            var index = -1;\r\n            for (var i = 0; i < digits.length; i++) {\r\n                if (\"0\" !== digits[i]) {\r\n                    index = i;\r\n                    break\r\n                }\r\n            }\r\n            return index > -1 ? digits.length - index : 0\r\n        };\r\n        var result = 0;\r\n        if (integer) {\r\n            result += calcDigitsAfterLeadingZeros(integer.split(\"\"))\r\n        }\r\n        if (fractional) {\r\n            result += calcDigitsAfterLeadingZeros(fractional.split(\"\").reverse())\r\n        }\r\n        return result\r\n    }\r\n});\r\nnumberLocalization.inject(_currency.default);\r\nif (hasIntl) {\r\n    numberLocalization.inject(_number2.default)\r\n}\r\nvar _default = numberLocalization;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.row_dragging.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _sortable = _interopRequireDefault(require(\"../sortable\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COMMAND_HANDLE_CLASS = \"dx-command-drag\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar HANDLE_ICON_CLASS = \"drag-icon\";\r\nvar ROWS_VIEW = \"rowsview\";\r\nvar SORTABLE_WITHOUT_HANDLE_CLASS = \"dx-sortable-without-handle\";\r\nvar RowDraggingExtender = {\r\n    init: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._updateHandleColumn()\r\n    },\r\n    _allowReordering: function() {\r\n        var rowDragging = this.option(\"rowDragging\");\r\n        return !!(rowDragging && (rowDragging.allowReordering || rowDragging.allowDropInsideItem || rowDragging.group))\r\n    },\r\n    _updateHandleColumn: function() {\r\n        var rowDragging = this.option(\"rowDragging\");\r\n        var allowReordering = this._allowReordering();\r\n        var columnsController = this._columnsController;\r\n        var isHandleColumnVisible = allowReordering && rowDragging.showDragIcons;\r\n        columnsController && columnsController.addCommandColumn({\r\n            type: \"drag\",\r\n            command: \"drag\",\r\n            visibleIndex: -2,\r\n            alignment: \"center\",\r\n            cssClass: COMMAND_HANDLE_CLASS,\r\n            width: \"auto\",\r\n            cellTemplate: this._getHandleTemplate(),\r\n            visible: isHandleColumnVisible\r\n        });\r\n        columnsController.columnOption(\"type:drag\", \"visible\", isHandleColumnVisible)\r\n    },\r\n    _renderContent: function() {\r\n        var _this = this;\r\n        var rowDragging = this.option(\"rowDragging\");\r\n        var allowReordering = this._allowReordering();\r\n        var $content = this.callBase.apply(this, arguments);\r\n        var isFixedTableRendering = this._isFixedTableRendering;\r\n        var sortableName = \"_sortable\";\r\n        var sortableFixedName = \"_sortableFixed\";\r\n        var currentSortableName = isFixedTableRendering ? sortableFixedName : sortableName;\r\n        var anotherSortableName = isFixedTableRendering ? sortableName : sortableFixedName;\r\n        var togglePointerEventsStyle = function(toggle) {\r\n            var _this$sortableFixedNa;\r\n            null === (_this$sortableFixedNa = _this[sortableFixedName]) || void 0 === _this$sortableFixedNa ? void 0 : _this$sortableFixedNa.$element().css(\"pointerEvents\", toggle ? \"auto\" : \"\")\r\n        };\r\n        if (allowReordering && $content.length) {\r\n            this[currentSortableName] = this._createComponent($content, _sortable.default, (0, _extend.extend)({\r\n                component: this.component,\r\n                contentTemplate: null,\r\n                filter: \"> table > tbody > .dx-row:not(.dx-freespace-row):not(.dx-virtual-row)\",\r\n                dragTemplate: this._getDraggableRowTemplate(),\r\n                handle: rowDragging.showDragIcons && \".\".concat(COMMAND_HANDLE_CLASS),\r\n                dropFeedbackMode: \"indicate\"\r\n            }, rowDragging, {\r\n                onDragStart: function(e) {\r\n                    var _rowDragging$onDragSt;\r\n                    var row = e.component.getVisibleRows()[e.fromIndex];\r\n                    e.itemData = row && row.data;\r\n                    var isDataRow = row && \"data\" === row.rowType;\r\n                    e.cancel = !isDataRow;\r\n                    null === (_rowDragging$onDragSt = rowDragging.onDragStart) || void 0 === _rowDragging$onDragSt ? void 0 : _rowDragging$onDragSt.call(rowDragging, e)\r\n                },\r\n                onDragEnter: function() {\r\n                    togglePointerEventsStyle(true)\r\n                },\r\n                onDragLeave: function() {\r\n                    togglePointerEventsStyle(false)\r\n                },\r\n                onDragEnd: function(e) {\r\n                    var _rowDragging$onDragEn;\r\n                    togglePointerEventsStyle(false);\r\n                    null === (_rowDragging$onDragEn = rowDragging.onDragEnd) || void 0 === _rowDragging$onDragEn ? void 0 : _rowDragging$onDragEn.call(rowDragging, e)\r\n                },\r\n                dropFeedbackMode: _browser.default.msie ? \"indicate\" : rowDragging.dropFeedbackMode,\r\n                onOptionChanged: function(e) {\r\n                    var hasFixedSortable = _this[sortableFixedName];\r\n                    if (hasFixedSortable) {\r\n                        if (\"fromIndex\" === e.name || \"toIndex\" === e.name) {\r\n                            _this[anotherSortableName].option(e.name, e.value)\r\n                        }\r\n                    }\r\n                }\r\n            }));\r\n            $content.toggleClass(SORTABLE_WITHOUT_HANDLE_CLASS, !rowDragging.showDragIcons)\r\n        }\r\n        return $content\r\n    },\r\n    _resizeCore: function() {\r\n        this.callBase.apply(this, arguments);\r\n        var offset = this._dataController.getRowIndexOffset();\r\n        [this._sortable, this._sortableFixed].forEach(function(sortable) {\r\n            null === sortable || void 0 === sortable ? void 0 : sortable.option(\"offset\", offset);\r\n            null === sortable || void 0 === sortable ? void 0 : sortable.update()\r\n        })\r\n    },\r\n    _getDraggableGridOptions: function(options) {\r\n        var gridOptions = this.option();\r\n        var columns = this.getColumns();\r\n        var $rowElement = (0, _renderer.default)(this.getRowElement(options.rowIndex));\r\n        return {\r\n            dataSource: [{\r\n                id: 1,\r\n                parentId: 0\r\n            }],\r\n            showBorders: true,\r\n            showColumnHeaders: false,\r\n            scrolling: {\r\n                useNative: false,\r\n                showScrollbar: false\r\n            },\r\n            pager: {\r\n                visible: false\r\n            },\r\n            loadingTimeout: void 0,\r\n            columnFixing: gridOptions.columnFixing,\r\n            columnAutoWidth: gridOptions.columnAutoWidth,\r\n            showColumnLines: gridOptions.showColumnLines,\r\n            columns: columns.map(function(column) {\r\n                return {\r\n                    width: column.width || column.visibleWidth,\r\n                    fixed: column.fixed,\r\n                    fixedPosition: column.fixedPosition\r\n                }\r\n            }),\r\n            onRowPrepared: function(e) {\r\n                var rowsView = e.component.getView(\"rowsView\");\r\n                (0, _renderer.default)(e.rowElement).replaceWith($rowElement.eq(rowsView._isFixedTableRendering ? 1 : 0).clone())\r\n            }\r\n        }\r\n    },\r\n    _getDraggableRowTemplate: function() {\r\n        var _this2 = this;\r\n        return function(options) {\r\n            var $rootElement = _this2.component.$element();\r\n            var $dataGridContainer = (0, _renderer.default)(\"<div>\").width($rootElement.width());\r\n            var items = _this2._dataController.items();\r\n            var row = items && items[options.fromIndex];\r\n            var gridOptions = _this2._getDraggableGridOptions(row);\r\n            _this2._createComponent($dataGridContainer, _this2.component.NAME, gridOptions);\r\n            $dataGridContainer.find(\".dx-gridbase-container\").children(\":not(.\".concat(_this2.addWidgetPrefix(ROWS_VIEW), \")\")).hide();\r\n            return $dataGridContainer\r\n        }\r\n    },\r\n    _getHandleTemplate: function() {\r\n        var _this3 = this;\r\n        return function(container, options) {\r\n            if (\"data\" === options.rowType) {\r\n                (0, _renderer.default)(container).addClass(CELL_FOCUS_DISABLED_CLASS);\r\n                return (0, _renderer.default)(\"<span>\").addClass(_this3.addWidgetPrefix(HANDLE_ICON_CLASS))\r\n            } else {\r\n                _uiGrid_core.default.setEmptyText((0, _renderer.default)(container))\r\n            }\r\n        }\r\n    },\r\n    optionChanged: function(args) {\r\n        if (\"rowDragging\" === args.name) {\r\n            this._updateHandleColumn();\r\n            this._invalidate(true, true);\r\n            args.handled = true\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    }\r\n};\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            rowDragging: {\r\n                showDragIcons: true,\r\n                dropFeedbackMode: \"indicate\",\r\n                allowReordering: false,\r\n                allowDropInsideItem: false\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        views: {\r\n            rowsView: RowDraggingExtender\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/ajax.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _deferred = require(\"./deferred\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _http_request = _interopRequireDefault(require(\"../../core/http_request\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _extend = require(\"./extend\");\r\nvar _type = require(\"./type\");\r\nvar _promise = _interopRequireDefault(require(\"../polyfills/promise\"));\r\nvar _dependency_injector = _interopRequireDefault(require(\"./dependency_injector\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar SUCCESS = \"success\";\r\nvar ERROR = \"error\";\r\nvar TIMEOUT = \"timeout\";\r\nvar NO_CONTENT = \"nocontent\";\r\nvar PARSER_ERROR = \"parsererror\";\r\nvar isStatusSuccess = function(status) {\r\n    return 200 <= status && status < 300\r\n};\r\nvar hasContent = function(status) {\r\n    return 204 !== status\r\n};\r\nvar paramsConvert = function(params) {\r\n    var result = [];\r\n    for (var name in params) {\r\n        var value = params[name];\r\n        if (void 0 === value) {\r\n            continue\r\n        }\r\n        if (null === value) {\r\n            value = \"\"\r\n        }\r\n        result.push(encodeURIComponent(name) + \"=\" + encodeURIComponent(value))\r\n    }\r\n    return result.join(\"&\")\r\n};\r\nvar createScript = function(options) {\r\n    var script = _dom_adapter.default.createElement(\"script\");\r\n    for (var name in options) {\r\n        script[name] = options[name]\r\n    }\r\n    return script\r\n};\r\nvar removeScript = function(scriptNode) {\r\n    scriptNode.parentNode.removeChild(scriptNode)\r\n};\r\nvar appendToHead = function(element) {\r\n    return _dom_adapter.default.getHead().appendChild(element)\r\n};\r\nvar evalScript = function(code) {\r\n    var script = createScript({\r\n        text: code\r\n    });\r\n    appendToHead(script);\r\n    removeScript(script)\r\n};\r\nvar evalCrossDomainScript = function(url) {\r\n    var script = createScript({\r\n        src: url\r\n    });\r\n    return new _promise.default(function(resolve, reject) {\r\n        var events = {\r\n            load: resolve,\r\n            error: reject\r\n        };\r\n        var loadHandler = function(e) {\r\n            events[e.type]();\r\n            removeScript(script)\r\n        };\r\n        for (var event in events) {\r\n            _dom_adapter.default.listen(script, event, loadHandler)\r\n        }\r\n        appendToHead(script)\r\n    })\r\n};\r\nvar getAcceptHeader = function(options) {\r\n    var dataType = options.dataType || \"*\";\r\n    var scriptAccept = \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\";\r\n    var accepts = {\r\n        \"*\": \"*/*\",\r\n        text: \"text/plain\",\r\n        html: \"text/html\",\r\n        xml: \"application/xml, text/xml\",\r\n        json: \"application/json, text/javascript\",\r\n        jsonp: scriptAccept,\r\n        script: scriptAccept\r\n    };\r\n    (0, _extend.extendFromObject)(accepts, options.accepts, true);\r\n    return accepts[dataType] ? accepts[dataType] + (\"*\" !== dataType ? \", */*; q=0.01\" : \"\") : accepts[\"*\"]\r\n};\r\nvar getContentTypeHeader = function(options) {\r\n    var defaultContentType;\r\n    if (options.data && !options.upload && \"GET\" !== getMethod(options)) {\r\n        defaultContentType = \"application/x-www-form-urlencoded;charset=utf-8\"\r\n    }\r\n    return options.contentType || defaultContentType\r\n};\r\nvar getDataFromResponse = function(xhr) {\r\n    return xhr.responseType && \"text\" !== xhr.responseType || \"string\" !== typeof xhr.responseText ? xhr.response : xhr.responseText\r\n};\r\nvar postProcess = function(deferred, xhr, dataType) {\r\n    var data = getDataFromResponse(xhr);\r\n    switch (dataType) {\r\n        case \"jsonp\":\r\n            evalScript(data);\r\n            break;\r\n        case \"script\":\r\n            evalScript(data);\r\n            deferred.resolve(data, SUCCESS, xhr);\r\n            break;\r\n        case \"json\":\r\n            try {\r\n                deferred.resolve(JSON.parse(data), SUCCESS, xhr)\r\n            } catch (e) {\r\n                deferred.reject(xhr, PARSER_ERROR, e)\r\n            }\r\n            break;\r\n        default:\r\n            deferred.resolve(data, SUCCESS, xhr)\r\n    }\r\n};\r\nvar isCrossDomain = function(url) {\r\n    if (!(0, _window.hasWindow)()) {\r\n        return true\r\n    }\r\n    var crossDomain = false;\r\n    var originAnchor = _dom_adapter.default.createElement(\"a\");\r\n    var urlAnchor = _dom_adapter.default.createElement(\"a\");\r\n    originAnchor.href = window.location.href;\r\n    try {\r\n        urlAnchor.href = url;\r\n        urlAnchor.href = urlAnchor.href;\r\n        crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host\r\n    } catch (e) {\r\n        crossDomain = true\r\n    }\r\n    return crossDomain\r\n};\r\nvar setHttpTimeout = function(timeout, xhr) {\r\n    return timeout && setTimeout(function() {\r\n        xhr.customStatus = TIMEOUT;\r\n        xhr.abort()\r\n    }, timeout)\r\n};\r\nvar getJsonpOptions = function(options) {\r\n    if (\"jsonp\" === options.dataType) {\r\n        var random = Math.random().toString().replace(/\\D/g, \"\");\r\n        var callbackName = options.jsonpCallback || \"dxCallback\" + Date.now() + \"_\" + random;\r\n        var callbackParameter = options.jsonp || \"callback\";\r\n        options.data = options.data || {};\r\n        options.data[callbackParameter] = callbackName;\r\n        return callbackName\r\n    }\r\n};\r\nvar getRequestOptions = function(options, headers) {\r\n    var params = options.data;\r\n    var paramsAlreadyString = \"string\" === typeof params;\r\n    var url = options.url || window.location.href;\r\n    if (!paramsAlreadyString && !options.cache) {\r\n        params = params || {};\r\n        params._ = Date.now()\r\n    }\r\n    if (params && !options.upload) {\r\n        if (!paramsAlreadyString) {\r\n            params = paramsConvert(params)\r\n        }\r\n        if (\"GET\" === getMethod(options)) {\r\n            if (\"\" !== params) {\r\n                url += (url.indexOf(\"?\") > -1 ? \"&\" : \"?\") + params\r\n            }\r\n            params = null\r\n        } else {\r\n            if (headers[\"Content-Type\"] && headers[\"Content-Type\"].indexOf(\"application/x-www-form-urlencoded\") > -1) {\r\n                params = params.replace(/%20/g, \"+\")\r\n            }\r\n        }\r\n    }\r\n    return {\r\n        url: url,\r\n        parameters: params\r\n    }\r\n};\r\n\r\nfunction getMethod(options) {\r\n    return (options.method || \"GET\").toUpperCase()\r\n}\r\nvar getRequestHeaders = function(options) {\r\n    var headers = options.headers || {};\r\n    headers[\"Content-Type\"] = headers[\"Content-Type\"] || getContentTypeHeader(options);\r\n    headers.Accept = headers.Accept || getAcceptHeader(options);\r\n    if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\r\n        headers[\"X-Requested-With\"] = \"XMLHttpRequest\"\r\n    }\r\n    return headers\r\n};\r\nvar sendRequest = function(options) {\r\n    var xhr = _http_request.default.getXhr();\r\n    var d = new _deferred.Deferred;\r\n    var result = d.promise();\r\n    var async = (0, _type.isDefined)(options.async) ? options.async : true;\r\n    var dataType = options.dataType;\r\n    var timeout = options.timeout || 0;\r\n    var timeoutId;\r\n    options.crossDomain = isCrossDomain(options.url);\r\n    var needScriptEvaluation = \"jsonp\" === dataType || \"script\" === dataType;\r\n    if (void 0 === options.cache) {\r\n        options.cache = !needScriptEvaluation\r\n    }\r\n    var callbackName = getJsonpOptions(options);\r\n    var headers = getRequestHeaders(options);\r\n    var requestOptions = getRequestOptions(options, headers);\r\n    var url = requestOptions.url;\r\n    var parameters = requestOptions.parameters;\r\n    if (callbackName) {\r\n        window[callbackName] = function(data) {\r\n            d.resolve(data, SUCCESS, xhr)\r\n        }\r\n    }\r\n    if (options.crossDomain && needScriptEvaluation) {\r\n        var reject = function() {\r\n            d.reject(xhr, ERROR)\r\n        };\r\n        var resolve = function() {\r\n            if (\"jsonp\" === dataType) {\r\n                return\r\n            }\r\n            d.resolve(null, SUCCESS, xhr)\r\n        };\r\n        evalCrossDomainScript(url).then(resolve, reject);\r\n        return result\r\n    }\r\n    if (options.crossDomain && !(\"withCredentials\" in xhr)) {\r\n        d.reject(xhr, ERROR);\r\n        return result\r\n    }\r\n    xhr.open(getMethod(options), url, async, options.username, options.password);\r\n    if (async) {\r\n        xhr.timeout = timeout;\r\n        timeoutId = setHttpTimeout(timeout, xhr, d)\r\n    }\r\n    xhr.onreadystatechange = function(e) {\r\n        if (4 === xhr.readyState) {\r\n            clearTimeout(timeoutId);\r\n            if (isStatusSuccess(xhr.status)) {\r\n                if (hasContent(xhr.status)) {\r\n                    postProcess(d, xhr, dataType)\r\n                } else {\r\n                    d.resolve(null, NO_CONTENT, xhr)\r\n                }\r\n            } else {\r\n                d.reject(xhr, xhr.customStatus || ERROR)\r\n            }\r\n        }\r\n    };\r\n    if (options.upload) {\r\n        xhr.upload.onprogress = options.upload.onprogress;\r\n        xhr.upload.onloadstart = options.upload.onloadstart;\r\n        xhr.upload.onabort = options.upload.onabort\r\n    }\r\n    if (options.xhrFields) {\r\n        for (var field in options.xhrFields) {\r\n            xhr[field] = options.xhrFields[field]\r\n        }\r\n    }\r\n    if (\"arraybuffer\" === options.responseType) {\r\n        xhr.responseType = options.responseType\r\n    }\r\n    for (var name in headers) {\r\n        if (Object.prototype.hasOwnProperty.call(headers, name) && (0, _type.isDefined)(headers[name])) {\r\n            xhr.setRequestHeader(name, headers[name])\r\n        }\r\n    }\r\n    if (options.beforeSend) {\r\n        options.beforeSend(xhr)\r\n    }\r\n    xhr.send(parameters);\r\n    result.abort = function() {\r\n        xhr.abort()\r\n    };\r\n    return result\r\n};\r\nvar _default = (0, _dependency_injector.default)({\r\n    sendRequest: sendRequest\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/gauges/circular_range_container.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _base_range_container = _interopRequireDefault(require(\"./base_range_container\"));\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _Number = Number;\r\nvar _max = Math.max;\r\nvar CircularRangeContainer = _base_range_container.default.inherit({\r\n    _processOptions: function() {\r\n        var that = this;\r\n        that._inner = that._outer = 0;\r\n        switch ((0, _utils.normalizeEnum)(that._options.orientation)) {\r\n            case \"inside\":\r\n                that._inner = 1;\r\n                break;\r\n            case \"center\":\r\n                that._inner = that._outer = .5;\r\n                break;\r\n            default:\r\n                that._outer = 1\r\n        }\r\n    },\r\n    _isVisible: function(layout) {\r\n        var width = this._options.width;\r\n        width = _Number(width) || _max(_Number(width.start), _Number(width.end));\r\n        return layout.radius - this._inner * width > 0\r\n    },\r\n    _createRange: function(range, layout) {\r\n        var that = this;\r\n        var width = (range.startWidth + range.endWidth) / 2;\r\n        return that._renderer.arc(layout.x, layout.y, layout.radius - that._inner * width, layout.radius + that._outer * width, that._translator.translate(range.end), that._translator.translate(range.start)).attr({\r\n            \"stroke-linejoin\": \"round\"\r\n        })\r\n    },\r\n    measure: function(layout) {\r\n        var width = this._options.width;\r\n        width = _Number(width) || _max(_Number(width.start), _Number(width.end));\r\n        return {\r\n            min: layout.radius - this._inner * width,\r\n            max: layout.radius + this._outer * width\r\n        }\r\n    }\r\n});\r\nvar _default = CircularRangeContainer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/pointer/mspointer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _base = _interopRequireDefault(require(\"./base\"));\r\nvar _observer = _interopRequireDefault(require(\"./observer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar eventMap = {\r\n    dxpointerdown: \"pointerdown\",\r\n    dxpointermove: \"pointermove\",\r\n    dxpointerup: \"pointerup\",\r\n    dxpointercancel: \"pointercancel\",\r\n    dxpointerover: \"pointerover\",\r\n    dxpointerout: \"pointerout\",\r\n    dxpointerenter: \"pointerenter\",\r\n    dxpointerleave: \"pointerleave\"\r\n};\r\nvar observer;\r\nvar activated = false;\r\nvar activateStrategy = function() {\r\n    if (activated) {\r\n        return\r\n    }\r\n    observer = new _observer.default(eventMap, function(a, b) {\r\n        return a.pointerId === b.pointerId\r\n    }, function(e) {\r\n        if (e.isPrimary) {\r\n            observer.reset()\r\n        }\r\n    });\r\n    activated = true\r\n};\r\nvar MsPointerStrategy = _base.default.inherit({\r\n    ctor: function() {\r\n        this.callBase.apply(this, arguments);\r\n        activateStrategy()\r\n    },\r\n    _fireEvent: function(args) {\r\n        return this.callBase((0, _extend.extend)({\r\n            pointers: observer.pointers(),\r\n            pointerId: args.originalEvent.pointerId\r\n        }, args))\r\n    }\r\n});\r\nMsPointerStrategy.map = eventMap;\r\nMsPointerStrategy.resetObserver = function() {\r\n    observer.reset()\r\n};\r\nvar _default = MsPointerStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/set_template_engine.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _template_engine_registry = require(\"../core/templates/template_engine_registry\");\r\nvar _default = _template_engine_registry.setTemplateEngine;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/action_sheet.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _button = _interopRequireDefault(require(\"./button\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit\"));\r\nvar _popup = _interopRequireDefault(require(\"./popup\"));\r\nvar _popover = _interopRequireDefault(require(\"./popover\"));\r\nvar _bindable_template = require(\"../core/templates/bindable_template\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar ACTION_SHEET_CLASS = \"dx-actionsheet\";\r\nvar ACTION_SHEET_CONTAINER_CLASS = \"dx-actionsheet-container\";\r\nvar ACTION_SHEET_POPUP_WRAPPER_CLASS = \"dx-actionsheet-popup-wrapper\";\r\nvar ACTION_SHEET_POPOVER_WRAPPER_CLASS = \"dx-actionsheet-popover-wrapper\";\r\nvar ACTION_SHEET_CANCEL_BUTTON_CLASS = \"dx-actionsheet-cancel\";\r\nvar ACTION_SHEET_ITEM_CLASS = \"dx-actionsheet-item\";\r\nvar ACTION_SHEET_ITEM_DATA_KEY = \"dxActionSheetItemData\";\r\nvar ACTION_SHEET_WITHOUT_TITLE_CLASS = \"dx-actionsheet-without-title\";\r\nvar ActionSheet = _uiCollection_widget.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            usePopover: false,\r\n            target: null,\r\n            title: \"\",\r\n            showTitle: true,\r\n            showCancelButton: true,\r\n            cancelText: _message.default.format(\"Cancel\"),\r\n            onCancelClick: null,\r\n            visible: false,\r\n            noDataText: \"\",\r\n            focusStateEnabled: false,\r\n            selectionByClick: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"ios\",\r\n                tablet: true\r\n            },\r\n            options: {\r\n                usePopover: true\r\n            }\r\n        }])\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            item: new _bindable_template.BindableTemplate(function($container, data) {\r\n                var button = new _button.default((0, _renderer.default)(\"<div>\"), (0, _extend.extend)({\r\n                    onClick: data && data.click\r\n                }, data));\r\n                $container.append(button.$element())\r\n            }, [\"disabled\", \"icon\", \"text\", \"type\", \"onClick\", \"click\"], this.option(\"integrationOptions.watchMethod\"))\r\n        })\r\n    },\r\n    _itemContainer: function() {\r\n        return this._$itemContainer\r\n    },\r\n    _itemClass: function() {\r\n        return ACTION_SHEET_ITEM_CLASS\r\n    },\r\n    _itemDataKey: function() {\r\n        return ACTION_SHEET_ITEM_DATA_KEY\r\n    },\r\n    _toggleVisibility: _common.noop,\r\n    _renderDimensions: _common.noop,\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this.$element().addClass(ACTION_SHEET_CLASS);\r\n        this._createItemContainer()\r\n    },\r\n    _render: function() {\r\n        this._renderPopup()\r\n    },\r\n    _createItemContainer: function() {\r\n        this._$itemContainer = (0, _renderer.default)(\"<div>\").addClass(ACTION_SHEET_CONTAINER_CLASS);\r\n        this._renderDisabled()\r\n    },\r\n    _renderDisabled: function() {\r\n        this._$itemContainer.toggleClass(\"dx-state-disabled\", this.option(\"disabled\"))\r\n    },\r\n    _renderPopup: function() {\r\n        this._$popup = (0, _renderer.default)(\"<div>\").appendTo(this.$element());\r\n        this._isPopoverMode() ? this._createPopover() : this._createPopup();\r\n        this._renderPopupTitle();\r\n        this._mapPopupOption(\"visible\")\r\n    },\r\n    _mapPopupOption: function(optionName) {\r\n        this._popup && this._popup.option(optionName, this.option(optionName))\r\n    },\r\n    _isPopoverMode: function() {\r\n        return this.option(\"usePopover\") && this.option(\"target\")\r\n    },\r\n    _renderPopupTitle: function() {\r\n        this._mapPopupOption(\"showTitle\");\r\n        this._popup && this._popup._wrapper().toggleClass(ACTION_SHEET_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"))\r\n    },\r\n    _clean: function() {\r\n        if (this._$popup) {\r\n            this._$popup.remove()\r\n        }\r\n        this.callBase()\r\n    },\r\n    _overlayConfig: function() {\r\n        return {\r\n            onInitialized: function(args) {\r\n                this._popup = args.component\r\n            }.bind(this),\r\n            disabled: false,\r\n            showTitle: true,\r\n            title: this.option(\"title\"),\r\n            deferRendering: !window.angular,\r\n            onContentReady: this._popupContentReadyAction.bind(this),\r\n            onHidden: this.hide.bind(this)\r\n        }\r\n    },\r\n    _createPopover: function() {\r\n        this._createComponent(this._$popup, _popover.default, (0, _extend.extend)(this._overlayConfig(), {\r\n            width: this.option(\"width\") || 200,\r\n            height: this.option(\"height\") || \"auto\",\r\n            target: this.option(\"target\")\r\n        }));\r\n        this._popup._wrapper().addClass(ACTION_SHEET_POPOVER_WRAPPER_CLASS)\r\n    },\r\n    _createPopup: function() {\r\n        this._createComponent(this._$popup, _popup.default, (0, _extend.extend)(this._overlayConfig(), {\r\n            dragEnabled: false,\r\n            width: this.option(\"width\") || \"100%\",\r\n            height: this.option(\"height\") || \"auto\",\r\n            showCloseButton: false,\r\n            position: {\r\n                my: \"bottom\",\r\n                at: \"bottom\",\r\n                of: window\r\n            },\r\n            animation: {\r\n                show: {\r\n                    type: \"slide\",\r\n                    duration: 400,\r\n                    from: {\r\n                        position: {\r\n                            my: \"top\",\r\n                            at: \"bottom\",\r\n                            of: window\r\n                        }\r\n                    },\r\n                    to: {\r\n                        position: {\r\n                            my: \"bottom\",\r\n                            at: \"bottom\",\r\n                            of: window\r\n                        }\r\n                    }\r\n                },\r\n                hide: {\r\n                    type: \"slide\",\r\n                    duration: 400,\r\n                    from: {\r\n                        position: {\r\n                            my: \"bottom\",\r\n                            at: \"bottom\",\r\n                            of: window\r\n                        }\r\n                    },\r\n                    to: {\r\n                        position: {\r\n                            my: \"top\",\r\n                            at: \"bottom\",\r\n                            of: window\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }));\r\n        this._popup._wrapper().addClass(ACTION_SHEET_POPUP_WRAPPER_CLASS)\r\n    },\r\n    _popupContentReadyAction: function() {\r\n        this._popup.$content().append(this._$itemContainer);\r\n        this._attachClickEvent();\r\n        this._attachHoldEvent();\r\n        this._prepareContent();\r\n        this._renderContent();\r\n        this._renderCancelButton()\r\n    },\r\n    _renderCancelButton: function() {\r\n        if (this._isPopoverMode()) {\r\n            return\r\n        }\r\n        if (this._$cancelButton) {\r\n            this._$cancelButton.remove()\r\n        }\r\n        if (this.option(\"showCancelButton\")) {\r\n            var cancelClickAction = this._createActionByOption(\"onCancelClick\") || _common.noop;\r\n            var that = this;\r\n            this._$cancelButton = (0, _renderer.default)(\"<div>\").addClass(ACTION_SHEET_CANCEL_BUTTON_CLASS).appendTo(this._popup && this._popup.$content());\r\n            this._createComponent(this._$cancelButton, _button.default, {\r\n                disabled: false,\r\n                text: this.option(\"cancelText\"),\r\n                onClick: function(e) {\r\n                    var hidingArgs = {\r\n                        event: e,\r\n                        cancel: false\r\n                    };\r\n                    cancelClickAction(hidingArgs);\r\n                    if (!hidingArgs.cancel) {\r\n                        that.hide()\r\n                    }\r\n                },\r\n                integrationOptions: {}\r\n            })\r\n        }\r\n    },\r\n    _attachItemClickEvent: _common.noop,\r\n    _itemClickHandler: function(e) {\r\n        this.callBase(e);\r\n        if (!(0, _renderer.default)(e.target).is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            this.hide()\r\n        }\r\n    },\r\n    _itemHoldHandler: function(e) {\r\n        this.callBase(e);\r\n        if (!(0, _renderer.default)(e.target).is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            this.hide()\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"width\":\r\n            case \"height\":\r\n            case \"visible\":\r\n            case \"title\":\r\n                this._mapPopupOption(args.name);\r\n                break;\r\n            case \"disabled\":\r\n                this._renderDisabled();\r\n                break;\r\n            case \"showTitle\":\r\n                this._renderPopupTitle();\r\n                break;\r\n            case \"showCancelButton\":\r\n            case \"onCancelClick\":\r\n            case \"cancelText\":\r\n                this._renderCancelButton();\r\n                break;\r\n            case \"target\":\r\n            case \"usePopover\":\r\n            case \"items\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    toggle: function(showing) {\r\n        var that = this;\r\n        var d = new _deferred.Deferred;\r\n        that._popup.toggle(showing).done(function() {\r\n            that.option(\"visible\", showing);\r\n            d.resolveWith(that)\r\n        });\r\n        return d.promise()\r\n    },\r\n    show: function() {\r\n        return this.toggle(true)\r\n    },\r\n    hide: function() {\r\n        return this.toggle(false)\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxActionSheet\", ActionSheet);\r\nvar _default = ActionSheet;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/core/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.map = map;\r\nexports.normalizeEnum = normalizeEnum;\r\nexports.setCanvasValues = setCanvasValues;\r\nexports.normalizeBBox = normalizeBBox;\r\nexports.rotateBBox = rotateBBox;\r\nexports.checkElementHasPropertyFromStyleSheet = checkElementHasPropertyFromStyleSheet;\r\nexports.convertPolarToXY = convertPolarToXY;\r\nexports.normalizePanesHeight = normalizePanesHeight;\r\nexports.updatePanesCanvases = updatePanesCanvases;\r\nexports.mergeMarginOptions = mergeMarginOptions;\r\nexports.getVizRangeObject = getVizRangeObject;\r\nexports.convertVisualRangeObject = convertVisualRangeObject;\r\nexports.getAddFunction = getAddFunction;\r\nexports.adjustVisualRange = adjustVisualRange;\r\nexports.getLogExt = getLogExt;\r\nexports.raiseToExt = raiseToExt;\r\nexports.rangesAreEqual = rangesAreEqual;\r\nexports.valueOf = valueOf;\r\nexports.pointInCanvas = pointInCanvas;\r\nexports.getVerticallyShiftedAngularCoords = exports.unique = exports.getCategoriesInfo = exports.processSeriesTemplate = exports.convertXYToPolar = exports.patchFontOptions = exports.enumParser = exports.parseScalar = exports.decreaseGaps = exports.getPower = exports.roundValue = exports.getAppropriateFormat = exports.getDecimalOrder = exports.getDistance = exports.getCosAndSin = exports.degreesToRadians = exports.convertAngleToRendererSpace = exports.normalizeAngle = exports.raiseTo = exports.getAdjustedLog10 = exports.getLog = exports.PANE_PADDING = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PI = Math.PI,\r\n    LN10 = Math.LN10,\r\n    abs = Math.abs,\r\n    log = Math.log,\r\n    floor = Math.floor,\r\n    ceil = Math.ceil,\r\n    pow = Math.pow,\r\n    sqrt = Math.sqrt,\r\n    atan2 = Math.atan2;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _cos = Math.cos;\r\nvar _sin = Math.sin;\r\nvar _round = Math.round;\r\nvar dateToMilliseconds = _date.default.dateToMilliseconds;\r\nvar MAX_PIXEL_COUNT = 1e10;\r\nvar PI_DIV_180 = PI / 180;\r\nvar _isNaN = isNaN;\r\nvar _Number = Number;\r\nvar _NaN = NaN;\r\nvar PANE_PADDING = 10;\r\nexports.PANE_PADDING = PANE_PADDING;\r\nvar getLog = function(value, base) {\r\n    if (!value) {\r\n        return _NaN\r\n    }\r\n    return log(value) / log(base)\r\n};\r\nexports.getLog = getLog;\r\nvar getAdjustedLog10 = function(value) {\r\n    return (0, _math.adjust)(getLog(value, 10))\r\n};\r\nexports.getAdjustedLog10 = getAdjustedLog10;\r\nvar raiseTo = function(power, base) {\r\n    return pow(base, power)\r\n};\r\nexports.raiseTo = raiseTo;\r\nvar normalizeAngle = function(angle) {\r\n    return (angle % 360 + 360) % 360\r\n};\r\nexports.normalizeAngle = normalizeAngle;\r\nvar convertAngleToRendererSpace = function(angle) {\r\n    return 90 - angle\r\n};\r\nexports.convertAngleToRendererSpace = convertAngleToRendererSpace;\r\nvar degreesToRadians = function(value) {\r\n    return PI * value / 180\r\n};\r\nexports.degreesToRadians = degreesToRadians;\r\nvar getCosAndSin = function(angle) {\r\n    var angleInRadians = degreesToRadians(angle);\r\n    return {\r\n        cos: _cos(angleInRadians),\r\n        sin: _sin(angleInRadians)\r\n    }\r\n};\r\nexports.getCosAndSin = getCosAndSin;\r\nvar DECIMAL_ORDER_THRESHOLD = 1e-14;\r\nvar getDistance = function(x1, y1, x2, y2) {\r\n    var diffX = x2 - x1;\r\n    var diffY = y2 - y1;\r\n    return sqrt(diffY * diffY + diffX * diffX)\r\n};\r\nexports.getDistance = getDistance;\r\nvar getDecimalOrder = function(number) {\r\n    var n = abs(number);\r\n    var cn;\r\n    if (!_isNaN(n)) {\r\n        if (n > 0) {\r\n            n = log(n) / LN10;\r\n            cn = ceil(n);\r\n            return cn - n < DECIMAL_ORDER_THRESHOLD ? cn : floor(n)\r\n        }\r\n        return 0\r\n    }\r\n    return _NaN\r\n};\r\nexports.getDecimalOrder = getDecimalOrder;\r\nvar getAppropriateFormat = function(start, end, count) {\r\n    var order = _max(getDecimalOrder(start), getDecimalOrder(end));\r\n    var precision = -getDecimalOrder(abs(end - start) / count);\r\n    var format;\r\n    if (!_isNaN(order) && !_isNaN(precision)) {\r\n        if (abs(order) <= 4) {\r\n            format = \"fixedPoint\";\r\n            precision < 0 && (precision = 0);\r\n            precision > 4 && (precision = 4)\r\n        } else {\r\n            format = \"exponential\";\r\n            precision += order - 1;\r\n            precision > 3 && (precision = 3)\r\n        }\r\n        return {\r\n            type: format,\r\n            precision: precision\r\n        }\r\n    }\r\n    return null\r\n};\r\nexports.getAppropriateFormat = getAppropriateFormat;\r\nvar roundValue = function(value, precision) {\r\n    if (precision > 20) {\r\n        precision = 20\r\n    }\r\n    if ((0, _type.isNumeric)(value)) {\r\n        if ((0, _type.isExponential)(value)) {\r\n            return _Number(value.toExponential(precision))\r\n        } else {\r\n            return _Number(value.toFixed(precision))\r\n        }\r\n    }\r\n};\r\nexports.roundValue = roundValue;\r\nvar getPower = function(value) {\r\n    return value.toExponential().split(\"e\")[1]\r\n};\r\nexports.getPower = getPower;\r\n\r\nfunction map(array, callback) {\r\n    var i = 0;\r\n    var len = array.length;\r\n    var result = [];\r\n    var value;\r\n    while (i < len) {\r\n        value = callback(array[i], i);\r\n        if (null !== value) {\r\n            result.push(value)\r\n        }\r\n        i++\r\n    }\r\n    return result\r\n}\r\n\r\nfunction selectByKeys(object, keys) {\r\n    return map(keys, function(key) {\r\n        return object[key] ? object[key] : null\r\n    })\r\n}\r\n\r\nfunction decreaseFields(object, keys, eachDecrease, decrease) {\r\n    var dec = decrease;\r\n    (0, _iterator.each)(keys, function(_, key) {\r\n        if (object[key]) {\r\n            object[key] -= eachDecrease;\r\n            dec -= eachDecrease\r\n        }\r\n    });\r\n    return dec\r\n}\r\n\r\nfunction normalizeEnum(value) {\r\n    return String(value).toLowerCase()\r\n}\r\n\r\nfunction setCanvasValues(canvas) {\r\n    if (canvas) {\r\n        canvas.originalTop = canvas.top;\r\n        canvas.originalBottom = canvas.bottom;\r\n        canvas.originalLeft = canvas.left;\r\n        canvas.originalRight = canvas.right\r\n    }\r\n    return canvas\r\n}\r\n\r\nfunction normalizeBBoxField(value) {\r\n    return -MAX_PIXEL_COUNT < value && value < +MAX_PIXEL_COUNT ? value : 0\r\n}\r\n\r\nfunction normalizeBBox(bBox) {\r\n    var xl = normalizeBBoxField(floor(bBox.x));\r\n    var yt = normalizeBBoxField(floor(bBox.y));\r\n    var xr = normalizeBBoxField(ceil(bBox.width + bBox.x));\r\n    var yb = normalizeBBoxField(ceil(bBox.height + bBox.y));\r\n    var result = {\r\n        x: xl,\r\n        y: yt,\r\n        width: xr - xl,\r\n        height: yb - yt\r\n    };\r\n    result.isEmpty = !result.x && !result.y && !result.width && !result.height;\r\n    return result\r\n}\r\n\r\nfunction rotateBBox(bBox, center, angle) {\r\n    var cos = _Number(_cos(angle * PI_DIV_180).toFixed(3));\r\n    var sin = _Number(_sin(angle * PI_DIV_180).toFixed(3));\r\n    var w2 = bBox.width / 2;\r\n    var h2 = bBox.height / 2;\r\n    var centerX = bBox.x + w2;\r\n    var centerY = bBox.y + h2;\r\n    var w2_ = abs(w2 * cos) + abs(h2 * sin);\r\n    var h2_ = abs(w2 * sin) + abs(h2 * cos);\r\n    var centerX_ = center[0] + (centerX - center[0]) * cos + (centerY - center[1]) * sin;\r\n    var centerY_ = center[1] - (centerX - center[0]) * sin + (centerY - center[1]) * cos;\r\n    return normalizeBBox({\r\n        x: centerX_ - w2_,\r\n        y: centerY_ - h2_,\r\n        width: 2 * w2_,\r\n        height: 2 * h2_\r\n    })\r\n}\r\nvar decreaseGaps = function(object, keys, decrease) {\r\n    var arrayGaps;\r\n    do {\r\n        arrayGaps = selectByKeys(object, keys);\r\n        arrayGaps.push(ceil(decrease / arrayGaps.length));\r\n        decrease = decreaseFields(object, keys, _min.apply(null, arrayGaps), decrease)\r\n    } while (decrease > 0 && arrayGaps.length > 1);\r\n    return decrease\r\n};\r\nexports.decreaseGaps = decreaseGaps;\r\nvar parseScalar = function(value, defaultValue) {\r\n    return void 0 !== value ? value : defaultValue\r\n};\r\nexports.parseScalar = parseScalar;\r\nvar enumParser = function(values) {\r\n    var stored = {};\r\n    var i;\r\n    var ii;\r\n    for (i = 0, ii = values.length; i < ii; ++i) {\r\n        stored[normalizeEnum(values[i])] = 1\r\n    }\r\n    return function(value, defaultValue) {\r\n        var _value = normalizeEnum(value);\r\n        return stored[_value] ? _value : defaultValue\r\n    }\r\n};\r\nexports.enumParser = enumParser;\r\nvar patchFontOptions = function(options) {\r\n    var fontOptions = {};\r\n    (0, _iterator.each)(options || {}, function(key, value) {\r\n        if (/^(cursor)$/i.test(key)) {} else {\r\n            if (\"opacity\" === key) {\r\n                value = null\r\n            } else {\r\n                if (\"color\" === key) {\r\n                    key = \"fill\";\r\n                    if (\"opacity\" in options) {\r\n                        var color = new _color.default(value);\r\n                        value = \"rgba(\".concat(color.r, \",\").concat(color.g, \",\").concat(color.b, \",\").concat(options.opacity, \")\")\r\n                    }\r\n                } else {\r\n                    key = \"font-\" + key\r\n                }\r\n            }\r\n        }\r\n        fontOptions[key] = value\r\n    });\r\n    return fontOptions\r\n};\r\nexports.patchFontOptions = patchFontOptions;\r\n\r\nfunction checkElementHasPropertyFromStyleSheet(element, property) {\r\n    var slice = Array.prototype.slice;\r\n    var cssRules = slice.call(_dom_adapter.default.getDocument().styleSheets).reduce(function(rules, styleSheet) {\r\n        return rules.concat(slice.call(styleSheet.cssRules || styleSheet.rules))\r\n    }, []);\r\n    var elementRules = cssRules.filter(function(rule) {\r\n        try {\r\n            return _dom_adapter.default.elementMatches(element, rule.selectorText)\r\n        } catch (e) {\r\n            return false\r\n        }\r\n    });\r\n    return elementRules.some(function(rule) {\r\n        return !!rule.style[property]\r\n    })\r\n}\r\n\r\nfunction convertPolarToXY(centerCoords, startAngle, angle, radius) {\r\n    var shiftAngle = 90;\r\n    var normalizedRadius = radius > 0 ? radius : 0;\r\n    angle = (0, _type.isDefined)(angle) ? angle + startAngle - shiftAngle : 0;\r\n    var cosSin = getCosAndSin(angle);\r\n    return {\r\n        x: _round(centerCoords.x + normalizedRadius * cosSin.cos),\r\n        y: _round(centerCoords.y + normalizedRadius * cosSin.sin)\r\n    }\r\n}\r\nvar convertXYToPolar = function(centerCoords, x, y) {\r\n    var radius = getDistance(centerCoords.x, centerCoords.y, x, y);\r\n    var angle = atan2(y - centerCoords.y, x - centerCoords.x);\r\n    return {\r\n        phi: _round(normalizeAngle(180 * angle / PI)),\r\n        r: _round(radius)\r\n    }\r\n};\r\nexports.convertXYToPolar = convertXYToPolar;\r\nvar processSeriesTemplate = function(seriesTemplate, items) {\r\n    var customizeSeries = (0, _type.isFunction)(seriesTemplate.customizeSeries) ? seriesTemplate.customizeSeries : _common.noop;\r\n    var nameField = seriesTemplate.nameField;\r\n    var generatedSeries = {};\r\n    var seriesOrder = [];\r\n    var series;\r\n    var i = 0;\r\n    var length;\r\n    var data;\r\n    items = items || [];\r\n    for (length = items.length; i < length; i++) {\r\n        data = items[i];\r\n        if (nameField in data) {\r\n            series = generatedSeries[data[nameField]];\r\n            if (!series) {\r\n                series = generatedSeries[data[nameField]] = {\r\n                    name: data[nameField],\r\n                    nameFieldValue: data[nameField]\r\n                };\r\n                seriesOrder.push(series.name)\r\n            }\r\n        }\r\n    }\r\n    return map(seriesOrder, function(orderedName) {\r\n        var group = generatedSeries[orderedName];\r\n        return (0, _extend.extend)(group, customizeSeries.call(null, group.name))\r\n    })\r\n};\r\nexports.processSeriesTemplate = processSeriesTemplate;\r\nvar getCategoriesInfo = function(categories, startValue, endValue) {\r\n    if (0 === categories.length) {\r\n        return {\r\n            categories: []\r\n        }\r\n    }\r\n    startValue = (0, _type.isDefined)(startValue) ? startValue : categories[0];\r\n    endValue = (0, _type.isDefined)(endValue) ? endValue : categories[categories.length - 1];\r\n    var categoriesValue = map(categories, function(category) {\r\n        return null === category || void 0 === category ? void 0 : category.valueOf()\r\n    });\r\n    var indexStartValue = categoriesValue.indexOf(startValue.valueOf());\r\n    var indexEndValue = categoriesValue.indexOf(endValue.valueOf());\r\n    var swapBuf;\r\n    var inverted = false;\r\n    indexStartValue < 0 && (indexStartValue = 0);\r\n    indexEndValue < 0 && (indexEndValue = categories.length - 1);\r\n    if (indexEndValue < indexStartValue) {\r\n        swapBuf = indexEndValue;\r\n        indexEndValue = indexStartValue;\r\n        indexStartValue = swapBuf;\r\n        inverted = true\r\n    }\r\n    var visibleCategories = categories.slice(indexStartValue, indexEndValue + 1);\r\n    var lastIdx = visibleCategories.length - 1;\r\n    return {\r\n        categories: visibleCategories,\r\n        start: visibleCategories[inverted ? lastIdx : 0],\r\n        end: visibleCategories[inverted ? 0 : lastIdx],\r\n        inverted: inverted\r\n    }\r\n};\r\nexports.getCategoriesInfo = getCategoriesInfo;\r\n\r\nfunction normalizePanesHeight(panes) {\r\n    panes.forEach(function(pane) {\r\n        var height = pane.height;\r\n        var unit = 0;\r\n        var parsedHeight = parseFloat(height) || void 0;\r\n        if ((0, _type.isString)(height) && height.indexOf(\"px\") > -1 || (0, _type.isNumeric)(height) && height > 1) {\r\n            parsedHeight = _round(parsedHeight);\r\n            unit = 1\r\n        }\r\n        if (!unit && parsedHeight) {\r\n            if ((0, _type.isString)(height) && height.indexOf(\"%\") > -1) {\r\n                parsedHeight /= 100\r\n            } else {\r\n                if (parsedHeight < 0) {\r\n                    parsedHeight = parsedHeight < -1 ? 1 : abs(parsedHeight)\r\n                }\r\n            }\r\n        }\r\n        pane.height = parsedHeight;\r\n        pane.unit = unit\r\n    });\r\n    var weightSum = panes.filter(function(pane) {\r\n        return !pane.unit\r\n    }).reduce(function(prev, next) {\r\n        return prev + (next.height || 0)\r\n    }, 0);\r\n    var weightHeightCount = panes.filter(function(pane) {\r\n        return !pane.unit\r\n    }).length;\r\n    var emptyHeightCount = panes.filter(function(pane) {\r\n        return !pane.unit && !pane.height\r\n    }).length;\r\n    if (weightSum < 1 && emptyHeightCount) {\r\n        panes.filter(function(pane) {\r\n            return !pane.unit && !pane.height\r\n        }).forEach(function(pane) {\r\n            return pane.height = (1 - weightSum) / emptyHeightCount\r\n        })\r\n    } else {\r\n        if (weightSum > 1 || weightSum < 1 && !emptyHeightCount || 1 === weightSum && emptyHeightCount) {\r\n            if (emptyHeightCount) {\r\n                var weightForEmpty = weightSum / weightHeightCount;\r\n                var emptyWeightSum = emptyHeightCount * weightForEmpty;\r\n                panes.filter(function(pane) {\r\n                    return !pane.unit && pane.height\r\n                }).forEach(function(pane) {\r\n                    return pane.height *= (weightSum - emptyWeightSum) / weightSum\r\n                });\r\n                panes.filter(function(pane) {\r\n                    return !pane.unit && !pane.height\r\n                }).forEach(function(pane) {\r\n                    return pane.height = weightForEmpty\r\n                })\r\n            }\r\n            panes.forEach(function(pane) {\r\n                return !pane.unit && (pane.height *= 1 / weightSum)\r\n            })\r\n        }\r\n    }\r\n}\r\n\r\nfunction updatePanesCanvases(panes, canvas, rotated) {\r\n    var distributedSpace = 0;\r\n    var padding = PANE_PADDING;\r\n    var paneSpace = rotated ? canvas.width - canvas.left - canvas.right : canvas.height - canvas.top - canvas.bottom;\r\n    var usefulSpace = paneSpace - padding * (panes.length - 1);\r\n    var startName = rotated ? \"left\" : \"top\";\r\n    var endName = rotated ? \"right\" : \"bottom\";\r\n    var totalCustomSpace = panes.reduce(function(prev, cur) {\r\n        return prev + (cur.unit ? cur.height : 0)\r\n    }, 0);\r\n    usefulSpace -= totalCustomSpace;\r\n    panes.forEach(function(pane) {\r\n        var calcLength = pane.unit ? pane.height : _round(pane.height * usefulSpace);\r\n        pane.canvas = pane.canvas || {};\r\n        (0, _extend.extend)(pane.canvas, canvas);\r\n        pane.canvas[startName] = canvas[startName] + distributedSpace;\r\n        pane.canvas[endName] = canvas[endName] + (paneSpace - calcLength - distributedSpace);\r\n        distributedSpace = distributedSpace + calcLength + padding;\r\n        setCanvasValues(pane.canvas)\r\n    })\r\n}\r\nvar unique = function(array) {\r\n    var values = {};\r\n    return map(array, function(item) {\r\n        var result = !values[item] ? item : null;\r\n        values[item] = true;\r\n        return result\r\n    })\r\n};\r\nexports.unique = unique;\r\nvar getVerticallyShiftedAngularCoords = function(bBox, dy, center) {\r\n    var isPositive = bBox.x + bBox.width / 2 >= center.x;\r\n    var horizontalOffset1 = (isPositive ? bBox.x : bBox.x + bBox.width) - center.x;\r\n    var verticalOffset1 = bBox.y - center.y;\r\n    var verticalOffset2 = verticalOffset1 + dy;\r\n    var horizontalOffset2 = _round(sqrt(horizontalOffset1 * horizontalOffset1 + verticalOffset1 * verticalOffset1 - verticalOffset2 * verticalOffset2));\r\n    var dx = (isPositive ? +horizontalOffset2 : -horizontalOffset2) || horizontalOffset1;\r\n    return {\r\n        x: center.x + (isPositive ? dx : dx - bBox.width),\r\n        y: bBox.y + dy\r\n    }\r\n};\r\nexports.getVerticallyShiftedAngularCoords = getVerticallyShiftedAngularCoords;\r\n\r\nfunction mergeMarginOptions(opt1, opt2) {\r\n    return {\r\n        checkInterval: opt1.checkInterval || opt2.checkInterval,\r\n        size: _max(opt1.size || 0, opt2.size || 0),\r\n        percentStick: opt1.percentStick || opt2.percentStick,\r\n        sizePointNormalState: _max(opt1.sizePointNormalState || 0, opt2.sizePointNormalState || 0)\r\n    }\r\n}\r\n\r\nfunction getVizRangeObject(value) {\r\n    if (Array.isArray(value)) {\r\n        return {\r\n            startValue: value[0],\r\n            endValue: value[1]\r\n        }\r\n    } else {\r\n        return value || {}\r\n    }\r\n}\r\n\r\nfunction convertVisualRangeObject(visualRange, convertToVisualRange) {\r\n    if (convertToVisualRange) {\r\n        return visualRange\r\n    }\r\n    return [visualRange.startValue, visualRange.endValue]\r\n}\r\n\r\nfunction getAddFunction(range, correctZeroLevel) {\r\n    if (\"datetime\" === range.dataType) {\r\n        return function(rangeValue, marginValue) {\r\n            var sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\r\n            return new Date(rangeValue.getTime() + sign * marginValue)\r\n        }\r\n    }\r\n    if (\"logarithmic\" === range.axisType) {\r\n        return function(rangeValue, marginValue) {\r\n            var sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\r\n            var log = getLogExt(rangeValue, range.base) + sign * marginValue;\r\n            return raiseToExt(log, range.base)\r\n        }\r\n    }\r\n    return function(rangeValue, marginValue) {\r\n        var sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\r\n        var newValue = rangeValue + sign * marginValue;\r\n        return correctZeroLevel && newValue * rangeValue <= 0 ? 0 : newValue\r\n    }\r\n}\r\n\r\nfunction adjustVisualRange(options, visualRange, wholeRange, dataRange) {\r\n    var minDefined = (0, _type.isDefined)(visualRange.startValue);\r\n    var maxDefined = (0, _type.isDefined)(visualRange.endValue);\r\n    var nonDiscrete = \"discrete\" !== options.axisType;\r\n    dataRange = dataRange || wholeRange;\r\n    var add = getAddFunction(options, false);\r\n    var min = minDefined ? visualRange.startValue : dataRange.min;\r\n    var max = maxDefined ? visualRange.endValue : dataRange.max;\r\n    var rangeLength = visualRange.length;\r\n    var categories = dataRange.categories;\r\n    if (nonDiscrete && !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {\r\n        return {\r\n            startValue: min,\r\n            endValue: max\r\n        }\r\n    }\r\n    if ((0, _type.isDefined)(rangeLength)) {\r\n        if (nonDiscrete) {\r\n            if (\"datetime\" === options.dataType && !(0, _type.isNumeric)(rangeLength)) {\r\n                rangeLength = dateToMilliseconds(rangeLength)\r\n            }\r\n            if (maxDefined && !minDefined || !maxDefined && !minDefined) {\r\n                (0, _type.isDefined)(wholeRange.max) && (max = max > wholeRange.max ? wholeRange.max : max);\r\n                min = add(max, rangeLength, -1)\r\n            } else {\r\n                if (minDefined && !maxDefined) {\r\n                    (0, _type.isDefined)(wholeRange.min) && (min = min < wholeRange.min ? wholeRange.min : min);\r\n                    max = add(min, rangeLength)\r\n                }\r\n            }\r\n        } else {\r\n            rangeLength = parseInt(rangeLength);\r\n            if (!isNaN(rangeLength) && isFinite(rangeLength)) {\r\n                rangeLength--;\r\n                if (!maxDefined && !minDefined) {\r\n                    max = categories[categories.length - 1];\r\n                    min = categories[categories.length - 1 - rangeLength]\r\n                } else {\r\n                    if (minDefined && !maxDefined) {\r\n                        var categoriesInfo = getCategoriesInfo(categories, min, void 0);\r\n                        max = categoriesInfo.categories[rangeLength]\r\n                    } else {\r\n                        if (!minDefined && maxDefined) {\r\n                            var _categoriesInfo = getCategoriesInfo(categories, void 0, max);\r\n                            min = _categoriesInfo.categories[_categoriesInfo.categories.length - 1 - rangeLength]\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (nonDiscrete) {\r\n        if ((0, _type.isDefined)(wholeRange.max) && max > wholeRange.max) {\r\n            max = wholeRange.max\r\n        }\r\n        if ((0, _type.isDefined)(wholeRange.min) && min < wholeRange.min) {\r\n            min = wholeRange.min\r\n        }\r\n    }\r\n    return {\r\n        startValue: min,\r\n        endValue: max\r\n    }\r\n}\r\n\r\nfunction getLogExt(value, base) {\r\n    var allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n    var linearThreshold = arguments.length > 3 ? arguments[3] : void 0;\r\n    if (!allowNegatives) {\r\n        return getLog(value, base)\r\n    }\r\n    if (0 === value) {\r\n        return 0\r\n    }\r\n    var transformValue = getLog(abs(value), base) - (linearThreshold - 1);\r\n    if (transformValue < 0) {\r\n        return 0\r\n    }\r\n    return (0, _math.adjust)((0, _math.sign)(value) * transformValue, Number(pow(base, linearThreshold - 1).toFixed(abs(linearThreshold))))\r\n}\r\n\r\nfunction raiseToExt(value, base) {\r\n    var allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n    var linearThreshold = arguments.length > 3 ? arguments[3] : void 0;\r\n    if (!allowNegatives) {\r\n        return raiseTo(value, base)\r\n    }\r\n    if (0 === value) {\r\n        return 0\r\n    }\r\n    var transformValue = raiseTo(abs(value) + (linearThreshold - 1), base);\r\n    if (transformValue < 0) {\r\n        return 0\r\n    }\r\n    return (0, _math.adjust)((0, _math.sign)(value) * transformValue, Number(pow(base, linearThreshold).toFixed(abs(linearThreshold))))\r\n}\r\n\r\nfunction rangesAreEqual(range, rangeFromOptions) {\r\n    if (Array.isArray(rangeFromOptions)) {\r\n        return range.length === rangeFromOptions.length && range.every(function(item, i) {\r\n            return valueOf(item) === valueOf(rangeFromOptions[i])\r\n        })\r\n    } else {\r\n        return valueOf(range.startValue) === valueOf(rangeFromOptions.startValue) && valueOf(range.endValue) === valueOf(rangeFromOptions.endValue)\r\n    }\r\n}\r\n\r\nfunction valueOf(value) {\r\n    return value && value.valueOf()\r\n}\r\n\r\nfunction pointInCanvas(canvas, x, y) {\r\n    return x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom\r\n}\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.summary.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.FooterView = exports.renderSummaryCell = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.data_source_adapter\"));\r\nvar _uiGrid_core = require(\"../grid_core/ui.grid_core.columns_view\");\r\nvar _aggregate_calculator = _interopRequireDefault(require(\"./aggregate_calculator\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATAGRID_TOTAL_FOOTER_CLASS = \"dx-datagrid-total-footer\";\r\nvar DATAGRID_SUMMARY_ITEM_CLASS = \"dx-datagrid-summary-item\";\r\nvar DATAGRID_TEXT_CONTENT_CLASS = \"dx-datagrid-text-content\";\r\nvar DATAGRID_GROUP_FOOTER_CLASS = \"dx-datagrid-group-footer\";\r\nvar DATAGRID_GROUP_TEXT_CONTENT_CLASS = \"dx-datagrid-group-text-content\";\r\nvar DATAGRID_NOWRAP_CLASS = \"dx-datagrid-nowrap\";\r\nvar DATAGRID_GROUP_FOOTER_ROW_TYPE = \"groupFooter\";\r\nvar renderSummaryCell = function(cell, options) {\r\n    var $cell = (0, _renderer.default)(cell);\r\n    var column = options.column;\r\n    var summaryItems = options.summaryItems;\r\n    var $summaryItems = [];\r\n    if (!column.command && summaryItems) {\r\n        for (var i = 0; i < summaryItems.length; i++) {\r\n            var summaryItem = summaryItems[i];\r\n            $summaryItems.push((0, _renderer.default)(\"<div>\").css(\"textAlign\", summaryItem.alignment || column.alignment).addClass(DATAGRID_SUMMARY_ITEM_CLASS).addClass(DATAGRID_TEXT_CONTENT_CLASS).addClass(summaryItem.cssClass).toggleClass(DATAGRID_GROUP_TEXT_CONTENT_CLASS, \"group\" === options.rowType).text(_uiData_grid.default.getSummaryText(summaryItem, options.summaryTexts)))\r\n        }\r\n        $cell.append($summaryItems)\r\n    }\r\n};\r\nexports.renderSummaryCell = renderSummaryCell;\r\nvar getSummaryCellOptions = function(that, options) {\r\n    var summaryTexts = that.option(\"summary.texts\") || {};\r\n    return {\r\n        totalItem: options.row,\r\n        summaryItems: options.row.summaryCells[options.columnIndex],\r\n        summaryTexts: summaryTexts\r\n    }\r\n};\r\nvar getGroupAggregates = function(data) {\r\n    return data.summary || data.aggregates || []\r\n};\r\nvar recalculateWhileEditing = function(that) {\r\n    return that.option(\"summary.recalculateWhileEditing\")\r\n};\r\nvar FooterView = _uiGrid_core.ColumnsView.inherit(function() {\r\n    return {\r\n        _getRows: function() {\r\n            return this._dataController.footerItems()\r\n        },\r\n        _getCellOptions: function(options) {\r\n            return (0, _extend.extend)(this.callBase(options), getSummaryCellOptions(this, options))\r\n        },\r\n        _renderCellContent: function($cell, options) {\r\n            renderSummaryCell($cell, options);\r\n            this.callBase($cell, options)\r\n        },\r\n        _renderCore: function(change) {\r\n            var totalItem = this._dataController.footerItems()[0];\r\n            if (!change || !change.columnIndices) {\r\n                this.element().empty().addClass(DATAGRID_TOTAL_FOOTER_CLASS).toggleClass(DATAGRID_NOWRAP_CLASS, !this.option(\"wordWrapEnabled\"))\r\n            }\r\n            if (totalItem && totalItem.summaryCells && totalItem.summaryCells.length) {\r\n                this._updateContent(this._renderTable({\r\n                    change: change\r\n                }), change)\r\n            }\r\n        },\r\n        _updateContent: function($newTable, change) {\r\n            if (change && \"update\" === change.changeType && change.columnIndices) {\r\n                var $row = this._getTableElement().find(\".dx-row\");\r\n                var $newRow = $newTable.find(\".dx-row\");\r\n                this._updateCells($row, $newRow, change.columnIndices[0])\r\n            } else {\r\n                return this.callBase.apply(this, arguments)\r\n            }\r\n        },\r\n        _rowClick: function(e) {\r\n            var item = this._dataController.footerItems()[e.rowIndex] || {};\r\n            this.executeAction(\"onRowClick\", (0, _extend.extend)({}, e, item))\r\n        },\r\n        _columnOptionChanged: function(e) {\r\n            var optionNames = e.optionNames;\r\n            if (e.changeTypes.grouping) {\r\n                return\r\n            }\r\n            if (optionNames.width || optionNames.visibleWidth) {\r\n                this.callBase(e)\r\n            }\r\n        },\r\n        _handleDataChanged: function(e) {\r\n            var changeType = e.changeType;\r\n            if (\"update\" === e.changeType && e.repaintChangesOnly) {\r\n                if (!e.totalColumnIndices) {\r\n                    this.render()\r\n                } else {\r\n                    if (e.totalColumnIndices.length) {\r\n                        this.render(null, {\r\n                            changeType: \"update\",\r\n                            columnIndices: [e.totalColumnIndices]\r\n                        })\r\n                    }\r\n                }\r\n            } else {\r\n                if (\"refresh\" === changeType || \"append\" === changeType || \"prepend\" === changeType) {\r\n                    this.render()\r\n                }\r\n            }\r\n        },\r\n        getHeight: function() {\r\n            return this.getElementHeight()\r\n        },\r\n        isVisible: function() {\r\n            return !!this._dataController.footerItems().length\r\n        }\r\n    }\r\n}());\r\nexports.FooterView = FooterView;\r\nvar SummaryDataSourceAdapterExtender = function() {\r\n    function forEachGroup(groups, groupCount, callback, path) {\r\n        path = path || [];\r\n        for (var i = 0; i < groups.length; i++) {\r\n            path.push(groups[i].key);\r\n            if (1 === groupCount) {\r\n                callback(path, groups[i].items)\r\n            } else {\r\n                forEachGroup(groups[i].items, groupCount - 1, callback, path)\r\n            }\r\n            path.pop()\r\n        }\r\n    }\r\n    return {\r\n        init: function() {\r\n            this.callBase.apply(this, arguments);\r\n            this._totalAggregates = [];\r\n            this._summaryGetter = _common.noop\r\n        },\r\n        summaryGetter: function(_summaryGetter) {\r\n            if (!arguments.length) {\r\n                return this._summaryGetter\r\n            }\r\n            if ((0, _type.isFunction)(_summaryGetter)) {\r\n                this._summaryGetter = _summaryGetter\r\n            }\r\n        },\r\n        summary: function(_summary) {\r\n            if (!arguments.length) {\r\n                return this._summaryGetter()\r\n            }\r\n            this._summaryGetter = function() {\r\n                return _summary\r\n            }\r\n        },\r\n        totalAggregates: function() {\r\n            return this._totalAggregates\r\n        },\r\n        isLastLevelGroupItemsPagingLocal: function() {\r\n            var summary = this.summary();\r\n            var sortByGroupsInfo = summary && summary.sortByGroups();\r\n            return sortByGroupsInfo && sortByGroupsInfo.length\r\n        },\r\n        sortLastLevelGroupItems: function(items, groups, paths) {\r\n            var groupedItems = _store_helper.default.multiLevelGroup((0, _query.default)(items), groups).toArray();\r\n            var result = [];\r\n            paths.forEach(function(path) {\r\n                forEachGroup(groupedItems, groups.length, function(itemsPath, items) {\r\n                    if (path.toString() === itemsPath.toString()) {\r\n                        result = result.concat(items)\r\n                    }\r\n                })\r\n            });\r\n            return result\r\n        }\r\n    }\r\n}();\r\nvar SummaryDataSourceAdapterClientExtender = function() {\r\n    var applyAddedData = function applyAddedData(data, insertedData, groupLevel) {\r\n        if (groupLevel) {\r\n            return applyAddedData(data, insertedData.map(function(item) {\r\n                return {\r\n                    items: [item]\r\n                }\r\n            }, groupLevel - 1))\r\n        }\r\n        return data.concat(insertedData)\r\n    };\r\n    var applyRemovedData = function applyRemovedData(data, removedData, groupLevel) {\r\n        if (groupLevel) {\r\n            return data.map(function(data) {\r\n                var updatedData = {};\r\n                var updatedItems = applyRemovedData(data.items || [], removedData, groupLevel - 1);\r\n                Object.defineProperty(updatedData, \"aggregates\", {\r\n                    get: function() {\r\n                        return data.aggregates\r\n                    },\r\n                    set: function(value) {\r\n                        data.aggregates = value\r\n                    }\r\n                });\r\n                return (0, _extend.extend)(updatedData, data, {\r\n                    items: updatedItems\r\n                })\r\n            })\r\n        }\r\n        return data.filter(function(data) {\r\n            return removedData.indexOf(data) < 0\r\n        })\r\n    };\r\n    var calculateAggregates = function(that, summary, data, groupLevel) {\r\n        var calculator;\r\n        if (recalculateWhileEditing(that)) {\r\n            var editingController = that.getController(\"editing\");\r\n            if (editingController) {\r\n                var insertedData = editingController.getInsertedData();\r\n                if (insertedData.length) {\r\n                    data = applyAddedData(data, insertedData, groupLevel)\r\n                }\r\n                var removedData = editingController.getRemovedData();\r\n                if (removedData.length) {\r\n                    data = applyRemovedData(data, removedData, groupLevel)\r\n                }\r\n            }\r\n        }\r\n        if (summary) {\r\n            calculator = new _aggregate_calculator.default({\r\n                totalAggregates: summary.totalAggregates,\r\n                groupAggregates: summary.groupAggregates,\r\n                data: data,\r\n                groupLevel: groupLevel\r\n            });\r\n            calculator.calculate()\r\n        }\r\n        return calculator ? calculator.totalAggregates() : []\r\n    };\r\n    var sortGroupsBySummaryCore = function sortGroupsBySummaryCore(items, groups, sortByGroups) {\r\n        if (!items || !groups.length) {\r\n            return items\r\n        }\r\n        var group = groups[0];\r\n        var sorts = sortByGroups[0];\r\n        var query;\r\n        if (group && sorts && sorts.length) {\r\n            query = (0, _query.default)(items);\r\n            (0, _iterator.each)(sorts, function(index) {\r\n                if (0 === index) {\r\n                    query = query.sortBy(this.selector, this.desc)\r\n                } else {\r\n                    query = query.thenBy(this.selector, this.desc)\r\n                }\r\n            });\r\n            query.enumerate().done(function(sortedItems) {\r\n                items = sortedItems\r\n            })\r\n        }\r\n        groups = groups.slice(1);\r\n        sortByGroups = sortByGroups.slice(1);\r\n        if (groups.length && sortByGroups.length) {\r\n            (0, _iterator.each)(items, function() {\r\n                this.items = sortGroupsBySummaryCore(this.items, groups, sortByGroups)\r\n            })\r\n        }\r\n        return items\r\n    };\r\n    var sortGroupsBySummary = function(data, group, summary) {\r\n        var sortByGroups = summary && summary.sortByGroups && summary.sortByGroups();\r\n        if (sortByGroups && sortByGroups.length) {\r\n            return sortGroupsBySummaryCore(data, group, sortByGroups)\r\n        }\r\n        return data\r\n    };\r\n    return {\r\n        _customizeRemoteOperations: function(options) {\r\n            var summary = this.summary();\r\n            if (summary) {\r\n                if (options.remoteOperations.summary) {\r\n                    if (!options.isCustomLoading || options.storeLoadOptions.isLoadingAll) {\r\n                        if (options.storeLoadOptions.group) {\r\n                            if (options.remoteOperations.grouping) {\r\n                                options.storeLoadOptions.groupSummary = summary.groupAggregates\r\n                            } else {\r\n                                if (summary.groupAggregates.length) {\r\n                                    options.remoteOperations.paging = false\r\n                                }\r\n                            }\r\n                        }\r\n                        options.storeLoadOptions.totalSummary = summary.totalAggregates\r\n                    }\r\n                } else {\r\n                    if (summary.totalAggregates.length || summary.groupAggregates.length && options.storeLoadOptions.group) {\r\n                        options.remoteOperations.paging = false\r\n                    }\r\n                }\r\n            }\r\n            this.callBase.apply(this, arguments);\r\n            var cachedExtra = options.cachedPagesData.extra;\r\n            if (cachedExtra && cachedExtra.summary && !options.isCustomLoading) {\r\n                options.storeLoadOptions.totalSummary = void 0\r\n            }\r\n        },\r\n        _handleDataLoadedCore: function(options) {\r\n            var that = this;\r\n            var groups = _utils.default.normalizeSortingInfo(options.storeLoadOptions.group || options.loadOptions.group || []);\r\n            var remoteOperations = options.remoteOperations || {};\r\n            var summary = that.summaryGetter()(remoteOperations);\r\n            var totalAggregates;\r\n            if (!options.isCustomLoading || options.storeLoadOptions.isLoadingAll) {\r\n                if (remoteOperations.summary) {\r\n                    if (!remoteOperations.paging && groups.length && summary) {\r\n                        if (!remoteOperations.grouping) {\r\n                            calculateAggregates(that, {\r\n                                groupAggregates: summary.groupAggregates\r\n                            }, options.data, groups.length)\r\n                        }\r\n                        options.data = sortGroupsBySummary(options.data, groups, summary)\r\n                    }\r\n                } else {\r\n                    if (!remoteOperations.paging) {\r\n                        totalAggregates = calculateAggregates(that, summary, options.data, groups.length);\r\n                        options.data = sortGroupsBySummary(options.data, groups, summary);\r\n                        options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {};\r\n                        options.extra.summary = totalAggregates\r\n                    }\r\n                }\r\n            }\r\n            if (!options.isCustomLoading) {\r\n                that._totalAggregates = options.extra && options.extra.summary || that._totalAggregates\r\n            }\r\n            that.callBase(options)\r\n        }\r\n    }\r\n}();\r\n_uiData_grid2.default.extend(SummaryDataSourceAdapterExtender);\r\n_uiData_grid2.default.extend(SummaryDataSourceAdapterClientExtender);\r\n_uiData_grid.default.registerModule(\"summary\", {\r\n    defaultOptions: function() {\r\n        return {\r\n            summary: {\r\n                groupItems: void 0,\r\n                totalItems: void 0,\r\n                calculateCustomSummary: void 0,\r\n                skipEmptyValues: true,\r\n                recalculateWhileEditing: false,\r\n                texts: {\r\n                    sum: _message.default.getFormatter(\"dxDataGrid-summarySum\"),\r\n                    sumOtherColumn: _message.default.getFormatter(\"dxDataGrid-summarySumOtherColumn\"),\r\n                    min: _message.default.getFormatter(\"dxDataGrid-summaryMin\"),\r\n                    minOtherColumn: _message.default.getFormatter(\"dxDataGrid-summaryMinOtherColumn\"),\r\n                    max: _message.default.getFormatter(\"dxDataGrid-summaryMax\"),\r\n                    maxOtherColumn: _message.default.getFormatter(\"dxDataGrid-summaryMaxOtherColumn\"),\r\n                    avg: _message.default.getFormatter(\"dxDataGrid-summaryAvg\"),\r\n                    avgOtherColumn: _message.default.getFormatter(\"dxDataGrid-summaryAvgOtherColumn\"),\r\n                    count: _message.default.getFormatter(\"dxDataGrid-summaryCount\")\r\n                }\r\n            },\r\n            sortByGroupSummaryInfo: void 0\r\n        }\r\n    },\r\n    views: {\r\n        footerView: FooterView\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: function() {\r\n                return {\r\n                    _isDataColumn: function(column) {\r\n                        return column && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)\r\n                    },\r\n                    _isGroupFooterVisible: function() {\r\n                        var groupItems = this.option(\"summary.groupItems\") || [];\r\n                        for (var i = 0; i < groupItems.length; i++) {\r\n                            var groupItem = groupItems[i];\r\n                            var column = this._columnsController.columnOption(groupItem.showInColumn || groupItem.column);\r\n                            if (groupItem.showInGroupFooter && this._isDataColumn(column)) {\r\n                                return true\r\n                            }\r\n                        }\r\n                        return false\r\n                    },\r\n                    _processGroupItems: function(items, groupCount, options) {\r\n                        var data = options && options.data;\r\n                        var result = this.callBase.apply(this, arguments);\r\n                        if (options) {\r\n                            if (void 0 === options.isGroupFooterVisible) {\r\n                                options.isGroupFooterVisible = this._isGroupFooterVisible()\r\n                            }\r\n                            if (data && data.items && options.isGroupFooterVisible && (options.collectContinuationItems || !data.isContinuationOnNextPage)) {\r\n                                result.push({\r\n                                    rowType: DATAGRID_GROUP_FOOTER_ROW_TYPE,\r\n                                    key: options.path.slice(),\r\n                                    data: data,\r\n                                    groupIndex: options.path.length - 1,\r\n                                    values: []\r\n                                })\r\n                            }\r\n                        }\r\n                        return result\r\n                    },\r\n                    _processGroupItem: function(groupItem, options) {\r\n                        var that = this;\r\n                        if (!options.summaryGroupItems) {\r\n                            options.summaryGroupItems = that.option(\"summary.groupItems\") || []\r\n                        }\r\n                        if (\"group\" === groupItem.rowType) {\r\n                            var groupColumnIndex = -1;\r\n                            var afterGroupColumnIndex = -1;\r\n                            (0, _iterator.each)(options.visibleColumns, function(visibleIndex) {\r\n                                var prevColumn = options.visibleColumns[visibleIndex - 1];\r\n                                if (groupItem.groupIndex === this.groupIndex) {\r\n                                    groupColumnIndex = this.index\r\n                                }\r\n                                if (visibleIndex > 0 && \"expand\" === prevColumn.command && \"expand\" !== this.command) {\r\n                                    afterGroupColumnIndex = this.index\r\n                                }\r\n                            });\r\n                            groupItem.summaryCells = this._calculateSummaryCells(options.summaryGroupItems, getGroupAggregates(groupItem.data), options.visibleColumns, function(summaryItem, column) {\r\n                                if (summaryItem.showInGroupFooter) {\r\n                                    return -1\r\n                                }\r\n                                if (summaryItem.alignByColumn && column && !(0, _type.isDefined)(column.groupIndex) && column.index !== afterGroupColumnIndex) {\r\n                                    return column.index\r\n                                } else {\r\n                                    return groupColumnIndex\r\n                                }\r\n                            })\r\n                        }\r\n                        if (groupItem.rowType === DATAGRID_GROUP_FOOTER_ROW_TYPE) {\r\n                            groupItem.summaryCells = this._calculateSummaryCells(options.summaryGroupItems, getGroupAggregates(groupItem.data), options.visibleColumns, function(summaryItem, column) {\r\n                                return summaryItem.showInGroupFooter && that._isDataColumn(column) ? column.index : -1\r\n                            })\r\n                        }\r\n                        return groupItem\r\n                    },\r\n                    _calculateSummaryCells: function(summaryItems, aggregates, visibleColumns, calculateTargetColumnIndex) {\r\n                        var that = this;\r\n                        var summaryCells = [];\r\n                        var summaryCellsByColumns = {};\r\n                        (0, _iterator.each)(summaryItems, function(summaryIndex, summaryItem) {\r\n                            var column = that._columnsController.columnOption(summaryItem.column);\r\n                            var showInColumn = summaryItem.showInColumn && that._columnsController.columnOption(summaryItem.showInColumn) || column;\r\n                            var columnIndex = calculateTargetColumnIndex(summaryItem, showInColumn);\r\n                            if (columnIndex >= 0) {\r\n                                if (!summaryCellsByColumns[columnIndex]) {\r\n                                    summaryCellsByColumns[columnIndex] = []\r\n                                }\r\n                                var aggregate = aggregates[summaryIndex];\r\n                                if (aggregate === aggregate) {\r\n                                    var valueFormat;\r\n                                    if ((0, _type.isDefined)(summaryItem.valueFormat)) {\r\n                                        valueFormat = summaryItem.valueFormat\r\n                                    } else {\r\n                                        if (\"count\" !== summaryItem.summaryType) {\r\n                                            valueFormat = _uiData_grid.default.getFormatByDataType(column && column.dataType)\r\n                                        }\r\n                                    }\r\n                                    summaryCellsByColumns[columnIndex].push((0, _extend.extend)({}, summaryItem, {\r\n                                        value: (0, _type.isString)(aggregate) && column && column.deserializeValue ? column.deserializeValue(aggregate) : aggregate,\r\n                                        valueFormat: valueFormat,\r\n                                        columnCaption: column && column.index !== columnIndex ? column.caption : void 0\r\n                                    }))\r\n                                }\r\n                            }\r\n                        });\r\n                        if (!(0, _type.isEmptyObject)(summaryCellsByColumns)) {\r\n                            (0, _iterator.each)(visibleColumns, function() {\r\n                                summaryCells.push(summaryCellsByColumns[this.index] || [])\r\n                            })\r\n                        }\r\n                        return summaryCells\r\n                    },\r\n                    _getSummaryCells: function(summaryTotalItems, totalAggregates) {\r\n                        var that = this;\r\n                        var columnsController = that._columnsController;\r\n                        return that._calculateSummaryCells(summaryTotalItems, totalAggregates, columnsController.getVisibleColumns(), function(summaryItem, column) {\r\n                            return that._isDataColumn(column) ? column.index : -1\r\n                        })\r\n                    },\r\n                    _updateItemsCore: function(change) {\r\n                        var that = this;\r\n                        var summaryCells;\r\n                        var dataSource = that._dataSource;\r\n                        var footerItems = that._footerItems;\r\n                        var oldSummaryCells = footerItems && footerItems[0] && footerItems[0].summaryCells;\r\n                        var summaryTotalItems = that.option(\"summary.totalItems\");\r\n                        that._footerItems = [];\r\n                        if (dataSource && summaryTotalItems && summaryTotalItems.length) {\r\n                            var totalAggregates = dataSource.totalAggregates();\r\n                            summaryCells = that._getSummaryCells(summaryTotalItems, totalAggregates);\r\n                            if (change && change.repaintChangesOnly && oldSummaryCells) {\r\n                                change.totalColumnIndices = summaryCells.map(function(summaryCell, index) {\r\n                                    if (JSON.stringify(summaryCell) !== JSON.stringify(oldSummaryCells[index])) {\r\n                                        return index\r\n                                    }\r\n                                    return -1\r\n                                }).filter(function(index) {\r\n                                    return index >= 0\r\n                                })\r\n                            }\r\n                            if (summaryCells.length) {\r\n                                that._footerItems.push({\r\n                                    rowType: \"totalFooter\",\r\n                                    summaryCells: summaryCells\r\n                                })\r\n                            }\r\n                        }\r\n                        that.callBase(change)\r\n                    },\r\n                    _prepareUnsavedDataSelector: function(selector) {\r\n                        var that = this;\r\n                        if (recalculateWhileEditing(that)) {\r\n                            var editingController = that.getController(\"editing\");\r\n                            if (editingController) {\r\n                                return function(data) {\r\n                                    data = editingController.getUpdatedData(data);\r\n                                    return selector(data)\r\n                                }\r\n                            }\r\n                        }\r\n                        return selector\r\n                    },\r\n                    _prepareAggregateSelector: function(selector, aggregator) {\r\n                        selector = this._prepareUnsavedDataSelector(selector);\r\n                        if (\"avg\" === aggregator || \"sum\" === aggregator) {\r\n                            return function(data) {\r\n                                var value = selector(data);\r\n                                return (0, _type.isDefined)(value) ? Number(value) : value\r\n                            }\r\n                        }\r\n                        return selector\r\n                    },\r\n                    _getAggregates: function(summaryItems, remoteOperations) {\r\n                        var that = this;\r\n                        var columnsController = that.getController(\"columns\");\r\n                        var calculateCustomSummary = that.option(\"summary.calculateCustomSummary\");\r\n                        var commonSkipEmptyValues = that.option(\"summary.skipEmptyValues\");\r\n                        return (0, _iterator.map)(summaryItems || [], function(summaryItem) {\r\n                            var column = columnsController.columnOption(summaryItem.column);\r\n                            var calculateCellValue = column && column.calculateCellValue ? column.calculateCellValue.bind(column) : (0, _data.compileGetter)(column ? column.dataField : summaryItem.column);\r\n                            var aggregator = summaryItem.summaryType || \"count\";\r\n                            var selector = summaryItem.column;\r\n                            var skipEmptyValues = (0, _type.isDefined)(summaryItem.skipEmptyValues) ? summaryItem.skipEmptyValues : commonSkipEmptyValues;\r\n                            if (remoteOperations) {\r\n                                return {\r\n                                    selector: summaryItem.column,\r\n                                    summaryType: aggregator\r\n                                }\r\n                            } else {\r\n                                selector = that._prepareAggregateSelector(calculateCellValue, aggregator);\r\n                                if (\"custom\" === aggregator) {\r\n                                    if (!calculateCustomSummary) {\r\n                                        _ui.default.log(\"E1026\");\r\n                                        calculateCustomSummary = function() {}\r\n                                    }\r\n                                    var options = {\r\n                                        component: that.component,\r\n                                        name: summaryItem.name\r\n                                    };\r\n                                    calculateCustomSummary(options);\r\n                                    options.summaryProcess = \"calculate\";\r\n                                    aggregator = {\r\n                                        seed: function(groupIndex) {\r\n                                            options.summaryProcess = \"start\";\r\n                                            options.totalValue = void 0;\r\n                                            options.groupIndex = groupIndex;\r\n                                            delete options.value;\r\n                                            calculateCustomSummary(options);\r\n                                            return options.totalValue\r\n                                        },\r\n                                        step: function(totalValue, value) {\r\n                                            options.summaryProcess = \"calculate\";\r\n                                            options.totalValue = totalValue;\r\n                                            options.value = value;\r\n                                            calculateCustomSummary(options);\r\n                                            return options.totalValue\r\n                                        },\r\n                                        finalize: function(totalValue) {\r\n                                            options.summaryProcess = \"finalize\";\r\n                                            options.totalValue = totalValue;\r\n                                            delete options.value;\r\n                                            calculateCustomSummary(options);\r\n                                            return options.totalValue\r\n                                        }\r\n                                    }\r\n                                }\r\n                                return {\r\n                                    selector: selector,\r\n                                    aggregator: aggregator,\r\n                                    skipEmptyValues: skipEmptyValues\r\n                                }\r\n                            }\r\n                        })\r\n                    },\r\n                    _addSortInfo: function(sortByGroups, groupColumn, selector, sortOrder) {\r\n                        if (groupColumn) {\r\n                            var groupIndex = groupColumn.groupIndex;\r\n                            sortOrder = sortOrder || groupColumn.sortOrder;\r\n                            if ((0, _type.isDefined)(groupIndex)) {\r\n                                sortByGroups[groupIndex] = sortByGroups[groupIndex] || [];\r\n                                sortByGroups[groupIndex].push({\r\n                                    selector: selector,\r\n                                    desc: \"desc\" === sortOrder\r\n                                })\r\n                            }\r\n                        }\r\n                    },\r\n                    _findSummaryItem: function(summaryItems, name) {\r\n                        var summaryItemIndex = -1;\r\n                        var getFullName = function(summaryItem) {\r\n                            var summaryType = summaryItem.summaryType;\r\n                            var column = summaryItem.column;\r\n                            return summaryType && column && summaryType + \"_\" + column\r\n                        };\r\n                        if ((0, _type.isDefined)(name)) {\r\n                            (0, _iterator.each)(summaryItems || [], function(index) {\r\n                                if (this.name === name || index === name || this.summaryType === name || this.column === name || getFullName(this) === name) {\r\n                                    summaryItemIndex = index;\r\n                                    return false\r\n                                }\r\n                            })\r\n                        }\r\n                        return summaryItemIndex\r\n                    },\r\n                    _getSummarySortByGroups: function(sortByGroupSummaryInfo, groupSummaryItems) {\r\n                        var that = this;\r\n                        var columnsController = that._columnsController;\r\n                        var groupColumns = columnsController.getGroupColumns();\r\n                        var sortByGroups = [];\r\n                        if (!groupSummaryItems || !groupSummaryItems.length) {\r\n                            return\r\n                        }(0, _iterator.each)(sortByGroupSummaryInfo || [], function() {\r\n                            var sortOrder = this.sortOrder;\r\n                            var groupColumn = this.groupColumn;\r\n                            var summaryItemIndex = that._findSummaryItem(groupSummaryItems, this.summaryItem);\r\n                            if (summaryItemIndex < 0) {\r\n                                return\r\n                            }\r\n                            var selector = function(data) {\r\n                                return getGroupAggregates(data)[summaryItemIndex]\r\n                            };\r\n                            if ((0, _type.isDefined)(groupColumn)) {\r\n                                groupColumn = columnsController.columnOption(groupColumn);\r\n                                that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder)\r\n                            } else {\r\n                                (0, _iterator.each)(groupColumns, function(groupIndex, groupColumn) {\r\n                                    that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder)\r\n                                })\r\n                            }\r\n                        });\r\n                        return sortByGroups\r\n                    },\r\n                    _createDataSourceAdapterCore: function(dataSource, remoteOperations) {\r\n                        var that = this;\r\n                        var dataSourceAdapter = this.callBase(dataSource, remoteOperations);\r\n                        dataSourceAdapter.summaryGetter(function(currentRemoteOperations) {\r\n                            return that._getSummaryOptions(currentRemoteOperations || remoteOperations)\r\n                        });\r\n                        return dataSourceAdapter\r\n                    },\r\n                    _getSummaryOptions: function(remoteOperations) {\r\n                        var that = this;\r\n                        var groupSummaryItems = that.option(\"summary.groupItems\");\r\n                        var totalSummaryItems = that.option(\"summary.totalItems\");\r\n                        var sortByGroupSummaryInfo = that.option(\"sortByGroupSummaryInfo\");\r\n                        var groupAggregates = that._getAggregates(groupSummaryItems, remoteOperations && remoteOperations.grouping && remoteOperations.summary);\r\n                        var totalAggregates = that._getAggregates(totalSummaryItems, remoteOperations && remoteOperations.summary);\r\n                        var sortByGroups = function() {\r\n                            return that._getSummarySortByGroups(sortByGroupSummaryInfo, groupSummaryItems)\r\n                        };\r\n                        if (groupAggregates.length || totalAggregates.length) {\r\n                            return {\r\n                                groupAggregates: groupAggregates,\r\n                                totalAggregates: totalAggregates,\r\n                                sortByGroups: sortByGroups\r\n                            }\r\n                        }\r\n                    },\r\n                    publicMethods: function() {\r\n                        var methods = this.callBase();\r\n                        methods.push(\"getTotalSummaryValue\");\r\n                        return methods\r\n                    },\r\n                    getTotalSummaryValue: function(summaryItemName) {\r\n                        var summaryItemIndex = this._findSummaryItem(this.option(\"summary.totalItems\"), summaryItemName);\r\n                        var aggregates = this._dataSource.totalAggregates();\r\n                        if (aggregates.length && summaryItemIndex > -1) {\r\n                            return aggregates[summaryItemIndex]\r\n                        }\r\n                    },\r\n                    optionChanged: function(args) {\r\n                        if (\"summary\" === args.name || \"sortByGroupSummaryInfo\" === args.name) {\r\n                            args.name = \"dataSource\"\r\n                        }\r\n                        this.callBase(args)\r\n                    },\r\n                    init: function() {\r\n                        this._footerItems = [];\r\n                        this.callBase()\r\n                    },\r\n                    footerItems: function() {\r\n                        return this._footerItems\r\n                    }\r\n                }\r\n            }(),\r\n            editing: function() {\r\n                return {\r\n                    _refreshSummary: function() {\r\n                        if (recalculateWhileEditing(this) && !this.isSaving()) {\r\n                            this._dataController.refresh({\r\n                                load: true,\r\n                                changesOnly: true\r\n                            })\r\n                        }\r\n                    },\r\n                    _addChange: function(params) {\r\n                        var result = this.callBase.apply(this, arguments);\r\n                        if (params.type) {\r\n                            this._refreshSummary()\r\n                        }\r\n                        return result\r\n                    },\r\n                    _removeChange: function() {\r\n                        var result = this.callBase.apply(this, arguments);\r\n                        this._refreshSummary();\r\n                        return result\r\n                    },\r\n                    cancelEditData: function() {\r\n                        var result = this.callBase.apply(this, arguments);\r\n                        this._refreshSummary();\r\n                        return result\r\n                    }\r\n                }\r\n            }()\r\n        },\r\n        views: {\r\n            rowsView: function() {\r\n                return {\r\n                    _createRow: function(row) {\r\n                        var $row = this.callBase(row);\r\n                        row && $row.addClass(row.rowType === DATAGRID_GROUP_FOOTER_ROW_TYPE ? DATAGRID_GROUP_FOOTER_CLASS : \"\");\r\n                        return $row\r\n                    },\r\n                    _renderCells: function($row, options) {\r\n                        this.callBase.apply(this, arguments);\r\n                        if (\"group\" === options.row.rowType && options.row.summaryCells && options.row.summaryCells.length) {\r\n                            this._renderGroupSummaryCells($row, options)\r\n                        }\r\n                    },\r\n                    _hasAlignByColumnSummaryItems: function(columnIndex, options) {\r\n                        return !(0, _type.isDefined)(options.columns[columnIndex].groupIndex) && options.row.summaryCells[columnIndex].length\r\n                    },\r\n                    _getAlignByColumnCellCount: function(groupCellColSpan, options) {\r\n                        var alignByColumnCellCount = 0;\r\n                        for (var i = 1; i < groupCellColSpan; i++) {\r\n                            var columnIndex = options.row.summaryCells.length - i;\r\n                            alignByColumnCellCount = this._hasAlignByColumnSummaryItems(columnIndex, options) ? i : alignByColumnCellCount\r\n                        }\r\n                        return alignByColumnCellCount\r\n                    },\r\n                    _renderGroupSummaryCells: function($row, options) {\r\n                        var $groupCell = $row.children().last();\r\n                        var groupCellColSpan = Number($groupCell.attr(\"colSpan\")) || 1;\r\n                        var alignByColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);\r\n                        this._renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount)\r\n                    },\r\n                    _renderGroupSummaryCellsCore: function($groupCell, options, groupCellColSpan, alignByColumnCellCount) {\r\n                        if (alignByColumnCellCount > 0) {\r\n                            $groupCell.attr(\"colSpan\", groupCellColSpan - alignByColumnCellCount);\r\n                            for (var i = 0; i < alignByColumnCellCount; i++) {\r\n                                var columnIndex = options.columns.length - alignByColumnCellCount + i;\r\n                                this._renderCell($groupCell.parent(), (0, _extend.extend)({\r\n                                    column: options.columns[columnIndex],\r\n                                    columnIndex: this._getSummaryCellIndex(columnIndex, options.columns)\r\n                                }, options))\r\n                            }\r\n                        }\r\n                    },\r\n                    _getSummaryCellIndex: function(columnIndex) {\r\n                        return columnIndex\r\n                    },\r\n                    _getCellTemplate: function(options) {\r\n                        if (!options.column.command && !(0, _type.isDefined)(options.column.groupIndex) && options.summaryItems && options.summaryItems.length) {\r\n                            return renderSummaryCell\r\n                        } else {\r\n                            return this.callBase(options)\r\n                        }\r\n                    },\r\n                    _getCellOptions: function(options) {\r\n                        var that = this;\r\n                        var parameters = that.callBase(options);\r\n                        if (options.row.summaryCells) {\r\n                            return (0, _extend.extend)(parameters, getSummaryCellOptions(that, options))\r\n                        } else {\r\n                            return parameters\r\n                        }\r\n                    }\r\n                }\r\n            }()\r\n        }\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.data_controller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataController = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.data_source_adapter\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.data_controller\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DataController = _uiGrid_core.default.controllers.data.inherit(function() {\r\n    return {\r\n        _getDataSourceAdapter: function() {\r\n            return _uiData_grid2.default\r\n        },\r\n        _getSpecificDataSourceOption: function() {\r\n            var dataSource = this.option(\"dataSource\");\r\n            if (dataSource && !Array.isArray(dataSource) && this.option(\"keyExpr\")) {\r\n                _ui.default.log(\"W1011\")\r\n            }\r\n            return this.callBase()\r\n        }\r\n    }\r\n}());\r\nexports.DataController = DataController;\r\n_uiData_grid.default.registerModule(\"data\", {\r\n    defaultOptions: _uiGrid_core.default.defaultOptions,\r\n    controllers: {\r\n        data: DataController\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (core/utils/icon.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getImageContainer = exports.getImageSourceType = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ICON_CLASS = \"dx-icon\";\r\nvar SVG_ICON_CLASS = \"dx-svg-icon\";\r\nvar getImageSourceType = function(source) {\r\n    if (!source || \"string\" !== typeof source) {\r\n        return false\r\n    }\r\n    if (/^\\s*<svg[^>]*>(.|\\r\\n|\\r|\\n)*?<\\/svg>\\s*$/i.test(source)) {\r\n        return \"svg\"\r\n    }\r\n    if (/data:.*base64|\\.|[^<\\s]\\//.test(source)) {\r\n        return \"image\"\r\n    }\r\n    if (/^[\\w-_]+$/.test(source)) {\r\n        return \"dxIcon\"\r\n    }\r\n    if (/^\\s?([\\w-_]\\s?)+$/.test(source)) {\r\n        return \"fontIcon\"\r\n    }\r\n    return false\r\n};\r\nexports.getImageSourceType = getImageSourceType;\r\nvar getImageContainer = function(source) {\r\n    switch (getImageSourceType(source)) {\r\n        case \"image\":\r\n            return (0, _renderer.default)(\"<img>\").attr(\"src\", source).addClass(ICON_CLASS);\r\n        case \"fontIcon\":\r\n            return (0, _renderer.default)(\"<i>\").addClass(\"\".concat(ICON_CLASS, \" \").concat(source));\r\n        case \"dxIcon\":\r\n            return (0, _renderer.default)(\"<i>\").addClass(\"\".concat(ICON_CLASS, \" \").concat(ICON_CLASS, \"-\").concat(source));\r\n        case \"svg\":\r\n            return (0, _renderer.default)(\"<i>\").addClass(\"\".concat(ICON_CLASS, \" \").concat(SVG_ICON_CLASS)).append(source);\r\n        default:\r\n            return null\r\n    }\r\n};\r\nexports.getImageContainer = getImageContainer;\r\n","/**\r\n * DevExtreme (ui/tabs.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _button = _interopRequireDefault(require(\"./button\"));\r\nvar _utils = require(\"./widget/utils.ink_ripple\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _item = _interopRequireDefault(require(\"./tabs/item\"));\r\nvar _constants = require(\"./tabs/constants\");\r\nvar _themes = require(\"./themes\");\r\nvar _hold = _interopRequireDefault(require(\"../events/hold\"));\r\nvar _ui = _interopRequireDefault(require(\"./scroll_view/ui.scrollable\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.live_update\"));\r\nvar _icon = require(\"../core/utils/icon\");\r\nvar _bindable_template = require(\"../core/templates/bindable_template\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TABS_CLASS = \"dx-tabs\";\r\nvar TABS_WRAPPER_CLASS = \"dx-tabs-wrapper\";\r\nvar TABS_STRETCHED_CLASS = \"dx-tabs-stretched\";\r\nvar TABS_SCROLLABLE_CLASS = \"dx-tabs-scrollable\";\r\nvar TABS_NAV_BUTTONS_CLASS = \"dx-tabs-nav-buttons\";\r\nvar OVERFLOW_HIDDEN_CLASS = \"dx-overflow-hidden\";\r\nvar TABS_ITEM_CLASS = \"dx-tab\";\r\nvar TABS_ITEM_SELECTED_CLASS = \"dx-tab-selected\";\r\nvar TABS_NAV_BUTTON_CLASS = \"dx-tabs-nav-button\";\r\nvar TABS_LEFT_NAV_BUTTON_CLASS = \"dx-tabs-nav-button-left\";\r\nvar TABS_RIGHT_NAV_BUTTON_CLASS = \"dx-tabs-nav-button-right\";\r\nvar TABS_ITEM_TEXT_CLASS = \"dx-tab-text\";\r\nvar TABS_ITEM_DATA_KEY = \"dxTabData\";\r\nvar BUTTON_NEXT_ICON = \"chevronnext\";\r\nvar BUTTON_PREV_ICON = \"chevronprev\";\r\nvar FEEDBACK_HIDE_TIMEOUT = 100;\r\nvar FEEDBACK_DURATION_INTERVAL = 5;\r\nvar FEEDBACK_SCROLL_TIMEOUT = 300;\r\nvar TAB_OFFSET = 30;\r\nvar Tabs = _uiCollection_widget.default.inherit({\r\n    _activeStateUnit: \".\" + TABS_ITEM_CLASS,\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: true,\r\n            showNavButtons: true,\r\n            scrollByContent: true,\r\n            scrollingEnabled: true,\r\n            selectionMode: \"single\",\r\n            activeStateEnabled: true,\r\n            selectionRequired: false,\r\n            selectOnFocus: true,\r\n            loopItemFocus: false,\r\n            useInkRipple: false,\r\n            badgeExpr: function(data) {\r\n                return data ? data.badge : void 0\r\n            }\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        var themeName = (0, _themes.current)();\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" !== _devices.default.real().deviceType\r\n            },\r\n            options: {\r\n                showNavButtons: false\r\n            }\r\n        }, {\r\n            device: {\r\n                deviceType: \"desktop\"\r\n            },\r\n            options: {\r\n                scrollByContent: false\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)(themeName)\r\n            },\r\n            options: {\r\n                useInkRipple: true,\r\n                selectOnFocus: false\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.setAria(\"role\", \"tablist\");\r\n        this.$element().addClass(TABS_CLASS);\r\n        this._renderWrapper();\r\n        this._renderMultiple();\r\n        this._feedbackHideTimeout = FEEDBACK_HIDE_TIMEOUT\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            item: new _bindable_template.BindableTemplate(function($container, data) {\r\n                if ((0, _type.isPlainObject)(data)) {\r\n                    this._prepareDefaultItemTemplate(data, $container)\r\n                } else {\r\n                    $container.text(String(data))\r\n                }\r\n                var $iconElement = (0, _icon.getImageContainer)(data.icon);\r\n                $iconElement && $iconElement.prependTo($container);\r\n                $container.wrapInner((0, _renderer.default)(\"<span>\").addClass(TABS_ITEM_TEXT_CLASS))\r\n            }.bind(this), [\"text\", \"html\", \"icon\"], this.option(\"integrationOptions.watchMethod\"))\r\n        })\r\n    },\r\n    _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n        var _this = this;\r\n        var itemData = renderArgs.itemData,\r\n            container = renderArgs.container,\r\n            index = renderArgs.index;\r\n        this._deferredTemplates[index] = new _deferred.Deferred;\r\n        return itemTemplate.render({\r\n            model: itemData,\r\n            container: container,\r\n            index: index,\r\n            onRendered: function() {\r\n                return _this._deferredTemplates[index].resolve()\r\n            }\r\n        })\r\n    },\r\n    _itemClass: function() {\r\n        return TABS_ITEM_CLASS\r\n    },\r\n    _selectedItemClass: function() {\r\n        return TABS_ITEM_SELECTED_CLASS\r\n    },\r\n    _itemDataKey: function() {\r\n        return TABS_ITEM_DATA_KEY\r\n    },\r\n    _initMarkup: function() {\r\n        this._deferredTemplates = [];\r\n        this.callBase();\r\n        this.setAria(\"role\", \"tab\", this.itemElements());\r\n        this.option(\"useInkRipple\") && this._renderInkRipple();\r\n        this.$element().addClass(OVERFLOW_HIDDEN_CLASS)\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._deferRenderScrolling()\r\n    },\r\n    _deferRenderScrolling: function() {\r\n        var _this2 = this;\r\n        _deferred.when.apply(this, this._deferredTemplates).done(function() {\r\n            return _this2._renderScrolling()\r\n        })\r\n    },\r\n    _renderScrolling: function() {\r\n        var removeClasses = [TABS_STRETCHED_CLASS, _constants.TABS_EXPANDED_CLASS, OVERFLOW_HIDDEN_CLASS];\r\n        this.$element().removeClass(removeClasses.join(\" \"));\r\n        if (this.option(\"scrollingEnabled\") && this._isItemsWidthExceeded()) {\r\n            if (!this._scrollable) {\r\n                this._renderScrollable();\r\n                this._renderNavButtons()\r\n            }\r\n            this._scrollable.update();\r\n            this._updateNavButtonsVisibility();\r\n            if (this.option(\"rtlEnabled\")) {\r\n                this._scrollable.scrollTo({\r\n                    left: this._scrollable.scrollWidth() - this._scrollable.clientWidth()\r\n                })\r\n            }\r\n            this._scrollToItem(this.option(\"selectedItem\"))\r\n        }\r\n        if (!(this.option(\"scrollingEnabled\") && this._isItemsWidthExceeded())) {\r\n            this._cleanScrolling();\r\n            if (this._needStretchItems() && !this._isItemsWidthExceeded()) {\r\n                this.$element().addClass(TABS_STRETCHED_CLASS)\r\n            }\r\n            this.$element().removeClass(TABS_NAV_BUTTONS_CLASS).addClass(_constants.TABS_EXPANDED_CLASS)\r\n        }\r\n    },\r\n    _isItemsWidthExceeded: function() {\r\n        var tabItemsWidth = this._getSummaryItemsWidth(this._getVisibleItems(), true);\r\n        return tabItemsWidth - 1 > this.$element().width()\r\n    },\r\n    _needStretchItems: function() {\r\n        var $visibleItems = this._getVisibleItems();\r\n        var elementWidth = this.$element().width();\r\n        var itemsWidth = [];\r\n        (0, _iterator.each)($visibleItems, function(_, item) {\r\n            itemsWidth.push((0, _renderer.default)(item).outerWidth(true))\r\n        });\r\n        var maxTabWidth = Math.max.apply(null, itemsWidth);\r\n        return maxTabWidth > elementWidth / $visibleItems.length\r\n    },\r\n    _cleanNavButtons: function() {\r\n        if (!this._leftButton || !this._rightButton) {\r\n            return\r\n        }\r\n        this._leftButton.$element().remove();\r\n        this._rightButton.$element().remove();\r\n        this._leftButton = null;\r\n        this._rightButton = null\r\n    },\r\n    _cleanScrolling: function() {\r\n        if (!this._scrollable) {\r\n            return\r\n        }\r\n        this._$wrapper.appendTo(this.$element());\r\n        this._scrollable.$element().remove();\r\n        this._scrollable = null;\r\n        this._cleanNavButtons()\r\n    },\r\n    _renderInkRipple: function() {\r\n        this._inkRipple = (0, _utils.render)()\r\n    },\r\n    _toggleActiveState: function($element, value, e) {\r\n        this.callBase.apply(this, arguments);\r\n        if (!this._inkRipple) {\r\n            return\r\n        }\r\n        var config = {\r\n            element: $element,\r\n            event: e\r\n        };\r\n        if (value) {\r\n            this._inkRipple.showWave(config)\r\n        } else {\r\n            this._inkRipple.hideWave(config)\r\n        }\r\n    },\r\n    _renderMultiple: function() {\r\n        if (\"multiple\" === this.option(\"selectionMode\")) {\r\n            this.option(\"selectOnFocus\", false)\r\n        }\r\n    },\r\n    _renderWrapper: function() {\r\n        this._$wrapper = (0, _renderer.default)(\"<div>\").addClass(TABS_WRAPPER_CLASS);\r\n        this.$element().append(this._$wrapper)\r\n    },\r\n    _itemContainer: function() {\r\n        return this._$wrapper\r\n    },\r\n    _renderScrollable: function() {\r\n        var $itemContainer = this.$element().wrapInner((0, _renderer.default)(\"<div>\").addClass(TABS_SCROLLABLE_CLASS)).children();\r\n        this._scrollable = this._createComponent($itemContainer, _ui.default, {\r\n            direction: \"horizontal\",\r\n            showScrollbar: false,\r\n            useKeyboard: false,\r\n            useNative: false,\r\n            scrollByContent: this.option(\"scrollByContent\"),\r\n            onScroll: this._updateNavButtonsVisibility.bind(this)\r\n        });\r\n        this.$element().append(this._scrollable.$element())\r\n    },\r\n    _scrollToItem: function(itemData) {\r\n        if (!this._scrollable) {\r\n            return\r\n        }\r\n        var $item = this._editStrategy.getItemElement(itemData);\r\n        this._scrollable.scrollToElement($item)\r\n    },\r\n    _renderNavButtons: function() {\r\n        this.$element().toggleClass(TABS_NAV_BUTTONS_CLASS, this.option(\"showNavButtons\"));\r\n        if (!this.option(\"showNavButtons\")) {\r\n            return\r\n        }\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        this._leftButton = this._createNavButton(-TAB_OFFSET, rtlEnabled ? BUTTON_NEXT_ICON : BUTTON_PREV_ICON);\r\n        var $leftButton = this._leftButton.$element();\r\n        $leftButton.addClass(TABS_LEFT_NAV_BUTTON_CLASS);\r\n        this.$element().prepend($leftButton);\r\n        this._rightButton = this._createNavButton(TAB_OFFSET, rtlEnabled ? BUTTON_PREV_ICON : BUTTON_NEXT_ICON);\r\n        var $rightButton = this._rightButton.$element();\r\n        $rightButton.addClass(TABS_RIGHT_NAV_BUTTON_CLASS);\r\n        this.$element().append($rightButton)\r\n    },\r\n    _updateNavButtonsVisibility: function() {\r\n        this._leftButton && this._leftButton.option(\"disabled\", this._scrollable.scrollLeft() <= 0);\r\n        this._rightButton && this._rightButton.option(\"disabled\", this._scrollable.scrollLeft() >= Math.round(this._scrollable.scrollWidth() - this._scrollable.clientWidth()))\r\n    },\r\n    _updateScrollPosition: function(offset, duration) {\r\n        this._scrollable.update();\r\n        this._scrollable.scrollBy(offset / duration)\r\n    },\r\n    _createNavButton: function(offset, icon) {\r\n        var that = this;\r\n        var holdAction = that._createAction(function() {\r\n            that._holdInterval = setInterval(function() {\r\n                that._updateScrollPosition(offset, FEEDBACK_DURATION_INTERVAL)\r\n            }, FEEDBACK_DURATION_INTERVAL)\r\n        });\r\n        var holdEventName = (0, _index.addNamespace)(_hold.default.name, \"dxNavButton\");\r\n        var pointerUpEventName = (0, _index.addNamespace)(_pointer.default.up, \"dxNavButton\");\r\n        var pointerOutEventName = (0, _index.addNamespace)(_pointer.default.out, \"dxNavButton\");\r\n        var navButton = this._createComponent((0, _renderer.default)(\"<div>\").addClass(TABS_NAV_BUTTON_CLASS), _button.default, {\r\n            focusStateEnabled: false,\r\n            icon: icon,\r\n            onClick: function() {\r\n                that._updateScrollPosition(offset, 1)\r\n            },\r\n            integrationOptions: {}\r\n        });\r\n        var $navButton = navButton.$element();\r\n        _events_engine.default.on($navButton, holdEventName, {\r\n            timeout: FEEDBACK_SCROLL_TIMEOUT\r\n        }, function(e) {\r\n            holdAction({\r\n                event: e\r\n            })\r\n        }.bind(this));\r\n        _events_engine.default.on($navButton, pointerUpEventName, function() {\r\n            that._clearInterval()\r\n        });\r\n        _events_engine.default.on($navButton, pointerOutEventName, function() {\r\n            that._clearInterval()\r\n        });\r\n        return navButton\r\n    },\r\n    _clearInterval: function() {\r\n        if (this._holdInterval) {\r\n            clearInterval(this._holdInterval)\r\n        }\r\n    },\r\n    _updateSelection: function(addedSelection) {\r\n        this._scrollable && this._scrollable.scrollToElement(this.itemElements().eq(addedSelection[0]), {\r\n            left: 1,\r\n            right: 1\r\n        })\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._dimensionChanged()\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        this._renderScrolling()\r\n    },\r\n    _itemSelectHandler: function(e) {\r\n        if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n            return\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    _clean: function() {\r\n        this._deferredTemplates = [];\r\n        this._cleanScrolling();\r\n        this.callBase()\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"useInkRipple\":\r\n            case \"scrollingEnabled\":\r\n            case \"showNavButtons\":\r\n                this._invalidate();\r\n                break;\r\n            case \"scrollByContent\":\r\n                this._scrollable && this._scrollable.option(args.name, args.value);\r\n                break;\r\n            case \"width\":\r\n                this.callBase(args);\r\n                this._dimensionChanged();\r\n                break;\r\n            case \"selectionMode\":\r\n                this._renderMultiple();\r\n                this.callBase(args);\r\n                break;\r\n            case \"badgeExpr\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _afterItemElementInserted: function() {\r\n        this.callBase();\r\n        this._deferRenderScrolling()\r\n    },\r\n    _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n        this.callBase($item, deletedActionArgs);\r\n        this._renderScrolling()\r\n    }\r\n});\r\nTabs.ItemClass = _item.default;\r\n(0, _component_registrator.default)(\"dxTabs\", Tabs);\r\nvar _default = Tabs;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.pager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _pager = _interopRequireDefault(require(\"../pager\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _window = require(\"../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PAGER_CLASS = \"pager\";\r\nvar MAX_PAGES_COUNT = 10;\r\nvar getPageIndex = function(dataController) {\r\n    return 1 + (parseInt(dataController.pageIndex()) || 0)\r\n};\r\nvar PagerView = _uiGrid_core.default.View.inherit({\r\n    init: function() {\r\n        var that = this;\r\n        var dataController = that.getController(\"data\");\r\n        that._isVisible = false;\r\n        dataController.changed.add(function(e) {\r\n            if (e && e.repaintChangesOnly) {\r\n                var pager = that._getPager();\r\n                if (pager) {\r\n                    pager.option({\r\n                        pageIndex: getPageIndex(dataController),\r\n                        pageSize: dataController.pageSize(),\r\n                        pageCount: dataController.pageCount(),\r\n                        totalCount: dataController.totalCount(),\r\n                        hasKnownLastPage: dataController.hasKnownLastPage()\r\n                    })\r\n                } else {\r\n                    that.render()\r\n                }\r\n            } else {\r\n                if (!e || \"update\" !== e.changeType && \"updateSelection\" !== e.changeType) {\r\n                    that.render()\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _getPager: function() {\r\n        var $element = this.element();\r\n        return $element && $element.data(\"dxPager\")\r\n    },\r\n    _renderCore: function() {\r\n        var that = this;\r\n        var $element = that.element().addClass(that.addWidgetPrefix(PAGER_CLASS));\r\n        var pagerOptions = that.option(\"pager\") || {};\r\n        var dataController = that.getController(\"data\");\r\n        var keyboardController = that.getController(\"keyboardNavigation\");\r\n        var options = {\r\n            maxPagesCount: MAX_PAGES_COUNT,\r\n            pageIndex: getPageIndex(dataController),\r\n            pageCount: dataController.pageCount(),\r\n            pageSize: dataController.pageSize(),\r\n            showPageSizes: pagerOptions.showPageSizeSelector,\r\n            showInfo: pagerOptions.showInfo,\r\n            displayMode: pagerOptions.displayMode,\r\n            pagesNavigatorVisible: pagerOptions.visible,\r\n            showNavigationButtons: pagerOptions.showNavigationButtons,\r\n            pageSizes: that.getPageSizes(),\r\n            totalCount: dataController.totalCount(),\r\n            hasKnownLastPage: dataController.hasKnownLastPage(),\r\n            pageIndexChanged: function(pageIndex) {\r\n                if (dataController.pageIndex() !== pageIndex - 1) {\r\n                    setTimeout(function() {\r\n                        dataController.pageIndex(pageIndex - 1)\r\n                    })\r\n                }\r\n            },\r\n            pageSizeChanged: function(pageSize) {\r\n                setTimeout(function() {\r\n                    dataController.pageSize(pageSize)\r\n                })\r\n            },\r\n            onKeyDown: function(e) {\r\n                return keyboardController && keyboardController.executeAction(\"onKeyDown\", e)\r\n            },\r\n            useLegacyKeyboardNavigation: this.option(\"useLegacyKeyboardNavigation\"),\r\n            useKeyboard: this.option(\"keyboardNavigation.enabled\")\r\n        };\r\n        if ((0, _type.isDefined)(pagerOptions.infoText)) {\r\n            options.infoText = pagerOptions.infoText\r\n        }\r\n        that._createComponent($element, _pager.default, options)\r\n    },\r\n    getPageSizes: function() {\r\n        var that = this;\r\n        var dataController = that.getController(\"data\");\r\n        var pagerOptions = that.option(\"pager\");\r\n        var allowedPageSizes = pagerOptions && pagerOptions.allowedPageSizes;\r\n        var pageSize = dataController.pageSize();\r\n        if (!(0, _type.isDefined)(that._pageSizes) || (0, _array.inArray)(pageSize, that._pageSizes) === -1) {\r\n            that._pageSizes = [];\r\n            if (pagerOptions) {\r\n                if (Array.isArray(allowedPageSizes)) {\r\n                    that._pageSizes = allowedPageSizes\r\n                } else {\r\n                    if (allowedPageSizes && pageSize > 1) {\r\n                        that._pageSizes = [Math.floor(pageSize / 2), pageSize, 2 * pageSize]\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return that._pageSizes\r\n    },\r\n    isVisible: function() {\r\n        var that = this;\r\n        var dataController = that.getController(\"data\");\r\n        var pagerOptions = that.option(\"pager\");\r\n        var pagerVisible = pagerOptions && pagerOptions.visible;\r\n        var scrolling = that.option(\"scrolling\");\r\n        if (that._isVisible) {\r\n            return true\r\n        }\r\n        if (\"auto\" === pagerVisible) {\r\n            if (scrolling && (\"virtual\" === scrolling.mode || \"infinite\" === scrolling.mode)) {\r\n                pagerVisible = false\r\n            } else {\r\n                pagerVisible = dataController.pageCount() > 1 || dataController.isLoaded() && !dataController.hasKnownLastPage()\r\n            }\r\n        }\r\n        that._isVisible = pagerVisible;\r\n        return pagerVisible\r\n    },\r\n    getHeight: function() {\r\n        return this.getElementHeight()\r\n    },\r\n    optionChanged: function(args) {\r\n        var that = this;\r\n        var name = args.name;\r\n        var isPager = \"pager\" === name;\r\n        var isPaging = \"paging\" === name;\r\n        var isDataSource = \"dataSource\" === name;\r\n        var isScrolling = \"scrolling\" === name;\r\n        var dataController = that.getController(\"data\");\r\n        if (isPager || isPaging || isScrolling || isDataSource) {\r\n            args.handled = true;\r\n            if (dataController.skipProcessingPagingChange(args.fullName)) {\r\n                return\r\n            }\r\n            if (isPager || isPaging) {\r\n                that._pageSizes = null\r\n            }\r\n            if (isPager || isPaging || isScrolling) {\r\n                that._isVisible = false\r\n            }\r\n            if (!isDataSource) {\r\n                that._invalidate();\r\n                if ((0, _window.hasWindow)() && isPager && that.component) {\r\n                    that.component.resize()\r\n                }\r\n            }\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            pager: {\r\n                visible: \"auto\",\r\n                showPageSizeSelector: false,\r\n                allowedPageSizes: \"auto\"\r\n            }\r\n        }\r\n    },\r\n    views: {\r\n        pagerView: PagerView\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.state_storing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.state_storing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar origApplyState = _uiGrid_core.default.extenders.controllers.stateStoring.applyState;\r\n_uiTree_list.default.registerModule(\"stateStoring\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n    extenders: {\r\n        controllers: {\r\n            stateStoring: {\r\n                applyState: function(state) {\r\n                    origApplyState.apply(this, arguments);\r\n                    if (Object.prototype.hasOwnProperty.call(state, \"expandedRowKeys\")) {\r\n                        this.option(\"expandedRowKeys\", state.expandedRowKeys && state.expandedRowKeys.slice())\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                getUserState: function() {\r\n                    var state = this.callBase.apply(this, arguments);\r\n                    if (!this.option(\"autoExpandAll\")) {\r\n                        state.expandedRowKeys = this.option(\"expandedRowKeys\")\r\n                    }\r\n                    return state\r\n                }\r\n            }\r\n        }\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.indicator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _window = require(\"../../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SCHEDULER_DATE_TIME_INDICATOR_CLASS = \"dx-scheduler-date-time-indicator\";\r\nvar TIME_PANEL_CURRENT_TIME_CELL_CLASS = \"dx-scheduler-time-panel-current-time-cell\";\r\nvar HEADER_CURRENT_TIME_CELL_CLASS = \"dx-scheduler-header-panel-current-time-cell\";\r\nvar SchedulerWorkSpaceIndicator = function(_SchedulerWorkSpace) {\r\n    _inherits(SchedulerWorkSpaceIndicator, _SchedulerWorkSpace);\r\n    var _super = _createSuper(SchedulerWorkSpaceIndicator);\r\n\r\n    function SchedulerWorkSpaceIndicator() {\r\n        _classCallCheck(this, SchedulerWorkSpaceIndicator);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerWorkSpaceIndicator, [{\r\n        key: \"_getToday\",\r\n        value: function() {\r\n            var date = this.option(\"indicatorTime\") || new Date;\r\n            return this.invoke(\"convertDateByTimezone\", date) || date\r\n        }\r\n    }, {\r\n        key: \"isIndicationOnView\",\r\n        value: function() {\r\n            if (this.option(\"showCurrentTimeIndicator\")) {\r\n                var today = this._getToday();\r\n                var endViewDate = _date.default.trimTime(this.getEndViewDate());\r\n                return _date.default.dateInRange(today, this._firstViewDate, new Date(endViewDate.getTime() + toMs(\"day\")))\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"isIndicationAvailable\",\r\n        value: function() {\r\n            if (!(0, _window.hasWindow)()) {\r\n                return false\r\n            }\r\n            var today = this._getToday();\r\n            return today >= _date.default.trimTime(new Date(this.getStartViewDate()))\r\n        }\r\n    }, {\r\n        key: \"isIndicatorVisible\",\r\n        value: function() {\r\n            var today = this._getToday();\r\n            var endViewDate = new Date(this.getEndViewDate());\r\n            var firstViewDate = new Date(this.getStartViewDate());\r\n            firstViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n            endViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n            return _date.default.dateInRange(today, firstViewDate, endViewDate)\r\n        }\r\n    }, {\r\n        key: \"_renderDateTimeIndication\",\r\n        value: function() {\r\n            if (this.isIndicationAvailable()) {\r\n                if (this.option(\"shadeUntilCurrentTime\")) {\r\n                    this._shader.render()\r\n                }\r\n                if (this.isIndicationOnView() && this.isIndicatorVisible()) {\r\n                    var groupCount = this._getGroupCount() || 1;\r\n                    var $container = this._dateTableScrollable.$content();\r\n                    var height = this.getIndicationHeight();\r\n                    var rtlOffset = this._getRtlOffset(this.getCellWidth());\r\n                    this._renderIndicator(height, rtlOffset, $container, groupCount)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderIndicator\",\r\n        value: function(height, rtlOffset, $container, groupCount) {\r\n            var groupedByDate = this.isGroupedByDate();\r\n            var repeatCount = groupedByDate ? 1 : groupCount;\r\n            for (var i = 0; i < repeatCount; i++) {\r\n                var $indicator = this._createIndicator($container);\r\n                $indicator.width(groupedByDate ? this.getCellWidth() * groupCount : this.getCellWidth());\r\n                this._groupedStrategy.shiftIndicator($indicator, height, rtlOffset, i)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createIndicator\",\r\n        value: function($container) {\r\n            var $indicator = (0, _renderer.default)(\"<div>\").addClass(SCHEDULER_DATE_TIME_INDICATOR_CLASS);\r\n            $container.append($indicator);\r\n            return $indicator\r\n        }\r\n    }, {\r\n        key: \"_getRtlOffset\",\r\n        value: function(width) {\r\n            return this.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this._dateTableScrollable.$content().get(0)).width - this.getTimePanelWidth() - width : 0\r\n        }\r\n    }, {\r\n        key: \"_setIndicationUpdateInterval\",\r\n        value: function() {\r\n            if (!this.option(\"showCurrentTimeIndicator\") || 0 === this.option(\"indicatorUpdateInterval\")) {\r\n                return\r\n            }\r\n            this._clearIndicatorUpdateInterval();\r\n            this._indicatorInterval = setInterval(function() {\r\n                this._refreshDateTimeIndication()\r\n            }.bind(this), this.option(\"indicatorUpdateInterval\"))\r\n        }\r\n    }, {\r\n        key: \"_clearIndicatorUpdateInterval\",\r\n        value: function() {\r\n            if (this._indicatorInterval) {\r\n                clearInterval(this._indicatorInterval);\r\n                delete this._indicatorInterval\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isVerticalShader\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"getIndicationWidth\",\r\n        value: function(groupIndex) {\r\n            var maxWidth = this.getCellWidth() * this._getCellCount();\r\n            var difference = this._getIndicatorDuration();\r\n            if (difference > this._getCellCount()) {\r\n                difference = this._getCellCount()\r\n            }\r\n            var width = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);\r\n            return maxWidth < width ? maxWidth : width\r\n        }\r\n    }, {\r\n        key: \"getIndicatorOffset\",\r\n        value: function(groupIndex) {\r\n            var difference = this._getIndicatorDuration() - 1;\r\n            var offset = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);\r\n            return offset\r\n        }\r\n    }, {\r\n        key: \"_getIndicatorDuration\",\r\n        value: function() {\r\n            var today = this._getToday();\r\n            var firstViewDate = new Date(this._firstViewDate);\r\n            var timeDiff = today.getTime() - firstViewDate.getTime();\r\n            if (\"workWeek\" === this.option(\"type\")) {\r\n                timeDiff -= this._getWeekendsCount(Math.round(timeDiff / toMs(\"day\"))) * toMs(\"day\")\r\n            }\r\n            return Math.ceil((timeDiff + 1) / toMs(\"day\"))\r\n        }\r\n    }, {\r\n        key: \"getIndicationHeight\",\r\n        value: function() {\r\n            var today = this._getToday();\r\n            var cellHeight = this.getCellHeight();\r\n            var date = new Date(this._firstViewDate);\r\n            if (this.isIndicationOnView()) {\r\n                date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate())\r\n            }\r\n            var duration = today.getTime() - date.getTime();\r\n            var cellCount = duration / this.getCellDuration();\r\n            return cellCount * cellHeight\r\n        }\r\n    }, {\r\n        key: \"_dispose\",\r\n        value: function() {\r\n            this._clearIndicatorUpdateInterval();\r\n            _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_dispose\", this).apply(this, arguments)\r\n        }\r\n    }, {\r\n        key: \"_refreshDateTimeIndication\",\r\n        value: function() {\r\n            this._cleanDateTimeIndicator();\r\n            this._shader && this._shader.clean();\r\n            this._renderDateTimeIndication()\r\n        }\r\n    }, {\r\n        key: \"_isCurrentTime\",\r\n        value: function(date) {\r\n            if (this.isIndicationOnView()) {\r\n                var today = this._getToday();\r\n                var result = false;\r\n                date = new Date(date);\r\n                date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n                var startCellDate = new Date(date);\r\n                var endCellDate = new Date(date);\r\n                if (_date.default.sameDate(today, date)) {\r\n                    startCellDate = startCellDate.setMilliseconds(date.getMilliseconds() - this.getCellDuration() + 1);\r\n                    endCellDate = endCellDate.setMilliseconds(date.getMilliseconds() + this.getCellDuration());\r\n                    result = _date.default.dateInRange(today, startCellDate, endCellDate)\r\n                }\r\n                return result\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isCurrentTimeHeaderCell\",\r\n        value: function(headerIndex) {\r\n            var result = false;\r\n            if (this.isIndicationOnView()) {\r\n                var date = this._getDateByIndex(headerIndex);\r\n                var now = this.option(\"indicatorTime\") || new Date;\r\n                result = _date.default.sameDate(date, now)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getTimeCellClass\",\r\n        value: function(i) {\r\n            var startViewDate = this._getTimeCellDate(i);\r\n            var cellClass = _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_getTimeCellClass\", this).call(this, i);\r\n            if (this._isCurrentTime(startViewDate)) {\r\n                return cellClass + \" \" + TIME_PANEL_CURRENT_TIME_CELL_CLASS\r\n            }\r\n            return cellClass\r\n        }\r\n    }, {\r\n        key: \"_getHeaderPanelCellClass\",\r\n        value: function(i) {\r\n            var cellClass = _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_getHeaderPanelCellClass\", this).call(this, i);\r\n            if (this._isCurrentTimeHeaderCell(i)) {\r\n                return cellClass + \" \" + HEADER_CURRENT_TIME_CELL_CLASS\r\n            }\r\n            return cellClass\r\n        }\r\n    }, {\r\n        key: \"_cleanView\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_cleanView\", this).call(this);\r\n            this._cleanDateTimeIndicator()\r\n        }\r\n    }, {\r\n        key: \"_dimensionChanged\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_dimensionChanged\", this).call(this);\r\n            this._refreshDateTimeIndication()\r\n        }\r\n    }, {\r\n        key: \"_cleanDateTimeIndicator\",\r\n        value: function() {\r\n            this.$element().find(\".\" + SCHEDULER_DATE_TIME_INDICATOR_CLASS).remove()\r\n        }\r\n    }, {\r\n        key: \"_cleanWorkSpace\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_cleanWorkSpace\", this).call(this);\r\n            this._renderDateTimeIndication();\r\n            this._setIndicationUpdateInterval()\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            switch (args.name) {\r\n                case \"showCurrentTimeIndicator\":\r\n                case \"indicatorTime\":\r\n                    this._cleanWorkSpace();\r\n                    break;\r\n                case \"indicatorUpdateInterval\":\r\n                    this._setIndicationUpdateInterval();\r\n                    break;\r\n                case \"showAllDayPanel\":\r\n                    _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_optionChanged\", this).call(this, args);\r\n                    this._refreshDateTimeIndication();\r\n                    break;\r\n                case \"allDayExpanded\":\r\n                    _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_optionChanged\", this).call(this, args);\r\n                    this._refreshDateTimeIndication();\r\n                    break;\r\n                case \"crossScrollingEnabled\":\r\n                    _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_optionChanged\", this).call(this, args);\r\n                    this._refreshDateTimeIndication();\r\n                    break;\r\n                case \"shadeUntilCurrentTime\":\r\n                    this._refreshDateTimeIndication();\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(SchedulerWorkSpaceIndicator.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                showCurrentTimeIndicator: true,\r\n                indicatorTime: new Date,\r\n                indicatorUpdateInterval: 5 * toMs(\"minute\"),\r\n                shadeUntilCurrentTime: true\r\n            })\r\n        }\r\n    }]);\r\n    return SchedulerWorkSpaceIndicator\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpace\", SchedulerWorkSpaceIndicator);\r\nvar _default = SchedulerWorkSpaceIndicator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.sortable.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getSwatchContainer = _swatch_container.default.getSwatchContainer;\r\nvar SORTABLE_NAMESPACE = \"dxSortable\";\r\nvar SORTABLE_CLASS = \"dx-sortable-old\";\r\nvar SCROLL_STEP = 2;\r\nvar START_SCROLL_OFFSET = 20;\r\nvar SCROLL_TIMEOUT = 10;\r\n\r\nfunction elementHasPoint(element, x, y) {\r\n    var $item = (0, _renderer.default)(element);\r\n    var offset = $item.offset();\r\n    if (x >= offset.left && x <= offset.left + $item.outerWidth(true)) {\r\n        if (y >= offset.top && y <= offset.top + $item.outerHeight(true)) {\r\n            return true\r\n        }\r\n    }\r\n}\r\n\r\nfunction checkHorizontalPosition(position, itemOffset, rtl) {\r\n    if ((0, _type.isDefined)(itemOffset.posHorizontal)) {\r\n        return rtl ? position > itemOffset.posHorizontal : position < itemOffset.posHorizontal\r\n    } else {\r\n        return true\r\n    }\r\n}\r\n\r\nfunction getIndex($items, $item) {\r\n    var index = -1;\r\n    var itemElement = $item.get(0);\r\n    (0, _iterator.each)($items, function(elementIndex, element) {\r\n        var $element = (0, _renderer.default)(element);\r\n        if (!($element.attr(\"item-group\") && $element.attr(\"item-group\") === $items.eq(elementIndex - 1).attr(\"item-group\"))) {\r\n            index++\r\n        }\r\n        if (element === itemElement) {\r\n            return false\r\n        }\r\n    });\r\n    return index === $items.length ? -1 : index\r\n}\r\n\r\nfunction getTargetGroup(e, $groups) {\r\n    var result;\r\n    (0, _iterator.each)($groups, function() {\r\n        if (elementHasPoint(this, e.pageX, e.pageY)) {\r\n            result = (0, _renderer.default)(this)\r\n        }\r\n    });\r\n    return result\r\n}\r\n\r\nfunction getItemsOffset($elements, isVertical, $itemsContainer) {\r\n    var result = [];\r\n    var $item = [];\r\n    for (var i = 0; i < $elements.length; i += $item.length) {\r\n        $item = $elements.eq(i);\r\n        if ($item.attr(\"item-group\")) {\r\n            $item = $itemsContainer.find(\"[item-group='\" + $item.attr(\"item-group\") + \"']\")\r\n        }\r\n        if ($item.is(\":visible\")) {\r\n            var offset = {\r\n                item: $item,\r\n                index: result.length,\r\n                posHorizontal: isVertical ? void 0 : ($item.last().outerWidth(true) + $item.last().offset().left + $item.offset().left) / 2\r\n            };\r\n            if (isVertical) {\r\n                offset.posVertical = ($item.last().offset().top + $item.offset().top + $item.last().outerHeight(true)) / 2\r\n            } else {\r\n                offset.posVertical = $item.last().outerHeight(true) + $item.last().offset().top\r\n            }\r\n            result.push(offset)\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction getScrollWrapper(scrollable) {\r\n    var timeout = null;\r\n    var scrollTop = scrollable.scrollTop();\r\n    var $element = scrollable.$element();\r\n    var top = $element.offset().top;\r\n    var height = $element.height();\r\n    var delta = 0;\r\n\r\n    function onScroll(e) {\r\n        scrollTop = e.scrollOffset.top\r\n    }\r\n    scrollable.on(\"scroll\", onScroll);\r\n\r\n    function move() {\r\n        stop();\r\n        scrollable.scrollTo(scrollTop += delta);\r\n        timeout = setTimeout(move, SCROLL_TIMEOUT)\r\n    }\r\n\r\n    function stop() {\r\n        clearTimeout(timeout)\r\n    }\r\n\r\n    function moveIfNeed(event) {\r\n        if (event.pageY <= top + START_SCROLL_OFFSET) {\r\n            delta = -SCROLL_STEP\r\n        } else {\r\n            if (event.pageY >= top + height - START_SCROLL_OFFSET) {\r\n                delta = SCROLL_STEP\r\n            } else {\r\n                delta = 0;\r\n                stop();\r\n                return\r\n            }\r\n        }\r\n        move()\r\n    }\r\n    return {\r\n        moveIfNeed: moveIfNeed,\r\n        element: function() {\r\n            return $element\r\n        },\r\n        dispose: function() {\r\n            stop();\r\n            scrollable.off(\"scroll\", onScroll)\r\n        }\r\n    }\r\n}\r\nvar Sortable = _dom_component.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            onChanged: null,\r\n            onDragging: null,\r\n            itemRender: null,\r\n            groupSelector: null,\r\n            itemSelector: \".dx-sort-item\",\r\n            itemContainerSelector: \".dx-sortable-old\",\r\n            sourceClass: \"dx-drag-source\",\r\n            dragClass: \"dx-drag\",\r\n            targetClass: \"dx-drag-target\",\r\n            direction: \"vertical\",\r\n            allowDragging: true,\r\n            groupFilter: null,\r\n            useIndicator: false\r\n        })\r\n    },\r\n    _renderItem: function($sourceItem, target) {\r\n        var itemRender = this.option(\"itemRender\");\r\n        var $item;\r\n        if (itemRender) {\r\n            $item = itemRender($sourceItem, target)\r\n        } else {\r\n            $item = $sourceItem.clone();\r\n            $item.css({\r\n                width: $sourceItem.width(),\r\n                height: $sourceItem.height()\r\n            })\r\n        }\r\n        return $item\r\n    },\r\n    _renderIndicator: function($item, isVertical, $targetGroup, isLast) {\r\n        var height = $item.outerHeight(true);\r\n        var width = $item.outerWidth(true);\r\n        var top = $item.offset().top - $targetGroup.offset().top;\r\n        var left = $item.offset().left - $targetGroup.offset().left;\r\n        this._indicator.css({\r\n            position: \"absolute\",\r\n            top: isLast && isVertical ? top + height : top,\r\n            left: isLast && !isVertical ? left + width : left\r\n        }).toggleClass(\"dx-position-indicator-horizontal\", !isVertical).toggleClass(\"dx-position-indicator-vertical\", !!isVertical).toggleClass(\"dx-position-indicator-last\", !!isLast).height(\"\").width(\"\").appendTo($targetGroup);\r\n        isVertical ? this._indicator.width(width) : this._indicator.height(height)\r\n    },\r\n    _renderDraggable: function($sourceItem) {\r\n        this._$draggable && this._$draggable.remove();\r\n        this._$draggable = this._renderItem($sourceItem, \"drag\").addClass(this.option(\"dragClass\")).appendTo(getSwatchContainer($sourceItem)).css({\r\n            zIndex: 1e6,\r\n            position: \"absolute\"\r\n        })\r\n    },\r\n    _detachEventHandlers: function() {\r\n        var dragEventsString = [_drag.move, _drag.start, _drag.end, _drag.enter, _drag.leave, _drag.drop].join(\" \");\r\n        _events_engine.default.off(this._getEventListener(), (0, _index.addNamespace)(dragEventsString, SORTABLE_NAMESPACE))\r\n    },\r\n    _getItemOffset: function(isVertical, itemsOffset, e) {\r\n        for (var i = 0; i < itemsOffset.length; i++) {\r\n            var shouldInsert = void 0;\r\n            var sameLine = e.pageY < itemsOffset[i].posVertical;\r\n            if (isVertical) {\r\n                shouldInsert = sameLine\r\n            } else {\r\n                if (sameLine) {\r\n                    shouldInsert = checkHorizontalPosition(e.pageX, itemsOffset[i], this.option(\"rtlEnabled\"));\r\n                    if (!shouldInsert && itemsOffset[i + 1] && itemsOffset[i + 1].posVertical > itemsOffset[i].posVertical) {\r\n                        shouldInsert = true\r\n                    }\r\n                }\r\n            }\r\n            if (shouldInsert) {\r\n                return itemsOffset[i]\r\n            }\r\n        }\r\n    },\r\n    _getEventListener: function() {\r\n        var groupSelector = this.option(\"groupSelector\");\r\n        var element = this.$element();\r\n        return groupSelector ? element.find(groupSelector) : element\r\n    },\r\n    _attachEventHandlers: function() {\r\n        var that = this;\r\n        var itemSelector = that.option(\"itemSelector\");\r\n        var itemContainerSelector = that.option(\"itemContainerSelector\");\r\n        var groupSelector = that.option(\"groupSelector\");\r\n        var sourceClass = that.option(\"sourceClass\");\r\n        var targetClass = that.option(\"targetClass\");\r\n        var onDragging = that.option(\"onDragging\");\r\n        var groupFilter = that.option(\"groupFilter\");\r\n        var $sourceItem;\r\n        var sourceIndex;\r\n        var $targetItem;\r\n        var $targetGroup;\r\n        var startPositions;\r\n        var sourceGroup;\r\n        var element = that.$element();\r\n        var $groups;\r\n        var scrollWrapper = null;\r\n        var targetIndex = -1;\r\n        var setStartPositions = function() {\r\n            startPositions = [];\r\n            (0, _iterator.each)($sourceItem, function(_, item) {\r\n                startPositions.push((0, _renderer.default)(item).offset())\r\n            })\r\n        };\r\n        var createGroups = function() {\r\n            if (!groupSelector) {\r\n                return element\r\n            } else {\r\n                return groupFilter ? (0, _renderer.default)(groupSelector).filter(groupFilter) : element.find(groupSelector)\r\n            }\r\n        };\r\n        var disposeScrollWrapper = function() {\r\n            scrollWrapper && scrollWrapper.dispose();\r\n            scrollWrapper = null\r\n        };\r\n        var invokeOnDraggingEvent = function() {\r\n            var draggingArgs = {\r\n                sourceGroup: sourceGroup,\r\n                sourceIndex: sourceIndex,\r\n                sourceElement: $sourceItem,\r\n                targetGroup: $targetGroup.attr(\"group\"),\r\n                targetIndex: $targetGroup.find(itemSelector).index($targetItem)\r\n            };\r\n            onDragging && onDragging(draggingArgs);\r\n            if (draggingArgs.cancel) {\r\n                $targetGroup = void 0\r\n            }\r\n        };\r\n        that._detachEventHandlers();\r\n        if (that.option(\"allowDragging\")) {\r\n            var $eventListener = that._getEventListener();\r\n            _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.start, SORTABLE_NAMESPACE), itemSelector, function(e) {\r\n                $sourceItem = (0, _renderer.default)(e.currentTarget);\r\n                var $sourceGroup = $sourceItem.closest(groupSelector);\r\n                sourceGroup = $sourceGroup.attr(\"group\");\r\n                sourceIndex = getIndex((groupSelector ? $sourceGroup : element).find(itemSelector), $sourceItem);\r\n                if ($sourceItem.attr(\"item-group\")) {\r\n                    $sourceItem = $sourceGroup.find(\"[item-group='\" + $sourceItem.attr(\"item-group\") + \"']\")\r\n                }\r\n                that._renderDraggable($sourceItem);\r\n                $targetItem = that._renderItem($sourceItem, \"target\").addClass(targetClass);\r\n                $sourceItem.addClass(sourceClass);\r\n                setStartPositions();\r\n                $groups = createGroups();\r\n                that._indicator = (0, _renderer.default)(\"<div>\").addClass(\"dx-position-indicator\")\r\n            });\r\n            _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.move, SORTABLE_NAMESPACE), function(e) {\r\n                var $item;\r\n                var $lastItem;\r\n                var $prevItem;\r\n                if (!$sourceItem) {\r\n                    return\r\n                }\r\n                targetIndex = -1;\r\n                that._indicator.detach();\r\n                (0, _iterator.each)(that._$draggable, function(index, draggableElement) {\r\n                    (0, _renderer.default)(draggableElement).css({\r\n                        top: startPositions[index].top + e.offset.y,\r\n                        left: startPositions[index].left + e.offset.x\r\n                    })\r\n                });\r\n                $targetGroup && $targetGroup.removeClass(targetClass);\r\n                $targetGroup = getTargetGroup(e, $groups);\r\n                $targetGroup && invokeOnDraggingEvent();\r\n                if ($targetGroup && scrollWrapper && $targetGroup.get(0) !== scrollWrapper.element().get(0)) {\r\n                    disposeScrollWrapper()\r\n                }\r\n                scrollWrapper && scrollWrapper.moveIfNeed(e);\r\n                if (!$targetGroup) {\r\n                    $targetItem.detach();\r\n                    return\r\n                }\r\n                if (!scrollWrapper && $targetGroup.attr(\"allow-scrolling\")) {\r\n                    scrollWrapper = getScrollWrapper($targetGroup.dxScrollable(\"instance\"))\r\n                }\r\n                $targetGroup.addClass(targetClass);\r\n                var $itemContainer = $targetGroup.find(itemContainerSelector);\r\n                var $items = $itemContainer.find(itemSelector);\r\n                var targetSortable = $targetGroup.closest(\".\" + SORTABLE_CLASS).data(\"dxSortableOld\");\r\n                var useIndicator = targetSortable.option(\"useIndicator\");\r\n                var isVertical = \"vertical\" === (targetSortable || that).option(\"direction\");\r\n                var itemsOffset = getItemsOffset($items, isVertical, $itemContainer);\r\n                var itemOffset = that._getItemOffset(isVertical, itemsOffset, e);\r\n                if (itemOffset) {\r\n                    $item = itemOffset.item;\r\n                    $prevItem = itemsOffset[itemOffset.index - 1] && itemsOffset[itemOffset.index - 1].item;\r\n                    if ($item.hasClass(sourceClass) || $prevItem && $prevItem.hasClass(sourceClass) && $prevItem.is(\":visible\")) {\r\n                        $targetItem.detach();\r\n                        return\r\n                    }\r\n                    targetIndex = itemOffset.index;\r\n                    if (!useIndicator) {\r\n                        $targetItem.insertBefore($item);\r\n                        return\r\n                    }\r\n                    var isAnotherGroup = $targetGroup.attr(\"group\") !== sourceGroup;\r\n                    var isSameIndex = targetIndex === sourceIndex;\r\n                    var isNextIndex = targetIndex === sourceIndex + 1;\r\n                    if (isAnotherGroup) {\r\n                        that._renderIndicator($item, isVertical, $targetGroup, that.option(\"rtlEnabled\") && !isVertical);\r\n                        return\r\n                    }\r\n                    if (!isSameIndex && !isNextIndex) {\r\n                        that._renderIndicator($item, isVertical, $targetGroup, that.option(\"rtlEnabled\") && !isVertical)\r\n                    }\r\n                } else {\r\n                    $lastItem = $items.last();\r\n                    if ($lastItem.is(\":visible\") && $lastItem.hasClass(sourceClass)) {\r\n                        return\r\n                    }\r\n                    if ($itemContainer.length) {\r\n                        targetIndex = itemsOffset.length ? itemsOffset[itemsOffset.length - 1].index + 1 : 0\r\n                    }\r\n                    if (useIndicator) {\r\n                        $items.length && that._renderIndicator($lastItem, isVertical, $targetGroup, !that.option(\"rtlEnabled\") || isVertical)\r\n                    } else {\r\n                        $targetItem.appendTo($itemContainer)\r\n                    }\r\n                }\r\n            });\r\n            _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.end, SORTABLE_NAMESPACE), function() {\r\n                disposeScrollWrapper();\r\n                if (!$sourceItem) {\r\n                    return\r\n                }\r\n                var onChanged = that.option(\"onChanged\");\r\n                var changedArgs = {\r\n                    sourceIndex: sourceIndex,\r\n                    sourceElement: $sourceItem,\r\n                    sourceGroup: sourceGroup,\r\n                    targetIndex: targetIndex,\r\n                    removeSourceElement: true,\r\n                    removeTargetElement: false,\r\n                    removeSourceClass: true\r\n                };\r\n                if ($targetGroup) {\r\n                    $targetGroup.removeClass(targetClass);\r\n                    changedArgs.targetGroup = $targetGroup.attr(\"group\");\r\n                    if (sourceGroup !== changedArgs.targetGroup || targetIndex > -1) {\r\n                        onChanged && onChanged(changedArgs);\r\n                        changedArgs.removeSourceElement && $sourceItem.remove()\r\n                    }\r\n                }\r\n                that._indicator.detach();\r\n                changedArgs.removeSourceClass && $sourceItem.removeClass(sourceClass);\r\n                $sourceItem = null;\r\n                that._$draggable.remove();\r\n                that._$draggable = null;\r\n                changedArgs.removeTargetElement && $targetItem.remove();\r\n                $targetItem.removeClass(targetClass);\r\n                $targetItem = null\r\n            })\r\n        }\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._attachEventHandlers()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.$element().addClass(SORTABLE_CLASS)\r\n    },\r\n    _dispose: function() {\r\n        var that = this;\r\n        that.callBase.apply(that, arguments);\r\n        that._$draggable && that._$draggable.detach();\r\n        that._indicator && that._indicator.detach()\r\n    },\r\n    _optionChanged: function(args) {\r\n        var that = this;\r\n        switch (args.name) {\r\n            case \"onDragging\":\r\n            case \"onChanged\":\r\n            case \"itemRender\":\r\n            case \"groupSelector\":\r\n            case \"itemSelector\":\r\n            case \"itemContainerSelector\":\r\n            case \"sourceClass\":\r\n            case \"targetClass\":\r\n            case \"dragClass\":\r\n            case \"allowDragging\":\r\n            case \"groupFilter\":\r\n            case \"useIndicator\":\r\n                that._attachEventHandlers();\r\n                break;\r\n            case \"direction\":\r\n                break;\r\n            default:\r\n                that.callBase(args)\r\n        }\r\n    },\r\n    _useTemplates: function() {\r\n        return false\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxSortableOld\", Sortable);\r\nvar _default = Sortable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/modules/dropImage.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _index = require(\"../../../events/utils/index\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../../../core/utils/browser\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DropImageModule = {};\r\nif (_devextremeQuill.default) {\r\n    var BaseModule = _devextremeQuill.default.import(\"core/module\");\r\n    DropImageModule = function(_BaseModule) {\r\n        _inherits(DropImageModule, _BaseModule);\r\n        var _super = _createSuper(DropImageModule);\r\n\r\n        function DropImageModule(quill, options) {\r\n            var _this;\r\n            _classCallCheck(this, DropImageModule);\r\n            _this = _super.call(this, quill, options);\r\n            _this.editorInstance = options.editorInstance;\r\n            var widgetName = _this.editorInstance.NAME;\r\n            _events_engine.default.on(_this.quill.root, (0, _index.addNamespace)(\"dragover\", widgetName), _this._dragOverHandler.bind(_assertThisInitialized(_this)));\r\n            _events_engine.default.on(_this.quill.root, (0, _index.addNamespace)(\"drop\", widgetName), _this._dropHandler.bind(_assertThisInitialized(_this)));\r\n            _events_engine.default.on(_this.quill.root, (0, _index.addNamespace)(\"paste\", widgetName), _this._pasteHandler.bind(_assertThisInitialized(_this)));\r\n            return _this\r\n        }\r\n        _createClass(DropImageModule, [{\r\n            key: \"_dragOverHandler\",\r\n            value: function(e) {\r\n                if (_browser.default.msie) {\r\n                    e.preventDefault()\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_dropHandler\",\r\n            value: function(e) {\r\n                var _dataTransfer$files;\r\n                var dataTransfer = e.originalEvent.dataTransfer;\r\n                var hasFiles = null === dataTransfer || void 0 === dataTransfer ? void 0 : null === (_dataTransfer$files = dataTransfer.files) || void 0 === _dataTransfer$files ? void 0 : _dataTransfer$files.length;\r\n                this.editorInstance._saveValueChangeEvent(e);\r\n                e.preventDefault();\r\n                if (hasFiles) {\r\n                    this._getImage(dataTransfer.files, this._addImage.bind(this))\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_pasteHandler\",\r\n            value: function(e) {\r\n                var _clipboardData$items, _this2 = this;\r\n                var clipboardData = e.originalEvent.clipboardData;\r\n                this.editorInstance._saveValueChangeEvent(e);\r\n                if (!clipboardData) {\r\n                    return\r\n                }\r\n                var hasDataItems = null === (_clipboardData$items = clipboardData.items) || void 0 === _clipboardData$items ? void 0 : _clipboardData$items.length;\r\n                var isHtmlData = clipboardData.getData(\"text/html\");\r\n                if (!isHtmlData && hasDataItems) {\r\n                    this._getImage(clipboardData.items, function(imageData) {\r\n                        if (_this2._isBrowserSupportImagePaste(_browser.default)) {\r\n                            return\r\n                        }\r\n                        if (_browser.default.msie) {\r\n                            setTimeout(function() {\r\n                                _this2._addImage(imageData)\r\n                            })\r\n                        } else {\r\n                            _this2._addImage(imageData)\r\n                        }\r\n                    })\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_isBrowserSupportImagePaste\",\r\n            value: function(_ref) {\r\n                var mozilla = _ref.mozilla,\r\n                    chrome = _ref.chrome,\r\n                    version = _ref.version;\r\n                return mozilla || chrome && version > 82\r\n            }\r\n        }, {\r\n            key: \"_isImage\",\r\n            value: function(file) {\r\n                return !!file.type.match(/^image\\/(a?png|bmp|gif|p?jpe?g|svg|vnd\\.microsoft\\.icon|webp)/i)\r\n            }\r\n        }, {\r\n            key: \"_getImage\",\r\n            value: function(files, callback) {\r\n                var _this3 = this;\r\n                var window = (0, _window.getWindow)();\r\n                (0, _iterator.each)(files, function(index, file) {\r\n                    if (!_this3._isImage(file)) {\r\n                        return\r\n                    }\r\n                    var reader = new window.FileReader;\r\n                    reader.onload = function(_ref2) {\r\n                        var target = _ref2.target;\r\n                        callback(target.result)\r\n                    };\r\n                    var readableFile = file.getAsFile ? file.getAsFile() : file;\r\n                    if (readableFile instanceof window.Blob) {\r\n                        reader.readAsDataURL(readableFile)\r\n                    }\r\n                })\r\n            }\r\n        }, {\r\n            key: \"_addImage\",\r\n            value: function(data) {\r\n                var selection = this.quill.getSelection();\r\n                var pasteIndex = selection ? selection.index : this.quill.getLength();\r\n                this.quill.insertEmbed(pasteIndex, \"extendedImage\", data, \"user\")\r\n            }\r\n        }]);\r\n        return DropImageModule\r\n    }(BaseModule)\r\n}\r\nvar _default = DropImageModule;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/view_port.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.originalViewPort = originalViewPort;\r\nexports.changeCallback = exports.value = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../renderer\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"./ready_callbacks\"));\r\nvar _callbacks = _interopRequireDefault(require(\"./callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ready = _ready_callbacks.default.add;\r\nvar changeCallback = (0, _callbacks.default)();\r\nexports.changeCallback = changeCallback;\r\nvar $originalViewPort = (0, _renderer.default)();\r\nvar value = function() {\r\n    var $current;\r\n    return function(element) {\r\n        if (!arguments.length) {\r\n            return $current\r\n        }\r\n        var $element = (0, _renderer.default)(element);\r\n        $originalViewPort = $element;\r\n        var isNewViewportFound = !!$element.length;\r\n        var prevViewPort = value();\r\n        $current = isNewViewportFound ? $element : (0, _renderer.default)(\"body\");\r\n        changeCallback.fire(isNewViewportFound ? value() : (0, _renderer.default)(), prevViewPort)\r\n    }\r\n}();\r\nexports.value = value;\r\nready(function() {\r\n    value(\".dx-viewport\")\r\n});\r\n\r\nfunction originalViewPort() {\r\n    return $originalViewPort\r\n}\r\n","/**\r\n * DevExtreme (core/utils/public_component.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.attachInstanceToElement = attachInstanceToElement;\r\nexports.getInstanceByElement = getInstanceByElement;\r\nexports.name = void 0;\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _weak_map = _interopRequireDefault(require(\"../polyfills/weak_map\"));\r\nvar _type = require(\"./type\");\r\nvar _remove_event = _interopRequireDefault(require(\"../remove_event\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COMPONENT_NAMES_DATA_KEY = \"dxComponents\";\r\nvar ANONYMOUS_COMPONENT_DATA_KEY = \"dxPrivateComponent\";\r\nvar componentNames = new _weak_map.default;\r\nvar nextAnonymousComponent = 0;\r\nvar getName = function(componentClass, newName) {\r\n    if ((0, _type.isDefined)(newName)) {\r\n        componentNames.set(componentClass, newName);\r\n        return\r\n    }\r\n    if (!componentNames.has(componentClass)) {\r\n        var generatedName = ANONYMOUS_COMPONENT_DATA_KEY + nextAnonymousComponent++;\r\n        componentNames.set(componentClass, generatedName);\r\n        return generatedName\r\n    }\r\n    return componentNames.get(componentClass)\r\n};\r\nexports.name = getName;\r\n\r\nfunction attachInstanceToElement($element, componentInstance, disposeFn) {\r\n    var data = (0, _element_data.data)($element.get(0));\r\n    var name = getName(componentInstance.constructor);\r\n    data[name] = componentInstance;\r\n    if (disposeFn) {\r\n        _events_engine.default.one($element, _remove_event.default, function() {\r\n            disposeFn.call(componentInstance)\r\n        })\r\n    }\r\n    if (!data[COMPONENT_NAMES_DATA_KEY]) {\r\n        data[COMPONENT_NAMES_DATA_KEY] = []\r\n    }\r\n    data[COMPONENT_NAMES_DATA_KEY].push(name)\r\n}\r\n\r\nfunction getInstanceByElement($element, componentClass) {\r\n    var name = getName(componentClass);\r\n    return (0, _element_data.data)($element.get(0), name)\r\n}\r\n","/**\r\n * DevExtreme (viz/vector_map/data_exchanger.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataExchanger = DataExchanger;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction DataExchanger() {\r\n    this._store = {}\r\n}\r\nDataExchanger.prototype = {\r\n    constructor: DataExchanger,\r\n    dispose: function() {\r\n        this._store = null;\r\n        return this\r\n    },\r\n    _get: function(category, name) {\r\n        var store = this._store[category] || (this._store[category] = {});\r\n        return store[name] || (store[name] = {\r\n            callbacks: (0, _callbacks.default)()\r\n        })\r\n    },\r\n    set: function(category, name, data) {\r\n        var item = this._get(category, name);\r\n        item.data = data;\r\n        item.callbacks.fire(data);\r\n        return this\r\n    },\r\n    bind: function(category, name, callback) {\r\n        var item = this._get(category, name);\r\n        item.callbacks.add(callback);\r\n        item.data && callback(item.data);\r\n        return this\r\n    },\r\n    unbind: function(category, name, callback) {\r\n        var item = this._get(category, name);\r\n        item.callbacks.remove(callback);\r\n        return this\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/map/provider.google_static.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _provider = _interopRequireDefault(require(\"./provider\"));\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\nvar _click = require(\"../../events/click\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar GOOGLE_STATIC_URL = \"https://maps.google.com/maps/api/staticmap?\";\r\nvar GoogleStaticProvider = _provider.default.inherit({\r\n    _locationToString: function(location) {\r\n        var latLng = this._getLatLng(location);\r\n        return latLng ? latLng.lat + \",\" + latLng.lng : location.toString().replace(/ /g, \"+\")\r\n    },\r\n    _renderImpl: function() {\r\n        return this._updateMap()\r\n    },\r\n    updateDimensions: function() {\r\n        return this._updateMap()\r\n    },\r\n    updateMapType: function() {\r\n        return this._updateMap()\r\n    },\r\n    updateBounds: function() {\r\n        return _promise.default.resolve()\r\n    },\r\n    updateCenter: function() {\r\n        return this._updateMap()\r\n    },\r\n    updateZoom: function() {\r\n        return this._updateMap()\r\n    },\r\n    updateControls: function() {\r\n        return _promise.default.resolve()\r\n    },\r\n    addMarkers: function(options) {\r\n        var that = this;\r\n        return this._updateMap().then(function(result) {\r\n            (0, _iterator.each)(options, function(_, options) {\r\n                that._fireMarkerAddedAction({\r\n                    options: options\r\n                })\r\n            });\r\n            return result\r\n        })\r\n    },\r\n    removeMarkers: function(options) {\r\n        var that = this;\r\n        return this._updateMap().then(function(result) {\r\n            (0, _iterator.each)(options, function(_, options) {\r\n                that._fireMarkerRemovedAction({\r\n                    options: options\r\n                })\r\n            });\r\n            return result\r\n        })\r\n    },\r\n    adjustViewport: function() {\r\n        return _promise.default.resolve()\r\n    },\r\n    addRoutes: function(options) {\r\n        var that = this;\r\n        return this._updateMap().then(function(result) {\r\n            (0, _iterator.each)(options, function(_, options) {\r\n                that._fireRouteAddedAction({\r\n                    options: options\r\n                })\r\n            });\r\n            return result\r\n        })\r\n    },\r\n    removeRoutes: function(options) {\r\n        var that = this;\r\n        return this._updateMap().then(function(result) {\r\n            (0, _iterator.each)(options, function(_, options) {\r\n                that._fireRouteRemovedAction({\r\n                    options: options\r\n                })\r\n            });\r\n            return result\r\n        })\r\n    },\r\n    clean: function() {\r\n        this._$container.css(\"backgroundImage\", \"none\");\r\n        _events_engine.default.off(this._$container, this._addEventNamespace(_click.name));\r\n        return _promise.default.resolve()\r\n    },\r\n    mapRendered: function() {\r\n        return true\r\n    },\r\n    _updateMap: function() {\r\n        var key = this._keyOption(\"googleStatic\");\r\n        var $container = this._$container;\r\n        var requestOptions = [\"sensor=false\", \"size=\" + Math.round($container.width()) + \"x\" + Math.round($container.height()), \"maptype=\" + this._option(\"type\"), \"center=\" + this._locationToString(this._option(\"center\")), \"zoom=\" + this._option(\"zoom\"), this._markersSubstring()];\r\n        requestOptions.push.apply(requestOptions, this._routeSubstrings());\r\n        if (key) {\r\n            requestOptions.push(\"key=\" + key)\r\n        }\r\n        var request = GOOGLE_STATIC_URL + requestOptions.join(\"&\");\r\n        this._$container.css(\"background\", 'url(\"' + request + '\") no-repeat 0 0');\r\n        this._attachClickEvent();\r\n        return _promise.default.resolve(true)\r\n    },\r\n    _markersSubstring: function() {\r\n        var that = this;\r\n        var markers = [];\r\n        var markerIcon = this._option(\"markerIconSrc\");\r\n        if (markerIcon) {\r\n            markers.push(\"icon:\" + markerIcon)\r\n        }(0, _iterator.each)(this._option(\"markers\"), function(_, marker) {\r\n            markers.push(that._locationToString(marker.location))\r\n        });\r\n        return \"markers=\" + markers.join(\"|\")\r\n    },\r\n    _routeSubstrings: function() {\r\n        var that = this;\r\n        var routes = [];\r\n        (0, _iterator.each)(this._option(\"routes\"), function(_, route) {\r\n            var color = new _color.default(route.color || that._defaultRouteColor()).toHex().replace(\"#\", \"0x\");\r\n            var opacity = Math.round(255 * (route.opacity || that._defaultRouteOpacity())).toString(16);\r\n            var width = route.weight || that._defaultRouteWeight();\r\n            var locations = [];\r\n            (0, _iterator.each)(route.locations, function(_, routePoint) {\r\n                locations.push(that._locationToString(routePoint))\r\n            });\r\n            routes.push(\"path=color:\" + color + opacity + \"|weight:\" + width + \"|\" + locations.join(\"|\"))\r\n        });\r\n        return routes\r\n    },\r\n    _attachClickEvent: function() {\r\n        var that = this;\r\n        var eventName = this._addEventNamespace(_click.name);\r\n        _events_engine.default.off(this._$container, eventName);\r\n        _events_engine.default.on(this._$container, eventName, function(e) {\r\n            that._fireClickAction({\r\n                event: e\r\n            })\r\n        })\r\n    }\r\n});\r\nvar _default = GoogleStaticProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/component_registrator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"./renderer\"));\r\nvar _component_registrator_callbacks = _interopRequireDefault(require(\"./component_registrator_callbacks\"));\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _public_component = require(\"./utils/public_component\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar registerComponent = function(name, namespace, componentClass) {\r\n    if (!componentClass) {\r\n        componentClass = namespace\r\n    } else {\r\n        namespace[name] = componentClass\r\n    }(0, _public_component.name)(componentClass, name);\r\n    _component_registrator_callbacks.default.fire(name, componentClass)\r\n};\r\nvar registerRendererComponent = function(name, componentClass) {\r\n    _renderer.default.fn[name] = function(options) {\r\n        var isMemberInvoke = \"string\" === typeof options;\r\n        var result;\r\n        if (isMemberInvoke) {\r\n            var memberName = options;\r\n            var memberArgs = [].slice.call(arguments).slice(1);\r\n            this.each(function() {\r\n                var instance = componentClass.getInstance(this);\r\n                if (!instance) {\r\n                    throw _errors.default.Error(\"E0009\", name)\r\n                }\r\n                var member = instance[memberName];\r\n                var memberValue = member.apply(instance, memberArgs);\r\n                if (void 0 === result) {\r\n                    result = memberValue\r\n                }\r\n            })\r\n        } else {\r\n            this.each(function() {\r\n                var instance = componentClass.getInstance(this);\r\n                if (instance) {\r\n                    instance.option(options)\r\n                } else {\r\n                    new componentClass(this, options)\r\n                }\r\n            });\r\n            result = this\r\n        }\r\n        return result\r\n    }\r\n};\r\n_component_registrator_callbacks.default.add(registerRendererComponent);\r\nvar _default = registerComponent;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (format_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"./core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"./core/utils/date\"));\r\nvar _number = _interopRequireDefault(require(\"./localization/number\"));\r\nvar _date2 = _interopRequireDefault(require(\"./localization/date\"));\r\nvar _dependency_injector = _interopRequireDefault(require(\"./core/utils/dependency_injector\"));\r\nrequire(\"./localization/currency\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = (0, _dependency_injector.default)({\r\n    format: function(value, _format) {\r\n        var formatIsValid = (0, _type.isString)(_format) && \"\" !== _format || (0, _type.isPlainObject)(_format) || (0, _type.isFunction)(_format);\r\n        var valueIsValid = (0, _type.isNumeric)(value) || (0, _type.isDate)(value);\r\n        if (!formatIsValid || !valueIsValid) {\r\n            return (0, _type.isDefined)(value) ? value.toString() : \"\"\r\n        }\r\n        if ((0, _type.isFunction)(_format)) {\r\n            return _format(value)\r\n        }\r\n        if ((0, _type.isString)(_format)) {\r\n            _format = {\r\n                type: _format\r\n            }\r\n        }\r\n        if ((0, _type.isNumeric)(value)) {\r\n            return _number.default.format(value, _format)\r\n        }\r\n        if ((0, _type.isDate)(value)) {\r\n            return _date2.default.format(value, _format)\r\n        }\r\n    },\r\n    getTimeFormat: function(showSecond) {\r\n        return showSecond ? \"longtime\" : \"shorttime\"\r\n    },\r\n    _normalizeFormat: function(format) {\r\n        if (!Array.isArray(format)) {\r\n            return format\r\n        }\r\n        if (1 === format.length) {\r\n            return format[0]\r\n        }\r\n        return function(date) {\r\n            return format.map(function(formatPart) {\r\n                return _date2.default.format(date, formatPart)\r\n            }).join(\" \")\r\n        }\r\n    },\r\n    getDateFormatByDifferences: function(dateDifferences, intervalFormat) {\r\n        var resultFormat = [];\r\n        var needSpecialSecondFormatter = intervalFormat && dateDifferences.millisecond && !(dateDifferences.year || dateDifferences.month || dateDifferences.day);\r\n        if (needSpecialSecondFormatter) {\r\n            var secondFormatter = function(date) {\r\n                return date.getSeconds() + date.getMilliseconds() / 1e3 + \"s\"\r\n            };\r\n            resultFormat.push(secondFormatter)\r\n        } else {\r\n            if (dateDifferences.millisecond) {\r\n                resultFormat.push(\"millisecond\")\r\n            }\r\n        }\r\n        if (dateDifferences.hour || dateDifferences.minute || !needSpecialSecondFormatter && dateDifferences.second) {\r\n            resultFormat.unshift(this.getTimeFormat(dateDifferences.second))\r\n        }\r\n        if (dateDifferences.year && dateDifferences.month && dateDifferences.day) {\r\n            if (intervalFormat && \"month\" === intervalFormat) {\r\n                return \"monthandyear\"\r\n            } else {\r\n                resultFormat.unshift(\"shortdate\");\r\n                return this._normalizeFormat(resultFormat)\r\n            }\r\n        }\r\n        if (dateDifferences.year && dateDifferences.month) {\r\n            return \"monthandyear\"\r\n        }\r\n        if (dateDifferences.year && dateDifferences.quarter) {\r\n            return \"quarterandyear\"\r\n        }\r\n        if (dateDifferences.year) {\r\n            return \"year\"\r\n        }\r\n        if (dateDifferences.quarter) {\r\n            return \"quarter\"\r\n        }\r\n        if (dateDifferences.month && dateDifferences.day) {\r\n            if (intervalFormat) {\r\n                var monthDayFormatter = function(date) {\r\n                    return _date2.default.getMonthNames(\"abbreviated\")[date.getMonth()] + \" \" + _date2.default.format(date, \"day\")\r\n                };\r\n                resultFormat.unshift(monthDayFormatter)\r\n            } else {\r\n                resultFormat.unshift(\"monthandday\")\r\n            }\r\n            return this._normalizeFormat(resultFormat)\r\n        }\r\n        if (dateDifferences.month) {\r\n            return \"month\"\r\n        }\r\n        if (dateDifferences.day) {\r\n            if (intervalFormat) {\r\n                resultFormat.unshift(\"day\")\r\n            } else {\r\n                var dayFormatter = function(date) {\r\n                    return _date2.default.format(date, \"dayofweek\") + \", \" + _date2.default.format(date, \"day\")\r\n                };\r\n                resultFormat.unshift(dayFormatter)\r\n            }\r\n            return this._normalizeFormat(resultFormat)\r\n        }\r\n        return this._normalizeFormat(resultFormat)\r\n    },\r\n    getDateFormatByTicks: function(ticks) {\r\n        var maxDiff;\r\n        var currentDiff;\r\n        var i;\r\n        if (ticks.length > 1) {\r\n            maxDiff = _date.default.getDatesDifferences(ticks[0], ticks[1]);\r\n            for (i = 1; i < ticks.length - 1; i++) {\r\n                currentDiff = _date.default.getDatesDifferences(ticks[i], ticks[i + 1]);\r\n                if (maxDiff.count < currentDiff.count) {\r\n                    maxDiff = currentDiff\r\n                }\r\n            }\r\n        } else {\r\n            maxDiff = {\r\n                year: true,\r\n                month: true,\r\n                day: true,\r\n                hour: ticks[0].getHours() > 0,\r\n                minute: ticks[0].getMinutes() > 0,\r\n                second: ticks[0].getSeconds() > 0,\r\n                millisecond: ticks[0].getMilliseconds() > 0\r\n            }\r\n        }\r\n        var resultFormat = this.getDateFormatByDifferences(maxDiff);\r\n        return resultFormat\r\n    },\r\n    getDateFormatByTickInterval: function(startValue, endValue, tickInterval) {\r\n        var dateUnitInterval;\r\n        var dateDifferencesConverter = {\r\n            week: \"day\"\r\n        };\r\n        var correctDateDifferences = function(dateDifferences, tickInterval, value) {\r\n            switch (tickInterval) {\r\n                case \"year\":\r\n                case \"quarter\":\r\n                    dateDifferences.month = value;\r\n                case \"month\":\r\n                    dateDifferences.day = value;\r\n                case \"week\":\r\n                case \"day\":\r\n                    dateDifferences.hour = value;\r\n                case \"hour\":\r\n                    dateDifferences.minute = value;\r\n                case \"minute\":\r\n                    dateDifferences.second = value;\r\n                case \"second\":\r\n                    dateDifferences.millisecond = value\r\n            }\r\n        };\r\n        var correctDifferencesByMaxDate = function(differences, minDate, maxDate) {\r\n            if (!maxDate.getMilliseconds() && maxDate.getSeconds()) {\r\n                if (maxDate.getSeconds() - minDate.getSeconds() === 1) {\r\n                    differences.millisecond = true;\r\n                    differences.second = false\r\n                }\r\n            } else {\r\n                if (!maxDate.getSeconds() && maxDate.getMinutes()) {\r\n                    if (maxDate.getMinutes() - minDate.getMinutes() === 1) {\r\n                        differences.second = true;\r\n                        differences.minute = false\r\n                    }\r\n                } else {\r\n                    if (!maxDate.getMinutes() && maxDate.getHours()) {\r\n                        if (maxDate.getHours() - minDate.getHours() === 1) {\r\n                            differences.minute = true;\r\n                            differences.hour = false\r\n                        }\r\n                    } else {\r\n                        if (!maxDate.getHours() && maxDate.getDate() > 1) {\r\n                            if (maxDate.getDate() - minDate.getDate() === 1) {\r\n                                differences.hour = true;\r\n                                differences.day = false\r\n                            }\r\n                        } else {\r\n                            if (1 === maxDate.getDate() && maxDate.getMonth()) {\r\n                                if (maxDate.getMonth() - minDate.getMonth() === 1) {\r\n                                    differences.day = true;\r\n                                    differences.month = false\r\n                                }\r\n                            } else {\r\n                                if (!maxDate.getMonth() && maxDate.getFullYear()) {\r\n                                    if (maxDate.getFullYear() - minDate.getFullYear() === 1) {\r\n                                        differences.month = true;\r\n                                        differences.year = false\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        tickInterval = (0, _type.isString)(tickInterval) ? tickInterval.toLowerCase() : tickInterval;\r\n        var dateDifferences = _date.default.getDatesDifferences(startValue, endValue);\r\n        if (startValue !== endValue) {\r\n            correctDifferencesByMaxDate(dateDifferences, startValue > endValue ? endValue : startValue, startValue > endValue ? startValue : endValue)\r\n        }\r\n        dateUnitInterval = _date.default.getDateUnitInterval(dateDifferences);\r\n        correctDateDifferences(dateDifferences, dateUnitInterval, true);\r\n        dateUnitInterval = _date.default.getDateUnitInterval(tickInterval || \"second\");\r\n        correctDateDifferences(dateDifferences, dateUnitInterval, false);\r\n        dateDifferences[dateDifferencesConverter[dateUnitInterval] || dateUnitInterval] = true;\r\n        var resultFormat = this.getDateFormatByDifferences(dateDifferences);\r\n        return resultFormat\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/widget/ui.errors.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _error = _interopRequireDefault(require(\"../../core/utils/error\"));\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = (0, _error.default)(_errors.default.ERROR_MESSAGES, {\r\n    E1001: \"Module '{0}'. Controller '{1}' is already registered\",\r\n    E1002: \"Module '{0}'. Controller '{1}' does not inherit from DevExpress.ui.dxDataGrid.Controller\",\r\n    E1003: \"Module '{0}'. View '{1}' is already registered\",\r\n    E1004: \"Module '{0}'. View '{1}' does not inherit from DevExpress.ui.dxDataGrid.View\",\r\n    E1005: \"Public method '{0}' is already registered\",\r\n    E1006: \"Public method '{0}.{1}' does not exist\",\r\n    E1007: \"State storing cannot be provided due to the restrictions of the browser\",\r\n    E1010: \"The template does not contain the TextBox widget\",\r\n    E1011: 'Items cannot be deleted from the List. Implement the \"remove\" function in the data store',\r\n    E1012: \"Editing type '{0}' with the name '{1}' is unsupported\",\r\n    E1016: \"Unexpected type of data source is provided for a lookup column\",\r\n    E1018: \"The 'collapseAll' method cannot be called if you use a remote data source\",\r\n    E1019: \"Search mode '{0}' is unavailable\",\r\n    E1020: \"The type cannot be changed after initialization\",\r\n    E1021: \"{0} '{1}' you are trying to remove does not exist\",\r\n    E1022: 'The \"markers\" option is given an invalid value. Assign an array instead',\r\n    E1023: 'The \"routes\" option is given an invalid value. Assign an array instead',\r\n    E1025: \"This layout is too complex to render\",\r\n    E1026: 'The \"calculateCustomSummary\" function is missing from a field whose \"summaryType\" option is set to \"custom\"',\r\n    E1030: \"Unknown ScrollView refresh strategy: '{0}'\",\r\n    E1031: \"Unknown subscription in the Scheduler widget: '{0}'\",\r\n    E1032: \"Unknown start date in an appointment: '{0}'\",\r\n    E1033: \"Unknown step in the date navigator: '{0}'\",\r\n    E1034: \"The browser does not implement an API for saving files\",\r\n    E1035: \"The editor cannot be created because of an internal error: {0}\",\r\n    E1037: \"Invalid structure of grouped data\",\r\n    E1038: \"The browser does not support local storages for local web pages\",\r\n    E1039: \"A cell's position cannot be calculated\",\r\n    E1040: \"The '{0}' key value is not unique within the data array\",\r\n    E1041: \"The '{0}' script is referenced after the DevExtreme scripts or not referenced at all\",\r\n    E1042: \"{0} requires the key field to be specified\",\r\n    E1043: \"Changes cannot be processed due to the incorrectly set key\",\r\n    E1044: \"The key field specified by the keyExpr option does not match the key field specified in the data store\",\r\n    E1045: \"Editing requires the key field to be specified in the data store\",\r\n    E1046: \"The '{0}' key field is not found in data objects\",\r\n    E1047: 'The \"{0}\" field is not found in the fields array',\r\n    E1048: 'The \"{0}\" operation is not found in the filterOperations array',\r\n    E1049: \"Column '{0}': filtering is allowed but the 'dataField' or 'name' option is not specified\",\r\n    E1050: \"The validationRules option does not apply to third-party editors defined in the editCellTemplate\",\r\n    E1051: 'HtmlEditor\\'s valueType is \"{0}\", but the {0} converter was not imported.',\r\n    E1052: '{0} should have the \"dataSource\" option specified',\r\n    E1053: 'The \"buttons\" option accepts an array that contains only objects or string values',\r\n    E1054: \"All text editor buttons must have names\",\r\n    E1055: 'One or several text editor buttons have invalid or non-unique \"name\" values',\r\n    E1056: 'The {0} widget does not support buttons of the \"{1}\" type',\r\n    E1058: 'The \"startDayHour\" must be earlier than the \"endDayHour\"',\r\n    E1059: \"The following column names are not unique: {0}\",\r\n    E1060: \"All editable columns must have names\",\r\n    W1001: 'The \"key\" option cannot be modified after initialization',\r\n    W1002: \"An item with the key '{0}' does not exist\",\r\n    W1003: \"A group with the key '{0}' in which you are trying to select items does not exist\",\r\n    W1004: \"The item '{0}' you are trying to select in the group '{1}' does not exist\",\r\n    W1005: \"Due to column data types being unspecified, data has been loaded twice in order to apply initial filter settings. To resolve this issue, specify data types for all grid columns.\",\r\n    W1006: \"The map service returned the following error: '{0}'\",\r\n    W1007: \"No item with key {0} was found in the data source, but this key was used as the parent key for item {1}\",\r\n    W1008: \"Cannot scroll to the '{0}' date because it does not exist on the current view\",\r\n    W1009: \"Searching works only if data is specified using the dataSource option\",\r\n    W1010: \"The capability to select all items works with source data of plain structure only\",\r\n    W1011: 'The \"keyExpr\" option is not applied when dataSource is not an array',\r\n    W1012: \"The '{0}' key field is not found in data objects\",\r\n    W1013: 'The \"message\" field in the dialog component was renamed to \"messageHtml\". Change your code correspondingly. In addition, if you used HTML code in the message, make sure that it is secure',\r\n    W1014: \"The Floating Action Button exceeds the recommended speed dial action count. If you need to display more speed dial actions, increase the maxSpeedDialActionCount option value in the global config.\",\r\n    W1015: 'The \"cellDuration\" should divide the range from the \"startDayHour\" to the \"endDayHour\" into even intervals'\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.switchable.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiListEdit = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _uiListEdit.default.abstract;\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar POINTER_DOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, LIST_EDIT_DECORATOR);\r\nvar ACTIVE_EVENT_NAME = (0, _index.addNamespace)(_emitter.active, LIST_EDIT_DECORATOR);\r\nvar LIST_ITEM_CONTENT_CLASS = \"dx-list-item-content\";\r\nvar SWITCHABLE_DELETE_READY_CLASS = \"dx-list-switchable-delete-ready\";\r\nvar SWITCHABLE_MENU_SHIELD_POSITIONING_CLASS = \"dx-list-switchable-menu-shield-positioning\";\r\nvar SWITCHABLE_DELETE_TOP_SHIELD_CLASS = \"dx-list-switchable-delete-top-shield\";\r\nvar SWITCHABLE_DELETE_BOTTOM_SHIELD_CLASS = \"dx-list-switchable-delete-bottom-shield\";\r\nvar SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS = \"dx-list-switchable-menu-item-shield-positioning\";\r\nvar SWITCHABLE_DELETE_ITEM_CONTENT_SHIELD_CLASS = \"dx-list-switchable-delete-item-content-shield\";\r\nvar SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-switchable-delete-button-container\";\r\nvar SwitchableEditDecorator = _uiListEdit.default.inherit({\r\n    _init: function() {\r\n        this._$topShield = (0, _renderer.default)(\"<div>\").addClass(SWITCHABLE_DELETE_TOP_SHIELD_CLASS);\r\n        this._$bottomShield = (0, _renderer.default)(\"<div>\").addClass(SWITCHABLE_DELETE_BOTTOM_SHIELD_CLASS);\r\n        this._$itemContentShield = (0, _renderer.default)(\"<div>\").addClass(SWITCHABLE_DELETE_ITEM_CONTENT_SHIELD_CLASS);\r\n        _events_engine.default.on(this._$topShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this));\r\n        _events_engine.default.on(this._$bottomShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this));\r\n        this._list.$element().append(this._$topShield.toggle(false)).append(this._$bottomShield.toggle(false))\r\n    },\r\n    handleClick: function() {\r\n        return this._cancelDeleteReadyItem()\r\n    },\r\n    _cancelDeleteReadyItem: function() {\r\n        if (!this._$readyToDeleteItem) {\r\n            return false\r\n        }\r\n        this._cancelDelete(this._$readyToDeleteItem);\r\n        return true\r\n    },\r\n    _cancelDelete: function($itemElement) {\r\n        this._toggleDeleteReady($itemElement, false)\r\n    },\r\n    _toggleDeleteReady: function($itemElement, readyToDelete) {\r\n        if (void 0 === readyToDelete) {\r\n            readyToDelete = !this._isReadyToDelete($itemElement)\r\n        }\r\n        this._toggleShields($itemElement, readyToDelete);\r\n        this._toggleScrolling(readyToDelete);\r\n        this._cacheReadyToDeleteItem($itemElement, readyToDelete);\r\n        this._animateToggleDelete($itemElement, readyToDelete)\r\n    },\r\n    _isReadyToDelete: function($itemElement) {\r\n        return $itemElement.hasClass(SWITCHABLE_DELETE_READY_CLASS)\r\n    },\r\n    _toggleShields: function($itemElement, enabled) {\r\n        this._list.$element().toggleClass(SWITCHABLE_MENU_SHIELD_POSITIONING_CLASS, enabled);\r\n        this._$topShield.toggle(enabled);\r\n        this._$bottomShield.toggle(enabled);\r\n        if (enabled) {\r\n            this._updateShieldsHeight($itemElement)\r\n        }\r\n        this._toggleContentShield($itemElement, enabled)\r\n    },\r\n    _updateShieldsHeight: function($itemElement) {\r\n        var $list = this._list.$element();\r\n        var listTopOffset = $list.offset().top;\r\n        var listHeight = $list.outerHeight();\r\n        var itemTopOffset = $itemElement.offset().top;\r\n        var itemHeight = $itemElement.outerHeight();\r\n        var dirtyTopShieldHeight = itemTopOffset - listTopOffset;\r\n        var dirtyBottomShieldHeight = listHeight - itemHeight - dirtyTopShieldHeight;\r\n        this._$topShield.height(Math.max(dirtyTopShieldHeight, 0));\r\n        this._$bottomShield.height(Math.max(dirtyBottomShieldHeight, 0))\r\n    },\r\n    _toggleContentShield: function($itemElement, enabled) {\r\n        if (enabled) {\r\n            $itemElement.find(\".\" + LIST_ITEM_CONTENT_CLASS).first().append(this._$itemContentShield)\r\n        } else {\r\n            this._$itemContentShield.detach()\r\n        }\r\n    },\r\n    _toggleScrolling: function(readyToDelete) {\r\n        var scrollView = this._list.$element().dxScrollView(\"instance\");\r\n        if (readyToDelete) {\r\n            scrollView.on(\"start\", this._cancelScrolling)\r\n        } else {\r\n            scrollView.off(\"start\", this._cancelScrolling)\r\n        }\r\n    },\r\n    _cancelScrolling: function(args) {\r\n        args.event.cancel = true\r\n    },\r\n    _cacheReadyToDeleteItem: function($itemElement, cache) {\r\n        if (cache) {\r\n            this._$readyToDeleteItem = $itemElement\r\n        } else {\r\n            delete this._$readyToDeleteItem\r\n        }\r\n    },\r\n    _animateToggleDelete: function($itemElement, readyToDelete) {\r\n        if (readyToDelete) {\r\n            this._enablePositioning($itemElement);\r\n            this._prepareDeleteReady($itemElement);\r\n            this._animatePrepareDeleteReady($itemElement);\r\n            _events_engine.default.off($itemElement, _pointer.default.up)\r\n        } else {\r\n            this._forgetDeleteReady($itemElement);\r\n            this._animateForgetDeleteReady($itemElement).done(this._disablePositioning.bind(this, $itemElement))\r\n        }\r\n    },\r\n    _enablePositioning: function($itemElement) {\r\n        $itemElement.addClass(SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS);\r\n        _events_engine.default.on($itemElement, ACTIVE_EVENT_NAME, _common.noop);\r\n        _events_engine.default.one($itemElement, _pointer.default.up, this._disablePositioning.bind(this, $itemElement))\r\n    },\r\n    _disablePositioning: function($itemElement) {\r\n        $itemElement.removeClass(SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS);\r\n        _events_engine.default.off($itemElement, ACTIVE_EVENT_NAME)\r\n    },\r\n    _prepareDeleteReady: function($itemElement) {\r\n        $itemElement.addClass(SWITCHABLE_DELETE_READY_CLASS)\r\n    },\r\n    _forgetDeleteReady: function($itemElement) {\r\n        $itemElement.removeClass(SWITCHABLE_DELETE_READY_CLASS)\r\n    },\r\n    _animatePrepareDeleteReady: abstract,\r\n    _animateForgetDeleteReady: abstract,\r\n    _getDeleteButtonContainer: function($itemElement) {\r\n        $itemElement = $itemElement || this._$readyToDeleteItem;\r\n        return $itemElement.children(\".\" + SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS)\r\n    },\r\n    _deleteItem: function($itemElement) {\r\n        $itemElement = $itemElement || this._$readyToDeleteItem;\r\n        this._getDeleteButtonContainer($itemElement).detach();\r\n        if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            return\r\n        }\r\n        this._list.deleteItem($itemElement).always(this._cancelDelete.bind(this, $itemElement))\r\n    },\r\n    _isRtlEnabled: function() {\r\n        return this._list.option(\"rtlEnabled\")\r\n    },\r\n    dispose: function() {\r\n        if (this._$topShield) {\r\n            this._$topShield.remove()\r\n        }\r\n        if (this._$bottomShield) {\r\n            this._$bottomShield.remove()\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    }\r\n});\r\nvar _default = SwitchableEditDecorator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/context_menu/ui.context_menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _element = require(\"../../core/element\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.menu_base\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = DX_MENU_ITEM_CLASS + \"-expanded\";\r\nvar DX_MENU_PHONE_CLASS = \"dx-menu-phone-overlay\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_WRAPPER_CLASS = DX_MENU_ITEM_CLASS + \"-wrapper\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar DX_CONTEXT_MENU_CLASS = \"dx-context-menu\";\r\nvar DX_HAS_CONTEXT_MENU_CLASS = \"dx-has-context-menu\";\r\nvar DX_STATE_DISABLED_CLASS = \"dx-state-disabled\";\r\nvar DX_STATE_FOCUSED_CLASS = \"dx-state-focused\";\r\nvar DX_STATE_HOVER_CLASS = \"dx-state-hover\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar FOCUS_FIRST = \"first\";\r\nvar FOCUS_LAST = \"last\";\r\nvar ACTIONS = [\"onShowing\", \"onShown\", \"onSubmenuCreated\", \"onHiding\", \"onHidden\", \"onPositioning\", \"onLeftFirstItem\", \"onLeftLastItem\", \"onCloseRootSubmenu\", \"onExpandLastSubmenu\"];\r\nvar LOCAL_SUBMENU_DIRECTIONS = [FOCUS_UP, FOCUS_DOWN, FOCUS_FIRST, FOCUS_LAST];\r\nvar DEFAULT_SHOW_EVENT = \"dxcontextmenu\";\r\nvar ContextMenu = function(_MenuBase) {\r\n    _inherits(ContextMenu, _MenuBase);\r\n    var _super = _createSuper(ContextMenu);\r\n\r\n    function ContextMenu() {\r\n        _classCallCheck(this, ContextMenu);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(ContextMenu, [{\r\n        key: \"getShowEvent\",\r\n        value: function(showEventOption) {\r\n            var result = null;\r\n            if ((0, _type.isObject)(showEventOption)) {\r\n                if (null !== showEventOption.name) {\r\n                    result = showEventOption.name || DEFAULT_SHOW_EVENT\r\n                }\r\n            } else {\r\n                result = showEventOption\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getShowDelay\",\r\n        value: function(showEventOption) {\r\n            return (0, _type.isObject)(showEventOption) && showEventOption.delay\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(ContextMenu.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                showEvent: DEFAULT_SHOW_EVENT,\r\n                closeOnOutsideClick: true,\r\n                position: {\r\n                    at: \"top left\",\r\n                    my: \"top left\"\r\n                },\r\n                onShowing: null,\r\n                onShown: null,\r\n                onSubmenuCreated: null,\r\n                onHiding: null,\r\n                onHidden: null,\r\n                onPositioning: null,\r\n                submenuDirection: \"auto\",\r\n                visible: false,\r\n                target: void 0,\r\n                onLeftFirstItem: null,\r\n                onLeftLastItem: null,\r\n                onCloseRootSubmenu: null,\r\n                onExpandLastSubmenu: null\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_defaultOptionsRules\",\r\n        value: function() {\r\n            return _get(_getPrototypeOf(ContextMenu.prototype), \"_defaultOptionsRules\", this).call(this).concat([{\r\n                device: function() {\r\n                    return !(0, _window.hasWindow)()\r\n                },\r\n                options: {\r\n                    animation: null\r\n                }\r\n            }])\r\n        }\r\n    }, {\r\n        key: \"_initActions\",\r\n        value: function() {\r\n            var _this = this;\r\n            this._actions = {};\r\n            (0, _iterator.each)(ACTIONS, function(index, action) {\r\n                _this._actions[action] = _this._createActionByOption(action) || _common.noop\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_setOptionsByReference\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(ContextMenu.prototype), \"_setOptionsByReference\", this).call(this);\r\n            (0, _extend.extend)(this._optionsByReference, {\r\n                animation: true,\r\n                selectedItem: true\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_focusInHandler\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_itemContainer\",\r\n        value: function() {\r\n            return this._overlay ? this._overlay.$content() : (0, _renderer.default)()\r\n        }\r\n    }, {\r\n        key: \"_eventBindingTarget\",\r\n        value: function() {\r\n            return this._itemContainer()\r\n        }\r\n    }, {\r\n        key: \"itemsContainer\",\r\n        value: function() {\r\n            return this._overlay ? this._overlay.$content() : void 0\r\n        }\r\n    }, {\r\n        key: \"_supportedKeys\",\r\n        value: function() {\r\n            var _this2 = this;\r\n            var selectItem = function() {\r\n                var $item = (0, _renderer.default)(_this2.option(\"focusedElement\"));\r\n                _this2.hide();\r\n                if (!$item.length || !_this2._isSelectionEnabled()) {\r\n                    return\r\n                }\r\n                _this2.selectItem($item[0])\r\n            };\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(ContextMenu.prototype), \"_supportedKeys\", this).call(this), {\r\n                space: selectItem,\r\n                esc: this.hide\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getActiveItem\",\r\n        value: function() {\r\n            var $availableItems = this._getAvailableItems();\r\n            var $focusedItem = $availableItems.filter(\".\".concat(DX_STATE_FOCUSED_CLASS));\r\n            var $hoveredItem = $availableItems.filter(\".\".concat(DX_STATE_HOVER_CLASS));\r\n            var $hoveredItemContainer = $hoveredItem.closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS));\r\n            if ($hoveredItemContainer.find(\".\".concat(DX_MENU_ITEM_CLASS)).index($focusedItem) >= 0) {\r\n                return $focusedItem\r\n            }\r\n            if ($hoveredItem.length) {\r\n                return $hoveredItem\r\n            }\r\n            return _get(_getPrototypeOf(ContextMenu.prototype), \"_getActiveItem\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_moveFocus\",\r\n        value: function(location) {\r\n            var $items = this._getItemsByLocation(location);\r\n            var $oldTarget = this._getActiveItem(true);\r\n            var $hoveredItem = this.itemsContainer().find(\".\".concat(DX_STATE_HOVER_CLASS));\r\n            var $focusedItem = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n            var $activeItemHighlighted = !!($focusedItem.length || $hoveredItem.length);\r\n            var $newTarget;\r\n            switch (location) {\r\n                case FOCUS_UP:\r\n                    $newTarget = $activeItemHighlighted ? this._prevItem($items) : $oldTarget;\r\n                    if ($oldTarget.is($items.first())) {\r\n                        this._actions.onLeftFirstItem($oldTarget)\r\n                    }\r\n                    break;\r\n                case FOCUS_DOWN:\r\n                    $newTarget = $activeItemHighlighted ? this._nextItem($items) : $oldTarget;\r\n                    if ($oldTarget.is($items.last())) {\r\n                        this._actions.onLeftLastItem($oldTarget)\r\n                    }\r\n                    break;\r\n                case FOCUS_RIGHT:\r\n                    $newTarget = this.option(\"rtlEnabled\") ? this._hideSubmenuHandler() : this._expandSubmenuHandler($items, location);\r\n                    break;\r\n                case FOCUS_LEFT:\r\n                    $newTarget = this.option(\"rtlEnabled\") ? this._expandSubmenuHandler($items, location) : this._hideSubmenuHandler();\r\n                    break;\r\n                case FOCUS_FIRST:\r\n                    $newTarget = $items.first();\r\n                    break;\r\n                case FOCUS_LAST:\r\n                    $newTarget = $items.last();\r\n                    break;\r\n                default:\r\n                    return _get(_getPrototypeOf(ContextMenu.prototype), \"_moveFocus\", this).call(this, location)\r\n            }\r\n            if (0 !== $newTarget.length) {\r\n                this.option(\"focusedElement\", (0, _element.getPublicElement)($newTarget))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getItemsByLocation\",\r\n        value: function(location) {\r\n            var $activeItem = this._getActiveItem(true);\r\n            var $items;\r\n            if ((0, _array.inArray)(location, LOCAL_SUBMENU_DIRECTIONS) >= 0) {\r\n                $items = $activeItem.closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS)).children().children()\r\n            }\r\n            $items = this._getAvailableItems($items);\r\n            return $items\r\n        }\r\n    }, {\r\n        key: \"_getAriaTarget\",\r\n        value: function() {\r\n            return this.$element()\r\n        }\r\n    }, {\r\n        key: \"_refreshActiveDescendant\",\r\n        value: function() {\r\n            if ((0, _type.isDefined)(this._overlay)) {\r\n                var $target = this._overlay.$content();\r\n                _get(_getPrototypeOf(ContextMenu.prototype), \"_refreshActiveDescendant\", this).call(this, $target)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hideSubmenuHandler\",\r\n        value: function() {\r\n            var $curItem = this._getActiveItem(true);\r\n            var $parentItem = $curItem.parents(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS)).first();\r\n            if ($parentItem.length) {\r\n                this._hideSubmenusOnSameLevel($parentItem);\r\n                this._hideSubmenu($curItem.closest(\".\".concat(DX_SUBMENU_CLASS)));\r\n                return $parentItem\r\n            }\r\n            this._actions.onCloseRootSubmenu($curItem);\r\n            return $curItem\r\n        }\r\n    }, {\r\n        key: \"_expandSubmenuHandler\",\r\n        value: function($items, location) {\r\n            var $curItem = this._getActiveItem(true);\r\n            var itemData = this._getItemData($curItem);\r\n            var node = this._dataAdapter.getNodeByItem(itemData);\r\n            var isItemHasSubmenu = this._hasSubmenu(node);\r\n            var $submenu = $curItem.children(\".\".concat(DX_SUBMENU_CLASS));\r\n            if (isItemHasSubmenu && !$curItem.hasClass(DX_STATE_DISABLED_CLASS)) {\r\n                if (!$submenu.length || \"hidden\" === $submenu.css(\"visibility\")) {\r\n                    this._showSubmenu($curItem)\r\n                }\r\n                return this._nextItem(this._getItemsByLocation(location))\r\n            }\r\n            this._actions.onExpandLastSubmenu($curItem);\r\n            return $curItem\r\n        }\r\n    }, {\r\n        key: \"_clean\",\r\n        value: function() {\r\n            if (this._overlay) {\r\n                this._overlay.$element().remove();\r\n                this._overlay = null\r\n            }\r\n            this._detachShowContextMenuEvents(this._getTarget());\r\n            _get(_getPrototypeOf(ContextMenu.prototype), \"_clean\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            this.$element().addClass(DX_HAS_CONTEXT_MENU_CLASS);\r\n            _get(_getPrototypeOf(ContextMenu.prototype), \"_initMarkup\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_render\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(ContextMenu.prototype), \"_render\", this).call(this);\r\n            this._renderVisibility(this.option(\"visible\"));\r\n            this._addWidgetClass()\r\n        }\r\n    }, {\r\n        key: \"_renderContentImpl\",\r\n        value: function() {\r\n            this._detachShowContextMenuEvents(this._getTarget());\r\n            this._attachShowContextMenuEvents()\r\n        }\r\n    }, {\r\n        key: \"_attachKeyboardEvents\",\r\n        value: function() {\r\n            !this._keyboardListenerId && this._focusTarget().length && _get(_getPrototypeOf(ContextMenu.prototype), \"_attachKeyboardEvents\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_renderContextMenuOverlay\",\r\n        value: function() {\r\n            if (this._overlay) {\r\n                return\r\n            }\r\n            var overlayOptions = this._getOverlayOptions();\r\n            this._overlay = this._createComponent((0, _renderer.default)(\"<div>\").appendTo(this._$element), _overlay.default, overlayOptions);\r\n            var $overlayContent = this._overlay.$content();\r\n            $overlayContent.addClass(DX_CONTEXT_MENU_CLASS);\r\n            this._addCustomCssClass($overlayContent);\r\n            this._addPlatformDependentClass($overlayContent);\r\n            this._attachContextMenuEvent()\r\n        }\r\n    }, {\r\n        key: \"_itemContextMenuHandler\",\r\n        value: function(e) {\r\n            _get(_getPrototypeOf(ContextMenu.prototype), \"_itemContextMenuHandler\", this).call(this, e);\r\n            e.stopPropagation()\r\n        }\r\n    }, {\r\n        key: \"_addPlatformDependentClass\",\r\n        value: function($element) {\r\n            if (_devices.default.current().phone) {\r\n                $element.addClass(DX_MENU_PHONE_CLASS)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_detachShowContextMenuEvents\",\r\n        value: function(target) {\r\n            var showEvent = this.getShowEvent(this.option(\"showEvent\"));\r\n            if (!showEvent) {\r\n                return\r\n            }\r\n            var eventName = (0, _index.addNamespace)(showEvent, this.NAME);\r\n            if (this._showContextMenuEventHandler) {\r\n                _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, target, this._showContextMenuEventHandler)\r\n            } else {\r\n                _events_engine.default.off((0, _renderer.default)(target), eventName)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_attachShowContextMenuEvents\",\r\n        value: function() {\r\n            var _this3 = this;\r\n            var target = this._getTarget();\r\n            var showEvent = this.getShowEvent(this.option(\"showEvent\"));\r\n            if (!showEvent) {\r\n                return\r\n            }\r\n            var eventName = (0, _index.addNamespace)(showEvent, this.NAME);\r\n            var contextMenuAction = this._createAction(function(e) {\r\n                var delay = _this3.getShowDelay(_this3.option(\"showEvent\"));\r\n                if (delay) {\r\n                    setTimeout(function() {\r\n                        return _this3._show(e.event)\r\n                    }, delay)\r\n                } else {\r\n                    _this3._show(e.event)\r\n                }\r\n            }, {\r\n                validatingTargetName: \"target\"\r\n            });\r\n            var handler = function(e) {\r\n                return contextMenuAction({\r\n                    event: e,\r\n                    target: (0, _renderer.default)(e.currentTarget)\r\n                })\r\n            };\r\n            contextMenuAction = this._createAction(contextMenuAction);\r\n            if ((0, _type.isRenderer)(target) || target.nodeType || (0, _type.isWindow)(target)) {\r\n                this._showContextMenuEventHandler = void 0;\r\n                _events_engine.default.on(target, eventName, handler)\r\n            } else {\r\n                this._showContextMenuEventHandler = handler;\r\n                _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, target, this._showContextMenuEventHandler)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hoverEndHandler\",\r\n        value: function(e) {\r\n            _get(_getPrototypeOf(ContextMenu.prototype), \"_hoverEndHandler\", this).call(this, e);\r\n            e.stopPropagation()\r\n        }\r\n    }, {\r\n        key: \"_renderDimensions\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_renderContainer\",\r\n        value: function($wrapper, submenuContainer) {\r\n            var $holder = submenuContainer || this._itemContainer();\r\n            $wrapper = (0, _renderer.default)(\"<div>\");\r\n            $wrapper.appendTo($holder).addClass(DX_SUBMENU_CLASS).css(\"visibility\", submenuContainer ? \"hidden\" : \"visible\");\r\n            var $itemsContainer = _get(_getPrototypeOf(ContextMenu.prototype), \"_renderContainer\", this).call(this, $wrapper);\r\n            if (submenuContainer) {\r\n                return $itemsContainer\r\n            }\r\n            if (this.option(\"width\")) {\r\n                return $itemsContainer.css(\"minWidth\", this.option(\"width\"))\r\n            }\r\n            if (this.option(\"height\")) {\r\n                return $itemsContainer.css(\"minHeight\", this.option(\"height\"))\r\n            }\r\n            return $itemsContainer\r\n        }\r\n    }, {\r\n        key: \"_renderSubmenuItems\",\r\n        value: function(node, $itemFrame) {\r\n            this._renderItems(this._getChildNodes(node), $itemFrame);\r\n            this._actions.onSubmenuCreated({\r\n                itemElement: (0, _element.getPublicElement)($itemFrame),\r\n                itemData: node.internalFields.item,\r\n                submenuElement: (0, _element.getPublicElement)($itemFrame.children(\".\".concat(DX_SUBMENU_CLASS)))\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getOverlayOptions\",\r\n        value: function() {\r\n            var position = this.option(\"position\");\r\n            var overlayOptions = {\r\n                focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n                animation: this.option(\"animation\"),\r\n                innerOverlay: true,\r\n                closeOnOutsideClick: this._closeOnOutsideClickHandler.bind(this),\r\n                propagateOutsideClick: true,\r\n                closeOnTargetScroll: true,\r\n                deferRendering: false,\r\n                position: {\r\n                    at: position.at,\r\n                    my: position.my,\r\n                    of: this._getTarget(),\r\n                    collision: \"flipfit\"\r\n                },\r\n                shading: false,\r\n                showTitle: false,\r\n                height: \"auto\",\r\n                width: \"auto\",\r\n                onShown: this._overlayShownActionHandler.bind(this),\r\n                onHiding: this._overlayHidingActionHandler.bind(this),\r\n                onHidden: this._overlayHiddenActionHandler.bind(this)\r\n            };\r\n            return overlayOptions\r\n        }\r\n    }, {\r\n        key: \"_overlayShownActionHandler\",\r\n        value: function(arg) {\r\n            this._actions.onShown(arg)\r\n        }\r\n    }, {\r\n        key: \"_overlayHidingActionHandler\",\r\n        value: function(arg) {\r\n            this._actions.onHiding(arg);\r\n            if (!arg.cancel) {\r\n                this._hideAllShownSubmenus();\r\n                this._setOptionWithoutOptionChange(\"visible\", false)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_overlayHiddenActionHandler\",\r\n        value: function(arg) {\r\n            this._actions.onHidden(arg)\r\n        }\r\n    }, {\r\n        key: \"_closeOnOutsideClickHandler\",\r\n        value: function(e) {\r\n            var closeOnOutsideClick = this.option(\"closeOnOutsideClick\");\r\n            if ((0, _type.isFunction)(closeOnOutsideClick)) {\r\n                return closeOnOutsideClick(e)\r\n            }\r\n            if (!closeOnOutsideClick) {\r\n                return false\r\n            }\r\n            if (_dom_adapter.default.isDocument(e.target)) {\r\n                return true\r\n            }\r\n            var $activeItemContainer = this._getActiveItemsContainer(e.target);\r\n            var $itemContainers = this._getItemsContainers();\r\n            var $clickedItem = this._searchActiveItem(e.target);\r\n            var $rootItem = this.$element().parents(\".\".concat(DX_MENU_ITEM_CLASS));\r\n            var isRootItemClicked = $clickedItem[0] === $rootItem[0] && $clickedItem.length && $rootItem.length;\r\n            var isInnerOverlayClicked = this._isIncludeOverlay($activeItemContainer, $itemContainers) && $clickedItem.length;\r\n            if (isInnerOverlayClicked || isRootItemClicked) {\r\n                if (\"onClick\" === this._getShowSubmenuMode()) {\r\n                    this._hideAllShownChildSubmenus($clickedItem)\r\n                }\r\n                return false\r\n            }\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_getActiveItemsContainer\",\r\n        value: function(target) {\r\n            return (0, _renderer.default)(target).closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n        }\r\n    }, {\r\n        key: \"_getItemsContainers\",\r\n        value: function() {\r\n            return this._overlay._$content.find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n        }\r\n    }, {\r\n        key: \"_searchActiveItem\",\r\n        value: function(target) {\r\n            return (0, _renderer.default)(target).closest(\".\".concat(DX_MENU_ITEM_CLASS)).eq(0)\r\n        }\r\n    }, {\r\n        key: \"_isIncludeOverlay\",\r\n        value: function($activeOverlay, $allOverlays) {\r\n            var isSame = false;\r\n            (0, _iterator.each)($allOverlays, function(index, $overlay) {\r\n                if ($activeOverlay.is($overlay) && !isSame) {\r\n                    isSame = true\r\n                }\r\n            });\r\n            return isSame\r\n        }\r\n    }, {\r\n        key: \"_hideAllShownChildSubmenus\",\r\n        value: function($clickedItem) {\r\n            var _this4 = this;\r\n            var $submenuElements = $clickedItem.find(\".\".concat(DX_SUBMENU_CLASS));\r\n            var shownSubmenus = (0, _extend.extend)([], this._shownSubmenus);\r\n            if ($submenuElements.length > 0) {\r\n                (0, _iterator.each)(shownSubmenus, function(index, $submenu) {\r\n                    var $context = _this4._searchActiveItem($submenu.context).parent();\r\n                    if ($context.parent().is($clickedItem.parent().parent()) && !$context.is($clickedItem.parent())) {\r\n                        _this4._hideSubmenu($submenu)\r\n                    }\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_showSubmenu\",\r\n        value: function($item) {\r\n            var node = this._dataAdapter.getNodeByItem(this._getItemData($item));\r\n            this._hideSubmenusOnSameLevel($item);\r\n            if (!this._hasSubmenu(node)) {\r\n                return\r\n            }\r\n            var $submenu = $item.children(\".\".concat(DX_SUBMENU_CLASS));\r\n            var isSubmenuRendered = $submenu.length;\r\n            _get(_getPrototypeOf(ContextMenu.prototype), \"_showSubmenu\", this).call(this, $item);\r\n            if (!isSubmenuRendered) {\r\n                this._renderSubmenuItems(node, $item)\r\n            }\r\n            if (!this._isSubmenuVisible($submenu)) {\r\n                this._drawSubmenu($item)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hideSubmenusOnSameLevel\",\r\n        value: function($item) {\r\n            var $expandedItems = $item.parent(\".\".concat(DX_MENU_ITEM_WRAPPER_CLASS)).siblings().find(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS));\r\n            if ($expandedItems.length) {\r\n                $expandedItems.removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n                this._hideSubmenu($expandedItems.find(\".\".concat(DX_SUBMENU_CLASS)))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hideSubmenuGroup\",\r\n        value: function($submenu) {\r\n            if (this._isSubmenuVisible($submenu)) {\r\n                this._hideSubmenuCore($submenu)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isSubmenuVisible\",\r\n        value: function($submenu) {\r\n            return \"visible\" === $submenu.css(\"visibility\")\r\n        }\r\n    }, {\r\n        key: \"_drawSubmenu\",\r\n        value: function($itemElement) {\r\n            var animation = this.option(\"animation\") ? this.option(\"animation\").show : {};\r\n            var $submenu = $itemElement.children(\".\".concat(DX_SUBMENU_CLASS));\r\n            var submenuPosition = this._getSubmenuPosition($itemElement);\r\n            if (this._overlay && this._overlay.option(\"visible\")) {\r\n                if (!(0, _type.isDefined)(this._shownSubmenus)) {\r\n                    this._shownSubmenus = []\r\n                }\r\n                if ((0, _array.inArray)($submenu, this._shownSubmenus)) {\r\n                    this._shownSubmenus.push($submenu)\r\n                }\r\n                if (animation) {\r\n                    _fx.default.stop($submenu)\r\n                }\r\n                _position.default.setup($submenu, submenuPosition);\r\n                if (animation) {\r\n                    if ((0, _type.isPlainObject)(animation.to)) {\r\n                        animation.to.position = submenuPosition\r\n                    }\r\n                    this._animate($submenu, animation)\r\n                }\r\n                $submenu.css(\"visibility\", \"visible\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_animate\",\r\n        value: function($container, options) {\r\n            _fx.default.animate($container, options)\r\n        }\r\n    }, {\r\n        key: \"_getSubmenuPosition\",\r\n        value: function($rootItem) {\r\n            var submenuDirection = this.option(\"submenuDirection\").toLowerCase();\r\n            var $rootItemWrapper = $rootItem.parent(\".\".concat(DX_MENU_ITEM_WRAPPER_CLASS));\r\n            var position = {\r\n                collision: \"flip\",\r\n                of: $rootItemWrapper,\r\n                offset: {\r\n                    h: 0,\r\n                    v: -1\r\n                }\r\n            };\r\n            switch (submenuDirection) {\r\n                case \"left\":\r\n                    position.at = \"left top\";\r\n                    position.my = \"right top\";\r\n                    break;\r\n                case \"right\":\r\n                    position.at = \"right top\";\r\n                    position.my = \"left top\";\r\n                    break;\r\n                default:\r\n                    if (this.option(\"rtlEnabled\")) {\r\n                        position.at = \"left top\";\r\n                        position.my = \"right top\"\r\n                    } else {\r\n                        position.at = \"right top\";\r\n                        position.my = \"left top\"\r\n                    }\r\n            }\r\n            return position\r\n        }\r\n    }, {\r\n        key: \"_updateSubmenuVisibilityOnClick\",\r\n        value: function(actionArgs) {\r\n            if (!actionArgs.args.length) {\r\n                return\r\n            }\r\n            var itemData = actionArgs.args[0].itemData;\r\n            var node = this._dataAdapter.getNodeByItem(itemData);\r\n            if (!node) {\r\n                return\r\n            }\r\n            var $itemElement = (0, _renderer.default)(actionArgs.args[0].itemElement);\r\n            var $submenu = $itemElement.find(\".\".concat(DX_SUBMENU_CLASS));\r\n            var shouldRenderSubmenu = this._hasSubmenu(node) && !$submenu.length;\r\n            if (shouldRenderSubmenu) {\r\n                this._renderSubmenuItems(node, $itemElement);\r\n                $submenu = $itemElement.find(\".\".concat(DX_SUBMENU_CLASS))\r\n            }\r\n            if ($itemElement.context === $submenu.context && \"visible\" === $submenu.css(\"visibility\")) {\r\n                return\r\n            }\r\n            var notCloseMenuOnItemClick = itemData && false === itemData.closeMenuOnClick;\r\n            if (!itemData || itemData.disabled || notCloseMenuOnItemClick) {\r\n                return\r\n            }\r\n            this._updateSelectedItemOnClick(actionArgs);\r\n            if (0 === $submenu.length) {\r\n                var $prevSubmenu = (0, _renderer.default)($itemElement.parents(\".\".concat(DX_SUBMENU_CLASS))[0]);\r\n                this._hideSubmenu($prevSubmenu);\r\n                if (!actionArgs.canceled && this._overlay && this._overlay.option(\"visible\")) {\r\n                    this.option(\"visible\", false)\r\n                }\r\n            } else {\r\n                if (this._shownSubmenus && this._shownSubmenus.length > 0) {\r\n                    if (this._shownSubmenus[0].is($submenu)) {\r\n                        this._hideSubmenu($submenu)\r\n                    }\r\n                }\r\n                this._showSubmenu($itemElement)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hideSubmenu\",\r\n        value: function($curSubmenu) {\r\n            var _this5 = this;\r\n            var shownSubmenus = (0, _extend.extend)([], this._shownSubmenus);\r\n            (0, _iterator.each)(shownSubmenus, function(index, $submenu) {\r\n                if ($curSubmenu.is($submenu) || (0, _dom.contains)($curSubmenu[0], $submenu[0])) {\r\n                    $submenu.parent().removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n                    _this5._hideSubmenuCore($submenu)\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_hideSubmenuCore\",\r\n        value: function($submenu) {\r\n            var index = (0, _array.inArray)($submenu, this._shownSubmenus);\r\n            var animation = this.option(\"animation\") ? this.option(\"animation\").hide : null;\r\n            if (index >= 0) {\r\n                this._shownSubmenus.splice(index, 1)\r\n            }\r\n            this._stopAnimate($submenu);\r\n            animation && this._animate($submenu, animation);\r\n            $submenu.css(\"visibility\", \"hidden\")\r\n        }\r\n    }, {\r\n        key: \"_stopAnimate\",\r\n        value: function($container) {\r\n            _fx.default.stop($container, true)\r\n        }\r\n    }, {\r\n        key: \"_hideAllShownSubmenus\",\r\n        value: function() {\r\n            var _this6 = this;\r\n            var shownSubmenus = (0, _extend.extend)([], this._shownSubmenus);\r\n            var $expandedItems = this._overlay.$content().find(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS));\r\n            $expandedItems.removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n            (0, _iterator.each)(shownSubmenus, function(_, $submenu) {\r\n                _this6._hideSubmenu($submenu)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_visibilityChanged\",\r\n        value: function(visible) {\r\n            if (visible) {\r\n                this._renderContentImpl()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            if ((0, _array.inArray)(args.name, ACTIONS) > -1) {\r\n                this._initActions();\r\n                return\r\n            }\r\n            switch (args.name) {\r\n                case \"visible\":\r\n                    this._renderVisibility(args.value);\r\n                    break;\r\n                case \"showEvent\":\r\n                case \"position\":\r\n                case \"submenuDirection\":\r\n                    this._invalidate();\r\n                    break;\r\n                case \"target\":\r\n                    args.previousValue && this._detachShowContextMenuEvents(args.previousValue);\r\n                    this._invalidate();\r\n                    break;\r\n                case \"closeOnOutsideClick\":\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(ContextMenu.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderVisibility\",\r\n        value: function(showing) {\r\n            return showing ? this._show() : this._hide()\r\n        }\r\n    }, {\r\n        key: \"_toggleVisibility\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_show\",\r\n        value: function(event) {\r\n            var args = {\r\n                jQEvent: event\r\n            };\r\n            var promise = (new _deferred.Deferred).reject().promise();\r\n            this._actions.onShowing(args);\r\n            if (args.cancel) {\r\n                return promise\r\n            }\r\n            var position = this._positionContextMenu(event);\r\n            if (position) {\r\n                if (!this._overlay) {\r\n                    this._renderContextMenuOverlay();\r\n                    this._overlay.$content().addClass(this._widgetClass());\r\n                    this._renderFocusState();\r\n                    this._attachHoverEvents();\r\n                    this._attachClickEvent();\r\n                    this._renderItems(this._dataAdapter.getRootNodes())\r\n                }\r\n                this._setOptionWithoutOptionChange(\"visible\", true);\r\n                this._overlay.option(\"position\", position);\r\n                promise = this._overlay.show();\r\n                event && event.stopPropagation();\r\n                this._setAriaAttributes()\r\n            }\r\n            return promise\r\n        }\r\n    }, {\r\n        key: \"_setAriaAttributes\",\r\n        value: function() {\r\n            this._overlayContentId = \"dx-\".concat(new _guid.default);\r\n            this.setAria(\"owns\", this._overlayContentId);\r\n            this.setAria({\r\n                id: this._overlayContentId,\r\n                role: \"menu\"\r\n            }, this._overlay.$content())\r\n        }\r\n    }, {\r\n        key: \"_cleanAriaAttributes\",\r\n        value: function() {\r\n            this._overlay && this.setAria(\"id\", null, this._overlay.$content());\r\n            this.setAria(\"owns\", void 0)\r\n        }\r\n    }, {\r\n        key: \"_getTarget\",\r\n        value: function() {\r\n            return this.option(\"target\") || this.option(\"position\").of || (0, _renderer.default)(_dom_adapter.default.getDocument())\r\n        }\r\n    }, {\r\n        key: \"_getContextMenuPosition\",\r\n        value: function() {\r\n            return (0, _extend.extend)({}, this.option(\"position\"), {\r\n                of: this._getTarget()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_positionContextMenu\",\r\n        value: function(jQEvent) {\r\n            var position = this._getContextMenuPosition();\r\n            var isInitialPosition = this._isInitialOptionValue(\"position\");\r\n            var positioningAction = this._createActionByOption(\"onPositioning\", actionArgs);\r\n            if (jQEvent && jQEvent.preventDefault && isInitialPosition) {\r\n                position.of = jQEvent\r\n            }\r\n            var actionArgs = {\r\n                position: position,\r\n                event: jQEvent\r\n            };\r\n            positioningAction(actionArgs);\r\n            if (actionArgs.cancel) {\r\n                position = null\r\n            } else {\r\n                if (actionArgs.event) {\r\n                    actionArgs.event.cancel = true;\r\n                    jQEvent.preventDefault()\r\n                }\r\n            }\r\n            return position\r\n        }\r\n    }, {\r\n        key: \"_refresh\",\r\n        value: function() {\r\n            if (!(0, _window.hasWindow)()) {\r\n                _get(_getPrototypeOf(ContextMenu.prototype), \"_refresh\", this).call(this)\r\n            } else {\r\n                if (this._overlay) {\r\n                    var lastPosition = this._overlay.option(\"position\");\r\n                    _get(_getPrototypeOf(ContextMenu.prototype), \"_refresh\", this).call(this);\r\n                    this._overlay && this._overlay.option(\"position\", lastPosition)\r\n                } else {\r\n                    _get(_getPrototypeOf(ContextMenu.prototype), \"_refresh\", this).call(this)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hide\",\r\n        value: function() {\r\n            var promise;\r\n            if (this._overlay) {\r\n                promise = this._overlay.hide();\r\n                this._setOptionWithoutOptionChange(\"visible\", false)\r\n            }\r\n            this._cleanAriaAttributes();\r\n            this.option(\"focusedElement\", null);\r\n            return promise || (new _deferred.Deferred).reject().promise()\r\n        }\r\n    }, {\r\n        key: \"toggle\",\r\n        value: function(showing) {\r\n            var visible = this.option(\"visible\");\r\n            showing = void 0 === showing ? !visible : showing;\r\n            return this._renderVisibility(showing)\r\n        }\r\n    }, {\r\n        key: \"show\",\r\n        value: function() {\r\n            return this.toggle(true)\r\n        }\r\n    }, {\r\n        key: \"hide\",\r\n        value: function() {\r\n            return this.toggle(false)\r\n        }\r\n    }]);\r\n    return ContextMenu\r\n}(_ui.default);\r\n(0, _component_registrator.default)(\"dxContextMenu\", ContextMenu);\r\nvar _default = ContextMenu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/jspdf/export.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Export = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar Export = {\r\n    getFullOptions: function(options) {\r\n        var fullOptions = (0, _extend.extend)({}, options);\r\n        if (!((0, _type.isDefined)(fullOptions.jsPDFDocument) && (0, _type.isObject)(fullOptions.jsPDFDocument))) {\r\n            throw Error('The \"jsPDFDocument\" field must contain a jsPDF instance.')\r\n        }\r\n        if (!((0, _type.isDefined)(fullOptions.jsPDFDocument.autoTable) && (0, _type.isFunction)(fullOptions.jsPDFDocument.autoTable))) {\r\n            throw Error('The \"exportDataGrid\" method requires a autoTable plugin for jsPDF object.')\r\n        }\r\n        if (!(0, _type.isDefined)(fullOptions.keepColumnWidths)) {\r\n            fullOptions.keepColumnWidths = true\r\n        }\r\n        if (!(0, _type.isDefined)(fullOptions.autoTableOptions)) {\r\n            fullOptions.autoTableOptions = this._getDefaultAutoTableOptions()\r\n        } else {\r\n            if (!(0, _type.isObject)(fullOptions.autoTableOptions)) {\r\n                throw Error('The \"autoTableOptions\" option must be of object type.')\r\n            }\r\n            fullOptions.autoTableOptions = (0, _extend.extend)(true, {}, this._getDefaultAutoTableOptions(), fullOptions.autoTableOptions)\r\n        }\r\n        return fullOptions\r\n    },\r\n    _getDefaultAutoTableOptions: function() {\r\n        return {\r\n            theme: \"plain\",\r\n            tableLineColor: 149,\r\n            tableLineWidth: .1,\r\n            styles: {\r\n                textColor: 51,\r\n                lineColor: 149,\r\n                lineWidth: 0\r\n            },\r\n            columnStyles: {},\r\n            headStyles: {\r\n                fontStyle: \"normal\",\r\n                textColor: 149,\r\n                lineWidth: .1\r\n            },\r\n            bodyStyles: {\r\n                lineWidth: .1\r\n            },\r\n            head: [],\r\n            body: []\r\n        }\r\n    },\r\n    \"export\": function(options) {\r\n        var _this = this;\r\n        var jsPDFDocument = options.jsPDFDocument,\r\n            autoTableOptions = options.autoTableOptions,\r\n            component = options.component,\r\n            customizeCell = options.customizeCell,\r\n            keepColumnWidths = options.keepColumnWidths,\r\n            selectedRowsOnly = options.selectedRowsOnly;\r\n        var dataProvider = component.getDataProvider(selectedRowsOnly);\r\n        var wrapText = !!component.option(\"wordWrapEnabled\");\r\n        return new Promise(function(resolve) {\r\n            dataProvider.ready().done(function() {\r\n                var columns = dataProvider.getColumns();\r\n                var styles = dataProvider.getStyles();\r\n                var dataRowsCount = dataProvider.getRowsCount();\r\n                var headerRowCount = dataProvider.getHeaderRowCount();\r\n                var mergedCells = [];\r\n                if (keepColumnWidths) {\r\n                    var pdfColumnWidths = _this._tryGetPdfColumnWidths(autoTableOptions.tableWidth, dataProvider.getColumnsWidths());\r\n                    if ((0, _type.isDefined)(pdfColumnWidths) && (0, _type.isDefined)(autoTableOptions.columnStyles)) {\r\n                        _this._setColumnWidths(autoTableOptions.columnStyles, pdfColumnWidths)\r\n                    }\r\n                }\r\n                for (var rowIndex = 0; rowIndex < dataRowsCount; rowIndex++) {\r\n                    var row = [];\r\n                    for (var cellIndex = 0; cellIndex < columns.length; cellIndex++) {\r\n                        var _dataProvider$getCell = dataProvider.getCellData(rowIndex, cellIndex, true),\r\n                            value = _dataProvider$getCell.value,\r\n                            gridCell = _dataProvider$getCell.cellSourceData;\r\n                        var cellStyle = styles[dataProvider.getStyleId(rowIndex, cellIndex)];\r\n                        var pdfCell = {\r\n                            content: _this._getFormattedValue(value, cellStyle.format),\r\n                            styles: _this._getPDFCellStyles(gridCell.rowType, columns[cellIndex].alignment, cellStyle, wrapText)\r\n                        };\r\n                        if (\"header\" === gridCell.rowType) {\r\n                            var mergedRange = _this._tryGetMergeRange(rowIndex, cellIndex, mergedCells, dataProvider);\r\n                            if (mergedRange && mergedRange.rowSpan > 0) {\r\n                                pdfCell.rowSpan = mergedRange.rowSpan + 1\r\n                            }\r\n                            if (mergedRange && mergedRange.colSpan > 0) {\r\n                                pdfCell.colSpan = mergedRange.colSpan + 1\r\n                            }\r\n                            var isMergedCell = mergedCells[rowIndex] && mergedCells[rowIndex][cellIndex];\r\n                            if (!isMergedCell || pdfCell.rowSpan > 1 || pdfCell.colSpan > 1) {\r\n                                if ((0, _type.isFunction)(customizeCell)) {\r\n                                    customizeCell({\r\n                                        gridCell: gridCell,\r\n                                        pdfCell: pdfCell\r\n                                    })\r\n                                }\r\n                                row.push(pdfCell)\r\n                            }\r\n                        } else {\r\n                            if (\"group\" === gridCell.rowType && !(0, _type.isDefined)(pdfCell.content) && 1 === row.length) {\r\n                                var _row$0$colSpan;\r\n                                row[0].colSpan = null !== (_row$0$colSpan = row[0].colSpan) && void 0 !== _row$0$colSpan ? _row$0$colSpan : 1;\r\n                                row[0].colSpan++\r\n                            } else {\r\n                                var _pdfCell$content;\r\n                                pdfCell.content = null !== (_pdfCell$content = pdfCell.content) && void 0 !== _pdfCell$content ? _pdfCell$content : \"\";\r\n                                if ((0, _type.isFunction)(customizeCell)) {\r\n                                    customizeCell({\r\n                                        gridCell: gridCell,\r\n                                        pdfCell: pdfCell\r\n                                    })\r\n                                }\r\n                                row.push(pdfCell)\r\n                            }\r\n                        }\r\n                    }\r\n                    if (rowIndex < headerRowCount) {\r\n                        autoTableOptions.head.push(row)\r\n                    } else {\r\n                        autoTableOptions.body.push(row)\r\n                    }\r\n                }\r\n                jsPDFDocument.autoTable(autoTableOptions);\r\n                resolve()\r\n            })\r\n        })\r\n    },\r\n    _getFormattedValue: function(value, format) {\r\n        if ((0, _type.isDefined)(format)) {\r\n            if ((0, _type.isDate)(value)) {\r\n                return _date.default.format(value, format)\r\n            }\r\n            if ((0, _type.isNumeric)(value)) {\r\n                return _number.default.format(value, format)\r\n            }\r\n        }\r\n        return value\r\n    },\r\n    _getPDFCellStyles: function(rowType, columnAlignment, cellStyle, wrapText) {\r\n        var cellAlignment = cellStyle.alignment,\r\n            bold = cellStyle.bold;\r\n        var align = \"header\" === rowType ? columnAlignment : cellAlignment;\r\n        var pdfCellStyle = {};\r\n        if (align) {\r\n            pdfCellStyle.halign = align\r\n        }\r\n        if (bold && \"header\" !== rowType) {\r\n            pdfCellStyle.fontStyle = \"bold\"\r\n        }\r\n        if (wrapText) {\r\n            pdfCellStyle.cellWidth = \"wrap\"\r\n        }\r\n        return pdfCellStyle\r\n    },\r\n    _tryGetMergeRange: function(rowIndex, cellIndex, mergedCells, dataProvider) {\r\n        if (!mergedCells[rowIndex] || !mergedCells[rowIndex][cellIndex]) {\r\n            var _dataProvider$getCell2 = dataProvider.getCellMerging(rowIndex, cellIndex),\r\n                colspan = _dataProvider$getCell2.colspan,\r\n                rowspan = _dataProvider$getCell2.rowspan;\r\n            if (colspan || rowspan) {\r\n                for (var i = rowIndex; i <= rowIndex + rowspan || 0; i++) {\r\n                    for (var j = cellIndex; j <= cellIndex + colspan || 0; j++) {\r\n                        if (!mergedCells[i]) {\r\n                            mergedCells[i] = []\r\n                        }\r\n                        mergedCells[i][j] = true\r\n                    }\r\n                }\r\n                return {\r\n                    rowSpan: rowspan,\r\n                    colSpan: colspan\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _tryGetPdfColumnWidths: function(autoTableWidth, columnWidths) {\r\n        if ((0, _type.isNumeric)(autoTableWidth) && (0, _type.isDefined)(columnWidths)) {\r\n            var tableWidth = columnWidths.reduce(function(a, b) {\r\n                return a + b\r\n            }, 0);\r\n            return columnWidths.map(function(columnWidth) {\r\n                return autoTableWidth * columnWidth / tableWidth\r\n            })\r\n        }\r\n    },\r\n    _setColumnWidths: function(autoTableColumnStyles, pdfColumnWidths) {\r\n        pdfColumnWidths.forEach(function(width, index) {\r\n            autoTableColumnStyles[index] = autoTableColumnStyles[index] || {};\r\n            autoTableColumnStyles[index].cellWidth = width\r\n        })\r\n    }\r\n};\r\nexports.Export = Export;\r\n","/**\r\n * DevExtreme (core/events_strategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.EventsStrategy = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"./utils/callbacks\"));\r\nvar _iterator = require(\"./utils/iterator\");\r\nvar _type = require(\"./utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar EventsStrategy = function() {\r\n    function EventsStrategy(owner) {\r\n        _classCallCheck(this, EventsStrategy);\r\n        this._events = {};\r\n        this._owner = owner\r\n    }\r\n    _createClass(EventsStrategy, [{\r\n        key: \"hasEvent\",\r\n        value: function(eventName) {\r\n            var callbacks = this._events[eventName];\r\n            return callbacks ? callbacks.has() : false\r\n        }\r\n    }, {\r\n        key: \"fireEvent\",\r\n        value: function(eventName, eventArgs) {\r\n            var callbacks = this._events[eventName];\r\n            if (callbacks) {\r\n                callbacks.fireWith(this._owner, eventArgs)\r\n            }\r\n            return this._owner\r\n        }\r\n    }, {\r\n        key: \"on\",\r\n        value: function(eventName, eventHandler) {\r\n            var _this = this;\r\n            if ((0, _type.isPlainObject)(eventName)) {\r\n                (0, _iterator.each)(eventName, function(e, h) {\r\n                    _this.on(e, h)\r\n                })\r\n            } else {\r\n                var callbacks = this._events[eventName];\r\n                if (!callbacks) {\r\n                    callbacks = (0, _callbacks.default)();\r\n                    this._events[eventName] = callbacks\r\n                }\r\n                var addFn = callbacks.originalAdd || callbacks.add;\r\n                addFn.call(callbacks, eventHandler)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"off\",\r\n        value: function(eventName, eventHandler) {\r\n            var callbacks = this._events[eventName];\r\n            if (callbacks) {\r\n                if ((0, _type.isFunction)(eventHandler)) {\r\n                    callbacks.remove(eventHandler)\r\n                } else {\r\n                    callbacks.empty()\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"dispose\",\r\n        value: function() {\r\n            (0, _iterator.each)(this._events, function(eventName, event) {\r\n                event.empty()\r\n            })\r\n        }\r\n    }], [{\r\n        key: \"create\",\r\n        value: function(owner, strategy) {\r\n            if (strategy) {\r\n                return (0, _type.isFunction)(strategy) ? strategy(owner) : strategy\r\n            } else {\r\n                return new EventsStrategy(owner)\r\n            }\r\n        }\r\n    }]);\r\n    return EventsStrategy\r\n}();\r\nexports.EventsStrategy = EventsStrategy;\r\n","/**\r\n * DevExtreme (viz/gauges/theme_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _base_theme_manager = require(\"../core/base_theme_manager\");\r\nvar _extend = _extend2.extend;\r\nvar ThemeManager = _base_theme_manager.BaseThemeManager.inherit({\r\n    ctor: function(options) {\r\n        this.callBase.apply(this, arguments);\r\n        this._subTheme = options.subTheme\r\n    },\r\n    _initializeTheme: function() {\r\n        var that = this;\r\n        var subTheme;\r\n        if (that._subTheme) {\r\n            subTheme = _extend(true, {}, that._theme[that._subTheme], that._theme);\r\n            _extend(true, that._theme, subTheme)\r\n        }\r\n        that.callBase.apply(that, arguments)\r\n    }\r\n});\r\nvar _default = {\r\n    ThemeManager: ThemeManager\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/slider_marker.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"./common\");\r\nvar POINTER_SIZE = _common.consts.pointerSize;\r\nvar SLIDER_MARKER_UPDATE_DELAY = 75;\r\n\r\nfunction SliderMarker(renderer, root, isLeftPointer) {\r\n    var that = this;\r\n    that._isLeftPointer = isLeftPointer;\r\n    that._isOverlapped = false;\r\n    that._group = renderer.g().attr({\r\n        \"class\": \"slider-marker\"\r\n    }).append(root);\r\n    that._area = renderer.path(null, \"area\").append(that._group);\r\n    that._label = renderer.text().attr({\r\n        align: \"left\"\r\n    }).append(that._group);\r\n    that._tracker = renderer.rect().attr({\r\n        \"class\": \"slider-marker-tracker\",\r\n        fill: \"#000000\",\r\n        opacity: 1e-4\r\n    }).css({\r\n        cursor: \"pointer\"\r\n    }).append(that._group);\r\n    that._border = renderer.rect(0, 0, 1, 0)\r\n}\r\nSliderMarker.prototype = {\r\n    constructor: SliderMarker,\r\n    _getRectSize: function(textSize) {\r\n        return {\r\n            width: Math.round(2 * this._paddingLeftRight + textSize.width),\r\n            height: Math.round(2 * this._paddingTopBottom + textSize.height)\r\n        }\r\n    },\r\n    _getTextSize: function() {\r\n        var textSize = this._label.getBBox();\r\n        if (!this._textHeight && isFinite(textSize.height)) {\r\n            this._textHeight = textSize.height\r\n        }\r\n        return {\r\n            width: textSize.width,\r\n            height: this._textHeight,\r\n            y: textSize.y\r\n        }\r\n    },\r\n    _getAreaPointsInfo: function(textSize) {\r\n        var that = this;\r\n        var rectSize = that._getRectSize(textSize);\r\n        var rectWidth = rectSize.width;\r\n        var rectHeight = rectSize.height;\r\n        var rectLeftBorder = -rectWidth;\r\n        var rectRightBorder = 0;\r\n        var pointerRightPoint = POINTER_SIZE;\r\n        var pointerCenterPoint = 0;\r\n        var pointerLeftPoint = -POINTER_SIZE;\r\n        var position = that._position;\r\n        var isLeft = that._isLeftPointer;\r\n        var correctCloudBorders = function() {\r\n            rectLeftBorder++;\r\n            rectRightBorder++;\r\n            pointerRightPoint++;\r\n            pointerCenterPoint++;\r\n            pointerLeftPoint++\r\n        };\r\n        var checkPointerBorders = function() {\r\n            if (pointerRightPoint > rectRightBorder) {\r\n                pointerRightPoint = rectRightBorder\r\n            } else {\r\n                if (pointerLeftPoint < rectLeftBorder) {\r\n                    pointerLeftPoint = rectLeftBorder\r\n                }\r\n            }\r\n            isLeft && correctCloudBorders()\r\n        };\r\n        var borderPosition = position;\r\n        if (isLeft) {\r\n            if (position > that._range[1] - rectWidth) {\r\n                rectRightBorder = -position + that._range[1];\r\n                rectLeftBorder = rectRightBorder - rectWidth;\r\n                checkPointerBorders();\r\n                borderPosition += rectLeftBorder\r\n            } else {\r\n                rectLeftBorder = pointerLeftPoint = 0;\r\n                rectRightBorder = rectWidth\r\n            }\r\n        } else {\r\n            if (position - that._range[0] < rectWidth) {\r\n                rectLeftBorder = -(position - that._range[0]);\r\n                rectRightBorder = rectLeftBorder + rectWidth;\r\n                checkPointerBorders();\r\n                borderPosition += rectRightBorder\r\n            } else {\r\n                pointerRightPoint = 0;\r\n                correctCloudBorders()\r\n            }\r\n        }\r\n        that._borderPosition = borderPosition;\r\n        return {\r\n            offset: rectLeftBorder,\r\n            isCut: (!isLeft || pointerCenterPoint !== pointerLeftPoint) && (isLeft || pointerCenterPoint !== pointerRightPoint),\r\n            points: [rectLeftBorder, 0, rectRightBorder, 0, rectRightBorder, rectHeight, pointerRightPoint, rectHeight, pointerCenterPoint, rectHeight + POINTER_SIZE, pointerLeftPoint, rectHeight, rectLeftBorder, rectHeight]\r\n        }\r\n    },\r\n    _update: function() {\r\n        var that = this;\r\n        var textSize;\r\n        clearTimeout(that._timeout);\r\n        that._label.attr({\r\n            text: that._text || \"\"\r\n        });\r\n        var currentTextSize = that._getTextSize();\r\n        var rectSize = that._getRectSize(currentTextSize);\r\n        textSize = that._textSize || currentTextSize;\r\n        textSize = that._textSize = currentTextSize.width > textSize.width || currentTextSize.height > textSize.height ? currentTextSize : textSize;\r\n        that._timeout = setTimeout(function() {\r\n            updateSliderMarker(currentTextSize, rectSize);\r\n            that._textSize = currentTextSize\r\n        }, SLIDER_MARKER_UPDATE_DELAY);\r\n\r\n        function updateSliderMarker(size, rectSize) {\r\n            rectSize = rectSize || that._getRectSize(size);\r\n            that._group.attr({\r\n                translateY: -(rectSize.height + POINTER_SIZE)\r\n            });\r\n            var pointsData = that._getAreaPointsInfo(size);\r\n            var points = pointsData.points;\r\n            var offset = pointsData.offset;\r\n            that._area.attr({\r\n                points: points\r\n            });\r\n            that._border.attr({\r\n                x: that._isLeftPointer ? points[0] - 1 : points[2],\r\n                height: pointsData.isCut ? rectSize.height : rectSize.height + POINTER_SIZE\r\n            });\r\n            that._tracker.attr({\r\n                translateX: offset,\r\n                width: rectSize.width,\r\n                height: rectSize.height + POINTER_SIZE\r\n            });\r\n            that._label.attr({\r\n                translateX: that._paddingLeftRight + offset,\r\n                translateY: rectSize.height / 2 - (size.y + size.height / 2)\r\n            })\r\n        }\r\n        updateSliderMarker(textSize)\r\n    },\r\n    setText: function(value) {\r\n        this._text = value\r\n    },\r\n    setPosition: function(position) {\r\n        this._position = position;\r\n        this._update()\r\n    },\r\n    applyOptions: function(options, screenRange) {\r\n        var that = this;\r\n        that._range = screenRange;\r\n        that._paddingLeftRight = options.paddingLeftRight;\r\n        that._paddingTopBottom = options.paddingTopBottom;\r\n        that._textHeight = null;\r\n        that._colors = [options.invalidRangeColor, options.color];\r\n        that._area.attr({\r\n            fill: options.color\r\n        });\r\n        that._border.attr({\r\n            fill: options.borderColor\r\n        });\r\n        that._label.css((0, _utils.patchFontOptions)(options.font));\r\n        that._update()\r\n    },\r\n    getTracker: function() {\r\n        return this._tracker\r\n    },\r\n    setValid: function(isValid) {\r\n        this._area.attr({\r\n            fill: this._colors[Number(isValid)]\r\n        })\r\n    },\r\n    setColor: function(color) {\r\n        this._area.attr({\r\n            fill: color\r\n        })\r\n    },\r\n    dispose: function() {\r\n        clearTimeout(this._timeout)\r\n    },\r\n    setOverlapped: function(isOverlapped) {\r\n        var that = this;\r\n        if (that._isOverlapped !== isOverlapped) {\r\n            if (isOverlapped) {\r\n                that._border.append(that._group)\r\n            } else {\r\n                that._isOverlapped && that._border.remove()\r\n            }\r\n            that._isOverlapped = isOverlapped\r\n        }\r\n    },\r\n    getBorderPosition: function() {\r\n        return this._borderPosition\r\n    }\r\n};\r\nvar _default = SliderMarker;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _vector_map = _interopRequireDefault(require(\"./vector_map/vector_map\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _vector_map.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.adaptivity.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.adaptivity\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"adaptivity\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.header.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.publisher_mixin\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.navigator\"));\r\nvar _drop_down_menu = _interopRequireDefault(require(\"../drop_down_menu\"));\r\nvar _tabs = _interopRequireDefault(require(\"../tabs\"));\r\nvar _constants = require(\"../tabs/constants\");\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COMPONENT_CLASS = \"dx-scheduler-header\";\r\nvar VIEW_SWITCHER_CLASS = \"dx-scheduler-view-switcher\";\r\nvar VIEW_SWITCHER_LABEL_CLASS = \"dx-scheduler-view-switcher-label\";\r\nvar STEP_MAP = {\r\n    day: \"day\",\r\n    week: \"week\",\r\n    workWeek: \"workWeek\",\r\n    month: \"month\",\r\n    timelineDay: \"day\",\r\n    timelineWeek: \"week\",\r\n    timelineWorkWeek: \"workWeek\",\r\n    timelineMonth: \"month\",\r\n    agenda: \"agenda\"\r\n};\r\nvar VIEWS = [\"day\", \"week\", \"workWeek\", \"month\", \"timelineDay\", \"timelineWeek\", \"timelineWorkWeek\", \"timelineMonth\", \"agenda\"];\r\nvar SchedulerHeader = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            views: [],\r\n            isAdaptive: false,\r\n            intervalCount: 1,\r\n            currentView: \"day\",\r\n            firstDayOfWeek: void 0,\r\n            currentDate: new Date,\r\n            min: void 0,\r\n            max: void 0,\r\n            useDropDownViewSwitcher: false,\r\n            _dropDownButtonIcon: \"overlay\"\r\n        })\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            currentView: true\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        var value = args.value;\r\n        switch (args.name) {\r\n            case \"views\":\r\n                this._validateViews();\r\n                this._viewSwitcher.option({\r\n                    items: value,\r\n                    selectedItem: this.option(\"currentView\")\r\n                });\r\n                break;\r\n            case \"customizeDateNavigatorText\":\r\n                this._navigator.option(args.name, value);\r\n                break;\r\n            case \"currentView\":\r\n                this._viewSwitcher.option(\"selectedItem\", value);\r\n                this._navigator.option(\"step\", STEP_MAP[this._getCurrentViewType()]);\r\n                this._changeViewSwitcherLabelText();\r\n                break;\r\n            case \"currentDate\":\r\n                this._navigator.option(\"date\", value);\r\n                break;\r\n            case \"displayedDate\":\r\n                this._navigator.option(\"displayedDate\", value);\r\n                break;\r\n            case \"min\":\r\n            case \"max\":\r\n            case \"firstDayOfWeek\":\r\n            case \"intervalCount\":\r\n                this._navigator.option(args.name, value);\r\n                break;\r\n            case \"tabIndex\":\r\n            case \"focusStateEnabled\":\r\n                this._viewSwitcher.option(args.name, value);\r\n                this._navigator.option(args.name, value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"useDropDownViewSwitcher\":\r\n                this._refreshViewSwitcher();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(COMPONENT_CLASS)\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._renderNavigator();\r\n        this._renderViewSwitcher()\r\n    },\r\n    _renderNavigator: function() {\r\n        this._navigator = this._createComponent(\"<div>\", _uiScheduler2.default, {\r\n            min: this.option(\"min\"),\r\n            max: this.option(\"max\"),\r\n            intervalCount: this.option(\"intervalCount\"),\r\n            date: this.option(\"currentDate\"),\r\n            step: STEP_MAP[this._getCurrentViewType()],\r\n            firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n            tabIndex: this.option(\"tabIndex\"),\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            observer: this.option(\"observer\"),\r\n            customizeDateNavigatorText: this.option(\"customizeDateNavigatorText\")\r\n        });\r\n        this._navigator.$element().appendTo(this.$element())\r\n    },\r\n    _renderViewSwitcher: function() {\r\n        this._validateViews();\r\n        var $viewSwitcher = (0, _renderer.default)(\"<div>\").addClass(VIEW_SWITCHER_CLASS).appendTo(this.$element());\r\n        this.option(\"useDropDownViewSwitcher\") ? this._renderViewSwitcherDropDownMenu($viewSwitcher) : this._renderViewSwitcherTabs($viewSwitcher)\r\n    },\r\n    _validateViews: function() {\r\n        var views = this.option(\"views\");\r\n        (0, _iterator.each)(views, function(_, view) {\r\n            var isViewIsObject = (0, _type.isObject)(view);\r\n            var viewType = isViewIsObject && view.type ? view.type : view;\r\n            if ((0, _array.inArray)(viewType, VIEWS) === -1) {\r\n                _errors.default.log(\"W0008\", viewType)\r\n            }\r\n        })\r\n    },\r\n    _getCurrentViewType: function() {\r\n        var currentView = this.option(\"currentView\");\r\n        return currentView.type || currentView\r\n    },\r\n    _renderViewSwitcherTabs: function($element) {\r\n        var that = this;\r\n        $element.addClass(_constants.TABS_EXPANDED_CLASS);\r\n        this._viewSwitcher = this._createComponent($element, _tabs.default, {\r\n            selectionRequired: true,\r\n            scrollingEnabled: true,\r\n            onSelectionChanged: this._updateCurrentView.bind(this),\r\n            items: this.option(\"views\"),\r\n            itemTemplate: function(item) {\r\n                return (0, _renderer.default)(\"<span>\").addClass(\"dx-tab-text\").text(that._getItemText(item))\r\n            },\r\n            selectedItem: this.option(\"currentView\"),\r\n            tabIndex: this.option(\"tabIndex\"),\r\n            focusStateEnabled: this.option(\"focusStateEnabled\")\r\n        })\r\n    },\r\n    _getItemText: function(item) {\r\n        return item.name || _message.default.format(\"dxScheduler-switcher\" + (0, _inflector.camelize)(item.type || item, true))\r\n    },\r\n    _refreshViewSwitcher: function() {\r\n        this._viewSwitcher._dispose();\r\n        this._viewSwitcher.$element().remove();\r\n        delete this._viewSwitcher;\r\n        this._removeViewSwitcherLabel();\r\n        this._renderViewSwitcher()\r\n    },\r\n    _removeViewSwitcherLabel: function() {\r\n        if ((0, _type.isDefined)(this._$viewSwitcherLabel)) {\r\n            this._$viewSwitcherLabel.detach();\r\n            this._$viewSwitcherLabel.remove();\r\n            delete this._$viewSwitcherLabel\r\n        }\r\n    },\r\n    _renderViewSwitcherDropDownMenu: function($element) {\r\n        var that = this;\r\n        this._$viewSwitcherLabel = (0, _renderer.default)(\"<div>\").addClass(VIEW_SWITCHER_LABEL_CLASS).appendTo(this.$element());\r\n        this._changeViewSwitcherLabelText();\r\n        this._viewSwitcher = this._createComponent($element, _drop_down_menu.default, {\r\n            onItemClick: this._updateCurrentView.bind(this),\r\n            buttonIcon: this.option(\"_dropDownButtonIcon\"),\r\n            items: this.option(\"views\"),\r\n            selectionMode: this.option(\"isAdaptive\") ? \"single\" : \"none\",\r\n            selectedItemKeys: [this.option(\"currentView\")],\r\n            itemTemplate: function(item) {\r\n                return (0, _renderer.default)(\"<span>\").addClass(\"dx-dropdownmenu-item-text\").text(that._getItemText(item))\r\n            }\r\n        })\r\n    },\r\n    _changeViewSwitcherLabelText: function() {\r\n        if (!(0, _type.isDefined)(this._$viewSwitcherLabel)) {\r\n            return\r\n        }\r\n        var currentView = this.option(\"currentView\");\r\n        var currentViewText = this._getItemText(currentView);\r\n        this._$viewSwitcherLabel.text(currentViewText)\r\n    },\r\n    _getCurrentViewName: function(currentView) {\r\n        return (0, _type.isObject)(currentView) ? currentView.name || currentView.type : currentView\r\n    },\r\n    _updateCurrentView: function(e) {\r\n        var selectedItem = e.itemData || e.component.option(\"selectedItem\");\r\n        var viewName = this._getCurrentViewName(selectedItem);\r\n        this.notifyObserver(\"currentViewUpdated\", viewName)\r\n    },\r\n    _renderFocusTarget: _common.noop\r\n}).include(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerHeader\", SchedulerHeader);\r\nvar _default = SchedulerHeader;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/slider/ui.slider.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _click = require(\"../../events/click\");\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _swipeable = _interopRequireDefault(require(\"../../events/gesture/swipeable\"));\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _themes = require(\"../themes\");\r\nvar _track_bar = _interopRequireDefault(require(\"../track_bar\"));\r\nvar _utils = require(\"../widget/utils.ink_ripple\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.slider_handle\"));\r\nvar _math = require(\"../../core/utils/math\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SLIDER_CLASS = \"dx-slider\";\r\nvar SLIDER_WRAPPER_CLASS = \"dx-slider-wrapper\";\r\nvar SLIDER_HANDLE_SELECTOR = \".dx-slider-handle\";\r\nvar SLIDER_BAR_CLASS = \"dx-slider-bar\";\r\nvar SLIDER_RANGE_CLASS = \"dx-slider-range\";\r\nvar SLIDER_RANGE_VISIBLE_CLASS = \"dx-slider-range-visible\";\r\nvar SLIDER_LABEL_CLASS = \"dx-slider-label\";\r\nvar SLIDER_LABEL_POSITION_CLASS_PREFIX = \"dx-slider-label-position-\";\r\nvar SLIDER_TOOLTIP_POSITION_CLASS_PREFIX = \"dx-slider-tooltip-position-\";\r\nvar INVALID_MESSAGE_VISIBLE_CLASS = \"dx-invalid-message-visible\";\r\nvar SLIDER_VALIDATION_NAMESPACE = \"Validation\";\r\nvar Slider = _track_bar.default.inherit({\r\n    _activeStateUnit: SLIDER_HANDLE_SELECTOR,\r\n    _supportedKeys: function() {\r\n        var _this = this;\r\n        var isRTL = this.option(\"rtlEnabled\");\r\n        var roundedValue = function(offset, isLeftDirection) {\r\n            offset = _this._valueStep(offset);\r\n            var step = _this.option(\"step\");\r\n            var value = _this.option(\"value\");\r\n            var currentPosition = value - _this.option(\"min\");\r\n            var remainder = (0, _math.getRemainderByDivision)(currentPosition, step, _this._getValueExponentLength());\r\n            var result = isLeftDirection ? value - offset + (remainder ? step - remainder : 0) : value + offset - remainder;\r\n            var min = _this.option(\"min\");\r\n            var max = _this.option(\"max\");\r\n            if (result < min) {\r\n                result = min\r\n            } else {\r\n                if (result > max) {\r\n                    result = max\r\n                }\r\n            }\r\n            return _this._roundToExponentLength(result)\r\n        };\r\n        var moveHandleRight = function(offset) {\r\n            _this.option(\"value\", roundedValue(offset, isRTL))\r\n        };\r\n        var moveHandleLeft = function(offset) {\r\n            _this.option(\"value\", roundedValue(offset, !isRTL))\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            leftArrow: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                moveHandleLeft(this.option(\"step\"))\r\n            },\r\n            rightArrow: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                moveHandleRight(this.option(\"step\"))\r\n            },\r\n            pageUp: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                moveHandleRight(this.option(\"step\") * this.option(\"keyStep\"))\r\n            },\r\n            pageDown: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                moveHandleLeft(this.option(\"step\") * this.option(\"keyStep\"))\r\n            },\r\n            home: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                var min = this.option(\"min\");\r\n                this.option(\"value\", min)\r\n            },\r\n            end: function(e) {\r\n                this._processKeyboardEvent(e);\r\n                var max = this.option(\"max\");\r\n                this.option(\"value\", max)\r\n            }\r\n        })\r\n    },\r\n    _processKeyboardEvent: function(e) {\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        this._saveValueChangeEvent(e)\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: 50,\r\n            hoverStateEnabled: true,\r\n            activeStateEnabled: true,\r\n            step: 1,\r\n            showRange: true,\r\n            tooltip: {\r\n                enabled: false,\r\n                format: function(value) {\r\n                    return value\r\n                },\r\n                position: \"top\",\r\n                showMode: \"onHover\"\r\n            },\r\n            label: {\r\n                visible: false,\r\n                position: \"bottom\",\r\n                format: function(value) {\r\n                    return value\r\n                }\r\n            },\r\n            keyStep: 1,\r\n            useInkRipple: false,\r\n            validationMessageOffset: (0, _themes.isMaterial)() ? {\r\n                h: 18,\r\n                v: 0\r\n            } : {\r\n                h: 7,\r\n                v: 4\r\n            },\r\n            focusStateEnabled: true\r\n        })\r\n    },\r\n    _toggleValidationMessage: function(visible) {\r\n        if (!this.option(\"isValid\")) {\r\n            this.$element().toggleClass(INVALID_MESSAGE_VISIBLE_CLASS, visible)\r\n        }\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                var themeName = (0, _themes.current)();\r\n                return (0, _themes.isMaterial)(themeName)\r\n            },\r\n            options: {\r\n                useInkRipple: true\r\n            }\r\n        }])\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(SLIDER_CLASS);\r\n        this._renderSubmitElement();\r\n        this.option(\"useInkRipple\") && this._renderInkRipple();\r\n        this.callBase();\r\n        this._renderLabels();\r\n        this._renderStartHandler();\r\n        this._renderAriaMinAndMax()\r\n    },\r\n    _attachFocusEvents: function() {\r\n        this.callBase();\r\n        var namespace = this.NAME + SLIDER_VALIDATION_NAMESPACE;\r\n        var focusInEvent = (0, _index.addNamespace)(\"focusin\", namespace);\r\n        var focusOutEvent = (0, _index.addNamespace)(\"focusout\", namespace);\r\n        var $focusTarget = this._focusTarget();\r\n        _events_engine.default.on($focusTarget, focusInEvent, this._toggleValidationMessage.bind(this, true));\r\n        _events_engine.default.on($focusTarget, focusOutEvent, this._toggleValidationMessage.bind(this, false))\r\n    },\r\n    _detachFocusEvents: function() {\r\n        this.callBase();\r\n        var $focusTarget = this._focusTarget();\r\n        this._toggleValidationMessage(false);\r\n        _events_engine.default.off($focusTarget, this.NAME + SLIDER_VALIDATION_NAMESPACE)\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._repaintHandle()\r\n    },\r\n    _renderSubmitElement: function() {\r\n        this._$submitElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n    },\r\n    _getSubmitElement: function() {\r\n        return this._$submitElement\r\n    },\r\n    _renderInkRipple: function() {\r\n        this._inkRipple = (0, _utils.render)({\r\n            waveSizeCoefficient: .7,\r\n            isCentered: true,\r\n            wavesNumber: 2,\r\n            useHoldAnimation: false\r\n        })\r\n    },\r\n    _renderInkWave: function(element, dxEvent, doRender, waveIndex) {\r\n        if (!this._inkRipple) {\r\n            return\r\n        }\r\n        var config = {\r\n            element: element,\r\n            event: dxEvent,\r\n            wave: waveIndex\r\n        };\r\n        if (doRender) {\r\n            this._inkRipple.showWave(config)\r\n        } else {\r\n            this._inkRipple.hideWave(config)\r\n        }\r\n    },\r\n    _visibilityChanged: function() {\r\n        this.repaint()\r\n    },\r\n    _renderWrapper: function() {\r\n        this.callBase();\r\n        this._$wrapper.addClass(SLIDER_WRAPPER_CLASS);\r\n        this._createComponent(this._$wrapper, _swipeable.default, {\r\n            elastic: false,\r\n            immediate: true,\r\n            onStart: this._swipeStartHandler.bind(this),\r\n            onUpdated: this._swipeUpdateHandler.bind(this),\r\n            onEnd: this._swipeEndHandler.bind(this),\r\n            itemSizeFunc: this._itemWidthFunc.bind(this)\r\n        })\r\n    },\r\n    _renderContainer: function() {\r\n        this.callBase();\r\n        this._$bar.addClass(SLIDER_BAR_CLASS)\r\n    },\r\n    _renderRange: function() {\r\n        this.callBase();\r\n        this._$range.addClass(SLIDER_RANGE_CLASS);\r\n        this._renderHandle();\r\n        this._renderRangeVisibility()\r\n    },\r\n    _renderRangeVisibility: function() {\r\n        this._$range.toggleClass(SLIDER_RANGE_VISIBLE_CLASS, Boolean(this.option(\"showRange\")))\r\n    },\r\n    _renderHandle: function() {\r\n        this._$handle = this._renderHandleImpl(this.option(\"value\"), this._$handle)\r\n    },\r\n    _renderHandleImpl: function(value, $element) {\r\n        var $handle = $element || (0, _renderer.default)(\"<div>\").appendTo(this._$range);\r\n        var format = this.option(\"tooltip.format\");\r\n        var tooltipEnabled = this.option(\"tooltip.enabled\");\r\n        var tooltipPosition = this.option(\"tooltip.position\");\r\n        this.$element().toggleClass(SLIDER_TOOLTIP_POSITION_CLASS_PREFIX + \"bottom\", tooltipEnabled && \"bottom\" === tooltipPosition).toggleClass(SLIDER_TOOLTIP_POSITION_CLASS_PREFIX + \"top\", tooltipEnabled && \"top\" === tooltipPosition);\r\n        this._createComponent($handle, _ui.default, {\r\n            value: value,\r\n            tooltipEnabled: tooltipEnabled,\r\n            tooltipPosition: tooltipPosition,\r\n            tooltipFormat: format,\r\n            tooltipShowMode: this.option(\"tooltip.showMode\"),\r\n            tooltipFitIn: this.$element()\r\n        });\r\n        return $handle\r\n    },\r\n    _renderAriaMinAndMax: function() {\r\n        this.setAria({\r\n            valuemin: this.option(\"min\"),\r\n            valuemax: this.option(\"max\")\r\n        }, this._$handle)\r\n    },\r\n    _hoverStartHandler: function(e) {\r\n        _ui.default.getInstance((0, _renderer.default)(e.currentTarget)).updateTooltip()\r\n    },\r\n    _toggleActiveState: function($element, value) {\r\n        this.callBase($element, value);\r\n        if (value) {\r\n            _ui.default.getInstance($element).updateTooltip()\r\n        }\r\n        this._renderInkWave($element, null, !!value, 1)\r\n    },\r\n    _toggleFocusClass: function(isFocused, $element) {\r\n        this.callBase(isFocused, $element);\r\n        if (this._disposed) {\r\n            return\r\n        }\r\n        var $focusTarget = (0, _renderer.default)($element || this._focusTarget());\r\n        this._renderInkWave($focusTarget, null, isFocused, 0)\r\n    },\r\n    _renderLabels: function() {\r\n        this.$element().removeClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + \"bottom\").removeClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + \"top\");\r\n        if (this.option(\"label.visible\")) {\r\n            var min = this.option(\"min\");\r\n            var max = this.option(\"max\");\r\n            var position = this.option(\"label.position\");\r\n            var labelFormat = this.option(\"label.format\");\r\n            if (!this._$minLabel) {\r\n                this._$minLabel = (0, _renderer.default)(\"<div>\").addClass(SLIDER_LABEL_CLASS).appendTo(this._$wrapper)\r\n            }\r\n            this._$minLabel.html(_number.default.format(min, labelFormat));\r\n            if (!this._$maxLabel) {\r\n                this._$maxLabel = (0, _renderer.default)(\"<div>\").addClass(SLIDER_LABEL_CLASS).appendTo(this._$wrapper)\r\n            }\r\n            this._$maxLabel.html(_number.default.format(max, labelFormat));\r\n            this.$element().addClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + position)\r\n        } else {\r\n            if (this._$minLabel) {\r\n                this._$minLabel.remove();\r\n                delete this._$minLabel\r\n            }\r\n            if (this._$maxLabel) {\r\n                this._$maxLabel.remove();\r\n                delete this._$maxLabel\r\n            }\r\n        }\r\n    },\r\n    _renderStartHandler: function() {\r\n        var _this2 = this;\r\n        var pointerDownEventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n        var clickEventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        var startAction = this._createAction(this._startHandler.bind(this));\r\n        var $element = this.$element();\r\n        _events_engine.default.off($element, pointerDownEventName);\r\n        _events_engine.default.on($element, pointerDownEventName, function(e) {\r\n            if ((0, _index.isMouseEvent)(e)) {\r\n                startAction({\r\n                    event: e\r\n                })\r\n            }\r\n        });\r\n        _events_engine.default.off($element, clickEventName);\r\n        _events_engine.default.on($element, clickEventName, function(e) {\r\n            var $handle = _this2._activeHandle();\r\n            if ($handle) {\r\n                _events_engine.default.trigger($handle, \"focusin\");\r\n                _events_engine.default.trigger($handle, \"focus\")\r\n            }\r\n            startAction({\r\n                event: e\r\n            })\r\n        })\r\n    },\r\n    _itemWidthFunc: function() {\r\n        return this._itemWidthRatio\r\n    },\r\n    _swipeStartHandler: function(e) {\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        if ((0, _index.isTouchEvent)(e.event)) {\r\n            this._createAction(this._startHandler.bind(this))({\r\n                event: e.event\r\n            })\r\n        }\r\n        this._feedbackDeferred = new _deferred.Deferred;\r\n        (0, _emitter.lock)(this._feedbackDeferred);\r\n        this._toggleActiveState(this._activeHandle(), this.option(\"activeStateEnabled\"));\r\n        this._startOffset = this._currentRatio;\r\n        var startOffset = this._startOffset * this._swipePixelRatio();\r\n        var endOffset = (1 - this._startOffset) * this._swipePixelRatio();\r\n        e.event.maxLeftOffset = rtlEnabled ? endOffset : startOffset;\r\n        e.event.maxRightOffset = rtlEnabled ? startOffset : endOffset;\r\n        this._itemWidthRatio = this.$element().width() / this._swipePixelRatio();\r\n        this._needPreventAnimation = true\r\n    },\r\n    _swipeEndHandler: function(e) {\r\n        this._feedbackDeferred.resolve();\r\n        this._toggleActiveState(this._activeHandle(), false);\r\n        var offsetDirection = this.option(\"rtlEnabled\") ? -1 : 1;\r\n        delete this._needPreventAnimation;\r\n        this._saveValueChangeEvent(e);\r\n        this._changeValueOnSwipe(this._startOffset + offsetDirection * e.event.targetOffset / this._swipePixelRatio());\r\n        delete this._startOffset;\r\n        this._renderValue()\r\n    },\r\n    _activeHandle: function() {\r\n        return this._$handle\r\n    },\r\n    _swipeUpdateHandler: function(e) {\r\n        this._saveValueChangeEvent(e);\r\n        this._updateHandlePosition(e)\r\n    },\r\n    _updateHandlePosition: function(e) {\r\n        var offsetDirection = this.option(\"rtlEnabled\") ? -1 : 1;\r\n        var newRatio = Math.min(this._startOffset + offsetDirection * e.event.offset / this._swipePixelRatio(), 1);\r\n        this._$range.width(100 * newRatio + \"%\");\r\n        _ui.default.getInstance(this._activeHandle()).fitTooltipPosition;\r\n        this._changeValueOnSwipe(newRatio)\r\n    },\r\n    _swipePixelRatio: function() {\r\n        var min = this.option(\"min\");\r\n        var max = this.option(\"max\");\r\n        var step = this._valueStep(this.option(\"step\"));\r\n        return (max - min) / step\r\n    },\r\n    _valueStep: function(step) {\r\n        if (!step || isNaN(step)) {\r\n            step = 1\r\n        }\r\n        if (0 === step) {\r\n            step = 1e-5\r\n        }\r\n        return step\r\n    },\r\n    _getValueExponentLength: function() {\r\n        var _this$option = this.option(),\r\n            step = _this$option.step,\r\n            min = _this$option.min;\r\n        return Math.max((0, _math.getExponentLength)(step), (0, _math.getExponentLength)(min))\r\n    },\r\n    _roundToExponentLength: function(value) {\r\n        var valueExponentLength = this._getValueExponentLength();\r\n        return (0, _math.roundFloatPart)(value, valueExponentLength)\r\n    },\r\n    _changeValueOnSwipe: function(ratio) {\r\n        var min = this.option(\"min\");\r\n        var max = this.option(\"max\");\r\n        var step = this._valueStep(this.option(\"step\"));\r\n        var newChange = ratio * (max - min);\r\n        var newValue = min + newChange;\r\n        if (step < 0) {\r\n            return\r\n        }\r\n        if (newValue === max || newValue === min) {\r\n            this._setValueOnSwipe(newValue)\r\n        } else {\r\n            var stepCount = Math.round((newValue - min) / step);\r\n            newValue = this._roundToExponentLength(stepCount * step + min);\r\n            this._setValueOnSwipe(Math.max(Math.min(newValue, max), min))\r\n        }\r\n    },\r\n    _setValueOnSwipe: function(value) {\r\n        this.option(\"value\", value);\r\n        this._saveValueChangeEvent(void 0)\r\n    },\r\n    _startHandler: function(args) {\r\n        var e = args.event;\r\n        this._currentRatio = ((0, _index.eventData)(e).x - this._$bar.offset().left) / this._$bar.width();\r\n        if (this.option(\"rtlEnabled\")) {\r\n            this._currentRatio = 1 - this._currentRatio\r\n        }\r\n        this._saveValueChangeEvent(e);\r\n        this._changeValueOnSwipe(this._currentRatio)\r\n    },\r\n    _renderValue: function() {\r\n        this.callBase();\r\n        var value = this.option(\"value\");\r\n        this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value));\r\n        _ui.default.getInstance(this._activeHandle()).option(\"value\", value)\r\n    },\r\n    _setRangeStyles: function(options) {\r\n        options && this._$range.css(options)\r\n    },\r\n    _callHandlerMethod: function(name, args) {\r\n        _ui.default.getInstance(this._$handle)[name](args)\r\n    },\r\n    _repaintHandle: function() {\r\n        this._callHandlerMethod(\"repaint\")\r\n    },\r\n    _fitTooltip: function() {\r\n        this._callHandlerMethod(\"fitTooltipPosition\")\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"visible\":\r\n                this.callBase(args);\r\n                this._renderHandle();\r\n                this._repaintHandle();\r\n                (0, _visibility_change.triggerShownEvent)(this.$element());\r\n                break;\r\n            case \"min\":\r\n            case \"max\":\r\n                this._renderValue();\r\n                this.callBase(args);\r\n                this._renderLabels();\r\n                this._renderAriaMinAndMax();\r\n                this._fitTooltip();\r\n                break;\r\n            case \"step\":\r\n                this._renderValue();\r\n                break;\r\n            case \"keyStep\":\r\n                break;\r\n            case \"showRange\":\r\n                this._renderRangeVisibility();\r\n                break;\r\n            case \"tooltip\":\r\n                this._renderHandle();\r\n                break;\r\n            case \"label\":\r\n                this._renderLabels();\r\n                break;\r\n            case \"useInkRipple\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _refresh: function() {\r\n        this._toggleRTLDirection(this.option(\"rtlEnabled\"));\r\n        this._renderDimensions();\r\n        this._renderValue();\r\n        this._renderHandle();\r\n        this._repaintHandle()\r\n    },\r\n    _clean: function() {\r\n        delete this._inkRipple;\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxSlider\", Slider);\r\nvar _default = Slider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.rows.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.columns_view\");\r\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _remove_event = _interopRequireDefault(require(\"../../core/remove_event\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar NOWRAP_CLASS = \"nowrap\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar FREE_SPACE_CLASS = \"dx-freespace-row\";\r\nvar ROW_LINES_CLASS = \"dx-row-lines\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar ROW_ALTERNATION_CLASS = \"dx-row-alt\";\r\nvar LAST_ROW_BORDER = \"dx-last-row-border\";\r\nvar EMPTY_CLASS = \"dx-empty\";\r\nvar ROW_INSERTED_ANIMATION_CLASS = \"row-inserted-animation\";\r\nvar LOADPANEL_HIDE_TIMEOUT = 200;\r\n\r\nfunction getMaxHorizontalScrollOffset(scrollable) {\r\n    return scrollable ? scrollable.scrollWidth() - scrollable.clientWidth() : 0\r\n}\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            hoverStateEnabled: false,\r\n            scrolling: {\r\n                useNative: \"auto\"\r\n            },\r\n            loadPanel: {\r\n                enabled: \"auto\",\r\n                text: _message.default.format(\"Loading\"),\r\n                width: 200,\r\n                height: 90,\r\n                showIndicator: true,\r\n                indicatorSrc: \"\",\r\n                showPane: true\r\n            },\r\n            rowTemplate: null,\r\n            columnAutoWidth: false,\r\n            noDataText: _message.default.format(\"dxDataGrid-noDataText\"),\r\n            wordWrapEnabled: false,\r\n            showColumnLines: true,\r\n            showRowLines: false,\r\n            rowAlternationEnabled: false,\r\n            activeStateEnabled: false,\r\n            twoWayBindingEnabled: true\r\n        }\r\n    },\r\n    views: {\r\n        rowsView: _uiGrid_core2.ColumnsView.inherit(function() {\r\n            var defaultCellTemplate = function($container, options) {\r\n                var isDataTextEmpty = (0, _string.isEmpty)(options.text) && \"data\" === options.rowType;\r\n                var text = options.text;\r\n                var container = $container.get(0);\r\n                if (isDataTextEmpty) {\r\n                    _uiGrid_core.default.setEmptyText($container)\r\n                } else {\r\n                    if (options.column.encodeHtml) {\r\n                        container.textContent = text\r\n                    } else {\r\n                        container.innerHTML = text\r\n                    }\r\n                }\r\n            };\r\n            var getScrollableBottomPadding = function(that) {\r\n                var scrollable = that.getScrollable();\r\n                return scrollable ? Math.ceil(parseFloat(scrollable.$content().css(\"paddingBottom\"))) : 0\r\n            };\r\n            return {\r\n                _getDefaultTemplate: function(column) {\r\n                    switch (column.command) {\r\n                        case \"empty\":\r\n                            return function(container) {\r\n                                container.html(\"&nbsp;\")\r\n                            };\r\n                        default:\r\n                            return defaultCellTemplate\r\n                    }\r\n                },\r\n                _getDefaultGroupTemplate: function(column) {\r\n                    var that = this;\r\n                    var summaryTexts = that.option(\"summary.texts\");\r\n                    return function($container, options) {\r\n                        var data = options.data;\r\n                        var text = options.column.caption + \": \" + options.text;\r\n                        var container = $container.get(0);\r\n                        if (options.summaryItems && options.summaryItems.length) {\r\n                            text += \" \" + _uiGrid_core.default.getGroupRowSummaryText(options.summaryItems, summaryTexts)\r\n                        }\r\n                        if (data) {\r\n                            if (options.groupContinuedMessage && options.groupContinuesMessage) {\r\n                                text += \" (\" + options.groupContinuedMessage + \". \" + options.groupContinuesMessage + \")\"\r\n                            } else {\r\n                                if (options.groupContinuesMessage) {\r\n                                    text += \" (\" + options.groupContinuesMessage + \")\"\r\n                                } else {\r\n                                    if (options.groupContinuedMessage) {\r\n                                        text += \" (\" + options.groupContinuedMessage + \")\"\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        $container.addClass(GROUP_CELL_CLASS);\r\n                        if (column.encodeHtml) {\r\n                            container.textContent = text\r\n                        } else {\r\n                            container.innerHTML = text\r\n                        }\r\n                    }\r\n                },\r\n                _update: function() {},\r\n                _getCellTemplate: function(options) {\r\n                    var that = this;\r\n                    var column = options.column;\r\n                    var template;\r\n                    if (\"group\" === options.rowType && (0, _type.isDefined)(column.groupIndex) && !column.showWhenGrouped && !column.command) {\r\n                        template = column.groupCellTemplate || {\r\n                            allowRenderToDetachedContainer: true,\r\n                            render: that._getDefaultGroupTemplate(column)\r\n                        }\r\n                    } else {\r\n                        if ((\"data\" === options.rowType || column.command) && column.cellTemplate) {\r\n                            template = column.cellTemplate\r\n                        } else {\r\n                            template = {\r\n                                allowRenderToDetachedContainer: true,\r\n                                render: that._getDefaultTemplate(column)\r\n                            }\r\n                        }\r\n                    }\r\n                    return template\r\n                },\r\n                _createRow: function(row) {\r\n                    var $row = this.callBase(row);\r\n                    if (row) {\r\n                        var isGroup = \"group\" === row.rowType;\r\n                        var isDataRow = \"data\" === row.rowType;\r\n                        isDataRow && $row.addClass(DATA_ROW_CLASS);\r\n                        isDataRow && this.option(\"showRowLines\") && $row.addClass(ROW_LINES_CLASS);\r\n                        this.option(\"showColumnLines\") && $row.addClass(COLUMN_LINES_CLASS);\r\n                        if (false === row.visible) {\r\n                            $row.hide()\r\n                        }\r\n                        if (isGroup) {\r\n                            $row.addClass(GROUP_ROW_CLASS);\r\n                            var isRowExpanded = row.isExpanded;\r\n                            this.setAria(\"role\", \"row\", $row);\r\n                            this.setAria(\"expanded\", (0, _type.isDefined)(isRowExpanded) && isRowExpanded.toString(), $row)\r\n                        }\r\n                    }\r\n                    return $row\r\n                },\r\n                _rowPrepared: function($row, rowOptions, row) {\r\n                    var _this = this;\r\n                    if (\"data\" === rowOptions.rowType) {\r\n                        if (this.option(\"rowAlternationEnabled\")) {\r\n                            this._isAltRow(row) && $row.addClass(ROW_ALTERNATION_CLASS);\r\n                            rowOptions.watch && rowOptions.watch(function() {\r\n                                return _this._isAltRow(row)\r\n                            }, function(value) {\r\n                                $row.toggleClass(ROW_ALTERNATION_CLASS, value)\r\n                            })\r\n                        }\r\n                        this._setAriaRowIndex(rowOptions, $row);\r\n                        rowOptions.watch && rowOptions.watch(function() {\r\n                            return rowOptions.rowIndex\r\n                        }, function() {\r\n                            return _this._setAriaRowIndex(rowOptions, $row)\r\n                        })\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                _setAriaRowIndex: function(row, $row) {\r\n                    var component = this.component;\r\n                    var isPagerMode = \"standard\" === component.option(\"scrolling.mode\") && \"virtual\" !== component.option(\"scrolling.rowRenderingMode\");\r\n                    var rowIndex = row.rowIndex + 1;\r\n                    if (isPagerMode) {\r\n                        rowIndex = component.pageIndex() * component.pageSize() + rowIndex\r\n                    } else {\r\n                        rowIndex += this._dataController.getRowIndexOffset()\r\n                    }\r\n                    this.setAria(\"rowindex\", rowIndex, $row)\r\n                },\r\n                _afterRowPrepared: function(e) {\r\n                    var _this2 = this;\r\n                    var arg = e.args[0];\r\n                    var dataController = this._dataController;\r\n                    var row = dataController.getVisibleRows()[arg.rowIndex];\r\n                    var watch = this.option(\"integrationOptions.watchMethod\");\r\n                    if (!arg.data || \"data\" !== arg.rowType || arg.isNewRow || !this.option(\"twoWayBindingEnabled\") || !watch || !row) {\r\n                        return\r\n                    }\r\n                    var dispose = watch(function() {\r\n                        return dataController.generateDataValues(arg.data, arg.columns)\r\n                    }, function() {\r\n                        dataController.repaintRows([row.rowIndex], _this2.option(\"repaintChangesOnly\"))\r\n                    }, {\r\n                        deep: true,\r\n                        skipImmediate: true\r\n                    });\r\n                    _events_engine.default.on(arg.rowElement, _remove_event.default, dispose)\r\n                },\r\n                _renderScrollable: function(force) {\r\n                    var that = this;\r\n                    var $element = that.element();\r\n                    if (!$element.children().length) {\r\n                        $element.append(\"<div>\")\r\n                    }\r\n                    if (force || !that._loadPanel) {\r\n                        that._renderLoadPanel($element, $element.parent(), that._dataController.isLocalStore())\r\n                    }\r\n                    if ((force || !that.getScrollable()) && that._dataController.isLoaded()) {\r\n                        var columns = that.getColumns();\r\n                        var allColumnsHasWidth = true;\r\n                        for (var i = 0; i < columns.length; i++) {\r\n                            if (!columns[i].width && !columns[i].minWidth) {\r\n                                allColumnsHasWidth = false;\r\n                                break\r\n                            }\r\n                        }\r\n                        if (that.option(\"columnAutoWidth\") || that._hasHeight || allColumnsHasWidth || that._columnsController._isColumnFixing()) {\r\n                            that._renderScrollableCore($element)\r\n                        }\r\n                    }\r\n                },\r\n                _handleScroll: function(e) {\r\n                    var that = this;\r\n                    var rtlEnabled = that.option(\"rtlEnabled\");\r\n                    that._isScrollByEvent = !!e.event;\r\n                    that._scrollTop = e.scrollOffset.top;\r\n                    that._scrollLeft = e.scrollOffset.left;\r\n                    if (rtlEnabled) {\r\n                        this._scrollRight = getMaxHorizontalScrollOffset(e.component) - this._scrollLeft\r\n                    }\r\n                    that.scrollChanged.fire(e.scrollOffset, that.name)\r\n                },\r\n                _renderScrollableCore: function($element) {\r\n                    var that = this;\r\n                    var dxScrollableOptions = that._createScrollableOptions();\r\n                    var scrollHandler = that._handleScroll.bind(that);\r\n                    dxScrollableOptions.onScroll = scrollHandler;\r\n                    dxScrollableOptions.onStop = scrollHandler;\r\n                    that._scrollable = that._createComponent($element, _ui.default, dxScrollableOptions);\r\n                    that._scrollableContainer = that._scrollable && that._scrollable._$container\r\n                },\r\n                _renderLoadPanel: _uiGrid_core.default.renderLoadPanel,\r\n                _renderContent: function(contentElement, tableElement) {\r\n                    contentElement.empty().append(tableElement);\r\n                    return this._findContentElement()\r\n                },\r\n                _updateContent: function(newTableElement, change) {\r\n                    var that = this;\r\n                    var tableElement = that._getTableElement();\r\n                    var contentElement = that._findContentElement();\r\n                    var changeType = change && change.changeType;\r\n                    var executors = [];\r\n                    var highlightChanges = this.option(\"highlightChanges\");\r\n                    var rowInsertedClass = this.addWidgetPrefix(ROW_INSERTED_ANIMATION_CLASS);\r\n                    switch (changeType) {\r\n                        case \"update\":\r\n                            (0, _iterator.each)(change.rowIndices, function(index, rowIndex) {\r\n                                var $newRowElement = that._getRowElements(newTableElement).eq(index);\r\n                                var changeType = change.changeTypes && change.changeTypes[index];\r\n                                var item = change.items && change.items[index];\r\n                                executors.push(function() {\r\n                                    var $rowsElement = that._getRowElements();\r\n                                    var $rowElement = $rowsElement.eq(rowIndex);\r\n                                    switch (changeType) {\r\n                                        case \"update\":\r\n                                            if (item) {\r\n                                                var columnIndices = change.columnIndices && change.columnIndices[index];\r\n                                                if ((0, _type.isDefined)(item.visible) && item.visible !== $rowElement.is(\":visible\")) {\r\n                                                    $rowElement.toggle(item.visible)\r\n                                                } else {\r\n                                                    if (columnIndices) {\r\n                                                        that._updateCells($rowElement, $newRowElement, columnIndices)\r\n                                                    } else {\r\n                                                        $rowElement.replaceWith($newRowElement)\r\n                                                    }\r\n                                                }\r\n                                            }\r\n                                            break;\r\n                                        case \"insert\":\r\n                                            if (!$rowsElement.length) {\r\n                                                tableElement && $newRowElement.prependTo(tableElement.children(\"tbody\"))\r\n                                            } else {\r\n                                                if ($rowElement.length) {\r\n                                                    $newRowElement.insertBefore($rowElement)\r\n                                                } else {\r\n                                                    $newRowElement.insertAfter($rowsElement.last())\r\n                                                }\r\n                                            }\r\n                                            if (highlightChanges && change.isLiveUpdate) {\r\n                                                $newRowElement.addClass(rowInsertedClass)\r\n                                            }\r\n                                            break;\r\n                                        case \"remove\":\r\n                                            $rowElement.remove()\r\n                                    }\r\n                                })\r\n                            });\r\n                            (0, _iterator.each)(executors, function() {\r\n                                this()\r\n                            });\r\n                            newTableElement.remove();\r\n                            break;\r\n                        default:\r\n                            that._setTableElement(newTableElement);\r\n                            contentElement.addClass(that.addWidgetPrefix(CONTENT_CLASS));\r\n                            that._renderContent(contentElement, newTableElement)\r\n                    }\r\n                },\r\n                _createEmptyRow: function(className, isFixed, height) {\r\n                    var that = this;\r\n                    var $cell;\r\n                    var $row = that._createRow();\r\n                    var columns = isFixed ? this.getFixedColumns() : this.getColumns();\r\n                    $row.addClass(className).toggleClass(COLUMN_LINES_CLASS, that.option(\"showColumnLines\"));\r\n                    for (var i = 0; i < columns.length; i++) {\r\n                        $cell = that._createCell({\r\n                            column: columns[i],\r\n                            rowType: \"freeSpace\",\r\n                            columnIndex: i,\r\n                            columns: columns\r\n                        });\r\n                        (0, _type.isNumeric)(height) && $cell.css(\"height\", height);\r\n                        $row.append($cell)\r\n                    }\r\n                    that.setAria(\"role\", \"presentation\", $row);\r\n                    return $row\r\n                },\r\n                _appendEmptyRow: function($table, $emptyRow, location) {\r\n                    var $tBodies = this._getBodies($table);\r\n                    var isTableContainer = !$tBodies.length || $emptyRow.is(\"tbody\");\r\n                    var $container = isTableContainer ? $table : $tBodies;\r\n                    if (\"top\" === location) {\r\n                        $container.first().prepend($emptyRow);\r\n                        if (isTableContainer) {\r\n                            var $colgroup = $container.children(\"colgroup\");\r\n                            $container.prepend($colgroup)\r\n                        }\r\n                    } else {\r\n                        $container.last().append($emptyRow)\r\n                    }\r\n                },\r\n                _renderFreeSpaceRow: function($tableElement) {\r\n                    var $freeSpaceRowElement = this._createEmptyRow(FREE_SPACE_CLASS);\r\n                    $freeSpaceRowElement = this._wrapRowIfNeed($tableElement, $freeSpaceRowElement);\r\n                    this._appendEmptyRow($tableElement, $freeSpaceRowElement)\r\n                },\r\n                _checkRowKeys: function(options) {\r\n                    var that = this;\r\n                    var rows = that._getRows(options);\r\n                    var keyExpr = that._dataController.store() && that._dataController.store().key();\r\n                    keyExpr && rows.some(function(row) {\r\n                        if (\"data\" === row.rowType && void 0 === row.key) {\r\n                            that._dataController.fireError(\"E1046\", keyExpr);\r\n                            return true\r\n                        }\r\n                    })\r\n                },\r\n                _needUpdateRowHeight: function(itemsCount) {\r\n                    return itemsCount > 0 && !this._rowHeight\r\n                },\r\n                _getRowsHeight: function($tableElement) {\r\n                    var $rowElements = $tableElement.children(\"tbody\").children().not(\".dx-virtual-row\").not(\".\" + FREE_SPACE_CLASS);\r\n                    return $rowElements.toArray().reduce(function(sum, row) {\r\n                        return sum + (0, _position.getBoundingRect)(row).height\r\n                    }, 0)\r\n                },\r\n                _updateRowHeight: function() {\r\n                    var that = this;\r\n                    var $tableElement = that._getTableElement();\r\n                    var itemsCount = that._dataController.items().length;\r\n                    if ($tableElement && that._needUpdateRowHeight(itemsCount)) {\r\n                        var rowsHeight = that._getRowsHeight($tableElement);\r\n                        that._rowHeight = rowsHeight / itemsCount\r\n                    }\r\n                },\r\n                _findContentElement: function() {\r\n                    var $content = this.element();\r\n                    var scrollable = this.getScrollable();\r\n                    if ($content) {\r\n                        if (scrollable) {\r\n                            $content = scrollable.$content()\r\n                        }\r\n                        return $content.children().first()\r\n                    }\r\n                },\r\n                _getRowElements: function(tableElement) {\r\n                    var $rows = this.callBase(tableElement);\r\n                    return $rows && $rows.not(\".\" + FREE_SPACE_CLASS)\r\n                },\r\n                _getFreeSpaceRowElements: function($table) {\r\n                    var tableElements = $table || this.getTableElements();\r\n                    return tableElements && tableElements.children(\"tbody\").children(\".\" + FREE_SPACE_CLASS)\r\n                },\r\n                _getNoDataText: function() {\r\n                    return this.option(\"noDataText\")\r\n                },\r\n                _rowClick: function(e) {\r\n                    var item = this._dataController.items()[e.rowIndex] || {};\r\n                    this.executeAction(\"onRowClick\", (0, _extend.extend)({\r\n                        evaluate: function(expr) {\r\n                            var getter = (0, _data.compileGetter)(expr);\r\n                            return getter(item.data)\r\n                        }\r\n                    }, e, item))\r\n                },\r\n                _rowDblClick: function(e) {\r\n                    var item = this._dataController.items()[e.rowIndex] || {};\r\n                    this.executeAction(\"onRowDblClick\", (0, _extend.extend)({}, e, item))\r\n                },\r\n                _getColumnsCountBeforeGroups: function(columns) {\r\n                    for (var i = 0; i < columns.length; i++) {\r\n                        if (\"groupExpand\" === columns[i].type) {\r\n                            return i\r\n                        }\r\n                    }\r\n                    return 0\r\n                },\r\n                _getGroupCellOptions: function(options) {\r\n                    var columnsCountBeforeGroups = this._getColumnsCountBeforeGroups(options.columns);\r\n                    var columnIndex = (options.row.groupIndex || 0) + columnsCountBeforeGroups;\r\n                    return {\r\n                        columnIndex: columnIndex,\r\n                        colspan: options.columns.length - columnIndex - 1\r\n                    }\r\n                },\r\n                _renderCells: function($row, options) {\r\n                    if (\"group\" === options.row.rowType) {\r\n                        this._renderGroupedCells($row, options)\r\n                    } else {\r\n                        if (options.row.values) {\r\n                            this.callBase($row, options)\r\n                        }\r\n                    }\r\n                },\r\n                _renderGroupedCells: function($row, options) {\r\n                    var row = options.row;\r\n                    var expandColumn;\r\n                    var columns = options.columns;\r\n                    var rowIndex = row.rowIndex;\r\n                    var isExpanded;\r\n                    var groupCellOptions = this._getGroupCellOptions(options);\r\n                    for (var i = 0; i <= groupCellOptions.columnIndex; i++) {\r\n                        if (i === groupCellOptions.columnIndex && columns[i].allowCollapsing && \"infinite\" !== options.scrollingMode) {\r\n                            isExpanded = !!row.isExpanded;\r\n                            expandColumn = columns[i]\r\n                        } else {\r\n                            isExpanded = null;\r\n                            expandColumn = {\r\n                                command: \"expand\",\r\n                                cssClass: columns[i].cssClass\r\n                            }\r\n                        }\r\n                        this._renderCell($row, {\r\n                            value: isExpanded,\r\n                            row: row,\r\n                            rowIndex: rowIndex,\r\n                            column: expandColumn,\r\n                            columnIndex: i\r\n                        })\r\n                    }\r\n                    var groupColumnAlignment = (0, _position.getDefaultAlignment)(this.option(\"rtlEnabled\"));\r\n                    var groupColumn = (0, _extend.extend)({}, columns[groupCellOptions.columnIndex], {\r\n                        command: null,\r\n                        cssClass: null,\r\n                        width: null,\r\n                        showWhenGrouped: false,\r\n                        alignment: groupColumnAlignment\r\n                    });\r\n                    if (groupCellOptions.colspan > 1) {\r\n                        groupColumn.colspan = groupCellOptions.colspan\r\n                    }\r\n                    this._renderCell($row, {\r\n                        value: row.values[row.groupIndex],\r\n                        row: row,\r\n                        rowIndex: rowIndex,\r\n                        column: groupColumn,\r\n                        columnIndex: groupCellOptions.columnIndex\r\n                    })\r\n                },\r\n                _renderRows: function($table, options) {\r\n                    var that = this;\r\n                    var scrollingMode = that.option(\"scrolling.mode\");\r\n                    that.callBase($table, (0, _extend.extend)({\r\n                        scrollingMode: scrollingMode\r\n                    }, options));\r\n                    that._checkRowKeys(options.change);\r\n                    that._renderFreeSpaceRow($table);\r\n                    if (!that._hasHeight) {\r\n                        that.updateFreeSpaceRowHeight($table)\r\n                    }\r\n                },\r\n                _renderRow: function($table, options) {\r\n                    var that = this;\r\n                    var row = options.row;\r\n                    var rowTemplate = that.option(\"rowTemplate\");\r\n                    if ((\"data\" === row.rowType || \"group\" === row.rowType) && !(0, _type.isDefined)(row.groupIndex) && rowTemplate) {\r\n                        that.renderTemplate($table, rowTemplate, (0, _extend.extend)({\r\n                            columns: options.columns\r\n                        }, row), true)\r\n                    } else {\r\n                        that.callBase($table, options)\r\n                    }\r\n                },\r\n                _renderTable: function(options) {\r\n                    var that = this;\r\n                    var $table = that.callBase(options);\r\n                    var resizeCompletedHandler = function resizeCompletedHandler() {\r\n                        var scrollableInstance = that.getScrollable();\r\n                        if (scrollableInstance && that.element().closest((0, _window.getWindow)().document).length) {\r\n                            that.resizeCompleted.remove(resizeCompletedHandler);\r\n                            scrollableInstance._visibilityChanged(true)\r\n                        }\r\n                    };\r\n                    if (!(0, _type.isDefined)(that._getTableElement())) {\r\n                        that._setTableElement($table);\r\n                        that._renderScrollable(true);\r\n                        that.resizeCompleted.add(resizeCompletedHandler)\r\n                    } else {\r\n                        that._renderScrollable()\r\n                    }\r\n                    return $table\r\n                },\r\n                _createTable: function() {\r\n                    var $table = this.callBase.apply(this, arguments);\r\n                    if (this.option(\"rowTemplate\")) {\r\n                        $table.appendTo(this.component.$element())\r\n                    }\r\n                    return $table\r\n                },\r\n                _renderCore: function(change) {\r\n                    var that = this;\r\n                    var $element = that.element();\r\n                    $element.addClass(that.addWidgetPrefix(ROWS_VIEW_CLASS)).toggleClass(that.addWidgetPrefix(NOWRAP_CLASS), !that.option(\"wordWrapEnabled\"));\r\n                    $element.toggleClass(EMPTY_CLASS, 0 === that._dataController.items().length);\r\n                    that.setAria(\"role\", \"presentation\", $element);\r\n                    var $table = that._renderTable({\r\n                        change: change\r\n                    });\r\n                    that._updateContent($table, change);\r\n                    that.callBase(change);\r\n                    that._lastColumnWidths = null\r\n                },\r\n                _getRows: function(change) {\r\n                    return change && change.items || this._dataController.items()\r\n                },\r\n                _getCellOptions: function(options) {\r\n                    var that = this;\r\n                    var column = options.column;\r\n                    var row = options.row;\r\n                    var data = row.data;\r\n                    var summaryCells = row && row.summaryCells;\r\n                    var value = options.value;\r\n                    var displayValue = _uiGrid_core.default.getDisplayValue(column, value, data, row.rowType);\r\n                    var parameters = this.callBase(options);\r\n                    parameters.value = value;\r\n                    parameters.oldValue = options.oldValue;\r\n                    parameters.displayValue = displayValue;\r\n                    parameters.row = row;\r\n                    parameters.key = row.key;\r\n                    parameters.data = data;\r\n                    parameters.rowType = row.rowType;\r\n                    parameters.values = row.values;\r\n                    parameters.text = !column.command ? _uiGrid_core.default.formatValue(displayValue, column) : \"\";\r\n                    parameters.rowIndex = row.rowIndex;\r\n                    parameters.summaryItems = summaryCells && summaryCells[options.columnIndex];\r\n                    parameters.resized = column.resizedCallbacks;\r\n                    if ((0, _type.isDefined)(column.groupIndex) && !column.command) {\r\n                        var groupingTextsOptions = that.option(\"grouping.texts\");\r\n                        var scrollingMode = that.option(\"scrolling.mode\");\r\n                        if (\"virtual\" !== scrollingMode && \"infinite\" !== scrollingMode) {\r\n                            parameters.groupContinuesMessage = data && data.isContinuationOnNextPage && groupingTextsOptions && groupingTextsOptions.groupContinuesMessage;\r\n                            parameters.groupContinuedMessage = data && data.isContinuation && groupingTextsOptions && groupingTextsOptions.groupContinuedMessage\r\n                        }\r\n                    }\r\n                    return parameters\r\n                },\r\n                _setRowsOpacityCore: function($rows, visibleColumns, columnIndex, value) {\r\n                    var columnsController = this._columnsController;\r\n                    var columns = columnsController.getColumns();\r\n                    var column = columns && columns[columnIndex];\r\n                    var columnID = column && column.isBand && column.index;\r\n                    (0, _iterator.each)($rows, function(rowIndex, row) {\r\n                        if (!(0, _renderer.default)(row).hasClass(GROUP_ROW_CLASS)) {\r\n                            for (var i = 0; i < visibleColumns.length; i++) {\r\n                                if ((0, _type.isNumeric)(columnID) && columnsController.isParentBandColumn(visibleColumns[i].index, columnID) || visibleColumns[i].index === columnIndex) {\r\n                                    $rows.eq(rowIndex).children().eq(i).css({\r\n                                        opacity: value\r\n                                    });\r\n                                    if (!(0, _type.isNumeric)(columnID)) {\r\n                                        break\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    })\r\n                },\r\n                _getDevicePixelRatio: function() {\r\n                    return (0, _window.getWindow)().devicePixelRatio\r\n                },\r\n                renderNoDataText: _uiGrid_core.default.renderNoDataText,\r\n                getCellOptions: function(rowIndex, columnIdentifier) {\r\n                    var rowOptions = this._dataController.items()[rowIndex];\r\n                    var cellOptions;\r\n                    var column;\r\n                    if (rowOptions) {\r\n                        if ((0, _type.isString)(columnIdentifier)) {\r\n                            column = this._columnsController.columnOption(columnIdentifier)\r\n                        } else {\r\n                            column = this._columnsController.getVisibleColumns()[columnIdentifier]\r\n                        }\r\n                        if (column) {\r\n                            cellOptions = this._getCellOptions({\r\n                                value: column.calculateCellValue(rowOptions.data),\r\n                                rowIndex: rowOptions.rowIndex,\r\n                                row: rowOptions,\r\n                                column: column\r\n                            })\r\n                        }\r\n                    }\r\n                    return cellOptions\r\n                },\r\n                getRow: function(index) {\r\n                    if (index >= 0) {\r\n                        var rows = this._getRowElements();\r\n                        if (rows.length > index) {\r\n                            return (0, _renderer.default)(rows[index])\r\n                        }\r\n                    }\r\n                },\r\n                updateFreeSpaceRowHeight: function($table) {\r\n                    var _this3 = this;\r\n                    var dataController = this._dataController;\r\n                    var itemCount = dataController.items(true).length;\r\n                    var contentElement = this._findContentElement();\r\n                    var freeSpaceRowElements = this._getFreeSpaceRowElements($table);\r\n                    if (freeSpaceRowElements && contentElement && dataController.totalCount() >= 0) {\r\n                        var isFreeSpaceRowVisible = false;\r\n                        if (itemCount > 0) {\r\n                            if (!this._hasHeight) {\r\n                                var freeSpaceRowCount = dataController.pageSize() - itemCount;\r\n                                var scrollingMode = this.option(\"scrolling.mode\");\r\n                                if (freeSpaceRowCount > 0 && dataController.pageCount() > 1 && \"virtual\" !== scrollingMode && \"infinite\" !== scrollingMode) {\r\n                                    (0, _style.setHeight)(freeSpaceRowElements, freeSpaceRowCount * this._rowHeight);\r\n                                    isFreeSpaceRowVisible = true\r\n                                }\r\n                                if (!isFreeSpaceRowVisible && $table) {\r\n                                    (0, _style.setHeight)(freeSpaceRowElements, 0)\r\n                                } else {\r\n                                    freeSpaceRowElements.toggle(isFreeSpaceRowVisible)\r\n                                }\r\n                                this._updateLastRowBorder(isFreeSpaceRowVisible)\r\n                            } else {\r\n                                freeSpaceRowElements.hide();\r\n                                (0, _common.deferUpdate)(function() {\r\n                                    var scrollbarWidth = _this3.getScrollbarWidth(true);\r\n                                    var elementHeightWithoutScrollbar = _this3.element().height() - scrollbarWidth;\r\n                                    var contentHeight = contentElement.outerHeight();\r\n                                    var showFreeSpaceRow = elementHeightWithoutScrollbar - contentHeight > 0;\r\n                                    var rowsHeight = _this3._getRowsHeight(contentElement.children().first());\r\n                                    var $tableElement = $table || _this3.getTableElements();\r\n                                    var borderTopWidth = Math.ceil(parseFloat($tableElement.css(\"borderTopWidth\")));\r\n                                    var heightCorrection = _this3._getHeightCorrection();\r\n                                    var resultHeight = elementHeightWithoutScrollbar - rowsHeight - borderTopWidth - heightCorrection;\r\n                                    if (showFreeSpaceRow) {\r\n                                        (0, _common.deferRender)(function() {\r\n                                            freeSpaceRowElements.css(\"height\", resultHeight);\r\n                                            isFreeSpaceRowVisible = true;\r\n                                            freeSpaceRowElements.show()\r\n                                        })\r\n                                    }(0, _common.deferRender)(function() {\r\n                                        return _this3._updateLastRowBorder(isFreeSpaceRowVisible)\r\n                                    })\r\n                                })\r\n                            }\r\n                        } else {\r\n                            freeSpaceRowElements.css(\"height\", 0);\r\n                            freeSpaceRowElements.show();\r\n                            this._updateLastRowBorder(true)\r\n                        }\r\n                    }\r\n                },\r\n                _getHeightCorrection: function() {\r\n                    var isZoomedWebkit = _browser.default.webkit && this._getDevicePixelRatio() >= 2;\r\n                    var hasExtraBorderTop = _browser.default.mozilla && _browser.default.version >= 70 && !this.option(\"showRowLines\");\r\n                    return isZoomedWebkit || hasExtraBorderTop ? 1 : 0\r\n                },\r\n                _columnOptionChanged: function(e) {\r\n                    var optionNames = e.optionNames;\r\n                    if (e.changeTypes.grouping) {\r\n                        return\r\n                    }\r\n                    if (optionNames.width || optionNames.visibleWidth) {\r\n                        this.callBase(e);\r\n                        this._fireColumnResizedCallbacks()\r\n                    }\r\n                },\r\n                getScrollable: function() {\r\n                    return this._scrollable\r\n                },\r\n                init: function() {\r\n                    var that = this;\r\n                    var dataController = that.getController(\"data\");\r\n                    that.callBase();\r\n                    that._editorFactoryController = that.getController(\"editorFactory\");\r\n                    that._rowHeight = 0;\r\n                    that._scrollTop = 0;\r\n                    that._scrollLeft = -1;\r\n                    that._scrollRight = 0;\r\n                    that._hasHeight = false;\r\n                    dataController.loadingChanged.add(function(isLoading, messageText) {\r\n                        that.setLoading(isLoading, messageText)\r\n                    });\r\n                    dataController.dataSourceChanged.add(function() {\r\n                        if (that._scrollLeft >= 0) {\r\n                            that._handleScroll({\r\n                                component: that.getScrollable(),\r\n                                scrollOffset: {\r\n                                    top: that._scrollTop,\r\n                                    left: that._scrollLeft\r\n                                }\r\n                            })\r\n                        }\r\n                    })\r\n                },\r\n                _handleDataChanged: function(change) {\r\n                    var that = this;\r\n                    switch (change.changeType) {\r\n                        case \"refresh\":\r\n                        case \"prepend\":\r\n                        case \"append\":\r\n                        case \"update\":\r\n                            that.render(null, change);\r\n                            break;\r\n                        default:\r\n                            that._update(change)\r\n                    }\r\n                },\r\n                publicMethods: function() {\r\n                    return [\"isScrollbarVisible\", \"getTopVisibleRowData\", \"getScrollbarWidth\", \"getCellElement\", \"getRowElement\", \"getScrollable\"]\r\n                },\r\n                contentWidth: function() {\r\n                    return this.element().width() - this.getScrollbarWidth()\r\n                },\r\n                getScrollbarWidth: function(isHorizontal) {\r\n                    var scrollableContainer = this._scrollableContainer && this._scrollableContainer.get(0);\r\n                    var scrollbarWidth = 0;\r\n                    if (scrollableContainer) {\r\n                        if (!isHorizontal) {\r\n                            scrollbarWidth = scrollableContainer.clientWidth ? scrollableContainer.offsetWidth - scrollableContainer.clientWidth : 0\r\n                        } else {\r\n                            scrollbarWidth = scrollableContainer.clientHeight ? scrollableContainer.offsetHeight - scrollableContainer.clientHeight : 0;\r\n                            scrollbarWidth += getScrollableBottomPadding(this)\r\n                        }\r\n                    }\r\n                    return scrollbarWidth > 0 ? scrollbarWidth : 0\r\n                },\r\n                _fireColumnResizedCallbacks: function() {\r\n                    var that = this;\r\n                    var lastColumnWidths = that._lastColumnWidths || [];\r\n                    var columnWidths = [];\r\n                    var columns = that.getColumns();\r\n                    for (var i = 0; i < columns.length; i++) {\r\n                        columnWidths[i] = columns[i].visibleWidth;\r\n                        if (columns[i].resizedCallbacks && !(0, _type.isDefined)(columns[i].groupIndex) && lastColumnWidths[i] !== columnWidths[i]) {\r\n                            columns[i].resizedCallbacks.fire(columnWidths[i])\r\n                        }\r\n                    }\r\n                    that._lastColumnWidths = columnWidths\r\n                },\r\n                _updateLastRowBorder: function(isFreeSpaceRowVisible) {\r\n                    if (this.option(\"showBorders\") && this.option(\"showRowLines\") && !isFreeSpaceRowVisible) {\r\n                        this.element().addClass(LAST_ROW_BORDER)\r\n                    } else {\r\n                        this.element().removeClass(LAST_ROW_BORDER)\r\n                    }\r\n                },\r\n                _updateScrollable: function() {\r\n                    var dxScrollable = _ui.default.getInstance(this.element());\r\n                    if (dxScrollable) {\r\n                        dxScrollable.update();\r\n                        this._updateHorizontalScrollPosition()\r\n                    }\r\n                },\r\n                _updateHorizontalScrollPosition: function() {\r\n                    var scrollable = this.getScrollable();\r\n                    var scrollLeft = scrollable && scrollable.scrollOffset().left;\r\n                    var rtlEnabled = this.option(\"rtlEnabled\");\r\n                    if (rtlEnabled) {\r\n                        var maxHorizontalScrollOffset = getMaxHorizontalScrollOffset(scrollable);\r\n                        var scrollRight = maxHorizontalScrollOffset - scrollLeft;\r\n                        if (scrollRight !== this._scrollRight) {\r\n                            this._scrollLeft = maxHorizontalScrollOffset - this._scrollRight\r\n                        }\r\n                    }\r\n                    if (this._scrollLeft >= 0 && scrollLeft !== this._scrollLeft) {\r\n                        scrollable.scrollTo({\r\n                            x: this._scrollLeft\r\n                        })\r\n                    }\r\n                },\r\n                _resizeCore: function() {\r\n                    var that = this;\r\n                    that._fireColumnResizedCallbacks();\r\n                    that._updateRowHeight();\r\n                    (0, _common.deferRender)(function() {\r\n                        that._renderScrollable();\r\n                        that.renderNoDataText();\r\n                        that.updateFreeSpaceRowHeight();\r\n                        (0, _common.deferUpdate)(function() {\r\n                            that._updateScrollable()\r\n                        })\r\n                    })\r\n                },\r\n                scrollTo: function(location) {\r\n                    var $element = this.element();\r\n                    var dxScrollable = $element && _ui.default.getInstance($element);\r\n                    if (dxScrollable) {\r\n                        dxScrollable.scrollTo(location)\r\n                    }\r\n                },\r\n                height: function(_height, hasHeight) {\r\n                    var that = this;\r\n                    var $element = this.element();\r\n                    if (0 === arguments.length) {\r\n                        return $element ? $element.outerHeight(true) : 0\r\n                    }\r\n                    that._hasHeight = void 0 === hasHeight ? \"auto\" !== _height : hasHeight;\r\n                    if ((0, _type.isDefined)(_height) && $element) {\r\n                        (0, _style.setHeight)($element, _height)\r\n                    }\r\n                },\r\n                setLoading: function(isLoading, messageText) {\r\n                    var that = this;\r\n                    var loadPanel = that._loadPanel;\r\n                    var dataController = that._dataController;\r\n                    var loadPanelOptions = that.option(\"loadPanel\") || {};\r\n                    var animation = dataController.isLoaded() ? loadPanelOptions.animation : null;\r\n                    var $element = that.element();\r\n                    if (!(0, _window.hasWindow)()) {\r\n                        return\r\n                    }\r\n                    if (!loadPanel && void 0 !== messageText && dataController.isLocalStore() && \"auto\" === loadPanelOptions.enabled && $element) {\r\n                        that._renderLoadPanel($element, $element.parent());\r\n                        loadPanel = that._loadPanel\r\n                    }\r\n                    if (loadPanel) {\r\n                        var visibilityOptions = {\r\n                            message: messageText || loadPanelOptions.text,\r\n                            animation: animation,\r\n                            visible: isLoading\r\n                        };\r\n                        clearTimeout(that._hideLoadingTimeoutID);\r\n                        if (loadPanel.option(\"visible\") && !isLoading) {\r\n                            that._hideLoadingTimeoutID = setTimeout(function() {\r\n                                loadPanel.option(visibilityOptions)\r\n                            }, LOADPANEL_HIDE_TIMEOUT)\r\n                        } else {\r\n                            loadPanel.option(visibilityOptions)\r\n                        }\r\n                    }\r\n                },\r\n                setRowsOpacity: function(columnIndex, value) {\r\n                    var $rows = this._getRowElements().not(\".\" + GROUP_ROW_CLASS) || [];\r\n                    this._setRowsOpacityCore($rows, this.getColumns(), columnIndex, value)\r\n                },\r\n                _getCellElementsCore: function(rowIndex) {\r\n                    var $cells = this.callBase(rowIndex);\r\n                    if ($cells) {\r\n                        var groupCellIndex = $cells.filter(\".\" + GROUP_CELL_CLASS).index();\r\n                        if (groupCellIndex >= 0 && $cells.length > groupCellIndex + 1) {\r\n                            return $cells.slice(0, groupCellIndex + 1)\r\n                        }\r\n                    }\r\n                    return $cells\r\n                },\r\n                getTopVisibleItemIndex: function(isFloor) {\r\n                    var that = this;\r\n                    var itemIndex = 0;\r\n                    var prevOffsetTop = 0;\r\n                    var offsetTop = 0;\r\n                    var scrollPosition = that._scrollTop;\r\n                    var $contentElement = that._findContentElement();\r\n                    var contentElementOffsetTop = $contentElement && $contentElement.offset().top;\r\n                    var items = that._dataController.items();\r\n                    var tableElement = that._getTableElement();\r\n                    if (items.length && tableElement) {\r\n                        var rowElements = that._getRowElements(tableElement).filter(\":visible\");\r\n                        for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\r\n                            prevOffsetTop = offsetTop;\r\n                            var rowElement = rowElements.eq(itemIndex);\r\n                            if (rowElement.length) {\r\n                                offsetTop = rowElement.offset().top - contentElementOffsetTop;\r\n                                if (offsetTop > scrollPosition) {\r\n                                    if (itemIndex) {\r\n                                        if (isFloor || 2 * scrollPosition < Math.round(offsetTop + prevOffsetTop)) {\r\n                                            itemIndex--\r\n                                        }\r\n                                    }\r\n                                    break\r\n                                }\r\n                            }\r\n                        }\r\n                        if (itemIndex && itemIndex === items.length) {\r\n                            itemIndex--\r\n                        }\r\n                    }\r\n                    return itemIndex\r\n                },\r\n                getTopVisibleRowData: function() {\r\n                    var itemIndex = this.getTopVisibleItemIndex();\r\n                    var items = this._dataController.items();\r\n                    if (items[itemIndex]) {\r\n                        return items[itemIndex].data\r\n                    }\r\n                },\r\n                _scrollToElement: function($element, offset) {\r\n                    var scrollable = this.getScrollable();\r\n                    scrollable && scrollable.scrollToElement($element, offset)\r\n                },\r\n                optionChanged: function(args) {\r\n                    var that = this;\r\n                    that.callBase(args);\r\n                    switch (args.name) {\r\n                        case \"wordWrapEnabled\":\r\n                        case \"showColumnLines\":\r\n                        case \"showRowLines\":\r\n                        case \"rowAlternationEnabled\":\r\n                        case \"rowTemplate\":\r\n                        case \"twoWayBindingEnabled\":\r\n                            that._invalidate(true, true);\r\n                            args.handled = true;\r\n                            break;\r\n                        case \"scrolling\":\r\n                            that._rowHeight = null;\r\n                            that._tableElement = null;\r\n                            args.handled = true;\r\n                            break;\r\n                        case \"rtlEnabled\":\r\n                            that._rowHeight = null;\r\n                            that._tableElement = null;\r\n                            break;\r\n                        case \"loadPanel\":\r\n                            that._tableElement = null;\r\n                            that._invalidate(true, \"loadPanel.enabled\" !== args.fullName);\r\n                            args.handled = true;\r\n                            break;\r\n                        case \"noDataText\":\r\n                            that.renderNoDataText();\r\n                            args.handled = true\r\n                    }\r\n                },\r\n                dispose: function() {\r\n                    clearTimeout(this._hideLoadingTimeoutID);\r\n                    this._scrollable && this._scrollable.dispose()\r\n                },\r\n                setScrollerSpacing: function() {}\r\n            }\r\n        }())\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.keyboard_navigation.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.keyboard_navigation\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"keyboardNavigation\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n    extenders: {\r\n        controllers: {\r\n            keyboardNavigation: {\r\n                _leftRightKeysHandler: function(eventArgs, isEditing) {\r\n                    var rowIndex = this.getVisibleRowIndex();\r\n                    var dataController = this._dataController;\r\n                    if (eventArgs.ctrl) {\r\n                        var directionCode = this._getDirectionCodeByKey(eventArgs.keyName);\r\n                        var key = dataController.getKeyByRowIndex(rowIndex);\r\n                        if (\"nextInRow\" === directionCode) {\r\n                            dataController.expandRow(key)\r\n                        } else {\r\n                            dataController.collapseRow(key)\r\n                        }\r\n                    } else {\r\n                        return this.callBase.apply(this, arguments)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.context_menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CONTEXT_MENU = \"dx-context-menu\";\r\nvar viewName = {\r\n    columnHeadersView: \"header\",\r\n    rowsView: \"content\",\r\n    footerView: \"footer\",\r\n    headerPanel: \"headerPanel\"\r\n};\r\nvar VIEW_NAMES = [\"columnHeadersView\", \"rowsView\", \"footerView\", \"headerPanel\"];\r\nvar ContextMenuController = _uiGrid_core.default.ViewController.inherit({\r\n    init: function() {\r\n        this.createAction(\"onContextMenuPreparing\")\r\n    },\r\n    getContextMenuItems: function(dxEvent) {\r\n        if (!dxEvent) {\r\n            return false\r\n        }\r\n        var that = this;\r\n        var $targetElement = (0, _renderer.default)(dxEvent.target);\r\n        var $element;\r\n        var $targetRowElement;\r\n        var $targetCellElement;\r\n        var menuItems;\r\n        (0, _iterator.each)(VIEW_NAMES, function() {\r\n            var view = that.getView(this);\r\n            $element = view && view.element();\r\n            if ($element && ($element.is($targetElement) || $element.find($targetElement).length)) {\r\n                $targetCellElement = $targetElement.closest(\".dx-row > td, .dx-row > tr\");\r\n                $targetRowElement = $targetCellElement.parent();\r\n                var rowIndex = view.getRowIndex($targetRowElement);\r\n                var columnIndex = $targetCellElement[0] && $targetCellElement[0].cellIndex;\r\n                var rowOptions = $targetRowElement.data(\"options\");\r\n                var options = {\r\n                    event: dxEvent,\r\n                    targetElement: (0, _element.getPublicElement)($targetElement),\r\n                    target: viewName[this],\r\n                    rowIndex: rowIndex,\r\n                    row: view._getRows()[rowIndex],\r\n                    columnIndex: columnIndex,\r\n                    column: rowOptions && rowOptions.cells[columnIndex].column\r\n                };\r\n                options.items = view.getContextMenuItems && view.getContextMenuItems(options);\r\n                that.executeAction(\"onContextMenuPreparing\", options);\r\n                that._contextMenuPrepared(options);\r\n                menuItems = options.items;\r\n                if (menuItems) {\r\n                    return false\r\n                }\r\n            }\r\n        });\r\n        return menuItems\r\n    },\r\n    _contextMenuPrepared: _common.noop\r\n});\r\nvar ContextMenuView = _uiGrid_core.default.View.inherit({\r\n    _renderCore: function() {\r\n        var that = this;\r\n        var $element = that.element().addClass(CONTEXT_MENU);\r\n        this.setAria(\"role\", \"presentation\", $element);\r\n        this._createComponent($element, _context_menu.default, {\r\n            onPositioning: function(actionArgs) {\r\n                var event = actionArgs.event;\r\n                var contextMenuInstance = actionArgs.component;\r\n                var items = that.getController(\"contextMenu\").getContextMenuItems(event);\r\n                if (items) {\r\n                    contextMenuInstance.option(\"items\", items);\r\n                    event.stopPropagation()\r\n                } else {\r\n                    actionArgs.cancel = true\r\n                }\r\n            },\r\n            onItemClick: function(params) {\r\n                params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n            },\r\n            cssClass: that.getWidgetContainerClass(),\r\n            target: that.component.$element()\r\n        })\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            onContextMenuPreparing: null\r\n        }\r\n    },\r\n    controllers: {\r\n        contextMenu: ContextMenuController\r\n    },\r\n    views: {\r\n        contextMenuView: ContextMenuView\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/visibility_change.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.triggerResizeEvent = exports.triggerHidingEvent = exports.triggerShownEvent = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"./core/events_engine\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar triggerVisibilityChangeEvent = function(eventName) {\r\n    var VISIBILITY_CHANGE_SELECTOR = \".dx-visibility-change-handler\";\r\n    return function(element) {\r\n        var $element = (0, _renderer.default)(element || \"body\");\r\n        var changeHandlers = $element.filter(VISIBILITY_CHANGE_SELECTOR).add($element.find(VISIBILITY_CHANGE_SELECTOR));\r\n        for (var i = 0; i < changeHandlers.length; i++) {\r\n            _events_engine.default.triggerHandler(changeHandlers[i], eventName)\r\n        }\r\n    }\r\n};\r\nvar triggerShownEvent = triggerVisibilityChangeEvent(\"dxshown\");\r\nexports.triggerShownEvent = triggerShownEvent;\r\nvar triggerHidingEvent = triggerVisibilityChangeEvent(\"dxhiding\");\r\nexports.triggerHidingEvent = triggerHidingEvent;\r\nvar triggerResizeEvent = triggerVisibilityChangeEvent(\"dxresize\");\r\nexports.triggerResizeEvent = triggerResizeEvent;\r\n","/**\r\n * DevExtreme (ui/text_box/ui.text_editor.mask.strategy.default.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _uiText_editorMaskStrategy = _interopRequireDefault(require(\"./ui.text_editor.mask.strategy.base\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar BACKSPACE_INPUT_TYPE = \"deleteContentBackward\";\r\nvar EMPTY_CHAR = \" \";\r\nvar DefaultMaskStrategy = function(_BaseMaskStrategy) {\r\n    _inherits(DefaultMaskStrategy, _BaseMaskStrategy);\r\n    var _super = _createSuper(DefaultMaskStrategy);\r\n\r\n    function DefaultMaskStrategy() {\r\n        _classCallCheck(this, DefaultMaskStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(DefaultMaskStrategy, [{\r\n        key: \"_getStrategyName\",\r\n        value: function() {\r\n            return \"default\"\r\n        }\r\n    }, {\r\n        key: \"getHandleEventNames\",\r\n        value: function() {\r\n            return [].concat(_toConsumableArray(_get(_getPrototypeOf(DefaultMaskStrategy.prototype), \"getHandleEventNames\", this).call(this)), [\"keyPress\"])\r\n        }\r\n    }, {\r\n        key: \"_keyPressHandler\",\r\n        value: function(event) {\r\n            if (this._keyPressHandled) {\r\n                return\r\n            }\r\n            this._keyPressHandled = true;\r\n            if (this.editor._isControlKeyFired(event)) {\r\n                return\r\n            }\r\n            var editor = this.editor;\r\n            editor._maskKeyHandler(event, function() {\r\n                return editor._handleKey((0, _index.getChar)(event))\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_inputHandler\",\r\n        value: function(event) {\r\n            if (this._backspaceInputHandled(event.originalEvent && event.originalEvent.inputType)) {\r\n                this._handleBackspaceInput(event)\r\n            }\r\n            if (event.originalEvent) {\r\n                this._autoFillHandler(event)\r\n            }\r\n            if (this._keyPressHandled) {\r\n                return\r\n            }\r\n            this._keyPressHandled = true;\r\n            var inputValue = this.editorInput().val();\r\n            var caret = this.editorCaret();\r\n            if (!caret.end) {\r\n                return\r\n            }\r\n            caret.start = caret.end - 1;\r\n            var oldValue = inputValue.substring(0, caret.start) + inputValue.substring(caret.end);\r\n            var char = inputValue[caret.start];\r\n            var editor = this.editor;\r\n            this.editorInput().val(oldValue);\r\n            editor._caret({\r\n                start: caret.start,\r\n                end: caret.start\r\n            });\r\n            editor._maskKeyHandler(event, function() {\r\n                return editor._handleKey(char)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_backspaceHandler\",\r\n        value: function(event) {\r\n            var _this = this;\r\n            var editor = this.editor;\r\n            this._keyPressHandled = true;\r\n            var afterBackspaceHandler = function(needAdjustCaret, callBack) {\r\n                if (needAdjustCaret) {\r\n                    editor._direction(_this.DIRECTION.FORWARD);\r\n                    editor._adjustCaret()\r\n                }\r\n                var currentCaret = _this.editorCaret();\r\n                return new _promise.default(function(resolve) {\r\n                    clearTimeout(_this._backspaceHandlerTimeout);\r\n                    _this._backspaceHandlerTimeout = setTimeout(function() {\r\n                        callBack(currentCaret);\r\n                        resolve()\r\n                    })\r\n                })\r\n            };\r\n            editor._maskKeyHandler(event, function() {\r\n                if (editor._hasSelection()) {\r\n                    return afterBackspaceHandler(true, function(currentCaret) {\r\n                        editor._displayMask(currentCaret);\r\n                        editor._maskRulesChain.reset()\r\n                    })\r\n                }\r\n                if (editor._tryMoveCaretBackward()) {\r\n                    return afterBackspaceHandler(false, function(currentCaret) {\r\n                        _this.editorCaret(currentCaret)\r\n                    })\r\n                }\r\n                editor._handleKey(EMPTY_CHAR, _this.DIRECTION.BACKWARD);\r\n                return afterBackspaceHandler(true, function(currentCaret) {\r\n                    editor._displayMask(currentCaret);\r\n                    editor._maskRulesChain.reset()\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_backspaceInputHandled\",\r\n        value: function(inputType) {\r\n            return inputType === BACKSPACE_INPUT_TYPE && !this._keyPressHandled\r\n        }\r\n    }, {\r\n        key: \"_handleBackspaceInput\",\r\n        value: function(event) {\r\n            var _this$editorCaret = this.editorCaret(),\r\n                start = _this$editorCaret.start,\r\n                end = _this$editorCaret.end;\r\n            this.editorCaret({\r\n                start: start + 1,\r\n                end: end + 1\r\n            });\r\n            this._backspaceHandler(event)\r\n        }\r\n    }]);\r\n    return DefaultMaskStrategy\r\n}(_uiText_editorMaskStrategy.default);\r\nvar _default = DefaultMaskStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/map/provider.dynamic.google.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _provider = _interopRequireDefault(require(\"./provider.dynamic\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\nvar _ajax = _interopRequireDefault(require(\"../../core/utils/ajax\"));\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar GOOGLE_MAP_READY = \"_googleScriptReady\";\r\nvar GOOGLE_URL = \"https://maps.googleapis.com/maps/api/js?callback=\" + GOOGLE_MAP_READY;\r\nvar INFO_WINDOW_CLASS = \"gm-style-iw\";\r\nvar CustomMarker;\r\nvar initCustomMarkerClass = function() {\r\n    CustomMarker = function(options) {\r\n        this._position = options.position;\r\n        this._offset = options.offset;\r\n        this._$overlayContainer = (0, _renderer.default)(\"<div>\").css({\r\n            position: \"absolute\",\r\n            display: \"none\",\r\n            cursor: \"pointer\"\r\n        }).append(options.html);\r\n        this.setMap(options.map)\r\n    };\r\n    CustomMarker.prototype = new google.maps.OverlayView;\r\n    CustomMarker.prototype.onAdd = function() {\r\n        var $pane = (0, _renderer.default)(this.getPanes().overlayMouseTarget);\r\n        $pane.append(this._$overlayContainer);\r\n        this._clickListener = google.maps.event.addDomListener(this._$overlayContainer.get(0), \"click\", function(e) {\r\n            google.maps.event.trigger(this, \"click\");\r\n            e.preventDefault()\r\n        }.bind(this));\r\n        this.draw()\r\n    };\r\n    CustomMarker.prototype.onRemove = function() {\r\n        google.maps.event.removeListener(this._clickListener);\r\n        this._$overlayContainer.remove()\r\n    };\r\n    CustomMarker.prototype.draw = function() {\r\n        var position = this.getProjection().fromLatLngToDivPixel(this._position);\r\n        this._$overlayContainer.css({\r\n            left: position.x + this._offset.left,\r\n            top: position.y + this._offset.top,\r\n            display: \"block\"\r\n        })\r\n    }\r\n};\r\nvar googleMapsLoaded = function() {\r\n    return window.google && window.google.maps\r\n};\r\nvar googleMapsLoader;\r\nvar GoogleProvider = _provider.default.inherit({\r\n    _mapType: function(type) {\r\n        var mapTypes = {\r\n            hybrid: google.maps.MapTypeId.HYBRID,\r\n            roadmap: google.maps.MapTypeId.ROADMAP,\r\n            satellite: google.maps.MapTypeId.SATELLITE\r\n        };\r\n        return mapTypes[type] || mapTypes.hybrid\r\n    },\r\n    _movementMode: function(type) {\r\n        var movementTypes = {\r\n            driving: google.maps.TravelMode.DRIVING,\r\n            walking: google.maps.TravelMode.WALKING\r\n        };\r\n        return movementTypes[type] || movementTypes.driving\r\n    },\r\n    _resolveLocation: function(location) {\r\n        return new _promise.default(function(resolve) {\r\n            var latLng = this._getLatLng(location);\r\n            if (latLng) {\r\n                resolve(new google.maps.LatLng(latLng.lat, latLng.lng))\r\n            } else {\r\n                this._geocodeLocation(location).then(function(geocodedLocation) {\r\n                    resolve(geocodedLocation)\r\n                })\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _geocodedLocations: {},\r\n    _geocodeLocationImpl: function(location) {\r\n        return new _promise.default(function(resolve) {\r\n            if (!(0, _type.isDefined)(location)) {\r\n                resolve(new google.maps.LatLng(0, 0));\r\n                return\r\n            }\r\n            var geocoder = new google.maps.Geocoder;\r\n            geocoder.geocode({\r\n                address: location\r\n            }, function(results, status) {\r\n                if (status === google.maps.GeocoderStatus.OK) {\r\n                    resolve(results[0].geometry.location)\r\n                } else {\r\n                    _ui.default.log(\"W1006\", status);\r\n                    resolve(new google.maps.LatLng(0, 0))\r\n                }\r\n            })\r\n        })\r\n    },\r\n    _normalizeLocation: function(location) {\r\n        return {\r\n            lat: location.lat(),\r\n            lng: location.lng()\r\n        }\r\n    },\r\n    _normalizeLocationRect: function(locationRect) {\r\n        return {\r\n            northEast: this._normalizeLocation(locationRect.getNorthEast()),\r\n            southWest: this._normalizeLocation(locationRect.getSouthWest())\r\n        }\r\n    },\r\n    _loadImpl: function() {\r\n        return new _promise.default(function(resolve) {\r\n            if (googleMapsLoaded()) {\r\n                resolve()\r\n            } else {\r\n                if (!googleMapsLoader) {\r\n                    googleMapsLoader = this._loadMapScript()\r\n                }\r\n                googleMapsLoader.then(function() {\r\n                    if (googleMapsLoaded()) {\r\n                        resolve();\r\n                        return\r\n                    }\r\n                    this._loadMapScript().then(resolve)\r\n                }.bind(this))\r\n            }\r\n        }.bind(this)).then(function() {\r\n            initCustomMarkerClass()\r\n        })\r\n    },\r\n    _loadMapScript: function() {\r\n        return new _promise.default(function(resolve) {\r\n            var key = this._keyOption(\"google\");\r\n            window[GOOGLE_MAP_READY] = resolve;\r\n            _ajax.default.sendRequest({\r\n                url: GOOGLE_URL + (key ? \"&key=\" + key : \"\"),\r\n                dataType: \"script\"\r\n            })\r\n        }.bind(this)).then(function() {\r\n            try {\r\n                delete window[GOOGLE_MAP_READY]\r\n            } catch (e) {\r\n                window[GOOGLE_MAP_READY] = void 0\r\n            }\r\n        })\r\n    },\r\n    _init: function() {\r\n        return new _promise.default(function(resolve) {\r\n            this._resolveLocation(this._option(\"center\")).then(function(center) {\r\n                var showDefaultUI = this._option(\"controls\");\r\n                this._map = new google.maps.Map(this._$container[0], {\r\n                    zoom: this._option(\"zoom\"),\r\n                    center: center,\r\n                    disableDefaultUI: !showDefaultUI\r\n                });\r\n                var listener = google.maps.event.addListener(this._map, \"idle\", function() {\r\n                    resolve(listener)\r\n                })\r\n            }.bind(this))\r\n        }.bind(this)).then(function(listener) {\r\n            google.maps.event.removeListener(listener)\r\n        })\r\n    },\r\n    _attachHandlers: function() {\r\n        this._boundsChangeListener = google.maps.event.addListener(this._map, \"bounds_changed\", this._boundsChangeHandler.bind(this));\r\n        this._clickListener = google.maps.event.addListener(this._map, \"click\", this._clickActionHandler.bind(this))\r\n    },\r\n    _boundsChangeHandler: function() {\r\n        var bounds = this._map.getBounds();\r\n        this._option(\"bounds\", this._normalizeLocationRect(bounds));\r\n        var center = this._map.getCenter();\r\n        this._option(\"center\", this._normalizeLocation(center));\r\n        if (!this._preventZoomChangeEvent) {\r\n            this._option(\"zoom\", this._map.getZoom())\r\n        }\r\n    },\r\n    _clickActionHandler: function(e) {\r\n        this._fireClickAction({\r\n            location: this._normalizeLocation(e.latLng)\r\n        })\r\n    },\r\n    updateDimensions: function() {\r\n        var center = this._option(\"center\");\r\n        google.maps.event.trigger(this._map, \"resize\");\r\n        this._option(\"center\", center);\r\n        return this.updateCenter()\r\n    },\r\n    updateMapType: function() {\r\n        this._map.setMapTypeId(this._mapType(this._option(\"type\")));\r\n        return _promise.default.resolve()\r\n    },\r\n    updateBounds: function() {\r\n        return _promise.default.all([this._resolveLocation(this._option(\"bounds.northEast\")), this._resolveLocation(this._option(\"bounds.southWest\"))]).then(function(result) {\r\n            var bounds = new google.maps.LatLngBounds;\r\n            bounds.extend(result[0]);\r\n            bounds.extend(result[1]);\r\n            this._map.fitBounds(bounds)\r\n        }.bind(this))\r\n    },\r\n    updateCenter: function() {\r\n        return this._resolveLocation(this._option(\"center\")).then(function(center) {\r\n            this._map.setCenter(center);\r\n            this._option(\"center\", this._normalizeLocation(center))\r\n        }.bind(this))\r\n    },\r\n    updateZoom: function() {\r\n        this._map.setZoom(this._option(\"zoom\"));\r\n        return _promise.default.resolve()\r\n    },\r\n    updateControls: function() {\r\n        var showDefaultUI = this._option(\"controls\");\r\n        this._map.setOptions({\r\n            disableDefaultUI: !showDefaultUI\r\n        });\r\n        return _promise.default.resolve()\r\n    },\r\n    isEventsCanceled: function(e) {\r\n        var gestureHandling = this._map && this._map.get(\"gestureHandling\");\r\n        var isInfoWindowContent = (0, _renderer.default)(e.target).closest(\".\".concat(INFO_WINDOW_CLASS)).length > 0;\r\n        if (isInfoWindowContent || \"desktop\" !== _devices.default.real().deviceType && \"cooperative\" === gestureHandling) {\r\n            return false\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _renderMarker: function(options) {\r\n        return this._resolveLocation(options.location).then(function(location) {\r\n            var marker;\r\n            if (options.html) {\r\n                marker = new CustomMarker({\r\n                    map: this._map,\r\n                    position: location,\r\n                    html: options.html,\r\n                    offset: (0, _extend.extend)({\r\n                        top: 0,\r\n                        left: 0\r\n                    }, options.htmlOffset)\r\n                })\r\n            } else {\r\n                marker = new google.maps.Marker({\r\n                    position: location,\r\n                    map: this._map,\r\n                    icon: options.iconSrc || this._option(\"markerIconSrc\")\r\n                })\r\n            }\r\n            var infoWindow = this._renderTooltip(marker, options.tooltip);\r\n            var listener;\r\n            if (options.onClick || options.tooltip) {\r\n                var markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop);\r\n                var markerNormalizedLocation = this._normalizeLocation(location);\r\n                listener = google.maps.event.addListener(marker, \"click\", function() {\r\n                    markerClickAction({\r\n                        location: markerNormalizedLocation\r\n                    });\r\n                    if (infoWindow) {\r\n                        infoWindow.open(this._map, marker)\r\n                    }\r\n                }.bind(this))\r\n            }\r\n            return {\r\n                location: location,\r\n                marker: marker,\r\n                listener: listener\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _renderTooltip: function(marker, options) {\r\n        if (!options) {\r\n            return\r\n        }\r\n        options = this._parseTooltipOptions(options);\r\n        var infoWindow = new google.maps.InfoWindow({\r\n            content: options.text\r\n        });\r\n        if (options.visible) {\r\n            infoWindow.open(this._map, marker)\r\n        }\r\n        return infoWindow\r\n    },\r\n    _destroyMarker: function(marker) {\r\n        marker.marker.setMap(null);\r\n        if (marker.listener) {\r\n            google.maps.event.removeListener(marker.listener)\r\n        }\r\n    },\r\n    _renderRoute: function(options) {\r\n        return _promise.default.all((0, _iterator.map)(options.locations, function(point) {\r\n            return this._resolveLocation(point)\r\n        }.bind(this))).then(function(locations) {\r\n            return new _promise.default(function(resolve) {\r\n                var origin = locations.shift();\r\n                var destination = locations.pop();\r\n                var waypoints = (0, _iterator.map)(locations, function(location) {\r\n                    return {\r\n                        location: location,\r\n                        stopover: true\r\n                    }\r\n                });\r\n                var request = {\r\n                    origin: origin,\r\n                    destination: destination,\r\n                    waypoints: waypoints,\r\n                    optimizeWaypoints: true,\r\n                    travelMode: this._movementMode(options.mode)\r\n                };\r\n                (new google.maps.DirectionsService).route(request, function(response, status) {\r\n                    if (status === google.maps.DirectionsStatus.OK) {\r\n                        var color = new _color.default(options.color || this._defaultRouteColor()).toHex();\r\n                        var directionOptions = {\r\n                            directions: response,\r\n                            map: this._map,\r\n                            suppressMarkers: true,\r\n                            preserveViewport: true,\r\n                            polylineOptions: {\r\n                                strokeWeight: options.weight || this._defaultRouteWeight(),\r\n                                strokeOpacity: options.opacity || this._defaultRouteOpacity(),\r\n                                strokeColor: color\r\n                            }\r\n                        };\r\n                        var route = new google.maps.DirectionsRenderer(directionOptions);\r\n                        var bounds = response.routes[0].bounds;\r\n                        resolve({\r\n                            instance: route,\r\n                            northEast: bounds.getNorthEast(),\r\n                            southWest: bounds.getSouthWest()\r\n                        })\r\n                    } else {\r\n                        _ui.default.log(\"W1006\", status);\r\n                        resolve({\r\n                            instance: new google.maps.DirectionsRenderer({})\r\n                        })\r\n                    }\r\n                }.bind(this))\r\n            }.bind(this))\r\n        }.bind(this))\r\n    },\r\n    _destroyRoute: function(routeObject) {\r\n        routeObject.instance.setMap(null)\r\n    },\r\n    _fitBounds: function() {\r\n        this._updateBounds();\r\n        if (this._bounds && this._option(\"autoAdjust\")) {\r\n            var zoomBeforeFitting = this._map.getZoom();\r\n            this._preventZoomChangeEvent = true;\r\n            this._map.fitBounds(this._bounds);\r\n            this._boundsChangeHandler();\r\n            var zoomAfterFitting = this._map.getZoom();\r\n            if (zoomBeforeFitting < zoomAfterFitting) {\r\n                this._map.setZoom(zoomBeforeFitting)\r\n            } else {\r\n                this._option(\"zoom\", zoomAfterFitting)\r\n            }\r\n            delete this._preventZoomChangeEvent\r\n        }\r\n        return _promise.default.resolve()\r\n    },\r\n    _extendBounds: function(location) {\r\n        if (this._bounds) {\r\n            this._bounds.extend(location)\r\n        } else {\r\n            this._bounds = new google.maps.LatLngBounds;\r\n            this._bounds.extend(location)\r\n        }\r\n    },\r\n    clean: function() {\r\n        if (this._map) {\r\n            google.maps.event.removeListener(this._boundsChangeListener);\r\n            google.maps.event.removeListener(this._clickListener);\r\n            this._clearMarkers();\r\n            this._clearRoutes();\r\n            delete this._map;\r\n            this._$container.empty()\r\n        }\r\n        return _promise.default.resolve()\r\n    }\r\n});\r\nvar _default = GoogleProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.static.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit2 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar STATIC_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-static-delete-button-container\";\r\nvar STATIC_DELETE_BUTTON_CLASS = \"dx-list-static-delete-button\";\r\n(0, _uiListEdit.register)(\"delete\", \"static\", _uiListEdit2.default.inherit({\r\n    afterBag: function(config) {\r\n        var $itemElement = config.$itemElement;\r\n        var $container = config.$container;\r\n        var $button = (0, _renderer.default)(\"<div>\").addClass(STATIC_DELETE_BUTTON_CLASS);\r\n        this._list._createComponent($button, _button.default, {\r\n            icon: \"remove\",\r\n            onClick: function(args) {\r\n                args.event.stopPropagation();\r\n                this._deleteItem($itemElement)\r\n            }.bind(this),\r\n            integrationOptions: {}\r\n        });\r\n        $container.addClass(STATIC_DELETE_BUTTON_CONTAINER_CLASS).append($button)\r\n    },\r\n    _deleteItem: function($itemElement) {\r\n        if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            return\r\n        }\r\n        this._list.deleteItem($itemElement)\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.focus.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.focus\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction findIndex(items, callback) {\r\n    var result = -1;\r\n    items.forEach(function(node, index) {\r\n        if (callback(node)) {\r\n            result = index\r\n        }\r\n    });\r\n    return result\r\n}\r\n_uiTree_list.default.registerModule(\"focus\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                changeRowExpand: function(key) {\r\n                    if (this.option(\"focusedRowEnabled\") && this.isRowExpanded(key)) {\r\n                        if (this._isFocusedRowInside(key)) {\r\n                            this.option(\"focusedRowKey\", key)\r\n                        }\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _isFocusedRowInside: function(parentKey) {\r\n                    var focusedRowKey = this.option(\"focusedRowKey\");\r\n                    var rowIndex = this.getRowIndexByKey(focusedRowKey);\r\n                    var focusedRow = rowIndex >= 0 && this.getVisibleRows()[rowIndex];\r\n                    var parent = focusedRow && focusedRow.node.parent;\r\n                    while (parent) {\r\n                        if (parent.key === parentKey) {\r\n                            return true\r\n                        }\r\n                        parent = parent.parent\r\n                    }\r\n                    return false\r\n                },\r\n                getParentKey: function(key) {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var node = that.getNodeByKey(key);\r\n                    var d = new _deferred.Deferred;\r\n                    if (node) {\r\n                        d.resolve(node.parent ? node.parent.key : void 0)\r\n                    } else {\r\n                        dataSource.load({\r\n                            filter: [dataSource.getKeyExpr(), \"=\", key]\r\n                        }).done(function(items) {\r\n                            var parentData = items[0];\r\n                            if (parentData) {\r\n                                d.resolve(dataSource.parentKeyOf(parentData))\r\n                            } else {\r\n                                d.reject()\r\n                            }\r\n                        }).fail(d.reject)\r\n                    }\r\n                    return d.promise()\r\n                },\r\n                expandAscendants: function(key) {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var d = new _deferred.Deferred;\r\n                    that.getParentKey(key).done(function(parentKey) {\r\n                        if (dataSource && void 0 !== parentKey && parentKey !== that.option(\"rootValue\")) {\r\n                            dataSource._isNodesInitializing = true;\r\n                            that.expandRow(parentKey);\r\n                            dataSource._isNodesInitializing = false;\r\n                            that.expandAscendants(parentKey).done(d.resolve).fail(d.reject)\r\n                        } else {\r\n                            d.resolve()\r\n                        }\r\n                    }).fail(d.reject);\r\n                    return d.promise()\r\n                },\r\n                getPageIndexByKey: function(key) {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var d = new _deferred.Deferred;\r\n                    that.expandAscendants(key).done(function() {\r\n                        dataSource.load({\r\n                            filter: that.getCombinedFilter(),\r\n                            sort: that.getController(\"columns\").getSortDataSourceParameters(!dataSource.remoteOperations().sorting),\r\n                            parentIds: []\r\n                        }).done(function(nodes) {\r\n                            var offset = findIndex(nodes, function(node) {\r\n                                return that.keyOf(node.data) === key\r\n                            });\r\n                            var pageIndex = that.pageIndex();\r\n                            if (offset >= 0) {\r\n                                pageIndex = Math.floor(offset / that.pageSize())\r\n                            }\r\n                            d.resolve(pageIndex)\r\n                        }).fail(d.reject)\r\n                    }).fail(d.reject);\r\n                    return d.promise()\r\n                }\r\n            }\r\n        }\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createOffsetFilter = createOffsetFilter;\r\nexports.GroupingHelper = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction createOffsetFilter(path, storeLoadOptions) {\r\n    var groups = _utils.default.normalizeSortingInfo(storeLoadOptions.group);\r\n    var filter = [];\r\n    for (var i = 0; i < path.length; i++) {\r\n        var filterElement = [];\r\n        for (var j = 0; j <= i; j++) {\r\n            var selector = groups[j].selector;\r\n            if (i === j && (null === path[j] || false === path[j] || true === path[j])) {\r\n                if (false === path[j]) {\r\n                    filterElement.push([selector, \"=\", groups[j].desc ? true : null])\r\n                } else {\r\n                    if (path[j] ? !groups[j].desc : groups[j].desc) {\r\n                        filterElement.push([selector, \"<>\", path[j]])\r\n                    } else {\r\n                        filterElement.push([selector, \"<>\", null]);\r\n                        filterElement.push([selector, \"=\", null])\r\n                    }\r\n                }\r\n            } else {\r\n                var currentFilter = [selector, i === j ? groups[j].desc ? \">\" : \"<\" : \"=\", path[j]];\r\n                if (\"<\" === currentFilter[1]) {\r\n                    filterElement.push([currentFilter, \"or\", [selector, \"=\", null]])\r\n                } else {\r\n                    filterElement.push(currentFilter)\r\n                }\r\n            }\r\n        }\r\n        filter.push(_uiData_grid.default.combineFilters(filterElement))\r\n    }\r\n    filter = _uiData_grid.default.combineFilters(filter, \"or\");\r\n    return _uiData_grid.default.combineFilters([filter, storeLoadOptions.filter])\r\n}\r\nvar GroupingHelper = _class.default.inherit(function() {\r\n    var findGroupInfoByKey = function(groupsInfo, key) {\r\n        var hash = groupsInfo.hash;\r\n        return hash && hash[JSON.stringify(key)]\r\n    };\r\n    var getGroupInfoIndexByOffset = function(groupsInfo, offset) {\r\n        var leftIndex = 0;\r\n        var rightIndex = groupsInfo.length - 1;\r\n        if (!groupsInfo.length) {\r\n            return 0\r\n        }\r\n        do {\r\n            var middleIndex = rightIndex + leftIndex >> 1;\r\n            if (groupsInfo[middleIndex].offset > offset) {\r\n                rightIndex = middleIndex\r\n            } else {\r\n                leftIndex = middleIndex\r\n            }\r\n        } while (rightIndex - leftIndex > 1);\r\n        var index;\r\n        for (index = leftIndex; index <= rightIndex; index++) {\r\n            if (groupsInfo[index].offset > offset) {\r\n                break\r\n            }\r\n        }\r\n        return index\r\n    };\r\n    var cleanGroupsInfo = function cleanGroupsInfo(groupsInfo, groupIndex, groupsCount) {\r\n        for (var i = 0; i < groupsInfo.length; i++) {\r\n            if (groupIndex + 1 >= groupsCount) {\r\n                groupsInfo[i].children = []\r\n            } else {\r\n                cleanGroupsInfo(groupsInfo[i].children, groupIndex + 1, groupsCount)\r\n            }\r\n        }\r\n    };\r\n    var calculateItemsCount = function calculateItemsCount(that, items, groupsCount) {\r\n        var result = 0;\r\n        if (items) {\r\n            if (!groupsCount) {\r\n                result = items.length\r\n            } else {\r\n                for (var i = 0; i < items.length; i++) {\r\n                    if (that.isGroupItemCountable(items[i])) {\r\n                        result++\r\n                    }\r\n                    result += calculateItemsCount(that, items[i].items, groupsCount - 1)\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    };\r\n    return {\r\n        ctor: function(dataSourceAdapter) {\r\n            this._dataSource = dataSourceAdapter;\r\n            this.reset()\r\n        },\r\n        reset: function() {\r\n            this._groupsInfo = [];\r\n            this._totalCountCorrection = 0\r\n        },\r\n        totalCountCorrection: function() {\r\n            return this._totalCountCorrection\r\n        },\r\n        updateTotalItemsCount: function(totalCountCorrection) {\r\n            this._totalCountCorrection = totalCountCorrection || 0\r\n        },\r\n        isGroupItemCountable: function(item) {\r\n            return !this._isVirtualPaging() || !item.isContinuation\r\n        },\r\n        _isVirtualPaging: function() {\r\n            var scrollingMode = this._dataSource.option(\"scrolling.mode\");\r\n            return \"virtual\" === scrollingMode || \"infinite\" === scrollingMode\r\n        },\r\n        itemsCount: function itemsCount() {\r\n            var dataSourceAdapter = this._dataSource;\r\n            var dataSource = dataSourceAdapter._dataSource;\r\n            var groupCount = _uiData_grid.default.normalizeSortingInfo(dataSource.group() || []).length;\r\n            var itemsCount = calculateItemsCount(this, dataSource.items(), groupCount);\r\n            return itemsCount\r\n        },\r\n        foreachGroups: function(callback, childrenAtFirst, foreachCollapsedGroups, updateOffsets, updateParentOffsets) {\r\n            var that = this;\r\n\r\n            function foreachGroupsCore(groupsInfo, callback, childrenAtFirst, parents) {\r\n                var callbackResults = [];\r\n\r\n                function executeCallback(callback, data, parents, callbackResults) {\r\n                    var callbackResult = data && callback(data, parents);\r\n                    callbackResult && callbackResults.push(callbackResult);\r\n                    return callbackResult\r\n                }\r\n                for (var i = 0; i < groupsInfo.length; i++) {\r\n                    parents.push(groupsInfo[i].data);\r\n                    if (!childrenAtFirst && false === executeCallback(callback, groupsInfo[i].data, parents, callbackResults)) {\r\n                        return false\r\n                    }\r\n                    if (!groupsInfo[i].data || groupsInfo[i].data.isExpanded || foreachCollapsedGroups) {\r\n                        var children = groupsInfo[i].children;\r\n                        var callbackResult = children.length && foreachGroupsCore(children, callback, childrenAtFirst, parents);\r\n                        callbackResult && callbackResults.push(callbackResult);\r\n                        if (false === callbackResult) {\r\n                            return false\r\n                        }\r\n                    }\r\n                    if (childrenAtFirst && false === executeCallback(callback, groupsInfo[i].data, parents, callbackResults)) {\r\n                        return false\r\n                    }\r\n                    if (!groupsInfo[i].data || groupsInfo[i].data.offset !== groupsInfo[i].offset) {\r\n                        updateOffsets = true\r\n                    }\r\n                    parents.pop()\r\n                }\r\n                var currentParents = updateParentOffsets && parents.slice(0);\r\n                return updateOffsets && _deferred.when.apply(_renderer.default, callbackResults).always(function() {\r\n                    that._updateGroupInfoOffsets(groupsInfo, currentParents)\r\n                })\r\n            }\r\n            return foreachGroupsCore(that._groupsInfo, callback, childrenAtFirst, [])\r\n        },\r\n        _updateGroupInfoOffsets: function(groupsInfo, parents) {\r\n            parents = parents || [];\r\n            for (var index = 0; index < groupsInfo.length; index++) {\r\n                var groupInfo = groupsInfo[index];\r\n                if (groupInfo.data && groupInfo.data.offset !== groupInfo.offset) {\r\n                    groupInfo.offset = groupInfo.data.offset;\r\n                    for (var parentIndex = 0; parentIndex < parents.length; parentIndex++) {\r\n                        parents[parentIndex].offset = groupInfo.offset\r\n                    }\r\n                }\r\n            }\r\n            groupsInfo.sort(function(a, b) {\r\n                return a.offset - b.offset\r\n            })\r\n        },\r\n        findGroupInfo: function(path) {\r\n            var that = this;\r\n            var groupInfo;\r\n            var groupsInfo = that._groupsInfo;\r\n            for (var pathIndex = 0; groupsInfo && pathIndex < path.length; pathIndex++) {\r\n                groupInfo = findGroupInfoByKey(groupsInfo, path[pathIndex]);\r\n                groupsInfo = groupInfo && groupInfo.children\r\n            }\r\n            return groupInfo && groupInfo.data\r\n        },\r\n        addGroupInfo: function(groupInfoData) {\r\n            var that = this;\r\n            var groupInfo;\r\n            var path = groupInfoData.path;\r\n            var groupsInfo = that._groupsInfo;\r\n            for (var pathIndex = 0; pathIndex < path.length; pathIndex++) {\r\n                groupInfo = findGroupInfoByKey(groupsInfo, path[pathIndex]);\r\n                if (!groupInfo) {\r\n                    groupInfo = {\r\n                        key: path[pathIndex],\r\n                        offset: groupInfoData.offset,\r\n                        data: {\r\n                            offset: groupInfoData.offset,\r\n                            isExpanded: true,\r\n                            path: path.slice(0, pathIndex + 1)\r\n                        },\r\n                        children: []\r\n                    };\r\n                    var index = getGroupInfoIndexByOffset(groupsInfo, groupInfoData.offset);\r\n                    groupsInfo.splice(index, 0, groupInfo);\r\n                    groupsInfo.hash = groupsInfo.hash || {};\r\n                    groupsInfo.hash[JSON.stringify(groupInfo.key)] = groupInfo\r\n                }\r\n                if (pathIndex === path.length - 1) {\r\n                    groupInfo.data = groupInfoData;\r\n                    if (groupInfo.offset !== groupInfoData.offset) {\r\n                        that._updateGroupInfoOffsets(groupsInfo)\r\n                    }\r\n                }\r\n                groupsInfo = groupInfo.children\r\n            }\r\n        },\r\n        allowCollapseAll: function() {\r\n            return true\r\n        },\r\n        refresh: function(options) {\r\n            var that = this;\r\n            var storeLoadOptions = options.storeLoadOptions;\r\n            var groups = _utils.default.normalizeSortingInfo(storeLoadOptions.group || []);\r\n            var oldGroups = \"_group\" in that ? _utils.default.normalizeSortingInfo(that._group || []) : groups;\r\n            var groupsCount = Math.min(oldGroups.length, groups.length);\r\n            that._group = storeLoadOptions.group;\r\n            for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\r\n                if (oldGroups[groupIndex].selector !== groups[groupIndex].selector) {\r\n                    groupsCount = groupIndex;\r\n                    break\r\n                }\r\n            }\r\n            if (!groupsCount) {\r\n                that.reset()\r\n            } else {\r\n                cleanGroupsInfo(that._groupsInfo, 0, groupsCount)\r\n            }\r\n        },\r\n        handleDataLoading: function() {},\r\n        handleDataLoaded: function(options, callBase) {\r\n            callBase(options)\r\n        },\r\n        handleDataLoadedCore: function(options, callBase) {\r\n            callBase(options)\r\n        }\r\n    }\r\n}());\r\nexports.GroupingHelper = GroupingHelper;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.strategy.grouped.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _uiCollection_widgetEditStrategy = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit.strategy.plain\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar SELECTION_SHIFT = 20;\r\nvar SELECTION_MASK = 2303;\r\nvar combineIndex = function(indices) {\r\n    return (indices.group << SELECTION_SHIFT) + indices.item\r\n};\r\nvar splitIndex = function(combinedIndex) {\r\n    return {\r\n        group: combinedIndex >> SELECTION_SHIFT,\r\n        item: combinedIndex & SELECTION_MASK\r\n    }\r\n};\r\nvar GroupedEditStrategy = _uiCollection_widgetEditStrategy.default.inherit({\r\n    _groupElements: function() {\r\n        return this._collectionWidget._itemContainer().find(\".\" + LIST_GROUP_CLASS)\r\n    },\r\n    _groupItemElements: function($group) {\r\n        return $group.find(\".\" + LIST_ITEM_CLASS)\r\n    },\r\n    getIndexByItemData: function(itemData) {\r\n        var groups = this._collectionWidget.option(\"items\");\r\n        var index = false;\r\n        if (!itemData) {\r\n            return false\r\n        }\r\n        if (itemData.items && itemData.items.length) {\r\n            itemData = itemData.items[0]\r\n        }(0, _iterator.each)(groups, function(groupIndex, group) {\r\n            if (!group.items) {\r\n                return false\r\n            }(0, _iterator.each)(group.items, function(itemIndex, item) {\r\n                if (item !== itemData) {\r\n                    return true\r\n                }\r\n                index = {\r\n                    group: groupIndex,\r\n                    item: itemIndex\r\n                };\r\n                return false\r\n            });\r\n            if (index) {\r\n                return false\r\n            }\r\n        });\r\n        return index\r\n    },\r\n    getItemDataByIndex: function(index) {\r\n        var items = this._collectionWidget.option(\"items\");\r\n        if ((0, _type.isNumeric)(index)) {\r\n            return this.itemsGetter()[index]\r\n        }\r\n        return index && items[index.group] && items[index.group].items[index.item] || null\r\n    },\r\n    itemsGetter: function() {\r\n        var resultItems = [];\r\n        var items = this._collectionWidget.option(\"items\");\r\n        for (var i = 0; i < items.length; i++) {\r\n            if (items[i] && items[i].items) {\r\n                resultItems = resultItems.concat(items[i].items)\r\n            } else {\r\n                resultItems.push(items[i])\r\n            }\r\n        }\r\n        return resultItems\r\n    },\r\n    deleteItemAtIndex: function(index) {\r\n        var indices = splitIndex(index);\r\n        var itemGroup = this._collectionWidget.option(\"items\")[indices.group].items;\r\n        itemGroup.splice(indices.item, 1)\r\n    },\r\n    getKeysByItems: function(items) {\r\n        var plainItems = [];\r\n        var i;\r\n        for (i = 0; i < items.length; i++) {\r\n            if (items[i] && items[i].items) {\r\n                plainItems = plainItems.concat(items[i].items)\r\n            } else {\r\n                plainItems.push(items[i])\r\n            }\r\n        }\r\n        var result = [];\r\n        for (i = 0; i < plainItems.length; i++) {\r\n            result.push(this._collectionWidget.keyOf(plainItems[i]))\r\n        }\r\n        return result\r\n    },\r\n    getIndexByKey: function(key, items) {\r\n        var groups = items || this._collectionWidget.option(\"items\");\r\n        var index = -1;\r\n        var that = this;\r\n        (0, _iterator.each)(groups, function(groupIndex, group) {\r\n            if (!group.items) {\r\n                return\r\n            }\r\n            var keys = that.getKeysByItems(group.items);\r\n            (0, _iterator.each)(keys, function(keyIndex, itemKey) {\r\n                if (that._equalKeys(itemKey, key)) {\r\n                    index = {\r\n                        group: groupIndex,\r\n                        item: keyIndex\r\n                    };\r\n                    return false\r\n                }\r\n            });\r\n            if (index !== -1) {\r\n                return false\r\n            }\r\n        });\r\n        return index\r\n    },\r\n    _getGroups: function(items) {\r\n        var dataSource = this._collectionWidget.getDataSource();\r\n        var group = dataSource && dataSource.group();\r\n        if (group) {\r\n            return _store_helper.default.queryByOptions((0, _query.default)(items), {\r\n                group: group\r\n            }).toArray()\r\n        }\r\n        return this._collectionWidget.option(\"items\")\r\n    },\r\n    getItemsByKeys: function(keys, items) {\r\n        var result = [];\r\n        (0, _iterator.each)(keys, function(_, key) {\r\n            var getItemMeta = function(groups) {\r\n                var index = this.getIndexByKey(key, groups);\r\n                var group = index && groups[index.group];\r\n                if (!group) {\r\n                    return\r\n                }\r\n                return {\r\n                    groupKey: group.key,\r\n                    item: group.items[index.item]\r\n                }\r\n            }.bind(this);\r\n            var itemMeta = getItemMeta(this._getGroups(items));\r\n            if (!itemMeta) {\r\n                return\r\n            }\r\n            var groupKey = itemMeta.groupKey;\r\n            var item = itemMeta.item;\r\n            var selectedGroup;\r\n            (0, _iterator.each)(result, function(_, item) {\r\n                if (item.key === groupKey) {\r\n                    selectedGroup = item;\r\n                    return false\r\n                }\r\n            });\r\n            if (!selectedGroup) {\r\n                selectedGroup = {\r\n                    key: groupKey,\r\n                    items: []\r\n                };\r\n                result.push(selectedGroup)\r\n            }\r\n            selectedGroup.items.push(item)\r\n        }.bind(this));\r\n        return result\r\n    },\r\n    moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n        var items = this._collectionWidget.option(\"items\");\r\n        var movingIndices = splitIndex(movingIndex);\r\n        var destinationIndices = splitIndex(destinationIndex);\r\n        var movingItemGroup = items[movingIndices.group].items;\r\n        var destinationItemGroup = items[destinationIndices.group].items;\r\n        var movedItemData = movingItemGroup[movingIndices.item];\r\n        movingItemGroup.splice(movingIndices.item, 1);\r\n        destinationItemGroup.splice(destinationIndices.item, 0, movedItemData)\r\n    },\r\n    _isItemIndex: function(index) {\r\n        return index && (0, _type.isNumeric)(index.group) && (0, _type.isNumeric)(index.item)\r\n    },\r\n    _getNormalizedItemIndex: function(itemElement) {\r\n        var $item = (0, _renderer.default)(itemElement);\r\n        var $group = $item.closest(\".\" + LIST_GROUP_CLASS);\r\n        if (!$group.length) {\r\n            return -1\r\n        }\r\n        return combineIndex({\r\n            group: this._groupElements().index($group),\r\n            item: this._groupItemElements($group).index($item)\r\n        })\r\n    },\r\n    _normalizeItemIndex: function(index) {\r\n        return combineIndex(index)\r\n    },\r\n    _denormalizeItemIndex: function(index) {\r\n        return splitIndex(index)\r\n    },\r\n    _getItemByNormalizedIndex: function(index) {\r\n        var indices = splitIndex(index);\r\n        var $group = this._groupElements().eq(indices.group);\r\n        return this._groupItemElements($group).eq(indices.item)\r\n    },\r\n    _itemsFromSameParent: function(firstIndex, secondIndex) {\r\n        return splitIndex(firstIndex).group === splitIndex(secondIndex).group\r\n    }\r\n});\r\nvar _default = GroupedEditStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.selection.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _check_box = _interopRequireDefault(require(\"../check_box\"));\r\nvar _radio_button = _interopRequireDefault(require(\"../radio_group/radio_button\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit2 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SELECT_DECORATOR_ENABLED_CLASS = \"dx-list-select-decorator-enabled\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CLASS = \"dx-list-select-all\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS = \"dx-list-select-all-checkbox\";\r\nvar SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS = \"dx-list-select-all-label\";\r\nvar SELECT_CHECKBOX_CONTAINER_CLASS = \"dx-list-select-checkbox-container\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-list-select-checkbox\";\r\nvar SELECT_RADIO_BUTTON_CONTAINER_CLASS = \"dx-list-select-radiobutton-container\";\r\nvar SELECT_RADIO_BUTTON_CLASS = \"dx-list-select-radiobutton\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar CLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, \"dxListEditDecorator\");\r\n(0, _uiListEdit.register)(\"selection\", \"default\", _uiListEdit2.default.inherit({\r\n    _init: function() {\r\n        this.callBase.apply(this, arguments);\r\n        var selectionMode = this._list.option(\"selectionMode\");\r\n        this._singleStrategy = \"single\" === selectionMode;\r\n        this._containerClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CONTAINER_CLASS : SELECT_CHECKBOX_CONTAINER_CLASS;\r\n        this._controlClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CLASS : SELECT_CHECKBOX_CLASS;\r\n        this._controlWidget = this._singleStrategy ? _radio_button.default : _check_box.default;\r\n        this._list.$element().addClass(SELECT_DECORATOR_ENABLED_CLASS)\r\n    },\r\n    beforeBag: function(config) {\r\n        var $itemElement = config.$itemElement;\r\n        var $container = config.$container.addClass(this._containerClass);\r\n        var $control = (0, _renderer.default)(\"<div>\").addClass(this._controlClass).appendTo($container);\r\n        new this._controlWidget($control, (0, _extend.extend)(this._commonOptions(), {\r\n            value: this._isSelected($itemElement),\r\n            focusStateEnabled: false,\r\n            hoverStateEnabled: false,\r\n            onValueChanged: function(e) {\r\n                e.event && this._list._saveSelectionChangeEvent(e.event);\r\n                this._processCheckedState($itemElement, e.value);\r\n                e.event && e.event.stopPropagation()\r\n            }.bind(this)\r\n        }))\r\n    },\r\n    modifyElement: function(config) {\r\n        this.callBase.apply(this, arguments);\r\n        var $itemElement = config.$itemElement;\r\n        var control = this._controlWidget.getInstance($itemElement.find(\".\" + this._controlClass));\r\n        _events_engine.default.on($itemElement, \"stateChanged\", function(e, state) {\r\n            control.option(\"value\", state)\r\n        }.bind(this))\r\n    },\r\n    _updateSelectAllState: function() {\r\n        if (!this._$selectAll) {\r\n            return\r\n        }\r\n        this._selectAllCheckBox.option(\"value\", this._list.isSelectAll())\r\n    },\r\n    afterRender: function() {\r\n        if (\"all\" !== this._list.option(\"selectionMode\")) {\r\n            return\r\n        }\r\n        if (!this._$selectAll) {\r\n            this._renderSelectAll()\r\n        } else {\r\n            this._updateSelectAllState()\r\n        }\r\n    },\r\n    handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n        var moveFocusDown = !moveFocusUp;\r\n        var list = this._list;\r\n        var $selectAll = this._$selectAll;\r\n        var lastItemIndex = list._getLastItemIndex();\r\n        var isFocusOutOfList = moveFocusUp && 0 === currentFocusedIndex || moveFocusDown && currentFocusedIndex === lastItemIndex;\r\n        var hasSelectAllItem = !!$selectAll;\r\n        if (hasSelectAllItem && isFocusOutOfList) {\r\n            list.option(\"focusedElement\", $selectAll);\r\n            list.scrollToItem(list.option(\"focusedElement\"));\r\n            return true\r\n        }\r\n        return false\r\n    },\r\n    handleEnterPressing: function() {\r\n        if (this._$selectAll && this._$selectAll.hasClass(FOCUSED_STATE_CLASS)) {\r\n            this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"));\r\n            return true\r\n        }\r\n    },\r\n    _renderSelectAll: function() {\r\n        var $selectAll = this._$selectAll = (0, _renderer.default)(\"<div>\").addClass(SELECT_DECORATOR_SELECT_ALL_CLASS);\r\n        var list = this._list;\r\n        var downArrowHandler = list._supportedKeys().downArrow.bind(list);\r\n        this._selectAllCheckBox = list._createComponent((0, _renderer.default)(\"<div>\").addClass(SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS).appendTo($selectAll), _check_box.default, {\r\n            focusStateEnabled: false,\r\n            hoverStateEnabled: false\r\n        });\r\n        this._selectAllCheckBox.registerKeyHandler(\"downArrow\", downArrowHandler);\r\n        (0, _renderer.default)(\"<div>\").addClass(SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS).text(this._list.option(\"selectAllText\")).appendTo($selectAll);\r\n        this._list.itemsContainer().prepend($selectAll);\r\n        this._updateSelectAllState();\r\n        this._attachSelectAllHandler()\r\n    },\r\n    _attachSelectAllHandler: function() {\r\n        this._selectAllCheckBox.option(\"onValueChanged\", this._selectAllHandler.bind(this));\r\n        _events_engine.default.off(this._$selectAll, CLICK_EVENT_NAME);\r\n        _events_engine.default.on(this._$selectAll, CLICK_EVENT_NAME, this._selectAllClickHandler.bind(this))\r\n    },\r\n    _selectAllHandler: function(e) {\r\n        e.event && e.event.stopPropagation();\r\n        var isSelectedAll = this._selectAllCheckBox.option(\"value\");\r\n        var result = this._list._createActionByOption(\"onSelectAllValueChanged\")({\r\n            value: isSelectedAll\r\n        });\r\n        if (false === result) {\r\n            return\r\n        }\r\n        e.event && this._list._saveSelectionChangeEvent(e.event);\r\n        if (true === isSelectedAll) {\r\n            this._selectAllItems()\r\n        } else {\r\n            if (false === isSelectedAll) {\r\n                this._unselectAllItems()\r\n            }\r\n        }\r\n    },\r\n    _checkSelectAllCapability: function() {\r\n        var list = this._list;\r\n        var dataSource = list.getDataSource();\r\n        if (\"allPages\" === list.option(\"selectAllMode\") && list.option(\"grouped\") && (!dataSource || !dataSource.group())) {\r\n            _ui.default.log(\"W1010\");\r\n            return false\r\n        }\r\n        return true\r\n    },\r\n    _selectAllItems: function() {\r\n        if (!this._checkSelectAllCapability()) {\r\n            return\r\n        }\r\n        this._list._selection.selectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n    },\r\n    _unselectAllItems: function() {\r\n        if (!this._checkSelectAllCapability()) {\r\n            return\r\n        }\r\n        this._list._selection.deselectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n    },\r\n    _selectAllClickHandler: function(e) {\r\n        this._list._saveSelectionChangeEvent(e);\r\n        this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"))\r\n    },\r\n    _isSelected: function($itemElement) {\r\n        return this._list.isItemSelected($itemElement)\r\n    },\r\n    _processCheckedState: function($itemElement, checked) {\r\n        if (checked) {\r\n            this._list.selectItem($itemElement)\r\n        } else {\r\n            this._list.unselectItem($itemElement)\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._disposeSelectAll();\r\n        this._list.$element().removeClass(SELECT_DECORATOR_ENABLED_CLASS);\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _disposeSelectAll: function() {\r\n        if (this._$selectAll) {\r\n            this._$selectAll.remove();\r\n            this._$selectAll = null\r\n        }\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.isVerticalGroupOrientation = exports.getIsGroupedAllDayPanel = exports.getGroupCellClasses = exports.addHeightToStyle = exports.getKeyByGroup = exports.getKeyByDateAndGroup = void 0;\r\nvar _combine_classes = require(\"../../../utils/combine_classes\");\r\nvar _consts = require(\"../consts\");\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar getKeyByDateAndGroup = function(date, groupIndex) {\r\n    var key = date.getTime();\r\n    if (!groupIndex) {\r\n        return key.toString()\r\n    }\r\n    return (key + groupIndex).toString()\r\n};\r\nexports.getKeyByDateAndGroup = getKeyByDateAndGroup;\r\nvar getKeyByGroup = function(groupIndex) {\r\n    return groupIndex.toString()\r\n};\r\nexports.getKeyByGroup = getKeyByGroup;\r\nvar addHeightToStyle = function(height, style) {\r\n    var nextStyle = style || {};\r\n    return _objectSpread(_objectSpread({}, nextStyle), {}, {\r\n        height: height ? \"\".concat(height, \"px\") : nextStyle.height\r\n    })\r\n};\r\nexports.addHeightToStyle = addHeightToStyle;\r\nvar getGroupCellClasses = function() {\r\n    var isFirstGroupCell = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n    var isLastGroupCell = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n    var className = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"\";\r\n    return (0, _combine_classes.combineClasses)(_defineProperty({\r\n        \"dx-scheduler-first-group-cell\": isFirstGroupCell,\r\n        \"dx-scheduler-last-group-cell\": isLastGroupCell\r\n    }, className, true))\r\n};\r\nexports.getGroupCellClasses = getGroupCellClasses;\r\nvar getIsGroupedAllDayPanel = function(viewData, index) {\r\n    var _groupData$allDayPane;\r\n    var groupedData = viewData.groupedData;\r\n    var groupData = groupedData[index];\r\n    var isAllDayPanel = !!(null !== groupData && void 0 !== groupData && null !== (_groupData$allDayPane = groupData.allDayPanel) && void 0 !== _groupData$allDayPane && _groupData$allDayPane.length);\r\n    var isGroupedAllDayPanel = !!(null !== groupData && void 0 !== groupData && groupData.isGroupedAllDayPanel);\r\n    return isAllDayPanel && isGroupedAllDayPanel\r\n};\r\nexports.getIsGroupedAllDayPanel = getIsGroupedAllDayPanel;\r\nvar isVerticalGroupOrientation = function(groupOrientation) {\r\n    return groupOrientation === _consts.VERTICAL_GROUP_ORIENTATION\r\n};\r\nexports.isVerticalGroupOrientation = isVerticalGroupOrientation;\r\n","/**\r\n * DevExtreme (ui/progress_bar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _track_bar = _interopRequireDefault(require(\"./track_bar\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PROGRESSBAR_CLASS = \"dx-progressbar\";\r\nvar PROGRESSBAR_CONTAINER_CLASS = \"dx-progressbar-container\";\r\nvar PROGRESSBAR_RANGE_CONTAINER_CLASS = \"dx-progressbar-range-container\";\r\nvar PROGRESSBAR_RANGE_CLASS = \"dx-progressbar-range\";\r\nvar PROGRESSBAR_WRAPPER_CLASS = \"dx-progressbar-wrapper\";\r\nvar PROGRESSBAR_STATUS_CLASS = \"dx-progressbar-status\";\r\nvar PROGRESSBAR_INDETERMINATE_SEGMENT_CONTAINER = \"dx-progressbar-animating-container\";\r\nvar PROGRESSBAR_INDETERMINATE_SEGMENT = \"dx-progressbar-animating-segment\";\r\nvar ProgressBar = _track_bar.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: 0,\r\n            statusFormat: function(ratio) {\r\n                return \"Progress: \" + Math.round(100 * ratio) + \"%\"\r\n            },\r\n            showStatus: true,\r\n            onComplete: null,\r\n            activeStateEnabled: false,\r\n            statusPosition: \"bottom left\",\r\n            _animatingSegmentCount: 0\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function(_device) {\r\n                return \"android\" === _device.platform\r\n            },\r\n            options: {\r\n                _animatingSegmentCount: 2\r\n            }\r\n        }])\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderStatus();\r\n        this._createCompleteAction();\r\n        this.callBase();\r\n        this.$element().addClass(PROGRESSBAR_CLASS);\r\n        this._$wrapper.addClass(PROGRESSBAR_WRAPPER_CLASS);\r\n        this._$bar.addClass(PROGRESSBAR_CONTAINER_CLASS);\r\n        this.setAria(\"role\", \"progressbar\");\r\n        (0, _renderer.default)(\"<div>\").addClass(PROGRESSBAR_RANGE_CONTAINER_CLASS).appendTo(this._$wrapper).append(this._$bar);\r\n        this._$range.addClass(PROGRESSBAR_RANGE_CLASS);\r\n        this._toggleStatus(this.option(\"showStatus\"))\r\n    },\r\n    _createCompleteAction: function() {\r\n        this._completeAction = this._createActionByOption(\"onComplete\")\r\n    },\r\n    _renderStatus: function() {\r\n        this._$status = (0, _renderer.default)(\"<div>\").addClass(PROGRESSBAR_STATUS_CLASS)\r\n    },\r\n    _renderIndeterminateState: function() {\r\n        this._$segmentContainer = (0, _renderer.default)(\"<div>\").addClass(PROGRESSBAR_INDETERMINATE_SEGMENT_CONTAINER);\r\n        var segments = this.option(\"_animatingSegmentCount\");\r\n        for (var i = 0; i < segments; i++) {\r\n            (0, _renderer.default)(\"<div>\").addClass(PROGRESSBAR_INDETERMINATE_SEGMENT).addClass(PROGRESSBAR_INDETERMINATE_SEGMENT + \"-\" + (i + 1)).appendTo(this._$segmentContainer)\r\n        }\r\n        this._$segmentContainer.appendTo(this._$wrapper)\r\n    },\r\n    _toggleStatus: function(value) {\r\n        var splitPosition = this.option(\"statusPosition\").split(\" \");\r\n        if (value) {\r\n            if (\"top\" === splitPosition[0] || \"left\" === splitPosition[0]) {\r\n                this._$status.prependTo(this._$wrapper)\r\n            } else {\r\n                this._$status.appendTo(this._$wrapper)\r\n            }\r\n        } else {\r\n            this._$status.detach()\r\n        }\r\n        this._togglePositionClass()\r\n    },\r\n    _togglePositionClass: function() {\r\n        var position = this.option(\"statusPosition\");\r\n        var splitPosition = position.split(\" \");\r\n        this._$wrapper.removeClass(\"dx-position-top-left dx-position-top-right dx-position-bottom-left dx-position-bottom-right dx-position-left dx-position-right\");\r\n        var positionClass = \"dx-position-\" + splitPosition[0];\r\n        if (splitPosition[1]) {\r\n            positionClass += \"-\" + splitPosition[1]\r\n        }\r\n        this._$wrapper.addClass(positionClass)\r\n    },\r\n    _toggleIndeterminateState: function(value) {\r\n        if (value) {\r\n            this._renderIndeterminateState();\r\n            this._$bar.toggle(false)\r\n        } else {\r\n            this._$bar.toggle(true);\r\n            this._$segmentContainer.remove();\r\n            delete this._$segmentContainer\r\n        }\r\n    },\r\n    _renderValue: function() {\r\n        var val = this.option(\"value\");\r\n        var max = this.option(\"max\");\r\n        if (!val && 0 !== val) {\r\n            this._toggleIndeterminateState(true);\r\n            return\r\n        }\r\n        if (this._$segmentContainer) {\r\n            this._toggleIndeterminateState(false)\r\n        }\r\n        if (val === max) {\r\n            this._completeAction()\r\n        }\r\n        this.callBase();\r\n        this._setStatus()\r\n    },\r\n    _setStatus: function() {\r\n        var format = this.option(\"statusFormat\");\r\n        if ((0, _type.isFunction)(format)) {\r\n            format = format.bind(this)\r\n        } else {\r\n            format = function(value) {\r\n                return value\r\n            }\r\n        }\r\n        var statusText = format(this._currentRatio, this.option(\"value\"));\r\n        this._$status.text(statusText)\r\n    },\r\n    _dispose: function() {\r\n        this._$status.remove();\r\n        this.callBase()\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"statusFormat\":\r\n                this._setStatus();\r\n                break;\r\n            case \"showStatus\":\r\n                this._toggleStatus(args.value);\r\n                break;\r\n            case \"statusPosition\":\r\n                this._toggleStatus(this.option(\"showStatus\"));\r\n                break;\r\n            case \"onComplete\":\r\n                this._createCompleteAction();\r\n                break;\r\n            case \"_animatingSegmentCount\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxProgressBar\", ProgressBar);\r\nvar _default = ProgressBar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/core/themes/generic.greenmist.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar ACCENT_COLOR = \"#3cbab2\";\r\nvar BACKGROUND_COLOR = \"#f5f5f5\";\r\nvar TITLE_COLOR = \"#28484f\";\r\nvar SUBTITLE_COLOR = \"#7eb2be\";\r\nvar TEXT_COLOR = \"#657c80\";\r\nvar BORDER_COLOR = \"#dedede\";\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.greenmist\",\r\n    defaultPalette: \"Green Mist\",\r\n    backgroundColor: BACKGROUND_COLOR,\r\n    primaryTitleColor: TITLE_COLOR,\r\n    secondaryTitleColor: SUBTITLE_COLOR,\r\n    gridColor: BORDER_COLOR,\r\n    axisColor: TEXT_COLOR,\r\n    \"export\": {\r\n        backgroundColor: BACKGROUND_COLOR,\r\n        font: {\r\n            color: TITLE_COLOR\r\n        },\r\n        button: {\r\n            \"default\": {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#a2b4b8\",\r\n                backgroundColor: BACKGROUND_COLOR\r\n            },\r\n            hover: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#7f989e\",\r\n                backgroundColor: \"rgba(222, 222, 222, 0.4)\"\r\n            },\r\n            focus: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#5f777c\",\r\n                backgroundColor: \"rgba(222, 222, 222, 0.4)\"\r\n            },\r\n            active: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#5f777c\",\r\n                backgroundColor: \"rgba(222, 222, 222, 0.8)\"\r\n            }\r\n        }\r\n    },\r\n    legend: {\r\n        font: {\r\n            color: TEXT_COLOR\r\n        }\r\n    },\r\n    tooltip: {\r\n        color: \"#fff\",\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        font: {\r\n            color: TITLE_COLOR\r\n        }\r\n    },\r\n    \"chart:common\": {\r\n        commonSeriesSettings: {\r\n            label: {\r\n                border: {\r\n                    color: BORDER_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        color: \"#fff\",\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        font: {\r\n            color: TITLE_COLOR\r\n        }\r\n    },\r\n    chart: {\r\n        commonPaneSettings: {\r\n            border: {\r\n                color: BORDER_COLOR\r\n            }\r\n        },\r\n        commonAxisSettings: {\r\n            breakStyle: {\r\n                color: \"#c1c1c1\"\r\n            }\r\n        }\r\n    },\r\n    funnel: {\r\n        item: {\r\n            border: {\r\n                color: BACKGROUND_COLOR\r\n            }\r\n        }\r\n    },\r\n    sparkline: {\r\n        pointColor: BACKGROUND_COLOR,\r\n        minColor: \"#ffc852\",\r\n        maxColor: \"#f74a5e\"\r\n    },\r\n    treeMap: {\r\n        group: {\r\n            color: BORDER_COLOR,\r\n            label: {\r\n                font: {\r\n                    color: SUBTITLE_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    rangeSelector: {\r\n        shutter: {\r\n            color: BACKGROUND_COLOR\r\n        },\r\n        scale: {\r\n            breakStyle: {\r\n                color: \"#c1c1c1\"\r\n            },\r\n            tick: {\r\n                opacity: .12\r\n            }\r\n        },\r\n        selectedRangeColor: ACCENT_COLOR,\r\n        sliderMarker: {\r\n            color: ACCENT_COLOR\r\n        },\r\n        sliderHandle: {\r\n            color: ACCENT_COLOR,\r\n            opacity: .5\r\n        }\r\n    },\r\n    bullet: {\r\n        color: ACCENT_COLOR\r\n    },\r\n    gauge: {\r\n        valueIndicators: {\r\n            rangebar: {\r\n                color: ACCENT_COLOR\r\n            },\r\n            textcloud: {\r\n                color: ACCENT_COLOR\r\n            }\r\n        }\r\n    }\r\n}, \"generic.light\");\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.greenmist.compact\"\r\n}, \"generic.greenmist\");\r\n","/**\r\n * DevExtreme (viz/translators/translator2d.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Translator2D = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range = require(\"./range\");\r\nvar _category_translator = _interopRequireDefault(require(\"./category_translator\"));\r\nvar _interval_translator = _interopRequireDefault(require(\"./interval_translator\"));\r\nvar _datetime_translator = _interopRequireDefault(require(\"./datetime_translator\"));\r\nvar _logarithmic_translator = _interopRequireDefault(require(\"./logarithmic_translator\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _abs = Math.abs;\r\nvar CANVAS_PROP = [\"width\", \"height\", \"left\", \"top\", \"bottom\", \"right\"];\r\nvar dummyTranslator = {\r\n    to: function(value) {\r\n        var coord = this._canvasOptions.startPoint + (this._options.conversionValue ? value : Math.round(value));\r\n        return coord > this._canvasOptions.endPoint ? this._canvasOptions.endPoint : coord\r\n    },\r\n    from: function(value) {\r\n        return value - this._canvasOptions.startPoint\r\n    }\r\n};\r\nvar validateCanvas = function(canvas) {\r\n    (0, _iterator.each)(CANVAS_PROP, function(_, prop) {\r\n        canvas[prop] = parseInt(canvas[prop]) || 0\r\n    });\r\n    return canvas\r\n};\r\nvar makeCategoriesToPoints = function(categories) {\r\n    var categoriesToPoints = {};\r\n    categories.forEach(function(item, i) {\r\n        categoriesToPoints[item.valueOf()] = i\r\n    });\r\n    return categoriesToPoints\r\n};\r\nvar validateBusinessRange = function(businessRange) {\r\n    if (!(businessRange instanceof _range.Range)) {\r\n        businessRange = new _range.Range(businessRange)\r\n    }\r\n\r\n    function validate(valueSelector, baseValueSelector) {\r\n        if (!(0, _type.isDefined)(businessRange[valueSelector]) && (0, _type.isDefined)(businessRange[baseValueSelector])) {\r\n            businessRange[valueSelector] = businessRange[baseValueSelector]\r\n        }\r\n    }\r\n    validate(\"minVisible\", \"min\");\r\n    validate(\"maxVisible\", \"max\");\r\n    return businessRange\r\n};\r\n\r\nfunction prepareBreaks(breaks, range) {\r\n    var transform = \"logarithmic\" === range.axisType ? function(value) {\r\n        return (0, _utils.getLogExt)(value, range.base)\r\n    } : function(value) {\r\n        return value\r\n    };\r\n    var array = [];\r\n    var br;\r\n    var transformFrom;\r\n    var transformTo;\r\n    var i;\r\n    var length = breaks.length;\r\n    var sum = 0;\r\n    for (i = 0; i < length; i++) {\r\n        br = breaks[i];\r\n        transformFrom = transform(br.from);\r\n        transformTo = transform(br.to);\r\n        sum += transformTo - transformFrom;\r\n        array.push({\r\n            trFrom: transformFrom,\r\n            trTo: transformTo,\r\n            from: br.from,\r\n            to: br.to,\r\n            length: sum,\r\n            cumulativeWidth: br.cumulativeWidth\r\n        })\r\n    }\r\n    return array\r\n}\r\n\r\nfunction getCanvasBounds(range) {\r\n    var min = range.min;\r\n    var max = range.max;\r\n    var minVisible = range.minVisible;\r\n    var maxVisible = range.maxVisible;\r\n    var isLogarithmic = \"logarithmic\" === range.axisType;\r\n    if (isLogarithmic) {\r\n        maxVisible = (0, _utils.getLogExt)(maxVisible, range.base, range.allowNegatives, range.linearThreshold);\r\n        minVisible = (0, _utils.getLogExt)(minVisible, range.base, range.allowNegatives, range.linearThreshold);\r\n        min = (0, _utils.getLogExt)(min, range.base, range.allowNegatives, range.linearThreshold);\r\n        max = (0, _utils.getLogExt)(max, range.base, range.allowNegatives, range.linearThreshold)\r\n    }\r\n    return {\r\n        base: range.base,\r\n        rangeMin: min,\r\n        rangeMax: max,\r\n        rangeMinVisible: minVisible,\r\n        rangeMaxVisible: maxVisible\r\n    }\r\n}\r\n\r\nfunction getCheckingMethodsAboutBreaks(inverted) {\r\n    return {\r\n        isStartSide: !inverted ? function(pos, breaks, start, end) {\r\n            return pos < breaks[0][start]\r\n        } : function(pos, breaks, start, end) {\r\n            return pos <= breaks[breaks.length - 1][end]\r\n        },\r\n        isEndSide: !inverted ? function(pos, breaks, start, end) {\r\n            return pos >= breaks[breaks.length - 1][end]\r\n        } : function(pos, breaks, start, end) {\r\n            return pos > breaks[0][start]\r\n        },\r\n        isInBreak: !inverted ? function(pos, br, start, end) {\r\n            return pos >= br[start] && pos < br[end]\r\n        } : function(pos, br, start, end) {\r\n            return pos > br[end] && pos <= br[start]\r\n        },\r\n        isBetweenBreaks: !inverted ? function(pos, br, prevBreak, start, end) {\r\n            return pos < br[start] && pos >= prevBreak[end]\r\n        } : function(pos, br, prevBreak, start, end) {\r\n            return pos >= br[end] && pos < prevBreak[start]\r\n        },\r\n        getLength: !inverted ? function(br) {\r\n            return br.length\r\n        } : function(br, lastBreak) {\r\n            return lastBreak.length - br.length\r\n        },\r\n        getBreaksSize: !inverted ? function(br) {\r\n            return br.cumulativeWidth\r\n        } : function(br, lastBreak) {\r\n            return lastBreak.cumulativeWidth - br.cumulativeWidth\r\n        }\r\n    }\r\n}\r\nvar _Translator2d = function(businessRange, canvas, options) {\r\n    this.update(businessRange, canvas, options)\r\n};\r\nexports.Translator2D = _Translator2d;\r\n_Translator2d.prototype = {\r\n    constructor: _Translator2d,\r\n    reinit: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var range = that._businessRange;\r\n        var categories = range.categories || [];\r\n        var script = {};\r\n        var canvasOptions = that._prepareCanvasOptions();\r\n        var visibleCategories = (0, _utils.getCategoriesInfo)(categories, range.minVisible, range.maxVisible).categories;\r\n        var categoriesLength = visibleCategories.length;\r\n        if (range.isEmpty()) {\r\n            script = dummyTranslator\r\n        } else {\r\n            switch (range.axisType) {\r\n                case \"logarithmic\":\r\n                    script = _logarithmic_translator.default;\r\n                    break;\r\n                case \"semidiscrete\":\r\n                    script = _interval_translator.default;\r\n                    canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (_date.default.addInterval(canvasOptions.rangeMaxVisible, options.interval) - canvasOptions.rangeMinVisible);\r\n                    break;\r\n                case \"discrete\":\r\n                    script = _category_translator.default;\r\n                    that._categories = categories;\r\n                    canvasOptions.interval = that._getDiscreteInterval(options.addSpiderCategory ? categoriesLength + 1 : categoriesLength, canvasOptions);\r\n                    that._categoriesToPoints = makeCategoriesToPoints(categories, canvasOptions.invert);\r\n                    if (categoriesLength) {\r\n                        canvasOptions.startPointIndex = that._categoriesToPoints[visibleCategories[0].valueOf()];\r\n                        that.visibleCategories = visibleCategories\r\n                    }\r\n                    break;\r\n                default:\r\n                    if (\"datetime\" === range.dataType) {\r\n                        script = _datetime_translator.default\r\n                    }\r\n            }\r\n        }(that._oldMethods || []).forEach(function(methodName) {\r\n            delete that[methodName]\r\n        });\r\n        that._oldMethods = Object.keys(script);\r\n        (0, _extend.extend)(that, script);\r\n        that._conversionValue = options.conversionValue ? function(value) {\r\n            return value\r\n        } : function(value) {\r\n            return Math.round(value)\r\n        };\r\n        that.sc = {};\r\n        that._checkingMethodsAboutBreaks = [getCheckingMethodsAboutBreaks(false), getCheckingMethodsAboutBreaks(that.isInverted())];\r\n        that._translateBreaks();\r\n        that._calculateSpecialValues()\r\n    },\r\n    _translateBreaks: function() {\r\n        var breaks = this._breaks;\r\n        var size = this._options.breaksSize;\r\n        var i;\r\n        var b;\r\n        var end;\r\n        var length;\r\n        if (void 0 === breaks) {\r\n            return\r\n        }\r\n        for (i = 0, length = breaks.length; i < length; i++) {\r\n            b = breaks[i];\r\n            end = this.translate(b.to);\r\n            b.end = end;\r\n            b.start = !b.gapSize ? !this.isInverted() ? end - size : end + size : end\r\n        }\r\n    },\r\n    _checkValueAboutBreaks: function(breaks, pos, start, end, methods) {\r\n        var i;\r\n        var length;\r\n        var prop = {\r\n            length: 0,\r\n            breaksSize: void 0,\r\n            inBreak: false\r\n        };\r\n        var br;\r\n        var prevBreak;\r\n        var lastBreak = breaks[breaks.length - 1];\r\n        if (methods.isStartSide(pos, breaks, start, end)) {\r\n            return prop\r\n        } else {\r\n            if (methods.isEndSide(pos, breaks, start, end)) {\r\n                return {\r\n                    length: lastBreak.length,\r\n                    breaksSize: lastBreak.cumulativeWidth,\r\n                    inBreak: false\r\n                }\r\n            }\r\n        }\r\n        for (i = 0, length = breaks.length; i < length; i++) {\r\n            br = breaks[i];\r\n            prevBreak = breaks[i - 1];\r\n            if (methods.isInBreak(pos, br, start, end)) {\r\n                prop.inBreak = true;\r\n                prop.break = br;\r\n                break\r\n            }\r\n            if (prevBreak && methods.isBetweenBreaks(pos, br, prevBreak, start, end)) {\r\n                prop = {\r\n                    length: methods.getLength(prevBreak, lastBreak),\r\n                    breaksSize: methods.getBreaksSize(prevBreak, lastBreak),\r\n                    inBreak: false\r\n                };\r\n                break\r\n            }\r\n        }\r\n        return prop\r\n    },\r\n    isInverted: function() {\r\n        return !(this._options.isHorizontal ^ this._businessRange.invert)\r\n    },\r\n    _getDiscreteInterval: function(categoriesLength, canvasOptions) {\r\n        var correctedCategoriesCount = categoriesLength - (this._options.stick ? 1 : 0);\r\n        return correctedCategoriesCount > 0 ? canvasOptions.canvasLength / correctedCategoriesCount : canvasOptions.canvasLength\r\n    },\r\n    _prepareCanvasOptions: function() {\r\n        var that = this;\r\n        var businessRange = that._businessRange;\r\n        var canvasOptions = that._canvasOptions = getCanvasBounds(businessRange);\r\n        var canvas = that._canvas;\r\n        var breaks = that._breaks;\r\n        var length;\r\n        canvasOptions.startPadding = canvas.startPadding || 0;\r\n        canvasOptions.endPadding = canvas.endPadding || 0;\r\n        if (that._options.isHorizontal) {\r\n            canvasOptions.startPoint = canvas.left + canvasOptions.startPadding;\r\n            length = canvas.width;\r\n            canvasOptions.endPoint = canvas.width - canvas.right - canvasOptions.endPadding;\r\n            canvasOptions.invert = businessRange.invert\r\n        } else {\r\n            canvasOptions.startPoint = canvas.top + canvasOptions.startPadding;\r\n            length = canvas.height;\r\n            canvasOptions.endPoint = canvas.height - canvas.bottom - canvasOptions.endPadding;\r\n            canvasOptions.invert = !businessRange.invert\r\n        }\r\n        that.canvasLength = canvasOptions.canvasLength = canvasOptions.endPoint - canvasOptions.startPoint;\r\n        canvasOptions.rangeDoubleError = Math.pow(10, (0, _utils.getPower)(canvasOptions.rangeMax - canvasOptions.rangeMin) - (0, _utils.getPower)(length) - 2);\r\n        canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible);\r\n        if (void 0 !== breaks) {\r\n            canvasOptions.ratioOfCanvasRange = (canvasOptions.canvasLength - breaks[breaks.length - 1].cumulativeWidth) / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible - breaks[breaks.length - 1].length)\r\n        }\r\n        return canvasOptions\r\n    },\r\n    updateCanvas: function(canvas) {\r\n        this._canvas = validateCanvas(canvas);\r\n        this.reinit()\r\n    },\r\n    updateBusinessRange: function(businessRange) {\r\n        var that = this;\r\n        var breaks = businessRange.breaks || [];\r\n        that._userBreaks = businessRange.userBreaks || [];\r\n        that._businessRange = validateBusinessRange(businessRange);\r\n        that._breaks = breaks.length ? prepareBreaks(breaks, that._businessRange) : void 0;\r\n        that.reinit()\r\n    },\r\n    update: function(businessRange, canvas, options) {\r\n        var that = this;\r\n        that._options = (0, _extend.extend)(that._options || {}, options);\r\n        that._canvas = validateCanvas(canvas);\r\n        that.updateBusinessRange(businessRange)\r\n    },\r\n    getBusinessRange: function() {\r\n        return this._businessRange\r\n    },\r\n    getEventScale: function(zoomEvent) {\r\n        return zoomEvent.deltaScale || 1\r\n    },\r\n    getCanvasVisibleArea: function() {\r\n        return {\r\n            min: this._canvasOptions.startPoint,\r\n            max: this._canvasOptions.endPoint\r\n        }\r\n    },\r\n    _calculateSpecialValues: function() {\r\n        var that = this;\r\n        var canvasOptions = that._canvasOptions;\r\n        var startPoint = canvasOptions.startPoint - canvasOptions.startPadding;\r\n        var endPoint = canvasOptions.endPoint + canvasOptions.endPadding;\r\n        var range = that._businessRange;\r\n        var minVisible = range.minVisible;\r\n        var maxVisible = range.maxVisible;\r\n        var canvas_position_center_middle = startPoint + canvasOptions.canvasLength / 2;\r\n        var canvas_position_default;\r\n        if (minVisible < 0 && maxVisible > 0 && minVisible !== maxVisible) {\r\n            canvas_position_default = that.translate(0, 1)\r\n        }\r\n        if (!(0, _type.isDefined)(canvas_position_default)) {\r\n            var invert = range.invert ^ (minVisible < 0 && maxVisible <= 0);\r\n            if (that._options.isHorizontal) {\r\n                canvas_position_default = invert ? endPoint : startPoint\r\n            } else {\r\n                canvas_position_default = invert ? startPoint : endPoint\r\n            }\r\n        }\r\n        that.sc = {\r\n            canvas_position_default: canvas_position_default,\r\n            canvas_position_left: startPoint,\r\n            canvas_position_top: startPoint,\r\n            canvas_position_center: canvas_position_center_middle,\r\n            canvas_position_middle: canvas_position_center_middle,\r\n            canvas_position_right: endPoint,\r\n            canvas_position_bottom: endPoint,\r\n            canvas_position_start: canvasOptions.invert ? endPoint : startPoint,\r\n            canvas_position_end: canvasOptions.invert ? startPoint : endPoint\r\n        }\r\n    },\r\n    translateSpecialCase: function(value) {\r\n        return this.sc[value]\r\n    },\r\n    _calculateProjection: function(distance) {\r\n        var canvasOptions = this._canvasOptions;\r\n        return canvasOptions.invert ? canvasOptions.endPoint - distance : canvasOptions.startPoint + distance\r\n    },\r\n    _calculateUnProjection: function(distance) {\r\n        var canvasOptions = this._canvasOptions;\r\n        \"datetime\" === this._businessRange.dataType && (distance = Math.round(distance));\r\n        return canvasOptions.invert ? canvasOptions.rangeMaxVisible.valueOf() - distance : canvasOptions.rangeMinVisible.valueOf() + distance\r\n    },\r\n    getMinBarSize: function(minBarSize) {\r\n        var visibleArea = this.getCanvasVisibleArea();\r\n        var minValue = this.from(visibleArea.min + minBarSize);\r\n        return _abs(this.from(visibleArea.min) - (!(0, _type.isDefined)(minValue) ? this.from(visibleArea.max) : minValue))\r\n    },\r\n    checkMinBarSize: function(value, minShownValue, stackValue) {\r\n        return _abs(value) < minShownValue ? value >= 0 ? minShownValue : -minShownValue : value\r\n    },\r\n    translate: function(bp, direction) {\r\n        var specialValue = this.translateSpecialCase(bp);\r\n        if ((0, _type.isDefined)(specialValue)) {\r\n            return Math.round(specialValue)\r\n        }\r\n        if (isNaN(bp)) {\r\n            return null\r\n        }\r\n        return this.to(bp, direction)\r\n    },\r\n    getInterval: function(interval) {\r\n        var _interval;\r\n        var canvasOptions = this._canvasOptions;\r\n        interval = null !== (_interval = interval) && void 0 !== _interval ? _interval : this._businessRange.interval;\r\n        if (interval) {\r\n            return Math.round(canvasOptions.ratioOfCanvasRange * interval)\r\n        }\r\n        return Math.round(canvasOptions.endPoint - canvasOptions.startPoint)\r\n    },\r\n    zoom: function(translate, scale, wholeRange) {\r\n        var canvasOptions = this._canvasOptions;\r\n        if (canvasOptions.rangeMinVisible.valueOf() === canvasOptions.rangeMaxVisible.valueOf() && 0 !== translate) {\r\n            return this.zoomZeroLengthRange(translate, scale)\r\n        }\r\n        var startPoint = canvasOptions.startPoint;\r\n        var endPoint = canvasOptions.endPoint;\r\n        var isInverted = this.isInverted();\r\n        var newStart = (startPoint + translate) / scale;\r\n        var newEnd = (endPoint + translate) / scale;\r\n        wholeRange = wholeRange || {};\r\n        var minPoint = this.to(isInverted ? wholeRange.endValue : wholeRange.startValue);\r\n        var maxPoint = this.to(isInverted ? wholeRange.startValue : wholeRange.endValue);\r\n        var min;\r\n        var max;\r\n        if (minPoint > newStart) {\r\n            newEnd -= newStart - minPoint;\r\n            newStart = minPoint;\r\n            min = isInverted ? wholeRange.endValue : wholeRange.startValue\r\n        }\r\n        if (maxPoint < newEnd) {\r\n            newStart -= newEnd - maxPoint;\r\n            newEnd = maxPoint;\r\n            max = isInverted ? wholeRange.startValue : wholeRange.endValue\r\n        }\r\n        if (maxPoint - minPoint < newEnd - newStart) {\r\n            newStart = minPoint;\r\n            newEnd = maxPoint\r\n        }\r\n        translate = (endPoint - startPoint) * newStart / (newEnd - newStart) - startPoint;\r\n        scale = (startPoint + translate) / newStart || 1;\r\n        min = (0, _type.isDefined)(min) ? min : (0, _math.adjust)(this.from(newStart, 1));\r\n        max = (0, _type.isDefined)(max) ? max : (0, _math.adjust)(this.from(newEnd, -1));\r\n        if (scale <= 1) {\r\n            min = this._correctValueAboutBreaks(min, 1 === scale ? translate : -1);\r\n            max = this._correctValueAboutBreaks(max, 1 === scale ? translate : 1)\r\n        }\r\n        if (min > max) {\r\n            min = min > wholeRange.endValue ? wholeRange.endValue : min;\r\n            max = max < wholeRange.startValue ? wholeRange.startValue : max\r\n        } else {\r\n            min = min < wholeRange.startValue ? wholeRange.startValue : min;\r\n            max = max > wholeRange.endValue ? wholeRange.endValue : max\r\n        }\r\n        return {\r\n            min: min,\r\n            max: max,\r\n            translate: (0, _math.adjust)(translate),\r\n            scale: (0, _math.adjust)(scale)\r\n        }\r\n    },\r\n    _correctValueAboutBreaks: function(value, direction) {\r\n        var br = this._userBreaks.filter(function(br) {\r\n            return value >= br.from && value <= br.to\r\n        });\r\n        if (br.length) {\r\n            return direction > 0 ? br[0].to : br[0].from\r\n        } else {\r\n            return value\r\n        }\r\n    },\r\n    zoomZeroLengthRange: function(translate, scale) {\r\n        var canvasOptions = this._canvasOptions;\r\n        var min = canvasOptions.rangeMin;\r\n        var max = canvasOptions.rangeMax;\r\n        var correction = (max.valueOf() !== min.valueOf() ? max.valueOf() - min.valueOf() : _abs(canvasOptions.rangeMinVisible.valueOf() - min.valueOf())) / canvasOptions.canvasLength;\r\n        var isDateTime = (0, _type.isDate)(max) || (0, _type.isDate)(min);\r\n        var isLogarithmic = \"logarithmic\" === this._businessRange.axisType;\r\n        var newMin = canvasOptions.rangeMinVisible.valueOf() - correction;\r\n        var newMax = canvasOptions.rangeMaxVisible.valueOf() + correction;\r\n        newMin = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMin, canvasOptions.base)) : isDateTime ? new Date(newMin) : newMin;\r\n        newMax = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMax, canvasOptions.base)) : isDateTime ? new Date(newMax) : newMax;\r\n        return {\r\n            min: newMin,\r\n            max: newMax,\r\n            translate: translate,\r\n            scale: scale\r\n        }\r\n    },\r\n    getMinScale: function(zoom) {\r\n        var _this$_businessRange = this._businessRange,\r\n            dataType = _this$_businessRange.dataType,\r\n            interval = _this$_businessRange.interval;\r\n        if (\"datetime\" === dataType && 1 === interval) {\r\n            return this.getDateTimeMinScale(zoom)\r\n        }\r\n        return zoom ? 1.1 : .9\r\n    },\r\n    getDateTimeMinScale: function(zoom) {\r\n        var canvasOptions = this._canvasOptions;\r\n        var length = canvasOptions.canvasLength / canvasOptions.ratioOfCanvasRange;\r\n        length += (parseInt(.1 * length) || 1) * (zoom ? -2 : 2);\r\n        return canvasOptions.canvasLength / (Math.max(length, 1) * canvasOptions.ratioOfCanvasRange)\r\n    },\r\n    getScale: function(val1, val2) {\r\n        var canvasOptions = this._canvasOptions;\r\n        if (canvasOptions.rangeMax === canvasOptions.rangeMin) {\r\n            return 1\r\n        }\r\n        val1 = (0, _type.isDefined)(val1) ? this._fromValue(val1) : canvasOptions.rangeMin;\r\n        val2 = (0, _type.isDefined)(val2) ? this._fromValue(val2) : canvasOptions.rangeMax;\r\n        return (canvasOptions.rangeMax - canvasOptions.rangeMin) / Math.abs(val1 - val2)\r\n    },\r\n    isValid: function(value) {\r\n        var co = this._canvasOptions;\r\n        value = this._fromValue(value);\r\n        return null !== value && !isNaN(value) && value.valueOf() + co.rangeDoubleError >= co.rangeMin && value.valueOf() - co.rangeDoubleError <= co.rangeMax\r\n    },\r\n    getCorrectValue: function(value, direction) {\r\n        var that = this;\r\n        var breaks = that._breaks;\r\n        var prop;\r\n        value = that._fromValue(value);\r\n        if (that._breaks) {\r\n            prop = that._checkValueAboutBreaks(breaks, value, \"trFrom\", \"trTo\", that._checkingMethodsAboutBreaks[0]);\r\n            if (true === prop.inBreak) {\r\n                return that._toValue(direction > 0 ? prop.break.trTo : prop.break.trFrom)\r\n            }\r\n        }\r\n        return that._toValue(value)\r\n    },\r\n    to: function(bp, direction) {\r\n        var range = this.getBusinessRange();\r\n        if ((0, _type.isDefined)(range.maxVisible) && (0, _type.isDefined)(range.minVisible) && range.maxVisible.valueOf() === range.minVisible.valueOf()) {\r\n            if (!(0, _type.isDefined)(bp) || range.maxVisible.valueOf() !== bp.valueOf()) {\r\n                return null\r\n            }\r\n            return this.translateSpecialCase(0 === bp && this._options.shiftZeroValue ? \"canvas_position_default\" : \"canvas_position_middle\")\r\n        }\r\n        bp = this._fromValue(bp);\r\n        var that = this;\r\n        var canvasOptions = that._canvasOptions;\r\n        var breaks = that._breaks;\r\n        var prop = {\r\n            length: 0\r\n        };\r\n        var commonBreakSize = 0;\r\n        if (void 0 !== breaks) {\r\n            prop = that._checkValueAboutBreaks(breaks, bp, \"trFrom\", \"trTo\", that._checkingMethodsAboutBreaks[0]);\r\n            commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0\r\n        }\r\n        if (true === prop.inBreak) {\r\n            if (direction > 0) {\r\n                return prop.break.start\r\n            } else {\r\n                if (direction < 0) {\r\n                    return prop.break.end\r\n                } else {\r\n                    return null\r\n                }\r\n            }\r\n        }\r\n        return that._conversionValue(that._calculateProjection((bp - canvasOptions.rangeMinVisible - prop.length) * canvasOptions.ratioOfCanvasRange + commonBreakSize))\r\n    },\r\n    from: function(pos, direction) {\r\n        var that = this;\r\n        var breaks = that._breaks;\r\n        var prop = {\r\n            length: 0\r\n        };\r\n        var canvasOptions = that._canvasOptions;\r\n        var startPoint = canvasOptions.startPoint;\r\n        var commonBreakSize = 0;\r\n        if (void 0 !== breaks) {\r\n            prop = that._checkValueAboutBreaks(breaks, pos, \"start\", \"end\", that._checkingMethodsAboutBreaks[1]);\r\n            commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0\r\n        }\r\n        if (true === prop.inBreak) {\r\n            if (direction > 0) {\r\n                return that._toValue(prop.break.trTo)\r\n            } else {\r\n                if (direction < 0) {\r\n                    return that._toValue(prop.break.trFrom)\r\n                } else {\r\n                    return null\r\n                }\r\n            }\r\n        }\r\n        return that._toValue(that._calculateUnProjection((pos - startPoint - commonBreakSize) / canvasOptions.ratioOfCanvasRange + prop.length))\r\n    },\r\n    isValueProlonged: false,\r\n    getRange: function() {\r\n        return [this._toValue(this._canvasOptions.rangeMin), this._toValue(this._canvasOptions.rangeMax)]\r\n    },\r\n    getScreenRange: function() {\r\n        return [this._canvasOptions.startPoint, this._canvasOptions.endPoint]\r\n    },\r\n    add: function(value, diff, dir) {\r\n        return this._add(value, diff, (this._businessRange.invert ? -1 : 1) * dir)\r\n    },\r\n    _add: function(value, diff, coeff) {\r\n        return this._toValue(this._fromValue(value) + diff * coeff)\r\n    },\r\n    _fromValue: function(value) {\r\n        return null !== value ? Number(value) : null\r\n    },\r\n    _toValue: function(value) {\r\n        return null !== value ? Number(value) : null\r\n    },\r\n    ratioOfCanvasRange: function() {\r\n        return this._canvasOptions.ratioOfCanvasRange\r\n    },\r\n    convert: function(value) {\r\n        return value\r\n    },\r\n    getRangeByMinZoomValue: function(minZoom, visualRange) {\r\n        if (visualRange.minVisible + minZoom <= this._businessRange.max) {\r\n            return [visualRange.minVisible, visualRange.minVisible + minZoom]\r\n        } else {\r\n            return [visualRange.maxVisible - minZoom, visualRange.maxVisible]\r\n        }\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/scheduler/tooltip_strategies/tooltipStrategyBase.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TooltipStrategyBase = void 0;\r\nvar _button = _interopRequireDefault(require(\"../../button\"));\r\nvar _function_template = require(\"../../../core/templates/function_template\");\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _uiList = _interopRequireDefault(require(\"../../list/ui.list.edit\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar TOOLTIP_APPOINTMENT_ITEM = \"dx-tooltip-appointment-item\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT = TOOLTIP_APPOINTMENT_ITEM + \"-content\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT = TOOLTIP_APPOINTMENT_ITEM + \"-content-subject\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE = TOOLTIP_APPOINTMENT_ITEM + \"-content-date\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_MARKER = TOOLTIP_APPOINTMENT_ITEM + \"-marker\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY = TOOLTIP_APPOINTMENT_ITEM + \"-marker-body\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER = TOOLTIP_APPOINTMENT_ITEM + \"-delete-button-container\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON = TOOLTIP_APPOINTMENT_ITEM + \"-delete-button\";\r\nvar TooltipStrategyBase = function() {\r\n    function TooltipStrategyBase(options) {\r\n        _classCallCheck(this, TooltipStrategyBase);\r\n        this._tooltip = null;\r\n        this._options = options;\r\n        this._extraOptions = null\r\n    }\r\n    _createClass(TooltipStrategyBase, [{\r\n        key: \"show\",\r\n        value: function(target, dataList, extraOptions) {\r\n            if (this._canShowTooltip(dataList)) {\r\n                this.hide();\r\n                this._extraOptions = extraOptions;\r\n                this._showCore(target, dataList)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_showCore\",\r\n        value: function(target, dataList) {\r\n            if (!this._tooltip) {\r\n                this._tooltip = this._createTooltip(target, dataList)\r\n            } else {\r\n                this._shouldUseTarget() && this._tooltip.option(\"target\", target);\r\n                this._list.option(\"dataSource\", dataList)\r\n            }\r\n            this._prepareBeforeVisibleChanged(dataList);\r\n            this._tooltip.option(\"visible\", true)\r\n        }\r\n    }, {\r\n        key: \"_prepareBeforeVisibleChanged\",\r\n        value: function(dataList) {}\r\n    }, {\r\n        key: \"_getContentTemplate\",\r\n        value: function(dataList) {\r\n            var _this = this;\r\n            return function(container) {\r\n                var listElement = (0, _renderer.default)(\"<div>\");\r\n                (0, _renderer.default)(container).append(listElement);\r\n                _this._list = _this._createList(listElement, dataList)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"isAlreadyShown\",\r\n        value: function(target) {\r\n            if (this._tooltip && this._tooltip.option(\"visible\")) {\r\n                return this._tooltip.option(\"target\")[0] === target[0]\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_onShown\",\r\n        value: function() {\r\n            this._list.option(\"focusStateEnabled\", this._extraOptions.focusStateEnabled)\r\n        }\r\n    }, {\r\n        key: \"dispose\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"hide\",\r\n        value: function() {\r\n            if (this._tooltip) {\r\n                this._tooltip.option(\"visible\", false)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_shouldUseTarget\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_createTooltip\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_canShowTooltip\",\r\n        value: function(dataList) {\r\n            if (!dataList.length) {\r\n                return false\r\n            }\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_createListOption\",\r\n        value: function(dataList) {\r\n            var _this2 = this;\r\n            return {\r\n                dataSource: dataList,\r\n                onContentReady: this._onListRender.bind(this),\r\n                onItemClick: function(e) {\r\n                    return _this2._onListItemClick(e)\r\n                },\r\n                itemTemplate: function(item, index) {\r\n                    return _this2._renderTemplate(item.appointment, item.targetedAppointment, index, item.color)\r\n                },\r\n                _swipeEnabled: false\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_onListRender\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_createTooltipElement\",\r\n        value: function(wrapperClass) {\r\n            return (0, _renderer.default)(\"<div>\").appendTo(this._options.container).addClass(wrapperClass)\r\n        }\r\n    }, {\r\n        key: \"_createList\",\r\n        value: function(listElement, dataList) {\r\n            return this._options.createComponent(listElement, _uiList.default, this._createListOption(dataList))\r\n        }\r\n    }, {\r\n        key: \"_renderTemplate\",\r\n        value: function(appointment, targetedAppointment, index, color) {\r\n            var itemListContent = this._createItemListContent(appointment, targetedAppointment, color);\r\n            this._options.addDefaultTemplates(_defineProperty({}, this._getItemListTemplateName(), new _function_template.FunctionTemplate(function(options) {\r\n                var $container = (0, _renderer.default)(options.container);\r\n                $container.append(itemListContent);\r\n                return $container\r\n            })));\r\n            var template = this._options.getAppointmentTemplate(this._getItemListTemplateName() + \"Template\");\r\n            return this._createFunctionTemplate(template, appointment, targetedAppointment, index)\r\n        }\r\n    }, {\r\n        key: \"_createFunctionTemplate\",\r\n        value: function(template, data, targetData, index) {\r\n            var isEmptyDropDownAppointmentTemplate = this._isEmptyDropDownAppointmentTemplate();\r\n            return new _function_template.FunctionTemplate(function(options) {\r\n                return template.render({\r\n                    model: isEmptyDropDownAppointmentTemplate ? {\r\n                        appointmentData: data,\r\n                        targetedAppointmentData: targetData\r\n                    } : data,\r\n                    container: options.container,\r\n                    index: index\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getItemListTemplateName\",\r\n        value: function() {\r\n            return this._isEmptyDropDownAppointmentTemplate() ? \"appointmentTooltip\" : \"dropDownAppointment\"\r\n        }\r\n    }, {\r\n        key: \"_isEmptyDropDownAppointmentTemplate\",\r\n        value: function() {\r\n            return !this._extraOptions.dropDownAppointmentTemplate || \"dropDownAppointment\" === this._extraOptions.dropDownAppointmentTemplate\r\n        }\r\n    }, {\r\n        key: \"_onListItemClick\",\r\n        value: function(e) {\r\n            this.hide();\r\n            this._extraOptions.clickEvent && this._extraOptions.clickEvent(e);\r\n            this._options.showAppointmentPopup(e.itemData.appointment, false, e.itemData.targetedAppointment)\r\n        }\r\n    }, {\r\n        key: \"_createItemListContent\",\r\n        value: function(appointment, targetedAppointment, color) {\r\n            var editing = this._extraOptions.editing;\r\n            var $itemElement = (0, _renderer.default)(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM);\r\n            $itemElement.append(this._createItemListMarker(color));\r\n            $itemElement.append(this._createItemListInfo(this._options.createFormattedDateText(appointment, targetedAppointment)));\r\n            if (!appointment.disabled && (editing && true === editing.allowDeleting || true === editing)) {\r\n                $itemElement.append(this._createDeleteButton(appointment, targetedAppointment))\r\n            }\r\n            return $itemElement\r\n        }\r\n    }, {\r\n        key: \"_createItemListMarker\",\r\n        value: function(color) {\r\n            var $marker = (0, _renderer.default)(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_MARKER);\r\n            var $markerBody = (0, _renderer.default)(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY);\r\n            $marker.append($markerBody);\r\n            color && color.done(function(value) {\r\n                return $markerBody.css(\"background\", value)\r\n            });\r\n            return $marker\r\n        }\r\n    }, {\r\n        key: \"_createItemListInfo\",\r\n        value: function(object) {\r\n            var result = (0, _renderer.default)(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT);\r\n            var $title = (0, _renderer.default)(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT).text(object.text);\r\n            var $date = (0, _renderer.default)(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE).text(object.formatDate);\r\n            return result.append($title).append($date)\r\n        }\r\n    }, {\r\n        key: \"_createDeleteButton\",\r\n        value: function(appointment, targetedAppointment) {\r\n            var _this3 = this;\r\n            var $container = (0, _renderer.default)(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER);\r\n            var $deleteButton = (0, _renderer.default)(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON);\r\n            $container.append($deleteButton);\r\n            this._options.createComponent($deleteButton, _button.default, {\r\n                icon: \"trash\",\r\n                stylingMode: \"text\",\r\n                onClick: function(e) {\r\n                    _this3.hide();\r\n                    e.event.stopPropagation();\r\n                    _this3._options.checkAndDeleteAppointment(appointment, targetedAppointment)\r\n                }\r\n            });\r\n            return $container\r\n        }\r\n    }]);\r\n    return TooltipStrategyBase\r\n}();\r\nexports.TooltipStrategyBase = TooltipStrategyBase;\r\n","/**\r\n * DevExtreme (core/renderer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer_base = _interopRequireDefault(require(\"./renderer_base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _renderer_base.default.get();\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/themes/generic.contrast.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar WHITE = \"#ffffff\";\r\nvar BLACK = \"#000000\";\r\nvar CONTRAST_ACTIVE = \"#cf00da\";\r\nvar MARKER_COLOR = \"#f8ca00\";\r\nvar AREA_LAYER_COLOR = \"#686868\";\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.contrast\",\r\n    defaultPalette: \"Bright\",\r\n    font: {\r\n        color: WHITE\r\n    },\r\n    backgroundColor: BLACK,\r\n    primaryTitleColor: WHITE,\r\n    secondaryTitleColor: WHITE,\r\n    gridColor: WHITE,\r\n    axisColor: WHITE,\r\n    \"export\": {\r\n        backgroundColor: BLACK,\r\n        font: {\r\n            color: WHITE\r\n        },\r\n        button: {\r\n            \"default\": {\r\n                color: WHITE,\r\n                borderColor: WHITE,\r\n                backgroundColor: BLACK\r\n            },\r\n            hover: {\r\n                color: WHITE,\r\n                borderColor: WHITE,\r\n                backgroundColor: \"#cf00d7\"\r\n            },\r\n            focus: {\r\n                color: WHITE,\r\n                borderColor: \"#cf00d7\",\r\n                backgroundColor: BLACK\r\n            },\r\n            active: {\r\n                color: BLACK,\r\n                borderColor: WHITE,\r\n                backgroundColor: WHITE\r\n            }\r\n        },\r\n        borderColor: WHITE,\r\n        menuButtonColor: BLACK,\r\n        activeBackgroundColor: WHITE,\r\n        activeColor: BLACK,\r\n        selectedBorderColor: CONTRAST_ACTIVE,\r\n        selectedColor: CONTRAST_ACTIVE,\r\n        shadowColor: \"none\"\r\n    },\r\n    tooltip: {\r\n        border: {\r\n            color: WHITE\r\n        },\r\n        font: {\r\n            color: WHITE\r\n        },\r\n        color: BLACK\r\n    },\r\n    \"chart:common\": {\r\n        commonSeriesSettings: {\r\n            valueErrorBar: {\r\n                color: WHITE\r\n            },\r\n            hoverStyle: {\r\n                hatching: {\r\n                    opacity: .5\r\n                }\r\n            },\r\n            selectionStyle: {\r\n                hatching: {\r\n                    opacity: .35\r\n                }\r\n            },\r\n            label: {\r\n                font: {\r\n                    color: WHITE\r\n                },\r\n                border: {\r\n                    color: WHITE\r\n                }\r\n            }\r\n        }\r\n    },\r\n    \"chart:common:axis\": {\r\n        constantLineStyle: {\r\n            color: WHITE\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        font: {\r\n            color: WHITE\r\n        },\r\n        border: {\r\n            color: WHITE\r\n        },\r\n        color: BLACK\r\n    },\r\n    chart: {\r\n        commonSeriesSettings: {},\r\n        crosshair: {\r\n            color: \"#cf00d7\"\r\n        },\r\n        commonPaneSettings: {\r\n            backgroundColor: BLACK,\r\n            border: {\r\n                color: WHITE\r\n            }\r\n        },\r\n        scrollBar: {\r\n            color: WHITE\r\n        },\r\n        commonAxisSettings: {\r\n            breakStyle: {\r\n                color: \"#cf00d7\"\r\n            }\r\n        },\r\n        zoomAndPan: {\r\n            dragBoxStyle: {\r\n                color: WHITE,\r\n                opacity: .7\r\n            }\r\n        }\r\n    },\r\n    pie: {\r\n        commonSeriesSettings: {\r\n            pie: {\r\n                hoverStyle: {\r\n                    hatching: {\r\n                        opacity: .5\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    hatching: {\r\n                        opacity: .35\r\n                    }\r\n                }\r\n            },\r\n            doughnut: {\r\n                hoverStyle: {\r\n                    hatching: {\r\n                        opacity: .5\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    hatching: {\r\n                        opacity: .35\r\n                    }\r\n                }\r\n            },\r\n            donut: {\r\n                hoverStyle: {\r\n                    hatching: {\r\n                        opacity: .5\r\n                    }\r\n                },\r\n                selectionStyle: {\r\n                    hatching: {\r\n                        opacity: .35\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    gauge: {\r\n        rangeContainer: {\r\n            backgroundColor: WHITE\r\n        },\r\n        valueIndicators: {\r\n            _default: {\r\n                color: WHITE\r\n            },\r\n            rangebar: {\r\n                color: WHITE,\r\n                backgroundColor: BLACK\r\n            },\r\n            twocolorneedle: {\r\n                secondColor: WHITE\r\n            },\r\n            trianglemarker: {\r\n                color: WHITE\r\n            },\r\n            textcloud: {\r\n                color: WHITE,\r\n                text: {\r\n                    font: {\r\n                        color: BLACK\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    barGauge: {\r\n        backgroundColor: \"#3c3c3c\"\r\n    },\r\n    rangeSelector: {\r\n        scale: {\r\n            tick: {\r\n                color: WHITE,\r\n                opacity: .4\r\n            },\r\n            minorTick: {\r\n                color: WHITE,\r\n                opacity: .12\r\n            },\r\n            breakStyle: {\r\n                color: \"#cf00d7\"\r\n            }\r\n        },\r\n        selectedRangeColor: CONTRAST_ACTIVE,\r\n        sliderMarker: {\r\n            color: CONTRAST_ACTIVE\r\n        },\r\n        sliderHandle: {\r\n            color: CONTRAST_ACTIVE,\r\n            opacity: 1\r\n        },\r\n        shutter: {\r\n            opacity: .75\r\n        },\r\n        background: {\r\n            color: BLACK\r\n        }\r\n    },\r\n    map: {\r\n        background: {\r\n            borderColor: WHITE\r\n        },\r\n        layer: {\r\n            label: {\r\n                stroke: BLACK,\r\n                font: {\r\n                    color: WHITE\r\n                }\r\n            }\r\n        },\r\n        \"layer:area\": {\r\n            borderColor: BLACK,\r\n            color: AREA_LAYER_COLOR,\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE,\r\n            label: {\r\n                font: {\r\n                    opacity: 1\r\n                }\r\n            }\r\n        },\r\n        \"layer:line\": {\r\n            color: \"#267cff\",\r\n            hoveredColor: \"#f613ff\",\r\n            selectedColor: WHITE\r\n        },\r\n        \"layer:marker:dot\": {\r\n            borderColor: BLACK,\r\n            color: MARKER_COLOR,\r\n            backColor: BLACK,\r\n            backOpacity: .32\r\n        },\r\n        \"layer:marker:bubble\": {\r\n            color: MARKER_COLOR,\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE\r\n        },\r\n        \"layer:marker:pie\": {\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE\r\n        },\r\n        controlBar: {\r\n            borderColor: WHITE,\r\n            color: BLACK,\r\n            opacity: .3\r\n        }\r\n    },\r\n    treeMap: {\r\n        tile: {\r\n            color: \"#70c92f\"\r\n        },\r\n        group: {\r\n            color: \"#797979\",\r\n            label: {\r\n                font: {\r\n                    color: WHITE\r\n                }\r\n            }\r\n        }\r\n    },\r\n    sparkline: {\r\n        pointColor: BLACK\r\n    },\r\n    bullet: {},\r\n    polar: {\r\n        commonSeriesSettings: {}\r\n    },\r\n    funnel: {\r\n        label: {\r\n            connector: {\r\n                opacity: 1\r\n            }\r\n        }\r\n    },\r\n    sankey: {\r\n        label: {\r\n            font: {\r\n                color: WHITE\r\n            },\r\n            shadow: {\r\n                opacity: 0\r\n            }\r\n        },\r\n        node: {\r\n            border: {\r\n                visible: true,\r\n                width: 1,\r\n                color: WHITE\r\n            }\r\n        },\r\n        link: {\r\n            opacity: .5,\r\n            border: {\r\n                visible: true,\r\n                width: 1,\r\n                color: WHITE\r\n            },\r\n            hoverStyle: {\r\n                opacity: .9\r\n            }\r\n        }\r\n    }\r\n}, \"generic.light\");\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.contrast.compact\"\r\n}, \"generic.contrast\");\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.base\"));\r\nrequire(\"./ui.data_grid.state_storing\");\r\nrequire(\"./ui.data_grid.selection\");\r\nrequire(\"./ui.data_grid.column_chooser\");\r\nrequire(\"./ui.data_grid.grouping\");\r\nrequire(\"./ui.data_grid.master_detail\");\r\nrequire(\"./ui.data_grid.editing\");\r\nrequire(\"./ui.data_grid.validating\");\r\nrequire(\"./ui.data_grid.virtual_scrolling\");\r\nrequire(\"./ui.data_grid.filter_row\");\r\nrequire(\"./ui.data_grid.header_filter\");\r\nrequire(\"./ui.data_grid.filter_sync\");\r\nrequire(\"./ui.data_grid.filter_builder\");\r\nrequire(\"./ui.data_grid.filter_panel\");\r\nrequire(\"./ui.data_grid.search\");\r\nrequire(\"./ui.data_grid.pager\");\r\nrequire(\"./ui.data_grid.columns_resizing_reordering\");\r\nrequire(\"./ui.data_grid.keyboard_navigation\");\r\nrequire(\"./ui.data_grid.summary\");\r\nrequire(\"./ui.data_grid.column_fixing\");\r\nrequire(\"./ui.data_grid.adaptivity\");\r\nrequire(\"./ui.data_grid.virtual_columns\");\r\nrequire(\"./ui.data_grid.export\");\r\nrequire(\"./ui.data_grid.focus\");\r\nrequire(\"./ui.data_grid.row_dragging\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _uiData_grid.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/legend.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.LegendsControl = LegendsControl;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _legend = require(\"../components/legend\");\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar unknownSource = {\r\n    category: \"UNKNOWN\",\r\n    name: \"UNKNOWN\"\r\n};\r\n\r\nfunction buildData(partition, values, field) {\r\n    var i;\r\n    var ii = values.length;\r\n    var list = [];\r\n    var item;\r\n    for (i = 0; i < ii; ++i) {\r\n        list[i] = item = {\r\n            start: partition[i],\r\n            end: partition[i + 1],\r\n            index: i\r\n        };\r\n        item[field] = values[i];\r\n        item.states = {\r\n            normal: {\r\n                fill: item.color\r\n            }\r\n        };\r\n        item.visible = true\r\n    }\r\n    return list\r\n}\r\nvar Legend = function(parameters) {\r\n    var that = this;\r\n    that._params = parameters;\r\n    that._root = parameters.renderer.g().attr({\r\n        \"class\": \"dxm-legend\"\r\n    }).linkOn(parameters.container, {\r\n        name: \"legend\",\r\n        after: \"legend-base\"\r\n    }).enableLinks().linkAppend();\r\n    parameters.layoutControl.addItem(that);\r\n    _legend.Legend.call(that, {\r\n        renderer: parameters.renderer,\r\n        widget: parameters.widget,\r\n        group: that._root,\r\n        backgroundClass: null,\r\n        itemsGroupClass: null,\r\n        textField: \"text\",\r\n        getFormatObject: function(data) {\r\n            return data\r\n        }\r\n    });\r\n    that._onDataChanged = function(data) {\r\n        that._updateData(data)\r\n    }\r\n};\r\nLegend.prototype = _extend((0, _object.clone)(_legend.Legend.prototype), {\r\n    constructor: Legend,\r\n    dispose: function() {\r\n        var that = this;\r\n        that._params.layoutControl.removeItem(that);\r\n        that._unbindData();\r\n        that._root.linkRemove().linkOff();\r\n        that._params = that._root = that._onDataChanged = null;\r\n        return _legend.Legend.prototype.dispose.apply(that, arguments)\r\n    },\r\n    resize: function(size) {\r\n        this._params.notifyDirty();\r\n        if (null === size) {\r\n            this.erase()\r\n        } else {\r\n            this.draw(size.width, size.height)\r\n        }\r\n        this._params.notifyReady()\r\n    },\r\n    locate: _legend.Legend.prototype.shift,\r\n    _updateData: function(data) {\r\n        this._options.defaultColor = data && data.defaultColor;\r\n        this.update(data ? buildData(data.partition, data.values, this._dataName) : [], this._options, this._params.themeManager.theme(\"legend\").title);\r\n        this.updateLayout()\r\n    },\r\n    _unbindData: function() {\r\n        if (this._dataCategory) {\r\n            this._params.dataExchanger.unbind(this._dataCategory, this._dataName, this._onDataChanged)\r\n        }\r\n    },\r\n    _bindData: function(arg) {\r\n        this._params.dataExchanger.bind(this._dataCategory = arg.category, this._dataName = arg.name, this._onDataChanged)\r\n    },\r\n    setOptions: function(options) {\r\n        var that = this;\r\n        that.update(that._data, options, this._params.themeManager.theme(\"legend\").title);\r\n        that._unbindData();\r\n        var source = options.source;\r\n        that._bindData(source ? {\r\n            category: source.layer,\r\n            name: source.grouping\r\n        } : unknownSource);\r\n        that.updateLayout();\r\n        return that\r\n    }\r\n});\r\n\r\nfunction LegendsControl(parameters) {\r\n    this._params = parameters;\r\n    this._items = [];\r\n    parameters.container.virtualLink(\"legend-base\")\r\n}\r\nLegendsControl.prototype = {\r\n    constructor: LegendsControl,\r\n    dispose: function() {\r\n        _each(this._items, function(_, item) {\r\n            item.dispose()\r\n        });\r\n        this._params = this._items = null\r\n    },\r\n    setOptions: function(options) {\r\n        var optionList = options && options.length ? options : [];\r\n        var items = this._items;\r\n        var i;\r\n        var ii = optionList.length;\r\n        var params = this._params;\r\n        var theme = params.themeManager.theme(\"legend\");\r\n        for (i = items.length; i < ii; ++i) {\r\n            items[i] = new Legend(params)\r\n        }\r\n        for (i = items.length - 1; i >= ii; --i) {\r\n            items[i].dispose();\r\n            items.splice(i, 1)\r\n        }\r\n        params.layoutControl.suspend();\r\n        for (i = 0; i < ii; ++i) {\r\n            items[i].setOptions(_extend(true, {}, theme, optionList[i]))\r\n        }\r\n        params.layoutControl.resume()\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (exporter/excel/excel.file.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.cell_format_helper\"));\r\nvar _excel3 = _interopRequireDefault(require(\"./excel.fill_helper\"));\r\nvar _excel4 = _interopRequireDefault(require(\"./excel.font_helper\"));\r\nvar _excel5 = _interopRequireDefault(require(\"./excel.number_format_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar ExcelFile = function() {\r\n    function ExcelFile() {\r\n        _classCallCheck(this, ExcelFile);\r\n        this._cellFormatTags = [];\r\n        this._fillTags = [];\r\n        this._fontTags = [];\r\n        this._numberFormatTags = [];\r\n        this._fillTags.push(_excel3.default.tryCreateTag({\r\n            patternFill: {\r\n                patternType: \"none\"\r\n            }\r\n        }))\r\n    }\r\n    _createClass(ExcelFile, [{\r\n        key: \"registerCellFormat\",\r\n        value: function(cellFormat) {\r\n            var result;\r\n            var cellFormatTag = _excel2.default.tryCreateTag(cellFormat, {\r\n                registerFill: this.registerFill.bind(this),\r\n                registerFont: this.registerFont.bind(this),\r\n                registerNumberFormat: this.registerNumberFormat.bind(this)\r\n            });\r\n            if ((0, _type.isDefined)(cellFormatTag)) {\r\n                for (var i = 0; i < this._cellFormatTags.length; i++) {\r\n                    if (_excel2.default.areEqual(this._cellFormatTags[i], cellFormatTag)) {\r\n                        result = i;\r\n                        break\r\n                    }\r\n                }\r\n                if (void 0 === result) {\r\n                    result = this._cellFormatTags.push(cellFormatTag) - 1\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"generateCellFormatsXml\",\r\n        value: function() {\r\n            var cellFormatTagsAsXmlStringsArray = this._cellFormatTags.map(function(tag) {\r\n                return _excel2.default.toXml(tag)\r\n            });\r\n            return _excel.default.toXml(\"cellXfs\", {\r\n                count: cellFormatTagsAsXmlStringsArray.length\r\n            }, cellFormatTagsAsXmlStringsArray.join(\"\"))\r\n        }\r\n    }, {\r\n        key: \"registerFill\",\r\n        value: function(fill) {\r\n            var result;\r\n            var fillTag = _excel3.default.tryCreateTag(fill);\r\n            if ((0, _type.isDefined)(fillTag)) {\r\n                for (var i = 0; i < this._fillTags.length; i++) {\r\n                    if (_excel3.default.areEqual(this._fillTags[i], fillTag)) {\r\n                        result = i;\r\n                        break\r\n                    }\r\n                }\r\n                if (void 0 === result) {\r\n                    if (this._fillTags.length < 2) {\r\n                        this._fillTags.push(_excel3.default.tryCreateTag({\r\n                            patternFill: {\r\n                                patternType: \"Gray125\"\r\n                            }\r\n                        }))\r\n                    }\r\n                    result = this._fillTags.push(fillTag) - 1\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"generateFillsXml\",\r\n        value: function() {\r\n            var tagsAsXmlStringsArray = this._fillTags.map(function(tag) {\r\n                return _excel3.default.toXml(tag)\r\n            });\r\n            return _excel.default.toXml(\"fills\", {\r\n                count: tagsAsXmlStringsArray.length\r\n            }, tagsAsXmlStringsArray.join(\"\"))\r\n        }\r\n    }, {\r\n        key: \"registerFont\",\r\n        value: function(font) {\r\n            var result;\r\n            var fontTag = _excel4.default.tryCreateTag(font);\r\n            if ((0, _type.isDefined)(fontTag)) {\r\n                for (var i = 0; i < this._fontTags.length; i++) {\r\n                    if (_excel4.default.areEqual(this._fontTags[i], fontTag)) {\r\n                        result = i;\r\n                        break\r\n                    }\r\n                }\r\n                if (void 0 === result) {\r\n                    result = this._fontTags.push(fontTag) - 1\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"generateFontsXml\",\r\n        value: function() {\r\n            var xmlStringsArray = this._fontTags.map(function(tag) {\r\n                return _excel4.default.toXml(tag)\r\n            });\r\n            return _excel.default.toXml(\"fonts\", {\r\n                count: xmlStringsArray.length\r\n            }, xmlStringsArray.join(\"\"))\r\n        }\r\n    }, {\r\n        key: \"_convertNumberFormatIndexToId\",\r\n        value: function(index) {\r\n            var CUSTOM_FORMAT_ID_START_VALUE = 165;\r\n            return CUSTOM_FORMAT_ID_START_VALUE + index\r\n        }\r\n    }, {\r\n        key: \"registerNumberFormat\",\r\n        value: function(numberFormat) {\r\n            var result;\r\n            var tag = _excel5.default.tryCreateTag(numberFormat);\r\n            if ((0, _type.isDefined)(tag)) {\r\n                for (var i = 0; i < this._numberFormatTags.length; i++) {\r\n                    if (_excel5.default.areEqual(this._numberFormatTags[i], tag)) {\r\n                        result = this._numberFormatTags[i][_excel5.default.ID_PROPERTY_NAME];\r\n                        break\r\n                    }\r\n                }\r\n                if (void 0 === result) {\r\n                    tag[_excel5.default.ID_PROPERTY_NAME] = this._convertNumberFormatIndexToId(this._numberFormatTags.length);\r\n                    result = tag[_excel5.default.ID_PROPERTY_NAME];\r\n                    this._numberFormatTags.push(tag)\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"generateNumberFormatsXml\",\r\n        value: function() {\r\n            if (this._numberFormatTags.length > 0) {\r\n                var xmlStringsArray = this._numberFormatTags.map(function(tag) {\r\n                    return _excel5.default.toXml(tag)\r\n                });\r\n                return _excel.default.toXml(\"numFmts\", {\r\n                    count: xmlStringsArray.length\r\n                }, xmlStringsArray.join(\"\"))\r\n            } else {\r\n                return \"\"\r\n            }\r\n        }\r\n    }], [{\r\n        key: \"copyCellFormat\",\r\n        value: function(source) {\r\n            return _excel2.default.copy(source)\r\n        }\r\n    }]);\r\n    return ExcelFile\r\n}();\r\nexports.default = ExcelFile;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.editor_factory.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position2 = require(\"../../core/utils/position\");\r\nvar _ui = _interopRequireDefault(require(\"../shared/ui.editor_factory_mixin\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar EDITOR_INLINE_BLOCK = \"dx-editor-inline-block\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar FOCUSED_ELEMENT_CLASS = \"dx-focused\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar MODULE_NAMESPACE = \"dxDataGridEditorFactory\";\r\nvar UPDATE_FOCUS_EVENTS = (0, _index.addNamespace)([_pointer.default.down, \"focusin\", _click.name].join(\" \"), MODULE_NAMESPACE);\r\nvar DX_HIDDEN = \"dx-hidden\";\r\nvar EditorFactory = _uiGrid_core.default.ViewController.inherit({\r\n    _getFocusedElement: function($dataGridElement) {\r\n        var rowSelector = this.option(\"focusedRowEnabled\") ? \"tr[tabindex]:focus\" : \"tr[tabindex]:not(.dx-data-row):focus\";\r\n        var focusedElementSelector = \"td[tabindex]:focus, \".concat(rowSelector, \", input:focus, textarea:focus, .dx-lookup-field:focus, .dx-checkbox:focus, .dx-switch:focus\");\r\n        return $dataGridElement.find(focusedElementSelector)\r\n    },\r\n    _getFocusCellSelector: function() {\r\n        return \".dx-row > td\"\r\n    },\r\n    _updateFocusCore: function() {\r\n        var $focus = this._$focusedElement;\r\n        var $dataGridElement = this.component && this.component.$element();\r\n        var $focusCell;\r\n        var hideBorders;\r\n        if ($dataGridElement) {\r\n            $focus = this._getFocusedElement($dataGridElement);\r\n            if ($focus.length) {\r\n                if (!$focus.hasClass(CELL_FOCUS_DISABLED_CLASS) && !$focus.hasClass(ROW_CLASS)) {\r\n                    $focusCell = $focus.closest(this._getFocusCellSelector() + \", .\" + CELL_FOCUS_DISABLED_CLASS);\r\n                    hideBorders = $focusCell.get(0) !== $focus.get(0) && $focusCell.hasClass(EDITOR_INLINE_BLOCK);\r\n                    $focus = $focusCell\r\n                }\r\n                if ($focus.length && !$focus.hasClass(CELL_FOCUS_DISABLED_CLASS)) {\r\n                    this.focus($focus, hideBorders);\r\n                    return\r\n                }\r\n            }\r\n        }\r\n        this.loseFocus()\r\n    },\r\n    _updateFocus: function(e) {\r\n        var that = this;\r\n        var isFocusOverlay = e && e.event && (0, _renderer.default)(e.event.target).hasClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n        that._isFocusOverlay = that._isFocusOverlay || isFocusOverlay;\r\n        clearTimeout(that._updateFocusTimeoutID);\r\n        that._updateFocusTimeoutID = setTimeout(function() {\r\n            delete that._updateFocusTimeoutID;\r\n            if (!that._isFocusOverlay) {\r\n                that._updateFocusCore()\r\n            }\r\n            that._isFocusOverlay = false\r\n        })\r\n    },\r\n    _updateFocusOverlaySize: function($element, position) {\r\n        $element.hide();\r\n        var location = _position.default.calculate($element, (0, _extend.extend)({\r\n            collision: \"fit\"\r\n        }, position));\r\n        if (location.h.oversize > 0) {\r\n            $element.outerWidth($element.outerWidth() - location.h.oversize)\r\n        }\r\n        if (location.v.oversize > 0) {\r\n            $element.outerHeight($element.outerHeight() - location.v.oversize)\r\n        }\r\n        $element.show()\r\n    },\r\n    callbackNames: function() {\r\n        return [\"focused\"]\r\n    },\r\n    focus: function($element, hideBorder) {\r\n        var that = this;\r\n        if (void 0 === $element) {\r\n            return that._$focusedElement\r\n        } else {\r\n            if ($element) {\r\n                if (!$element.is(that._$focusedElement)) {\r\n                    that._$focusedElement && that._$focusedElement.removeClass(FOCUSED_ELEMENT_CLASS)\r\n                }\r\n                that._$focusedElement = $element;\r\n                clearTimeout(that._focusTimeoutID);\r\n                that._focusTimeoutID = setTimeout(function() {\r\n                    delete that._focusTimeoutID;\r\n                    that.renderFocusOverlay($element, hideBorder);\r\n                    $element.addClass(FOCUSED_ELEMENT_CLASS);\r\n                    that.focused.fire($element)\r\n                })\r\n            }\r\n        }\r\n    },\r\n    refocus: function() {\r\n        var $focus = this.focus();\r\n        this.focus($focus)\r\n    },\r\n    renderFocusOverlay: function($element, hideBorder) {\r\n        var that = this;\r\n        if (!_uiGrid_core2.default.isElementInCurrentGrid(this, $element)) {\r\n            return\r\n        }\r\n        if (!that._$focusOverlay) {\r\n            that._$focusOverlay = (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS))\r\n        }\r\n        if (hideBorder) {\r\n            that._$focusOverlay.addClass(DX_HIDDEN)\r\n        } else {\r\n            if ($element.length) {\r\n                var align = _browser.default.msie ? \"left bottom\" : _browser.default.mozilla ? \"right bottom\" : \"left top\";\r\n                var $content = $element.closest(\".\" + that.addWidgetPrefix(CONTENT_CLASS));\r\n                var elemCoord = (0, _position2.getBoundingRect)($element.get(0));\r\n                that._$focusOverlay.removeClass(DX_HIDDEN).appendTo($content).outerWidth(elemCoord.right - elemCoord.left + 1).outerHeight(elemCoord.bottom - elemCoord.top + 1);\r\n                var focusOverlayPosition = {\r\n                    precise: true,\r\n                    my: align,\r\n                    at: align,\r\n                    of: $element,\r\n                    boundary: $content.length && $content\r\n                };\r\n                that._updateFocusOverlaySize(that._$focusOverlay, focusOverlayPosition);\r\n                _position.default.setup(that._$focusOverlay, focusOverlayPosition);\r\n                that._$focusOverlay.css(\"visibility\", \"visible\")\r\n            }\r\n        }\r\n    },\r\n    resize: function() {\r\n        var $focusedElement = this._$focusedElement;\r\n        if ($focusedElement) {\r\n            this.focus($focusedElement)\r\n        }\r\n    },\r\n    loseFocus: function() {\r\n        this._$focusedElement && this._$focusedElement.removeClass(FOCUSED_ELEMENT_CLASS);\r\n        this._$focusedElement = null;\r\n        this._$focusOverlay && this._$focusOverlay.addClass(DX_HIDDEN)\r\n    },\r\n    init: function() {\r\n        this.createAction(\"onEditorPreparing\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"],\r\n            category: \"rendering\"\r\n        });\r\n        this.createAction(\"onEditorPrepared\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"],\r\n            category: \"rendering\"\r\n        });\r\n        this._updateFocusHandler = this._updateFocusHandler || this.createAction(this._updateFocus.bind(this));\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler);\r\n        this._attachContainerEventHandlers()\r\n    },\r\n    _attachContainerEventHandlers: function() {\r\n        var that = this;\r\n        var $container = that.component && that.component.$element();\r\n        if ($container) {\r\n            _events_engine.default.on($container, (0, _index.addNamespace)(\"keydown\", MODULE_NAMESPACE), function(e) {\r\n                if (\"tab\" === (0, _index.normalizeKeyName)(e)) {\r\n                    that._updateFocusHandler(e)\r\n                }\r\n            })\r\n        }\r\n    },\r\n    dispose: function() {\r\n        clearTimeout(this._focusTimeoutID);\r\n        clearTimeout(this._updateFocusTimeoutID);\r\n        _events_engine.default.off(_dom_adapter.default.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler)\r\n    }\r\n}).include(_ui.default);\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {}\r\n    },\r\n    controllers: {\r\n        editorFactory: EditorFactory\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tab_panel/item.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _item = _interopRequireDefault(require(\"../collection/item\"));\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar TabPanelItem = function(_CollectionWidgetItem) {\r\n    _inherits(TabPanelItem, _CollectionWidgetItem);\r\n    var _super = _createSuper(TabPanelItem);\r\n\r\n    function TabPanelItem() {\r\n        _classCallCheck(this, TabPanelItem);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(TabPanelItem, [{\r\n        key: \"_renderWatchers\",\r\n        value: function() {\r\n            this._startWatcher(\"badge\", _common.noop);\r\n            return _get(_getPrototypeOf(TabPanelItem.prototype), \"_renderWatchers\", this).call(this)\r\n        }\r\n    }]);\r\n    return TabPanelItem\r\n}(_item.default);\r\nexports.default = TabPanelItem;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/ldml/date.parser.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getParser = exports.getPatternSetters = exports.getRegExpInfo = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar FORMAT_TYPES = {\r\n    3: \"abbreviated\",\r\n    4: \"wide\",\r\n    5: \"narrow\"\r\n};\r\nvar monthRegExpGenerator = function(count, dateParts) {\r\n    if (count > 2) {\r\n        return Object.keys(FORMAT_TYPES).map(function(count) {\r\n            return [\"format\", \"standalone\"].map(function(type) {\r\n                return dateParts.getMonthNames(FORMAT_TYPES[count], type).join(\"|\")\r\n            }).join(\"|\")\r\n        }).join(\"|\")\r\n    }\r\n    return \"0?[1-9]|1[012]\"\r\n};\r\nvar PATTERN_REGEXPS = {\r\n    y: function(count) {\r\n        return \"[0-9]+\"\r\n    },\r\n    M: monthRegExpGenerator,\r\n    L: monthRegExpGenerator,\r\n    Q: function(count, dateParts) {\r\n        if (count > 2) {\r\n            return dateParts.getQuarterNames(FORMAT_TYPES[count], \"format\").join(\"|\")\r\n        }\r\n        return \"0?[1-4]\"\r\n    },\r\n    E: function(count, dateParts) {\r\n        return \"\\\\D*\"\r\n    },\r\n    a: function(count, dateParts) {\r\n        return dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\").join(\"|\")\r\n    },\r\n    d: function(count) {\r\n        return \"0?[1-9]|[12][0-9]|3[01]\"\r\n    },\r\n    H: function(count) {\r\n        return \"0?[0-9]|1[0-9]|2[0-3]\"\r\n    },\r\n    h: function(count) {\r\n        return \"0?[1-9]|1[012]\"\r\n    },\r\n    m: function(count) {\r\n        return \"0?[0-9]|[1-5][0-9]\"\r\n    },\r\n    s: function(count) {\r\n        return \"0?[0-9]|[1-5][0-9]\"\r\n    },\r\n    S: function(count) {\r\n        return \"[0-9]{1,\" + count + \"}\"\r\n    },\r\n    w: function(count) {\r\n        return \"0?[0-9]|[1-5][0-9]\"\r\n    }\r\n};\r\nvar parseNumber = Number;\r\nvar caseInsensitiveIndexOf = function(array, value) {\r\n    return array.map(function(item) {\r\n        return item.toLowerCase()\r\n    }).indexOf(value.toLowerCase())\r\n};\r\nvar monthPatternParser = function(text, count, dateParts) {\r\n    if (count > 2) {\r\n        return [\"format\", \"standalone\"].map(function(type) {\r\n            return Object.keys(FORMAT_TYPES).map(function(count) {\r\n                var monthNames = dateParts.getMonthNames(FORMAT_TYPES[count], type);\r\n                return caseInsensitiveIndexOf(monthNames, text)\r\n            })\r\n        }).reduce(function(a, b) {\r\n            return a.concat(b)\r\n        }).filter(function(index) {\r\n            return index >= 0\r\n        })[0]\r\n    }\r\n    return parseNumber(text) - 1\r\n};\r\nvar PATTERN_PARSERS = {\r\n    y: function(text, count) {\r\n        var year = parseNumber(text);\r\n        if (2 === count) {\r\n            return year < 30 ? 2e3 + year : 1900 + year\r\n        }\r\n        return year\r\n    },\r\n    M: monthPatternParser,\r\n    L: monthPatternParser,\r\n    Q: function(text, count, dateParts) {\r\n        if (count > 2) {\r\n            return dateParts.getQuarterNames(FORMAT_TYPES[count], \"format\").indexOf(text)\r\n        }\r\n        return parseNumber(text) - 1\r\n    },\r\n    E: function(text, count, dateParts) {\r\n        var dayNames = dateParts.getDayNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\");\r\n        return caseInsensitiveIndexOf(dayNames, text)\r\n    },\r\n    a: function(text, count, dateParts) {\r\n        var periodNames = dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\");\r\n        return caseInsensitiveIndexOf(periodNames, text)\r\n    },\r\n    d: parseNumber,\r\n    H: parseNumber,\r\n    h: parseNumber,\r\n    m: parseNumber,\r\n    s: parseNumber,\r\n    S: function(text, count) {\r\n        count = Math.max(count, 3);\r\n        text = text.slice(0, 3);\r\n        while (count < 3) {\r\n            text += \"0\";\r\n            count++\r\n        }\r\n        return parseNumber(text)\r\n    }\r\n};\r\nvar ORDERED_PATTERNS = [\"y\", \"M\", \"d\", \"h\", \"m\", \"s\", \"S\"];\r\nvar PATTERN_SETTERS = {\r\n    y: \"setFullYear\",\r\n    M: \"setMonth\",\r\n    L: \"setMonth\",\r\n    a: function(date, value, datePartValues) {\r\n        var hours = date.getHours();\r\n        var hourPartValue = datePartValues.h;\r\n        if (void 0 !== hourPartValue && hourPartValue !== hours) {\r\n            hours--\r\n        }\r\n        if (!value && 12 === hours) {\r\n            hours = 0\r\n        } else {\r\n            if (value && 12 !== hours) {\r\n                hours += 12\r\n            }\r\n        }\r\n        date.setHours(hours)\r\n    },\r\n    d: \"setDate\",\r\n    H: \"setHours\",\r\n    h: \"setHours\",\r\n    m: \"setMinutes\",\r\n    s: \"setSeconds\",\r\n    S: \"setMilliseconds\"\r\n};\r\nvar getSameCharCount = function(text, index) {\r\n    var char = text[index];\r\n    var count = 0;\r\n    do {\r\n        index++;\r\n        count++\r\n    } while (text[index] === char);\r\n    return count\r\n};\r\nvar createPattern = function(char, count) {\r\n    var result = \"\";\r\n    for (var i = 0; i < count; i++) {\r\n        result += char\r\n    }\r\n    return result\r\n};\r\nvar getRegExpInfo = function(format, dateParts) {\r\n    var regexpText = \"\";\r\n    var stubText = \"\";\r\n    var isEscaping;\r\n    var patterns = [];\r\n    var addPreviousStub = function() {\r\n        if (stubText) {\r\n            patterns.push(\"'\" + stubText + \"'\");\r\n            regexpText += (0, _common.escapeRegExp)(stubText) + \")\";\r\n            stubText = \"\"\r\n        }\r\n    };\r\n    for (var i = 0; i < format.length; i++) {\r\n        var char = format[i];\r\n        var isEscapeChar = \"'\" === char;\r\n        var regexpPart = PATTERN_REGEXPS[char];\r\n        if (isEscapeChar) {\r\n            isEscaping = !isEscaping;\r\n            if (\"'\" !== format[i - 1]) {\r\n                continue\r\n            }\r\n        }\r\n        if (regexpPart && !isEscaping) {\r\n            var count = getSameCharCount(format, i);\r\n            var pattern = createPattern(char, count);\r\n            addPreviousStub();\r\n            patterns.push(pattern);\r\n            regexpText += \"(\" + regexpPart(count, dateParts) + \")\";\r\n            i += count - 1\r\n        } else {\r\n            if (!stubText) {\r\n                regexpText += \"(\"\r\n            }\r\n            stubText += char\r\n        }\r\n    }\r\n    addPreviousStub();\r\n    return {\r\n        patterns: patterns,\r\n        regexp: new RegExp(\"^\" + regexpText + \"$\", \"i\")\r\n    }\r\n};\r\nexports.getRegExpInfo = getRegExpInfo;\r\nvar getPatternSetters = function() {\r\n    return PATTERN_SETTERS\r\n};\r\nexports.getPatternSetters = getPatternSetters;\r\nvar setPatternPart = function(date, pattern, text, dateParts, datePartValues) {\r\n    var patternChar = pattern[0];\r\n    var partSetter = PATTERN_SETTERS[patternChar];\r\n    var partParser = PATTERN_PARSERS[patternChar];\r\n    if (partSetter && partParser) {\r\n        var value = partParser(text, pattern.length, dateParts);\r\n        datePartValues[pattern] = value;\r\n        if (date[partSetter]) {\r\n            date[partSetter](value)\r\n        } else {\r\n            partSetter(date, value, datePartValues)\r\n        }\r\n    }\r\n};\r\nvar setPatternPartFromNow = function(date, pattern, now) {\r\n    var setterName = PATTERN_SETTERS[pattern];\r\n    var getterName = \"g\" + setterName.substr(1);\r\n    var value = now[getterName]();\r\n    date[setterName](value)\r\n};\r\nvar getShortPatterns = function(fullPatterns) {\r\n    return fullPatterns.map(function(pattern) {\r\n        if (\"'\" === pattern[0]) {\r\n            return \"\"\r\n        } else {\r\n            return \"H\" === pattern[0] ? \"h\" : pattern[0]\r\n        }\r\n    })\r\n};\r\nvar getMaxOrderedPatternIndex = function(patterns) {\r\n    var indexes = patterns.map(function(pattern) {\r\n        return ORDERED_PATTERNS.indexOf(pattern)\r\n    });\r\n    return Math.max.apply(Math, indexes)\r\n};\r\nvar getOrderedFormatPatterns = function(formatPatterns) {\r\n    var otherPatterns = formatPatterns.filter(function(pattern) {\r\n        return ORDERED_PATTERNS.indexOf(pattern) < 0\r\n    });\r\n    return ORDERED_PATTERNS.concat(otherPatterns)\r\n};\r\nvar getParser = function(format, dateParts) {\r\n    var regExpInfo = getRegExpInfo(format, dateParts);\r\n    return function(text) {\r\n        var regExpResult = regExpInfo.regexp.exec(text);\r\n        if (regExpResult) {\r\n            var now = new Date;\r\n            var date = new Date(now.getFullYear(), 0, 1);\r\n            var formatPatterns = getShortPatterns(regExpInfo.patterns);\r\n            var maxPatternIndex = getMaxOrderedPatternIndex(formatPatterns);\r\n            var orderedFormatPatterns = getOrderedFormatPatterns(formatPatterns);\r\n            var datePartValues = {};\r\n            orderedFormatPatterns.forEach(function(pattern, index) {\r\n                if (!pattern || index < ORDERED_PATTERNS.length && index > maxPatternIndex) {\r\n                    return\r\n                }\r\n                var patternIndex = formatPatterns.indexOf(pattern);\r\n                if (patternIndex >= 0) {\r\n                    var regExpPattern = regExpInfo.patterns[patternIndex];\r\n                    var regExpText = regExpResult[patternIndex + 1];\r\n                    setPatternPart(date, regExpPattern, regExpText, dateParts, datePartValues)\r\n                } else {\r\n                    setPatternPartFromNow(date, pattern, now)\r\n                }\r\n            });\r\n            return date\r\n        }\r\n        return null\r\n    }\r\n};\r\nexports.getParser = getParser;\r\n","/**\r\n * DevExtreme (viz/range_selector/range_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.RangeView = RangeView;\r\n\r\nfunction drawSeriesView(root, seriesDataSource, canvas, isAnimationEnabled) {\r\n    var seriesList = seriesDataSource.getSeries();\r\n    if (!seriesList.length) {\r\n        return\r\n    }\r\n    var valueAxis = seriesList[0].getValueAxis();\r\n    valueAxis.updateCanvas({\r\n        top: canvas.top,\r\n        bottom: 0,\r\n        height: canvas.height + canvas.top\r\n    });\r\n    seriesDataSource.adjustSeriesDimensions();\r\n    var valueRange = seriesDataSource.getBoundRange().val;\r\n    valueRange.sortCategories(valueAxis.getCategoriesSorter());\r\n    valueAxis.setBusinessRange(valueRange);\r\n    seriesList.forEach(function(series) {\r\n        series._extGroups.seriesGroup = series._extGroups.labelsGroup = root;\r\n        series.draw(isAnimationEnabled)\r\n    })\r\n}\r\n\r\nfunction merge(a, b) {\r\n    return void 0 !== a ? a : b\r\n}\r\n\r\nfunction RangeView(params) {\r\n    this._params = params;\r\n    this._clipRect = params.renderer.clipRect();\r\n    params.root.attr({\r\n        \"clip-path\": this._clipRect.id\r\n    })\r\n}\r\nRangeView.prototype = {\r\n    constructor: RangeView,\r\n    update: function(backgroundOption, backgroundTheme, canvas, isCompactMode, isAnimationEnabled, seriesDataSource) {\r\n        var renderer = this._params.renderer;\r\n        var root = this._params.root;\r\n        var canvasWidth = canvas.width - canvas.left;\r\n        var seriesGroup;\r\n        backgroundOption = backgroundOption || {};\r\n        root.clear();\r\n        this._clipRect.attr({\r\n            x: canvas.left,\r\n            y: canvas.top,\r\n            width: canvasWidth,\r\n            height: canvas.height\r\n        });\r\n        if (!isCompactMode) {\r\n            if (merge(backgroundOption.visible, backgroundTheme.visible)) {\r\n                if (backgroundOption.color) {\r\n                    renderer.rect(canvas.left, canvas.top, canvasWidth + 1, canvas.height).attr({\r\n                        fill: merge(backgroundOption.color, backgroundTheme.color),\r\n                        \"class\": \"dx-range-selector-background\"\r\n                    }).append(root)\r\n                }\r\n                if (backgroundOption.image && backgroundOption.image.url) {\r\n                    renderer.image(canvas.left, canvas.top, canvasWidth + 1, canvas.height, backgroundOption.image.url, merge(backgroundOption.image.location, backgroundTheme.image.location)).append(root)\r\n                }\r\n            }\r\n            if (seriesDataSource && seriesDataSource.isShowChart()) {\r\n                seriesGroup = renderer.g().attr({\r\n                    \"class\": \"dxrs-series-group\"\r\n                }).append(root);\r\n                drawSeriesView(seriesGroup, seriesDataSource, canvas, isAnimationEnabled)\r\n            }\r\n        }\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (viz/core/renderers/renderer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getFuncIri = getFuncIri;\r\nexports.processHatchingAttrs = processHatchingAttrs;\r\nexports.Renderer = Renderer;\r\nexports.refreshPaths = exports.TextSvgElement = exports.RectSvgElement = exports.ArcSvgElement = exports.PathSvgElement = exports.SvgElement = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _call_once = _interopRequireDefault(require(\"../../../core/utils/call_once\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _browser = _interopRequireDefault(require(\"../../../core/utils/browser\"));\r\nvar _svg = require(\"../../../core/utils/svg\");\r\nvar _animation = require(\"./animation\");\r\nvar _utils = require(\"../utils\");\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _slicedToArray(arr, i) {\r\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n    if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n        return\r\n    }\r\n    var _arr = [];\r\n    var _n = true;\r\n    var _d = false;\r\n    var _e = void 0;\r\n    try {\r\n        for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n            _arr.push(_s.value);\r\n            if (i && _arr.length === i) {\r\n                break\r\n            }\r\n        }\r\n    } catch (err) {\r\n        _d = true;\r\n        _e = err\r\n    } finally {\r\n        try {\r\n            if (!_n && null != _i.return) {\r\n                _i.return()\r\n            }\r\n        } finally {\r\n            if (_d) {\r\n                throw _e\r\n            }\r\n        }\r\n    }\r\n    return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return arr\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar max = Math.max,\r\n    min = Math.min,\r\n    floor = Math.floor,\r\n    round = Math.round,\r\n    sin = Math.sin,\r\n    cos = Math.cos,\r\n    abs = Math.abs,\r\n    PI = Math.PI;\r\nvar PI_DIV_180 = PI / 180;\r\nvar SHARPING_CORRECTION = .5;\r\nvar ARC_COORD_PREC = 5;\r\nvar pxAddingExceptions = {\r\n    \"column-count\": true,\r\n    \"fill-opacity\": true,\r\n    \"flex-grow\": true,\r\n    \"flex-shrink\": true,\r\n    \"font-weight\": true,\r\n    \"line-height\": true,\r\n    opacity: true,\r\n    order: true,\r\n    orphans: true,\r\n    widows: true,\r\n    \"z-index\": true,\r\n    zoom: true\r\n};\r\nvar KEY_TEXT = \"text\";\r\nvar KEY_STROKE = \"stroke\";\r\nvar KEY_STROKE_WIDTH = \"stroke-width\";\r\nvar KEY_STROKE_OPACITY = \"stroke-opacity\";\r\nvar KEY_FONT_SIZE = \"font-size\";\r\nvar KEY_FONT_STYLE = \"font-style\";\r\nvar KEY_FONT_WEIGHT = \"font-weight\";\r\nvar KEY_TEXT_DECORATION = \"text-decoration\";\r\nvar KEY_TEXTS_ALIGNMENT = \"textsAlignment\";\r\nvar NONE = \"none\";\r\nvar DEFAULT_FONT_SIZE = 12;\r\nvar ELLIPSIS = \"...\";\r\nvar objectCreate = function() {\r\n    if (!Object.create) {\r\n        return function(proto) {\r\n            var F = function() {};\r\n            F.prototype = proto;\r\n            return new F\r\n        }\r\n    } else {\r\n        return function(proto) {\r\n            return Object.create(proto)\r\n        }\r\n    }\r\n}();\r\nvar DEFAULTS = {\r\n    scaleX: 1,\r\n    scaleY: 1,\r\n    \"pointer-events\": null\r\n};\r\nvar getBackup = (0, _call_once.default)(function() {\r\n    var backupContainer = _dom_adapter.default.createElement(\"div\");\r\n    var backupCounter = 0;\r\n    backupContainer.style.left = \"-9999px\";\r\n    backupContainer.style.position = \"absolute\";\r\n    return {\r\n        backupContainer: backupContainer,\r\n        backupCounter: backupCounter\r\n    }\r\n});\r\n\r\nfunction backupRoot(root) {\r\n    if (0 === getBackup().backupCounter) {\r\n        _dom_adapter.default.getBody().appendChild(getBackup().backupContainer)\r\n    }++getBackup().backupCounter;\r\n    root.append({\r\n        element: getBackup().backupContainer\r\n    })\r\n}\r\n\r\nfunction restoreRoot(root, container) {\r\n    root.append({\r\n        element: container\r\n    });\r\n    --getBackup().backupCounter;\r\n    if (0 === getBackup().backupCounter) {\r\n        _dom_adapter.default.getBody().removeChild(getBackup().backupContainer)\r\n    }\r\n}\r\nvar getNextDefsSvgId = function() {\r\n    var numDefsSvgElements = 1;\r\n    return function() {\r\n        return \"DevExpress_\" + numDefsSvgElements++\r\n    }\r\n}();\r\n\r\nfunction isObjectArgument(value) {\r\n    return value && \"string\" !== typeof value\r\n}\r\n\r\nfunction createElement(tagName) {\r\n    return _dom_adapter.default.createElementNS(\"http://www.w3.org/2000/svg\", tagName)\r\n}\r\n\r\nfunction getFuncIri(id, pathModified) {\r\n    return null !== id ? \"url(\" + (pathModified ? window.location.href.split(\"#\")[0] : \"\") + \"#\" + id + \")\" : id\r\n}\r\n\r\nfunction extend(target, source) {\r\n    var key;\r\n    for (key in source) {\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction roundValue(value, exp) {\r\n    value = value.toString().split(\"e\");\r\n    value = round(+(value[0] + \"e\" + (value[1] ? +value[1] + exp : exp)));\r\n    value = value.toString().split(\"e\");\r\n    return +(value[0] + \"e\" + (value[1] ? +value[1] - exp : -exp))\r\n}\r\n\r\nfunction getBoundingClientRect(element) {\r\n    var box;\r\n    try {\r\n        box = element.getBoundingClientRect()\r\n    } catch (e) {}\r\n    return box || {\r\n        left: 0,\r\n        top: 0\r\n    }\r\n}\r\nvar preserveAspectRatioMap = {\r\n    full: NONE,\r\n    lefttop: \"xMinYMin\",\r\n    leftcenter: \"xMinYMid\",\r\n    leftbottom: \"xMinYMax\",\r\n    centertop: \"xMidYMin\",\r\n    center: \"xMidYMid\",\r\n    centerbottom: \"xMidYMax\",\r\n    righttop: \"xMaxYMin\",\r\n    rightcenter: \"xMaxYMid\",\r\n    rightbottom: \"xMaxYMax\"\r\n};\r\n\r\nfunction processHatchingAttrs(element, attrs) {\r\n    if (attrs.hatching && \"none\" !== (0, _utils.normalizeEnum)(attrs.hatching.direction)) {\r\n        attrs = extend({}, attrs);\r\n        attrs.fill = element._hatching = element.renderer.lockHatching(attrs.fill, attrs.hatching, element._hatching);\r\n        delete attrs.hatching\r\n    } else {\r\n        if (element._hatching) {\r\n            element.renderer.releaseHatching(element._hatching);\r\n            element._hatching = null\r\n        }\r\n    }\r\n    return attrs\r\n}\r\n\r\nfunction normalizeArcParams(x, y, innerR, outerR, startAngle, endAngle) {\r\n    var isCircle;\r\n    var noArc = true;\r\n    var angleDiff = roundValue(endAngle, 3) - roundValue(startAngle, 3);\r\n    if (angleDiff) {\r\n        if (abs(angleDiff) % 360 === 0) {\r\n            startAngle = 0;\r\n            endAngle = 360;\r\n            isCircle = true;\r\n            endAngle -= .01\r\n        }\r\n        if (startAngle > 360) {\r\n            startAngle %= 360\r\n        }\r\n        if (endAngle > 360) {\r\n            endAngle %= 360\r\n        }\r\n        if (startAngle > endAngle) {\r\n            startAngle -= 360\r\n        }\r\n        noArc = false\r\n    }\r\n    startAngle *= PI_DIV_180;\r\n    endAngle *= PI_DIV_180;\r\n    return [x, y, min(outerR, innerR), max(outerR, innerR), cos(startAngle), sin(startAngle), cos(endAngle), sin(endAngle), isCircle, floor(abs(endAngle - startAngle) / PI) % 2 ? \"1\" : \"0\", noArc]\r\n}\r\nvar buildArcPath = function(x, y, innerR, outerR, startAngleCos, startAngleSin, endAngleCos, endAngleSin, isCircle, longFlag) {\r\n    return [\"M\", (x + outerR * startAngleCos).toFixed(ARC_COORD_PREC), (y - outerR * startAngleSin).toFixed(ARC_COORD_PREC), \"A\", outerR.toFixed(ARC_COORD_PREC), outerR.toFixed(ARC_COORD_PREC), 0, longFlag, 0, (x + outerR * endAngleCos).toFixed(ARC_COORD_PREC), (y - outerR * endAngleSin).toFixed(ARC_COORD_PREC), isCircle ? \"M\" : \"L\", (x + innerR * endAngleCos).toFixed(5), (y - innerR * endAngleSin).toFixed(ARC_COORD_PREC), \"A\", innerR.toFixed(ARC_COORD_PREC), innerR.toFixed(ARC_COORD_PREC), 0, longFlag, 1, (x + innerR * startAngleCos).toFixed(ARC_COORD_PREC), (y - innerR * startAngleSin).toFixed(ARC_COORD_PREC), \"Z\"].join(\" \")\r\n};\r\n\r\nfunction buildPathSegments(points, type) {\r\n    var list = [\r\n        [\"M\", 0, 0]\r\n    ];\r\n    switch (type) {\r\n        case \"line\":\r\n            list = buildLineSegments(points);\r\n            break;\r\n        case \"area\":\r\n            list = buildLineSegments(points, true);\r\n            break;\r\n        case \"bezier\":\r\n            list = buildCurveSegments(points);\r\n            break;\r\n        case \"bezierarea\":\r\n            list = buildCurveSegments(points, true)\r\n    }\r\n    return list\r\n}\r\n\r\nfunction buildLineSegments(points, close) {\r\n    return buildSegments(points, buildSimpleLineSegment, close)\r\n}\r\n\r\nfunction buildCurveSegments(points, close) {\r\n    return buildSegments(points, buildSimpleCurveSegment, close)\r\n}\r\n\r\nfunction buildSegments(points, buildSimpleSegment, close) {\r\n    var _points$;\r\n    var i;\r\n    var ii;\r\n    var list = [];\r\n    if (null !== (_points$ = points[0]) && void 0 !== _points$ && _points$.length) {\r\n        for (i = 0, ii = points.length; i < ii; ++i) {\r\n            buildSimpleSegment(points[i], close, list)\r\n        }\r\n    } else {\r\n        buildSimpleSegment(points, close, list)\r\n    }\r\n    return list\r\n}\r\n\r\nfunction buildSimpleLineSegment(points, close, list) {\r\n    var i = 0;\r\n    var k0 = list.length;\r\n    var k = k0;\r\n    var ii = (points || []).length;\r\n    if (ii) {\r\n        if (void 0 !== points[0].x) {\r\n            for (; i < ii;) {\r\n                list[k++] = [\"L\", points[i].x, points[i++].y]\r\n            }\r\n        } else {\r\n            for (; i < ii;) {\r\n                list[k++] = [\"L\", points[i++], points[i++]]\r\n            }\r\n        }\r\n        list[k0][0] = \"M\"\r\n    } else {\r\n        list[k] = [\"M\", 0, 0]\r\n    }\r\n    close && list.push([\"Z\"]);\r\n    return list\r\n}\r\n\r\nfunction buildSimpleCurveSegment(points, close, list) {\r\n    var i;\r\n    var k = list.length;\r\n    var ii = (points || []).length;\r\n    if (ii) {\r\n        if (void 0 !== points[0].x) {\r\n            list[k++] = [\"M\", points[0].x, points[0].y];\r\n            for (i = 1; i < ii;) {\r\n                list[k++] = [\"C\", points[i].x, points[i++].y, points[i].x, points[i++].y, points[i].x, points[i++].y]\r\n            }\r\n        } else {\r\n            list[k++] = [\"M\", points[0], points[1]];\r\n            for (i = 2; i < ii;) {\r\n                list[k++] = [\"C\", points[i++], points[i++], points[i++], points[i++], points[i++], points[i++]]\r\n            }\r\n        }\r\n    } else {\r\n        list[k] = [\"M\", 0, 0]\r\n    }\r\n    close && list.push([\"Z\"]);\r\n    return list\r\n}\r\n\r\nfunction combinePathParam(segments) {\r\n    var d = [];\r\n    var k = 0;\r\n    var i;\r\n    var ii = segments.length;\r\n    var segment;\r\n    var j;\r\n    var jj;\r\n    for (i = 0; i < ii; ++i) {\r\n        segment = segments[i];\r\n        for (j = 0, jj = segment.length; j < jj; ++j) {\r\n            d[k++] = segment[j]\r\n        }\r\n    }\r\n    return d.join(\" \")\r\n}\r\n\r\nfunction compensateSegments(oldSegments, newSegments, type) {\r\n    var oldLength = oldSegments.length;\r\n    var newLength = newSegments.length;\r\n    var i;\r\n    var originalNewSegments;\r\n    var makeEqualSegments = type.indexOf(\"area\") !== -1 ? makeEqualAreaSegments : makeEqualLineSegments;\r\n    if (0 === oldLength) {\r\n        for (i = 0; i < newLength; i++) {\r\n            oldSegments.push(newSegments[i].slice(0))\r\n        }\r\n    } else {\r\n        if (oldLength < newLength) {\r\n            makeEqualSegments(oldSegments, newSegments, type)\r\n        } else {\r\n            if (oldLength > newLength) {\r\n                originalNewSegments = newSegments.slice(0);\r\n                makeEqualSegments(newSegments, oldSegments, type)\r\n            }\r\n        }\r\n    }\r\n    return originalNewSegments\r\n}\r\n\r\nfunction prepareConstSegment(constSeg, type) {\r\n    var x = constSeg[constSeg.length - 2];\r\n    var y = constSeg[constSeg.length - 1];\r\n    switch (type) {\r\n        case \"line\":\r\n        case \"area\":\r\n            constSeg[0] = \"L\";\r\n            break;\r\n        case \"bezier\":\r\n        case \"bezierarea\":\r\n            constSeg[0] = \"C\";\r\n            constSeg[1] = constSeg[3] = constSeg[5] = x;\r\n            constSeg[2] = constSeg[4] = constSeg[6] = y\r\n    }\r\n}\r\n\r\nfunction makeEqualLineSegments(short, long, type) {\r\n    var constSeg = short[short.length - 1].slice();\r\n    var i = short.length;\r\n    prepareConstSegment(constSeg, type);\r\n    for (; i < long.length; i++) {\r\n        short[i] = constSeg.slice(0)\r\n    }\r\n}\r\n\r\nfunction makeEqualAreaSegments(short, long, type) {\r\n    var i;\r\n    var head;\r\n    var shortLength = short.length;\r\n    var longLength = long.length;\r\n    var constsSeg1;\r\n    var constsSeg2;\r\n    if ((shortLength - 1) % 2 === 0 && (longLength - 1) % 2 === 0) {\r\n        i = (shortLength - 1) / 2 - 1;\r\n        head = short.slice(0, i + 1);\r\n        constsSeg1 = head[head.length - 1].slice(0);\r\n        constsSeg2 = short.slice(i + 1)[0].slice(0);\r\n        prepareConstSegment(constsSeg1, type);\r\n        prepareConstSegment(constsSeg2, type);\r\n        for (var j = i; j < (longLength - 1) / 2 - 1; j++) {\r\n            short.splice(j + 1, 0, constsSeg1);\r\n            short.splice(j + 3, 0, constsSeg2)\r\n        }\r\n    }\r\n}\r\n\r\nfunction baseCss(that, styles) {\r\n    var elemStyles = that._styles;\r\n    var str = \"\";\r\n    var key;\r\n    var value;\r\n    styles = styles || {};\r\n    for (key in styles) {\r\n        value = styles[key];\r\n        if ((0, _type.isDefined)(value)) {\r\n            value += \"number\" === typeof value && !pxAddingExceptions[key] ? \"px\" : \"\";\r\n            elemStyles[key] = \"\" !== value ? value : null\r\n        }\r\n    }\r\n    for (key in elemStyles) {\r\n        value = elemStyles[key];\r\n        if (value) {\r\n            str += key + \":\" + value + \";\"\r\n        }\r\n    }\r\n    str && that.element.setAttribute(\"style\", str);\r\n    return that\r\n}\r\n\r\nfunction fixFuncIri(wrapper, attribute) {\r\n    var element = wrapper.element;\r\n    var id = wrapper.attr(attribute);\r\n    if (id && id.indexOf(\"DevExpress\") !== -1) {\r\n        element.removeAttribute(attribute);\r\n        element.setAttribute(attribute, getFuncIri(id, wrapper.renderer.pathModified))\r\n    }\r\n}\r\n\r\nfunction baseAttr(that, attrs) {\r\n    attrs = attrs || {};\r\n    var settings = that._settings;\r\n    var attributes = {};\r\n    var key;\r\n    var value;\r\n    var elem = that.element;\r\n    var renderer = that.renderer;\r\n    var rtl = renderer.rtl;\r\n    var hasTransformations;\r\n    var recalculateDashStyle;\r\n    var sw;\r\n    var i;\r\n    if (!isObjectArgument(attrs)) {\r\n        if (attrs in settings) {\r\n            return settings[attrs]\r\n        }\r\n        if (attrs in DEFAULTS) {\r\n            return DEFAULTS[attrs]\r\n        }\r\n        return 0\r\n    }\r\n    extend(attributes, attrs);\r\n    for (key in attributes) {\r\n        value = attributes[key];\r\n        if (void 0 === value) {\r\n            continue\r\n        }\r\n        settings[key] = value;\r\n        if (\"align\" === key) {\r\n            key = \"text-anchor\";\r\n            value = {\r\n                left: rtl ? \"end\" : \"start\",\r\n                center: \"middle\",\r\n                right: rtl ? \"start\" : \"end\"\r\n            } [value] || null\r\n        } else {\r\n            if (\"dashStyle\" === key) {\r\n                recalculateDashStyle = true;\r\n                continue\r\n            } else {\r\n                if (key === KEY_STROKE_WIDTH) {\r\n                    recalculateDashStyle = true\r\n                } else {\r\n                    if (value && (\"fill\" === key || \"clip-path\" === key || \"filter\" === key) && 0 === value.indexOf(\"DevExpress\")) {\r\n                        that._addFixIRICallback();\r\n                        value = getFuncIri(value, renderer.pathModified)\r\n                    } else {\r\n                        if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y)|sharp|sharpDirection)$/i.test(key)) {\r\n                            hasTransformations = true;\r\n                            continue\r\n                        } else {\r\n                            if (/^(x|y|d)$/i.test(key)) {\r\n                                hasTransformations = true\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        if (null === value) {\r\n            elem.removeAttribute(key)\r\n        } else {\r\n            elem.setAttribute(key, value)\r\n        }\r\n    }\r\n    if (recalculateDashStyle && \"dashStyle\" in settings) {\r\n        value = settings.dashStyle;\r\n        sw = (\"_originalSW\" in that ? that._originalSW : settings[KEY_STROKE_WIDTH]) || 1;\r\n        key = \"stroke-dasharray\";\r\n        value = null === value ? \"\" : (0, _utils.normalizeEnum)(value);\r\n        if (\"\" === value || \"solid\" === value || value === NONE) {\r\n            that.element.removeAttribute(key)\r\n        } else {\r\n            value = value.replace(/longdash/g, \"8,3,\").replace(/dash/g, \"4,3,\").replace(/dot/g, \"1,3,\").replace(/,$/, \"\").split(\",\");\r\n            i = value.length;\r\n            while (i--) {\r\n                value[i] = parseInt(value[i]) * sw\r\n            }\r\n            that.element.setAttribute(key, value.join(\",\"))\r\n        }\r\n    }\r\n    if (hasTransformations) {\r\n        that._applyTransformation()\r\n    }\r\n    return that\r\n}\r\n\r\nfunction pathAttr(attrs) {\r\n    var that = this;\r\n    var segments;\r\n    if (isObjectArgument(attrs)) {\r\n        attrs = extend({}, attrs);\r\n        segments = attrs.segments;\r\n        if (\"points\" in attrs) {\r\n            segments = buildPathSegments(attrs.points, that.type);\r\n            delete attrs.points\r\n        }\r\n        if (segments) {\r\n            attrs.d = combinePathParam(segments);\r\n            that.segments = segments;\r\n            delete attrs.segments\r\n        }\r\n    }\r\n    return baseAttr(that, attrs)\r\n}\r\n\r\nfunction arcAttr(attrs) {\r\n    var settings = this._settings;\r\n    var x;\r\n    var y;\r\n    var innerRadius;\r\n    var outerRadius;\r\n    var startAngle;\r\n    var endAngle;\r\n    if (isObjectArgument(attrs)) {\r\n        attrs = extend({}, attrs);\r\n        if (\"x\" in attrs || \"y\" in attrs || \"innerRadius\" in attrs || \"outerRadius\" in attrs || \"startAngle\" in attrs || \"endAngle\" in attrs) {\r\n            settings.x = x = \"x\" in attrs ? attrs.x : settings.x;\r\n            delete attrs.x;\r\n            settings.y = y = \"y\" in attrs ? attrs.y : settings.y;\r\n            delete attrs.y;\r\n            settings.innerRadius = innerRadius = \"innerRadius\" in attrs ? attrs.innerRadius : settings.innerRadius;\r\n            delete attrs.innerRadius;\r\n            settings.outerRadius = outerRadius = \"outerRadius\" in attrs ? attrs.outerRadius : settings.outerRadius;\r\n            delete attrs.outerRadius;\r\n            settings.startAngle = startAngle = \"startAngle\" in attrs ? attrs.startAngle : settings.startAngle;\r\n            delete attrs.startAngle;\r\n            settings.endAngle = endAngle = \"endAngle\" in attrs ? attrs.endAngle : settings.endAngle;\r\n            delete attrs.endAngle;\r\n            attrs.d = buildArcPath.apply(null, normalizeArcParams(x, y, innerRadius, outerRadius, startAngle, endAngle))\r\n        }\r\n    }\r\n    return baseAttr(this, attrs)\r\n}\r\n\r\nfunction rectAttr(attrs) {\r\n    var that = this;\r\n    var x;\r\n    var y;\r\n    var width;\r\n    var height;\r\n    var sw;\r\n    var maxSW;\r\n    var newSW;\r\n    if (isObjectArgument(attrs)) {\r\n        attrs = extend({}, attrs);\r\n        if (void 0 !== attrs.x || void 0 !== attrs.y || void 0 !== attrs.width || void 0 !== attrs.height || void 0 !== attrs[KEY_STROKE_WIDTH]) {\r\n            void 0 !== attrs.x ? x = that._originalX = attrs.x : x = that._originalX || 0;\r\n            void 0 !== attrs.y ? y = that._originalY = attrs.y : y = that._originalY || 0;\r\n            void 0 !== attrs.width ? width = that._originalWidth = attrs.width : width = that._originalWidth || 0;\r\n            void 0 !== attrs.height ? height = that._originalHeight = attrs.height : height = that._originalHeight || 0;\r\n            void 0 !== attrs[KEY_STROKE_WIDTH] ? sw = that._originalSW = attrs[KEY_STROKE_WIDTH] : sw = that._originalSW;\r\n            maxSW = ~~((width < height ? width : height) / 2);\r\n            newSW = (sw || 0) < maxSW ? sw || 0 : maxSW;\r\n            attrs.x = x + newSW / 2;\r\n            attrs.y = y + newSW / 2;\r\n            attrs.width = width - newSW;\r\n            attrs.height = height - newSW;\r\n            ((sw || 0) !== newSW || !(0 === newSW && void 0 === sw)) && (attrs[KEY_STROKE_WIDTH] = newSW)\r\n        }\r\n        if (\"sharp\" in attrs) {\r\n            delete attrs.sharp\r\n        }\r\n    }\r\n    return baseAttr(that, attrs)\r\n}\r\n\r\nfunction textAttr(attrs) {\r\n    var that = this;\r\n    var isResetRequired;\r\n    if (!isObjectArgument(attrs)) {\r\n        return baseAttr(that, attrs)\r\n    }\r\n    attrs = extend({}, attrs);\r\n    var settings = that._settings;\r\n    var wasStroked = (0, _type.isDefined)(settings[KEY_STROKE]) && (0, _type.isDefined)(settings[KEY_STROKE_WIDTH]);\r\n    if (void 0 !== attrs[KEY_TEXT]) {\r\n        settings[KEY_TEXT] = attrs[KEY_TEXT];\r\n        delete attrs[KEY_TEXT];\r\n        isResetRequired = true\r\n    }\r\n    if (void 0 !== attrs[KEY_STROKE]) {\r\n        settings[KEY_STROKE] = attrs[KEY_STROKE];\r\n        delete attrs[KEY_STROKE]\r\n    }\r\n    if (void 0 !== attrs[KEY_STROKE_WIDTH]) {\r\n        settings[KEY_STROKE_WIDTH] = attrs[KEY_STROKE_WIDTH];\r\n        delete attrs[KEY_STROKE_WIDTH]\r\n    }\r\n    if (void 0 !== attrs[KEY_STROKE_OPACITY]) {\r\n        settings[KEY_STROKE_OPACITY] = attrs[KEY_STROKE_OPACITY];\r\n        delete attrs[KEY_STROKE_OPACITY]\r\n    }\r\n    if (void 0 !== attrs[KEY_TEXTS_ALIGNMENT]) {\r\n        alignTextNodes(that, attrs[KEY_TEXTS_ALIGNMENT]);\r\n        delete attrs[KEY_TEXTS_ALIGNMENT]\r\n    }\r\n    var isStroked = (0, _type.isDefined)(settings[KEY_STROKE]) && (0, _type.isDefined)(settings[KEY_STROKE_WIDTH]);\r\n    baseAttr(that, attrs);\r\n    isResetRequired = isResetRequired || isStroked !== wasStroked && settings[KEY_TEXT];\r\n    if (isResetRequired) {\r\n        createTextNodes(that, settings.text, isStroked);\r\n        that._hasEllipsis = false\r\n    }\r\n    if (isResetRequired || void 0 !== attrs.x || void 0 !== attrs.y) {\r\n        locateTextNodes(that)\r\n    }\r\n    if (isStroked) {\r\n        strokeTextNodes(that)\r\n    }\r\n    return that\r\n}\r\n\r\nfunction textCss(styles) {\r\n    styles = styles || {};\r\n    baseCss(this, styles);\r\n    if (KEY_FONT_SIZE in styles) {\r\n        locateTextNodes(this)\r\n    }\r\n    return this\r\n}\r\n\r\nfunction orderHtmlTree(list, line, node, parentStyle, parentClassName) {\r\n    var style;\r\n    var realStyle;\r\n    var i;\r\n    var ii;\r\n    var nodes;\r\n    if (void 0 !== node.wholeText) {\r\n        list.push({\r\n            value: node.wholeText,\r\n            style: parentStyle,\r\n            className: parentClassName,\r\n            line: line,\r\n            height: parentStyle[KEY_FONT_SIZE] || 0\r\n        })\r\n    } else {\r\n        if (\"BR\" === node.tagName) {\r\n            ++line\r\n        } else {\r\n            if (_dom_adapter.default.isElementNode(node)) {\r\n                extend(style = {}, parentStyle);\r\n                switch (node.tagName) {\r\n                    case \"B\":\r\n                    case \"STRONG\":\r\n                        style[KEY_FONT_WEIGHT] = \"bold\";\r\n                        break;\r\n                    case \"I\":\r\n                    case \"EM\":\r\n                        style[KEY_FONT_STYLE] = \"italic\";\r\n                        break;\r\n                    case \"U\":\r\n                        style[KEY_TEXT_DECORATION] = \"underline\"\r\n                }\r\n                realStyle = node.style;\r\n                realStyle.color && (style.fill = realStyle.color);\r\n                realStyle.fontSize && (style[KEY_FONT_SIZE] = realStyle.fontSize);\r\n                realStyle.fontStyle && (style[KEY_FONT_STYLE] = realStyle.fontStyle);\r\n                realStyle.fontWeight && (style[KEY_FONT_WEIGHT] = realStyle.fontWeight);\r\n                realStyle.textDecoration && (style[KEY_TEXT_DECORATION] = realStyle.textDecoration);\r\n                for (i = 0, nodes = node.childNodes, ii = nodes.length; i < ii; ++i) {\r\n                    line = orderHtmlTree(list, line, nodes[i], style, node.className || parentClassName)\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return line\r\n}\r\n\r\nfunction adjustLineHeights(items) {\r\n    var i;\r\n    var ii;\r\n    var currentItem = items[0];\r\n    var item;\r\n    for (i = 1, ii = items.length; i < ii; ++i) {\r\n        item = items[i];\r\n        if (item.line === currentItem.line) {\r\n            currentItem.height = maxLengthFontSize(currentItem.height, item.height);\r\n            currentItem.inherits = currentItem.inherits || 0 === parseFloat(item.height);\r\n            item.height = NaN\r\n        } else {\r\n            currentItem = item\r\n        }\r\n    }\r\n}\r\n\r\nfunction removeExtraAttrs(html) {\r\n    var findTagAttrs = /(?:(<[a-z0-9]+\\s*))([\\s\\S]*?)(>|\\/>)/gi;\r\n    var findStyleAndClassAttrs = /(style|class)\\s*=\\s*([\"'])(?:(?!\\2).)*\\2\\s?/gi;\r\n    return html.replace(findTagAttrs, function(allTagAttrs, p1, p2, p3) {\r\n        p2 = (p2 && p2.match(findStyleAndClassAttrs) || []).map(function(str) {\r\n            return str\r\n        }).join(\" \");\r\n        return p1 + p2 + p3\r\n    })\r\n}\r\n\r\nfunction parseHTML(text) {\r\n    var items = [];\r\n    var div = _dom_adapter.default.createElement(\"div\");\r\n    div.innerHTML = text.replace(/\\r/g, \"\").replace(/\\n/g, \"<br/>\");\r\n    orderHtmlTree(items, 0, div, {}, \"\");\r\n    adjustLineHeights(items);\r\n    return items\r\n}\r\n\r\nfunction parseMultiline(text) {\r\n    var texts = text.replace(/\\r/g, \"\").split(/\\n/g);\r\n    var i = 0;\r\n    var items = [];\r\n    for (; i < texts.length; i++) {\r\n        items.push({\r\n            value: texts[i].trim(),\r\n            height: 0,\r\n            line: i\r\n        })\r\n    }\r\n    return items\r\n}\r\n\r\nfunction createTspans(items, element, fieldName) {\r\n    var i;\r\n    var ii;\r\n    var item;\r\n    for (i = 0, ii = items.length; i < ii; ++i) {\r\n        item = items[i];\r\n        item[fieldName] = createElement(\"tspan\");\r\n        item[fieldName].appendChild(_dom_adapter.default.createTextNode(item.value));\r\n        item.style && baseCss({\r\n            element: item[fieldName],\r\n            _styles: {}\r\n        }, item.style);\r\n        item.className && item[fieldName].setAttribute(\"class\", item.className);\r\n        element.appendChild(item[fieldName])\r\n    }\r\n}\r\n\r\nfunction restoreText() {\r\n    if (this._hasEllipsis) {\r\n        this.attr({\r\n            text: this._settings.text\r\n        })\r\n    }\r\n}\r\n\r\nfunction applyEllipsis(maxWidth) {\r\n    var that = this;\r\n    var lines;\r\n    var hasEllipsis = false;\r\n    var i;\r\n    var ii;\r\n    var lineParts;\r\n    var j;\r\n    var jj;\r\n    var text;\r\n    restoreText.call(that);\r\n    var ellipsis = that.renderer.text(ELLIPSIS).attr(that._styles).append(that.renderer.root);\r\n    var ellipsisWidth = ellipsis.getBBox().width;\r\n    if (that._getElementBBox().width > maxWidth) {\r\n        if (maxWidth - ellipsisWidth < 0) {\r\n            maxWidth = 0\r\n        } else {\r\n            maxWidth -= ellipsisWidth\r\n        }\r\n        lines = prepareLines(that.element, that._texts, maxWidth);\r\n        for (i = 0, ii = lines.length; i < ii; ++i) {\r\n            lineParts = lines[i].parts;\r\n            if (1 === lines[i].commonLength) {\r\n                continue\r\n            }\r\n            for (j = 0, jj = lineParts.length; j < jj; ++j) {\r\n                text = lineParts[j];\r\n                if ((0, _type.isDefined)(text.endIndex)) {\r\n                    setNewText(text, text.endIndex);\r\n                    hasEllipsis = true\r\n                } else {\r\n                    if (text.startBox > maxWidth) {\r\n                        removeTextSpan(text)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    ellipsis.remove();\r\n    that._hasEllipsis = hasEllipsis;\r\n    return hasEllipsis\r\n}\r\n\r\nfunction cloneAndRemoveAttrs(node) {\r\n    var clone;\r\n    if (node) {\r\n        clone = node.cloneNode();\r\n        clone.removeAttribute(\"y\");\r\n        clone.removeAttribute(\"x\")\r\n    }\r\n    return clone || node\r\n}\r\n\r\nfunction detachTitleElements(element) {\r\n    var titleElements = _dom_adapter.default.querySelectorAll(element, \"title\");\r\n    for (var i = 0; i < titleElements.length; i++) {\r\n        element.removeChild(titleElements[i])\r\n    }\r\n    return titleElements\r\n}\r\n\r\nfunction detachAndStoreTitleElements(element) {\r\n    var titleElements = detachTitleElements(element);\r\n    return function() {\r\n        for (var i = 0; i < titleElements.length; i++) {\r\n            element.appendChild(titleElements[i])\r\n        }\r\n    }\r\n}\r\n\r\nfunction setMaxSize(maxWidth, maxHeight) {\r\n    var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n    var that = this;\r\n    var lines = [];\r\n    var textChanged = false;\r\n    var textIsEmpty = false;\r\n    var ellipsisMaxWidth = maxWidth;\r\n    restoreText.call(that);\r\n    var restoreTitleElement = detachAndStoreTitleElements(this.element);\r\n    var ellipsis = that.renderer.text(ELLIPSIS).attr(that._styles).append(that.renderer.root);\r\n    var ellipsisWidth = ellipsis.getBBox().width;\r\n    var _that$_getElementBBox = that._getElementBBox(),\r\n        width = _that$_getElementBBox.width,\r\n        height = _that$_getElementBBox.height;\r\n    if ((width || height) && (width > maxWidth || maxHeight && height > maxHeight)) {\r\n        if (maxWidth - ellipsisWidth < 0) {\r\n            ellipsisMaxWidth = 0\r\n        } else {\r\n            ellipsisMaxWidth -= ellipsisWidth\r\n        }\r\n        lines = applyOverflowRules(that.element, that._texts, maxWidth, ellipsisMaxWidth, options, maxHeight);\r\n        lines = setMaxHeight(lines, ellipsisMaxWidth, options, maxHeight, parseFloat(this._getLineHeight()));\r\n        this._texts = lines.reduce(function(texts, line) {\r\n            return texts.concat(line.parts)\r\n        }, []).filter(function(t) {\r\n            return \"\" !== t.value\r\n        }).map(function(t) {\r\n            t.stroke && t.tspan.parentNode.appendChild(t.stroke);\r\n            return t\r\n        }).map(function(t) {\r\n            t.tspan.parentNode.appendChild(t.tspan);\r\n            return t\r\n        });\r\n        !this._texts.length && (this._texts = null);\r\n        textChanged = true;\r\n        if (this._texts) {\r\n            locateTextNodes(this)\r\n        } else {\r\n            this.element.textContent = \"\";\r\n            textIsEmpty = true\r\n        }\r\n    }\r\n    ellipsis.remove();\r\n    that._hasEllipsis = textChanged;\r\n    restoreTitleElement();\r\n    return {\r\n        rowCount: lines.length,\r\n        textChanged: textChanged,\r\n        textIsEmpty: textIsEmpty\r\n    }\r\n}\r\n\r\nfunction getIndexForEllipsis(text, maxWidth, startBox, endBox) {\r\n    var k;\r\n    var kk;\r\n    if (startBox <= maxWidth && endBox > maxWidth) {\r\n        for (k = 1, kk = text.value.length; k <= kk; ++k) {\r\n            if (startBox + text.tspan.getSubStringLength(0, k) > maxWidth) {\r\n                return k - 1\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction getTextWidth(text) {\r\n    return text.value.length ? text.tspan.getSubStringLength(0, text.value.length) : 0\r\n}\r\n\r\nfunction prepareLines(element, texts, maxWidth) {\r\n    var lines = [];\r\n    var i;\r\n    var ii;\r\n    var text;\r\n    var startBox;\r\n    var endBox;\r\n    if (texts) {\r\n        for (i = 0, ii = texts.length; i < ii; ++i) {\r\n            text = texts[i];\r\n            if (!lines[text.line]) {\r\n                text.startBox = startBox = 0;\r\n                lines.push({\r\n                    commonLength: text.value.length,\r\n                    parts: [text]\r\n                })\r\n            } else {\r\n                text.startBox = startBox;\r\n                lines[text.line].parts.push(text);\r\n                lines[text.line].commonLength += text.value.length\r\n            }\r\n            endBox = startBox + text.tspan.getSubStringLength(0, text.value.length);\r\n            text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox);\r\n            startBox = endBox\r\n        }\r\n    } else {\r\n        text = {\r\n            value: element.textContent,\r\n            tspan: element\r\n        };\r\n        text.startBox = startBox = 0;\r\n        endBox = startBox + getTextWidth(text);\r\n        text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox);\r\n        lines = [{\r\n            commonLength: element.textContent.length,\r\n            parts: [text]\r\n        }]\r\n    }\r\n    return lines\r\n}\r\n\r\nfunction getSpaceBreakIndex(text, maxWidth) {\r\n    var initialIndices = text.startBox > 0 ? [0] : [];\r\n    var spaceIndices = text.value.split(\"\").reduce(function(indices, char, index) {\r\n        if (\" \" === char) {\r\n            indices.push(index)\r\n        }\r\n        return indices\r\n    }, initialIndices);\r\n    var spaceIndex = 0;\r\n    while (void 0 !== spaceIndices[spaceIndex + 1] && text.startBox + text.tspan.getSubStringLength(0, spaceIndices[spaceIndex + 1]) < maxWidth) {\r\n        spaceIndex++\r\n    }\r\n    return spaceIndices[spaceIndex]\r\n}\r\n\r\nfunction getWordBreakIndex(text, maxWidth) {\r\n    for (var i = 0; i < text.value.length - 1; i++) {\r\n        if (text.startBox + text.tspan.getSubStringLength(0, i + 1) > maxWidth) {\r\n            return i\r\n        }\r\n    }\r\n}\r\n\r\nfunction getEllipsisString(ellipsisMaxWidth, _ref) {\r\n    var hideOverflowEllipsis = _ref.hideOverflowEllipsis;\r\n    return hideOverflowEllipsis && 0 === ellipsisMaxWidth ? \"\" : ELLIPSIS\r\n}\r\n\r\nfunction setEllipsis(text, ellipsisMaxWidth, options) {\r\n    var ellipsis = getEllipsisString(ellipsisMaxWidth, options);\r\n    if (text.value.length && text.tspan.parentNode) {\r\n        for (var i = text.value.length - 1; i >= 1; i--) {\r\n            if (text.startBox + text.tspan.getSubStringLength(0, i) < ellipsisMaxWidth) {\r\n                setNewText(text, i, ellipsis);\r\n                break\r\n            } else {\r\n                if (1 === i) {\r\n                    setNewText(text, 0, ellipsis)\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction wordWrap(text, maxWidth, ellipsisMaxWidth, options) {\r\n    var wholeText = text.value;\r\n    var breakIndex;\r\n    if (\"none\" !== options.wordWrap) {\r\n        breakIndex = \"normal\" === options.wordWrap ? getSpaceBreakIndex(text, maxWidth) : getWordBreakIndex(text, maxWidth)\r\n    }\r\n    var restLines = [];\r\n    var restText;\r\n    if (isFinite(breakIndex)) {\r\n        setNewText(text, breakIndex, \"\");\r\n        var newTextOffset = \" \" === wholeText[breakIndex] ? 1 : 0;\r\n        var restString = wholeText.slice(breakIndex + newTextOffset);\r\n        if (restString.length) {\r\n            var restTspan = cloneAndRemoveAttrs(text.tspan);\r\n            restTspan.textContent = restString;\r\n            text.tspan.parentNode.appendChild(restTspan);\r\n            restText = extend(extend({}, text), {\r\n                value: restString,\r\n                startBox: 0,\r\n                height: 0,\r\n                tspan: restTspan,\r\n                stroke: cloneAndRemoveAttrs(text.stroke),\r\n                endBox: restTspan.getSubStringLength(0, restString.length)\r\n            });\r\n            restText.stroke && (restText.stroke.textContent = restString);\r\n            if (restText.endBox > maxWidth) {\r\n                restLines = wordWrap(restText, maxWidth, ellipsisMaxWidth, options);\r\n                if (!restLines.length) {\r\n                    return []\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (text.value.length) {\r\n        if (\"ellipsis\" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) {\r\n            setEllipsis(text, ellipsisMaxWidth, options)\r\n        }\r\n        if (\"hide\" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) {\r\n            return []\r\n        }\r\n    } else {\r\n        text.tspan.parentNode.removeChild(text.tspan)\r\n    }\r\n    var parts = [];\r\n    if (restText) {\r\n        parts.push(restText)\r\n    }\r\n    return [{\r\n        commonLength: wholeText.length,\r\n        parts: parts\r\n    }].concat(restLines)\r\n}\r\n\r\nfunction calculateLineHeight(line, lineHeight) {\r\n    return line.parts.reduce(function(height, text) {\r\n        return max(height, getItemLineHeight(text, lineHeight))\r\n    }, 0)\r\n}\r\n\r\nfunction setMaxHeight(lines, ellipsisMaxWidth, options, maxHeight, lineHeight) {\r\n    var textOverflow = options.textOverflow;\r\n    if (!isFinite(maxHeight) || 0 === Number(maxHeight) || \"none\" === textOverflow) {\r\n        return lines\r\n    }\r\n    var result = lines.reduce(function(_ref2, l, index, arr) {\r\n        var _ref3 = _slicedToArray(_ref2, 2),\r\n            lines = _ref3[0],\r\n            commonHeight = _ref3[1];\r\n        var height = calculateLineHeight(l, lineHeight);\r\n        commonHeight += height;\r\n        if (commonHeight < maxHeight) {\r\n            lines.push(l)\r\n        } else {\r\n            l.parts.forEach(function(item) {\r\n                removeTextSpan(item)\r\n            });\r\n            if (\"ellipsis\" === textOverflow) {\r\n                var prevLine = arr[index - 1];\r\n                if (prevLine) {\r\n                    var text = prevLine.parts[prevLine.parts.length - 1];\r\n                    if (!text.hasEllipsis) {\r\n                        if (0 === ellipsisMaxWidth || text.endBox < ellipsisMaxWidth) {\r\n                            setNewText(text, text.value.length, getEllipsisString(ellipsisMaxWidth, options))\r\n                        } else {\r\n                            setEllipsis(text, ellipsisMaxWidth, options)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return [lines, commonHeight]\r\n    }, [\r\n        [], 0\r\n    ]);\r\n    if (\"hide\" === textOverflow && result[1] > maxHeight) {\r\n        result[0].forEach(function(l) {\r\n            l.parts.forEach(function(item) {\r\n                removeTextSpan(item)\r\n            })\r\n        });\r\n        return []\r\n    }\r\n    return result[0]\r\n}\r\n\r\nfunction applyOverflowRules(element, texts, maxWidth, ellipsisMaxWidth, options) {\r\n    if (!texts) {\r\n        var textValue = element.textContent;\r\n        var text = {\r\n            value: textValue,\r\n            height: 0,\r\n            line: 0\r\n        };\r\n        element.textContent = \"\";\r\n        createTspans([text], element, \"tspan\");\r\n        texts = [text]\r\n    }\r\n    return texts.reduce(function(_ref4, text) {\r\n        var _ref5 = _slicedToArray(_ref4, 5),\r\n            lines = _ref5[0],\r\n            startBox = _ref5[1],\r\n            endBox = _ref5[2],\r\n            stop = _ref5[3],\r\n            lineNumber = _ref5[4];\r\n        var line = lines[lines.length - 1];\r\n        if (stop) {\r\n            return [lines, startBox, endBox, stop]\r\n        }\r\n        if (!line || text.line !== lineNumber) {\r\n            text.startBox = startBox = 0;\r\n            lines.push({\r\n                commonLength: text.value.length,\r\n                parts: [text]\r\n            })\r\n        } else {\r\n            text.startBox = startBox;\r\n            if (startBox > ellipsisMaxWidth && \"none\" === options.wordWrap && \"ellipsis\" === options.textOverflow) {\r\n                removeTextSpan(text);\r\n                return [lines, startBox, endBox, stop, lineNumber]\r\n            }\r\n            line.parts.push(text);\r\n            line.commonLength += text.value.length\r\n        }\r\n        text.endBox = endBox = startBox + getTextWidth(text);\r\n        startBox = endBox;\r\n        if ((0, _type.isDefined)(maxWidth) && endBox > maxWidth) {\r\n            var wordWrapLines = wordWrap(text, maxWidth, ellipsisMaxWidth, options);\r\n            if (!wordWrapLines.length) {\r\n                lines = [];\r\n                stop = true\r\n            } else {\r\n                lines = lines.concat(wordWrapLines.filter(function(l) {\r\n                    return l.parts.length > 0\r\n                }))\r\n            }\r\n        }\r\n        return [lines, startBox, endBox, stop, text.line]\r\n    }, [\r\n        [], 0, 0, false, 0\r\n    ])[0]\r\n}\r\n\r\nfunction setNewText(text, index) {\r\n    var insertString = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ELLIPSIS;\r\n    var newText = text.value.substr(0, index) + insertString;\r\n    text.value = text.tspan.textContent = newText;\r\n    text.stroke && (text.stroke.textContent = newText);\r\n    if (insertString === ELLIPSIS) {\r\n        text.hasEllipsis = true\r\n    }\r\n}\r\n\r\nfunction removeTextSpan(text) {\r\n    text.tspan.parentNode && text.tspan.parentNode.removeChild(text.tspan);\r\n    text.stroke && text.stroke.parentNode && text.stroke.parentNode.removeChild(text.stroke)\r\n}\r\n\r\nfunction createTextNodes(wrapper, text, isStroked) {\r\n    var items;\r\n    var parsedHtml;\r\n    wrapper._texts = null;\r\n    wrapper.clear();\r\n    if (null === text) {\r\n        return\r\n    }\r\n    text = \"\" + text;\r\n    if (!wrapper.renderer.encodeHtml && (/<[a-z][\\s\\S]*>/i.test(text) || text.indexOf(\"&\") !== -1)) {\r\n        parsedHtml = removeExtraAttrs(text);\r\n        items = parseHTML(parsedHtml)\r\n    } else {\r\n        if (/\\n/g.test(text)) {\r\n            items = parseMultiline(text)\r\n        } else {\r\n            if (isStroked) {\r\n                items = [{\r\n                    value: text.trim(),\r\n                    height: 0\r\n                }]\r\n            }\r\n        }\r\n    }\r\n    if (items) {\r\n        if (items.length) {\r\n            wrapper._texts = items;\r\n            if (isStroked) {\r\n                createTspans(items, wrapper.element, KEY_STROKE)\r\n            }\r\n            createTspans(items, wrapper.element, \"tspan\")\r\n        }\r\n    } else {\r\n        wrapper.element.appendChild(_dom_adapter.default.createTextNode(text))\r\n    }\r\n}\r\n\r\nfunction setTextNodeAttribute(item, name, value) {\r\n    item.tspan.setAttribute(name, value);\r\n    item.stroke && item.stroke.setAttribute(name, value)\r\n}\r\n\r\nfunction getItemLineHeight(item, defaultValue) {\r\n    return item.inherits ? maxLengthFontSize(item.height, defaultValue) : item.height || defaultValue\r\n}\r\n\r\nfunction locateTextNodes(wrapper) {\r\n    if (!wrapper._texts) {\r\n        return\r\n    }\r\n    var items = wrapper._texts;\r\n    var x = wrapper._settings.x;\r\n    var lineHeight = wrapper._getLineHeight();\r\n    var i;\r\n    var ii;\r\n    var item = items[0];\r\n    setTextNodeAttribute(item, \"x\", x);\r\n    setTextNodeAttribute(item, \"y\", wrapper._settings.y);\r\n    for (i = 1, ii = items.length; i < ii; ++i) {\r\n        item = items[i];\r\n        if (parseFloat(item.height) >= 0) {\r\n            setTextNodeAttribute(item, \"x\", x);\r\n            var height = getItemLineHeight(item, lineHeight);\r\n            setTextNodeAttribute(item, \"dy\", height)\r\n        }\r\n    }\r\n}\r\n\r\nfunction alignTextNodes(wrapper, alignment) {\r\n    if (!wrapper._texts || \"center\" === alignment) {\r\n        return\r\n    }\r\n    var items = wrapper._texts;\r\n    var direction = \"left\" === alignment ? -1 : 1;\r\n    var maxTextWidth = Math.max.apply(Math, items.map(function(t) {\r\n        return getTextWidth(t)\r\n    }));\r\n    for (var i = 0; i < items.length; i++) {\r\n        var item = items[i];\r\n        var textWidth = getTextWidth(item);\r\n        if (0 !== maxTextWidth && maxTextWidth !== textWidth) {\r\n            setTextNodeAttribute(item, \"dx\", direction * round((maxTextWidth - textWidth) / 2 * 10) / 10)\r\n        }\r\n    }\r\n}\r\n\r\nfunction maxLengthFontSize(fontSize1, fontSize2) {\r\n    var parsedHeight1 = parseFloat(fontSize1);\r\n    var parsedHeight2 = parseFloat(fontSize2);\r\n    var height1 = parsedHeight1 || DEFAULT_FONT_SIZE;\r\n    var height2 = parsedHeight2 || DEFAULT_FONT_SIZE;\r\n    return height1 > height2 ? !isNaN(parsedHeight1) ? fontSize1 : height1 : !isNaN(parsedHeight2) ? fontSize2 : height2\r\n}\r\n\r\nfunction strokeTextNodes(wrapper) {\r\n    if (!wrapper._texts) {\r\n        return\r\n    }\r\n    var items = wrapper._texts;\r\n    var stroke = wrapper._settings[KEY_STROKE];\r\n    var strokeWidth = wrapper._settings[KEY_STROKE_WIDTH];\r\n    var strokeOpacity = wrapper._settings[KEY_STROKE_OPACITY] || 1;\r\n    var tspan;\r\n    var i;\r\n    var ii;\r\n    for (i = 0, ii = items.length; i < ii; ++i) {\r\n        tspan = items[i].stroke;\r\n        tspan.setAttribute(KEY_STROKE, stroke);\r\n        tspan.setAttribute(KEY_STROKE_WIDTH, strokeWidth);\r\n        tspan.setAttribute(KEY_STROKE_OPACITY, strokeOpacity);\r\n        tspan.setAttribute(\"stroke-linejoin\", \"round\")\r\n    }\r\n}\r\n\r\nfunction baseAnimate(that, params, options, complete) {\r\n    options = options || {};\r\n    var key;\r\n    var value;\r\n    var renderer = that.renderer;\r\n    var settings = that._settings;\r\n    var animationParams = {};\r\n    var defaults = {\r\n        translateX: 0,\r\n        translateY: 0,\r\n        scaleX: 1,\r\n        scaleY: 1,\r\n        rotate: 0,\r\n        rotateX: 0,\r\n        rotateY: 0\r\n    };\r\n    if (complete) {\r\n        options.complete = complete\r\n    }\r\n    if (renderer.animationEnabled()) {\r\n        for (key in params) {\r\n            value = params[key];\r\n            if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y))$/i.test(key)) {\r\n                animationParams.transform = animationParams.transform || {\r\n                    from: {},\r\n                    to: {}\r\n                };\r\n                animationParams.transform.from[key] = key in settings ? Number(settings[key].toFixed(3)) : defaults[key];\r\n                animationParams.transform.to[key] = value\r\n            } else {\r\n                if (\"arc\" === key || \"segments\" === key) {\r\n                    animationParams[key] = value\r\n                } else {\r\n                    animationParams[key] = {\r\n                        from: key in settings ? settings[key] : parseFloat(that.element.getAttribute(key) || 0),\r\n                        to: value\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        renderer.animateElement(that, animationParams, extend(extend({}, renderer._animation), options))\r\n    } else {\r\n        options.step && options.step.call(that, 1, 1);\r\n        options.complete && options.complete.call(that);\r\n        that.attr(params)\r\n    }\r\n    return that\r\n}\r\n\r\nfunction pathAnimate(params, options, complete) {\r\n    var that = this;\r\n    var curSegments = that.segments || [];\r\n    var newSegments;\r\n    var endSegments;\r\n    if (that.renderer.animationEnabled() && \"points\" in params) {\r\n        newSegments = buildPathSegments(params.points, that.type);\r\n        endSegments = compensateSegments(curSegments, newSegments, that.type);\r\n        params.segments = {\r\n            from: curSegments,\r\n            to: newSegments,\r\n            end: endSegments\r\n        };\r\n        delete params.points\r\n    }\r\n    return baseAnimate(that, params, options, complete)\r\n}\r\n\r\nfunction arcAnimate(params, options, complete) {\r\n    var that = this;\r\n    var settings = that._settings;\r\n    var arcParams = {\r\n        from: {},\r\n        to: {}\r\n    };\r\n    if (that.renderer.animationEnabled() && (\"x\" in params || \"y\" in params || \"innerRadius\" in params || \"outerRadius\" in params || \"startAngle\" in params || \"endAngle\" in params)) {\r\n        arcParams.from.x = settings.x || 0;\r\n        arcParams.from.y = settings.y || 0;\r\n        arcParams.from.innerRadius = settings.innerRadius || 0;\r\n        arcParams.from.outerRadius = settings.outerRadius || 0;\r\n        arcParams.from.startAngle = settings.startAngle || 0;\r\n        arcParams.from.endAngle = settings.endAngle || 0;\r\n        arcParams.to.x = \"x\" in params ? params.x : settings.x;\r\n        delete params.x;\r\n        arcParams.to.y = \"y\" in params ? params.y : settings.y;\r\n        delete params.y;\r\n        arcParams.to.innerRadius = \"innerRadius\" in params ? params.innerRadius : settings.innerRadius;\r\n        delete params.innerRadius;\r\n        arcParams.to.outerRadius = \"outerRadius\" in params ? params.outerRadius : settings.outerRadius;\r\n        delete params.outerRadius;\r\n        arcParams.to.startAngle = \"startAngle\" in params ? params.startAngle : settings.startAngle;\r\n        delete params.startAngle;\r\n        arcParams.to.endAngle = \"endAngle\" in params ? params.endAngle : settings.endAngle;\r\n        delete params.endAngle;\r\n        params.arc = arcParams\r\n    }\r\n    return baseAnimate(that, params, options, complete)\r\n}\r\n\r\nfunction buildLink(target, parameters) {\r\n    var obj = {\r\n        is: false,\r\n        name: parameters.name || parameters,\r\n        after: parameters.after\r\n    };\r\n    if (target) {\r\n        obj.to = target\r\n    } else {\r\n        obj.virtual = true\r\n    }\r\n    return obj\r\n}\r\nvar SvgElement = function(renderer, tagName, type) {\r\n    var that = this;\r\n    that.renderer = renderer;\r\n    that.element = createElement(tagName);\r\n    that._settings = {};\r\n    that._styles = {};\r\n    if (\"path\" === tagName) {\r\n        that.type = type || \"line\"\r\n    }\r\n};\r\nexports.SvgElement = SvgElement;\r\n\r\nfunction removeFuncIriCallback(callback) {\r\n    fixFuncIriCallbacks.remove(callback)\r\n}\r\nSvgElement.prototype = {\r\n    constructor: SvgElement,\r\n    _getJQElement: function() {\r\n        return this._$element || (this._$element = (0, _renderer.default)(this.element))\r\n    },\r\n    _addFixIRICallback: function() {\r\n        var that = this;\r\n        var fn = function() {\r\n            fixFuncIri(that, \"fill\");\r\n            fixFuncIri(that, \"clip-path\");\r\n            fixFuncIri(that, \"filter\")\r\n        };\r\n        that.element._fixFuncIri = fn;\r\n        fn.renderer = that.renderer;\r\n        fixFuncIriCallbacks.add(fn);\r\n        that._addFixIRICallback = function() {}\r\n    },\r\n    _clearChildrenFuncIri: function() {\r\n        var clearChildren = function clearChildren(element) {\r\n            var i;\r\n            for (i = 0; i < element.childNodes.length; i++) {\r\n                removeFuncIriCallback(element.childNodes[i]._fixFuncIri);\r\n                clearChildren(element.childNodes[i])\r\n            }\r\n        };\r\n        clearChildren(this.element)\r\n    },\r\n    dispose: function() {\r\n        removeFuncIriCallback(this.element._fixFuncIri);\r\n        this._clearChildrenFuncIri();\r\n        this._getJQElement().remove();\r\n        return this\r\n    },\r\n    append: function(parent) {\r\n        (parent || this.renderer.root).element.appendChild(this.element);\r\n        return this\r\n    },\r\n    remove: function() {\r\n        var element = this.element;\r\n        element.parentNode && element.parentNode.removeChild(element);\r\n        return this\r\n    },\r\n    enableLinks: function() {\r\n        this._links = [];\r\n        return this\r\n    },\r\n    virtualLink: function(parameters) {\r\n        linkItem({\r\n            _link: buildLink(null, parameters)\r\n        }, this);\r\n        return this\r\n    },\r\n    linkAfter: function(name) {\r\n        this._linkAfter = name;\r\n        return this\r\n    },\r\n    linkOn: function(target, parameters) {\r\n        this._link = buildLink(target, parameters);\r\n        linkItem(this, target);\r\n        return this\r\n    },\r\n    linkOff: function() {\r\n        unlinkItem(this);\r\n        this._link = null;\r\n        return this\r\n    },\r\n    linkAppend: function() {\r\n        var link = this._link;\r\n        var items = link.to._links;\r\n        var i;\r\n        var next;\r\n        for (i = link.i + 1;\r\n            (next = items[i]) && !next._link.is; ++i) {}\r\n        this._insert(link.to, next);\r\n        link.is = true;\r\n        return this\r\n    },\r\n    _insert: function(parent, next) {\r\n        parent.element.insertBefore(this.element, next ? next.element : null)\r\n    },\r\n    linkRemove: function() {\r\n        this.remove();\r\n        this._link.is = false;\r\n        return this\r\n    },\r\n    clear: function() {\r\n        this._clearChildrenFuncIri();\r\n        this._getJQElement().empty();\r\n        return this\r\n    },\r\n    toBackground: function() {\r\n        var elem = this.element;\r\n        var parent = elem.parentNode;\r\n        parent && parent.insertBefore(elem, parent.firstChild);\r\n        return this\r\n    },\r\n    toForeground: function() {\r\n        var elem = this.element;\r\n        var parent = elem.parentNode;\r\n        parent && parent.appendChild(elem);\r\n        return this\r\n    },\r\n    attr: function(attrs) {\r\n        return baseAttr(this, attrs)\r\n    },\r\n    smartAttr: function(attrs) {\r\n        return this.attr(processHatchingAttrs(this, attrs))\r\n    },\r\n    css: function(styles) {\r\n        return baseCss(this, styles)\r\n    },\r\n    animate: function(params, options, complete) {\r\n        return baseAnimate(this, params, options, complete)\r\n    },\r\n    sharp: function(pos, sharpDirection) {\r\n        return this.attr({\r\n            sharp: pos || true,\r\n            sharpDirection: sharpDirection\r\n        })\r\n    },\r\n    _applyTransformation: function() {\r\n        var tr = this._settings;\r\n        var rotateX;\r\n        var rotateY;\r\n        var transformations = [];\r\n        var sharpMode = tr.sharp;\r\n        var trDirection = tr.sharpDirection || 1;\r\n        var strokeOdd = tr[KEY_STROKE_WIDTH] % 2;\r\n        var correctionX = strokeOdd && (\"h\" === sharpMode || true === sharpMode) ? SHARPING_CORRECTION * trDirection : 0;\r\n        var correctionY = strokeOdd && (\"v\" === sharpMode || true === sharpMode) ? SHARPING_CORRECTION * trDirection : 0;\r\n        transformations.push(\"translate(\" + ((tr.translateX || 0) + correctionX) + \",\" + ((tr.translateY || 0) + correctionY) + \")\");\r\n        if (tr.rotate) {\r\n            if (\"rotateX\" in tr) {\r\n                rotateX = tr.rotateX\r\n            } else {\r\n                rotateX = tr.x\r\n            }\r\n            if (\"rotateY\" in tr) {\r\n                rotateY = tr.rotateY\r\n            } else {\r\n                rotateY = tr.y\r\n            }\r\n            transformations.push(\"rotate(\" + tr.rotate + \",\" + (rotateX || 0) + \",\" + (rotateY || 0) + \")\")\r\n        }\r\n        var scaleXDefined = (0, _type.isDefined)(tr.scaleX);\r\n        var scaleYDefined = (0, _type.isDefined)(tr.scaleY);\r\n        if (scaleXDefined || scaleYDefined) {\r\n            transformations.push(\"scale(\" + (scaleXDefined ? tr.scaleX : 1) + \",\" + (scaleYDefined ? tr.scaleY : 1) + \")\")\r\n        }\r\n        if (transformations.length) {\r\n            this.element.setAttribute(\"transform\", transformations.join(\" \"))\r\n        }\r\n    },\r\n    move: function(x, y, animate, animOptions) {\r\n        var obj = {};\r\n        (0, _type.isDefined)(x) && (obj.translateX = x);\r\n        (0, _type.isDefined)(y) && (obj.translateY = y);\r\n        if (!animate) {\r\n            this.attr(obj)\r\n        } else {\r\n            this.animate(obj, animOptions)\r\n        }\r\n        return this\r\n    },\r\n    rotate: function(angle, x, y, animate, animOptions) {\r\n        var obj = {\r\n            rotate: angle || 0\r\n        };\r\n        (0, _type.isDefined)(x) && (obj.rotateX = x);\r\n        (0, _type.isDefined)(y) && (obj.rotateY = y);\r\n        if (!animate) {\r\n            this.attr(obj)\r\n        } else {\r\n            this.animate(obj, animOptions)\r\n        }\r\n        return this\r\n    },\r\n    _getElementBBox: function() {\r\n        var elem = this.element;\r\n        var bBox;\r\n        try {\r\n            bBox = elem.getBBox && elem.getBBox()\r\n        } catch (e) {}\r\n        return bBox || {\r\n            x: 0,\r\n            y: 0,\r\n            width: elem.offsetWidth || 0,\r\n            height: elem.offsetHeight || 0\r\n        }\r\n    },\r\n    getBBox: function() {\r\n        var transformation = this._settings;\r\n        var bBox = this._getElementBBox();\r\n        if (transformation.rotate) {\r\n            bBox = (0, _utils.rotateBBox)(bBox, [(\"rotateX\" in transformation ? transformation.rotateX : transformation.x) || 0, (\"rotateY\" in transformation ? transformation.rotateY : transformation.y) || 0], -transformation.rotate)\r\n        } else {\r\n            bBox = (0, _utils.normalizeBBox)(bBox)\r\n        }\r\n        return bBox\r\n    },\r\n    markup: function() {\r\n        return (0, _svg.getSvgMarkup)(this.element)\r\n    },\r\n    getOffset: function() {\r\n        return this._getJQElement().offset()\r\n    },\r\n    stopAnimation: function(disableComplete) {\r\n        var animation = this.animation;\r\n        animation && animation.stop(disableComplete);\r\n        return this\r\n    },\r\n    setTitle: function(text) {\r\n        var titleElem = createElement(\"title\");\r\n        titleElem.textContent = text || \"\";\r\n        this.element.appendChild(titleElem)\r\n    },\r\n    removeTitle: function() {\r\n        detachTitleElements(this.element)\r\n    },\r\n    data: function(obj, val) {\r\n        var elem = this.element;\r\n        var key;\r\n        if (void 0 !== val) {\r\n            elem[obj] = val\r\n        } else {\r\n            for (key in obj) {\r\n                elem[key] = obj[key]\r\n            }\r\n        }\r\n        return this\r\n    },\r\n    on: function() {\r\n        var args = [this._getJQElement()];\r\n        args.push.apply(args, arguments);\r\n        _events_engine.default.on.apply(_events_engine.default, args);\r\n        return this\r\n    },\r\n    off: function() {\r\n        var args = [this._getJQElement()];\r\n        args.push.apply(args, arguments);\r\n        _events_engine.default.off.apply(_events_engine.default, args);\r\n        return this\r\n    },\r\n    trigger: function() {\r\n        var args = [this._getJQElement()];\r\n        args.push.apply(args, arguments);\r\n        _events_engine.default.trigger.apply(_events_engine.default, args);\r\n        return this\r\n    }\r\n};\r\nvar PathSvgElement = function(renderer, type) {\r\n    SvgElement.call(this, renderer, \"path\", type)\r\n};\r\nexports.PathSvgElement = PathSvgElement;\r\nPathSvgElement.prototype = objectCreate(SvgElement.prototype);\r\nextend(PathSvgElement.prototype, {\r\n    constructor: PathSvgElement,\r\n    attr: pathAttr,\r\n    animate: pathAnimate\r\n});\r\nvar ArcSvgElement = function(renderer) {\r\n    SvgElement.call(this, renderer, \"path\", \"arc\")\r\n};\r\nexports.ArcSvgElement = ArcSvgElement;\r\nArcSvgElement.prototype = objectCreate(SvgElement.prototype);\r\nextend(ArcSvgElement.prototype, {\r\n    constructor: ArcSvgElement,\r\n    attr: arcAttr,\r\n    animate: arcAnimate\r\n});\r\nvar RectSvgElement = function(renderer) {\r\n    SvgElement.call(this, renderer, \"rect\")\r\n};\r\nexports.RectSvgElement = RectSvgElement;\r\nRectSvgElement.prototype = objectCreate(SvgElement.prototype);\r\nextend(RectSvgElement.prototype, {\r\n    constructor: RectSvgElement,\r\n    attr: rectAttr\r\n});\r\nvar TextSvgElement = function(renderer) {\r\n    SvgElement.call(this, renderer, \"text\");\r\n    this.css({\r\n        \"white-space\": \"pre\"\r\n    })\r\n};\r\nexports.TextSvgElement = TextSvgElement;\r\nTextSvgElement.prototype = objectCreate(SvgElement.prototype);\r\nextend(TextSvgElement.prototype, {\r\n    constructor: TextSvgElement,\r\n    attr: textAttr,\r\n    css: textCss,\r\n    applyEllipsis: applyEllipsis,\r\n    setMaxSize: setMaxSize,\r\n    restoreText: restoreText,\r\n    _getLineHeight: function() {\r\n        return !isNaN(parseFloat(this._styles[KEY_FONT_SIZE])) ? this._styles[KEY_FONT_SIZE] : DEFAULT_FONT_SIZE\r\n    }\r\n});\r\n\r\nfunction updateIndexes(items, k) {\r\n    var i;\r\n    var item;\r\n    for (i = k; item = items[i]; ++i) {\r\n        item._link.i = i\r\n    }\r\n}\r\n\r\nfunction linkItem(target, container) {\r\n    var items = container._links;\r\n    var key = target._link.after = target._link.after || container._linkAfter;\r\n    var i;\r\n    var item;\r\n    if (key) {\r\n        for (i = 0;\r\n            (item = items[i]) && item._link.name !== key; ++i) {}\r\n        if (item) {\r\n            for (++i;\r\n                (item = items[i]) && item._link.after === key; ++i) {}\r\n        }\r\n    } else {\r\n        i = items.length\r\n    }\r\n    items.splice(i, 0, target);\r\n    updateIndexes(items, i)\r\n}\r\n\r\nfunction unlinkItem(target) {\r\n    var i;\r\n    var items = target._link.to._links;\r\n    for (i = 0; items[i] !== target; ++i) {}\r\n    items.splice(i, 1);\r\n    updateIndexes(items, i)\r\n}\r\n\r\nfunction Renderer(options) {\r\n    var that = this;\r\n    that.root = that._createElement(\"svg\", {\r\n        xmlns: \"http://www.w3.org/2000/svg\",\r\n        version: \"1.1\",\r\n        fill: NONE,\r\n        stroke: NONE,\r\n        \"stroke-width\": 0\r\n    }).attr({\r\n        \"class\": options.cssClass\r\n    }).css({\r\n        \"line-height\": \"normal\",\r\n        \"-ms-user-select\": NONE,\r\n        \"-moz-user-select\": NONE,\r\n        \"-webkit-user-select\": NONE,\r\n        \"-webkit-tap-highlight-color\": \"rgba(0, 0, 0, 0)\",\r\n        display: \"block\",\r\n        overflow: \"hidden\"\r\n    });\r\n    that._init();\r\n    that.pathModified = !!options.pathModified;\r\n    that._$container = (0, _renderer.default)(options.container);\r\n    that.root.append({\r\n        element: options.container\r\n    });\r\n    that.fixPlacement();\r\n    that._locker = 0;\r\n    that._backed = false\r\n}\r\nRenderer.prototype = {\r\n    constructor: Renderer,\r\n    _init: function() {\r\n        var that = this;\r\n        that._defs = that._createElement(\"defs\").append(that.root);\r\n        that._animationController = new _animation.AnimationController(that.root.element);\r\n        that._animation = {\r\n            enabled: true,\r\n            duration: 1e3,\r\n            easing: \"easeOutCubic\"\r\n        }\r\n    },\r\n    fixPlacement: function() {\r\n        if (!_browser.default.mozilla && !_browser.default.msie) {\r\n            return\r\n        }\r\n        var box = getBoundingClientRect(this._$container.get(0));\r\n        var dx = roundValue(box.left % 1, 2);\r\n        var dy = roundValue(box.top % 1, 2);\r\n        if (_browser.default.msie) {\r\n            this.root.css({\r\n                transform: \"translate(\" + -dx + \"px,\" + -dy + \"px)\"\r\n            })\r\n        } else {\r\n            if (_browser.default.mozilla) {\r\n                this.root.move(-dx, -dy)\r\n            }\r\n        }\r\n    },\r\n    removePlacementFix: function() {\r\n        if (!_browser.default.mozilla && !_browser.default.msie) {\r\n            return\r\n        }\r\n        if (_browser.default.msie) {\r\n            this.root.css({\r\n                transform: \"\"\r\n            })\r\n        } else {\r\n            if (_browser.default.mozilla) {\r\n                this.root.attr({\r\n                    transform: null\r\n                })\r\n            }\r\n        }\r\n    },\r\n    setOptions: function(options) {\r\n        var that = this;\r\n        that.rtl = !!options.rtl;\r\n        that.encodeHtml = !!options.encodeHtml;\r\n        that.updateAnimationOptions(options.animation || {});\r\n        that.root.attr({\r\n            direction: that.rtl ? \"rtl\" : \"ltr\"\r\n        });\r\n        return that\r\n    },\r\n    _createElement: function(tagName, attr, type) {\r\n        var elem = new SvgElement(this, tagName, type);\r\n        attr && elem.attr(attr);\r\n        return elem\r\n    },\r\n    lock: function() {\r\n        var that = this;\r\n        if (0 === that._locker) {\r\n            that._backed = !that._$container.is(\":visible\");\r\n            if (that._backed) {\r\n                backupRoot(that.root)\r\n            }\r\n        }++that._locker;\r\n        return that\r\n    },\r\n    unlock: function() {\r\n        var that = this;\r\n        --that._locker;\r\n        if (0 === that._locker) {\r\n            if (that._backed) {\r\n                restoreRoot(that.root, that._$container[0]);\r\n                that.fixPlacement()\r\n            }\r\n            that._backed = false\r\n        }\r\n        return that\r\n    },\r\n    resize: function(width, height) {\r\n        if (width >= 0 && height >= 0) {\r\n            this.root.attr({\r\n                width: width,\r\n                height: height\r\n            })\r\n        }\r\n        return this\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        var key;\r\n        that.root.dispose();\r\n        that._defs.dispose();\r\n        that._animationController.dispose();\r\n        fixFuncIriCallbacks.removeByRenderer(that);\r\n        for (key in that) {\r\n            that[key] = null\r\n        }\r\n        return that\r\n    },\r\n    animationEnabled: function() {\r\n        return !!this._animation.enabled\r\n    },\r\n    updateAnimationOptions: function(newOptions) {\r\n        extend(this._animation, newOptions);\r\n        return this\r\n    },\r\n    stopAllAnimations: function(lock) {\r\n        this._animationController[lock ? \"lock\" : \"stop\"]();\r\n        return this\r\n    },\r\n    animateElement: function(element, params, options) {\r\n        this._animationController.animateElement(element, params, options);\r\n        return this\r\n    },\r\n    svg: function() {\r\n        this.removePlacementFix();\r\n        var markup = this.root.markup();\r\n        this.fixPlacement();\r\n        return markup\r\n    },\r\n    getRootOffset: function() {\r\n        return this.root.getOffset()\r\n    },\r\n    onEndAnimation: function(endAnimation) {\r\n        this._animationController.onEndAnimation(endAnimation)\r\n    },\r\n    rect: function(x, y, width, height) {\r\n        var elem = new RectSvgElement(this);\r\n        return elem.attr({\r\n            x: x || 0,\r\n            y: y || 0,\r\n            width: width || 0,\r\n            height: height || 0\r\n        })\r\n    },\r\n    simpleRect: function() {\r\n        return this._createElement(\"rect\")\r\n    },\r\n    circle: function(x, y, r) {\r\n        return this._createElement(\"circle\", {\r\n            cx: x || 0,\r\n            cy: y || 0,\r\n            r: r || 0\r\n        })\r\n    },\r\n    g: function() {\r\n        return this._createElement(\"g\")\r\n    },\r\n    image: function image(x, y, w, h, href, location) {\r\n        var image = this._createElement(\"image\", {\r\n            x: x || 0,\r\n            y: y || 0,\r\n            width: w || 0,\r\n            height: h || 0,\r\n            preserveAspectRatio: preserveAspectRatioMap[(0, _utils.normalizeEnum)(location)] || NONE\r\n        });\r\n        image.element.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", href || \"\");\r\n        return image\r\n    },\r\n    path: function(points, type) {\r\n        var elem = new PathSvgElement(this, type);\r\n        return elem.attr({\r\n            points: points || []\r\n        })\r\n    },\r\n    arc: function(x, y, innerRadius, outerRadius, startAngle, endAngle) {\r\n        var elem = new ArcSvgElement(this);\r\n        return elem.attr({\r\n            x: x || 0,\r\n            y: y || 0,\r\n            innerRadius: innerRadius || 0,\r\n            outerRadius: outerRadius || 0,\r\n            startAngle: startAngle || 0,\r\n            endAngle: endAngle || 0\r\n        })\r\n    },\r\n    text: function(_text, x, y) {\r\n        var elem = new TextSvgElement(this);\r\n        return elem.attr({\r\n            text: _text,\r\n            x: x || 0,\r\n            y: y || 0\r\n        })\r\n    },\r\n    linearGradient: function(stops) {\r\n        var id = getNextDefsSvgId();\r\n        var that = this;\r\n        var gradient = that._createElement(\"linearGradient\", {\r\n            id: id\r\n        }).append(that._defs);\r\n        gradient.id = id;\r\n        stops.forEach(function(stop) {\r\n            that._createElement(\"stop\", {\r\n                offset: stop.offset,\r\n                \"stop-color\": stop[\"stop-color\"]\r\n            }).append(gradient)\r\n        });\r\n        return gradient\r\n    },\r\n    pattern: function pattern(color, hatching, _id) {\r\n        hatching = hatching || {};\r\n        var that = this;\r\n        var step = hatching.step || 6;\r\n        var stepTo2 = step / 2;\r\n        var stepBy15 = 1.5 * step;\r\n        var id = _id || getNextDefsSvgId();\r\n        var d = \"right\" === (0, _utils.normalizeEnum)(hatching.direction) ? \"M \" + stepTo2 + \" \" + -stepTo2 + \" L \" + -stepTo2 + \" \" + stepTo2 + \" M 0 \" + step + \" L \" + step + \" 0 M \" + stepBy15 + \" \" + stepTo2 + \" L \" + stepTo2 + \" \" + stepBy15 : \"M 0 0 L \" + step + \" \" + step + \" M \" + -stepTo2 + \" \" + stepTo2 + \" L \" + stepTo2 + \" \" + stepBy15 + \" M \" + stepTo2 + \" \" + -stepTo2 + \" L \" + stepBy15 + \" \" + stepTo2;\r\n        var pattern = that._createElement(\"pattern\", {\r\n            id: id,\r\n            width: step,\r\n            height: step,\r\n            patternUnits: \"userSpaceOnUse\"\r\n        }).append(that._defs);\r\n        pattern.id = id;\r\n        that.rect(0, 0, step, step).attr({\r\n            fill: color,\r\n            opacity: hatching.opacity\r\n        }).append(pattern);\r\n        new PathSvgElement(this).attr({\r\n            d: d,\r\n            \"stroke-width\": hatching.width || 1,\r\n            stroke: color\r\n        }).append(pattern);\r\n        return pattern\r\n    },\r\n    _getPointsWithYOffset: function(points, offset) {\r\n        return points.map(function(point, index) {\r\n            if (index % 2 !== 0) {\r\n                return point + offset\r\n            }\r\n            return point\r\n        })\r\n    },\r\n    clipShape: function(method, methodArgs) {\r\n        var that = this;\r\n        var id = getNextDefsSvgId();\r\n        var clipPath = that._createElement(\"clipPath\", {\r\n            id: id\r\n        }).append(that._defs);\r\n        var shape = method.apply(that, methodArgs).append(clipPath);\r\n        shape.id = id;\r\n        shape.remove = function() {\r\n            throw \"Not implemented\"\r\n        };\r\n        shape.dispose = function() {\r\n            clipPath.dispose();\r\n            clipPath = null;\r\n            return this\r\n        };\r\n        return shape\r\n    },\r\n    clipRect: function(x, y, width, height) {\r\n        return this.clipShape(this.rect, arguments)\r\n    },\r\n    clipCircle: function(x, y, radius) {\r\n        return this.clipShape(this.circle, arguments)\r\n    },\r\n    shadowFilter: function(x, y, width, height, offsetX, offsetY, blur, color, opacity) {\r\n        var that = this;\r\n        var id = getNextDefsSvgId();\r\n        var filter = that._createElement(\"filter\", {\r\n            id: id,\r\n            x: x || 0,\r\n            y: y || 0,\r\n            width: width || 0,\r\n            height: height || 0\r\n        }).append(that._defs);\r\n        var gaussianBlur = that._createElement(\"feGaussianBlur\", {\r\n            \"in\": \"SourceGraphic\",\r\n            result: \"gaussianBlurResult\",\r\n            stdDeviation: blur || 0\r\n        }).append(filter);\r\n        var offset = that._createElement(\"feOffset\", {\r\n            \"in\": \"gaussianBlurResult\",\r\n            result: \"offsetResult\",\r\n            dx: offsetX || 0,\r\n            dy: offsetY || 0\r\n        }).append(filter);\r\n        var flood = that._createElement(\"feFlood\", {\r\n            result: \"floodResult\",\r\n            \"flood-color\": color || \"\",\r\n            \"flood-opacity\": opacity\r\n        }).append(filter);\r\n        var composite = that._createElement(\"feComposite\", {\r\n            \"in\": \"floodResult\",\r\n            in2: \"offsetResult\",\r\n            operator: \"in\",\r\n            result: \"compositeResult\"\r\n        }).append(filter);\r\n        var finalComposite = that._createElement(\"feComposite\", {\r\n            \"in\": \"SourceGraphic\",\r\n            in2: \"compositeResult\",\r\n            operator: \"over\"\r\n        }).append(filter);\r\n        filter.id = id;\r\n        filter.gaussianBlur = gaussianBlur;\r\n        filter.offset = offset;\r\n        filter.flood = flood;\r\n        filter.composite = composite;\r\n        filter.finalComposite = finalComposite;\r\n        filter.attr = function(attrs) {\r\n            var that = this;\r\n            var filterAttrs = {};\r\n            var offsetAttrs = {};\r\n            var floodAttrs = {};\r\n            \"x\" in attrs && (filterAttrs.x = attrs.x);\r\n            \"y\" in attrs && (filterAttrs.y = attrs.y);\r\n            \"width\" in attrs && (filterAttrs.width = attrs.width);\r\n            \"height\" in attrs && (filterAttrs.height = attrs.height);\r\n            baseAttr(that, filterAttrs);\r\n            \"blur\" in attrs && that.gaussianBlur.attr({\r\n                stdDeviation: attrs.blur\r\n            });\r\n            \"offsetX\" in attrs && (offsetAttrs.dx = attrs.offsetX);\r\n            \"offsetY\" in attrs && (offsetAttrs.dy = attrs.offsetY);\r\n            that.offset.attr(offsetAttrs);\r\n            \"color\" in attrs && (floodAttrs[\"flood-color\"] = attrs.color);\r\n            \"opacity\" in attrs && (floodAttrs[\"flood-opacity\"] = attrs.opacity);\r\n            that.flood.attr(floodAttrs);\r\n            return that\r\n        };\r\n        return filter\r\n    },\r\n    brightFilter: function(type, slope) {\r\n        var that = this;\r\n        var id = getNextDefsSvgId();\r\n        var filter = that._createElement(\"filter\", {\r\n            id: id\r\n        }).append(that._defs);\r\n        var componentTransferElement = that._createElement(\"feComponentTransfer\").append(filter);\r\n        var attrs = {\r\n            type: type,\r\n            slope: slope\r\n        };\r\n        filter.id = id;\r\n        that._createElement(\"feFuncR\", attrs).append(componentTransferElement);\r\n        that._createElement(\"feFuncG\", attrs).append(componentTransferElement);\r\n        that._createElement(\"feFuncB\", attrs).append(componentTransferElement);\r\n        return filter\r\n    },\r\n    getGrayScaleFilter: function() {\r\n        if (this._grayScaleFilter) {\r\n            return this._grayScaleFilter\r\n        }\r\n        var that = this;\r\n        var id = getNextDefsSvgId();\r\n        var filter = that._createElement(\"filter\", {\r\n            id: id\r\n        }).append(that._defs);\r\n        that._createElement(\"feColorMatrix\").attr({\r\n            type: \"matrix\",\r\n            values: \"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 0.6 0\"\r\n        }).append(filter);\r\n        filter.id = id;\r\n        that._grayScaleFilter = filter;\r\n        return filter\r\n    },\r\n    initHatching: function() {\r\n        var storage = this._hatchingStorage = this._hatchingStorage || {\r\n            byHash: {},\r\n            baseId: getNextDefsSvgId()\r\n        };\r\n        var byHash = storage.byHash;\r\n        var name;\r\n        for (name in byHash) {\r\n            byHash[name].pattern.dispose()\r\n        }\r\n        storage.byHash = {};\r\n        storage.refToHash = {};\r\n        storage.nextId = 0\r\n    },\r\n    lockHatching: function(color, hatching, ref) {\r\n        var storage = this._hatchingStorage;\r\n        var hash = getHatchingHash(color, hatching);\r\n        var storageItem;\r\n        var pattern;\r\n        if (storage.refToHash[ref] !== hash) {\r\n            if (ref) {\r\n                this.releaseHatching(ref)\r\n            }\r\n            storageItem = storage.byHash[hash];\r\n            if (!storageItem) {\r\n                pattern = this.pattern(color, hatching, storage.baseId + \"-hatching-\" + storage.nextId++);\r\n                storageItem = storage.byHash[hash] = {\r\n                    pattern: pattern,\r\n                    count: 0\r\n                };\r\n                storage.refToHash[pattern.id] = hash\r\n            }++storageItem.count;\r\n            ref = storageItem.pattern.id\r\n        }\r\n        return ref\r\n    },\r\n    releaseHatching: function(ref) {\r\n        var storage = this._hatchingStorage;\r\n        var hash = storage.refToHash[ref];\r\n        var storageItem = storage.byHash[hash];\r\n        if (storageItem && 0 === --storageItem.count) {\r\n            storageItem.pattern.dispose();\r\n            delete storage.byHash[hash];\r\n            delete storage.refToHash[ref]\r\n        }\r\n    }\r\n};\r\n\r\nfunction getHatchingHash(color, hatching) {\r\n    return \"@\" + color + \"::\" + hatching.step + \":\" + hatching.width + \":\" + hatching.opacity + \":\" + hatching.direction\r\n}\r\nvar fixFuncIriCallbacks = function() {\r\n    var callbacks = [];\r\n    return {\r\n        add: function(fn) {\r\n            callbacks.push(fn)\r\n        },\r\n        remove: function(fn) {\r\n            callbacks = callbacks.filter(function(el) {\r\n                return el !== fn\r\n            })\r\n        },\r\n        removeByRenderer: function(renderer) {\r\n            callbacks = callbacks.filter(function(el) {\r\n                return el.renderer !== renderer\r\n            })\r\n        },\r\n        fire: function() {\r\n            callbacks.forEach(function(fn) {\r\n                fn()\r\n            })\r\n        }\r\n    }\r\n}();\r\nvar refreshPaths = function() {\r\n    fixFuncIriCallbacks.fire()\r\n};\r\nexports.refreshPaths = refreshPaths;\r\n","/**\r\n * DevExtreme (events/core/event_registrator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _event_registrator_callbacks = _interopRequireDefault(require(\"./event_registrator_callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar registerEvent = function(name, eventObject) {\r\n    var strategy = {};\r\n    if (\"noBubble\" in eventObject) {\r\n        strategy.noBubble = eventObject.noBubble\r\n    }\r\n    if (\"bindType\" in eventObject) {\r\n        strategy.bindType = eventObject.bindType\r\n    }\r\n    if (\"delegateType\" in eventObject) {\r\n        strategy.delegateType = eventObject.delegateType\r\n    }(0, _iterator.each)([\"setup\", \"teardown\", \"add\", \"remove\", \"trigger\", \"handle\", \"_default\", \"dispose\"], function(_, methodName) {\r\n        if (!eventObject[methodName]) {\r\n            return\r\n        }\r\n        strategy[methodName] = function() {\r\n            var args = [].slice.call(arguments);\r\n            args.unshift(this);\r\n            return eventObject[methodName].apply(eventObject, args)\r\n        }\r\n    });\r\n    _event_registrator_callbacks.default.fire(name, strategy)\r\n};\r\nregisterEvent.callbacks = _event_registrator_callbacks.default;\r\nvar _default = registerEvent;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/svg.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getSvgMarkup = getSvgMarkup;\r\nexports.getSvgElement = getSvgElement;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"./window\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\n\r\nfunction getMarkup(element, backgroundColor) {\r\n    var temp = _dom_adapter.default.createElement(\"div\");\r\n    var clone = element.cloneNode(true);\r\n    if (backgroundColor) {\r\n        (0, _renderer.default)(clone).css(\"backgroundColor\", backgroundColor)\r\n    }\r\n    temp.appendChild(clone);\r\n    return temp.innerHTML\r\n}\r\n\r\nfunction fixNamespaces(markup) {\r\n    var first = true;\r\n    if (markup.indexOf(\"xmlns:xlink\") === -1) {\r\n        markup = markup.replace(\"<svg\", '<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\"')\r\n    }\r\n    markup = markup.replace(/xmlns=\"[\\s\\S]*?\"/gi, function(match) {\r\n        if (!first) {\r\n            return \"\"\r\n        }\r\n        first = false;\r\n        return match\r\n    });\r\n    return markup.replace(/xmlns:NS1=\"[\\s\\S]*?\"/gi, \"\").replace(/NS1:xmlns:xlink=\"([\\s\\S]*?)\"/gi, 'xmlns:xlink=\"$1\"')\r\n}\r\n\r\nfunction decodeHtmlEntities(markup) {\r\n    return markup.replace(/&quot;/gi, \"&#34;\").replace(/&amp;/gi, \"&#38;\").replace(/&apos;/gi, \"&#39;\").replace(/&lt;/gi, \"&#60;\").replace(/&gt;/gi, \"&#62;\").replace(/&nbsp;/gi, \"&#160;\").replace(/&shy;/gi, \"&#173;\")\r\n}\r\n\r\nfunction getSvgMarkup(element, backgroundColor) {\r\n    return fixNamespaces(decodeHtmlEntities(getMarkup(element, backgroundColor)))\r\n}\r\n\r\nfunction getSvgElement(markup) {\r\n    return _dom_adapter.default.isNode(markup) ? markup : (new window.DOMParser).parseFromString(markup, \"image/svg+xml\").childNodes[0]\r\n}\r\n","/**\r\n * DevExtreme (events/utils/index.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.addNamespace = exports.getChar = exports.normalizeKeyName = exports.fireEvent = exports.createEvent = exports.setEventFixMethod = exports.needSkipEvent = exports.stopEventsSkipping = exports.forceSkipEvents = exports.hasTouches = exports.eventDelta = exports.eventData = exports.isFakeClickEvent = exports.isKeyboardEvent = exports.isTouchEvent = exports.isDxMouseWheelEvent = exports.isMouseEvent = exports.isPointerEvent = exports.eventSource = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _add_namespace = _interopRequireDefault(require(\"./add_namespace\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../core/events_engine\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _selectors = require(\"../../ui/widget/selectors\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar KEY_MAP = {\r\n    backspace: \"backspace\",\r\n    tab: \"tab\",\r\n    enter: \"enter\",\r\n    escape: \"escape\",\r\n    pageup: \"pageUp\",\r\n    pagedown: \"pageDown\",\r\n    end: \"end\",\r\n    home: \"home\",\r\n    arrowleft: \"leftArrow\",\r\n    arrowup: \"upArrow\",\r\n    arrowright: \"rightArrow\",\r\n    arrowdown: \"downArrow\",\r\n    \"delete\": \"del\",\r\n    \" \": \"space\",\r\n    f: \"F\",\r\n    a: \"A\",\r\n    \"*\": \"asterisk\",\r\n    \"-\": \"minus\",\r\n    alt: \"alt\",\r\n    control: \"control\",\r\n    shift: \"shift\",\r\n    left: \"leftArrow\",\r\n    up: \"upArrow\",\r\n    right: \"rightArrow\",\r\n    down: \"downArrow\",\r\n    multiply: \"asterisk\",\r\n    spacebar: \"space\",\r\n    del: \"del\",\r\n    subtract: \"minus\",\r\n    esc: \"escape\"\r\n};\r\nvar LEGACY_KEY_CODES = {\r\n    8: \"backspace\",\r\n    9: \"tab\",\r\n    13: \"enter\",\r\n    27: \"escape\",\r\n    33: \"pageUp\",\r\n    34: \"pageDown\",\r\n    35: \"end\",\r\n    36: \"home\",\r\n    37: \"leftArrow\",\r\n    38: \"upArrow\",\r\n    39: \"rightArrow\",\r\n    40: \"downArrow\",\r\n    46: \"del\",\r\n    32: \"space\",\r\n    70: \"F\",\r\n    65: \"A\",\r\n    106: \"asterisk\",\r\n    109: \"minus\",\r\n    189: \"minus\",\r\n    173: \"minus\",\r\n    16: \"shift\",\r\n    17: \"control\",\r\n    18: \"alt\"\r\n};\r\nvar EVENT_SOURCES_REGEX = {\r\n    dx: /^dx/i,\r\n    mouse: /(mouse|wheel)/i,\r\n    touch: /^touch/i,\r\n    keyboard: /^key/i,\r\n    pointer: /^(ms)?pointer/i\r\n};\r\nvar fixMethod = function(e) {\r\n    return e\r\n};\r\nvar copyEvent = function(originalEvent) {\r\n    return fixMethod(_events_engine.default.Event(originalEvent, originalEvent), originalEvent)\r\n};\r\nvar isDxEvent = function(e) {\r\n    return \"dx\" === eventSource(e)\r\n};\r\nvar isNativeMouseEvent = function(e) {\r\n    return \"mouse\" === eventSource(e)\r\n};\r\nvar isNativeTouchEvent = function(e) {\r\n    return \"touch\" === eventSource(e)\r\n};\r\nvar eventSource = function(_ref) {\r\n    var type = _ref.type;\r\n    var result = \"other\";\r\n    (0, _iterator.each)(EVENT_SOURCES_REGEX, function(key) {\r\n        if (this.test(type)) {\r\n            result = key;\r\n            return false\r\n        }\r\n    });\r\n    return result\r\n};\r\nexports.eventSource = eventSource;\r\nvar isPointerEvent = function(e) {\r\n    return \"pointer\" === eventSource(e)\r\n};\r\nexports.isPointerEvent = isPointerEvent;\r\nvar isMouseEvent = function(e) {\r\n    return isNativeMouseEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && \"mouse\" === e.pointerType\r\n};\r\nexports.isMouseEvent = isMouseEvent;\r\nvar isDxMouseWheelEvent = function(e) {\r\n    return e && \"dxmousewheel\" === e.type\r\n};\r\nexports.isDxMouseWheelEvent = isDxMouseWheelEvent;\r\nvar isTouchEvent = function(e) {\r\n    return isNativeTouchEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && \"touch\" === e.pointerType\r\n};\r\nexports.isTouchEvent = isTouchEvent;\r\nvar isKeyboardEvent = function(e) {\r\n    return \"keyboard\" === eventSource(e)\r\n};\r\nexports.isKeyboardEvent = isKeyboardEvent;\r\nvar isFakeClickEvent = function(_ref2) {\r\n    var screenX = _ref2.screenX,\r\n        offsetX = _ref2.offsetX,\r\n        pageX = _ref2.pageX;\r\n    return 0 === screenX && !offsetX && 0 === pageX\r\n};\r\nexports.isFakeClickEvent = isFakeClickEvent;\r\nvar eventData = function(_ref3) {\r\n    var pageX = _ref3.pageX,\r\n        pageY = _ref3.pageY,\r\n        timeStamp = _ref3.timeStamp;\r\n    return {\r\n        x: pageX,\r\n        y: pageY,\r\n        time: timeStamp\r\n    }\r\n};\r\nexports.eventData = eventData;\r\nvar eventDelta = function(from, to) {\r\n    return {\r\n        x: to.x - from.x,\r\n        y: to.y - from.y,\r\n        time: to.time - from.time || 1\r\n    }\r\n};\r\nexports.eventDelta = eventDelta;\r\nvar hasTouches = function(e) {\r\n    var originalEvent = e.originalEvent,\r\n        pointers = e.pointers;\r\n    if (isNativeTouchEvent(e)) {\r\n        return (originalEvent.touches || []).length\r\n    }\r\n    if (isDxEvent(e)) {\r\n        return (pointers || []).length\r\n    }\r\n    return 0\r\n};\r\nexports.hasTouches = hasTouches;\r\nvar skipEvents = false;\r\nvar forceSkipEvents = function() {\r\n    return skipEvents = true\r\n};\r\nexports.forceSkipEvents = forceSkipEvents;\r\nvar stopEventsSkipping = function() {\r\n    return skipEvents = false\r\n};\r\nexports.stopEventsSkipping = stopEventsSkipping;\r\nvar needSkipEvent = function(e) {\r\n    if (skipEvents) {\r\n        return true\r\n    }\r\n    var target = e.target;\r\n    var $target = (0, _renderer.default)(target);\r\n    var touchInInput = $target.is(\"input, textarea, select\");\r\n    if ($target.is(\".dx-skip-gesture-event *, .dx-skip-gesture-event\")) {\r\n        return true\r\n    }\r\n    if (isDxMouseWheelEvent(e)) {\r\n        var isTextArea = $target.is(\"textarea\") && $target.hasClass(\"dx-texteditor-input\");\r\n        if (isTextArea) {\r\n            return false\r\n        }\r\n        var isContentEditable = target.isContentEditable || target.hasAttribute(\"contenteditable\");\r\n        if (isContentEditable) {\r\n            return false\r\n        }\r\n        var isInputFocused = $target.is(\"input[type='number'], textarea, select\") && $target.is(\":focus\");\r\n        return isInputFocused\r\n    }\r\n    if (isMouseEvent(e)) {\r\n        return touchInInput || e.which > 1\r\n    }\r\n    if (isTouchEvent(e)) {\r\n        return touchInInput && (0, _selectors.focused)($target)\r\n    }\r\n};\r\nexports.needSkipEvent = needSkipEvent;\r\nvar setEventFixMethod = function(func) {\r\n    return fixMethod = func\r\n};\r\nexports.setEventFixMethod = setEventFixMethod;\r\nvar createEvent = function(originalEvent, args) {\r\n    var event = copyEvent(originalEvent);\r\n    args && (0, _extend.extend)(event, args);\r\n    return event\r\n};\r\nexports.createEvent = createEvent;\r\nvar fireEvent = function(props) {\r\n    var originalEvent = props.originalEvent,\r\n        delegateTarget = props.delegateTarget;\r\n    var event = createEvent(originalEvent, props);\r\n    _events_engine.default.trigger(delegateTarget || event.target, event);\r\n    return event\r\n};\r\nexports.fireEvent = fireEvent;\r\nvar normalizeKeyName = function(_ref4) {\r\n    var key = _ref4.key,\r\n        which = _ref4.which;\r\n    var isKeySupported = !!key;\r\n    key = isKeySupported ? key : which;\r\n    if (key) {\r\n        if (isKeySupported) {\r\n            key = KEY_MAP[key.toLowerCase()] || key\r\n        } else {\r\n            key = LEGACY_KEY_CODES[key] || String.fromCharCode(key)\r\n        }\r\n        return key\r\n    }\r\n};\r\nexports.normalizeKeyName = normalizeKeyName;\r\nvar getChar = function(_ref5) {\r\n    var key = _ref5.key,\r\n        which = _ref5.which;\r\n    return key || String.fromCharCode(which)\r\n};\r\nexports.getChar = getChar;\r\nvar addNamespace = _add_namespace.default;\r\nexports.addNamespace = addNamespace;\r\n","/**\r\n * DevExtreme (ui/form/ui.form.item_options_actions.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _uiForm = _interopRequireDefault(require(\"./ui.form.item_option_action\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiForm2 = require(\"./ui.form.utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar WidgetOptionItemOptionAction = function(_ItemOptionAction) {\r\n    _inherits(WidgetOptionItemOptionAction, _ItemOptionAction);\r\n    var _super = _createSuper(WidgetOptionItemOptionAction);\r\n\r\n    function WidgetOptionItemOptionAction() {\r\n        _classCallCheck(this, WidgetOptionItemOptionAction);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(WidgetOptionItemOptionAction, [{\r\n        key: \"tryExecute\",\r\n        value: function() {\r\n            var value = this._options.value;\r\n            var instance = this.findInstance();\r\n            if (instance) {\r\n                instance.option(value);\r\n                return true\r\n            }\r\n            return false\r\n        }\r\n    }]);\r\n    return WidgetOptionItemOptionAction\r\n}(_uiForm.default);\r\nvar TabOptionItemOptionAction = function(_ItemOptionAction2) {\r\n    _inherits(TabOptionItemOptionAction, _ItemOptionAction2);\r\n    var _super2 = _createSuper(TabOptionItemOptionAction);\r\n\r\n    function TabOptionItemOptionAction() {\r\n        _classCallCheck(this, TabOptionItemOptionAction);\r\n        return _super2.apply(this, arguments)\r\n    }\r\n    _createClass(TabOptionItemOptionAction, [{\r\n        key: \"tryExecute\",\r\n        value: function() {\r\n            var tabPanel = this.findInstance();\r\n            if (tabPanel) {\r\n                var _this$_options = this._options,\r\n                    optionName = _this$_options.optionName,\r\n                    item = _this$_options.item,\r\n                    value = _this$_options.value;\r\n                var itemIndex = this._itemsRunTimeInfo.findItemIndexByItem(item);\r\n                if (itemIndex >= 0) {\r\n                    tabPanel.option((0, _uiForm2.getFullOptionName)(\"items[\".concat(itemIndex, \"]\"), optionName), value);\r\n                    return true\r\n                }\r\n            }\r\n            return false\r\n        }\r\n    }]);\r\n    return TabOptionItemOptionAction\r\n}(_uiForm.default);\r\nvar TabsOptionItemOptionAction = function(_ItemOptionAction3) {\r\n    _inherits(TabsOptionItemOptionAction, _ItemOptionAction3);\r\n    var _super3 = _createSuper(TabsOptionItemOptionAction);\r\n\r\n    function TabsOptionItemOptionAction() {\r\n        _classCallCheck(this, TabsOptionItemOptionAction);\r\n        return _super3.apply(this, arguments)\r\n    }\r\n    _createClass(TabsOptionItemOptionAction, [{\r\n        key: \"tryExecute\",\r\n        value: function() {\r\n            var tabPanel = this.findInstance();\r\n            if (tabPanel) {\r\n                var value = this._options.value;\r\n                tabPanel.option(\"dataSource\", value);\r\n                return true\r\n            }\r\n            return false\r\n        }\r\n    }]);\r\n    return TabsOptionItemOptionAction\r\n}(_uiForm.default);\r\nvar ValidationRulesItemOptionAction = function(_ItemOptionAction4) {\r\n    _inherits(ValidationRulesItemOptionAction, _ItemOptionAction4);\r\n    var _super4 = _createSuper(ValidationRulesItemOptionAction);\r\n\r\n    function ValidationRulesItemOptionAction() {\r\n        _classCallCheck(this, ValidationRulesItemOptionAction);\r\n        return _super4.apply(this, arguments)\r\n    }\r\n    _createClass(ValidationRulesItemOptionAction, [{\r\n        key: \"tryExecute\",\r\n        value: function() {\r\n            var item = this._options.item;\r\n            var instance = this.findInstance();\r\n            var validator = instance && (0, _element_data.data)(instance.$element()[0], \"dxValidator\");\r\n            if (validator && item) {\r\n                var filterRequired = function(item) {\r\n                    return \"required\" === item.type\r\n                };\r\n                var oldContainsRequired = (validator.option(\"validationRules\") || []).some(filterRequired);\r\n                var newContainsRequired = (item.validationRules || []).some(filterRequired);\r\n                if (!oldContainsRequired && !newContainsRequired || oldContainsRequired && newContainsRequired) {\r\n                    validator.option(\"validationRules\", item.validationRules);\r\n                    return true\r\n                }\r\n            }\r\n            return false\r\n        }\r\n    }]);\r\n    return ValidationRulesItemOptionAction\r\n}(_uiForm.default);\r\nvar CssClassItemOptionAction = function(_ItemOptionAction5) {\r\n    _inherits(CssClassItemOptionAction, _ItemOptionAction5);\r\n    var _super5 = _createSuper(CssClassItemOptionAction);\r\n\r\n    function CssClassItemOptionAction() {\r\n        _classCallCheck(this, CssClassItemOptionAction);\r\n        return _super5.apply(this, arguments)\r\n    }\r\n    _createClass(CssClassItemOptionAction, [{\r\n        key: \"tryExecute\",\r\n        value: function() {\r\n            var $itemContainer = this.findItemContainer();\r\n            var _this$_options2 = this._options,\r\n                previousValue = _this$_options2.previousValue,\r\n                value = _this$_options2.value;\r\n            if ($itemContainer) {\r\n                $itemContainer.removeClass(previousValue).addClass(value);\r\n                return true\r\n            }\r\n            return false\r\n        }\r\n    }]);\r\n    return CssClassItemOptionAction\r\n}(_uiForm.default);\r\nvar tryCreateItemOptionAction = function(optionName, itemActionOptions) {\r\n    switch (optionName) {\r\n        case \"editorOptions\":\r\n        case \"buttonOptions\":\r\n            return new WidgetOptionItemOptionAction(itemActionOptions);\r\n        case \"validationRules\":\r\n            return new ValidationRulesItemOptionAction(itemActionOptions);\r\n        case \"cssClass\":\r\n            return new CssClassItemOptionAction(itemActionOptions);\r\n        case \"badge\":\r\n        case \"disabled\":\r\n        case \"icon\":\r\n        case \"template\":\r\n        case \"tabTemplate\":\r\n        case \"title\":\r\n            return new TabOptionItemOptionAction((0, _extend.extend)(itemActionOptions, {\r\n                optionName: optionName\r\n            }));\r\n        case \"tabs\":\r\n            return new TabsOptionItemOptionAction(itemActionOptions);\r\n        default:\r\n            return null\r\n    }\r\n};\r\nvar _default = tryCreateItemOptionAction;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/errors_warnings.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _error = _interopRequireDefault(require(\"../../core/utils/error\"));\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = (0, _error.default)(_errors.default.ERROR_MESSAGES, {\r\n    E2001: \"Invalid data source\",\r\n    E2002: \"Axis type and data type are incompatible\",\r\n    E2003: 'The \"{0}\" data source field contains data of unsupported type',\r\n    E2004: 'The \"{0}\" data source field is inconsistent',\r\n    E2005: 'The value field \"{0}\" is absent in the data source or all its values are negative',\r\n    E2006: \"A cycle is detected in provided data\",\r\n    E2007: 'The value field \"{0}\" is absent in the data source',\r\n    E2008: 'The value field \"{0}\" must be a string',\r\n    E2009: 'The value field \"{0}\" must be a positive numeric value',\r\n    E2101: \"Unknown series type: {0}\",\r\n    E2102: \"Ambiguity occurred between two value axes with the same name\",\r\n    E2103: 'The \"{0}\" option is given an invalid value. Assign a function instead',\r\n    E2104: \"Invalid logarithm base\",\r\n    E2105: 'Invalid value of a \"{0}\"',\r\n    E2202: \"Invalid {0} scale value\",\r\n    E2203: \"The range you are trying to set is invalid\",\r\n    W2002: \"The {0} series cannot be drawn because the {1} data field is missing\",\r\n    W2003: \"Tick interval is too small\",\r\n    W2101: 'The \"{0}\" pane does not exist; the last pane is used by default',\r\n    W2102: 'A value axis with the \"{0}\" name was created automatically',\r\n    W2103: \"The chart title was hidden due to the container size\",\r\n    W2104: \"The legend was hidden due to the container size\",\r\n    W2105: 'The title of the \"{0}\" axis was hidden due to the container size',\r\n    W2106: 'The labels of the \"{0}\" axis were hidden due to the container size',\r\n    W2107: \"The export menu was hidden due to the container size\",\r\n    W2108: \"The browser does not support exporting images to {0} format.\",\r\n    W2301: \"Invalid value range\"\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.font_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.color_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar fontHelper = {\r\n    tryCreateTag: function(sourceObj) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(sourceObj)) {\r\n            result = {\r\n                size: sourceObj.size,\r\n                name: sourceObj.name,\r\n                family: sourceObj.family,\r\n                scheme: sourceObj.scheme,\r\n                bold: sourceObj.bold,\r\n                italic: sourceObj.italic,\r\n                underline: sourceObj.underline,\r\n                color: _excel2.default.tryCreateTag(sourceObj.color)\r\n            };\r\n            if (fontHelper.isEmpty(result)) {\r\n                result = null\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    copy: function(source) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(source)) {\r\n            result = {};\r\n            if (void 0 !== source.size) {\r\n                result.size = source.size\r\n            }\r\n            if (void 0 !== source.name) {\r\n                result.name = source.name\r\n            }\r\n            if (void 0 !== source.family) {\r\n                result.family = source.family\r\n            }\r\n            if (void 0 !== source.scheme) {\r\n                result.scheme = source.scheme\r\n            }\r\n            if (void 0 !== source.bold) {\r\n                result.bold = source.bold\r\n            }\r\n            if (void 0 !== source.italic) {\r\n                result.italic = source.italic\r\n            }\r\n            if (void 0 !== source.underline) {\r\n                result.underline = source.underline\r\n            }\r\n            if (void 0 !== source.color) {\r\n                result.color = _excel2.default.copy(source.color)\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    areEqual: function(leftTag, rightTag) {\r\n        return fontHelper.isEmpty(leftTag) && fontHelper.isEmpty(rightTag) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.size === rightTag.size && leftTag.name === rightTag.name && leftTag.family === rightTag.family && leftTag.scheme === rightTag.scheme && (leftTag.bold === rightTag.bold || !leftTag.bold === !rightTag.bold) && (leftTag.italic === rightTag.italic || !leftTag.italic === !rightTag.italic) && leftTag.underline === rightTag.underline && _excel2.default.areEqual(leftTag.color, rightTag.color)\r\n    },\r\n    isEmpty: function(tag) {\r\n        return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.size) && !(0, _type.isDefined)(tag.name) && !(0, _type.isDefined)(tag.family) && !(0, _type.isDefined)(tag.scheme) && (!(0, _type.isDefined)(tag.bold) || !tag.bold) && (!(0, _type.isDefined)(tag.italic) || !tag.italic) && !(0, _type.isDefined)(tag.underline) && _excel2.default.isEmpty(tag.color)\r\n    },\r\n    toXml: function(tag) {\r\n        var content = [(0, _type.isDefined)(tag.bold) && tag.bold ? _excel.default.toXml(\"b\", {}) : \"\", (0, _type.isDefined)(tag.size) ? _excel.default.toXml(\"sz\", {\r\n            val: tag.size\r\n        }) : \"\", (0, _type.isDefined)(tag.color) ? _excel2.default.toXml(\"color\", tag.color) : \"\", (0, _type.isDefined)(tag.name) ? _excel.default.toXml(\"name\", {\r\n            val: tag.name\r\n        }) : \"\", (0, _type.isDefined)(tag.family) ? _excel.default.toXml(\"family\", {\r\n            val: tag.family\r\n        }) : \"\", (0, _type.isDefined)(tag.scheme) ? _excel.default.toXml(\"scheme\", {\r\n            val: tag.scheme\r\n        }) : \"\", (0, _type.isDefined)(tag.italic) && tag.italic ? _excel.default.toXml(\"i\", {}) : \"\", (0, _type.isDefined)(tag.underline) ? _excel.default.toXml(\"u\", {\r\n            val: tag.underline\r\n        }) : \"\"].join(\"\");\r\n        return _excel.default.toXml(\"font\", {}, content)\r\n    }\r\n};\r\nvar _default = fontHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/file_uploader.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _guid = _interopRequireDefault(require(\"../core/guid\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../core/utils/callbacks\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _ajax = _interopRequireDefault(require(\"../core/utils/ajax\"));\r\nvar _editor = _interopRequireDefault(require(\"./editor/editor\"));\r\nvar _button = _interopRequireDefault(require(\"./button\"));\r\nvar _progress_bar = _interopRequireDefault(require(\"./progress_bar\"));\r\nvar _browser = _interopRequireDefault(require(\"../core/utils/browser\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _click = require(\"../events/click\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _themes = require(\"./themes\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar FILEUPLOADER_CLASS = \"dx-fileuploader\";\r\nvar FILEUPLOADER_EMPTY_CLASS = \"dx-fileuploader-empty\";\r\nvar FILEUPLOADER_SHOW_FILE_LIST_CLASS = \"dx-fileuploader-show-file-list\";\r\nvar FILEUPLOADER_DRAGOVER_CLASS = \"dx-fileuploader-dragover\";\r\nvar FILEUPLOADER_WRAPPER_CLASS = \"dx-fileuploader-wrapper\";\r\nvar FILEUPLOADER_CONTAINER_CLASS = \"dx-fileuploader-container\";\r\nvar FILEUPLOADER_CONTENT_CLASS = \"dx-fileuploader-content\";\r\nvar FILEUPLOADER_INPUT_WRAPPER_CLASS = \"dx-fileuploader-input-wrapper\";\r\nvar FILEUPLOADER_INPUT_CONTAINER_CLASS = \"dx-fileuploader-input-container\";\r\nvar FILEUPLOADER_INPUT_LABEL_CLASS = \"dx-fileuploader-input-label\";\r\nvar FILEUPLOADER_INPUT_CLASS = \"dx-fileuploader-input\";\r\nvar FILEUPLOADER_FILES_CONTAINER_CLASS = \"dx-fileuploader-files-container\";\r\nvar FILEUPLOADER_FILE_CONTAINER_CLASS = \"dx-fileuploader-file-container\";\r\nvar FILEUPLOADER_FILE_INFO_CLASS = \"dx-fileuploader-file-info\";\r\nvar FILEUPLOADER_FILE_STATUS_MESSAGE_CLASS = \"dx-fileuploader-file-status-message\";\r\nvar FILEUPLOADER_FILE_CLASS = \"dx-fileuploader-file\";\r\nvar FILEUPLOADER_FILE_NAME_CLASS = \"dx-fileuploader-file-name\";\r\nvar FILEUPLOADER_FILE_SIZE_CLASS = \"dx-fileuploader-file-size\";\r\nvar FILEUPLOADER_BUTTON_CLASS = \"dx-fileuploader-button\";\r\nvar FILEUPLOADER_BUTTON_CONTAINER_CLASS = \"dx-fileuploader-button-container\";\r\nvar FILEUPLOADER_CANCEL_BUTTON_CLASS = \"dx-fileuploader-cancel-button\";\r\nvar FILEUPLOADER_UPLOAD_BUTTON_CLASS = \"dx-fileuploader-upload-button\";\r\nvar FILEUPLOADER_INVALID_CLASS = \"dx-fileuploader-invalid\";\r\nvar FILEUPLOADER_AFTER_LOAD_DELAY = 400;\r\nvar FILEUPLOADER_CHUNK_META_DATA_NAME = \"chunkMetadata\";\r\nvar renderFileUploaderInput = function() {\r\n    return (0, _renderer.default)(\"<input>\").attr(\"type\", \"file\")\r\n};\r\nvar isFormDataSupported = function() {\r\n    return !!window.FormData\r\n};\r\nvar FileUploader = function(_Editor) {\r\n    _inherits(FileUploader, _Editor);\r\n    var _super = _createSuper(FileUploader);\r\n\r\n    function FileUploader() {\r\n        _classCallCheck(this, FileUploader);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(FileUploader, [{\r\n        key: \"_supportedKeys\",\r\n        value: function() {\r\n            var _this = this;\r\n            var click = function(e) {\r\n                e.preventDefault();\r\n                var $selectButton = _this._selectButton.$element();\r\n                _events_engine.default.trigger($selectButton, _click.name)\r\n            };\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(FileUploader.prototype), \"_supportedKeys\", this).call(this), {\r\n                space: click,\r\n                enter: click\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_setOptionsByReference\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(FileUploader.prototype), \"_setOptionsByReference\", this).call(this);\r\n            (0, _extend.extend)(this._optionsByReference, {\r\n                value: true\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(FileUploader.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                chunkSize: 0,\r\n                value: [],\r\n                selectButtonText: _message.default.format(\"dxFileUploader-selectFile\"),\r\n                uploadButtonText: _message.default.format(\"dxFileUploader-upload\"),\r\n                labelText: _message.default.format(\"dxFileUploader-dropFile\"),\r\n                name: \"files[]\",\r\n                multiple: false,\r\n                accept: \"\",\r\n                uploadUrl: \"/\",\r\n                allowCanceling: true,\r\n                showFileList: true,\r\n                progress: 0,\r\n                dialogTrigger: void 0,\r\n                dropZone: void 0,\r\n                readyToUploadMessage: _message.default.format(\"dxFileUploader-readyToUpload\"),\r\n                uploadedMessage: _message.default.format(\"dxFileUploader-uploaded\"),\r\n                uploadFailedMessage: _message.default.format(\"dxFileUploader-uploadFailedMessage\"),\r\n                uploadAbortedMessage: _message.default.format(\"dxFileUploader-uploadAbortedMessage\"),\r\n                uploadMode: \"instantly\",\r\n                uploadMethod: \"POST\",\r\n                uploadHeaders: {},\r\n                uploadCustomData: {},\r\n                onBeforeSend: null,\r\n                onUploadStarted: null,\r\n                onUploaded: null,\r\n                onFilesUploaded: null,\r\n                onProgress: null,\r\n                onUploadError: null,\r\n                onUploadAborted: null,\r\n                onDropZoneEnter: null,\r\n                onDropZoneLeave: null,\r\n                allowedFileExtensions: [],\r\n                maxFileSize: 0,\r\n                minFileSize: 0,\r\n                inputAttr: {},\r\n                invalidFileExtensionMessage: _message.default.format(\"dxFileUploader-invalidFileExtension\"),\r\n                invalidMaxFileSizeMessage: _message.default.format(\"dxFileUploader-invalidMaxFileSize\"),\r\n                invalidMinFileSizeMessage: _message.default.format(\"dxFileUploader-invalidMinFileSize\"),\r\n                extendSelection: true,\r\n                validationMessageMode: \"always\",\r\n                uploadFile: null,\r\n                uploadChunk: null,\r\n                abortUpload: null,\r\n                validationMessageOffset: {\r\n                    h: 0,\r\n                    v: 0\r\n                },\r\n                useNativeInputClick: false,\r\n                useDragOver: true,\r\n                nativeDropSupported: true,\r\n                _uploadButtonType: \"normal\"\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_defaultOptionsRules\",\r\n        value: function() {\r\n            return _get(_getPrototypeOf(FileUploader.prototype), \"_defaultOptionsRules\", this).call(this).concat([{\r\n                device: function() {\r\n                    return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n                },\r\n                options: {\r\n                    focusStateEnabled: true\r\n                }\r\n            }, {\r\n                device: [{\r\n                    platform: \"android\"\r\n                }],\r\n                options: {\r\n                    validationMessageOffset: {\r\n                        v: 0\r\n                    }\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return \"desktop\" !== _devices.default.real().deviceType\r\n                },\r\n                options: {\r\n                    useDragOver: false\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return !isFormDataSupported()\r\n                },\r\n                options: {\r\n                    uploadMode: \"useForm\"\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return _browser.default.msie || \"desktop\" !== _devices.default.real().deviceType\r\n                },\r\n                options: {\r\n                    nativeDropSupported: false\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return (0, _themes.isMaterial)()\r\n                },\r\n                options: {\r\n                    _uploadButtonType: \"default\"\r\n                }\r\n            }])\r\n        }\r\n    }, {\r\n        key: \"_initOptions\",\r\n        value: function(options) {\r\n            var isLabelTextDefined = \"labelText\" in options;\r\n            _get(_getPrototypeOf(FileUploader.prototype), \"_initOptions\", this).call(this, options);\r\n            if (!isLabelTextDefined && !this._shouldDragOverBeRendered()) {\r\n                this.option(\"labelText\", \"\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(FileUploader.prototype), \"_init\", this).call(this);\r\n            this._initFileInput();\r\n            this._initLabel();\r\n            this._setUploadStrategy();\r\n            this._createFiles();\r\n            this._createBeforeSendAction();\r\n            this._createUploadStartedAction();\r\n            this._createUploadedAction();\r\n            this._createFilesUploadedAction();\r\n            this._createProgressAction();\r\n            this._createUploadErrorAction();\r\n            this._createUploadAbortedAction();\r\n            this._createDropZoneEnterAction();\r\n            this._createDropZoneLeaveAction()\r\n        }\r\n    }, {\r\n        key: \"_setUploadStrategy\",\r\n        value: function() {\r\n            var strategy = null;\r\n            if (this.option(\"chunkSize\") > 0) {\r\n                var uploadChunk = this.option(\"uploadChunk\");\r\n                strategy = uploadChunk && (0, _type.isFunction)(uploadChunk) ? new CustomChunksFileUploadStrategy(this) : new DefaultChunksFileUploadStrategy(this)\r\n            } else {\r\n                var uploadFile = this.option(\"uploadFile\");\r\n                strategy = uploadFile && (0, _type.isFunction)(uploadFile) ? new CustomWholeFileUploadStrategy(this) : new DefaultWholeFileUploadStrategy(this)\r\n            }\r\n            this._uploadStrategy = strategy\r\n        }\r\n    }, {\r\n        key: \"_initFileInput\",\r\n        value: function() {\r\n            var _this2 = this;\r\n            this._isCustomClickEvent = false;\r\n            if (!this._$fileInput) {\r\n                this._$fileInput = renderFileUploaderInput();\r\n                _events_engine.default.on(this._$fileInput, \"change\", this._inputChangeHandler.bind(this));\r\n                _events_engine.default.on(this._$fileInput, \"click\", function(e) {\r\n                    e.stopPropagation();\r\n                    return _this2.option(\"useNativeInputClick\") || _this2._isCustomClickEvent\r\n                })\r\n            }\r\n            this._$fileInput.prop({\r\n                multiple: this.option(\"multiple\"),\r\n                accept: this.option(\"accept\"),\r\n                tabIndex: -1\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_inputChangeHandler\",\r\n        value: function() {\r\n            if (this._doPreventInputChange) {\r\n                return\r\n            }\r\n            var fileName = this._$fileInput.val().replace(/^.*\\\\/, \"\");\r\n            var files = this._$fileInput.prop(\"files\");\r\n            if (files && !files.length && \"useForm\" !== this.option(\"uploadMode\")) {\r\n                return\r\n            }\r\n            var value = files ? this._getFiles(files) : [{\r\n                name: fileName\r\n            }];\r\n            this._changeValue(value);\r\n            if (\"instantly\" === this.option(\"uploadMode\")) {\r\n                this._uploadFiles()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_shouldFileListBeExtended\",\r\n        value: function() {\r\n            return \"useForm\" !== this.option(\"uploadMode\") && this.option(\"extendSelection\") && this.option(\"multiple\")\r\n        }\r\n    }, {\r\n        key: \"_removeDuplicates\",\r\n        value: function(files, value) {\r\n            var result = [];\r\n            for (var i = 0; i < value.length; i++) {\r\n                if (!this._isFileInArray(files, value[i])) {\r\n                    result.push(value[i])\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_isFileInArray\",\r\n        value: function(files, file) {\r\n            for (var i = 0; i < files.length; i++) {\r\n                var item = files[i];\r\n                if (item.size === file.size && item.name === file.name) {\r\n                    return true\r\n                }\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_changeValue\",\r\n        value: function(value) {\r\n            var files = this._shouldFileListBeExtended() ? this.option(\"value\").slice() : [];\r\n            if (\"instantly\" !== this.option(\"uploadMode\")) {\r\n                value = this._removeDuplicates(files, value)\r\n            }\r\n            this.option(\"value\", files.concat(value))\r\n        }\r\n    }, {\r\n        key: \"_getFiles\",\r\n        value: function(fileList) {\r\n            var values = [];\r\n            (0, _iterator.each)(fileList, function(_, value) {\r\n                return values.push(value)\r\n            });\r\n            return values\r\n        }\r\n    }, {\r\n        key: \"_getFile\",\r\n        value: function(fileData) {\r\n            var targetFileValue = (0, _type.isNumeric)(fileData) ? this.option(\"value\")[fileData] : fileData;\r\n            return this._files.filter(function(file) {\r\n                return file.value === targetFileValue\r\n            })[0]\r\n        }\r\n    }, {\r\n        key: \"_initLabel\",\r\n        value: function() {\r\n            if (!this._$inputLabel) {\r\n                this._$inputLabel = (0, _renderer.default)(\"<div>\")\r\n            }\r\n            this._updateInputLabelText()\r\n        }\r\n    }, {\r\n        key: \"_updateInputLabelText\",\r\n        value: function() {\r\n            var correctedValue = this._isInteractionDisabled() ? \"\" : this.option(\"labelText\");\r\n            this._$inputLabel.text(correctedValue)\r\n        }\r\n    }, {\r\n        key: \"_focusTarget\",\r\n        value: function() {\r\n            return this.$element().find(\".\" + FILEUPLOADER_BUTTON_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getSubmitElement\",\r\n        value: function() {\r\n            return this._$fileInput\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(FileUploader.prototype), \"_initMarkup\", this).call(this);\r\n            this.$element().addClass(FILEUPLOADER_CLASS);\r\n            this._renderWrapper();\r\n            this._renderInputWrapper();\r\n            this._renderSelectButton();\r\n            this._renderInputContainer();\r\n            this._renderUploadButton();\r\n            this._preventRecreatingFiles = true\r\n        }\r\n    }, {\r\n        key: \"_render\",\r\n        value: function() {\r\n            this._preventRecreatingFiles = false;\r\n            this._attachDragEventHandlers(this._$inputWrapper);\r\n            this._attachDragEventHandlers(this.option(\"dropZone\"));\r\n            this._renderFiles();\r\n            _get(_getPrototypeOf(FileUploader.prototype), \"_render\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_createFileProgressBar\",\r\n        value: function(file) {\r\n            file.progressBar = this._createProgressBar(file.value.size);\r\n            file.progressBar.$element().appendTo(file.$file);\r\n            this._initStatusMessage(file);\r\n            this._ensureCancelButtonInitialized(file)\r\n        }\r\n    }, {\r\n        key: \"_setStatusMessage\",\r\n        value: function(file, message) {\r\n            var _this3 = this;\r\n            setTimeout(function() {\r\n                if (_this3.option(\"showFileList\")) {\r\n                    if (file.$statusMessage) {\r\n                        file.$statusMessage.text(message);\r\n                        file.$statusMessage.css(\"display\", \"\");\r\n                        file.progressBar.$element().remove()\r\n                    }\r\n                }\r\n            }, FILEUPLOADER_AFTER_LOAD_DELAY)\r\n        }\r\n    }, {\r\n        key: \"_getUploadAbortedStatusMessage\",\r\n        value: function() {\r\n            return \"instantly\" === this.option(\"uploadMode\") ? this.option(\"uploadAbortedMessage\") : this.option(\"readyToUploadMessage\")\r\n        }\r\n    }, {\r\n        key: \"_createFiles\",\r\n        value: function() {\r\n            var _this4 = this;\r\n            var value = this.option(\"value\");\r\n            if (this._files && (0 === value.length || !this._shouldFileListBeExtended())) {\r\n                this._preventFilesUploading(this._files);\r\n                this._files = null\r\n            }\r\n            if (!this._files) {\r\n                this._files = []\r\n            }(0, _iterator.each)(value.slice(this._files.length), function(_, value) {\r\n                var file = _this4._createFile(value);\r\n                _this4._validateFile(file);\r\n                _this4._files.push(file)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_preventFilesUploading\",\r\n        value: function(files) {\r\n            var _this5 = this;\r\n            files.forEach(function(file) {\r\n                return _this5._uploadStrategy.abortUpload(file)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_validateFile\",\r\n        value: function(file) {\r\n            file.isValidFileExtension = this._validateFileExtension(file);\r\n            file.isValidMinSize = this._validateMinFileSize(file);\r\n            file.isValidMaxSize = this._validateMaxFileSize(file)\r\n        }\r\n    }, {\r\n        key: \"_validateFileExtension\",\r\n        value: function(file) {\r\n            var allowedExtensions = this.option(\"allowedFileExtensions\");\r\n            var fileExtension = file.value.name.substring(file.value.name.lastIndexOf(\".\")).toLowerCase();\r\n            if (0 === allowedExtensions.length) {\r\n                return true\r\n            }\r\n            for (var i = 0; i < allowedExtensions.length; i++) {\r\n                if (fileExtension === allowedExtensions[i].toLowerCase()) {\r\n                    return true\r\n                }\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_validateMaxFileSize\",\r\n        value: function(file) {\r\n            var fileSize = file.value.size;\r\n            var maxFileSize = this.option(\"maxFileSize\");\r\n            return maxFileSize > 0 ? fileSize <= maxFileSize : true\r\n        }\r\n    }, {\r\n        key: \"_validateMinFileSize\",\r\n        value: function(file) {\r\n            var fileSize = file.value.size;\r\n            var minFileSize = this.option(\"minFileSize\");\r\n            return minFileSize > 0 ? fileSize >= minFileSize : true\r\n        }\r\n    }, {\r\n        key: \"_createBeforeSendAction\",\r\n        value: function() {\r\n            this._beforeSendAction = this._createActionByOption(\"onBeforeSend\", {\r\n                excludeValidators: [\"readOnly\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createUploadStartedAction\",\r\n        value: function() {\r\n            this._uploadStartedAction = this._createActionByOption(\"onUploadStarted\", {\r\n                excludeValidators: [\"readOnly\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createUploadedAction\",\r\n        value: function() {\r\n            this._uploadedAction = this._createActionByOption(\"onUploaded\", {\r\n                excludeValidators: [\"readOnly\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createFilesUploadedAction\",\r\n        value: function() {\r\n            this._filesUploadedAction = this._createActionByOption(\"onFilesUploaded\", {\r\n                excludeValidators: [\"readOnly\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createProgressAction\",\r\n        value: function() {\r\n            this._progressAction = this._createActionByOption(\"onProgress\", {\r\n                excludeValidators: [\"readOnly\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createUploadAbortedAction\",\r\n        value: function() {\r\n            this._uploadAbortedAction = this._createActionByOption(\"onUploadAborted\", {\r\n                excludeValidators: [\"readOnly\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createUploadErrorAction\",\r\n        value: function() {\r\n            this._uploadErrorAction = this._createActionByOption(\"onUploadError\", {\r\n                excludeValidators: [\"readOnly\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createDropZoneEnterAction\",\r\n        value: function() {\r\n            this._dropZoneEnterAction = this._createActionByOption(\"onDropZoneEnter\")\r\n        }\r\n    }, {\r\n        key: \"_createDropZoneLeaveAction\",\r\n        value: function() {\r\n            this._dropZoneLeaveAction = this._createActionByOption(\"onDropZoneLeave\")\r\n        }\r\n    }, {\r\n        key: \"_createFile\",\r\n        value: function(value) {\r\n            return {\r\n                value: value,\r\n                loadedSize: 0,\r\n                onProgress: (0, _callbacks.default)(),\r\n                onAbort: (0, _callbacks.default)(),\r\n                onLoad: (0, _callbacks.default)(),\r\n                onError: (0, _callbacks.default)(),\r\n                onLoadStart: (0, _callbacks.default)(),\r\n                isValidFileExtension: true,\r\n                isValidMaxSize: true,\r\n                isValidMinSize: true,\r\n                isValid: function() {\r\n                    return this.isValidFileExtension && this.isValidMaxSize && this.isValidMinSize\r\n                },\r\n                isInitialized: false\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_resetFileState\",\r\n        value: function(file) {\r\n            file.isAborted = false;\r\n            file.uploadStarted = false;\r\n            file.isStartLoad = false;\r\n            file.loadedSize = 0;\r\n            file.chunksData = void 0;\r\n            file.request = void 0\r\n        }\r\n    }, {\r\n        key: \"_renderFiles\",\r\n        value: function() {\r\n            var _this$_validationMess, _this6 = this;\r\n            var value = this.option(\"value\");\r\n            if (!this._$filesContainer) {\r\n                this._$filesContainer = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_FILES_CONTAINER_CLASS).appendTo(this._$content)\r\n            } else {\r\n                if (!this._shouldFileListBeExtended() || 0 === value.length) {\r\n                    this._$filesContainer.empty()\r\n                }\r\n            }\r\n            var showFileList = this.option(\"showFileList\");\r\n            if (showFileList) {\r\n                (0, _iterator.each)(this._files, function(_, file) {\r\n                    if (!file.$file) {\r\n                        _this6._renderFile(file)\r\n                    }\r\n                })\r\n            }\r\n            this.$element().toggleClass(FILEUPLOADER_SHOW_FILE_LIST_CLASS, showFileList);\r\n            this._toggleFileUploaderEmptyClassName();\r\n            this._updateFileNameMaxWidth();\r\n            null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.repaint()\r\n        }\r\n    }, {\r\n        key: \"_renderFile\",\r\n        value: function(file) {\r\n            var value = file.value;\r\n            var $fileContainer = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_FILE_CONTAINER_CLASS).appendTo(this._$filesContainer);\r\n            this._renderFileButtons(file, $fileContainer);\r\n            file.$file = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_FILE_CLASS).appendTo($fileContainer);\r\n            var $fileInfo = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_FILE_INFO_CLASS).appendTo(file.$file);\r\n            file.$statusMessage = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_FILE_STATUS_MESSAGE_CLASS).appendTo(file.$file);\r\n            (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_FILE_NAME_CLASS).text(value.name).appendTo($fileInfo);\r\n            if ((0, _type.isDefined)(value.size)) {\r\n                (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_FILE_SIZE_CLASS).text(this._getFileSize(value.size)).appendTo($fileInfo)\r\n            }\r\n            if (file.isValid()) {\r\n                file.$statusMessage.text(this.option(\"readyToUploadMessage\"))\r\n            } else {\r\n                if (!file.isValidFileExtension) {\r\n                    file.$statusMessage.append(this._createValidationElement(\"invalidFileExtensionMessage\"))\r\n                }\r\n                if (!file.isValidMaxSize) {\r\n                    file.$statusMessage.append(this._createValidationElement(\"invalidMaxFileSizeMessage\"))\r\n                }\r\n                if (!file.isValidMinSize) {\r\n                    file.$statusMessage.append(this._createValidationElement(\"invalidMinFileSizeMessage\"))\r\n                }\r\n                $fileContainer.addClass(FILEUPLOADER_INVALID_CLASS)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createValidationElement\",\r\n        value: function(key) {\r\n            return (0, _renderer.default)(\"<span>\").text(this.option(key))\r\n        }\r\n    }, {\r\n        key: \"_updateFileNameMaxWidth\",\r\n        value: function() {\r\n            var cancelButtonsCount = this.option(\"allowCanceling\") && \"useForm\" !== this.option(\"uploadMode\") ? 1 : 0;\r\n            var uploadButtonsCount = \"useButtons\" === this.option(\"uploadMode\") ? 1 : 0;\r\n            var filesContainerWidth = this._$filesContainer.find(\".\" + FILEUPLOADER_FILE_CONTAINER_CLASS).first().width() || this._$filesContainer.width();\r\n            var $buttonContainer = this._$filesContainer.find(\".\" + FILEUPLOADER_BUTTON_CONTAINER_CLASS).eq(0);\r\n            var buttonsWidth = $buttonContainer.width() * (cancelButtonsCount + uploadButtonsCount);\r\n            var $fileSize = this._$filesContainer.find(\".\" + FILEUPLOADER_FILE_SIZE_CLASS).eq(0);\r\n            var prevFileSize = $fileSize.text();\r\n            $fileSize.text(\"1000 Mb\");\r\n            var fileSizeWidth = $fileSize.width();\r\n            $fileSize.text(prevFileSize);\r\n            this._$filesContainer.find(\".\" + FILEUPLOADER_FILE_NAME_CLASS).css(\"maxWidth\", filesContainerWidth - buttonsWidth - fileSizeWidth)\r\n        }\r\n    }, {\r\n        key: \"_renderFileButtons\",\r\n        value: function(file, $container) {\r\n            var $cancelButton = this._getCancelButton(file);\r\n            $cancelButton && $container.append($cancelButton);\r\n            var $uploadButton = this._getUploadButton(file);\r\n            $uploadButton && $container.append($uploadButton)\r\n        }\r\n    }, {\r\n        key: \"_getCancelButton\",\r\n        value: function(file) {\r\n            var _this7 = this;\r\n            if (\"useForm\" === this.option(\"uploadMode\")) {\r\n                return null\r\n            }\r\n            file.cancelButton = this._createComponent((0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_BUTTON_CLASS + \" \" + FILEUPLOADER_CANCEL_BUTTON_CLASS), _button.default, {\r\n                onClick: function() {\r\n                    return _this7._removeFile(file)\r\n                },\r\n                icon: \"close\",\r\n                visible: this.option(\"allowCanceling\"),\r\n                disabled: this.option(\"readOnly\"),\r\n                integrationOptions: {}\r\n            });\r\n            return (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_BUTTON_CONTAINER_CLASS).append(file.cancelButton.$element())\r\n        }\r\n    }, {\r\n        key: \"_getUploadButton\",\r\n        value: function(file) {\r\n            var _this8 = this;\r\n            if (!file.isValid() || \"useButtons\" !== this.option(\"uploadMode\")) {\r\n                return null\r\n            }\r\n            file.uploadButton = this._createComponent((0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_BUTTON_CLASS + \" \" + FILEUPLOADER_UPLOAD_BUTTON_CLASS), _button.default, {\r\n                onClick: function() {\r\n                    return _this8._uploadFile(file)\r\n                },\r\n                icon: \"upload\"\r\n            });\r\n            file.onLoadStart.add(function() {\r\n                return file.uploadButton.option({\r\n                    visible: false,\r\n                    disabled: true\r\n                })\r\n            });\r\n            file.onAbort.add(function() {\r\n                return file.uploadButton.option({\r\n                    visible: true,\r\n                    disabled: false\r\n                })\r\n            });\r\n            return (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_BUTTON_CONTAINER_CLASS).append(file.uploadButton.$element())\r\n        }\r\n    }, {\r\n        key: \"_removeFile\",\r\n        value: function(file) {\r\n            var _file$$file;\r\n            null === (_file$$file = file.$file) || void 0 === _file$$file ? void 0 : _file$$file.parent().remove();\r\n            this._files.splice((0, _array.inArray)(file, this._files), 1);\r\n            var value = this.option(\"value\").slice();\r\n            value.splice((0, _array.inArray)(file.value, value), 1);\r\n            this._preventRecreatingFiles = true;\r\n            this.option(\"value\", value);\r\n            this._preventRecreatingFiles = false;\r\n            this._toggleFileUploaderEmptyClassName();\r\n            this._doPreventInputChange = true;\r\n            this._$fileInput.val(\"\");\r\n            this._doPreventInputChange = false\r\n        }\r\n    }, {\r\n        key: \"removeFile\",\r\n        value: function(fileData) {\r\n            if (\"useForm\" === this.option(\"uploadMode\") || !(0, _type.isDefined)(fileData)) {\r\n                return\r\n            }\r\n            var file = this._getFile(fileData);\r\n            if (file) {\r\n                if (file.uploadStarted) {\r\n                    this._preventFilesUploading([file])\r\n                }\r\n                this._removeFile(file)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_toggleFileUploaderEmptyClassName\",\r\n        value: function() {\r\n            this.$element().toggleClass(FILEUPLOADER_EMPTY_CLASS, !this._files.length || this._hasInvalidFile(this._files))\r\n        }\r\n    }, {\r\n        key: \"_hasInvalidFile\",\r\n        value: function(files) {\r\n            for (var i = 0; i < files.length; i++) {\r\n                if (!files[i].isValid()) {\r\n                    return true\r\n                }\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_getFileSize\",\r\n        value: function(size) {\r\n            var i = 0;\r\n            var labels = [_message.default.format(\"dxFileUploader-bytes\"), _message.default.format(\"dxFileUploader-kb\"), _message.default.format(\"dxFileUploader-Mb\"), _message.default.format(\"dxFileUploader-Gb\")];\r\n            var count = labels.length - 1;\r\n            while (i < count && size >= 1024) {\r\n                size /= 1024;\r\n                i++\r\n            }\r\n            return Math.round(size) + \" \" + labels[i]\r\n        }\r\n    }, {\r\n        key: \"_renderSelectButton\",\r\n        value: function() {\r\n            var $button = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_BUTTON_CLASS).appendTo(this._$inputWrapper);\r\n            this._selectButton = this._createComponent($button, _button.default, {\r\n                text: this.option(\"selectButtonText\"),\r\n                focusStateEnabled: false,\r\n                integrationOptions: {},\r\n                disabled: this.option(\"readOnly\")\r\n            });\r\n            this._selectFileDialogHandler = this._selectButtonClickHandler.bind(this);\r\n            if (\"desktop\" === _devices.default.real().deviceType) {\r\n                this._selectButton.option(\"onClick\", this._selectFileDialogHandler)\r\n            } else {\r\n                this._attachSelectFileDialogHandler(this._selectButton.$element())\r\n            }\r\n            this._attachSelectFileDialogHandler(this.option(\"dialogTrigger\"))\r\n        }\r\n    }, {\r\n        key: \"_selectButtonClickHandler\",\r\n        value: function() {\r\n            if (this.option(\"useNativeInputClick\")) {\r\n                return\r\n            }\r\n            if (this._isInteractionDisabled()) {\r\n                return false\r\n            }\r\n            this._isCustomClickEvent = true;\r\n            _events_engine.default.trigger(this._$fileInput, \"click\");\r\n            this._isCustomClickEvent = false\r\n        }\r\n    }, {\r\n        key: \"_attachSelectFileDialogHandler\",\r\n        value: function(target) {\r\n            if (!(0, _type.isDefined)(target)) {\r\n                return\r\n            }\r\n            this._detachSelectFileDialogHandler(target);\r\n            _events_engine.default.on((0, _renderer.default)(target), \"click\", this._selectFileDialogHandler)\r\n        }\r\n    }, {\r\n        key: \"_detachSelectFileDialogHandler\",\r\n        value: function(target) {\r\n            if (!(0, _type.isDefined)(target)) {\r\n                return\r\n            }\r\n            _events_engine.default.off((0, _renderer.default)(target), \"click\", this._selectFileDialogHandler)\r\n        }\r\n    }, {\r\n        key: \"_renderUploadButton\",\r\n        value: function() {\r\n            if (\"useButtons\" !== this.option(\"uploadMode\")) {\r\n                return\r\n            }\r\n            var $uploadButton = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_BUTTON_CLASS).addClass(FILEUPLOADER_UPLOAD_BUTTON_CLASS).appendTo(this._$content);\r\n            this._uploadButton = this._createComponent($uploadButton, _button.default, {\r\n                text: this.option(\"uploadButtonText\"),\r\n                onClick: this._uploadButtonClickHandler.bind(this),\r\n                type: this.option(\"_uploadButtonType\"),\r\n                integrationOptions: {}\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_uploadButtonClickHandler\",\r\n        value: function() {\r\n            this._uploadFiles()\r\n        }\r\n    }, {\r\n        key: \"_shouldDragOverBeRendered\",\r\n        value: function() {\r\n            return !this.option(\"readOnly\") && (\"useForm\" !== this.option(\"uploadMode\") || this.option(\"nativeDropSupported\"))\r\n        }\r\n    }, {\r\n        key: \"_isInteractionDisabled\",\r\n        value: function() {\r\n            return this.option(\"readOnly\") || this.option(\"disabled\")\r\n        }\r\n    }, {\r\n        key: \"_renderInputContainer\",\r\n        value: function() {\r\n            this._$inputContainer = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_INPUT_CONTAINER_CLASS).appendTo(this._$inputWrapper);\r\n            this._$fileInput.addClass(FILEUPLOADER_INPUT_CLASS);\r\n            this._renderInput();\r\n            var labelId = \"dx-fileuploader-input-label-\".concat(new _guid.default);\r\n            this._$inputLabel.attr(\"id\", labelId).addClass(FILEUPLOADER_INPUT_LABEL_CLASS).appendTo(this._$inputContainer);\r\n            this.setAria(\"labelledby\", labelId, this._$fileInput)\r\n        }\r\n    }, {\r\n        key: \"_renderInput\",\r\n        value: function() {\r\n            if (this.option(\"useNativeInputClick\")) {\r\n                this._selectButton.option(\"template\", this._selectButtonInputTemplate.bind(this))\r\n            } else {\r\n                this._$fileInput.appendTo(this._$inputContainer);\r\n                this._selectButton.option(\"template\", \"content\")\r\n            }\r\n            this._applyInputAttributes(this.option(\"inputAttr\"))\r\n        }\r\n    }, {\r\n        key: \"_selectButtonInputTemplate\",\r\n        value: function(data, content) {\r\n            var $content = (0, _renderer.default)(content);\r\n            var $text = (0, _renderer.default)(\"<span>\").addClass(\"dx-button-text\").text(data.text);\r\n            $content.append($text).append(this._$fileInput);\r\n            return $content\r\n        }\r\n    }, {\r\n        key: \"_renderInputWrapper\",\r\n        value: function() {\r\n            this._$inputWrapper = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_INPUT_WRAPPER_CLASS).appendTo(this._$content)\r\n        }\r\n    }, {\r\n        key: \"_detachDragEventHandlers\",\r\n        value: function(target) {\r\n            if (!(0, _type.isDefined)(target)) {\r\n                return\r\n            }\r\n            _events_engine.default.off((0, _renderer.default)(target), (0, _index.addNamespace)(\"\", this.NAME))\r\n        }\r\n    }, {\r\n        key: \"_attachDragEventHandlers\",\r\n        value: function(target) {\r\n            var isCustomTarget = target !== this._$inputWrapper;\r\n            if (!(0, _type.isDefined)(target) || !this._shouldDragOverBeRendered()) {\r\n                return\r\n            }\r\n            this._detachDragEventHandlers(target);\r\n            target = (0, _renderer.default)(target);\r\n            this._dragEventsTargets = [];\r\n            _events_engine.default.on(target, (0, _index.addNamespace)(\"dragenter\", this.NAME), this._dragEnterHandler.bind(this, isCustomTarget));\r\n            _events_engine.default.on(target, (0, _index.addNamespace)(\"dragover\", this.NAME), this._dragOverHandler.bind(this));\r\n            _events_engine.default.on(target, (0, _index.addNamespace)(\"dragleave\", this.NAME), this._dragLeaveHandler.bind(this, isCustomTarget));\r\n            _events_engine.default.on(target, (0, _index.addNamespace)(\"drop\", this.NAME), this._dropHandler.bind(this, isCustomTarget))\r\n        }\r\n    }, {\r\n        key: \"_applyInputAttributes\",\r\n        value: function(customAttributes) {\r\n            this._$fileInput.attr(customAttributes)\r\n        }\r\n    }, {\r\n        key: \"_useInputForDrop\",\r\n        value: function() {\r\n            return this.option(\"nativeDropSupported\") && \"useForm\" === this.option(\"uploadMode\")\r\n        }\r\n    }, {\r\n        key: \"_dragEnterHandler\",\r\n        value: function(isCustomTarget, e) {\r\n            if (this.option(\"disabled\")) {\r\n                return false\r\n            }\r\n            if (!this._useInputForDrop()) {\r\n                e.preventDefault()\r\n            }\r\n            this._tryToggleDropZoneActive(true, isCustomTarget, e);\r\n            this._updateEventTargets(e)\r\n        }\r\n    }, {\r\n        key: \"_dragOverHandler\",\r\n        value: function(e) {\r\n            if (!this._useInputForDrop()) {\r\n                e.preventDefault()\r\n            }\r\n            e.originalEvent.dataTransfer.dropEffect = \"copy\"\r\n        }\r\n    }, {\r\n        key: \"_dragLeaveHandler\",\r\n        value: function(isCustomTarget, e) {\r\n            if (!this._useInputForDrop()) {\r\n                e.preventDefault()\r\n            }\r\n            this._updateEventTargets(e);\r\n            this._tryToggleDropZoneActive(false, isCustomTarget, e)\r\n        }\r\n    }, {\r\n        key: \"_updateEventTargets\",\r\n        value: function(e) {\r\n            var targetIndex = this._dragEventsTargets.indexOf(e.target);\r\n            var isTargetExists = targetIndex !== -1;\r\n            if (\"dragenter\" === e.type) {\r\n                !isTargetExists && this._dragEventsTargets.push(e.target)\r\n            } else {\r\n                isTargetExists && this._dragEventsTargets.splice(targetIndex, 1)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_tryToggleDropZoneActive\",\r\n        value: function(active, isCustom, event) {\r\n            var classAction = active ? \"addClass\" : \"removeClass\";\r\n            var mouseAction = active ? \"_dropZoneEnterAction\" : \"_dropZoneLeaveAction\";\r\n            if (!this._dragEventsTargets.length) {\r\n                this[mouseAction]({\r\n                    event: event,\r\n                    dropZoneElement: event.currentTarget\r\n                });\r\n                if (!isCustom) {\r\n                    this.$element()[classAction](FILEUPLOADER_DRAGOVER_CLASS)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_dropHandler\",\r\n        value: function(isCustomTarget, e) {\r\n            this._dragEventsTargets = [];\r\n            if (!isCustomTarget) {\r\n                this.$element().removeClass(FILEUPLOADER_DRAGOVER_CLASS)\r\n            }\r\n            if (this._useInputForDrop() || isCustomTarget && this._isInteractionDisabled()) {\r\n                return\r\n            }\r\n            e.preventDefault();\r\n            var fileList = e.originalEvent.dataTransfer.files;\r\n            var files = this._getFiles(fileList);\r\n            if (!this.option(\"multiple\") && files.length > 1) {\r\n                return\r\n            }\r\n            this._changeValue(this._filterFiles(files));\r\n            if (\"instantly\" === this.option(\"uploadMode\")) {\r\n                this._uploadFiles()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_handleAllFilesUploaded\",\r\n        value: function() {\r\n            var areAllFilesLoaded = this._files.every(function(file) {\r\n                return !file.isValid() || file._isError || file._isLoaded || file.isAborted\r\n            });\r\n            if (areAllFilesLoaded) {\r\n                this._filesUploadedAction()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_filterFiles\",\r\n        value: function(files) {\r\n            if (!files.length) {\r\n                return files\r\n            }\r\n            var accept = this.option(\"accept\");\r\n            if (!accept.length) {\r\n                return files\r\n            }\r\n            var result = [];\r\n            var allowedTypes = this._getAllowedFileTypes(accept);\r\n            for (var i = 0, n = files.length; i < n; i++) {\r\n                if (this._isFileTypeAllowed(files[i], allowedTypes)) {\r\n                    result.push(files[i])\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getAllowedFileTypes\",\r\n        value: function(acceptSting) {\r\n            if (!acceptSting.length) {\r\n                return []\r\n            }\r\n            return acceptSting.split(\",\").map(function(item) {\r\n                return item.trim()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_isFileTypeAllowed\",\r\n        value: function(file, allowedTypes) {\r\n            for (var i = 0, n = allowedTypes.length; i < n; i++) {\r\n                var allowedType = allowedTypes[i];\r\n                if (\".\" === allowedType[0]) {\r\n                    allowedType = allowedType.replace(\".\", \"\\\\.\");\r\n                    if (file.name.match(new RegExp(allowedType + \"$\", \"i\"))) {\r\n                        return true\r\n                    }\r\n                } else {\r\n                    allowedType = allowedType.replace(\"*\", \"\");\r\n                    if (file.type.match(new RegExp(allowedType, \"i\"))) {\r\n                        return true\r\n                    }\r\n                }\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_renderWrapper\",\r\n        value: function() {\r\n            var $wrapper = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_WRAPPER_CLASS).appendTo(this.$element());\r\n            var $container = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_CONTAINER_CLASS).appendTo($wrapper);\r\n            this._$content = (0, _renderer.default)(\"<div>\").addClass(FILEUPLOADER_CONTENT_CLASS).appendTo($container)\r\n        }\r\n    }, {\r\n        key: \"_clean\",\r\n        value: function() {\r\n            this._$fileInput.detach();\r\n            delete this._$filesContainer;\r\n            if (this._files) {\r\n                this._files.forEach(function(file) {\r\n                    file.$file = null;\r\n                    file.$statusMessage = null\r\n                })\r\n            }\r\n            _get(_getPrototypeOf(FileUploader.prototype), \"_clean\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"abortUpload\",\r\n        value: function(fileData) {\r\n            if (\"useForm\" === this.option(\"uploadMode\")) {\r\n                return\r\n            }\r\n            if ((0, _type.isDefined)(fileData)) {\r\n                var file = this._getFile(fileData);\r\n                if (file) {\r\n                    this._preventFilesUploading([file])\r\n                }\r\n            } else {\r\n                this._preventFilesUploading(this._files)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"upload\",\r\n        value: function(fileData) {\r\n            if (\"useForm\" === this.option(\"uploadMode\")) {\r\n                return\r\n            }\r\n            if ((0, _type.isDefined)(fileData)) {\r\n                var file = this._getFile(fileData);\r\n                if (file && isFormDataSupported()) {\r\n                    this._uploadFile(file)\r\n                }\r\n            } else {\r\n                this._uploadFiles()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_uploadFiles\",\r\n        value: function() {\r\n            var _this9 = this;\r\n            if (isFormDataSupported()) {\r\n                (0, _iterator.each)(this._files, function(_, file) {\r\n                    return _this9._uploadFile(file)\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_uploadFile\",\r\n        value: function(file) {\r\n            this._uploadStrategy.upload(file)\r\n        }\r\n    }, {\r\n        key: \"_updateProgressBar\",\r\n        value: function(file, loadedFileData) {\r\n            file.progressBar && file.progressBar.option({\r\n                value: loadedFileData.loaded,\r\n                showStatus: true\r\n            });\r\n            this._progressAction({\r\n                file: file.value,\r\n                segmentSize: loadedFileData.currentSegmentSize,\r\n                bytesLoaded: loadedFileData.loaded,\r\n                bytesTotal: loadedFileData.total,\r\n                event: loadedFileData.event,\r\n                request: file.request\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_updateTotalProgress\",\r\n        value: function(totalFilesSize, totalLoadedFilesSize) {\r\n            var progress = totalFilesSize ? this._getProgressValue(totalLoadedFilesSize / totalFilesSize) : 0;\r\n            this.option(\"progress\", progress);\r\n            this._setLoadedSize(totalLoadedFilesSize)\r\n        }\r\n    }, {\r\n        key: \"_getProgressValue\",\r\n        value: function(ratio) {\r\n            return Math.floor(100 * ratio)\r\n        }\r\n    }, {\r\n        key: \"_initStatusMessage\",\r\n        value: function(file) {\r\n            file.$statusMessage.css(\"display\", \"none\")\r\n        }\r\n    }, {\r\n        key: \"_ensureCancelButtonInitialized\",\r\n        value: function(file) {\r\n            var _this10 = this;\r\n            if (file.isInitialized) {\r\n                return\r\n            }\r\n            file.cancelButton.option(\"onClick\", function() {\r\n                _this10._preventFilesUploading([file]);\r\n                _this10._removeFile(file)\r\n            });\r\n            var hideCancelButton = function() {\r\n                setTimeout(function() {\r\n                    file.cancelButton.option({\r\n                        visible: false\r\n                    })\r\n                }, FILEUPLOADER_AFTER_LOAD_DELAY)\r\n            };\r\n            file.onLoad.add(hideCancelButton);\r\n            file.onError.add(hideCancelButton)\r\n        }\r\n    }, {\r\n        key: \"_createProgressBar\",\r\n        value: function(fileSize) {\r\n            var _this11 = this;\r\n            return this._createComponent((0, _renderer.default)(\"<div>\"), _progress_bar.default, {\r\n                value: void 0,\r\n                min: 0,\r\n                max: fileSize,\r\n                statusFormat: function(ratio) {\r\n                    return _this11._getProgressValue(ratio) + \"%\"\r\n                },\r\n                showStatus: false,\r\n                statusPosition: \"right\"\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getTotalFilesSize\",\r\n        value: function() {\r\n            var _this12 = this;\r\n            if (!this._totalFilesSize) {\r\n                this._totalFilesSize = 0;\r\n                (0, _iterator.each)(this._files, function(_, file) {\r\n                    _this12._totalFilesSize += file.value.size\r\n                })\r\n            }\r\n            return this._totalFilesSize\r\n        }\r\n    }, {\r\n        key: \"_getTotalLoadedFilesSize\",\r\n        value: function() {\r\n            var _this13 = this;\r\n            if (!this._totalLoadedFilesSize) {\r\n                this._totalLoadedFilesSize = 0;\r\n                (0, _iterator.each)(this._files, function(_, file) {\r\n                    _this13._totalLoadedFilesSize += file.loadedSize\r\n                })\r\n            }\r\n            return this._totalLoadedFilesSize\r\n        }\r\n    }, {\r\n        key: \"_setLoadedSize\",\r\n        value: function(value) {\r\n            this._totalLoadedFilesSize = value\r\n        }\r\n    }, {\r\n        key: \"_recalculateProgress\",\r\n        value: function() {\r\n            this._totalFilesSize = 0;\r\n            this._totalLoadedFilesSize = 0;\r\n            this._updateTotalProgress(this._getTotalFilesSize(), this._getTotalLoadedFilesSize())\r\n        }\r\n    }, {\r\n        key: \"_updateReadOnlyState\",\r\n        value: function() {\r\n            var readOnly = this.option(\"readOnly\");\r\n            this._selectButton.option(\"disabled\", readOnly);\r\n            this._files.forEach(function(file) {\r\n                var _file$cancelButton;\r\n                return null === (_file$cancelButton = file.cancelButton) || void 0 === _file$cancelButton ? void 0 : _file$cancelButton.option(\"disabled\", readOnly)\r\n            });\r\n            this._updateInputLabelText();\r\n            this._attachDragEventHandlers(this._$inputWrapper)\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            var name = args.name,\r\n                value = args.value,\r\n                previousValue = args.previousValue;\r\n            switch (name) {\r\n                case \"height\":\r\n                case \"width\":\r\n                    this._updateFileNameMaxWidth();\r\n                    _get(_getPrototypeOf(FileUploader.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                case \"value\":\r\n                    !value.length && this._$fileInput.val(\"\");\r\n                    if (!this._preventRecreatingFiles) {\r\n                        this._createFiles();\r\n                        this._renderFiles()\r\n                    }\r\n                    this._recalculateProgress();\r\n                    _get(_getPrototypeOf(FileUploader.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                case \"name\":\r\n                    this._initFileInput();\r\n                    _get(_getPrototypeOf(FileUploader.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                case \"accept\":\r\n                    this._initFileInput();\r\n                    break;\r\n                case \"multiple\":\r\n                    this._initFileInput();\r\n                    if (!args.value) {\r\n                        this.reset()\r\n                    }\r\n                    break;\r\n                case \"readOnly\":\r\n                    this._updateReadOnlyState();\r\n                    _get(_getPrototypeOf(FileUploader.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                case \"selectButtonText\":\r\n                    this._selectButton.option(\"text\", value);\r\n                    break;\r\n                case \"uploadButtonText\":\r\n                    this._uploadButton && this._uploadButton.option(\"text\", value);\r\n                    break;\r\n                case \"_uploadButtonType\":\r\n                    this._uploadButton && this._uploadButton.option(\"type\", value);\r\n                    break;\r\n                case \"dialogTrigger\":\r\n                    this._detachSelectFileDialogHandler(previousValue);\r\n                    this._attachSelectFileDialogHandler(value);\r\n                    break;\r\n                case \"dropZone\":\r\n                    this._detachDragEventHandlers(previousValue);\r\n                    this._attachDragEventHandlers(value);\r\n                    break;\r\n                case \"maxFileSize\":\r\n                case \"minFileSize\":\r\n                case \"allowedFileExtensions\":\r\n                case \"invalidFileExtensionMessage\":\r\n                case \"invalidMaxFileSizeMessage\":\r\n                case \"invalidMinFileSizeMessage\":\r\n                case \"readyToUploadMessage\":\r\n                case \"uploadedMessage\":\r\n                case \"uploadFailedMessage\":\r\n                case \"uploadAbortedMessage\":\r\n                    this._invalidate();\r\n                    break;\r\n                case \"labelText\":\r\n                    this._updateInputLabelText();\r\n                    break;\r\n                case \"showFileList\":\r\n                    if (!this._preventRecreatingFiles) {\r\n                        this._renderFiles()\r\n                    }\r\n                    break;\r\n                case \"uploadFile\":\r\n                case \"uploadChunk\":\r\n                case \"chunkSize\":\r\n                    this._setUploadStrategy();\r\n                    break;\r\n                case \"abortUpload\":\r\n                case \"uploadUrl\":\r\n                case \"progress\":\r\n                case \"uploadMethod\":\r\n                case \"uploadHeaders\":\r\n                case \"uploadCustomData\":\r\n                case \"extendSelection\":\r\n                    break;\r\n                case \"allowCanceling\":\r\n                case \"uploadMode\":\r\n                    this.reset();\r\n                    this._invalidate();\r\n                    break;\r\n                case \"onBeforeSend\":\r\n                    this._createBeforeSendAction();\r\n                    break;\r\n                case \"onUploadStarted\":\r\n                    this._createUploadStartedAction();\r\n                    break;\r\n                case \"onUploaded\":\r\n                    this._createUploadedAction();\r\n                    break;\r\n                case \"onFilesUploaded\":\r\n                    this._createFilesUploadedAction();\r\n                    break;\r\n                case \"onProgress\":\r\n                    this._createProgressAction();\r\n                    break;\r\n                case \"onUploadError\":\r\n                    this._createUploadErrorAction();\r\n                    break;\r\n                case \"onUploadAborted\":\r\n                    this._createUploadAbortedAction();\r\n                    break;\r\n                case \"onDropZoneEnter\":\r\n                    this._createDropZoneEnterAction();\r\n                    break;\r\n                case \"onDropZoneLeave\":\r\n                    this._createDropZoneLeaveAction();\r\n                    break;\r\n                case \"useNativeInputClick\":\r\n                    this._renderInput();\r\n                    break;\r\n                case \"useDragOver\":\r\n                    this._attachDragEventHandlers(this._$inputWrapper);\r\n                    break;\r\n                case \"nativeDropSupported\":\r\n                    this._invalidate();\r\n                    break;\r\n                case \"inputAttr\":\r\n                    this._applyInputAttributes(this.option(name));\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(FileUploader.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"reset\",\r\n        value: function() {\r\n            this.option(\"value\", [])\r\n        }\r\n    }]);\r\n    return FileUploader\r\n}(_editor.default);\r\nvar FileBlobReader = function() {\r\n    function FileBlobReader(file, chunkSize) {\r\n        _classCallCheck(this, FileBlobReader);\r\n        this.file = file;\r\n        this.chunkSize = chunkSize;\r\n        this.index = 0\r\n    }\r\n    _createClass(FileBlobReader, [{\r\n        key: \"read\",\r\n        value: function() {\r\n            if (!this.file) {\r\n                return null\r\n            }\r\n            var result = this.createBlobResult(this.file, this.index, this.chunkSize);\r\n            if (result.isCompleted) {\r\n                this.file = null\r\n            }\r\n            this.index++;\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"createBlobResult\",\r\n        value: function(file, index, chunkSize) {\r\n            var currentPosition = index * chunkSize;\r\n            return {\r\n                blob: this.sliceFile(file, currentPosition, chunkSize),\r\n                index: index,\r\n                isCompleted: currentPosition + chunkSize >= file.size\r\n            }\r\n        }\r\n    }, {\r\n        key: \"sliceFile\",\r\n        value: function(file, startPos, length) {\r\n            if (file.slice) {\r\n                return file.slice(startPos, startPos + length)\r\n            }\r\n            if (file.webkitSlice) {\r\n                return file.webkitSlice(startPos, startPos + length)\r\n            }\r\n            return null\r\n        }\r\n    }]);\r\n    return FileBlobReader\r\n}();\r\nvar FileUploadStrategyBase = function() {\r\n    function FileUploadStrategyBase(fileUploader) {\r\n        _classCallCheck(this, FileUploadStrategyBase);\r\n        this.fileUploader = fileUploader\r\n    }\r\n    _createClass(FileUploadStrategyBase, [{\r\n        key: \"upload\",\r\n        value: function(file) {\r\n            if (file.isInitialized && file.isAborted) {\r\n                this.fileUploader._resetFileState(file)\r\n            }\r\n            if (file.isValid() && !file.uploadStarted) {\r\n                this._prepareFileBeforeUpload(file);\r\n                this._uploadCore(file)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"abortUpload\",\r\n        value: function abortUpload(file) {\r\n            var _this14 = this;\r\n            if (file._isError || file._isLoaded || file.isAborted) {\r\n                return\r\n            }\r\n            file.isAborted = true;\r\n            file.request && file.request.abort();\r\n            if (this._isCustomCallback(\"abortUpload\")) {\r\n                var abortUpload = this.fileUploader.option(\"abortUpload\");\r\n                var arg = this._createUploadArgument(file);\r\n                var deferred = null;\r\n                try {\r\n                    var result = abortUpload(file.value, arg);\r\n                    deferred = (0, _deferred.fromPromise)(result)\r\n                } catch (error) {\r\n                    deferred = (new _deferred.Deferred).reject(error).promise()\r\n                }\r\n                deferred.done(function() {\r\n                    return file.onAbort.fire()\r\n                }).fail(function(error) {\r\n                    return _this14._handleFileError(file, error)\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_beforeSend\",\r\n        value: function(xhr, file) {\r\n            var arg = this._createUploadArgument(file);\r\n            this.fileUploader._beforeSendAction({\r\n                request: xhr,\r\n                file: file.value,\r\n                uploadInfo: arg\r\n            });\r\n            file.request = xhr\r\n        }\r\n    }, {\r\n        key: \"_createUploadArgument\",\r\n        value: function(file) {}\r\n    }, {\r\n        key: \"_uploadCore\",\r\n        value: function(file) {}\r\n    }, {\r\n        key: \"_isCustomCallback\",\r\n        value: function(name) {\r\n            var callback = this.fileUploader.option(name);\r\n            return callback && (0, _type.isFunction)(callback)\r\n        }\r\n    }, {\r\n        key: \"_handleFileError\",\r\n        value: function(file, error) {\r\n            file._isError = true;\r\n            file.onError.fire(error)\r\n        }\r\n    }, {\r\n        key: \"_prepareFileBeforeUpload\",\r\n        value: function(file) {\r\n            if (file.$file) {\r\n                var _file$progressBar;\r\n                null === (_file$progressBar = file.progressBar) || void 0 === _file$progressBar ? void 0 : _file$progressBar.dispose();\r\n                this.fileUploader._createFileProgressBar(file)\r\n            }\r\n            if (file.isInitialized) {\r\n                return\r\n            }\r\n            file.onLoadStart.add(this._onUploadStarted.bind(this, file));\r\n            file.onLoad.add(this._onLoadedHandler.bind(this, file));\r\n            file.onError.add(this._onErrorHandler.bind(this, file));\r\n            file.onAbort.add(this._onAbortHandler.bind(this, file));\r\n            file.onProgress.add(this._onProgressHandler.bind(this, file));\r\n            file.isInitialized = true\r\n        }\r\n    }, {\r\n        key: \"_isStatusError\",\r\n        value: function(status) {\r\n            return 400 <= status && status < 500 || 500 <= status && status < 600\r\n        }\r\n    }, {\r\n        key: \"_onUploadStarted\",\r\n        value: function(file, e) {\r\n            file.uploadStarted = true;\r\n            this.fileUploader._uploadStartedAction({\r\n                file: file.value,\r\n                event: e,\r\n                request: file.request\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_onAbortHandler\",\r\n        value: function(file, e) {\r\n            var args = {\r\n                file: file.value,\r\n                event: e,\r\n                request: file.request,\r\n                message: this.fileUploader._getUploadAbortedStatusMessage()\r\n            };\r\n            this.fileUploader._uploadAbortedAction(args);\r\n            this.fileUploader._setStatusMessage(file, args.message);\r\n            this.fileUploader._handleAllFilesUploaded()\r\n        }\r\n    }, {\r\n        key: \"_onErrorHandler\",\r\n        value: function(file, error) {\r\n            var args = {\r\n                file: file.value,\r\n                event: void 0,\r\n                request: file.request,\r\n                error: error,\r\n                message: this.fileUploader.option(\"uploadFailedMessage\")\r\n            };\r\n            this.fileUploader._uploadErrorAction(args);\r\n            this.fileUploader._setStatusMessage(file, args.message);\r\n            this.fileUploader._handleAllFilesUploaded()\r\n        }\r\n    }, {\r\n        key: \"_onLoadedHandler\",\r\n        value: function(file, e) {\r\n            var args = {\r\n                file: file.value,\r\n                event: e,\r\n                request: file.request,\r\n                message: this.fileUploader.option(\"uploadedMessage\")\r\n            };\r\n            file._isLoaded = true;\r\n            this.fileUploader._uploadedAction(args);\r\n            this.fileUploader._setStatusMessage(file, args.message);\r\n            this.fileUploader._handleAllFilesUploaded()\r\n        }\r\n    }, {\r\n        key: \"_onProgressHandler\",\r\n        value: function(file, e) {\r\n            if (file) {\r\n                var totalFilesSize = this.fileUploader._getTotalFilesSize();\r\n                var totalLoadedFilesSize = this.fileUploader._getTotalLoadedFilesSize();\r\n                var loadedSize = Math.min(e.loaded, file.value.size);\r\n                var segmentSize = loadedSize - file.loadedSize;\r\n                file.loadedSize = loadedSize;\r\n                this.fileUploader._updateTotalProgress(totalFilesSize, totalLoadedFilesSize + segmentSize);\r\n                this.fileUploader._updateProgressBar(file, this._getLoadedData(loadedSize, e.total, segmentSize, e))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getLoadedData\",\r\n        value: function(loaded, total, currentSegmentSize, event) {\r\n            return {\r\n                loaded: loaded,\r\n                total: total,\r\n                currentSegmentSize: currentSegmentSize\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_extendFormData\",\r\n        value: function(formData) {\r\n            var formDataEntries = this.fileUploader.option(\"uploadCustomData\");\r\n            for (var entryName in formDataEntries) {\r\n                if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) {\r\n                    formData.append(entryName, formDataEntries[entryName])\r\n                }\r\n            }\r\n        }\r\n    }]);\r\n    return FileUploadStrategyBase\r\n}();\r\nvar ChunksFileUploadStrategyBase = function(_FileUploadStrategyBa) {\r\n    _inherits(ChunksFileUploadStrategyBase, _FileUploadStrategyBa);\r\n    var _super2 = _createSuper(ChunksFileUploadStrategyBase);\r\n\r\n    function ChunksFileUploadStrategyBase(fileUploader) {\r\n        var _this15;\r\n        _classCallCheck(this, ChunksFileUploadStrategyBase);\r\n        _this15 = _super2.call(this, fileUploader);\r\n        _this15.chunkSize = _this15.fileUploader.option(\"chunkSize\");\r\n        return _this15\r\n    }\r\n    _createClass(ChunksFileUploadStrategyBase, [{\r\n        key: \"_uploadCore\",\r\n        value: function(file) {\r\n            var realFile = file.value;\r\n            var chunksData = {\r\n                name: realFile.name,\r\n                loadedBytes: 0,\r\n                type: realFile.type,\r\n                blobReader: new FileBlobReader(realFile, this.chunkSize),\r\n                guid: new _guid.default,\r\n                fileSize: realFile.size,\r\n                count: Math.ceil(realFile.size / this.chunkSize),\r\n                customData: {}\r\n            };\r\n            file.chunksData = chunksData;\r\n            this._sendChunk(file, chunksData)\r\n        }\r\n    }, {\r\n        key: \"_sendChunk\",\r\n        value: function(file, chunksData) {\r\n            var _this16 = this;\r\n            var chunk = chunksData.blobReader.read();\r\n            chunksData.currentChunk = chunk;\r\n            if (chunk) {\r\n                this._sendChunkCore(file, chunksData, chunk).done(function() {\r\n                    if (file.isAborted) {\r\n                        return\r\n                    }\r\n                    chunksData.loadedBytes += chunk.blob.size;\r\n                    file.onProgress.fire({\r\n                        loaded: chunksData.loadedBytes,\r\n                        total: file.value.size\r\n                    });\r\n                    if (chunk.isCompleted) {\r\n                        file.onLoad.fire()\r\n                    }\r\n                    setTimeout(function() {\r\n                        return _this16._sendChunk(file, chunksData)\r\n                    })\r\n                }).fail(function(error) {\r\n                    if (_this16._shouldHandleError(error)) {\r\n                        _this16._handleFileError(file, error)\r\n                    }\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_sendChunkCore\",\r\n        value: function(file, chunksData, chunk) {}\r\n    }, {\r\n        key: \"_shouldHandleError\",\r\n        value: function(error) {}\r\n    }, {\r\n        key: \"_tryRaiseStartLoad\",\r\n        value: function(file) {\r\n            if (!file.isStartLoad) {\r\n                file.isStartLoad = true;\r\n                file.onLoadStart.fire()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getEvent\",\r\n        value: function(e) {\r\n            return null\r\n        }\r\n    }, {\r\n        key: \"_createUploadArgument\",\r\n        value: function(file) {\r\n            return this._createChunksInfo(file.chunksData)\r\n        }\r\n    }, {\r\n        key: \"_createChunksInfo\",\r\n        value: function(chunksData) {\r\n            return {\r\n                bytesUploaded: chunksData.loadedBytes,\r\n                chunkCount: chunksData.count,\r\n                customData: chunksData.customData,\r\n                chunkBlob: chunksData.currentChunk.blob,\r\n                chunkIndex: chunksData.currentChunk.index\r\n            }\r\n        }\r\n    }]);\r\n    return ChunksFileUploadStrategyBase\r\n}(FileUploadStrategyBase);\r\nvar DefaultChunksFileUploadStrategy = function(_ChunksFileUploadStra) {\r\n    _inherits(DefaultChunksFileUploadStrategy, _ChunksFileUploadStra);\r\n    var _super3 = _createSuper(DefaultChunksFileUploadStrategy);\r\n\r\n    function DefaultChunksFileUploadStrategy() {\r\n        _classCallCheck(this, DefaultChunksFileUploadStrategy);\r\n        return _super3.apply(this, arguments)\r\n    }\r\n    _createClass(DefaultChunksFileUploadStrategy, [{\r\n        key: \"_sendChunkCore\",\r\n        value: function(file, chunksData, chunk) {\r\n            var _this17 = this;\r\n            return _ajax.default.sendRequest({\r\n                url: this.fileUploader.option(\"uploadUrl\"),\r\n                method: this.fileUploader.option(\"uploadMethod\"),\r\n                headers: this.fileUploader.option(\"uploadHeaders\"),\r\n                beforeSend: function(xhr) {\r\n                    return _this17._beforeSend(xhr, file)\r\n                },\r\n                upload: {\r\n                    onloadstart: function() {\r\n                        return _this17._tryRaiseStartLoad(file)\r\n                    },\r\n                    onabort: function() {\r\n                        return file.onAbort.fire()\r\n                    }\r\n                },\r\n                data: this._createFormData({\r\n                    fileName: chunksData.name,\r\n                    blobName: this.fileUploader.option(\"name\"),\r\n                    blob: chunk.blob,\r\n                    index: chunk.index,\r\n                    count: chunksData.count,\r\n                    type: chunksData.type,\r\n                    guid: chunksData.guid,\r\n                    size: chunksData.fileSize\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_shouldHandleError\",\r\n        value: function(e) {\r\n            return this._isStatusError(e.status)\r\n        }\r\n    }, {\r\n        key: \"_createFormData\",\r\n        value: function(options) {\r\n            var formData = new window.FormData;\r\n            formData.append(options.blobName, options.blob);\r\n            formData.append(FILEUPLOADER_CHUNK_META_DATA_NAME, JSON.stringify({\r\n                FileName: options.fileName,\r\n                Index: options.index,\r\n                TotalCount: options.count,\r\n                FileSize: options.size,\r\n                FileType: options.type,\r\n                FileGuid: options.guid\r\n            }));\r\n            this._extendFormData(formData);\r\n            return formData\r\n        }\r\n    }]);\r\n    return DefaultChunksFileUploadStrategy\r\n}(ChunksFileUploadStrategyBase);\r\nvar CustomChunksFileUploadStrategy = function(_ChunksFileUploadStra2) {\r\n    _inherits(CustomChunksFileUploadStrategy, _ChunksFileUploadStra2);\r\n    var _super4 = _createSuper(CustomChunksFileUploadStrategy);\r\n\r\n    function CustomChunksFileUploadStrategy() {\r\n        _classCallCheck(this, CustomChunksFileUploadStrategy);\r\n        return _super4.apply(this, arguments)\r\n    }\r\n    _createClass(CustomChunksFileUploadStrategy, [{\r\n        key: \"_sendChunkCore\",\r\n        value: function(file, chunksData) {\r\n            this._tryRaiseStartLoad(file);\r\n            var chunksInfo = this._createChunksInfo(chunksData);\r\n            var uploadChunk = this.fileUploader.option(\"uploadChunk\");\r\n            try {\r\n                var result = uploadChunk(file.value, chunksInfo);\r\n                return (0, _deferred.fromPromise)(result)\r\n            } catch (error) {\r\n                return (new _deferred.Deferred).reject(error).promise()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_shouldHandleError\",\r\n        value: function(e) {\r\n            return true\r\n        }\r\n    }]);\r\n    return CustomChunksFileUploadStrategy\r\n}(ChunksFileUploadStrategyBase);\r\nvar WholeFileUploadStrategyBase = function(_FileUploadStrategyBa2) {\r\n    _inherits(WholeFileUploadStrategyBase, _FileUploadStrategyBa2);\r\n    var _super5 = _createSuper(WholeFileUploadStrategyBase);\r\n\r\n    function WholeFileUploadStrategyBase() {\r\n        _classCallCheck(this, WholeFileUploadStrategyBase);\r\n        return _super5.apply(this, arguments)\r\n    }\r\n    _createClass(WholeFileUploadStrategyBase, [{\r\n        key: \"_uploadCore\",\r\n        value: function(file) {\r\n            var _this18 = this;\r\n            file.loadedSize = 0;\r\n            this._uploadFile(file).done(function() {\r\n                if (!file.isAborted) {\r\n                    file.onLoad.fire()\r\n                }\r\n            }).fail(function(error) {\r\n                if (_this18._shouldHandleError(file, error)) {\r\n                    _this18._handleFileError(file, error)\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_uploadFile\",\r\n        value: function(file) {}\r\n    }, {\r\n        key: \"_shouldHandleError\",\r\n        value: function(file, e) {}\r\n    }, {\r\n        key: \"_handleProgress\",\r\n        value: function(file, e) {\r\n            if (file._isError) {\r\n                return\r\n            }\r\n            file._isProgressStarted = true;\r\n            file.onProgress.fire(e)\r\n        }\r\n    }, {\r\n        key: \"_getLoadedData\",\r\n        value: function(loaded, total, segmentSize, event) {\r\n            var result = _get(_getPrototypeOf(WholeFileUploadStrategyBase.prototype), \"_getLoadedData\", this).call(this, loaded, total, segmentSize, event);\r\n            result.event = event;\r\n            return result\r\n        }\r\n    }]);\r\n    return WholeFileUploadStrategyBase\r\n}(FileUploadStrategyBase);\r\nvar DefaultWholeFileUploadStrategy = function(_WholeFileUploadStrat) {\r\n    _inherits(DefaultWholeFileUploadStrategy, _WholeFileUploadStrat);\r\n    var _super6 = _createSuper(DefaultWholeFileUploadStrategy);\r\n\r\n    function DefaultWholeFileUploadStrategy() {\r\n        _classCallCheck(this, DefaultWholeFileUploadStrategy);\r\n        return _super6.apply(this, arguments)\r\n    }\r\n    _createClass(DefaultWholeFileUploadStrategy, [{\r\n        key: \"_uploadFile\",\r\n        value: function(file) {\r\n            var _this19 = this;\r\n            return _ajax.default.sendRequest({\r\n                url: this.fileUploader.option(\"uploadUrl\"),\r\n                method: this.fileUploader.option(\"uploadMethod\"),\r\n                headers: this.fileUploader.option(\"uploadHeaders\"),\r\n                beforeSend: function(xhr) {\r\n                    return _this19._beforeSend(xhr, file)\r\n                },\r\n                upload: {\r\n                    onprogress: function(e) {\r\n                        return _this19._handleProgress(file, e)\r\n                    },\r\n                    onloadstart: function() {\r\n                        return file.onLoadStart.fire()\r\n                    },\r\n                    onabort: function() {\r\n                        return file.onAbort.fire()\r\n                    }\r\n                },\r\n                data: this._createFormData(this.fileUploader.option(\"name\"), file.value)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_shouldHandleError\",\r\n        value: function(file, e) {\r\n            return this._isStatusError(e.status) || !file._isProgressStarted\r\n        }\r\n    }, {\r\n        key: \"_createFormData\",\r\n        value: function(fieldName, fieldValue) {\r\n            var formData = new window.FormData;\r\n            formData.append(fieldName, fieldValue, fieldValue.name);\r\n            this._extendFormData(formData);\r\n            return formData\r\n        }\r\n    }]);\r\n    return DefaultWholeFileUploadStrategy\r\n}(WholeFileUploadStrategyBase);\r\nvar CustomWholeFileUploadStrategy = function(_WholeFileUploadStrat2) {\r\n    _inherits(CustomWholeFileUploadStrategy, _WholeFileUploadStrat2);\r\n    var _super7 = _createSuper(CustomWholeFileUploadStrategy);\r\n\r\n    function CustomWholeFileUploadStrategy() {\r\n        _classCallCheck(this, CustomWholeFileUploadStrategy);\r\n        return _super7.apply(this, arguments)\r\n    }\r\n    _createClass(CustomWholeFileUploadStrategy, [{\r\n        key: \"_uploadFile\",\r\n        value: function(file) {\r\n            var _this20 = this;\r\n            file.onLoadStart.fire();\r\n            var progressCallback = function(loadedBytes) {\r\n                var arg = {\r\n                    loaded: loadedBytes,\r\n                    total: file.size\r\n                };\r\n                _this20._handleProgress(file, arg)\r\n            };\r\n            var uploadFile = this.fileUploader.option(\"uploadFile\");\r\n            try {\r\n                var result = uploadFile(file.value, progressCallback);\r\n                return (0, _deferred.fromPromise)(result)\r\n            } catch (error) {\r\n                return (new _deferred.Deferred).reject(error).promise()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_shouldHandleError\",\r\n        value: function(file, e) {\r\n            return true\r\n        }\r\n    }]);\r\n    return CustomWholeFileUploadStrategy\r\n}(WholeFileUploadStrategyBase);\r\n(0, _component_registrator.default)(\"dxFileUploader\", FileUploader);\r\nvar _default = FileUploader;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.modules.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _window = require(\"../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar WIDGET_WITH_LEGACY_CONTAINER_NAME = \"dxDataGrid\";\r\nvar ModuleItem = _class.default.inherit({\r\n    _endUpdateCore: function() {},\r\n    ctor: function(component) {\r\n        var that = this;\r\n        that._updateLockCount = 0;\r\n        that.component = component;\r\n        that._actions = {};\r\n        that._actionConfigs = {};\r\n        (0, _iterator.each)(this.callbackNames() || [], function(index, name) {\r\n            var flags = that.callbackFlags(name) || {};\r\n            flags.unique = true, flags.syncStrategy = true;\r\n            that[this] = (0, _callbacks.default)(flags)\r\n        })\r\n    },\r\n    init: function() {},\r\n    callbackNames: function() {},\r\n    callbackFlags: function() {},\r\n    publicMethods: function() {},\r\n    beginUpdate: function() {\r\n        this._updateLockCount++\r\n    },\r\n    endUpdate: function() {\r\n        if (this._updateLockCount > 0) {\r\n            this._updateLockCount--;\r\n            if (!this._updateLockCount) {\r\n                this._endUpdateCore()\r\n            }\r\n        }\r\n    },\r\n    option: function(name) {\r\n        var component = this.component;\r\n        var optionCache = component._optionCache;\r\n        if (1 === arguments.length && optionCache) {\r\n            if (!(name in optionCache)) {\r\n                optionCache[name] = component.option(name)\r\n            }\r\n            return optionCache[name]\r\n        }\r\n        return component.option.apply(component, arguments)\r\n    },\r\n    _silentOption: function(name, value) {\r\n        var component = this.component;\r\n        var optionCache = component._optionCache;\r\n        if (optionCache) {\r\n            optionCache[name] = value\r\n        }\r\n        return component._setOptionWithoutOptionChange(name, value)\r\n    },\r\n    localize: function(name) {\r\n        var optionCache = this.component._optionCache;\r\n        if (optionCache) {\r\n            if (!(name in optionCache)) {\r\n                optionCache[name] = _message.default.format(name)\r\n            }\r\n            return optionCache[name]\r\n        }\r\n        return _message.default.format(name)\r\n    },\r\n    on: function() {\r\n        return this.component.on.apply(this.component, arguments)\r\n    },\r\n    off: function() {\r\n        return this.component.off.apply(this.component, arguments)\r\n    },\r\n    optionChanged: function(args) {\r\n        if (args.name in this._actions) {\r\n            this.createAction(args.name, this._actionConfigs[args.name]);\r\n            args.handled = true\r\n        }\r\n    },\r\n    getAction: function(actionName) {\r\n        return this._actions[actionName]\r\n    },\r\n    setAria: function(name, value, $target) {\r\n        var target = $target.get(0);\r\n        var prefix = \"role\" !== name && \"id\" !== name ? \"aria-\" : \"\";\r\n        if (target.setAttribute) {\r\n            target.setAttribute(prefix + name, value)\r\n        } else {\r\n            $target.attr(prefix + name, value)\r\n        }\r\n    },\r\n    _createComponent: function() {\r\n        return this.component._createComponent.apply(this.component, arguments)\r\n    },\r\n    getController: function(name) {\r\n        return this.component._controllers[name]\r\n    },\r\n    createAction: function(actionName, config) {\r\n        if ((0, _type.isFunction)(actionName)) {\r\n            var action = this.component._createAction(actionName.bind(this), config);\r\n            return function(e) {\r\n                action({\r\n                    event: e\r\n                })\r\n            }\r\n        } else {\r\n            this._actions[actionName] = this.component._createActionByOption(actionName, config);\r\n            this._actionConfigs[actionName] = config\r\n        }\r\n    },\r\n    executeAction: function(actionName, options) {\r\n        var action = this._actions[actionName];\r\n        return action && action(options)\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(that.callbackNames() || [], function() {\r\n            that[this].empty()\r\n        })\r\n    },\r\n    addWidgetPrefix: function(className) {\r\n        var componentName = this.component.NAME;\r\n        return \"dx-\" + componentName.slice(2).toLowerCase() + (className ? \"-\" + className : \"\")\r\n    },\r\n    getWidgetContainerClass: function() {\r\n        var containerName = this.component.NAME === WIDGET_WITH_LEGACY_CONTAINER_NAME ? null : \"container\";\r\n        return this.addWidgetPrefix(containerName)\r\n    }\r\n});\r\nvar Controller = ModuleItem;\r\nvar ViewController = Controller.inherit({\r\n    getView: function(name) {\r\n        return this.component._views[name]\r\n    },\r\n    getViews: function() {\r\n        return this.component._views\r\n    }\r\n});\r\nvar View = ModuleItem.inherit({\r\n    _isReady: function() {\r\n        return this.component.isReady()\r\n    },\r\n    _endUpdateCore: function() {\r\n        this.callBase();\r\n        if (!this._isReady() && this._requireReady) {\r\n            this._requireRender = false;\r\n            this.component._requireResize = false\r\n        }\r\n        if (this._requireRender) {\r\n            this._requireRender = false;\r\n            this.render(this._$parent)\r\n        }\r\n    },\r\n    _invalidate: function(requireResize, requireReady) {\r\n        this._requireRender = true;\r\n        this.component._requireResize = (0, _window.hasWindow)() && (this.component._requireResize || requireResize);\r\n        this._requireReady = this._requireReady || requireReady\r\n    },\r\n    _renderCore: function() {},\r\n    _resizeCore: function() {},\r\n    _afterRender: function() {},\r\n    _parentElement: function() {\r\n        return this._$parent\r\n    },\r\n    ctor: function(component) {\r\n        this.callBase(component);\r\n        this.renderCompleted = (0, _callbacks.default)();\r\n        this.resizeCompleted = (0, _callbacks.default)()\r\n    },\r\n    element: function() {\r\n        return this._$element\r\n    },\r\n    getElementHeight: function() {\r\n        var $element = this.element();\r\n        if (!$element) {\r\n            return 0\r\n        }\r\n        var marginTop = parseFloat($element.css(\"marginTop\")) || 0;\r\n        var marginBottom = parseFloat($element.css(\"marginBottom\")) || 0;\r\n        var offsetHeight = $element.get(0).offsetHeight;\r\n        return offsetHeight + marginTop + marginBottom\r\n    },\r\n    isVisible: function() {\r\n        return true\r\n    },\r\n    getTemplate: function(name) {\r\n        return this.component._getTemplate(name)\r\n    },\r\n    render: function($parent, options) {\r\n        var $element = this._$element;\r\n        var isVisible = this.isVisible();\r\n        if (!$element && !$parent) {\r\n            return\r\n        }\r\n        this._requireReady = false;\r\n        if (!$element) {\r\n            $element = this._$element = (0, _renderer.default)(\"<div>\").appendTo($parent);\r\n            this._$parent = $parent\r\n        }\r\n        $element.toggleClass(\"dx-hidden\", !isVisible);\r\n        if (isVisible) {\r\n            this.component._optionCache = {};\r\n            this._renderCore(options);\r\n            this.component._optionCache = void 0;\r\n            this._afterRender($parent);\r\n            this.renderCompleted.fire(options)\r\n        }\r\n    },\r\n    resize: function() {\r\n        this.isResizing = true;\r\n        this._resizeCore();\r\n        this.resizeCompleted.fire();\r\n        this.isResizing = false\r\n    },\r\n    focus: function() {\r\n        _events_engine.default.trigger(this.element(), \"focus\")\r\n    }\r\n});\r\nvar MODULES_ORDER_MAX_INDEX = 1e6;\r\nvar processModules = function(that, componentClass) {\r\n    var modules = componentClass.modules;\r\n    var modulesOrder = componentClass.modulesOrder;\r\n    var controllerTypes = componentClass.controllerTypes || {};\r\n    var viewTypes = componentClass.viewTypes || {};\r\n    if (!componentClass.controllerTypes) {\r\n        if (modulesOrder) {\r\n            modules.sort(function(module1, module2) {\r\n                var orderIndex1 = (0, _array.inArray)(module1.name, modulesOrder);\r\n                var orderIndex2 = (0, _array.inArray)(module2.name, modulesOrder);\r\n                if (orderIndex1 < 0) {\r\n                    orderIndex1 = MODULES_ORDER_MAX_INDEX\r\n                }\r\n                if (orderIndex2 < 0) {\r\n                    orderIndex2 = MODULES_ORDER_MAX_INDEX\r\n                }\r\n                return orderIndex1 - orderIndex2\r\n            })\r\n        }(0, _iterator.each)(modules, function() {\r\n            var controllers = this.controllers;\r\n            var moduleName = this.name;\r\n            var views = this.views;\r\n            controllers && (0, _iterator.each)(controllers, function(name, type) {\r\n                if (controllerTypes[name]) {\r\n                    throw _ui.default.Error(\"E1001\", moduleName, name)\r\n                } else {\r\n                    if (!(type && type.subclassOf && type.subclassOf(Controller))) {\r\n                        type.subclassOf(Controller);\r\n                        throw _ui.default.Error(\"E1002\", moduleName, name)\r\n                    }\r\n                }\r\n                controllerTypes[name] = type\r\n            });\r\n            views && (0, _iterator.each)(views, function(name, type) {\r\n                if (viewTypes[name]) {\r\n                    throw _ui.default.Error(\"E1003\", moduleName, name)\r\n                } else {\r\n                    if (!(type && type.subclassOf && type.subclassOf(View))) {\r\n                        throw _ui.default.Error(\"E1004\", moduleName, name)\r\n                    }\r\n                }\r\n                viewTypes[name] = type\r\n            })\r\n        });\r\n        (0, _iterator.each)(modules, function() {\r\n            var extenders = this.extenders;\r\n            if (extenders) {\r\n                extenders.controllers && (0, _iterator.each)(extenders.controllers, function(name, extender) {\r\n                    if (controllerTypes[name]) {\r\n                        controllerTypes[name] = controllerTypes[name].inherit(extender)\r\n                    }\r\n                });\r\n                extenders.views && (0, _iterator.each)(extenders.views, function(name, extender) {\r\n                    if (viewTypes[name]) {\r\n                        viewTypes[name] = viewTypes[name].inherit(extender)\r\n                    }\r\n                })\r\n            }\r\n        });\r\n        componentClass.controllerTypes = controllerTypes;\r\n        componentClass.viewTypes = viewTypes\r\n    }\r\n    var registerPublicMethods = function(that, name, moduleItem) {\r\n        var publicMethods = moduleItem.publicMethods();\r\n        if (publicMethods) {\r\n            (0, _iterator.each)(publicMethods, function(index, methodName) {\r\n                if (moduleItem[methodName]) {\r\n                    if (!that[methodName]) {\r\n                        that[methodName] = function() {\r\n                            return moduleItem[methodName].apply(moduleItem, arguments)\r\n                        }\r\n                    } else {\r\n                        throw _ui.default.Error(\"E1005\", methodName)\r\n                    }\r\n                } else {\r\n                    throw _ui.default.Error(\"E1006\", name, methodName)\r\n                }\r\n            })\r\n        }\r\n    };\r\n    var createModuleItems = function(moduleTypes) {\r\n        var moduleItems = {};\r\n        (0, _iterator.each)(moduleTypes, function(name, moduleType) {\r\n            var moduleItem = new moduleType(that);\r\n            moduleItem.name = name;\r\n            registerPublicMethods(that, name, moduleItem);\r\n            moduleItems[name] = moduleItem\r\n        });\r\n        return moduleItems\r\n    };\r\n    that._controllers = createModuleItems(controllerTypes);\r\n    that._views = createModuleItems(viewTypes)\r\n};\r\nvar callModuleItemsMethod = function(that, methodName, args) {\r\n    args = args || [];\r\n    if (that._controllers) {\r\n        (0, _iterator.each)(that._controllers, function() {\r\n            this[methodName] && this[methodName].apply(this, args)\r\n        })\r\n    }\r\n    if (that._views) {\r\n        (0, _iterator.each)(that._views, function() {\r\n            this[methodName] && this[methodName].apply(this, args)\r\n        })\r\n    }\r\n};\r\nvar _default = {\r\n    modules: [],\r\n    View: View,\r\n    ViewController: ViewController,\r\n    Controller: Controller,\r\n    registerModule: function(name, module) {\r\n        var modules = this.modules;\r\n        for (var i = 0; i < modules.length; i++) {\r\n            if (modules[i].name === name) {\r\n                return\r\n            }\r\n        }\r\n        module.name = name;\r\n        modules.push(module);\r\n        delete this.controllerTypes;\r\n        delete this.viewTypes\r\n    },\r\n    registerModulesOrder: function(moduleNames) {\r\n        this.modulesOrder = moduleNames\r\n    },\r\n    unregisterModule: function(name) {\r\n        this.modules = (0, _common.grep)(this.modules, function(module) {\r\n            return module.name !== name\r\n        });\r\n        delete this.controllerTypes;\r\n        delete this.viewTypes\r\n    },\r\n    processModules: processModules,\r\n    callModuleItemsMethod: callModuleItemsMethod\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/formats/link.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar ExtLink = {};\r\nif (_devextremeQuill.default) {\r\n    var Link = _devextremeQuill.default.import(\"formats/link\");\r\n    ExtLink = function(_Link) {\r\n        _inherits(ExtLink, _Link);\r\n        var _super = _createSuper(ExtLink);\r\n\r\n        function ExtLink() {\r\n            _classCallCheck(this, ExtLink);\r\n            return _super.apply(this, arguments)\r\n        }\r\n        _createClass(ExtLink, [{\r\n            key: \"formats\",\r\n            value: function formats() {\r\n                var formats = _get(_getPrototypeOf(ExtLink.prototype), \"formats\", this).call(this);\r\n                var _ExtLink$formats = ExtLink.formats(this.domNode),\r\n                    href = _ExtLink$formats.href,\r\n                    target = _ExtLink$formats.target;\r\n                formats.link = href;\r\n                formats.target = target;\r\n                return formats\r\n            }\r\n        }, {\r\n            key: \"format\",\r\n            value: function(name, value) {\r\n                if (\"link\" === name && (0, _type.isObject)(value)) {\r\n                    if (value.text) {\r\n                        this.domNode.innerText = value.text\r\n                    }\r\n                    if (value.target) {\r\n                        this.domNode.setAttribute(\"target\", \"_blank\")\r\n                    } else {\r\n                        this.domNode.removeAttribute(\"target\")\r\n                    }\r\n                    this.domNode.setAttribute(\"href\", value.href)\r\n                } else {\r\n                    _get(_getPrototypeOf(ExtLink.prototype), \"format\", this).call(this, name, value)\r\n                }\r\n            }\r\n        }], [{\r\n            key: \"create\",\r\n            value: function(data) {\r\n                var HREF = data && data.href || data;\r\n                var node = _get(_getPrototypeOf(ExtLink), \"create\", this).call(this, HREF);\r\n                if ((0, _type.isObject)(data)) {\r\n                    if (data.text) {\r\n                        node.innerText = data.text\r\n                    }\r\n                    if (!data.target) {\r\n                        node.removeAttribute(\"target\")\r\n                    }\r\n                }\r\n                return node\r\n            }\r\n        }, {\r\n            key: \"formats\",\r\n            value: function(domNode) {\r\n                return {\r\n                    href: domNode.getAttribute(\"href\"),\r\n                    target: domNode.getAttribute(\"target\")\r\n                }\r\n            }\r\n        }, {\r\n            key: \"value\",\r\n            value: function(domNode) {\r\n                return {\r\n                    href: domNode.getAttribute(\"href\"),\r\n                    text: domNode.innerText,\r\n                    target: !!domNode.getAttribute(\"target\")\r\n                }\r\n            }\r\n        }]);\r\n        return ExtLink\r\n    }(Link)\r\n}\r\nvar _default = ExtLink;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.calendar_with_time.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _uiDate_boxStrategy = _interopRequireDefault(require(\"./ui.date_box.strategy.calendar\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.time_view\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _box = _interopRequireDefault(require(\"../box\"));\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.date_utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar SHRINK_VIEW_SCREEN_WIDTH = 573;\r\nvar DATEBOX_ADAPTIVITY_MODE_CLASS = \"dx-datebox-adaptivity-mode\";\r\nvar CalendarWithTimeStrategy = _uiDate_boxStrategy.default.inherit({\r\n    NAME: \"CalendarWithTime\",\r\n    getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            applyValueMode: \"useButtons\",\r\n            buttonsLocation: \"bottom after\",\r\n            \"dropDownOptions.showTitle\": false\r\n        })\r\n    },\r\n    getDisplayFormat: function(displayFormat) {\r\n        return displayFormat || \"shortdateshorttime\"\r\n    },\r\n    _is24HourFormat: function() {\r\n        return _date.default.is24HourFormat(this.getDisplayFormat(this.dateBox.option(\"displayFormat\")))\r\n    },\r\n    _renderWidget: function() {\r\n        this.callBase();\r\n        this._timeView = this.dateBox._createComponent((0, _renderer.default)(\"<div>\"), _ui.default, {\r\n            value: this.dateBoxValue(),\r\n            _showClock: !this._isShrinkView(),\r\n            use24HourFormat: this._is24HourFormat(),\r\n            onValueChanged: this._valueChangedHandler.bind(this),\r\n            stylingMode: this.dateBox.option(\"stylingMode\")\r\n        });\r\n        this._timeView.registerKeyHandler(\"escape\", this._escapeHandler.bind(this))\r\n    },\r\n    renderOpenedState: function() {\r\n        this.callBase();\r\n        var popup = this._getPopup();\r\n        if (popup) {\r\n            popup._wrapper().toggleClass(DATEBOX_ADAPTIVITY_MODE_CLASS, this._isSmallScreen())\r\n        }\r\n        clearTimeout(this._repaintTimer);\r\n        this._repaintTimer = setTimeout(function() {\r\n            this._getPopup() && this._getPopup().repaint()\r\n        }.bind(this), 0)\r\n    },\r\n    isAdaptivityChanged: function() {\r\n        var isAdaptiveMode = this._isShrinkView();\r\n        var currentAdaptiveMode = this._currentAdaptiveMode;\r\n        if (isAdaptiveMode !== currentAdaptiveMode) {\r\n            this._currentAdaptiveMode = isAdaptiveMode;\r\n            return void 0 !== currentAdaptiveMode\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _updateValue: function(preventDefaultValue) {\r\n        var date = this.dateBoxValue();\r\n        if (!date && !preventDefaultValue) {\r\n            date = new Date;\r\n            _ui2.default.normalizeTime(date)\r\n        }\r\n        this.callBase();\r\n        if (this._timeView) {\r\n            date && this._timeView.option(\"value\", date);\r\n            this._timeView.option(\"use24HourFormat\", this._is24HourFormat())\r\n        }\r\n    },\r\n    _isSmallScreen: function() {\r\n        return (0, _renderer.default)(window).width() <= SHRINK_VIEW_SCREEN_WIDTH\r\n    },\r\n    _isShrinkView: function() {\r\n        return !this.dateBox.option(\"showAnalogClock\") || this.dateBox.option(\"adaptivityEnabled\") && this._isSmallScreen()\r\n    },\r\n    _getBoxItems: function() {\r\n        var items = [{\r\n            ratio: 0,\r\n            shrink: 0,\r\n            baseSize: \"auto\",\r\n            name: \"calendar\"\r\n        }];\r\n        if (!this._isShrinkView()) {\r\n            items.push({\r\n                ratio: 0,\r\n                shrink: 0,\r\n                baseSize: \"auto\",\r\n                name: \"time\"\r\n            })\r\n        }\r\n        return items\r\n    },\r\n    renderPopupContent: function() {\r\n        this.callBase();\r\n        this._currentAdaptiveMode = this._isShrinkView();\r\n        var $popupContent = this._getPopup().$content();\r\n        this._box = this.dateBox._createComponent((0, _renderer.default)(\"<div>\").appendTo($popupContent), _box.default, {\r\n            direction: \"row\",\r\n            crossAlign: \"start\",\r\n            items: this._getBoxItems(),\r\n            itemTemplate: function(data) {\r\n                var $container = (0, _renderer.default)(\"<div>\");\r\n                switch (data.name) {\r\n                    case \"calendar\":\r\n                        $container.append(this._widget.$element());\r\n                        if (this._isShrinkView()) {\r\n                            $container.append(this._timeView.$element())\r\n                        }\r\n                        break;\r\n                    case \"time\":\r\n                        $container.append(this._timeView.$element())\r\n                }\r\n                return $container\r\n            }.bind(this)\r\n        });\r\n        this._attachTabHandler()\r\n    },\r\n    popupConfig: function(_popupConfig) {\r\n        var calendarPopupConfig = this.callBase(_popupConfig);\r\n        var result = (0, _extend.extend)(calendarPopupConfig, {\r\n            width: \"auto\",\r\n            onShowing: function() {\r\n                if (\"fallback\" === this._box.option(\"_layoutStrategy\")) {\r\n                    var clockMinWidth = this._getPopup().$content().find(\".dx-timeview-clock\").css(\"minWidth\");\r\n                    this._timeView.$element().css(\"maxWidth\", clockMinWidth)\r\n                }\r\n            }.bind(this)\r\n        });\r\n        return result\r\n    },\r\n    getFirstPopupElement: function() {\r\n        return this._timeView._hourBox.$element().find(\"input\")\r\n    },\r\n    _attachTabHandler: function() {\r\n        var dateBox = this.dateBox;\r\n        var handler = function(e) {\r\n            if (e.shiftKey) {\r\n                e.preventDefault();\r\n                dateBox.focus()\r\n            }\r\n        };\r\n        this._timeView._hourBox.registerKeyHandler(\"tab\", handler)\r\n    },\r\n    _preventFocusOnPopup: function(e) {\r\n        if (!(0, _renderer.default)(e.target).hasClass(\"dx-texteditor-input\")) {\r\n            this.callBase.apply(this, arguments);\r\n            if (!this.dateBox._hasFocusClass()) {\r\n                this.dateBox.focus()\r\n            }\r\n        }\r\n    },\r\n    getValue: function() {\r\n        var date = this._widget.option(\"value\");\r\n        var time = this._timeView.option(\"value\");\r\n        date = date ? new Date(date) : new Date;\r\n        date.setHours(time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\r\n        return date\r\n    },\r\n    dispose: function() {\r\n        clearTimeout(this._removeMinWidthTimer);\r\n        clearTimeout(this._repaintTimer);\r\n        this.callBase()\r\n    }\r\n});\r\nvar _default = CalendarWithTimeStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/dateAdapter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar DateAdapterCore = function() {\r\n    function DateAdapterCore(source) {\r\n        _classCallCheck(this, DateAdapterCore);\r\n        this._source = new Date(source.getTime ? source.getTime() : source)\r\n    }\r\n    _createClass(DateAdapterCore, [{\r\n        key: \"result\",\r\n        value: function() {\r\n            return this._source\r\n        }\r\n    }, {\r\n        key: \"getTimezoneOffset\",\r\n        value: function() {\r\n            var format = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;\r\n            var value = this._source.getTimezoneOffset();\r\n            if (\"minute\" === format) {\r\n                return value * toMs(\"minute\")\r\n            }\r\n            return value\r\n        }\r\n    }, {\r\n        key: \"getTime\",\r\n        value: function() {\r\n            return this._source.getTime()\r\n        }\r\n    }, {\r\n        key: \"setTime\",\r\n        value: function(value) {\r\n            this._source.setTime(value);\r\n            return this\r\n        }\r\n    }, {\r\n        key: \"addTime\",\r\n        value: function(value) {\r\n            this._source.setTime(this._source.getTime() + value);\r\n            return this\r\n        }\r\n    }, {\r\n        key: \"setMinutes\",\r\n        value: function(value) {\r\n            this._source.setMinutes(value);\r\n            return this\r\n        }\r\n    }, {\r\n        key: \"addMinutes\",\r\n        value: function(value) {\r\n            this._source.setMinutes(this._source.getMinutes() + value);\r\n            return this\r\n        }\r\n    }, {\r\n        key: \"subtractMinutes\",\r\n        value: function(value) {\r\n            this._source.setMinutes(this._source.getMinutes() - value);\r\n            return this\r\n        }\r\n    }, {\r\n        key: \"source\",\r\n        get: function() {\r\n            return this._source\r\n        }\r\n    }]);\r\n    return DateAdapterCore\r\n}();\r\nvar DateAdapter = function(date) {\r\n    return new DateAdapterCore(date)\r\n};\r\nvar _default = DateAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/view_data_provider.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar ViewDataGenerator = function() {\r\n    function ViewDataGenerator(workspace) {\r\n        _classCallCheck(this, ViewDataGenerator);\r\n        this.workspace = workspace\r\n    }\r\n    _createClass(ViewDataGenerator, [{\r\n        key: \"_getCompleteViewDataMap\",\r\n        value: function(options) {\r\n            var rowCount = options.nonVirtualRowCount,\r\n                cellCount = options.cellCount,\r\n                verticalGroupCount = options.verticalGroupCount;\r\n            var viewDataMap = [];\r\n            for (var groupIndex = 0; groupIndex < verticalGroupCount; groupIndex += 1) {\r\n                var allDayPanelData = this._generateAllDayPanelData(options, groupIndex, rowCount, cellCount);\r\n                var viewCellsData = this._generateViewCellsData(options, rowCount, 0, rowCount * groupIndex);\r\n                allDayPanelData && viewDataMap.push(allDayPanelData);\r\n                viewDataMap.push.apply(viewDataMap, _toConsumableArray(viewCellsData))\r\n            }\r\n            return viewDataMap\r\n        }\r\n    }, {\r\n        key: \"_generateViewDataMap\",\r\n        value: function(completeViewDataMap, options) {\r\n            var startRowIndex = options.startRowIndex,\r\n                rowCount = options.rowCount;\r\n            var isVerticalGrouping = this.workspace._isVerticalGroupedWorkSpace();\r\n            var showAllDayPanel = this.workspace._isShowAllDayPanel();\r\n            var indexDifference = isVerticalGrouping || !showAllDayPanel ? 0 : 1;\r\n            var correctedStartRowIndex = startRowIndex + indexDifference;\r\n            return completeViewDataMap.slice(correctedStartRowIndex, correctedStartRowIndex + rowCount).map(function(cellsRow, rowIndex) {\r\n                return cellsRow.map(function(cellData, cellIndex) {\r\n                    return {\r\n                        cellData: cellData,\r\n                        position: {\r\n                            rowIndex: rowIndex,\r\n                            cellIndex: cellIndex\r\n                        }\r\n                    }\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getViewDataFromMap\",\r\n        value: function(viewDataMap, completeViewDataMap, options) {\r\n            var topVirtualRowHeight = options.topVirtualRowHeight,\r\n                bottomVirtualRowHeight = options.bottomVirtualRowHeight,\r\n                cellCountInGroupRow = options.cellCountInGroupRow;\r\n            var isGroupedAllDayPanel = this.workspace.isGroupedAllDayPanel();\r\n            var _viewDataMap$reduce = viewDataMap.reduce(function(_ref, cellsRow) {\r\n                    var previousGroupIndex = _ref.previousGroupIndex,\r\n                        previousGroupedData = _ref.previousGroupedData;\r\n                    var cellDataRow = cellsRow.map(function(_ref2) {\r\n                        var cellData = _ref2.cellData;\r\n                        return cellData\r\n                    });\r\n                    var firstCell = cellDataRow[0];\r\n                    var isAllDayRow = firstCell.allDay;\r\n                    var currentGroupIndex = firstCell.groupIndex;\r\n                    if (currentGroupIndex !== previousGroupIndex) {\r\n                        previousGroupedData.push({\r\n                            dateTable: [],\r\n                            isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n                            groupIndex: currentGroupIndex\r\n                        })\r\n                    }\r\n                    if (isAllDayRow) {\r\n                        previousGroupedData[previousGroupedData.length - 1].allDayPanel = cellDataRow\r\n                    } else {\r\n                        previousGroupedData[previousGroupedData.length - 1].dateTable.push(cellDataRow)\r\n                    }\r\n                    return {\r\n                        previousGroupedData: previousGroupedData,\r\n                        previousGroupIndex: currentGroupIndex\r\n                    }\r\n                }, {\r\n                    previousGroupIndex: -1,\r\n                    previousGroupedData: []\r\n                }),\r\n                groupedData = _viewDataMap$reduce.previousGroupedData;\r\n            var isVirtualScrolling = this.workspace.isVirtualScrolling();\r\n            var isVerticalGrouping = this.workspace._isVerticalGroupedWorkSpace();\r\n            var showAllDayPanel = this.workspace._isShowAllDayPanel();\r\n            if (!isVerticalGrouping && showAllDayPanel) {\r\n                groupedData[0].allDayPanel = completeViewDataMap[0]\r\n            }\r\n            return {\r\n                groupedData: groupedData,\r\n                isVirtual: isVirtualScrolling,\r\n                topVirtualRowHeight: topVirtualRowHeight,\r\n                bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n                cellCountInGroupRow: cellCountInGroupRow\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_generateViewCellsData\",\r\n        value: function(options, renderRowCount, startRowIndex, rowOffset) {\r\n            var cellCount = options.cellCount,\r\n                cellDataGetters = options.cellDataGetters,\r\n                rowCountInGroup = options.rowCountInGroup;\r\n            var viewCellsData = [];\r\n            for (var i = 0; i < renderRowCount; ++i) {\r\n                var rowIndex = startRowIndex + rowOffset + i;\r\n                var rowIndexInGroup = rowIndex % rowCountInGroup;\r\n                viewCellsData.push(this._generateCellsRow(options, cellDataGetters, rowIndex, cellCount, rowIndexInGroup))\r\n            }\r\n            return viewCellsData\r\n        }\r\n    }, {\r\n        key: \"_generateAllDayPanelData\",\r\n        value: function(options, groupIndex, rowCount, cellCount) {\r\n            var workSpace = this.workspace;\r\n            if (!workSpace._isShowAllDayPanel()) {\r\n                return null\r\n            }\r\n            var rowIndex = Math.max(groupIndex * rowCount, 0);\r\n            return this._generateCellsRow(options, [workSpace._getAllDayCellData.bind(workSpace)], rowIndex, cellCount, 0, groupIndex)\r\n        }\r\n    }, {\r\n        key: \"_generateCellsRow\",\r\n        value: function(options, cellDataGetters, rowIndex, cellCount, rowIndexInGroup, groupIndex) {\r\n            var _this = this;\r\n            var cellsRow = [];\r\n            var horizontalGroupCount = options.horizontalGroupCount,\r\n                groupOrientation = options.groupOrientation,\r\n                rowCountInGroup = options.rowCountInGroup,\r\n                cellCountInGroupRow = options.cellCountInGroupRow,\r\n                groupCount = options.groupCount;\r\n            var _loop = function(columnIndex) {\r\n                var cellDataValue = cellDataGetters.reduce(function(data, getter) {\r\n                    return _objectSpread(_objectSpread({}, data), getter(void 0, rowIndex, columnIndex, groupIndex).value)\r\n                }, {});\r\n                cellDataValue.index = _this._calculateCellIndex(horizontalGroupCount, groupOrientation, _this._workspace.isGroupedByDate(), rowIndexInGroup, columnIndex, cellCount);\r\n                cellDataValue.isFirstGroupCell = _this._isFirstGroupCell(rowIndex, columnIndex, rowCountInGroup, cellCountInGroupRow, groupCount);\r\n                cellDataValue.isLastGroupCell = _this._isLastGroupCell(rowIndex, columnIndex, rowCountInGroup, cellCountInGroupRow, groupCount);\r\n                cellDataValue.key = _this._getKeyByRowAndColumn(rowIndex, columnIndex, cellCount);\r\n                cellsRow.push(cellDataValue)\r\n            };\r\n            for (var columnIndex = 0; columnIndex < cellCount; ++columnIndex) {\r\n                _loop(columnIndex)\r\n            }\r\n            return cellsRow\r\n        }\r\n    }, {\r\n        key: \"_calculateCellIndex\",\r\n        value: function(horizontalGroupCount, groupOrientation, isGroupedByDate, rowIndex, columnIndex, columnsNumber) {\r\n            var groupCount = horizontalGroupCount || 1;\r\n            var index = rowIndex * columnsNumber + columnIndex;\r\n            var columnsInGroup = columnsNumber / groupCount;\r\n            if (\"horizontal\" === groupOrientation) {\r\n                var columnIndexInCurrentGroup = columnIndex % columnsInGroup;\r\n                if (isGroupedByDate) {\r\n                    columnIndexInCurrentGroup = Math.floor(columnIndex / groupCount)\r\n                }\r\n                index = rowIndex * columnsInGroup + columnIndexInCurrentGroup\r\n            }\r\n            return index\r\n        }\r\n    }, {\r\n        key: \"_getKeyByRowAndColumn\",\r\n        value: function(rowIndex, columnIndex, cellCount) {\r\n            return rowIndex * cellCount + columnIndex\r\n        }\r\n    }, {\r\n        key: \"generateGroupedDataMap\",\r\n        value: function(viewDataMap) {\r\n            var _viewDataMap$reduce2 = viewDataMap.reduce(function(previousOptions, cellsRow) {\r\n                    var previousGroupedDataMap = previousOptions.previousGroupedDataMap,\r\n                        previousRowIndex = previousOptions.previousRowIndex,\r\n                        previousGroupIndex = previousOptions.previousGroupIndex;\r\n                    var currentGroupIndex = cellsRow[0].cellData.groupIndex;\r\n                    var currentRowIndex = currentGroupIndex === previousGroupIndex ? previousRowIndex + 1 : 0;\r\n                    cellsRow.forEach(function(cell) {\r\n                        var groupIndex = cell.cellData.groupIndex;\r\n                        if (!previousGroupedDataMap[groupIndex]) {\r\n                            previousGroupedDataMap[groupIndex] = []\r\n                        }\r\n                        if (!previousGroupedDataMap[groupIndex][currentRowIndex]) {\r\n                            previousGroupedDataMap[groupIndex][currentRowIndex] = []\r\n                        }\r\n                        previousGroupedDataMap[groupIndex][currentRowIndex].push(cell)\r\n                    });\r\n                    return {\r\n                        previousGroupedDataMap: previousGroupedDataMap,\r\n                        previousRowIndex: currentRowIndex,\r\n                        previousGroupIndex: currentGroupIndex\r\n                    }\r\n                }, {\r\n                    previousGroupedDataMap: [],\r\n                    previousRowIndex: -1,\r\n                    previousGroupIndex: -1\r\n                }),\r\n                groupedDataMap = _viewDataMap$reduce2.previousGroupedDataMap;\r\n            return groupedDataMap\r\n        }\r\n    }, {\r\n        key: \"_isFirstGroupCell\",\r\n        value: function(rowIndex, columnIndex, singleGroupRowCount, singleGroupColumnCount, groupCount) {\r\n            if (this.workspace.isGroupedByDate()) {\r\n                return columnIndex % groupCount === 0\r\n            }\r\n            if (this.workspace._isHorizontalGroupedWorkSpace() || 0 === groupCount) {\r\n                return columnIndex % singleGroupColumnCount === 0\r\n            }\r\n            return rowIndex % singleGroupRowCount === 0\r\n        }\r\n    }, {\r\n        key: \"_isLastGroupCell\",\r\n        value: function(rowIndex, columnIndex, singleGroupRowCount, singleGroupColumnCount, groupCount) {\r\n            if (this.workspace.isGroupedByDate()) {\r\n                return (columnIndex + 1) % groupCount === 0\r\n            }\r\n            if (this.workspace._isHorizontalGroupedWorkSpace() || 0 === groupCount) {\r\n                return (columnIndex + 1) % singleGroupColumnCount === 0\r\n            }\r\n            return (rowIndex + 1) % singleGroupRowCount === 0\r\n        }\r\n    }, {\r\n        key: \"workspace\",\r\n        get: function() {\r\n            return this._workspace\r\n        },\r\n        set: function(value) {\r\n            this._workspace = value\r\n        }\r\n    }]);\r\n    return ViewDataGenerator\r\n}();\r\nvar ViewDataProvider = function() {\r\n    function ViewDataProvider(workspace) {\r\n        _classCallCheck(this, ViewDataProvider);\r\n        this._viewDataGenerator = null;\r\n        this._viewData = [];\r\n        this._completeViewDataMap = [];\r\n        this._completeGroupedViewDataMap = [];\r\n        this._viewDataMap = [];\r\n        this._groupedDataMap = [];\r\n        this._workspace = workspace\r\n    }\r\n    _createClass(ViewDataProvider, [{\r\n        key: \"update\",\r\n        value: function(isGenerateNewViewData) {\r\n            var viewDataGenerator = this.viewDataGenerator,\r\n                _workspace = this._workspace;\r\n            var renderOptions = _workspace.generateRenderOptions();\r\n            if (isGenerateNewViewData) {\r\n                this.completeViewDataMap = viewDataGenerator._getCompleteViewDataMap(renderOptions)\r\n            }\r\n            this.viewDataMap = viewDataGenerator._generateViewDataMap(this.completeViewDataMap, renderOptions);\r\n            this.viewData = viewDataGenerator._getViewDataFromMap(this.viewDataMap, this.completeViewDataMap, renderOptions);\r\n            this.groupedDataMap = viewDataGenerator.generateGroupedDataMap(this.viewDataMap)\r\n        }\r\n    }, {\r\n        key: \"getStartDate\",\r\n        value: function() {\r\n            var groupedData = this.viewData.groupedData;\r\n            var dateTable = groupedData[0].dateTable;\r\n            return dateTable[0][0].startDate\r\n        }\r\n    }, {\r\n        key: \"getGroupStartDate\",\r\n        value: function(groupIndex) {\r\n            var _this$getGroupData = this.getGroupData(groupIndex),\r\n                dateTable = _this$getGroupData.dateTable;\r\n            return dateTable[0][0].startDate\r\n        }\r\n    }, {\r\n        key: \"getGroupEndDate\",\r\n        value: function(groupIndex) {\r\n            var _this$getGroupData2 = this.getGroupData(groupIndex),\r\n                dateTable = _this$getGroupData2.dateTable;\r\n            var lastRowIndex = dateTable.length - 1;\r\n            var lastCellIndex = dateTable[lastRowIndex].length - 1;\r\n            return dateTable[lastRowIndex][lastCellIndex].endDate\r\n        }\r\n    }, {\r\n        key: \"findGroupCellStartDate\",\r\n        value: function(groupIndex, startDate, endDate, isAllDay) {\r\n            var _this$getGroupData3 = this.getGroupData(groupIndex),\r\n                dateTable = _this$getGroupData3.dateTable;\r\n            if (isAllDay) {\r\n                var groupStartDate = this.getGroupStartDate(groupIndex);\r\n                return groupStartDate > startDate ? groupStartDate : startDate\r\n            }\r\n            for (var i = 0; i < dateTable[0].length; ++i) {\r\n                var cell = dateTable[0][i];\r\n                var lastRowIndex = dateTable.length - 1;\r\n                if (_date.default.sameDate(cell.startDate, startDate)) {\r\n                    var _lastCell;\r\n                    var lastCell = dateTable[lastRowIndex][i];\r\n                    if (lastCell.endDate <= startDate) {\r\n                        if (endDate.getDate() > startDate.getDate()) {\r\n                            cell = dateTable[0][i + 1];\r\n                            lastCell = dateTable[lastRowIndex][i + 1]\r\n                        }\r\n                    }\r\n                    if ((null === (_lastCell = lastCell) || void 0 === _lastCell ? void 0 : _lastCell.endDate) > startDate) {\r\n                        return cell.startDate\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getCellsGroup\",\r\n        value: function(groupIndex) {\r\n            var _this$getGroupData4 = this.getGroupData(groupIndex),\r\n                dateTable = _this$getGroupData4.dateTable;\r\n            return dateTable[0][0].groups\r\n        }\r\n    }, {\r\n        key: \"getCellData\",\r\n        value: function(rowIndex, cellIndex, isAllDay) {\r\n            if (isAllDay && !this._workspace._isVerticalGroupedWorkSpace()) {\r\n                return this._viewData.groupedData[0].allDayPanel[cellIndex]\r\n            }\r\n            var cellData = this.viewDataMap[rowIndex][cellIndex].cellData;\r\n            return cellData\r\n        }\r\n    }, {\r\n        key: \"getCellsByGroupIndexAndAllDay\",\r\n        value: function(groupIndex, allDay) {\r\n            var workspace = this._workspace;\r\n            var rowsPerGroup = workspace._getRowCountWithAllDayRows();\r\n            var isVerticalGrouping = workspace._isVerticalGroupedWorkSpace();\r\n            var isShowAllDayPanel = workspace._isShowAllDayPanel();\r\n            var firstRowInGroup = isVerticalGrouping ? groupIndex * rowsPerGroup : 0;\r\n            var lastRowInGroup = isVerticalGrouping ? (groupIndex + 1) * rowsPerGroup - 1 : rowsPerGroup;\r\n            var correctedFirstRow = isShowAllDayPanel && !allDay ? firstRowInGroup + 1 : firstRowInGroup;\r\n            var correctedLastRow = allDay ? correctedFirstRow : lastRowInGroup;\r\n            return this.completeViewDataMap.slice(correctedFirstRow, correctedLastRow + 1).map(function(row) {\r\n                return row.filter(function(_ref3) {\r\n                    var currentGroupIndex = _ref3.groupIndex;\r\n                    return groupIndex === currentGroupIndex\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"findCellPositionInMap\",\r\n        value: function(groupIndex, startDate, isAllDay) {\r\n            var startTime = isAllDay ? _date.default.trimTime(startDate).getTime() : startDate.getTime();\r\n            var isStartTimeInCell = function(cellData) {\r\n                var cellStartTime = cellData.startDate.getTime();\r\n                var cellEndTime = cellData.endDate.getTime();\r\n                return isAllDay ? cellData.allDay && startTime >= cellStartTime && startTime <= cellEndTime : startTime >= cellStartTime && startTime < cellEndTime\r\n            };\r\n            var rows = isAllDay && !this._workspace._isVerticalGroupedWorkSpace() ? [this.completeViewDataMap[0].map(function(cell, index) {\r\n                return {\r\n                    cellData: cell,\r\n                    position: {\r\n                        cellIndex: index,\r\n                        rowIndex: 0\r\n                    }\r\n                }\r\n            })] : this.groupedDataMap[groupIndex] || [];\r\n            for (var rowIndex = 0; rowIndex < rows.length; ++rowIndex) {\r\n                var row = rows[rowIndex];\r\n                for (var cellIndex = 0; cellIndex < row.length; ++cellIndex) {\r\n                    var cell = row[cellIndex];\r\n                    var cellData = cell.cellData;\r\n                    if (cellData.groupIndex === groupIndex) {\r\n                        if (isStartTimeInCell(cellData)) {\r\n                            return cell.position\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return\r\n        }\r\n    }, {\r\n        key: \"getGroupIndices\",\r\n        value: function() {\r\n            var groupedData = this.viewData.groupedData;\r\n            return groupedData.map(function(_ref4) {\r\n                var groupIndex = _ref4.groupIndex;\r\n                return groupIndex\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getLastGroupRow\",\r\n        value: function(groupIndex) {\r\n            var group = this.groupedDataMap[groupIndex];\r\n            var lastIndex = group.length - 1;\r\n            return group[lastIndex]\r\n        }\r\n    }, {\r\n        key: \"getLasGroupCellPosition\",\r\n        value: function(groupIndex) {\r\n            var groupRow = this._getLastGroupRow(groupIndex);\r\n            return groupRow[0].position\r\n        }\r\n    }, {\r\n        key: \"getLasGroupCellIndex\",\r\n        value: function(groupIndex) {\r\n            var group = this.groupedDataMap[groupIndex];\r\n            return group.length - 1\r\n        }\r\n    }, {\r\n        key: \"getRowCountInGroup\",\r\n        value: function(groupIndex) {\r\n            var groupRow = this._getLastGroupRow(groupIndex);\r\n            var cellAmount = groupRow.length;\r\n            var lastCellData = groupRow[cellAmount - 1].cellData;\r\n            var lastCellIndex = lastCellData.index;\r\n            return (lastCellIndex + 1) / groupRow.length\r\n        }\r\n    }, {\r\n        key: \"getGroupData\",\r\n        value: function(groupIndex) {\r\n            var groupedData = this.viewData.groupedData;\r\n            return groupedData.filter(function(item) {\r\n                return item.groupIndex === groupIndex\r\n            })[0]\r\n        }\r\n    }, {\r\n        key: \"findGlobalCellPosition\",\r\n        value: function(date) {\r\n            var groupIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n            var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n            var completeViewDataMap = this.completeViewDataMap,\r\n                workspace = this._workspace;\r\n            var showAllDayPanel = workspace._isShowAllDayPanel();\r\n            var isVerticalGroupOrientation = workspace._isVerticalGroupedWorkSpace();\r\n            for (var rowIndex = 0; rowIndex < completeViewDataMap.length; rowIndex += 1) {\r\n                var currentRow = completeViewDataMap[rowIndex];\r\n                for (var columnIndex = 0; columnIndex < currentRow.length; columnIndex += 1) {\r\n                    var cellData = currentRow[columnIndex];\r\n                    var currentStartDate = cellData.startDate,\r\n                        currentEndDate = cellData.endDate,\r\n                        currentGroupIndex = cellData.groupIndex,\r\n                        currentAllDay = cellData.allDay;\r\n                    if (groupIndex === currentGroupIndex && allDay === currentAllDay && this._compareDatesAndAllDay(date, currentStartDate, currentEndDate, allDay)) {\r\n                        return {\r\n                            position: {\r\n                                columnIndex: columnIndex,\r\n                                rowIndex: showAllDayPanel && !isVerticalGroupOrientation ? rowIndex - 1 : rowIndex\r\n                            },\r\n                            cellData: cellData\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_compareDatesAndAllDay\",\r\n        value: function(date, cellStartDate, cellEndDate, allDay) {\r\n            var time = date.getTime();\r\n            var trimmedTime = _date.default.trimTime(date).getTime();\r\n            var cellStartTime = cellStartDate.getTime();\r\n            var cellEndTime = cellEndDate.getTime();\r\n            return !allDay && time >= cellStartTime && time < cellEndTime || allDay && trimmedTime === cellStartTime\r\n        }\r\n    }, {\r\n        key: \"viewDataGenerator\",\r\n        get: function() {\r\n            if (!this._viewDataGenerator) {\r\n                this._viewDataGenerator = new ViewDataGenerator(this._workspace)\r\n            }\r\n            return this._viewDataGenerator\r\n        }\r\n    }, {\r\n        key: \"completeViewDataMap\",\r\n        get: function() {\r\n            return this._completeViewDataMap\r\n        },\r\n        set: function(value) {\r\n            this._completeViewDataMap = value\r\n        }\r\n    }, {\r\n        key: \"completeGroupedViewDataMap\",\r\n        get: function() {\r\n            return this._completeGroupedViewDataMap\r\n        },\r\n        set: function(value) {\r\n            this._completeGroupedViewDataMap = value\r\n        }\r\n    }, {\r\n        key: \"viewData\",\r\n        get: function() {\r\n            return this._viewData\r\n        },\r\n        set: function(value) {\r\n            this._viewData = value\r\n        }\r\n    }, {\r\n        key: \"viewDataMap\",\r\n        get: function() {\r\n            return this._viewDataMap\r\n        },\r\n        set: function(value) {\r\n            this._viewDataMap = value\r\n        }\r\n    }, {\r\n        key: \"groupedDataMap\",\r\n        get: function() {\r\n            return this._groupedDataMap\r\n        },\r\n        set: function(value) {\r\n            this._groupedDataMap = value\r\n        }\r\n    }]);\r\n    return ViewDataProvider\r\n}();\r\nexports.default = ViewDataProvider;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_columns.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _uiGrid_core = require(\"./ui.grid_core.virtual_columns_core\");\r\nvar DEFAULT_COLUMN_WIDTH = 50;\r\nvar VirtualScrollingRowsViewExtender = {\r\n    _resizeCore: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._columnsController.resize()\r\n    },\r\n    _handleScroll: function(e) {\r\n        var that = this;\r\n        var scrollable = this.getScrollable();\r\n        var left = e.scrollOffset.left;\r\n        that.callBase.apply(that, arguments);\r\n        if (that.option(\"rtlEnabled\") && scrollable) {\r\n            left = scrollable.$content().width() - scrollable.$element().width() - left\r\n        }\r\n        that._columnsController.setScrollPosition(left)\r\n    }\r\n};\r\nvar HeaderFooterViewExtender = {\r\n    _renderCore: function() {\r\n        var that = this;\r\n        var scrollLeft = that._scrollLeft;\r\n        that.callBase.apply(that, arguments);\r\n        if (that._columnsController.isVirtualMode() && scrollLeft >= 0) {\r\n            that._scrollLeft = 0;\r\n            that.scrollTo({\r\n                left: scrollLeft\r\n            })\r\n        }\r\n    }\r\n};\r\nvar ColumnsControllerExtender = function() {\r\n    var getWidths = function(columns) {\r\n        return columns.map(function(column) {\r\n            return column.visibleWidth || parseFloat(column.width) || DEFAULT_COLUMN_WIDTH\r\n        })\r\n    };\r\n    var members = {\r\n        init: function() {\r\n            var that = this;\r\n            that.callBase();\r\n            that._beginPageIndex = 0;\r\n            that._endPageIndex = 0;\r\n            that._position = 0;\r\n            that._virtualVisibleColumns = {}\r\n        },\r\n        resetColumnsCache: function() {\r\n            this.callBase();\r\n            this._virtualVisibleColumns = {}\r\n        },\r\n        getBeginPageIndex: function(position) {\r\n            var visibleColumns = this.getVisibleColumns(void 0, true);\r\n            var widths = getWidths(visibleColumns);\r\n            var currentPosition = 0;\r\n            for (var index = 0; index < widths.length; index++) {\r\n                if (currentPosition >= position) {\r\n                    return Math.floor(index / this.getColumnPageSize())\r\n                }\r\n                currentPosition += widths[index]\r\n            }\r\n            return 0\r\n        },\r\n        getTotalWidth: function() {\r\n            var width = this.option(\"width\");\r\n            if (\"number\" === typeof width) {\r\n                return width\r\n            }\r\n            return this.getController(\"resizing\")._lastWidth || this.component.$element().outerWidth()\r\n        },\r\n        getEndPageIndex: function(position) {\r\n            var visibleColumns = this.getVisibleColumns(void 0, true);\r\n            var widths = getWidths(visibleColumns);\r\n            var currentPosition = 0;\r\n            position += this.getTotalWidth();\r\n            for (var index = 0; index < widths.length; index++) {\r\n                if (currentPosition >= position) {\r\n                    return Math.ceil(index / this.getColumnPageSize())\r\n                }\r\n                currentPosition += widths[index]\r\n            }\r\n            return Math.ceil(widths.length / this.getColumnPageSize())\r\n        },\r\n        getColumnPageSize: function() {\r\n            return this.option(\"scrolling.columnPageSize\")\r\n        },\r\n        _fireColumnsChanged: function() {\r\n            var date = new Date;\r\n            this.columnsChanged.fire({\r\n                optionNames: {\r\n                    all: true,\r\n                    length: 1\r\n                },\r\n                changeTypes: {\r\n                    columns: true,\r\n                    length: 1\r\n                }\r\n            });\r\n            this._renderTime = new Date - date\r\n        },\r\n        setScrollPosition: function(position) {\r\n            var that = this;\r\n            var renderingThreshold = that.option(\"scrolling.columnRenderingThreshold\");\r\n            if (that._renderTime > renderingThreshold) {\r\n                clearTimeout(that._changedTimeout);\r\n                that._changedTimeout = setTimeout(function() {\r\n                    that._setScrollPositionCore(position)\r\n                }, that.option(\"scrolling.timeout\"))\r\n            } else {\r\n                that._setScrollPositionCore(position)\r\n            }\r\n        },\r\n        isVirtualMode: function() {\r\n            return (0, _window.hasWindow)() && \"virtual\" === this.option(\"scrolling.columnRenderingMode\")\r\n        },\r\n        resize: function() {\r\n            this._setScrollPositionCore(this._position)\r\n        },\r\n        _setScrollPositionCore: function(position) {\r\n            var that = this;\r\n            if (that.isVirtualMode()) {\r\n                var beginPageIndex = that.getBeginPageIndex(position);\r\n                var endPageIndex = that.getEndPageIndex(position);\r\n                var needColumnsChanged = position < that._position ? that._beginPageIndex > beginPageIndex : that._endPageIndex < endPageIndex;\r\n                that._position = position;\r\n                if (needColumnsChanged) {\r\n                    that._beginPageIndex = beginPageIndex;\r\n                    that._endPageIndex = endPageIndex;\r\n                    that._fireColumnsChanged()\r\n                }\r\n            }\r\n        },\r\n        getFixedColumns: function(rowIndex, isBase) {\r\n            var fixedColumns = this.callBase(rowIndex);\r\n            if (this.isVirtualMode() && !isBase && fixedColumns.length) {\r\n                var transparentColumnIndex = fixedColumns.map(function(c) {\r\n                    return c.command\r\n                }).indexOf(\"transparent\");\r\n                fixedColumns[transparentColumnIndex].colspan = this.getVisibleColumns().length - this.callBase().length + 1;\r\n                return fixedColumns\r\n            }\r\n            return fixedColumns\r\n        },\r\n        getVisibleColumns: function(rowIndex, isBase) {\r\n            if (isBase || !this.isVirtualMode()) {\r\n                return this.callBase(rowIndex)\r\n            }\r\n            if (!this._beginPageIndex && !this._endPageIndex) {\r\n                this._beginPageIndex = this.getBeginPageIndex(this._position);\r\n                this._endPageIndex = this.getEndPageIndex(this._position)\r\n            }\r\n            var beginPageIndex = this._beginPageIndex;\r\n            var endPageIndex = this._endPageIndex;\r\n            var visibleColumnsHash = rowIndex + \"-\" + beginPageIndex + \"-\" + endPageIndex;\r\n            if (this._virtualVisibleColumns[visibleColumnsHash]) {\r\n                return this._virtualVisibleColumns[visibleColumnsHash]\r\n            }\r\n            var visibleColumns = this.callBase();\r\n            var rowCount = this.getRowCount();\r\n            var pageSize = this.getColumnPageSize();\r\n            var startIndex = beginPageIndex * pageSize;\r\n            var endIndex = endPageIndex * pageSize;\r\n            var fixedColumns = this.getFixedColumns(void 0, true);\r\n            var transparentColumnIndex = fixedColumns.map(function(c) {\r\n                return c.command\r\n            }).indexOf(\"transparent\");\r\n            var beginFixedColumnCount = fixedColumns.length ? transparentColumnIndex : 0;\r\n            var beginFixedColumns = visibleColumns.slice(0, beginFixedColumnCount);\r\n            var beginColumns = visibleColumns.slice(beginFixedColumnCount, startIndex);\r\n            var beginWidth = getWidths(beginColumns).reduce(function(a, b) {\r\n                return a + b\r\n            }, 0);\r\n            if (!beginWidth) {\r\n                startIndex = 0\r\n            }\r\n            var endFixedColumnCount = fixedColumns.length ? fixedColumns.length - transparentColumnIndex - 1 : 0;\r\n            var endFixedColumns = visibleColumns.slice(visibleColumns.length - endFixedColumnCount);\r\n            var endColumns = visibleColumns.slice(endIndex, visibleColumns.length - endFixedColumnCount);\r\n            var endWidth = getWidths(endColumns).reduce(function(a, b) {\r\n                return a + b\r\n            }, 0);\r\n            if (!endWidth) {\r\n                endIndex = visibleColumns.length\r\n            }\r\n            if (rowCount > 1 && \"number\" === typeof rowIndex) {\r\n                var columnsInfo = [];\r\n                for (var i = 0; i < rowCount; i++) {\r\n                    columnsInfo.push(this.callBase(i))\r\n                }\r\n                beginFixedColumns = (0, _uiGrid_core.createColumnsInfo)(columnsInfo, 0, beginFixedColumns.length)[rowIndex] || [];\r\n                endFixedColumns = (0, _uiGrid_core.createColumnsInfo)(columnsInfo, visibleColumns.length - endFixedColumns.length, visibleColumns.length)[rowIndex] || [];\r\n                visibleColumns = (0, _uiGrid_core.createColumnsInfo)(columnsInfo, startIndex, endIndex)[rowIndex] || []\r\n            } else {\r\n                visibleColumns = visibleColumns.slice(startIndex, endIndex)\r\n            }\r\n            if (beginWidth) {\r\n                visibleColumns.unshift({\r\n                    command: \"virtual\",\r\n                    width: beginWidth\r\n                });\r\n                visibleColumns = beginFixedColumns.concat(visibleColumns)\r\n            }\r\n            if (endWidth) {\r\n                visibleColumns.push({\r\n                    command: \"virtual\",\r\n                    width: endWidth\r\n                });\r\n                visibleColumns = visibleColumns.concat(endFixedColumns)\r\n            }\r\n            this._virtualVisibleColumns[visibleColumnsHash] = visibleColumns;\r\n            return visibleColumns\r\n        },\r\n        getColumnIndexOffset: function() {\r\n            var offset = 0;\r\n            if (this._beginPageIndex > 0) {\r\n                var fixedColumns = this.getFixedColumns();\r\n                var transparentColumnIndex = fixedColumns.map(function(c) {\r\n                    return c.command\r\n                }).indexOf(\"transparent\");\r\n                var leftFixedColumnCount = transparentColumnIndex >= 0 ? transparentColumnIndex : 0;\r\n                offset = this._beginPageIndex * this.getColumnPageSize() - leftFixedColumnCount - 1\r\n            }\r\n            return offset > 0 ? offset : 0\r\n        },\r\n        dispose: function() {\r\n            clearTimeout(this._changedTimeout);\r\n            this.callBase.apply(this, arguments)\r\n        }\r\n    };\r\n    return members\r\n}();\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            scrolling: {\r\n                columnRenderingMode: \"standard\",\r\n                columnPageSize: 5,\r\n                columnRenderingThreshold: 300\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            columns: ColumnsControllerExtender\r\n        },\r\n        views: {\r\n            columnHeadersView: HeaderFooterViewExtender,\r\n            footerView: HeaderFooterViewExtender,\r\n            rowsView: VirtualScrollingRowsViewExtender\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.focus.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ROW_FOCUSED_CLASS = \"dx-row-focused\";\r\nvar FOCUSED_ROW_SELECTOR = \".dx-row.\" + ROW_FOCUSED_CLASS;\r\nvar TABLE_POSTFIX_CLASS = \"table\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FocusController = _uiGrid_core.default.ViewController.inherit(function() {\r\n    return {\r\n        init: function() {\r\n            this._dataController = this.getController(\"data\");\r\n            this._keyboardController = this.getController(\"keyboardNavigation\");\r\n            this.component._optionsByReference.focusedRowKey = true\r\n        },\r\n        optionChanged: function(args) {\r\n            if (\"focusedRowIndex\" === args.name) {\r\n                var focusedRowKey = this.option(\"focusedRowKey\");\r\n                this._focusRowByIndex(args.value);\r\n                this._triggerFocusedRowChangedIfNeed(focusedRowKey, args.value);\r\n                args.handled = true\r\n            } else {\r\n                if (\"focusedRowKey\" === args.name) {\r\n                    var focusedRowIndex = this.option(\"focusedRowIndex\");\r\n                    this._focusRowByKey(args.value);\r\n                    this._triggerFocusedRowChangedIfNeed(args.value, focusedRowIndex);\r\n                    args.handled = true\r\n                } else {\r\n                    if (\"focusedColumnIndex\" === args.name) {\r\n                        args.handled = true\r\n                    } else {\r\n                        if (\"focusedRowEnabled\" === args.name) {\r\n                            args.handled = true\r\n                        } else {\r\n                            if (\"autoNavigateToFocusedRow\" === args.name) {\r\n                                args.handled = true\r\n                            } else {\r\n                                this.callBase(args)\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        _triggerFocusedRowChangedIfNeed: function(focusedRowKey, focusedRowIndex) {\r\n            var focusedRowIndexByKey = this.getFocusedRowIndexByKey(focusedRowKey);\r\n            if (focusedRowIndex === focusedRowIndexByKey) {\r\n                var rowIndex = this._dataController.getRowIndexByKey(focusedRowKey);\r\n                if (rowIndex >= 0) {\r\n                    var $rowElement = (0, _renderer.default)(this.getView(\"rowsView\").getRowElement(rowIndex));\r\n                    this.getController(\"keyboardNavigation\")._fireFocusedRowChanged($rowElement, focusedRowIndex)\r\n                }\r\n            }\r\n        },\r\n        isAutoNavigateToFocusedRow: function() {\r\n            return \"infinite\" !== this.option(\"scrolling.mode\") && this.option(\"autoNavigateToFocusedRow\")\r\n        },\r\n        _focusRowByIndex: function(index) {\r\n            if (!this.option(\"focusedRowEnabled\")) {\r\n                return\r\n            }\r\n            index = void 0 !== index ? index : this.option(\"focusedRowIndex\");\r\n            if (index < 0) {\r\n                if (this.isAutoNavigateToFocusedRow()) {\r\n                    this._resetFocusedRow()\r\n                }\r\n            } else {\r\n                this._focusRowByIndexCore(index)\r\n            }\r\n        },\r\n        _focusRowByIndexCore: function(index) {\r\n            var _this = this;\r\n            var dataController = this.getController(\"data\");\r\n            var pageSize = dataController.pageSize();\r\n            var setKeyByIndex = function() {\r\n                if (_this._isValidFocusedRowIndex(index)) {\r\n                    var visibleIndex = index - dataController.getRowIndexOffset();\r\n                    var lastItemIndex = dataController._getLastItemIndex();\r\n                    var rowIndex = Math.min(visibleIndex, lastItemIndex);\r\n                    var focusedRowKey = dataController.getKeyByRowIndex(rowIndex);\r\n                    if ((0, _type.isDefined)(focusedRowKey) && !_this.isRowFocused(focusedRowKey)) {\r\n                        _this.option(\"focusedRowKey\", focusedRowKey)\r\n                    }\r\n                }\r\n            };\r\n            if (pageSize >= 0) {\r\n                if (!this._isLocalRowIndex(index)) {\r\n                    var pageIndex = Math.floor(index / dataController.pageSize());\r\n                    (0, _deferred.when)(dataController.pageIndex(pageIndex), dataController.waitReady()).done(function() {\r\n                        setKeyByIndex()\r\n                    })\r\n                } else {\r\n                    setKeyByIndex()\r\n                }\r\n            }\r\n        },\r\n        _isLocalRowIndex: function(index) {\r\n            var dataController = this.getController(\"data\");\r\n            var isVirtualScrolling = this.getController(\"keyboardNavigation\")._isVirtualScrolling();\r\n            if (isVirtualScrolling) {\r\n                var pageIndex = Math.floor(index / dataController.pageSize());\r\n                var virtualItems = dataController.virtualItemsCount();\r\n                var virtualItemsBegin = virtualItems ? virtualItems.begin : -1;\r\n                var visibleRowsCount = dataController.getVisibleRows().length + dataController.getRowIndexOffset();\r\n                var visiblePagesCount = Math.ceil(visibleRowsCount / dataController.pageSize());\r\n                return virtualItemsBegin <= index && visiblePagesCount > pageIndex\r\n            }\r\n            return true\r\n        },\r\n        _setFocusedRowKeyByIndex: function(index) {\r\n            var dataController = this.getController(\"data\");\r\n            if (this._isValidFocusedRowIndex(index)) {\r\n                var rowIndex = Math.min(index - dataController.getRowIndexOffset(), dataController.items().length - 1);\r\n                var focusedRowKey = dataController.getKeyByRowIndex(rowIndex);\r\n                if ((0, _type.isDefined)(focusedRowKey) && !this.isRowFocused(focusedRowKey)) {\r\n                    this.option(\"focusedRowKey\", focusedRowKey)\r\n                }\r\n            }\r\n        },\r\n        _focusRowByKey: function(key) {\r\n            if (!(0, _type.isDefined)(key)) {\r\n                this._resetFocusedRow()\r\n            } else {\r\n                this._navigateToRow(key, true)\r\n            }\r\n        },\r\n        _resetFocusedRow: function() {\r\n            var focusedRowKey = this.option(\"focusedRowKey\");\r\n            var isFocusedRowKeyDefined = (0, _type.isDefined)(focusedRowKey);\r\n            if (!isFocusedRowKeyDefined && this.option(\"focusedRowIndex\") < 0) {\r\n                return\r\n            }\r\n            var keyboardController = this.getController(\"keyboardNavigation\");\r\n            if (isFocusedRowKeyDefined) {\r\n                this.option(\"focusedRowKey\", void 0)\r\n            }\r\n            keyboardController.setFocusedRowIndex(-1);\r\n            this.option(\"focusedRowIndex\", -1);\r\n            this.getController(\"data\").updateItems({\r\n                changeType: \"updateFocusedRow\",\r\n                focusedRowKey: void 0\r\n            });\r\n            keyboardController._fireFocusedRowChanged(void 0, -1)\r\n        },\r\n        _isValidFocusedRowIndex: function(rowIndex) {\r\n            var dataController = this.getController(\"data\");\r\n            var row = dataController.getVisibleRows()[rowIndex];\r\n            return !row || \"data\" === row.rowType || \"group\" === row.rowType\r\n        },\r\n        publicMethods: function() {\r\n            return [\"navigateToRow\", \"isRowFocused\"]\r\n        },\r\n        navigateToRow: function(key) {\r\n            if (!this.isAutoNavigateToFocusedRow()) {\r\n                this.option(\"focusedRowIndex\", -1)\r\n            }\r\n            this._navigateToRow(key)\r\n        },\r\n        _navigateToRow: function(key, needFocusRow) {\r\n            var that = this;\r\n            var dataController = that.getController(\"data\");\r\n            var isAutoNavigate = that.isAutoNavigateToFocusedRow();\r\n            var d = new _deferred.Deferred;\r\n            if (void 0 === key || !dataController.dataSource()) {\r\n                return d.reject().promise()\r\n            }\r\n            var rowIndexByKey = that.getFocusedRowIndexByKey(key);\r\n            var isPaginate = dataController.getDataSource().paginate();\r\n            if (!isAutoNavigate && needFocusRow || !isPaginate || rowIndexByKey >= 0) {\r\n                that._navigateTo(key, d, needFocusRow)\r\n            } else {\r\n                dataController.getPageIndexByKey(key).done(function(pageIndex) {\r\n                    if (pageIndex < 0) {\r\n                        d.resolve(-1);\r\n                        return\r\n                    }\r\n                    if (pageIndex === dataController.pageIndex()) {\r\n                        dataController.reload().done(function() {\r\n                            if (that.isRowFocused(key)) {\r\n                                d.resolve(that.getFocusedRowIndexByKey(key))\r\n                            } else {\r\n                                that._navigateTo(key, d, needFocusRow)\r\n                            }\r\n                        }).fail(d.reject)\r\n                    } else {\r\n                        dataController.pageIndex(pageIndex).done(function() {\r\n                            that._navigateTo(key, d, needFocusRow)\r\n                        }).fail(d.reject)\r\n                    }\r\n                }).fail(d.reject)\r\n            }\r\n            return d.promise()\r\n        },\r\n        _navigateTo: function(key, deferred, needFocusRow) {\r\n            var visibleRowIndex = this.getController(\"data\").getRowIndexByKey(key);\r\n            var isVirtualRowRenderingMode = \"virtual\" === this.option(\"scrolling.rowRenderingMode\");\r\n            var isAutoNavigate = this.isAutoNavigateToFocusedRow();\r\n            if (isAutoNavigate && isVirtualRowRenderingMode && visibleRowIndex < 0) {\r\n                this._navigateToVirtualRow(key, deferred, needFocusRow)\r\n            } else {\r\n                this._navigateToVisibleRow(key, deferred, needFocusRow)\r\n            }\r\n        },\r\n        _navigateToVisibleRow: function(key, deferred, needFocusRow) {\r\n            if (needFocusRow) {\r\n                this._triggerUpdateFocusedRow(key, deferred)\r\n            } else {\r\n                this.getView(\"rowsView\").scrollToRowElement(key)\r\n            }\r\n        },\r\n        _navigateToVirtualRow: function(key, deferred, needFocusRow) {\r\n            var that = this;\r\n            var dataController = this.getController(\"data\");\r\n            var rowsScrollController = dataController._rowsScrollController;\r\n            var rowIndex = _uiGrid_core2.default.getIndexByKey(key, dataController.items(true));\r\n            var scrollable = that.getView(\"rowsView\").getScrollable();\r\n            if (rowsScrollController && scrollable && rowIndex >= 0) {\r\n                var focusedRowIndex = rowIndex + dataController.getRowIndexOffset() - dataController.getRowIndexDelta();\r\n                var offset = rowsScrollController.getItemOffset(focusedRowIndex);\r\n                if (needFocusRow) {\r\n                    var triggerUpdateFocusedRow = function triggerUpdateFocusedRow() {\r\n                        that.component.off(\"contentReady\", triggerUpdateFocusedRow);\r\n                        that._triggerUpdateFocusedRow(key, deferred)\r\n                    };\r\n                    that.component.on(\"contentReady\", triggerUpdateFocusedRow)\r\n                }\r\n                scrollable.scrollTo({\r\n                    y: offset\r\n                })\r\n            }\r\n        },\r\n        _triggerUpdateFocusedRow: function(key, deferred) {\r\n            var dataController = this.getController(\"data\");\r\n            var focusedRowIndex = this.getFocusedRowIndexByKey(key);\r\n            if (this._isValidFocusedRowIndex(focusedRowIndex)) {\r\n                if (this.option(\"focusedRowEnabled\")) {\r\n                    dataController.updateItems({\r\n                        changeType: \"updateFocusedRow\",\r\n                        focusedRowKey: key\r\n                    })\r\n                } else {\r\n                    this.getView(\"rowsView\").scrollToRowElement(key)\r\n                }\r\n                this.getController(\"keyboardNavigation\").setFocusedRowIndex(focusedRowIndex);\r\n                deferred && deferred.resolve(focusedRowIndex)\r\n            } else {\r\n                deferred && deferred.resolve(-1)\r\n            }\r\n        },\r\n        getFocusedRowIndexByKey: function(key) {\r\n            var dataController = this.getController(\"data\");\r\n            var rowIndex = dataController.getRowIndexByKey(key);\r\n            return rowIndex >= 0 ? rowIndex + dataController.getRowIndexOffset() : -1\r\n        },\r\n        _focusRowByKeyOrIndex: function() {\r\n            var _this2 = this;\r\n            var focusedRowKey = this.option(\"focusedRowKey\");\r\n            var currentFocusedRowIndex = this.option(\"focusedRowIndex\");\r\n            var keyboardController = this.getController(\"keyboardNavigation\");\r\n            var dataController = this.getController(\"data\");\r\n            if ((0, _type.isDefined)(focusedRowKey)) {\r\n                var visibleRowIndex = dataController.getRowIndexByKey(focusedRowKey);\r\n                if (visibleRowIndex >= 0) {\r\n                    if (keyboardController._isVirtualScrolling()) {\r\n                        currentFocusedRowIndex = visibleRowIndex + dataController.getRowIndexOffset()\r\n                    }\r\n                    keyboardController.setFocusedRowIndex(currentFocusedRowIndex);\r\n                    this._triggerUpdateFocusedRow(focusedRowKey)\r\n                } else {\r\n                    this._navigateToRow(focusedRowKey, true).done(function(focusedRowIndex) {\r\n                        if (currentFocusedRowIndex >= 0 && focusedRowIndex < 0) {\r\n                            _this2._focusRowByIndex()\r\n                        }\r\n                    })\r\n                }\r\n            } else {\r\n                if (currentFocusedRowIndex >= 0) {\r\n                    this.getController(\"focus\")._focusRowByIndex(currentFocusedRowIndex)\r\n                }\r\n            }\r\n        },\r\n        isRowFocused: function(key) {\r\n            var focusedRowKey = this.option(\"focusedRowKey\");\r\n            if ((0, _type.isDefined)(focusedRowKey)) {\r\n                return (0, _common.equalByValue)(key, this.option(\"focusedRowKey\"))\r\n            }\r\n        },\r\n        updateFocusedRow: function(change) {\r\n            var that = this;\r\n            var focusedRowIndex = that._dataController.getRowIndexByKey(change.focusedRowKey);\r\n            var rowsView = that.getView(\"rowsView\");\r\n            var $tableElement;\r\n            (0, _iterator.each)(rowsView.getTableElements(), function(index, element) {\r\n                var isMainTable = 0 === index;\r\n                $tableElement = (0, _renderer.default)(element);\r\n                that._clearPreviousFocusedRow($tableElement, focusedRowIndex);\r\n                that._prepareFocusedRow({\r\n                    changedItem: change.items[focusedRowIndex],\r\n                    $tableElement: $tableElement,\r\n                    focusedRowIndex: focusedRowIndex,\r\n                    isMainTable: isMainTable\r\n                })\r\n            })\r\n        },\r\n        _clearPreviousFocusedRow: function($tableElement, focusedRowIndex) {\r\n            var _this3 = this;\r\n            var isNotMasterDetailFocusedRow = function(_, focusedRow) {\r\n                var $focusedRowTable = (0, _renderer.default)(focusedRow).closest(\".\".concat(_this3.addWidgetPrefix(TABLE_POSTFIX_CLASS)));\r\n                return $tableElement.is($focusedRowTable)\r\n            };\r\n            var $prevRowFocusedElement = $tableElement.find(FOCUSED_ROW_SELECTOR).filter(isNotMasterDetailFocusedRow);\r\n            $prevRowFocusedElement.removeClass(ROW_FOCUSED_CLASS).removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabindex\");\r\n            $prevRowFocusedElement.children(\"td\").removeAttr(\"tabindex\");\r\n            if (0 !== focusedRowIndex) {\r\n                var $firstRow = (0, _renderer.default)(this.getView(\"rowsView\").getRowElement(0));\r\n                $firstRow.removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabIndex\")\r\n            }\r\n        },\r\n        _prepareFocusedRow: function(options) {\r\n            var $row;\r\n            var changedItem = options.changedItem;\r\n            if (changedItem && (\"data\" === changedItem.rowType || \"group\" === changedItem.rowType)) {\r\n                var focusedRowIndex = options.focusedRowIndex;\r\n                var $tableElement = options.$tableElement;\r\n                var isMainTable = options.isMainTable;\r\n                var tabIndex = this.option(\"tabindex\") || 0;\r\n                var rowsView = this.getView(\"rowsView\");\r\n                $row = (0, _renderer.default)(rowsView._getRowElements($tableElement).eq(focusedRowIndex));\r\n                $row.addClass(ROW_FOCUSED_CLASS).attr(\"tabindex\", tabIndex);\r\n                if (isMainTable) {\r\n                    rowsView.scrollToElementVertically($row)\r\n                }\r\n            }\r\n            return $row\r\n        }\r\n    }\r\n}());\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            focusedRowEnabled: false,\r\n            autoNavigateToFocusedRow: true,\r\n            focusedRowKey: void 0,\r\n            focusedRowIndex: -1,\r\n            focusedColumnIndex: -1\r\n        }\r\n    },\r\n    controllers: {\r\n        focus: FocusController\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            keyboardNavigation: {\r\n                init: function() {\r\n                    var rowIndex = this.option(\"focusedRowIndex\");\r\n                    var columnIndex = this.option(\"focusedColumnIndex\");\r\n                    this.createAction(\"onFocusedRowChanging\", {\r\n                        excludeValidators: [\"disabled\", \"readOnly\"]\r\n                    });\r\n                    this.createAction(\"onFocusedRowChanged\", {\r\n                        excludeValidators: [\"disabled\", \"readOnly\"]\r\n                    });\r\n                    this.createAction(\"onFocusedCellChanging\", {\r\n                        excludeValidators: [\"disabled\", \"readOnly\"]\r\n                    });\r\n                    this.createAction(\"onFocusedCellChanged\", {\r\n                        excludeValidators: [\"disabled\", \"readOnly\"]\r\n                    });\r\n                    this.callBase();\r\n                    this.setRowFocusType();\r\n                    this._focusedCellPosition = {};\r\n                    if ((0, _type.isDefined)(rowIndex)) {\r\n                        this._focusedCellPosition.rowIndex = this.option(\"focusedRowIndex\")\r\n                    }\r\n                    if ((0, _type.isDefined)(columnIndex)) {\r\n                        this._focusedCellPosition.columnIndex = this.option(\"focusedColumnIndex\")\r\n                    }\r\n                },\r\n                setFocusedRowIndex: function(rowIndex) {\r\n                    var dataController = this.getController(\"data\");\r\n                    this.callBase(rowIndex);\r\n                    var visibleRowIndex = rowIndex - dataController.getRowIndexOffset();\r\n                    var visibleRow = dataController.getVisibleRows()[visibleRowIndex];\r\n                    if (!visibleRow || !visibleRow.isNewRow) {\r\n                        this.option(\"focusedRowIndex\", rowIndex)\r\n                    }\r\n                },\r\n                setFocusedColumnIndex: function(columnIndex) {\r\n                    this.callBase(columnIndex);\r\n                    this.option(\"focusedColumnIndex\", columnIndex)\r\n                },\r\n                _escapeKeyHandler: function(eventArgs, isEditing) {\r\n                    if (isEditing || !this.option(\"focusedRowEnabled\")) {\r\n                        this.callBase(eventArgs, isEditing);\r\n                        return\r\n                    }\r\n                    if (this.isCellFocusType()) {\r\n                        this.setRowFocusType();\r\n                        this._focus(this._getCellElementFromTarget(eventArgs.originalEvent.target), true)\r\n                    }\r\n                },\r\n                _updateFocusedCellPosition: function($cell, direction) {\r\n                    var prevRowIndex = this.option(\"focusedRowIndex\");\r\n                    var prevColumnIndex = this.option(\"focusedColumnIndex\");\r\n                    var position = this.callBase($cell, direction);\r\n                    if (position && position.columnIndex >= 0) {\r\n                        this._fireFocusedCellChanged($cell, prevColumnIndex, prevRowIndex)\r\n                    }\r\n                }\r\n            },\r\n            editorFactory: {\r\n                renderFocusOverlay: function($element, hideBorder) {\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    var focusedRowEnabled = this.option(\"focusedRowEnabled\");\r\n                    var editingController = this.getController(\"editing\");\r\n                    var isRowElement = \"row\" === keyboardController._getElementType($element);\r\n                    var $cell;\r\n                    if (!focusedRowEnabled || !keyboardController.isRowFocusType() || editingController.isEditing()) {\r\n                        this.callBase($element, hideBorder)\r\n                    } else {\r\n                        if (focusedRowEnabled) {\r\n                            if (isRowElement && !$element.hasClass(ROW_FOCUSED_CLASS)) {\r\n                                $cell = keyboardController.getFirstValidCellInRow($element);\r\n                                keyboardController.focus($cell)\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            },\r\n            columns: {\r\n                getSortDataSourceParameters: function(_, sortByKey) {\r\n                    var _this4 = this;\r\n                    var result = this.callBase.apply(this, arguments);\r\n                    var dataController = this.getController(\"data\");\r\n                    var dataSource = dataController._dataSource;\r\n                    var store = dataController.store();\r\n                    var key = store && store.key();\r\n                    var remoteOperations = dataSource && dataSource.remoteOperations() || {};\r\n                    var isLocalOperations = Object.keys(remoteOperations).every(function(operationName) {\r\n                        return !remoteOperations[operationName]\r\n                    });\r\n                    if (key && (this.option(\"focusedRowEnabled\") && false !== this.getController(\"focus\").isAutoNavigateToFocusedRow() || sortByKey)) {\r\n                        key = Array.isArray(key) ? key : [key];\r\n                        var notSortedKeys = key.filter(function(key) {\r\n                            return !_this4.columnOption(key, \"sortOrder\")\r\n                        });\r\n                        if (notSortedKeys.length) {\r\n                            result = result || [];\r\n                            if (isLocalOperations) {\r\n                                result.push({\r\n                                    selector: dataSource.getDataIndexGetter(),\r\n                                    desc: false\r\n                                })\r\n                            } else {\r\n                                notSortedKeys.forEach(function(notSortedKey) {\r\n                                    return result.push({\r\n                                        selector: notSortedKey,\r\n                                        desc: false\r\n                                    })\r\n                                })\r\n                            }\r\n                        }\r\n                    }\r\n                    return result\r\n                }\r\n            },\r\n            data: {\r\n                _applyChange: function(change) {\r\n                    if (change && \"updateFocusedRow\" === change.changeType) {\r\n                        return\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _fireChanged: function(e) {\r\n                    this.callBase(e);\r\n                    if (this.option(\"focusedRowEnabled\") && this._dataSource) {\r\n                        var isPartialUpdate = \"update\" === e.changeType && e.repaintChangesOnly;\r\n                        var isPartialUpdateWithDeleting = isPartialUpdate && e.changeTypes && e.changeTypes.indexOf(\"remove\") >= 0;\r\n                        if (\"refresh\" === e.changeType && e.items.length || isPartialUpdateWithDeleting) {\r\n                            this._updatePageIndexes();\r\n                            this.processUpdateFocusedRow(e)\r\n                        } else {\r\n                            if (\"append\" === e.changeType || \"prepend\" === e.changeType) {\r\n                                this._updatePageIndexes()\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                _updatePageIndexes: function() {\r\n                    var prevRenderingPageIndex = this._lastRenderingPageIndex || 0;\r\n                    var renderingPageIndex = this._rowsScrollController ? this._rowsScrollController.pageIndex() : 0;\r\n                    this._lastRenderingPageIndex = renderingPageIndex;\r\n                    this._isPagingByRendering = renderingPageIndex !== prevRenderingPageIndex\r\n                },\r\n                isPagingByRendering: function() {\r\n                    return this._isPagingByRendering\r\n                },\r\n                processUpdateFocusedRow: function(e) {\r\n                    var operationTypes = e.operationTypes || {};\r\n                    var focusController = this.getController(\"focus\");\r\n                    var reload = operationTypes.reload,\r\n                        fullReload = operationTypes.fullReload;\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    var isVirtualScrolling = keyboardController._isVirtualScrolling();\r\n                    var focusedRowKey = this.option(\"focusedRowKey\");\r\n                    var isAutoNavigate = focusController.isAutoNavigateToFocusedRow();\r\n                    if (reload && !fullReload && (0, _type.isDefined)(focusedRowKey)) {\r\n                        focusController._navigateToRow(focusedRowKey, true).done(function(focusedRowIndex) {\r\n                            if (focusedRowIndex < 0) {\r\n                                focusController._focusRowByIndex()\r\n                            }\r\n                        })\r\n                    } else {\r\n                        if (operationTypes.paging && !isVirtualScrolling) {\r\n                            if (isAutoNavigate) {\r\n                                var rowIndexByKey = this.getRowIndexByKey(focusedRowKey);\r\n                                var isValidRowIndexByKey = rowIndexByKey >= 0;\r\n                                var focusedRowIndex = this.option(\"focusedRowIndex\");\r\n                                var needFocusRowByIndex = focusedRowIndex >= 0 && (focusedRowIndex === rowIndexByKey || !isValidRowIndexByKey);\r\n                                if (needFocusRowByIndex) {\r\n                                    focusController._focusRowByIndex()\r\n                                }\r\n                            } else {\r\n                                if (this.getRowIndexByKey(focusedRowKey) < 0) {\r\n                                    this.option(\"focusedRowIndex\", -1)\r\n                                }\r\n                            }\r\n                        } else {\r\n                            if (operationTypes.fullReload) {\r\n                                focusController._focusRowByKeyOrIndex()\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                getPageIndexByKey: function(key) {\r\n                    var that = this;\r\n                    var d = new _deferred.Deferred;\r\n                    that.getGlobalRowIndexByKey(key).done(function(globalIndex) {\r\n                        d.resolve(globalIndex >= 0 ? Math.floor(globalIndex / that.pageSize()) : -1)\r\n                    }).fail(d.reject);\r\n                    return d.promise()\r\n                },\r\n                getGlobalRowIndexByKey: function(key) {\r\n                    if (this._dataSource.group()) {\r\n                        return this._calculateGlobalRowIndexByGroupedData(key)\r\n                    }\r\n                    return this._calculateGlobalRowIndexByFlatData(key)\r\n                },\r\n                _calculateGlobalRowIndexByFlatData: function(key, groupFilter, useGroup) {\r\n                    var that = this;\r\n                    var deferred = new _deferred.Deferred;\r\n                    var dataSource = that._dataSource;\r\n                    var filter = that._generateFilterByKey(key);\r\n                    dataSource.load({\r\n                        filter: that._concatWithCombinedFilter(filter),\r\n                        skip: 0,\r\n                        take: 1\r\n                    }).done(function(data) {\r\n                        if (data.length > 0) {\r\n                            filter = that._generateOperationFilterByKey(key, data[0], useGroup);\r\n                            dataSource.load({\r\n                                filter: that._concatWithCombinedFilter(filter, groupFilter),\r\n                                skip: 0,\r\n                                take: 1,\r\n                                requireTotalCount: true\r\n                            }).done(function(_, extra) {\r\n                                deferred.resolve(extra.totalCount)\r\n                            })\r\n                        } else {\r\n                            deferred.resolve(-1)\r\n                        }\r\n                    });\r\n                    return deferred.promise()\r\n                },\r\n                _concatWithCombinedFilter: function(filter, groupFilter) {\r\n                    var combinedFilter = this.getCombinedFilter();\r\n                    return _uiGrid_core2.default.combineFilters([filter, combinedFilter, groupFilter])\r\n                },\r\n                _generateBooleanFilter: function(selector, value, sortInfo) {\r\n                    var result;\r\n                    if (false === value) {\r\n                        result = [selector, \"=\", sortInfo.desc ? true : null]\r\n                    } else {\r\n                        if (true === value ? !sortInfo.desc : sortInfo.desc) {\r\n                            result = [selector, \"<>\", value]\r\n                        }\r\n                    }\r\n                    return result\r\n                },\r\n                _generateOperationFilterByKey: function(key, rowData, useGroup) {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var filter = that._generateFilterByKey(key, \"<\");\r\n                    var sort = that._columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().filtering, true);\r\n                    if (useGroup) {\r\n                        var group = that._columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().filtering);\r\n                        if (group) {\r\n                            sort = sort ? group.concat(sort) : group\r\n                        }\r\n                    }\r\n                    if (sort) {\r\n                        sort.slice().reverse().forEach(function(sortInfo) {\r\n                            var selector = sortInfo.selector;\r\n                            var getter;\r\n                            if (\"function\" === typeof selector) {\r\n                                getter = selector\r\n                            } else {\r\n                                getter = that._columnsController.columnOption(selector, \"selector\")\r\n                            }\r\n                            var value = getter ? getter(rowData) : rowData[selector];\r\n                            filter = [\r\n                                [selector, \"=\", value], \"and\", filter\r\n                            ];\r\n                            if (null === value || (0, _type.isBoolean)(value)) {\r\n                                var booleanFilter = that._generateBooleanFilter(selector, value, sortInfo);\r\n                                if (booleanFilter) {\r\n                                    filter = [booleanFilter, \"or\", filter]\r\n                                }\r\n                            } else {\r\n                                filter = [\r\n                                    [selector, sortInfo.desc ? \">\" : \"<\", value], \"or\", filter\r\n                                ]\r\n                            }\r\n                        })\r\n                    }\r\n                    return filter\r\n                },\r\n                _generateFilterByKey: function(key, operation) {\r\n                    var dataSourceKey = this._dataSource.key();\r\n                    var filter = [];\r\n                    if (!operation) {\r\n                        operation = \"=\"\r\n                    }\r\n                    if (Array.isArray(dataSourceKey)) {\r\n                        for (var i = 0; i < dataSourceKey.length; ++i) {\r\n                            var keyPart = key[dataSourceKey[i]];\r\n                            if (keyPart) {\r\n                                if (filter.length > 0) {\r\n                                    filter.push(\"and\")\r\n                                }\r\n                                filter.push([dataSourceKey[i], operation, keyPart])\r\n                            }\r\n                        }\r\n                    } else {\r\n                        filter = [dataSourceKey, operation, key]\r\n                    }\r\n                    return filter\r\n                },\r\n                _getLastItemIndex: function() {\r\n                    return this.items(true).length - 1\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            rowsView: {\r\n                _createRow: function(row) {\r\n                    var $row = this.callBase(row);\r\n                    if (this.option(\"focusedRowEnabled\") && row) {\r\n                        if (this.getController(\"focus\").isRowFocused(row.key)) {\r\n                            $row.addClass(ROW_FOCUSED_CLASS)\r\n                        }\r\n                    }\r\n                    return $row\r\n                },\r\n                _checkRowKeys: function(options) {\r\n                    this.callBase.apply(this, arguments);\r\n                    if (this.option(\"focusedRowEnabled\") && this.option(\"dataSource\")) {\r\n                        var store = this._dataController.store();\r\n                        if (store && !store.key()) {\r\n                            this._dataController.fireError(\"E1042\", \"Row focusing\")\r\n                        }\r\n                    }\r\n                },\r\n                _update: function(change) {\r\n                    if (\"updateFocusedRow\" === change.changeType) {\r\n                        if (this.option(\"focusedRowEnabled\")) {\r\n                            this.getController(\"focus\").updateFocusedRow(change)\r\n                        }\r\n                    } else {\r\n                        this.callBase(change)\r\n                    }\r\n                },\r\n                updateFocusElementTabIndex: function($cellElements) {\r\n                    if (this.option(\"focusedRowEnabled\")) {\r\n                        this._setFocusedRowElementTabIndex()\r\n                    } else {\r\n                        this.callBase($cellElements)\r\n                    }\r\n                },\r\n                _setFocusedRowElementTabIndex: function() {\r\n                    var _this5 = this;\r\n                    var focusedRowKey = this.option(\"focusedRowKey\");\r\n                    var tabIndex = this.option(\"tabIndex\") || 0;\r\n                    var dataController = this._dataController;\r\n                    var columnsController = this._columnsController;\r\n                    var rowIndex = dataController.getRowIndexByKey(focusedRowKey);\r\n                    var columnIndex = this.option(\"focusedColumnIndex\");\r\n                    var $row = this._findRowElementForTabIndex();\r\n                    if (!(0, _type.isDefined)(this._scrollToFocusOnResize)) {\r\n                        this._scrollToFocusOnResize = function() {\r\n                            _this5.scrollToElementVertically(_this5._findRowElementForTabIndex());\r\n                            _this5.resizeCompleted.remove(_this5._scrollToFocusOnResize)\r\n                        }\r\n                    }\r\n                    $row.attr(\"tabIndex\", tabIndex);\r\n                    if (rowIndex >= 0) {\r\n                        if (columnIndex < 0) {\r\n                            columnIndex = 0\r\n                        }\r\n                        rowIndex += dataController.getRowIndexOffset();\r\n                        columnIndex += columnsController.getColumnIndexOffset();\r\n                        this.getController(\"keyboardNavigation\").setFocusedCellPosition(rowIndex, columnIndex);\r\n                        if (this.getController(\"focus\").isAutoNavigateToFocusedRow()) {\r\n                            var dataSource = dataController.dataSource();\r\n                            var operationTypes = dataSource && dataSource.operationTypes();\r\n                            if (operationTypes && !operationTypes.paging && !dataController.isPagingByRendering()) {\r\n                                this.resizeCompleted.remove(this._scrollToFocusOnResize);\r\n                                this.resizeCompleted.add(this._scrollToFocusOnResize)\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                _findRowElementForTabIndex: function() {\r\n                    var focusedRowKey = this.option(\"focusedRowKey\");\r\n                    var rowIndex = this._dataController.getRowIndexByKey(focusedRowKey);\r\n                    return (0, _renderer.default)(this.getRowElement(rowIndex >= 0 ? rowIndex : 0))\r\n                },\r\n                scrollToRowElement: function(key) {\r\n                    var rowIndex = this.getController(\"data\").getRowIndexByKey(key);\r\n                    var $row = (0, _renderer.default)(this.getRow(rowIndex));\r\n                    this.scrollToElementVertically($row)\r\n                },\r\n                scrollToElementVertically: function($row) {\r\n                    var scrollable = this.getScrollable();\r\n                    if (scrollable) {\r\n                        var position = scrollable.getScrollElementPosition($row, \"vertical\");\r\n                        scrollable.scrollTo({\r\n                            top: position\r\n                        })\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar LAST_GROUP_CELL_CLASS = \"dx-scheduler-last-group-cell\";\r\nvar FIRST_GROUP_CELL_CLASS = \"dx-scheduler-first-group-cell\";\r\nvar GroupedStrategy = function() {\r\n    function GroupedStrategy(workSpace) {\r\n        _classCallCheck(this, GroupedStrategy);\r\n        this._workSpace = workSpace\r\n    }\r\n    _createClass(GroupedStrategy, [{\r\n        key: \"getLastGroupCellClass\",\r\n        value: function() {\r\n            return LAST_GROUP_CELL_CLASS\r\n        }\r\n    }, {\r\n        key: \"getFirstGroupCellClass\",\r\n        value: function() {\r\n            return FIRST_GROUP_CELL_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getOffsetByAllDayPanel\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"_getGroupTop\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }]);\r\n    return GroupedStrategy\r\n}();\r\nvar _default = GroupedStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scroll_view.native.swipe_down.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiScrollable = _interopRequireDefault(require(\"./ui.scrollable.native\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-refreshing\";\r\nvar PULLDOWN_ICON_CLASS = \"dx-icon-pulldown\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_TOUCHED = 4;\r\nvar STATE_PULLED = 5;\r\nvar SwipeDownNativeScrollViewStrategy = _uiScrollable.default.inherit({\r\n    _init: function(scrollView) {\r\n        this.callBase(scrollView);\r\n        this._$topPocket = scrollView._$topPocket;\r\n        this._$bottomPocket = scrollView._$bottomPocket;\r\n        this._$pullDown = scrollView._$pullDown;\r\n        this._$scrollViewContent = scrollView.content();\r\n        this._initCallbacks();\r\n        this._location = 0\r\n    },\r\n    _initCallbacks: function() {\r\n        this.pullDownCallbacks = (0, _callbacks.default)();\r\n        this.releaseCallbacks = (0, _callbacks.default)();\r\n        this.reachBottomCallbacks = (0, _callbacks.default)()\r\n    },\r\n    render: function() {\r\n        this.callBase();\r\n        this._renderPullDown();\r\n        this._releaseState()\r\n    },\r\n    _renderPullDown: function() {\r\n        var $loadContainer = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n        var $loadIndicator = new _load_indicator.default((0, _renderer.default)(\"<div>\")).$element();\r\n        this._$icon = (0, _renderer.default)(\"<div>\").addClass(PULLDOWN_ICON_CLASS);\r\n        this._$pullDown.empty().append(this._$icon).append($loadContainer.append($loadIndicator))\r\n    },\r\n    _releaseState: function() {\r\n        this._state = STATE_RELEASED;\r\n        this._releasePullDown();\r\n        this._updateDimensions()\r\n    },\r\n    _releasePullDown: function() {\r\n        this._$pullDown.css({\r\n            opacity: 0\r\n        })\r\n    },\r\n    _updateDimensions: function() {\r\n        this.callBase();\r\n        this._topPocketSize = this._$topPocket.height();\r\n        this._bottomPocketSize = this._$bottomPocket.height();\r\n        this._scrollOffset = this._$container.height() - this._$content.height()\r\n    },\r\n    _allowedDirections: function() {\r\n        var allowedDirections = this.callBase();\r\n        allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n        return allowedDirections\r\n    },\r\n    handleInit: function(e) {\r\n        this.callBase(e);\r\n        if (this._state === STATE_RELEASED && 0 === this._location) {\r\n            this._startClientY = (0, _index.eventData)(e.originalEvent).y;\r\n            this._state = STATE_TOUCHED\r\n        }\r\n    },\r\n    handleMove: function(e) {\r\n        this.callBase(e);\r\n        this._deltaY = (0, _index.eventData)(e.originalEvent).y - this._startClientY;\r\n        if (this._state === STATE_TOUCHED) {\r\n            if (this._pullDownEnabled && this._deltaY > 0) {\r\n                this._state = STATE_PULLED\r\n            } else {\r\n                this._complete()\r\n            }\r\n        }\r\n        if (this._state === STATE_PULLED) {\r\n            e.preventDefault();\r\n            this._movePullDown()\r\n        }\r\n    },\r\n    _movePullDown: function() {\r\n        var pullDownHeight = this._getPullDownHeight();\r\n        var top = Math.min(3 * pullDownHeight, this._deltaY + this._getPullDownStartPosition());\r\n        var angle = 180 * top / pullDownHeight / 3;\r\n        this._$pullDown.css({\r\n            opacity: 1\r\n        }).toggleClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS, top < pullDownHeight);\r\n        (0, _translator.move)(this._$pullDown, {\r\n            top: top\r\n        });\r\n        this._$icon.css({\r\n            transform: \"rotate(\" + angle + \"deg)\"\r\n        })\r\n    },\r\n    _isPullDown: function() {\r\n        return this._pullDownEnabled && this._state === STATE_PULLED && this._deltaY >= this._getPullDownHeight() - this._getPullDownStartPosition()\r\n    },\r\n    _getPullDownHeight: function() {\r\n        return Math.round(.05 * this._$element.outerHeight())\r\n    },\r\n    _getPullDownStartPosition: function() {\r\n        return -Math.round(1.5 * this._$pullDown.outerHeight())\r\n    },\r\n    handleEnd: function() {\r\n        if (this._isPullDown()) {\r\n            this._pullDownRefreshing()\r\n        }\r\n        this._complete()\r\n    },\r\n    handleStop: function() {\r\n        this._complete()\r\n    },\r\n    _complete: function() {\r\n        if (this._state === STATE_TOUCHED || this._state === STATE_PULLED) {\r\n            this._releaseState()\r\n        }\r\n    },\r\n    handleScroll: function(e) {\r\n        this.callBase(e);\r\n        if (this._state === STATE_REFRESHING) {\r\n            return\r\n        }\r\n        var currentLocation = this.location().top;\r\n        var scrollDelta = this._location - currentLocation;\r\n        this._location = currentLocation;\r\n        if (scrollDelta > 0 && this._isReachBottom()) {\r\n            this._reachBottom()\r\n        } else {\r\n            this._stateReleased()\r\n        }\r\n    },\r\n    _isReachBottom: function() {\r\n        return this._reachBottomEnabled && this._location <= this._scrollOffset + this._bottomPocketSize\r\n    },\r\n    _reachBottom: function() {\r\n        this.reachBottomCallbacks.fire()\r\n    },\r\n    _stateReleased: function() {\r\n        if (this._state === STATE_RELEASED) {\r\n            return\r\n        }\r\n        this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n        this._releaseState()\r\n    },\r\n    _pullDownRefreshing: function() {\r\n        this._state = STATE_REFRESHING;\r\n        this._pullDownRefreshHandler()\r\n    },\r\n    _pullDownRefreshHandler: function() {\r\n        this._refreshPullDown();\r\n        this.pullDownCallbacks.fire()\r\n    },\r\n    _refreshPullDown: function() {\r\n        this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n        (0, _translator.move)(this._$pullDown, {\r\n            top: this._getPullDownHeight()\r\n        })\r\n    },\r\n    pullDownEnable: function(enabled) {\r\n        this._$topPocket.toggle(enabled);\r\n        this._pullDownEnabled = enabled\r\n    },\r\n    reachBottomEnable: function(enabled) {\r\n        this._reachBottomEnabled = enabled\r\n    },\r\n    pendingRelease: function() {\r\n        this._state = STATE_READY\r\n    },\r\n    release: function() {\r\n        var deferred = new _deferred.Deferred;\r\n        this._updateDimensions();\r\n        clearTimeout(this._releaseTimeout);\r\n        this._releaseTimeout = setTimeout(function() {\r\n            this._stateReleased();\r\n            this.releaseCallbacks.fire();\r\n            this._updateAction();\r\n            deferred.resolve()\r\n        }.bind(this), 800);\r\n        return deferred.promise()\r\n    },\r\n    dispose: function() {\r\n        clearTimeout(this._pullDownRefreshTimeout);\r\n        clearTimeout(this._releaseTimeout);\r\n        this.callBase()\r\n    }\r\n});\r\nvar _default = SwipeDownNativeScrollViewStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./data_grid/ui.data_grid\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.pager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.pager\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"pager\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/bar_gauge.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _bar_gauge = require(\"./gauges/bar_gauge\");\r\nvar _default = _bar_gauge.dxBarGauge;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/core/base_widget.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _resize_callbacks = _interopRequireDefault(require(\"../../core/utils/resize_callbacks\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _base_theme_manager = require(\"../core/base_theme_manager\");\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _helpers = require(\"./helpers\");\r\nvar _utils = require(\"./utils\");\r\nvar _errors_warnings = _interopRequireDefault(require(\"./errors_warnings\"));\r\nvar _renderer2 = require(\"./renderers/renderer\");\r\nvar _layout = _interopRequireDefault(require(\"./layout\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _base_widget = require(\"./base_widget.utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _floor = Math.floor;\r\nvar _log = _errors_warnings.default.log;\r\nvar OPTION_RTL_ENABLED = \"rtlEnabled\";\r\nvar SIZED_ELEMENT_CLASS = \"dx-sized-element\";\r\nvar _option = _dom_component.default.prototype.option;\r\n\r\nfunction getTrue() {\r\n    return true\r\n}\r\n\r\nfunction getFalse() {\r\n    return false\r\n}\r\n\r\nfunction areCanvasesDifferent(canvas1, canvas2) {\r\n    return !(canvas1.width === canvas2.width && canvas1.height === canvas2.height && canvas1.left === canvas2.left && canvas1.top === canvas2.top && canvas1.right === canvas2.right && canvas1.bottom === canvas2.bottom)\r\n}\r\n\r\nfunction defaultOnIncidentOccurred(e) {\r\n    if (!e.component._eventsStrategy.hasEvent(\"incidentOccurred\")) {\r\n        _log.apply(null, [e.target.id].concat(e.target.args || []))\r\n    }\r\n}\r\n\r\nfunction pickPositiveValue(values) {\r\n    return values.reduce(function(result, value) {\r\n        return value > 0 && !result ? value : result\r\n    }, 0)\r\n}\r\nvar getEmptyComponent = function() {\r\n    var emptyComponentConfig = {\r\n        _initTemplates: function() {},\r\n        ctor: function(element, options) {\r\n            this.callBase(element, options);\r\n            var sizedElement = _dom_adapter.default.createElement(\"div\");\r\n            var width = options && (0, _type.isNumeric)(options.width) ? options.width + \"px\" : \"100%\";\r\n            var height = options && (0, _type.isNumeric)(options.height) ? options.height + \"px\" : this._getDefaultSize().height + \"px\";\r\n            _dom_adapter.default.setStyle(sizedElement, \"width\", width);\r\n            _dom_adapter.default.setStyle(sizedElement, \"height\", height);\r\n            _dom_adapter.default.setClass(sizedElement, SIZED_ELEMENT_CLASS);\r\n            _dom_adapter.default.insertElement(element, sizedElement)\r\n        }\r\n    };\r\n    var EmptyComponent = _dom_component.default.inherit(emptyComponentConfig);\r\n    var originalInherit = EmptyComponent.inherit;\r\n    EmptyComponent.inherit = function(config) {\r\n        for (var field in config) {\r\n            if ((0, _type.isFunction)(config[field]) && \"_\" !== field.substr(0, 1) && \"option\" !== field || \"_dispose\" === field || \"_optionChanged\" === field) {\r\n                config[field] = _common.noop\r\n            }\r\n        }\r\n        return originalInherit.call(this, config)\r\n    };\r\n    return EmptyComponent\r\n};\r\n\r\nfunction callForEach(functions) {\r\n    functions.forEach(function(c) {\r\n        return c()\r\n    })\r\n}\r\nvar isServerSide = !(0, _window.hasWindow)();\r\n\r\nfunction sizeIsValid(value) {\r\n    return (0, _type.isDefined)(value) && value > 0\r\n}\r\nvar baseWidget = isServerSide ? getEmptyComponent() : _dom_component.default.inherit({\r\n    _eventsMap: {\r\n        onIncidentOccurred: {\r\n            name: \"incidentOccurred\"\r\n        },\r\n        onDrawn: {\r\n            name: \"drawn\"\r\n        }\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            onIncidentOccurred: defaultOnIncidentOccurred\r\n        })\r\n    },\r\n    _useLinks: true,\r\n    _init: function() {\r\n        var that = this;\r\n        that._$element.children(\".\" + SIZED_ELEMENT_CLASS).remove();\r\n        that.callBase.apply(that, arguments);\r\n        that._changesLocker = 0;\r\n        that._optionChangedLocker = 0;\r\n        that._asyncFirstDrawing = true;\r\n        that._changes = (0, _helpers.changes)();\r\n        that._suspendChanges();\r\n        that._themeManager = that._createThemeManager();\r\n        that._themeManager.setCallback(function() {\r\n            that._requestChange(that._themeDependentChanges)\r\n        });\r\n        that._renderElementAttributes();\r\n        that._initRenderer();\r\n        var linkTarget = that._useLinks && that._renderer.root;\r\n        linkTarget && linkTarget.enableLinks().virtualLink(\"core\").virtualLink(\"peripheral\");\r\n        that._renderVisibilityChange();\r\n        that._attachVisibilityChangeHandlers();\r\n        that._toggleParentsScrollSubscription(this._isVisible());\r\n        that._initEventTrigger();\r\n        that._incidentOccurred = (0, _base_widget.createIncidentOccurred)(that.NAME, that._eventTrigger);\r\n        that._layout = new _layout.default;\r\n        linkTarget && linkTarget.linkAfter(\"core\");\r\n        that._initPlugins();\r\n        that._initCore();\r\n        linkTarget && linkTarget.linkAfter();\r\n        that._change(that._initialChanges)\r\n    },\r\n    _createThemeManager: function() {\r\n        return new _base_theme_manager.BaseThemeManager(this._getThemeManagerOptions())\r\n    },\r\n    _getThemeManagerOptions: function() {\r\n        return {\r\n            themeSection: this._themeSection,\r\n            fontFields: this._fontFields\r\n        }\r\n    },\r\n    _initialChanges: [\"LAYOUT\", \"RESIZE_HANDLER\", \"THEME\", \"DISABLED\"],\r\n    _initPlugins: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(that._plugins, function(_, plugin) {\r\n            plugin.init.call(that)\r\n        })\r\n    },\r\n    _disposePlugins: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(that._plugins.slice().reverse(), function(_, plugin) {\r\n            plugin.dispose.call(that)\r\n        })\r\n    },\r\n    _change: function(codes) {\r\n        this._changes.add(codes)\r\n    },\r\n    _suspendChanges: function() {\r\n        ++this._changesLocker\r\n    },\r\n    _resumeChanges: function() {\r\n        var that = this;\r\n        if (0 === --that._changesLocker && that._changes.count() > 0 && !that._applyingChanges) {\r\n            that._renderer.lock();\r\n            that._applyingChanges = true;\r\n            that._applyChanges();\r\n            that._changes.reset();\r\n            that._applyingChanges = false;\r\n            that._renderer.unlock();\r\n            if (that._optionsQueue) {\r\n                that._applyQueuedOptions()\r\n            }\r\n            that.resolveItemsDeferred(that._legend ? [that._legend] : []);\r\n            that._optionChangedLocker++;\r\n            that._notify();\r\n            that._optionChangedLocker--\r\n        }\r\n    },\r\n    resolveItemsDeferred: function(items) {\r\n        this._resolveDeferred(this._getTemplatesItems(items))\r\n    },\r\n    _collectTemplatesFromItems: function(items) {\r\n        return items.reduce(function(prev, i) {\r\n            return {\r\n                items: prev.items.concat(i.getTemplatesDef()),\r\n                groups: prev.groups.concat(i.getTemplatesGroups())\r\n            }\r\n        }, {\r\n            items: [],\r\n            groups: []\r\n        })\r\n    },\r\n    _getTemplatesItems: function(items) {\r\n        var elements = this._collectTemplatesFromItems(items);\r\n        var extraItems = this._getExtraTemplatesItems();\r\n        return {\r\n            items: extraItems.items.concat(elements.items),\r\n            groups: extraItems.groups.concat(elements.groups),\r\n            launchRequest: [extraItems.launchRequest],\r\n            doneRequest: [extraItems.doneRequest]\r\n        }\r\n    },\r\n    _getExtraTemplatesItems: function() {\r\n        return {\r\n            items: [],\r\n            groups: [],\r\n            launchRequest: function() {},\r\n            doneRequest: function() {}\r\n        }\r\n    },\r\n    _resolveDeferred: function(_ref) {\r\n        var items = _ref.items,\r\n            launchRequest = _ref.launchRequest,\r\n            doneRequest = _ref.doneRequest,\r\n            groups = _ref.groups;\r\n        var that = this;\r\n        that._setGroupsVisibility(groups, \"hidden\");\r\n        if (that._changesApplying) {\r\n            that._changesApplying = false;\r\n            callForEach(doneRequest);\r\n            return\r\n        }\r\n        var syncRendering = true;\r\n        _deferred.when.apply(that, items).done(function() {\r\n            if (syncRendering) {\r\n                that._setGroupsVisibility(groups, \"visible\");\r\n                return\r\n            }\r\n            callForEach(launchRequest);\r\n            that._changesApplying = true;\r\n            var changes = [\"LAYOUT\", \"FULL_RENDER\"];\r\n            if (that._asyncFirstDrawing) {\r\n                changes.push(\"FORCE_FIRST_DRAWING\");\r\n                that._asyncFirstDrawing = false\r\n            } else {\r\n                changes.push(\"FORCE_DRAWING\")\r\n            }\r\n            that._requestChange(changes);\r\n            that._setGroupsVisibility(groups, \"visible\")\r\n        });\r\n        syncRendering = false\r\n    },\r\n    _setGroupsVisibility: function(groups, visibility) {\r\n        groups.forEach(function(g) {\r\n            return g.attr({\r\n                visibility: visibility\r\n            })\r\n        })\r\n    },\r\n    _applyQueuedOptions: function() {\r\n        var that = this;\r\n        var queue = that._optionsQueue;\r\n        that._optionsQueue = null;\r\n        that.beginUpdate();\r\n        (0, _iterator.each)(queue, function(_, action) {\r\n            action()\r\n        });\r\n        that.endUpdate()\r\n    },\r\n    _requestChange: function(codes) {\r\n        this._suspendChanges();\r\n        this._change(codes);\r\n        this._resumeChanges()\r\n    },\r\n    _applyChanges: function() {\r\n        var that = this;\r\n        var changes = that._changes;\r\n        var order = that._totalChangesOrder;\r\n        var i;\r\n        var ii = order.length;\r\n        for (i = 0; i < ii; ++i) {\r\n            if (changes.has(order[i])) {\r\n                that[\"_change_\" + order[i]]()\r\n            }\r\n        }\r\n    },\r\n    _optionChangesOrder: [\"EVENTS\", \"THEME\", \"RENDERER\", \"RESIZE_HANDLER\"],\r\n    _layoutChangesOrder: [\"ELEMENT_ATTR\", \"CONTAINER_SIZE\", \"LAYOUT\"],\r\n    _customChangesOrder: [\"DISABLED\"],\r\n    _change_EVENTS: function() {\r\n        this._eventTrigger.applyChanges()\r\n    },\r\n    _change_THEME: function() {\r\n        this._setThemeAndRtl()\r\n    },\r\n    _change_RENDERER: function() {\r\n        this._setRendererOptions()\r\n    },\r\n    _change_RESIZE_HANDLER: function() {\r\n        this._setupResizeHandler()\r\n    },\r\n    _change_ELEMENT_ATTR: function() {\r\n        this._renderElementAttributes();\r\n        this._change([\"CONTAINER_SIZE\"])\r\n    },\r\n    _change_CONTAINER_SIZE: function() {\r\n        this._updateSize()\r\n    },\r\n    _change_LAYOUT: function() {\r\n        this._setContentSize()\r\n    },\r\n    _change_DISABLED: function() {\r\n        var renderer = this._renderer;\r\n        var root = renderer.root;\r\n        if (this.option(\"disabled\")) {\r\n            this._initDisabledState = root.attr(\"pointer-events\");\r\n            root.attr({\r\n                \"pointer-events\": \"none\",\r\n                filter: renderer.getGrayScaleFilter().id\r\n            })\r\n        } else {\r\n            if (\"none\" === root.attr(\"pointer-events\")) {\r\n                root.attr({\r\n                    \"pointer-events\": (0, _type.isDefined)(this._initDisabledState) ? this._initDisabledState : null,\r\n                    filter: null\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _themeDependentChanges: [\"RENDERER\"],\r\n    _initRenderer: function() {\r\n        var that = this;\r\n        that._canvas = that._calculateCanvas();\r\n        that._renderer = new _renderer2.Renderer({\r\n            cssClass: that._rootClassPrefix + \" \" + that._rootClass,\r\n            pathModified: that.option(\"pathModified\"),\r\n            container: that._$element[0]\r\n        });\r\n        that._renderer.resize(that._canvas.width, that._canvas.height)\r\n    },\r\n    _disposeRenderer: function() {\r\n        this._renderer.dispose()\r\n    },\r\n    _getAnimationOptions: _common.noop,\r\n    render: function() {\r\n        this._requestChange([\"CONTAINER_SIZE\"]);\r\n        var visible = this._isVisible();\r\n        this._toggleParentsScrollSubscription(visible);\r\n        !visible && this._stopCurrentHandling()\r\n    },\r\n    _toggleParentsScrollSubscription: function(subscribe) {\r\n        var $parents = (0, _renderer.default)(this._renderer.root.element).parents();\r\n        var scrollEvents = \"scroll.viz_widgets\";\r\n        if (\"generic\" === _devices.default.real().platform) {\r\n            $parents = $parents.add((0, _window.getWindow)())\r\n        }\r\n        this._proxiedTargetParentsScrollHandler = this._proxiedTargetParentsScrollHandler || function() {\r\n            this._stopCurrentHandling()\r\n        }.bind(this);\r\n        _events_engine.default.off((0, _renderer.default)().add(this._$prevRootParents), scrollEvents, this._proxiedTargetParentsScrollHandler);\r\n        if (subscribe) {\r\n            _events_engine.default.on($parents, scrollEvents, this._proxiedTargetParentsScrollHandler);\r\n            this._$prevRootParents = $parents\r\n        }\r\n    },\r\n    _stopCurrentHandling: _common.noop,\r\n    _dispose: function() {\r\n        var that = this;\r\n        that.callBase.apply(that, arguments);\r\n        that._toggleParentsScrollSubscription(false);\r\n        that._removeResizeHandler();\r\n        that._layout.dispose();\r\n        that._eventTrigger.dispose();\r\n        that._disposeCore();\r\n        that._disposePlugins();\r\n        that._disposeRenderer();\r\n        that._themeManager.dispose();\r\n        that._themeManager = that._renderer = that._eventTrigger = null\r\n    },\r\n    _initEventTrigger: function() {\r\n        var that = this;\r\n        that._eventTrigger = (0, _base_widget.createEventTrigger)(that._eventsMap, function(name) {\r\n            return that._createActionByOption(name)\r\n        })\r\n    },\r\n    _calculateCanvas: function() {\r\n        var that = this;\r\n        var size = that.option(\"size\") || {};\r\n        var margin = that.option(\"margin\") || {};\r\n        var defaultCanvas = that._getDefaultSize() || {};\r\n        var getSizeOfSide = function(size, side) {\r\n            if (sizeIsValid(size[side]) || !(0, _window.hasWindow)()) {\r\n                return 0\r\n            }\r\n            var elementSize = that._$element[side]();\r\n            return elementSize <= 1 ? 0 : elementSize\r\n        };\r\n        var elementWidth = getSizeOfSide(size, \"width\");\r\n        var elementHeight = getSizeOfSide(size, \"height\");\r\n        var canvas = {\r\n            width: size.width <= 0 ? 0 : _floor(pickPositiveValue([size.width, elementWidth, defaultCanvas.width])),\r\n            height: size.height <= 0 ? 0 : _floor(pickPositiveValue([size.height, elementHeight, defaultCanvas.height])),\r\n            left: pickPositiveValue([margin.left, defaultCanvas.left]),\r\n            top: pickPositiveValue([margin.top, defaultCanvas.top]),\r\n            right: pickPositiveValue([margin.right, defaultCanvas.right]),\r\n            bottom: pickPositiveValue([margin.bottom, defaultCanvas.bottom])\r\n        };\r\n        if (canvas.width - canvas.left - canvas.right <= 0 || canvas.height - canvas.top - canvas.bottom <= 0) {\r\n            canvas = {\r\n                width: 0,\r\n                height: 0\r\n            }\r\n        }\r\n        return canvas\r\n    },\r\n    _updateSize: function() {\r\n        var that = this;\r\n        var canvas = that._calculateCanvas();\r\n        that._renderer.fixPlacement();\r\n        if (areCanvasesDifferent(that._canvas, canvas) || that.__forceRender) {\r\n            that._canvas = canvas;\r\n            that._recreateSizeDependentObjects(true);\r\n            that._renderer.resize(canvas.width, canvas.height);\r\n            that._change([\"LAYOUT\"])\r\n        }\r\n    },\r\n    _recreateSizeDependentObjects: _common.noop,\r\n    _getMinSize: function() {\r\n        return [0, 0]\r\n    },\r\n    _getAlignmentRect: _common.noop,\r\n    _setContentSize: function() {\r\n        var canvas = this._canvas;\r\n        var layout = this._layout;\r\n        var rect = canvas.width > 0 && canvas.height > 0 ? [canvas.left, canvas.top, canvas.width - canvas.right, canvas.height - canvas.bottom] : [0, 0, 0, 0];\r\n        rect = layout.forward(rect, this._getMinSize());\r\n        var nextRect = this._applySize(rect) || rect;\r\n        layout.backward(nextRect, this._getAlignmentRect() || nextRect)\r\n    },\r\n    _getOption: function(name, isScalar) {\r\n        var theme = this._themeManager.theme(name);\r\n        var option = this.option(name);\r\n        return isScalar ? void 0 !== option ? option : theme : (0, _extend.extend)(true, {}, theme, option)\r\n    },\r\n    _setupResizeHandler: function() {\r\n        var that = this;\r\n        var redrawOnResize = (0, _utils.parseScalar)(this._getOption(\"redrawOnResize\", true), true);\r\n        if (that._resizeHandler) {\r\n            that._removeResizeHandler()\r\n        }\r\n        that._resizeHandler = (0, _base_widget.createResizeHandler)(function() {\r\n            if (redrawOnResize) {\r\n                that._requestChange([\"CONTAINER_SIZE\"])\r\n            } else {\r\n                that._renderer.fixPlacement()\r\n            }\r\n        });\r\n        _resize_callbacks.default.add(that._resizeHandler)\r\n    },\r\n    _removeResizeHandler: function() {\r\n        if (this._resizeHandler) {\r\n            _resize_callbacks.default.remove(this._resizeHandler);\r\n            this._resizeHandler.dispose();\r\n            this._resizeHandler = null\r\n        }\r\n    },\r\n    _onBeginUpdate: _common.noop,\r\n    beginUpdate: function() {\r\n        var that = this;\r\n        if (that._initialized && that._isUpdateAllowed()) {\r\n            that._onBeginUpdate();\r\n            that._suspendChanges()\r\n        }\r\n        that.callBase.apply(that, arguments);\r\n        return that\r\n    },\r\n    endUpdate: function() {\r\n        this.callBase();\r\n        this._isUpdateAllowed() && this._resumeChanges();\r\n        return this\r\n    },\r\n    option: function(name) {\r\n        var that = this;\r\n        if (that._initialized && that._applyingChanges && (arguments.length > 1 || (0, _type.isObject)(name))) {\r\n            that._optionsQueue = that._optionsQueue || [];\r\n            that._optionsQueue.push(that._getActionForUpdating(arguments))\r\n        } else {\r\n            return _option.apply(that, arguments)\r\n        }\r\n    },\r\n    _getActionForUpdating: function(args) {\r\n        var that = this;\r\n        return function() {\r\n            _option.apply(that, args)\r\n        }\r\n    },\r\n    _clean: _common.noop,\r\n    _render: _common.noop,\r\n    _optionChanged: function(arg) {\r\n        var that = this;\r\n        if (that._optionChangedLocker) {\r\n            return\r\n        }\r\n        var partialChanges = that.getPartialChangeOptionsName(arg);\r\n        var changes = [];\r\n        if (partialChanges.length > 0) {\r\n            partialChanges.forEach(function(pc) {\r\n                return changes.push(that._partialOptionChangesMap[pc])\r\n            })\r\n        } else {\r\n            changes.push(that._optionChangesMap[arg.name])\r\n        }\r\n        changes = changes.filter(function(c) {\r\n            return !!c\r\n        });\r\n        if (that._eventTrigger.change(arg.name)) {\r\n            that._change([\"EVENTS\"])\r\n        } else {\r\n            if (changes.length > 0) {\r\n                that._change(changes)\r\n            } else {\r\n                that.callBase.apply(that, arguments)\r\n            }\r\n        }\r\n    },\r\n    _notify: _common.noop,\r\n    _optionChangesMap: {\r\n        size: \"CONTAINER_SIZE\",\r\n        margin: \"CONTAINER_SIZE\",\r\n        redrawOnResize: \"RESIZE_HANDLER\",\r\n        theme: \"THEME\",\r\n        rtlEnabled: \"THEME\",\r\n        encodeHtml: \"THEME\",\r\n        elementAttr: \"ELEMENT_ATTR\",\r\n        disabled: \"DISABLED\"\r\n    },\r\n    _partialOptionChangesMap: {},\r\n    _partialOptionChangesPath: {},\r\n    getPartialChangeOptionsName: function(changedOption) {\r\n        var that = this;\r\n        var fullName = changedOption.fullName;\r\n        var sections = fullName.split(/[.]/);\r\n        var name = changedOption.name;\r\n        var value = changedOption.value;\r\n        var options = this._partialOptionChangesPath[name];\r\n        var partialChangeOptionsName = [];\r\n        if (options) {\r\n            if (true === options) {\r\n                partialChangeOptionsName.push(name)\r\n            } else {\r\n                options.forEach(function(op) {\r\n                    fullName.indexOf(op) >= 0 && partialChangeOptionsName.push(op)\r\n                });\r\n                if (1 === sections.length) {\r\n                    if (\"object\" === (0, _type.type)(value)) {\r\n                        that._addOptionsNameForPartialUpdate(value, options, partialChangeOptionsName)\r\n                    } else {\r\n                        if (\"array\" === (0, _type.type)(value)) {\r\n                            if (value.length > 0 && value.every(function(item) {\r\n                                    return that._checkOptionsForPartialUpdate(item, options)\r\n                                })) {\r\n                                value.forEach(function(item) {\r\n                                    return that._addOptionsNameForPartialUpdate(item, options, partialChangeOptionsName)\r\n                                })\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return partialChangeOptionsName.filter(function(value, index, self) {\r\n            return self.indexOf(value) === index\r\n        })\r\n    },\r\n    _checkOptionsForPartialUpdate: function(optionObject, options) {\r\n        return !Object.keys(optionObject).some(function(key) {\r\n            return options.indexOf(key) === -1\r\n        })\r\n    },\r\n    _addOptionsNameForPartialUpdate: function(optionObject, options, partialChangeOptionsName) {\r\n        var optionKeys = Object.keys(optionObject);\r\n        if (this._checkOptionsForPartialUpdate(optionObject, options)) {\r\n            optionKeys.forEach(function(key) {\r\n                return options.indexOf(key) > -1 && partialChangeOptionsName.push(key)\r\n            })\r\n        }\r\n    },\r\n    _visibilityChanged: function() {\r\n        this.render()\r\n    },\r\n    _setThemeAndRtl: function() {\r\n        this._themeManager.setTheme(this.option(\"theme\"), this.option(OPTION_RTL_ENABLED))\r\n    },\r\n    _getRendererOptions: function() {\r\n        return {\r\n            rtl: this.option(OPTION_RTL_ENABLED),\r\n            encodeHtml: this.option(\"encodeHtml\"),\r\n            animation: this._getAnimationOptions()\r\n        }\r\n    },\r\n    _setRendererOptions: function() {\r\n        this._renderer.setOptions(this._getRendererOptions())\r\n    },\r\n    svg: function() {\r\n        return this._renderer.svg()\r\n    },\r\n    getSize: function() {\r\n        var canvas = this._canvas || {};\r\n        return {\r\n            width: canvas.width,\r\n            height: canvas.height\r\n        }\r\n    },\r\n    isReady: getFalse,\r\n    _dataIsReady: getTrue,\r\n    _resetIsReady: function() {\r\n        this.isReady = getFalse\r\n    },\r\n    _drawn: function() {\r\n        var that = this;\r\n        that.isReady = getFalse;\r\n        if (that._dataIsReady()) {\r\n            that._renderer.onEndAnimation(function() {\r\n                that.isReady = getTrue\r\n            })\r\n        }\r\n        that._eventTrigger(\"drawn\", {})\r\n    }\r\n});\r\nvar _default = baseWidget;\r\nexports.default = _default;\r\n(0, _helpers.replaceInherit)(baseWidget);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.column_fixing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_fixing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"columnFixing\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/core/plaque.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Plaque = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar math = Math;\r\nvar round = math.round;\r\nvar max = math.max;\r\nvar min = math.min;\r\nvar sin = math.sin;\r\nvar cos = math.cos;\r\nvar asin = math.asin;\r\nvar PI = math.PI;\r\nvar buildPath = function() {\r\n    for (var _len = arguments.length, points = new Array(_len), _key = 0; _key < _len; _key++) {\r\n        points[_key] = arguments[_key]\r\n    }\r\n    return points.join(\"\")\r\n};\r\n\r\nfunction getArc(cornerRadius, xDirection, yDirection) {\r\n    return \"a \".concat(cornerRadius, \" \").concat(cornerRadius, \" 0 0 1 \").concat(xDirection * cornerRadius, \" \").concat(yDirection * cornerRadius)\r\n}\r\n\r\nfunction getAbsoluteArc(cornerRadius, x, y) {\r\n    return \"A \".concat(cornerRadius, \" \").concat(cornerRadius, \" 0 0 1 \").concat(x, \" \").concat(y)\r\n}\r\n\r\nfunction rotateX(x, y, angle, x0, y0) {\r\n    return (x - x0) * round(cos(angle)) + (y - y0) * round(sin(angle)) + x0\r\n}\r\n\r\nfunction rotateY(x, y, angle, x0, y0) {\r\n    return -(x - x0) * round(sin(angle)) + (y - y0) * round(cos(angle)) + y0\r\n}\r\n\r\nfunction rotateSize(options, angle) {\r\n    if (angle % 90 === 0 && angle % 180 !== 0) {\r\n        return {\r\n            width: options.height,\r\n            height: options.width\r\n        }\r\n    }\r\n    return options\r\n}\r\n\r\nfunction getCloudAngle(_ref, x, y, anchorX, anchorY) {\r\n    var width = _ref.width,\r\n        height = _ref.height;\r\n    var halfWidth = width / 2;\r\n    var halfHeight = height / 2;\r\n    var xr = Math.ceil(x + halfWidth);\r\n    var xl = Math.floor(x - halfWidth);\r\n    var yt = Math.floor(y - halfHeight);\r\n    var yb = Math.ceil(y + halfHeight);\r\n    if (anchorX < xl && anchorY < yt || anchorX >= xl && anchorX <= xr && anchorY < yt) {\r\n        return 270\r\n    }\r\n    if (anchorX > xr && anchorY > yb || anchorX >= xl && anchorX <= xr && anchorY > yb) {\r\n        return 90\r\n    } else {\r\n        if (anchorX < xl && anchorY > yb || anchorX < xl && anchorY >= yt && anchorY <= yb) {\r\n            return 180\r\n        }\r\n    }\r\n    return 0\r\n}\r\n\r\nfunction getCloudPoints(_ref2, x, y, anchorX, anchorY, _ref3, bounded) {\r\n    var width = _ref2.width,\r\n        height = _ref2.height;\r\n    var arrowWidth = _ref3.arrowWidth,\r\n        _ref3$cornerRadius = _ref3.cornerRadius,\r\n        cornerRadius = void 0 === _ref3$cornerRadius ? 0 : _ref3$cornerRadius;\r\n    var halfArrowWidth = arrowWidth / 2;\r\n    var halfWidth = width / 2;\r\n    var halfHeight = height / 2;\r\n    var xr = Math.ceil(x + halfWidth);\r\n    var xl = Math.floor(x - halfWidth);\r\n    var yt = Math.floor(y - halfHeight);\r\n    var yb = Math.ceil(y + halfHeight);\r\n    var leftTopCorner = [xl, yt];\r\n    var rightTopCorner = [xr, yt];\r\n    var rightBottomCorner = [xr, yb];\r\n    var leftBottomCorner = [xl, yb];\r\n    var arrowX = anchorX <= xl ? xl : xr <= anchorX ? xr : anchorX;\r\n    var arrowY = anchorY <= yt ? yt : yb <= anchorY ? yb : anchorY;\r\n    var arrowBaseBottom = min(arrowY + halfArrowWidth, yb);\r\n    var arrowBaseTop = max(arrowY - halfArrowWidth, yt);\r\n    var arrowBaseLeft = max(arrowX - halfArrowWidth, xl);\r\n    cornerRadius = Math.min(width / 2, height / 2, cornerRadius);\r\n    var points;\r\n    leftTopCorner[1] += cornerRadius;\r\n    rightTopCorner[0] -= cornerRadius;\r\n    rightBottomCorner[1] -= cornerRadius;\r\n    leftBottomCorner[0] += cornerRadius;\r\n    if (!bounded || xl <= anchorX && anchorX <= xr && yt <= anchorY && anchorY <= yb) {\r\n        points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), \"L\", rightTopCorner, getArc(cornerRadius, 1, 1), \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1), \"L\", leftBottomCorner, getArc(cornerRadius, -1, -1))\r\n    } else {\r\n        if (anchorX > xr && anchorY < yt) {\r\n            var arrowAngle = arrowWidth / cornerRadius || 0;\r\n            var angle = PI / 4 + arrowAngle / 2;\r\n            var endAngle = PI / 4 - arrowAngle / 2;\r\n            var arrowEndPointX = rightTopCorner[0] + cos(endAngle) * cornerRadius;\r\n            var arrowEndPointY = rightTopCorner[1] + (1 - sin(endAngle)) * cornerRadius;\r\n            var arrowArc = buildPath(\"L\", rightTopCorner, getArc(cornerRadius, cos(angle), 1 - sin(angle)), \"L\", [anchorX, anchorY, arrowEndPointX, arrowEndPointY], getAbsoluteArc(cornerRadius, rightTopCorner[0] + cornerRadius, rightTopCorner[1] + cornerRadius));\r\n            if (Math.abs(angle) > PI / 2) {\r\n                arrowArc = buildPath(\"L\", [arrowBaseLeft, yt, anchorX, anchorY, xr, arrowBaseBottom])\r\n            }\r\n            points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), arrowArc, \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1), \"L\", leftBottomCorner, getArc(cornerRadius, -1, -1))\r\n        } else {\r\n            if (anchorX > xr && anchorY >= yt && anchorY <= yb) {\r\n                var _arrowArc;\r\n                if (arrowBaseTop >= rightTopCorner[1] + cornerRadius && arrowBaseBottom <= rightBottomCorner[1]) {\r\n                    _arrowArc = buildPath(getArc(cornerRadius, 1, 1), \"L\", [xr, arrowBaseTop, anchorX, anchorY, xr, arrowBaseBottom], \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1))\r\n                } else {\r\n                    if (arrowBaseTop < rightTopCorner[1] + cornerRadius && arrowBaseBottom >= rightTopCorner[1] + cornerRadius && arrowBaseBottom <= rightBottomCorner[1]) {\r\n                        var arrowWidthRest = rightTopCorner[1] + cornerRadius - arrowBaseTop;\r\n                        var _angle = arrowWidthRest / cornerRadius;\r\n                        var arrowBaseTopX = rightTopCorner[0] + cos(_angle) * cornerRadius;\r\n                        var arrowBaseTopY = rightTopCorner[1] + (1 - sin(_angle)) * cornerRadius;\r\n                        _arrowArc = buildPath(getArc(cornerRadius, cos(_angle), 1 - sin(_angle)), \"L\", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, xr, arrowBaseBottom], \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1))\r\n                    } else {\r\n                        if (arrowBaseTop < rightTopCorner[1] + cornerRadius && arrowBaseBottom < rightTopCorner[1] + cornerRadius) {\r\n                            var _arrowWidthRest = rightTopCorner[1] + cornerRadius - arrowBaseTop;\r\n                            var _arrowAngle = _arrowWidthRest / cornerRadius;\r\n                            var _angle2 = _arrowAngle;\r\n                            var _arrowBaseTopX = rightTopCorner[0] + cos(_angle2) * cornerRadius;\r\n                            var _arrowBaseTopY = rightTopCorner[1] + (1 - sin(_angle2)) * cornerRadius;\r\n                            var bottomAngle = Math.sin((rightTopCorner[1] + cornerRadius - arrowBaseBottom) / cornerRadius);\r\n                            var arrowBaseBottomX = rightTopCorner[0] + cornerRadius * cos(bottomAngle);\r\n                            var arrowBaseBottomY = rightTopCorner[1] + cornerRadius * (1 - sin(bottomAngle));\r\n                            _arrowArc = buildPath(getArc(cornerRadius, cos(_angle2), 1 - sin(_angle2)), \"L\", [_arrowBaseTopX, _arrowBaseTopY, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightTopCorner[0] + cornerRadius, rightTopCorner[1] + cornerRadius), \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1))\r\n                        } else {\r\n                            if (arrowBaseTop <= rightTopCorner[1] + cornerRadius && arrowBaseBottom >= rightBottomCorner[1]) {\r\n                                var topAngle = asin((rightTopCorner[1] + cornerRadius - arrowBaseTop) / cornerRadius);\r\n                                var _arrowBaseTopX2 = rightTopCorner[0] + cornerRadius * cos(topAngle);\r\n                                var _arrowBaseTopY2 = rightTopCorner[1] + cornerRadius * (1 - sin(topAngle));\r\n                                var _bottomAngle = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);\r\n                                var _arrowBaseBottomX = rightBottomCorner[0] + cornerRadius * (cos(_bottomAngle) - 1);\r\n                                var _arrowBaseBottomY = rightBottomCorner[1] + cornerRadius * sin(_bottomAngle);\r\n                                _arrowArc = buildPath(getArc(cornerRadius, cos(topAngle), 1 - sin(topAngle)), \"L\", [_arrowBaseTopX2, _arrowBaseTopY2, anchorX, anchorY, _arrowBaseBottomX, _arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))\r\n                            } else {\r\n                                if (arrowBaseTop > rightTopCorner[1] + cornerRadius && arrowBaseTop <= rightBottomCorner[1] && arrowBaseBottom > rightBottomCorner[1]) {\r\n                                    var _bottomAngle2 = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);\r\n                                    var _arrowBaseBottomX2 = rightBottomCorner[0] + cornerRadius * (cos(_bottomAngle2) - 1);\r\n                                    var _arrowBaseBottomY2 = rightBottomCorner[1] + cornerRadius * sin(_bottomAngle2);\r\n                                    _arrowArc = buildPath(getArc(cornerRadius, 1, 1), \"L\", [xr, arrowBaseTop, anchorX, anchorY, _arrowBaseBottomX2, _arrowBaseBottomY2], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))\r\n                                } else {\r\n                                    if (arrowBaseTop > rightTopCorner[1] + cornerRadius && arrowBaseBottom > rightBottomCorner[1]) {\r\n                                        var _bottomAngle3 = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);\r\n                                        var _arrowBaseBottomX3 = rightBottomCorner[0] + cornerRadius * (cos(_bottomAngle3) - 1);\r\n                                        var _arrowBaseBottomY3 = rightBottomCorner[1] + cornerRadius * sin(_bottomAngle3);\r\n                                        var _topAngle = asin((arrowBaseTop - rightBottomCorner[1]) / cornerRadius);\r\n                                        var _arrowBaseTopX3 = rightBottomCorner[0] + cornerRadius * (cos(_topAngle) - 1);\r\n                                        var _arrowBaseTopY3 = rightBottomCorner[1] + cornerRadius * sin(_topAngle);\r\n                                        _arrowArc = buildPath(getArc(cornerRadius, 1, 1), \"L\", rightBottomCorner, getArc(cornerRadius, cos(_topAngle) - 1, sin(_topAngle)), \"L\", [_arrowBaseTopX3, _arrowBaseTopY3, anchorX, anchorY, _arrowBaseBottomX3, _arrowBaseBottomY3], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), \"L\", rightTopCorner, _arrowArc, \"L\", leftBottomCorner, getArc(cornerRadius, -1, -1))\r\n            }\r\n        }\r\n    }\r\n    return buildPath(\"M\", points, \"Z\")\r\n}\r\nvar Plaque = function() {\r\n    function Plaque(options, widget, root, contentTemplate) {\r\n        var bounded = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : true;\r\n        var measureContent = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : function(_, g) {\r\n            return g.getBBox()\r\n        };\r\n        var moveContentGroup = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : function(_, g, x, y) {\r\n            return g.move(x, y)\r\n        };\r\n        _classCallCheck(this, Plaque);\r\n        this.widget = widget;\r\n        this.options = options;\r\n        this.root = root;\r\n        this.contentTemplate = contentTemplate;\r\n        this.bonded = bounded;\r\n        this.measureContent = measureContent;\r\n        this.moveContentGroup = moveContentGroup\r\n    }\r\n    _createClass(Plaque, [{\r\n        key: \"draw\",\r\n        value: function(_ref4) {\r\n            var _this = this;\r\n            var anchorX = _ref4.x,\r\n                anchorY = _ref4.y,\r\n                _ref4$canvas = _ref4.canvas,\r\n                canvas = void 0 === _ref4$canvas ? {} : _ref4$canvas,\r\n                offsetX = _ref4.offsetX,\r\n                offsetY = _ref4.offsetY,\r\n                _ref4$offset = _ref4.offset,\r\n                offset = void 0 === _ref4$offset ? 0 : _ref4$offset,\r\n                restProps = _objectWithoutProperties(_ref4, [\"x\", \"y\", \"canvas\", \"offsetX\", \"offsetY\", \"offset\"]);\r\n            var options = this.options;\r\n            var x = options.x,\r\n                y = options.y;\r\n            var bounds = {\r\n                xl: canvas.left,\r\n                xr: canvas.width - canvas.right,\r\n                width: canvas.width - canvas.right - canvas.left,\r\n                yt: canvas.top,\r\n                yb: canvas.height - canvas.bottom,\r\n                height: canvas.height - canvas.bottom - canvas.top\r\n            };\r\n            if (!((0, _type.isDefined)(anchorX) && (0, _type.isDefined)(anchorY)) && !((0, _type.isDefined)(x) && (0, _type.isDefined)(y))) {\r\n                return false\r\n            }\r\n            if ((0, _type.isDefined)(anchorX) && (anchorX < bounds.xl || bounds.xr < anchorX || anchorY < bounds.yt || bounds.yb < anchorY)) {\r\n                return false\r\n            }\r\n            if (!this._root) {\r\n                this._draw()\r\n            }\r\n            var shadowSettings = (0, _extend.extend)({\r\n                x: \"-50%\",\r\n                y: \"-50%\",\r\n                width: \"200%\",\r\n                height: \"200%\"\r\n            }, options.shadow);\r\n            var contentWidth = options.width > 0 ? options.width : null;\r\n            var contentHeight = options.height > 0 ? options.height : null;\r\n            var onRender = function() {\r\n                var _this$_root;\r\n                var bBox = _this._contentBBox = _this.measureContent(_this.widget, _this._contentGroup);\r\n                var size = _this._size = {\r\n                    width: max(contentWidth, bBox.width) + 2 * options.paddingLeftRight,\r\n                    height: max(contentHeight, bBox.height) + 2 * options.paddingTopBottom,\r\n                    offset: offset\r\n                };\r\n                var xOff = shadowSettings.offsetX;\r\n                var yOff = shadowSettings.offsetY;\r\n                var blur = 2 * shadowSettings.blur + 1;\r\n                var lm = max(blur - xOff, 0);\r\n                var rm = max(blur + xOff, 0);\r\n                var tm = max(blur - yOff, 0);\r\n                var bm = max(blur + yOff, 0);\r\n                _this.margins = {\r\n                    lm: lm,\r\n                    rm: rm,\r\n                    tm: tm,\r\n                    bm: bm\r\n                };\r\n                if (!(0, _type.isDefined)(x)) {\r\n                    if ((0, _type.isDefined)(offsetX)) {\r\n                        x = anchorX + offsetX\r\n                    } else {\r\n                        if (bounds.width < size.width) {\r\n                            x = round(bounds.xl + bounds.width / 2)\r\n                        } else {\r\n                            x = min(max(anchorX, Math.ceil(bounds.xl + size.width / 2 + lm)), Math.floor(bounds.xr - size.width / 2 - rm))\r\n                        }\r\n                    }\r\n                } else {\r\n                    x += offsetX || 0;\r\n                    if (!(0, _type.isDefined)(anchorX)) {\r\n                        anchorX = x\r\n                    }\r\n                }\r\n                if (!(0, _type.isDefined)(y)) {\r\n                    if ((0, _type.isDefined)(offsetY)) {\r\n                        y = anchorY + offsetY\r\n                    } else {\r\n                        var y_top = anchorY - options.arrowLength - size.height / 2 - offset;\r\n                        var y_bottom = anchorY + options.arrowLength + size.height / 2 + offset;\r\n                        if (bounds.height < size.height + options.arrowLength) {\r\n                            y = round(bounds.yt + size.height / 2)\r\n                        } else {\r\n                            if (y_top - size.height / 2 - tm < bounds.yt) {\r\n                                if (y_bottom + size.height / 2 + bm < bounds.yb) {\r\n                                    y = y_bottom;\r\n                                    anchorY += offset\r\n                                } else {\r\n                                    y = round(bounds.yt + size.height / 2)\r\n                                }\r\n                            } else {\r\n                                y = y_top;\r\n                                anchorY -= offset\r\n                            }\r\n                        }\r\n                    }\r\n                } else {\r\n                    y += offsetY || 0;\r\n                    if (!(0, _type.isDefined)(anchorY)) {\r\n                        anchorY = y + size.height / 2\r\n                    }\r\n                }\r\n                _this.anchorX = anchorX;\r\n                _this.anchorY = anchorY;\r\n                _this.move(x, y);\r\n                null === (_this$_root = _this._root) || void 0 === _this$_root ? void 0 : _this$_root.append(_this.root)\r\n            };\r\n            if (this.contentTemplate.render) {\r\n                this.contentTemplate.render({\r\n                    model: options,\r\n                    container: this._contentGroup.element,\r\n                    onRendered: onRender\r\n                })\r\n            } else {\r\n                return this.contentTemplate(_objectSpread({\r\n                    group: this._contentGroup,\r\n                    onRender: onRender\r\n                }, restProps))\r\n            }\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_draw\",\r\n        value: function() {\r\n            var renderer = this.widget._renderer;\r\n            var options = this.options;\r\n            var shadowSettings = (0, _extend.extend)({\r\n                x: \"-50%\",\r\n                y: \"-50%\",\r\n                width: \"200%\",\r\n                height: \"200%\"\r\n            }, options.shadow);\r\n            var shadow = this._shadow = renderer.shadowFilter().attr(shadowSettings);\r\n            var cloudSettings = {\r\n                opacity: options.opacity,\r\n                \"stroke-width\": 0,\r\n                fill: options.color\r\n            };\r\n            var borderOptions = options.border || {};\r\n            if (borderOptions.visible) {\r\n                (0, _extend.extend)(cloudSettings, {\r\n                    \"stroke-width\": borderOptions.width,\r\n                    stroke: borderOptions.color,\r\n                    \"stroke-opacity\": borderOptions.opacity,\r\n                    dashStyle: borderOptions.dashStyle\r\n                })\r\n            }\r\n            var group = this._root = renderer.g().append(this.root);\r\n            if (options.type) {\r\n                group.attr({\r\n                    \"class\": \"dxc-\".concat(options.type, \"-annotation\")\r\n                })\r\n            }\r\n            var cloudGroup = renderer.g().attr({\r\n                filter: shadow.id\r\n            }).append(group);\r\n            this._cloud = renderer.path([], \"area\").attr(cloudSettings).sharp().append(cloudGroup);\r\n            this._contentGroup = renderer.g().append(group)\r\n        }\r\n    }, {\r\n        key: \"getBBox\",\r\n        value: function() {\r\n            var size = this._size || {};\r\n            var margins = this.margins || {};\r\n            var rotationAngle = getCloudAngle(size, this.x, this.y, this.anchorX, this.anchorY);\r\n            return {\r\n                x: Math.floor(this.x - size.width / 2 - margins.lm),\r\n                y: Math.floor(this.y - size.height / 2 - margins.tm - (270 === rotationAngle ? this.options.arrowLength : 0)),\r\n                width: size.width + margins.lm + margins.rm,\r\n                height: size.height + margins.tm + margins.bm + (90 === rotationAngle || 270 === rotationAngle ? this.options.arrowLength : 0)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"clear\",\r\n        value: function() {\r\n            if (this._root) {\r\n                this._root.remove();\r\n                this._shadow.remove();\r\n                this._root = null\r\n            }\r\n            return this\r\n        }\r\n    }, {\r\n        key: \"customizeCloud\",\r\n        value: function(attr) {\r\n            if (this._cloud) {\r\n                this._cloud.attr(attr)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"moveRoot\",\r\n        value: function(x, y) {\r\n            if (this._root) {\r\n                this._root.move(x, y)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"move\",\r\n        value: function(x, y) {\r\n            x = round(x);\r\n            y = round(y);\r\n            this.x = x;\r\n            this.y = y;\r\n            var rotationAngle = getCloudAngle(this._size, x, y, this.anchorX, this.anchorY);\r\n            var radRotationAngle = rotationAngle * PI / 180;\r\n            this._cloud.attr({\r\n                d: getCloudPoints(rotateSize(this._size, rotationAngle), x, y, rotateX(this.anchorX, this.anchorY, radRotationAngle, x, y), rotateY(this.anchorX, this.anchorY, radRotationAngle, x, y), this.options, this.bonded)\r\n            }).rotate(rotationAngle, x, y);\r\n            this.moveContentGroup(this.widget, this._contentGroup, x - this._contentBBox.x - this._contentBBox.width / 2, y - this._contentBBox.y - this._contentBBox.height / 2)\r\n        }\r\n    }, {\r\n        key: \"hitTest\",\r\n        value: function(x, y) {\r\n            var _ref5 = this._size || {},\r\n                width = _ref5.width,\r\n                height = _ref5.height;\r\n            return Math.abs(x - this.x) <= width / 2 && Math.abs(y - this.y) <= height / 2\r\n        }\r\n    }]);\r\n    return Plaque\r\n}();\r\nexports.Plaque = Plaque;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.ColumnsView = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _element = require(\"../../core/element\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar iteratorUtils = _interopRequireWildcard(require(\"../../core/utils/iterator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core3 = _interopRequireDefault(require(\"./ui.grid_core.column_state_mixin\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCROLL_CONTAINER_CLASS = \"scroll-container\";\r\nvar GROUP_SPACE_CLASS = \"group-space\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar TABLE_CLASS = \"table\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar FILTER_ROW_CLASS = \"filter-row\";\r\nvar CELL_UPDATED_ANIMATION_CLASS = \"cell-updated-animation\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"0.0001px\";\r\nvar CELL_HINT_VISIBLE = \"dxCellHintVisible\";\r\nvar FORM_FIELD_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar appendElementTemplate = {\r\n    render: function(options) {\r\n        options.container.append(options.content)\r\n    }\r\n};\r\nvar subscribeToRowEvents = function(that, $table) {\r\n    var touchTarget;\r\n    var touchCurrentTarget;\r\n    var timeoutId;\r\n\r\n    function clearTouchTargets(timeout) {\r\n        return setTimeout(function() {\r\n            touchTarget = touchCurrentTarget = null\r\n        }, timeout)\r\n    }\r\n    _events_engine.default.on($table, \"touchstart touchend\", \".dx-row\", function(e) {\r\n        clearTimeout(timeoutId);\r\n        if (\"touchstart\" === e.type) {\r\n            touchTarget = e.target;\r\n            touchCurrentTarget = e.currentTarget;\r\n            timeoutId = clearTouchTargets(1e3)\r\n        } else {\r\n            timeoutId = clearTouchTargets()\r\n        }\r\n    });\r\n    _events_engine.default.on($table, [_click.name, _double_click.name, _pointer.default.down].join(\" \"), \".dx-row\", {\r\n        useNative: that._isNativeClick()\r\n    }, that.createAction(function(e) {\r\n        var event = e.event;\r\n        if (touchTarget) {\r\n            event.target = touchTarget;\r\n            event.currentTarget = touchCurrentTarget\r\n        }\r\n        if (!(0, _renderer.default)(event.target).closest(\"a\").length) {\r\n            e.rowIndex = that.getRowIndex(event.currentTarget);\r\n            if (e.rowIndex >= 0) {\r\n                e.rowElement = (0, _element.getPublicElement)((0, _renderer.default)(event.currentTarget));\r\n                e.columns = that.getColumns();\r\n                if (event.type === _pointer.default.down) {\r\n                    that._rowPointerDown(e)\r\n                } else {\r\n                    if (event.type === _click.name) {\r\n                        that._rowClick(e)\r\n                    } else {\r\n                        that._rowDblClick(e)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }))\r\n};\r\nvar getWidthStyle = function(width) {\r\n    if (\"auto\" === width) {\r\n        return \"\"\r\n    }\r\n    return (0, _type.isNumeric)(width) ? width + \"px\" : width\r\n};\r\nvar setCellWidth = function(cell, column, width) {\r\n    cell.style.width = cell.style.maxWidth = \"auto\" === column.width ? \"\" : width\r\n};\r\nvar copyAttributes = function(element, newElement) {\r\n    if (!element || !newElement) {\r\n        return\r\n    }\r\n    var oldAttributes = element.attributes;\r\n    var newAttributes = newElement.attributes;\r\n    var i;\r\n    for (i = 0; i < oldAttributes.length; i++) {\r\n        var name = oldAttributes[i].nodeName;\r\n        if (!newElement.hasAttribute(name)) {\r\n            element.removeAttribute(name)\r\n        }\r\n    }\r\n    for (i = 0; i < newAttributes.length; i++) {\r\n        element.setAttribute(newAttributes[i].nodeName, newAttributes[i].nodeValue)\r\n    }\r\n};\r\nvar ColumnsView = _uiGrid_core.default.View.inherit(_uiGrid_core3.default).inherit({\r\n    _createScrollableOptions: function() {\r\n        var that = this;\r\n        var scrollingOptions = that.option(\"scrolling\");\r\n        var useNativeScrolling = that.option(\"scrolling.useNative\");\r\n        var options = (0, _extend.extend)({\r\n            pushBackValue: 0\r\n        }, scrollingOptions, {\r\n            direction: \"both\",\r\n            bounceEnabled: false,\r\n            useKeyboard: false\r\n        });\r\n        if (void 0 === useNativeScrolling) {\r\n            useNativeScrolling = true\r\n        }\r\n        if (\"auto\" === useNativeScrolling) {\r\n            delete options.useNative;\r\n            delete options.useSimulatedScrollbar\r\n        } else {\r\n            options.useNative = !!useNativeScrolling;\r\n            options.useSimulatedScrollbar = !useNativeScrolling\r\n        }\r\n        return options\r\n    },\r\n    _updateCell: function($cell, parameters) {\r\n        if (parameters.rowType) {\r\n            this._cellPrepared($cell, parameters)\r\n        }\r\n    },\r\n    _createCell: function(options) {\r\n        var column = options.column;\r\n        var alignment = column.alignment || (0, _position.getDefaultAlignment)(this.option(\"rtlEnabled\"));\r\n        var cell = _dom_adapter.default.createElement(\"td\");\r\n        cell.style.textAlign = alignment;\r\n        var $cell = (0, _renderer.default)(cell);\r\n        if (\"data\" === options.rowType && column.headerId && !column.type) {\r\n            if (this.component.option(\"showColumnHeaders\")) {\r\n                this.setAria(\"describedby\", column.headerId, $cell)\r\n            }\r\n        }\r\n        if (column.cssClass) {\r\n            $cell.addClass(column.cssClass)\r\n        }\r\n        if (\"expand\" === column.command) {\r\n            $cell.addClass(column.cssClass);\r\n            $cell.addClass(this.addWidgetPrefix(GROUP_SPACE_CLASS))\r\n        }\r\n        if (column.colspan > 1) {\r\n            $cell.attr(\"colSpan\", column.colspan)\r\n        } else {\r\n            if (!column.isBand && \"auto\" !== column.visibleWidth && !this.option(\"legacyRendering\") && this.option(\"columnAutoWidth\")) {\r\n                if (column.width || column.minWidth) {\r\n                    cell.style.minWidth = getWidthStyle(column.minWidth || column.width)\r\n                }\r\n                if (column.width) {\r\n                    setCellWidth(cell, column, getWidthStyle(column.width))\r\n                }\r\n            }\r\n        }\r\n        return $cell\r\n    },\r\n    _createRow: function(rowObject) {\r\n        var $element = (0, _renderer.default)(\"<tr>\").addClass(ROW_CLASS);\r\n        this.setAria(\"role\", \"row\", $element);\r\n        return $element\r\n    },\r\n    _isAltRow: function(row) {\r\n        return row && row.dataIndex % 2 === 1\r\n    },\r\n    _createTable: function(columns, isAppend) {\r\n        var that = this;\r\n        var $table = (0, _renderer.default)(\"<table>\").addClass(that.addWidgetPrefix(TABLE_CLASS)).addClass(that.addWidgetPrefix(TABLE_FIXED_CLASS));\r\n        if (columns && !isAppend) {\r\n            $table.append(that._createColGroup(columns));\r\n            if (_browser.default.safari) {\r\n                $table.append((0, _renderer.default)(\"<thead>\").append(\"<tr>\"))\r\n            }\r\n            that.setAria(\"role\", \"presentation\", $table)\r\n        } else {\r\n            that.setAria(\"hidden\", true, $table)\r\n        }\r\n        this.setAria(\"role\", \"presentation\", (0, _renderer.default)(\"<tbody>\").appendTo($table));\r\n        if (isAppend) {\r\n            return $table\r\n        }\r\n        if (_browser.default.mozilla) {\r\n            _events_engine.default.on($table, \"mousedown\", \"td\", function(e) {\r\n                if (e.ctrlKey) {\r\n                    e.preventDefault()\r\n                }\r\n            })\r\n        }\r\n        if (that.option(\"cellHintEnabled\")) {\r\n            _events_engine.default.on($table, \"mousemove\", \".dx-row > td\", this.createAction(function(args) {\r\n                var e = args.event;\r\n                var $element = (0, _renderer.default)(e.target);\r\n                var $cell = (0, _renderer.default)(e.currentTarget);\r\n                var $row = $cell.parent();\r\n                var isDataRow = $row.hasClass(\"dx-data-row\");\r\n                var isHeaderRow = $row.hasClass(\"dx-header-row\");\r\n                var isGroupRow = $row.hasClass(GROUP_ROW_CLASS);\r\n                var isMasterDetailRow = $row.hasClass(DETAIL_ROW_CLASS);\r\n                var isFilterRow = $row.hasClass(that.addWidgetPrefix(FILTER_ROW_CLASS));\r\n                var visibleColumns = that._columnsController.getVisibleColumns();\r\n                var rowOptions = $row.data(\"options\");\r\n                var columnIndex = $cell.index();\r\n                var cellOptions = rowOptions && rowOptions.cells && rowOptions.cells[columnIndex];\r\n                var column = cellOptions ? cellOptions.column : visibleColumns[columnIndex];\r\n                var msieCorrection = _browser.default.msie ? 1 : 0;\r\n                if (!isMasterDetailRow && !isFilterRow && (!isDataRow || isDataRow && column && !column.cellTemplate) && (!isHeaderRow || isHeaderRow && column && !column.headerCellTemplate) && (!isGroupRow || isGroupRow && column && (void 0 === column.groupIndex || !column.groupCellTemplate))) {\r\n                    if ($element.data(CELL_HINT_VISIBLE)) {\r\n                        $element.removeAttr(\"title\");\r\n                        $element.data(CELL_HINT_VISIBLE, false)\r\n                    }\r\n                    var difference = $element[0].scrollWidth - $element[0].clientWidth - msieCorrection;\r\n                    if (difference > 0 && !(0, _type.isDefined)($element.attr(\"title\"))) {\r\n                        $element.attr(\"title\", $element.text());\r\n                        $element.data(CELL_HINT_VISIBLE, true)\r\n                    }\r\n                }\r\n            }))\r\n        }\r\n        var getOptions = function(event) {\r\n            var $cell = (0, _renderer.default)(event.currentTarget);\r\n            var $fieldItemContent = (0, _renderer.default)(event.target).closest(\".\" + FORM_FIELD_ITEM_CONTENT_CLASS);\r\n            var rowOptions = $cell.parent().data(\"options\");\r\n            var options = rowOptions && rowOptions.cells && rowOptions.cells[$cell.index()];\r\n            if (!$cell.closest(\"table\").is(event.delegateTarget)) {\r\n                return\r\n            }\r\n            var resultOptions = (0, _extend.extend)({}, options, {\r\n                cellElement: (0, _element.getPublicElement)($cell),\r\n                event: event,\r\n                eventType: event.type\r\n            });\r\n            if ($fieldItemContent.length) {\r\n                var formItemOptions = $fieldItemContent.data(\"dx-form-item\");\r\n                if (formItemOptions.column) {\r\n                    resultOptions.column = formItemOptions.column;\r\n                    resultOptions.columnIndex = that._columnsController.getVisibleIndex(resultOptions.column.index)\r\n                }\r\n            }\r\n            return resultOptions\r\n        };\r\n        _events_engine.default.on($table, \"mouseover\", \".dx-row > td\", function(e) {\r\n            var options = getOptions(e);\r\n            options && that.executeAction(\"onCellHoverChanged\", options)\r\n        });\r\n        _events_engine.default.on($table, \"mouseout\", \".dx-row > td\", function(e) {\r\n            var options = getOptions(e);\r\n            options && that.executeAction(\"onCellHoverChanged\", options)\r\n        });\r\n        _events_engine.default.on($table, _click.name, \".dx-row > td\", function(e) {\r\n            var options = getOptions(e);\r\n            options && that.executeAction(\"onCellClick\", options)\r\n        });\r\n        _events_engine.default.on($table, _double_click.name, \".dx-row > td\", function(e) {\r\n            var options = getOptions(e);\r\n            options && that.executeAction(\"onCellDblClick\", options)\r\n        });\r\n        subscribeToRowEvents(that, $table);\r\n        return $table\r\n    },\r\n    _isNativeClick: _common.noop,\r\n    _rowPointerDown: _common.noop,\r\n    _rowClick: _common.noop,\r\n    _rowDblClick: _common.noop,\r\n    _createColGroup: function(columns) {\r\n        var colgroupElement = (0, _renderer.default)(\"<colgroup>\");\r\n        for (var i = 0; i < columns.length; i++) {\r\n            var colspan = columns[i].colspan || 1;\r\n            for (var j = 0; j < colspan; j++) {\r\n                colgroupElement.append(this._createCol(columns[i]))\r\n            }\r\n        }\r\n        return colgroupElement\r\n    },\r\n    _createCol: function(column) {\r\n        var width = column.visibleWidth || column.width;\r\n        if (\"adaptiveHidden\" === width) {\r\n            width = HIDDEN_COLUMNS_WIDTH\r\n        }\r\n        var col = (0, _renderer.default)(\"<col>\");\r\n        (0, _style.setWidth)(col, width);\r\n        return col\r\n    },\r\n    renderDelayedTemplates: function() {\r\n        var delayedTemplates = this._delayedTemplates;\r\n        var syncTemplates = delayedTemplates.filter(function(template) {\r\n            return !template.async\r\n        });\r\n        var asyncTemplates = delayedTemplates.filter(function(template) {\r\n            return template.async\r\n        });\r\n        this._delayedTemplates = [];\r\n        this._renderDelayedTemplatesCore(syncTemplates);\r\n        this._renderDelayedTemplatesCoreAsync(asyncTemplates)\r\n    },\r\n    _renderDelayedTemplatesCoreAsync: function(templates) {\r\n        var that = this;\r\n        if (templates.length) {\r\n            (0, _window.getWindow)().setTimeout(function() {\r\n                that._renderDelayedTemplatesCore(templates, true)\r\n            })\r\n        }\r\n    },\r\n    _renderDelayedTemplatesCore: function(templates, isAsync) {\r\n        var date = new Date;\r\n        while (templates.length) {\r\n            var templateParameters = templates.shift();\r\n            var options = templateParameters.options;\r\n            var doc = _dom_adapter.default.getDocument();\r\n            if (!isAsync || (0, _renderer.default)(options.container).closest(doc).length) {\r\n                templateParameters.template.render(options)\r\n            }\r\n            if (isAsync && new Date - date > 30) {\r\n                this._renderDelayedTemplatesCoreAsync(templates);\r\n                break\r\n            }\r\n        }\r\n        if (!templates.length && this._delayedTemplates.length) {\r\n            this.renderDelayedTemplates()\r\n        }\r\n    },\r\n    _processTemplate: function(template) {\r\n        var that = this;\r\n        var renderingTemplate;\r\n        if (template && template.render && !(0, _type.isRenderer)(template)) {\r\n            renderingTemplate = {\r\n                allowRenderToDetachedContainer: template.allowRenderToDetachedContainer,\r\n                render: function(options) {\r\n                    template.render(options.container, options.model);\r\n                    options.deferred && options.deferred.resolve()\r\n                }\r\n            }\r\n        } else {\r\n            if ((0, _type.isFunction)(template)) {\r\n                renderingTemplate = {\r\n                    render: function(options) {\r\n                        var renderedTemplate = template((0, _element.getPublicElement)(options.container), options.model);\r\n                        if (renderedTemplate && (renderedTemplate.nodeType || (0, _type.isRenderer)(renderedTemplate))) {\r\n                            options.container.append(renderedTemplate)\r\n                        }\r\n                        options.deferred && options.deferred.resolve()\r\n                    }\r\n                }\r\n            } else {\r\n                var templateID = (0, _type.isString)(template) ? template : (0, _renderer.default)(template).attr(\"id\");\r\n                if (!templateID) {\r\n                    renderingTemplate = that.getTemplate(template)\r\n                } else {\r\n                    if (!that._templatesCache[templateID]) {\r\n                        that._templatesCache[templateID] = that.getTemplate(template)\r\n                    }\r\n                    renderingTemplate = that._templatesCache[templateID]\r\n                }\r\n            }\r\n        }\r\n        return renderingTemplate\r\n    },\r\n    renderTemplate: function(container, template, options, allowRenderToDetachedContainer) {\r\n        var that = this;\r\n        var renderingTemplate = that._processTemplate(template, options);\r\n        var column = options.column;\r\n        var isDataRow = \"data\" === options.rowType;\r\n        var templateDeferred = new _deferred.Deferred;\r\n        var templateOptions = {\r\n            container: container,\r\n            model: options,\r\n            deferred: templateDeferred,\r\n            onRendered: function() {\r\n                templateDeferred.resolve()\r\n            }\r\n        };\r\n        if (renderingTemplate) {\r\n            options.component = that.component;\r\n            var async = column && (column.renderAsync && isDataRow || that.option(\"renderAsync\") && (false !== column.renderAsync && (column.command || column.showEditorAlways) && isDataRow || \"filter\" === options.rowType));\r\n            if ((renderingTemplate.allowRenderToDetachedContainer || allowRenderToDetachedContainer) && !async) {\r\n                renderingTemplate.render(templateOptions)\r\n            } else {\r\n                that._delayedTemplates.push({\r\n                    template: renderingTemplate,\r\n                    options: templateOptions,\r\n                    async: async\r\n                })\r\n            }\r\n        } else {\r\n            templateDeferred.reject()\r\n        }\r\n        return templateDeferred.promise()\r\n    },\r\n    _getBodies: function(tableElement) {\r\n        return (0, _renderer.default)(tableElement).children(\"tbody\").not(\".dx-header\").not(\".dx-footer\")\r\n    },\r\n    _wrapRowIfNeed: function($table, $row) {\r\n        var $tBodies = this.option(\"rowTemplate\") && this._getBodies(this._tableElement || $table);\r\n        if ($tBodies && $tBodies.filter(\".\" + ROW_CLASS).length) {\r\n            var $tbody = (0, _renderer.default)(\"<tbody>\").addClass($row.attr(\"class\"));\r\n            this.setAria(\"role\", \"presentation\", $tbody);\r\n            return $tbody.append($row)\r\n        }\r\n        return $row\r\n    },\r\n    _appendRow: function($table, $row, appendTemplate) {\r\n        appendTemplate = appendTemplate || appendElementTemplate;\r\n        appendTemplate.render({\r\n            content: $row,\r\n            container: $table\r\n        })\r\n    },\r\n    _resizeCore: function() {\r\n        var scrollLeft = this._scrollLeft;\r\n        if (scrollLeft >= 0) {\r\n            this._scrollLeft = 0;\r\n            this.scrollTo({\r\n                left: scrollLeft\r\n            })\r\n        }\r\n    },\r\n    _renderCore: function(e) {\r\n        var $root = this.element().parent();\r\n        if (!$root || $root.parent().length) {\r\n            this.renderDelayedTemplates(e)\r\n        }\r\n    },\r\n    _renderTable: function(options) {\r\n        options = options || {};\r\n        options.columns = this._columnsController.getVisibleColumns();\r\n        var changeType = options.change && options.change.changeType;\r\n        var $table = this._createTable(options.columns, \"append\" === changeType || \"prepend\" === changeType || \"update\" === changeType);\r\n        this._renderRows($table, options);\r\n        return $table\r\n    },\r\n    _renderRows: function($table, options) {\r\n        var that = this;\r\n        var rows = that._getRows(options.change);\r\n        var columnIndices = options.change && options.change.columnIndices || [];\r\n        var changeTypes = options.change && options.change.changeTypes || [];\r\n        for (var i = 0; i < rows.length; i++) {\r\n            that._renderRow($table, (0, _extend.extend)({\r\n                row: rows[i],\r\n                columnIndices: columnIndices[i],\r\n                changeType: changeTypes[i]\r\n            }, options))\r\n        }\r\n    },\r\n    _renderRow: function($table, options) {\r\n        if (!options.columnIndices) {\r\n            options.row.cells = []\r\n        }\r\n        var $row = this._createRow(options.row);\r\n        var $wrappedRow = this._wrapRowIfNeed($table, $row);\r\n        if (\"remove\" !== options.changeType) {\r\n            this._renderCells($row, options)\r\n        }\r\n        this._appendRow($table, $wrappedRow);\r\n        var rowOptions = (0, _extend.extend)({\r\n            columns: options.columns\r\n        }, options.row);\r\n        this._addWatchMethod(rowOptions, options.row);\r\n        this._rowPrepared($wrappedRow, rowOptions, options.row)\r\n    },\r\n    _needRenderCell: function(columnIndex, columnIndices) {\r\n        return !columnIndices || columnIndices.indexOf(columnIndex) >= 0\r\n    },\r\n    _renderCells: function($row, options) {\r\n        var that = this;\r\n        var columnIndex = 0;\r\n        var row = options.row;\r\n        var columns = options.columns;\r\n        for (var i = 0; i < columns.length; i++) {\r\n            if (this._needRenderCell(i, options.columnIndices)) {\r\n                that._renderCell($row, (0, _extend.extend)({\r\n                    column: columns[i],\r\n                    columnIndex: columnIndex,\r\n                    value: row.values && row.values[columnIndex],\r\n                    oldValue: row.oldValues && row.oldValues[columnIndex]\r\n                }, options))\r\n            }\r\n            if (columns[i].colspan > 1) {\r\n                columnIndex += columns[i].colspan\r\n            } else {\r\n                columnIndex++\r\n            }\r\n        }\r\n    },\r\n    _updateCells: function($rowElement, $newRowElement, columnIndices) {\r\n        var $cells = $rowElement.children();\r\n        var $newCells = $newRowElement.children();\r\n        var highlightChanges = this.option(\"highlightChanges\");\r\n        var cellUpdatedClass = this.addWidgetPrefix(CELL_UPDATED_ANIMATION_CLASS);\r\n        columnIndices.forEach(function(columnIndex, index) {\r\n            var $cell = $cells.eq(columnIndex);\r\n            var $newCell = $newCells.eq(index);\r\n            $cell.replaceWith($newCell);\r\n            if (highlightChanges && !$newCell.hasClass(\"dx-command-expand\")) {\r\n                $newCell.addClass(cellUpdatedClass)\r\n            }\r\n        });\r\n        copyAttributes($rowElement.get(0), $newRowElement.get(0))\r\n    },\r\n    _setCellAriaAttributes: function($cell, cellOptions) {\r\n        if (\"freeSpace\" !== cellOptions.rowType) {\r\n            this.setAria(\"selected\", false, $cell);\r\n            this.setAria(\"role\", \"gridcell\", $cell);\r\n            var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n            var ariaColIndex = cellOptions.columnIndex + columnIndexOffset + 1;\r\n            this.setAria(\"colindex\", ariaColIndex, $cell)\r\n        }\r\n    },\r\n    _renderCell: function($row, options) {\r\n        var cellOptions = this._getCellOptions(options);\r\n        if (options.columnIndices) {\r\n            if (options.row.cells) {\r\n                options.row.cells[cellOptions.columnIndex] = cellOptions\r\n            }\r\n        } else {\r\n            options.row.cells.push(cellOptions)\r\n        }\r\n        var $cell = this._createCell(cellOptions);\r\n        this._setCellAriaAttributes($cell, cellOptions);\r\n        this._renderCellContent($cell, cellOptions);\r\n        $row.get(0).appendChild($cell.get(0));\r\n        return $cell\r\n    },\r\n    _renderCellContent: function($cell, options) {\r\n        var _this = this;\r\n        var template = this._getCellTemplate(options);\r\n        (0, _deferred.when)(!template || this.renderTemplate($cell, template, options)).done(function() {\r\n            _this._updateCell($cell, options)\r\n        })\r\n    },\r\n    _getCellTemplate: function() {},\r\n    _getRows: function() {\r\n        return []\r\n    },\r\n    _getCellOptions: function(options) {\r\n        var cellOptions = {\r\n            column: options.column,\r\n            columnIndex: options.columnIndex,\r\n            rowType: options.row.rowType,\r\n            isAltRow: this._isAltRow(options.row)\r\n        };\r\n        this._addWatchMethod(cellOptions);\r\n        return cellOptions\r\n    },\r\n    _addWatchMethod: function(options, source) {\r\n        if (!this.option(\"repaintChangesOnly\")) {\r\n            return\r\n        }\r\n        var watchers = [];\r\n        source = source || options;\r\n        source.watch = source.watch || function(getter, updateFunc) {\r\n            var oldValue = getter(source.data);\r\n            var watcher = function(row) {\r\n                var newValue = getter(source.data);\r\n                if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {\r\n                    if (row) {\r\n                        updateFunc(newValue, oldValue)\r\n                    }\r\n                    oldValue = newValue\r\n                }\r\n            };\r\n            watchers.push(watcher);\r\n            var stopWatch = function() {\r\n                var index = watchers.indexOf(watcher);\r\n                if (index >= 0) {\r\n                    watchers.splice(index, 1)\r\n                }\r\n            };\r\n            return stopWatch\r\n        };\r\n        source.update = source.update || function(row) {\r\n            if (row) {\r\n                this.data = options.data = row.data;\r\n                this.rowIndex = options.rowIndex = row.rowIndex;\r\n                this.dataIndex = options.dataIndex = row.dataIndex;\r\n                this.isExpanded = options.isExpanded = row.isExpanded;\r\n                if (options.row) {\r\n                    options.row = row\r\n                }\r\n            }\r\n            watchers.forEach(function(watcher) {\r\n                watcher(row)\r\n            })\r\n        };\r\n        if (source !== options) {\r\n            options.watch = source.watch.bind(source)\r\n        }\r\n        return options\r\n    },\r\n    _cellPrepared: function(cell, options) {\r\n        options.cellElement = (0, _element.getPublicElement)((0, _renderer.default)(cell));\r\n        this.executeAction(\"onCellPrepared\", options)\r\n    },\r\n    _rowPrepared: function($row, options) {\r\n        (0, _element_data.data)($row.get(0), \"options\", options);\r\n        options.rowElement = (0, _element.getPublicElement)($row);\r\n        this.executeAction(\"onRowPrepared\", options)\r\n    },\r\n    _columnOptionChanged: function(e) {\r\n        var optionNames = e.optionNames;\r\n        if (_uiGrid_core2.default.checkChanges(optionNames, [\"width\", \"visibleWidth\"])) {\r\n            var visibleColumns = this._columnsController.getVisibleColumns();\r\n            var widths = iteratorUtils.map(visibleColumns, function(column) {\r\n                var width = column.visibleWidth || column.width;\r\n                return (0, _type.isDefined)(width) ? width : \"auto\"\r\n            });\r\n            this.setColumnWidths({\r\n                widths: widths,\r\n                optionNames: optionNames\r\n            });\r\n            return\r\n        }\r\n        if (!this._requireReady) {\r\n            this.render()\r\n        }\r\n    },\r\n    getCellIndex: function($cell) {\r\n        var cellIndex = $cell.length ? $cell[0].cellIndex : -1;\r\n        return cellIndex\r\n    },\r\n    getTableElements: function() {\r\n        return this._tableElement || (0, _renderer.default)()\r\n    },\r\n    _getTableElement: function() {\r\n        return this._tableElement\r\n    },\r\n    _setTableElement: function(tableElement) {\r\n        this._tableElement = tableElement\r\n    },\r\n    optionChanged: function(args) {\r\n        this.callBase(args);\r\n        switch (args.name) {\r\n            case \"cellHintEnabled\":\r\n            case \"onCellPrepared\":\r\n            case \"onRowPrepared\":\r\n            case \"onCellHoverChanged\":\r\n                this._invalidate(true, true);\r\n                args.handled = true\r\n        }\r\n    },\r\n    init: function() {\r\n        var that = this;\r\n        that._scrollLeft = -1;\r\n        that._columnsController = that.getController(\"columns\");\r\n        that._dataController = that.getController(\"data\");\r\n        that._delayedTemplates = [];\r\n        that._templatesCache = {};\r\n        that.createAction(\"onCellClick\");\r\n        that.createAction(\"onRowClick\");\r\n        that.createAction(\"onCellDblClick\");\r\n        that.createAction(\"onRowDblClick\");\r\n        that.createAction(\"onCellHoverChanged\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        });\r\n        that.createAction(\"onCellPrepared\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"],\r\n            category: \"rendering\"\r\n        });\r\n        that.createAction(\"onRowPrepared\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"],\r\n            category: \"rendering\",\r\n            afterExecute: function(e) {\r\n                that._afterRowPrepared(e)\r\n            }\r\n        });\r\n        that._columnsController.columnsChanged.add(that._columnOptionChanged.bind(that));\r\n        that._dataController && that._dataController.changed.add(that._handleDataChanged.bind(that))\r\n    },\r\n    _afterRowPrepared: _common.noop,\r\n    _handleDataChanged: function() {},\r\n    callbackNames: function() {\r\n        return [\"scrollChanged\"]\r\n    },\r\n    scrollTo: function(pos) {\r\n        var $element = this.element();\r\n        var $scrollContainer = $element && $element.children(\".\" + this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).not(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n        if ((0, _type.isDefined)(pos) && (0, _type.isDefined)(pos.left) && this._scrollLeft !== pos.left) {\r\n            this._scrollLeft = pos.left;\r\n            $scrollContainer && $scrollContainer.scrollLeft(pos.left)\r\n        }\r\n    },\r\n    _wrapTableInScrollContainer: function($table) {\r\n        var _this2 = this;\r\n        var $scrollContainer = (0, _renderer.default)(\"<div>\");\r\n        _events_engine.default.on($scrollContainer, \"scroll\", function() {\r\n            var scrollLeft = $scrollContainer.scrollLeft();\r\n            if (scrollLeft !== _this2._scrollLeft) {\r\n                _this2.scrollChanged.fire({\r\n                    left: scrollLeft\r\n                }, _this2.name)\r\n            }\r\n        });\r\n        $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_CLASS)).addClass(this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).append($table).appendTo(this.element());\r\n        this.setAria(\"role\", \"presentation\", $scrollContainer);\r\n        return $scrollContainer\r\n    },\r\n    _updateContent: function($newTableElement) {\r\n        this._setTableElement($newTableElement);\r\n        this._wrapTableInScrollContainer($newTableElement)\r\n    },\r\n    _findContentElement: _common.noop,\r\n    _getWidths: function($cellElements) {\r\n        var result = [];\r\n        var legacyRendering = this.option(\"legacyRendering\");\r\n        var width;\r\n        if ($cellElements) {\r\n            iteratorUtils.each($cellElements, function(index, item) {\r\n                width = item.offsetWidth;\r\n                if (item.getBoundingClientRect) {\r\n                    var clientRect = (0, _position.getBoundingRect)(item);\r\n                    if (clientRect.width > width - 1) {\r\n                        width = legacyRendering ? Math.ceil(clientRect.width) : clientRect.width\r\n                    }\r\n                }\r\n                result.push(width)\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    getColumnWidths: function($tableElement) {\r\n        var that = this;\r\n        var result = [];\r\n        var $rows;\r\n        var $cells;\r\n        (this.option(\"forceApplyBindings\") || _common.noop)();\r\n        $tableElement = $tableElement || that._getTableElement();\r\n        if ($tableElement) {\r\n            $rows = $tableElement.children(\"tbody\").children();\r\n            for (var i = 0; i < $rows.length; i++) {\r\n                var $row = $rows.eq(i);\r\n                var isRowVisible = \"none\" !== $row.get(0).style.display && !$row.hasClass(\"dx-state-invisible\");\r\n                if (!$row.is(\".\" + GROUP_ROW_CLASS) && !$row.is(\".\" + DETAIL_ROW_CLASS) && isRowVisible) {\r\n                    $cells = $row.children(\"td\");\r\n                    break\r\n                }\r\n            }\r\n            result = that._getWidths($cells)\r\n        }\r\n        return result\r\n    },\r\n    getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n        return columnIndex\r\n    },\r\n    setColumnWidths: function(_ref) {\r\n        var widths = _ref.widths,\r\n            $tableElement = _ref.$tableElement,\r\n            columns = _ref.columns,\r\n            fixed = _ref.fixed;\r\n        var $cols;\r\n        var width;\r\n        var minWidth;\r\n        var columnIndex;\r\n        var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n        var legacyRendering = this.option(\"legacyRendering\");\r\n        $tableElement = $tableElement || this._getTableElement();\r\n        if ($tableElement && $tableElement.length && widths) {\r\n            columnIndex = 0;\r\n            $cols = $tableElement.children(\"colgroup\").children(\"col\");\r\n            (0, _style.setWidth)($cols, \"auto\");\r\n            columns = columns || this.getColumns(null, $tableElement);\r\n            for (var i = 0; i < columns.length; i++) {\r\n                if (!legacyRendering && columnAutoWidth && !fixed) {\r\n                    width = columns[i].width;\r\n                    if (width && !columns[i].command) {\r\n                        width = columns[i].visibleWidth || width;\r\n                        width = getWidthStyle(width);\r\n                        minWidth = getWidthStyle(columns[i].minWidth || width);\r\n                        var $rows = $rows || $tableElement.children().children(\".dx-row\").not(\".\" + GROUP_ROW_CLASS).not(\".\" + DETAIL_ROW_CLASS);\r\n                        for (var rowIndex = 0; rowIndex < $rows.length; rowIndex++) {\r\n                            var visibleIndex = this.getVisibleColumnIndex(i, rowIndex);\r\n                            var cell = $rows[rowIndex].cells[visibleIndex];\r\n                            if (cell) {\r\n                                setCellWidth(cell, columns[i], width);\r\n                                cell.style.minWidth = minWidth\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                if (columns[i].colspan) {\r\n                    columnIndex += columns[i].colspan;\r\n                    continue\r\n                }\r\n                width = widths[columnIndex];\r\n                if (\"adaptiveHidden\" === width) {\r\n                    width = HIDDEN_COLUMNS_WIDTH\r\n                }\r\n                if (\"number\" === typeof width) {\r\n                    width = width.toFixed(3) + \"px\"\r\n                }(0, _style.setWidth)($cols.eq(columnIndex), (0, _type.isDefined)(width) ? width : \"auto\");\r\n                columnIndex++\r\n            }\r\n        }\r\n    },\r\n    getCellElements: function(rowIndex) {\r\n        return this._getCellElementsCore(rowIndex)\r\n    },\r\n    _getCellElementsCore: function(rowIndex) {\r\n        var $row = this._getRowElements().eq(rowIndex);\r\n        return $row.children()\r\n    },\r\n    _getCellElement: function(rowIndex, columnIdentifier) {\r\n        var that = this;\r\n        var $cell;\r\n        var $cells = that.getCellElements(rowIndex);\r\n        var columnVisibleIndex = that._getVisibleColumnIndex($cells, rowIndex, columnIdentifier);\r\n        if ($cells.length && columnVisibleIndex >= 0) {\r\n            $cell = $cells.eq(columnVisibleIndex)\r\n        }\r\n        if ($cell && $cell.length) {\r\n            return $cell\r\n        }\r\n    },\r\n    _getRowElement: function(rowIndex) {\r\n        var that = this;\r\n        var $rowElement = (0, _renderer.default)();\r\n        var $tableElements = that.getTableElements();\r\n        iteratorUtils.each($tableElements, function(_, tableElement) {\r\n            $rowElement = $rowElement.add(that._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex))\r\n        });\r\n        if ($rowElement.length) {\r\n            return $rowElement\r\n        }\r\n    },\r\n    getCellElement: function(rowIndex, columnIdentifier) {\r\n        return (0, _element.getPublicElement)(this._getCellElement(rowIndex, columnIdentifier))\r\n    },\r\n    getRowElement: function(rowIndex) {\r\n        var $rows = this._getRowElement(rowIndex);\r\n        var elements = [];\r\n        if ($rows && !(0, _element.getPublicElement)($rows).get) {\r\n            for (var i = 0; i < $rows.length; i++) {\r\n                elements.push($rows[i])\r\n            }\r\n        } else {\r\n            elements = $rows\r\n        }\r\n        return elements\r\n    },\r\n    _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n        if ((0, _type.isString)(columnIdentifier)) {\r\n            var columnIndex = this._columnsController.columnOption(columnIdentifier, \"index\");\r\n            return this._columnsController.getVisibleIndex(columnIndex)\r\n        }\r\n        return columnIdentifier\r\n    },\r\n    getColumnElements: function() {},\r\n    getColumns: function(rowIndex) {\r\n        return this._columnsController.getVisibleColumns(rowIndex)\r\n    },\r\n    getCell: function(cellPosition, rows) {\r\n        var $rows = rows || this._getRowElements();\r\n        var $cells;\r\n        if ($rows.length > 0 && cellPosition.rowIndex >= 0) {\r\n            if (\"virtual\" !== this.option(\"scrolling.mode\")) {\r\n                cellPosition.rowIndex = cellPosition.rowIndex < $rows.length ? cellPosition.rowIndex : $rows.length - 1\r\n            }\r\n            $cells = this.getCellElements(cellPosition.rowIndex);\r\n            if ($cells && $cells.length > 0) {\r\n                return $cells.eq($cells.length > cellPosition.columnIndex ? cellPosition.columnIndex : $cells.length - 1)\r\n            }\r\n        }\r\n    },\r\n    getRowsCount: function() {\r\n        var tableElement = this._getTableElement();\r\n        if (tableElement && 1 === tableElement.length) {\r\n            return tableElement[0].rows.length\r\n        }\r\n        return 0\r\n    },\r\n    _getRowElementsCore: function(tableElement) {\r\n        tableElement = tableElement || this._getTableElement();\r\n        if (tableElement) {\r\n            var tBodies = this.option(\"rowTemplate\") && tableElement.find(\"> tbody.\" + ROW_CLASS);\r\n            return tBodies && tBodies.length ? tBodies : tableElement.find(\"> tbody > .\" + ROW_CLASS + \", > .\" + ROW_CLASS)\r\n        }\r\n        return (0, _renderer.default)()\r\n    },\r\n    _getRowElements: function(tableElement) {\r\n        return this._getRowElementsCore(tableElement)\r\n    },\r\n    getRowIndex: function($row) {\r\n        return this._getRowElements().index($row)\r\n    },\r\n    getBoundingRect: function() {},\r\n    getName: function() {},\r\n    setScrollerSpacing: function(width) {\r\n        var that = this;\r\n        var $element = that.element();\r\n        var rtlEnabled = that.option(\"rtlEnabled\");\r\n        $element && $element.css({\r\n            paddingLeft: rtlEnabled ? width : \"\",\r\n            paddingRight: !rtlEnabled ? width : \"\"\r\n        })\r\n    },\r\n    isScrollbarVisible: function(isHorizontal) {\r\n        var $element = this.element();\r\n        var $tableElement = this._tableElement;\r\n        if ($element && $tableElement) {\r\n            return isHorizontal ? $tableElement.outerWidth() - $element.width() > 0 : $tableElement.outerHeight() - $element.height() > 0\r\n        }\r\n        return false\r\n    }\r\n});\r\nexports.ColumnsView = ColumnsView;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.sorting_mixin.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SORT_CLASS = \"dx-sort\";\r\nvar SORT_NONE_CLASS = \"dx-sort-none\";\r\nvar SORTUP_CLASS = \"dx-sort-up\";\r\nvar SORTDOWN_CLASS = \"dx-sort-down\";\r\nvar SORT_INDEX_CLASS = \"dx-sort-index\";\r\nvar SORT_INDEX_ICON_CLASS = \"dx-sort-index-icon\";\r\nvar HEADERS_ACTION_CLASS = \"action\";\r\nvar _default = {\r\n    _applyColumnState: function(options) {\r\n        var that = this;\r\n        var ariaSortState;\r\n        var $sortIndicator;\r\n        var sortingMode = that.option(\"sorting.mode\");\r\n        var rootElement = options.rootElement;\r\n        var column = options.column;\r\n        var $indicatorsContainer = that._getIndicatorContainer(rootElement);\r\n        if (\"sort\" === options.name) {\r\n            rootElement.find(\".\" + SORT_CLASS).remove();\r\n            !$indicatorsContainer.children().length && $indicatorsContainer.remove();\r\n            var isSortingAllowed = (\"single\" === sortingMode || \"multiple\" === sortingMode) && column.allowSorting;\r\n            if (!(0, _type.isDefined)(column.groupIndex) && (isSortingAllowed || (0, _type.isDefined)(column.sortOrder))) {\r\n                ariaSortState = \"asc\" === column.sortOrder ? \"ascending\" : \"descending\";\r\n                $sortIndicator = that.callBase(options).toggleClass(SORTUP_CLASS, \"asc\" === column.sortOrder).toggleClass(SORTDOWN_CLASS, \"desc\" === column.sortOrder);\r\n                var hasSeveralSortIndexes = that.getController && !!that.getController(\"columns\").columnOption(\"sortIndex:1\");\r\n                if (hasSeveralSortIndexes && that.option(\"sorting.showSortIndexes\") && column.sortIndex >= 0) {\r\n                    (0, _renderer.default)(\"<span>\").addClass(SORT_INDEX_ICON_CLASS).text(column.sortIndex + 1).appendTo($sortIndicator);\r\n                    $sortIndicator.addClass(SORT_INDEX_CLASS)\r\n                }\r\n                options.rootElement.addClass(that.addWidgetPrefix(HEADERS_ACTION_CLASS))\r\n            }\r\n            if (!(0, _type.isDefined)(column.sortOrder)) {\r\n                that.setAria(\"sort\", \"none\", rootElement)\r\n            } else {\r\n                that.setAria(\"sort\", ariaSortState, rootElement)\r\n            }\r\n            return $sortIndicator\r\n        } else {\r\n            return that.callBase(options)\r\n        }\r\n    },\r\n    _getIndicatorClassName: function(name) {\r\n        if (\"sort\" === name) {\r\n            return SORT_CLASS\r\n        } else {\r\n            if (\"sortIndex\" === name) {\r\n                return SORT_INDEX_ICON_CLASS\r\n            }\r\n        }\r\n        return this.callBase(name)\r\n    },\r\n    _renderIndicator: function(options) {\r\n        var column = options.column;\r\n        var $container = options.container;\r\n        var $indicator = options.indicator;\r\n        if (\"sort\" === options.name) {\r\n            var rtlEnabled = this.option(\"rtlEnabled\");\r\n            if (!(0, _type.isDefined)(column.sortOrder)) {\r\n                $indicator && $indicator.addClass(SORT_NONE_CLASS)\r\n            }\r\n            if ($container.children().length && (!rtlEnabled && \"left\" === options.columnAlignment || rtlEnabled && \"right\" === options.columnAlignment)) {\r\n                $container.prepend($indicator);\r\n                return\r\n            }\r\n        }\r\n        this.callBase(options)\r\n    },\r\n    _updateIndicator: function($cell, column, indicatorName) {\r\n        if (\"sort\" === indicatorName && (0, _type.isDefined)(column.groupIndex)) {\r\n            return\r\n        }\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    _getIndicatorElements: function($cell, returnAll) {\r\n        var $indicatorElements = this.callBase($cell);\r\n        return returnAll ? $indicatorElements : $indicatorElements && $indicatorElements.not(\".\" + SORT_NONE_CLASS)\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/cell.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.AllDayPanelCell = AllDayPanelCell;\r\nexports.viewFunction = void 0;\r\nvar _cell = require(\"../cell\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_cell.DateTableCellBase, _extends({}, viewModel.restAttributes, {\r\n        className: \"dx-scheduler-all-day-table-cell \".concat(viewModel.props.className),\r\n        startDate: viewModel.props.startDate,\r\n        endDate: viewModel.props.endDate,\r\n        groups: viewModel.props.groups,\r\n        groupIndex: viewModel.props.groupIndex,\r\n        allDay: true,\r\n        isFirstGroupCell: viewModel.props.isFirstGroupCell,\r\n        isLastGroupCell: viewModel.props.isLastGroupCell,\r\n        index: viewModel.props.index,\r\n        dataCellTemplate: viewModel.props.dataCellTemplate\r\n    }))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction AllDayPanelCell(props) {\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.allDay, props.children, props.className, props.contentTemplate, props.contentTemplateProps, props.dataCellTemplate, props.endDate, props.groupIndex, props.groups, props.index, props.isFirstGroupCell, props.isLastGroupCell, props.startDate, props.text, _objectWithoutProperties(props, [\"allDay\", \"children\", \"className\", \"contentTemplate\", \"contentTemplateProps\", \"dataCellTemplate\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate),\r\n            contentTemplate: getTemplate(props.contentTemplate)\r\n        }),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nAllDayPanelCell.defaultProps = _objectSpread({}, _cell.DateTableCellBaseProps);\r\n","/**\r\n * DevExtreme (ui/validation_summary.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _validation_engine = _interopRequireDefault(require(\"./validation_engine\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar VALIDATION_SUMMARY_CLASS = \"dx-validationsummary\";\r\nvar ITEM_CLASS = VALIDATION_SUMMARY_CLASS + \"-item\";\r\nvar ITEM_DATA_KEY = VALIDATION_SUMMARY_CLASS + \"-item-data\";\r\nvar ValidationSummary = _uiCollection_widget.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            focusStateEnabled: false,\r\n            noDataText: null\r\n        })\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            validationGroup: true\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initGroupRegistration()\r\n    },\r\n    _initGroupRegistration: function() {\r\n        var $element = this.$element();\r\n        var group = this.option(\"validationGroup\") || _validation_engine.default.findGroup($element, this._modelByElement($element));\r\n        var groupConfig = _validation_engine.default.addGroup(group);\r\n        this._unsubscribeGroup();\r\n        this._groupWasInit = true;\r\n        this._validationGroup = group;\r\n        this.groupSubscription = this._groupValidationHandler.bind(this);\r\n        groupConfig.on(\"validated\", this.groupSubscription)\r\n    },\r\n    _unsubscribeGroup: function() {\r\n        var groupConfig = _validation_engine.default.getGroupConfig(this._validationGroup);\r\n        groupConfig && groupConfig.off(\"validated\", this.groupSubscription)\r\n    },\r\n    _getOrderedItems: function(validators, items) {\r\n        var orderedItems = [];\r\n        (0, _iterator.each)(validators, function(_, validator) {\r\n            var foundItems = (0, _common.grep)(items, function(item) {\r\n                if (item.validator === validator) {\r\n                    return true\r\n                }\r\n            });\r\n            if (foundItems.length) {\r\n                orderedItems = orderedItems.concat(foundItems)\r\n            }\r\n        });\r\n        return orderedItems\r\n    },\r\n    _groupValidationHandler: function(params) {\r\n        var _this = this;\r\n        var items = this._getOrderedItems(params.validators, (0, _iterator.map)(params.brokenRules, function(rule) {\r\n            return {\r\n                text: rule.message,\r\n                validator: rule.validator,\r\n                index: rule.index\r\n            }\r\n        }));\r\n        this.validators = params.validators;\r\n        (0, _iterator.each)(this.validators, function(_, validator) {\r\n            if (validator._validationSummary !== _this) {\r\n                var handler = _this._itemValidationHandler.bind(_this);\r\n                var disposingHandler = function() {\r\n                    validator.off(\"validated\", handler);\r\n                    validator._validationSummary = null;\r\n                    handler = null\r\n                };\r\n                validator.on(\"validated\", handler);\r\n                validator.on(\"disposing\", disposingHandler);\r\n                validator._validationSummary = _this\r\n            }\r\n        });\r\n        this.option(\"items\", items)\r\n    },\r\n    _itemValidationHandler: function(_ref) {\r\n        var isValid = _ref.isValid,\r\n            validator = _ref.validator,\r\n            brokenRules = _ref.brokenRules;\r\n        var items = this.option(\"items\");\r\n        var itemsChanged = false;\r\n        var itemIndex = 0;\r\n        var _loop = function() {\r\n            var item = items[itemIndex];\r\n            if (item.validator === validator) {\r\n                var foundRule = (0, _common.grep)(brokenRules || [], function(rule) {\r\n                    return rule.index === item.index\r\n                })[0];\r\n                if (isValid || !foundRule) {\r\n                    items.splice(itemIndex, 1);\r\n                    itemsChanged = true;\r\n                    return \"continue\"\r\n                }\r\n                if (foundRule.message !== item.text) {\r\n                    item.text = foundRule.message;\r\n                    itemsChanged = true\r\n                }\r\n            }\r\n            itemIndex++\r\n        };\r\n        while (itemIndex < items.length) {\r\n            var _ret = _loop();\r\n            if (\"continue\" === _ret) {\r\n                continue\r\n            }\r\n        }(0, _iterator.each)(brokenRules, function(_, rule) {\r\n            var foundItem = (0, _common.grep)(items, function(item) {\r\n                return item.validator === validator && item.index === rule.index\r\n            })[0];\r\n            if (!foundItem) {\r\n                items.push({\r\n                    text: rule.message,\r\n                    validator: validator,\r\n                    index: rule.index\r\n                });\r\n                itemsChanged = true\r\n            }\r\n        });\r\n        if (itemsChanged) {\r\n            items = this._getOrderedItems(this.validators, items);\r\n            this.option(\"items\", items)\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(VALIDATION_SUMMARY_CLASS);\r\n        this.callBase()\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"validationGroup\":\r\n                this._initGroupRegistration();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _itemClass: function() {\r\n        return ITEM_CLASS\r\n    },\r\n    _itemDataKey: function() {\r\n        return ITEM_DATA_KEY\r\n    },\r\n    _postprocessRenderItem: function(params) {\r\n        _events_engine.default.on(params.itemElement, \"click\", function() {\r\n            params.itemData.validator && params.itemData.validator.focus && params.itemData.validator.focus()\r\n        })\r\n    },\r\n    _dispose: function() {\r\n        this.callBase();\r\n        this._unsubscribeGroup()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxValidationSummary\", ValidationSummary);\r\nvar _default = ValidationSummary;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/check_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _utils = require(\"./widget/utils.ink_ripple\");\r\nvar _editor = _interopRequireDefault(require(\"./editor/editor\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _click = require(\"../events/click\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CHECKBOX_CLASS = \"dx-checkbox\";\r\nvar CHECKBOX_ICON_CLASS = \"dx-checkbox-icon\";\r\nvar CHECKBOX_CHECKED_CLASS = \"dx-checkbox-checked\";\r\nvar CHECKBOX_CONTAINER_CLASS = \"dx-checkbox-container\";\r\nvar CHECKBOX_TEXT_CLASS = \"dx-checkbox-text\";\r\nvar CHECKBOX_HAS_TEXT_CLASS = \"dx-checkbox-has-text\";\r\nvar CHECKBOX_INDETERMINATE_CLASS = \"dx-checkbox-indeterminate\";\r\nvar CHECKBOX_FEEDBACK_HIDE_TIMEOUT = 100;\r\nvar CheckBox = _editor.default.inherit({\r\n    _supportedKeys: function() {\r\n        var click = function(e) {\r\n            e.preventDefault();\r\n            this._clickAction({\r\n                event: e\r\n            })\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            space: click\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: true,\r\n            activeStateEnabled: true,\r\n            value: false,\r\n            text: \"\",\r\n            useInkRipple: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }])\r\n    },\r\n    _canValueBeChangedByClick: function() {\r\n        return true\r\n    },\r\n    _feedbackHideTimeout: CHECKBOX_FEEDBACK_HIDE_TIMEOUT,\r\n    _initMarkup: function() {\r\n        this._renderSubmitElement();\r\n        this._$container = (0, _renderer.default)(\"<div>\").addClass(CHECKBOX_CONTAINER_CLASS);\r\n        this.setAria(\"role\", \"checkbox\");\r\n        this.$element().addClass(CHECKBOX_CLASS);\r\n        this._renderValue();\r\n        this._renderIcon();\r\n        this._renderText();\r\n        this.option(\"useInkRipple\") && this._renderInkRipple();\r\n        this.$element().append(this._$container);\r\n        this.callBase()\r\n    },\r\n    _render: function() {\r\n        this._renderClick();\r\n        this.callBase()\r\n    },\r\n    _renderSubmitElement: function() {\r\n        this._$submitElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n    },\r\n    _getSubmitElement: function() {\r\n        return this._$submitElement\r\n    },\r\n    _renderInkRipple: function() {\r\n        this._inkRipple = (0, _utils.render)({\r\n            waveSizeCoefficient: 2.5,\r\n            useHoldAnimation: false,\r\n            wavesNumber: 2,\r\n            isCentered: true\r\n        })\r\n    },\r\n    _renderInkWave: function(element, dxEvent, doRender, waveIndex) {\r\n        if (!this._inkRipple) {\r\n            return\r\n        }\r\n        var config = {\r\n            element: element,\r\n            event: dxEvent,\r\n            wave: waveIndex\r\n        };\r\n        if (doRender) {\r\n            this._inkRipple.showWave(config)\r\n        } else {\r\n            this._inkRipple.hideWave(config)\r\n        }\r\n    },\r\n    _updateFocusState: function(e, value) {\r\n        this.callBase.apply(this, arguments);\r\n        this._renderInkWave(this._$icon, e, value, 0)\r\n    },\r\n    _toggleActiveState: function($element, value, e) {\r\n        this.callBase.apply(this, arguments);\r\n        this._renderInkWave(this._$icon, e, value, 1)\r\n    },\r\n    _renderIcon: function() {\r\n        this._$icon = (0, _renderer.default)(\"<span>\").addClass(CHECKBOX_ICON_CLASS).prependTo(this._$container)\r\n    },\r\n    _renderText: function() {\r\n        var textValue = this.option(\"text\");\r\n        if (!textValue) {\r\n            if (this._$text) {\r\n                this._$text.remove();\r\n                this.$element().removeClass(CHECKBOX_HAS_TEXT_CLASS)\r\n            }\r\n            return\r\n        }\r\n        if (!this._$text) {\r\n            this._$text = (0, _renderer.default)(\"<span>\").addClass(CHECKBOX_TEXT_CLASS)\r\n        }\r\n        this._$text.text(textValue);\r\n        this._$container.append(this._$text);\r\n        this.$element().addClass(CHECKBOX_HAS_TEXT_CLASS)\r\n    },\r\n    _renderClick: function() {\r\n        var that = this;\r\n        var eventName = (0, _index.addNamespace)(_click.name, that.NAME);\r\n        that._clickAction = that._createAction(that._clickHandler);\r\n        _events_engine.default.off(that.$element(), eventName);\r\n        _events_engine.default.on(that.$element(), eventName, function(e) {\r\n            that._clickAction({\r\n                event: e\r\n            })\r\n        })\r\n    },\r\n    _clickHandler: function(args) {\r\n        var that = args.component;\r\n        that._saveValueChangeEvent(args.event);\r\n        that.option(\"value\", !that.option(\"value\"))\r\n    },\r\n    _renderValue: function() {\r\n        var $element = this.$element();\r\n        var checked = this.option(\"value\");\r\n        var indeterminate = void 0 === checked;\r\n        $element.toggleClass(CHECKBOX_CHECKED_CLASS, Boolean(checked));\r\n        $element.toggleClass(CHECKBOX_INDETERMINATE_CLASS, indeterminate);\r\n        this._getSubmitElement().val(checked);\r\n        this.setAria(\"checked\", indeterminate ? \"mixed\" : checked || \"false\")\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"useInkRipple\":\r\n                this._invalidate();\r\n                break;\r\n            case \"value\":\r\n                this._renderValue();\r\n                this.callBase(args);\r\n                break;\r\n            case \"text\":\r\n                this._renderText();\r\n                this._renderDimensions();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clean: function() {\r\n        delete this._inkRipple;\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxCheckBox\", CheckBox);\r\nvar _default = CheckBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/day/date_table/layout.j.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../../../../core/component_registrator\"));\r\nvar _component = _interopRequireDefault(require(\"../../../../../preact_wrapper/component\"));\r\nvar _layout = require(\"./layout\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DayDateTableLayout = function(_BaseComponent) {\r\n    _inherits(DayDateTableLayout, _BaseComponent);\r\n    var _super = _createSuper(DayDateTableLayout);\r\n\r\n    function DayDateTableLayout() {\r\n        _classCallCheck(this, DayDateTableLayout);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(DayDateTableLayout, [{\r\n        key: \"getProps\",\r\n        value: function() {\r\n            var props = _get(_getPrototypeOf(DayDateTableLayout.prototype), \"getProps\", this).call(this);\r\n            props.dataCellTemplate = this._createTemplateComponent(props, props.dataCellTemplate);\r\n            return props\r\n        }\r\n    }, {\r\n        key: \"_propsInfo\",\r\n        get: function() {\r\n            return {\r\n                twoWay: [],\r\n                allowNull: [],\r\n                elements: []\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_viewComponent\",\r\n        get: function() {\r\n            return _layout.DayDateTableLayout\r\n        }\r\n    }]);\r\n    return DayDateTableLayout\r\n}(_component.default);\r\nexports.default = DayDateTableLayout;\r\n(0, _component_registrator.default)(\"dxDayDateTableLayout\", DayDateTableLayout);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiListEdit = _interopRequireDefault(require(\"./list/ui.list.edit.search\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}(0, _component_registrator.default)(\"dxList\", _uiListEdit.default);\r\nvar _default = _uiListEdit.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/form.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./form/ui.form\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (data/store_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _array_query = _interopRequireDefault(require(\"./array_query\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction multiLevelGroup(query, groupInfo) {\r\n    query = query.groupBy(groupInfo[0].selector);\r\n    if (groupInfo.length > 1) {\r\n        query = query.select(function(g) {\r\n            return (0, _extend.extend)({}, g, {\r\n                items: multiLevelGroup((0, _array_query.default)(g.items), groupInfo.slice(1)).toArray()\r\n            })\r\n        })\r\n    }\r\n    return query\r\n}\r\n\r\nfunction arrangeSortingInfo(groupInfo, sortInfo) {\r\n    var filteredGroup = [];\r\n    (0, _iterator.each)(groupInfo, function(_, group) {\r\n        var collision = (0, _common.grep)(sortInfo, function(sort) {\r\n            return group.selector === sort.selector\r\n        });\r\n        if (collision.length < 1) {\r\n            filteredGroup.push(group)\r\n        }\r\n    });\r\n    return filteredGroup.concat(sortInfo)\r\n}\r\n\r\nfunction queryByOptions(query, options, isCountQuery) {\r\n    options = options || {};\r\n    var filter = options.filter;\r\n    if (filter) {\r\n        query = query.filter(filter)\r\n    }\r\n    if (isCountQuery) {\r\n        return query\r\n    }\r\n    var sort = options.sort;\r\n    var select = options.select;\r\n    var group = options.group;\r\n    var skip = options.skip;\r\n    var take = options.take;\r\n    if (group) {\r\n        group = _utils.default.normalizeSortingInfo(group);\r\n        group.keepInitialKeyOrder = !!options.group.keepInitialKeyOrder\r\n    }\r\n    if (sort || group) {\r\n        sort = _utils.default.normalizeSortingInfo(sort || []);\r\n        if (group && !group.keepInitialKeyOrder) {\r\n            sort = arrangeSortingInfo(group, sort)\r\n        }(0, _iterator.each)(sort, function(index) {\r\n            query = query[index ? \"thenBy\" : \"sortBy\"](this.selector, this.desc, this.compare)\r\n        })\r\n    }\r\n    if (select) {\r\n        query = query.select(select)\r\n    }\r\n    if (group) {\r\n        query = multiLevelGroup(query, group)\r\n    }\r\n    if (take || skip) {\r\n        query = query.slice(skip || 0, take)\r\n    }\r\n    return query\r\n}\r\nvar _default = {\r\n    multiLevelGroup: multiLevelGroup,\r\n    arrangeSortingInfo: arrangeSortingInfo,\r\n    queryByOptions: queryByOptions\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/popup.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _translator = require(\"../animation/translator\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _element = require(\"../core/element\");\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _empty_template = require(\"../core/templates/empty_template\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _browser = _interopRequireDefault(require(\"../core/utils/browser\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _size = require(\"../core/utils/size\");\r\nvar _position = require(\"../core/utils/position\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _version = require(\"../core/utils/version\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _visibility_change = require(\"../events/visibility_change\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"./button\"));\r\nvar _overlay = _interopRequireDefault(require(\"./overlay\"));\r\nvar _themes = require(\"./themes\");\r\nrequire(\"./toolbar/ui.toolbar.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar POPUP_CLASS = \"dx-popup\";\r\nvar POPUP_WRAPPER_CLASS = \"dx-popup-wrapper\";\r\nvar POPUP_FULL_SCREEN_CLASS = \"dx-popup-fullscreen\";\r\nvar POPUP_FULL_SCREEN_WIDTH_CLASS = \"dx-popup-fullscreen-width\";\r\nvar POPUP_NORMAL_CLASS = \"dx-popup-normal\";\r\nvar POPUP_CONTENT_CLASS = \"dx-popup-content\";\r\nvar POPUP_DRAGGABLE_CLASS = \"dx-popup-draggable\";\r\nvar POPUP_TITLE_CLASS = \"dx-popup-title\";\r\nvar POPUP_TITLE_CLOSEBUTTON_CLASS = \"dx-closebutton\";\r\nvar POPUP_BOTTOM_CLASS = \"dx-popup-bottom\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar POPUP_CONTENT_FLEX_HEIGHT_CLASS = \"dx-popup-flex-height\";\r\nvar POPUP_CONTENT_INHERIT_HEIGHT_CLASS = \"dx-popup-inherit-height\";\r\nvar ALLOWED_TOOLBAR_ITEM_ALIASES = [\"cancel\", \"clear\", \"done\"];\r\nvar BUTTON_DEFAULT_TYPE = \"default\";\r\nvar BUTTON_NORMAL_TYPE = \"normal\";\r\nvar BUTTON_TEXT_MODE = \"text\";\r\nvar BUTTON_CONTAINED_MODE = \"contained\";\r\nvar IS_IE11 = _browser.default.msie && 11 === parseInt(_browser.default.version);\r\nvar IS_OLD_SAFARI = _browser.default.safari && (0, _version.compare)(_browser.default.version, [11]) < 0;\r\nvar HEIGHT_STRATEGIES = {\r\n    \"static\": \"\",\r\n    inherit: POPUP_CONTENT_INHERIT_HEIGHT_CLASS,\r\n    flex: POPUP_CONTENT_FLEX_HEIGHT_CLASS\r\n};\r\nvar getButtonPlace = function(name) {\r\n    var device = _devices.default.current();\r\n    var platform = device.platform;\r\n    var toolbar = \"bottom\";\r\n    var location = \"before\";\r\n    if (\"ios\" === platform) {\r\n        switch (name) {\r\n            case \"cancel\":\r\n                toolbar = \"top\";\r\n                break;\r\n            case \"clear\":\r\n                toolbar = \"top\";\r\n                location = \"after\";\r\n                break;\r\n            case \"done\":\r\n                location = \"after\"\r\n        }\r\n    } else {\r\n        if (\"android\" === platform && device.version && parseInt(device.version[0]) > 4) {\r\n            switch (name) {\r\n                case \"cancel\":\r\n                    location = \"after\";\r\n                    break;\r\n                case \"done\":\r\n                    location = \"after\"\r\n            }\r\n        } else {\r\n            if (\"android\" === platform) {\r\n                location = \"center\"\r\n            }\r\n        }\r\n    }\r\n    return {\r\n        toolbar: toolbar,\r\n        location: location\r\n    }\r\n};\r\nvar Popup = _overlay.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            fullScreen: false,\r\n            title: \"\",\r\n            showTitle: true,\r\n            titleTemplate: \"title\",\r\n            onTitleRendered: null,\r\n            dragEnabled: false,\r\n            toolbarItems: [],\r\n            showCloseButton: false,\r\n            bottomTemplate: \"bottom\",\r\n            useDefaultToolbarButtons: false,\r\n            useFlatToolbarButtons: false,\r\n            autoResizeEnabled: true\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        var themeName = (0, _themes.current)();\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"ios\"\r\n            },\r\n            options: {\r\n                animation: this._iosAnimation\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"android\"\r\n            },\r\n            options: {\r\n                animation: this._androidAnimation\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"generic\"\r\n            },\r\n            options: {\r\n                showCloseButton: true\r\n            }\r\n        }, {\r\n            device: function(_device) {\r\n                return \"desktop\" === _devices.default.real().deviceType && \"generic\" === _device.platform\r\n            },\r\n            options: {\r\n                dragEnabled: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)(themeName)\r\n            },\r\n            options: {\r\n                useDefaultToolbarButtons: true,\r\n                useFlatToolbarButtons: true\r\n            }\r\n        }])\r\n    },\r\n    _iosAnimation: {\r\n        show: {\r\n            type: \"slide\",\r\n            duration: 400,\r\n            from: {\r\n                position: {\r\n                    my: \"top\",\r\n                    at: \"bottom\"\r\n                }\r\n            },\r\n            to: {\r\n                position: {\r\n                    my: \"center\",\r\n                    at: \"center\"\r\n                }\r\n            }\r\n        },\r\n        hide: {\r\n            type: \"slide\",\r\n            duration: 400,\r\n            from: {\r\n                opacity: 1,\r\n                position: {\r\n                    my: \"center\",\r\n                    at: \"center\"\r\n                }\r\n            },\r\n            to: {\r\n                opacity: 1,\r\n                position: {\r\n                    my: \"top\",\r\n                    at: \"bottom\"\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _androidAnimation: function() {\r\n        var fullScreenConfig = {\r\n            show: {\r\n                type: \"slide\",\r\n                duration: 300,\r\n                from: {\r\n                    top: \"30%\",\r\n                    opacity: 0\r\n                },\r\n                to: {\r\n                    top: 0,\r\n                    opacity: 1\r\n                }\r\n            },\r\n            hide: {\r\n                type: \"slide\",\r\n                duration: 300,\r\n                from: {\r\n                    top: 0,\r\n                    opacity: 1\r\n                },\r\n                to: {\r\n                    top: \"30%\",\r\n                    opacity: 0\r\n                }\r\n            }\r\n        };\r\n        var defaultConfig = {\r\n            show: {\r\n                type: \"fade\",\r\n                duration: 400,\r\n                from: 0,\r\n                to: 1\r\n            },\r\n            hide: {\r\n                type: \"fade\",\r\n                duration: 400,\r\n                from: 1,\r\n                to: 0\r\n            }\r\n        };\r\n        return this.option(\"fullScreen\") ? fullScreenConfig : defaultConfig\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(POPUP_CLASS);\r\n        this._wrapper().addClass(POPUP_WRAPPER_CLASS);\r\n        this._$popupContent = this._$content.wrapInner((0, _renderer.default)(\"<div>\").addClass(POPUP_CONTENT_CLASS)).children().eq(0)\r\n    },\r\n    _render: function() {\r\n        var isFullscreen = this.option(\"fullScreen\");\r\n        this._toggleFullScreenClass(isFullscreen);\r\n        this.callBase()\r\n    },\r\n    _toggleFullScreenClass: function(value) {\r\n        this._$content.toggleClass(POPUP_FULL_SCREEN_CLASS, value).toggleClass(POPUP_NORMAL_CLASS, !value)\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            title: new _empty_template.EmptyTemplate,\r\n            bottom: new _empty_template.EmptyTemplate\r\n        })\r\n    },\r\n    _renderContentImpl: function() {\r\n        this._renderTitle();\r\n        this.callBase();\r\n        this._renderBottom()\r\n    },\r\n    _renderTitle: function() {\r\n        var items = this._getToolbarItems(\"top\");\r\n        var titleText = this.option(\"title\");\r\n        var showTitle = this.option(\"showTitle\");\r\n        if (showTitle && !!titleText) {\r\n            items.unshift({\r\n                location: _devices.default.current().ios ? \"center\" : \"before\",\r\n                text: titleText\r\n            })\r\n        }\r\n        if (showTitle || items.length > 0) {\r\n            this._$title && this._$title.remove();\r\n            var $title = (0, _renderer.default)(\"<div>\").addClass(POPUP_TITLE_CLASS).insertBefore(this.$content());\r\n            this._$title = this._renderTemplateByType(\"titleTemplate\", items, $title).addClass(POPUP_TITLE_CLASS);\r\n            this._renderDrag();\r\n            this._executeTitleRenderAction(this._$title)\r\n        } else {\r\n            if (this._$title) {\r\n                this._$title.detach()\r\n            }\r\n        }\r\n    },\r\n    _renderTemplateByType: function(optionName, data, $container, additionalToolbarOptions) {\r\n        var template = this._getTemplateByOption(optionName);\r\n        var toolbarTemplate = template instanceof _empty_template.EmptyTemplate;\r\n        if (toolbarTemplate) {\r\n            var integrationOptions = (0, _extend.extend)({}, this.option(\"integrationOptions\"), {\r\n                skipTemplates: [\"content\", \"title\"]\r\n            });\r\n            var toolbarOptions = (0, _extend.extend)(additionalToolbarOptions, {\r\n                items: data,\r\n                rtlEnabled: this.option(\"rtlEnabled\"),\r\n                useDefaultButtons: this.option(\"useDefaultToolbarButtons\"),\r\n                useFlatButtons: this.option(\"useFlatToolbarButtons\"),\r\n                integrationOptions: integrationOptions\r\n            });\r\n            this._getTemplate(\"dx-polymorph-widget\").render({\r\n                container: $container,\r\n                model: {\r\n                    widget: \"dxToolbarBase\",\r\n                    options: toolbarOptions\r\n                }\r\n            });\r\n            var $toolbar = $container.children(\"div\");\r\n            $container.replaceWith($toolbar);\r\n            return $toolbar\r\n        } else {\r\n            var $result = (0, _renderer.default)(template.render({\r\n                container: (0, _element.getPublicElement)($container)\r\n            }));\r\n            if ($result.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n                $container.replaceWith($result);\r\n                $container = $result\r\n            }\r\n            return $container\r\n        }\r\n    },\r\n    _executeTitleRenderAction: function($titleElement) {\r\n        this._getTitleRenderAction()({\r\n            titleElement: (0, _element.getPublicElement)($titleElement)\r\n        })\r\n    },\r\n    _getTitleRenderAction: function() {\r\n        return this._titleRenderAction || this._createTitleRenderAction()\r\n    },\r\n    _createTitleRenderAction: function() {\r\n        return this._titleRenderAction = this._createActionByOption(\"onTitleRendered\", {\r\n            element: this.element(),\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _getCloseButton: function() {\r\n        return {\r\n            toolbar: \"top\",\r\n            location: \"after\",\r\n            template: this._getCloseButtonRenderer()\r\n        }\r\n    },\r\n    _getCloseButtonRenderer: function() {\r\n        var _this = this;\r\n        return function(_, __, container) {\r\n            var $button = (0, _renderer.default)(\"<div>\").addClass(POPUP_TITLE_CLOSEBUTTON_CLASS);\r\n            _this._createComponent($button, _button.default, {\r\n                icon: \"close\",\r\n                onClick: _this._createToolbarItemAction(void 0),\r\n                integrationOptions: {}\r\n            });\r\n            (0, _renderer.default)(container).append($button)\r\n        }\r\n    },\r\n    _getToolbarItems: function(toolbar) {\r\n        var _this2 = this;\r\n        var toolbarItems = this.option(\"toolbarItems\");\r\n        var toolbarsItems = [];\r\n        this._toolbarItemClasses = [];\r\n        var currentPlatform = _devices.default.current().platform;\r\n        var index = 0;\r\n        (0, _iterator.each)(toolbarItems, function(_, data) {\r\n            var isShortcut = (0, _type.isDefined)(data.shortcut);\r\n            var item = isShortcut ? getButtonPlace(data.shortcut) : data;\r\n            if (isShortcut && \"ios\" === currentPlatform && index < 2) {\r\n                item.toolbar = \"top\";\r\n                index++\r\n            }\r\n            item.toolbar = data.toolbar || item.toolbar || \"top\";\r\n            if (item && item.toolbar === toolbar) {\r\n                if (isShortcut) {\r\n                    (0, _extend.extend)(item, {\r\n                        location: data.location\r\n                    }, _this2._getToolbarItemByAlias(data))\r\n                }\r\n                var isLTROrder = \"generic\" === currentPlatform;\r\n                if (\"done\" === data.shortcut && isLTROrder || \"cancel\" === data.shortcut && !isLTROrder) {\r\n                    toolbarsItems.unshift(item)\r\n                } else {\r\n                    toolbarsItems.push(item)\r\n                }\r\n            }\r\n        });\r\n        if (\"top\" === toolbar && this.option(\"showCloseButton\") && this.option(\"showTitle\")) {\r\n            toolbarsItems.push(this._getCloseButton())\r\n        }\r\n        return toolbarsItems\r\n    },\r\n    _getLocalizationKey: function(itemType) {\r\n        return \"done\" === itemType.toLowerCase() ? \"OK\" : (0, _inflector.camelize)(itemType, true)\r\n    },\r\n    _getToolbarItemByAlias: function(data) {\r\n        var that = this;\r\n        var itemType = data.shortcut;\r\n        if ((0, _array.inArray)(itemType, ALLOWED_TOOLBAR_ITEM_ALIASES) < 0) {\r\n            return false\r\n        }\r\n        var itemConfig = (0, _extend.extend)({\r\n            text: _message.default.format(this._getLocalizationKey(itemType)),\r\n            onClick: this._createToolbarItemAction(data.onClick),\r\n            integrationOptions: {},\r\n            type: that.option(\"useDefaultToolbarButtons\") ? BUTTON_DEFAULT_TYPE : BUTTON_NORMAL_TYPE,\r\n            stylingMode: that.option(\"useFlatToolbarButtons\") ? BUTTON_TEXT_MODE : BUTTON_CONTAINED_MODE\r\n        }, data.options || {});\r\n        var itemClass = POPUP_CLASS + \"-\" + itemType;\r\n        this._toolbarItemClasses.push(itemClass);\r\n        return {\r\n            template: function(_, __, container) {\r\n                var $toolbarItem = (0, _renderer.default)(\"<div>\").addClass(itemClass).appendTo(container);\r\n                that._createComponent($toolbarItem, _button.default, itemConfig)\r\n            }\r\n        }\r\n    },\r\n    _createToolbarItemAction: function(clickAction) {\r\n        return this._createAction(clickAction, {\r\n            afterExecute: function(e) {\r\n                e.component.hide()\r\n            }\r\n        })\r\n    },\r\n    _renderBottom: function() {\r\n        var items = this._getToolbarItems(\"bottom\");\r\n        if (items.length) {\r\n            this._$bottom && this._$bottom.remove();\r\n            var $bottom = (0, _renderer.default)(\"<div>\").addClass(POPUP_BOTTOM_CLASS).insertAfter(this.$content());\r\n            this._$bottom = this._renderTemplateByType(\"bottomTemplate\", items, $bottom, {\r\n                compactMode: true\r\n            }).addClass(POPUP_BOTTOM_CLASS);\r\n            this._toggleClasses()\r\n        } else {\r\n            this._$bottom && this._$bottom.detach()\r\n        }\r\n    },\r\n    _toggleClasses: function() {\r\n        var _this3 = this;\r\n        var aliases = ALLOWED_TOOLBAR_ITEM_ALIASES;\r\n        (0, _iterator.each)(aliases, function(_, alias) {\r\n            var className = POPUP_CLASS + \"-\" + alias;\r\n            if ((0, _array.inArray)(className, _this3._toolbarItemClasses) >= 0) {\r\n                _this3._wrapper().addClass(className + \"-visible\");\r\n                _this3._$bottom.addClass(className)\r\n            } else {\r\n                _this3._wrapper().removeClass(className + \"-visible\");\r\n                _this3._$bottom.removeClass(className)\r\n            }\r\n        })\r\n    },\r\n    _getContainer: function() {\r\n        if (this.option(\"fullScreen\")) {\r\n            return (0, _renderer.default)(window)\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _getDragTarget: function() {\r\n        return this.topToolbar()\r\n    },\r\n    _renderGeometryImpl: function(isDimensionChanged) {\r\n        if (!isDimensionChanged) {\r\n            this._resetContentHeight()\r\n        }\r\n        this.callBase.apply(this, arguments);\r\n        this._setContentHeight()\r\n    },\r\n    _resetContentHeight: function() {\r\n        this._$popupContent.css({\r\n            height: \"auto\",\r\n            maxHeight: \"none\"\r\n        })\r\n    },\r\n    _renderDrag: function() {\r\n        this.callBase();\r\n        this._$content.toggleClass(POPUP_DRAGGABLE_CLASS, this.option(\"dragEnabled\"))\r\n    },\r\n    _renderResize: function() {\r\n        this.callBase();\r\n        this._resizable.option(\"onResize\", function() {\r\n            this._setContentHeight();\r\n            this._actions.onResize(arguments)\r\n        }.bind(this))\r\n    },\r\n    _setContentHeight: function() {\r\n        (this.option(\"forceApplyBindings\") || _common.noop)();\r\n        var overlayContent = this.overlayContent().get(0);\r\n        var currentHeightStrategyClass = this._chooseHeightStrategy(overlayContent);\r\n        this.$content().css(this._getHeightCssStyles(currentHeightStrategyClass, overlayContent));\r\n        this._setHeightClasses(this.overlayContent(), currentHeightStrategyClass)\r\n    },\r\n    _heightStrategyChangeOffset: function(currentHeightStrategyClass, popupVerticalPaddings) {\r\n        return currentHeightStrategyClass === HEIGHT_STRATEGIES.flex ? -popupVerticalPaddings : 0\r\n    },\r\n    _chooseHeightStrategy: function(overlayContent) {\r\n        var isAutoWidth = \"auto\" === overlayContent.style.width || \"\" === overlayContent.style.width;\r\n        var currentHeightStrategyClass = HEIGHT_STRATEGIES.static;\r\n        if (this._isAutoHeight() && this.option(\"autoResizeEnabled\")) {\r\n            if (isAutoWidth || IS_OLD_SAFARI) {\r\n                if (!IS_IE11) {\r\n                    currentHeightStrategyClass = HEIGHT_STRATEGIES.inherit\r\n                }\r\n            } else {\r\n                currentHeightStrategyClass = HEIGHT_STRATEGIES.flex\r\n            }\r\n        }\r\n        return currentHeightStrategyClass\r\n    },\r\n    _getHeightCssStyles: function(currentHeightStrategyClass, overlayContent) {\r\n        var cssStyles = {};\r\n        var contentMaxHeight = this._getOptionValue(\"maxHeight\", overlayContent);\r\n        var contentMinHeight = this._getOptionValue(\"minHeight\", overlayContent);\r\n        var popupHeightParts = this._splitPopupHeight();\r\n        var toolbarsAndVerticalOffsetsHeight = popupHeightParts.header + popupHeightParts.footer + popupHeightParts.contentVerticalOffsets + popupHeightParts.popupVerticalOffsets + this._heightStrategyChangeOffset(currentHeightStrategyClass, popupHeightParts.popupVerticalPaddings);\r\n        if (currentHeightStrategyClass === HEIGHT_STRATEGIES.static) {\r\n            if (!this._isAutoHeight() || contentMaxHeight || contentMinHeight) {\r\n                var overlayHeight = this.option(\"fullScreen\") ? Math.min((0, _position.getBoundingRect)(overlayContent).height, (0, _window.getWindow)().innerHeight) : (0, _position.getBoundingRect)(overlayContent).height;\r\n                var contentHeight = overlayHeight - toolbarsAndVerticalOffsetsHeight;\r\n                cssStyles = {\r\n                    height: Math.max(0, contentHeight),\r\n                    minHeight: \"auto\",\r\n                    maxHeight: \"auto\"\r\n                }\r\n            }\r\n        } else {\r\n            var container = (0, _renderer.default)(this._getContainer()).get(0);\r\n            var maxHeightValue = (0, _size.addOffsetToMaxHeight)(contentMaxHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n            var minHeightValue = (0, _size.addOffsetToMinHeight)(contentMinHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n            cssStyles = {\r\n                height: \"auto\",\r\n                minHeight: minHeightValue,\r\n                maxHeight: maxHeightValue\r\n            }\r\n        }\r\n        return cssStyles\r\n    },\r\n    _setHeightClasses: function($container, currentClass) {\r\n        var excessClasses = \"\";\r\n        for (var name in HEIGHT_STRATEGIES) {\r\n            if (HEIGHT_STRATEGIES[name] !== currentClass) {\r\n                excessClasses += \" \" + HEIGHT_STRATEGIES[name]\r\n            }\r\n        }\r\n        $container.removeClass(excessClasses).addClass(currentClass)\r\n    },\r\n    _isAutoHeight: function() {\r\n        return \"auto\" === this.overlayContent().get(0).style.height\r\n    },\r\n    _splitPopupHeight: function() {\r\n        var topToolbar = this.topToolbar();\r\n        var bottomToolbar = this.bottomToolbar();\r\n        return {\r\n            header: (0, _size.getVisibleHeight)(topToolbar && topToolbar.get(0)),\r\n            footer: (0, _size.getVisibleHeight)(bottomToolbar && bottomToolbar.get(0)),\r\n            contentVerticalOffsets: (0, _size.getVerticalOffsets)(this.overlayContent().get(0), true),\r\n            popupVerticalOffsets: (0, _size.getVerticalOffsets)(this.$content().get(0), true),\r\n            popupVerticalPaddings: (0, _size.getVerticalOffsets)(this.$content().get(0), false)\r\n        }\r\n    },\r\n    _shouldFixBodyPosition: function() {\r\n        return this.callBase() || this.option(\"fullScreen\")\r\n    },\r\n    _toggleSafariFullScreen: function(value) {\r\n        var toggleFullScreenBeforeShown = this._shouldFixBodyPosition() && value && !this._isShown;\r\n        if (toggleFullScreenBeforeShown) {\r\n            this._bodyScrollTop = value ? window.pageYOffset : void 0\r\n        } else {\r\n            this._toggleSafariScrolling(!value)\r\n        }\r\n    },\r\n    _renderDimensions: function() {\r\n        if (this.option(\"fullScreen\")) {\r\n            this._$content.css({\r\n                width: \"100%\",\r\n                height: \"100%\",\r\n                minWidth: \"\",\r\n                maxWidth: \"\",\r\n                minHeight: \"\",\r\n                maxHeight: \"\"\r\n            })\r\n        } else {\r\n            this.callBase.apply(this, arguments)\r\n        }\r\n        if ((0, _window.hasWindow)()) {\r\n            this._renderFullscreenWidthClass()\r\n        }\r\n    },\r\n    _renderFullscreenWidthClass: function() {\r\n        this.overlayContent().toggleClass(POPUP_FULL_SCREEN_WIDTH_CLASS, this.overlayContent().outerWidth() === (0, _renderer.default)(window).width())\r\n    },\r\n    refreshPosition: function() {\r\n        this._renderPosition()\r\n    },\r\n    _renderPosition: function() {\r\n        if (this.option(\"fullScreen\")) {\r\n            (0, _translator.move)(this._$content, {\r\n                top: 0,\r\n                left: 0\r\n            })\r\n        } else {\r\n            (this.option(\"forceApplyBindings\") || _common.noop)();\r\n            return this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"showTitle\":\r\n            case \"title\":\r\n            case \"titleTemplate\":\r\n                this._renderTitle();\r\n                this._renderGeometry();\r\n                (0, _visibility_change.triggerResizeEvent)(this._$content);\r\n                break;\r\n            case \"bottomTemplate\":\r\n                this._renderBottom();\r\n                this._renderGeometry();\r\n                (0, _visibility_change.triggerResizeEvent)(this._$content);\r\n                break;\r\n            case \"onTitleRendered\":\r\n                this._createTitleRenderAction(args.value);\r\n                break;\r\n            case \"toolbarItems\":\r\n            case \"useDefaultToolbarButtons\":\r\n            case \"useFlatToolbarButtons\":\r\n                var shouldRenderGeometry = !args.fullName.match(/^toolbarItems((\\[\\d+\\])(\\.(options|visible).*)?)?$/);\r\n                this._renderTitle();\r\n                this._renderBottom();\r\n                if (shouldRenderGeometry) {\r\n                    this._renderGeometry();\r\n                    (0, _visibility_change.triggerResizeEvent)(this._$content)\r\n                }\r\n                break;\r\n            case \"dragEnabled\":\r\n                this._renderDrag();\r\n                break;\r\n            case \"autoResizeEnabled\":\r\n                this._renderGeometry();\r\n                (0, _visibility_change.triggerResizeEvent)(this._$content);\r\n                break;\r\n            case \"fullScreen\":\r\n                this._toggleFullScreenClass(args.value);\r\n                this._toggleSafariFullScreen(args.value);\r\n                this._renderGeometry();\r\n                (0, _visibility_change.triggerResizeEvent)(this._$content);\r\n                break;\r\n            case \"showCloseButton\":\r\n                this._renderTitle();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    bottomToolbar: function() {\r\n        return this._$bottom\r\n    },\r\n    topToolbar: function() {\r\n        return this._$title\r\n    },\r\n    $content: function() {\r\n        return this._$popupContent\r\n    },\r\n    content: function() {\r\n        return (0, _element.getPublicElement)(this._$popupContent)\r\n    },\r\n    overlayContent: function() {\r\n        return this._$content\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxPopup\", Popup);\r\nvar _default = Popup;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.grid_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.grid_view\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar GridView = _uiGrid_core.default.views.gridView.inherit(function() {\r\n    return {\r\n        _getWidgetAriaLabel: function() {\r\n            return \"dxTreeList-ariaTreeList\"\r\n        },\r\n        _getTableRoleName: function() {\r\n            return \"treegrid\"\r\n        }\r\n    }\r\n}());\r\n_uiTree_list.default.registerModule(\"gridView\", {\r\n    defaultOptions: _uiGrid_core.default.defaultOptions,\r\n    controllers: _uiGrid_core.default.controllers,\r\n    views: {\r\n        gridView: GridView\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            resizing: {\r\n                _toggleBestFitMode: function(isBestFit) {\r\n                    this.callBase(isBestFit);\r\n                    if (!this.option(\"legacyRendering\")) {\r\n                        var $rowsTable = this._rowsView._getTableElement();\r\n                        $rowsTable.find(\".dx-treelist-cell-expandable\").toggleClass(this.addWidgetPrefix(\"best-fit\"), isBestFit)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.keyboard_navigation.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.keyboard_navigation\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"keyboardNavigation\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/pivot_grid/remote_store.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _remote_store = require(\"./remote_store.utils\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction createGroupingOptions(dimensionOptions, useSortOrder) {\r\n    var groupingOptions = [];\r\n    (0, _iterator.each)(dimensionOptions, function(index, dimensionOption) {\r\n        groupingOptions.push({\r\n            selector: dimensionOption.dataField,\r\n            groupInterval: dimensionOption.groupInterval,\r\n            desc: useSortOrder && \"desc\" === dimensionOption.sortOrder,\r\n            isExpanded: index < dimensionOptions.length - 1\r\n        })\r\n    });\r\n    return groupingOptions\r\n}\r\n\r\nfunction getFieldFilterSelector(field) {\r\n    var selector = field.dataField;\r\n    var groupInterval = field.groupInterval;\r\n    if (\"date\" === field.dataType && \"string\" === typeof groupInterval) {\r\n        if (\"quarter\" === groupInterval.toLowerCase()) {\r\n            groupInterval = \"Month\"\r\n        }\r\n        selector = selector + \".\" + (0, _uiPivot_grid.capitalizeFirstLetter)(groupInterval)\r\n    }\r\n    return selector\r\n}\r\n\r\nfunction getIntervalFilterExpression(selector, numericInterval, numericValue, isExcludedFilterType) {\r\n    var startFilterValue = [selector, isExcludedFilterType ? \"<\" : \">=\", numericValue];\r\n    var endFilterValue = [selector, isExcludedFilterType ? \">=\" : \"<\", numericValue + numericInterval];\r\n    return [startFilterValue, isExcludedFilterType ? \"or\" : \"and\", endFilterValue]\r\n}\r\n\r\nfunction getFilterExpressionForFilterValue(field, filterValue) {\r\n    var selector = getFieldFilterSelector(field);\r\n    var isExcludedFilterType = \"exclude\" === field.filterType;\r\n    var expression = [selector, isExcludedFilterType ? \"<>\" : \"=\", filterValue];\r\n    if ((0, _type.isDefined)(field.groupInterval)) {\r\n        if (\"string\" === typeof field.groupInterval && \"quarter\" === field.groupInterval.toLowerCase()) {\r\n            expression = getIntervalFilterExpression(selector, 3, 3 * (filterValue - 1) + 1, isExcludedFilterType)\r\n        } else {\r\n            if (\"number\" === typeof field.groupInterval && \"date\" !== field.dataType) {\r\n                expression = getIntervalFilterExpression(selector, field.groupInterval, filterValue, isExcludedFilterType)\r\n            }\r\n        }\r\n    }\r\n    return expression\r\n}\r\n\r\nfunction createFieldFilterExpressions(field, operation) {\r\n    var fieldFilterExpressions = [];\r\n    if (field.searchValue) {\r\n        return [field.dataField, \"contains\", field.searchValue]\r\n    }\r\n    if (\"exclude\" === field.filterType) {\r\n        operation = operation || \"and\"\r\n    } else {\r\n        operation = operation || \"or\"\r\n    }(0, _iterator.each)(field.filterValues, function(index, filterValue) {\r\n        var currentExpression = [];\r\n        if (Array.isArray(filterValue)) {\r\n            var parseLevelsRecursive = field.levels && field.levels.length;\r\n            if (parseLevelsRecursive) {\r\n                currentExpression = createFieldFilterExpressions({\r\n                    filterValues: filterValue,\r\n                    filterType: field.filterType,\r\n                    levels: field.levels\r\n                }, \"and\")\r\n            }\r\n        } else {\r\n            var currentField = field.levels ? field.levels[index] : field;\r\n            currentExpression = getFilterExpressionForFilterValue(currentField, filterValue)\r\n        }\r\n        if (!currentExpression.length) {\r\n            return\r\n        }\r\n        if (fieldFilterExpressions.length) {\r\n            fieldFilterExpressions.push(operation)\r\n        }\r\n        fieldFilterExpressions.push(currentExpression)\r\n    });\r\n    return fieldFilterExpressions\r\n}\r\n\r\nfunction createFilterExpressions(fields) {\r\n    var filterExpressions = [];\r\n    (0, _iterator.each)(fields, function(_, field) {\r\n        var fieldExpressions = createFieldFilterExpressions(field);\r\n        if (!fieldExpressions.length) {\r\n            return []\r\n        }\r\n        if (filterExpressions.length) {\r\n            filterExpressions.push(\"and\")\r\n        }\r\n        filterExpressions.push(fieldExpressions)\r\n    });\r\n    if (1 === filterExpressions.length) {\r\n        filterExpressions = filterExpressions[0]\r\n    }\r\n    return filterExpressions\r\n}\r\n\r\nfunction mergeFilters(filter1, filter2) {\r\n    var mergedFilter;\r\n    var notEmpty = function(filter) {\r\n        return filter && filter.length\r\n    };\r\n    if (notEmpty(filter1) && notEmpty(filter2)) {\r\n        mergedFilter = [filter1, \"and\", filter2]\r\n    } else {\r\n        mergedFilter = notEmpty(filter1) ? filter1 : filter2\r\n    }\r\n    return mergedFilter\r\n}\r\n\r\nfunction createLoadOptions(options, externalFilterExpr, hasRows) {\r\n    var filterExpressions = createFilterExpressions(options.filters);\r\n    var groupingOptions = createGroupingOptions(options.rows, options.rowTake).concat(createGroupingOptions(options.columns, options.columnTake));\r\n    var loadOptions = {\r\n        groupSummary: [],\r\n        totalSummary: [],\r\n        group: groupingOptions.length ? groupingOptions : void 0,\r\n        take: groupingOptions.length ? void 0 : 1\r\n    };\r\n    if (options.rows.length && options.rowTake) {\r\n        loadOptions.skip = options.rowSkip;\r\n        loadOptions.take = options.rowTake;\r\n        loadOptions.requireGroupCount = true\r\n    } else {\r\n        if (options.columns.length && options.columnTake && !hasRows) {\r\n            loadOptions.skip = options.columnSkip;\r\n            loadOptions.take = options.columnTake;\r\n            loadOptions.requireGroupCount = true\r\n        }\r\n    }\r\n    if (externalFilterExpr) {\r\n        filterExpressions = mergeFilters(filterExpressions, externalFilterExpr)\r\n    }\r\n    if (filterExpressions.length) {\r\n        loadOptions.filter = filterExpressions\r\n    }(0, _iterator.each)(options.values, function(_, value) {\r\n        var summaryOption = {\r\n            selector: value.dataField,\r\n            summaryType: value.summaryType || \"count\"\r\n        };\r\n        loadOptions.groupSummary.push(summaryOption);\r\n        options.includeTotalSummary && loadOptions.totalSummary.push(summaryOption)\r\n    });\r\n    return loadOptions\r\n}\r\n\r\nfunction setValue(valuesArray, value, rowIndex, columnIndex, dataIndex) {\r\n    valuesArray[rowIndex] = valuesArray[rowIndex] || [];\r\n    valuesArray[rowIndex][columnIndex] = valuesArray[rowIndex][columnIndex] || [];\r\n    if (!(0, _type.isDefined)(valuesArray[rowIndex][columnIndex][dataIndex])) {\r\n        valuesArray[rowIndex][columnIndex][dataIndex] = value\r\n    }\r\n}\r\n\r\nfunction parseValue(value, field) {\r\n    if (field && \"number\" === field.dataType && (0, _type.isString)(value)) {\r\n        return Number(value)\r\n    }\r\n    if (field && \"date\" === field.dataType && !field.groupInterval && !(value instanceof Date)) {\r\n        return _date_serialization.default.deserializeDate(value)\r\n    }\r\n    return value\r\n}\r\n\r\nfunction parseResult(data, total, descriptions, result) {\r\n    var rowPath = [];\r\n    var columnPath = [];\r\n    var rowHash = result.rowHash;\r\n    var columnHash = result.columnHash;\r\n    if (total && total.summary) {\r\n        (0, _iterator.each)(total.summary, function(index, summary) {\r\n            setValue(result.values, summary, result.grandTotalRowIndex, result.grandTotalColumnIndex, index)\r\n        })\r\n    }\r\n    if (total && total.groupCount >= 0) {\r\n        var skip = descriptions.rows.length ? descriptions.rowSkip : descriptions.columnSkip;\r\n        data = _toConsumableArray(Array(skip)).concat(data);\r\n        data.length = total.groupCount\r\n    }\r\n\r\n    function getItem(dataItem, dimensionName, path, level, field) {\r\n        var dimensionHash = result[dimensionName + \"Hash\"];\r\n        var parentItem;\r\n        var parentItemChildren;\r\n        var item;\r\n        var pathValue = path.slice(0, level + 1).join(\"/\");\r\n        var parentPathValue;\r\n        if (void 0 !== dimensionHash[pathValue]) {\r\n            item = dimensionHash[pathValue]\r\n        } else {\r\n            item = {\r\n                value: parseValue(dataItem.key, field),\r\n                index: result[dimensionName + \"Index\"]++\r\n            };\r\n            parentPathValue = path.slice(0, level).join(\"/\");\r\n            if (level > 0 && void 0 !== dimensionHash[parentPathValue]) {\r\n                parentItem = dimensionHash[parentPathValue];\r\n                parentItemChildren = parentItem.children = parentItem.children || []\r\n            } else {\r\n                parentItemChildren = result[dimensionName + \"s\"]\r\n            }\r\n            parentItemChildren.push(item);\r\n            dimensionHash[pathValue] = item\r\n        }\r\n        return item\r\n    }(0, _remote_store.forEachGroup)(data, function(item, level) {\r\n        var rowLevel = level >= descriptions.rows.length ? descriptions.rows.length : level;\r\n        var columnLevel = level >= descriptions.rows.length ? level - descriptions.rows.length : 0;\r\n        var columnItem;\r\n        var rowItem;\r\n        if (level >= descriptions.rows.length && columnLevel >= descriptions.columns.length) {\r\n            return\r\n        }\r\n        if (level < descriptions.rows.length) {\r\n            columnPath = []\r\n        }\r\n        if (level >= descriptions.rows.length) {\r\n            if (item) {\r\n                columnPath[columnLevel] = item.key + \"\";\r\n                columnItem = getItem(item, \"column\", columnPath, columnLevel, descriptions.columns[columnLevel]);\r\n                rowItem = rowHash[rowPath.slice(0, rowLevel + 1).join(\"/\")]\r\n            } else {\r\n                result.columns.push({})\r\n            }\r\n        } else {\r\n            if (item) {\r\n                rowPath[rowLevel] = item.key + \"\";\r\n                rowItem = getItem(item, \"row\", rowPath, rowLevel, descriptions.rows[rowLevel]);\r\n                columnItem = columnHash[columnPath.slice(0, columnLevel + 1).join(\"/\")]\r\n            } else {\r\n                result.rows.push({})\r\n            }\r\n        }\r\n        var currentRowIndex = rowItem && rowItem.index || result.grandTotalRowIndex;\r\n        var currentColumnIndex = columnItem && columnItem.index || result.grandTotalColumnIndex;\r\n        (0, _iterator.each)(item && item.summary || [], function(i, summary) {\r\n            setValue(result.values, summary, currentRowIndex, currentColumnIndex, i)\r\n        })\r\n    });\r\n    return result\r\n}\r\n\r\nfunction getFiltersForDimension(fields) {\r\n    return (fields || []).filter(function(f) {\r\n        return f.filterValues && f.filterValues.length || f.searchValue\r\n    })\r\n}\r\n\r\nfunction getExpandedIndex(options, axis) {\r\n    if (options.headerName) {\r\n        if (axis === options.headerName) {\r\n            return options.path.length\r\n        } else {\r\n            if (options.oppositePath) {\r\n                return options.oppositePath.length\r\n            }\r\n        }\r\n    }\r\n    return 0\r\n}\r\n\r\nfunction getFiltersForExpandedDimension(options) {\r\n    return (0, _uiPivot_grid.getFiltersByPath)(options[options.headerName], options.path).concat((0, _uiPivot_grid.getFiltersByPath)(options[\"rows\" === options.headerName ? \"columns\" : \"rows\"], options.oppositePath || []))\r\n}\r\n\r\nfunction getExpandedPathSliceFilter(options, dimensionName, level, firstCollapsedFieldIndex) {\r\n    var result = [];\r\n    var startSliceIndex = level > firstCollapsedFieldIndex ? 0 : firstCollapsedFieldIndex;\r\n    var fields = options.headerName !== dimensionName ? options[dimensionName].slice(startSliceIndex, level) : [];\r\n    var paths = \"rows\" === dimensionName ? options.rowExpandedPaths : options.columnExpandedPaths;\r\n    (0, _iterator.each)(fields, function(index, field) {\r\n        var filterValues = [];\r\n        (0, _iterator.each)(paths, function(_, path) {\r\n            path = path.slice(startSliceIndex, level);\r\n            if (index < path.length) {\r\n                var filterValue = path[index];\r\n                if (filterValues.indexOf(filterValue) === -1) {\r\n                    filterValues.push(filterValue)\r\n                }\r\n            }\r\n        });\r\n        if (filterValues.length) {\r\n            result.push((0, _extend.extend)({}, field, {\r\n                filterType: \"include\",\r\n                filterValues: filterValues\r\n            }))\r\n        }\r\n    });\r\n    return result\r\n}\r\n\r\nfunction getGrandTotalRequest(options, dimensionName, expandedIndex, expandedLevel, commonFilters, firstCollapsedFieldIndex) {\r\n    var expandedPaths = (\"columns\" === dimensionName ? options.columnExpandedPaths : options.rowExpandedPaths) || [];\r\n    var oppositeDimensionName = \"columns\" === dimensionName ? \"rows\" : \"columns\";\r\n    var fields = options[dimensionName];\r\n    var result = [];\r\n    var newOptions;\r\n    if (expandedPaths.length) {\r\n        for (var i = expandedIndex; i < expandedLevel + 1; i++) {\r\n            newOptions = {\r\n                filters: commonFilters.concat(getExpandedPathSliceFilter(options, dimensionName, i, firstCollapsedFieldIndex))\r\n            };\r\n            newOptions[dimensionName] = fields.slice(expandedIndex, i + 1);\r\n            newOptions[oppositeDimensionName] = [];\r\n            result.push((0, _extend.extend)({}, options, newOptions))\r\n        }\r\n    } else {\r\n        newOptions = {\r\n            filters: commonFilters\r\n        };\r\n        newOptions[dimensionName] = fields.slice(expandedIndex, expandedLevel + 1);\r\n        newOptions[oppositeDimensionName] = [];\r\n        result.push((0, _extend.extend)({}, options, newOptions))\r\n    }\r\n    result[0].includeTotalSummary = true;\r\n    return result\r\n}\r\n\r\nfunction getFirstCollapsedIndex(fields) {\r\n    var firstCollapsedIndex = 0;\r\n    (0, _iterator.each)(fields, function(index, field) {\r\n        if (!field.expanded) {\r\n            firstCollapsedIndex = index;\r\n            return false\r\n        }\r\n    });\r\n    return firstCollapsedIndex\r\n}\r\n\r\nfunction getRequestsData(options) {\r\n    var rowExpandedLevel = (0, _uiPivot_grid.getExpandedLevel)(options, \"rows\");\r\n    var columnExpandedLevel = (0, _uiPivot_grid.getExpandedLevel)(options, \"columns\");\r\n    var filters = options.filters || [];\r\n    var columnExpandedIndex = getExpandedIndex(options, \"columns\");\r\n    var firstCollapsedColumnIndex = getFirstCollapsedIndex(options.columns);\r\n    var firstCollapsedRowIndex = getFirstCollapsedIndex(options.rows);\r\n    var rowExpandedIndex = getExpandedIndex(options, \"rows\");\r\n    var data = [];\r\n    filters = filters.concat(getFiltersForDimension(options.rows)).concat(getFiltersForDimension(options.columns)).concat(getFiltersForExpandedDimension(options));\r\n    var columnTotalsOptions = getGrandTotalRequest(options, \"columns\", columnExpandedIndex, columnExpandedLevel, filters, firstCollapsedColumnIndex);\r\n    if (options.rows.length && options.columns.length) {\r\n        if (\"rows\" !== options.headerName) {\r\n            data = data.concat(columnTotalsOptions)\r\n        }\r\n        for (var i = rowExpandedIndex; i < rowExpandedLevel + 1; i++) {\r\n            var rows = options.rows.slice(rowExpandedIndex, i + 1);\r\n            var rowFilterByExpandedPaths = getExpandedPathSliceFilter(options, \"rows\", i, firstCollapsedRowIndex);\r\n            for (var j = columnExpandedIndex; j < columnExpandedLevel + 1; j++) {\r\n                var preparedOptions = (0, _extend.extend)({}, options, {\r\n                    columns: options.columns.slice(columnExpandedIndex, j + 1),\r\n                    rows: rows,\r\n                    filters: filters.concat(getExpandedPathSliceFilter(options, \"columns\", j, firstCollapsedColumnIndex)).concat(rowFilterByExpandedPaths)\r\n                });\r\n                data.push(preparedOptions)\r\n            }\r\n        }\r\n    } else {\r\n        data = options.columns.length ? columnTotalsOptions : getGrandTotalRequest(options, \"rows\", rowExpandedIndex, rowExpandedLevel, filters, firstCollapsedRowIndex)\r\n    }\r\n    return data\r\n}\r\n\r\nfunction prepareFields(fields) {\r\n    (0, _iterator.each)(fields || [], function(_, field) {\r\n        var levels = field.levels;\r\n        if (levels) {\r\n            prepareFields(levels)\r\n        }(0, _uiPivot_grid.setDefaultFieldValueFormatting)(field)\r\n    })\r\n}\r\nvar _default = _class.default.inherit(function() {\r\n    return {\r\n        ctor: function(options) {\r\n            this._dataSource = new _data_source.DataSource(options);\r\n            this._store = this._dataSource.store()\r\n        },\r\n        getFields: function(fields) {\r\n            var d = new _deferred.Deferred;\r\n            this._store.load({\r\n                skip: 0,\r\n                take: 20\r\n            }).done(function(data) {\r\n                d.resolve((0, _uiPivot_grid.discoverObjectFields)(data, fields))\r\n            }).fail(d.reject);\r\n            return d\r\n        },\r\n        key: function() {\r\n            return this._store.key()\r\n        },\r\n        load: function(options) {\r\n            var that = this;\r\n            var d = new _deferred.Deferred;\r\n            var result = {\r\n                rows: [],\r\n                columns: [],\r\n                values: [],\r\n                grandTotalRowIndex: 0,\r\n                grandTotalColumnIndex: 0,\r\n                rowHash: {},\r\n                columnHash: {},\r\n                rowIndex: 1,\r\n                columnIndex: 1\r\n            };\r\n            var requestsData = getRequestsData(options);\r\n            var deferreds = [];\r\n            prepareFields(options.rows);\r\n            prepareFields(options.columns);\r\n            prepareFields(options.filters);\r\n            (0, _iterator.each)(requestsData, function(_, dataItem) {\r\n                deferreds.push(that._store.load(createLoadOptions(dataItem, that.filter(), options.rows.length)))\r\n            });\r\n            _deferred.when.apply(null, deferreds).done(function() {\r\n                var args = deferreds.length > 1 ? arguments : [arguments];\r\n                (0, _iterator.each)(args, function(index, argument) {\r\n                    parseResult(argument[0], argument[1], requestsData[index], result)\r\n                });\r\n                d.resolve({\r\n                    rows: result.rows,\r\n                    columns: result.columns,\r\n                    values: result.values,\r\n                    grandTotalRowIndex: result.grandTotalRowIndex,\r\n                    grandTotalColumnIndex: result.grandTotalColumnIndex\r\n                })\r\n            }).fail(d.reject);\r\n            return d\r\n        },\r\n        filter: function() {\r\n            return this._dataSource.filter.apply(this._dataSource, arguments)\r\n        },\r\n        supportPaging: function() {\r\n            return false\r\n        },\r\n        createDrillDownDataSource: function(loadOptions, params) {\r\n            loadOptions = loadOptions || {};\r\n            params = params || {};\r\n            var store = this._store;\r\n            var filters = (0, _uiPivot_grid.getFiltersByPath)(loadOptions.rows, params.rowPath).concat((0, _uiPivot_grid.getFiltersByPath)(loadOptions.columns, params.columnPath)).concat(getFiltersForDimension(loadOptions.rows)).concat(loadOptions.filters || []).concat(getFiltersForDimension(loadOptions.columns));\r\n            var filterExp = createFilterExpressions(filters);\r\n            return new _data_source.DataSource({\r\n                load: function(loadOptions) {\r\n                    return store.load((0, _extend.extend)({}, loadOptions, {\r\n                        filter: mergeFilters(filterExp, loadOptions.filter),\r\n                        select: params.customColumns\r\n                    }))\r\n                }\r\n            })\r\n        }\r\n    }\r\n}());\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (data/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../core/utils/type\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../core/utils/ready_callbacks\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _common = require(\"../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar ready = _ready_callbacks.default.add;\r\nvar XHR_ERROR_UNLOAD = \"DEVEXTREME_XHR_ERROR_UNLOAD\";\r\nvar normalizeBinaryCriterion = function(crit) {\r\n    return [crit[0], crit.length < 3 ? \"=\" : String(crit[1]).toLowerCase(), crit.length < 2 ? true : crit[crit.length - 1]]\r\n};\r\nvar normalizeSortingInfo = function(info) {\r\n    if (!Array.isArray(info)) {\r\n        info = [info]\r\n    }\r\n    return (0, _iterator.map)(info, function(i) {\r\n        var result = {\r\n            selector: (0, _type.isFunction)(i) || \"string\" === typeof i ? i : i.getter || i.field || i.selector,\r\n            desc: !!(i.desc || \"d\" === String(i.dir).charAt(0).toLowerCase())\r\n        };\r\n        if (i.compare) {\r\n            result.compare = i.compare\r\n        }\r\n        return result\r\n    })\r\n};\r\nvar errorMessageFromXhr = function() {\r\n    var textStatusMessages = {\r\n        timeout: \"Network connection timeout\",\r\n        error: \"Unspecified network error\",\r\n        parsererror: \"Unexpected server response\"\r\n    };\r\n    var explainTextStatus = function(textStatus) {\r\n        var result = textStatusMessages[textStatus];\r\n        if (!result) {\r\n            return textStatus\r\n        }\r\n        return result\r\n    };\r\n    var unloading;\r\n    ready(function() {\r\n        var window = (0, _window.getWindow)();\r\n        _dom_adapter.default.listen(window, \"beforeunload\", function() {\r\n            unloading = true\r\n        })\r\n    });\r\n    return function(xhr, textStatus) {\r\n        if (unloading) {\r\n            return XHR_ERROR_UNLOAD\r\n        }\r\n        if (xhr.status < 400) {\r\n            return explainTextStatus(textStatus)\r\n        }\r\n        return xhr.statusText\r\n    }\r\n}();\r\nvar aggregators = {\r\n    count: {\r\n        seed: 0,\r\n        step: function(count) {\r\n            return 1 + count\r\n        }\r\n    },\r\n    sum: {\r\n        seed: 0,\r\n        step: function(sum, item) {\r\n            return sum + item\r\n        }\r\n    },\r\n    min: {\r\n        step: function(min, item) {\r\n            return item < min ? item : min\r\n        }\r\n    },\r\n    max: {\r\n        step: function(max, item) {\r\n            return item > max ? item : max\r\n        }\r\n    },\r\n    avg: {\r\n        seed: [0, 0],\r\n        step: function(pair, value) {\r\n            return [pair[0] + value, pair[1] + 1]\r\n        },\r\n        finalize: function(pair) {\r\n            return pair[1] ? pair[0] / pair[1] : NaN\r\n        }\r\n    }\r\n};\r\nvar processRequestResultLock = function() {\r\n    var lockCount = 0;\r\n    var lockDeferred;\r\n    var obtain = function() {\r\n        if (0 === lockCount) {\r\n            lockDeferred = new _deferred.Deferred\r\n        }\r\n        lockCount++\r\n    };\r\n    var release = function() {\r\n        lockCount--;\r\n        if (lockCount < 1) {\r\n            lockDeferred.resolve()\r\n        }\r\n    };\r\n    var promise = function() {\r\n        var deferred = 0 === lockCount ? (new _deferred.Deferred).resolve() : lockDeferred;\r\n        return deferred.promise()\r\n    };\r\n    var reset = function() {\r\n        lockCount = 0;\r\n        if (lockDeferred) {\r\n            lockDeferred.resolve()\r\n        }\r\n    };\r\n    return {\r\n        obtain: obtain,\r\n        release: release,\r\n        promise: promise,\r\n        reset: reset\r\n    }\r\n}();\r\n\r\nfunction isDisjunctiveOperator(condition) {\r\n    return /^(or|\\|\\||\\|)$/i.test(condition)\r\n}\r\n\r\nfunction isConjunctiveOperator(condition) {\r\n    return /^(and|&&|&)$/i.test(condition)\r\n}\r\nvar keysEqual = function(keyExpr, key1, key2) {\r\n    if (Array.isArray(keyExpr)) {\r\n        var names = (0, _iterator.map)(key1, function(v, k) {\r\n            return k\r\n        });\r\n        var name;\r\n        for (var i = 0; i < names.length; i++) {\r\n            name = names[i];\r\n            if (!(0, _common.equalByValue)(key1[name], key2[name], 0, false)) {\r\n                return false\r\n            }\r\n        }\r\n        return true\r\n    }\r\n    return (0, _common.equalByValue)(key1, key2, 0, false)\r\n};\r\nvar BASE64_CHARS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\nvar base64_encode = function(input) {\r\n    if (!Array.isArray(input)) {\r\n        input = stringToByteArray(String(input))\r\n    }\r\n    var result = \"\";\r\n\r\n    function getBase64Char(index) {\r\n        return BASE64_CHARS.charAt(index)\r\n    }\r\n    for (var i = 0; i < input.length; i += 3) {\r\n        var octet1 = input[i];\r\n        var octet2 = input[i + 1];\r\n        var octet3 = input[i + 2];\r\n        result += (0, _iterator.map)([octet1 >> 2, (3 & octet1) << 4 | octet2 >> 4, isNaN(octet2) ? 64 : (15 & octet2) << 2 | octet3 >> 6, isNaN(octet3) ? 64 : 63 & octet3], getBase64Char).join(\"\")\r\n    }\r\n    return result\r\n};\r\n\r\nfunction stringToByteArray(str) {\r\n    var bytes = [];\r\n    var code;\r\n    var i;\r\n    for (i = 0; i < str.length; i++) {\r\n        code = str.charCodeAt(i);\r\n        if (code < 128) {\r\n            bytes.push(code)\r\n        } else {\r\n            if (code < 2048) {\r\n                bytes.push(192 + (code >> 6), 128 + (63 & code))\r\n            } else {\r\n                if (code < 65536) {\r\n                    bytes.push(224 + (code >> 12), 128 + (code >> 6 & 63), 128 + (63 & code))\r\n                } else {\r\n                    if (code < 2097152) {\r\n                        bytes.push(240 + (code >> 18), 128 + (code >> 12 & 63), 128 + (code >> 6 & 63), 128 + (63 & code))\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return bytes\r\n}\r\nvar isUnaryOperation = function(crit) {\r\n    return \"!\" === crit[0] && Array.isArray(crit[1])\r\n};\r\nvar isGroupOperator = function(value) {\r\n    return \"and\" === value || \"or\" === value\r\n};\r\nvar isGroupCriterion = function(crit) {\r\n    var first = crit[0];\r\n    var second = crit[1];\r\n    if (Array.isArray(first)) {\r\n        return true\r\n    }\r\n    if ((0, _type.isFunction)(first)) {\r\n        if (Array.isArray(second) || (0, _type.isFunction)(second) || isGroupOperator(second)) {\r\n            return true\r\n        }\r\n    }\r\n    return false\r\n};\r\nvar trivialPromise = function() {\r\n    var d = new _deferred.Deferred;\r\n    return d.resolve.apply(d, arguments).promise()\r\n};\r\nvar rejectedPromise = function() {\r\n    var d = new _deferred.Deferred;\r\n    return d.reject.apply(d, arguments).promise()\r\n};\r\n\r\nfunction throttle(func, timeout) {\r\n    var timeoutId;\r\n    var lastArgs;\r\n    return function() {\r\n        var _this = this;\r\n        lastArgs = arguments;\r\n        if (!timeoutId) {\r\n            timeoutId = setTimeout(function() {\r\n                timeoutId = void 0;\r\n                if (lastArgs) {\r\n                    func.call(_this, lastArgs)\r\n                }\r\n            }, (0, _type.isFunction)(timeout) ? timeout() : timeout)\r\n        }\r\n        return timeoutId\r\n    }\r\n}\r\n\r\nfunction throttleChanges(func, timeout) {\r\n    var cache = [];\r\n    var throttled = throttle(function() {\r\n        func.call(this, cache);\r\n        cache = []\r\n    }, timeout);\r\n    return function(changes) {\r\n        if (Array.isArray(changes)) {\r\n            var _cache;\r\n            (_cache = cache).push.apply(_cache, _toConsumableArray(changes))\r\n        }\r\n        return throttled.call(this, cache)\r\n    }\r\n}\r\nvar utils = {\r\n    XHR_ERROR_UNLOAD: XHR_ERROR_UNLOAD,\r\n    normalizeBinaryCriterion: normalizeBinaryCriterion,\r\n    normalizeSortingInfo: normalizeSortingInfo,\r\n    errorMessageFromXhr: errorMessageFromXhr,\r\n    aggregators: aggregators,\r\n    keysEqual: keysEqual,\r\n    throttleChanges: throttleChanges,\r\n    trivialPromise: trivialPromise,\r\n    rejectedPromise: rejectedPromise,\r\n    isDisjunctiveOperator: isDisjunctiveOperator,\r\n    isConjunctiveOperator: isConjunctiveOperator,\r\n    processRequestResultLock: processRequestResultLock,\r\n    isUnaryOperation: isUnaryOperation,\r\n    isGroupCriterion: isGroupCriterion,\r\n    base64_encode: base64_encode\r\n};\r\nvar _default = utils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/map/provider.dynamic.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _provider = _interopRequireDefault(require(\"./provider\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _provider.default.abstract;\r\nvar DynamicProvider = _provider.default.inherit({\r\n    _geocodeLocation: function(location) {\r\n        return new _promise.default(function(resolve) {\r\n            var cache = this._geocodedLocations;\r\n            var cachedLocation = cache[location];\r\n            if (cachedLocation) {\r\n                resolve(cachedLocation)\r\n            } else {\r\n                this._geocodeLocationImpl(location).then(function(geocodedLocation) {\r\n                    cache[location] = geocodedLocation;\r\n                    resolve(geocodedLocation)\r\n                })\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _renderImpl: function() {\r\n        return this._load().then(function() {\r\n            return this._init()\r\n        }.bind(this)).then(function() {\r\n            return _promise.default.all([this.updateMapType(), this._areBoundsSet() ? this.updateBounds() : this.updateCenter()])\r\n        }.bind(this)).then(function() {\r\n            this._attachHandlers();\r\n            return new _promise.default(function(resolve) {\r\n                var timeout = setTimeout(function() {\r\n                    clearTimeout(timeout);\r\n                    resolve()\r\n                })\r\n            })\r\n        }.bind(this))\r\n    },\r\n    _load: function() {\r\n        if (!this._mapsLoader) {\r\n            this._mapsLoader = this._loadImpl()\r\n        }\r\n        this._markers = [];\r\n        this._routes = [];\r\n        return this._mapsLoader\r\n    },\r\n    _loadImpl: abstract,\r\n    _init: abstract,\r\n    _attachHandlers: abstract,\r\n    addMarkers: function(options) {\r\n        return _promise.default.all((0, _iterator.map)(options, function(options) {\r\n            return this._addMarker(options)\r\n        }.bind(this))).then(function(markerObjects) {\r\n            this._fitBounds();\r\n            return [false, (0, _iterator.map)(markerObjects, function(markerObject) {\r\n                return markerObject.marker\r\n            })]\r\n        }.bind(this))\r\n    },\r\n    _addMarker: function(options) {\r\n        return this._renderMarker(options).then(function(markerObject) {\r\n            this._markers.push((0, _extend.extend)({\r\n                options: options\r\n            }, markerObject));\r\n            this._fireMarkerAddedAction({\r\n                options: options,\r\n                originalMarker: markerObject.marker\r\n            });\r\n            return markerObject\r\n        }.bind(this))\r\n    },\r\n    _renderMarker: abstract,\r\n    removeMarkers: function(markersOptionsToRemove) {\r\n        var that = this;\r\n        (0, _iterator.each)(markersOptionsToRemove, function(_, markerOptionToRemove) {\r\n            that._removeMarker(markerOptionToRemove)\r\n        });\r\n        return _promise.default.resolve()\r\n    },\r\n    _removeMarker: function(markersOptionToRemove) {\r\n        var that = this;\r\n        (0, _iterator.each)(this._markers, function(markerIndex, markerObject) {\r\n            if (markerObject.options !== markersOptionToRemove) {\r\n                return true\r\n            }\r\n            that._destroyMarker(markerObject);\r\n            that._markers.splice(markerIndex, 1);\r\n            that._fireMarkerRemovedAction({\r\n                options: markerObject.options\r\n            });\r\n            return false\r\n        })\r\n    },\r\n    _destroyMarker: abstract,\r\n    _clearMarkers: function() {\r\n        while (this._markers.length > 0) {\r\n            this._removeMarker(this._markers[0].options)\r\n        }\r\n    },\r\n    addRoutes: function(options) {\r\n        return _promise.default.all((0, _iterator.map)(options, function(options) {\r\n            return this._addRoute(options)\r\n        }.bind(this))).then(function(routeObjects) {\r\n            this._fitBounds();\r\n            return [false, (0, _iterator.map)(routeObjects, function(routeObject) {\r\n                return routeObject.instance\r\n            })]\r\n        }.bind(this))\r\n    },\r\n    _addRoute: function(options) {\r\n        return this._renderRoute(options).then(function(routeObject) {\r\n            this._routes.push((0, _extend.extend)({\r\n                options: options\r\n            }, routeObject));\r\n            this._fireRouteAddedAction({\r\n                options: options,\r\n                originalRoute: routeObject.instance\r\n            });\r\n            return routeObject\r\n        }.bind(this))\r\n    },\r\n    _renderRoute: abstract,\r\n    removeRoutes: function(options) {\r\n        var that = this;\r\n        (0, _iterator.each)(options, function(routeIndex, options) {\r\n            that._removeRoute(options)\r\n        });\r\n        return _promise.default.resolve()\r\n    },\r\n    _removeRoute: function(options) {\r\n        var that = this;\r\n        (0, _iterator.each)(this._routes, function(routeIndex, routeObject) {\r\n            if (routeObject.options !== options) {\r\n                return true\r\n            }\r\n            that._destroyRoute(routeObject);\r\n            that._routes.splice(routeIndex, 1);\r\n            that._fireRouteRemovedAction({\r\n                options: options\r\n            });\r\n            return false\r\n        })\r\n    },\r\n    _destroyRoute: abstract,\r\n    _clearRoutes: function() {\r\n        while (this._routes.length > 0) {\r\n            this._removeRoute(this._routes[0].options)\r\n        }\r\n    },\r\n    adjustViewport: function() {\r\n        return this._fitBounds()\r\n    },\r\n    isEventsCanceled: function() {\r\n        return true\r\n    },\r\n    _fitBounds: abstract,\r\n    _updateBounds: function() {\r\n        var that = this;\r\n        this._clearBounds();\r\n        if (!this._option(\"autoAdjust\")) {\r\n            return\r\n        }(0, _iterator.each)(this._markers, function(_, markerObject) {\r\n            that._extendBounds(markerObject.location)\r\n        });\r\n        (0, _iterator.each)(this._routes, function(_, routeObject) {\r\n            routeObject.northEast && that._extendBounds(routeObject.northEast);\r\n            routeObject.southWest && that._extendBounds(routeObject.southWest)\r\n        })\r\n    },\r\n    _clearBounds: function() {\r\n        this._bounds = null\r\n    },\r\n    _extendBounds: abstract\r\n});\r\nvar _default = DynamicProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/error.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = _default;\r\nvar _extend = require(\"./extend\");\r\nvar _console = require(\"./console\");\r\nvar _string = require(\"./string\");\r\nvar _version = _interopRequireDefault(require(\"../version\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ERROR_URL = \"http://js.devexpress.com/error/\" + _version.default.split(\".\").slice(0, 2).join(\"_\") + \"/\";\r\n\r\nfunction _default(baseErrors, errors) {\r\n    var exports = {\r\n        ERROR_MESSAGES: (0, _extend.extend)(errors, baseErrors),\r\n        Error: function() {\r\n            return makeError([].slice.call(arguments))\r\n        },\r\n        log: function(id) {\r\n            var method = \"log\";\r\n            if (/^E\\d+$/.test(id)) {\r\n                method = \"error\"\r\n            } else {\r\n                if (/^W\\d+$/.test(id)) {\r\n                    method = \"warn\"\r\n                }\r\n            }\r\n            _console.logger[method](\"log\" === method ? id : combineMessage([].slice.call(arguments)))\r\n        }\r\n    };\r\n\r\n    function combineMessage(args) {\r\n        var id = args[0];\r\n        args = args.slice(1);\r\n        return formatMessage(id, formatDetails(id, args))\r\n    }\r\n\r\n    function formatDetails(id, args) {\r\n        args = [exports.ERROR_MESSAGES[id]].concat(args);\r\n        return _string.format.apply(this, args).replace(/\\.*\\s*?$/, \"\")\r\n    }\r\n\r\n    function formatMessage(id, details) {\r\n        return _string.format.apply(this, [\"{0} - {1}. See:\\n{2}\", id, details, getErrorUrl(id)])\r\n    }\r\n\r\n    function makeError(args) {\r\n        var id = args[0];\r\n        args = args.slice(1);\r\n        var details = formatDetails(id, args);\r\n        var url = getErrorUrl(id);\r\n        var message = formatMessage(id, details);\r\n        return (0, _extend.extend)(new Error(message), {\r\n            __id: id,\r\n            __details: details,\r\n            url: url\r\n        })\r\n    }\r\n\r\n    function getErrorUrl(id) {\r\n        return ERROR_URL + id\r\n    }\r\n    return exports\r\n}\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/utils/add_namespace.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar addNamespace = function addNamespace(eventNames, namespace) {\r\n    if (!namespace) {\r\n        throw _errors.default.Error(\"E0017\")\r\n    }\r\n    if (Array.isArray(eventNames)) {\r\n        return eventNames.map(function(eventName) {\r\n            return addNamespace(eventName, namespace)\r\n        }).join(\" \")\r\n    }\r\n    if (eventNames.indexOf(\" \") !== -1) {\r\n        return addNamespace(eventNames.split(/\\s+/g), namespace)\r\n    }\r\n    return \"\".concat(eventNames, \".\").concat(namespace)\r\n};\r\nvar _default = addNamespace;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (data/array_utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.applyBatch = applyBatch;\r\nexports.createObjectWithChanges = createObjectWithChanges;\r\nexports.update = update;\r\nexports.insert = insert;\r\nexports.remove = remove;\r\nexports.indexByKey = indexByKey;\r\nexports.applyChanges = applyChanges;\r\nvar _type = require(\"../core/utils/type\");\r\nvar _config = _interopRequireDefault(require(\"../core/config\"));\r\nvar _guid = _interopRequireDefault(require(\"../core/guid\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _object = require(\"../core/utils/object\");\r\nvar _data = require(\"../core/utils/data\");\r\nvar _utils = _interopRequireDefault(require(\"./utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction hasKey(target, keyOrKeys) {\r\n    var key;\r\n    var keys = \"string\" === typeof keyOrKeys ? keyOrKeys.split() : keyOrKeys.slice();\r\n    while (keys.length) {\r\n        key = keys.shift();\r\n        if (key in target) {\r\n            return true\r\n        }\r\n    }\r\n    return false\r\n}\r\n\r\nfunction findItems(keyInfo, items, key, groupCount) {\r\n    var childItems;\r\n    var result;\r\n    if (groupCount) {\r\n        for (var i = 0; i < items.length; i++) {\r\n            childItems = items[i].items || items[i].collapsedItems || [];\r\n            result = findItems(keyInfo, childItems || [], key, groupCount - 1);\r\n            if (result) {\r\n                return result\r\n            }\r\n        }\r\n    } else {\r\n        if (indexByKey(keyInfo, items, key) >= 0) {\r\n            return items\r\n        }\r\n    }\r\n}\r\n\r\nfunction getItems(keyInfo, items, key, groupCount) {\r\n    if (groupCount) {\r\n        return findItems(keyInfo, items, key, groupCount) || []\r\n    }\r\n    return items\r\n}\r\n\r\nfunction generateDataByKeyMap(keyInfo, array) {\r\n    if (keyInfo.key() && (!array._dataByKeyMap || array._dataByKeyMapLength !== array.length)) {\r\n        var dataByKeyMap = {};\r\n        var arrayLength = array.length;\r\n        for (var i = 0; i < arrayLength; i++) {\r\n            dataByKeyMap[JSON.stringify(keyInfo.keyOf(array[i]))] = array[i]\r\n        }\r\n        array._dataByKeyMap = dataByKeyMap;\r\n        array._dataByKeyMapLength = arrayLength\r\n    }\r\n}\r\n\r\nfunction getCacheValue(array, key) {\r\n    if (array._dataByKeyMap) {\r\n        return array._dataByKeyMap[JSON.stringify(key)]\r\n    }\r\n}\r\n\r\nfunction getHasKeyCacheValue(array, key) {\r\n    if (array._dataByKeyMap) {\r\n        return array._dataByKeyMap[JSON.stringify(key)]\r\n    }\r\n    return true\r\n}\r\n\r\nfunction setDataByKeyMapValue(array, key, data) {\r\n    if (array._dataByKeyMap) {\r\n        array._dataByKeyMap[JSON.stringify(key)] = data\r\n    }\r\n}\r\n\r\nfunction createObjectWithChanges(target, changes) {\r\n    var result = target ? Object.create(Object.getPrototypeOf(target)) : {};\r\n    var targetWithoutPrototype = (0, _extend.extendFromObject)({}, target);\r\n    (0, _object.deepExtendArraySafe)(result, targetWithoutPrototype, true, true);\r\n    return (0, _object.deepExtendArraySafe)(result, changes, true, true)\r\n}\r\n\r\nfunction applyBatch(_ref) {\r\n    var keyInfo = _ref.keyInfo,\r\n        data = _ref.data,\r\n        changes = _ref.changes,\r\n        groupCount = _ref.groupCount,\r\n        useInsertIndex = _ref.useInsertIndex,\r\n        immutable = _ref.immutable,\r\n        disableCache = _ref.disableCache,\r\n        logError = _ref.logError;\r\n    var resultItems = true === immutable ? _toConsumableArray(data) : data;\r\n    changes.forEach(function(item) {\r\n        var items = \"insert\" === item.type ? resultItems : getItems(keyInfo, resultItems, item.key, groupCount);\r\n        !disableCache && generateDataByKeyMap(keyInfo, items);\r\n        switch (item.type) {\r\n            case \"update\":\r\n                update(keyInfo, items, item.key, item.data, true, immutable, logError);\r\n                break;\r\n            case \"insert\":\r\n                insert(keyInfo, items, item.data, useInsertIndex && (0, _type.isDefined)(item.index) ? item.index : -1, true, logError);\r\n                break;\r\n            case \"remove\":\r\n                remove(keyInfo, items, item.key, true, logError)\r\n        }\r\n    });\r\n    return resultItems\r\n}\r\n\r\nfunction getErrorResult(isBatch, logError, errorCode) {\r\n    return !isBatch ? _utils.default.rejectedPromise(_errors.default.errors.Error(errorCode)) : logError && _errors.default.errors.log(errorCode)\r\n}\r\n\r\nfunction applyChanges(data, changes) {\r\n    var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n    var _options$keyExpr = options.keyExpr,\r\n        keyExpr = void 0 === _options$keyExpr ? \"id\" : _options$keyExpr,\r\n        _options$immutable = options.immutable,\r\n        immutable = void 0 === _options$immutable ? true : _options$immutable;\r\n    var keyGetter = (0, _data.compileGetter)(keyExpr);\r\n    var keyInfo = {\r\n        key: function() {\r\n            return keyExpr\r\n        },\r\n        keyOf: function(obj) {\r\n            return keyGetter(obj)\r\n        }\r\n    };\r\n    return applyBatch({\r\n        keyInfo: keyInfo,\r\n        data: data,\r\n        changes: changes,\r\n        immutable: immutable,\r\n        disableCache: true,\r\n        logError: true\r\n    })\r\n}\r\n\r\nfunction update(keyInfo, array, key, data, isBatch, immutable, logError) {\r\n    var target;\r\n    var extendComplexObject = true;\r\n    var keyExpr = keyInfo.key();\r\n    if (keyExpr) {\r\n        if (hasKey(data, keyExpr) && !_utils.default.keysEqual(keyExpr, key, keyInfo.keyOf(data))) {\r\n            return getErrorResult(isBatch, logError, \"E4017\")\r\n        }\r\n        target = getCacheValue(array, key);\r\n        if (!target) {\r\n            var index = indexByKey(keyInfo, array, key);\r\n            if (index < 0) {\r\n                return getErrorResult(isBatch, logError, \"E4009\")\r\n            }\r\n            target = array[index];\r\n            if (true === immutable && (0, _type.isDefined)(target)) {\r\n                var newTarget = createObjectWithChanges(target, data);\r\n                array[index] = newTarget;\r\n                return !isBatch && _utils.default.trivialPromise(newTarget, key)\r\n            }\r\n        }\r\n    } else {\r\n        target = key\r\n    }(0, _object.deepExtendArraySafe)(target, data, extendComplexObject);\r\n    if (!isBatch) {\r\n        if ((0, _config.default)().useLegacyStoreResult) {\r\n            return _utils.default.trivialPromise(key, data)\r\n        } else {\r\n            return _utils.default.trivialPromise(target, key)\r\n        }\r\n    }\r\n}\r\n\r\nfunction insert(keyInfo, array, data, index, isBatch, logError) {\r\n    var keyValue;\r\n    var keyExpr = keyInfo.key();\r\n    var obj = (0, _type.isPlainObject)(data) ? (0, _extend.extend)({}, data) : data;\r\n    if (keyExpr) {\r\n        keyValue = keyInfo.keyOf(obj);\r\n        if (void 0 === keyValue || \"object\" === _typeof(keyValue) && (0, _type.isEmptyObject)(keyValue)) {\r\n            if (Array.isArray(keyExpr)) {\r\n                throw _errors.default.errors.Error(\"E4007\")\r\n            }\r\n            keyValue = obj[keyExpr] = String(new _guid.default)\r\n        } else {\r\n            if (void 0 !== array[indexByKey(keyInfo, array, keyValue)]) {\r\n                return getErrorResult(isBatch, logError, \"E4008\")\r\n            }\r\n        }\r\n    } else {\r\n        keyValue = obj\r\n    }\r\n    if (index >= 0) {\r\n        array.splice(index, 0, obj)\r\n    } else {\r\n        array.push(obj)\r\n    }\r\n    setDataByKeyMapValue(array, keyValue, obj);\r\n    if (!isBatch) {\r\n        return _utils.default.trivialPromise((0, _config.default)().useLegacyStoreResult ? data : obj, keyValue)\r\n    }\r\n}\r\n\r\nfunction remove(keyInfo, array, key, isBatch, logError) {\r\n    var index = indexByKey(keyInfo, array, key);\r\n    if (index > -1) {\r\n        array.splice(index, 1)\r\n    }\r\n    if (!isBatch) {\r\n        return _utils.default.trivialPromise(key)\r\n    } else {\r\n        if (index < 0) {\r\n            return getErrorResult(isBatch, logError, \"E4009\")\r\n        }\r\n    }\r\n}\r\n\r\nfunction indexByKey(keyInfo, array, key) {\r\n    var keyExpr = keyInfo.key();\r\n    if (!getHasKeyCacheValue(array, key)) {\r\n        return -1\r\n    }\r\n    for (var i = 0, arrayLength = array.length; i < arrayLength; i++) {\r\n        if (_utils.default.keysEqual(keyExpr, keyInfo.keyOf(array[i]), key)) {\r\n            return i\r\n        }\r\n    }\r\n    return -1\r\n}\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_month.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiSchedulerWork_space = _interopRequireDefault(require(\"./ui.scheduler.work_space.indicator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _date2 = _interopRequireDefault(require(\"../../../localization/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar MONTH_CLASS = \"dx-scheduler-work-space-month\";\r\nvar DATE_TABLE_CURRENT_DATE_CLASS = \"dx-scheduler-date-table-current-date\";\r\nvar DATE_TABLE_FIRST_OF_MONTH_CLASS = \"dx-scheduler-date-table-first-of-month\";\r\nvar DATE_TABLE_OTHER_MONTH_DATE_CLASS = \"dx-scheduler-date-table-other-month\";\r\nvar DATE_TABLE_SCROLLABLE_FIXED_CLASS = \"dx-scheduler-scrollable-fixed-content\";\r\nvar DAYS_IN_WEEK = 7;\r\nvar DAY_IN_MILLISECONDS = 864e5;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerWorkSpaceMonth = function(_SchedulerWorkSpace) {\r\n    _inherits(SchedulerWorkSpaceMonth, _SchedulerWorkSpace);\r\n    var _super = _createSuper(SchedulerWorkSpaceMonth);\r\n\r\n    function SchedulerWorkSpaceMonth() {\r\n        _classCallCheck(this, SchedulerWorkSpaceMonth);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerWorkSpaceMonth, [{\r\n        key: \"_toggleFixedScrollableClass\",\r\n        value: function() {\r\n            this._dateTableScrollable.$content().toggleClass(DATE_TABLE_SCROLLABLE_FIXED_CLASS, !this._isWorkSpaceWithCount() && !this._isVerticalGroupedWorkSpace())\r\n        }\r\n    }, {\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return MONTH_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getRowCount\",\r\n        value: function() {\r\n            return this._isWorkSpaceWithCount() ? 4 * this.option(\"intervalCount\") + 2 : 6\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            return DAYS_IN_WEEK\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndex\",\r\n        value: function(headerIndex) {\r\n            var resultDate = new Date(this._firstViewDate);\r\n            resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n            return resultDate\r\n        }\r\n    }, {\r\n        key: \"_getFormat\",\r\n        value: function() {\r\n            return this._formatWeekday\r\n        }\r\n    }, {\r\n        key: \"_calculateCellIndex\",\r\n        value: function(rowIndex, cellIndex) {\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                rowIndex %= this._getRowCount()\r\n            } else {\r\n                cellIndex %= this._getCellCount()\r\n            }\r\n            return rowIndex * this._getCellCount() + cellIndex\r\n        }\r\n    }, {\r\n        key: \"_getInterval\",\r\n        value: function() {\r\n            return DAY_IN_MILLISECONDS\r\n        }\r\n    }, {\r\n        key: \"_getIntervalBetween\",\r\n        value: function(currentDate) {\r\n            var firstViewDate = this.getStartViewDate();\r\n            var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n            return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option(\"startDayHour\")) - timeZoneOffset\r\n        }\r\n    }, {\r\n        key: \"_getDateByCellIndexes\",\r\n        value: function(rowIndex, cellIndex) {\r\n            var date = _get(_getPrototypeOf(SchedulerWorkSpaceMonth.prototype), \"_getDateByCellIndexes\", this).call(this, rowIndex, cellIndex);\r\n            this._setStartDayHour(date);\r\n            return date\r\n        }\r\n    }, {\r\n        key: \"getCellWidth\",\r\n        value: function() {\r\n            var _this = this;\r\n            return this.cache.get(\"cellWidth\", function() {\r\n                var DAYS_IN_WEEK = 7;\r\n                var averageWidth = 0;\r\n                _this._getCells().slice(0, DAYS_IN_WEEK).each(function(index, element) {\r\n                    return averageWidth += (0, _position.getBoundingRect)(element).width\r\n                });\r\n                return averageWidth / DAYS_IN_WEEK\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_calculateHiddenInterval\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"_insertAllDayRowsIntoDateTable\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_getCellCoordinatesByIndex\",\r\n        value: function(index) {\r\n            var rowIndex = Math.floor(index / this._getCellCount());\r\n            var cellIndex = index - this._getCellCount() * rowIndex;\r\n            return {\r\n                rowIndex: rowIndex,\r\n                cellIndex: cellIndex\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createWorkSpaceElements\",\r\n        value: function() {\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                this._createWorkSpaceScrollableElements()\r\n            } else {\r\n                _get(_getPrototypeOf(SchedulerWorkSpaceMonth.prototype), \"_createWorkSpaceElements\", this).call(this)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_needCreateCrossScrolling\",\r\n        value: function() {\r\n            return this.option(\"crossScrollingEnabled\") || this._isVerticalGroupedWorkSpace()\r\n        }\r\n    }, {\r\n        key: \"_renderTimePanel\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_renderAllDayPanel\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_getTableAllDay\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_toggleAllDayVisibility\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_changeAllDayVisibility\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_setFirstViewDate\",\r\n        value: function() {\r\n            var firstMonthDate = _date.default.getFirstMonthDate(this._getViewStartByOptions());\r\n            this._firstViewDate = _date.default.getFirstWeekDate(firstMonthDate, this.option(\"firstDayOfWeek\") || _date2.default.firstDayOfWeekIndex());\r\n            this._setStartDayHour(this._firstViewDate);\r\n            var date = this._getViewStartByOptions();\r\n            this._minVisibleDate = new Date(date.setDate(1));\r\n            this._maxVisibleDate = new Date(new Date(date.setMonth(date.getMonth() + this.option(\"intervalCount\"))).setDate(0))\r\n        }\r\n    }, {\r\n        key: \"_getViewStartByOptions\",\r\n        value: function() {\r\n            if (!this.option(\"startDate\")) {\r\n                return new Date(this.option(\"currentDate\").getTime())\r\n            } else {\r\n                var startDate = this._getStartViewDate();\r\n                var currentDate = this.option(\"currentDate\");\r\n                var diff = startDate.getTime() <= currentDate.getTime() ? 1 : -1;\r\n                var endDate = new Date(new Date(this._getStartViewDate().setMonth(this._getStartViewDate().getMonth() + diff * this.option(\"intervalCount\"))));\r\n                while (!this._dateInRange(currentDate, startDate, endDate, diff)) {\r\n                    startDate = new Date(endDate);\r\n                    if (diff > 0) {\r\n                        startDate.setDate(1)\r\n                    }\r\n                    endDate = new Date(new Date(endDate.setMonth(endDate.getMonth() + diff * this.option(\"intervalCount\"))))\r\n                }\r\n                return diff > 0 ? startDate : endDate\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getStartViewDate\",\r\n        value: function() {\r\n            var firstMonthDate = _date.default.getFirstMonthDate(this.option(\"startDate\"));\r\n            return firstMonthDate\r\n        }\r\n    }, {\r\n        key: \"_renderTableBody\",\r\n        value: function(options) {\r\n            options.getCellText = this._getCellText.bind(this);\r\n            _get(_getPrototypeOf(SchedulerWorkSpaceMonth.prototype), \"_renderTableBody\", this).call(this, options)\r\n        }\r\n    }, {\r\n        key: \"_getCellText\",\r\n        value: function(rowIndex, cellIndex) {\r\n            if (this.isGroupedByDate()) {\r\n                cellIndex = Math.floor(cellIndex / this._getGroupCount())\r\n            } else {\r\n                cellIndex %= this._getCellCount()\r\n            }\r\n            var date = this._getDate(rowIndex, cellIndex);\r\n            if (this._isWorkSpaceWithCount() && this._isFirstDayOfMonth(date)) {\r\n                return this._formatMonthAndDay(date)\r\n            }\r\n            return _date2.default.format(date, \"dd\")\r\n        }\r\n    }, {\r\n        key: \"_formatMonthAndDay\",\r\n        value: function(date) {\r\n            var monthName = _date2.default.getMonthNames(\"abbreviated\")[date.getMonth()];\r\n            return [monthName, _date2.default.format(date, \"day\")].join(\" \")\r\n        }\r\n    }, {\r\n        key: \"_getDate\",\r\n        value: function(week, day) {\r\n            var result = new Date(this._firstViewDate);\r\n            var lastRowInDay = this._getRowCount();\r\n            result.setDate(result.getDate() + week % lastRowInDay * DAYS_IN_WEEK + day);\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_updateIndex\",\r\n        value: function(index) {\r\n            return index\r\n        }\r\n    }, {\r\n        key: \"_prepareCellData\",\r\n        value: function(rowIndex, cellIndex, cell) {\r\n            var data = _get(_getPrototypeOf(SchedulerWorkSpaceMonth.prototype), \"_prepareCellData\", this).call(this, rowIndex, cellIndex, cell);\r\n            var $cell = (0, _renderer.default)(cell);\r\n            $cell.toggleClass(DATE_TABLE_CURRENT_DATE_CLASS, this._isCurrentDate(data.startDate)).toggleClass(DATE_TABLE_FIRST_OF_MONTH_CLASS, this._isFirstDayOfMonth(data.startDate)).toggleClass(DATE_TABLE_OTHER_MONTH_DATE_CLASS, this._isOtherMonth(data.startDate));\r\n            return data\r\n        }\r\n    }, {\r\n        key: \"_isCurrentDate\",\r\n        value: function(cellDate) {\r\n            var today = new Date;\r\n            return _date.default.sameDate(cellDate, today)\r\n        }\r\n    }, {\r\n        key: \"_isFirstDayOfMonth\",\r\n        value: function(cellDate) {\r\n            return this._isWorkSpaceWithCount() && 1 === cellDate.getDate()\r\n        }\r\n    }, {\r\n        key: \"_isOtherMonth\",\r\n        value: function(cellDate) {\r\n            return !_date.default.dateInRange(cellDate, this._minVisibleDate, this._maxVisibleDate, \"date\")\r\n        }\r\n    }, {\r\n        key: \"isIndicationAvailable\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"getCellDuration\",\r\n        value: function() {\r\n            return 36e5 * this._calculateDayDuration()\r\n        }\r\n    }, {\r\n        key: \"getIntervalDuration\",\r\n        value: function() {\r\n            return toMs(\"day\")\r\n        }\r\n    }, {\r\n        key: \"getTimePanelWidth\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"getPositionShift\",\r\n        value: function(timeShift) {\r\n            return {\r\n                cellPosition: timeShift * this.getCellWidth(),\r\n                top: 0,\r\n                left: 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getCellCountToLastViewDate\",\r\n        value: function(date) {\r\n            var firstDateTime = date.getTime();\r\n            var lastDateTime = this.getEndViewDate().getTime();\r\n            var dayDurationInMs = this.getCellDuration();\r\n            return Math.ceil((lastDateTime - firstDateTime) / dayDurationInMs)\r\n        }\r\n    }, {\r\n        key: \"supportAllDayRow\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"keepOriginalHours\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"calculateEndDate\",\r\n        value: function(startDate) {\r\n            var startDateCopy = new Date(startDate);\r\n            return new Date(startDateCopy.setHours(this.option(\"endDayHour\")))\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceLeftOffset\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"needApplyCollectorOffset\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_getDateTableBorderOffset\",\r\n        value: function() {\r\n            return this._getDateTableBorder()\r\n        }\r\n    }, {\r\n        key: \"_getCellPositionByIndex\",\r\n        value: function(index, groupIndex) {\r\n            var position = _get(_getPrototypeOf(SchedulerWorkSpaceMonth.prototype), \"_getCellPositionByIndex\", this).call(this, index, groupIndex);\r\n            var rowIndex = this._getCellCoordinatesByIndex(index).rowIndex;\r\n            var calculatedTopOffset;\r\n            if (!this._isVerticalGroupedWorkSpace()) {\r\n                calculatedTopOffset = this.getCellHeight() * rowIndex\r\n            } else {\r\n                calculatedTopOffset = this.getCellHeight() * (rowIndex + groupIndex * this._getRowCount())\r\n            }\r\n            if (calculatedTopOffset) {\r\n                position.top = calculatedTopOffset\r\n            }\r\n            return position\r\n        }\r\n    }, {\r\n        key: \"_getHeaderDate\",\r\n        value: function() {\r\n            return this._getViewStartByOptions()\r\n        }\r\n    }, {\r\n        key: \"_supportCompactDropDownAppointments\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"scrollToTime\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_getRowCountWithAllDayRows\",\r\n        value: function() {\r\n            return this._getRowCount()\r\n        }\r\n    }]);\r\n    return SchedulerWorkSpaceMonth\r\n}(_uiSchedulerWork_space.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceMonth\", SchedulerWorkSpaceMonth);\r\nvar _default = SchedulerWorkSpaceMonth;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (animation/transition_executor/transition_executor.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TransitionExecutor = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _fx = _interopRequireDefault(require(\"../fx\"));\r\nvar _presets = require(\"../presets/presets\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar directionPostfixes = {\r\n    forward: \" dx-forward\",\r\n    backward: \" dx-backward\",\r\n    none: \" dx-no-direction\",\r\n    undefined: \" dx-no-direction\"\r\n};\r\nvar DX_ANIMATING_CLASS = \"dx-animating\";\r\nvar TransitionExecutor = _class.default.inherit({\r\n    ctor: function() {\r\n        this._accumulatedDelays = {\r\n            enter: 0,\r\n            leave: 0\r\n        };\r\n        this._animations = [];\r\n        this.reset()\r\n    },\r\n    _createAnimations: function($elements, initialConfig, configModifier, type) {\r\n        var that = this;\r\n        var result = [];\r\n        configModifier = configModifier || {};\r\n        var animationConfig = this._prepareElementAnimationConfig(initialConfig, configModifier, type);\r\n        if (animationConfig) {\r\n            $elements.each(function() {\r\n                var animation = that._createAnimation((0, _renderer.default)(this), animationConfig, configModifier);\r\n                if (animation) {\r\n                    animation.element.addClass(DX_ANIMATING_CLASS);\r\n                    animation.setup();\r\n                    result.push(animation)\r\n                }\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    _prepareElementAnimationConfig: function(config, configModifier, type) {\r\n        var result;\r\n        if (\"string\" === typeof config) {\r\n            var presetName = config;\r\n            config = _presets.presets.getPreset(presetName)\r\n        }\r\n        if (!config) {\r\n            result = void 0\r\n        } else {\r\n            if ((0, _type.isFunction)(config[type])) {\r\n                result = config[type]\r\n            } else {\r\n                result = (0, _extend.extend)({\r\n                    skipElementInitialStyles: true,\r\n                    cleanupWhen: this._completePromise\r\n                }, config, configModifier);\r\n                if (!result.type || \"css\" === result.type) {\r\n                    var cssClass = \"dx-\" + type;\r\n                    var extraCssClasses = (result.extraCssClasses ? \" \" + result.extraCssClasses : \"\") + directionPostfixes[result.direction];\r\n                    result.type = \"css\";\r\n                    result.from = (result.from || cssClass) + extraCssClasses;\r\n                    result.to = result.to || cssClass + \"-active\"\r\n                }\r\n                result.staggerDelay = result.staggerDelay || 0;\r\n                result.delay = result.delay || 0;\r\n                if (result.staggerDelay) {\r\n                    result.delay += this._accumulatedDelays[type];\r\n                    this._accumulatedDelays[type] += result.staggerDelay\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _createAnimation: function($element, animationConfig, configModifier) {\r\n        var result;\r\n        if ((0, _type.isPlainObject)(animationConfig)) {\r\n            result = _fx.default.createAnimation($element, animationConfig)\r\n        } else {\r\n            if ((0, _type.isFunction)(animationConfig)) {\r\n                result = animationConfig($element, configModifier)\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _startAnimations: function() {\r\n        var animations = this._animations;\r\n        for (var i = 0; i < animations.length; i++) {\r\n            animations[i].start()\r\n        }\r\n    },\r\n    _stopAnimations: function(jumpToEnd) {\r\n        var animations = this._animations;\r\n        for (var i = 0; i < animations.length; i++) {\r\n            animations[i].stop(jumpToEnd)\r\n        }\r\n    },\r\n    _clearAnimations: function() {\r\n        var animations = this._animations;\r\n        for (var i = 0; i < animations.length; i++) {\r\n            animations[i].element.removeClass(DX_ANIMATING_CLASS)\r\n        }\r\n        this._animations.length = 0\r\n    },\r\n    reset: function() {\r\n        this._accumulatedDelays.enter = 0;\r\n        this._accumulatedDelays.leave = 0;\r\n        this._clearAnimations();\r\n        this._completeDeferred = new _deferred.Deferred;\r\n        this._completePromise = this._completeDeferred.promise()\r\n    },\r\n    enter: function($elements, animationConfig, configModifier) {\r\n        var animations = this._createAnimations($elements, animationConfig, configModifier, \"enter\");\r\n        this._animations.push.apply(this._animations, animations)\r\n    },\r\n    leave: function($elements, animationConfig, configModifier) {\r\n        var animations = this._createAnimations($elements, animationConfig, configModifier, \"leave\");\r\n        this._animations.push.apply(this._animations, animations)\r\n    },\r\n    start: function() {\r\n        var that = this;\r\n        var result;\r\n        if (!this._animations.length) {\r\n            that.reset();\r\n            result = (new _deferred.Deferred).resolve().promise()\r\n        } else {\r\n            var animationDeferreds = (0, _iterator.map)(this._animations, function(animation) {\r\n                var result = new _deferred.Deferred;\r\n                animation.deferred.always(function() {\r\n                    result.resolve()\r\n                });\r\n                return result.promise()\r\n            });\r\n            result = _deferred.when.apply(_renderer.default, animationDeferreds).always(function() {\r\n                that._completeDeferred.resolve();\r\n                that.reset()\r\n            });\r\n            (0, _common.executeAsync)(function() {\r\n                that._startAnimations()\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    stop: function(jumpToEnd) {\r\n        this._stopAnimations(jumpToEnd)\r\n    }\r\n});\r\nexports.TransitionExecutor = TransitionExecutor;\r\n","/**\r\n * DevExtreme (renovation/utils/combine_classes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.combineClasses = combineClasses;\r\n\r\nfunction combineClasses(classesMap) {\r\n    return Object.keys(classesMap).filter(function(p) {\r\n        return classesMap[p]\r\n    }).join(\" \")\r\n}\r\n","/**\r\n * DevExtreme (viz/core/title.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = exports.Title = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"./utils\");\r\nvar _layout_element = require(\"./layout_element\");\r\nvar _Number = Number;\r\nvar parseHorizontalAlignment = (0, _utils.enumParser)([\"left\", \"center\", \"right\"]);\r\nvar parseVerticalAlignment = (0, _utils.enumParser)([\"top\", \"bottom\"]);\r\nvar DEFAULT_MARGIN = 10;\r\n\r\nfunction hasText(text) {\r\n    return !!(text && String(text).length > 0)\r\n}\r\n\r\nfunction processTitleLength(elem, text, width, options, placeholderSize) {\r\n    if (elem.attr({\r\n            text: text\r\n        }).setMaxSize(width, placeholderSize, options).textChanged) {\r\n        elem.setTitle(text)\r\n    }\r\n}\r\n\r\nfunction pickMarginValue(value) {\r\n    return value >= 0 ? _Number(value) : DEFAULT_MARGIN\r\n}\r\n\r\nfunction validateMargin(margin) {\r\n    var result;\r\n    if (margin >= 0) {\r\n        result = {\r\n            left: _Number(margin),\r\n            top: _Number(margin),\r\n            right: _Number(margin),\r\n            bottom: _Number(margin)\r\n        }\r\n    } else {\r\n        margin = margin || {};\r\n        result = {\r\n            left: pickMarginValue(margin.left),\r\n            top: pickMarginValue(margin.top),\r\n            right: pickMarginValue(margin.right),\r\n            bottom: pickMarginValue(margin.bottom)\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction checkRect(rect, boundingRect) {\r\n    return rect[2] - rect[0] < boundingRect.width || rect[3] - rect[1] < boundingRect.height\r\n}\r\nvar Title = function(params) {\r\n    this._params = params;\r\n    this._group = params.renderer.g().attr({\r\n        \"class\": params.cssClass\r\n    }).linkOn(params.root || params.renderer.root, \"title\");\r\n    this._hasText = false\r\n};\r\nexports.Title = Title;\r\n(0, _extend.extend)(Title.prototype, _layout_element.LayoutElement.prototype, {\r\n    dispose: function() {\r\n        var that = this;\r\n        that._group.linkRemove();\r\n        that._group.linkOff();\r\n        if (that._titleElement) {\r\n            that._clipRect.dispose();\r\n            that._titleElement = that._subtitleElement = that._clipRect = null\r\n        }\r\n        that._params = that._group = that._options = null\r\n    },\r\n    _updateOptions: function(options) {\r\n        this._options = options;\r\n        this._options.horizontalAlignment = parseHorizontalAlignment(options.horizontalAlignment, \"center\");\r\n        this._options.verticalAlignment = parseVerticalAlignment(options.verticalAlignment, \"top\");\r\n        this._options.margin = validateMargin(options.margin)\r\n    },\r\n    _updateStructure: function() {\r\n        var that = this;\r\n        var renderer = that._params.renderer;\r\n        var group = that._group;\r\n        var options = that._options;\r\n        var align = options.horizontalAlignment;\r\n        if (!that._titleElement) {\r\n            that._titleElement = renderer.text().append(group);\r\n            that._subtitleElement = renderer.text();\r\n            that._clipRect = renderer.clipRect();\r\n            group.attr({\r\n                \"clip-path\": that._clipRect.id\r\n            })\r\n        }\r\n        that._titleElement.attr({\r\n            align: align,\r\n            \"class\": options.cssClass\r\n        });\r\n        that._subtitleElement.attr({\r\n            align: align,\r\n            \"class\": options.subtitle.cssClass\r\n        });\r\n        group.linkAppend();\r\n        hasText(options.subtitle.text) ? that._subtitleElement.append(group) : that._subtitleElement.remove()\r\n    },\r\n    _updateTexts: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var subtitleOptions = options.subtitle;\r\n        var titleElement = that._titleElement;\r\n        var subtitleElement = that._subtitleElement;\r\n        var testText = \"A\";\r\n        var titleBox;\r\n        titleElement.attr({\r\n            text: testText,\r\n            y: 0\r\n        }).css((0, _utils.patchFontOptions)(options.font));\r\n        titleBox = titleElement.getBBox();\r\n        that._baseLineCorrection = titleBox.height + titleBox.y;\r\n        titleElement.attr({\r\n            text: options.text\r\n        });\r\n        titleBox = titleElement.getBBox();\r\n        var y = -titleBox.y;\r\n        titleElement.attr({\r\n            y: y\r\n        });\r\n        if (hasText(subtitleOptions.text)) {\r\n            subtitleElement.attr({\r\n                text: subtitleOptions.text,\r\n                y: 0\r\n            }).css((0, _utils.patchFontOptions)(subtitleOptions.font))\r\n        }\r\n    },\r\n    _shiftSubtitle: function() {\r\n        var that = this;\r\n        var titleBox = that._titleElement.getBBox();\r\n        var element = that._subtitleElement;\r\n        var offset = that._options.subtitle.offset;\r\n        element.move(0, titleBox.y + titleBox.height - element.getBBox().y - offset)\r\n    },\r\n    _updateBoundingRectAlignment: function() {\r\n        var boundingRect = this._boundingRect;\r\n        var options = this._options;\r\n        boundingRect.verticalAlignment = options.verticalAlignment;\r\n        boundingRect.horizontalAlignment = options.horizontalAlignment;\r\n        boundingRect.cutLayoutSide = options.verticalAlignment;\r\n        boundingRect.cutSide = \"vertical\";\r\n        boundingRect.position = {\r\n            horizontal: options.horizontalAlignment,\r\n            vertical: options.verticalAlignment\r\n        }\r\n    },\r\n    hasText: function() {\r\n        return this._hasText\r\n    },\r\n    update: function(themeOptions, userOptions) {\r\n        var that = this;\r\n        var options = (0, _extend.extend)(true, {}, themeOptions, processTitleOptions(userOptions));\r\n        var _hasText = hasText(options.text);\r\n        var isLayoutChanged = _hasText || _hasText !== that._hasText;\r\n        that._baseLineCorrection = 0;\r\n        that._updateOptions(options);\r\n        that._boundingRect = {};\r\n        if (_hasText) {\r\n            that._updateStructure();\r\n            that._updateTexts()\r\n        } else {\r\n            that._group.linkRemove()\r\n        }\r\n        that._updateBoundingRect();\r\n        that._updateBoundingRectAlignment();\r\n        that._hasText = _hasText;\r\n        return isLayoutChanged\r\n    },\r\n    draw: function(width, height) {\r\n        var that = this;\r\n        if (that._hasText) {\r\n            that._group.linkAppend();\r\n            that._correctTitleLength(width);\r\n            if (that._group.getBBox().height > height) {\r\n                this.freeSpace()\r\n            }\r\n        }\r\n        return that\r\n    },\r\n    _correctTitleLength: function(width) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var margin = options.margin;\r\n        var maxWidth = width - margin.left - margin.right;\r\n        var placeholderSize = options.placeholderSize;\r\n        processTitleLength(that._titleElement, options.text, maxWidth, options, placeholderSize);\r\n        if (that._subtitleElement) {\r\n            if (_Number(placeholderSize) > 0) {\r\n                placeholderSize -= that._titleElement.getBBox().height\r\n            }\r\n            processTitleLength(that._subtitleElement, options.subtitle.text, maxWidth, options.subtitle, placeholderSize);\r\n            that._shiftSubtitle()\r\n        }\r\n        that._updateBoundingRect();\r\n        var _this$getCorrectedLay = this.getCorrectedLayoutOptions(),\r\n            x = _this$getCorrectedLay.x,\r\n            y = _this$getCorrectedLay.y,\r\n            height = _this$getCorrectedLay.height;\r\n        this._clipRect.attr({\r\n            x: x,\r\n            y: y,\r\n            width: width,\r\n            height: height\r\n        })\r\n    },\r\n    getLayoutOptions: function() {\r\n        return this._boundingRect || null\r\n    },\r\n    shift: function(x, y) {\r\n        var that = this;\r\n        var box = that.getLayoutOptions();\r\n        that._group.move(x - box.x, y - box.y);\r\n        return that\r\n    },\r\n    _updateBoundingRect: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var margin = options.margin;\r\n        var boundingRect = that._boundingRect;\r\n        var box = that._hasText ? that._group.getBBox() : {\r\n            width: 0,\r\n            height: 0,\r\n            x: 0,\r\n            y: 0,\r\n            isEmpty: true\r\n        };\r\n        if (!box.isEmpty) {\r\n            box.height += margin.top + margin.bottom - that._baseLineCorrection;\r\n            box.width += margin.left + margin.right;\r\n            box.x -= margin.left;\r\n            box.y += that._baseLineCorrection - margin.top\r\n        }\r\n        if (options.placeholderSize > 0) {\r\n            box.height = options.placeholderSize\r\n        }\r\n        boundingRect.height = box.height;\r\n        boundingRect.width = box.width;\r\n        boundingRect.x = box.x;\r\n        boundingRect.y = box.y\r\n    },\r\n    getCorrectedLayoutOptions: function() {\r\n        var srcBox = this.getLayoutOptions();\r\n        var correction = this._baseLineCorrection;\r\n        return (0, _extend.extend)({}, srcBox, {\r\n            y: srcBox.y - correction,\r\n            height: srcBox.height + correction\r\n        })\r\n    },\r\n    layoutOptions: function() {\r\n        if (!this._hasText) {\r\n            return null\r\n        }\r\n        return {\r\n            horizontalAlignment: this._boundingRect.horizontalAlignment,\r\n            verticalAlignment: this._boundingRect.verticalAlignment,\r\n            priority: 0\r\n        }\r\n    },\r\n    measure: function(size) {\r\n        this.draw(size[0], size[1]);\r\n        return [this._boundingRect.width, this._boundingRect.height]\r\n    },\r\n    move: function(rect, fitRect) {\r\n        var boundingRect = this._boundingRect;\r\n        if (checkRect(rect, boundingRect)) {\r\n            this.shift(fitRect[0], fitRect[1])\r\n        } else {\r\n            this.shift(Math.round(rect[0]), Math.round(rect[1]))\r\n        }\r\n    },\r\n    freeSpace: function() {\r\n        var that = this;\r\n        that._params.incidentOccurred(\"W2103\");\r\n        that._group.linkRemove();\r\n        that._boundingRect.width = that._boundingRect.height = 0\r\n    },\r\n    getOptions: function() {\r\n        return this._options\r\n    },\r\n    changeLink: function(root) {\r\n        this._group.linkRemove();\r\n        this._group.linkOn(root, \"title\")\r\n    }\r\n});\r\n\r\nfunction processTitleOptions(options) {\r\n    var newOptions = (0, _type.isString)(options) ? {\r\n        text: options\r\n    } : options || {};\r\n    newOptions.subtitle = (0, _type.isString)(newOptions.subtitle) ? {\r\n        text: newOptions.subtitle\r\n    } : newOptions.subtitle || {};\r\n    return newOptions\r\n}\r\nvar plugin = {\r\n    name: \"title\",\r\n    init: function() {\r\n        var that = this;\r\n        that._title = new Title({\r\n            renderer: that._renderer,\r\n            cssClass: that._rootClassPrefix + \"-title\",\r\n            incidentOccurred: that._incidentOccurred\r\n        });\r\n        that._layout.add(that._title)\r\n    },\r\n    dispose: function() {\r\n        this._title.dispose();\r\n        this._title = null\r\n    },\r\n    customize: function(constructor) {\r\n        constructor.addChange({\r\n            code: \"TITLE\",\r\n            handler: function() {\r\n                if (this._title.update(this._themeManager.theme(\"title\"), this.option(\"title\"))) {\r\n                    this._change([\"LAYOUT\"])\r\n                }\r\n            },\r\n            isThemeDependent: true,\r\n            option: \"title\",\r\n            isOptionChange: true\r\n        })\r\n    },\r\n    fontFields: [\"title.font\", \"title.subtitle.font\"]\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (ui/text_box/utils.scroll.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.prepareScrollData = exports.allowScroll = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar allowScroll = function(container, delta, shiftKey) {\r\n    var $container = (0, _renderer.default)(container);\r\n    var scrollTopPos = shiftKey ? $container.scrollLeft() : $container.scrollTop();\r\n    var prop = shiftKey ? \"Width\" : \"Height\";\r\n    var scrollBottomPos = $container.prop(\"scroll\".concat(prop)) - $container.prop(\"client\".concat(prop)) - scrollTopPos;\r\n    if (0 === scrollTopPos && 0 === scrollBottomPos) {\r\n        return false\r\n    }\r\n    var isScrollFromTop = 0 === scrollTopPos && delta >= 0;\r\n    var isScrollFromBottom = 0 === scrollBottomPos && delta <= 0;\r\n    var isScrollFromMiddle = scrollTopPos > 0 && scrollBottomPos > 0;\r\n    if (isScrollFromTop || isScrollFromBottom || isScrollFromMiddle) {\r\n        return true\r\n    }\r\n};\r\nexports.allowScroll = allowScroll;\r\nvar prepareScrollData = function(container, validateTarget) {\r\n    var $container = (0, _renderer.default)(container);\r\n    var isCorrectTarget = function(eventTarget) {\r\n        return validateTarget ? (0, _renderer.default)(eventTarget).is(container) : true\r\n    };\r\n    return {\r\n        validate: function(e) {\r\n            if ((0, _index.isDxMouseWheelEvent)(e) && isCorrectTarget(e.target)) {\r\n                if (allowScroll($container, -e.delta, e.shiftKey)) {\r\n                    e._needSkipEvent = true;\r\n                    return true\r\n                }\r\n                return false\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.prepareScrollData = prepareScrollData;\r\n","/**\r\n * DevExtreme (events/transform.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.rotateend = exports.rotate = exports.rotatestart = exports.pinchend = exports.pinch = exports.pinchstart = exports.zoomend = exports.zoom = exports.zoomstart = exports.translateend = exports.translate = exports.translatestart = exports.transformend = exports.transform = exports.transformstart = void 0;\r\nvar _math = require(\"../core/utils/math\");\r\nvar iteratorUtils = _interopRequireWildcard(require(\"../core/utils/iterator\"));\r\nvar _index = require(\"./utils/index\");\r\nvar _emitter = _interopRequireDefault(require(\"./core/emitter\"));\r\nvar _emitter_registrator = _interopRequireDefault(require(\"./core/emitter_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\nvar DX_PREFIX = \"dx\";\r\nvar TRANSFORM = \"transform\";\r\nvar TRANSLATE = \"translate\";\r\nvar PINCH = \"pinch\";\r\nvar ROTATE = \"rotate\";\r\nvar START_POSTFIX = \"start\";\r\nvar UPDATE_POSTFIX = \"\";\r\nvar END_POSTFIX = \"end\";\r\nvar eventAliases = [];\r\nvar addAlias = function(eventName, eventArgs) {\r\n    eventAliases.push({\r\n        name: eventName,\r\n        args: eventArgs\r\n    })\r\n};\r\naddAlias(TRANSFORM, {\r\n    scale: true,\r\n    deltaScale: true,\r\n    rotation: true,\r\n    deltaRotation: true,\r\n    translation: true,\r\n    deltaTranslation: true\r\n});\r\naddAlias(TRANSLATE, {\r\n    translation: true,\r\n    deltaTranslation: true\r\n});\r\naddAlias(PINCH, {\r\n    scale: true,\r\n    deltaScale: true\r\n});\r\naddAlias(ROTATE, {\r\n    rotation: true,\r\n    deltaRotation: true\r\n});\r\nvar getVector = function(first, second) {\r\n    return {\r\n        x: second.pageX - first.pageX,\r\n        y: -second.pageY + first.pageY,\r\n        centerX: .5 * (second.pageX + first.pageX),\r\n        centerY: .5 * (second.pageY + first.pageY)\r\n    }\r\n};\r\nvar getEventVector = function(e) {\r\n    var pointers = e.pointers;\r\n    return getVector(pointers[0], pointers[1])\r\n};\r\nvar getDistance = function(vector) {\r\n    return Math.sqrt(vector.x * vector.x + vector.y * vector.y)\r\n};\r\nvar getScale = function(firstVector, secondVector) {\r\n    return getDistance(firstVector) / getDistance(secondVector)\r\n};\r\nvar getRotation = function(firstVector, secondVector) {\r\n    var scalarProduct = firstVector.x * secondVector.x + firstVector.y * secondVector.y;\r\n    var distanceProduct = getDistance(firstVector) * getDistance(secondVector);\r\n    if (0 === distanceProduct) {\r\n        return 0\r\n    }\r\n    var sign = (0, _math.sign)(firstVector.x * secondVector.y - secondVector.x * firstVector.y);\r\n    var angle = Math.acos((0, _math.fitIntoRange)(scalarProduct / distanceProduct, -1, 1));\r\n    return sign * angle\r\n};\r\nvar getTranslation = function(firstVector, secondVector) {\r\n    return {\r\n        x: firstVector.centerX - secondVector.centerX,\r\n        y: firstVector.centerY - secondVector.centerY\r\n    }\r\n};\r\nvar TransformEmitter = _emitter.default.inherit({\r\n    validatePointers: function(e) {\r\n        return (0, _index.hasTouches)(e) > 1\r\n    },\r\n    start: function(e) {\r\n        this._accept(e);\r\n        var startVector = getEventVector(e);\r\n        this._startVector = startVector;\r\n        this._prevVector = startVector;\r\n        this._fireEventAliases(START_POSTFIX, e)\r\n    },\r\n    move: function(e) {\r\n        var currentVector = getEventVector(e);\r\n        var eventArgs = this._getEventArgs(currentVector);\r\n        this._fireEventAliases(UPDATE_POSTFIX, e, eventArgs);\r\n        this._prevVector = currentVector\r\n    },\r\n    end: function(e) {\r\n        var eventArgs = this._getEventArgs(this._prevVector);\r\n        this._fireEventAliases(END_POSTFIX, e, eventArgs)\r\n    },\r\n    _getEventArgs: function(vector) {\r\n        return {\r\n            scale: getScale(vector, this._startVector),\r\n            deltaScale: getScale(vector, this._prevVector),\r\n            rotation: getRotation(vector, this._startVector),\r\n            deltaRotation: getRotation(vector, this._prevVector),\r\n            translation: getTranslation(vector, this._startVector),\r\n            deltaTranslation: getTranslation(vector, this._prevVector)\r\n        }\r\n    },\r\n    _fireEventAliases: function(eventPostfix, originalEvent, eventArgs) {\r\n        eventArgs = eventArgs || {};\r\n        iteratorUtils.each(eventAliases, function(_, eventAlias) {\r\n            var args = {};\r\n            iteratorUtils.each(eventAlias.args, function(name) {\r\n                if (name in eventArgs) {\r\n                    args[name] = eventArgs[name]\r\n                }\r\n            });\r\n            this._fireEvent(DX_PREFIX + eventAlias.name + eventPostfix, originalEvent, args)\r\n        }.bind(this))\r\n    }\r\n});\r\nvar eventNames = eventAliases.reduce(function(result, eventAlias) {\r\n    [START_POSTFIX, UPDATE_POSTFIX, END_POSTFIX].forEach(function(eventPostfix) {\r\n        result.push(DX_PREFIX + eventAlias.name + eventPostfix)\r\n    });\r\n    return result\r\n}, []);\r\n(0, _emitter_registrator.default)({\r\n    emitter: TransformEmitter,\r\n    events: eventNames\r\n});\r\nvar exportNames = {};\r\niteratorUtils.each(eventNames, function(_, eventName) {\r\n    exportNames[eventName.substring(DX_PREFIX.length)] = eventName\r\n});\r\nvar transformstart = exportNames.transformstart,\r\n    transform = exportNames.transform,\r\n    transformend = exportNames.transformend,\r\n    translatestart = exportNames.translatestart,\r\n    translate = exportNames.translate,\r\n    translateend = exportNames.translateend,\r\n    zoomstart = exportNames.zoomstart,\r\n    zoom = exportNames.zoom,\r\n    zoomend = exportNames.zoomend,\r\n    pinchstart = exportNames.pinchstart,\r\n    pinch = exportNames.pinch,\r\n    pinchend = exportNames.pinchend,\r\n    rotatestart = exportNames.rotatestart,\r\n    rotate = exportNames.rotate,\r\n    rotateend = exportNames.rotateend;\r\nexports.rotateend = rotateend;\r\nexports.rotate = rotate;\r\nexports.rotatestart = rotatestart;\r\nexports.pinchend = pinchend;\r\nexports.pinch = pinch;\r\nexports.pinchstart = pinchstart;\r\nexports.zoomend = zoomend;\r\nexports.zoom = zoom;\r\nexports.zoomstart = zoomstart;\r\nexports.translateend = translateend;\r\nexports.translate = translate;\r\nexports.translatestart = translatestart;\r\nexports.transformend = transformend;\r\nexports.transform = transform;\r\nexports.transformstart = transformstart;\r\n","/**\r\n * DevExtreme (exporter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.export = _export;\r\nObject.defineProperty(exports, \"fileSaver\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _file_saver.fileSaver\r\n    }\r\n});\r\nexports.svg = exports.pdf = exports.image = exports.excel = void 0;\r\nvar _file_saver = require(\"./exporter/file_saver\");\r\nvar _excel_creator = require(\"./exporter/excel_creator\");\r\nvar _image_creator = require(\"./exporter/image_creator\");\r\nvar _svg_creator = require(\"./exporter/svg_creator\");\r\nvar _type = require(\"./core/utils/type\");\r\nvar _deferred = require(\"./core/utils/deferred\");\r\nvar _excel_format_converter = _interopRequireDefault(require(\"./exporter/excel_format_converter\"));\r\nvar _pdf_creator = require(\"./exporter/pdf_creator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _export(data, options, getData) {\r\n    if (!data) {\r\n        return (new _deferred.Deferred).resolve()\r\n    }\r\n    var exportingAction = options.exportingAction;\r\n    var exportedAction = options.exportedAction;\r\n    var fileSavingAction = options.fileSavingAction;\r\n    var eventArgs = {\r\n        fileName: options.fileName,\r\n        format: options.format,\r\n        cancel: false\r\n    };\r\n    (0, _type.isFunction)(exportingAction) && exportingAction(eventArgs);\r\n    if (!eventArgs.cancel) {\r\n        return getData(data, options).then(function(blob) {\r\n            (0, _type.isFunction)(exportedAction) && exportedAction();\r\n            if ((0, _type.isFunction)(fileSavingAction)) {\r\n                eventArgs.data = blob;\r\n                fileSavingAction(eventArgs)\r\n            }\r\n            if (!eventArgs.cancel) {\r\n                _file_saver.fileSaver.saveAs(eventArgs.fileName, options.format, blob, options.proxyUrl, options.forceProxy)\r\n            }\r\n        })\r\n    }\r\n    return (new _deferred.Deferred).resolve()\r\n}\r\nvar excel = {\r\n    creator: _excel_creator.ExcelCreator,\r\n    getData: _excel_creator.getData,\r\n    formatConverter: _excel_format_converter.default\r\n};\r\nexports.excel = excel;\r\nvar image = {\r\n    creator: _image_creator.imageCreator,\r\n    getData: _image_creator.getData,\r\n    testFormats: _image_creator.testFormats\r\n};\r\nexports.image = image;\r\nvar pdf = {\r\n    getData: _pdf_creator.getData\r\n};\r\nexports.pdf = pdf;\r\nvar svg = {\r\n    creator: _svg_creator.svgCreator,\r\n    getData: _svg_creator.getData\r\n};\r\nexports.svg = svg;\r\n","/**\r\n * DevExtreme (data/custom_store.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils\"));\r\nvar _array_utils = require(\"./array_utils\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _config = _interopRequireDefault(require(\"../core/config\"));\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _abstract_store = _interopRequireDefault(require(\"./abstract_store\"));\r\nvar _array_query = _interopRequireDefault(require(\"./array_query\"));\r\nvar _store_helper = _interopRequireDefault(require(\"./store_helper\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TOTAL_COUNT = \"totalCount\";\r\nvar LOAD = \"load\";\r\nvar BY_KEY = \"byKey\";\r\nvar INSERT = \"insert\";\r\nvar UPDATE = \"update\";\r\nvar REMOVE = \"remove\";\r\n\r\nfunction isPromise(obj) {\r\n    return obj && (0, _type.isFunction)(obj.then)\r\n}\r\n\r\nfunction trivialPromise(value) {\r\n    return (new _deferred.Deferred).resolve(value).promise()\r\n}\r\n\r\nfunction ensureRequiredFuncOption(name, obj) {\r\n    if (!(0, _type.isFunction)(obj)) {\r\n        throw _errors.default.errors.Error(\"E4011\", name)\r\n    }\r\n}\r\n\r\nfunction throwInvalidUserFuncResult(name) {\r\n    throw _errors.default.errors.Error(\"E4012\", name)\r\n}\r\n\r\nfunction createUserFuncFailureHandler(pendingDeferred) {\r\n    function errorMessageFromXhr(promiseArguments) {\r\n        var xhr = promiseArguments[0];\r\n        var textStatus = promiseArguments[1];\r\n        if (!xhr || !xhr.getResponseHeader) {\r\n            return null\r\n        }\r\n        return _utils.default.errorMessageFromXhr(xhr, textStatus)\r\n    }\r\n    return function(arg) {\r\n        var error;\r\n        if (arg instanceof Error) {\r\n            error = arg\r\n        } else {\r\n            error = new Error(errorMessageFromXhr(arguments) || arg && String(arg) || \"Unknown error\")\r\n        }\r\n        if (error.message !== _utils.default.XHR_ERROR_UNLOAD) {\r\n            pendingDeferred.reject(error)\r\n        }\r\n    }\r\n}\r\n\r\nfunction invokeUserLoad(store, options) {\r\n    var userFunc = store._loadFunc;\r\n    var userResult;\r\n    ensureRequiredFuncOption(LOAD, userFunc);\r\n    userResult = userFunc.apply(store, [options]);\r\n    if (Array.isArray(userResult)) {\r\n        userResult = trivialPromise(userResult)\r\n    } else {\r\n        if (null === userResult || void 0 === userResult) {\r\n            userResult = trivialPromise([])\r\n        } else {\r\n            if (!isPromise(userResult)) {\r\n                throwInvalidUserFuncResult(LOAD)\r\n            }\r\n        }\r\n    }\r\n    return (0, _deferred.fromPromise)(userResult)\r\n}\r\n\r\nfunction invokeUserTotalCountFunc(store, options) {\r\n    var userFunc = store._totalCountFunc;\r\n    var userResult;\r\n    if (!(0, _type.isFunction)(userFunc)) {\r\n        throw _errors.default.errors.Error(\"E4021\")\r\n    }\r\n    userResult = userFunc.apply(store, [options]);\r\n    if (!isPromise(userResult)) {\r\n        userResult = Number(userResult);\r\n        if (!isFinite(userResult)) {\r\n            throwInvalidUserFuncResult(TOTAL_COUNT)\r\n        }\r\n        userResult = trivialPromise(userResult)\r\n    }\r\n    return (0, _deferred.fromPromise)(userResult)\r\n}\r\n\r\nfunction invokeUserByKeyFunc(store, key, extraOptions) {\r\n    var userFunc = store._byKeyFunc;\r\n    var userResult;\r\n    ensureRequiredFuncOption(BY_KEY, userFunc);\r\n    userResult = userFunc.apply(store, [key, extraOptions]);\r\n    if (!isPromise(userResult)) {\r\n        userResult = trivialPromise(userResult)\r\n    }\r\n    return (0, _deferred.fromPromise)(userResult)\r\n}\r\n\r\nfunction runRawLoad(pendingDeferred, store, userFuncOptions, continuation) {\r\n    if (store.__rawData) {\r\n        continuation(store.__rawData)\r\n    } else {\r\n        var loadPromise = store.__rawDataPromise || invokeUserLoad(store, userFuncOptions);\r\n        if (store._cacheRawData) {\r\n            store.__rawDataPromise = loadPromise\r\n        }\r\n        loadPromise.always(function() {\r\n            delete store.__rawDataPromise\r\n        }).done(function(rawData) {\r\n            if (store._cacheRawData) {\r\n                store.__rawData = rawData\r\n            }\r\n            continuation(rawData)\r\n        }).fail(createUserFuncFailureHandler(pendingDeferred))\r\n    }\r\n}\r\n\r\nfunction runRawLoadWithQuery(pendingDeferred, store, options, countOnly) {\r\n    options = options || {};\r\n    var userFuncOptions = {};\r\n    if (\"userData\" in options) {\r\n        userFuncOptions.userData = options.userData\r\n    }\r\n    runRawLoad(pendingDeferred, store, userFuncOptions, function(rawData) {\r\n        var rawDataQuery = (0, _array_query.default)(rawData, {\r\n            errorHandler: store._errorHandler\r\n        });\r\n        var itemsQuery;\r\n        var totalCountQuery;\r\n        var waitList = [];\r\n        var items;\r\n        var totalCount;\r\n        if (!countOnly) {\r\n            itemsQuery = _store_helper.default.queryByOptions(rawDataQuery, options);\r\n            if (itemsQuery === rawDataQuery) {\r\n                items = rawData.slice(0)\r\n            } else {\r\n                waitList.push(itemsQuery.enumerate().done(function(asyncResult) {\r\n                    items = asyncResult\r\n                }))\r\n            }\r\n        }\r\n        if (options.requireTotalCount || countOnly) {\r\n            totalCountQuery = _store_helper.default.queryByOptions(rawDataQuery, options, true);\r\n            if (totalCountQuery === rawDataQuery) {\r\n                totalCount = rawData.length\r\n            } else {\r\n                waitList.push(totalCountQuery.count().done(function(asyncResult) {\r\n                    totalCount = asyncResult\r\n                }))\r\n            }\r\n        }\r\n        _deferred.when.apply(_renderer.default, waitList).done(function() {\r\n            if (countOnly) {\r\n                pendingDeferred.resolve(totalCount)\r\n            } else {\r\n                if (options.requireTotalCount) {\r\n                    pendingDeferred.resolve(items, {\r\n                        totalCount: totalCount\r\n                    })\r\n                } else {\r\n                    pendingDeferred.resolve(items)\r\n                }\r\n            }\r\n        }).fail(function(x) {\r\n            pendingDeferred.reject(x)\r\n        })\r\n    })\r\n}\r\n\r\nfunction runRawLoadWithKey(pendingDeferred, store, key) {\r\n    runRawLoad(pendingDeferred, store, {}, function(rawData) {\r\n        var keyExpr = store.key();\r\n        var item;\r\n        for (var i = 0, len = rawData.length; i < len; i++) {\r\n            item = rawData[i];\r\n            if (_utils.default.keysEqual(keyExpr, store.keyOf(rawData[i]), key)) {\r\n                pendingDeferred.resolve(item);\r\n                return\r\n            }\r\n        }\r\n        pendingDeferred.reject(_errors.default.errors.Error(\"E4009\"))\r\n    })\r\n}\r\nvar CustomStore = _abstract_store.default.inherit({\r\n    ctor: function(options) {\r\n        options = options || {};\r\n        this.callBase(options);\r\n        this._useDefaultSearch = !!options.useDefaultSearch || \"raw\" === options.loadMode;\r\n        this._loadMode = options.loadMode;\r\n        this._cacheRawData = false !== options.cacheRawData;\r\n        this._loadFunc = options[LOAD];\r\n        this._totalCountFunc = options[TOTAL_COUNT];\r\n        this._byKeyFunc = options[BY_KEY];\r\n        this._insertFunc = options[INSERT];\r\n        this._updateFunc = options[UPDATE];\r\n        this._removeFunc = options[REMOVE]\r\n    },\r\n    createQuery: function() {\r\n        throw _errors.default.errors.Error(\"E4010\")\r\n    },\r\n    clearRawDataCache: function() {\r\n        delete this.__rawData\r\n    },\r\n    _totalCountImpl: function(options) {\r\n        var d = new _deferred.Deferred;\r\n        if (\"raw\" === this._loadMode && !this._totalCountFunc) {\r\n            runRawLoadWithQuery(d, this, options, true)\r\n        } else {\r\n            invokeUserTotalCountFunc(this, options).done(function(count) {\r\n                d.resolve(Number(count))\r\n            }).fail(createUserFuncFailureHandler(d));\r\n            d = this._addFailHandlers(d)\r\n        }\r\n        return d.promise()\r\n    },\r\n    _pushImpl: function(changes) {\r\n        if (this.__rawData) {\r\n            (0, _array_utils.applyBatch)({\r\n                keyInfo: this,\r\n                data: this.__rawData,\r\n                changes: changes\r\n            })\r\n        }\r\n    },\r\n    _loadImpl: function(options) {\r\n        var d = new _deferred.Deferred;\r\n        if (\"raw\" === this._loadMode) {\r\n            runRawLoadWithQuery(d, this, options, false)\r\n        } else {\r\n            invokeUserLoad(this, options).done(function(data, extra) {\r\n                d.resolve(data, extra)\r\n            }).fail(createUserFuncFailureHandler(d));\r\n            d = this._addFailHandlers(d)\r\n        }\r\n        return d.promise()\r\n    },\r\n    _byKeyImpl: function(key, extraOptions) {\r\n        var d = new _deferred.Deferred;\r\n        if (this._byKeyViaLoad()) {\r\n            this._requireKey();\r\n            runRawLoadWithKey(d, this, key)\r\n        } else {\r\n            invokeUserByKeyFunc(this, key, extraOptions).done(function(obj) {\r\n                d.resolve(obj)\r\n            }).fail(createUserFuncFailureHandler(d))\r\n        }\r\n        return d.promise()\r\n    },\r\n    _byKeyViaLoad: function() {\r\n        return \"raw\" === this._loadMode && !this._byKeyFunc\r\n    },\r\n    _insertImpl: function(values) {\r\n        var that = this;\r\n        var userFunc = that._insertFunc;\r\n        var userResult;\r\n        var d = new _deferred.Deferred;\r\n        ensureRequiredFuncOption(INSERT, userFunc);\r\n        userResult = userFunc.apply(that, [values]);\r\n        if (!isPromise(userResult)) {\r\n            userResult = trivialPromise(userResult)\r\n        }(0, _deferred.fromPromise)(userResult).done(function(serverResponse) {\r\n            if ((0, _config.default)().useLegacyStoreResult) {\r\n                d.resolve(values, serverResponse)\r\n            } else {\r\n                d.resolve(serverResponse || values, that.keyOf(serverResponse))\r\n            }\r\n        }).fail(createUserFuncFailureHandler(d));\r\n        return d.promise()\r\n    },\r\n    _updateImpl: function(key, values) {\r\n        var userFunc = this._updateFunc;\r\n        var userResult;\r\n        var d = new _deferred.Deferred;\r\n        ensureRequiredFuncOption(UPDATE, userFunc);\r\n        userResult = userFunc.apply(this, [key, values]);\r\n        if (!isPromise(userResult)) {\r\n            userResult = trivialPromise(userResult)\r\n        }(0, _deferred.fromPromise)(userResult).done(function(serverResponse) {\r\n            if ((0, _config.default)().useLegacyStoreResult) {\r\n                d.resolve(key, values)\r\n            } else {\r\n                d.resolve(serverResponse || values, key)\r\n            }\r\n        }).fail(createUserFuncFailureHandler(d));\r\n        return d.promise()\r\n    },\r\n    _removeImpl: function(key) {\r\n        var userFunc = this._removeFunc;\r\n        var userResult;\r\n        var d = new _deferred.Deferred;\r\n        ensureRequiredFuncOption(REMOVE, userFunc);\r\n        userResult = userFunc.apply(this, [key]);\r\n        if (!isPromise(userResult)) {\r\n            userResult = trivialPromise()\r\n        }(0, _deferred.fromPromise)(userResult).done(function() {\r\n            d.resolve(key)\r\n        }).fail(createUserFuncFailureHandler(d));\r\n        return d.promise()\r\n    }\r\n});\r\nvar _default = CustomStore;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_view/ui.tree_view.search.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.search_box_mixin\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiTree_view = _interopRequireDefault(require(\"./ui.tree_view.base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar WIDGET_CLASS = \"dx-treeview\";\r\nvar NODE_CONTAINER_CLASS = \"\".concat(WIDGET_CLASS, \"-node-container\");\r\nvar TreeViewSearch = _uiTree_view.default.inherit(_ui.default).inherit({\r\n    _addWidgetPrefix: function(className) {\r\n        return \"\".concat(WIDGET_CLASS, \"-\").concat(className)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"searchValue\":\r\n                if (this._showCheckboxes() && this._isRecursiveSelection()) {\r\n                    this._removeSelection()\r\n                }\r\n                this._initDataAdapter();\r\n                this._updateSearch();\r\n                this._repaintContainer();\r\n                break;\r\n            case \"searchExpr\":\r\n                this._initDataAdapter();\r\n                this.repaint();\r\n                break;\r\n            case \"searchMode\":\r\n                this.option(\"expandNodesRecursive\") ? this._updateDataAdapter() : this._initDataAdapter();\r\n                this.repaint();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _updateDataAdapter: function() {\r\n        this._setOptionWithoutOptionChange(\"expandNodesRecursive\", false);\r\n        this._initDataAdapter();\r\n        this._setOptionWithoutOptionChange(\"expandNodesRecursive\", true)\r\n    },\r\n    _getDataAdapterOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            searchValue: this.option(\"searchValue\"),\r\n            searchMode: this.option(\"searchMode\") || \"contains\",\r\n            searchExpr: this.option(\"searchExpr\")\r\n        })\r\n    },\r\n    _updateSearch: function() {\r\n        if (this._searchEditor) {\r\n            var editorOptions = this._getSearchEditorOptions();\r\n            this._searchEditor.option(editorOptions)\r\n        }\r\n    },\r\n    _repaintContainer: function() {\r\n        var $container = this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).first();\r\n        var rootNodes;\r\n        if ($container.length) {\r\n            $container.empty();\r\n            rootNodes = this._dataAdapter.getRootNodes();\r\n            this._renderEmptyMessage(rootNodes);\r\n            this._renderItems($container, rootNodes);\r\n            this._fireContentReadyAction()\r\n        }\r\n    },\r\n    _itemContainer: function(isSearchMode) {\r\n        if (this._scrollableContainer && isSearchMode) {\r\n            return (0, _renderer.default)(this._scrollableContainer.content())\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _addWidgetClass: function() {\r\n        this.$element().addClass(this._widgetClass())\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        this._removeSearchBox()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxTreeView\", TreeViewSearch);\r\nvar _default = TreeViewSearch;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month_line.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointments.strategy.horizontal\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _query = _interopRequireDefault(require(\"../../../data/query\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar HOURS_IN_DAY = 24;\r\nvar MINUTES_IN_HOUR = 60;\r\nvar MILLISECONDS_IN_MINUTE = 6e4;\r\nvar ZERO_APPOINTMENT_DURATION_IN_DAYS = 1;\r\nvar HorizontalMonthLineRenderingStrategy = function(_HorizontalAppointmen) {\r\n    _inherits(HorizontalMonthLineRenderingStrategy, _HorizontalAppointmen);\r\n    var _super = _createSuper(HorizontalMonthLineRenderingStrategy);\r\n\r\n    function HorizontalMonthLineRenderingStrategy() {\r\n        _classCallCheck(this, HorizontalMonthLineRenderingStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(HorizontalMonthLineRenderingStrategy, [{\r\n        key: \"calculateAppointmentWidth\",\r\n        value: function(appointment, position) {\r\n            var startDate = _date.default.trimTime(position.info.appointment.startDate);\r\n            var endDate = this.normalizeEndDateByViewEnd(appointment, position.info.appointment.endDate);\r\n            var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n            var duration = this._getDurationInDays(startDate, endDate);\r\n            var width = this.cropAppointmentWidth(Math.ceil(duration) * cellWidth, cellWidth);\r\n            return width\r\n        }\r\n    }, {\r\n        key: \"_getDurationInDays\",\r\n        value: function(startDate, endDate) {\r\n            var adjustedDuration = this._adjustDurationByDaylightDiff(endDate.getTime() - startDate.getTime(), startDate, endDate);\r\n            return adjustedDuration / _date.default.dateToMilliseconds(\"day\") || ZERO_APPOINTMENT_DURATION_IN_DAYS\r\n        }\r\n    }, {\r\n        key: \"getDeltaTime\",\r\n        value: function(args, initialSize) {\r\n            return HOURS_IN_DAY * MINUTES_IN_HOUR * MILLISECONDS_IN_MINUTE * this._getDeltaWidth(args, initialSize)\r\n        }\r\n    }, {\r\n        key: \"isAllDay\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"createTaskPositionMap\",\r\n        value: function(items, skipSorting) {\r\n            if (!skipSorting) {\r\n                this.instance.getAppointmentsInstance()._sortAppointmentsByStartDate(items)\r\n            }\r\n            return _get(_getPrototypeOf(HorizontalMonthLineRenderingStrategy.prototype), \"createTaskPositionMap\", this).call(this, items)\r\n        }\r\n    }, {\r\n        key: \"_getSortedPositions\",\r\n        value: function(map, skipSorting) {\r\n            var result = _get(_getPrototypeOf(HorizontalMonthLineRenderingStrategy.prototype), \"_getSortedPositions\", this).call(this, map);\r\n            if (!skipSorting) {\r\n                result = (0, _query.default)(result).sortBy(\"top\").thenBy(\"left\").thenBy(\"cellPosition\").thenBy(\"i\").toArray()\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"needCorrectAppointmentDates\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }]);\r\n    return HorizontalMonthLineRenderingStrategy\r\n}(_uiSchedulerAppointmentsStrategy.default);\r\nvar _default = HorizontalMonthLineRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.fields_area.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.FieldsArea = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.area_item\");\r\nvar _uiPivot_grid2 = require(\"./ui.pivot_grid.utils\");\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nrequire(\"./ui.pivot_grid.field_chooser_base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DIV = \"<div>\";\r\nvar AREA_DRAG_CLASS = \"dx-pivotgrid-drag-action\";\r\n\r\nfunction renderGroupConnector(field, nextField, prevField, $container) {\r\n    if (prevField && prevField.groupName && prevField.groupName === field.groupName) {\r\n        (0, _renderer.default)(DIV).addClass(\"dx-group-connector\").addClass(\"dx-group-connector-prev\").appendTo($container)\r\n    }\r\n    if (nextField && nextField.groupName && nextField.groupName === field.groupName) {\r\n        (0, _renderer.default)(DIV).addClass(\"dx-group-connector\").addClass(\"dx-group-connector-next\").appendTo($container)\r\n    }\r\n}\r\nvar FieldsArea = _uiPivot_grid.AreaItem.inherit({\r\n    ctor: function(component, area) {\r\n        this.callBase(component);\r\n        this._area = area\r\n    },\r\n    _getAreaName: function() {\r\n        return \"fields\"\r\n    },\r\n    _createGroupElement: function() {\r\n        return (0, _renderer.default)(DIV).addClass(\"dx-pivotgrid-fields-area\").addClass(\"dx-area-fields\").addClass(AREA_DRAG_CLASS).attr(\"group\", this._area)\r\n    },\r\n    isVisible: function() {\r\n        return !!this.option(\"fieldPanel.visible\") && this.option(\"fieldPanel.show\" + (0, _uiPivot_grid2.capitalizeFirstLetter)(this._area) + \"Fields\")\r\n    },\r\n    _renderButton: function(element) {\r\n        var that = this;\r\n        var container = (0, _renderer.default)(\"<td>\").appendTo((0, _renderer.default)(\"<tr>\").appendTo(element));\r\n        var button = that.component._createComponent((0, _renderer.default)(DIV).appendTo(container), _button.default, {\r\n            text: \"Fields\",\r\n            icon: \"menu\",\r\n            width: \"auto\",\r\n            onClick: function() {\r\n                var popup = that.tableElement().find(\".dx-fields-area-popup\").dxPopup(\"instance\");\r\n                if (!popup.option(\"visible\")) {\r\n                    popup.show()\r\n                }\r\n            }\r\n        });\r\n        button.$element().addClass(\"dx-pivotgrid-fields-area-hamburger\")\r\n    },\r\n    _getPopupOptions: function(row, button) {\r\n        return {\r\n            contentTemplate: function() {\r\n                return (0, _renderer.default)(\"<table>\").addClass(\"dx-area-field-container\").append((0, _renderer.default)(\"<thead>\").addClass(\"dx-pivotgrid-fields-area-head\").append(row))\r\n            },\r\n            height: \"auto\",\r\n            width: \"auto\",\r\n            position: {\r\n                at: \"left\",\r\n                my: \"left\",\r\n                of: button\r\n            },\r\n            dragEnabled: false,\r\n            animation: {\r\n                show: {\r\n                    type: \"pop\",\r\n                    duration: 200\r\n                }\r\n            },\r\n            shading: false,\r\n            showTitle: false,\r\n            closeOnOutsideClick: true,\r\n            container: button.parent()\r\n        }\r\n    },\r\n    _renderPopup: function(tableElement, row) {\r\n        var that = this;\r\n        var button = tableElement.find(\".dx-button\");\r\n        var popupOptions = that._getPopupOptions(row, button);\r\n        var FieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase(\"instance\");\r\n        if (that._rowPopup) {\r\n            that._rowPopup.$element().remove()\r\n        }\r\n        that._rowPopup = that.component._createComponent((0, _renderer.default)(DIV).appendTo(tableElement), _popup.default, popupOptions);\r\n        that._rowPopup.$element().addClass(\"dx-fields-area-popup\");\r\n        that._rowPopup.content().addClass(\"dx-pivotgrid-fields-container\");\r\n        that._rowPopup.content().parent().attr(\"group\", \"row\");\r\n        FieldChooserBase.subscribeToEvents(that._rowPopup.content());\r\n        FieldChooserBase.renderSortable(that._rowPopup.content())\r\n    },\r\n    _shouldCreateButton: function() {\r\n        return false\r\n    },\r\n    _renderTableContent: function(tableElement, data) {\r\n        var that = this;\r\n        var groupElement = this.groupElement();\r\n        var isVisible = this.isVisible();\r\n        var fieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase(\"instance\");\r\n        var head = (0, _renderer.default)(\"<thead>\").addClass(\"dx-pivotgrid-fields-area-head\").appendTo(tableElement);\r\n        var area = that._area;\r\n        var row = (0, _renderer.default)(\"<tr>\");\r\n        groupElement.toggleClass(\"dx-hidden\", !isVisible);\r\n        tableElement.addClass(\"dx-area-field-container\");\r\n        if (!isVisible) {\r\n            return\r\n        }(0, _iterator.each)(data, function(index, field) {\r\n            if (field.area === area && false !== field.visible) {\r\n                var td = (0, _renderer.default)(\"<td>\").append(fieldChooserBase.renderField(field, \"row\" === field.area));\r\n                var indicators = td.find(\".dx-column-indicators\");\r\n                if (indicators.length && that._shouldCreateButton()) {\r\n                    indicators.insertAfter(indicators.next())\r\n                }\r\n                td.appendTo(row);\r\n                renderGroupConnector(field, data[index + 1], data[index - 1], td)\r\n            }\r\n        });\r\n        if (!row.children().length) {\r\n            (0, _renderer.default)(\"<td>\").append((0, _renderer.default)(DIV).addClass(\"dx-empty-area-text\").text(this.option(\"fieldPanel.texts.\" + area + \"FieldArea\"))).appendTo(row)\r\n        }\r\n        if (that._shouldCreateButton()) {\r\n            that._renderButton(head);\r\n            that._renderPopup(tableElement, row)\r\n        } else {\r\n            head.append(row)\r\n        }\r\n    },\r\n    reset: function() {\r\n        this.callBase();\r\n        this.groupElement().css(\"marginTop\", 0)\r\n    },\r\n    _renderVirtualContent: _common.noop\r\n});\r\nexports.FieldsArea = FieldsArea;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_headers.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = require(\"./ui.grid_core.columns_view\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_CLASS = \"headers\";\r\nvar NOWRAP_CLASS = \"nowrap\";\r\nvar ROW_CLASS_SELECTOR = \".dx-row\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar CONTEXT_MENU_SORT_ASC_ICON = \"context-menu-sort-asc\";\r\nvar CONTEXT_MENU_SORT_DESC_ICON = \"context-menu-sort-desc\";\r\nvar CONTEXT_MENU_SORT_NONE_ICON = \"context-menu-sort-none\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar VISIBILITY_HIDDEN_CLASS = \"dx-visibility-hidden\";\r\nvar TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX = \"dx-text-content-alignment-\";\r\nvar SORT_INDICATOR_CLASS = \"dx-sort-indicator\";\r\nvar SORT_INDEX_INDICATOR_CLASS = \"dx-sort-index-indicator\";\r\nvar HEADER_FILTER_CLASS_SELECTOR = \".dx-header-filter\";\r\nvar HEADER_FILTER_INDICATOR_CLASS = \"dx-header-filter-indicator\";\r\nvar MULTI_ROW_HEADER_CLASS = \"dx-header-multi-row\";\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            showColumnHeaders: true,\r\n            cellHintEnabled: true\r\n        }\r\n    },\r\n    views: {\r\n        columnHeadersView: _uiGrid_core.ColumnsView.inherit(function() {\r\n            var createCellContent = function(that, $cell, options) {\r\n                var $cellContent = (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n                that.setAria(\"role\", \"presentation\", $cellContent);\r\n                addCssClassesToCellContent(that, $cell, options.column, $cellContent);\r\n                var showColumnLines = that.option(\"showColumnLines\");\r\n                var contentAlignment = that.getController(\"columns\").getHeaderContentAlignment(options.column.alignment);\r\n                return $cellContent[showColumnLines || \"right\" === contentAlignment ? \"appendTo\" : \"prependTo\"]($cell)\r\n            };\r\n\r\n            function addCssClassesToCellContent(that, $cell, column, $cellContent) {\r\n                var $indicatorElements = that._getIndicatorElements($cell, true);\r\n                var $visibleIndicatorElements = that._getIndicatorElements($cell);\r\n                var indicatorCount = $indicatorElements && $indicatorElements.length;\r\n                var columnAlignment = that._getColumnAlignment(column.alignment);\r\n                var sortIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sort\"));\r\n                var sortIndexIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sortIndex\"));\r\n                var $sortIndicator = $visibleIndicatorElements.filter(sortIndicatorClassName);\r\n                var $sortIndexIndicator = $visibleIndicatorElements.children().filter(sortIndexIndicatorClassName);\r\n                $cellContent = $cellContent || $cell.children(\".\" + that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n                $cellContent.toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + columnAlignment, indicatorCount > 0).toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + (\"left\" === columnAlignment ? \"right\" : \"left\"), indicatorCount > 0 && \"center\" === column.alignment).toggleClass(SORT_INDICATOR_CLASS, !!$sortIndicator.length).toggleClass(SORT_INDEX_INDICATOR_CLASS, !!$sortIndexIndicator.length).toggleClass(HEADER_FILTER_INDICATOR_CLASS, !!$visibleIndicatorElements.filter(\".\" + that._getIndicatorClassName(\"headerFilter\")).length)\r\n            }\r\n            return {\r\n                _createTable: function() {\r\n                    var $table = this.callBase.apply(this, arguments);\r\n                    _events_engine.default.on($table, \"mousedown selectstart\", this.createAction(function(e) {\r\n                        var event = e.event;\r\n                        if (event.shiftKey) {\r\n                            event.preventDefault()\r\n                        }\r\n                    }));\r\n                    return $table\r\n                },\r\n                _isLegacyKeyboardNavigation: function() {\r\n                    return this.option(\"useLegacyKeyboardNavigation\")\r\n                },\r\n                _getDefaultTemplate: function(column) {\r\n                    var that = this;\r\n                    return function($container, options) {\r\n                        var $content = column.command ? $container : createCellContent(that, $container, options);\r\n                        var caption = \"expand\" !== column.command && column.caption;\r\n                        if (caption) {\r\n                            $content.text(caption)\r\n                        } else {\r\n                            if (column.command) {\r\n                                $container.html(\"&nbsp;\")\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                _getHeaderTemplate: function(column) {\r\n                    return column.headerCellTemplate || {\r\n                        allowRenderToDetachedContainer: true,\r\n                        render: this._getDefaultTemplate(column)\r\n                    }\r\n                },\r\n                _processTemplate: function(template, options) {\r\n                    var that = this;\r\n                    var resultTemplate;\r\n                    var column = options.column;\r\n                    var renderingTemplate = that.callBase(template);\r\n                    if (\"header\" === options.rowType && renderingTemplate && column.headerCellTemplate && !column.command) {\r\n                        resultTemplate = {\r\n                            render: function(options) {\r\n                                var $content = createCellContent(that, options.container, options.model);\r\n                                renderingTemplate.render((0, _extend.extend)({}, options, {\r\n                                    container: $content\r\n                                }))\r\n                            }\r\n                        }\r\n                    } else {\r\n                        resultTemplate = renderingTemplate\r\n                    }\r\n                    return resultTemplate\r\n                },\r\n                _handleDataChanged: function(e) {\r\n                    if (\"refresh\" !== e.changeType) {\r\n                        return\r\n                    }\r\n                    if (this._isGroupingChanged || this._requireReady) {\r\n                        this._isGroupingChanged = false;\r\n                        this.render()\r\n                    }\r\n                },\r\n                _renderCell: function($row, options) {\r\n                    var $cell = this.callBase($row, options);\r\n                    if (\"header\" === options.row.rowType) {\r\n                        $cell.addClass(CELL_FOCUS_DISABLED_CLASS);\r\n                        if (!this._isLegacyKeyboardNavigation()) {\r\n                            if (options.column && !options.column.type) {\r\n                                $cell.attr(\"tabindex\", this.option(\"tabindex\") || 0)\r\n                            }\r\n                        }\r\n                    }\r\n                    return $cell\r\n                },\r\n                _setCellAriaAttributes: function($cell, cellOptions) {\r\n                    this.callBase($cell, cellOptions);\r\n                    if (\"header\" === cellOptions.rowType) {\r\n                        this.setAria(\"role\", \"columnheader\", $cell);\r\n                        if (cellOptions.column && !cellOptions.column.command && !cellOptions.column.isBand) {\r\n                            $cell.attr(\"id\", cellOptions.column.headerId);\r\n                            this.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaColumn\") + \" \" + cellOptions.column.caption, $cell)\r\n                        }\r\n                    }\r\n                },\r\n                _createRow: function(row) {\r\n                    var $row = this.callBase(row).toggleClass(COLUMN_LINES_CLASS, this.option(\"showColumnLines\"));\r\n                    if (\"header\" === row.rowType) {\r\n                        $row.addClass(HEADER_ROW_CLASS);\r\n                        if (!this._isLegacyKeyboardNavigation()) {\r\n                            (0, _uiGrid_core2.registerKeyboardAction)(\"columnHeaders\", this, $row, \"td\", this._handleActionKeyDown.bind(this))\r\n                        }\r\n                    }\r\n                    return $row\r\n                },\r\n                _handleActionKeyDown: function(args) {\r\n                    var event = args.event;\r\n                    var $target = (0, _renderer.default)(event.target);\r\n                    this._lastActionElement = event.target;\r\n                    if ($target.is(HEADER_FILTER_CLASS_SELECTOR)) {\r\n                        var headerFilterController = this.getController(\"headerFilter\");\r\n                        var $column = $target.closest(\"td\");\r\n                        var columnIndex = this.getColumnIndexByElement($column);\r\n                        if (columnIndex >= 0) {\r\n                            headerFilterController.showHeaderFilterMenu(columnIndex, false)\r\n                        }\r\n                    } else {\r\n                        var $row = $target.closest(ROW_CLASS_SELECTOR);\r\n                        this._processHeaderAction(event, $row)\r\n                    }\r\n                    event.preventDefault()\r\n                },\r\n                _renderCore: function() {\r\n                    var that = this;\r\n                    var $container = that.element();\r\n                    if (that._tableElement && !that._dataController.isLoaded() && !that._hasRowElements) {\r\n                        return\r\n                    }\r\n                    $container.addClass(that.addWidgetPrefix(HEADERS_CLASS)).toggleClass(that.addWidgetPrefix(NOWRAP_CLASS), !that.option(\"wordWrapEnabled\")).empty();\r\n                    that.setAria(\"role\", \"presentation\", $container);\r\n                    that._updateContent(that._renderTable());\r\n                    if (that.getRowCount() > 1) {\r\n                        $container.addClass(MULTI_ROW_HEADER_CLASS)\r\n                    }\r\n                    that.callBase.apply(that, arguments)\r\n                },\r\n                _renderRows: function() {\r\n                    var that = this;\r\n                    if (that._dataController.isLoaded() || that._hasRowElements) {\r\n                        that.callBase.apply(that, arguments);\r\n                        that._hasRowElements = true\r\n                    }\r\n                },\r\n                _getRowVisibleColumns: function(rowIndex) {\r\n                    return this._columnsController.getVisibleColumns(rowIndex)\r\n                },\r\n                _renderRow: function($table, options) {\r\n                    options.columns = this._getRowVisibleColumns(options.row.rowIndex);\r\n                    this.callBase($table, options)\r\n                },\r\n                _createCell: function(options) {\r\n                    var column = options.column;\r\n                    var $cellElement = this.callBase.apply(this, arguments);\r\n                    column.rowspan > 1 && \"header\" === options.rowType && $cellElement.attr(\"rowSpan\", column.rowspan);\r\n                    return $cellElement\r\n                },\r\n                _getRows: function() {\r\n                    var result = [];\r\n                    var rowCount = this.getRowCount();\r\n                    if (this.option(\"showColumnHeaders\")) {\r\n                        for (var i = 0; i < rowCount; i++) {\r\n                            result.push({\r\n                                rowType: \"header\",\r\n                                rowIndex: i\r\n                            })\r\n                        }\r\n                    }\r\n                    return result\r\n                },\r\n                _getCellTemplate: function(options) {\r\n                    if (\"header\" === options.rowType) {\r\n                        return this._getHeaderTemplate(options.column)\r\n                    }\r\n                },\r\n                _columnOptionChanged: function(e) {\r\n                    var changeTypes = e.changeTypes;\r\n                    var optionNames = e.optionNames;\r\n                    if (changeTypes.grouping) {\r\n                        this._isGroupingChanged = true;\r\n                        return\r\n                    }\r\n                    this.callBase(e);\r\n                    if (optionNames.width || optionNames.visible) {\r\n                        this.resizeCompleted.fire()\r\n                    }\r\n                },\r\n                _isElementVisible: function(elementOptions) {\r\n                    return elementOptions && elementOptions.visible\r\n                },\r\n                _alignCaptionByCenter: function($cell) {\r\n                    var $indicatorsContainer = this._getIndicatorContainer($cell, true);\r\n                    if ($indicatorsContainer && $indicatorsContainer.length) {\r\n                        $indicatorsContainer.filter(\".\" + VISIBILITY_HIDDEN_CLASS).remove();\r\n                        $indicatorsContainer = this._getIndicatorContainer($cell);\r\n                        $indicatorsContainer.clone().addClass(VISIBILITY_HIDDEN_CLASS).css(\"float\", \"\").insertBefore($cell.children(\".\" + this.addWidgetPrefix(CELL_CONTENT_CLASS)))\r\n                    }\r\n                },\r\n                _updateCell: function($cell, options) {\r\n                    if (\"header\" === options.rowType && \"center\" === options.column.alignment) {\r\n                        this._alignCaptionByCenter($cell)\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                _updateIndicator: function($cell, column, indicatorName) {\r\n                    var $indicatorElement = this.callBase.apply(this, arguments);\r\n                    if (\"center\" === column.alignment) {\r\n                        this._alignCaptionByCenter($cell)\r\n                    }\r\n                    addCssClassesToCellContent(this, $cell, column);\r\n                    return $indicatorElement\r\n                },\r\n                _getIndicatorContainer: function($cell, returnAll) {\r\n                    var $indicatorsContainer = this.callBase($cell);\r\n                    return returnAll ? $indicatorsContainer : $indicatorsContainer.filter(\":not(.\" + VISIBILITY_HIDDEN_CLASS + \")\")\r\n                },\r\n                _isSortableElement: function() {\r\n                    return true\r\n                },\r\n                getHeadersRowHeight: function() {\r\n                    var $tableElement = this._getTableElement();\r\n                    var $headerRows = $tableElement && $tableElement.find(\".\" + HEADER_ROW_CLASS);\r\n                    return $headerRows && $headerRows.toArray().reduce(function(sum, headerRow) {\r\n                        return sum + (0, _renderer.default)(headerRow).height()\r\n                    }, 0) || 0\r\n                },\r\n                getHeaderElement: function(index) {\r\n                    var columnElements = this.getColumnElements();\r\n                    return columnElements && columnElements.eq(index)\r\n                },\r\n                getColumnElements: function(index, bandColumnIndex) {\r\n                    var that = this;\r\n                    var $cellElement;\r\n                    var columnsController = that._columnsController;\r\n                    var rowCount = that.getRowCount();\r\n                    if (that.option(\"showColumnHeaders\")) {\r\n                        if (rowCount > 1 && (!(0, _type.isDefined)(index) || (0, _type.isDefined)(bandColumnIndex))) {\r\n                            var result = [];\r\n                            var visibleColumns = (0, _type.isDefined)(bandColumnIndex) ? columnsController.getChildrenByBandColumn(bandColumnIndex, true) : columnsController.getVisibleColumns();\r\n                            (0, _iterator.each)(visibleColumns, function(_, column) {\r\n                                var rowIndex = (0, _type.isDefined)(index) ? index : columnsController.getRowIndex(column.index);\r\n                                $cellElement = that._getCellElement(rowIndex, columnsController.getVisibleIndex(column.index, rowIndex));\r\n                                $cellElement && result.push($cellElement.get(0))\r\n                            });\r\n                            return (0, _renderer.default)(result)\r\n                        } else {\r\n                            if (!index || index < rowCount) {\r\n                                return that.getCellElements(index || 0)\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                getColumnIndexByElement: function($cell) {\r\n                    var cellIndex = this.getCellIndex($cell);\r\n                    var $row = $cell.closest(\".dx-row\");\r\n                    var rowIndex = $row[0].rowIndex;\r\n                    var column = this.getColumns(rowIndex)[cellIndex];\r\n                    return column ? column.index : -1\r\n                },\r\n                getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n                    var column = this.getColumns()[columnIndex];\r\n                    return column ? this._columnsController.getVisibleIndex(column.index, rowIndex) : -1\r\n                },\r\n                getColumnWidths: function() {\r\n                    var $columnElements = this.getColumnElements();\r\n                    if ($columnElements && $columnElements.length) {\r\n                        return this._getWidths($columnElements)\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                allowDragging: function(column, sourceLocation, draggingPanels) {\r\n                    var i;\r\n                    var draggableColumnCount = 0;\r\n                    var rowIndex = column && this._columnsController.getRowIndex(column.index);\r\n                    var columns = this.getColumns(0 === rowIndex ? 0 : null);\r\n                    var canHideColumn = (null === column || void 0 === column ? void 0 : column.allowHiding) && columns.length > 1;\r\n                    var allowDrag = function(column) {\r\n                        return column.allowReordering || column.allowGrouping || column.allowHiding\r\n                    };\r\n                    for (i = 0; i < columns.length; i++) {\r\n                        if (allowDrag(columns[i])) {\r\n                            draggableColumnCount++\r\n                        }\r\n                    }\r\n                    if (draggableColumnCount <= 1 && !canHideColumn) {\r\n                        return false\r\n                    } else {\r\n                        if (!draggingPanels) {\r\n                            return (this.option(\"allowColumnReordering\") || this._columnsController.isColumnOptionUsed(\"allowReordering\")) && column && column.allowReordering\r\n                        }\r\n                    }\r\n                    for (i = 0; i < draggingPanels.length; i++) {\r\n                        var draggingPanel = draggingPanels[i];\r\n                        if (draggingPanel && draggingPanel.allowDragging(column, sourceLocation)) {\r\n                            return true\r\n                        }\r\n                    }\r\n                    return false\r\n                },\r\n                getBoundingRect: function() {\r\n                    var that = this;\r\n                    var $columnElements = that.getColumnElements();\r\n                    if ($columnElements && $columnElements.length) {\r\n                        var offset = that._getTableElement().offset();\r\n                        return {\r\n                            top: offset.top\r\n                        }\r\n                    }\r\n                    return null\r\n                },\r\n                getName: function() {\r\n                    return \"headers\"\r\n                },\r\n                getColumnCount: function() {\r\n                    var $columnElements = this.getColumnElements();\r\n                    return $columnElements ? $columnElements.length : 0\r\n                },\r\n                isVisible: function() {\r\n                    return this.option(\"showColumnHeaders\")\r\n                },\r\n                optionChanged: function(args) {\r\n                    var that = this;\r\n                    switch (args.name) {\r\n                        case \"showColumnHeaders\":\r\n                        case \"wordWrapEnabled\":\r\n                        case \"showColumnLines\":\r\n                            that._invalidate(true, true);\r\n                            args.handled = true;\r\n                            break;\r\n                        default:\r\n                            that.callBase(args)\r\n                    }\r\n                },\r\n                getHeight: function() {\r\n                    return this.getElementHeight()\r\n                },\r\n                getContextMenuItems: function(options) {\r\n                    var that = this;\r\n                    var column = options.column;\r\n                    if (options.row && (\"header\" === options.row.rowType || \"detailAdaptive\" === options.row.rowType)) {\r\n                        var sortingOptions = that.option(\"sorting\");\r\n                        if (sortingOptions && \"none\" !== sortingOptions.mode && column && column.allowSorting) {\r\n                            var onItemClick = function(params) {\r\n                                setTimeout(function() {\r\n                                    that._columnsController.changeSortOrder(column.index, params.itemData.value)\r\n                                })\r\n                            };\r\n                            return [{\r\n                                text: sortingOptions.ascendingText,\r\n                                value: \"asc\",\r\n                                disabled: \"asc\" === column.sortOrder,\r\n                                icon: CONTEXT_MENU_SORT_ASC_ICON,\r\n                                onItemClick: onItemClick\r\n                            }, {\r\n                                text: sortingOptions.descendingText,\r\n                                value: \"desc\",\r\n                                disabled: \"desc\" === column.sortOrder,\r\n                                icon: CONTEXT_MENU_SORT_DESC_ICON,\r\n                                onItemClick: onItemClick\r\n                            }, {\r\n                                text: sortingOptions.clearText,\r\n                                value: \"none\",\r\n                                disabled: !column.sortOrder,\r\n                                icon: CONTEXT_MENU_SORT_NONE_ICON,\r\n                                onItemClick: onItemClick\r\n                            }]\r\n                        }\r\n                    }\r\n                },\r\n                getRowCount: function() {\r\n                    return this._columnsController && this._columnsController.getRowCount()\r\n                },\r\n                setRowsOpacity: function(columnIndex, value, rowIndex) {\r\n                    var that = this;\r\n                    var i;\r\n                    var columnElements;\r\n                    var rowCount = that.getRowCount();\r\n                    var columns = that._columnsController.getColumns();\r\n                    var column = columns && columns[columnIndex];\r\n                    var columnID = column && column.isBand && column.index;\r\n                    var setColumnOpacity = function(index, column) {\r\n                        if (column.ownerBand === columnID) {\r\n                            columnElements.eq(index).css({\r\n                                opacity: value\r\n                            });\r\n                            if (column.isBand) {\r\n                                that.setRowsOpacity(column.index, value, i + 1)\r\n                            }\r\n                        }\r\n                    };\r\n                    if ((0, _type.isDefined)(columnID)) {\r\n                        rowIndex = rowIndex || 0;\r\n                        for (i = rowIndex; i < rowCount; i++) {\r\n                            columnElements = that.getCellElements(i);\r\n                            (0, _iterator.each)(that.getColumns(i), setColumnOpacity)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }())\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointmentsPositioning.strategy.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar COLLECTOR_DEFAULT_WIDTH = 24;\r\nvar COLLECTOR_DEFAULT_OFFSET = 3;\r\nvar COMPACT_THEME_APPOINTMENT_DEFAULT_OFFSET = 22;\r\nvar APPOINTMENT_MIN_COUNT = 1;\r\nvar APPOINTMENT_DEFAULT_WIDTH = 40;\r\nvar COLLECTOR_WIDTH_IN_PERCENTS = 75;\r\nvar APPOINTMENT_INCREASED_WIDTH = 50;\r\nvar AppointmentPositioningStrategy = function() {\r\n    function AppointmentPositioningStrategy(renderingStrategy) {\r\n        _classCallCheck(this, AppointmentPositioningStrategy);\r\n        this._renderingStrategy = renderingStrategy\r\n    }\r\n    _createClass(AppointmentPositioningStrategy, [{\r\n        key: \"getRenderingStrategy\",\r\n        value: function() {\r\n            return this._renderingStrategy\r\n        }\r\n    }, {\r\n        key: \"getDropDownAppointmentWidth\",\r\n        value: function(intervalCount, isAllDay) {\r\n            if (isAllDay || !(0, _type.isDefined)(isAllDay)) {\r\n                return COLLECTOR_WIDTH_IN_PERCENTS * this.getRenderingStrategy().getDefaultCellWidth() / 100\r\n            } else {\r\n                return COLLECTOR_DEFAULT_WIDTH\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getCollectorTopOffset\",\r\n        value: function() {\r\n            return COLLECTOR_DEFAULT_OFFSET\r\n        }\r\n    }, {\r\n        key: \"getCollectorLeftOffset\",\r\n        value: function() {\r\n            return COLLECTOR_DEFAULT_OFFSET\r\n        }\r\n    }, {\r\n        key: \"getAppointmentDefaultOffset\",\r\n        value: function() {\r\n            if (this.getRenderingStrategy()._isCompactTheme()) {\r\n                return COMPACT_THEME_APPOINTMENT_DEFAULT_OFFSET\r\n            }\r\n            return this.getRenderingStrategy().instance.option(\"_appointmentOffset\")\r\n        }\r\n    }, {\r\n        key: \"getDynamicAppointmentCountPerCell\",\r\n        value: function() {\r\n            var renderingStrategy = this.getRenderingStrategy();\r\n            var cellHeight = renderingStrategy.instance.fire(\"getCellHeight\");\r\n            var allDayCount = Math.floor((cellHeight - renderingStrategy._getAppointmentDefaultOffset()) / renderingStrategy._getAppointmentDefaultHeight()) || this._getAppointmentMinCount();\r\n            if (renderingStrategy.hasAllDayAppointments()) {\r\n                return {\r\n                    allDay: \"vertical\" === renderingStrategy.instance._groupOrientation ? allDayCount : renderingStrategy.instance.option(\"_appointmentCountPerCell\"),\r\n                    simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount()\r\n                }\r\n            } else {\r\n                return allDayCount\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getDropDownAppointmentHeight\",\r\n        value: function() {\r\n            return\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentMinCount\",\r\n        value: function() {\r\n            return APPOINTMENT_MIN_COUNT\r\n        }\r\n    }, {\r\n        key: \"_calculateDynamicAppointmentCountPerCell\",\r\n        value: function() {\r\n            return Math.floor(this.getRenderingStrategy()._getAppointmentMaxWidth() / APPOINTMENT_INCREASED_WIDTH)\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDefaultWidth\",\r\n        value: function() {\r\n            return APPOINTMENT_DEFAULT_WIDTH\r\n        }\r\n    }]);\r\n    return AppointmentPositioningStrategy\r\n}();\r\nvar _default = AppointmentPositioningStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/filter_builder/filter_builder.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _utils = require(\"../overlay/utils\");\r\nvar _ui2 = _interopRequireDefault(require(\"../shared/ui.editor_factory_mixin\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _utils2 = require(\"./utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar FILTER_BUILDER_CLASS = \"dx-filterbuilder\";\r\nvar FILTER_BUILDER_GROUP_CLASS = FILTER_BUILDER_CLASS + \"-group\";\r\nvar FILTER_BUILDER_GROUP_ITEM_CLASS = FILTER_BUILDER_GROUP_CLASS + \"-item\";\r\nvar FILTER_BUILDER_GROUP_CONTENT_CLASS = FILTER_BUILDER_GROUP_CLASS + \"-content\";\r\nvar FILTER_BUILDER_GROUP_OPERATIONS_CLASS = FILTER_BUILDER_GROUP_CLASS + \"-operations\";\r\nvar FILTER_BUILDER_GROUP_OPERATION_CLASS = FILTER_BUILDER_GROUP_CLASS + \"-operation\";\r\nvar FILTER_BUILDER_ACTION_CLASS = FILTER_BUILDER_CLASS + \"-action\";\r\nvar FILTER_BUILDER_IMAGE_CLASS = FILTER_BUILDER_ACTION_CLASS + \"-icon\";\r\nvar FILTER_BUILDER_IMAGE_ADD_CLASS = \"dx-icon-plus\";\r\nvar FILTER_BUILDER_IMAGE_REMOVE_CLASS = \"dx-icon-remove\";\r\nvar FILTER_BUILDER_ITEM_TEXT_CLASS = FILTER_BUILDER_CLASS + \"-text\";\r\nvar FILTER_BUILDER_ITEM_FIELD_CLASS = FILTER_BUILDER_CLASS + \"-item-field\";\r\nvar FILTER_BUILDER_ITEM_OPERATION_CLASS = FILTER_BUILDER_CLASS + \"-item-operation\";\r\nvar FILTER_BUILDER_ITEM_VALUE_CLASS = FILTER_BUILDER_CLASS + \"-item-value\";\r\nvar FILTER_BUILDER_ITEM_VALUE_TEXT_CLASS = FILTER_BUILDER_CLASS + \"-item-value-text\";\r\nvar FILTER_BUILDER_OVERLAY_CLASS = FILTER_BUILDER_CLASS + \"-overlay\";\r\nvar FILTER_BUILDER_FILTER_OPERATIONS_CLASS = FILTER_BUILDER_CLASS + \"-operations\";\r\nvar FILTER_BUILDER_FIELDS_CLASS = FILTER_BUILDER_CLASS + \"-fields\";\r\nvar FILTER_BUILDER_ADD_CONDITION_CLASS = FILTER_BUILDER_CLASS + \"-add-condition\";\r\nvar ACTIVE_CLASS = \"dx-state-active\";\r\nvar FILTER_BUILDER_MENU_CUSTOM_OPERATION_CLASS = FILTER_BUILDER_CLASS + \"-menu-custom-operation\";\r\nvar SOURCE = \"filterBuilder\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar TAB_KEY = \"tab\";\r\nvar ENTER_KEY = \"enter\";\r\nvar ESCAPE_KEY = \"escape\";\r\nvar ACTIONS = [{\r\n    name: \"onEditorPreparing\",\r\n    config: {\r\n        excludeValidators: [\"disabled\", \"readOnly\"],\r\n        category: \"rendering\"\r\n    }\r\n}, {\r\n    name: \"onEditorPrepared\",\r\n    config: {\r\n        excludeValidators: [\"disabled\", \"readOnly\"],\r\n        category: \"rendering\"\r\n    }\r\n}, {\r\n    name: \"onValueChanged\",\r\n    config: {\r\n        excludeValidators: [\"disabled\", \"readOnly\"]\r\n    }\r\n}];\r\nvar OPERATORS = {\r\n    and: \"and\",\r\n    or: \"or\",\r\n    notAnd: \"!and\",\r\n    notOr: \"!or\"\r\n};\r\nvar EditorFactory = _class.default.inherit(_ui2.default);\r\nvar FilterBuilder = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            onEditorPreparing: null,\r\n            onEditorPrepared: null,\r\n            onValueChanged: null,\r\n            fields: [],\r\n            defaultGroupOperation: \"and\",\r\n            groupOperations: [\"and\", \"or\", \"notAnd\", \"notOr\"],\r\n            maxGroupLevel: void 0,\r\n            value: null,\r\n            allowHierarchicalFields: false,\r\n            groupOperationDescriptions: {\r\n                and: _message.default.format(\"dxFilterBuilder-and\"),\r\n                or: _message.default.format(\"dxFilterBuilder-or\"),\r\n                notAnd: _message.default.format(\"dxFilterBuilder-notAnd\"),\r\n                notOr: _message.default.format(\"dxFilterBuilder-notOr\")\r\n            },\r\n            customOperations: [],\r\n            closePopupOnTargetScroll: true,\r\n            filterOperationDescriptions: {\r\n                between: _message.default.format(\"dxFilterBuilder-filterOperationBetween\"),\r\n                equal: _message.default.format(\"dxFilterBuilder-filterOperationEquals\"),\r\n                notEqual: _message.default.format(\"dxFilterBuilder-filterOperationNotEquals\"),\r\n                lessThan: _message.default.format(\"dxFilterBuilder-filterOperationLess\"),\r\n                lessThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationLessOrEquals\"),\r\n                greaterThan: _message.default.format(\"dxFilterBuilder-filterOperationGreater\"),\r\n                greaterThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationGreaterOrEquals\"),\r\n                startsWith: _message.default.format(\"dxFilterBuilder-filterOperationStartsWith\"),\r\n                contains: _message.default.format(\"dxFilterBuilder-filterOperationContains\"),\r\n                notContains: _message.default.format(\"dxFilterBuilder-filterOperationNotContains\"),\r\n                endsWith: _message.default.format(\"dxFilterBuilder-filterOperationEndsWith\"),\r\n                isBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n                isNotBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n            }\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"closePopupOnTargetScroll\":\r\n                break;\r\n            case \"onEditorPreparing\":\r\n            case \"onEditorPrepared\":\r\n            case \"onValueChanged\":\r\n                this._initActions();\r\n                break;\r\n            case \"customOperations\":\r\n                this._initCustomOperations();\r\n                this._invalidate();\r\n                break;\r\n            case \"fields\":\r\n            case \"defaultGroupOperation\":\r\n            case \"maxGroupLevel\":\r\n            case \"groupOperations\":\r\n            case \"allowHierarchicalFields\":\r\n            case \"groupOperationDescriptions\":\r\n            case \"filterOperationDescriptions\":\r\n                this._invalidate();\r\n                break;\r\n            case \"value\":\r\n                if (args.value !== args.previousValue) {\r\n                    var disableInvalidateForValue = this._disableInvalidateForValue;\r\n                    if (!disableInvalidateForValue) {\r\n                        this._initModel();\r\n                        this._invalidate()\r\n                    }\r\n                    this._disableInvalidateForValue = false;\r\n                    this.executeAction(\"onValueChanged\", {\r\n                        value: args.value,\r\n                        previousValue: args.previousValue\r\n                    });\r\n                    this._disableInvalidateForValue = disableInvalidateForValue\r\n                }\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    getFilterExpression: function() {\r\n        var fields = this._getNormalizedFields();\r\n        var value = (0, _extend.extend)(true, [], this._model);\r\n        return (0, _utils2.getFilterExpression)((0, _utils2.getNormalizedFilter)(value), fields, this._customOperations, SOURCE)\r\n    },\r\n    _getNormalizedFields: function() {\r\n        return (0, _utils2.getNormalizedFields)(this.option(\"fields\"))\r\n    },\r\n    _updateFilter: function() {\r\n        this._disableInvalidateForValue = true;\r\n        var value = (0, _extend.extend)(true, [], this._model);\r\n        var normalizedValue = (0, _utils2.getNormalizedFilter)(value);\r\n        var oldValue = (0, _utils2.getNormalizedFilter)(this._getModel(this.option(\"value\")));\r\n        if (JSON.stringify(oldValue) !== JSON.stringify(normalizedValue)) {\r\n            this.option(\"value\", normalizedValue)\r\n        }\r\n        this._disableInvalidateForValue = false;\r\n        this._fireContentReadyAction()\r\n    },\r\n    _init: function() {\r\n        this._initCustomOperations();\r\n        this._initModel();\r\n        this._initEditorFactory();\r\n        this._initActions();\r\n        this.callBase()\r\n    },\r\n    _initEditorFactory: function() {\r\n        this._editorFactory = new EditorFactory\r\n    },\r\n    _initCustomOperations: function() {\r\n        this._customOperations = (0, _utils2.getMergedOperations)(this.option(\"customOperations\"), this.option(\"filterOperationDescriptions.between\"), this)\r\n    },\r\n    _getModel: function(value) {\r\n        return (0, _utils2.convertToInnerStructure)(value, this._customOperations)\r\n    },\r\n    _initModel: function() {\r\n        this._model = this._getModel(this.option(\"value\"))\r\n    },\r\n    _initActions: function() {\r\n        var that = this;\r\n        that._actions = {};\r\n        ACTIONS.forEach(function(action) {\r\n            var actionConfig = (0, _extend.extend)({}, action.config);\r\n            that._actions[action.name] = that._createActionByOption(action.name, actionConfig)\r\n        })\r\n    },\r\n    executeAction: function(actionName, options) {\r\n        var action = this._actions[actionName];\r\n        return action && action(options)\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(FILTER_BUILDER_CLASS);\r\n        this.callBase();\r\n        this._createGroupElementByCriteria(this._model).appendTo(this.$element())\r\n    },\r\n    _createConditionElement: function(condition, parent) {\r\n        return (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_GROUP_CLASS).append(this._createConditionItem(condition, parent))\r\n    },\r\n    _createGroupElementByCriteria: function(criteria, parent) {\r\n        var groupLevel = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;\r\n        var $group = this._createGroupElement(criteria, parent, groupLevel);\r\n        var $groupContent = $group.find(\".\" + FILTER_BUILDER_GROUP_CONTENT_CLASS);\r\n        var groupCriteria = (0, _utils2.getGroupCriteria)(criteria);\r\n        for (var i = 0; i < groupCriteria.length; i++) {\r\n            var innerCriteria = groupCriteria[i];\r\n            if ((0, _utils2.isGroup)(innerCriteria)) {\r\n                this._createGroupElementByCriteria(innerCriteria, groupCriteria, groupLevel + 1).appendTo($groupContent)\r\n            } else {\r\n                if ((0, _utils2.isCondition)(innerCriteria)) {\r\n                    this._createConditionElement(innerCriteria, groupCriteria).appendTo($groupContent)\r\n                }\r\n            }\r\n        }\r\n        return $group\r\n    },\r\n    _createGroupElement: function(criteria, parent, groupLevel) {\r\n        var _this = this;\r\n        var $groupItem = (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_GROUP_ITEM_CLASS);\r\n        var $groupContent = (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_GROUP_CONTENT_CLASS);\r\n        var $group = (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_GROUP_CLASS).append($groupItem).append($groupContent);\r\n        if (null != parent) {\r\n            this._createRemoveButton(function() {\r\n                (0, _utils2.removeItem)(parent, criteria);\r\n                $group.remove();\r\n                _this._updateFilter()\r\n            }).appendTo($groupItem)\r\n        }\r\n        this._createGroupOperationButton(criteria).appendTo($groupItem);\r\n        this._createAddButton(function() {\r\n            var newGroup = (0, _utils2.createEmptyGroup)(_this.option(\"defaultGroupOperation\"));\r\n            (0, _utils2.addItem)(newGroup, criteria);\r\n            _this._createGroupElement(newGroup, criteria, groupLevel + 1).appendTo($groupContent);\r\n            _this._updateFilter()\r\n        }, function() {\r\n            var field = _this.option(\"fields\")[0];\r\n            var newCondition = (0, _utils2.createCondition)(field, _this._customOperations);\r\n            (0, _utils2.addItem)(newCondition, criteria);\r\n            _this._createConditionElement(newCondition, criteria).appendTo($groupContent);\r\n            _this._updateFilter()\r\n        }, groupLevel).appendTo($groupItem);\r\n        return $group\r\n    },\r\n    _createButton: function(caption) {\r\n        return (0, _renderer.default)(\"<div>\").text(caption)\r\n    },\r\n    _createGroupOperationButton: function(criteria) {\r\n        var _this2 = this;\r\n        var groupOperations = this._getGroupOperations(criteria);\r\n        var groupMenuItem = (0, _utils2.getGroupMenuItem)(criteria, groupOperations);\r\n        var caption = groupMenuItem.text;\r\n        var $operationButton = groupOperations && groupOperations.length < 2 ? this._createButton(caption).addClass(DISABLED_STATE_CLASS) : this._createButtonWithMenu({\r\n            caption: caption,\r\n            menu: {\r\n                items: groupOperations,\r\n                displayExpr: \"text\",\r\n                keyExpr: \"value\",\r\n                onItemClick: function(e) {\r\n                    if (groupMenuItem !== e.itemData) {\r\n                        (0, _utils2.setGroupValue)(criteria, e.itemData.value);\r\n                        $operationButton.html(e.itemData.text);\r\n                        groupMenuItem = e.itemData;\r\n                        _this2._updateFilter()\r\n                    }\r\n                },\r\n                onContentReady: function(e) {\r\n                    e.component.selectItem(groupMenuItem)\r\n                },\r\n                cssClass: FILTER_BUILDER_GROUP_OPERATIONS_CLASS\r\n            }\r\n        });\r\n        return $operationButton.addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_GROUP_OPERATION_CLASS).attr(\"tabindex\", 0)\r\n    },\r\n    _createButtonWithMenu: function(options) {\r\n        var that = this;\r\n        var removeMenu = function() {\r\n            that.$element().find(\".\" + ACTIVE_CLASS).removeClass(ACTIVE_CLASS);\r\n            that.$element().find(\".dx-overlay .dx-treeview\").remove();\r\n            that.$element().find(\".dx-overlay\").remove()\r\n        };\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var menuOnItemClickWrapper = function(handler) {\r\n            return function(e) {\r\n                handler(e);\r\n                if (\"dxclick\" === e.event.type) {\r\n                    removeMenu()\r\n                }\r\n            }\r\n        };\r\n        var position = rtlEnabled ? \"right\" : \"left\";\r\n        var $button = this._createButton(options.caption);\r\n        (0, _extend.extend)(options.menu, {\r\n            focusStateEnabled: true,\r\n            selectionMode: \"single\",\r\n            onItemClick: menuOnItemClickWrapper(options.menu.onItemClick),\r\n            onHiding: function(e) {\r\n                $button.removeClass(ACTIVE_CLASS)\r\n            },\r\n            position: {\r\n                my: position + \" top\",\r\n                at: position + \" bottom\",\r\n                offset: \"0 1\",\r\n                of: $button,\r\n                collision: \"flip\"\r\n            },\r\n            animation: null,\r\n            onHidden: function() {\r\n                removeMenu()\r\n            },\r\n            cssClass: FILTER_BUILDER_OVERLAY_CLASS + \" \" + options.menu.cssClass,\r\n            rtlEnabled: rtlEnabled\r\n        });\r\n        options.popup = {\r\n            onShown: function(info) {\r\n                var treeViewElement = (0, _renderer.default)(info.component.content()).find(\".dx-treeview\");\r\n                var treeView = treeViewElement.dxTreeView(\"instance\");\r\n                _events_engine.default.on(treeViewElement, \"keyup keydown\", function(e) {\r\n                    var keyName = (0, _index.normalizeKeyName)(e);\r\n                    if (\"keydown\" === e.type && keyName === TAB_KEY || \"keyup\" === e.type && (keyName === ESCAPE_KEY || keyName === ENTER_KEY)) {\r\n                        info.component.hide();\r\n                        _events_engine.default.trigger(options.menu.position.of, \"focus\")\r\n                    }\r\n                });\r\n                treeView.focus();\r\n                treeView.option(\"focusedElement\", null)\r\n            }\r\n        };\r\n        this._subscribeOnClickAndEnterKey($button, function() {\r\n            removeMenu();\r\n            that._createPopupWithTreeView(options, that.$element());\r\n            $button.addClass(ACTIVE_CLASS)\r\n        });\r\n        return $button\r\n    },\r\n    _hasValueButton: function(condition) {\r\n        var customOperation = (0, _utils2.getCustomOperation)(this._customOperations, condition[1]);\r\n        return customOperation ? false !== customOperation.hasValue : null !== condition[2]\r\n    },\r\n    _createOperationButtonWithMenu: function(condition, field) {\r\n        var _this3 = this;\r\n        var that = this;\r\n        var availableOperations = (0, _utils2.getAvailableOperations)(field, this.option(\"filterOperationDescriptions\"), this._customOperations);\r\n        var currentOperation = (0, _utils2.getOperationFromAvailable)((0, _utils2.getOperationValue)(condition), availableOperations);\r\n        var $operationButton = this._createButtonWithMenu({\r\n            caption: currentOperation.text,\r\n            menu: {\r\n                items: availableOperations,\r\n                displayExpr: \"text\",\r\n                onItemRendered: function(e) {\r\n                    e.itemData.isCustom && (0, _renderer.default)(e.itemElement).addClass(FILTER_BUILDER_MENU_CUSTOM_OPERATION_CLASS)\r\n                },\r\n                onContentReady: function(e) {\r\n                    e.component.selectItem(currentOperation)\r\n                },\r\n                onItemClick: function(e) {\r\n                    if (currentOperation !== e.itemData) {\r\n                        currentOperation = e.itemData;\r\n                        (0, _utils2.updateConditionByOperation)(condition, currentOperation.value, that._customOperations);\r\n                        var $valueButton = $operationButton.siblings().filter(\".\" + FILTER_BUILDER_ITEM_VALUE_CLASS);\r\n                        if (that._hasValueButton(condition)) {\r\n                            if (0 !== $valueButton.length) {\r\n                                $valueButton.remove()\r\n                            }\r\n                            that._createValueButton(condition, field).appendTo($operationButton.parent())\r\n                        } else {\r\n                            $valueButton.remove()\r\n                        }\r\n                        $operationButton.html(currentOperation.text);\r\n                        _this3._updateFilter()\r\n                    }\r\n                },\r\n                cssClass: FILTER_BUILDER_FILTER_OPERATIONS_CLASS\r\n            }\r\n        }).addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_OPERATION_CLASS).attr(\"tabindex\", 0);\r\n        return $operationButton\r\n    },\r\n    _createOperationAndValueButtons: function(condition, field, $item) {\r\n        this._createOperationButtonWithMenu(condition, field).appendTo($item);\r\n        if (this._hasValueButton(condition)) {\r\n            this._createValueButton(condition, field).appendTo($item)\r\n        }\r\n    },\r\n    _createFieldButtonWithMenu: function(fields, condition, field) {\r\n        var _this4 = this;\r\n        var that = this;\r\n        var allowHierarchicalFields = this.option(\"allowHierarchicalFields\");\r\n        var items = (0, _utils2.getItems)(fields, allowHierarchicalFields);\r\n        var item = (0, _utils2.getField)(field.name || field.dataField, items);\r\n        var getFullCaption = function(item, items) {\r\n            return allowHierarchicalFields ? (0, _utils2.getCaptionWithParents)(item, items) : item.caption\r\n        };\r\n        var $fieldButton = this._createButtonWithMenu({\r\n            caption: getFullCaption(item, items),\r\n            menu: {\r\n                items: items,\r\n                dataStructure: \"plain\",\r\n                keyExpr: \"id\",\r\n                parentId: \"parentId\",\r\n                displayExpr: \"caption\",\r\n                onItemClick: function(e) {\r\n                    if (item !== e.itemData) {\r\n                        item = e.itemData;\r\n                        condition[0] = item.name || item.dataField;\r\n                        condition[2] = \"object\" === item.dataType ? null : \"\";\r\n                        (0, _utils2.updateConditionByOperation)(condition, (0, _utils2.getDefaultOperation)(item), that._customOperations);\r\n                        $fieldButton.siblings().filter(\".\" + FILTER_BUILDER_ITEM_TEXT_CLASS).remove();\r\n                        that._createOperationAndValueButtons(condition, item, $fieldButton.parent());\r\n                        var caption = getFullCaption(item, e.component.option(\"items\"));\r\n                        $fieldButton.html(caption);\r\n                        _this4._updateFilter()\r\n                    }\r\n                },\r\n                onContentReady: function(e) {\r\n                    e.component.selectItem(item)\r\n                },\r\n                cssClass: FILTER_BUILDER_FIELDS_CLASS\r\n            }\r\n        }).addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_FIELD_CLASS).attr(\"tabindex\", 0);\r\n        return $fieldButton\r\n    },\r\n    _createConditionItem: function(condition, parent) {\r\n        var _this5 = this;\r\n        var $item = (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_GROUP_ITEM_CLASS);\r\n        var fields = this._getNormalizedFields();\r\n        var field = (0, _utils2.getField)(condition[0], fields);\r\n        this._createRemoveButton(function() {\r\n            (0, _utils2.removeItem)(parent, condition);\r\n            var isSingleChild = 1 === $item.parent().children().length;\r\n            if (isSingleChild) {\r\n                $item.parent().remove()\r\n            } else {\r\n                $item.remove()\r\n            }\r\n            _this5._updateFilter()\r\n        }).appendTo($item);\r\n        this._createFieldButtonWithMenu(fields, condition, field).appendTo($item);\r\n        this._createOperationAndValueButtons(condition, field, $item);\r\n        return $item\r\n    },\r\n    _getGroupOperations: function(criteria) {\r\n        var groupOperations = this.option(\"groupOperations\");\r\n        var groupOperationDescriptions = this.option(\"groupOperationDescriptions\");\r\n        if (!groupOperations || !groupOperations.length) {\r\n            groupOperations = [(0, _utils2.getGroupValue)(criteria).replace(\"!\", \"not\")]\r\n        }\r\n        return groupOperations.map(function(operation) {\r\n            return {\r\n                text: groupOperationDescriptions[operation],\r\n                value: OPERATORS[operation]\r\n            }\r\n        })\r\n    },\r\n    _createRemoveButton: function(handler) {\r\n        var $removeButton = (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_IMAGE_CLASS).addClass(FILTER_BUILDER_IMAGE_REMOVE_CLASS).addClass(FILTER_BUILDER_ACTION_CLASS).attr(\"tabindex\", 0);\r\n        this._subscribeOnClickAndEnterKey($removeButton, handler);\r\n        return $removeButton\r\n    },\r\n    _createAddButton: function(addGroupHandler, addConditionHandler, groupLevel) {\r\n        var $button;\r\n        var maxGroupLevel = this.option(\"maxGroupLevel\");\r\n        if ((0, _type.isDefined)(maxGroupLevel) && groupLevel >= maxGroupLevel) {\r\n            $button = this._createButton();\r\n            this._subscribeOnClickAndEnterKey($button, addConditionHandler)\r\n        } else {\r\n            $button = this._createButtonWithMenu({\r\n                menu: {\r\n                    items: [{\r\n                        caption: _message.default.format(\"dxFilterBuilder-addCondition\"),\r\n                        click: addConditionHandler\r\n                    }, {\r\n                        caption: _message.default.format(\"dxFilterBuilder-addGroup\"),\r\n                        click: addGroupHandler\r\n                    }],\r\n                    displayExpr: \"caption\",\r\n                    onItemClick: function(e) {\r\n                        e.itemData.click()\r\n                    },\r\n                    cssClass: FILTER_BUILDER_ADD_CONDITION_CLASS\r\n                }\r\n            })\r\n        }\r\n        return $button.addClass(FILTER_BUILDER_IMAGE_CLASS).addClass(FILTER_BUILDER_IMAGE_ADD_CLASS).addClass(FILTER_BUILDER_ACTION_CLASS).attr(\"tabindex\", 0)\r\n    },\r\n    _createValueText: function(item, field, $container) {\r\n        var that = this;\r\n        var $text = (0, _renderer.default)(\"<div>\").html(\"&nbsp;\").addClass(FILTER_BUILDER_ITEM_VALUE_TEXT_CLASS).attr(\"tabindex\", 0).appendTo($container);\r\n        var value = item[2];\r\n        var customOperation = (0, _utils2.getCustomOperation)(that._customOperations, item[1]);\r\n        if (!customOperation && field.lookup) {\r\n            (0, _utils2.getCurrentLookupValueText)(field, value, function(result) {\r\n                (0, _utils2.renderValueText)($text, result)\r\n            })\r\n        } else {\r\n            (0, _deferred.when)((0, _utils2.getCurrentValueText)(field, value, customOperation)).done(function(result) {\r\n                (0, _utils2.renderValueText)($text, result, customOperation)\r\n            })\r\n        }\r\n        that._subscribeOnClickAndEnterKey($text, function(e) {\r\n            if (\"keyup\" === e.type) {\r\n                e.stopPropagation()\r\n            }\r\n            that._createValueEditorWithEvents(item, field, $container)\r\n        });\r\n        return $text\r\n    },\r\n    _updateConditionValue: function(item, value, callback) {\r\n        var areValuesDifferent = item[2] !== value;\r\n        if (areValuesDifferent) {\r\n            item[2] = value\r\n        }\r\n        callback();\r\n        this._updateFilter()\r\n    },\r\n    _addDocumentKeyUp: function($editor, handler) {\r\n        var isComposing = false;\r\n        var hasCompositionJustEnded = false;\r\n        var document = _dom_adapter.default.getDocument();\r\n        var documentKeyUpHandler = function(e) {\r\n            if (isComposing || hasCompositionJustEnded) {\r\n                hasCompositionJustEnded = false;\r\n                return\r\n            }\r\n            handler(e)\r\n        };\r\n        _events_engine.default.on(document, \"keyup\", documentKeyUpHandler);\r\n        var input = $editor.find(\"input\");\r\n        _events_engine.default.on(input, \"compositionstart\", function() {\r\n            isComposing = true\r\n        });\r\n        _events_engine.default.on(input, \"compositionend\", function() {\r\n            isComposing = false;\r\n            hasCompositionJustEnded = true\r\n        });\r\n        _events_engine.default.on(input, \"keydown\", function(event) {\r\n            if (229 !== event.which) {\r\n                hasCompositionJustEnded = false\r\n            }\r\n        });\r\n        this._documentKeyUpHandler = documentKeyUpHandler\r\n    },\r\n    _addDocumentClick: function($editor, closeEditorFunc) {\r\n        var _this6 = this;\r\n        var document = _dom_adapter.default.getDocument();\r\n        var documentClickHandler = function(e) {\r\n            if (!_this6._isFocusOnEditorParts($editor, e.target)) {\r\n                _events_engine.default.trigger($editor.find(\"input\"), \"change\");\r\n                closeEditorFunc()\r\n            }\r\n        };\r\n        _events_engine.default.on(document, \"dxpointerdown\", documentClickHandler);\r\n        this._documentClickHandler = documentClickHandler\r\n    },\r\n    _isFocusOnEditorParts: function($editor, target) {\r\n        var activeElement = target || _dom_adapter.default.getActiveElement();\r\n        return (0, _renderer.default)(activeElement).closest($editor.children()).length || (0, _renderer.default)(activeElement).closest(\".dx-dropdowneditor-overlay\").length\r\n    },\r\n    _removeEvents: function() {\r\n        var document = _dom_adapter.default.getDocument();\r\n        (0, _type.isDefined)(this._documentKeyUpHandler) && _events_engine.default.off(document, \"keyup\", this._documentKeyUpHandler);\r\n        (0, _type.isDefined)(this._documentClickHandler) && _events_engine.default.off(document, \"dxpointerdown\", this._documentClickHandler)\r\n    },\r\n    _dispose: function() {\r\n        this._removeEvents();\r\n        this.callBase()\r\n    },\r\n    _createValueEditorWithEvents: function(item, field, $container) {\r\n        var _this7 = this;\r\n        var value = item[2];\r\n        var createValueText = function() {\r\n            $container.empty();\r\n            _this7._removeEvents();\r\n            return _this7._createValueText(item, field, $container)\r\n        };\r\n        var closeEditor = function() {\r\n            _this7._updateConditionValue(item, value, function() {\r\n                createValueText()\r\n            })\r\n        };\r\n        var options = {\r\n            value: \"\" === value ? null : value,\r\n            filterOperation: (0, _utils2.getOperationValue)(item),\r\n            setValue: function(data) {\r\n                value = null === data ? \"\" : data\r\n            },\r\n            closeEditor: closeEditor,\r\n            text: $container.text()\r\n        };\r\n        $container.empty();\r\n        var $editor = this._createValueEditor($container, field, options);\r\n        _events_engine.default.trigger($editor.find(\"input\").not(\":hidden\").eq(0), \"focus\");\r\n        this._removeEvents();\r\n        this._addDocumentClick($editor, closeEditor);\r\n        this._addDocumentKeyUp($editor, function(e) {\r\n            var keyName = (0, _index.normalizeKeyName)(e);\r\n            if (keyName === TAB_KEY) {\r\n                if (_this7._isFocusOnEditorParts($editor)) {\r\n                    return\r\n                }\r\n                _this7._updateConditionValue(item, value, function() {\r\n                    createValueText();\r\n                    if (e.shiftKey) {\r\n                        _events_engine.default.trigger($container.prev(), \"focus\")\r\n                    }\r\n                })\r\n            }\r\n            if (keyName === ESCAPE_KEY) {\r\n                _events_engine.default.trigger(createValueText(), \"focus\")\r\n            }\r\n            if (keyName === ENTER_KEY) {\r\n                _this7._updateConditionValue(item, value, function() {\r\n                    _events_engine.default.trigger(createValueText(), \"focus\")\r\n                })\r\n            }\r\n        });\r\n        this._fireContentReadyAction()\r\n    },\r\n    _createValueButton: function(item, field) {\r\n        var $valueButton = (0, _renderer.default)(\"<div>\").addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_VALUE_CLASS);\r\n        this._createValueText(item, field, $valueButton);\r\n        return $valueButton\r\n    },\r\n    _createValueEditor: function($container, field, options) {\r\n        var $editor = (0, _renderer.default)(\"<div>\").attr(\"tabindex\", 0).appendTo($container);\r\n        var customOperation = (0, _utils2.getCustomOperation)(this._customOperations, options.filterOperation);\r\n        var editorTemplate = customOperation && customOperation.editorTemplate ? customOperation.editorTemplate : field.editorTemplate;\r\n        if (editorTemplate) {\r\n            var template = this._getTemplate(editorTemplate);\r\n            template.render({\r\n                model: (0, _extend.extend)({\r\n                    field: field\r\n                }, options),\r\n                container: $editor\r\n            })\r\n        } else {\r\n            this._editorFactory.createEditor.call(this, $editor, (0, _extend.extend)({}, field, options, {\r\n                parentType: SOURCE\r\n            }))\r\n        }\r\n        return $editor\r\n    },\r\n    _createPopupWithTreeView: function(options, $container) {\r\n        var that = this;\r\n        var $popup = (0, _renderer.default)(\"<div>\").addClass(options.menu.cssClass).appendTo($container);\r\n        this._createComponent($popup, _popup.default, {\r\n            onHiding: options.menu.onHiding,\r\n            onHidden: options.menu.onHidden,\r\n            rtlEnabled: options.menu.rtlEnabled,\r\n            position: options.menu.position,\r\n            animation: options.menu.animation,\r\n            contentTemplate: function(contentElement) {\r\n                var $menuContainer = (0, _renderer.default)(\"<div>\").appendTo(contentElement);\r\n                that._createComponent($menuContainer, _tree_view.default, options.menu);\r\n                this.repaint()\r\n            },\r\n            maxHeight: function() {\r\n                return (0, _utils.getElementMaxHeightByWindow)(options.menu.position.of)\r\n            },\r\n            visible: true,\r\n            focusStateEnabled: false,\r\n            closeOnTargetScroll: this.option(\"closePopupOnTargetScroll\"),\r\n            closeOnOutsideClick: true,\r\n            onShown: options.popup.onShown,\r\n            shading: false,\r\n            width: \"auto\",\r\n            height: \"auto\",\r\n            showTitle: false\r\n        })\r\n    },\r\n    _subscribeOnClickAndEnterKey: function($button, handler) {\r\n        _events_engine.default.on($button, \"dxclick\", handler);\r\n        _events_engine.default.on($button, \"keyup\", function(e) {\r\n            if ((0, _index.normalizeKeyName)(e) === ENTER_KEY) {\r\n                handler(e)\r\n            }\r\n        })\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxFilterBuilder\", FilterBuilder);\r\nvar _default = FilterBuilder;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/sliders_controller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.SlidersController = SlidersController;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _common2 = require(\"./common\");\r\nvar _slider = _interopRequireDefault(require(\"./slider\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar animationSettings = _common2.utils.animationSettings;\r\nvar emptySliderMarkerText = _common2.consts.emptySliderMarkerText;\r\n\r\nfunction buildRectPoints(left, top, right, bottom) {\r\n    return [left, top, right, top, right, bottom, left, bottom]\r\n}\r\n\r\nfunction isLess(a, b) {\r\n    return a < b\r\n}\r\n\r\nfunction isGreater(a, b) {\r\n    return a > b\r\n}\r\n\r\nfunction selectClosestValue(target, values) {\r\n    var start = 0;\r\n    var end = values ? values.length - 1 : 0;\r\n    var middle;\r\n    var val = target;\r\n    while (end - start > 1) {\r\n        middle = start + end >> 1;\r\n        val = values[middle];\r\n        if (val === target) {\r\n            return target\r\n        } else {\r\n            if (target < val) {\r\n                end = middle\r\n            } else {\r\n                start = middle\r\n            }\r\n        }\r\n    }\r\n    if (values) {\r\n        val = values[target - values[start] <= values[end] - target ? start : end]\r\n    }\r\n    return val\r\n}\r\n\r\nfunction dummyProcessSelectionChanged() {\r\n    this._lastSelectedRange = this.getSelectedRange();\r\n    delete this._processSelectionChanged\r\n}\r\n\r\nfunction suppressSetSelectedRange(controller) {\r\n    controller.setSelectedRange = _common.noop;\r\n    if (controller._processSelectionChanged === dummyProcessSelectionChanged) {\r\n        controller._processSelectionChanged()\r\n    }\r\n}\r\n\r\nfunction restoreSetSelectedRange(controller) {\r\n    delete controller.setSelectedRange\r\n}\r\n\r\nfunction SlidersController(params) {\r\n    var that = this;\r\n    var sliderParams = {\r\n        renderer: params.renderer,\r\n        root: params.root,\r\n        trackersGroup: params.trackersGroup,\r\n        translator: params.translator\r\n    };\r\n    that._params = params;\r\n    that._areaTracker = params.renderer.path(null, \"area\").attr({\r\n        \"class\": \"area-tracker\",\r\n        fill: \"#000000\",\r\n        opacity: 1e-4\r\n    }).append(params.trackersGroup);\r\n    that._selectedAreaTracker = params.renderer.path(null, \"area\").attr({\r\n        \"class\": \"selected-area-tracker\",\r\n        fill: \"#000000\",\r\n        opacity: 1e-4\r\n    }).append(params.trackersGroup);\r\n    that._shutter = params.renderer.path(null, \"area\").append(params.root);\r\n    that._sliders = [new _slider.default(sliderParams, 0), new _slider.default(sliderParams, 1)];\r\n    that._processSelectionChanged = dummyProcessSelectionChanged\r\n}\r\nSlidersController.prototype = {\r\n    constructor: SlidersController,\r\n    dispose: function() {\r\n        this._sliders[0].dispose();\r\n        this._sliders[1].dispose()\r\n    },\r\n    getTrackerTargets: function() {\r\n        return {\r\n            area: this._areaTracker,\r\n            selectedArea: this._selectedAreaTracker,\r\n            sliders: this._sliders\r\n        }\r\n    },\r\n    _processSelectionChanged: function(e) {\r\n        var that = this;\r\n        var selectedRange = that.getSelectedRange();\r\n        if (!(0, _utils.rangesAreEqual)(selectedRange, that._lastSelectedRange)) {\r\n            that._params.updateSelectedRange(selectedRange, that._lastSelectedRange, e);\r\n            that._lastSelectedRange = selectedRange\r\n        }\r\n    },\r\n    update: function(verticalRange, behavior, isCompactMode, sliderHandleOptions, sliderMarkerOptions, shutterOptions, rangeBounds, fullTicks, selectedRangeColor) {\r\n        var that = this;\r\n        var screenRange = that._params.translator.getScreenRange();\r\n        that._verticalRange = verticalRange;\r\n        that._minRange = rangeBounds.minRange;\r\n        that._maxRange = rangeBounds.maxRange;\r\n        that._animationEnabled = behavior.animationEnabled && that._params.renderer.animationEnabled();\r\n        that._allowSlidersSwap = behavior.allowSlidersSwap;\r\n        that._sliders[0].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);\r\n        that._sliders[1].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);\r\n        that._sliders[0]._position = that._sliders[1]._position = screenRange[0];\r\n        that._values = !that._params.translator.isValueProlonged && behavior.snapToTicks ? fullTicks : null;\r\n        that._areaTracker.attr({\r\n            points: buildRectPoints(screenRange[0], verticalRange[0], screenRange[1], verticalRange[1])\r\n        });\r\n        that._isCompactMode = isCompactMode;\r\n        that._shutterOffset = sliderHandleOptions.width / 2;\r\n        that._updateSelectedView(shutterOptions, selectedRangeColor);\r\n        that._isOnMoving = \"onmoving\" === (0, _utils.normalizeEnum)(behavior.callValueChanged);\r\n        that._updateSelectedRange();\r\n        that._applyTotalPosition(false)\r\n    },\r\n    _updateSelectedView: function(shutterOptions, selectedRangeColor) {\r\n        var settings = {\r\n            fill: null,\r\n            \"fill-opacity\": null,\r\n            stroke: null,\r\n            \"stroke-width\": null\r\n        };\r\n        if (this._isCompactMode) {\r\n            settings.stroke = selectedRangeColor;\r\n            settings[\"stroke-width\"] = 3;\r\n            settings.sharp = \"v\"\r\n        } else {\r\n            settings.fill = shutterOptions.color;\r\n            settings[\"fill-opacity\"] = shutterOptions.opacity\r\n        }\r\n        this._shutter.attr(settings)\r\n    },\r\n    _updateSelectedRange: function() {\r\n        var that = this;\r\n        var sliders = that._sliders;\r\n        sliders[0].cancelAnimation();\r\n        sliders[1].cancelAnimation();\r\n        that._shutter.stopAnimation();\r\n        if (that._params.translator.getBusinessRange().isEmpty()) {\r\n            sliders[0]._setText(emptySliderMarkerText);\r\n            sliders[1]._setText(emptySliderMarkerText);\r\n            sliders[0]._value = sliders[1]._value = void 0;\r\n            sliders[0]._position = that._params.translator.getScreenRange()[0];\r\n            sliders[1]._position = that._params.translator.getScreenRange()[1];\r\n            that._applyTotalPosition(false);\r\n            suppressSetSelectedRange(that)\r\n        } else {\r\n            restoreSetSelectedRange(that)\r\n        }\r\n    },\r\n    _applyTotalPosition: function(isAnimated) {\r\n        var sliders = this._sliders;\r\n        isAnimated = this._animationEnabled && isAnimated;\r\n        sliders[0].applyPosition(isAnimated);\r\n        sliders[1].applyPosition(isAnimated);\r\n        var areOverlapped = sliders[0].getCloudBorder() > sliders[1].getCloudBorder();\r\n        sliders[0].setOverlapped(areOverlapped);\r\n        sliders[1].setOverlapped(areOverlapped);\r\n        this._applyAreaTrackersPosition();\r\n        this._applySelectedRangePosition(isAnimated)\r\n    },\r\n    _applyAreaTrackersPosition: function() {\r\n        var that = this;\r\n        var position1 = that._sliders[0].getPosition();\r\n        var position2 = that._sliders[1].getPosition();\r\n        that._selectedAreaTracker.attr({\r\n            points: buildRectPoints(position1, that._verticalRange[0], position2, that._verticalRange[1])\r\n        }).css({\r\n            cursor: Math.abs(that._params.translator.getScreenRange()[1] - that._params.translator.getScreenRange()[0] - position2 + position1) < .001 ? \"default\" : \"pointer\"\r\n        })\r\n    },\r\n    _applySelectedRangePosition: function(isAnimated) {\r\n        var that = this;\r\n        var verticalRange = that._verticalRange;\r\n        var pos1 = that._sliders[0].getPosition();\r\n        var pos2 = that._sliders[1].getPosition();\r\n        var screenRange;\r\n        var points;\r\n        if (that._isCompactMode) {\r\n            points = [pos1 + Math.ceil(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2, pos2 - Math.floor(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2]\r\n        } else {\r\n            screenRange = that._params.axis.getVisibleArea();\r\n            points = [buildRectPoints(screenRange[0], verticalRange[0], Math.max(pos1 - Math.floor(that._shutterOffset), screenRange[0]), verticalRange[1]), buildRectPoints(screenRange[1], verticalRange[0], Math.min(pos2 + Math.ceil(that._shutterOffset), screenRange[1]), verticalRange[1])]\r\n        }\r\n        if (isAnimated) {\r\n            that._shutter.animate({\r\n                points: points\r\n            }, animationSettings)\r\n        } else {\r\n            that._shutter.attr({\r\n                points: points\r\n            })\r\n        }\r\n    },\r\n    getSelectedRange: function() {\r\n        return {\r\n            startValue: this._sliders[0].getValue(),\r\n            endValue: this._sliders[1].getValue()\r\n        }\r\n    },\r\n    setSelectedRange: function(visualRange, e) {\r\n        visualRange = visualRange || {};\r\n        var that = this;\r\n        var translator = that._params.translator;\r\n        var businessRange = translator.getBusinessRange();\r\n        var compare = \"discrete\" === businessRange.axisType ? function(a, b) {\r\n            return a < b\r\n        } : function(a, b) {\r\n            return a <= b\r\n        };\r\n        var _adjustVisualRange = (0, _utils.adjustVisualRange)({\r\n                dataType: businessRange.dataType,\r\n                axisType: businessRange.axisType,\r\n                base: businessRange.base\r\n            }, {\r\n                startValue: translator.isValid(visualRange.startValue) ? translator.getCorrectValue(visualRange.startValue, 1) : void 0,\r\n                endValue: translator.isValid(visualRange.endValue) ? translator.getCorrectValue(visualRange.endValue, -1) : void 0,\r\n                length: visualRange.length\r\n            }, {\r\n                min: businessRange.minVisible,\r\n                max: businessRange.maxVisible,\r\n                categories: businessRange.categories\r\n            }),\r\n            startValue = _adjustVisualRange.startValue,\r\n            endValue = _adjustVisualRange.endValue;\r\n        startValue = (0, _type.isNumeric)(startValue) ? (0, _math.adjust)(startValue) : startValue;\r\n        endValue = (0, _type.isNumeric)(endValue) ? (0, _math.adjust)(endValue) : endValue;\r\n        var values = compare(translator.to(startValue, -1), translator.to(endValue, 1)) ? [startValue, endValue] : [endValue, startValue];\r\n        that._sliders[0].setDisplayValue(values[0]);\r\n        that._sliders[1].setDisplayValue(values[1]);\r\n        that._sliders[0]._position = translator.to(values[0], -1);\r\n        that._sliders[1]._position = translator.to(values[1], 1);\r\n        that._applyTotalPosition(true);\r\n        that._processSelectionChanged(e)\r\n    },\r\n    beginSelectedAreaMoving: function(initialPosition) {\r\n        var that = this;\r\n        var sliders = that._sliders;\r\n        var offset = (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - initialPosition;\r\n        var currentPosition = initialPosition;\r\n        move.complete = function(e) {\r\n            that._dockSelectedArea(e)\r\n        };\r\n        return move;\r\n\r\n        function move(position, e) {\r\n            if (position !== currentPosition && position > currentPosition === position > (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - offset) {\r\n                that._moveSelectedArea(position + offset, false, e)\r\n            }\r\n            currentPosition = position\r\n        }\r\n    },\r\n    _dockSelectedArea: function(e) {\r\n        var translator = this._params.translator;\r\n        var sliders = this._sliders;\r\n        sliders[0]._position = translator.to(sliders[0].getValue(), -1);\r\n        sliders[1]._position = translator.to(sliders[1].getValue(), 1);\r\n        this._applyTotalPosition(true);\r\n        this._processSelectionChanged(e)\r\n    },\r\n    moveSelectedArea: function(screenPosition, e) {\r\n        this._moveSelectedArea(screenPosition, true, e);\r\n        this._dockSelectedArea(e)\r\n    },\r\n    _moveSelectedArea: function(screenPosition, isAnimated, e) {\r\n        var that = this;\r\n        var translator = that._params.translator;\r\n        var sliders = that._sliders;\r\n        var interval = sliders[1].getPosition() - sliders[0].getPosition();\r\n        var startPosition = screenPosition - interval / 2;\r\n        var endPosition = screenPosition + interval / 2;\r\n        if (startPosition < translator.getScreenRange()[0]) {\r\n            startPosition = translator.getScreenRange()[0];\r\n            endPosition = startPosition + interval\r\n        }\r\n        if (endPosition > translator.getScreenRange()[1]) {\r\n            endPosition = translator.getScreenRange()[1];\r\n            startPosition = endPosition - interval\r\n        }\r\n        var startValue = selectClosestValue(translator.from(startPosition, -1), that._values);\r\n        sliders[0].setDisplayValue(startValue);\r\n        sliders[1].setDisplayValue(selectClosestValue(translator.from(translator.to(startValue, -1) + interval, 1), that._values));\r\n        sliders[0]._position = startPosition;\r\n        sliders[1]._position = endPosition;\r\n        that._applyTotalPosition(isAnimated);\r\n        if (that._isOnMoving) {\r\n            that._processSelectionChanged(e)\r\n        }\r\n    },\r\n    placeSliderAndBeginMoving: function(firstPosition, secondPosition, e) {\r\n        var that = this;\r\n        var translator = that._params.translator;\r\n        var sliders = that._sliders;\r\n        var index = firstPosition < secondPosition ? 0 : 1;\r\n        var dir = index > 0 ? 1 : -1;\r\n        var compare = index > 0 ? isGreater : isLess;\r\n        var antiCompare = index > 0 ? isLess : isGreater;\r\n        var thresholdPosition;\r\n        var positions = [];\r\n        var values = [];\r\n        values[index] = translator.from(firstPosition, dir);\r\n        values[1 - index] = translator.from(secondPosition, -dir);\r\n        positions[1 - index] = secondPosition;\r\n        if (translator.isValueProlonged) {\r\n            if (compare(firstPosition, translator.to(values[index], dir))) {\r\n                values[index] = translator.from(firstPosition, -dir)\r\n            }\r\n            if (compare(secondPosition, translator.to(values[index], -dir))) {\r\n                values[1 - index] = values[index]\r\n            }\r\n        }\r\n        if (that._minRange) {\r\n            thresholdPosition = translator.to(translator.add(selectClosestValue(values[index], that._values), that._minRange, -dir), -dir);\r\n            if (compare(secondPosition, thresholdPosition)) {\r\n                values[1 - index] = translator.add(values[index], that._minRange, -dir)\r\n            }\r\n            thresholdPosition = translator.to(translator.add(translator.getRange()[1 - index], that._minRange, dir), -dir);\r\n            if (antiCompare(firstPosition, thresholdPosition)) {\r\n                values[1 - index] = translator.getRange()[1 - index];\r\n                values[index] = translator.add(values[1 - index], that._minRange, dir);\r\n                positions[1 - index] = firstPosition\r\n            }\r\n        }\r\n        values[0] = selectClosestValue(values[0], that._values);\r\n        values[1] = selectClosestValue(values[1], that._values);\r\n        positions[index] = translator.to(values[index], dir);\r\n        sliders[0].setDisplayValue(values[0]);\r\n        sliders[1].setDisplayValue(values[1]);\r\n        sliders[0]._position = positions[0];\r\n        sliders[1]._position = positions[1];\r\n        that._applyTotalPosition(true);\r\n        if (that._isOnMoving) {\r\n            that._processSelectionChanged(e)\r\n        }\r\n        var handler = that.beginSliderMoving(1 - index, secondPosition);\r\n        sliders[1 - index]._sliderGroup.stopAnimation();\r\n        that._shutter.stopAnimation();\r\n        handler(secondPosition);\r\n        return handler\r\n    },\r\n    beginSliderMoving: function(initialIndex, initialPosition) {\r\n        var that = this;\r\n        var translator = that._params.translator;\r\n        var sliders = that._sliders;\r\n        var minPosition = translator.getScreenRange()[0];\r\n        var maxPosition = translator.getScreenRange()[1];\r\n        var index = initialIndex;\r\n        var staticPosition = sliders[1 - index].getPosition();\r\n        var currentPosition = initialPosition;\r\n        var dir = index > 0 ? 1 : -1;\r\n        var compareMin = index > 0 ? isLess : isGreater;\r\n        var compareMax = index > 0 ? isGreater : isLess;\r\n        var moveOffset = sliders[index].getPosition() - initialPosition;\r\n        var swapOffset = compareMin(sliders[index].getPosition(), initialPosition) ? -moveOffset : moveOffset;\r\n        move.complete = function(e) {\r\n            sliders[index]._setValid(true);\r\n            that._dockSelectedArea(e)\r\n        };\r\n        return move;\r\n\r\n        function move(position, e) {\r\n            var isValid;\r\n            var temp;\r\n            var pos;\r\n            var slider;\r\n            var value;\r\n            if (position !== currentPosition) {\r\n                if (compareMin(position + swapOffset, staticPosition)) {\r\n                    isValid = that._allowSlidersSwap;\r\n                    if (isValid && !translator.isValueProlonged && that._minRange) {\r\n                        isValid = translator.isValid(translator.add(sliders[1 - index].getValue(), that._minRange, -dir))\r\n                    }\r\n                    if (isValid) {\r\n                        that._changeMovingSlider(index);\r\n                        index = 1 - index;\r\n                        dir = -dir;\r\n                        temp = compareMin;\r\n                        compareMin = compareMax;\r\n                        compareMax = temp;\r\n                        moveOffset = -dir * Math.abs(moveOffset);\r\n                        swapOffset = -moveOffset\r\n                    }\r\n                }\r\n                if (compareMax(position + moveOffset, staticPosition)) {\r\n                    isValid = true;\r\n                    slider = sliders[index];\r\n                    value = sliders[1 - index].getValue();\r\n                    pos = Math.max(Math.min(position + moveOffset, maxPosition), minPosition);\r\n                    if (isValid && translator.isValueProlonged) {\r\n                        isValid = !compareMin(pos, translator.to(value, dir))\r\n                    }\r\n                    var invalidStateValue;\r\n                    if (isValid && that._minRange) {\r\n                        isValid = !compareMin(pos, translator.to(translator.add(value, that._minRange, dir), dir));\r\n                        if (!isValid) {\r\n                            invalidStateValue = translator.add(value, that._minRange, dir)\r\n                        }\r\n                    }\r\n                    if (isValid && that._maxRange) {\r\n                        isValid = !compareMax(pos, translator.to(translator.add(value, that._maxRange, dir), dir));\r\n                        if (!isValid) {\r\n                            invalidStateValue = translator.add(value, that._maxRange, dir)\r\n                        }\r\n                    }\r\n                    slider._setValid(isValid);\r\n                    slider.setDisplayValue(isValid ? selectClosestValue(translator.from(pos, dir), that._values) : (0, _type.isDefined)(invalidStateValue) ? invalidStateValue : slider.getValue());\r\n                    slider._position = pos;\r\n                    that._applyTotalPosition(false);\r\n                    slider.toForeground();\r\n                    if (that._isOnMoving) {\r\n                        that._processSelectionChanged(e)\r\n                    }\r\n                }\r\n            }\r\n            currentPosition = position\r\n        }\r\n    },\r\n    _changeMovingSlider: function(index) {\r\n        var that = this;\r\n        var translator = that._params.translator;\r\n        var sliders = that._sliders;\r\n        var position = sliders[1 - index].getPosition();\r\n        var dir = index > 0 ? 1 : -1;\r\n        var newValue;\r\n        sliders[index].setDisplayValue(selectClosestValue(translator.from(position, dir), that._values));\r\n        newValue = translator.from(position, -dir);\r\n        if (translator.isValueProlonged) {\r\n            newValue = translator.from(position, dir)\r\n        } else {\r\n            if (that._minRange) {\r\n                newValue = translator.add(newValue, that._minRange, -dir)\r\n            }\r\n        }\r\n        sliders[1 - index].setDisplayValue(selectClosestValue(newValue, that._values));\r\n        sliders[index]._setValid(true);\r\n        sliders[index]._marker._update();\r\n        sliders[0]._position = sliders[1]._position = position\r\n    },\r\n    foregroundSlider: function(index) {\r\n        this._sliders[index].toForeground()\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.data_source_adapter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.data_source_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar dataSourceAdapterType = _uiGrid_core.default;\r\nvar _default = {\r\n    extend: function(extender) {\r\n        dataSourceAdapterType = dataSourceAdapterType.inherit(extender)\r\n    },\r\n    create: function(component) {\r\n        return new dataSourceAdapterType(component)\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/common.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.equalByValue = exports.grep = exports.asyncNoop = exports.noop = exports.applyServerDecimalSeparator = exports.escapeRegExp = exports.getKeyHash = exports.pairToObject = exports.denormalizeKey = exports.normalizeKey = exports.splitPair = exports.findBestMatches = exports.deferUpdater = exports.deferRenderer = exports.deferUpdate = exports.deferRender = exports.executeAsync = exports.ensureDefined = void 0;\r\nvar _config = _interopRequireDefault(require(\"../config\"));\r\nvar _guid = _interopRequireDefault(require(\"../guid\"));\r\nvar _deferred = require(\"../utils/deferred\");\r\nvar _data = require(\"./data\");\r\nvar _iterator = require(\"./iterator\");\r\nvar _type = require(\"./type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ensureDefined = function(value, defaultValue) {\r\n    return (0, _type.isDefined)(value) ? value : defaultValue\r\n};\r\nexports.ensureDefined = ensureDefined;\r\nvar executeAsync = function(action, context) {\r\n    var deferred = new _deferred.Deferred;\r\n    var normalizedContext = context || this;\r\n    var task = {\r\n        promise: deferred.promise(),\r\n        abort: function() {\r\n            clearTimeout(timerId);\r\n            deferred.rejectWith(normalizedContext)\r\n        }\r\n    };\r\n    var callback = function() {\r\n        var result = action.call(normalizedContext);\r\n        if (result && result.done && (0, _type.isFunction)(result.done)) {\r\n            result.done(function() {\r\n                deferred.resolveWith(normalizedContext)\r\n            })\r\n        } else {\r\n            deferred.resolveWith(normalizedContext)\r\n        }\r\n    };\r\n    var timerId = (arguments[2] || setTimeout)(callback, \"number\" === typeof context ? context : 0);\r\n    return task\r\n};\r\nexports.executeAsync = executeAsync;\r\nvar delayedFuncs = [];\r\nvar delayedNames = [];\r\nvar delayedDeferreds = [];\r\nvar executingName;\r\nvar deferExecute = function(name, func, deferred) {\r\n    if (executingName && executingName !== name) {\r\n        delayedFuncs.push(func);\r\n        delayedNames.push(name);\r\n        deferred = deferred || new _deferred.Deferred;\r\n        delayedDeferreds.push(deferred);\r\n        return deferred\r\n    } else {\r\n        var oldExecutingName = executingName;\r\n        var currentDelayedCount = delayedDeferreds.length;\r\n        executingName = name;\r\n        var result = func();\r\n        if (!result) {\r\n            if (delayedDeferreds.length > currentDelayedCount) {\r\n                result = _deferred.when.apply(this, delayedDeferreds.slice(currentDelayedCount))\r\n            } else {\r\n                if (deferred) {\r\n                    deferred.resolve()\r\n                }\r\n            }\r\n        }\r\n        executingName = oldExecutingName;\r\n        if (deferred && result && result.done) {\r\n            result.done(deferred.resolve).fail(deferred.reject)\r\n        }\r\n        if (!executingName && delayedFuncs.length) {\r\n            (\"render\" === delayedNames.shift() ? deferRender : deferUpdate)(delayedFuncs.shift(), delayedDeferreds.shift())\r\n        }\r\n        return result || (0, _deferred.when)()\r\n    }\r\n};\r\nvar deferRender = function(func, deferred) {\r\n    return deferExecute(\"render\", func, deferred)\r\n};\r\nexports.deferRender = deferRender;\r\nvar deferUpdate = function(func, deferred) {\r\n    return deferExecute(\"update\", func, deferred)\r\n};\r\nexports.deferUpdate = deferUpdate;\r\nvar deferRenderer = function(func) {\r\n    return function() {\r\n        var that = this;\r\n        return deferExecute(\"render\", function() {\r\n            return func.call(that)\r\n        })\r\n    }\r\n};\r\nexports.deferRenderer = deferRenderer;\r\nvar deferUpdater = function(func) {\r\n    return function() {\r\n        var that = this;\r\n        return deferExecute(\"update\", function() {\r\n            return func.call(that)\r\n        })\r\n    }\r\n};\r\nexports.deferUpdater = deferUpdater;\r\nvar findBestMatches = function(targetFilter, items, mapFn) {\r\n    var bestMatches = [];\r\n    var maxMatchCount = 0;\r\n    (0, _iterator.each)(items, function(index, itemSrc) {\r\n        var matchCount = 0;\r\n        var item = mapFn ? mapFn(itemSrc) : itemSrc;\r\n        (0, _iterator.each)(targetFilter, function(paramName, targetValue) {\r\n            var value = item[paramName];\r\n            if (void 0 === value) {\r\n                return\r\n            }\r\n            if (match(value, targetValue)) {\r\n                matchCount++;\r\n                return\r\n            }\r\n            matchCount = -1;\r\n            return false\r\n        });\r\n        if (matchCount < maxMatchCount) {\r\n            return\r\n        }\r\n        if (matchCount > maxMatchCount) {\r\n            bestMatches.length = 0;\r\n            maxMatchCount = matchCount\r\n        }\r\n        bestMatches.push(itemSrc)\r\n    });\r\n    return bestMatches\r\n};\r\nexports.findBestMatches = findBestMatches;\r\nvar match = function(value, targetValue) {\r\n    if (Array.isArray(value) && Array.isArray(targetValue)) {\r\n        var mismatch = false;\r\n        (0, _iterator.each)(value, function(index, valueItem) {\r\n            if (valueItem !== targetValue[index]) {\r\n                mismatch = true;\r\n                return false\r\n            }\r\n        });\r\n        if (mismatch) {\r\n            return false\r\n        }\r\n        return true\r\n    }\r\n    if (value === targetValue) {\r\n        return true\r\n    }\r\n    return false\r\n};\r\nvar splitPair = function(raw) {\r\n    var _raw$x, _raw$y;\r\n    switch ((0, _type.type)(raw)) {\r\n        case \"string\":\r\n            return raw.split(/\\s+/, 2);\r\n        case \"object\":\r\n            return [null !== (_raw$x = raw.x) && void 0 !== _raw$x ? _raw$x : raw.h, null !== (_raw$y = raw.y) && void 0 !== _raw$y ? _raw$y : raw.v];\r\n        case \"number\":\r\n            return [raw];\r\n        case \"array\":\r\n            return raw;\r\n        default:\r\n            return null\r\n    }\r\n};\r\nexports.splitPair = splitPair;\r\nvar normalizeKey = function(id) {\r\n    var key = (0, _type.isString)(id) ? id : id.toString();\r\n    var arr = key.match(/[^a-zA-Z0-9_]/g);\r\n    arr && (0, _iterator.each)(arr, function(_, sign) {\r\n        key = key.replace(sign, \"__\" + sign.charCodeAt() + \"__\")\r\n    });\r\n    return key\r\n};\r\nexports.normalizeKey = normalizeKey;\r\nvar denormalizeKey = function(key) {\r\n    var arr = key.match(/__\\d+__/g);\r\n    arr && arr.forEach(function(char) {\r\n        var charCode = parseInt(char.replace(\"__\", \"\"));\r\n        key = key.replace(char, String.fromCharCode(charCode))\r\n    });\r\n    return key\r\n};\r\nexports.denormalizeKey = denormalizeKey;\r\nvar pairToObject = function(raw, preventRound) {\r\n    var pair = splitPair(raw);\r\n    var h = preventRound ? parseFloat(pair && pair[0]) : parseInt(pair && pair[0], 10);\r\n    var v = preventRound ? parseFloat(pair && pair[1]) : parseInt(pair && pair[1], 10);\r\n    if (!isFinite(h)) {\r\n        h = 0\r\n    }\r\n    if (!isFinite(v)) {\r\n        v = h\r\n    }\r\n    return {\r\n        h: h,\r\n        v: v\r\n    }\r\n};\r\nexports.pairToObject = pairToObject;\r\nvar getKeyHash = function(key) {\r\n    if (key instanceof _guid.default) {\r\n        return key.toString()\r\n    } else {\r\n        if ((0, _type.isObject)(key) || Array.isArray(key)) {\r\n            try {\r\n                var keyHash = JSON.stringify(key);\r\n                return \"{}\" === keyHash ? key : keyHash\r\n            } catch (e) {\r\n                return key\r\n            }\r\n        }\r\n    }\r\n    return key\r\n};\r\nexports.getKeyHash = getKeyHash;\r\nvar escapeRegExp = function(string) {\r\n    return string.replace(/[[\\]{}\\-()*+?.\\\\^$|\\s]/g, \"\\\\$&\")\r\n};\r\nexports.escapeRegExp = escapeRegExp;\r\nvar applyServerDecimalSeparator = function(value) {\r\n    var separator = (0, _config.default)().serverDecimalSeparator;\r\n    if ((0, _type.isDefined)(value)) {\r\n        value = value.toString().replace(\".\", separator)\r\n    }\r\n    return value\r\n};\r\nexports.applyServerDecimalSeparator = applyServerDecimalSeparator;\r\nvar noop = function() {};\r\nexports.noop = noop;\r\nvar asyncNoop = function() {\r\n    return (new _deferred.Deferred).resolve().promise()\r\n};\r\nexports.asyncNoop = asyncNoop;\r\nvar grep = function(elements, checkFunction, invert) {\r\n    var result = [];\r\n    var check;\r\n    var expectedCheck = !invert;\r\n    for (var i = 0; i < elements.length; i++) {\r\n        check = !!checkFunction(elements[i], i);\r\n        if (check === expectedCheck) {\r\n            result.push(elements[i])\r\n        }\r\n    }\r\n    return result\r\n};\r\nexports.grep = grep;\r\nvar arraysEqualByValue = function(array1, array2, depth) {\r\n    if (array1.length !== array2.length) {\r\n        return false\r\n    }\r\n    for (var i = 0; i < array1.length; i++) {\r\n        if (!equalByValue(array1[i], array2[i], depth + 1)) {\r\n            return false\r\n        }\r\n    }\r\n    return true\r\n};\r\nvar objectsEqualByValue = function(object1, object2, depth, strict) {\r\n    for (var propertyName in object1) {\r\n        if (Object.prototype.hasOwnProperty.call(object1, propertyName) && !equalByValue(object1[propertyName], object2[propertyName], depth + 1, strict)) {\r\n            return false\r\n        }\r\n    }\r\n    for (var _propertyName in object2) {\r\n        if (!(_propertyName in object1)) {\r\n            return false\r\n        }\r\n    }\r\n    return true\r\n};\r\nvar maxEqualityDepth = 3;\r\nvar equalByValue = function(object1, object2) {\r\n    var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;\r\n    var strict = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n    object1 = (0, _data.toComparable)(object1, true);\r\n    object2 = (0, _data.toComparable)(object2, true);\r\n    var comparisonResult = strict ? object1 === object2 : object1 == object2;\r\n    if (comparisonResult || depth >= maxEqualityDepth) {\r\n        return true\r\n    }\r\n    if ((0, _type.isObject)(object1) && (0, _type.isObject)(object2)) {\r\n        return objectsEqualByValue(object1, object2, depth, strict)\r\n    } else {\r\n        if (Array.isArray(object1) && Array.isArray(object2)) {\r\n            return arraysEqualByValue(object1, object2, depth)\r\n        }\r\n    }\r\n    return false\r\n};\r\nexports.equalByValue = equalByValue;\r\n","/**\r\n * DevExtreme (events/core/hook_touch_props.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = _default;\r\nvar touchPropsToHook = [\"pageX\", \"pageY\", \"screenX\", \"screenY\", \"clientX\", \"clientY\"];\r\nvar touchPropHook = function(name, event) {\r\n    if (event[name] && !event.touches || !event.touches) {\r\n        return event[name]\r\n    }\r\n    var touches = event.touches.length ? event.touches : event.changedTouches;\r\n    if (!touches.length) {\r\n        return\r\n    }\r\n    return touches[0][name]\r\n};\r\n\r\nfunction _default(callback) {\r\n    touchPropsToHook.forEach(function(name) {\r\n        callback(name, function(event) {\r\n            return touchPropHook(name, event)\r\n        })\r\n    }, this)\r\n}\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.publisher_mixin.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar publisherMixin = {\r\n    notifyObserver: function(subject, args) {\r\n        var observer = this.option(\"observer\");\r\n        if (observer) {\r\n            observer.fire(subject, args)\r\n        }\r\n    },\r\n    invoke: function() {\r\n        var observer = this.option(\"observer\");\r\n        if (observer) {\r\n            return observer.fire.apply(observer, arguments)\r\n        }\r\n    }\r\n};\r\nvar _default = publisherMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (mobile/init_mobile_viewport/init_mobile_viewport.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.initMobileViewport = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _resize_callbacks = _interopRequireDefault(require(\"../../core/utils/resize_callbacks\"));\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar initMobileViewport = function(options) {\r\n    options = (0, _extend.extend)({}, options);\r\n    var realDevice = _devices.default.real();\r\n    var allowZoom = options.allowZoom;\r\n    var allowPan = options.allowPan;\r\n    var allowSelection = \"allowSelection\" in options ? options.allowSelection : \"generic\" === realDevice.platform;\r\n    var metaSelector = \"meta[name=viewport]\";\r\n    if (!(0, _renderer.default)(metaSelector).length) {\r\n        (0, _renderer.default)(\"<meta>\").attr(\"name\", \"viewport\").appendTo(\"head\")\r\n    }\r\n    var metaVerbs = [\"width=device-width\"];\r\n    var msTouchVerbs = [];\r\n    if (allowZoom) {\r\n        msTouchVerbs.push(\"pinch-zoom\")\r\n    } else {\r\n        metaVerbs.push(\"initial-scale=1.0\", \"maximum-scale=1.0, user-scalable=no\")\r\n    }\r\n    if (allowPan) {\r\n        msTouchVerbs.push(\"pan-x\", \"pan-y\")\r\n    }\r\n    if (!allowPan && !allowZoom) {\r\n        (0, _renderer.default)(\"html, body\").css({\r\n            msContentZooming: \"none\",\r\n            msUserSelect: \"none\",\r\n            overflow: \"hidden\"\r\n        })\r\n    } else {\r\n        (0, _renderer.default)(\"html\").css(\"msOverflowStyle\", \"-ms-autohiding-scrollbar\")\r\n    }\r\n    if (!allowSelection && (0, _support.supportProp)(\"userSelect\")) {\r\n        (0, _renderer.default)(\".dx-viewport\").css((0, _style.styleProp)(\"userSelect\"), \"none\")\r\n    }(0, _renderer.default)(metaSelector).attr(\"content\", metaVerbs.join());\r\n    (0, _renderer.default)(\"html\").css(\"msTouchAction\", msTouchVerbs.join(\" \") || \"none\");\r\n    realDevice = _devices.default.real();\r\n    if (_support.touch) {\r\n        _events_engine.default.off(_dom_adapter.default.getDocument(), \".dxInitMobileViewport\");\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), \"dxpointermove.dxInitMobileViewport\", function(e) {\r\n            var count = e.pointers.length;\r\n            var isTouchEvent = \"touch\" === e.pointerType;\r\n            var zoomDisabled = !allowZoom && count > 1;\r\n            var panDisabled = !allowPan && 1 === count && !e.isScrollingEvent;\r\n            if (isTouchEvent && (zoomDisabled || panDisabled)) {\r\n                e.preventDefault()\r\n            }\r\n        })\r\n    }\r\n    if (realDevice.ios) {\r\n        var isPhoneGap = \"file:\" === _dom_adapter.default.getLocation().protocol;\r\n        if (!isPhoneGap) {\r\n            _resize_callbacks.default.add(function() {\r\n                var windowWidth = (0, _renderer.default)(window).width();\r\n                (0, _renderer.default)(\"body\").width(windowWidth)\r\n            })\r\n        }\r\n    }\r\n    if (realDevice.android) {\r\n        _resize_callbacks.default.add(function() {\r\n            setTimeout(function() {\r\n                var activeElement = _dom_adapter.default.getActiveElement();\r\n                activeElement.scrollIntoViewIfNeeded ? activeElement.scrollIntoViewIfNeeded() : activeElement.scrollIntoView(false)\r\n            })\r\n        })\r\n    }\r\n};\r\nexports.initMobileViewport = initMobileViewport;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.search.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.search\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"search\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_scrolling_core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getContentHeightLimit = getContentHeightLimit;\r\nexports.subscribeToExternalScrollers = subscribeToExternalScrollers;\r\nexports.VirtualScrollController = exports.getPixelRatio = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCROLLING_MODE_INFINITE = \"infinite\";\r\nvar SCROLLING_MODE_VIRTUAL = \"virtual\";\r\nvar isVirtualMode = function(that) {\r\n    return that.option(\"scrolling.mode\") === SCROLLING_MODE_VIRTUAL || that._isVirtual\r\n};\r\nvar isAppendMode = function(that) {\r\n    return that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE && !that._isVirtual\r\n};\r\nvar needTwoPagesLoading = function(that) {\r\n    return that.option(\"scrolling.loadTwoPagesOnStart\") || that._isVirtual || that._viewportItemIndex > 0\r\n};\r\nvar getPixelRatio = function(window) {\r\n    return window.devicePixelRatio || 1\r\n};\r\nexports.getPixelRatio = getPixelRatio;\r\n\r\nfunction getContentHeightLimit(browser) {\r\n    if (browser.msie) {\r\n        return 4e6\r\n    } else {\r\n        if (browser.mozilla) {\r\n            return 8e6\r\n        }\r\n    }\r\n    return 15e6 / getPixelRatio((0, _window.getWindow)())\r\n}\r\n\r\nfunction subscribeToExternalScrollers($element, scrollChangedHandler, $targetElement) {\r\n    var $scrollElement;\r\n    var scrollableArray = [];\r\n    var scrollToArray = [];\r\n    var disposeArray = [];\r\n    $targetElement = $targetElement || $element;\r\n\r\n    function getElementOffset(scrollable) {\r\n        var $scrollableElement = scrollable.element ? scrollable.$element() : scrollable;\r\n        var scrollableOffset = _position.default.offset($scrollableElement);\r\n        if (!scrollableOffset) {\r\n            return $element.offset().top\r\n        }\r\n        return scrollable.scrollTop() - (scrollableOffset.top - $element.offset().top)\r\n    }\r\n\r\n    function createWindowScrollHandler(scrollable) {\r\n        return function() {\r\n            var scrollTop = scrollable.scrollTop() - getElementOffset(scrollable);\r\n            scrollTop = scrollTop > 0 ? scrollTop : 0;\r\n            scrollChangedHandler(scrollTop)\r\n        }\r\n    }\r\n    var widgetScrollStrategy = {\r\n        on: function(scrollable, eventName, handler) {\r\n            scrollable.on(\"scroll\", handler)\r\n        },\r\n        off: function(scrollable, eventName, handler) {\r\n            scrollable.off(\"scroll\", handler)\r\n        }\r\n    };\r\n\r\n    function subscribeToScrollEvents($scrollElement) {\r\n        var isDocument = \"#document\" === $scrollElement.get(0).nodeName;\r\n        var scrollable = $scrollElement.data(\"dxScrollable\");\r\n        var eventsStrategy = widgetScrollStrategy;\r\n        if (!scrollable) {\r\n            scrollable = isDocument && (0, _renderer.default)((0, _window.getWindow)()) || \"auto\" === $scrollElement.css(\"overflowY\") && $scrollElement;\r\n            eventsStrategy = _events_engine.default;\r\n            if (!scrollable) {\r\n                return\r\n            }\r\n        }\r\n        var handler = createWindowScrollHandler(scrollable);\r\n        eventsStrategy.on(scrollable, \"scroll\", handler);\r\n        scrollToArray.push(function(pos) {\r\n            var topOffset = getElementOffset(scrollable);\r\n            var scrollMethod = scrollable.scrollTo ? \"scrollTo\" : \"scrollTop\";\r\n            if (pos - topOffset >= 0) {\r\n                scrollable[scrollMethod](pos + topOffset)\r\n            }\r\n        });\r\n        scrollableArray.push(scrollable);\r\n        disposeArray.push(function() {\r\n            eventsStrategy.off(scrollable, \"scroll\", handler)\r\n        })\r\n    }\r\n    for ($scrollElement = $targetElement.parent(); $scrollElement.length; $scrollElement = $scrollElement.parent()) {\r\n        subscribeToScrollEvents($scrollElement)\r\n    }\r\n    return {\r\n        scrollTo: function(pos) {\r\n            (0, _iterator.each)(scrollToArray, function(_, scrollTo) {\r\n                scrollTo(pos)\r\n            })\r\n        },\r\n        dispose: function() {\r\n            (0, _iterator.each)(disposeArray, function(_, dispose) {\r\n                dispose()\r\n            })\r\n        }\r\n    }\r\n}\r\nvar VirtualScrollController = _class.default.inherit(function() {\r\n    var getViewportPageCount = function(that) {\r\n        var pageSize = that._dataSource.pageSize();\r\n        var preventPreload = that.option(\"scrolling.preventPreload\");\r\n        if (preventPreload) {\r\n            return 0\r\n        }\r\n        var realViewportSize = that._viewportSize;\r\n        if (isVirtualMode(that) && !that.option(\"legacyRendering\") && that.option(\"scrolling.removeInvisiblePages\")) {\r\n            realViewportSize = 0;\r\n            var viewportSize = that._viewportSize * that._viewportItemSize;\r\n            var offset = that.getContentOffset();\r\n            var position = that._position || 0;\r\n            var virtualItemsCount = that.virtualItemsCount();\r\n            var totalItemsCount = that._dataSource.totalItemsCount();\r\n            for (var itemIndex = virtualItemsCount.begin; itemIndex < totalItemsCount; itemIndex++) {\r\n                if (offset >= position + viewportSize) {\r\n                    break\r\n                }\r\n                var itemSize = that._itemSizes[itemIndex] || that._viewportItemSize;\r\n                offset += itemSize;\r\n                if (offset >= position) {\r\n                    realViewportSize++\r\n                }\r\n            }\r\n        }\r\n        return pageSize && realViewportSize > 0 ? Math.ceil(realViewportSize / pageSize) : 1\r\n    };\r\n    var getPreloadPageCount = function(that, previous) {\r\n        var preloadEnabled = that.option(\"scrolling.preloadEnabled\");\r\n        var pageCount = getViewportPageCount(that);\r\n        if (pageCount) {\r\n            if (previous) {\r\n                pageCount = preloadEnabled ? 1 : 0\r\n            } else {\r\n                if (preloadEnabled) {\r\n                    pageCount++\r\n                }\r\n                if (isAppendMode(that) || !needTwoPagesLoading(that)) {\r\n                    pageCount--\r\n                }\r\n            }\r\n        }\r\n        return pageCount\r\n    };\r\n    var getPageIndexForLoad = function(that) {\r\n        var result = -1;\r\n        var beginPageIndex = getBeginPageIndex(that);\r\n        var dataSource = that._dataSource;\r\n        if (beginPageIndex < 0) {\r\n            result = that._pageIndex\r\n        } else {\r\n            if (!that._cache[that._pageIndex - beginPageIndex]) {\r\n                result = that._pageIndex\r\n            } else {\r\n                if (beginPageIndex >= 0 && that._viewportSize >= 0) {\r\n                    if (beginPageIndex > 0) {\r\n                        var needToLoadPageBeforeLast = getEndPageIndex(that) + 1 === dataSource.pageCount() && that._cache.length < getPreloadPageCount(that) + 1;\r\n                        var needToLoadPrevPage = needToLoadPageBeforeLast || that._pageIndex === beginPageIndex && getPreloadPageCount(that, true);\r\n                        if (needToLoadPrevPage) {\r\n                            result = beginPageIndex - 1\r\n                        }\r\n                    }\r\n                    if (result < 0) {\r\n                        var needToLoadNextPage = beginPageIndex + that._cache.length <= that._pageIndex + getPreloadPageCount(that);\r\n                        if (needToLoadNextPage) {\r\n                            result = beginPageIndex + that._cache.length\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        if (that._loadingPageIndexes[result]) {\r\n            result = -1\r\n        }\r\n        return result\r\n    };\r\n\r\n    function getBeginPageIndex(that) {\r\n        return that._cache.length ? that._cache[0].pageIndex : -1\r\n    }\r\n\r\n    function getEndPageIndex(that) {\r\n        return that._cache.length ? that._cache[that._cache.length - 1].pageIndex : -1\r\n    }\r\n    var fireChanged = function(that, changed, args) {\r\n        that._isChangedFiring = true;\r\n        changed(args);\r\n        that._isChangedFiring = false\r\n    };\r\n    var processDelayChanged = function(that, changed, args) {\r\n        if (that._isDelayChanged) {\r\n            that._isDelayChanged = false;\r\n            fireChanged(that, changed, args);\r\n            return true\r\n        }\r\n    };\r\n    var processChanged = function(that, changed, changeType, isDelayChanged, removeCacheItem) {\r\n        var dataSource = that._dataSource;\r\n        var items = dataSource.items().slice();\r\n        var change = (0, _type.isObject)(changeType) ? changeType : void 0;\r\n        var isPrepend = \"prepend\" === changeType;\r\n        var viewportItems = dataSource.viewportItems();\r\n        if (changeType && (0, _type.isString)(changeType) && !that._isDelayChanged) {\r\n            change = {\r\n                changeType: changeType,\r\n                items: items\r\n            };\r\n            if (removeCacheItem) {\r\n                change.removeCount = removeCacheItem.itemsCount;\r\n                if (change.removeCount && dataSource.correctCount) {\r\n                    change.removeCount = dataSource.correctCount(viewportItems, change.removeCount, isPrepend)\r\n                }\r\n            }\r\n        }\r\n        var removeItemCount = removeCacheItem ? removeCacheItem.itemsLength : 0;\r\n        if (removeItemCount && dataSource.correctCount) {\r\n            removeItemCount = dataSource.correctCount(viewportItems, removeItemCount, isPrepend)\r\n        }\r\n        if (\"append\" === changeType) {\r\n            viewportItems.push.apply(viewportItems, items);\r\n            if (removeCacheItem) {\r\n                viewportItems.splice(0, removeItemCount)\r\n            }\r\n        } else {\r\n            if (isPrepend) {\r\n                viewportItems.unshift.apply(viewportItems, items);\r\n                if (removeCacheItem) {\r\n                    viewportItems.splice(-removeItemCount)\r\n                }\r\n            } else {\r\n                that._dataSource.viewportItems(items)\r\n            }\r\n        }\r\n        dataSource.updateLoading();\r\n        that._lastPageIndex = that.pageIndex();\r\n        that._isDelayChanged = isDelayChanged;\r\n        if (!isDelayChanged) {\r\n            fireChanged(that, changed, change)\r\n        }\r\n    };\r\n    var loadCore = function(that, pageIndex) {\r\n        var dataSource = that._dataSource;\r\n        if (pageIndex === that.pageIndex() || !dataSource.isLoading() && pageIndex < dataSource.pageCount() || !dataSource.hasKnownLastPage() && pageIndex === dataSource.pageCount()) {\r\n            dataSource.pageIndex(pageIndex);\r\n            that._loadingPageIndexes[pageIndex] = true;\r\n            return (0, _deferred.when)(dataSource.load()).always(function() {\r\n                that._loadingPageIndexes[pageIndex] = false\r\n            })\r\n        }\r\n    };\r\n    return {\r\n        ctor: function(component, dataSource, isVirtual) {\r\n            var that = this;\r\n            that._dataSource = dataSource;\r\n            that.component = component;\r\n            that._pageIndex = that._lastPageIndex = dataSource.pageIndex();\r\n            that._viewportSize = 0;\r\n            that._viewportItemSize = 20;\r\n            that._viewportItemIndex = -1;\r\n            that._itemSizes = {};\r\n            that._sizeRatio = 1;\r\n            that._items = [];\r\n            that._cache = [];\r\n            that._isVirtual = isVirtual;\r\n            that._loadingPageIndexes = {};\r\n            that.positionChanged = (0, _callbacks.default)()\r\n        },\r\n        getItemSizes: function() {\r\n            return this._itemSizes\r\n        },\r\n        option: function() {\r\n            return this.component.option.apply(this.component, arguments)\r\n        },\r\n        virtualItemsCount: function() {\r\n            var that = this;\r\n            var pageIndex;\r\n            var itemsCount = 0;\r\n            if (isVirtualMode(that)) {\r\n                pageIndex = getBeginPageIndex(that);\r\n                if (pageIndex < 0) {\r\n                    pageIndex = that._dataSource.pageIndex()\r\n                }\r\n                var beginItemsCount = pageIndex * that._dataSource.pageSize();\r\n                itemsCount = that._cache.length * that._dataSource.pageSize();\r\n                var endItemsCount = Math.max(0, that._dataSource.totalItemsCount() - itemsCount - beginItemsCount);\r\n                return {\r\n                    begin: beginItemsCount,\r\n                    end: endItemsCount\r\n                }\r\n            }\r\n        },\r\n        setViewportPosition: function(position) {\r\n            var that = this;\r\n            var result = new _deferred.Deferred;\r\n            var scrollingTimeout = Math.min(that.option(\"scrolling.timeout\") || 0, that._dataSource.changingDuration());\r\n            if (scrollingTimeout < that.option(\"scrolling.renderingThreshold\")) {\r\n                scrollingTimeout = that.option(\"scrolling.minTimeout\") || 0\r\n            }\r\n            clearTimeout(that._scrollTimeoutID);\r\n            if (scrollingTimeout > 0) {\r\n                that._scrollTimeoutID = setTimeout(function() {\r\n                    that._setViewportPositionCore(position);\r\n                    result.resolve()\r\n                }, scrollingTimeout)\r\n            } else {\r\n                that._setViewportPositionCore(position);\r\n                result.resolve()\r\n            }\r\n            return result.promise()\r\n        },\r\n        getViewportPosition: function() {\r\n            return this._position || 0\r\n        },\r\n        getItemIndexByPosition: function() {\r\n            var that = this;\r\n            var position = that._position;\r\n            var defaultItemSize = that.getItemSize();\r\n            var offset = 0;\r\n            var itemOffset = 0;\r\n            var itemOffsetsWithSize = Object.keys(that._itemSizes).concat(-1);\r\n            for (var i = 0; i < itemOffsetsWithSize.length && offset < position; i++) {\r\n                var itemOffsetWithSize = parseInt(itemOffsetsWithSize[i]);\r\n                var itemOffsetDiff = (position - offset) / defaultItemSize;\r\n                if (itemOffsetWithSize < 0 || itemOffset + itemOffsetDiff < itemOffsetWithSize) {\r\n                    itemOffset += itemOffsetDiff;\r\n                    break\r\n                } else {\r\n                    itemOffsetDiff = itemOffsetWithSize - itemOffset;\r\n                    offset += itemOffsetDiff * defaultItemSize;\r\n                    itemOffset += itemOffsetDiff\r\n                }\r\n                var itemSize = that._itemSizes[itemOffsetWithSize];\r\n                offset += itemSize;\r\n                itemOffset += offset < position ? 1 : (position - offset + itemSize) / itemSize\r\n            }\r\n            return Math.round(50 * itemOffset) / 50\r\n        },\r\n        _setViewportPositionCore: function(position) {\r\n            this._position = position;\r\n            var itemIndex = this.getItemIndexByPosition();\r\n            var result = this.setViewportItemIndex(itemIndex);\r\n            this.positionChanged.fire();\r\n            return result\r\n        },\r\n        setContentSize: function(size) {\r\n            var that = this;\r\n            var sizes = Array.isArray(size) && size;\r\n            var virtualItemsCount = that.virtualItemsCount();\r\n            if (sizes) {\r\n                size = sizes.reduce(function(a, b) {\r\n                    return a + b\r\n                }, 0)\r\n            }\r\n            that._contentSize = size;\r\n            if (virtualItemsCount) {\r\n                if (sizes) {\r\n                    sizes.forEach(function(size, index) {\r\n                        that._itemSizes[virtualItemsCount.begin + index] = size\r\n                    })\r\n                }\r\n                var virtualContentSize = (virtualItemsCount.begin + virtualItemsCount.end + that.itemsCount()) * that._viewportItemSize;\r\n                var contentHeightLimit = getContentHeightLimit(_browser.default);\r\n                if (virtualContentSize > contentHeightLimit) {\r\n                    that._sizeRatio = contentHeightLimit / virtualContentSize\r\n                } else {\r\n                    that._sizeRatio = 1\r\n                }\r\n            }\r\n        },\r\n        getItemSize: function() {\r\n            return this._viewportItemSize * this._sizeRatio\r\n        },\r\n        getItemOffset: function(itemIndex, isEnd) {\r\n            var that = this;\r\n            var virtualItemsCount = that.virtualItemsCount();\r\n            var itemCount = itemIndex;\r\n            if (!virtualItemsCount) {\r\n                return 0\r\n            }\r\n            var offset = 0;\r\n            var totalItemsCount = that._dataSource.totalItemsCount();\r\n            Object.keys(that._itemSizes).forEach(function(currentItemIndex) {\r\n                if (!itemCount) {\r\n                    return\r\n                }\r\n                if (isEnd ? currentItemIndex >= totalItemsCount - itemIndex : currentItemIndex < itemIndex) {\r\n                    offset += that._itemSizes[currentItemIndex];\r\n                    itemCount--\r\n                }\r\n            });\r\n            return Math.floor(offset + itemCount * that._viewportItemSize * that._sizeRatio)\r\n        },\r\n        getContentOffset: function(type) {\r\n            var isEnd = \"end\" === type;\r\n            var virtualItemsCount = this.virtualItemsCount();\r\n            if (!virtualItemsCount) {\r\n                return 0\r\n            }\r\n            return this.getItemOffset(isEnd ? virtualItemsCount.end : virtualItemsCount.begin, isEnd)\r\n        },\r\n        getVirtualContentSize: function() {\r\n            var that = this;\r\n            var virtualItemsCount = that.virtualItemsCount();\r\n            return virtualItemsCount ? that.getContentOffset(\"begin\") + that.getContentOffset(\"end\") + that._contentSize : 0\r\n        },\r\n        getViewportItemIndex: function() {\r\n            return this._viewportItemIndex\r\n        },\r\n        setViewportItemIndex: function(itemIndex) {\r\n            var that = this;\r\n            var pageSize = that._dataSource.pageSize();\r\n            var pageCount = that._dataSource.pageCount();\r\n            var virtualMode = isVirtualMode(that);\r\n            var appendMode = isAppendMode(that);\r\n            var totalItemsCount = that._dataSource.totalItemsCount();\r\n            var newPageIndex;\r\n            that._viewportItemIndex = itemIndex;\r\n            if (pageSize && (virtualMode || appendMode) && totalItemsCount >= 0) {\r\n                if (that._viewportSize && itemIndex + that._viewportSize >= totalItemsCount && !that._isVirtual) {\r\n                    if (that._dataSource.hasKnownLastPage()) {\r\n                        newPageIndex = pageCount - 1;\r\n                        var lastPageSize = totalItemsCount % pageSize;\r\n                        if (newPageIndex > 0 && lastPageSize > 0 && lastPageSize < that._viewportSize) {\r\n                            newPageIndex--\r\n                        }\r\n                    } else {\r\n                        newPageIndex = pageCount\r\n                    }\r\n                } else {\r\n                    newPageIndex = Math.floor(itemIndex / pageSize);\r\n                    var maxPageIndex = pageCount - 1;\r\n                    newPageIndex = Math.max(newPageIndex, 0);\r\n                    newPageIndex = Math.min(newPageIndex, maxPageIndex)\r\n                }\r\n                that.pageIndex(newPageIndex);\r\n                return that.load()\r\n            }\r\n        },\r\n        viewportItemSize: function(size) {\r\n            if (void 0 !== size) {\r\n                this._viewportItemSize = size\r\n            }\r\n            return this._viewportItemSize\r\n        },\r\n        viewportSize: function(size) {\r\n            if (void 0 !== size) {\r\n                this._viewportSize = size\r\n            }\r\n            return this._viewportSize\r\n        },\r\n        pageIndex: function(_pageIndex) {\r\n            if (isVirtualMode(this) || isAppendMode(this)) {\r\n                if (void 0 !== _pageIndex) {\r\n                    this._pageIndex = _pageIndex\r\n                }\r\n                return this._pageIndex\r\n            } else {\r\n                return this._dataSource.pageIndex(_pageIndex)\r\n            }\r\n        },\r\n        beginPageIndex: function beginPageIndex(defaultPageIndex) {\r\n            var beginPageIndex = getBeginPageIndex(this);\r\n            if (beginPageIndex < 0) {\r\n                beginPageIndex = void 0 !== defaultPageIndex ? defaultPageIndex : this.pageIndex()\r\n            }\r\n            return beginPageIndex\r\n        },\r\n        endPageIndex: function endPageIndex() {\r\n            var endPageIndex = getEndPageIndex(this);\r\n            return endPageIndex > 0 ? endPageIndex : this._lastPageIndex\r\n        },\r\n        pageSize: function() {\r\n            return this._dataSource.pageSize()\r\n        },\r\n        load: function() {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var result;\r\n            if (isVirtualMode(that) || isAppendMode(that)) {\r\n                var pageIndexForLoad = getPageIndexForLoad(that);\r\n                if (pageIndexForLoad >= 0) {\r\n                    var loadResult = loadCore(that, pageIndexForLoad);\r\n                    if (loadResult) {\r\n                        result = new _deferred.Deferred;\r\n                        loadResult.done(function() {\r\n                            var delayDeferred = that._delayDeferred;\r\n                            if (delayDeferred) {\r\n                                delayDeferred.done(result.resolve).fail(result.reject)\r\n                            } else {\r\n                                result.resolve()\r\n                            }\r\n                        }).fail(result.reject);\r\n                        dataSource.updateLoading()\r\n                    }\r\n                }\r\n            } else {\r\n                result = dataSource.load()\r\n            }\r\n            if (!result && that._lastPageIndex !== that.pageIndex()) {\r\n                that._dataSource.onChanged({\r\n                    changeType: \"pageIndex\"\r\n                })\r\n            }\r\n            return result || (new _deferred.Deferred).resolve()\r\n        },\r\n        loadIfNeed: function() {\r\n            var that = this;\r\n            if ((isVirtualMode(that) || isAppendMode(that)) && !that._dataSource.isLoading() && (!that._isChangedFiring || that._isVirtual)) {\r\n                var position = that.getViewportPosition();\r\n                if (position > 0) {\r\n                    that._setViewportPositionCore(position)\r\n                } else {\r\n                    that.load()\r\n                }\r\n            }\r\n        },\r\n        handleDataChanged: function(callBase, e) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var lastCacheLength = that._cache.length;\r\n            var changeType;\r\n            var removeInvisiblePages;\r\n            if (e && e.changes) {\r\n                fireChanged(that, callBase, e)\r\n            } else {\r\n                if (isVirtualMode(that) || isAppendMode(that)) {\r\n                    var beginPageIndex = getBeginPageIndex(that);\r\n                    if (beginPageIndex >= 0) {\r\n                        if (isVirtualMode(that) && beginPageIndex + that._cache.length !== dataSource.pageIndex() && beginPageIndex - 1 !== dataSource.pageIndex()) {\r\n                            lastCacheLength = 0;\r\n                            that._cache = []\r\n                        }\r\n                        if (isAppendMode(that)) {\r\n                            if (0 === dataSource.pageIndex()) {\r\n                                that._cache = []\r\n                            } else {\r\n                                if (dataSource.pageIndex() < getEndPageIndex(that)) {\r\n                                    fireChanged(that, callBase, {\r\n                                        changeType: \"append\",\r\n                                        items: []\r\n                                    });\r\n                                    return\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    var cacheItem = {\r\n                        pageIndex: dataSource.pageIndex(),\r\n                        itemsLength: dataSource.items(true).length,\r\n                        itemsCount: that.itemsCount(true)\r\n                    };\r\n                    if (!that.option(\"legacyRendering\") && that.option(\"scrolling.removeInvisiblePages\") && isVirtualMode(that)) {\r\n                        removeInvisiblePages = that._cache.length > Math.max(getPreloadPageCount(this) + (that.option(\"scrolling.preloadEnabled\") ? 1 : 0), 2)\r\n                    } else {\r\n                        processDelayChanged(that, callBase, {\r\n                            isDelayed: true\r\n                        })\r\n                    }\r\n                    var removeCacheItem;\r\n                    if (beginPageIndex === dataSource.pageIndex() + 1) {\r\n                        if (removeInvisiblePages) {\r\n                            removeCacheItem = that._cache.pop()\r\n                        }\r\n                        changeType = \"prepend\";\r\n                        that._cache.unshift(cacheItem)\r\n                    } else {\r\n                        if (removeInvisiblePages) {\r\n                            removeCacheItem = that._cache.shift()\r\n                        }\r\n                        changeType = \"append\";\r\n                        that._cache.push(cacheItem)\r\n                    }\r\n                    var isDelayChanged = isVirtualMode(that) && 0 === lastCacheLength && needTwoPagesLoading(that);\r\n                    processChanged(that, callBase, that._cache.length > 1 ? changeType : void 0, isDelayChanged, removeCacheItem);\r\n                    that._delayDeferred = that.load().done(function() {\r\n                        if (processDelayChanged(that, callBase)) {\r\n                            that.load()\r\n                        }\r\n                    })\r\n                } else {\r\n                    processChanged(that, callBase, e)\r\n                }\r\n            }\r\n        },\r\n        itemsCount: function itemsCount(isBase) {\r\n            var itemsCount = 0;\r\n            if (!isBase && isVirtualMode(this)) {\r\n                (0, _iterator.each)(this._cache, function() {\r\n                    itemsCount += this.itemsCount\r\n                })\r\n            } else {\r\n                itemsCount = this._dataSource.itemsCount()\r\n            }\r\n            return itemsCount\r\n        },\r\n        reset: function(isRefresh) {\r\n            this._loadingPageIndexes = {};\r\n            this._cache = [];\r\n            if (!isRefresh) {\r\n                this._itemSizes = {}\r\n            }\r\n        },\r\n        subscribeToWindowScrollEvents: function($element) {\r\n            var that = this;\r\n            that._windowScroll = that._windowScroll || subscribeToExternalScrollers($element, function(scrollTop) {\r\n                if (that.viewportItemSize()) {\r\n                    that.setViewportPosition(scrollTop)\r\n                }\r\n            })\r\n        },\r\n        dispose: function() {\r\n            clearTimeout(this._scrollTimeoutID);\r\n            this._windowScroll && this._windowScroll.dispose();\r\n            this._windowScroll = null\r\n        },\r\n        scrollTo: function(pos) {\r\n            this._windowScroll && this._windowScroll.scrollTo(pos)\r\n        }\r\n    }\r\n}());\r\nexports.VirtualScrollController = VirtualScrollController;\r\n","/**\r\n * DevExtreme (ui/scheduler/appointmentDragBehavior.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _draggable = _interopRequireDefault(require(\"../draggable\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _constants = require(\"./constants\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar APPOINTMENT_ITEM_CLASS = \"dx-scheduler-appointment\";\r\nvar AppointmentDragBehavior = function() {\r\n    function AppointmentDragBehavior(scheduler) {\r\n        _classCallCheck(this, AppointmentDragBehavior);\r\n        this.scheduler = scheduler;\r\n        this.appointments = scheduler._appointments;\r\n        this.initialPosition = {\r\n            left: 0,\r\n            top: 0\r\n        };\r\n        this.currentAppointment = null\r\n    }\r\n    _createClass(AppointmentDragBehavior, [{\r\n        key: \"isAllDay\",\r\n        value: function(appointment) {\r\n            return appointment.data(\"dxAppointmentSettings\").allDay\r\n        }\r\n    }, {\r\n        key: \"onDragStart\",\r\n        value: function(e) {\r\n            this.initialPosition = (0, _translator.locate)((0, _renderer.default)(e.itemElement));\r\n            this.appointments.notifyObserver(\"hideAppointmentTooltip\")\r\n        }\r\n    }, {\r\n        key: \"onDragMove\",\r\n        value: function(e) {\r\n            if (e.fromComponent !== e.toComponent) {\r\n                this.appointments.notifyObserver(\"removeDroppableCellClass\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getAppointmentElement\",\r\n        value: function(e) {\r\n            var itemElement = e.event.data && e.event.data.itemElement || e.itemElement;\r\n            return (0, _renderer.default)(itemElement)\r\n        }\r\n    }, {\r\n        key: \"onDragEnd\",\r\n        value: function(e) {\r\n            var $appointment = this.getAppointmentElement(e);\r\n            var container = this.appointments._getAppointmentContainer(this.isAllDay($appointment));\r\n            container.append($appointment);\r\n            this.currentAppointment = $appointment;\r\n            this.appointments.notifyObserver(\"updateAppointmentAfterDrag\", {\r\n                event: e,\r\n                data: this.appointments._getItemData($appointment),\r\n                $appointment: $appointment,\r\n                coordinates: this.initialPosition\r\n            })\r\n        }\r\n    }, {\r\n        key: \"getItemData\",\r\n        value: function(appointmentElement) {\r\n            var dataFromTooltip = (0, _renderer.default)(appointmentElement).data(_constants.LIST_ITEM_DATA_KEY);\r\n            var itemDataFromTooltip = null === dataFromTooltip || void 0 === dataFromTooltip ? void 0 : dataFromTooltip.appointment;\r\n            var itemDataFromGrid = this.appointments._getItemData(appointmentElement);\r\n            return itemDataFromTooltip || itemDataFromGrid\r\n        }\r\n    }, {\r\n        key: \"getItemSettings\",\r\n        value: function(appointment) {\r\n            var itemData = (0, _renderer.default)(appointment).data(_constants.LIST_ITEM_DATA_KEY);\r\n            return itemData && itemData.settings || []\r\n        }\r\n    }, {\r\n        key: \"createDragStartHandler\",\r\n        value: function(options, appointmentDragging) {\r\n            var _this = this;\r\n            return function(e) {\r\n                e.itemData = _this.getItemData(e.itemElement);\r\n                e.itemSettings = _this.getItemSettings(e.itemElement);\r\n                appointmentDragging.onDragStart && appointmentDragging.onDragStart(e);\r\n                if (!e.cancel) {\r\n                    options.onDragStart(e)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"createDragMoveHandler\",\r\n        value: function(options, appointmentDragging) {\r\n            return function(e) {\r\n                appointmentDragging.onDragMove && appointmentDragging.onDragMove(e);\r\n                if (!e.cancel) {\r\n                    options.onDragMove(e)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"createDragEndHandler\",\r\n        value: function(options, appointmentDragging) {\r\n            return function(e) {\r\n                appointmentDragging.onDragEnd && appointmentDragging.onDragEnd(e);\r\n                if (!e.cancel) {\r\n                    options.onDragEnd(e);\r\n                    if (e.fromComponent !== e.toComponent) {\r\n                        appointmentDragging.onRemove && appointmentDragging.onRemove(e)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"createDropHandler\",\r\n        value: function(appointmentDragging) {\r\n            var _this2 = this;\r\n            return function(e) {\r\n                var rawAppointment = (0, _extend.extend)({}, e.itemData, _this2.appointments.invoke(\"getUpdatedData\", {\r\n                    data: e.itemData\r\n                }));\r\n                e.itemData = _this2.scheduler.createAppointmentAdapter(rawAppointment).clone({\r\n                    pathTimeZone: \"fromGrid\"\r\n                }).source();\r\n                if (e.fromComponent !== e.toComponent) {\r\n                    appointmentDragging.onAdd && appointmentDragging.onAdd(e)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"addTo\",\r\n        value: function(container, config) {\r\n            var appointmentDragging = this.scheduler.option(\"appointmentDragging\") || {};\r\n            var options = (0, _extend.extend)({\r\n                component: this.scheduler,\r\n                contentTemplate: null,\r\n                filter: \".\".concat(APPOINTMENT_ITEM_CLASS),\r\n                immediate: false,\r\n                onDragStart: this.onDragStart.bind(this),\r\n                onDragMove: this.onDragMove.bind(this),\r\n                onDragEnd: this.onDragEnd.bind(this)\r\n            }, config);\r\n            this.appointments._createComponent(container, _draggable.default, (0, _extend.extend)({}, options, appointmentDragging, {\r\n                onDragStart: this.createDragStartHandler(options, appointmentDragging),\r\n                onDragMove: this.createDragMoveHandler(options, appointmentDragging),\r\n                onDragEnd: this.createDragEndHandler(options, appointmentDragging),\r\n                onDrop: this.createDropHandler(appointmentDragging)\r\n            }))\r\n        }\r\n    }, {\r\n        key: \"moveBack\",\r\n        value: function() {\r\n            if (this.currentAppointment && void 0 !== this.initialPosition.left && void 0 !== this.initialPosition.top) {\r\n                (0, _translator.move)(this.currentAppointment, this.initialPosition)\r\n            }\r\n        }\r\n    }]);\r\n    return AppointmentDragBehavior\r\n}();\r\nexports.default = AppointmentDragBehavior;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/drag.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.drop = exports.leave = exports.enter = exports.end = exports.start = exports.move = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _element_data = require(\"../core/element_data\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar iteratorUtils = _interopRequireWildcard(require(\"../core/utils/iterator\"));\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _event_registrator = _interopRequireDefault(require(\"./core/event_registrator\"));\r\nvar _index = require(\"./utils/index\");\r\nvar _emitter = _interopRequireDefault(require(\"./gesture/emitter.gesture\"));\r\nvar _emitter_registrator = _interopRequireDefault(require(\"./core/emitter_registrator\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DRAG_START_EVENT = \"dxdragstart\";\r\nexports.start = DRAG_START_EVENT;\r\nvar DRAG_EVENT = \"dxdrag\";\r\nexports.move = DRAG_EVENT;\r\nvar DRAG_END_EVENT = \"dxdragend\";\r\nexports.end = DRAG_END_EVENT;\r\nvar DRAG_ENTER_EVENT = \"dxdragenter\";\r\nexports.enter = DRAG_ENTER_EVENT;\r\nvar DRAG_LEAVE_EVENT = \"dxdragleave\";\r\nexports.leave = DRAG_LEAVE_EVENT;\r\nvar DROP_EVENT = \"dxdrop\";\r\nexports.drop = DROP_EVENT;\r\nvar DX_DRAG_EVENTS_COUNT_KEY = \"dxDragEventsCount\";\r\nvar knownDropTargets = [];\r\nvar knownDropTargetSelectors = [];\r\nvar knownDropTargetConfigs = [];\r\nvar dropTargetRegistration = {\r\n    setup: function(element, data) {\r\n        var knownDropTarget = (0, _array.inArray)(element, knownDropTargets) !== -1;\r\n        if (!knownDropTarget) {\r\n            knownDropTargets.push(element);\r\n            knownDropTargetSelectors.push([]);\r\n            knownDropTargetConfigs.push(data || {})\r\n        }\r\n    },\r\n    add: function(element, handleObj) {\r\n        var index = (0, _array.inArray)(element, knownDropTargets);\r\n        this.updateEventsCounter(element, handleObj.type, 1);\r\n        var selector = handleObj.selector;\r\n        if ((0, _array.inArray)(selector, knownDropTargetSelectors[index]) === -1) {\r\n            knownDropTargetSelectors[index].push(selector)\r\n        }\r\n    },\r\n    updateEventsCounter: function(element, event, value) {\r\n        if ([DRAG_ENTER_EVENT, DRAG_LEAVE_EVENT, DROP_EVENT].indexOf(event) > -1) {\r\n            var eventsCount = (0, _element_data.data)(element, DX_DRAG_EVENTS_COUNT_KEY) || 0;\r\n            (0, _element_data.data)(element, DX_DRAG_EVENTS_COUNT_KEY, Math.max(0, eventsCount + value))\r\n        }\r\n    },\r\n    remove: function(element, handleObj) {\r\n        this.updateEventsCounter(element, handleObj.type, -1)\r\n    },\r\n    teardown: function(element) {\r\n        var handlersCount = (0, _element_data.data)(element, DX_DRAG_EVENTS_COUNT_KEY);\r\n        if (!handlersCount) {\r\n            var index = (0, _array.inArray)(element, knownDropTargets);\r\n            knownDropTargets.splice(index, 1);\r\n            knownDropTargetSelectors.splice(index, 1);\r\n            knownDropTargetConfigs.splice(index, 1);\r\n            (0, _element_data.removeData)(element, DX_DRAG_EVENTS_COUNT_KEY)\r\n        }\r\n    }\r\n};\r\n(0, _event_registrator.default)(DRAG_ENTER_EVENT, dropTargetRegistration);\r\n(0, _event_registrator.default)(DRAG_LEAVE_EVENT, dropTargetRegistration);\r\n(0, _event_registrator.default)(DROP_EVENT, dropTargetRegistration);\r\nvar getItemDelegatedTargets = function($element) {\r\n    var dropTargetIndex = (0, _array.inArray)($element.get(0), knownDropTargets);\r\n    var dropTargetSelectors = knownDropTargetSelectors[dropTargetIndex].filter(function(selector) {\r\n        return selector\r\n    });\r\n    var $delegatedTargets = $element.find(dropTargetSelectors.join(\", \"));\r\n    if ((0, _array.inArray)(void 0, knownDropTargetSelectors[dropTargetIndex]) !== -1) {\r\n        $delegatedTargets = $delegatedTargets.add($element)\r\n    }\r\n    return $delegatedTargets\r\n};\r\nvar getItemConfig = function($element) {\r\n    var dropTargetIndex = (0, _array.inArray)($element.get(0), knownDropTargets);\r\n    return knownDropTargetConfigs[dropTargetIndex]\r\n};\r\nvar getItemPosition = function(dropTargetConfig, $element) {\r\n    if (dropTargetConfig.itemPositionFunc) {\r\n        return dropTargetConfig.itemPositionFunc($element)\r\n    } else {\r\n        return $element.offset()\r\n    }\r\n};\r\nvar getItemSize = function(dropTargetConfig, $element) {\r\n    if (dropTargetConfig.itemSizeFunc) {\r\n        return dropTargetConfig.itemSizeFunc($element)\r\n    }\r\n    return {\r\n        width: $element.get(0).getBoundingClientRect().width,\r\n        height: $element.get(0).getBoundingClientRect().height\r\n    }\r\n};\r\nvar DragEmitter = _emitter.default.inherit({\r\n    ctor: function(element) {\r\n        this.callBase(element);\r\n        this.direction = \"both\"\r\n    },\r\n    _init: function(e) {\r\n        this._initEvent = e\r\n    },\r\n    _start: function(e) {\r\n        e = this._fireEvent(DRAG_START_EVENT, this._initEvent);\r\n        this._maxLeftOffset = e.maxLeftOffset;\r\n        this._maxRightOffset = e.maxRightOffset;\r\n        this._maxTopOffset = e.maxTopOffset;\r\n        this._maxBottomOffset = e.maxBottomOffset;\r\n        var dropTargets = (0, _array.wrapToArray)(e.targetElements || (null === e.targetElements ? [] : knownDropTargets));\r\n        this._dropTargets = iteratorUtils.map(dropTargets, function(element) {\r\n            return (0, _renderer.default)(element).get(0)\r\n        })\r\n    },\r\n    _move: function(e) {\r\n        var eventData = (0, _index.eventData)(e);\r\n        var dragOffset = this._calculateOffset(eventData);\r\n        e = this._fireEvent(DRAG_EVENT, e, {\r\n            offset: dragOffset\r\n        });\r\n        this._processDropTargets(e);\r\n        if (!e._cancelPreventDefault) {\r\n            e.preventDefault()\r\n        }\r\n    },\r\n    _calculateOffset: function(eventData) {\r\n        return {\r\n            x: this._calculateXOffset(eventData),\r\n            y: this._calculateYOffset(eventData)\r\n        }\r\n    },\r\n    _calculateXOffset: function(eventData) {\r\n        if (\"vertical\" !== this.direction) {\r\n            var offset = eventData.x - this._startEventData.x;\r\n            return this._fitOffset(offset, this._maxLeftOffset, this._maxRightOffset)\r\n        }\r\n        return 0\r\n    },\r\n    _calculateYOffset: function(eventData) {\r\n        if (\"horizontal\" !== this.direction) {\r\n            var offset = eventData.y - this._startEventData.y;\r\n            return this._fitOffset(offset, this._maxTopOffset, this._maxBottomOffset)\r\n        }\r\n        return 0\r\n    },\r\n    _fitOffset: function(offset, minOffset, maxOffset) {\r\n        if (null != minOffset) {\r\n            offset = Math.max(offset, -minOffset)\r\n        }\r\n        if (null != maxOffset) {\r\n            offset = Math.min(offset, maxOffset)\r\n        }\r\n        return offset\r\n    },\r\n    _processDropTargets: function(e) {\r\n        var target = this._findDropTarget(e);\r\n        var sameTarget = target === this._currentDropTarget;\r\n        if (!sameTarget) {\r\n            this._fireDropTargetEvent(e, DRAG_LEAVE_EVENT);\r\n            this._currentDropTarget = target;\r\n            this._fireDropTargetEvent(e, DRAG_ENTER_EVENT)\r\n        }\r\n    },\r\n    _fireDropTargetEvent: function(event, eventName) {\r\n        if (!this._currentDropTarget) {\r\n            return\r\n        }\r\n        var eventData = {\r\n            type: eventName,\r\n            originalEvent: event,\r\n            draggingElement: this._$element.get(0),\r\n            target: this._currentDropTarget\r\n        };\r\n        (0, _index.fireEvent)(eventData)\r\n    },\r\n    _findDropTarget: function(e) {\r\n        var that = this;\r\n        var result;\r\n        iteratorUtils.each(knownDropTargets, function(_, target) {\r\n            if (!that._checkDropTargetActive(target)) {\r\n                return\r\n            }\r\n            var $target = (0, _renderer.default)(target);\r\n            iteratorUtils.each(getItemDelegatedTargets($target), function(_, delegatedTarget) {\r\n                var $delegatedTarget = (0, _renderer.default)(delegatedTarget);\r\n                if (that._checkDropTarget(getItemConfig($target), $delegatedTarget, (0, _renderer.default)(result), e)) {\r\n                    result = delegatedTarget\r\n                }\r\n            })\r\n        });\r\n        return result\r\n    },\r\n    _checkDropTargetActive: function(target) {\r\n        var active = false;\r\n        iteratorUtils.each(this._dropTargets, function(_, activeTarget) {\r\n            active = active || activeTarget === target || (0, _dom.contains)(activeTarget, target);\r\n            return !active\r\n        });\r\n        return active\r\n    },\r\n    _checkDropTarget: function(config, $target, $prevTarget, e) {\r\n        var isDraggingElement = $target.get(0) === (0, _renderer.default)(e.target).get(0);\r\n        if (isDraggingElement) {\r\n            return false\r\n        }\r\n        var targetPosition = getItemPosition(config, $target);\r\n        if (e.pageX < targetPosition.left) {\r\n            return false\r\n        }\r\n        if (e.pageY < targetPosition.top) {\r\n            return false\r\n        }\r\n        var targetSize = getItemSize(config, $target);\r\n        if (e.pageX > targetPosition.left + targetSize.width) {\r\n            return false\r\n        }\r\n        if (e.pageY > targetPosition.top + targetSize.height) {\r\n            return false\r\n        }\r\n        if ($prevTarget.length && $prevTarget.closest($target).length) {\r\n            return false\r\n        }\r\n        if (config.checkDropTarget && !config.checkDropTarget($target, e)) {\r\n            return false\r\n        }\r\n        return $target\r\n    },\r\n    _end: function(e) {\r\n        var eventData = (0, _index.eventData)(e);\r\n        this._fireEvent(DRAG_END_EVENT, e, {\r\n            offset: this._calculateOffset(eventData)\r\n        });\r\n        this._fireDropTargetEvent(e, DROP_EVENT);\r\n        delete this._currentDropTarget\r\n    }\r\n});\r\n(0, _emitter_registrator.default)({\r\n    emitter: DragEmitter,\r\n    events: [DRAG_START_EVENT, DRAG_EVENT, DRAG_END_EVENT]\r\n});\r\n","/**\r\n * DevExtreme (data/abstract_store.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _events_strategy = require(\"../core/events_strategy\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils\"));\r\nvar _data = require(\"../core/utils/data\");\r\nvar _store_helper = _interopRequireDefault(require(\"./store_helper\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _common = require(\"../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar queryByOptions = _store_helper.default.queryByOptions;\r\nvar storeImpl = {};\r\nvar Store = _class.default.inherit({\r\n    ctor: function(options) {\r\n        var that = this;\r\n        options = options || {};\r\n        this._eventsStrategy = new _events_strategy.EventsStrategy(this);\r\n        (0, _iterator.each)([\"onLoaded\", \"onLoading\", \"onInserted\", \"onInserting\", \"onUpdated\", \"onUpdating\", \"onPush\", \"onRemoved\", \"onRemoving\", \"onModified\", \"onModifying\"], function(_, optionName) {\r\n            if (optionName in options) {\r\n                that.on(optionName.slice(2).toLowerCase(), options[optionName])\r\n            }\r\n        });\r\n        this._key = options.key;\r\n        this._errorHandler = options.errorHandler;\r\n        this._useDefaultSearch = true\r\n    },\r\n    _customLoadOptions: function() {\r\n        return null\r\n    },\r\n    key: function() {\r\n        return this._key\r\n    },\r\n    keyOf: function(obj) {\r\n        if (!this._keyGetter) {\r\n            this._keyGetter = (0, _data.compileGetter)(this.key())\r\n        }\r\n        return this._keyGetter(obj)\r\n    },\r\n    _requireKey: function() {\r\n        if (!this.key()) {\r\n            throw _errors.default.errors.Error(\"E4005\")\r\n        }\r\n    },\r\n    load: function(options) {\r\n        var that = this;\r\n        options = options || {};\r\n        this._eventsStrategy.fireEvent(\"loading\", [options]);\r\n        return this._withLock(this._loadImpl(options)).done(function(result) {\r\n            that._eventsStrategy.fireEvent(\"loaded\", [result, options])\r\n        })\r\n    },\r\n    _loadImpl: function(options) {\r\n        return queryByOptions(this.createQuery(options), options).enumerate()\r\n    },\r\n    _withLock: function(task) {\r\n        var result = new _deferred.Deferred;\r\n        task.done(function() {\r\n            var that = this;\r\n            var args = arguments;\r\n            _utils.default.processRequestResultLock.promise().done(function() {\r\n                result.resolveWith(that, args)\r\n            })\r\n        }).fail(function() {\r\n            result.rejectWith(this, arguments)\r\n        });\r\n        return result\r\n    },\r\n    createQuery: abstract,\r\n    totalCount: function(options) {\r\n        return this._totalCountImpl(options)\r\n    },\r\n    _totalCountImpl: function(options) {\r\n        return queryByOptions(this.createQuery(options), options, true).count()\r\n    },\r\n    byKey: function(key, extraOptions) {\r\n        return this._addFailHandlers(this._withLock(this._byKeyImpl(key, extraOptions)))\r\n    },\r\n    _byKeyImpl: abstract,\r\n    insert: function(values) {\r\n        var that = this;\r\n        that._eventsStrategy.fireEvent(\"modifying\");\r\n        that._eventsStrategy.fireEvent(\"inserting\", [values]);\r\n        return that._addFailHandlers(that._insertImpl(values).done(function(callbackValues, callbackKey) {\r\n            that._eventsStrategy.fireEvent(\"inserted\", [callbackValues, callbackKey]);\r\n            that._eventsStrategy.fireEvent(\"modified\")\r\n        }))\r\n    },\r\n    _insertImpl: abstract,\r\n    update: function(key, values) {\r\n        var that = this;\r\n        that._eventsStrategy.fireEvent(\"modifying\");\r\n        that._eventsStrategy.fireEvent(\"updating\", [key, values]);\r\n        return that._addFailHandlers(that._updateImpl(key, values).done(function() {\r\n            that._eventsStrategy.fireEvent(\"updated\", [key, values]);\r\n            that._eventsStrategy.fireEvent(\"modified\")\r\n        }))\r\n    },\r\n    _updateImpl: abstract,\r\n    push: function(changes) {\r\n        this._pushImpl(changes);\r\n        this._eventsStrategy.fireEvent(\"push\", [changes])\r\n    },\r\n    _pushImpl: _common.noop,\r\n    remove: function(key) {\r\n        var that = this;\r\n        that._eventsStrategy.fireEvent(\"modifying\");\r\n        that._eventsStrategy.fireEvent(\"removing\", [key]);\r\n        return that._addFailHandlers(that._removeImpl(key).done(function(callbackKey) {\r\n            that._eventsStrategy.fireEvent(\"removed\", [callbackKey]);\r\n            that._eventsStrategy.fireEvent(\"modified\")\r\n        }))\r\n    },\r\n    _removeImpl: abstract,\r\n    _addFailHandlers: function(deferred) {\r\n        return deferred.fail(this._errorHandler).fail(_errors.default._errorHandler)\r\n    },\r\n    on: function(eventName, eventHandler) {\r\n        this._eventsStrategy.on(eventName, eventHandler);\r\n        return this\r\n    },\r\n    off: function(eventName, eventHandler) {\r\n        this._eventsStrategy.off(eventName, eventHandler);\r\n        return this\r\n    }\r\n});\r\nStore.create = function(alias, options) {\r\n    if (!(alias in storeImpl)) {\r\n        throw _errors.default.errors.Error(\"E4020\", alias)\r\n    }\r\n    return new storeImpl[alias](options)\r\n};\r\nStore.registerClass = function(type, alias) {\r\n    if (alias) {\r\n        storeImpl[alias] = type\r\n    }\r\n    return type\r\n};\r\nStore.inherit = function(inheritor) {\r\n    return function(members, alias) {\r\n        var type = inheritor.apply(this, [members]);\r\n        Store.registerClass(type, alias);\r\n        return type\r\n    }\r\n}(Store.inherit);\r\nvar _default = Store;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/map.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _promise = _interopRequireDefault(require(\"../core/polyfills/promise\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _ui2 = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _provider = _interopRequireDefault(require(\"./map/provider.google_static\"));\r\nvar _providerDynamic = _interopRequireDefault(require(\"./map/provider.dynamic.google\"));\r\nvar _providerDynamic2 = _interopRequireDefault(require(\"./map/provider.dynamic.bing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PROVIDERS = {\r\n    googleStatic: _provider.default,\r\n    google: _providerDynamic.default,\r\n    bing: _providerDynamic2.default\r\n};\r\nvar MAP_CLASS = \"dx-map\";\r\nvar MAP_CONTAINER_CLASS = \"dx-map-container\";\r\nvar MAP_SHIELD_CLASS = \"dx-map-shield\";\r\nvar NATIVE_CLICK_CLASS = \"dx-native-click\";\r\nvar Map = _ui2.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            bounds: {\r\n                northEast: null,\r\n                southWest: null\r\n            },\r\n            center: {\r\n                lat: 0,\r\n                lng: 0\r\n            },\r\n            zoom: 1,\r\n            width: 300,\r\n            height: 300,\r\n            type: \"roadmap\",\r\n            provider: \"google\",\r\n            autoAdjust: true,\r\n            markers: [],\r\n            markerIconSrc: null,\r\n            onMarkerAdded: null,\r\n            onMarkerRemoved: null,\r\n            routes: [],\r\n            onRouteAdded: null,\r\n            onRouteRemoved: null,\r\n            key: {\r\n                bing: \"\",\r\n                google: \"\",\r\n                googleStatic: \"\"\r\n            },\r\n            apiKey: {\r\n                bing: \"\",\r\n                google: \"\",\r\n                googleStatic: \"\"\r\n            },\r\n            controls: false,\r\n            onReady: null,\r\n            onUpdated: null,\r\n            onClick: null\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }])\r\n    },\r\n    _setDeprecatedOptions: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._deprecatedOptions, {\r\n            key: {\r\n                since: \"20.2\",\r\n                alias: \"apiKey\"\r\n            }\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(MAP_CLASS).addClass(NATIVE_CLICK_CLASS);\r\n        this._lastAsyncAction = _promise.default.resolve();\r\n        this._checkOption(\"provider\");\r\n        this._checkOption(\"markers\");\r\n        this._checkOption(\"routes\");\r\n        this._initContainer();\r\n        this._grabEvents();\r\n        this._rendered = {}\r\n    },\r\n    _checkOption: function(option) {\r\n        var value = this.option(option);\r\n        if (\"markers\" === option && !Array.isArray(value)) {\r\n            throw _ui.default.Error(\"E1022\")\r\n        }\r\n        if (\"routes\" === option && !Array.isArray(value)) {\r\n            throw _ui.default.Error(\"E1023\")\r\n        }\r\n    },\r\n    _initContainer: function() {\r\n        this._$container = (0, _renderer.default)(\"<div>\").addClass(MAP_CONTAINER_CLASS);\r\n        this.$element().append(this._$container)\r\n    },\r\n    _grabEvents: function() {\r\n        var eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n        _events_engine.default.on(this.$element(), eventName, this._cancelEvent.bind(this))\r\n    },\r\n    _cancelEvent: function(e) {\r\n        var cancelByProvider = this._provider && this._provider.isEventsCanceled(e) && !this.option(\"disabled\");\r\n        if (cancelByProvider) {\r\n            e.stopPropagation()\r\n        }\r\n    },\r\n    _saveRendered: function(option) {\r\n        var value = this.option(option);\r\n        this._rendered[option] = value.slice()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderShield();\r\n        this._saveRendered(\"markers\");\r\n        this._saveRendered(\"routes\");\r\n        this._provider = new(PROVIDERS[this.option(\"provider\")])(this, this._$container);\r\n        this._queueAsyncAction(\"render\", this._rendered.markers, this._rendered.routes)\r\n    },\r\n    _renderShield: function() {\r\n        var $shield;\r\n        if (this.option(\"disabled\")) {\r\n            $shield = (0, _renderer.default)(\"<div>\").addClass(MAP_SHIELD_CLASS);\r\n            this.$element().append($shield)\r\n        } else {\r\n            $shield = this.$element().find(\".\" + MAP_SHIELD_CLASS);\r\n            $shield.remove()\r\n        }\r\n    },\r\n    _clean: function() {\r\n        this._cleanFocusState();\r\n        if (this._provider) {\r\n            this._provider.clean()\r\n        }\r\n        this._provider = null;\r\n        this._lastAsyncAction = _promise.default.resolve();\r\n        this.setOptionSilent(\"bounds\", {\r\n            northEast: null,\r\n            southWest: null\r\n        });\r\n        delete this._suppressAsyncAction\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name;\r\n        var changeBag = this._optionChangeBag;\r\n        this._optionChangeBag = null;\r\n        switch (name) {\r\n            case \"disabled\":\r\n                this._renderShield();\r\n                this.callBase(args);\r\n                break;\r\n            case \"width\":\r\n            case \"height\":\r\n                this.callBase(args);\r\n                this._dimensionChanged();\r\n                break;\r\n            case \"provider\":\r\n                this._suppressAsyncAction = true;\r\n                this._invalidate();\r\n                break;\r\n            case \"key\":\r\n            case \"apiKey\":\r\n                _ui.default.log(\"W1001\");\r\n                break;\r\n            case \"bounds\":\r\n                this._queueAsyncAction(\"updateBounds\");\r\n                break;\r\n            case \"center\":\r\n                this._queueAsyncAction(\"updateCenter\");\r\n                break;\r\n            case \"zoom\":\r\n                this._queueAsyncAction(\"updateZoom\");\r\n                break;\r\n            case \"type\":\r\n                this._queueAsyncAction(\"updateMapType\");\r\n                break;\r\n            case \"controls\":\r\n                this._queueAsyncAction(\"updateControls\", this._rendered.markers, this._rendered.routes);\r\n                break;\r\n            case \"autoAdjust\":\r\n                this._queueAsyncAction(\"adjustViewport\");\r\n                break;\r\n            case \"markers\":\r\n            case \"routes\":\r\n                this._checkOption(name);\r\n                var prevValue = this._rendered[name];\r\n                this._saveRendered(name);\r\n                this._queueAsyncAction(\"update\" + (0, _inflector.titleize)(name), changeBag ? changeBag.removed : prevValue, changeBag ? changeBag.added : this._rendered[name]).then(function(result) {\r\n                    if (changeBag) {\r\n                        changeBag.resolve(result)\r\n                    }\r\n                });\r\n                break;\r\n            case \"markerIconSrc\":\r\n                this._queueAsyncAction(\"updateMarkers\", this._rendered.markers, this._rendered.markers);\r\n                break;\r\n            case \"onReady\":\r\n            case \"onUpdated\":\r\n            case \"onMarkerAdded\":\r\n            case \"onMarkerRemoved\":\r\n            case \"onRouteAdded\":\r\n            case \"onRouteRemoved\":\r\n            case \"onClick\":\r\n                break;\r\n            default:\r\n                this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._dimensionChanged()\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        this._queueAsyncAction(\"updateDimensions\")\r\n    },\r\n    _queueAsyncAction: function(name) {\r\n        var options = [].slice.call(arguments).slice(1);\r\n        var isActionSuppressed = this._suppressAsyncAction;\r\n        this._lastAsyncAction = this._lastAsyncAction.then(function() {\r\n            if (!this._provider || isActionSuppressed) {\r\n                return _promise.default.resolve()\r\n            }\r\n            return this._provider[name].apply(this._provider, options).then(function(result) {\r\n                result = (0, _array.wrapToArray)(result);\r\n                var mapRefreshed = result[0];\r\n                if (mapRefreshed && !this._disposed) {\r\n                    this._triggerReadyAction()\r\n                }\r\n                return result[1]\r\n            }.bind(this))\r\n        }.bind(this));\r\n        return this._lastAsyncAction\r\n    },\r\n    _triggerReadyAction: function() {\r\n        this._createActionByOption(\"onReady\")({\r\n            originalMap: this._provider.map()\r\n        })\r\n    },\r\n    _triggerUpdateAction: function() {\r\n        this._createActionByOption(\"onUpdated\")()\r\n    },\r\n    setOptionSilent: function(name, value) {\r\n        this._setOptionWithoutOptionChange(name, value)\r\n    },\r\n    addMarker: function(marker) {\r\n        return this._addFunction(\"markers\", marker)\r\n    },\r\n    removeMarker: function(marker) {\r\n        return this._removeFunction(\"markers\", marker)\r\n    },\r\n    addRoute: function(route) {\r\n        return this._addFunction(\"routes\", route)\r\n    },\r\n    removeRoute: function(route) {\r\n        return this._removeFunction(\"routes\", route)\r\n    },\r\n    _addFunction: function(optionName, addingValue) {\r\n        var optionValue = this.option(optionName);\r\n        var addingValues = (0, _array.wrapToArray)(addingValue);\r\n        optionValue.push.apply(optionValue, addingValues);\r\n        return this._partialArrayOptionChange(optionName, optionValue, addingValues, [])\r\n    },\r\n    _removeFunction: function(optionName, removingValue) {\r\n        var optionValue = this.option(optionName);\r\n        var removingValues = (0, _array.wrapToArray)(removingValue);\r\n        (0, _iterator.each)(removingValues, function(removingIndex, removingValue) {\r\n            var index = (0, _type.isNumeric)(removingValue) ? removingValue : (0, _array.inArray)(removingValue, optionValue);\r\n            if (index !== -1) {\r\n                var removing = optionValue.splice(index, 1)[0];\r\n                removingValues.splice(removingIndex, 1, removing)\r\n            } else {\r\n                throw _ui.default.log(\"E1021\", (0, _inflector.titleize)(optionName.substring(0, optionName.length - 1)), removingValue)\r\n            }\r\n        });\r\n        return this._partialArrayOptionChange(optionName, optionValue, [], removingValues)\r\n    },\r\n    _partialArrayOptionChange: function(optionName, optionValue, addingValues, removingValues) {\r\n        return (0, _deferred.fromPromise)(new _promise.default(function(resolve) {\r\n            this._optionChangeBag = {\r\n                resolve: resolve,\r\n                added: addingValues,\r\n                removed: removingValues\r\n            };\r\n            this.option(optionName, optionValue)\r\n        }.bind(this)).then(function(result) {\r\n            return result && 1 === result.length ? result[0] : result\r\n        }), this)\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxMap\", Map);\r\nvar _default = Map;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar dateComponents = function() {\r\n    return [\"year\", \"day\", \"month\", \"day\"]\r\n};\r\nvar ONE_MINUTE = 6e4;\r\nvar ONE_DAY = 60 * ONE_MINUTE * 24;\r\nvar ONE_YEAR = 365 * ONE_DAY;\r\nvar getStringFormat = function(format) {\r\n    var formatType = _typeof(format);\r\n    if (\"string\" === formatType) {\r\n        return \"format\"\r\n    }\r\n    if (\"object\" === formatType && void 0 !== format.type) {\r\n        return format.type\r\n    }\r\n    return null\r\n};\r\nvar dateUtils = {\r\n    SUPPORTED_FORMATS: [\"date\", \"time\", \"datetime\"],\r\n    DATE_COMPONENT_TEXT_FORMATTER: function(value, name) {\r\n        var $container = (0, _renderer.default)(\"<div>\").addClass(\"dx-dateview-formatter-container\");\r\n        (0, _renderer.default)(\"<span>\").text(value).addClass(\"dx-dateview-value-formatter\").appendTo($container);\r\n        (0, _renderer.default)(\"<span>\").text(name).addClass(\"dx-dateview-name-formatter\").appendTo($container);\r\n        return $container\r\n    },\r\n    ONE_MINUTE: ONE_MINUTE,\r\n    ONE_DAY: ONE_DAY,\r\n    ONE_YEAR: ONE_YEAR,\r\n    MIN_DATEVIEW_DEFAULT_DATE: new Date(1900, 0, 1),\r\n    MAX_DATEVIEW_DEFAULT_DATE: function() {\r\n        var newDate = new Date;\r\n        return new Date(newDate.getFullYear() + 50, newDate.getMonth(), newDate.getDate(), 23, 59, 59)\r\n    }(),\r\n    FORMATS_INFO: {\r\n        date: {\r\n            getStandardPattern: function() {\r\n                return \"yyyy-MM-dd\"\r\n            },\r\n            components: dateComponents()\r\n        },\r\n        time: {\r\n            getStandardPattern: function() {\r\n                return \"HH:mm\"\r\n            },\r\n            components: [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"]\r\n        },\r\n        datetime: {\r\n            getStandardPattern: function() {\r\n                var standardPattern;\r\n                ! function() {\r\n                    var androidFormatPattern = \"yyyy-MM-ddTHH:mmZ\";\r\n                    var testDateString = \"2000-01-01T01:01Z\";\r\n                    var $input = (0, _renderer.default)(\"<input>\").attr(\"type\", \"datetime\");\r\n                    $input.val(testDateString);\r\n                    if ($input.val()) {\r\n                        standardPattern = androidFormatPattern\r\n                    }\r\n                }();\r\n                if (!standardPattern) {\r\n                    standardPattern = \"yyyy-MM-ddTHH:mm:ssZ\"\r\n                }\r\n                dateUtils.FORMATS_INFO.datetime.getStandardPattern = function() {\r\n                    return standardPattern\r\n                };\r\n                return standardPattern\r\n            },\r\n            components: dateComponents().concat([\"hours\", \"minutes\", \"seconds\", \"milliseconds\"])\r\n        },\r\n        \"datetime-local\": {\r\n            getStandardPattern: function() {\r\n                return \"yyyy-MM-ddTHH:mm:ss\"\r\n            },\r\n            components: dateComponents().concat([\"hours\", \"minutes\", \"seconds\"])\r\n        }\r\n    },\r\n    FORMATS_MAP: {\r\n        date: \"shortdate\",\r\n        time: \"shorttime\",\r\n        datetime: \"shortdateshorttime\"\r\n    },\r\n    SUBMIT_FORMATS_MAP: {\r\n        date: \"date\",\r\n        time: \"time\",\r\n        datetime: \"datetime-local\"\r\n    },\r\n    toStandardDateFormat: function(date, type) {\r\n        var pattern = dateUtils.FORMATS_INFO[type].getStandardPattern();\r\n        return _date_serialization.default.serializeDate(date, pattern)\r\n    },\r\n    fromStandardDateFormat: function(text) {\r\n        var date = _date_serialization.default.dateParser(text);\r\n        return (0, _type.isDate)(date) ? date : void 0\r\n    },\r\n    getMaxMonthDay: function(year, month) {\r\n        return new Date(year, month + 1, 0).getDate()\r\n    },\r\n    mergeDates: function(oldValue, newValue, format) {\r\n        if (!newValue) {\r\n            return newValue || null\r\n        }\r\n        if (!oldValue || isNaN(oldValue.getTime())) {\r\n            var now = new Date(null);\r\n            oldValue = new Date(now.getFullYear(), now.getMonth(), now.getDate())\r\n        }\r\n        var result = new Date(oldValue.valueOf());\r\n        var formatInfo = dateUtils.FORMATS_INFO[format];\r\n        (0, _iterator.each)(formatInfo.components, function() {\r\n            var componentInfo = dateUtils.DATE_COMPONENTS_INFO[this];\r\n            result[componentInfo.setter](newValue[componentInfo.getter]())\r\n        });\r\n        return result\r\n    },\r\n    getLongestCaptionIndex: function(captionArray) {\r\n        var longestIndex = 0;\r\n        var longestCaptionLength = 0;\r\n        var i;\r\n        for (i = 0; i < captionArray.length; ++i) {\r\n            if (captionArray[i].length > longestCaptionLength) {\r\n                longestIndex = i;\r\n                longestCaptionLength = captionArray[i].length\r\n            }\r\n        }\r\n        return longestIndex\r\n    },\r\n    formatUsesMonthName: function(format) {\r\n        return _date.default.formatUsesMonthName(format)\r\n    },\r\n    formatUsesDayName: function(format) {\r\n        return _date.default.formatUsesDayName(format)\r\n    },\r\n    getLongestDate: function(format, monthNames, dayNames) {\r\n        var stringFormat = getStringFormat(format);\r\n        var month = 9;\r\n        if (!stringFormat || dateUtils.formatUsesMonthName(stringFormat)) {\r\n            month = dateUtils.getLongestCaptionIndex(monthNames)\r\n        }\r\n        var longestDate = new Date(1888, month, 21, 23, 59, 59, 999);\r\n        if (!stringFormat || dateUtils.formatUsesDayName(stringFormat)) {\r\n            var date = longestDate.getDate() - longestDate.getDay() + dateUtils.getLongestCaptionIndex(dayNames);\r\n            longestDate.setDate(date)\r\n        }\r\n        return longestDate\r\n    },\r\n    normalizeTime: function(date) {\r\n        date.setSeconds(0);\r\n        date.setMilliseconds(0)\r\n    }\r\n};\r\ndateUtils.DATE_COMPONENTS_INFO = {\r\n    year: {\r\n        getter: \"getFullYear\",\r\n        setter: \"setFullYear\",\r\n        formatter: function(value, date) {\r\n            var formatDate = new Date(date.getTime());\r\n            formatDate.setFullYear(value);\r\n            return _date.default.format(formatDate, \"yyyy\")\r\n        },\r\n        startValue: void 0,\r\n        endValue: void 0\r\n    },\r\n    day: {\r\n        getter: \"getDate\",\r\n        setter: \"setDate\",\r\n        formatter: function(value, date) {\r\n            var formatDate = new Date(date.getTime());\r\n            formatDate.setDate(value);\r\n            return _date.default.format(formatDate, \"d\")\r\n        },\r\n        startValue: 1,\r\n        endValue: void 0\r\n    },\r\n    month: {\r\n        getter: \"getMonth\",\r\n        setter: \"setMonth\",\r\n        formatter: function(value) {\r\n            return _date.default.getMonthNames()[value]\r\n        },\r\n        startValue: 0,\r\n        endValue: 11\r\n    },\r\n    hours: {\r\n        getter: \"getHours\",\r\n        setter: \"setHours\",\r\n        formatter: function(value) {\r\n            return _date.default.format(new Date(0, 0, 0, value), \"hour\")\r\n        },\r\n        startValue: 0,\r\n        endValue: 23\r\n    },\r\n    minutes: {\r\n        getter: \"getMinutes\",\r\n        setter: \"setMinutes\",\r\n        formatter: function(value) {\r\n            return _date.default.format(new Date(0, 0, 0, 0, value), \"minute\")\r\n        },\r\n        startValue: 0,\r\n        endValue: 59\r\n    },\r\n    seconds: {\r\n        getter: \"getSeconds\",\r\n        setter: \"setSeconds\",\r\n        formatter: function(value) {\r\n            return _date.default.format(new Date(0, 0, 0, 0, 0, value), \"second\")\r\n        },\r\n        startValue: 0,\r\n        endValue: 59\r\n    },\r\n    milliseconds: {\r\n        getter: \"getMilliseconds\",\r\n        setter: \"setMilliseconds\",\r\n        formatter: function(value) {\r\n            return _date.default.format(new Date(0, 0, 0, 0, 0, 0, value), \"millisecond\")\r\n        },\r\n        startValue: 0,\r\n        endValue: 999\r\n    }\r\n};\r\nvar _default = dateUtils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.resource_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar getValueExpr = function(resource) {\r\n    return resource.valueExpr || \"id\"\r\n};\r\nvar getDisplayExpr = function(resource) {\r\n    return resource.displayExpr || \"text\"\r\n};\r\nvar ResourceManager = function() {\r\n    function ResourceManager(resources) {\r\n        _classCallCheck(this, ResourceManager);\r\n        this._resourceLoader = {};\r\n        this.setResources(resources)\r\n    }\r\n    _createClass(ResourceManager, [{\r\n        key: \"_createWrappedDataSource\",\r\n        value: function(dataSource) {\r\n            if (dataSource instanceof _data_source.DataSource) {\r\n                return dataSource\r\n            }\r\n            var result = {\r\n                store: (0, _utils.normalizeDataSourceOptions)(dataSource).store,\r\n                pageSize: 0\r\n            };\r\n            if (!Array.isArray(dataSource)) {\r\n                result.filter = dataSource.filter\r\n            }\r\n            return new _data_source.DataSource(result)\r\n        }\r\n    }, {\r\n        key: \"_mapResourceData\",\r\n        value: function(resource, data) {\r\n            var valueGetter = (0, _data.compileGetter)(getValueExpr(resource));\r\n            var displayGetter = (0, _data.compileGetter)(getDisplayExpr(resource));\r\n            return (0, _iterator.map)(data, function(item) {\r\n                var result = {\r\n                    id: valueGetter(item),\r\n                    text: displayGetter(item)\r\n                };\r\n                if (item.color) {\r\n                    result.color = item.color\r\n                }\r\n                return result\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_isMultipleResource\",\r\n        value: function(resourceField) {\r\n            var result = false;\r\n            (0, _iterator.each)(this.getResources(), function(_, resource) {\r\n                var field = this.getField(resource);\r\n                if (field === resourceField) {\r\n                    result = resource.allowMultiple;\r\n                    return false\r\n                }\r\n            }.bind(this));\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getDataAccessors\",\r\n        value: function(field, type) {\r\n            var result = null;\r\n            (0, _iterator.each)(this._dataAccessors[type], function(accessorName, accessors) {\r\n                if (field === accessorName) {\r\n                    result = accessors;\r\n                    return false\r\n                }\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getField\",\r\n        value: function(resource) {\r\n            return resource.fieldExpr || resource.field\r\n        }\r\n    }, {\r\n        key: \"setResources\",\r\n        value: function(resources) {\r\n            this._resources = resources;\r\n            this._dataAccessors = {\r\n                getter: {},\r\n                setter: {}\r\n            };\r\n            this._resourceFields = (0, _iterator.map)(resources || [], function(resource) {\r\n                var field = this.getField(resource);\r\n                this._dataAccessors.getter[field] = (0, _data.compileGetter)(field);\r\n                this._dataAccessors.setter[field] = (0, _data.compileSetter)(field);\r\n                return field\r\n            }.bind(this))\r\n        }\r\n    }, {\r\n        key: \"getResources\",\r\n        value: function() {\r\n            return this._resources || []\r\n        }\r\n    }, {\r\n        key: \"getResourcesData\",\r\n        value: function() {\r\n            return this._resourcesData || []\r\n        }\r\n    }, {\r\n        key: \"getEditors\",\r\n        value: function() {\r\n            var result = [];\r\n            var that = this;\r\n            (0, _iterator.each)(this.getResources(), function(i, resource) {\r\n                var field = that.getField(resource);\r\n                var currentResourceItems = that._getResourceDataByField(field);\r\n                result.push({\r\n                    editorOptions: {\r\n                        dataSource: currentResourceItems.length ? currentResourceItems : that._createWrappedDataSource(resource.dataSource),\r\n                        displayExpr: getDisplayExpr(resource),\r\n                        valueExpr: getValueExpr(resource)\r\n                    },\r\n                    dataField: field,\r\n                    editorType: resource.allowMultiple ? \"dxTagBox\" : \"dxSelectBox\",\r\n                    label: {\r\n                        text: resource.label || field\r\n                    }\r\n                })\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getResourceDataByValue\",\r\n        value: function(field, value) {\r\n            var that = this;\r\n            var result = new _deferred.Deferred;\r\n            (0, _iterator.each)(this.getResources(), function(_, resource) {\r\n                var resourceField = that.getField(resource);\r\n                if (resourceField === field) {\r\n                    var dataSource = that._createWrappedDataSource(resource.dataSource);\r\n                    var valueExpr = getValueExpr(resource);\r\n                    if (!that._resourceLoader[field]) {\r\n                        that._resourceLoader[field] = dataSource.load()\r\n                    }\r\n                    that._resourceLoader[field].done(function(data) {\r\n                        var filteredData = (0, _query.default)(data).filter(valueExpr, value).toArray();\r\n                        delete that._resourceLoader[field];\r\n                        result.resolve(filteredData[0])\r\n                    }).fail(function() {\r\n                        delete that._resourceLoader[field];\r\n                        result.reject()\r\n                    });\r\n                    return false\r\n                }\r\n            });\r\n            return result.promise()\r\n        }\r\n    }, {\r\n        key: \"setResourcesToItem\",\r\n        value: function(itemData, resources) {\r\n            var resourcesSetter = this._dataAccessors.setter;\r\n            for (var name in resources) {\r\n                if (Object.prototype.hasOwnProperty.call(resources, name)) {\r\n                    var resourceData = resources[name];\r\n                    resourcesSetter[name](itemData, this._isMultipleResource(name) ? (0, _array.wrapToArray)(resourceData) : resourceData)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getResourcesFromItem\",\r\n        value: function(itemData, wrapOnlyMultipleResources) {\r\n            var _this = this;\r\n            var result = null;\r\n            if (!(0, _type.isDefined)(wrapOnlyMultipleResources)) {\r\n                wrapOnlyMultipleResources = false\r\n            }\r\n            this._resourceFields.forEach(function(field) {\r\n                (0, _iterator.each)(itemData, function(fieldName, fieldValue) {\r\n                    var tempObject = {};\r\n                    tempObject[fieldName] = fieldValue;\r\n                    var resourceData = _this.getDataAccessors(field, \"getter\")(tempObject);\r\n                    if ((0, _type.isDefined)(resourceData)) {\r\n                        if (!result) {\r\n                            result = {}\r\n                        }\r\n                        if (1 === resourceData.length) {\r\n                            resourceData = resourceData[0]\r\n                        }\r\n                        if (!wrapOnlyMultipleResources || wrapOnlyMultipleResources && _this._isMultipleResource(field)) {\r\n                            _this.getDataAccessors(field, \"setter\")(tempObject, (0, _array.wrapToArray)(resourceData))\r\n                        } else {\r\n                            _this.getDataAccessors(field, \"setter\")(tempObject, resourceData)\r\n                        }(0, _extend.extend)(result, tempObject);\r\n                        return true\r\n                    }\r\n                })\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"loadResources\",\r\n        value: function(groups) {\r\n            var result = new _deferred.Deferred;\r\n            var that = this;\r\n            var deferreds = [];\r\n            (0, _iterator.each)(this.getResourcesByFields(groups), function(i, resource) {\r\n                var deferred = new _deferred.Deferred;\r\n                var field = that.getField(resource);\r\n                deferreds.push(deferred);\r\n                that._createWrappedDataSource(resource.dataSource).load().done(function(data) {\r\n                    deferred.resolve({\r\n                        name: field,\r\n                        items: that._mapResourceData(resource, data),\r\n                        data: data\r\n                    })\r\n                }).fail(function() {\r\n                    deferred.reject()\r\n                })\r\n            });\r\n            if (!deferreds.length) {\r\n                that._resourcesData = [];\r\n                return result.resolve([])\r\n            }\r\n            _deferred.when.apply(null, deferreds).done(function() {\r\n                var data = Array.prototype.slice.call(arguments);\r\n                var mapFunction = function(obj) {\r\n                    return {\r\n                        name: obj.name,\r\n                        items: obj.items,\r\n                        data: obj.data\r\n                    }\r\n                };\r\n                that._resourcesData = data;\r\n                result.resolve(data.map(mapFunction))\r\n            }).fail(function() {\r\n                result.reject()\r\n            });\r\n            return result.promise()\r\n        }\r\n    }, {\r\n        key: \"getResourcesByFields\",\r\n        value: function(fields) {\r\n            return (0, _common.grep)(this.getResources(), function(resource) {\r\n                var field = this.getField(resource);\r\n                return (0, _array.inArray)(field, fields) > -1\r\n            }.bind(this))\r\n        }\r\n    }, {\r\n        key: \"getResourceByField\",\r\n        value: function(field) {\r\n            return this.getResourcesByFields([field])[0] || {}\r\n        }\r\n    }, {\r\n        key: \"getResourceColor\",\r\n        value: function(field, value) {\r\n            var valueExpr = this.getResourceByField(field).valueExpr || \"id\";\r\n            var valueGetter = (0, _data.compileGetter)(valueExpr);\r\n            var colorExpr = this.getResourceByField(field).colorExpr || \"color\";\r\n            var colorGetter = (0, _data.compileGetter)(colorExpr);\r\n            var result = new _deferred.Deferred;\r\n            var resourceData = this._getResourceDataByField(field);\r\n            var resourceDataLength = resourceData.length;\r\n            var color;\r\n            if (resourceDataLength) {\r\n                for (var i = 0; i < resourceDataLength; i++) {\r\n                    if (valueGetter(resourceData[i]) === value) {\r\n                        color = colorGetter(resourceData[i]);\r\n                        break\r\n                    }\r\n                }\r\n                result.resolve(color)\r\n            } else {\r\n                this.getResourceDataByValue(field, value).done(function(resourceData) {\r\n                    if (resourceData) {\r\n                        color = colorGetter(resourceData)\r\n                    }\r\n                    result.resolve(color)\r\n                }).fail(function() {\r\n                    result.reject()\r\n                })\r\n            }\r\n            return result.promise()\r\n        }\r\n    }, {\r\n        key: \"getResourceForPainting\",\r\n        value: function(groups) {\r\n            var resources = this.getResources();\r\n            var result;\r\n            (0, _iterator.each)(resources, function(index, resource) {\r\n                if (resource.useColorAsDefault) {\r\n                    result = resource;\r\n                    return false\r\n                }\r\n            });\r\n            if (!result) {\r\n                if (Array.isArray(groups) && groups.length) {\r\n                    resources = this.getResourcesByFields(groups)\r\n                }\r\n                result = resources[resources.length - 1]\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"createResourcesTree\",\r\n        value: function(groups) {\r\n            var leafIndex = 0;\r\n            var groupIndex = groupIndex || 0;\r\n\r\n            function make(group, groupIndex, result, parent) {\r\n                result = result || [];\r\n                for (var i = 0; i < group.items.length; i++) {\r\n                    var currentGroupItem = group.items[i];\r\n                    var resultItem = {\r\n                        name: group.name,\r\n                        value: currentGroupItem.id,\r\n                        title: currentGroupItem.text,\r\n                        data: group.data && group.data[i],\r\n                        children: [],\r\n                        parent: parent ? parent : null\r\n                    };\r\n                    result.push(resultItem);\r\n                    var nextGroupIndex = groupIndex + 1;\r\n                    if (groups[nextGroupIndex]) {\r\n                        make.call(this, groups[nextGroupIndex], nextGroupIndex, resultItem.children, resultItem)\r\n                    }\r\n                    if (!resultItem.children.length) {\r\n                        resultItem.leafIndex = leafIndex;\r\n                        leafIndex++\r\n                    }\r\n                }\r\n                return result\r\n            }\r\n            return make.call(this, groups[0], 0)\r\n        }\r\n    }, {\r\n        key: \"_hasGroupItem\",\r\n        value: function(appointmentResources, groupName, itemValue) {\r\n            var group = this.getDataAccessors(groupName, \"getter\")(appointmentResources);\r\n            if (group) {\r\n                if ((0, _array.inArray)(itemValue, group) > -1) {\r\n                    return true\r\n                }\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_getResourceDataByField\",\r\n        value: function(fieldName) {\r\n            var loadedResources = this.getResourcesData();\r\n            var currentResourceData = [];\r\n            for (var i = 0, resourceCount = loadedResources.length; i < resourceCount; i++) {\r\n                if (loadedResources[i].name === fieldName) {\r\n                    currentResourceData = loadedResources[i].data;\r\n                    break\r\n                }\r\n            }\r\n            return currentResourceData\r\n        }\r\n    }, {\r\n        key: \"getResourceTreeLeaves\",\r\n        value: function(tree, appointmentResources, result) {\r\n            result = result || [];\r\n            for (var i = 0; i < tree.length; i++) {\r\n                if (!this._hasGroupItem(appointmentResources, tree[i].name, tree[i].value)) {\r\n                    continue\r\n                }\r\n                if ((0, _type.isDefined)(tree[i].leafIndex)) {\r\n                    result.push(tree[i].leafIndex)\r\n                }\r\n                if (tree[i].children) {\r\n                    this.getResourceTreeLeaves(tree[i].children, appointmentResources, result)\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"groupAppointmentsByResources\",\r\n        value: function(appointments, resources) {\r\n            var tree = this.createResourcesTree(resources);\r\n            var result = {};\r\n            (0, _iterator.each)(appointments, function(_, appointment) {\r\n                var appointmentResources = this.getResourcesFromItem(appointment);\r\n                var treeLeaves = this.getResourceTreeLeaves(tree, appointmentResources);\r\n                for (var i = 0; i < treeLeaves.length; i++) {\r\n                    if (!result[treeLeaves[i]]) {\r\n                        result[treeLeaves[i]] = []\r\n                    }\r\n                    result[treeLeaves[i]].push((0, _object.deepExtendArraySafe)({}, appointment, true))\r\n                }\r\n            }.bind(this));\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"reduceResourcesTree\",\r\n        value: function(tree, existingAppointments, _result) {\r\n            _result = _result ? _result.children : [];\r\n            var that = this;\r\n            tree.forEach(function(node, index) {\r\n                var ok = false;\r\n                var resourceName = node.name;\r\n                var resourceValue = node.value;\r\n                var resourceTitle = node.title;\r\n                var resourceData = node.data;\r\n                var resourceGetter = that.getDataAccessors(resourceName, \"getter\");\r\n                existingAppointments.forEach(function(appointment) {\r\n                    if (!ok) {\r\n                        var resourceFromAppointment = resourceGetter(appointment);\r\n                        if (Array.isArray(resourceFromAppointment)) {\r\n                            if (resourceFromAppointment.indexOf(resourceValue) > -1) {\r\n                                _result.push({\r\n                                    name: resourceName,\r\n                                    value: resourceValue,\r\n                                    title: resourceTitle,\r\n                                    data: resourceData,\r\n                                    children: []\r\n                                });\r\n                                ok = true\r\n                            }\r\n                        } else {\r\n                            if (resourceFromAppointment === resourceValue) {\r\n                                _result.push({\r\n                                    name: resourceName,\r\n                                    value: resourceValue,\r\n                                    title: resourceTitle,\r\n                                    data: resourceData,\r\n                                    children: []\r\n                                });\r\n                                ok = true\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n                if (ok && node.children && node.children.length) {\r\n                    that.reduceResourcesTree(node.children, existingAppointments, _result[index])\r\n                }\r\n            });\r\n            return _result\r\n        }\r\n    }, {\r\n        key: \"getResourcesDataByGroups\",\r\n        value: function(groups) {\r\n            var _this2 = this;\r\n            var resourcesData = this.getResourcesData();\r\n            if (!groups) {\r\n                return resourcesData\r\n            }\r\n            var fieldNames = Object.getOwnPropertyNames(groups);\r\n            var resourceData = resourcesData.filter(function(item) {\r\n                return fieldNames.indexOf(item.name) !== -1\r\n            });\r\n            var currentResourcesData = [];\r\n            resourceData.forEach(function(data) {\r\n                return currentResourcesData.push((0, _extend.extend)({}, data))\r\n            });\r\n            (0, _iterator.each)(groups, function(_, value) {\r\n                currentResourcesData.forEach(function(resourceData) {\r\n                    var items = resourceData.items,\r\n                        data = resourceData.data,\r\n                        name = resourceData.name;\r\n                    var resource = _this2.getResourceByField(name);\r\n                    var valueExpr = getValueExpr(resource);\r\n                    var currentItems = items.filter(function(item) {\r\n                        return item.id === value\r\n                    });\r\n                    var currentData = data.filter(function(item) {\r\n                        return item[valueExpr] === value\r\n                    });\r\n                    resourceData.items = currentItems;\r\n                    resourceData.data = currentData\r\n                })\r\n            });\r\n            return currentResourcesData\r\n        }\r\n    }]);\r\n    return ResourceManager\r\n}();\r\nexports.default = ResourceManager;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/intl/number.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _core = _interopRequireDefault(require(\"../core\"));\r\nvar _open_xml_currency_format = _interopRequireDefault(require(\"../open_xml_currency_format\"));\r\nvar _accounting_formats = _interopRequireDefault(require(\"../cldr-data/accounting_formats\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar detectCurrencySymbolRegex = /([^\\s0]+)?(\\s*)0*[.,]*0*(\\s*)([^\\s0]+)?/;\r\nvar formattersCache = {};\r\nvar getFormatter = function(format) {\r\n    var key = _core.default.locale() + \"/\" + JSON.stringify(format);\r\n    if (!formattersCache[key]) {\r\n        formattersCache[key] = new Intl.NumberFormat(_core.default.locale(), format).format\r\n    }\r\n    return formattersCache[key]\r\n};\r\nvar getCurrencyFormatter = function(currency) {\r\n    return new Intl.NumberFormat(_core.default.locale(), {\r\n        style: \"currency\",\r\n        currency: currency\r\n    })\r\n};\r\nvar _default = {\r\n    engine: function() {\r\n        return \"intl\"\r\n    },\r\n    _formatNumberCore: function(value, format, formatConfig) {\r\n        if (\"exponential\" === format) {\r\n            return this.callBase.apply(this, arguments)\r\n        }\r\n        return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value)\r\n    },\r\n    _normalizeFormatConfig: function(format, formatConfig, value) {\r\n        var config;\r\n        if (\"decimal\" === format) {\r\n            config = {\r\n                minimumIntegerDigits: formatConfig.precision || void 0,\r\n                useGrouping: false,\r\n                maximumFractionDigits: String(value).length,\r\n                round: value < 0 ? \"ceil\" : \"floor\"\r\n            }\r\n        } else {\r\n            config = this._getPrecisionConfig(formatConfig.precision)\r\n        }\r\n        if (\"percent\" === format) {\r\n            config.style = \"percent\"\r\n        } else {\r\n            if (\"currency\" === format) {\r\n                config.style = \"currency\";\r\n                config.currency = formatConfig.currency || (0, _config.default)().defaultCurrency\r\n            }\r\n        }\r\n        return config\r\n    },\r\n    _getPrecisionConfig: function(precision) {\r\n        var config;\r\n        if (null === precision) {\r\n            config = {\r\n                minimumFractionDigits: 0,\r\n                maximumFractionDigits: 20\r\n            }\r\n        } else {\r\n            config = {\r\n                minimumFractionDigits: precision || 0,\r\n                maximumFractionDigits: precision || 0\r\n            }\r\n        }\r\n        return config\r\n    },\r\n    format: function(value, _format) {\r\n        if (\"number\" !== typeof value) {\r\n            return value\r\n        }\r\n        _format = this._normalizeFormat(_format);\r\n        if (\"default\" === _format.currency) {\r\n            _format.currency = (0, _config.default)().defaultCurrency\r\n        }\r\n        if (!_format || \"function\" !== typeof _format && !_format.type && !_format.formatter) {\r\n            return getFormatter(_format)(value)\r\n        }\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    _getCurrencySymbolInfo: function(currency) {\r\n        var formatter = getCurrencyFormatter(currency);\r\n        return this._extractCurrencySymbolInfo(formatter.format(0))\r\n    },\r\n    _extractCurrencySymbolInfo: function(currencyValueString) {\r\n        var match = detectCurrencySymbolRegex.exec(currencyValueString) || [];\r\n        var position = match[1] ? \"before\" : \"after\";\r\n        var symbol = match[1] || match[4] || \"\";\r\n        var delimiter = match[2] || match[3] || \"\";\r\n        return {\r\n            position: position,\r\n            symbol: symbol,\r\n            delimiter: delimiter\r\n        }\r\n    },\r\n    getCurrencySymbol: function(currency) {\r\n        if (!currency) {\r\n            currency = (0, _config.default)().defaultCurrency\r\n        }\r\n        var symbolInfo = this._getCurrencySymbolInfo(currency);\r\n        return {\r\n            symbol: symbolInfo.symbol\r\n        }\r\n    },\r\n    getOpenXmlCurrencyFormat: function(currency) {\r\n        var targetCurrency = currency || (0, _config.default)().defaultCurrency;\r\n        var currencySymbol = this._getCurrencySymbolInfo(targetCurrency).symbol;\r\n        var closestAccountingFormat = _core.default.getValueByClosestLocale(function(locale) {\r\n            return _accounting_formats.default[locale]\r\n        });\r\n        return (0, _open_xml_currency_format.default)(currencySymbol, closestAccountingFormat)\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.calendar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _calendar = _interopRequireDefault(require(\"../calendar\"));\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.strategy\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CalendarStrategy = _uiDate_box.default.inherit({\r\n    NAME: \"Calendar\",\r\n    supportedKeys: function() {\r\n        var homeEndHandler = function(e) {\r\n            if (this.option(\"opened\")) {\r\n                e.preventDefault();\r\n                return true\r\n            }\r\n            return false\r\n        };\r\n        return {\r\n            rightArrow: function() {\r\n                if (this.option(\"opened\")) {\r\n                    return true\r\n                }\r\n            },\r\n            leftArrow: function() {\r\n                if (this.option(\"opened\")) {\r\n                    return true\r\n                }\r\n            },\r\n            enter: function(e) {\r\n                if (this.dateBox.option(\"opened\")) {\r\n                    e.preventDefault();\r\n                    if (this._widget.option(\"zoomLevel\") === this._widget.option(\"maxZoomLevel\")) {\r\n                        var contouredDate = this._widget._view.option(\"contouredDate\");\r\n                        var lastActionElement = this._lastActionElement;\r\n                        if (contouredDate && \"calendar\" === lastActionElement) {\r\n                            this.dateBoxValue(contouredDate, e)\r\n                        }\r\n                        this.dateBox.close();\r\n                        this.dateBox._valueChangeEventHandler(e)\r\n                    } else {\r\n                        return true\r\n                    }\r\n                } else {\r\n                    this.dateBox._valueChangeEventHandler(e)\r\n                }\r\n            }.bind(this),\r\n            home: homeEndHandler,\r\n            end: homeEndHandler\r\n        }\r\n    },\r\n    getDisplayFormat: function(displayFormat) {\r\n        return displayFormat || \"shortdate\"\r\n    },\r\n    _getWidgetName: function() {\r\n        return _calendar.default\r\n    },\r\n    getKeyboardListener: function() {\r\n        return this._widget\r\n    },\r\n    _getWidgetOptions: function() {\r\n        var disabledDates = this.dateBox.option(\"disabledDates\");\r\n        return (0, _extend.extend)(this.dateBox.option(\"calendarOptions\"), {\r\n            value: this.dateBoxValue() || null,\r\n            dateSerializationFormat: null,\r\n            min: this.dateBox.dateOption(\"min\"),\r\n            max: this.dateBox.dateOption(\"max\"),\r\n            onValueChanged: this._valueChangedHandler.bind(this),\r\n            onCellClick: this._cellClickHandler.bind(this),\r\n            tabIndex: null,\r\n            disabledDates: (0, _type.isFunction)(disabledDates) ? this._injectComponent(disabledDates.bind(this.dateBox)) : disabledDates,\r\n            onContouredChanged: this._refreshActiveDescendant.bind(this),\r\n            hasFocus: function() {\r\n                return true\r\n            }\r\n        })\r\n    },\r\n    _injectComponent: function(func) {\r\n        var that = this;\r\n        return function(params) {\r\n            (0, _extend.extend)(params, {\r\n                component: that.dateBox\r\n            });\r\n            return func(params)\r\n        }\r\n    },\r\n    _refreshActiveDescendant: function(e) {\r\n        this._lastActionElement = \"calendar\";\r\n        this.dateBox.setAria(\"activedescendant\", e.actionValue)\r\n    },\r\n    popupConfig: function(_popupConfig) {\r\n        var toolbarItems = _popupConfig.toolbarItems;\r\n        var buttonsLocation = this.dateBox.option(\"buttonsLocation\");\r\n        var position = [];\r\n        if (\"default\" !== buttonsLocation) {\r\n            position = (0, _common.splitPair)(buttonsLocation)\r\n        } else {\r\n            position = [\"bottom\", \"center\"]\r\n        }\r\n        if (\"useButtons\" === this.dateBox.option(\"applyValueMode\") && this._isCalendarVisible()) {\r\n            toolbarItems.unshift({\r\n                widget: \"dxButton\",\r\n                toolbar: position[0],\r\n                location: \"after\" === position[1] ? \"before\" : position[1],\r\n                options: {\r\n                    onInitialized: function(e) {\r\n                        e.component.registerKeyHandler(\"escape\", this._escapeHandler.bind(this))\r\n                    }.bind(this),\r\n                    onClick: function() {\r\n                        this._widget._toTodayView()\r\n                    }.bind(this),\r\n                    text: _message.default.format(\"dxCalendar-todayButtonText\"),\r\n                    type: \"today\"\r\n                }\r\n            })\r\n        }\r\n        return (0, _extend.extend)(true, _popupConfig, {\r\n            toolbarItems: toolbarItems,\r\n            position: {\r\n                collision: \"flipfit flip\"\r\n            },\r\n            width: \"auto\"\r\n        })\r\n    },\r\n    _isCalendarVisible: function() {\r\n        return (0, _type.isEmptyObject)(this.dateBox.option(\"calendarOptions\")) || false !== this.dateBox.option(\"calendarOptions.visible\")\r\n    },\r\n    _escapeHandler: function() {\r\n        this.dateBox.close();\r\n        this.dateBox.focus()\r\n    },\r\n    _valueChangedHandler: function(e) {\r\n        var dateBox = this.dateBox;\r\n        var value = e.value;\r\n        var prevValue = e.previousValue;\r\n        if (_date.default.sameDate(value, prevValue)) {\r\n            return\r\n        }\r\n        if (\"instantly\" === dateBox.option(\"applyValueMode\")) {\r\n            this.dateBoxValue(this.getValue(), e.event)\r\n        }\r\n    },\r\n    _updateValue: function() {\r\n        if (!this._widget) {\r\n            return\r\n        }\r\n        this._widget.option(\"value\", this.dateBoxValue())\r\n    },\r\n    textChangedHandler: function() {\r\n        this._lastActionElement = \"input\";\r\n        if (this.dateBox.option(\"opened\") && this._widget) {\r\n            this._updateValue(true)\r\n        }\r\n    },\r\n    _cellClickHandler: function(e) {\r\n        var dateBox = this.dateBox;\r\n        if (\"instantly\" === dateBox.option(\"applyValueMode\")) {\r\n            dateBox.option(\"opened\", false);\r\n            this.dateBoxValue(this.getValue(), e.event)\r\n        }\r\n    }\r\n});\r\nvar _default = CalendarStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.j.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../../../../../core/component_registrator\"));\r\nvar _component = _interopRequireDefault(require(\"../../../../../../preact_wrapper/component\"));\r\nvar _layout = require(\"./layout\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar AllDayPanelLayout = function(_BaseComponent) {\r\n    _inherits(AllDayPanelLayout, _BaseComponent);\r\n    var _super = _createSuper(AllDayPanelLayout);\r\n\r\n    function AllDayPanelLayout() {\r\n        _classCallCheck(this, AllDayPanelLayout);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(AllDayPanelLayout, [{\r\n        key: \"getProps\",\r\n        value: function() {\r\n            var props = _get(_getPrototypeOf(AllDayPanelLayout.prototype), \"getProps\", this).call(this);\r\n            props.dataCellTemplate = this._createTemplateComponent(props, props.dataCellTemplate);\r\n            return props\r\n        }\r\n    }, {\r\n        key: \"_propsInfo\",\r\n        get: function() {\r\n            return {\r\n                twoWay: [],\r\n                allowNull: [],\r\n                elements: []\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_viewComponent\",\r\n        get: function() {\r\n            return _layout.AllDayPanelLayout\r\n        }\r\n    }]);\r\n    return AllDayPanelLayout\r\n}(_component.default);\r\nexports.default = AllDayPanelLayout;\r\n(0, _component_registrator.default)(\"dxAllDayPanelLayout\", AllDayPanelLayout);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/themes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getTheme = getTheme;\r\nexports.currentTheme = currentTheme;\r\nexports.registerTheme = registerTheme;\r\nexports.registerThemeSchemeAlias = registerThemeSchemeAlias;\r\nexports.addCacheItem = addCacheItem;\r\nexports.removeCacheItem = removeCacheItem;\r\nexports.refreshTheme = refreshTheme;\r\nvar _extend2 = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _utils = require(\"./core/utils\");\r\nvar _themes = require(\"../ui/themes\");\r\nvar themes = {};\r\nvar themesMapping = {};\r\nvar themesSchemeMapping = {};\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar currentThemeName = null;\r\nvar defaultTheme;\r\nvar nextCacheUid = 0;\r\nvar widgetsCache = {};\r\n\r\nfunction getTheme(themeName) {\r\n    var name = (0, _utils.normalizeEnum)(themeName);\r\n    return themes[name] || themes[themesMapping[name] || currentTheme()]\r\n}\r\n\r\nfunction findThemeNameByName(name, scheme) {\r\n    return themesMapping[name + \".\" + scheme] || themesSchemeMapping[name + \".\" + scheme] || themesMapping[name]\r\n}\r\n\r\nfunction findThemeNameByPlatform(platform, version, scheme) {\r\n    return findThemeNameByName(platform + version, scheme) || findThemeNameByName(platform, scheme)\r\n}\r\n\r\nfunction currentTheme(themeName, colorScheme) {\r\n    if (!arguments.length) {\r\n        return currentThemeName || findThemeNameByName((0, _themes.current)()) || defaultTheme\r\n    }\r\n    var scheme = (0, _utils.normalizeEnum)(colorScheme);\r\n    currentThemeName = (themeName && themeName.platform ? findThemeNameByPlatform((0, _utils.normalizeEnum)(themeName.platform), themeName.version, scheme) : findThemeNameByName((0, _utils.normalizeEnum)(themeName), scheme)) || currentThemeName;\r\n    return this\r\n}\r\n\r\nfunction getThemeInfo(themeName, splitter) {\r\n    var k = themeName.indexOf(splitter);\r\n    return k > 0 ? {\r\n        name: themeName.substring(0, k),\r\n        scheme: themeName.substring(k + 1)\r\n    } : null\r\n}\r\n\r\nfunction registerThemeName(themeName, targetThemeName) {\r\n    var themeInfo = getThemeInfo(themeName, \".\") || {\r\n        name: themeName\r\n    };\r\n    var name = themeInfo.name;\r\n    var scheme = themeInfo.scheme;\r\n    if (scheme) {\r\n        themesMapping[name] = themesMapping[name] || targetThemeName;\r\n        themesMapping[name + \".\" + scheme] = targetThemeName\r\n    } else {\r\n        themesMapping[name] = targetThemeName\r\n    }\r\n}\r\n\r\nfunction registerTheme(theme, baseThemeName) {\r\n    var themeName = (0, _utils.normalizeEnum)(theme && theme.name);\r\n    if (themeName) {\r\n        theme.isDefault && (defaultTheme = themeName);\r\n        registerThemeName(themeName, themeName);\r\n        themes[themeName] = _extend(true, {}, getTheme(baseThemeName), patchTheme(theme))\r\n    }\r\n}\r\n\r\nfunction registerThemeSchemeAlias(from, to) {\r\n    themesSchemeMapping[from] = to\r\n}\r\n\r\nfunction mergeScalar(target, field, source, sourceValue) {\r\n    var _value = source ? source[field] : sourceValue;\r\n    if (void 0 !== _value && void 0 === target[field]) {\r\n        target[field] = _value\r\n    }\r\n}\r\n\r\nfunction mergeObject(target, field, source, sourceValue) {\r\n    var _value = source ? source[field] : sourceValue;\r\n    if (void 0 !== _value) {\r\n        target[field] = _extend(true, {}, _value, target[field])\r\n    }\r\n}\r\n\r\nfunction patchTheme(theme) {\r\n    theme = _extend(true, {\r\n        loadingIndicator: {\r\n            font: {}\r\n        },\r\n        \"export\": {\r\n            font: {}\r\n        },\r\n        legend: {\r\n            font: {},\r\n            border: {}\r\n        },\r\n        title: {\r\n            font: {}\r\n        },\r\n        tooltip: {\r\n            font: {}\r\n        },\r\n        \"chart:common\": {},\r\n        \"chart:common:axis\": {\r\n            grid: {},\r\n            minorGrid: {},\r\n            tick: {},\r\n            minorTick: {},\r\n            title: {\r\n                font: {}\r\n            },\r\n            label: {\r\n                font: {}\r\n            }\r\n        },\r\n        \"chart:common:annotation\": {\r\n            font: {},\r\n            border: {}\r\n        },\r\n        chart: {\r\n            commonSeriesSettings: {\r\n                candlestick: {}\r\n            }\r\n        },\r\n        pie: {},\r\n        polar: {},\r\n        gauge: {\r\n            scale: {\r\n                tick: {},\r\n                minorTick: {},\r\n                label: {\r\n                    font: {}\r\n                }\r\n            }\r\n        },\r\n        barGauge: {},\r\n        funnel: {},\r\n        sankey: {},\r\n        map: {\r\n            background: {}\r\n        },\r\n        treeMap: {\r\n            tile: {\r\n                selectionStyle: {\r\n                    border: {}\r\n                }\r\n            },\r\n            group: {\r\n                border: {},\r\n                selectionStyle: {\r\n                    border: {}\r\n                },\r\n                label: {\r\n                    font: {}\r\n                }\r\n            }\r\n        },\r\n        rangeSelector: {\r\n            scale: {\r\n                tick: {},\r\n                minorTick: {},\r\n                label: {\r\n                    font: {}\r\n                }\r\n            },\r\n            chart: {}\r\n        },\r\n        sparkline: {},\r\n        bullet: {}\r\n    }, theme);\r\n    mergeScalar(theme.loadingIndicator, \"backgroundColor\", theme);\r\n    mergeScalar(theme.chart.commonSeriesSettings.candlestick, \"innerColor\", null, theme.backgroundColor);\r\n    mergeScalar(theme.map.background, \"color\", null, theme.backgroundColor);\r\n    mergeScalar(theme.title.font, \"color\", null, theme.primaryTitleColor);\r\n    mergeObject(theme.title, \"subtitle\", null, theme.title);\r\n    mergeScalar(theme.legend.font, \"color\", null, theme.secondaryTitleColor);\r\n    mergeScalar(theme.legend.border, \"color\", null, theme.gridColor);\r\n    patchAxes(theme);\r\n    _each([\"chart\", \"pie\", \"polar\", \"gauge\", \"barGauge\", \"map\", \"treeMap\", \"funnel\", \"rangeSelector\", \"sparkline\", \"bullet\", \"sankey\"], function(_, section) {\r\n        mergeScalar(theme[section], \"redrawOnResize\", theme);\r\n        mergeScalar(theme[section], \"containerBackgroundColor\", null, theme.backgroundColor);\r\n        mergeObject(theme[section], \"tooltip\", theme);\r\n        mergeObject(theme[section], \"export\", theme)\r\n    });\r\n    _each([\"chart\", \"pie\", \"polar\", \"gauge\", \"barGauge\", \"map\", \"treeMap\", \"funnel\", \"rangeSelector\", \"sankey\"], function(_, section) {\r\n        mergeObject(theme[section], \"loadingIndicator\", theme);\r\n        mergeObject(theme[section], \"legend\", theme);\r\n        mergeObject(theme[section], \"title\", theme)\r\n    });\r\n    _each([\"chart\", \"pie\", \"polar\"], function(_, section) {\r\n        mergeObject(theme, section, null, theme[\"chart:common\"])\r\n    });\r\n    _each([\"chart\", \"polar\"], function(_, section) {\r\n        theme[section] = theme[section] || {};\r\n        mergeObject(theme[section], \"commonAxisSettings\", null, theme[\"chart:common:axis\"])\r\n    });\r\n    _each([\"chart\", \"polar\", \"map\", \"pie\"], function(_, section) {\r\n        theme[section] = theme[section] || {};\r\n        mergeObject(theme[section], \"commonAnnotationSettings\", null, theme[\"chart:common:annotation\"])\r\n    });\r\n    mergeObject(theme.rangeSelector.chart, \"commonSeriesSettings\", theme.chart);\r\n    mergeObject(theme.rangeSelector.chart, \"dataPrepareSettings\", theme.chart);\r\n    mergeScalar(theme.treeMap.group.border, \"color\", null, theme.gridColor);\r\n    mergeScalar(theme.treeMap.tile.selectionStyle.border, \"color\", null, theme.primaryTitleColor);\r\n    mergeScalar(theme.treeMap.group.selectionStyle.border, \"color\", null, theme.primaryTitleColor);\r\n    mergeScalar(theme.map.legend, \"backgroundColor\", theme);\r\n    patchMapLayers(theme);\r\n    return theme\r\n}\r\n\r\nfunction patchAxes(theme) {\r\n    var commonAxisSettings = theme[\"chart:common:axis\"];\r\n    var colorFieldName = \"color\";\r\n    _each([commonAxisSettings.grid, commonAxisSettings.minorGrid], function(_, obj) {\r\n        mergeScalar(obj, colorFieldName, null, theme.gridColor)\r\n    });\r\n    _each([commonAxisSettings, commonAxisSettings.tick, commonAxisSettings.minorTick, commonAxisSettings.label.font], function(_, obj) {\r\n        mergeScalar(obj, colorFieldName, null, theme.axisColor)\r\n    });\r\n    mergeScalar(commonAxisSettings.title.font, colorFieldName, null, theme.secondaryTitleColor);\r\n    mergeScalar(theme.gauge.scale.label.font, colorFieldName, null, theme.axisColor);\r\n    mergeScalar(theme.gauge.scale.tick, colorFieldName, null, theme.backgroundColor);\r\n    mergeScalar(theme.gauge.scale.minorTick, colorFieldName, null, theme.backgroundColor);\r\n    mergeScalar(theme.rangeSelector.scale.label.font, colorFieldName, null, theme.axisColor)\r\n}\r\n\r\nfunction patchMapLayers(theme) {\r\n    var map = theme.map;\r\n    _each([\"area\", \"line\", \"marker\"], function(_, section) {\r\n        mergeObject(map, \"layer:\" + section, null, map.layer)\r\n    });\r\n    _each([\"dot\", \"bubble\", \"pie\", \"image\"], function(_, section) {\r\n        mergeObject(map, \"layer:marker:\" + section, null, map[\"layer:marker\"])\r\n    })\r\n}\r\n\r\nfunction addCacheItem(target) {\r\n    var cacheUid = ++nextCacheUid;\r\n    target._cache = cacheUid;\r\n    widgetsCache[cacheUid] = target\r\n}\r\n\r\nfunction removeCacheItem(target) {\r\n    delete widgetsCache[target._cache]\r\n}\r\n\r\nfunction refreshTheme() {\r\n    _each(widgetsCache, function() {\r\n        this.refresh()\r\n    });\r\n    return this\r\n}\r\n","/**\r\n * DevExtreme (ui/editor/editor.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _validation_engine = _interopRequireDefault(require(\"../validation_engine\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _validation_message = _interopRequireDefault(require(\"../validation_message\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar READONLY_STATE_CLASS = \"dx-state-readonly\";\r\nvar INVALID_CLASS = \"dx-invalid\";\r\nvar DX_INVALID_BADGE_CLASS = \"dx-show-invalid-badge\";\r\nvar VALIDATION_TARGET = \"dx-validation-target\";\r\nvar VALIDATION_STATUS_VALID = \"valid\";\r\nvar VALIDATION_STATUS_INVALID = \"invalid\";\r\nvar READONLY_NAMESPACE = \"editorReadOnly\";\r\nvar VALIDATION_MESSAGE_KEYS_MAP = {\r\n    validationMessageMode: \"mode\",\r\n    validationMessageOffset: \"offset\",\r\n    validationBoundary: \"boundary\"\r\n};\r\nvar Editor = _ui.default.inherit({\r\n    ctor: function() {\r\n        this.showValidationMessageTimeout = null;\r\n        this.validationRequest = (0, _callbacks.default)();\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _createElement: function(element) {\r\n        this.callBase(element);\r\n        var $element = this.$element();\r\n        if ($element) {\r\n            (0, _element_data.data)($element[0], VALIDATION_TARGET, this)\r\n        }\r\n    },\r\n    _initOptions: function(options) {\r\n        this.callBase.apply(this, arguments);\r\n        this.option(_validation_engine.default.initValidationOptions(options))\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._options.cache(\"validationTooltipOptions\", this.option(\"validationTooltipOptions\"));\r\n        var $element = this.$element();\r\n        $element.addClass(DX_INVALID_BADGE_CLASS)\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: null,\r\n            name: \"\",\r\n            onValueChanged: null,\r\n            readOnly: false,\r\n            isValid: true,\r\n            validationError: null,\r\n            validationErrors: null,\r\n            validationStatus: VALIDATION_STATUS_VALID,\r\n            validationMessageMode: \"auto\",\r\n            validationBoundary: void 0,\r\n            validationMessageOffset: {\r\n                h: 0,\r\n                v: 0\r\n            },\r\n            validationTooltipOptions: {}\r\n        })\r\n    },\r\n    _attachKeyboardEvents: function() {\r\n        if (!this.option(\"readOnly\")) {\r\n            this.callBase()\r\n        }\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            validationError: true\r\n        })\r\n    },\r\n    _createValueChangeAction: function() {\r\n        this._valueChangeAction = this._createActionByOption(\"onValueChanged\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _suppressValueChangeAction: function() {\r\n        this._valueChangeActionSuppressed = true\r\n    },\r\n    _resumeValueChangeAction: function() {\r\n        this._valueChangeActionSuppressed = false\r\n    },\r\n    _initMarkup: function() {\r\n        this._toggleReadOnlyState();\r\n        this._setSubmitElementName(this.option(\"name\"));\r\n        this.callBase();\r\n        this._renderValidationState()\r\n    },\r\n    _raiseValueChangeAction: function(value, previousValue) {\r\n        if (!this._valueChangeAction) {\r\n            this._createValueChangeAction()\r\n        }\r\n        this._valueChangeAction(this._valueChangeArgs(value, previousValue))\r\n    },\r\n    _valueChangeArgs: function(value, previousValue) {\r\n        return {\r\n            value: value,\r\n            previousValue: previousValue,\r\n            event: this._valueChangeEventInstance\r\n        }\r\n    },\r\n    _saveValueChangeEvent: function(e) {\r\n        this._valueChangeEventInstance = e\r\n    },\r\n    _focusInHandler: function(e) {\r\n        var isValidationMessageShownOnFocus = \"auto\" === this.option(\"validationMessageMode\");\r\n        if (this._canValueBeChangedByClick() && isValidationMessageShownOnFocus) {\r\n            var _this$_validationMess;\r\n            var $validationMessageWrapper = null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess._wrapper();\r\n            null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.removeClass(INVALID_MESSAGE_AUTO);\r\n            clearTimeout(this.showValidationMessageTimeout);\r\n            this.showValidationMessageTimeout = setTimeout(function() {\r\n                return null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass(INVALID_MESSAGE_AUTO)\r\n            }, 150)\r\n        }\r\n        return this.callBase(e)\r\n    },\r\n    _canValueBeChangedByClick: function() {\r\n        return false\r\n    },\r\n    _getValidationErrors: function() {\r\n        var validationErrors = this.option(\"validationErrors\");\r\n        if (!validationErrors && this.option(\"validationError\")) {\r\n            validationErrors = [this.option(\"validationError\")]\r\n        }\r\n        return validationErrors\r\n    },\r\n    _disposeValidationMessage: function() {\r\n        if (this._$validationMessage) {\r\n            this._$validationMessage.remove();\r\n            this.setAria(\"describedby\", null);\r\n            this._$validationMessage = null\r\n        }\r\n    },\r\n    _toggleValidationClasses: function(isInvalid) {\r\n        this.$element().toggleClass(INVALID_CLASS, isInvalid);\r\n        this.setAria(VALIDATION_STATUS_INVALID, isInvalid || void 0)\r\n    },\r\n    _renderValidationState: function() {\r\n        var isValid = this.option(\"isValid\") && this.option(\"validationStatus\") !== VALIDATION_STATUS_INVALID;\r\n        var validationErrors = this._getValidationErrors();\r\n        var $element = this.$element();\r\n        this._toggleValidationClasses(!isValid);\r\n        if (!(0, _window.hasWindow)()) {\r\n            return\r\n        }\r\n        this._disposeValidationMessage();\r\n        if (!isValid && validationErrors) {\r\n            this._$validationMessage = (0, _renderer.default)(\"<div>\").appendTo($element);\r\n            this.setAria(\"describedby\", \"dx-\" + new _guid.default);\r\n            this._validationMessage = new _validation_message.default(this._$validationMessage, (0, _extend.extend)({\r\n                validationErrors: validationErrors,\r\n                target: this._getValidationMessageTarget(),\r\n                container: $element,\r\n                mode: this.option(\"validationMessageMode\"),\r\n                positionRequest: \"below\",\r\n                offset: this.option(\"validationMessageOffset\"),\r\n                boundary: this.option(\"validationBoundary\"),\r\n                rtlEnabled: this.option(\"rtlEnabled\")\r\n            }, this._options.cache(\"validationTooltipOptions\")));\r\n            this._bindInnerWidgetOptions(this._validationMessage, \"validationTooltipOptions\")\r\n        }\r\n    },\r\n    _getValidationMessageTarget: function() {\r\n        return this.$element()\r\n    },\r\n    _toggleReadOnlyState: function() {\r\n        var readOnly = this.option(\"readOnly\");\r\n        this._toggleBackspaceHandler(readOnly);\r\n        this.$element().toggleClass(READONLY_STATE_CLASS, !!readOnly);\r\n        this.setAria(\"readonly\", readOnly || void 0)\r\n    },\r\n    _toggleBackspaceHandler: function(isReadOnly) {\r\n        var $eventTarget = this._keyboardEventBindingTarget();\r\n        var eventName = (0, _index.addNamespace)(\"keydown\", READONLY_NAMESPACE);\r\n        _events_engine.default.off($eventTarget, eventName);\r\n        if (isReadOnly) {\r\n            _events_engine.default.on($eventTarget, eventName, function(e) {\r\n                if (\"backspace\" === (0, _index.normalizeKeyName)(e)) {\r\n                    e.preventDefault()\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        var element = this.$element()[0];\r\n        (0, _element_data.data)(element, VALIDATION_TARGET, null);\r\n        clearTimeout(this.showValidationMessageTimeout);\r\n        this.callBase()\r\n    },\r\n    _setSubmitElementName: function(name) {\r\n        var $submitElement = this._getSubmitElement();\r\n        if (!$submitElement) {\r\n            return\r\n        }\r\n        if (name.length > 0) {\r\n            $submitElement.attr(\"name\", name)\r\n        } else {\r\n            $submitElement.removeAttr(\"name\")\r\n        }\r\n    },\r\n    _getSubmitElement: function() {\r\n        return null\r\n    },\r\n    _setValidationMessageOption: function(_ref) {\r\n        var _this$_validationMess2;\r\n        var name = _ref.name,\r\n            value = _ref.value;\r\n        var optionKey = VALIDATION_MESSAGE_KEYS_MAP[name] ? VALIDATION_MESSAGE_KEYS_MAP[name] : name;\r\n        null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(optionKey, value)\r\n    },\r\n    _optionChanged: function(args) {\r\n        var _this$_validationMess3;\r\n        switch (args.name) {\r\n            case \"onValueChanged\":\r\n                this._createValueChangeAction();\r\n                break;\r\n            case \"readOnly\":\r\n                this._toggleReadOnlyState();\r\n                this._refreshFocusState();\r\n                break;\r\n            case \"value\":\r\n                if (args.value != args.previousValue) {\r\n                    this.validationRequest.fire({\r\n                        value: args.value,\r\n                        editor: this\r\n                    })\r\n                }\r\n                if (!this._valueChangeActionSuppressed) {\r\n                    this._raiseValueChangeAction(args.value, args.previousValue);\r\n                    this._saveValueChangeEvent(void 0)\r\n                }\r\n                break;\r\n            case \"width\":\r\n                this.callBase(args);\r\n                null === (_this$_validationMess3 = this._validationMessage) || void 0 === _this$_validationMess3 ? void 0 : _this$_validationMess3.updateMaxWidth();\r\n                break;\r\n            case \"name\":\r\n                this._setSubmitElementName(args.value);\r\n                break;\r\n            case \"isValid\":\r\n            case \"validationError\":\r\n            case \"validationErrors\":\r\n            case \"validationStatus\":\r\n                this.option(_validation_engine.default.synchronizeValidationOptions(args, this.option()));\r\n                this._renderValidationState();\r\n                break;\r\n            case \"validationBoundary\":\r\n            case \"validationMessageMode\":\r\n            case \"validationMessageOffset\":\r\n                this._setValidationMessageOption(args);\r\n                break;\r\n            case \"rtlEnabled\":\r\n                this._setValidationMessageOption(args);\r\n                this.callBase(args);\r\n                break;\r\n            case \"validationTooltipOptions\":\r\n                this._innerWidgetOptionChanged(this._validationMessage, args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    reset: function() {\r\n        var defaultOptions = this._getDefaultOptions();\r\n        this.option(\"value\", defaultOptions.value)\r\n    }\r\n});\r\nvar _default = Editor;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/devices.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"./utils/window\");\r\nvar _extend = require(\"./utils/extend\");\r\nvar _type = require(\"./utils/type\");\r\nvar _iterator = require(\"./utils/iterator\");\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _callbacks = _interopRequireDefault(require(\"./utils/callbacks\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"./utils/ready_callbacks\"));\r\nvar _resize_callbacks = _interopRequireDefault(require(\"./utils/resize_callbacks\"));\r\nvar _events_strategy = require(\"./events_strategy\");\r\nvar _storage = require(\"./utils/storage\");\r\nvar _view_port = require(\"./utils/view_port\");\r\nvar _config = _interopRequireDefault(require(\"./config\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar navigator = (0, _window.getNavigator)();\r\nvar window = (0, _window.getWindow)();\r\nvar KNOWN_UA_TABLE = {\r\n    iPhone: \"iPhone\",\r\n    iPhone5: \"iPhone\",\r\n    iPhone6: \"iPhone\",\r\n    iPhone6plus: \"iPhone\",\r\n    iPad: \"iPad\",\r\n    iPadMini: \"iPad Mini\",\r\n    androidPhone: \"Android Mobile\",\r\n    androidTablet: \"Android\",\r\n    msSurface: \"Windows ARM Tablet PC\",\r\n    desktop: \"desktop\"\r\n};\r\nvar DEFAULT_DEVICE = {\r\n    deviceType: \"desktop\",\r\n    platform: \"generic\",\r\n    version: [],\r\n    phone: false,\r\n    tablet: false,\r\n    android: false,\r\n    ios: false,\r\n    generic: true,\r\n    grade: \"A\",\r\n    mac: false\r\n};\r\nvar uaParsers = {\r\n    generic: function(userAgent) {\r\n        var isPhone = /windows phone/i.test(userAgent) || userAgent.match(/WPDesktop/);\r\n        var isTablet = !isPhone && /Windows(.*)arm(.*)Tablet PC/i.test(userAgent);\r\n        var isDesktop = !isPhone && !isTablet && /msapphost/i.test(userAgent);\r\n        var isMac = /((intel|ppc) mac os x)/.test(userAgent.toLowerCase());\r\n        if (!(isPhone || isTablet || isDesktop || isMac)) {\r\n            return\r\n        }\r\n        return {\r\n            deviceType: isPhone ? \"phone\" : isTablet ? \"tablet\" : \"desktop\",\r\n            platform: \"generic\",\r\n            version: [],\r\n            grade: \"A\",\r\n            mac: isMac\r\n        }\r\n    },\r\n    ios: function(userAgent) {\r\n        if (!/ip(hone|od|ad)/i.test(userAgent)) {\r\n            return\r\n        }\r\n        var isPhone = /ip(hone|od)/i.test(userAgent);\r\n        var matches = userAgent.match(/os (\\d+)_(\\d+)_?(\\d+)?/i);\r\n        var version = matches ? [parseInt(matches[1], 10), parseInt(matches[2], 10), parseInt(matches[3] || 0, 10)] : [];\r\n        var isIPhone4 = 480 === window.screen.height;\r\n        var grade = isIPhone4 ? \"B\" : \"A\";\r\n        return {\r\n            deviceType: isPhone ? \"phone\" : \"tablet\",\r\n            platform: \"ios\",\r\n            version: version,\r\n            grade: grade\r\n        }\r\n    },\r\n    android: function(userAgent) {\r\n        if (!/android|htc_|silk/i.test(userAgent)) {\r\n            return\r\n        }\r\n        var isPhone = /mobile/i.test(userAgent);\r\n        var matches = userAgent.match(/android (\\d+)\\.?(\\d+)?\\.?(\\d+)?/i);\r\n        var version = matches ? [parseInt(matches[1], 10), parseInt(matches[2] || 0, 10), parseInt(matches[3] || 0, 10)] : [];\r\n        var worseThan4_4 = version.length > 1 && (version[0] < 4 || 4 === version[0] && version[1] < 4);\r\n        var grade = worseThan4_4 ? \"B\" : \"A\";\r\n        return {\r\n            deviceType: isPhone ? \"phone\" : \"tablet\",\r\n            platform: \"android\",\r\n            version: version,\r\n            grade: grade\r\n        }\r\n    }\r\n};\r\nvar Devices = function() {\r\n    function Devices(options) {\r\n        _classCallCheck(this, Devices);\r\n        this._window = (null === options || void 0 === options ? void 0 : options.window) || window;\r\n        this._realDevice = this._getDevice();\r\n        this._currentDevice = void 0;\r\n        this._currentOrientation = void 0;\r\n        this._eventsStrategy = new _events_strategy.EventsStrategy(this);\r\n        this.changed = (0, _callbacks.default)();\r\n        if ((0, _window.hasWindow)()) {\r\n            _ready_callbacks.default.add(this._recalculateOrientation.bind(this));\r\n            _resize_callbacks.default.add(this._recalculateOrientation.bind(this))\r\n        }\r\n    }\r\n    _createClass(Devices, [{\r\n        key: \"current\",\r\n        value: function(deviceOrName) {\r\n            if (deviceOrName) {\r\n                this._currentDevice = this._getDevice(deviceOrName);\r\n                this._forced = true;\r\n                this.changed.fire();\r\n                return\r\n            }\r\n            if (!this._currentDevice) {\r\n                deviceOrName = void 0;\r\n                try {\r\n                    deviceOrName = this._getDeviceOrNameFromWindowScope()\r\n                } catch (e) {\r\n                    deviceOrName = this._getDeviceNameFromSessionStorage()\r\n                } finally {\r\n                    if (!deviceOrName) {\r\n                        deviceOrName = this._getDeviceNameFromSessionStorage()\r\n                    }\r\n                    if (deviceOrName) {\r\n                        this._forced = true\r\n                    }\r\n                }\r\n                this._currentDevice = this._getDevice(deviceOrName)\r\n            }\r\n            return this._currentDevice\r\n        }\r\n    }, {\r\n        key: \"real\",\r\n        value: function(forceDevice) {\r\n            return (0, _extend.extend)({}, this._realDevice)\r\n        }\r\n    }, {\r\n        key: \"orientation\",\r\n        value: function() {\r\n            return this._currentOrientation\r\n        }\r\n    }, {\r\n        key: \"isForced\",\r\n        value: function() {\r\n            return this._forced\r\n        }\r\n    }, {\r\n        key: \"isRippleEmulator\",\r\n        value: function() {\r\n            return !!this._window.tinyHippos\r\n        }\r\n    }, {\r\n        key: \"_getCssClasses\",\r\n        value: function(device) {\r\n            var result = [];\r\n            var realDevice = this._realDevice;\r\n            device = device || this.current();\r\n            if (device.deviceType) {\r\n                result.push(\"dx-device-\".concat(device.deviceType));\r\n                if (\"desktop\" !== device.deviceType) {\r\n                    result.push(\"dx-device-mobile\")\r\n                }\r\n            }\r\n            result.push(\"dx-device-\".concat(realDevice.platform));\r\n            if (realDevice.version && realDevice.version.length) {\r\n                result.push(\"dx-device-\".concat(realDevice.platform, \"-\").concat(realDevice.version[0]))\r\n            }\r\n            if (this.isSimulator()) {\r\n                result.push(\"dx-simulator\")\r\n            }\r\n            if ((0, _config.default)().rtlEnabled) {\r\n                result.push(\"dx-rtl\")\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"attachCssClasses\",\r\n        value: function(element, device) {\r\n            this._deviceClasses = this._getCssClasses(device).join(\" \");\r\n            (0, _renderer.default)(element).addClass(this._deviceClasses)\r\n        }\r\n    }, {\r\n        key: \"detachCssClasses\",\r\n        value: function(element) {\r\n            (0, _renderer.default)(element).removeClass(this._deviceClasses)\r\n        }\r\n    }, {\r\n        key: \"isSimulator\",\r\n        value: function() {\r\n            try {\r\n                return this._isSimulator || (0, _window.hasWindow)() && this._window.top !== this._window.self && this._window.top[\"dx-force-device\"] || this.isRippleEmulator()\r\n            } catch (e) {\r\n                return false\r\n            }\r\n        }\r\n    }, {\r\n        key: \"forceSimulator\",\r\n        value: function() {\r\n            this._isSimulator = true\r\n        }\r\n    }, {\r\n        key: \"_getDevice\",\r\n        value: function(deviceName) {\r\n            if (\"genericPhone\" === deviceName) {\r\n                deviceName = {\r\n                    deviceType: \"phone\",\r\n                    platform: \"generic\",\r\n                    generic: true\r\n                }\r\n            }\r\n            if ((0, _type.isPlainObject)(deviceName)) {\r\n                return this._fromConfig(deviceName)\r\n            } else {\r\n                var ua;\r\n                if (deviceName) {\r\n                    ua = KNOWN_UA_TABLE[deviceName];\r\n                    if (!ua) {\r\n                        throw _errors.default.Error(\"E0005\")\r\n                    }\r\n                } else {\r\n                    ua = navigator.userAgent\r\n                }\r\n                return this._fromUA(ua)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getDeviceOrNameFromWindowScope\",\r\n        value: function() {\r\n            var result;\r\n            if ((0, _window.hasWindow)() && (this._window.top[\"dx-force-device-object\"] || this._window.top[\"dx-force-device\"])) {\r\n                result = this._window.top[\"dx-force-device-object\"] || this._window.top[\"dx-force-device\"]\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getDeviceNameFromSessionStorage\",\r\n        value: function() {\r\n            var sessionStorage = (0, _storage.sessionStorage)();\r\n            if (!sessionStorage) {\r\n                return\r\n            }\r\n            var deviceOrName = sessionStorage.getItem(\"dx-force-device\");\r\n            try {\r\n                return JSON.parse(deviceOrName)\r\n            } catch (ex) {\r\n                return deviceOrName\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_fromConfig\",\r\n        value: function(config) {\r\n            var result = (0, _extend.extend)({}, DEFAULT_DEVICE, this._currentDevice, config);\r\n            var shortcuts = {\r\n                phone: \"phone\" === result.deviceType,\r\n                tablet: \"tablet\" === result.deviceType,\r\n                android: \"android\" === result.platform,\r\n                ios: \"ios\" === result.platform,\r\n                generic: \"generic\" === result.platform\r\n            };\r\n            return (0, _extend.extend)(result, shortcuts)\r\n        }\r\n    }, {\r\n        key: \"_fromUA\",\r\n        value: function(ua) {\r\n            var config;\r\n            (0, _iterator.each)(uaParsers, function(platform, parser) {\r\n                config = parser(ua);\r\n                return !config\r\n            });\r\n            if (config) {\r\n                return this._fromConfig(config)\r\n            }\r\n            return DEFAULT_DEVICE\r\n        }\r\n    }, {\r\n        key: \"_changeOrientation\",\r\n        value: function() {\r\n            var $window = (0, _renderer.default)(this._window);\r\n            var orientation = $window.height() > $window.width() ? \"portrait\" : \"landscape\";\r\n            if (this._currentOrientation === orientation) {\r\n                return\r\n            }\r\n            this._currentOrientation = orientation;\r\n            this._eventsStrategy.fireEvent(\"orientationChanged\", [{\r\n                orientation: orientation\r\n            }])\r\n        }\r\n    }, {\r\n        key: \"_recalculateOrientation\",\r\n        value: function() {\r\n            var windowWidth = (0, _renderer.default)(this._window).width();\r\n            if (this._currentWidth === windowWidth) {\r\n                return\r\n            }\r\n            this._currentWidth = windowWidth;\r\n            this._changeOrientation()\r\n        }\r\n    }, {\r\n        key: \"on\",\r\n        value: function(eventName, eventHandler) {\r\n            this._eventsStrategy.on(eventName, eventHandler);\r\n            return this\r\n        }\r\n    }, {\r\n        key: \"off\",\r\n        value: function(eventName, eventHandler) {\r\n            this._eventsStrategy.off(eventName, eventHandler);\r\n            return this\r\n        }\r\n    }]);\r\n    return Devices\r\n}();\r\nvar devices = new Devices;\r\n_view_port.changeCallback.add(function(viewPort, prevViewport) {\r\n    devices.detachCssClasses(prevViewport);\r\n    devices.attachCssClasses(viewPort)\r\n});\r\nvar _default = devices;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.header_filter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core3 = require(\"./ui.grid_core.header_filter_core\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATE_INTERVAL_FORMATS = {\r\n    month: function(value) {\r\n        return _date.default.getMonthNames()[value - 1]\r\n    },\r\n    quarter: function(value) {\r\n        return _date.default.format(new Date(2e3, 3 * value - 1), \"quarter\")\r\n    }\r\n};\r\nvar HeaderFilterController = _uiGrid_core.default.ViewController.inherit(function() {\r\n    var getFormatOptions = function(value, column, currentLevel) {\r\n        var groupInterval = _filtering.default.getGroupInterval(column);\r\n        var result = _uiGrid_core2.default.getFormatOptionsByColumn(column, \"headerFilter\");\r\n        if (groupInterval) {\r\n            result.groupInterval = groupInterval[currentLevel];\r\n            if (_uiGrid_core2.default.isDateType(column.dataType)) {\r\n                result.format = DATE_INTERVAL_FORMATS[groupInterval[currentLevel]]\r\n            } else {\r\n                if (\"number\" === column.dataType) {\r\n                    result.getDisplayFormat = function() {\r\n                        var formatOptions = {\r\n                            format: column.format,\r\n                            target: \"headerFilter\"\r\n                        };\r\n                        var firstValueText = _uiGrid_core2.default.formatValue(value, formatOptions);\r\n                        var secondValue = value + groupInterval[currentLevel];\r\n                        var secondValueText = _uiGrid_core2.default.formatValue(secondValue, formatOptions);\r\n                        return firstValueText && secondValueText ? firstValueText + \" - \" + secondValueText : \"\"\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    };\r\n    return {\r\n        init: function() {\r\n            this._columnsController = this.getController(\"columns\");\r\n            this._dataController = this.getController(\"data\");\r\n            this._headerFilterView = this.getView(\"headerFilterView\")\r\n        },\r\n        _updateSelectedState: function(items, column) {\r\n            var i = items.length;\r\n            var isExclude = \"exclude\" === column.filterType;\r\n            while (i--) {\r\n                var item = items[i];\r\n                if (\"items\" in items[i]) {\r\n                    this._updateSelectedState(items[i].items, column)\r\n                }(0, _uiGrid_core3.updateHeaderFilterItemSelectionState)(item, _uiGrid_core2.default.getIndexByKey(items[i].value, column.filterValues, null) > -1, isExclude)\r\n            }\r\n        },\r\n        _normalizeGroupItem: function(item, currentLevel, options) {\r\n            var value;\r\n            var displayValue;\r\n            var path = options.path;\r\n            var valueSelector = options.valueSelector;\r\n            var displaySelector = options.displaySelector;\r\n            var column = options.column;\r\n            if (valueSelector && displaySelector) {\r\n                value = valueSelector(item);\r\n                displayValue = displaySelector(item)\r\n            } else {\r\n                value = item.key;\r\n                displayValue = value\r\n            }\r\n            if (!(0, _type.isObject)(item)) {\r\n                item = {}\r\n            } else {\r\n                item = (0, _extend.extend)({}, item)\r\n            }\r\n            path.push(value);\r\n            if (1 === path.length) {\r\n                item.value = path[0]\r\n            } else {\r\n                item.value = path.join(\"/\")\r\n            }\r\n            item.text = this.getHeaderItemText(displayValue, column, currentLevel, options.headerFilterOptions);\r\n            return item\r\n        },\r\n        getHeaderItemText: function(displayValue, column, currentLevel, headerFilterOptions) {\r\n            var text = _uiGrid_core2.default.formatValue(displayValue, getFormatOptions(displayValue, column, currentLevel));\r\n            if (!text) {\r\n                text = headerFilterOptions.texts.emptyValue\r\n            }\r\n            return text\r\n        },\r\n        _processGroupItems: function(groupItems, currentLevel, path, options) {\r\n            var that = this;\r\n            var displaySelector;\r\n            var valueSelector;\r\n            var column = options.column;\r\n            var lookup = column.lookup;\r\n            var level = options.level;\r\n            path = path || [];\r\n            currentLevel = currentLevel || 0;\r\n            if (lookup) {\r\n                displaySelector = (0, _data.compileGetter)(lookup.displayExpr);\r\n                valueSelector = (0, _data.compileGetter)(lookup.valueExpr)\r\n            }\r\n            for (var i = 0; i < groupItems.length; i++) {\r\n                groupItems[i] = that._normalizeGroupItem(groupItems[i], currentLevel, {\r\n                    column: options.column,\r\n                    headerFilterOptions: options.headerFilterOptions,\r\n                    displaySelector: displaySelector,\r\n                    valueSelector: valueSelector,\r\n                    path: path\r\n                });\r\n                if (\"items\" in groupItems[i]) {\r\n                    if (currentLevel === level || !(0, _type.isDefined)(groupItems[i].value)) {\r\n                        delete groupItems[i].items\r\n                    } else {\r\n                        that._processGroupItems(groupItems[i].items, currentLevel + 1, path, options)\r\n                    }\r\n                }\r\n                path.pop()\r\n            }\r\n        },\r\n        getDataSource: function(column) {\r\n            var that = this;\r\n            var dataSource = that._dataController.dataSource();\r\n            var group = _uiGrid_core2.default.getHeaderFilterGroupParameters(column, dataSource && dataSource.remoteOperations().grouping);\r\n            var headerFilterDataSource = column.headerFilter && column.headerFilter.dataSource;\r\n            var headerFilterOptions = that.option(\"headerFilter\");\r\n            var isLookup = false;\r\n            var options = {\r\n                component: that.component\r\n            };\r\n            if (!dataSource) {\r\n                return\r\n            }\r\n            if ((0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) {\r\n                options.dataSource = (0, _utils.normalizeDataSourceOptions)(headerFilterDataSource)\r\n            } else {\r\n                if (column.lookup) {\r\n                    isLookup = true;\r\n                    var lookupDataSourceOptions;\r\n                    if (column.lookup.items) {\r\n                        lookupDataSourceOptions = column.lookup.items\r\n                    } else {\r\n                        lookupDataSourceOptions = column.lookup.dataSource;\r\n                        if ((0, _type.isFunction)(lookupDataSourceOptions) && !_variable_wrapper.default.isWrapped(lookupDataSourceOptions)) {\r\n                            lookupDataSourceOptions = lookupDataSourceOptions({})\r\n                        }\r\n                    }\r\n                    options.dataSource = (0, _utils.normalizeDataSourceOptions)(lookupDataSourceOptions)\r\n                } else {\r\n                    var cutoffLevel = Array.isArray(group) ? group.length - 1 : 0;\r\n                    that._currentColumn = column;\r\n                    var filter = that._dataController.getCombinedFilter();\r\n                    that._currentColumn = null;\r\n                    options.dataSource = {\r\n                        filter: filter,\r\n                        group: group,\r\n                        useDefaultSearch: true,\r\n                        load: function(options) {\r\n                            var d = new _deferred.Deferred;\r\n                            options.dataField = column.dataField || column.name;\r\n                            dataSource.load(options).done(function(data) {\r\n                                that._processGroupItems(data, null, null, {\r\n                                    level: cutoffLevel,\r\n                                    column: column,\r\n                                    headerFilterOptions: headerFilterOptions\r\n                                });\r\n                                d.resolve(data)\r\n                            }).fail(d.reject);\r\n                            return d\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if ((0, _type.isFunction)(headerFilterDataSource)) {\r\n                headerFilterDataSource.call(column, options)\r\n            }\r\n            var origPostProcess = options.dataSource.postProcess;\r\n            options.dataSource.postProcess = function(data) {\r\n                var items = data;\r\n                if (isLookup) {\r\n                    if (0 === this.pageIndex() && !this.searchValue()) {\r\n                        items = items.slice(0);\r\n                        items.unshift(null)\r\n                    }\r\n                    that._processGroupItems(items, null, null, {\r\n                        level: 0,\r\n                        column: column,\r\n                        headerFilterOptions: headerFilterOptions\r\n                    })\r\n                }\r\n                items = origPostProcess && origPostProcess.call(this, items) || items;\r\n                that._updateSelectedState(items, column);\r\n                return items\r\n            };\r\n            return options.dataSource\r\n        },\r\n        getCurrentColumn: function() {\r\n            return this._currentColumn\r\n        },\r\n        showHeaderFilterMenu: function(columnIndex, isGroupPanel) {\r\n            var columnsController = this._columnsController;\r\n            var column = (0, _extend.extend)(true, {}, this._columnsController.getColumns()[columnIndex]);\r\n            if (column) {\r\n                var visibleIndex = columnsController.getVisibleIndex(columnIndex);\r\n                var view = isGroupPanel ? this.getView(\"headerPanel\") : this.getView(\"columnHeadersView\");\r\n                var $columnElement = $columnElement || view.getColumnElements().eq(isGroupPanel ? column.groupIndex : visibleIndex);\r\n                this.showHeaderFilterMenuBase({\r\n                    columnElement: $columnElement,\r\n                    column: column,\r\n                    applyFilter: true,\r\n                    apply: function() {\r\n                        columnsController.columnOption(columnIndex, {\r\n                            filterValues: this.filterValues,\r\n                            filterType: this.filterType\r\n                        })\r\n                    }\r\n                })\r\n            }\r\n        },\r\n        showHeaderFilterMenuBase: function(options) {\r\n            var _this = this;\r\n            var that = this;\r\n            var column = options.column;\r\n            if (column) {\r\n                var groupInterval = _filtering.default.getGroupInterval(column);\r\n                var dataSource = that._dataController.dataSource();\r\n                var remoteFiltering = dataSource && dataSource.remoteOperations().filtering;\r\n                (0, _extend.extend)(options, column, {\r\n                    type: groupInterval && groupInterval.length > 1 ? \"tree\" : \"list\",\r\n                    remoteFiltering: remoteFiltering,\r\n                    onShowing: function(e) {\r\n                        var dxResizableInstance = e.component.overlayContent().dxResizable(\"instance\");\r\n                        dxResizableInstance && dxResizableInstance.option(\"onResizeEnd\", function(e) {\r\n                            var columnsController = that.getController(\"columns\");\r\n                            var headerFilterByColumn = columnsController.columnOption(options.dataField, \"headerFilter\");\r\n                            headerFilterByColumn = headerFilterByColumn || {};\r\n                            headerFilterByColumn.width = e.width;\r\n                            headerFilterByColumn.height = e.height;\r\n                            columnsController.columnOption(options.dataField, \"headerFilter\", headerFilterByColumn, true)\r\n                        })\r\n                    },\r\n                    onHidden: function() {\r\n                        return (0, _accessibility.restoreFocus)(_this)\r\n                    }\r\n                });\r\n                options.dataSource = that.getDataSource(options);\r\n                if (options.isFilterBuilder) {\r\n                    options.dataSource.filter = null;\r\n                    options.alignment = \"right\"\r\n                }\r\n                that._headerFilterView.showHeaderFilterMenu(options.columnElement, options)\r\n            }\r\n        },\r\n        hideHeaderFilterMenu: function() {\r\n            this._headerFilterView.hideHeaderFilterMenu()\r\n        }\r\n    }\r\n}());\r\nvar ColumnHeadersViewHeaderFilterExtender = (0, _extend.extend)({}, _uiGrid_core3.headerFilterMixin, {\r\n    _renderCellContent: function($cell, options) {\r\n        var that = this;\r\n        var $headerFilterIndicator;\r\n        var column = options.column;\r\n        if (!column.command && (0, _uiGrid_core3.allowHeaderFiltering)(column) && that.option(\"headerFilter.visible\") && \"header\" === options.rowType) {\r\n            $headerFilterIndicator = that._applyColumnState({\r\n                name: \"headerFilter\",\r\n                rootElement: $cell,\r\n                column: column,\r\n                showColumnLines: that.option(\"showColumnLines\")\r\n            });\r\n            $headerFilterIndicator && that._subscribeToIndicatorEvent($headerFilterIndicator, column, \"headerFilter\")\r\n        }\r\n        that.callBase($cell, options)\r\n    },\r\n    _subscribeToIndicatorEvent: function($indicator, column, indicatorName) {\r\n        var that = this;\r\n        if (\"headerFilter\" === indicatorName) {\r\n            _events_engine.default.on($indicator, _click.name, that.createAction(function(e) {\r\n                e.event.stopPropagation();\r\n                that.getController(\"headerFilter\").showHeaderFilterMenu(column.index, false)\r\n            }))\r\n        }\r\n    },\r\n    _updateIndicator: function($cell, column, indicatorName) {\r\n        var $indicator = this.callBase($cell, column, indicatorName);\r\n        $indicator && this._subscribeToIndicatorEvent($indicator, column, indicatorName)\r\n    },\r\n    _updateHeaderFilterIndicators: function() {\r\n        if (this.option(\"headerFilter.visible\")) {\r\n            this._updateIndicators(\"headerFilter\")\r\n        }\r\n    },\r\n    _needUpdateFilterIndicators: function() {\r\n        return true\r\n    },\r\n    _columnOptionChanged: function(e) {\r\n        var optionNames = e.optionNames;\r\n        if (_uiGrid_core2.default.checkChanges(optionNames, [\"filterValues\", \"filterType\"])) {\r\n            if (this._needUpdateFilterIndicators()) {\r\n                this._updateHeaderFilterIndicators()\r\n            }\r\n            return\r\n        }\r\n        this.callBase(e)\r\n    }\r\n});\r\nvar HeaderPanelHeaderFilterExtender = (0, _extend.extend)({}, _uiGrid_core3.headerFilterMixin, {\r\n    _createGroupPanelItem: function($rootElement, groupColumn) {\r\n        var that = this;\r\n        var $item = that.callBase.apply(that, arguments);\r\n        var $headerFilterIndicator;\r\n        if (!groupColumn.command && (0, _uiGrid_core3.allowHeaderFiltering)(groupColumn) && that.option(\"headerFilter.visible\")) {\r\n            $headerFilterIndicator = that._applyColumnState({\r\n                name: \"headerFilter\",\r\n                rootElement: $item,\r\n                column: {\r\n                    alignment: (0, _position.getDefaultAlignment)(that.option(\"rtlEnabled\")),\r\n                    filterValues: groupColumn.filterValues,\r\n                    allowHeaderFiltering: true\r\n                },\r\n                showColumnLines: true\r\n            });\r\n            $headerFilterIndicator && _events_engine.default.on($headerFilterIndicator, _click.name, that.createAction(function(e) {\r\n                var event = e.event;\r\n                event.stopPropagation();\r\n                that.getController(\"headerFilter\").showHeaderFilterMenu(groupColumn.index, true)\r\n            }))\r\n        }\r\n        return $item\r\n    }\r\n});\r\n\r\nfunction invertFilterExpression(filter) {\r\n    return [\"!\", filter]\r\n}\r\nvar DataControllerFilterRowExtender = {\r\n    skipCalculateColumnFilters: function() {\r\n        return false\r\n    },\r\n    _calculateAdditionalFilter: function() {\r\n        if (this.skipCalculateColumnFilters()) {\r\n            return this.callBase()\r\n        }\r\n        var that = this;\r\n        var filters = [that.callBase()];\r\n        var columns = that._columnsController.getVisibleColumns(null, true);\r\n        var headerFilterController = that.getController(\"headerFilter\");\r\n        var currentColumn = headerFilterController.getCurrentColumn();\r\n        (0, _iterator.each)(columns, function(_, column) {\r\n            var filter;\r\n            if (currentColumn && currentColumn.index === column.index) {\r\n                return\r\n            }\r\n            if ((0, _uiGrid_core3.allowHeaderFiltering)(column) && column.calculateFilterExpression && Array.isArray(column.filterValues) && column.filterValues.length) {\r\n                var filterValues = [];\r\n                (0, _iterator.each)(column.filterValues, function(_, filterValue) {\r\n                    if (Array.isArray(filterValue)) {\r\n                        filter = filterValue\r\n                    } else {\r\n                        if (column.deserializeValue && !_uiGrid_core2.default.isDateType(column.dataType) && \"number\" !== column.dataType) {\r\n                            filterValue = column.deserializeValue(filterValue)\r\n                        }\r\n                        filter = column.createFilterExpression(filterValue, \"=\", \"headerFilter\")\r\n                    }\r\n                    if (filter) {\r\n                        filter.columnIndex = column.index\r\n                    }\r\n                    filterValues.push(filter)\r\n                });\r\n                filterValues = _uiGrid_core2.default.combineFilters(filterValues, \"or\");\r\n                filters.push(\"exclude\" === column.filterType ? [\"!\", filterValues] : filterValues)\r\n            }\r\n        });\r\n        return _uiGrid_core2.default.combineFilters(filters)\r\n    }\r\n};\r\nvar _default = {\r\n    invertFilterExpression: invertFilterExpression,\r\n    defaultOptions: function() {\r\n        return {\r\n            headerFilter: {\r\n                visible: false,\r\n                width: 252,\r\n                height: 325,\r\n                allowSearch: false,\r\n                searchTimeout: 500,\r\n                texts: {\r\n                    emptyValue: _message.default.format(\"dxDataGrid-headerFilterEmptyValue\"),\r\n                    ok: _message.default.format(\"dxDataGrid-headerFilterOK\"),\r\n                    cancel: _message.default.format(\"dxDataGrid-headerFilterCancel\")\r\n                }\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        headerFilter: HeaderFilterController\r\n    },\r\n    views: {\r\n        headerFilterView: _uiGrid_core3.HeaderFilterView\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: DataControllerFilterRowExtender\r\n        },\r\n        views: {\r\n            columnHeadersView: ColumnHeadersViewHeaderFilterExtender,\r\n            headerPanel: HeaderPanelHeaderFilterExtender\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.data_source_adapter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"../data_grid/ui.data_grid.core\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _uiData_grid.default.Controller.inherit(function() {\r\n    function cloneItems(items, groupCount) {\r\n        if (items) {\r\n            items = items.slice(0);\r\n            if (groupCount) {\r\n                for (var i = 0; i < items.length; i++) {\r\n                    items[i] = (0, _extend.extend)({\r\n                        key: items[i].key\r\n                    }, items[i]);\r\n                    items[i].items = cloneItems(items[i].items, groupCount - 1)\r\n                }\r\n            }\r\n        }\r\n        return items\r\n    }\r\n\r\n    function calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload) {\r\n        var operationTypes = {\r\n            reload: true,\r\n            fullReload: true\r\n        };\r\n        if (lastLoadOptions) {\r\n            operationTypes = {\r\n                sorting: !_uiData_grid.default.equalSortParameters(loadOptions.sort, lastLoadOptions.sort),\r\n                grouping: !_uiData_grid.default.equalSortParameters(loadOptions.group, lastLoadOptions.group, true),\r\n                groupExpanding: !_uiData_grid.default.equalSortParameters(loadOptions.group, lastLoadOptions.group) || lastLoadOptions.groupExpand,\r\n                filtering: !_uiData_grid.default.equalFilterParameters(loadOptions.filter, lastLoadOptions.filter),\r\n                pageIndex: loadOptions.pageIndex !== lastLoadOptions.pageIndex,\r\n                skip: loadOptions.skip !== lastLoadOptions.skip,\r\n                take: loadOptions.take !== lastLoadOptions.take,\r\n                fullReload: isFullReload\r\n            };\r\n            operationTypes.reload = isFullReload || operationTypes.sorting || operationTypes.grouping || operationTypes.filtering;\r\n            operationTypes.paging = operationTypes.pageIndex || operationTypes.take\r\n        }\r\n        return operationTypes\r\n    }\r\n\r\n    function executeTask(action, timeout) {\r\n        if ((0, _type.isDefined)(timeout)) {\r\n            (0, _common.executeAsync)(action, timeout)\r\n        } else {\r\n            action()\r\n        }\r\n    }\r\n\r\n    function createEmptyPagesData() {\r\n        return {\r\n            pages: {}\r\n        }\r\n    }\r\n\r\n    function getPageDataFromCache(options) {\r\n        return options.cachedPagesData.pages[options.pageIndex]\r\n    }\r\n\r\n    function setPageDataToCache(options, data) {\r\n        var pageIndex = options.pageIndex;\r\n        if (void 0 !== pageIndex) {\r\n            options.cachedPagesData.pages[pageIndex] = data\r\n        }\r\n    }\r\n    return {\r\n        init: function(dataSource, remoteOperations) {\r\n            var that = this;\r\n            that._dataSource = dataSource;\r\n            that._remoteOperations = remoteOperations || {};\r\n            that._isLastPage = !dataSource.isLastPage();\r\n            that._hasLastPage = false;\r\n            that._currentTotalCount = 0;\r\n            that._cachedPagesData = createEmptyPagesData();\r\n            that._lastOperationTypes = {};\r\n            that._eventsStrategy = dataSource._eventsStrategy;\r\n            that._skipCorrection = 0;\r\n            that._isLoadingAll = false;\r\n            that.changed = (0, _callbacks.default)();\r\n            that.loadingChanged = (0, _callbacks.default)();\r\n            that.loadError = (0, _callbacks.default)();\r\n            that.customizeStoreLoadOptions = (0, _callbacks.default)();\r\n            that.changing = (0, _callbacks.default)();\r\n            that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n            that._dataLoadingHandler = that._handleDataLoading.bind(that);\r\n            that._dataLoadedHandler = that._handleDataLoaded.bind(that);\r\n            that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n            that._loadErrorHandler = that._handleLoadError.bind(that);\r\n            that._pushHandler = that._handlePush.bind(that);\r\n            that._changingHandler = that._handleChanging.bind(that);\r\n            dataSource.on(\"changed\", that._dataChangedHandler);\r\n            dataSource.on(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n            dataSource.on(\"customizeLoadResult\", that._dataLoadedHandler);\r\n            dataSource.on(\"loadingChanged\", that._loadingChangedHandler);\r\n            dataSource.on(\"loadError\", that._loadErrorHandler);\r\n            dataSource.on(\"changing\", that._changingHandler);\r\n            dataSource.store().on(\"push\", that._pushHandler);\r\n            (0, _iterator.each)(dataSource, function(memberName, member) {\r\n                if (!that[memberName] && (0, _type.isFunction)(member)) {\r\n                    that[memberName] = function() {\r\n                        return this._dataSource[memberName].apply(this._dataSource, arguments)\r\n                    }\r\n                }\r\n            })\r\n        },\r\n        remoteOperations: function() {\r\n            return this._remoteOperations\r\n        },\r\n        dispose: function(isSharedDataSource) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var store = dataSource.store();\r\n            dataSource.off(\"changed\", that._dataChangedHandler);\r\n            dataSource.off(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n            dataSource.off(\"customizeLoadResult\", that._dataLoadedHandler);\r\n            dataSource.off(\"loadingChanged\", that._loadingChangedHandler);\r\n            dataSource.off(\"loadError\", that._loadErrorHandler);\r\n            dataSource.off(\"changing\", that._changingHandler);\r\n            store && store.off(\"push\", that._pushHandler);\r\n            if (!isSharedDataSource) {\r\n                dataSource.dispose()\r\n            }\r\n        },\r\n        refresh: function(options, operationTypes) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            if (operationTypes.reload) {\r\n                that.resetCurrentTotalCount();\r\n                that._isLastPage = !dataSource.paginate();\r\n                that._hasLastPage = that._isLastPage\r\n            }\r\n        },\r\n        resetCurrentTotalCount: function() {\r\n            this._currentTotalCount = 0;\r\n            this._skipCorrection = 0\r\n        },\r\n        resetCache: function() {\r\n            this._cachedStoreData = void 0;\r\n            this._cachedPagingData = void 0\r\n        },\r\n        resetPagesCache: function() {\r\n            this._cachedPagesData = createEmptyPagesData()\r\n        },\r\n        _needClearStoreDataCache: function() {\r\n            var remoteOperations = this.remoteOperations();\r\n            var operationTypes = calculateOperationTypes(this._lastLoadOptions || {}, {});\r\n            var isLocalOperations = Object.keys(remoteOperations).every(function(operationName) {\r\n                return !operationTypes[operationName] || !remoteOperations[operationName]\r\n            });\r\n            return !isLocalOperations\r\n        },\r\n        push: function(changes, fromStore) {\r\n            var store = this.store();\r\n            if (this._needClearStoreDataCache()) {\r\n                this._cachedStoreData = void 0\r\n            }\r\n            this._cachedPagingData = void 0;\r\n            this.resetPagesCache(true);\r\n            if (this._cachedStoreData) {\r\n                (0, _array_utils.applyBatch)({\r\n                    keyInfo: store,\r\n                    data: this._cachedStoreData,\r\n                    changes: changes\r\n                })\r\n            }\r\n            if (!fromStore) {\r\n                this._applyBatch(changes)\r\n            }\r\n        },\r\n        getDataIndexGetter: function() {\r\n            var _this = this;\r\n            if (!this._dataIndexGetter) {\r\n                var indexByKey;\r\n                var storeData;\r\n                var store = this.store();\r\n                this._dataIndexGetter = function(data) {\r\n                    var isCacheUpdated = storeData && storeData !== _this._cachedStoreData;\r\n                    if (!indexByKey || isCacheUpdated) {\r\n                        storeData = _this._cachedStoreData || [];\r\n                        indexByKey = {};\r\n                        for (var i = 0; i < storeData.length; i++) {\r\n                            indexByKey[(0, _common.getKeyHash)(store.keyOf(storeData[i]))] = i\r\n                        }\r\n                    }\r\n                    return indexByKey[(0, _common.getKeyHash)(store.keyOf(data))]\r\n                }\r\n            }\r\n            return this._dataIndexGetter\r\n        },\r\n        _getKeyInfo: function() {\r\n            return this.store()\r\n        },\r\n        _applyBatch: function(changes) {\r\n            var _this2 = this;\r\n            var keyInfo = this._getKeyInfo();\r\n            var dataSource = this._dataSource;\r\n            var groupCount = _uiData_grid.default.normalizeSortingInfo(this.group()).length;\r\n            var totalCount = this.totalCount();\r\n            var isVirtualMode = \"virtual\" === this.option(\"scrolling.mode\");\r\n            changes = changes.filter(function(change) {\r\n                return !dataSource.paginate() || \"insert\" !== change.type || void 0 !== change.index\r\n            });\r\n            var getItemCount = function() {\r\n                return groupCount ? _this2.itemsCount() : _this2._items.length\r\n            };\r\n            var oldItemCount = getItemCount();\r\n            (0, _array_utils.applyBatch)({\r\n                keyInfo: keyInfo,\r\n                data: this._items,\r\n                changes: changes,\r\n                groupCount: groupCount,\r\n                useInsertIndex: true\r\n            });\r\n            (0, _array_utils.applyBatch)({\r\n                keyInfo: keyInfo,\r\n                data: dataSource.items(),\r\n                changes: changes,\r\n                groupCount: groupCount,\r\n                useInsertIndex: true\r\n            });\r\n            if (this._currentTotalCount > 0 || isVirtualMode && totalCount === oldItemCount) {\r\n                this._skipCorrection += getItemCount() - oldItemCount\r\n            }\r\n            changes.splice(0, changes.length)\r\n        },\r\n        _handlePush: function(changes) {\r\n            this.push(changes, true)\r\n        },\r\n        _handleChanging: function(e) {\r\n            this.changing.fire(e);\r\n            this._applyBatch(e.changes)\r\n        },\r\n        _needCleanCacheByOperation: function(operationType, remoteOperations) {\r\n            var operationTypesByOrder = [\"filtering\", \"sorting\", \"paging\"];\r\n            var operationTypeIndex = operationTypesByOrder.indexOf(operationType);\r\n            var currentOperationTypes = operationTypeIndex >= 0 ? operationTypesByOrder.slice(operationTypeIndex) : [operationType];\r\n            return currentOperationTypes.some(function(operationType) {\r\n                return remoteOperations[operationType]\r\n            })\r\n        },\r\n        _customizeRemoteOperations: function(options, operationTypes) {\r\n            var that = this;\r\n            var cachedStoreData = that._cachedStoreData;\r\n            var cachedPagingData = that._cachedPagingData;\r\n            var cachedPagesData = that._cachedPagesData;\r\n            if (options.storeLoadOptions.filter && !options.remoteOperations.filtering || options.storeLoadOptions.sort && !options.remoteOperations.sorting) {\r\n                options.remoteOperations = {\r\n                    filtering: options.remoteOperations.filtering\r\n                }\r\n            }\r\n            if (operationTypes.fullReload) {\r\n                cachedStoreData = void 0;\r\n                cachedPagingData = void 0;\r\n                cachedPagesData = createEmptyPagesData()\r\n            } else {\r\n                if (operationTypes.reload) {\r\n                    cachedPagingData = void 0;\r\n                    cachedPagesData = createEmptyPagesData()\r\n                } else {\r\n                    if (operationTypes.take || operationTypes.groupExpanding) {\r\n                        cachedPagesData = createEmptyPagesData()\r\n                    }\r\n                }(0, _iterator.each)(operationTypes, function(operationType, value) {\r\n                    if (value && that._needCleanCacheByOperation(operationType, options.remoteOperations)) {\r\n                        cachedStoreData = void 0;\r\n                        cachedPagingData = void 0\r\n                    }\r\n                })\r\n            }\r\n            if (cachedPagingData) {\r\n                options.remoteOperations.paging = false\r\n            }\r\n            options.cachedStoreData = cachedStoreData;\r\n            options.cachedPagingData = cachedPagingData;\r\n            options.cachedPagesData = cachedPagesData;\r\n            if (!options.isCustomLoading) {\r\n                that._cachedStoreData = cachedStoreData;\r\n                that._cachedPagingData = cachedPagingData;\r\n                that._cachedPagesData = cachedPagesData\r\n            }\r\n        },\r\n        _handleDataLoading: function(options) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var lastLoadOptions = that._lastLoadOptions;\r\n            that.customizeStoreLoadOptions.fire(options);\r\n            options.delay = this.option(\"loadingTimeout\");\r\n            options.originalStoreLoadOptions = options.storeLoadOptions;\r\n            options.remoteOperations = (0, _extend.extend)({}, this.remoteOperations());\r\n            var isFullReload = !that.isLoaded() && !that._isRefreshing;\r\n            if (that.option(\"integrationOptions.renderedOnServer\") && !that.isLoaded()) {\r\n                options.delay = void 0\r\n            }\r\n            var loadOptions = (0, _extend.extend)({\r\n                pageIndex: that.pageIndex()\r\n            }, options.storeLoadOptions);\r\n            var operationTypes = calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload);\r\n            that._customizeRemoteOperations(options, operationTypes);\r\n            if (!options.isCustomLoading) {\r\n                var isRefreshing = that._isRefreshing;\r\n                options.pageIndex = dataSource.pageIndex();\r\n                options.lastLoadOptions = loadOptions;\r\n                options.operationTypes = operationTypes;\r\n                that._loadingOperationTypes = operationTypes;\r\n                that._isRefreshing = true;\r\n                (0, _deferred.when)(isRefreshing || that._isRefreshed || that.refresh(options, operationTypes)).done(function() {\r\n                    if (that._lastOperationId === options.operationId) {\r\n                        that._isRefreshed = true;\r\n                        that.load().always(function() {\r\n                            that._isRefreshed = false\r\n                        })\r\n                    }\r\n                }).fail(function() {\r\n                    dataSource.cancel(options.operationId)\r\n                }).always(function() {\r\n                    that._isRefreshing = false\r\n                });\r\n                dataSource.cancel(that._lastOperationId);\r\n                that._lastOperationId = options.operationId;\r\n                if (that._isRefreshing) {\r\n                    dataSource.cancel(that._lastOperationId)\r\n                }\r\n            }\r\n            this._handleDataLoadingCore(options)\r\n        },\r\n        _handleDataLoadingCore: function(options) {\r\n            var remoteOperations = options.remoteOperations;\r\n            options.loadOptions = {};\r\n            var cachedExtra = options.cachedPagesData.extra;\r\n            var localLoadOptionNames = {\r\n                filter: !remoteOperations.filtering,\r\n                sort: !remoteOperations.sorting,\r\n                group: !remoteOperations.grouping,\r\n                summary: !remoteOperations.summary,\r\n                skip: !remoteOperations.paging,\r\n                take: !remoteOperations.paging,\r\n                requireTotalCount: cachedExtra && \"totalCount\" in cachedExtra || !remoteOperations.paging\r\n            };\r\n            (0, _iterator.each)(options.storeLoadOptions, function(optionName, optionValue) {\r\n                if (localLoadOptionNames[optionName]) {\r\n                    options.loadOptions[optionName] = optionValue;\r\n                    delete options.storeLoadOptions[optionName]\r\n                }\r\n            });\r\n            if (cachedExtra) {\r\n                options.extra = cachedExtra\r\n            }\r\n            options.data = getPageDataFromCache(options) || options.cachedStoreData\r\n        },\r\n        _handleDataLoaded: function(options) {\r\n            var _this3 = this;\r\n            var loadOptions = options.loadOptions;\r\n            var localPaging = options.remoteOperations && !options.remoteOperations.paging;\r\n            var cachedPagesData = options.cachedPagesData;\r\n            var storeLoadOptions = options.storeLoadOptions;\r\n            var needCache = false !== this.option(\"cacheEnabled\") && storeLoadOptions;\r\n            var needPageCache = needCache && !options.isCustomLoading && cachedPagesData && (!localPaging || storeLoadOptions.group) && !this.option(\"legacyRendering\");\r\n            var needPagingCache = needCache && localPaging;\r\n            var needStoreCache = needPagingCache && !options.isCustomLoading;\r\n            if (!loadOptions) {\r\n                this._dataSource.cancel(options.operationId);\r\n                return\r\n            }\r\n            if (options.lastLoadOptions) {\r\n                this._lastLoadOptions = options.lastLoadOptions;\r\n                Object.keys(options.operationTypes).forEach(function(operationType) {\r\n                    _this3._lastOperationTypes[operationType] = _this3._lastOperationTypes[operationType] || options.operationTypes[operationType]\r\n                })\r\n            }\r\n            if (localPaging) {\r\n                options.skip = loadOptions.skip;\r\n                options.take = loadOptions.take;\r\n                delete loadOptions.skip;\r\n                delete loadOptions.take\r\n            }\r\n            if (loadOptions.group) {\r\n                loadOptions.group = options.group || loadOptions.group\r\n            }\r\n            var groupCount = _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group || loadOptions.group).length;\r\n            if (!needPageCache || !getPageDataFromCache(options)) {\r\n                if (needPagingCache && options.cachedPagingData) {\r\n                    options.data = cloneItems(options.cachedPagingData, groupCount)\r\n                } else {\r\n                    if (needStoreCache) {\r\n                        if (!this._cachedStoreData) {\r\n                            this._cachedStoreData = cloneItems(options.data, _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group).length)\r\n                        } else {\r\n                            if (options.mergeStoreLoadData) {\r\n                                options.data = this._cachedStoreData = this._cachedStoreData.concat(options.data)\r\n                            }\r\n                        }\r\n                    }\r\n                    new _array_store.default(options.data).load(loadOptions).done(function(data) {\r\n                        options.data = data;\r\n                        if (needStoreCache) {\r\n                            _this3._cachedPagingData = cloneItems(options.data, groupCount)\r\n                        }\r\n                    }).fail(function(error) {\r\n                        options.data = (new _deferred.Deferred).reject(error)\r\n                    })\r\n                }\r\n                if (loadOptions.requireTotalCount && localPaging) {\r\n                    options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {};\r\n                    options.extra.totalCount = options.data.length\r\n                }\r\n                if (options.extra && options.extra.totalCount >= 0 && (false === storeLoadOptions.requireTotalCount || false === loadOptions.requireTotalCount)) {\r\n                    options.extra.totalCount = -1\r\n                }\r\n                this._handleDataLoadedCore(options);\r\n                if (needPageCache) {\r\n                    cachedPagesData.extra = cachedPagesData.extra || (0, _extend.extend)({}, options.extra);\r\n                    (0, _deferred.when)(options.data).done(function(data) {\r\n                        setPageDataToCache(options, cloneItems(data, groupCount))\r\n                    })\r\n                }\r\n            }\r\n            options.storeLoadOptions = options.originalStoreLoadOptions\r\n        },\r\n        _handleDataLoadedCore: function(options) {\r\n            if (options.remoteOperations && !options.remoteOperations.paging && Array.isArray(options.data)) {\r\n                if (void 0 !== options.skip) {\r\n                    options.data = options.data.slice(options.skip)\r\n                }\r\n                if (void 0 !== options.take) {\r\n                    options.data = options.data.slice(0, options.take)\r\n                }\r\n            }\r\n        },\r\n        _handleLoadingChanged: function(isLoading) {\r\n            this.loadingChanged.fire(isLoading)\r\n        },\r\n        _handleLoadError: function(error) {\r\n            this.loadError.fire(error);\r\n            this.changed.fire({\r\n                changeType: \"loadError\",\r\n                error: error\r\n            })\r\n        },\r\n        _handleDataChanged: function(args) {\r\n            var that = this;\r\n            var currentTotalCount;\r\n            var dataSource = that._dataSource;\r\n            var isLoading = false;\r\n            var itemsCount = that.itemsCount();\r\n            that._isLastPage = !itemsCount || !that.pageSize() || itemsCount < that.pageSize();\r\n            if (that._isLastPage) {\r\n                that._hasLastPage = true\r\n            }\r\n            if (dataSource.totalCount() >= 0) {\r\n                if (dataSource.pageIndex() >= that.pageCount()) {\r\n                    dataSource.pageIndex(that.pageCount() - 1);\r\n                    that.pageIndex(dataSource.pageIndex());\r\n                    that.resetPagesCache();\r\n                    dataSource.load();\r\n                    isLoading = true\r\n                }\r\n            } else {\r\n                if (!args || (0, _type.isDefined)(args.changeType)) {\r\n                    currentTotalCount = dataSource.pageIndex() * that.pageSize() + itemsCount;\r\n                    that._currentTotalCount = Math.max(that._currentTotalCount, currentTotalCount);\r\n                    if (0 === itemsCount && dataSource.pageIndex() >= that.pageCount()) {\r\n                        dataSource.pageIndex(that.pageCount() - 1);\r\n                        if (\"infinite\" !== that.option(\"scrolling.mode\")) {\r\n                            dataSource.load();\r\n                            isLoading = true\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (!isLoading) {\r\n                that._operationTypes = that._lastOperationTypes;\r\n                that._lastOperationTypes = {};\r\n                that.component._optionCache = {};\r\n                that.changed.fire(args);\r\n                that.component._optionCache = void 0\r\n            }\r\n        },\r\n        _scheduleCustomLoadCallbacks: function(deferred) {\r\n            var that = this;\r\n            that._isCustomLoading = true;\r\n            deferred.always(function() {\r\n                that._isCustomLoading = false\r\n            })\r\n        },\r\n        loadingOperationTypes: function() {\r\n            return this._loadingOperationTypes\r\n        },\r\n        operationTypes: function() {\r\n            return this._operationTypes\r\n        },\r\n        lastLoadOptions: function() {\r\n            return this._lastLoadOptions || {}\r\n        },\r\n        isLastPage: function() {\r\n            return this._isLastPage\r\n        },\r\n        totalCount: function() {\r\n            return parseInt((this._currentTotalCount || this._dataSource.totalCount()) + this._skipCorrection)\r\n        },\r\n        itemsCount: function() {\r\n            return this._dataSource.items().length\r\n        },\r\n        totalItemsCount: function() {\r\n            return this.totalCount()\r\n        },\r\n        pageSize: function() {\r\n            var dataSource = this._dataSource;\r\n            if (!arguments.length && !dataSource.paginate()) {\r\n                return 0\r\n            }\r\n            return dataSource.pageSize.apply(dataSource, arguments)\r\n        },\r\n        pageCount: function() {\r\n            var that = this;\r\n            var count = that.totalItemsCount() - that._skipCorrection;\r\n            var pageSize = that.pageSize();\r\n            if (pageSize && count > 0) {\r\n                return Math.max(1, Math.ceil(count / pageSize))\r\n            }\r\n            return 1\r\n        },\r\n        hasKnownLastPage: function() {\r\n            return this._hasLastPage || this._dataSource.totalCount() >= 0\r\n        },\r\n        loadFromStore: function(loadOptions, store) {\r\n            var dataSource = this._dataSource;\r\n            var d = new _deferred.Deferred;\r\n            if (!dataSource) {\r\n                return\r\n            }\r\n            store = store || dataSource.store();\r\n            store.load(loadOptions).done(function(data, extra) {\r\n                if (data && !Array.isArray(data) && Array.isArray(data.data)) {\r\n                    extra = data;\r\n                    data = data.data\r\n                }\r\n                d.resolve(data, extra)\r\n            }).fail(d.reject);\r\n            return d\r\n        },\r\n        isCustomLoading: function() {\r\n            return !!this._isCustomLoading\r\n        },\r\n        load: function(options) {\r\n            var _this4 = this;\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var d = new _deferred.Deferred;\r\n            if (options) {\r\n                var store = dataSource.store();\r\n                var dataSourceLoadOptions = dataSource.loadOptions();\r\n                var loadResult = {\r\n                    storeLoadOptions: options,\r\n                    isCustomLoading: true\r\n                };\r\n                (0, _iterator.each)(store._customLoadOptions() || [], function(_, optionName) {\r\n                    if (!(optionName in loadResult.storeLoadOptions)) {\r\n                        loadResult.storeLoadOptions[optionName] = dataSourceLoadOptions[optionName]\r\n                    }\r\n                });\r\n                this._isLoadingAll = options.isLoadingAll;\r\n                that._scheduleCustomLoadCallbacks(d);\r\n                dataSource._scheduleLoadCallbacks(d);\r\n                that._handleDataLoading(loadResult);\r\n                executeTask(function() {\r\n                    if (!dataSource.store()) {\r\n                        return d.reject(\"canceled\")\r\n                    }(0, _deferred.when)(loadResult.data || that.loadFromStore(loadResult.storeLoadOptions)).done(function(data, extra) {\r\n                        loadResult.data = data;\r\n                        loadResult.extra = extra || {};\r\n                        that._handleDataLoaded(loadResult);\r\n                        if (options.requireTotalCount && void 0 === loadResult.extra.totalCount) {\r\n                            loadResult.extra.totalCount = store.totalCount(loadResult.storeLoadOptions)\r\n                        }(0, _deferred.when)(loadResult.data, loadResult.extra.totalCount).done(function(data, totalCount) {\r\n                            loadResult.extra.totalCount = totalCount;\r\n                            d.resolve(data, loadResult.extra)\r\n                        }).fail(d.reject)\r\n                    }).fail(d.reject)\r\n                }, that.option(\"loadingTimeout\"));\r\n                return d.fail(function() {\r\n                    that._eventsStrategy.fireEvent(\"loadError\", arguments)\r\n                }).always(function() {\r\n                    _this4._isLoadingAll = false\r\n                }).promise()\r\n            } else {\r\n                return dataSource.load()\r\n            }\r\n        },\r\n        reload: function(full) {\r\n            return full ? this._dataSource.reload() : this._dataSource.load()\r\n        },\r\n        getCachedStoreData: function() {\r\n            return this._cachedStoreData\r\n        }\r\n    }\r\n}());\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/range_selector.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _type2 = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _range = require(\"../translators/range\");\r\nvar _base_axis = require(\"../axes/base_axis\");\r\nvar _parse_utils = require(\"../components/parse_utils\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _common = require(\"./common\");\r\nvar _sliders_controller = require(\"./sliders_controller\");\r\nvar _tracker = require(\"./tracker\");\r\nvar _range_view = require(\"./range_view\");\r\nvar _series_data_source = require(\"./series_data_source\");\r\nvar _tick_generator = require(\"../axes/tick_generator\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _export = require(\"../core/export\");\r\nvar _title = require(\"../core/title\");\r\nvar _loading_indicator = require(\"../core/loading_indicator\");\r\nvar _data_source = require(\"../core/data_source\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _max = Math.max;\r\nvar _ceil = Math.ceil;\r\nvar _floor = Math.floor;\r\nvar START_VALUE = \"startValue\";\r\nvar END_VALUE = \"endValue\";\r\nvar DATETIME = \"datetime\";\r\nvar VALUE = \"value\";\r\nvar DISCRETE = \"discrete\";\r\nvar SEMIDISCRETE = \"semidiscrete\";\r\nvar STRING = \"string\";\r\nvar VALUE_CHANGED = VALUE + \"Changed\";\r\nvar CONTAINER_BACKGROUND_COLOR = \"containerBackgroundColor\";\r\nvar SLIDER_MARKER = \"sliderMarker\";\r\nvar OPTION_BACKGROUND = \"background\";\r\nvar LOGARITHMIC = \"logarithmic\";\r\nvar KEEP = \"keep\";\r\nvar SHIFT = \"shift\";\r\nvar RESET = \"reset\";\r\nvar INVISIBLE_POS = -1e3;\r\nvar SEMIDISCRETE_GRID_SPACING_FACTOR = 50;\r\nvar DEFAULT_AXIS_DIVISION_FACTOR = 30;\r\nvar DEFAULT_MINOR_AXIS_DIVISION_FACTOR = 15;\r\nvar logarithmBase = 10;\r\n\r\nfunction calculateMarkerHeight(renderer, value, sliderMarkerOptions) {\r\n    var formattedText = void 0 === value ? _common.consts.emptySliderMarkerText : (0, _common.formatValue)(value, sliderMarkerOptions);\r\n    var textBBox = getTextBBox(renderer, formattedText, sliderMarkerOptions.font);\r\n    return _ceil(textBBox.height) + 2 * sliderMarkerOptions.paddingTopBottom + _common.consts.pointerSize\r\n}\r\n\r\nfunction calculateScaleLabelHalfWidth(renderer, value, scaleOptions, tickIntervalsInfo) {\r\n    var formattedText = (0, _common.formatValue)(value, scaleOptions.label, tickIntervalsInfo, scaleOptions.valueType, scaleOptions.type, scaleOptions.logarithmBase);\r\n    var textBBox = getTextBBox(renderer, formattedText, scaleOptions.label.font);\r\n    return _ceil(textBBox.width / 2)\r\n}\r\n\r\nfunction calculateIndents(renderer, scale, sliderMarkerOptions, indentOptions, tickIntervalsInfo) {\r\n    var leftMarkerHeight;\r\n    var leftScaleLabelWidth = 0;\r\n    var rightScaleLabelWidth = 0;\r\n    var rightMarkerHeight;\r\n    var placeholderWidthLeft;\r\n    var placeholderWidthRight;\r\n    var placeholderHeight;\r\n    var ticks = \"semidiscrete\" === scale.type ? scale.customTicks : tickIntervalsInfo.ticks;\r\n    var startTickValue;\r\n    var endTickValue;\r\n    indentOptions = indentOptions || {};\r\n    placeholderWidthLeft = indentOptions.left;\r\n    placeholderWidthRight = indentOptions.right;\r\n    placeholderHeight = sliderMarkerOptions.placeholderHeight;\r\n    if (sliderMarkerOptions.visible) {\r\n        leftMarkerHeight = calculateMarkerHeight(renderer, scale.startValue, sliderMarkerOptions);\r\n        rightMarkerHeight = calculateMarkerHeight(renderer, scale.endValue, sliderMarkerOptions);\r\n        if (void 0 === placeholderHeight) {\r\n            placeholderHeight = _max(leftMarkerHeight, rightMarkerHeight)\r\n        }\r\n    }\r\n    if (scale.label.visible) {\r\n        startTickValue = (0, _type2.isDefined)(scale.startValue) ? ticks[0] : void 0;\r\n        endTickValue = (0, _type2.isDefined)(scale.endValue) ? ticks[ticks.length - 1] : void 0;\r\n        leftScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, startTickValue, scale, tickIntervalsInfo);\r\n        rightScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, endTickValue, scale, tickIntervalsInfo)\r\n    }\r\n    placeholderWidthLeft = void 0 !== placeholderWidthLeft ? placeholderWidthLeft : leftScaleLabelWidth;\r\n    placeholderWidthRight = (void 0 !== placeholderWidthRight ? placeholderWidthRight : rightScaleLabelWidth) || 1;\r\n    return {\r\n        left: placeholderWidthLeft,\r\n        right: placeholderWidthRight,\r\n        top: placeholderHeight || 0,\r\n        bottom: 0\r\n    }\r\n}\r\n\r\nfunction calculateValueType(firstValue, secondValue) {\r\n    var typeFirstValue = (0, _type2.type)(firstValue);\r\n    var typeSecondValue = (0, _type2.type)(secondValue);\r\n    var validType = function(type) {\r\n        return typeFirstValue === type || typeSecondValue === type\r\n    };\r\n    return validType(\"date\") ? DATETIME : validType(\"number\") ? \"numeric\" : validType(STRING) ? STRING : \"\"\r\n}\r\n\r\nfunction showScaleMarkers(scaleOptions) {\r\n    return scaleOptions.valueType === DATETIME && scaleOptions.marker.visible\r\n}\r\n\r\nfunction updateTranslatorRangeInterval(translatorRange, scaleOptions) {\r\n    var intervalX = scaleOptions.minorTickInterval || scaleOptions.tickInterval;\r\n    if (\"datetime\" === scaleOptions.valueType) {\r\n        intervalX = _date.default.dateToMilliseconds(intervalX)\r\n    }\r\n    translatorRange.addRange({\r\n        interval: intervalX\r\n    })\r\n}\r\n\r\nfunction checkLogarithmicOptions(options, defaultLogarithmBase, incidentOccurred) {\r\n    if (!options) {\r\n        return\r\n    }\r\n    var logarithmBase = options.logarithmBase;\r\n    if (options.type === LOGARITHMIC && logarithmBase <= 0 || logarithmBase && !(0, _type2.isNumeric)(logarithmBase)) {\r\n        options.logarithmBase = defaultLogarithmBase;\r\n        incidentOccurred(\"E2104\")\r\n    } else {\r\n        if (options.type !== LOGARITHMIC) {\r\n            options.logarithmBase = void 0\r\n        }\r\n    }\r\n}\r\n\r\nfunction calculateScaleAreaHeight(renderer, scaleOptions, visibleMarkers, tickIntervalsInfo) {\r\n    var labelScaleOptions = scaleOptions.label;\r\n    var markerScaleOptions = scaleOptions.marker;\r\n    var placeholderHeight = scaleOptions.placeholderHeight;\r\n    var ticks = \"semidiscrete\" === scaleOptions.type ? scaleOptions.customTicks : tickIntervalsInfo.ticks;\r\n    var text = (0, _common.formatValue)(ticks[0], labelScaleOptions);\r\n    if (placeholderHeight) {\r\n        return placeholderHeight\r\n    } else {\r\n        return (labelScaleOptions.visible ? labelScaleOptions.topIndent + getTextBBox(renderer, text, labelScaleOptions.font).height : 0) + (visibleMarkers ? markerScaleOptions.topIndent + markerScaleOptions.separatorHeight : 0)\r\n    }\r\n}\r\n\r\nfunction getMinorTickIntervalUnit(tickInterval, minorTickInterval, withCorrection) {\r\n    var interval = _date.default.getDateUnitInterval(minorTickInterval);\r\n    var majorUnit = _date.default.getDateUnitInterval(tickInterval);\r\n    var idx = _date.default.dateUnitIntervals.indexOf(interval);\r\n    if (withCorrection && interval === majorUnit && idx > 0) {\r\n        interval = _date.default.dateUnitIntervals[idx - 1]\r\n    }\r\n    return interval\r\n}\r\n\r\nfunction getNextTickInterval(tickInterval, minorTickInterval, isDateType) {\r\n    if (!tickInterval) {\r\n        tickInterval = minorTickInterval\r\n    } else {\r\n        if (isDateType) {\r\n            tickInterval = _date.default.getNextDateUnit(tickInterval)\r\n        } else {\r\n            tickInterval += minorTickInterval\r\n        }\r\n    }\r\n    return tickInterval\r\n}\r\n\r\nfunction calculateTickIntervalsForSemidiscreteScale(scaleOptions, min, max, screenDelta) {\r\n    var minorTickInterval = scaleOptions.minorTickInterval;\r\n    var tickInterval = scaleOptions.tickInterval;\r\n    var interval;\r\n    var isDateType = \"datetime\" === scaleOptions.valueType;\r\n    var gridSpacingFactor = scaleOptions.axisDivisionFactor || {};\r\n    var tickCountByInterval;\r\n    var tickCountByScreen;\r\n    if (!tickInterval) {\r\n        do {\r\n            interval = getNextTickInterval(tickInterval, minorTickInterval, isDateType);\r\n            if (tickInterval !== interval) {\r\n                tickInterval = interval\r\n            } else {\r\n                break\r\n            }\r\n            if (isDateType) {\r\n                interval = _date.default.dateToMilliseconds(tickInterval)\r\n            }\r\n            tickCountByInterval = _ceil((max - min) / interval);\r\n            tickCountByScreen = _floor(screenDelta / (gridSpacingFactor[tickInterval] || SEMIDISCRETE_GRID_SPACING_FACTOR)) || 1\r\n        } while (interval && tickCountByInterval > tickCountByScreen)\r\n    }\r\n    return {\r\n        tickInterval: tickInterval,\r\n        minorTickInterval: minorTickInterval,\r\n        bounds: {\r\n            minVisible: min,\r\n            maxVisible: max\r\n        },\r\n        ticks: []\r\n    }\r\n}\r\n\r\nfunction updateTickIntervals(scaleOptions, screenDelta, incidentOccurred, range) {\r\n    var result;\r\n    var min = (0, _type2.isDefined)(range.minVisible) ? range.minVisible : range.min;\r\n    var max = (0, _type2.isDefined)(range.maxVisible) ? range.maxVisible : range.max;\r\n    var categoriesInfo = scaleOptions._categoriesInfo;\r\n    var ticksInfo;\r\n    var length;\r\n    var bounds = {};\r\n    if (scaleOptions.type === SEMIDISCRETE) {\r\n        result = calculateTickIntervalsForSemidiscreteScale(scaleOptions, min, max, screenDelta)\r\n    } else {\r\n        ticksInfo = (0, _tick_generator.tickGenerator)({\r\n            axisType: scaleOptions.type,\r\n            dataType: scaleOptions.valueType,\r\n            logBase: scaleOptions.logarithmBase,\r\n            allowNegatives: true,\r\n            linearThreshold: Math.abs(scaleOptions.linearThreshold || 0),\r\n            axisDivisionFactor: scaleOptions.axisDivisionFactor,\r\n            minorAxisDivisionFactor: scaleOptions.minorAxisDivisionFactor,\r\n            calculateMinors: true,\r\n            allowDecimals: scaleOptions.allowDecimals,\r\n            endOnTick: scaleOptions.endOnTick,\r\n            incidentOccurred: incidentOccurred,\r\n            rangeIsEmpty: range.isEmpty()\r\n        })({\r\n            min: min,\r\n            max: max,\r\n            categories: (0, _type2.isDefined)(categoriesInfo) ? categoriesInfo.categories : []\r\n        }, screenDelta, scaleOptions.tickInterval, scaleOptions.forceUserTickInterval, void 0, scaleOptions.minorTickInterval, scaleOptions.minorTickCount);\r\n        length = ticksInfo.ticks.length;\r\n        bounds.minVisible = ticksInfo.ticks[0] < min ? ticksInfo.ticks[0] : min;\r\n        bounds.maxVisible = ticksInfo.ticks[length - 1] > max ? ticksInfo.ticks[length - 1] : max;\r\n        result = {\r\n            tickInterval: ticksInfo.tickInterval,\r\n            minorTickInterval: 0 === scaleOptions.minorTickInterval ? 0 : ticksInfo.minorTickInterval,\r\n            bounds: bounds,\r\n            ticks: ticksInfo.ticks\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction getFirstDayOfWeek(options) {\r\n    var _options$workWeek;\r\n    return null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0]\r\n}\r\n\r\nfunction calculateTranslatorRange(seriesDataSource, scaleOptions) {\r\n    var minValue;\r\n    var maxValue;\r\n    var inverted = false;\r\n    var startValue = scaleOptions.startValue;\r\n    var endValue = scaleOptions.endValue;\r\n    var categories;\r\n    var categoriesInfo;\r\n    var translatorRange = seriesDataSource ? seriesDataSource.getBoundRange().arg : new _range.Range;\r\n    var rangeForCategories;\r\n    var isDate = \"datetime\" === scaleOptions.valueType;\r\n    var firstDayOfWeek = getFirstDayOfWeek(scaleOptions);\r\n    var minRange = scaleOptions.minRange;\r\n    if (scaleOptions.type === DISCRETE) {\r\n        rangeForCategories = new _range.Range({\r\n            minVisible: startValue,\r\n            maxVisible: endValue\r\n        });\r\n        rangeForCategories.addRange(translatorRange);\r\n        translatorRange = rangeForCategories;\r\n        categories = seriesDataSource ? seriesDataSource.argCategories : scaleOptions.categories || !seriesDataSource && startValue && endValue && [startValue, endValue];\r\n        categories = categories || [];\r\n        scaleOptions._categoriesInfo = categoriesInfo = (0, _utils.getCategoriesInfo)(categories, startValue, endValue)\r\n    }\r\n    if (scaleOptions.type === SEMIDISCRETE) {\r\n        startValue = scaleOptions.startValue = correctValueByInterval(scaleOptions.startValue, isDate, minRange, firstDayOfWeek);\r\n        endValue = scaleOptions.endValue = correctValueByInterval(scaleOptions.endValue, isDate, minRange, firstDayOfWeek);\r\n        translatorRange.minVisible = correctValueByInterval(translatorRange.minVisible, isDate, minRange, firstDayOfWeek);\r\n        translatorRange.maxVisible = correctValueByInterval(translatorRange.maxVisible, isDate, minRange, firstDayOfWeek);\r\n        translatorRange.min = correctValueByInterval(translatorRange.min, isDate, minRange, firstDayOfWeek);\r\n        translatorRange.max = correctValueByInterval(translatorRange.max, isDate, minRange, firstDayOfWeek)\r\n    }\r\n    if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {\r\n        inverted = categoriesInfo ? categoriesInfo.inverted : startValue > endValue;\r\n        minValue = categoriesInfo ? categoriesInfo.start : inverted ? endValue : startValue;\r\n        maxValue = categoriesInfo ? categoriesInfo.end : inverted ? startValue : endValue\r\n    } else {\r\n        if ((0, _type2.isDefined)(startValue) || (0, _type2.isDefined)(endValue)) {\r\n            minValue = startValue;\r\n            maxValue = endValue\r\n        } else {\r\n            if (categoriesInfo) {\r\n                minValue = categoriesInfo.start;\r\n                maxValue = categoriesInfo.end\r\n            }\r\n        }\r\n    }\r\n    translatorRange.addRange({\r\n        invert: inverted,\r\n        min: minValue,\r\n        max: maxValue,\r\n        minVisible: minValue,\r\n        maxVisible: maxValue,\r\n        dataType: scaleOptions.valueType\r\n    });\r\n    translatorRange.addRange({\r\n        categories: !seriesDataSource ? categories : void 0,\r\n        base: scaleOptions.logarithmBase,\r\n        axisType: scaleOptions.type,\r\n        dataType: scaleOptions.valueType\r\n    });\r\n    seriesDataSource && translatorRange.sortCategories(categories);\r\n    return translatorRange\r\n}\r\n\r\nfunction startEndNotDefined(start, end) {\r\n    return !(0, _type2.isDefined)(start) || !(0, _type2.isDefined)(end)\r\n}\r\n\r\nfunction getTextBBox(renderer, text, fontOptions) {\r\n    var textElement = renderer.text(text, INVISIBLE_POS, INVISIBLE_POS).css((0, _utils.patchFontOptions)(fontOptions)).append(renderer.root);\r\n    var textBBox = textElement.getBBox();\r\n    textElement.remove();\r\n    return textBBox\r\n}\r\n\r\nfunction getDateMarkerVisibilityChecker(screenDelta) {\r\n    return function(isDateScale, isMarkerVisible, min, max, tickInterval) {\r\n        if (isMarkerVisible && isDateScale) {\r\n            if (!(0, _type2.isDefined)(tickInterval) || tickInterval.years || tickInterval.months >= 6 || screenDelta / SEMIDISCRETE_GRID_SPACING_FACTOR < _ceil((max - min) / _date.default.dateToMilliseconds(\"year\")) + 1) {\r\n                isMarkerVisible = false\r\n            }\r\n        }\r\n        return isMarkerVisible\r\n    }\r\n}\r\n\r\nfunction updateScaleOptions(scaleOptions, seriesDataSource, translatorRange, tickIntervalsInfo, checkDateMarkerVisibility) {\r\n    var bounds;\r\n    var isEmptyInterval;\r\n    var categoriesInfo = scaleOptions._categoriesInfo;\r\n    var intervals;\r\n    var isDateTime = scaleOptions.valueType === DATETIME;\r\n    if (seriesDataSource && !seriesDataSource.isEmpty() && !translatorRange.isEmpty()) {\r\n        bounds = tickIntervalsInfo.bounds;\r\n        translatorRange.addRange(bounds);\r\n        scaleOptions.startValue = translatorRange.invert ? bounds.maxVisible : bounds.minVisible;\r\n        scaleOptions.endValue = translatorRange.invert ? bounds.minVisible : bounds.maxVisible\r\n    }\r\n    scaleOptions.marker.visible = checkDateMarkerVisibility(isDateTime && scaleOptions.type.indexOf(DISCRETE) === -1, scaleOptions.marker.visible, scaleOptions.startValue, scaleOptions.endValue, tickIntervalsInfo.tickInterval);\r\n    if (categoriesInfo) {\r\n        scaleOptions.startValue = categoriesInfo.start;\r\n        scaleOptions.endValue = categoriesInfo.end\r\n    }\r\n    if (scaleOptions.type.indexOf(DISCRETE) === -1) {\r\n        isEmptyInterval = (0, _type2.isDate)(scaleOptions.startValue) && (0, _type2.isDate)(scaleOptions.endValue) && scaleOptions.startValue.getTime() === scaleOptions.endValue.getTime() || scaleOptions.startValue === scaleOptions.endValue\r\n    }\r\n    scaleOptions.isEmpty = startEndNotDefined(scaleOptions.startValue, scaleOptions.endValue) || isEmptyInterval;\r\n    if (scaleOptions.isEmpty) {\r\n        scaleOptions.startValue = scaleOptions.endValue = void 0\r\n    } else {\r\n        scaleOptions.minorTickInterval = tickIntervalsInfo.minorTickInterval;\r\n        scaleOptions.tickInterval = tickIntervalsInfo.tickInterval;\r\n        if (isDateTime && (!(0, _type2.isDefined)(scaleOptions.label.format) || scaleOptions.type === SEMIDISCRETE && scaleOptions.minorTickInterval !== scaleOptions.tickInterval)) {\r\n            if (scaleOptions.type === DISCRETE) {\r\n                scaleOptions.label.format = _format_helper.default.getDateFormatByTicks(tickIntervalsInfo.ticks)\r\n            } else {\r\n                if (!scaleOptions.marker.visible) {\r\n                    scaleOptions.label.format = _format_helper.default.getDateFormatByTickInterval(scaleOptions.startValue, scaleOptions.endValue, scaleOptions.tickInterval)\r\n                } else {\r\n                    scaleOptions.label.format = _date.default.getDateFormatByTickInterval(scaleOptions.tickInterval)\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (scaleOptions.type === SEMIDISCRETE) {\r\n        intervals = getIntervalCustomTicks(scaleOptions);\r\n        scaleOptions.customMinorTicks = intervals.altIntervals;\r\n        scaleOptions.customTicks = intervals.intervals;\r\n        scaleOptions.customBoundTicks = [scaleOptions.customTicks[0]]\r\n    }\r\n}\r\n\r\nfunction prepareScaleOptions(scaleOption, calculatedValueType, incidentOccurred, containerColor) {\r\n    var parsedValue = 0;\r\n    var valueType = (0, _parse_utils.correctValueType)((0, _utils.normalizeEnum)(scaleOption.valueType));\r\n    var validateStartEndValues = function(field, parser) {\r\n        var messageToIncidentOccurred = field === START_VALUE ? \"start\" : \"end\";\r\n        if ((0, _type2.isDefined)(scaleOption[field])) {\r\n            parsedValue = parser(scaleOption[field]);\r\n            if ((0, _type2.isDefined)(parsedValue)) {\r\n                scaleOption[field] = parsedValue\r\n            } else {\r\n                scaleOption[field] = void 0;\r\n                incidentOccurred(\"E2202\", [messageToIncidentOccurred])\r\n            }\r\n        }\r\n    };\r\n    valueType = calculatedValueType || valueType;\r\n    if (!valueType) {\r\n        valueType = calculateValueType(scaleOption.startValue, scaleOption.endValue) || \"numeric\"\r\n    }\r\n    if (valueType === STRING || scaleOption.categories) {\r\n        scaleOption.type = DISCRETE;\r\n        valueType = STRING\r\n    }\r\n    scaleOption.containerColor = containerColor;\r\n    scaleOption.valueType = valueType;\r\n    scaleOption.dataType = valueType;\r\n    var parser = (0, _parse_utils.getParser)(valueType);\r\n    validateStartEndValues(START_VALUE, parser);\r\n    validateStartEndValues(END_VALUE, parser);\r\n    checkLogarithmicOptions(scaleOption, logarithmBase, incidentOccurred);\r\n    if (!scaleOption.type) {\r\n        scaleOption.type = \"continuous\"\r\n    }\r\n    scaleOption.parser = parser;\r\n    if (scaleOption.type === SEMIDISCRETE) {\r\n        scaleOption.minorTick.visible = false;\r\n        scaleOption.minorTickInterval = scaleOption.minRange;\r\n        scaleOption.marker.visible = false;\r\n        scaleOption.maxRange = void 0\r\n    }\r\n    scaleOption.forceUserTickInterval |= (0, _type2.isDefined)(scaleOption.tickInterval) && !(0, _type2.isDefined)(scaleOption.axisDivisionFactor);\r\n    scaleOption.axisDivisionFactor = (0, _type2.isDefined)(scaleOption.axisDivisionFactor) ? scaleOption.axisDivisionFactor : DEFAULT_AXIS_DIVISION_FACTOR;\r\n    scaleOption.minorAxisDivisionFactor = (0, _type2.isDefined)(scaleOption.minorAxisDivisionFactor) ? scaleOption.minorAxisDivisionFactor : DEFAULT_MINOR_AXIS_DIVISION_FACTOR;\r\n    return scaleOption\r\n}\r\n\r\nfunction correctValueByInterval(value, isDate, interval, firstDayOfWeek) {\r\n    if ((0, _type2.isDefined)(value)) {\r\n        value = isDate ? _date.default.correctDateWithUnitBeginning(new Date(value), interval, null, firstDayOfWeek) : (0, _math.adjust)(_floor((0, _math.adjust)(value / interval)) * interval)\r\n    }\r\n    return value\r\n}\r\n\r\nfunction getIntervalCustomTicks(options) {\r\n    var min = options.startValue;\r\n    var max = options.endValue;\r\n    var isDate = \"datetime\" === options.valueType;\r\n    var firstDayOfWeek = getFirstDayOfWeek(options);\r\n    var tickInterval = options.tickInterval;\r\n    var res = {\r\n        intervals: []\r\n    };\r\n    if (!(0, _type2.isDefined)(min) || !(0, _type2.isDefined)(max)) {\r\n        return res\r\n    }\r\n    res.intervals = _date.default.getSequenceByInterval(min, max, options.minorTickInterval);\r\n    if (tickInterval !== options.minorTickInterval) {\r\n        res.altIntervals = res.intervals;\r\n        min = correctValueByInterval(min, isDate, tickInterval, firstDayOfWeek);\r\n        max = correctValueByInterval(max, isDate, tickInterval, firstDayOfWeek);\r\n        res.intervals = _date.default.getSequenceByInterval(min, max, tickInterval);\r\n        res.intervals[0] = res.altIntervals[0]\r\n    }\r\n    return res\r\n}\r\n\r\nfunction getPrecisionForSlider(startValue, endValue, screenDelta) {\r\n    var d = Math.abs(endValue - startValue) / screenDelta;\r\n    var tail = d - _floor(d);\r\n    return tail > 0 ? _ceil(Math.abs((0, _math.adjust)((0, _utils.getLog)(tail, 10)))) : 0\r\n}\r\nvar dxRangeSelector = _base_widget.default.inherit({\r\n    _toggleParentsScrollSubscription: function() {},\r\n    _eventsMap: {\r\n        onValueChanged: {\r\n            name: VALUE_CHANGED\r\n        }\r\n    },\r\n    _rootClassPrefix: \"dxrs\",\r\n    _rootClass: \"dxrs-range-selector\",\r\n    _dataIsReady: function() {\r\n        return this._dataIsLoaded()\r\n    },\r\n    _initialChanges: [\"DATA_SOURCE\", \"VALUE\"],\r\n    _themeDependentChanges: [\"MOSTLY_TOTAL\"],\r\n    _themeSection: \"rangeSelector\",\r\n    _fontFields: [\"scale.label.font\", \"sliderMarker.font\"],\r\n    _initCore: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var root = renderer.root;\r\n        root.css({\r\n            \"touch-action\": \"pan-y\"\r\n        });\r\n        that._clipRect = renderer.clipRect();\r\n        var rangeViewGroup = renderer.g().attr({\r\n            \"class\": \"dxrs-view\"\r\n        }).append(root);\r\n        var slidersGroup = renderer.g().attr({\r\n            \"class\": \"dxrs-slidersContainer\",\r\n            \"clip-path\": that._clipRect.id\r\n        }).append(root);\r\n        var scaleGroup = renderer.g().attr({\r\n            \"class\": \"dxrs-scale\",\r\n            \"clip-path\": that._clipRect.id\r\n        }).append(root);\r\n        var scaleBreaksGroup = renderer.g().attr({\r\n            \"class\": \"dxrs-scale-breaks\"\r\n        }).append(root);\r\n        var trackersGroup = renderer.g().attr({\r\n            \"class\": \"dxrs-trackers\"\r\n        }).append(root);\r\n        that._axis = new AxisWrapper({\r\n            renderer: renderer,\r\n            root: scaleGroup,\r\n            scaleBreaksGroup: scaleBreaksGroup,\r\n            updateSelectedRange: function(range, e) {\r\n                that.setValue((0, _utils.convertVisualRangeObject)(range), e)\r\n            },\r\n            incidentOccurred: that._incidentOccurred\r\n        });\r\n        that._rangeView = new _range_view.RangeView({\r\n            renderer: renderer,\r\n            root: rangeViewGroup,\r\n            translator: that._axis.getTranslator()\r\n        });\r\n        that._slidersController = new _sliders_controller.SlidersController({\r\n            renderer: renderer,\r\n            root: slidersGroup,\r\n            trackersGroup: trackersGroup,\r\n            updateSelectedRange: function(range, lastSelectedRange, e) {\r\n                if (!that._rangeOption) {\r\n                    that.option(VALUE, (0, _utils.convertVisualRangeObject)(range, (0, _type2.isPlainObject)(that._options.silent(VALUE))))\r\n                }\r\n                that._eventTrigger(VALUE_CHANGED, {\r\n                    value: (0, _utils.convertVisualRangeObject)(range),\r\n                    previousValue: (0, _utils.convertVisualRangeObject)(lastSelectedRange),\r\n                    event: e\r\n                })\r\n            },\r\n            axis: that._axis,\r\n            translator: that._axis.getTranslator()\r\n        });\r\n        that._tracker = new _tracker.Tracker({\r\n            renderer: renderer,\r\n            controller: that._slidersController\r\n        })\r\n    },\r\n    _getDefaultSize: function() {\r\n        return {\r\n            width: 400,\r\n            height: 160\r\n        }\r\n    },\r\n    _disposeCore: function() {\r\n        this._axis.dispose();\r\n        this._slidersController.dispose();\r\n        this._tracker.dispose()\r\n    },\r\n    _applySize: function(rect) {\r\n        this._clientRect = rect.slice();\r\n        this._change([\"MOSTLY_TOTAL\"])\r\n    },\r\n    _optionChangesMap: {\r\n        scale: \"SCALE\",\r\n        value: \"VALUE\",\r\n        dataSource: \"DATA_SOURCE\"\r\n    },\r\n    _optionChangesOrder: [\"SCALE\", \"DATA_SOURCE\"],\r\n    _change_SCALE: function() {\r\n        this._change([\"MOSTLY_TOTAL\"])\r\n    },\r\n    _setValueByDataSource: function() {\r\n        var that = this;\r\n        var options = that._options.silent();\r\n        var axis = that._axis;\r\n        if (options.dataSource) {\r\n            var selectedRangeUpdateMode = that.option(\"selectedRangeUpdateMode\");\r\n            var value = that.getValue();\r\n            var valueIsReady = (0, _type2.isDefined)(value[0]) && (0, _type2.isDefined)(value[1]);\r\n            if ((0, _type2.isDefined)(selectedRangeUpdateMode)) {\r\n                selectedRangeUpdateMode = (0, _utils.normalizeEnum)(selectedRangeUpdateMode);\r\n                that.__skipAnimation = true\r\n            } else {\r\n                if (valueIsReady && !that._dataSourceIsAsync) {\r\n                    selectedRangeUpdateMode = RESET\r\n                }\r\n            }\r\n            if (\"auto\" === selectedRangeUpdateMode && valueIsReady) {\r\n                var rangesInfo = axis.allScaleSelected(value);\r\n                if (rangesInfo.startValue && rangesInfo.endValue) {\r\n                    selectedRangeUpdateMode = RESET\r\n                } else {\r\n                    if (rangesInfo.endValue) {\r\n                        selectedRangeUpdateMode = SHIFT\r\n                    } else {\r\n                        selectedRangeUpdateMode = KEEP\r\n                    }\r\n                }\r\n            }\r\n            if (selectedRangeUpdateMode === RESET) {\r\n                options[VALUE] = null\r\n            } else {\r\n                if (selectedRangeUpdateMode === SHIFT && valueIsReady) {\r\n                    var _value = that.getValue();\r\n                    that.__skipAnimation = true;\r\n                    options[VALUE] = {\r\n                        length: axis.getVisualRangeLength({\r\n                            minVisible: _value[0],\r\n                            maxVisible: _value[1]\r\n                        })\r\n                    }\r\n                } else {\r\n                    if (selectedRangeUpdateMode === KEEP) {\r\n                        that.__skipAnimation = true\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        that._dataSourceIsAsync = void 0\r\n    },\r\n    _change_DATA_SOURCE: function() {\r\n        if (this._options.silent(\"dataSource\")) {\r\n            this._updateDataSource()\r\n        }\r\n    },\r\n    _customChangesOrder: [\"MOSTLY_TOTAL\", \"VALUE\", \"SLIDER_SELECTION\"],\r\n    _change_MOSTLY_TOTAL: function() {\r\n        this._applyMostlyTotalChange()\r\n    },\r\n    _change_SLIDER_SELECTION: function() {\r\n        var that = this;\r\n        var value = that._options.silent(VALUE);\r\n        that._slidersController.setSelectedRange(value && (0, _utils.getVizRangeObject)(value))\r\n    },\r\n    _change_VALUE: function() {\r\n        var that = this;\r\n        var option = that._rangeOption;\r\n        that._dataSourceIsAsync = !that._dataIsReady();\r\n        if (option) {\r\n            that._options.silent(VALUE, option);\r\n            that.setValue(option)\r\n        }\r\n    },\r\n    _validateRange: function(start, end) {\r\n        var that = this;\r\n        var translator = that._axis.getTranslator();\r\n        if ((0, _type2.isDefined)(start) && !translator.isValid(start) || (0, _type2.isDefined)(end) && !translator.isValid(end)) {\r\n            that._incidentOccurred(\"E2203\")\r\n        }\r\n    },\r\n    _applyChanges: function() {\r\n        var that = this;\r\n        var value = that._options.silent(VALUE);\r\n        if (that._changes.has(\"VALUE\") && value) {\r\n            that._rangeOption = value\r\n        }\r\n        that.callBase.apply(that, arguments);\r\n        that._rangeOption = null;\r\n        that.__isResizing = that.__skipAnimation = false\r\n    },\r\n    _applyMostlyTotalChange: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var rect = that._clientRect;\r\n        var currentAnimationEnabled;\r\n        var canvas = {\r\n            left: rect[0],\r\n            top: rect[1],\r\n            width: rect[2] - rect[0],\r\n            height: rect[3] - rect[1]\r\n        };\r\n        if (that.__isResizing || that.__skipAnimation) {\r\n            currentAnimationEnabled = renderer.animationEnabled();\r\n            renderer.updateAnimationOptions({\r\n                enabled: false\r\n            })\r\n        }\r\n        that._clipRect.attr({\r\n            x: rect[0],\r\n            y: rect[1],\r\n            width: rect[2] - rect[0],\r\n            height: rect[3] - rect[1]\r\n        });\r\n        that._axis.getTranslator().update(new _range.Range, canvas, {\r\n            isHorizontal: true\r\n        });\r\n        that._updateContent({\r\n            left: rect[0],\r\n            top: rect[1],\r\n            width: rect[2] - rect[0],\r\n            height: rect[3] - rect[1]\r\n        });\r\n        if (that.__isResizing || that.__skipAnimation) {\r\n            renderer.updateAnimationOptions({\r\n                enabled: currentAnimationEnabled\r\n            })\r\n        }\r\n        that._drawn()\r\n    },\r\n    _dataSourceChangedHandler: function() {\r\n        this._setValueByDataSource();\r\n        this._requestChange([\"MOSTLY_TOTAL\"])\r\n    },\r\n    _completeSeriesDataSourceCreation: function(scaleOptions, seriesDataSource) {\r\n        var rect = this._clientRect;\r\n        var canvas = {\r\n            left: rect[0],\r\n            top: rect[1],\r\n            width: rect[2] - rect[0],\r\n            height: rect[3] - rect[1]\r\n        };\r\n        this._axis.updateOptions((0, _extend.extend)({}, scaleOptions, {\r\n            isHorizontal: true,\r\n            label: {}\r\n        }));\r\n        seriesDataSource.isShowChart() && this._axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas));\r\n        this._axis.updateCanvas(canvas);\r\n        seriesDataSource.createPoints()\r\n    },\r\n    _updateContent: function(canvas) {\r\n        var that = this;\r\n        var chartOptions = that.option(\"chart\");\r\n        var seriesDataSource = that._createSeriesDataSource(chartOptions);\r\n        var isCompactMode = !(seriesDataSource && seriesDataSource.isShowChart() || that.option(\"background.image.url\"));\r\n        var scaleOptions = prepareScaleOptions(that._getOption(\"scale\"), seriesDataSource && seriesDataSource.getCalculatedValueType(), that._incidentOccurred, this._getOption(\"containerBackgroundColor\", true));\r\n        seriesDataSource && that._completeSeriesDataSourceCreation(scaleOptions, seriesDataSource);\r\n        var argTranslatorRange = calculateTranslatorRange(seriesDataSource, scaleOptions);\r\n        var tickIntervalsInfo = updateTickIntervals(scaleOptions, canvas.width, that._incidentOccurred, argTranslatorRange);\r\n        var chartThemeManager = seriesDataSource && seriesDataSource.isShowChart() && seriesDataSource.getThemeManager();\r\n        if (chartThemeManager) {\r\n            checkLogarithmicOptions(chartOptions && chartOptions.valueAxis, chartThemeManager.getOptions(\"valueAxis\").logarithmBase, that._incidentOccurred)\r\n        }\r\n        updateScaleOptions(scaleOptions, seriesDataSource, argTranslatorRange, tickIntervalsInfo, getDateMarkerVisibilityChecker(canvas.width));\r\n        updateTranslatorRangeInterval(argTranslatorRange, scaleOptions);\r\n        var sliderMarkerOptions = that._prepareSliderMarkersOptions(scaleOptions, canvas.width, tickIntervalsInfo, argTranslatorRange);\r\n        var indents = calculateIndents(that._renderer, scaleOptions, sliderMarkerOptions, that.option(\"indent\"), tickIntervalsInfo);\r\n        var rangeContainerCanvas = {\r\n            left: canvas.left + indents.left,\r\n            top: canvas.top + indents.top,\r\n            width: canvas.left + indents.left + _max(canvas.width - indents.left - indents.right, 1),\r\n            height: _max(!isCompactMode ? canvas.height - indents.top - indents.bottom - calculateScaleAreaHeight(that._renderer, scaleOptions, showScaleMarkers(scaleOptions), tickIntervalsInfo) : _common.HEIGHT_COMPACT_MODE, 0),\r\n            right: 0,\r\n            bottom: 0\r\n        };\r\n        that._axis.update(scaleOptions, isCompactMode, rangeContainerCanvas, argTranslatorRange, seriesDataSource);\r\n        scaleOptions.minorTickInterval = scaleOptions.isEmpty ? 0 : scaleOptions.minorTickInterval;\r\n        that._updateElements(scaleOptions, sliderMarkerOptions, isCompactMode, rangeContainerCanvas, seriesDataSource);\r\n        if (chartThemeManager) {\r\n            chartThemeManager.dispose()\r\n        }\r\n    },\r\n    _updateElements: function(scaleOptions, sliderMarkerOptions, isCompactMode, canvas, seriesDataSource) {\r\n        var that = this;\r\n        var behavior = that._getOption(\"behavior\");\r\n        var shutterOptions = that._getOption(\"shutter\");\r\n        var isNotSemiDiscrete = scaleOptions.type !== SEMIDISCRETE;\r\n        shutterOptions.color = shutterOptions.color || that._getOption(CONTAINER_BACKGROUND_COLOR, true);\r\n        that._rangeView.update(that.option(\"background\"), that._themeManager.theme(\"background\"), canvas, isCompactMode, behavior.animationEnabled && that._renderer.animationEnabled(), seriesDataSource);\r\n        that._isUpdating = true;\r\n        that._slidersController.update([canvas.top, canvas.top + canvas.height], behavior, isCompactMode, that._getOption(\"sliderHandle\"), sliderMarkerOptions, shutterOptions, {\r\n            minRange: isNotSemiDiscrete ? that.option(\"scale.minRange\") : void 0,\r\n            maxRange: isNotSemiDiscrete ? that.option(\"scale.maxRange\") : void 0\r\n        }, that._axis.getFullTicks(), that._getOption(\"selectedRangeColor\", true));\r\n        that._requestChange([\"SLIDER_SELECTION\"]);\r\n        that._isUpdating = false;\r\n        that._tracker.update(!that._axis.getTranslator().getBusinessRange().isEmpty(), behavior)\r\n    },\r\n    _createSeriesDataSource: function(chartOptions) {\r\n        var that = this;\r\n        var seriesDataSource;\r\n        var dataSource = that._dataSourceItems();\r\n        var scaleOptions = that._getOption(\"scale\");\r\n        var valueType = scaleOptions.valueType || calculateValueType(scaleOptions.startValue, scaleOptions.endValue);\r\n        var valueAxis = new _base_axis.Axis({\r\n            renderer: that._renderer,\r\n            axisType: \"xyAxes\",\r\n            drawingType: \"linear\"\r\n        });\r\n        valueAxis.updateOptions({\r\n            isHorizontal: false,\r\n            label: {},\r\n            categoriesSortingMethod: that._getOption(\"chart\").valueAxis.categoriesSortingMethod\r\n        });\r\n        if (dataSource || chartOptions && chartOptions.series) {\r\n            chartOptions = (0, _extend.extend)({}, chartOptions, {\r\n                theme: that.option(\"theme\")\r\n            });\r\n            seriesDataSource = new _series_data_source.SeriesDataSource({\r\n                renderer: that._renderer,\r\n                dataSource: dataSource,\r\n                valueType: (0, _utils.normalizeEnum)(valueType),\r\n                axisType: scaleOptions.type,\r\n                chart: chartOptions,\r\n                dataSourceField: that.option(\"dataSourceField\"),\r\n                incidentOccurred: that._incidentOccurred,\r\n                categories: scaleOptions.categories,\r\n                argumentAxis: that._axis,\r\n                valueAxis: valueAxis\r\n            })\r\n        }\r\n        return seriesDataSource\r\n    },\r\n    _prepareSliderMarkersOptions: function(scaleOptions, screenDelta, tickIntervalsInfo, argRange) {\r\n        var that = this;\r\n        var minorTickInterval = tickIntervalsInfo.minorTickInterval;\r\n        var tickInterval = tickIntervalsInfo.tickInterval;\r\n        var interval = tickInterval;\r\n        var endValue = scaleOptions.endValue;\r\n        var startValue = scaleOptions.startValue;\r\n        var sliderMarkerOptions = that._getOption(SLIDER_MARKER);\r\n        var doNotSnap = !that._getOption(\"behavior\").snapToTicks;\r\n        var isTypeDiscrete = scaleOptions.type === DISCRETE;\r\n        var isValueTypeDatetime = scaleOptions.valueType === DATETIME;\r\n        sliderMarkerOptions.borderColor = that._getOption(CONTAINER_BACKGROUND_COLOR, true);\r\n        if (!sliderMarkerOptions.format && !argRange.isEmpty()) {\r\n            if (doNotSnap && (0, _type2.isNumeric)(scaleOptions.startValue)) {\r\n                sliderMarkerOptions.format = {\r\n                    type: \"fixedPoint\",\r\n                    precision: getPrecisionForSlider(startValue, endValue, screenDelta)\r\n                }\r\n            }\r\n            if (isValueTypeDatetime && !isTypeDiscrete) {\r\n                if ((0, _type2.isDefined)(minorTickInterval) && 0 !== minorTickInterval) {\r\n                    interval = getMinorTickIntervalUnit(tickInterval, minorTickInterval, doNotSnap)\r\n                }\r\n                if (!scaleOptions.marker.visible) {\r\n                    if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {\r\n                        sliderMarkerOptions.format = _format_helper.default.getDateFormatByTickInterval(startValue, endValue, interval)\r\n                    }\r\n                } else {\r\n                    sliderMarkerOptions.format = _date.default.getDateFormatByTickInterval(interval)\r\n                }\r\n            }\r\n            if (isValueTypeDatetime && isTypeDiscrete && tickIntervalsInfo.ticks.length) {\r\n                sliderMarkerOptions.format = _format_helper.default.getDateFormatByTicks(tickIntervalsInfo.ticks)\r\n            }\r\n        }\r\n        return sliderMarkerOptions\r\n    },\r\n    getValue: function() {\r\n        return (0, _utils.convertVisualRangeObject)(this._slidersController.getSelectedRange())\r\n    },\r\n    setValue: function(value, e) {\r\n        var visualRange = (0, _utils.getVizRangeObject)(value);\r\n        if (!this._isUpdating && value) {\r\n            this._validateRange(visualRange.startValue, visualRange.endValue);\r\n            !(0, _utils.rangesAreEqual)(visualRange, this._slidersController.getSelectedRange()) && this._slidersController.setSelectedRange(visualRange, e)\r\n        }\r\n    },\r\n    _setContentSize: function() {\r\n        this.__isResizing = 2 === this._changes.count();\r\n        this.callBase.apply(this, arguments)\r\n    }\r\n});\r\n(0, _iterator.each)([\"selectedRangeColor\", \"containerBackgroundColor\", \"sliderMarker\", \"sliderHandle\", \"shutter\", OPTION_BACKGROUND, \"behavior\", \"chart\", \"indent\"], function(_, name) {\r\n    dxRangeSelector.prototype._optionChangesMap[name] = \"MOSTLY_TOTAL\"\r\n});\r\n\r\nfunction prepareAxisOptions(scaleOptions, isCompactMode, height, axisPosition) {\r\n    scaleOptions.marker.label.font = scaleOptions.label.font;\r\n    scaleOptions.color = scaleOptions.marker.color = scaleOptions.tick.color;\r\n    scaleOptions.opacity = scaleOptions.marker.opacity = scaleOptions.tick.opacity;\r\n    scaleOptions.width = scaleOptions.marker.width = scaleOptions.tick.width;\r\n    scaleOptions.placeholderSize = (scaleOptions.placeholderHeight || 0) + axisPosition;\r\n    scaleOptions.argumentType = scaleOptions.valueType;\r\n    scaleOptions.visible = isCompactMode;\r\n    scaleOptions.isHorizontal = true;\r\n    scaleOptions.calculateMinors = true;\r\n    scaleOptions.semiDiscreteInterval = scaleOptions.minRange;\r\n    if (!isCompactMode) {\r\n        scaleOptions.minorTick.length = scaleOptions.tick.length = height\r\n    }\r\n    scaleOptions.label.indentFromAxis = scaleOptions.label.topIndent + axisPosition;\r\n    return scaleOptions\r\n}\r\n\r\nfunction createDateMarkersEvent(scaleOptions, markerTrackers, setSelectedRange) {\r\n    (0, _iterator.each)(markerTrackers, function(_, value) {\r\n        value.on(\"dxpointerdown\", onPointerDown)\r\n    });\r\n\r\n    function onPointerDown(e) {\r\n        var range = e.target.range;\r\n        var minRange = scaleOptions.minRange ? _date.default.addInterval(range.startValue, scaleOptions.minRange) : void 0;\r\n        var maxRange = scaleOptions.maxRange ? _date.default.addInterval(range.startValue, scaleOptions.maxRange) : void 0;\r\n        if (!(minRange && minRange > range.endValue || maxRange && maxRange < range.endValue)) {\r\n            setSelectedRange(range, e)\r\n        }\r\n    }\r\n}\r\n\r\nfunction getShiftDirection() {\r\n    return 1\r\n}\r\n\r\nfunction getTickStartPositionShift(length) {\r\n    return length % 2 === 1 ? -_floor(length / 2) : -length / 2\r\n}\r\n\r\nfunction AxisWrapper(params) {\r\n    var that = this;\r\n    that._axis = new _base_axis.Axis({\r\n        renderer: params.renderer,\r\n        axesContainerGroup: params.root,\r\n        scaleBreaksGroup: params.scaleBreaksGroup,\r\n        incidentOccurred: params.incidentOccurred,\r\n        axisType: \"xyAxes\",\r\n        drawingType: \"linear\",\r\n        widgetClass: \"dxrs\",\r\n        axisClass: \"range-selector\",\r\n        isArgumentAxis: true,\r\n        getTemplate: function() {}\r\n    });\r\n    that._updateSelectedRangeCallback = params.updateSelectedRange;\r\n    that._axis.getAxisSharpDirection = that._axis.getSharpDirectionByCoords = getShiftDirection;\r\n    that._axis.getTickStartPositionShift = getTickStartPositionShift\r\n}\r\nAxisWrapper.prototype = {\r\n    constructor: AxisWrapper,\r\n    dispose: function() {\r\n        this._axis.dispose()\r\n    },\r\n    calculateInterval: function(value, prevValue) {\r\n        return this._axis.calculateInterval(value, prevValue)\r\n    },\r\n    update: function(options, isCompactMode, canvas, businessRange, seriesDataSource) {\r\n        var axis = this._axis;\r\n        axis.updateOptions(prepareAxisOptions(options, isCompactMode, canvas.height, canvas.height / 2 - _ceil(options.width / 2)));\r\n        axis.validate();\r\n        axis.setBusinessRange(businessRange, true);\r\n        if (void 0 !== seriesDataSource && seriesDataSource.isShowChart()) {\r\n            axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas))\r\n        }\r\n        axis.draw(canvas);\r\n        axis.shift({\r\n            left: 0,\r\n            bottom: -canvas.height / 2 + canvas.top\r\n        });\r\n        if (axis.getMarkerTrackers()) {\r\n            createDateMarkersEvent(options, axis.getMarkerTrackers(), this._updateSelectedRangeCallback)\r\n        }\r\n        axis.drawScaleBreaks({\r\n            start: canvas.top,\r\n            end: canvas.top + canvas.height\r\n        })\r\n    },\r\n    visualRange: function() {},\r\n    getViewport: function() {\r\n        return {}\r\n    },\r\n    allScaleSelected: function(value) {\r\n        var _this$_axis$visualRan = this._axis.visualRange(),\r\n            startValue = _this$_axis$visualRan.startValue,\r\n            endValue = _this$_axis$visualRan.endValue;\r\n        return {\r\n            startValue: value[0].valueOf() === startValue.valueOf(),\r\n            endValue: value[1].valueOf() === endValue.valueOf()\r\n        }\r\n    },\r\n    getOptions: function() {\r\n        return this._axis.getOptions() || {}\r\n    }\r\n};\r\n[\"setMarginOptions\", \"getFullTicks\", \"updateCanvas\", \"updateOptions\", \"getAggregationInfo\", \"getTranslator\", \"getVisualRangeLength\", \"getVisibleArea\", \"getMarginOptions\"].forEach(function(methodName) {\r\n    AxisWrapper.prototype[methodName] = function() {\r\n        var axis = this._axis;\r\n        return axis[methodName].apply(axis, arguments)\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxRangeSelector\", dxRangeSelector);\r\nvar _default = dxRangeSelector;\r\nexports.default = _default;\r\ndxRangeSelector.addPlugin(_export.plugin);\r\ndxRangeSelector.addPlugin(_title.plugin);\r\ndxRangeSelector.addPlugin(_loading_indicator.plugin);\r\ndxRangeSelector.addPlugin(_data_source.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/symbol_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _label = require(\"./label\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar window = (0, _window.getWindow)();\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _ceil = _math.ceil;\r\nvar DEFAULT_IMAGE_WIDTH = 20;\r\nvar DEFAULT_IMAGE_HEIGHT = 20;\r\nvar LABEL_OFFSET = 10;\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\n\r\nfunction getSquareMarkerCoords(radius) {\r\n    return [-radius, -radius, radius, -radius, radius, radius, -radius, radius, -radius, -radius]\r\n}\r\n\r\nfunction getPolygonMarkerCoords(radius) {\r\n    var r = _ceil(radius);\r\n    return [-r, 0, 0, -r, r, 0, 0, r, -r, 0]\r\n}\r\n\r\nfunction getCrossMarkerCoords(radius) {\r\n    var r = _ceil(radius);\r\n    var floorHalfRadius = _floor(r / 2);\r\n    var ceilHalfRadius = _ceil(r / 2);\r\n    return [-r, -floorHalfRadius, -floorHalfRadius, -r, 0, -ceilHalfRadius, floorHalfRadius, -r, r, -floorHalfRadius, ceilHalfRadius, 0, r, floorHalfRadius, floorHalfRadius, r, 0, ceilHalfRadius, -floorHalfRadius, r, -r, floorHalfRadius, -ceilHalfRadius, 0]\r\n}\r\n\r\nfunction getTriangleDownMarkerCoords(radius) {\r\n    return [-radius, -radius, radius, -radius, 0, radius, -radius, -radius]\r\n}\r\n\r\nfunction getTriangleUpMarkerCoords(radius) {\r\n    return [-radius, radius, radius, radius, 0, -radius, -radius, radius]\r\n}\r\nvar _default = {\r\n    deleteLabel: function() {\r\n        this._label.dispose();\r\n        this._label = null\r\n    },\r\n    _hasGraphic: function() {\r\n        return this.graphic\r\n    },\r\n    clearVisibility: function() {\r\n        var that = this;\r\n        var graphic = that.graphic;\r\n        if (graphic && graphic.attr(\"visibility\")) {\r\n            graphic.attr({\r\n                visibility: null\r\n            })\r\n        }\r\n    },\r\n    isVisible: function() {\r\n        return this.inVisibleArea && this.series.isVisible()\r\n    },\r\n    setInvisibility: function() {\r\n        var that = this;\r\n        var graphic = that.graphic;\r\n        if (graphic && \"hidden\" !== graphic.attr(\"visibility\")) {\r\n            graphic.attr({\r\n                visibility: \"hidden\"\r\n            })\r\n        }\r\n        that._errorBar && that._errorBar.attr({\r\n            visibility: \"hidden\"\r\n        });\r\n        that._label.draw(false)\r\n    },\r\n    clearMarker: function() {\r\n        var graphic = this.graphic;\r\n        graphic && graphic.attr(this._emptySettings)\r\n    },\r\n    _createLabel: function() {\r\n        this._label = new _label.Label({\r\n            renderer: this.series._renderer,\r\n            labelsGroup: this.series._labelsGroup,\r\n            point: this\r\n        })\r\n    },\r\n    _updateLabelData: function() {\r\n        this._label.setData(this._getLabelFormatObject())\r\n    },\r\n    _updateLabelOptions: function() {\r\n        !this._label && this._createLabel();\r\n        this._label.setOptions(this._options.label)\r\n    },\r\n    _checkImage: function(image) {\r\n        return (0, _type.isDefined)(image) && (\"string\" === typeof image || (0, _type.isDefined)(image.url))\r\n    },\r\n    _fillStyle: function() {\r\n        this._styles = this._options.styles\r\n    },\r\n    _checkSymbol: function(oldOptions, newOptions) {\r\n        var oldSymbol = oldOptions.symbol;\r\n        var newSymbol = newOptions.symbol;\r\n        var symbolChanged = \"circle\" === oldSymbol && \"circle\" !== newSymbol || \"circle\" !== oldSymbol && \"circle\" === newSymbol;\r\n        var imageChanged = this._checkImage(oldOptions.image) !== this._checkImage(newOptions.image);\r\n        return !!(symbolChanged || imageChanged)\r\n    },\r\n    _populatePointShape: function(symbol, radius) {\r\n        switch (symbol) {\r\n            case \"square\":\r\n                return getSquareMarkerCoords(radius);\r\n            case \"polygon\":\r\n                return getPolygonMarkerCoords(radius);\r\n            case \"triangle\":\r\n            case \"triangleDown\":\r\n                return getTriangleDownMarkerCoords(radius);\r\n            case \"triangleUp\":\r\n                return getTriangleUpMarkerCoords(radius);\r\n            case \"cross\":\r\n                return getCrossMarkerCoords(radius)\r\n        }\r\n    },\r\n    hasCoords: function() {\r\n        return null !== this.x && null !== this.y\r\n    },\r\n    correctValue: function(correction) {\r\n        var that = this;\r\n        var axis = that.series.getValueAxis();\r\n        if (that.hasValue()) {\r\n            that.value = that.properValue = axis.validateUnit(that.initialValue.valueOf() + correction.valueOf());\r\n            that.minValue = axis.validateUnit(correction)\r\n        }\r\n    },\r\n    resetCorrection: function() {\r\n        this.value = this.properValue = this.initialValue;\r\n        this.minValue = CANVAS_POSITION_DEFAULT\r\n    },\r\n    resetValue: function() {\r\n        var that = this;\r\n        if (that.hasValue()) {\r\n            that.value = that.properValue = that.initialValue = 0;\r\n            that.minValue = 0;\r\n            that._label.setDataField(\"value\", that.value)\r\n        }\r\n    },\r\n    _getTranslates: function(animationEnabled) {\r\n        var translateX = this.x;\r\n        var translateY = this.y;\r\n        if (animationEnabled) {\r\n            if (this._options.rotated) {\r\n                translateX = this.defaultX\r\n            } else {\r\n                translateY = this.defaultY\r\n            }\r\n        }\r\n        return {\r\n            x: translateX,\r\n            y: translateY\r\n        }\r\n    },\r\n    _createImageMarker: function(renderer, settings, options) {\r\n        var width = options.width || DEFAULT_IMAGE_WIDTH;\r\n        var height = options.height || DEFAULT_IMAGE_HEIGHT;\r\n        return renderer.image(-_round(.5 * width), -_round(.5 * height), width, height, options.url ? options.url.toString() : options.toString(), \"center\").attr({\r\n            translateX: settings.translateX,\r\n            translateY: settings.translateY,\r\n            visibility: settings.visibility\r\n        })\r\n    },\r\n    _createSymbolMarker: function(renderer, pointSettings) {\r\n        var marker;\r\n        var symbol = this._options.symbol;\r\n        if (\"circle\" === symbol) {\r\n            delete pointSettings.points;\r\n            marker = renderer.circle().attr(pointSettings)\r\n        } else {\r\n            if (\"square\" === symbol || \"polygon\" === symbol || \"triangle\" === symbol || \"triangleDown\" === symbol || \"triangleUp\" === symbol || \"cross\" === symbol) {\r\n                marker = renderer.path([], \"area\").attr(pointSettings).sharp()\r\n            }\r\n        }\r\n        return marker\r\n    },\r\n    _createMarker: function(renderer, group, image, settings) {\r\n        var that = this;\r\n        var marker = that._checkImage(image) ? that._createImageMarker(renderer, settings, image) : that._createSymbolMarker(renderer, settings);\r\n        if (marker) {\r\n            marker.data({\r\n                \"chart-data-point\": that\r\n            }).append(group)\r\n        }\r\n        return marker\r\n    },\r\n    _getSymbolBBox: function(x, y, r) {\r\n        return {\r\n            x: x - r,\r\n            y: y - r,\r\n            width: 2 * r,\r\n            height: 2 * r\r\n        }\r\n    },\r\n    _getImageBBox: function(x, y) {\r\n        var image = this._options.image;\r\n        var width = image.width || DEFAULT_IMAGE_WIDTH;\r\n        var height = image.height || DEFAULT_IMAGE_HEIGHT;\r\n        return {\r\n            x: x - _round(width / 2),\r\n            y: y - _round(height / 2),\r\n            width: width,\r\n            height: height\r\n        }\r\n    },\r\n    _getGraphicBBox: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var x = that.x;\r\n        var y = that.y;\r\n        var bBox;\r\n        if (options.visible) {\r\n            bBox = that._checkImage(options.image) ? that._getImageBBox(x, y) : that._getSymbolBBox(x, y, options.styles.normal.r)\r\n        } else {\r\n            bBox = {\r\n                x: x,\r\n                y: y,\r\n                width: 0,\r\n                height: 0\r\n            }\r\n        }\r\n        return bBox\r\n    },\r\n    hideInsideLabel: _common.noop,\r\n    _getShiftLabelCoords: function(label) {\r\n        var coord = this._addLabelAlignmentAndOffset(label, this._getLabelCoords(label));\r\n        return this._checkLabelPosition(label, coord)\r\n    },\r\n    _drawLabel: function() {\r\n        var that = this;\r\n        var customVisibility = that._getCustomLabelVisibility();\r\n        var label = that._label;\r\n        var isVisible = that._showForZeroValues() && that.hasValue() && false !== customVisibility && (that.series.getLabelVisibility() || customVisibility);\r\n        label.draw(!!isVisible)\r\n    },\r\n    correctLabelPosition: function(label) {\r\n        var that = this;\r\n        var coord = that._getShiftLabelCoords(label);\r\n        if (!that.hideInsideLabel(label, coord)) {\r\n            label.setFigureToDrawConnector(that._getLabelConnector(label.pointPosition));\r\n            label.shift(_round(coord.x), _round(coord.y))\r\n        }\r\n    },\r\n    _showForZeroValues: function() {\r\n        return true\r\n    },\r\n    _getLabelConnector: function(pointPosition) {\r\n        var bBox = this._getGraphicBBox(pointPosition);\r\n        var w2 = bBox.width / 2;\r\n        var h2 = bBox.height / 2;\r\n        return {\r\n            x: bBox.x + w2,\r\n            y: bBox.y + h2,\r\n            r: this._options.visible ? Math.max(w2, h2) : 0\r\n        }\r\n    },\r\n    _getPositionFromLocation: function() {\r\n        return {\r\n            x: this.x,\r\n            y: this.y\r\n        }\r\n    },\r\n    _isPointInVisibleArea: function(visibleArea, graphicBBox) {\r\n        return visibleArea.minX <= graphicBBox.x + graphicBBox.width && visibleArea.maxX >= graphicBBox.x && visibleArea.minY <= graphicBBox.y + graphicBBox.height && visibleArea.maxY >= graphicBBox.y\r\n    },\r\n    _checkLabelPosition: function(label, coord) {\r\n        var that = this;\r\n        var visibleArea = that._getVisibleArea();\r\n        var labelBBox = label.getBoundingRect();\r\n        var graphicBBox = that._getGraphicBBox(label.pointPosition);\r\n        var fullGraphicBBox = that._getGraphicBBox();\r\n        var isInside = \"inside\" === label.getLayoutOptions().position;\r\n        var offset = LABEL_OFFSET;\r\n        if (that._isPointInVisibleArea(visibleArea, fullGraphicBBox)) {\r\n            if (!that._options.rotated) {\r\n                if (visibleArea.minX > coord.x) {\r\n                    coord.x = visibleArea.minX\r\n                }\r\n                if (visibleArea.maxX < coord.x + labelBBox.width) {\r\n                    coord.x = visibleArea.maxX - labelBBox.width\r\n                }\r\n                if (visibleArea.minY > coord.y) {\r\n                    coord.y = isInside ? visibleArea.minY : graphicBBox.y + graphicBBox.height + offset\r\n                }\r\n                if (visibleArea.maxY < coord.y + labelBBox.height) {\r\n                    coord.y = isInside ? visibleArea.maxY - labelBBox.height : graphicBBox.y - labelBBox.height - offset\r\n                }\r\n            } else {\r\n                if (visibleArea.minX > coord.x) {\r\n                    coord.x = isInside ? visibleArea.minX : graphicBBox.x + graphicBBox.width + offset\r\n                }\r\n                if (visibleArea.maxX < coord.x + labelBBox.width) {\r\n                    coord.x = isInside ? visibleArea.maxX - labelBBox.width : graphicBBox.x - offset - labelBBox.width\r\n                }\r\n                if (visibleArea.minY > coord.y) {\r\n                    coord.y = visibleArea.minY\r\n                }\r\n                if (visibleArea.maxY < coord.y + labelBBox.height) {\r\n                    coord.y = visibleArea.maxY - labelBBox.height\r\n                }\r\n            }\r\n        }\r\n        return coord\r\n    },\r\n    _addLabelAlignmentAndOffset: function(label, coord) {\r\n        var labelBBox = label.getBoundingRect();\r\n        var labelOptions = label.getLayoutOptions();\r\n        if (!this._options.rotated) {\r\n            if (\"left\" === labelOptions.alignment) {\r\n                coord.x += labelBBox.width / 2\r\n            } else {\r\n                if (\"right\" === labelOptions.alignment) {\r\n                    coord.x -= labelBBox.width / 2\r\n                }\r\n            }\r\n        }\r\n        coord.x += labelOptions.horizontalOffset;\r\n        coord.y += labelOptions.verticalOffset;\r\n        return coord\r\n    },\r\n    _getLabelCoords: function(label) {\r\n        return this._getLabelCoordOfPosition(label, this._getLabelPosition(label.pointPosition))\r\n    },\r\n    _getLabelCoordOfPosition: function(label, position) {\r\n        var that = this;\r\n        var labelBBox = label.getBoundingRect();\r\n        var graphicBBox = that._getGraphicBBox(label.pointPosition);\r\n        var offset = LABEL_OFFSET;\r\n        var centerY = graphicBBox.height / 2 - labelBBox.height / 2;\r\n        var centerX = graphicBBox.width / 2 - labelBBox.width / 2;\r\n        var x = graphicBBox.x;\r\n        var y = graphicBBox.y;\r\n        switch (position) {\r\n            case \"left\":\r\n                x -= labelBBox.width + offset;\r\n                y += centerY;\r\n                break;\r\n            case \"right\":\r\n                x += graphicBBox.width + offset;\r\n                y += centerY;\r\n                break;\r\n            case \"top\":\r\n                x += centerX;\r\n                y -= labelBBox.height + offset;\r\n                break;\r\n            case \"bottom\":\r\n                x += centerX;\r\n                y += graphicBBox.height + offset;\r\n                break;\r\n            case \"inside\":\r\n                x += centerX;\r\n                y += centerY\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y\r\n        }\r\n    },\r\n    _drawMarker: function(renderer, group, animationEnabled) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var translates = that._getTranslates(animationEnabled);\r\n        var style = that._getStyle();\r\n        that.graphic = that._createMarker(renderer, group, options.image, _extend({\r\n            translateX: translates.x,\r\n            translateY: translates.y,\r\n            points: that._populatePointShape(options.symbol, style.r)\r\n        }, style))\r\n    },\r\n    _getErrorBarSettings: function() {\r\n        return {\r\n            visibility: \"visible\"\r\n        }\r\n    },\r\n    _getErrorBarBaseEdgeLength: function() {\r\n        return 2 * this.getPointRadius()\r\n    },\r\n    _drawErrorBar: function(renderer, group) {\r\n        if (!this._options.errorBars) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var options = that._options;\r\n        var errorBarOptions = options.errorBars;\r\n        var points = [];\r\n        var settings;\r\n        var pos = that._errorBarPos;\r\n        var high = that._highErrorCoord;\r\n        var low = that._lowErrorCoord;\r\n        var displayMode = (0, _utils.normalizeEnum)(errorBarOptions.displayMode);\r\n        var isHighDisplayMode = \"high\" === displayMode;\r\n        var isLowDisplayMode = \"low\" === displayMode;\r\n        var highErrorOnly = (isHighDisplayMode || !(0, _type.isDefined)(low)) && (0, _type.isDefined)(high) && !isLowDisplayMode;\r\n        var lowErrorOnly = (isLowDisplayMode || !(0, _type.isDefined)(high)) && (0, _type.isDefined)(low) && !isHighDisplayMode;\r\n        var edgeLength = errorBarOptions.edgeLength;\r\n        if (edgeLength <= 1 && edgeLength > 0) {\r\n            edgeLength = this._getErrorBarBaseEdgeLength() * errorBarOptions.edgeLength\r\n        }\r\n        edgeLength = _floor(parseInt(edgeLength) / 2);\r\n        highErrorOnly && (low = that._baseErrorBarPos);\r\n        lowErrorOnly && (high = that._baseErrorBarPos);\r\n        if (\"none\" !== displayMode && (0, _type.isDefined)(high) && (0, _type.isDefined)(low) && (0, _type.isDefined)(pos)) {\r\n            !lowErrorOnly && points.push([pos - edgeLength, high, pos + edgeLength, high]);\r\n            points.push([pos, high, pos, low]);\r\n            !highErrorOnly && points.push([pos + edgeLength, low, pos - edgeLength, low]);\r\n            options.rotated && (0, _iterator.each)(points, function(_, p) {\r\n                p.reverse()\r\n            });\r\n            settings = that._getErrorBarSettings(errorBarOptions);\r\n            if (!that._errorBar) {\r\n                that._errorBar = renderer.path(points, \"line\").attr(settings).append(group)\r\n            } else {\r\n                settings.points = points;\r\n                that._errorBar.attr(settings)\r\n            }\r\n        } else {\r\n            that._errorBar && that._errorBar.attr({\r\n                visibility: \"hidden\"\r\n            })\r\n        }\r\n    },\r\n    getTooltipParams: function() {\r\n        var that = this;\r\n        var graphic = that.graphic;\r\n        return {\r\n            x: that.x,\r\n            y: that.y,\r\n            offset: graphic ? graphic.getBBox().height / 2 : 0\r\n        }\r\n    },\r\n    setPercentValue: function(absTotal, total, leftHoleTotal, rightHoleTotal) {\r\n        var that = this;\r\n        var valuePercent = that.value / absTotal || 0;\r\n        var minValuePercent = that.minValue / absTotal || 0;\r\n        var percent = valuePercent - minValuePercent;\r\n        that._label.setDataField(\"percent\", percent);\r\n        that._label.setDataField(\"total\", total);\r\n        if (that.series.isFullStackedSeries() && that.hasValue()) {\r\n            if (that.leftHole) {\r\n                that.leftHole /= absTotal - leftHoleTotal;\r\n                that.minLeftHole /= absTotal - leftHoleTotal\r\n            }\r\n            if (that.rightHole) {\r\n                that.rightHole /= absTotal - rightHoleTotal;\r\n                that.minRightHole /= absTotal - rightHoleTotal\r\n            }\r\n            that.value = that.properValue = valuePercent;\r\n            that.minValue = !minValuePercent ? that.minValue : minValuePercent\r\n        }\r\n    },\r\n    _storeTrackerR: function() {\r\n        var that = this;\r\n        var navigator = window.navigator;\r\n        var r = that._options.styles.normal.r;\r\n        var minTrackerSize = (0, _window.hasProperty)(\"ontouchstart\") || navigator.msPointerEnabled && navigator.msMaxTouchPoints || navigator.pointerEnabled && navigator.maxTouchPoints ? 20 : 6;\r\n        that._options.trackerR = r < minTrackerSize ? minTrackerSize : r;\r\n        return that._options.trackerR\r\n    },\r\n    _translateErrorBars: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var rotated = options.rotated;\r\n        var errorBars = options.errorBars;\r\n        var translator = that._getValTranslator();\r\n        if (!errorBars) {\r\n            return\r\n        }(0, _type.isDefined)(that.lowError) && (that._lowErrorCoord = translator.translate(that.lowError));\r\n        (0, _type.isDefined)(that.highError) && (that._highErrorCoord = translator.translate(that.highError));\r\n        that._errorBarPos = _floor(rotated ? that.vy : that.vx);\r\n        that._baseErrorBarPos = \"stdDeviation\" === errorBars.type ? that._lowErrorCoord + (that._highErrorCoord - that._lowErrorCoord) / 2 : rotated ? that.vx : that.vy\r\n    },\r\n    _translate: function() {\r\n        var that = this;\r\n        var valTranslator = that._getValTranslator();\r\n        var argTranslator = that._getArgTranslator();\r\n        if (that._options.rotated) {\r\n            that.vx = that.x = valTranslator.translate(that.value);\r\n            that.vy = that.y = argTranslator.translate(that.argument);\r\n            that.minX = valTranslator.translate(that.minValue);\r\n            that.defaultX = valTranslator.translate(CANVAS_POSITION_DEFAULT)\r\n        } else {\r\n            that.vy = that.y = valTranslator.translate(that.value);\r\n            that.vx = that.x = argTranslator.translate(that.argument);\r\n            that.minY = valTranslator.translate(that.minValue);\r\n            that.defaultY = valTranslator.translate(CANVAS_POSITION_DEFAULT)\r\n        }\r\n        that._translateErrorBars();\r\n        that._calculateVisibility(that.x, that.y)\r\n    },\r\n    _updateData: function(data) {\r\n        var that = this;\r\n        that.value = that.properValue = that.initialValue = that.originalValue = data.value;\r\n        that.minValue = that.initialMinValue = that.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : CANVAS_POSITION_DEFAULT\r\n    },\r\n    _getImageSettings: function(image) {\r\n        return {\r\n            href: image.url || image.toString(),\r\n            width: image.width || DEFAULT_IMAGE_WIDTH,\r\n            height: image.height || DEFAULT_IMAGE_HEIGHT\r\n        }\r\n    },\r\n    getCrosshairData: function() {\r\n        var that = this;\r\n        var r = that._options.rotated;\r\n        var value = that.properValue;\r\n        var argument = that.argument;\r\n        return {\r\n            x: that.vx,\r\n            y: that.vy,\r\n            xValue: r ? value : argument,\r\n            yValue: r ? argument : value,\r\n            axis: that.series.axis\r\n        }\r\n    },\r\n    getPointRadius: function() {\r\n        var style = this._getStyle();\r\n        var options = this._options;\r\n        var r = style.r;\r\n        var extraSpace;\r\n        var symbol = options.symbol;\r\n        var isSquare = \"square\" === symbol;\r\n        var isTriangle = \"triangle\" === symbol || \"triangleDown\" === symbol || \"triangleUp\" === symbol;\r\n        if (options.visible && !options.image && r) {\r\n            extraSpace = style[\"stroke-width\"] / 2;\r\n            return (isSquare || isTriangle ? 1.4 * r : r) + extraSpace\r\n        }\r\n        return 0\r\n    },\r\n    _updateMarker: function(animationEnabled, style) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var settings;\r\n        var image = options.image;\r\n        var visibility = !that.isVisible() ? {\r\n            visibility: \"hidden\"\r\n        } : {};\r\n        if (that._checkImage(image)) {\r\n            settings = _extend({}, {\r\n                visibility: style.visibility\r\n            }, visibility, that._getImageSettings(image))\r\n        } else {\r\n            settings = _extend({}, style, visibility, {\r\n                points: that._populatePointShape(options.symbol, style.r)\r\n            })\r\n        }\r\n        if (!animationEnabled) {\r\n            settings.translateX = that.x;\r\n            settings.translateY = that.y\r\n        }\r\n        that.graphic.attr(settings).sharp()\r\n    },\r\n    _getLabelFormatObject: function() {\r\n        var that = this;\r\n        return {\r\n            argument: that.initialArgument,\r\n            value: that.initialValue,\r\n            originalArgument: that.originalArgument,\r\n            originalValue: that.originalValue,\r\n            seriesName: that.series.name,\r\n            lowErrorValue: that.lowError,\r\n            highErrorValue: that.highError,\r\n            point: that\r\n        }\r\n    },\r\n    _getLabelPosition: function() {\r\n        var rotated = this._options.rotated;\r\n        if (this.initialValue > 0) {\r\n            return rotated ? \"right\" : \"top\"\r\n        } else {\r\n            return rotated ? \"left\" : \"bottom\"\r\n        }\r\n    },\r\n    _getFormatObject: function(tooltip) {\r\n        var that = this;\r\n        var labelFormatObject = that._label.getData();\r\n        return _extend({}, labelFormatObject, {\r\n            argumentText: tooltip.formatValue(that.initialArgument, \"argument\"),\r\n            valueText: tooltip.formatValue(that.initialValue)\r\n        }, (0, _type.isDefined)(labelFormatObject.percent) ? {\r\n            percentText: tooltip.formatValue(labelFormatObject.percent, \"percent\")\r\n        } : {}, (0, _type.isDefined)(labelFormatObject.total) ? {\r\n            totalText: tooltip.formatValue(labelFormatObject.total)\r\n        } : {})\r\n    },\r\n    getMarkerVisibility: function() {\r\n        return this._options.visible\r\n    },\r\n    coordsIn: function(x, y) {\r\n        var trackerRadius = this._storeTrackerR();\r\n        return x >= this.x - trackerRadius && x <= this.x + trackerRadius && y >= this.y - trackerRadius && y <= this.y + trackerRadius\r\n    },\r\n    getMinValue: function(noErrorBar) {\r\n        var errorBarOptions = this._options.errorBars;\r\n        if (errorBarOptions && !noErrorBar) {\r\n            var displayMode = errorBarOptions.displayMode;\r\n            var lowValue = \"high\" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;\r\n            var highValue = \"low\" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;\r\n            return lowValue < highValue ? lowValue : highValue\r\n        } else {\r\n            return this.value\r\n        }\r\n    },\r\n    getMaxValue: function(noErrorBar) {\r\n        var errorBarOptions = this._options.errorBars;\r\n        if (errorBarOptions && !noErrorBar) {\r\n            var displayMode = errorBarOptions.displayMode;\r\n            var lowValue = \"high\" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;\r\n            var highValue = \"low\" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;\r\n            return lowValue > highValue ? lowValue : highValue\r\n        } else {\r\n            return this.value\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tabs/constants.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TABS_EXPANDED_CLASS = void 0;\r\nvar TABS_EXPANDED_CLASS = \"dx-tabs-expanded\";\r\nexports.TABS_EXPANDED_CLASS = TABS_EXPANDED_CLASS;\r\n","/**\r\n * DevExtreme (viz/series/points/range_bar_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _range_symbol_point = _interopRequireDefault(require(\"./range_symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _default = _extend({}, _bar_point.default, {\r\n    deleteLabel: _range_symbol_point.default.deleteLabel,\r\n    _getFormatObject: _range_symbol_point.default._getFormatObject,\r\n    clearVisibility: function() {\r\n        var graphic = this.graphic;\r\n        if (graphic && graphic.attr(\"visibility\")) {\r\n            graphic.attr({\r\n                visibility: null\r\n            })\r\n        }\r\n    },\r\n    setInvisibility: function() {\r\n        var graphic = this.graphic;\r\n        if (graphic && \"hidden\" !== graphic.attr(\"visibility\")) {\r\n            graphic.attr({\r\n                visibility: \"hidden\"\r\n            })\r\n        }\r\n        this._topLabel.draw(false);\r\n        this._bottomLabel.draw(false)\r\n    },\r\n    getTooltipParams: function(location) {\r\n        var that = this;\r\n        var edgeLocation = \"edge\" === location;\r\n        var x;\r\n        var y;\r\n        if (that._options.rotated) {\r\n            x = edgeLocation ? that.x + that.width : that.x + that.width / 2;\r\n            y = that.y + that.height / 2\r\n        } else {\r\n            x = that.x + that.width / 2;\r\n            y = edgeLocation ? that.y : that.y + that.height / 2\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y,\r\n            offset: 0\r\n        }\r\n    },\r\n    _translate: function() {\r\n        var that = this;\r\n        var barMethods = _bar_point.default;\r\n        barMethods._translate.call(that);\r\n        if (that._options.rotated) {\r\n            that.width = that.width || 1\r\n        } else {\r\n            that.height = that.height || 1\r\n        }\r\n    },\r\n    hasCoords: _range_symbol_point.default.hasCoords,\r\n    _updateData: _range_symbol_point.default._updateData,\r\n    _getLabelPosition: _range_symbol_point.default._getLabelPosition,\r\n    _getLabelMinFormatObject: _range_symbol_point.default._getLabelMinFormatObject,\r\n    _updateLabelData: _range_symbol_point.default._updateLabelData,\r\n    _updateLabelOptions: _range_symbol_point.default._updateLabelOptions,\r\n    getCrosshairData: _range_symbol_point.default.getCrosshairData,\r\n    _createLabel: _range_symbol_point.default._createLabel,\r\n    _checkOverlay: _range_symbol_point.default._checkOverlay,\r\n    _checkLabelsOverlay: _range_symbol_point.default._checkLabelsOverlay,\r\n    _getOverlayCorrections: _range_symbol_point.default._getOverlayCorrections,\r\n    _drawLabel: _range_symbol_point.default._drawLabel,\r\n    _getLabelCoords: _range_symbol_point.default._getLabelCoords,\r\n    getLabel: _range_symbol_point.default.getLabel,\r\n    getLabels: _range_symbol_point.default.getLabels,\r\n    getBoundingRect: _common.noop,\r\n    getMinValue: _range_symbol_point.default.getMinValue,\r\n    getMaxValue: _range_symbol_point.default.getMaxValue\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/formats/size.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SizeStyle = {};\r\nif (_devextremeQuill.default) {\r\n    SizeStyle = _devextremeQuill.default.import(\"attributors/style/size\");\r\n    SizeStyle.whitelist = null\r\n}\r\nvar _default = SizeStyle;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/modules/resizing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _click = require(\"../../../events/click\");\r\nvar _index = require(\"../../../events/utils/index\");\r\nvar _translator = require(\"../../../animation/translator\");\r\nvar _devices = _interopRequireDefault(require(\"../../../core/devices\"));\r\nvar _resizable = _interopRequireDefault(require(\"../../resizable\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar DX_RESIZE_FRAME_CLASS = \"dx-resize-frame\";\r\nvar DX_TOUCH_DEVICE_CLASS = \"dx-touch-device\";\r\nvar MODULE_NAMESPACE = \"dxHtmlResizingModule\";\r\nvar KEYDOWN_EVENT = (0, _index.addNamespace)(\"keydown\", MODULE_NAMESPACE);\r\nvar SCROLL_EVENT = (0, _index.addNamespace)(\"scroll\", MODULE_NAMESPACE);\r\nvar MOUSEDOWN_EVENT = (0, _index.addNamespace)(\"mousedown\", MODULE_NAMESPACE);\r\nvar FRAME_PADDING = 1;\r\nvar ResizingModule = function() {\r\n    function ResizingModule(quill, options) {\r\n        _classCallCheck(this, ResizingModule);\r\n        this.quill = quill;\r\n        this.editorInstance = options.editorInstance;\r\n        this.allowedTargets = options.allowedTargets || [\"image\"];\r\n        this.enabled = !!options.enabled;\r\n        if (this.enabled) {\r\n            this._attachEvents();\r\n            this._createResizeFrame()\r\n        }\r\n    }\r\n    _createClass(ResizingModule, [{\r\n        key: \"_attachEvents\",\r\n        value: function() {\r\n            _events_engine.default.on(this.quill.root, (0, _index.addNamespace)(_click.name, MODULE_NAMESPACE), this._clickHandler.bind(this));\r\n            _events_engine.default.on(this.quill.root, SCROLL_EVENT, this._scrollHandler.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_detachEvents\",\r\n        value: function() {\r\n            _events_engine.default.off(this.quill.root, MODULE_NAMESPACE)\r\n        }\r\n    }, {\r\n        key: \"_clickHandler\",\r\n        value: function(e) {\r\n            if (this._isAllowedTarget(e.target)) {\r\n                if (this._$target === e.target) {\r\n                    return\r\n                }\r\n                this._$target = e.target;\r\n                this.updateFramePosition();\r\n                this.showFrame()\r\n            } else {\r\n                if (this._$target) {\r\n                    this.hideFrame()\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_scrollHandler\",\r\n        value: function(e) {\r\n            if (this._$target) {\r\n                this.updateFramePosition()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isAllowedTarget\",\r\n        value: function(targetElement) {\r\n            return this._isImage(targetElement)\r\n        }\r\n    }, {\r\n        key: \"_isImage\",\r\n        value: function(targetElement) {\r\n            return this.allowedTargets.indexOf(\"image\") !== -1 && \"IMG\" === targetElement.tagName.toUpperCase()\r\n        }\r\n    }, {\r\n        key: \"showFrame\",\r\n        value: function() {\r\n            this._$resizeFrame.show();\r\n            _events_engine.default.on(this.quill.root, KEYDOWN_EVENT, this._handleFrameKeyDown.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_handleFrameKeyDown\",\r\n        value: function(e) {\r\n            var keyName = (0, _index.normalizeKeyName)(e);\r\n            if (\"del\" === keyName || \"backspace\" === keyName) {\r\n                this._deleteImage()\r\n            }\r\n            this.hideFrame()\r\n        }\r\n    }, {\r\n        key: \"hideFrame\",\r\n        value: function() {\r\n            this._$target = null;\r\n            this._$resizeFrame.hide();\r\n            _events_engine.default.off(this.quill.root, KEYDOWN_EVENT)\r\n        }\r\n    }, {\r\n        key: \"updateFramePosition\",\r\n        value: function() {\r\n            var _getBoundingRect = (0, _position.getBoundingRect)(this._$target),\r\n                height = _getBoundingRect.height,\r\n                width = _getBoundingRect.width,\r\n                targetTop = _getBoundingRect.top,\r\n                targetLeft = _getBoundingRect.left;\r\n            var _getBoundingRect2 = (0, _position.getBoundingRect)(this.quill.root),\r\n                containerTop = _getBoundingRect2.top,\r\n                containerLeft = _getBoundingRect2.left;\r\n            var borderWidth = this._getBorderWidth();\r\n            this._$resizeFrame.css({\r\n                height: height,\r\n                width: width,\r\n                padding: FRAME_PADDING,\r\n                top: targetTop - containerTop - borderWidth - FRAME_PADDING,\r\n                left: targetLeft - containerLeft - borderWidth - FRAME_PADDING\r\n            });\r\n            (0, _translator.move)(this._$resizeFrame, {\r\n                left: 0,\r\n                top: 0\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getBorderWidth\",\r\n        value: function() {\r\n            return parseInt(this._$resizeFrame.css(\"borderTopWidth\"))\r\n        }\r\n    }, {\r\n        key: \"_createResizeFrame\",\r\n        value: function() {\r\n            var _this = this;\r\n            if (this._$resizeFrame) {\r\n                return\r\n            }\r\n            var _devices$current = _devices.default.current(),\r\n                deviceType = _devices$current.deviceType;\r\n            this._$resizeFrame = (0, _renderer.default)(\"<div>\").addClass(DX_RESIZE_FRAME_CLASS).toggleClass(DX_TOUCH_DEVICE_CLASS, \"desktop\" !== deviceType).appendTo(this.editorInstance._getQuillContainer()).hide();\r\n            _events_engine.default.on(this._$resizeFrame, MOUSEDOWN_EVENT, function(e) {\r\n                e.preventDefault()\r\n            });\r\n            this.editorInstance._createComponent(this._$resizeFrame, _resizable.default, {\r\n                onResize: function(e) {\r\n                    if (!_this._$target) {\r\n                        return\r\n                    }\r\n                    var correction = 2 * (FRAME_PADDING + _this._getBorderWidth());\r\n                    (0, _renderer.default)(_this._$target).attr({\r\n                        height: e.height - correction,\r\n                        width: e.width - correction\r\n                    });\r\n                    _this.updateFramePosition()\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_deleteImage\",\r\n        value: function() {\r\n            if (this._isAllowedTarget(this._$target)) {\r\n                _devextremeQuill.default.find(this._$target).deleteAt(0)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"option\",\r\n        value: function(_option, value) {\r\n            var _this2 = this;\r\n            if (\"mediaResizing\" === _option) {\r\n                Object.keys(value).forEach(function(optionName) {\r\n                    return _this2.option(optionName, value[optionName])\r\n                });\r\n                return\r\n            }\r\n            if (\"enabled\" === _option) {\r\n                this.enabled = value;\r\n                value ? this._attachEvents() : this._detachEvents()\r\n            } else {\r\n                if (\"allowedTargets\" === _option && Array.isArray(value)) {\r\n                    this.allowedTargets = value\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"clean\",\r\n        value: function() {\r\n            this._detachEvents();\r\n            this._$resizeFrame.remove();\r\n            this._$resizeFrame = void 0\r\n        }\r\n    }]);\r\n    return ResizingModule\r\n}();\r\nexports.default = ResizingModule;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/components/tracker.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Tracker = Tracker;\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar downPointerEventName = _pointer.default.down;\r\nvar movePointerEventName = _pointer.default.move;\r\n\r\nfunction Tracker(parameters) {\r\n    this._initHandlers(parameters)\r\n}\r\nTracker.prototype = {\r\n    constructor: Tracker,\r\n    _initHandlers: function(parameters) {\r\n        var document = _dom_adapter.default.getDocument();\r\n        parameters.getCoords = function(e) {\r\n            var data = (0, _index.eventData)(e);\r\n            var offset = parameters.widget._renderer.getRootOffset();\r\n            return [data.x - offset.left, data.y - offset.top]\r\n        };\r\n        parameters.root.on(_click.name, clickHandler);\r\n        parameters.root.on(downPointerEventName, downHandler);\r\n        _events_engine.default.on(document, downPointerEventName, downHandler);\r\n        _events_engine.default.on(document, movePointerEventName, moveHandler);\r\n        this._disposeHandlers = function() {\r\n            parameters.root.off(_click.name, clickHandler);\r\n            parameters.root.off(downPointerEventName, downHandler);\r\n            _events_engine.default.off(document, downPointerEventName, downHandler);\r\n            _events_engine.default.off(document, movePointerEventName, moveHandler)\r\n        };\r\n\r\n        function clickHandler(e) {\r\n            processClick(e, parameters)\r\n        }\r\n        var isRootDown = false;\r\n\r\n        function downHandler(e) {\r\n            if (isRootDown) {\r\n                isRootDown = false\r\n            } else {\r\n                if (void 0 !== parameters.getData(e)) {\r\n                    isRootDown = true\r\n                }\r\n                moveHandler(e)\r\n            }\r\n        }\r\n\r\n        function moveHandler(e) {\r\n            processHover(e, parameters);\r\n            parameters.widget._getOption(\"tooltip\").enabled && processTooltip(e, parameters)\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._disposeHandlers()\r\n    }\r\n};\r\n\r\nfunction processClick(e, params) {\r\n    var id = params.getData(e);\r\n    if (id >= 0) {\r\n        params.click({\r\n            node: params.getNode(id),\r\n            coords: params.getCoords(e),\r\n            event: e\r\n        })\r\n    }\r\n}\r\n\r\nfunction processHover(e, params) {\r\n    var id = params.getData(e);\r\n    if (id >= 0) {\r\n        params.getNode(id).setHover()\r\n    } else {\r\n        params.widget.clearHover()\r\n    }\r\n}\r\n\r\nfunction processTooltip(e, params) {\r\n    var id = params.getData(e, true);\r\n    var coords;\r\n    if (id >= 0) {\r\n        coords = (0, _index.eventData)(e);\r\n        params.getNode(id).showTooltip([coords.x, coords.y])\r\n    } else {\r\n        params.widget.hideTooltip()\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (ui/form/ui.form.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _element = require(\"../../core/element\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _validation_engine = _interopRequireDefault(require(\"../validation_engine\"));\r\nvar _uiForm = _interopRequireDefault(require(\"./ui.form.items_runtime_info\"));\r\nvar _tab_panel = _interopRequireDefault(require(\"../tab_panel\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _themes = require(\"../themes\");\r\nvar _uiForm2 = _interopRequireDefault(require(\"./ui.form.item_options_actions\"));\r\nrequire(\"./ui.form.layout_manager\");\r\nvar _uiForm4 = require(\"./ui.form.utils\");\r\nrequire(\"../validation_summary\");\r\nrequire(\"../validation_group\");\r\nvar _constants = require(\"./constants\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar ITEM_OPTIONS_FOR_VALIDATION_UPDATING = [\"items\", \"isRequired\", \"validationRules\", \"visible\"];\r\nvar Form = _ui.default.inherit({\r\n    _init: function() {\r\n        this.callBase();\r\n        this._cachedColCountOptions = [];\r\n        this._itemsRunTimeInfo = new _uiForm.default;\r\n        this._groupsColCount = [];\r\n        this._attachSyncSubscriptions()\r\n    },\r\n    _initOptions: function(options) {\r\n        if (!(\"screenByWidth\" in options)) {\r\n            options.screenByWidth = _window.defaultScreenFactorFunc\r\n        }\r\n        this.callBase(options)\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            formID: \"dx-\" + new _guid.default,\r\n            formData: {},\r\n            colCount: 1,\r\n            screenByWidth: null,\r\n            colCountByScreen: void 0,\r\n            labelLocation: \"left\",\r\n            readOnly: false,\r\n            onFieldDataChanged: null,\r\n            customizeItem: null,\r\n            onEditorEnterKey: null,\r\n            minColWidth: 200,\r\n            alignItemLabels: true,\r\n            alignItemLabelsInAllGroups: true,\r\n            alignRootItemLabels: true,\r\n            showColonAfterLabel: true,\r\n            showRequiredMark: true,\r\n            showOptionalMark: false,\r\n            requiredMark: \"*\",\r\n            optionalMark: _message.default.format(\"dxForm-optionalMark\"),\r\n            requiredMessage: _message.default.getFormatter(\"dxForm-requiredMessage\"),\r\n            showValidationSummary: false,\r\n            items: void 0,\r\n            scrollingEnabled: false,\r\n            validationGroup: void 0,\r\n            stylingMode: void 0\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                showColonAfterLabel: false,\r\n                labelLocation: \"top\"\r\n            }\r\n        }])\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            formData: true,\r\n            validationGroup: true\r\n        })\r\n    },\r\n    _getGroupColCount: function($element) {\r\n        return parseInt($element.attr(_constants.GROUP_COL_COUNT_ATTR))\r\n    },\r\n    _createHiddenElement: function(rootLayoutManager) {\r\n        this._$hiddenElement = (0, _renderer.default)(\"<div>\").addClass(WIDGET_CLASS).addClass(_constants.HIDDEN_LABEL_CLASS).appendTo(\"body\");\r\n        var $hiddenLabel = rootLayoutManager._renderLabel({\r\n            text: \" \",\r\n            location: this._labelLocation()\r\n        }).appendTo(this._$hiddenElement);\r\n        this._hiddenLabelText = $hiddenLabel.find(\".\" + _constants.FIELD_ITEM_LABEL_TEXT_CLASS)[0]\r\n    },\r\n    _removeHiddenElement: function() {\r\n        this._$hiddenElement.remove();\r\n        this._hiddenLabelText = null\r\n    },\r\n    _getLabelWidthByText: function(text) {\r\n        this._hiddenLabelText.innerHTML = text;\r\n        return this._hiddenLabelText.offsetWidth\r\n    },\r\n    _getLabelsSelectorByCol: function(index, options) {\r\n        options = options || {};\r\n        var fieldItemClass = options.inOneColumn ? _constants.FIELD_ITEM_CLASS : _constants.FORM_FIELD_ITEM_COL_CLASS + index;\r\n        var cssExcludeTabbedSelector = options.excludeTabbed ? \":not(.\" + _constants.FIELD_ITEM_TAB_CLASS + \")\" : \"\";\r\n        var childLabelContentSelector = \"> .\" + _constants.FIELD_ITEM_LABEL_CLASS + \" > .\" + _constants.FIELD_ITEM_LABEL_CONTENT_CLASS;\r\n        return \".\" + fieldItemClass + cssExcludeTabbedSelector + childLabelContentSelector\r\n    },\r\n    _getLabelText: function(labelText) {\r\n        var length = labelText.children.length;\r\n        var child;\r\n        var result = \"\";\r\n        var i;\r\n        for (i = 0; i < length; i++) {\r\n            child = labelText.children[i];\r\n            result += !(0, _string.isEmpty)(child.innerText) ? child.innerText : child.innerHTML\r\n        }\r\n        return result\r\n    },\r\n    _applyLabelsWidthByCol: function($container, index, options) {\r\n        var $labelTexts = $container.find(this._getLabelsSelectorByCol(index, options));\r\n        var $labelTextsLength = $labelTexts.length;\r\n        var labelWidth;\r\n        var i;\r\n        var maxWidth = 0;\r\n        for (i = 0; i < $labelTextsLength; i++) {\r\n            labelWidth = this._getLabelWidthByText(this._getLabelText($labelTexts[i]));\r\n            if (labelWidth > maxWidth) {\r\n                maxWidth = labelWidth\r\n            }\r\n        }\r\n        for (i = 0; i < $labelTextsLength; i++) {\r\n            $labelTexts[i].style.width = maxWidth + \"px\"\r\n        }\r\n    },\r\n    _applyLabelsWidth: function($container, excludeTabbed, inOneColumn, colCount) {\r\n        colCount = inOneColumn ? 1 : colCount || this._getGroupColCount($container);\r\n        var applyLabelsOptions = {\r\n            excludeTabbed: excludeTabbed,\r\n            inOneColumn: inOneColumn\r\n        };\r\n        var i;\r\n        for (i = 0; i < colCount; i++) {\r\n            this._applyLabelsWidthByCol($container, i, applyLabelsOptions)\r\n        }\r\n    },\r\n    _getGroupElementsInColumn: function($container, columnIndex, colCount) {\r\n        var cssColCountSelector = (0, _type.isDefined)(colCount) ? \".\" + _constants.GROUP_COL_COUNT_CLASS + colCount : \"\";\r\n        var groupSelector = \".\" + _constants.FORM_FIELD_ITEM_COL_CLASS + columnIndex + \" > .\" + _constants.FIELD_ITEM_CONTENT_CLASS + \" > .\" + _constants.FORM_GROUP_CLASS + cssColCountSelector;\r\n        return $container.find(groupSelector)\r\n    },\r\n    _applyLabelsWidthWithGroups: function($container, colCount, excludeTabbed) {\r\n        if (true === this.option(\"alignRootItemLabels\")) {\r\n            this._alignRootSimpleItems($container, colCount, excludeTabbed)\r\n        }\r\n        var alignItemLabelsInAllGroups = this.option(\"alignItemLabelsInAllGroups\");\r\n        if (alignItemLabelsInAllGroups) {\r\n            this._applyLabelsWidthWithNestedGroups($container, colCount, excludeTabbed)\r\n        } else {\r\n            var $groups = this.$element().find(\".\" + _constants.FORM_GROUP_CLASS);\r\n            var i;\r\n            for (i = 0; i < $groups.length; i++) {\r\n                this._applyLabelsWidth($groups.eq(i), excludeTabbed)\r\n            }\r\n        }\r\n    },\r\n    _alignRootSimpleItems: function($container, colCount, excludeTabbed) {\r\n        var $rootSimpleItems = $container.find(\".\".concat(_constants.ROOT_SIMPLE_ITEM_CLASS));\r\n        for (var colIndex = 0; colIndex < colCount; colIndex++) {\r\n            this._applyLabelsWidthByCol($rootSimpleItems, colIndex, excludeTabbed)\r\n        }\r\n    },\r\n    _applyLabelsWidthWithNestedGroups: function($container, colCount, excludeTabbed) {\r\n        var applyLabelsOptions = {\r\n            excludeTabbed: excludeTabbed\r\n        };\r\n        var colIndex;\r\n        var groupsColIndex;\r\n        var groupColIndex;\r\n        var $groupsByCol;\r\n        for (colIndex = 0; colIndex < colCount; colIndex++) {\r\n            $groupsByCol = this._getGroupElementsInColumn($container, colIndex);\r\n            this._applyLabelsWidthByCol($groupsByCol, 0, applyLabelsOptions);\r\n            for (groupsColIndex = 0; groupsColIndex < this._groupsColCount.length; groupsColIndex++) {\r\n                $groupsByCol = this._getGroupElementsInColumn($container, colIndex, this._groupsColCount[groupsColIndex]);\r\n                var groupColCount = this._getGroupColCount($groupsByCol);\r\n                for (groupColIndex = 1; groupColIndex < groupColCount; groupColIndex++) {\r\n                    this._applyLabelsWidthByCol($groupsByCol, groupColIndex, applyLabelsOptions)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _labelLocation: function() {\r\n        return this.option(\"labelLocation\")\r\n    },\r\n    _alignLabelsInColumn: function(_ref) {\r\n        var layoutManager = _ref.layoutManager,\r\n            inOneColumn = _ref.inOneColumn,\r\n            $container = _ref.$container,\r\n            excludeTabbed = _ref.excludeTabbed,\r\n            items = _ref.items;\r\n        if (!(0, _window.hasWindow)() || \"top\" === this._labelLocation()) {\r\n            return\r\n        }\r\n        this._createHiddenElement(layoutManager);\r\n        if (inOneColumn) {\r\n            this._applyLabelsWidth($container, excludeTabbed, true)\r\n        } else {\r\n            if (this._checkGrouping(items)) {\r\n                this._applyLabelsWidthWithGroups($container, layoutManager._getColCount(), excludeTabbed)\r\n            } else {\r\n                this._applyLabelsWidth($container, excludeTabbed, false, layoutManager._getColCount())\r\n            }\r\n        }\r\n        this._removeHiddenElement()\r\n    },\r\n    _prepareFormData: function() {\r\n        if (!(0, _type.isDefined)(this.option(\"formData\"))) {\r\n            this.option(\"formData\", {})\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        _validation_engine.default.addGroup(this._getValidationGroup());\r\n        this._clearCachedInstances();\r\n        this._prepareFormData();\r\n        this.$element().addClass(_constants.FORM_CLASS);\r\n        this.callBase();\r\n        this.setAria(\"role\", \"form\", this.$element());\r\n        if (this.option(\"scrollingEnabled\")) {\r\n            this._renderScrollable()\r\n        }\r\n        this._renderLayout();\r\n        this._renderValidationSummary();\r\n        this._lastMarkupScreenFactor = this._targetScreenFactor || this._getCurrentScreenFactor()\r\n    },\r\n    _getCurrentScreenFactor: function() {\r\n        return (0, _window.hasWindow)() ? (0, _window.getCurrentScreenFactor)(this.option(\"screenByWidth\")) : \"lg\"\r\n    },\r\n    _clearCachedInstances: function() {\r\n        this._itemsRunTimeInfo.clear();\r\n        this._cachedLayoutManagers = []\r\n    },\r\n    _alignLabels: function(layoutManager, inOneColumn) {\r\n        this._alignLabelsInColumn({\r\n            $container: this.$element(),\r\n            layoutManager: layoutManager,\r\n            excludeTabbed: true,\r\n            items: this.option(\"items\"),\r\n            inOneColumn: inOneColumn\r\n        })\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        this._groupsColCount = [];\r\n        this._cachedColCountOptions = [];\r\n        this._lastMarkupScreenFactor = void 0\r\n    },\r\n    _renderScrollable: function() {\r\n        var useNativeScrolling = this.option(\"useNativeScrolling\");\r\n        this._scrollable = new _ui2.default(this.$element(), {\r\n            useNative: !!useNativeScrolling,\r\n            useSimulatedScrollbar: !useNativeScrolling,\r\n            useKeyboard: false,\r\n            direction: \"both\",\r\n            bounceEnabled: false\r\n        })\r\n    },\r\n    _getContent: function() {\r\n        return this.option(\"scrollingEnabled\") ? this._scrollable.$content() : this.$element()\r\n    },\r\n    _renderValidationSummary: function() {\r\n        var $validationSummary = this.$element().find(\".\" + _constants.FORM_VALIDATION_SUMMARY);\r\n        if ($validationSummary.length > 0) {\r\n            $validationSummary.remove()\r\n        }\r\n        if (this.option(\"showValidationSummary\")) {\r\n            var _$validationSummary = (0, _renderer.default)(\"<div>\").addClass(_constants.FORM_VALIDATION_SUMMARY).appendTo(this._getContent());\r\n            this._validationSummary = _$validationSummary.dxValidationSummary({\r\n                validationGroup: this._getValidationGroup()\r\n            }).dxValidationSummary(\"instance\")\r\n        }\r\n    },\r\n    _prepareItems: function(items, parentIsTabbedItem, currentPath, isTabs) {\r\n        if (items) {\r\n            var result = [];\r\n            for (var i = 0; i < items.length; i++) {\r\n                var item = items[i];\r\n                var path = (0, _uiForm4.concatPaths)(currentPath, (0, _uiForm4.createItemPathByIndex)(i, isTabs));\r\n                var guid = this._itemsRunTimeInfo.add({\r\n                    item: item,\r\n                    itemIndex: i,\r\n                    path: path\r\n                });\r\n                if ((0, _type.isString)(item)) {\r\n                    item = {\r\n                        dataField: item\r\n                    }\r\n                }\r\n                if ((0, _type.isObject)(item)) {\r\n                    var itemCopy = (0, _extend.extend)({}, item);\r\n                    itemCopy.guid = guid;\r\n                    this._tryPrepareGroupItem(itemCopy);\r\n                    this._tryPrepareTabbedItem(itemCopy, path);\r\n                    this._tryPrepareItemTemplate(itemCopy);\r\n                    if (parentIsTabbedItem) {\r\n                        itemCopy.cssItemClass = _constants.FIELD_ITEM_TAB_CLASS\r\n                    }\r\n                    if (itemCopy.items) {\r\n                        itemCopy.items = this._prepareItems(itemCopy.items, parentIsTabbedItem, path)\r\n                    }\r\n                    result.push(itemCopy)\r\n                } else {\r\n                    result.push(item)\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    },\r\n    _tryPrepareGroupItem: function(item) {\r\n        if (\"group\" === item.itemType) {\r\n            item.alignItemLabels = (0, _common.ensureDefined)(item.alignItemLabels, true);\r\n            if (item.template) {\r\n                item.groupContentTemplate = this._getTemplate(item.template)\r\n            }\r\n            item.template = this._itemGroupTemplate.bind(this, item)\r\n        }\r\n    },\r\n    _tryPrepareTabbedItem: function(item, path) {\r\n        if (\"tabbed\" === item.itemType) {\r\n            item.template = this._itemTabbedTemplate.bind(this, item);\r\n            item.tabs = this._prepareItems(item.tabs, true, path, true)\r\n        }\r\n    },\r\n    _tryPrepareItemTemplate: function(item) {\r\n        if (item.template) {\r\n            item.template = this._getTemplate(item.template)\r\n        }\r\n    },\r\n    _checkGrouping: function(items) {\r\n        if (items) {\r\n            for (var i = 0; i < items.length; i++) {\r\n                var item = items[i];\r\n                if (\"group\" === item.itemType) {\r\n                    return true\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _renderLayout: function() {\r\n        var that = this;\r\n        var items = that.option(\"items\");\r\n        var $content = that._getContent();\r\n        items = that._prepareItems(items);\r\n        that._rootLayoutManager = that._renderLayoutManager(items, $content, {\r\n            isRoot: true,\r\n            colCount: that.option(\"colCount\"),\r\n            alignItemLabels: that.option(\"alignItemLabels\"),\r\n            screenByWidth: this.option(\"screenByWidth\"),\r\n            colCountByScreen: this.option(\"colCountByScreen\"),\r\n            onLayoutChanged: function(inOneColumn) {\r\n                that._alignLabels.bind(that)(that._rootLayoutManager, inOneColumn)\r\n            },\r\n            onContentReady: function(e) {\r\n                that._alignLabels(e.component, e.component.isSingleColumnMode())\r\n            }\r\n        })\r\n    },\r\n    _tryGetItemsForTemplate: function(item) {\r\n        return item.items || []\r\n    },\r\n    _itemTabbedTemplate: function(item, e, $container) {\r\n        var _this = this;\r\n        var $tabPanel = (0, _renderer.default)(\"<div>\").appendTo($container);\r\n        var tabPanelOptions = (0, _extend.extend)({}, item.tabPanelOptions, {\r\n            dataSource: item.tabs,\r\n            onItemRendered: function(args) {\r\n                return (0, _visibility_change.triggerShownEvent)(args.itemElement)\r\n            },\r\n            itemTemplate: function(itemData, e, container) {\r\n                var $container = (0, _renderer.default)(container);\r\n                var alignItemLabels = (0, _common.ensureDefined)(itemData.alignItemLabels, true);\r\n                var layoutManager = _this._renderLayoutManager(_this._tryGetItemsForTemplate(itemData), $container, {\r\n                    colCount: itemData.colCount,\r\n                    alignItemLabels: alignItemLabels,\r\n                    screenByWidth: _this.option(\"screenByWidth\"),\r\n                    colCountByScreen: itemData.colCountByScreen,\r\n                    cssItemClass: itemData.cssItemClass,\r\n                    onLayoutChanged: function(inOneColumn) {\r\n                        _this._alignLabelsInColumn({\r\n                            $container: $container,\r\n                            layoutManager: layoutManager,\r\n                            items: itemData.items,\r\n                            inOneColumn: inOneColumn\r\n                        })\r\n                    }\r\n                });\r\n                if (_this._itemsRunTimeInfo) {\r\n                    _this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(itemData.guid, {\r\n                        layoutManager: layoutManager\r\n                    })\r\n                }\r\n                if (alignItemLabels) {\r\n                    _this._alignLabelsInColumn({\r\n                        $container: $container,\r\n                        layoutManager: layoutManager,\r\n                        items: itemData.items,\r\n                        inOneColumn: layoutManager.isSingleColumnMode()\r\n                    })\r\n                }\r\n            }\r\n        });\r\n        var tryUpdateTabPanelInstance = function(items, instance) {\r\n            if (Array.isArray(items)) {\r\n                items.forEach(function(item) {\r\n                    return _this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(item.guid, {\r\n                        widgetInstance: instance\r\n                    })\r\n                })\r\n            }\r\n        };\r\n        var tabPanel = this._createComponent($tabPanel, _tab_panel.default, tabPanelOptions);\r\n        (0, _renderer.default)($container).parent().addClass(_constants.FIELD_ITEM_CONTENT_HAS_TABS_CLASS);\r\n        tabPanel.on(\"optionChanged\", function(e) {\r\n            if (\"dataSource\" === e.fullName) {\r\n                tryUpdateTabPanelInstance(e.value, e.component)\r\n            }\r\n        });\r\n        tryUpdateTabPanelInstance([{\r\n            guid: item.guid\r\n        }].concat(_toConsumableArray(item.tabs)), tabPanel)\r\n    },\r\n    _itemGroupTemplate: function(item, e, $container) {\r\n        var $group = (0, _renderer.default)(\"<div>\").toggleClass(_constants.FORM_GROUP_WITH_CAPTION_CLASS, (0, _type.isDefined)(item.caption) && item.caption.length).addClass(_constants.FORM_GROUP_CLASS).appendTo($container);\r\n        (0, _renderer.default)($container).parent().addClass(_constants.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS);\r\n        var colCount;\r\n        var layoutManager;\r\n        if (item.caption) {\r\n            (0, _renderer.default)(\"<span>\").addClass(_constants.FORM_GROUP_CAPTION_CLASS).text(item.caption).appendTo($group)\r\n        }\r\n        var $groupContent = (0, _renderer.default)(\"<div>\").addClass(_constants.FORM_GROUP_CONTENT_CLASS).appendTo($group);\r\n        if (item.groupContentTemplate) {\r\n            var data = {\r\n                formData: this.option(\"formData\"),\r\n                component: this\r\n            };\r\n            item.groupContentTemplate.render({\r\n                model: data,\r\n                container: (0, _element.getPublicElement)($groupContent)\r\n            })\r\n        } else {\r\n            layoutManager = this._renderLayoutManager(this._tryGetItemsForTemplate(item), $groupContent, {\r\n                colCount: item.colCount,\r\n                colCountByScreen: item.colCountByScreen,\r\n                alignItemLabels: item.alignItemLabels,\r\n                cssItemClass: item.cssItemClass\r\n            });\r\n            this._itemsRunTimeInfo && this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(item.guid, {\r\n                layoutManager: layoutManager\r\n            });\r\n            colCount = layoutManager._getColCount();\r\n            if ((0, _array.inArray)(colCount, this._groupsColCount) === -1) {\r\n                this._groupsColCount.push(colCount)\r\n            }\r\n            $group.addClass(_constants.GROUP_COL_COUNT_CLASS + colCount);\r\n            $group.attr(_constants.GROUP_COL_COUNT_ATTR, colCount)\r\n        }\r\n    },\r\n    _renderLayoutManager: function(items, $rootElement, options) {\r\n        var $element = (0, _renderer.default)(\"<div>\");\r\n        var that = this;\r\n        var config = that._getLayoutManagerConfig(items, options);\r\n        var baseColCountByScreen = {\r\n            lg: options.colCount,\r\n            md: options.colCount,\r\n            sm: options.colCount,\r\n            xs: 1\r\n        };\r\n        that._cachedColCountOptions.push({\r\n            colCountByScreen: (0, _extend.extend)(baseColCountByScreen, options.colCountByScreen)\r\n        });\r\n        $element.appendTo($rootElement);\r\n        var instance = that._createComponent($element, \"dxLayoutManager\", config);\r\n        instance.on(\"autoColCountChanged\", function() {\r\n            that._refresh()\r\n        });\r\n        that._cachedLayoutManagers.push(instance);\r\n        return instance\r\n    },\r\n    _getValidationGroup: function() {\r\n        return this.option(\"validationGroup\") || this\r\n    },\r\n    _getLayoutManagerConfig: function(items, options) {\r\n        var _this2 = this;\r\n        var baseConfig = {\r\n            form: this,\r\n            isRoot: options.isRoot,\r\n            validationGroup: this._getValidationGroup(),\r\n            showRequiredMark: this.option(\"showRequiredMark\"),\r\n            showOptionalMark: this.option(\"showOptionalMark\"),\r\n            requiredMark: this.option(\"requiredMark\"),\r\n            optionalMark: this.option(\"optionalMark\"),\r\n            requiredMessage: this.option(\"requiredMessage\"),\r\n            screenByWidth: this.option(\"screenByWidth\"),\r\n            layoutData: this.option(\"formData\"),\r\n            labelLocation: this.option(\"labelLocation\"),\r\n            customizeItem: this.option(\"customizeItem\"),\r\n            minColWidth: this.option(\"minColWidth\"),\r\n            showColonAfterLabel: this.option(\"showColonAfterLabel\"),\r\n            onEditorEnterKey: this.option(\"onEditorEnterKey\"),\r\n            onFieldDataChanged: function(args) {\r\n                if (!_this2._isDataUpdating) {\r\n                    _this2._triggerOnFieldDataChanged(args)\r\n                }\r\n            },\r\n            validationBoundary: this.option(\"scrollingEnabled\") ? this.$element() : void 0\r\n        };\r\n        return (0, _extend.extend)(baseConfig, {\r\n            items: items,\r\n            onContentReady: function(args) {\r\n                _this2._itemsRunTimeInfo.addItemsOrExtendFrom(args.component._itemsRunTimeInfo);\r\n                options.onContentReady && options.onContentReady(args)\r\n            },\r\n            onDisposing: function(_ref2) {\r\n                var component = _ref2.component;\r\n                var nestedItemsRunTimeInfo = component.getItemsRunTimeInfo();\r\n                _this2._itemsRunTimeInfo.removeItemsByItems(nestedItemsRunTimeInfo)\r\n            },\r\n            colCount: options.colCount,\r\n            alignItemLabels: options.alignItemLabels,\r\n            cssItemClass: options.cssItemClass,\r\n            colCountByScreen: options.colCountByScreen,\r\n            onLayoutChanged: options.onLayoutChanged,\r\n            width: options.width\r\n        })\r\n    },\r\n    _createComponent: function($element, type, config) {\r\n        var that = this;\r\n        config = config || {};\r\n        that._extendConfig(config, {\r\n            readOnly: that.option(\"readOnly\")\r\n        });\r\n        return that.callBase($element, type, config)\r\n    },\r\n    _attachSyncSubscriptions: function() {\r\n        var that = this;\r\n        that.on(\"optionChanged\", function(args) {\r\n            var optionFullName = args.fullName;\r\n            if (\"formData\" === optionFullName) {\r\n                if (!(0, _type.isDefined)(args.value)) {\r\n                    that._options.silent(\"formData\", args.value = {})\r\n                }\r\n                that._triggerOnFieldDataChangedByDataSet(args.value)\r\n            }\r\n            if (that._cachedLayoutManagers.length) {\r\n                (0, _iterator.each)(that._cachedLayoutManagers, function(index, layoutManager) {\r\n                    if (\"formData\" === optionFullName) {\r\n                        that._isDataUpdating = true;\r\n                        layoutManager.option(\"layoutData\", args.value);\r\n                        that._isDataUpdating = false\r\n                    }\r\n                    if (\"readOnly\" === args.name || \"disabled\" === args.name) {\r\n                        layoutManager.option(optionFullName, args.value)\r\n                    }\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        var rootNameOfComplexOption = this._getRootLevelOfExpectedComplexOption(args.fullName, [\"formData\", \"items\"]);\r\n        if (rootNameOfComplexOption) {\r\n            this._customHandlerOfComplexOption(args, rootNameOfComplexOption);\r\n            return\r\n        }\r\n        switch (args.name) {\r\n            case \"formData\":\r\n                if (!this.option(\"items\")) {\r\n                    this._invalidate()\r\n                } else {\r\n                    if ((0, _type.isEmptyObject)(args.value)) {\r\n                        this._resetValues()\r\n                    }\r\n                }\r\n                break;\r\n            case \"items\":\r\n            case \"colCount\":\r\n            case \"onFieldDataChanged\":\r\n            case \"onEditorEnterKey\":\r\n            case \"labelLocation\":\r\n            case \"alignItemLabels\":\r\n            case \"showColonAfterLabel\":\r\n            case \"customizeItem\":\r\n            case \"alignItemLabelsInAllGroups\":\r\n            case \"showRequiredMark\":\r\n            case \"showOptionalMark\":\r\n            case \"requiredMark\":\r\n            case \"optionalMark\":\r\n            case \"requiredMessage\":\r\n            case \"scrollingEnabled\":\r\n            case \"formID\":\r\n            case \"colCountByScreen\":\r\n            case \"screenByWidth\":\r\n            case \"stylingMode\":\r\n                this._invalidate();\r\n                break;\r\n            case \"showValidationSummary\":\r\n                this._renderValidationSummary();\r\n                break;\r\n            case \"minColWidth\":\r\n                if (\"auto\" === this.option(\"colCount\")) {\r\n                    this._invalidate()\r\n                }\r\n                break;\r\n            case \"alignRootItemLabels\":\r\n            case \"readOnly\":\r\n                break;\r\n            case \"width\":\r\n                this.callBase(args);\r\n                this._rootLayoutManager.option(args.name, args.value);\r\n                this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode());\r\n                break;\r\n            case \"visible\":\r\n                this.callBase(args);\r\n                if (args.value) {\r\n                    (0, _visibility_change.triggerShownEvent)(this.$element())\r\n                }\r\n                break;\r\n            case \"validationGroup\":\r\n                _validation_engine.default.removeGroup(args.previousValue || this);\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _getRootLevelOfExpectedComplexOption: function(fullOptionName, expectedRootNames) {\r\n        var splitFullName = fullOptionName.split(\".\");\r\n        var result;\r\n        if (splitFullName.length > 1) {\r\n            var i;\r\n            var rootOptionName = splitFullName[0];\r\n            for (i = 0; i < expectedRootNames.length; i++) {\r\n                if (rootOptionName.search(expectedRootNames[i]) !== -1) {\r\n                    result = expectedRootNames[i]\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _tryCreateItemOptionAction: function(optionName, item, value, previousValue, itemPath) {\r\n        if (\"tabs\" === optionName) {\r\n            this._itemsRunTimeInfo.removeItemsByPathStartWith(\"\".concat(itemPath, \".tabs\"));\r\n            value = this._prepareItems(value, true, itemPath, true)\r\n        }\r\n        return (0, _uiForm2.default)(optionName, {\r\n            item: item,\r\n            value: value,\r\n            previousValue: previousValue,\r\n            itemsRunTimeInfo: this._itemsRunTimeInfo\r\n        })\r\n    },\r\n    _tryExecuteItemOptionAction: function(action) {\r\n        return action && action.tryExecute()\r\n    },\r\n    _updateValidationGroupAndSummaryIfNeeded: function(fullName) {\r\n        var optionName = (0, _uiForm4.getOptionNameFromFullName)(fullName);\r\n        if (ITEM_OPTIONS_FOR_VALIDATION_UPDATING.indexOf(optionName) > -1) {\r\n            _validation_engine.default.addGroup(this._getValidationGroup());\r\n            if (this.option(\"showValidationSummary\")) {\r\n                this._validationSummary && this._validationSummary._initGroupRegistration()\r\n            }\r\n        }\r\n    },\r\n    _setLayoutManagerItemOption: function(layoutManager, optionName, value, path) {\r\n        var _this3 = this;\r\n        if (this._updateLockCount > 0) {\r\n            !layoutManager._updateLockCount && layoutManager.beginUpdate();\r\n            var key = this._itemsRunTimeInfo.getKeyByPath(path);\r\n            this.postponedOperations.add(key, function() {\r\n                !layoutManager._disposed && layoutManager.endUpdate();\r\n                return (new _deferred.Deferred).resolve()\r\n            })\r\n        }\r\n        var contentReadyHandler = function contentReadyHandler(e) {\r\n            e.component.off(\"contentReady\", contentReadyHandler);\r\n            if ((0, _uiForm4.isFullPathContainsTabs)(path)) {\r\n                var tabPath = (0, _uiForm4.tryGetTabPath)(path);\r\n                var tabLayoutManager = _this3._itemsRunTimeInfo.getGroupOrTabLayoutManagerByPath(tabPath);\r\n                _this3._alignLabelsInColumn({\r\n                    items: tabLayoutManager.option(\"items\"),\r\n                    layoutManager: tabLayoutManager,\r\n                    $container: tabLayoutManager.$element(),\r\n                    inOneColumn: tabLayoutManager.isSingleColumnMode()\r\n                })\r\n            } else {\r\n                _this3._alignLabels(_this3._rootLayoutManager, _this3._rootLayoutManager.isSingleColumnMode())\r\n            }\r\n        };\r\n        layoutManager.on(\"contentReady\", contentReadyHandler);\r\n        layoutManager.option(optionName, value);\r\n        this._updateValidationGroupAndSummaryIfNeeded(optionName)\r\n    },\r\n    _tryChangeLayoutManagerItemOption: function(fullName, value) {\r\n        var nameParts = fullName.split(\".\");\r\n        var optionName = (0, _uiForm4.getOptionNameFromFullName)(fullName);\r\n        if (\"items\" === optionName && nameParts.length > 1) {\r\n            var itemPath = this._getItemPath(nameParts);\r\n            var layoutManager = this._itemsRunTimeInfo.getGroupOrTabLayoutManagerByPath(itemPath);\r\n            if (layoutManager) {\r\n                this._itemsRunTimeInfo.removeItemsByItems(layoutManager.getItemsRunTimeInfo());\r\n                var items = this._prepareItems(value, false, itemPath);\r\n                this._setLayoutManagerItemOption(layoutManager, optionName, items, itemPath);\r\n                return true\r\n            }\r\n        } else {\r\n            if (nameParts.length > 2) {\r\n                var endPartIndex = nameParts.length - 2;\r\n                var _itemPath = this._getItemPath(nameParts.slice(0, endPartIndex));\r\n                var _layoutManager = this._itemsRunTimeInfo.getGroupOrTabLayoutManagerByPath(_itemPath);\r\n                if (_layoutManager) {\r\n                    var fullOptionName = (0, _uiForm4.getFullOptionName)(nameParts[endPartIndex], optionName);\r\n                    if (\"editorType\" === optionName) {\r\n                        if (_layoutManager.option(fullOptionName) !== value) {\r\n                            return false\r\n                        }\r\n                    }\r\n                    if (\"visible\" === optionName) {\r\n                        var formItems = this.option((0, _uiForm4.getFullOptionName)(_itemPath, \"items\"));\r\n                        if (formItems && formItems.length) {\r\n                            var layoutManagerItems = _layoutManager.option(\"items\");\r\n                            formItems.forEach(function(item, index) {\r\n                                var layoutItem = layoutManagerItems[index];\r\n                                layoutItem.visibleIndex = item.visibleIndex\r\n                            })\r\n                        }\r\n                    }\r\n                    this._setLayoutManagerItemOption(_layoutManager, fullOptionName, value, _itemPath);\r\n                    return true\r\n                }\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _tryChangeLayoutManagerItemOptions: function(itemPath, options) {\r\n        var _this4 = this;\r\n        var result;\r\n        this.beginUpdate();\r\n        (0, _iterator.each)(options, function(optionName, optionValue) {\r\n            result = _this4._tryChangeLayoutManagerItemOption((0, _uiForm4.getFullOptionName)(itemPath, optionName), optionValue);\r\n            if (!result) {\r\n                return false\r\n            }\r\n        });\r\n        this.endUpdate();\r\n        return result\r\n    },\r\n    _customHandlerOfComplexOption: function(args, rootOptionName) {\r\n        var nameParts = args.fullName.split(\".\");\r\n        var value = args.value;\r\n        if (\"items\" === rootOptionName) {\r\n            var itemPath = this._getItemPath(nameParts);\r\n            var item = this.option(itemPath);\r\n            var optionNameWithoutPath = args.fullName.replace(itemPath + \".\", \"\");\r\n            var simpleOptionName = optionNameWithoutPath.split(\".\")[0].replace(/\\[\\d+]/, \"\");\r\n            var itemAction = this._tryCreateItemOptionAction(simpleOptionName, item, item[simpleOptionName], args.previousValue, itemPath);\r\n            if (!this._tryExecuteItemOptionAction(itemAction) && !this._tryChangeLayoutManagerItemOption(args.fullName, value)) {\r\n                if (item) {\r\n                    this._changeItemOption(item, optionNameWithoutPath, value);\r\n                    var items = this._generateItemsFromData(this.option(\"items\"));\r\n                    this.option(\"items\", items)\r\n                }\r\n            }\r\n        }\r\n        if (\"formData\" === rootOptionName) {\r\n            var dataField = nameParts.slice(1).join(\".\");\r\n            var editor = this.getEditor(dataField);\r\n            if (editor) {\r\n                editor.option(\"value\", value)\r\n            } else {\r\n                this._triggerOnFieldDataChanged({\r\n                    dataField: dataField,\r\n                    value: value\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _getItemPath: function(nameParts) {\r\n        var itemPath = nameParts[0];\r\n        var i;\r\n        for (i = 1; i < nameParts.length; i++) {\r\n            if (nameParts[i].search(/items\\[\\d+]|tabs\\[\\d+]/) !== -1) {\r\n                itemPath += \".\" + nameParts[i]\r\n            } else {\r\n                break\r\n            }\r\n        }\r\n        return itemPath\r\n    },\r\n    _triggerOnFieldDataChanged: function(args) {\r\n        this._createActionByOption(\"onFieldDataChanged\")(args)\r\n    },\r\n    _triggerOnFieldDataChangedByDataSet: function(data) {\r\n        var that = this;\r\n        if (data && (0, _type.isObject)(data)) {\r\n            (0, _iterator.each)(data, function(dataField, value) {\r\n                that._triggerOnFieldDataChanged({\r\n                    dataField: dataField,\r\n                    value: value\r\n                })\r\n            })\r\n        }\r\n    },\r\n    _updateFieldValue: function(dataField, value) {\r\n        if ((0, _type.isDefined)(this.option(\"formData\"))) {\r\n            var editor = this.getEditor(dataField);\r\n            this.option(\"formData.\" + dataField, value);\r\n            if (editor) {\r\n                var editorValue = editor.option(\"value\");\r\n                if (editorValue !== value) {\r\n                    editor.option(\"value\", value)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _generateItemsFromData: function(items) {\r\n        var formData = this.option(\"formData\");\r\n        var result = [];\r\n        if (!items && (0, _type.isDefined)(formData)) {\r\n            (0, _iterator.each)(formData, function(dataField) {\r\n                result.push({\r\n                    dataField: dataField\r\n                })\r\n            })\r\n        }\r\n        if (items) {\r\n            (0, _iterator.each)(items, function(index, item) {\r\n                if ((0, _type.isObject)(item)) {\r\n                    result.push(item)\r\n                } else {\r\n                    result.push({\r\n                        dataField: item\r\n                    })\r\n                }\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    _getItemByField: function(field, items) {\r\n        var that = this;\r\n        var fieldParts = (0, _type.isObject)(field) ? field : that._getFieldParts(field);\r\n        var fieldName = fieldParts.fieldName;\r\n        var fieldPath = fieldParts.fieldPath;\r\n        var resultItem;\r\n        if (items.length) {\r\n            (0, _iterator.each)(items, function(index, item) {\r\n                var itemType = item.itemType;\r\n                if (fieldPath.length) {\r\n                    var path = fieldPath.slice();\r\n                    item = that._getItemByFieldPath(path, fieldName, item)\r\n                } else {\r\n                    if (\"group\" === itemType && !(item.caption || item.name) || \"tabbed\" === itemType && !item.name) {\r\n                        var subItemsField = that._getSubItemField(itemType);\r\n                        item.items = that._generateItemsFromData(item.items);\r\n                        item = that._getItemByField({\r\n                            fieldName: fieldName,\r\n                            fieldPath: fieldPath\r\n                        }, item[subItemsField])\r\n                    }\r\n                }\r\n                if ((0, _uiForm4.isExpectedItem)(item, fieldName)) {\r\n                    resultItem = item;\r\n                    return false\r\n                }\r\n            })\r\n        }\r\n        return resultItem\r\n    },\r\n    _getFieldParts: function(field) {\r\n        var fieldSeparator = \".\";\r\n        var fieldName = field;\r\n        var separatorIndex = fieldName.indexOf(fieldSeparator);\r\n        var resultPath = [];\r\n        while (separatorIndex !== -1) {\r\n            resultPath.push(fieldName.substr(0, separatorIndex));\r\n            fieldName = fieldName.substr(separatorIndex + 1);\r\n            separatorIndex = fieldName.indexOf(fieldSeparator)\r\n        }\r\n        return {\r\n            fieldName: fieldName,\r\n            fieldPath: resultPath.reverse()\r\n        }\r\n    },\r\n    _getItemByFieldPath: function(path, fieldName, item) {\r\n        var that = this;\r\n        var itemType = item.itemType;\r\n        var subItemsField = that._getSubItemField(itemType);\r\n        var isItemWithSubItems = \"group\" === itemType || \"tabbed\" === itemType || item.title;\r\n        var result;\r\n        do {\r\n            if (isItemWithSubItems) {\r\n                var name = item.name || item.caption || item.title;\r\n                var isGroupWithName = (0, _type.isDefined)(name);\r\n                var nameWithoutSpaces = (0, _uiForm4.getTextWithoutSpaces)(name);\r\n                var pathNode = void 0;\r\n                item[subItemsField] = that._generateItemsFromData(item[subItemsField]);\r\n                if (isGroupWithName) {\r\n                    pathNode = path.pop()\r\n                }\r\n                if (!path.length) {\r\n                    result = that._getItemByField(fieldName, item[subItemsField]);\r\n                    if (result) {\r\n                        break\r\n                    }\r\n                }\r\n                if (!isGroupWithName || isGroupWithName && nameWithoutSpaces === pathNode) {\r\n                    if (path.length) {\r\n                        result = that._searchItemInEverySubItem(path, fieldName, item[subItemsField])\r\n                    }\r\n                }\r\n            } else {\r\n                break\r\n            }\r\n        } while (path.length && !(0, _type.isDefined)(result));\r\n        return result\r\n    },\r\n    _getSubItemField: function(itemType) {\r\n        return \"tabbed\" === itemType ? \"tabs\" : \"items\"\r\n    },\r\n    _searchItemInEverySubItem: function(path, fieldName, items) {\r\n        var that = this;\r\n        var result;\r\n        (0, _iterator.each)(items, function(index, groupItem) {\r\n            result = that._getItemByFieldPath(path.slice(), fieldName, groupItem);\r\n            if (result) {\r\n                return false\r\n            }\r\n        });\r\n        if (!result) {\r\n            result = false\r\n        }\r\n        return result\r\n    },\r\n    _changeItemOption: function(item, option, value) {\r\n        if ((0, _type.isObject)(item)) {\r\n            item[option] = value\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        var currentScreenFactor = this._getCurrentScreenFactor();\r\n        if (this._lastMarkupScreenFactor !== currentScreenFactor) {\r\n            if (this._isColCountChanged(this._lastMarkupScreenFactor, currentScreenFactor)) {\r\n                this._targetScreenFactor = currentScreenFactor;\r\n                this._refresh();\r\n                this._targetScreenFactor = void 0\r\n            }\r\n            this._lastMarkupScreenFactor = currentScreenFactor\r\n        }\r\n    },\r\n    _isColCountChanged: function(oldScreenSize, newScreenSize) {\r\n        var isChanged = false;\r\n        (0, _iterator.each)(this._cachedColCountOptions, function(index, item) {\r\n            if (item.colCountByScreen[oldScreenSize] !== item.colCountByScreen[newScreenSize]) {\r\n                isChanged = true;\r\n                return false\r\n            }\r\n        });\r\n        return isChanged\r\n    },\r\n    _refresh: function() {\r\n        var editorSelector = \".\" + FOCUSED_STATE_CLASS + \" input, .\" + FOCUSED_STATE_CLASS + \" textarea\";\r\n        _events_engine.default.trigger(this.$element().find(editorSelector), \"change\");\r\n        this.callBase()\r\n    },\r\n    _resetValues: function() {\r\n        this._itemsRunTimeInfo.each(function(_, itemRunTimeInfo) {\r\n            if ((0, _type.isDefined)(itemRunTimeInfo.widgetInstance) && itemRunTimeInfo.widgetInstance instanceof _editor.default) {\r\n                itemRunTimeInfo.widgetInstance.reset();\r\n                itemRunTimeInfo.widgetInstance.option(\"isValid\", true)\r\n            }\r\n        });\r\n        _validation_engine.default.resetGroup(this._getValidationGroup())\r\n    },\r\n    _updateData: function(data, value, isComplexData) {\r\n        var that = this;\r\n        var _data = isComplexData ? value : data;\r\n        if ((0, _type.isObject)(_data)) {\r\n            (0, _iterator.each)(_data, function(dataField, fieldValue) {\r\n                that._updateData(isComplexData ? data + \".\" + dataField : dataField, fieldValue, (0, _type.isObject)(fieldValue))\r\n            })\r\n        } else {\r\n            if ((0, _type.isString)(data)) {\r\n                that._updateFieldValue(data, value)\r\n            }\r\n        }\r\n    },\r\n    registerKeyHandler: function(key, handler) {\r\n        this.callBase(key, handler);\r\n        this._itemsRunTimeInfo.each(function(_, itemRunTimeInfo) {\r\n            if ((0, _type.isDefined)(itemRunTimeInfo.widgetInstance)) {\r\n                itemRunTimeInfo.widgetInstance.registerKeyHandler(key, handler)\r\n            }\r\n        })\r\n    },\r\n    _focusTarget: function() {\r\n        return this.$element().find(\".\" + _constants.FIELD_ITEM_CONTENT_CLASS + \" [tabindex]\").first()\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible && _browser.default.msie) {\r\n            this._refresh()\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        _validation_engine.default.removeGroup(this._getValidationGroup());\r\n        this.callBase()\r\n    },\r\n    resetValues: function() {\r\n        this._resetValues()\r\n    },\r\n    updateData: function(data, value) {\r\n        this._updateData(data, value)\r\n    },\r\n    getEditor: function(dataField) {\r\n        return this._itemsRunTimeInfo.findWidgetInstanceByDataField(dataField) || this._itemsRunTimeInfo.findWidgetInstanceByName(dataField)\r\n    },\r\n    getButton: function(name) {\r\n        return this._itemsRunTimeInfo.findWidgetInstanceByName(name)\r\n    },\r\n    updateDimensions: function() {\r\n        var that = this;\r\n        var deferred = new _deferred.Deferred;\r\n        if (that._scrollable) {\r\n            that._scrollable.update().done(function() {\r\n                deferred.resolveWith(that)\r\n            })\r\n        } else {\r\n            deferred.resolveWith(that)\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    itemOption: function(id, option, value) {\r\n        var _this5 = this;\r\n        var items = this._generateItemsFromData(this.option(\"items\"));\r\n        var item = this._getItemByField(id, items);\r\n        var path = (0, _uiForm4.getItemPath)(items, item);\r\n        if (!item) {\r\n            return\r\n        }\r\n        switch (arguments.length) {\r\n            case 1:\r\n                return item;\r\n            case 3:\r\n                var itemAction = this._tryCreateItemOptionAction(option, item, value, item[option], path);\r\n                this._changeItemOption(item, option, value);\r\n                var fullName = (0, _uiForm4.getFullOptionName)(path, option);\r\n                if (!this._tryExecuteItemOptionAction(itemAction) && !this._tryChangeLayoutManagerItemOption(fullName, value)) {\r\n                    this.option(\"items\", items)\r\n                }\r\n                break;\r\n            default:\r\n                if ((0, _type.isObject)(option)) {\r\n                    if (!this._tryChangeLayoutManagerItemOptions(path, option)) {\r\n                        var allowUpdateItems;\r\n                        (0, _iterator.each)(option, function(optionName, optionValue) {\r\n                            var itemAction = _this5._tryCreateItemOptionAction(optionName, item, optionValue, item[optionName], path);\r\n                            _this5._changeItemOption(item, optionName, optionValue);\r\n                            if (!allowUpdateItems && !_this5._tryExecuteItemOptionAction(itemAction)) {\r\n                                allowUpdateItems = true\r\n                            }\r\n                        });\r\n                        allowUpdateItems && this.option(\"items\", items)\r\n                    }\r\n                }\r\n        }\r\n    },\r\n    validate: function() {\r\n        return _validation_engine.default.validateGroup(this._getValidationGroup())\r\n    },\r\n    getItemID: function(name) {\r\n        return \"dx_\" + this.option(\"formID\") + \"_\" + (name || new _guid.default)\r\n    },\r\n    getTargetScreenFactor: function() {\r\n        return this._targetScreenFactor\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxForm\", Form);\r\nvar _default = Form;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/*!\n * DevExtreme-Quill Editor v.0.9.8\n * https://js.devexpress.com/\n * Copyright (c) 2020, Developer Express Inc.\n * Copyright (c) 2017, Slab\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"DevExpress\"] = root[\"DevExpress\"] || {}, root[\"DevExpress\"][\"Quill\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 132);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nvar fast_diff_1 = __importDefault(__webpack_require__(85));\r\nvar lodash_clonedeep_1 = __importDefault(__webpack_require__(12));\r\nvar lodash_isequal_1 = __importDefault(__webpack_require__(19));\r\nvar AttributeMap_1 = __importDefault(__webpack_require__(86));\r\nvar Op_1 = __importDefault(__webpack_require__(63));\r\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\r\nvar Delta = /** @class */ (function () {\r\n    function Delta(ops) {\r\n        // Assume we are given a well formed ops\r\n        if (Array.isArray(ops)) {\r\n            this.ops = ops;\r\n        }\r\n        else if (ops != null && Array.isArray(ops.ops)) {\r\n            this.ops = ops.ops;\r\n        }\r\n        else {\r\n            this.ops = [];\r\n        }\r\n    }\r\n    Delta.prototype.insert = function (arg, attributes) {\r\n        var newOp = {};\r\n        if (typeof arg === 'string' && arg.length === 0) {\r\n            return this;\r\n        }\r\n        newOp.insert = arg;\r\n        if (attributes != null &&\r\n            typeof attributes === 'object' &&\r\n            Object.keys(attributes).length > 0) {\r\n            newOp.attributes = attributes;\r\n        }\r\n        return this.push(newOp);\r\n    };\r\n    Delta.prototype.delete = function (length) {\r\n        if (length <= 0) {\r\n            return this;\r\n        }\r\n        return this.push({ delete: length });\r\n    };\r\n    Delta.prototype.retain = function (length, attributes) {\r\n        if (length <= 0) {\r\n            return this;\r\n        }\r\n        var newOp = { retain: length };\r\n        if (attributes != null &&\r\n            typeof attributes === 'object' &&\r\n            Object.keys(attributes).length > 0) {\r\n            newOp.attributes = attributes;\r\n        }\r\n        return this.push(newOp);\r\n    };\r\n    Delta.prototype.push = function (newOp) {\r\n        var index = this.ops.length;\r\n        var lastOp = this.ops[index - 1];\r\n        newOp = lodash_clonedeep_1.default(newOp);\r\n        if (typeof lastOp === 'object') {\r\n            if (typeof newOp.delete === 'number' &&\r\n                typeof lastOp.delete === 'number') {\r\n                this.ops[index - 1] = { delete: lastOp.delete + newOp.delete };\r\n                return this;\r\n            }\r\n            // Since it does not matter if we insert before or after deleting at the same index,\r\n            // always prefer to insert first\r\n            if (typeof lastOp.delete === 'number' && newOp.insert != null) {\r\n                index -= 1;\r\n                lastOp = this.ops[index - 1];\r\n                if (typeof lastOp !== 'object') {\r\n                    this.ops.unshift(newOp);\r\n                    return this;\r\n                }\r\n            }\r\n            if (lodash_isequal_1.default(newOp.attributes, lastOp.attributes)) {\r\n                if (typeof newOp.insert === 'string' &&\r\n                    typeof lastOp.insert === 'string') {\r\n                    this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\r\n                    if (typeof newOp.attributes === 'object') {\r\n                        this.ops[index - 1].attributes = newOp.attributes;\r\n                    }\r\n                    return this;\r\n                }\r\n                else if (typeof newOp.retain === 'number' &&\r\n                    typeof lastOp.retain === 'number') {\r\n                    this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\r\n                    if (typeof newOp.attributes === 'object') {\r\n                        this.ops[index - 1].attributes = newOp.attributes;\r\n                    }\r\n                    return this;\r\n                }\r\n            }\r\n        }\r\n        if (index === this.ops.length) {\r\n            this.ops.push(newOp);\r\n        }\r\n        else {\r\n            this.ops.splice(index, 0, newOp);\r\n        }\r\n        return this;\r\n    };\r\n    Delta.prototype.chop = function () {\r\n        var lastOp = this.ops[this.ops.length - 1];\r\n        if (lastOp && lastOp.retain && !lastOp.attributes) {\r\n            this.ops.pop();\r\n        }\r\n        return this;\r\n    };\r\n    Delta.prototype.filter = function (predicate) {\r\n        return this.ops.filter(predicate);\r\n    };\r\n    Delta.prototype.forEach = function (predicate) {\r\n        this.ops.forEach(predicate);\r\n    };\r\n    Delta.prototype.map = function (predicate) {\r\n        return this.ops.map(predicate);\r\n    };\r\n    Delta.prototype.partition = function (predicate) {\r\n        var passed = [];\r\n        var failed = [];\r\n        this.forEach(function (op) {\r\n            var target = predicate(op) ? passed : failed;\r\n            target.push(op);\r\n        });\r\n        return [passed, failed];\r\n    };\r\n    Delta.prototype.reduce = function (predicate, initialValue) {\r\n        return this.ops.reduce(predicate, initialValue);\r\n    };\r\n    Delta.prototype.changeLength = function () {\r\n        return this.reduce(function (length, elem) {\r\n            if (elem.insert) {\r\n                return length + Op_1.default.length(elem);\r\n            }\r\n            else if (elem.delete) {\r\n                return length - elem.delete;\r\n            }\r\n            return length;\r\n        }, 0);\r\n    };\r\n    Delta.prototype.length = function () {\r\n        return this.reduce(function (length, elem) {\r\n            return length + Op_1.default.length(elem);\r\n        }, 0);\r\n    };\r\n    Delta.prototype.slice = function (start, end) {\r\n        if (start === void 0) { start = 0; }\r\n        if (end === void 0) { end = Infinity; }\r\n        var ops = [];\r\n        var iter = Op_1.default.iterator(this.ops);\r\n        var index = 0;\r\n        while (index < end && iter.hasNext()) {\r\n            var nextOp = void 0;\r\n            if (index < start) {\r\n                nextOp = iter.next(start - index);\r\n            }\r\n            else {\r\n                nextOp = iter.next(end - index);\r\n                ops.push(nextOp);\r\n            }\r\n            index += Op_1.default.length(nextOp);\r\n        }\r\n        return new Delta(ops);\r\n    };\r\n    Delta.prototype.compose = function (other) {\r\n        var thisIter = Op_1.default.iterator(this.ops);\r\n        var otherIter = Op_1.default.iterator(other.ops);\r\n        var ops = [];\r\n        var firstOther = otherIter.peek();\r\n        if (firstOther != null &&\r\n            typeof firstOther.retain === 'number' &&\r\n            firstOther.attributes == null) {\r\n            var firstLeft = firstOther.retain;\r\n            while (thisIter.peekType() === 'insert' &&\r\n                thisIter.peekLength() <= firstLeft) {\r\n                firstLeft -= thisIter.peekLength();\r\n                ops.push(thisIter.next());\r\n            }\r\n            if (firstOther.retain - firstLeft > 0) {\r\n                otherIter.next(firstOther.retain - firstLeft);\r\n            }\r\n        }\r\n        var delta = new Delta(ops);\r\n        while (thisIter.hasNext() || otherIter.hasNext()) {\r\n            if (otherIter.peekType() === 'insert') {\r\n                delta.push(otherIter.next());\r\n            }\r\n            else if (thisIter.peekType() === 'delete') {\r\n                delta.push(thisIter.next());\r\n            }\r\n            else {\r\n                var length_1 = Math.min(thisIter.peekLength(), otherIter.peekLength());\r\n                var thisOp = thisIter.next(length_1);\r\n                var otherOp = otherIter.next(length_1);\r\n                if (typeof otherOp.retain === 'number') {\r\n                    var newOp = {};\r\n                    if (typeof thisOp.retain === 'number') {\r\n                        newOp.retain = length_1;\r\n                    }\r\n                    else {\r\n                        newOp.insert = thisOp.insert;\r\n                    }\r\n                    // Preserve null when composing with a retain, otherwise remove it for inserts\r\n                    var attributes = AttributeMap_1.default.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\r\n                    if (attributes) {\r\n                        newOp.attributes = attributes;\r\n                    }\r\n                    delta.push(newOp);\r\n                    // Optimization if rest of other is just retain\r\n                    if (!otherIter.hasNext() &&\r\n                        lodash_isequal_1.default(delta.ops[delta.ops.length - 1], newOp)) {\r\n                        var rest = new Delta(thisIter.rest());\r\n                        return delta.concat(rest).chop();\r\n                    }\r\n                    // Other op should be delete, we could be an insert or retain\r\n                    // Insert + delete cancels out\r\n                }\r\n                else if (typeof otherOp.delete === 'number' &&\r\n                    typeof thisOp.retain === 'number') {\r\n                    delta.push(otherOp);\r\n                }\r\n            }\r\n        }\r\n        return delta.chop();\r\n    };\r\n    Delta.prototype.concat = function (other) {\r\n        var delta = new Delta(this.ops.slice());\r\n        if (other.ops.length > 0) {\r\n            delta.push(other.ops[0]);\r\n            delta.ops = delta.ops.concat(other.ops.slice(1));\r\n        }\r\n        return delta;\r\n    };\r\n    Delta.prototype.diff = function (other, cursor) {\r\n        if (this.ops === other.ops) {\r\n            return new Delta();\r\n        }\r\n        var strings = [this, other].map(function (delta) {\r\n            return delta\r\n                .map(function (op) {\r\n                if (op.insert != null) {\r\n                    return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\r\n                }\r\n                var prep = delta === other ? 'on' : 'with';\r\n                throw new Error('diff() called ' + prep + ' non-document');\r\n            })\r\n                .join('');\r\n        });\r\n        var retDelta = new Delta();\r\n        var diffResult = fast_diff_1.default(strings[0], strings[1], cursor);\r\n        var thisIter = Op_1.default.iterator(this.ops);\r\n        var otherIter = Op_1.default.iterator(other.ops);\r\n        diffResult.forEach(function (component) {\r\n            var length = component[1].length;\r\n            while (length > 0) {\r\n                var opLength = 0;\r\n                switch (component[0]) {\r\n                    case fast_diff_1.default.INSERT:\r\n                        opLength = Math.min(otherIter.peekLength(), length);\r\n                        retDelta.push(otherIter.next(opLength));\r\n                        break;\r\n                    case fast_diff_1.default.DELETE:\r\n                        opLength = Math.min(length, thisIter.peekLength());\r\n                        thisIter.next(opLength);\r\n                        retDelta.delete(opLength);\r\n                        break;\r\n                    case fast_diff_1.default.EQUAL:\r\n                        opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\r\n                        var thisOp = thisIter.next(opLength);\r\n                        var otherOp = otherIter.next(opLength);\r\n                        if (lodash_isequal_1.default(thisOp.insert, otherOp.insert)) {\r\n                            retDelta.retain(opLength, AttributeMap_1.default.diff(thisOp.attributes, otherOp.attributes));\r\n                        }\r\n                        else {\r\n                            retDelta.push(otherOp).delete(opLength);\r\n                        }\r\n                        break;\r\n                }\r\n                length -= opLength;\r\n            }\r\n        });\r\n        return retDelta.chop();\r\n    };\r\n    Delta.prototype.eachLine = function (predicate, newline) {\r\n        if (newline === void 0) { newline = '\\n'; }\r\n        var iter = Op_1.default.iterator(this.ops);\r\n        var line = new Delta();\r\n        var i = 0;\r\n        while (iter.hasNext()) {\r\n            if (iter.peekType() !== 'insert') {\r\n                return;\r\n            }\r\n            var thisOp = iter.peek();\r\n            var start = Op_1.default.length(thisOp) - iter.peekLength();\r\n            var index = typeof thisOp.insert === 'string'\r\n                ? thisOp.insert.indexOf(newline, start) - start\r\n                : -1;\r\n            if (index < 0) {\r\n                line.push(iter.next());\r\n            }\r\n            else if (index > 0) {\r\n                line.push(iter.next(index));\r\n            }\r\n            else {\r\n                if (predicate(line, iter.next(1).attributes || {}, i) === false) {\r\n                    return;\r\n                }\r\n                i += 1;\r\n                line = new Delta();\r\n            }\r\n        }\r\n        if (line.length() > 0) {\r\n            predicate(line, {}, i);\r\n        }\r\n    };\r\n    Delta.prototype.invert = function (base) {\r\n        var inverted = new Delta();\r\n        this.reduce(function (baseIndex, op) {\r\n            if (op.insert) {\r\n                inverted.delete(Op_1.default.length(op));\r\n            }\r\n            else if (op.retain && op.attributes == null) {\r\n                inverted.retain(op.retain);\r\n                return baseIndex + op.retain;\r\n            }\r\n            else if (op.delete || (op.retain && op.attributes)) {\r\n                var length_2 = (op.delete || op.retain);\r\n                var slice = base.slice(baseIndex, baseIndex + length_2);\r\n                slice.forEach(function (baseOp) {\r\n                    if (op.delete) {\r\n                        inverted.push(baseOp);\r\n                    }\r\n                    else if (op.retain && op.attributes) {\r\n                        inverted.retain(Op_1.default.length(baseOp), AttributeMap_1.default.invert(op.attributes, baseOp.attributes));\r\n                    }\r\n                });\r\n                return baseIndex + length_2;\r\n            }\r\n            return baseIndex;\r\n        }, 0);\r\n        return inverted.chop();\r\n    };\r\n    Delta.prototype.transform = function (arg, priority) {\r\n        if (priority === void 0) { priority = false; }\r\n        priority = !!priority;\r\n        if (typeof arg === 'number') {\r\n            return this.transformPosition(arg, priority);\r\n        }\r\n        var other = arg;\r\n        var thisIter = Op_1.default.iterator(this.ops);\r\n        var otherIter = Op_1.default.iterator(other.ops);\r\n        var delta = new Delta();\r\n        while (thisIter.hasNext() || otherIter.hasNext()) {\r\n            if (thisIter.peekType() === 'insert' &&\r\n                (priority || otherIter.peekType() !== 'insert')) {\r\n                delta.retain(Op_1.default.length(thisIter.next()));\r\n            }\r\n            else if (otherIter.peekType() === 'insert') {\r\n                delta.push(otherIter.next());\r\n            }\r\n            else {\r\n                var length_3 = Math.min(thisIter.peekLength(), otherIter.peekLength());\r\n                var thisOp = thisIter.next(length_3);\r\n                var otherOp = otherIter.next(length_3);\r\n                if (thisOp.delete) {\r\n                    // Our delete either makes their delete redundant or removes their retain\r\n                    continue;\r\n                }\r\n                else if (otherOp.delete) {\r\n                    delta.push(otherOp);\r\n                }\r\n                else {\r\n                    // We retain either their retain or insert\r\n                    delta.retain(length_3, AttributeMap_1.default.transform(thisOp.attributes, otherOp.attributes, priority));\r\n                }\r\n            }\r\n        }\r\n        return delta.chop();\r\n    };\r\n    Delta.prototype.transformPosition = function (index, priority) {\r\n        if (priority === void 0) { priority = false; }\r\n        priority = !!priority;\r\n        var thisIter = Op_1.default.iterator(this.ops);\r\n        var offset = 0;\r\n        while (thisIter.hasNext() && offset <= index) {\r\n            var length_4 = thisIter.peekLength();\r\n            var nextType = thisIter.peekType();\r\n            thisIter.next();\r\n            if (nextType === 'delete') {\r\n                index -= Math.min(length_4, index - offset);\r\n                continue;\r\n            }\r\n            else if (nextType === 'insert' && (offset < index || !priority)) {\r\n                index += length_4;\r\n            }\r\n            offset += length_4;\r\n        }\r\n        return index;\r\n    };\r\n    Delta.Op = Op_1.default;\r\n    Delta.AttributeMap = AttributeMap_1.default;\r\n    return Delta;\r\n}());\r\nmodule.exports = Delta;\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return globalRegistry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return expandConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return overload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Quill; });\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);\n/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26);\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_merge__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);\n/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(11);\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(6);\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(29);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(15);\n/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(40);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\nvar debug = Object(_logger__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"a\"])('quill');\nvar globalRegistry = new parchment__WEBPACK_IMPORTED_MODULE_3__[\"Registry\"]();\nparchment__WEBPACK_IMPORTED_MODULE_3__[\"ParentBlot\"].uiClass = 'ql-ui';\n\nvar Quill = /*#__PURE__*/function () {\n  _createClass(Quill, null, [{\n    key: \"debug\",\n    value: function debug(limit) {\n      if (limit === true) {\n        limit = 'log';\n      }\n\n      _logger__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"a\"].level(limit);\n    }\n  }, {\n    key: \"find\",\n    value: function find(node) {\n      return _instances__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"].get(node) || globalRegistry.find(node);\n    }\n  }, {\n    key: \"import\",\n    value: function _import(name) {\n      if (this.imports[name] == null) {\n        debug.error(\"Cannot import \".concat(name, \". Are you sure it was registered?\"));\n      }\n\n      return this.imports[name];\n    }\n  }, {\n    key: \"register\",\n    value: function register(path, target) {\n      var _this = this;\n\n      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (typeof path !== 'string') {\n        var name = path.attrName || path.blotName;\n\n        if (typeof name === 'string') {\n          // register(Blot | Attributor, overwrite)\n          this.register(\"formats/\".concat(name), path, target);\n        } else {\n          Object.keys(path).forEach(function (key) {\n            _this.register(key, path[key], target);\n          });\n        }\n      } else {\n        if (this.imports[path] != null && !overwrite) {\n          debug.warn(\"Overwriting \".concat(path, \" with\"), target);\n        }\n\n        this.imports[path] = target;\n\n        if ((path.indexOf('blots/') === 0 || path.indexOf('formats/') === 0) && target.blotName !== 'abstract') {\n          globalRegistry.register(target);\n        }\n\n        if (typeof target.register === 'function') {\n          target.register(globalRegistry);\n        }\n      }\n    }\n  }]);\n\n  function Quill(container) {\n    var _this2 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Quill);\n\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n\n    if (this.container == null) {\n      return debug.error('Invalid Quill container', container);\n    }\n\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n\n    var html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    _instances__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"].set(this.container, this);\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.scrollingContainer = this.options.scrollingContainer || this.root;\n    this.emitter = new _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"]();\n    var ScrollBlot = this.options.registry.query(parchment__WEBPACK_IMPORTED_MODULE_3__[\"ScrollBlot\"].blotName);\n    this.scroll = new ScrollBlot(this.options.registry, this.root, {\n      emitter: this.emitter\n    });\n    this.editor = new _editor__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"](this.scroll);\n    this.selection = new _selection__WEBPACK_IMPORTED_MODULE_7__[/* default */ \"b\"](this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options); // eslint-disable-line new-cap\n\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.uploader = this.theme.addModule('uploader');\n    this.theme.init();\n    this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].events.EDITOR_CHANGE, function (type) {\n      if (type === _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].events.TEXT_CHANGE) {\n        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n      }\n    });\n    this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].events.SCROLL_UPDATE, function (source, mutations) {\n      var oldRange = _this2.selection.lastRange;\n\n      var _this2$selection$getR = _this2.selection.getRange(),\n          _this2$selection$getR2 = _slicedToArray(_this2$selection$getR, 1),\n          newRange = _this2$selection$getR2[0];\n\n      var selectionInfo = oldRange && newRange ? {\n        oldRange: oldRange,\n        newRange: newRange\n      } : undefined;\n      modify.call(_this2, function () {\n        return _this2.editor.update(null, mutations, selectionInfo);\n      }, source);\n    });\n    var contents = this.clipboard.convert({\n      html: \"\".concat(html, \"<p><br></p>\"),\n      text: '\\n'\n    });\n    this.setContents(contents);\n    this.history.clear();\n\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n\n    if (this.options.readOnly) {\n      this.disable();\n    }\n\n    this.allowReadOnlyEdits = false;\n  }\n\n  _createClass(Quill, [{\n    key: \"addContainer\",\n    value: function addContainer(container) {\n      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (typeof container === 'string') {\n        var className = container;\n        container = document.createElement('div');\n        container.classList.add(className);\n      }\n\n      this.container.insertBefore(container, refNode);\n      return container;\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.selection.setRange(null);\n    }\n  }, {\n    key: \"deleteText\",\n    value: function deleteText(index, length, source) {\n      var _this3 = this;\n\n      var _overload = overload(index, length, source);\n\n      var _overload2 = _slicedToArray(_overload, 4);\n\n      index = _overload2[0];\n      length = _overload2[1];\n      source = _overload2[3];\n      return modify.call(this, function () {\n        return _this3.editor.deleteText(index, length);\n      }, source, index, -1 * length);\n    }\n  }, {\n    key: \"disable\",\n    value: function disable() {\n      this.enable(false);\n    }\n  }, {\n    key: \"editReadOnly\",\n    value: function editReadOnly(modifier) {\n      this.allowReadOnlyEdits = true;\n      var value = modifier();\n      this.allowReadOnlyEdits = false;\n      return value;\n    }\n  }, {\n    key: \"enable\",\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.scroll.enable(enabled);\n      this.container.classList.toggle('ql-disabled', !enabled);\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      var scrollTop = this.scrollingContainer.scrollTop;\n      this.selection.focus();\n      this.scrollingContainer.scrollTop = scrollTop;\n      this.scrollIntoView();\n    }\n  }, {\n    key: \"format\",\n    value: function format(name, value) {\n      var _this4 = this;\n\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.API;\n      return modify.call(this, function () {\n        var range = _this4.getSelection(true);\n\n        var change = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\n        if (range == null) return change;\n\n        if (_this4.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_3__[\"Scope\"].BLOCK)) {\n          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n        } else if (range.length === 0) {\n          _this4.selection.format(name, value);\n\n          return change;\n        } else {\n          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n        }\n\n        _this4.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.SILENT);\n\n        return change;\n      }, source);\n    }\n  }, {\n    key: \"formatLine\",\n    value: function formatLine(index, length, name, value, source) {\n      var _this5 = this;\n\n      var formats; // eslint-disable-next-line prefer-const\n\n      var _overload3 = overload(index, length, name, value, source);\n\n      var _overload4 = _slicedToArray(_overload3, 4);\n\n      index = _overload4[0];\n      length = _overload4[1];\n      formats = _overload4[2];\n      source = _overload4[3];\n      return modify.call(this, function () {\n        return _this5.editor.formatLine(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: \"formatText\",\n    value: function formatText(index, length, name, value, source) {\n      var _this6 = this;\n\n      var formats; // eslint-disable-next-line prefer-const\n\n      var _overload5 = overload(index, length, name, value, source);\n\n      var _overload6 = _slicedToArray(_overload5, 4);\n\n      index = _overload6[0];\n      length = _overload6[1];\n      formats = _overload6[2];\n      source = _overload6[3];\n      return modify.call(this, function () {\n        return _this6.editor.formatText(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: \"getBounds\",\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var bounds;\n\n      if (typeof index === 'number') {\n        bounds = this.selection.getBounds(index, length);\n      } else {\n        bounds = this.selection.getBounds(index.index, index.length);\n      }\n\n      var containerBounds = this.container.getBoundingClientRect();\n      return {\n        bottom: bounds.bottom - containerBounds.top,\n        height: bounds.height,\n        left: bounds.left - containerBounds.left,\n        right: bounds.right - containerBounds.left,\n        top: bounds.top - containerBounds.top,\n        width: bounds.width\n      };\n    }\n  }, {\n    key: \"getContents\",\n    value: function getContents() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload7 = overload(index, length);\n\n      var _overload8 = _slicedToArray(_overload7, 2);\n\n      index = _overload8[0];\n      length = _overload8[1];\n      return this.editor.getContents(index, length);\n    }\n  }, {\n    key: \"getFormat\",\n    value: function getFormat() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (typeof index === 'number') {\n        return this.editor.getFormat(index, length);\n      }\n\n      return this.editor.getFormat(index.index, index.length);\n    }\n  }, {\n    key: \"getIndex\",\n    value: function getIndex(blot) {\n      return blot.offset(this.scroll);\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      return this.scroll.length();\n    }\n  }, {\n    key: \"getLeaf\",\n    value: function getLeaf(index) {\n      return this.scroll.leaf(index);\n    }\n  }, {\n    key: \"getLine\",\n    value: function getLine(index) {\n      return this.scroll.line(index);\n    }\n  }, {\n    key: \"getLines\",\n    value: function getLines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      if (typeof index !== 'number') {\n        return this.scroll.lines(index.index, index.length);\n      }\n\n      return this.scroll.lines(index, length);\n    }\n  }, {\n    key: \"getModule\",\n    value: function getModule(name) {\n      return this.theme.modules[name];\n    }\n  }, {\n    key: \"getSelection\",\n    value: function getSelection() {\n      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      if (focus) this.focus();\n      this.update(); // Make sure we access getRange with editor in consistent state\n\n      return this.selection.getRange()[0];\n    }\n  }, {\n    key: \"getSemanticHTML\",\n    value: function getSemanticHTML() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload9 = overload(index, length);\n\n      var _overload10 = _slicedToArray(_overload9, 2);\n\n      index = _overload10[0];\n      length = _overload10[1];\n      return this.editor.getHTML(index, length);\n    }\n  }, {\n    key: \"getText\",\n    value: function getText() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload11 = overload(index, length);\n\n      var _overload12 = _slicedToArray(_overload11, 2);\n\n      index = _overload12[0];\n      length = _overload12[1];\n      return this.editor.getText(index, length);\n    }\n  }, {\n    key: \"hasFocus\",\n    value: function hasFocus() {\n      return this.selection.hasFocus();\n    }\n  }, {\n    key: \"insertEmbed\",\n    value: function insertEmbed(index, embed, value) {\n      var _this7 = this;\n\n      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n      return modify.call(this, function () {\n        return _this7.editor.insertEmbed(index, embed, value);\n      }, source, index);\n    }\n  }, {\n    key: \"insertText\",\n    value: function insertText(index, text, name, value, source) {\n      var _this8 = this;\n\n      var formats; // eslint-disable-next-line prefer-const\n\n      var _overload13 = overload(index, 0, name, value, source);\n\n      var _overload14 = _slicedToArray(_overload13, 4);\n\n      index = _overload14[0];\n      formats = _overload14[2];\n      source = _overload14[3];\n      return modify.call(this, function () {\n        return _this8.editor.insertText(index, text, formats);\n      }, source, index, text.length);\n    }\n  }, {\n    key: \"isEnabled\",\n    value: function isEnabled() {\n      return this.scroll.isEnabled();\n    }\n  }, {\n    key: \"off\",\n    value: function off() {\n      var _this$emitter;\n\n      return (_this$emitter = this.emitter).off.apply(_this$emitter, arguments);\n    }\n  }, {\n    key: \"on\",\n    value: function on() {\n      var _this$emitter2;\n\n      return (_this$emitter2 = this.emitter).on.apply(_this$emitter2, arguments);\n    }\n  }, {\n    key: \"once\",\n    value: function once() {\n      var _this$emitter3;\n\n      return (_this$emitter3 = this.emitter).once.apply(_this$emitter3, arguments);\n    }\n  }, {\n    key: \"removeFormat\",\n    value: function removeFormat(index, length, source) {\n      var _this9 = this;\n\n      var _overload15 = overload(index, length, source);\n\n      var _overload16 = _slicedToArray(_overload15, 4);\n\n      index = _overload16[0];\n      length = _overload16[1];\n      source = _overload16[3];\n      return modify.call(this, function () {\n        return _this9.editor.removeFormat(index, length);\n      }, source, index);\n    }\n  }, {\n    key: \"scrollIntoView\",\n    value: function scrollIntoView() {\n      this.selection.scrollIntoView(this.scrollingContainer);\n    }\n  }, {\n    key: \"setContents\",\n    value: function setContents(delta) {\n      var _this10 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.API;\n      return modify.call(this, function () {\n        delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(delta);\n\n        var length = _this10.getLength(); // Quill will set empty editor to \\n\n\n\n        var delete1 = _this10.editor.deleteText(0, length); // delta always applied before existing content\n\n\n        var applied = _this10.editor.applyDelta(delta); // Remove extra \\n from empty editor initialization\n\n\n        var delete2 = _this10.editor.deleteText(_this10.getLength() - 1, 1);\n\n        return delete1.compose(applied).compose(delete2);\n      }, source);\n    }\n  }, {\n    key: \"setSelection\",\n    value: function setSelection(index, length, source) {\n      if (index == null) {\n        this.selection.setRange(null, length || Quill.sources.API);\n      } else {\n        var _overload17 = overload(index, length, source);\n\n        var _overload18 = _slicedToArray(_overload17, 4);\n\n        index = _overload18[0];\n        length = _overload18[1];\n        source = _overload18[3];\n        this.selection.setRange(new _selection__WEBPACK_IMPORTED_MODULE_7__[/* Range */ \"a\"](Math.max(0, index), length), source);\n\n        if (source !== _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.SILENT) {\n          this.selection.scrollIntoView(this.scrollingContainer);\n        }\n      }\n    }\n  }, {\n    key: \"setText\",\n    value: function setText(text) {\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.API;\n      var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(text);\n      return this.setContents(delta, source);\n    }\n  }, {\n    key: \"update\",\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.USER;\n      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\n      this.selection.update(source); // TODO this is usually undefined\n\n      return change;\n    }\n  }, {\n    key: \"updateContents\",\n    value: function updateContents(delta) {\n      var _this11 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.API;\n      return modify.call(this, function () {\n        delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(delta);\n        return _this11.editor.applyDelta(delta, source);\n      }, source, true);\n    }\n  }]);\n\n  return Quill;\n}();\n\nQuill.DEFAULTS = {\n  bounds: null,\n  modules: {},\n  placeholder: '',\n  readOnly: false,\n  registry: globalRegistry,\n  scrollingContainer: null,\n  theme: 'default'\n};\nQuill.events = _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].events;\nQuill.sources = _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources; // eslint-disable-next-line no-undef\n\nQuill.version =  false ? undefined : \"0.9.8\";\nQuill.imports = {\n  delta: quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a,\n  parchment: parchment__WEBPACK_IMPORTED_MODULE_3__,\n  'core/module': _module__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"],\n  'core/theme': _theme__WEBPACK_IMPORTED_MODULE_10__[/* default */ \"a\"]\n};\n\nfunction expandConfig(container, userConfig) {\n  userConfig = lodash_merge__WEBPACK_IMPORTED_MODULE_2___default()({\n    container: container,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true,\n      uploader: true\n    }\n  }, userConfig);\n\n  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n    userConfig.theme = _theme__WEBPACK_IMPORTED_MODULE_10__[/* default */ \"a\"];\n  } else {\n    userConfig.theme = Quill.import(\"themes/\".concat(userConfig.theme));\n\n    if (userConfig.theme == null) {\n      throw new Error(\"Invalid theme \".concat(userConfig.theme, \". Did you register it?\"));\n    }\n  }\n\n  var themeConfig = lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1___default()(userConfig.theme.DEFAULTS);\n  [themeConfig, userConfig].forEach(function (config) {\n    config.modules = config.modules || {};\n    Object.keys(config.modules).forEach(function (module) {\n      if (config.modules[module] === true) {\n        config.modules[module] = {};\n      }\n    });\n  });\n  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n  var moduleConfig = moduleNames.reduce(function (config, name) {\n    var moduleClass = Quill.import(\"modules/\".concat(name));\n\n    if (moduleClass == null) {\n      debug.error(\"Cannot load \".concat(name, \" module. Are you sure you registered it?\"));\n    } else {\n      config[name] = moduleClass.DEFAULTS || {};\n    }\n\n    return config;\n  }, {}); // Special case toolbar shorthand\n\n  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n    userConfig.modules.toolbar = {\n      container: userConfig.modules.toolbar\n    };\n  }\n\n  userConfig = lodash_merge__WEBPACK_IMPORTED_MODULE_2___default()({}, Quill.DEFAULTS, {\n    modules: moduleConfig\n  }, themeConfig, userConfig);\n  ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n    if (typeof userConfig[key] === 'string') {\n      userConfig[key] = document.querySelector(userConfig[key]);\n    }\n  });\n  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n    if (userConfig.modules[name]) {\n      config[name] = userConfig.modules[name];\n    }\n\n    return config;\n  }, {});\n  return userConfig;\n} // Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\n\n\nfunction modify(modifier, source, index, shift) {\n  if (!this.isEnabled() && source === _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.USER && !this.allowReadOnlyEdits) {\n    return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\n  }\n\n  var range = index == null ? null : this.getSelection();\n  var oldDelta = this.editor.delta;\n  var change = modifier();\n\n  if (range != null) {\n    if (index === true) {\n      index = range.index; // eslint-disable-line prefer-destructuring\n    }\n\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index, shift, source);\n    }\n\n    this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.SILENT);\n  }\n\n  if (change.length() > 0) {\n    var _this$emitter4;\n\n    var args = [_emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].events.TEXT_CHANGE, change, oldDelta, source];\n\n    (_this$emitter4 = this.emitter).emit.apply(_this$emitter4, [_emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].events.EDITOR_CHANGE].concat(args));\n\n    if (source !== _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.SILENT) {\n      var _this$emitter5;\n\n      (_this$emitter5 = this.emitter).emit.apply(_this$emitter5, args);\n    }\n  }\n\n  return change;\n}\n\nfunction overload(index, length, name, value, source) {\n  var formats = {};\n\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      source = value;\n      value = name;\n      name = length;\n      length = index.length; // eslint-disable-line prefer-destructuring\n\n      index = index.index; // eslint-disable-line prefer-destructuring\n    } else {\n      length = index.length; // eslint-disable-line prefer-destructuring\n\n      index = index.index; // eslint-disable-line prefer-destructuring\n    }\n  } else if (typeof length !== 'number') {\n    source = value;\n    value = name;\n    name = length;\n    length = 0;\n  } // Handle format being object, two format name/value strings or excluded\n\n\n  if (_typeof(name) === 'object') {\n    formats = name;\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  } // Handle optional source\n\n\n  source = source || _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.API;\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n  if (range == null) return null;\n  var start;\n  var end;\n\n  if (index instanceof quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a) {\n    var _map = [range.index, range.index + range.length].map(function (pos) {\n      return index.transformPosition(pos, source !== _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.USER);\n    });\n\n    var _map2 = _slicedToArray(_map, 2);\n\n    start = _map2[0];\n    end = _map2[1];\n  } else {\n    var _map3 = [range.index, range.index + range.length].map(function (pos) {\n      if (pos < index || pos === index && source === _emitter__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].sources.USER) return pos;\n\n      if (length >= 0) {\n        return pos + length;\n      }\n\n      return Math.max(index, pos + length);\n    });\n\n    var _map4 = _slicedToArray(_map3, 2);\n\n    start = _map4[0];\n    end = _map4[1];\n  }\n\n  return new _selection__WEBPACK_IMPORTED_MODULE_7__[/* Range */ \"a\"](start, end - start);\n}\n\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"ParentBlot\", function() { return /* reexport */ abstract_parent; });\n__webpack_require__.d(__webpack_exports__, \"ContainerBlot\", function() { return /* reexport */ container; });\n__webpack_require__.d(__webpack_exports__, \"LeafBlot\", function() { return /* reexport */ leaf; });\n__webpack_require__.d(__webpack_exports__, \"EmbedBlot\", function() { return /* reexport */ blot_embed; });\n__webpack_require__.d(__webpack_exports__, \"ScrollBlot\", function() { return /* reexport */ blot_scroll; });\n__webpack_require__.d(__webpack_exports__, \"BlockBlot\", function() { return /* reexport */ block; });\n__webpack_require__.d(__webpack_exports__, \"InlineBlot\", function() { return /* reexport */ inline; });\n__webpack_require__.d(__webpack_exports__, \"TextBlot\", function() { return /* reexport */ blot_text; });\n__webpack_require__.d(__webpack_exports__, \"Attributor\", function() { return /* reexport */ attributor; });\n__webpack_require__.d(__webpack_exports__, \"ClassAttributor\", function() { return /* reexport */ attributor_class; });\n__webpack_require__.d(__webpack_exports__, \"StyleAttributor\", function() { return /* reexport */ style; });\n__webpack_require__.d(__webpack_exports__, \"AttributorStore\", function() { return /* reexport */ store; });\n__webpack_require__.d(__webpack_exports__, \"Registry\", function() { return /* reexport */ registry; });\n__webpack_require__.d(__webpack_exports__, \"Scope\", function() { return /* reexport */ src_scope; });\n\n// CONCATENATED MODULE: ./node_modules/parchment/src/scope.ts\nvar Scope;\n\n(function (Scope) {\n  Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n  Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n  Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n  Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n  Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n  Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n  Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n  Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n  Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n  Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n  Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope || (Scope = {}));\n\n/* harmony default export */ var src_scope = (Scope);\n// CONCATENATED MODULE: ./node_modules/parchment/src/collection/linked-list.ts\nvar LinkedList =\n/** @class */\nfunction () {\n  function LinkedList() {\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  LinkedList.prototype.append = function () {\n    var nodes = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      nodes[_i] = arguments[_i];\n    }\n\n    this.insertBefore(nodes[0], null);\n\n    if (nodes.length > 1) {\n      var rest = nodes.slice(1);\n      this.append.apply(this, rest);\n    }\n  };\n\n  LinkedList.prototype.at = function (index) {\n    var next = this.iterator();\n    var cur = next();\n\n    while (cur && index > 0) {\n      index -= 1;\n      cur = next();\n    }\n\n    return cur;\n  };\n\n  LinkedList.prototype.contains = function (node) {\n    var next = this.iterator();\n    var cur = next();\n\n    while (cur) {\n      if (cur === node) {\n        return true;\n      }\n\n      cur = next();\n    }\n\n    return false;\n  };\n\n  LinkedList.prototype.indexOf = function (node) {\n    var next = this.iterator();\n    var cur = next();\n    var index = 0;\n\n    while (cur) {\n      if (cur === node) {\n        return index;\n      }\n\n      index += 1;\n      cur = next();\n    }\n\n    return -1;\n  };\n\n  LinkedList.prototype.insertBefore = function (node, refNode) {\n    if (node == null) {\n      return;\n    }\n\n    this.remove(node);\n    node.next = refNode;\n\n    if (refNode != null) {\n      node.prev = refNode.prev;\n\n      if (refNode.prev != null) {\n        refNode.prev.next = node;\n      }\n\n      refNode.prev = node;\n\n      if (refNode === this.head) {\n        this.head = node;\n      }\n    } else if (this.tail != null) {\n      this.tail.next = node;\n      node.prev = this.tail;\n      this.tail = node;\n    } else {\n      node.prev = null;\n      this.head = this.tail = node;\n    }\n\n    this.length += 1;\n  };\n\n  LinkedList.prototype.offset = function (target) {\n    var index = 0;\n    var cur = this.head;\n\n    while (cur != null) {\n      if (cur === target) {\n        return index;\n      }\n\n      index += cur.length();\n      cur = cur.next;\n    }\n\n    return -1;\n  };\n\n  LinkedList.prototype.remove = function (node) {\n    if (!this.contains(node)) {\n      return;\n    }\n\n    if (node.prev != null) {\n      node.prev.next = node.next;\n    }\n\n    if (node.next != null) {\n      node.next.prev = node.prev;\n    }\n\n    if (node === this.head) {\n      this.head = node.next;\n    }\n\n    if (node === this.tail) {\n      this.tail = node.prev;\n    }\n\n    this.length -= 1;\n  };\n\n  LinkedList.prototype.iterator = function (curNode) {\n    if (curNode === void 0) {\n      curNode = this.head;\n    } // TODO use yield when we can\n\n\n    return function () {\n      var ret = curNode;\n\n      if (curNode != null) {\n        curNode = curNode.next;\n      }\n\n      return ret;\n    };\n  };\n\n  LinkedList.prototype.find = function (index, inclusive) {\n    if (inclusive === void 0) {\n      inclusive = false;\n    }\n\n    var next = this.iterator();\n    var cur = next();\n\n    while (cur) {\n      var length = cur.length();\n\n      if (index < length || inclusive && index === length && (cur.next == null || cur.next.length() !== 0)) {\n        return [cur, index];\n      }\n\n      index -= length;\n      cur = next();\n    }\n\n    return [null, 0];\n  };\n\n  LinkedList.prototype.forEach = function (callback) {\n    var next = this.iterator();\n    var cur = next();\n\n    while (cur) {\n      callback(cur);\n      cur = next();\n    }\n  };\n\n  LinkedList.prototype.forEachAt = function (index, length, callback) {\n    if (length <= 0) {\n      return;\n    }\n\n    var _a = this.find(index),\n        startNode = _a[0],\n        offset = _a[1];\n\n    var curIndex = index - offset;\n    var next = this.iterator(startNode);\n    var cur = next();\n\n    while (cur && curIndex < index + length) {\n      var curLength = cur.length();\n\n      if (index > curIndex) {\n        callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n      } else {\n        callback(cur, 0, Math.min(curLength, index + length - curIndex));\n      }\n\n      curIndex += curLength;\n      cur = next();\n    }\n  };\n\n  LinkedList.prototype.map = function (callback) {\n    return this.reduce(function (memo, cur) {\n      memo.push(callback(cur));\n      return memo;\n    }, []);\n  };\n\n  LinkedList.prototype.reduce = function (callback, memo) {\n    var next = this.iterator();\n    var cur = next();\n\n    while (cur) {\n      memo = callback(memo, cur);\n      cur = next();\n    }\n\n    return memo;\n  };\n\n  return LinkedList;\n}();\n\n/* harmony default export */ var linked_list = (LinkedList);\n// CONCATENATED MODULE: ./node_modules/parchment/src/error.ts\nvar __extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\nvar ParchmentError =\n/** @class */\nfunction (_super) {\n  __extends(ParchmentError, _super);\n\n  function ParchmentError(message) {\n    var _this = this;\n\n    message = '[Parchment] ' + message;\n    _this = _super.call(this, message) || this;\n    _this.message = message;\n    _this.name = _this.constructor.name;\n    return _this;\n  }\n\n  return ParchmentError;\n}(Error);\n\n/* harmony default export */ var error = (ParchmentError);\n// CONCATENATED MODULE: ./node_modules/parchment/src/registry.ts\n\n\n\nvar registry_Registry =\n/** @class */\nfunction () {\n  function Registry() {\n    this.attributes = {};\n    this.classes = {};\n    this.tags = {};\n    this.types = {};\n  }\n\n  Registry.find = function (node, bubble) {\n    if (bubble === void 0) {\n      bubble = false;\n    }\n\n    if (node == null) {\n      return null;\n    }\n\n    if (this.blots.has(node)) {\n      return this.blots.get(node) || null;\n    }\n\n    if (bubble) {\n      return this.find(node.parentNode, bubble);\n    }\n\n    return null;\n  };\n\n  Registry.prototype.create = function (scroll, input, value) {\n    var match = this.query(input);\n\n    if (match == null) {\n      throw new error(\"Unable to create \" + input + \" blot\");\n    }\n\n    var blotClass = match;\n    var node = // @ts-ignore\n    input instanceof Node || input.nodeType === Node.TEXT_NODE ? input : blotClass.create(value);\n    var blot = new blotClass(scroll, node, value);\n    Registry.blots.set(blot.domNode, blot);\n    return blot;\n  };\n\n  Registry.prototype.find = function (node, bubble) {\n    if (bubble === void 0) {\n      bubble = false;\n    }\n\n    return Registry.find(node, bubble);\n  };\n\n  Registry.prototype.query = function (query, scope) {\n    var _this = this;\n\n    if (scope === void 0) {\n      scope = src_scope.ANY;\n    }\n\n    var match;\n\n    if (typeof query === 'string') {\n      match = this.types[query] || this.attributes[query]; // @ts-ignore\n    } else if (query instanceof Text || query.nodeType === Node.TEXT_NODE) {\n      match = this.types.text;\n    } else if (typeof query === 'number') {\n      if (query & src_scope.LEVEL & src_scope.BLOCK) {\n        match = this.types.block;\n      } else if (query & src_scope.LEVEL & src_scope.INLINE) {\n        match = this.types.inline;\n      }\n    } else if (query instanceof HTMLElement) {\n      var names = (query.getAttribute('class') || '').split(/\\s+/);\n      names.some(function (name) {\n        match = _this.classes[name];\n\n        if (match) {\n          return true;\n        }\n\n        return false;\n      });\n      match = match || this.tags[query.tagName];\n    }\n\n    if (match == null) {\n      return null;\n    } // @ts-ignore\n\n\n    if (scope & src_scope.LEVEL & match.scope && scope & src_scope.TYPE & match.scope) {\n      return match;\n    }\n\n    return null;\n  };\n\n  Registry.prototype.register = function () {\n    var _this = this;\n\n    var definitions = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      definitions[_i] = arguments[_i];\n    }\n\n    if (definitions.length > 1) {\n      return definitions.map(function (d) {\n        return _this.register(d);\n      });\n    }\n\n    var definition = definitions[0];\n\n    if (typeof definition.blotName !== 'string' && typeof definition.attrName !== 'string') {\n      throw new error('Invalid definition');\n    } else if (definition.blotName === 'abstract') {\n      throw new error('Cannot register abstract class');\n    }\n\n    this.types[definition.blotName || definition.attrName] = definition;\n\n    if (typeof definition.keyName === 'string') {\n      this.attributes[definition.keyName] = definition;\n    } else {\n      if (definition.className != null) {\n        this.classes[definition.className] = definition;\n      }\n\n      if (definition.tagName != null) {\n        if (Array.isArray(definition.tagName)) {\n          definition.tagName = definition.tagName.map(function (tagName) {\n            return tagName.toUpperCase();\n          });\n        } else {\n          definition.tagName = definition.tagName.toUpperCase();\n        }\n\n        var tagNames = Array.isArray(definition.tagName) ? definition.tagName : [definition.tagName];\n        tagNames.forEach(function (tag) {\n          if (_this.tags[tag] == null || definition.className == null) {\n            _this.tags[tag] = definition;\n          }\n        });\n      }\n    }\n\n    return definition;\n  };\n\n  Registry.blots = new WeakMap();\n  return Registry;\n}();\n\n/* harmony default export */ var registry = (registry_Registry);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/abstract/shadow.ts\n\n\n\n\nvar shadow_ShadowBlot =\n/** @class */\nfunction () {\n  function ShadowBlot(scroll, domNode) {\n    this.scroll = scroll;\n    this.domNode = domNode;\n    registry.blots.set(domNode, this);\n    this.prev = null;\n    this.next = null;\n  }\n\n  ShadowBlot.create = function (value) {\n    if (this.tagName == null) {\n      throw new error('Blot definition missing tagName');\n    }\n\n    var node;\n\n    if (Array.isArray(this.tagName)) {\n      if (typeof value === 'string') {\n        value = value.toUpperCase();\n\n        if (parseInt(value, 10).toString() === value) {\n          value = parseInt(value, 10);\n        }\n      }\n\n      if (typeof value === 'number') {\n        node = document.createElement(this.tagName[value - 1]);\n      } else if (this.tagName.indexOf(value) > -1) {\n        node = document.createElement(value);\n      } else {\n        node = document.createElement(this.tagName[0]);\n      }\n    } else {\n      node = document.createElement(this.tagName);\n    }\n\n    if (this.className) {\n      node.classList.add(this.className);\n    }\n\n    return node;\n  };\n\n  Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n    // Hack for accessing inherited static methods\n    get: function get() {\n      return this.constructor;\n    },\n    enumerable: true,\n    configurable: true\n  });\n\n  ShadowBlot.prototype.attach = function () {// Nothing to do\n  };\n\n  ShadowBlot.prototype.clone = function () {\n    var domNode = this.domNode.cloneNode(false);\n    return this.scroll.create(domNode);\n  };\n\n  ShadowBlot.prototype.detach = function () {\n    if (this.parent != null) {\n      this.parent.removeChild(this);\n    }\n\n    registry.blots.delete(this.domNode);\n  };\n\n  ShadowBlot.prototype.deleteAt = function (index, length) {\n    var blot = this.isolate(index, length);\n    blot.remove();\n  };\n\n  ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n    var blot = this.isolate(index, length);\n\n    if (this.scroll.query(name, src_scope.BLOT) != null && value) {\n      blot.wrap(name, value);\n    } else if (this.scroll.query(name, src_scope.ATTRIBUTE) != null) {\n      var parent = this.scroll.create(this.statics.scope);\n      blot.wrap(parent);\n      parent.format(name, value);\n    }\n  };\n\n  ShadowBlot.prototype.insertAt = function (index, value, def) {\n    var blot = def == null ? this.scroll.create('text', value) : this.scroll.create(value, def);\n    var ref = this.split(index);\n    this.parent.insertBefore(blot, ref || undefined);\n  };\n\n  ShadowBlot.prototype.isolate = function (index, length) {\n    var target = this.split(index);\n\n    if (target == null) {\n      throw new Error('Attempt to isolate at end');\n    }\n\n    target.split(length);\n    return target;\n  };\n\n  ShadowBlot.prototype.length = function () {\n    return 1;\n  };\n\n  ShadowBlot.prototype.offset = function (root) {\n    if (root === void 0) {\n      root = this.parent;\n    }\n\n    if (this.parent == null || this === root) {\n      return 0;\n    }\n\n    return this.parent.children.offset(this) + this.parent.offset(root);\n  };\n\n  ShadowBlot.prototype.optimize = function (_context) {\n    if (this.statics.requiredContainer && !(this.parent instanceof this.statics.requiredContainer)) {\n      this.wrap(this.statics.requiredContainer.blotName);\n    }\n  };\n\n  ShadowBlot.prototype.remove = function () {\n    if (this.domNode.parentNode != null) {\n      this.domNode.parentNode.removeChild(this.domNode);\n    }\n\n    this.detach();\n  };\n\n  ShadowBlot.prototype.replaceWith = function (name, value) {\n    var replacement = typeof name === 'string' ? this.scroll.create(name, value) : name;\n\n    if (this.parent != null) {\n      this.parent.insertBefore(replacement, this.next || undefined);\n      this.remove();\n    }\n\n    return replacement;\n  };\n\n  ShadowBlot.prototype.split = function (index, _force) {\n    return index === 0 ? this : this.next;\n  };\n\n  ShadowBlot.prototype.update = function (_mutations, _context) {// Nothing to do by default\n  };\n\n  ShadowBlot.prototype.wrap = function (name, value) {\n    var wrapper = typeof name === 'string' ? this.scroll.create(name, value) : name;\n\n    if (this.parent != null) {\n      this.parent.insertBefore(wrapper, this.next || undefined);\n    }\n\n    if (typeof wrapper.appendChild !== 'function') {\n      throw new error(\"Cannot wrap \" + name);\n    }\n\n    wrapper.appendChild(this);\n    return wrapper;\n  };\n\n  ShadowBlot.blotName = 'abstract';\n  return ShadowBlot;\n}();\n\n/* harmony default export */ var shadow = (shadow_ShadowBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/abstract/parent.ts\nvar parent_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\n\n\n\nfunction makeAttachedBlot(node, scroll) {\n  var blot = scroll.find(node);\n\n  if (blot == null) {\n    try {\n      blot = scroll.create(node);\n    } catch (e) {\n      blot = scroll.create(src_scope.INLINE);\n      Array.from(node.childNodes).forEach(function (child) {\n        // @ts-ignore\n        blot.domNode.appendChild(child);\n      });\n\n      if (node.parentNode) {\n        node.parentNode.replaceChild(blot.domNode, node);\n      }\n\n      blot.attach();\n    }\n  }\n\n  return blot;\n}\n\nvar parent_ParentBlot =\n/** @class */\nfunction (_super) {\n  parent_extends(ParentBlot, _super);\n\n  function ParentBlot(scroll, domNode) {\n    var _this = _super.call(this, scroll, domNode) || this;\n\n    _this.uiNode = null;\n\n    _this.build();\n\n    return _this;\n  }\n\n  ParentBlot.prototype.appendChild = function (other) {\n    this.insertBefore(other);\n  };\n\n  ParentBlot.prototype.attach = function () {\n    _super.prototype.attach.call(this);\n\n    this.children.forEach(function (child) {\n      child.attach();\n    });\n  };\n\n  ParentBlot.prototype.attachUI = function (node) {\n    if (this.uiNode != null) {\n      this.uiNode.remove();\n    }\n\n    this.uiNode = node;\n\n    if (ParentBlot.uiClass) {\n      this.uiNode.classList.add(ParentBlot.uiClass);\n    }\n\n    this.uiNode.setAttribute('contenteditable', 'false');\n    this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\n  };\n\n  ParentBlot.prototype.build = function () {\n    var _this = this;\n\n    this.children = new linked_list(); // Need to be reversed for if DOM nodes already in order\n\n    Array.from(this.domNode.childNodes).filter(function (node) {\n      return node !== _this.uiNode;\n    }).reverse().forEach(function (node) {\n      try {\n        var child = makeAttachedBlot(node, _this.scroll);\n\n        _this.insertBefore(child, _this.children.head || undefined);\n      } catch (err) {\n        if (err instanceof error) {\n          return;\n        } else {\n          throw err;\n        }\n      }\n    });\n  };\n\n  ParentBlot.prototype.deleteAt = function (index, length) {\n    if (index === 0 && length === this.length()) {\n      return this.remove();\n    }\n\n    this.children.forEachAt(index, length, function (child, offset, childLength) {\n      child.deleteAt(offset, childLength);\n    });\n  };\n\n  ParentBlot.prototype.descendant = function (criteria, index) {\n    if (index === void 0) {\n      index = 0;\n    }\n\n    var _a = this.children.find(index),\n        child = _a[0],\n        offset = _a[1];\n\n    if (criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria) {\n      return [child, offset];\n    } else if (child instanceof ParentBlot) {\n      return child.descendant(criteria, offset);\n    } else {\n      return [null, -1];\n    }\n  };\n\n  ParentBlot.prototype.descendants = function (criteria, index, length) {\n    if (index === void 0) {\n      index = 0;\n    }\n\n    if (length === void 0) {\n      length = Number.MAX_VALUE;\n    }\n\n    var descendants = [];\n    var lengthLeft = length;\n    this.children.forEachAt(index, length, function (child, childIndex, childLength) {\n      if (criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria) {\n        descendants.push(child);\n      }\n\n      if (child instanceof ParentBlot) {\n        descendants = descendants.concat(child.descendants(criteria, childIndex, lengthLeft));\n      }\n\n      lengthLeft -= childLength;\n    });\n    return descendants;\n  };\n\n  ParentBlot.prototype.detach = function () {\n    this.children.forEach(function (child) {\n      child.detach();\n    });\n\n    _super.prototype.detach.call(this);\n  };\n\n  ParentBlot.prototype.enforceAllowedChildren = function () {\n    var _this = this;\n\n    var done = false;\n    this.children.forEach(function (child) {\n      if (done) {\n        return;\n      }\n\n      var allowed = _this.statics.allowedChildren.some(function (def) {\n        return child instanceof def;\n      });\n\n      if (allowed) {\n        return;\n      }\n\n      if (child.statics.scope === src_scope.BLOCK_BLOT) {\n        if (child.next != null) {\n          _this.splitAfter(child);\n        }\n\n        if (child.prev != null) {\n          _this.splitAfter(child.prev);\n        }\n\n        child.parent.unwrap();\n        done = true;\n      } else if (child instanceof ParentBlot) {\n        child.unwrap();\n      } else {\n        child.remove();\n      }\n    });\n  };\n\n  ParentBlot.prototype.formatAt = function (index, length, name, value) {\n    this.children.forEachAt(index, length, function (child, offset, childLength) {\n      child.formatAt(offset, childLength, name, value);\n    });\n  };\n\n  ParentBlot.prototype.insertAt = function (index, value, def) {\n    var _a = this.children.find(index),\n        child = _a[0],\n        offset = _a[1];\n\n    if (child) {\n      child.insertAt(offset, value, def);\n    } else {\n      var blot = def == null ? this.scroll.create('text', value) : this.scroll.create(value, def);\n      this.appendChild(blot);\n    }\n  };\n\n  ParentBlot.prototype.insertBefore = function (childBlot, refBlot) {\n    if (childBlot.parent != null) {\n      childBlot.parent.children.remove(childBlot);\n    }\n\n    var refDomNode = null;\n    this.children.insertBefore(childBlot, refBlot || null);\n    childBlot.parent = this;\n\n    if (refBlot != null) {\n      refDomNode = refBlot.domNode;\n    }\n\n    if (this.domNode.parentNode !== childBlot.domNode || this.domNode.nextSibling !== refDomNode) {\n      this.domNode.insertBefore(childBlot.domNode, refDomNode);\n    }\n\n    childBlot.attach();\n  };\n\n  ParentBlot.prototype.length = function () {\n    return this.children.reduce(function (memo, child) {\n      return memo + child.length();\n    }, 0);\n  };\n\n  ParentBlot.prototype.moveChildren = function (targetParent, refNode) {\n    this.children.forEach(function (child) {\n      targetParent.insertBefore(child, refNode);\n    });\n  };\n\n  ParentBlot.prototype.optimize = function (context) {\n    _super.prototype.optimize.call(this, context);\n\n    this.enforceAllowedChildren();\n\n    if (this.uiNode != null && this.uiNode !== this.domNode.firstChild) {\n      this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\n    }\n\n    if (this.children.length === 0) {\n      if (this.statics.defaultChild != null) {\n        var child = this.scroll.create(this.statics.defaultChild.blotName);\n        this.appendChild(child); // TODO double check if necessary\n        // child.optimize(context);\n      } else {\n        this.remove();\n      }\n    }\n  };\n\n  ParentBlot.prototype.path = function (index, inclusive) {\n    if (inclusive === void 0) {\n      inclusive = false;\n    }\n\n    var _a = this.children.find(index, inclusive),\n        child = _a[0],\n        offset = _a[1];\n\n    var position = [[this, index]];\n\n    if (child instanceof ParentBlot) {\n      return position.concat(child.path(offset, inclusive));\n    } else if (child != null) {\n      position.push([child, offset]);\n    }\n\n    return position;\n  };\n\n  ParentBlot.prototype.removeChild = function (child) {\n    this.children.remove(child);\n  };\n\n  ParentBlot.prototype.replaceWith = function (name, value) {\n    var replacement = typeof name === 'string' ? this.scroll.create(name, value) : name;\n\n    if (replacement instanceof ParentBlot) {\n      this.moveChildren(replacement);\n    }\n\n    return _super.prototype.replaceWith.call(this, replacement);\n  };\n\n  ParentBlot.prototype.split = function (index, force) {\n    if (force === void 0) {\n      force = false;\n    }\n\n    if (!force) {\n      if (index === 0) {\n        return this;\n      }\n\n      if (index === this.length()) {\n        return this.next;\n      }\n    }\n\n    var after = this.clone();\n\n    if (this.parent) {\n      this.parent.insertBefore(after, this.next || undefined);\n    }\n\n    this.children.forEachAt(index, this.length(), function (child, offset, _length) {\n      var split = child.split(offset, force);\n\n      if (split != null) {\n        after.appendChild(split);\n      }\n    });\n    return after;\n  };\n\n  ParentBlot.prototype.splitAfter = function (child) {\n    var after = this.clone();\n\n    while (child.next != null) {\n      after.appendChild(child.next);\n    }\n\n    if (this.parent) {\n      this.parent.insertBefore(after, this.next || undefined);\n    }\n\n    return after;\n  };\n\n  ParentBlot.prototype.unwrap = function () {\n    if (this.parent) {\n      this.moveChildren(this.parent, this.next || undefined);\n    }\n\n    this.remove();\n  };\n\n  ParentBlot.prototype.update = function (mutations, _context) {\n    var _this = this;\n\n    var addedNodes = [];\n    var removedNodes = [];\n    mutations.forEach(function (mutation) {\n      if (mutation.target === _this.domNode && mutation.type === 'childList') {\n        addedNodes.push.apply(addedNodes, mutation.addedNodes);\n        removedNodes.push.apply(removedNodes, mutation.removedNodes);\n      }\n    });\n    removedNodes.forEach(function (node) {\n      // Check node has actually been removed\n      // One exception is Chrome does not immediately remove IFRAMEs\n      // from DOM but MutationRecord is correct in its reported removal\n      if (node.parentNode != null && // @ts-ignore\n      node.tagName !== 'IFRAME' && document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n        return;\n      }\n\n      var blot = _this.scroll.find(node);\n\n      if (blot == null) {\n        return;\n      }\n\n      if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n        blot.detach();\n      }\n    });\n    addedNodes.filter(function (node) {\n      return node.parentNode === _this.domNode || node === _this.uiNode;\n    }).sort(function (a, b) {\n      if (a === b) {\n        return 0;\n      }\n\n      if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n        return 1;\n      }\n\n      return -1;\n    }).forEach(function (node) {\n      var refBlot = null;\n\n      if (node.nextSibling != null) {\n        refBlot = _this.scroll.find(node.nextSibling);\n      }\n\n      var blot = makeAttachedBlot(node, _this.scroll);\n\n      if (blot.next !== refBlot || blot.next == null) {\n        if (blot.parent != null) {\n          blot.parent.removeChild(_this);\n        }\n\n        _this.insertBefore(blot, refBlot || undefined);\n      }\n    });\n    this.enforceAllowedChildren();\n  };\n\n  ParentBlot.uiClass = '';\n  return ParentBlot;\n}(shadow);\n\n/* harmony default export */ var abstract_parent = (parent_ParentBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/abstract/container.ts\nvar container_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\n\nvar container_ContainerBlot =\n/** @class */\nfunction (_super) {\n  container_extends(ContainerBlot, _super);\n\n  function ContainerBlot() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  ContainerBlot.prototype.checkMerge = function () {\n    return this.next !== null && this.next.statics.blotName === this.statics.blotName;\n  };\n\n  ContainerBlot.prototype.deleteAt = function (index, length) {\n    _super.prototype.deleteAt.call(this, index, length);\n\n    this.enforceAllowedChildren();\n  };\n\n  ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n    _super.prototype.formatAt.call(this, index, length, name, value);\n\n    this.enforceAllowedChildren();\n  };\n\n  ContainerBlot.prototype.insertAt = function (index, value, def) {\n    _super.prototype.insertAt.call(this, index, value, def);\n\n    this.enforceAllowedChildren();\n  };\n\n  ContainerBlot.prototype.optimize = function (context) {\n    _super.prototype.optimize.call(this, context);\n\n    if (this.children.length > 0 && this.next != null && this.checkMerge()) {\n      this.next.moveChildren(this);\n      this.next.remove();\n    }\n  };\n\n  ContainerBlot.blotName = 'container';\n  ContainerBlot.scope = src_scope.BLOCK_BLOT;\n  return ContainerBlot;\n}(abstract_parent);\n\n/* harmony default export */ var container = (container_ContainerBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/abstract/leaf.ts\nvar leaf_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\n\nvar leaf_LeafBlot =\n/** @class */\nfunction (_super) {\n  leaf_extends(LeafBlot, _super);\n\n  function LeafBlot() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  LeafBlot.value = function (_domNode) {\n    return true;\n  };\n\n  LeafBlot.prototype.index = function (node, offset) {\n    if (this.domNode === node || this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n      return Math.min(offset, 1);\n    }\n\n    return -1;\n  };\n\n  LeafBlot.prototype.position = function (index, _inclusive) {\n    var childNodes = Array.from(this.parent.domNode.childNodes);\n    var offset = childNodes.indexOf(this.domNode);\n\n    if (index > 0) {\n      offset += 1;\n    }\n\n    return [this.parent.domNode, offset];\n  };\n\n  LeafBlot.prototype.value = function () {\n    var _a;\n\n    return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n  };\n\n  LeafBlot.scope = src_scope.INLINE_BLOT;\n  return LeafBlot;\n}(shadow);\n\n/* harmony default export */ var leaf = (leaf_LeafBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/attributor/attributor.ts\n\n\nvar attributor_Attributor =\n/** @class */\nfunction () {\n  function Attributor(attrName, keyName, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    this.attrName = attrName;\n    this.keyName = keyName;\n    var attributeBit = src_scope.TYPE & src_scope.ATTRIBUTE;\n    this.scope = options.scope != null ? // Ignore type bits, force attribute bit\n    options.scope & src_scope.LEVEL | attributeBit : src_scope.ATTRIBUTE;\n\n    if (options.whitelist != null) {\n      this.whitelist = options.whitelist;\n    }\n  }\n\n  Attributor.keys = function (node) {\n    return Array.from(node.attributes).map(function (item) {\n      return item.name;\n    });\n  };\n\n  Attributor.prototype.add = function (node, value) {\n    if (!this.canAdd(node, value)) {\n      return false;\n    }\n\n    node.setAttribute(this.keyName, value);\n    return true;\n  };\n\n  Attributor.prototype.canAdd = function (_node, value) {\n    if (this.whitelist == null) {\n      return true;\n    }\n\n    if (typeof value === 'string') {\n      return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n    } else {\n      return this.whitelist.indexOf(value) > -1;\n    }\n  };\n\n  Attributor.prototype.remove = function (node) {\n    node.removeAttribute(this.keyName);\n  };\n\n  Attributor.prototype.value = function (node) {\n    var value = node.getAttribute(this.keyName);\n\n    if (this.canAdd(node, value) && value) {\n      return value;\n    }\n\n    return '';\n  };\n\n  return Attributor;\n}();\n\n/* harmony default export */ var attributor = (attributor_Attributor);\n// CONCATENATED MODULE: ./node_modules/parchment/src/attributor/class.ts\nvar class_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\nfunction class_match(node, prefix) {\n  var className = node.getAttribute('class') || '';\n  return className.split(/\\s+/).filter(function (name) {\n    return name.indexOf(prefix + \"-\") === 0;\n  });\n}\n\nvar ClassAttributor =\n/** @class */\nfunction (_super) {\n  class_extends(ClassAttributor, _super);\n\n  function ClassAttributor() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  ClassAttributor.keys = function (node) {\n    return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n      return name.split('-').slice(0, -1).join('-');\n    });\n  };\n\n  ClassAttributor.prototype.add = function (node, value) {\n    if (!this.canAdd(node, value)) {\n      return false;\n    }\n\n    this.remove(node);\n    node.classList.add(this.keyName + \"-\" + value);\n    return true;\n  };\n\n  ClassAttributor.prototype.remove = function (node) {\n    var matches = class_match(node, this.keyName);\n    matches.forEach(function (name) {\n      node.classList.remove(name);\n    });\n\n    if (node.classList.length === 0) {\n      node.removeAttribute('class');\n    }\n  };\n\n  ClassAttributor.prototype.value = function (node) {\n    var result = class_match(node, this.keyName)[0] || '';\n    var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n\n    return this.canAdd(node, value) ? value : '';\n  };\n\n  return ClassAttributor;\n}(attributor);\n\n/* harmony default export */ var attributor_class = (ClassAttributor);\n// CONCATENATED MODULE: ./node_modules/parchment/src/attributor/style.ts\nvar style_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\nfunction camelize(name) {\n  var parts = name.split('-');\n  var rest = parts.slice(1).map(function (part) {\n    return part[0].toUpperCase() + part.slice(1);\n  }).join('');\n  return parts[0] + rest;\n}\n\nvar StyleAttributor =\n/** @class */\nfunction (_super) {\n  style_extends(StyleAttributor, _super);\n\n  function StyleAttributor() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  StyleAttributor.keys = function (node) {\n    return (node.getAttribute('style') || '').split(';').map(function (value) {\n      var arr = value.split(':');\n      return arr[0].trim();\n    });\n  };\n\n  StyleAttributor.prototype.add = function (node, value) {\n    if (!this.canAdd(node, value)) {\n      return false;\n    } // @ts-ignore\n\n\n    node.style[camelize(this.keyName)] = value;\n    return true;\n  };\n\n  StyleAttributor.prototype.remove = function (node) {\n    // @ts-ignore\n    node.style[camelize(this.keyName)] = '';\n\n    if (!node.getAttribute('style')) {\n      node.removeAttribute('style');\n    }\n  };\n\n  StyleAttributor.prototype.value = function (node) {\n    // @ts-ignore\n    var value = node.style[camelize(this.keyName)];\n    return this.canAdd(node, value) ? value : '';\n  };\n\n  return StyleAttributor;\n}(attributor);\n\n/* harmony default export */ var style = (StyleAttributor);\n// CONCATENATED MODULE: ./node_modules/parchment/src/attributor/store.ts\n\n\n\n\n\n\nvar store_AttributorStore =\n/** @class */\nfunction () {\n  function AttributorStore(domNode) {\n    this.attributes = {};\n    this.domNode = domNode;\n    this.build();\n  }\n\n  AttributorStore.prototype.attribute = function (attribute, value) {\n    // verb\n    if (value) {\n      if (attribute.add(this.domNode, value)) {\n        if (attribute.value(this.domNode) != null) {\n          this.attributes[attribute.attrName] = attribute;\n        } else {\n          delete this.attributes[attribute.attrName];\n        }\n      }\n    } else {\n      attribute.remove(this.domNode);\n      delete this.attributes[attribute.attrName];\n    }\n  };\n\n  AttributorStore.prototype.build = function () {\n    var _this = this;\n\n    this.attributes = {};\n    var blot = registry.find(this.domNode);\n\n    if (blot == null) {\n      return;\n    }\n\n    var attributes = attributor.keys(this.domNode);\n    var classes = attributor_class.keys(this.domNode);\n    var styles = style.keys(this.domNode);\n    attributes.concat(classes).concat(styles).forEach(function (name) {\n      var attr = blot.scroll.query(name, src_scope.ATTRIBUTE);\n\n      if (attr instanceof attributor) {\n        _this.attributes[attr.attrName] = attr;\n      }\n    });\n  };\n\n  AttributorStore.prototype.copy = function (target) {\n    var _this = this;\n\n    Object.keys(this.attributes).forEach(function (key) {\n      var value = _this.attributes[key].value(_this.domNode);\n\n      target.format(key, value);\n    });\n  };\n\n  AttributorStore.prototype.move = function (target) {\n    var _this = this;\n\n    this.copy(target);\n    Object.keys(this.attributes).forEach(function (key) {\n      _this.attributes[key].remove(_this.domNode);\n    });\n    this.attributes = {};\n  };\n\n  AttributorStore.prototype.values = function () {\n    var _this = this;\n\n    return Object.keys(this.attributes).reduce(function (attributes, name) {\n      attributes[name] = _this.attributes[name].value(_this.domNode);\n      return attributes;\n    }, {});\n  };\n\n  return AttributorStore;\n}();\n\n/* harmony default export */ var store = (store_AttributorStore);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/inline.ts\nvar inline_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\n\n\n // Shallow object comparison\n\nfunction isEqual(obj1, obj2) {\n  if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n    return false;\n  } // @ts-ignore\n\n\n  for (var prop in obj1) {\n    // @ts-ignore\n    if (obj1[prop] !== obj2[prop]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nvar inline_InlineBlot =\n/** @class */\nfunction (_super) {\n  inline_extends(InlineBlot, _super);\n\n  function InlineBlot(scroll, domNode) {\n    var _this = _super.call(this, scroll, domNode) || this;\n\n    _this.attributes = new store(_this.domNode);\n    return _this;\n  }\n\n  InlineBlot.formats = function (domNode, scroll) {\n    var match = scroll.query(InlineBlot.blotName);\n\n    if (match != null && domNode.tagName === match.tagName) {\n      return undefined;\n    } else if (typeof this.tagName === 'string') {\n      return true;\n    } else if (Array.isArray(this.tagName)) {\n      return domNode.tagName.toLowerCase();\n    }\n\n    return undefined;\n  };\n\n  InlineBlot.prototype.format = function (name, value) {\n    var _this = this;\n\n    if (name === this.statics.blotName && !value) {\n      this.children.forEach(function (child) {\n        if (!(child instanceof InlineBlot)) {\n          child = child.wrap(InlineBlot.blotName, true);\n        }\n\n        _this.attributes.copy(child);\n      });\n      this.unwrap();\n    } else {\n      var format = this.scroll.query(name, src_scope.INLINE);\n\n      if (format == null) {\n        return;\n      }\n\n      if (format instanceof attributor) {\n        this.attributes.attribute(format, value);\n      } else if (value && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n        this.replaceWith(name, value);\n      }\n    }\n  };\n\n  InlineBlot.prototype.formats = function () {\n    var formats = this.attributes.values();\n    var format = this.statics.formats(this.domNode, this.scroll);\n\n    if (format != null) {\n      formats[this.statics.blotName] = format;\n    }\n\n    return formats;\n  };\n\n  InlineBlot.prototype.formatAt = function (index, length, name, value) {\n    if (this.formats()[name] != null || this.scroll.query(name, src_scope.ATTRIBUTE)) {\n      var blot = this.isolate(index, length);\n      blot.format(name, value);\n    } else {\n      _super.prototype.formatAt.call(this, index, length, name, value);\n    }\n  };\n\n  InlineBlot.prototype.optimize = function (context) {\n    _super.prototype.optimize.call(this, context);\n\n    var formats = this.formats();\n\n    if (Object.keys(formats).length === 0) {\n      return this.unwrap(); // unformatted span\n    }\n\n    var next = this.next;\n\n    if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n      next.moveChildren(this);\n      next.remove();\n    }\n  };\n\n  InlineBlot.prototype.replaceWith = function (name, value) {\n    var replacement = _super.prototype.replaceWith.call(this, name, value);\n\n    this.attributes.copy(replacement);\n    return replacement;\n  };\n\n  InlineBlot.prototype.update = function (mutations, context) {\n    var _this = this;\n\n    _super.prototype.update.call(this, mutations, context);\n\n    var attributeChanged = mutations.some(function (mutation) {\n      return mutation.target === _this.domNode && mutation.type === 'attributes';\n    });\n\n    if (attributeChanged) {\n      this.attributes.build();\n    }\n  };\n\n  InlineBlot.prototype.wrap = function (name, value) {\n    var wrapper = _super.prototype.wrap.call(this, name, value);\n\n    if (wrapper instanceof InlineBlot) {\n      this.attributes.move(wrapper);\n    }\n\n    return wrapper;\n  };\n\n  InlineBlot.allowedChildren = [InlineBlot, leaf];\n  InlineBlot.blotName = 'inline';\n  InlineBlot.scope = src_scope.INLINE_BLOT;\n  InlineBlot.tagName = 'SPAN';\n  return InlineBlot;\n}(abstract_parent);\n\n/* harmony default export */ var inline = (inline_InlineBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/block.ts\nvar block_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\n\n\n\n\n\nvar block_BlockBlot =\n/** @class */\nfunction (_super) {\n  block_extends(BlockBlot, _super);\n\n  function BlockBlot(scroll, domNode) {\n    var _this = _super.call(this, scroll, domNode) || this;\n\n    _this.attributes = new store(_this.domNode);\n    return _this;\n  }\n\n  BlockBlot.formats = function (domNode, scroll) {\n    var match = scroll.query(BlockBlot.blotName);\n\n    if (match != null && domNode.tagName === match.tagName) {\n      return undefined;\n    } else if (typeof this.tagName === 'string') {\n      return true;\n    } else if (Array.isArray(this.tagName)) {\n      return domNode.tagName.toLowerCase();\n    }\n  };\n\n  BlockBlot.prototype.format = function (name, value) {\n    var format = this.scroll.query(name, src_scope.BLOCK);\n\n    if (format == null) {\n      return;\n    } else if (format instanceof attributor) {\n      this.attributes.attribute(format, value);\n    } else if (name === this.statics.blotName && !value) {\n      this.replaceWith(BlockBlot.blotName);\n    } else if (value && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n      this.replaceWith(name, value);\n    }\n  };\n\n  BlockBlot.prototype.formats = function () {\n    var formats = this.attributes.values();\n    var format = this.statics.formats(this.domNode, this.scroll);\n\n    if (format != null) {\n      formats[this.statics.blotName] = format;\n    }\n\n    return formats;\n  };\n\n  BlockBlot.prototype.formatAt = function (index, length, name, value) {\n    if (this.scroll.query(name, src_scope.BLOCK) != null) {\n      this.format(name, value);\n    } else {\n      _super.prototype.formatAt.call(this, index, length, name, value);\n    }\n  };\n\n  BlockBlot.prototype.insertAt = function (index, value, def) {\n    if (def == null || this.scroll.query(value, src_scope.INLINE) != null) {\n      // Insert text or inline\n      _super.prototype.insertAt.call(this, index, value, def);\n    } else {\n      var after = this.split(index);\n\n      if (after != null) {\n        var blot = this.scroll.create(value, def);\n        after.parent.insertBefore(blot, after);\n      } else {\n        throw new Error('Attempt to insertAt after block boundaries');\n      }\n    }\n  };\n\n  BlockBlot.prototype.replaceWith = function (name, value) {\n    var replacement = _super.prototype.replaceWith.call(this, name, value);\n\n    this.attributes.copy(replacement);\n    return replacement;\n  };\n\n  BlockBlot.prototype.update = function (mutations, context) {\n    var _this = this;\n\n    _super.prototype.update.call(this, mutations, context);\n\n    var attributeChanged = mutations.some(function (mutation) {\n      return mutation.target === _this.domNode && mutation.type === 'attributes';\n    });\n\n    if (attributeChanged) {\n      this.attributes.build();\n    }\n  };\n\n  BlockBlot.blotName = 'block';\n  BlockBlot.scope = src_scope.BLOCK_BLOT;\n  BlockBlot.tagName = 'P';\n  BlockBlot.allowedChildren = [inline, BlockBlot, leaf];\n  return BlockBlot;\n}(abstract_parent);\n\n/* harmony default export */ var block = (block_BlockBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/embed.ts\nvar embed_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\nvar EmbedBlot =\n/** @class */\nfunction (_super) {\n  embed_extends(EmbedBlot, _super);\n\n  function EmbedBlot() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  EmbedBlot.formats = function (_domNode, _scroll) {\n    return undefined;\n  };\n\n  EmbedBlot.prototype.format = function (name, value) {\n    // super.formatAt wraps, which is what we want in general,\n    // but this allows subclasses to overwrite for formats\n    // that just apply to particular embeds\n    _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n  };\n\n  EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n    if (index === 0 && length === this.length()) {\n      this.format(name, value);\n    } else {\n      _super.prototype.formatAt.call(this, index, length, name, value);\n    }\n  };\n\n  EmbedBlot.prototype.formats = function () {\n    return this.statics.formats(this.domNode, this.scroll);\n  };\n\n  return EmbedBlot;\n}(leaf);\n\n/* harmony default export */ var blot_embed = (EmbedBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/scroll.ts\nvar scroll_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\n\n\n\nvar OBSERVER_CONFIG = {\n  attributes: true,\n  characterData: true,\n  characterDataOldValue: true,\n  childList: true,\n  subtree: true\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\n\nvar scroll_ScrollBlot =\n/** @class */\nfunction (_super) {\n  scroll_extends(ScrollBlot, _super);\n\n  function ScrollBlot(registry, node) {\n    var _this = // @ts-ignore\n    _super.call(this, null, node) || this;\n\n    _this.registry = registry;\n    _this.scroll = _this;\n\n    _this.build();\n\n    _this.observer = new MutationObserver(function (mutations) {\n      _this.update(mutations);\n    });\n\n    _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n\n    _this.attach();\n\n    return _this;\n  }\n\n  ScrollBlot.prototype.create = function (input, value) {\n    return this.registry.create(this, input, value);\n  };\n\n  ScrollBlot.prototype.find = function (node, bubble) {\n    if (bubble === void 0) {\n      bubble = false;\n    }\n\n    return this.registry.find(node, bubble);\n  };\n\n  ScrollBlot.prototype.query = function (query, scope) {\n    if (scope === void 0) {\n      scope = src_scope.ANY;\n    }\n\n    return this.registry.query(query, scope);\n  };\n\n  ScrollBlot.prototype.register = function () {\n    var _a;\n\n    var definitions = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      definitions[_i] = arguments[_i];\n    }\n\n    return (_a = this.registry).register.apply(_a, definitions);\n  };\n\n  ScrollBlot.prototype.build = function () {\n    if (this.scroll == null) {\n      return;\n    }\n\n    _super.prototype.build.call(this);\n  };\n\n  ScrollBlot.prototype.detach = function () {\n    _super.prototype.detach.call(this);\n\n    this.observer.disconnect();\n  };\n\n  ScrollBlot.prototype.deleteAt = function (index, length) {\n    this.update();\n\n    if (index === 0 && length === this.length()) {\n      this.children.forEach(function (child) {\n        child.remove();\n      });\n    } else {\n      _super.prototype.deleteAt.call(this, index, length);\n    }\n  };\n\n  ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n    this.update();\n\n    _super.prototype.formatAt.call(this, index, length, name, value);\n  };\n\n  ScrollBlot.prototype.insertAt = function (index, value, def) {\n    this.update();\n\n    _super.prototype.insertAt.call(this, index, value, def);\n  };\n\n  ScrollBlot.prototype.optimize = function (mutations, context) {\n    var _this = this;\n\n    if (mutations === void 0) {\n      mutations = [];\n    }\n\n    if (context === void 0) {\n      context = {};\n    }\n\n    _super.prototype.optimize.call(this, context);\n\n    var mutationsMap = context.mutationsMap || new WeakMap(); // We must modify mutations directly, cannot make copy and then modify\n\n    var records = Array.from(this.observer.takeRecords()); // Array.push currently seems to be implemented by a non-tail recursive function\n    // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n\n    while (records.length > 0) {\n      mutations.push(records.pop());\n    }\n\n    var mark = function mark(blot, markParent) {\n      if (markParent === void 0) {\n        markParent = true;\n      }\n\n      if (blot == null || blot === _this) {\n        return;\n      }\n\n      if (blot.domNode.parentNode == null) {\n        return;\n      }\n\n      if (!mutationsMap.has(blot.domNode)) {\n        mutationsMap.set(blot.domNode, []);\n      }\n\n      if (markParent) {\n        mark(blot.parent);\n      }\n    };\n\n    var optimize = function optimize(blot) {\n      // Post-order traversal\n      if (!mutationsMap.has(blot.domNode)) {\n        return;\n      }\n\n      if (blot instanceof abstract_parent) {\n        blot.children.forEach(optimize);\n      }\n\n      mutationsMap.delete(blot.domNode);\n      blot.optimize(context);\n    };\n\n    var remaining = mutations;\n\n    for (var i = 0; remaining.length > 0; i += 1) {\n      if (i >= MAX_OPTIMIZE_ITERATIONS) {\n        throw new Error('[Parchment] Maximum optimize iterations reached');\n      }\n\n      remaining.forEach(function (mutation) {\n        var blot = _this.find(mutation.target, true);\n\n        if (blot == null) {\n          return;\n        }\n\n        if (blot.domNode === mutation.target) {\n          if (mutation.type === 'childList') {\n            mark(_this.find(mutation.previousSibling, false));\n            Array.from(mutation.addedNodes).forEach(function (node) {\n              var child = _this.find(node, false);\n\n              mark(child, false);\n\n              if (child instanceof abstract_parent) {\n                child.children.forEach(function (grandChild) {\n                  mark(grandChild, false);\n                });\n              }\n            });\n          } else if (mutation.type === 'attributes') {\n            mark(blot.prev);\n          }\n        }\n\n        mark(blot);\n      });\n      this.children.forEach(optimize);\n      remaining = Array.from(this.observer.takeRecords());\n      records = remaining.slice();\n\n      while (records.length > 0) {\n        mutations.push(records.pop());\n      }\n    }\n  };\n\n  ScrollBlot.prototype.update = function (mutations, context) {\n    var _this = this;\n\n    if (context === void 0) {\n      context = {};\n    }\n\n    mutations = mutations || this.observer.takeRecords();\n    var mutationsMap = new WeakMap();\n    mutations.map(function (mutation) {\n      var blot = registry.find(mutation.target, true);\n\n      if (blot == null) {\n        return null;\n      }\n\n      if (mutationsMap.has(blot.domNode)) {\n        mutationsMap.get(blot.domNode).push(mutation);\n        return null;\n      } else {\n        mutationsMap.set(blot.domNode, [mutation]);\n        return blot;\n      }\n    }).forEach(function (blot) {\n      if (blot != null && blot !== _this && mutationsMap.has(blot.domNode)) {\n        blot.update(mutationsMap.get(blot.domNode) || [], context);\n      }\n    });\n    context.mutationsMap = mutationsMap;\n\n    if (mutationsMap.has(this.domNode)) {\n      _super.prototype.update.call(this, mutationsMap.get(this.domNode), context);\n    }\n\n    this.optimize(mutations, context);\n  };\n\n  ScrollBlot.blotName = 'scroll';\n  ScrollBlot.defaultChild = block;\n  ScrollBlot.allowedChildren = [block, container];\n  ScrollBlot.scope = src_scope.BLOCK_BLOT;\n  ScrollBlot.tagName = 'DIV';\n  return ScrollBlot;\n}(abstract_parent);\n\n/* harmony default export */ var blot_scroll = (scroll_ScrollBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/blot/text.ts\nvar text_extends = undefined && undefined.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\n\n\n\nvar text_TextBlot =\n/** @class */\nfunction (_super) {\n  text_extends(TextBlot, _super);\n\n  function TextBlot(scroll, node) {\n    var _this = _super.call(this, scroll, node) || this;\n\n    _this.text = _this.statics.value(_this.domNode);\n    return _this;\n  }\n\n  TextBlot.create = function (value) {\n    return document.createTextNode(value);\n  };\n\n  TextBlot.value = function (domNode) {\n    return domNode.data;\n  };\n\n  TextBlot.prototype.deleteAt = function (index, length) {\n    this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n  };\n\n  TextBlot.prototype.index = function (node, offset) {\n    if (this.domNode === node) {\n      return offset;\n    }\n\n    return -1;\n  };\n\n  TextBlot.prototype.insertAt = function (index, value, def) {\n    if (def == null) {\n      this.text = this.text.slice(0, index) + value + this.text.slice(index);\n      this.domNode.data = this.text;\n    } else {\n      _super.prototype.insertAt.call(this, index, value, def);\n    }\n  };\n\n  TextBlot.prototype.length = function () {\n    return this.text.length;\n  };\n\n  TextBlot.prototype.optimize = function (context) {\n    _super.prototype.optimize.call(this, context);\n\n    this.text = this.statics.value(this.domNode);\n\n    if (this.text.length === 0) {\n      this.remove();\n    } else if (this.next instanceof TextBlot && this.next.prev === this) {\n      this.insertAt(this.length(), this.next.value());\n      this.next.remove();\n    }\n  };\n\n  TextBlot.prototype.position = function (index, _inclusive) {\n    if (_inclusive === void 0) {\n      _inclusive = false;\n    }\n\n    return [this.domNode, index];\n  };\n\n  TextBlot.prototype.split = function (index, force) {\n    if (force === void 0) {\n      force = false;\n    }\n\n    if (!force) {\n      if (index === 0) {\n        return this;\n      }\n\n      if (index === this.length()) {\n        return this.next;\n      }\n    }\n\n    var after = this.scroll.create(this.domNode.splitText(index));\n    this.parent.insertBefore(after, this.next || undefined);\n    this.text = this.statics.value(this.domNode);\n    return after;\n  };\n\n  TextBlot.prototype.update = function (mutations, _context) {\n    var _this = this;\n\n    if (mutations.some(function (mutation) {\n      return mutation.type === 'characterData' && mutation.target === _this.domNode;\n    })) {\n      this.text = this.statics.value(this.domNode);\n    }\n  };\n\n  TextBlot.prototype.value = function () {\n    return this.text;\n  };\n\n  TextBlot.blotName = 'text';\n  TextBlot.scope = src_scope.INLINE_BLOT;\n  return TextBlot;\n}(leaf);\n\n/* harmony default export */ var blot_text = (text_TextBlot);\n// CONCATENATED MODULE: ./node_modules/parchment/src/parchment.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64);\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_hasWindow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\nvar debug = Object(_logger__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"])('quill:events');\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nif (Object(_utils_hasWindow__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"])()) {\n  EVENTS.forEach(function (eventName) {\n    document.addEventListener(eventName, function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      Array.from(document.querySelectorAll('.ql-container')).forEach(function (node) {\n        var quill = _instances__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"].get(node);\n\n        if (quill && quill.emitter) {\n          var _quill$emitter;\n\n          (_quill$emitter = quill.emitter).handleDOM.apply(_quill$emitter, args);\n        }\n      });\n    });\n  });\n}\n\nvar Emitter = /*#__PURE__*/function (_EventEmitter) {\n  _inherits(Emitter, _EventEmitter);\n\n  var _super = _createSuper(Emitter);\n\n  function Emitter() {\n    var _this;\n\n    _classCallCheck(this, Emitter);\n\n    _this = _super.call(this);\n    _this.listeners = {};\n\n    _this.on('error', debug.error);\n\n    return _this;\n  }\n\n  _createClass(Emitter, [{\n    key: \"emit\",\n    value: function emit() {\n      var _debug$log, _get2;\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      (_debug$log = debug.log).call.apply(_debug$log, [debug].concat(args));\n\n      (_get2 = _get(_getPrototypeOf(Emitter.prototype), \"emit\", this)).call.apply(_get2, [this].concat(args));\n    }\n  }, {\n    key: \"handleDOM\",\n    value: function handleDOM(event) {\n      for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        args[_key3 - 1] = arguments[_key3];\n      }\n\n      (this.listeners[event.type] || []).forEach(function (_ref) {\n        var node = _ref.node,\n            handler = _ref.handler;\n\n        if (event.target === node || node.contains(event.target)) {\n          handler.apply(void 0, [event].concat(args));\n        }\n      });\n    }\n  }, {\n    key: \"listenDOM\",\n    value: function listenDOM(eventName, node, handler) {\n      if (!this.listeners[eventName]) {\n        this.listeners[eventName] = [];\n      }\n\n      this.listeners[eventName].push({\n        node: node,\n        handler: handler\n      });\n    }\n  }]);\n\n  return Emitter;\n}(eventemitter3__WEBPACK_IMPORTED_MODULE_0___default.a);\n\nEmitter.events = {\n  EDITOR_CHANGE: 'editor-change',\n  SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n  SCROLL_BLOT_MOUNT: 'scroll-blot-mount',\n  SCROLL_BLOT_UNMOUNT: 'scroll-blot-unmount',\n  SCROLL_OPTIMIZE: 'scroll-optimize',\n  SCROLL_UPDATE: 'scroll-update',\n  SELECTION_CHANGE: 'selection-change',\n  TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n  API: 'api',\n  SILENT: 'silent',\n  USER: 'user'\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (Emitter);\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);\n/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isequal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);\n/* harmony import */ var lodash_isequal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isequal__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26);\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_merge__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2);\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6);\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(17);\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(5);\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(8);\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(7);\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = /*#__PURE__*/function () {\n  function Editor(scroll) {\n    _classCallCheck(this, Editor);\n\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  _createClass(Editor, [{\n    key: \"applyDelta\",\n    value: function applyDelta(delta) {\n      var _this = this;\n\n      var consumeNextNewline = false;\n      this.scroll.update();\n      var scrollLength = this.scroll.length();\n      this.scroll.batchStart();\n      var normalizedDelta = normalizeDelta(delta);\n      normalizedDelta.reduce(function (index, op) {\n        var length = op.retain || op.delete || op.insert.length || 1;\n        var attributes = op.attributes || {};\n\n        if (op.insert != null) {\n          if (typeof op.insert === 'string') {\n            var text = op.insert;\n\n            if (text.endsWith('\\n') && consumeNextNewline) {\n              consumeNextNewline = false;\n              text = text.slice(0, -1);\n            }\n\n            if ((index >= scrollLength || _this.scroll.descendant(_blots_block__WEBPACK_IMPORTED_MODULE_7__[/* BlockEmbed */ \"a\"], index)[0]) && !text.endsWith('\\n')) {\n              consumeNextNewline = true;\n            }\n\n            _this.scroll.insertAt(index, text);\n\n            var _this$scroll$line = _this.scroll.line(index),\n                _this$scroll$line2 = _slicedToArray(_this$scroll$line, 2),\n                line = _this$scroll$line2[0],\n                offset = _this$scroll$line2[1];\n\n            var formats = lodash_merge__WEBPACK_IMPORTED_MODULE_2___default()({}, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[/* bubbleFormats */ \"c\"])(line));\n\n            if (line instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__[/* default */ \"d\"]) {\n              var _line$descendant = line.descendant(parchment__WEBPACK_IMPORTED_MODULE_4__[\"LeafBlot\"], offset),\n                  _line$descendant2 = _slicedToArray(_line$descendant, 1),\n                  leaf = _line$descendant2[0];\n\n              formats = lodash_merge__WEBPACK_IMPORTED_MODULE_2___default()(formats, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[/* bubbleFormats */ \"c\"])(leaf));\n            }\n\n            attributes = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\"AttributeMap\"].diff(formats, attributes) || {};\n          } else if (_typeof(op.insert) === 'object') {\n            var key = Object.keys(op.insert)[0]; // There should only be one key\n\n            if (key == null) return index;\n\n            _this.scroll.insertAt(index, key, op.insert[key]);\n          }\n\n          scrollLength += length;\n        }\n\n        Object.keys(attributes).forEach(function (name) {\n          _this.scroll.formatAt(index, length, name, attributes[name]);\n        });\n        return index + length;\n      }, 0);\n      normalizedDelta.reduce(function (index, op) {\n        if (typeof op.delete === 'number') {\n          _this.scroll.deleteAt(index, op.delete);\n\n          return index;\n        }\n\n        return index + (op.retain || op.insert.length || 1);\n      }, 0);\n      this.scroll.batchEnd();\n      this.scroll.optimize();\n      return this.update(normalizedDelta);\n    }\n  }, {\n    key: \"deleteText\",\n    value: function deleteText(index, length) {\n      this.scroll.deleteAt(index, length);\n      return this.update(new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).delete(length));\n    }\n  }, {\n    key: \"formatLine\",\n    value: function formatLine(index, length) {\n      var _this2 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      this.scroll.update();\n      Object.keys(formats).forEach(function (format) {\n        _this2.scroll.lines(index, Math.max(length, 1)).forEach(function (line) {\n          line.format(format, formats[format]);\n        });\n      });\n      this.scroll.optimize();\n      var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0___default()(formats));\n      return this.update(delta);\n    }\n  }, {\n    key: \"formatText\",\n    value: function formatText(index, length) {\n      var _this3 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      Object.keys(formats).forEach(function (format) {\n        _this3.scroll.formatAt(index, length, format, formats[format]);\n      });\n      var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0___default()(formats));\n      return this.update(delta);\n    }\n  }, {\n    key: \"getContents\",\n    value: function getContents(index, length) {\n      return this.delta.slice(index, index + length);\n    }\n  }, {\n    key: \"getDelta\",\n    value: function getDelta() {\n      return this.scroll.lines().reduce(function (delta, line) {\n        return delta.concat(line.delta());\n      }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\n    }\n  }, {\n    key: \"getFormat\",\n    value: function getFormat(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var lines = [];\n      var leaves = [];\n\n      if (length === 0) {\n        this.scroll.path(index).forEach(function (path) {\n          var _path = _slicedToArray(path, 1),\n              blot = _path[0];\n\n          if (blot instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__[/* default */ \"d\"]) {\n            lines.push(blot);\n          } else if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\"LeafBlot\"]) {\n            leaves.push(blot);\n          }\n        });\n      } else {\n        lines = this.scroll.lines(index, length);\n        leaves = this.scroll.descendants(parchment__WEBPACK_IMPORTED_MODULE_4__[\"LeafBlot\"], index, length);\n      }\n\n      var _map = [lines, leaves].map(function (blots) {\n        if (blots.length === 0) return {};\n        var formats = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[/* bubbleFormats */ \"c\"])(blots.shift());\n\n        while (Object.keys(formats).length > 0) {\n          var blot = blots.shift();\n          if (blot == null) return formats;\n          formats = combineFormats(Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[/* bubbleFormats */ \"c\"])(blot), formats);\n        }\n\n        return formats;\n      });\n\n      var _map2 = _slicedToArray(_map, 2);\n\n      lines = _map2[0];\n      leaves = _map2[1];\n      return _objectSpread(_objectSpread({}, lines), leaves);\n    }\n  }, {\n    key: \"getHTML\",\n    value: function getHTML(index, length) {\n      var _this$scroll$line3 = this.scroll.line(index),\n          _this$scroll$line4 = _slicedToArray(_this$scroll$line3, 2),\n          line = _this$scroll$line4[0],\n          lineOffset = _this$scroll$line4[1];\n\n      if (line.length() >= lineOffset + length) {\n        return convertHTML(line, lineOffset, length, true);\n      }\n\n      return convertHTML(this.scroll, index, length, true);\n    }\n  }, {\n    key: \"getText\",\n    value: function getText(index, length) {\n      return this.getContents(index, length).filter(function (op) {\n        return typeof op.insert === 'string';\n      }).map(function (op) {\n        return op.insert;\n      }).join('');\n    }\n  }, {\n    key: \"insertEmbed\",\n    value: function insertEmbed(index, embed, value) {\n      this.scroll.insertAt(index, embed, value);\n      return this.update(new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert(_defineProperty({}, embed, value)));\n    }\n  }, {\n    key: \"insertText\",\n    value: function insertText(index, text) {\n      var _this4 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      this.scroll.insertAt(index, text);\n      Object.keys(formats).forEach(function (format) {\n        _this4.scroll.formatAt(index, text.length, format, formats[format]);\n      });\n      return this.update(new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert(text, lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0___default()(formats)));\n    }\n  }, {\n    key: \"isBlank\",\n    value: function isBlank() {\n      if (this.scroll.children.length === 0) return true;\n      if (this.scroll.children.length > 1) return false;\n      var block = this.scroll.children.head;\n      if (block.statics.blotName !== _blots_block__WEBPACK_IMPORTED_MODULE_7__[/* default */ \"d\"].blotName) return false;\n      if (block.children.length > 1) return false;\n      return block.children.head instanceof _blots_break__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"];\n    }\n  }, {\n    key: \"removeFormat\",\n    value: function removeFormat(index, length) {\n      var text = this.getText(index, length);\n\n      var _this$scroll$line5 = this.scroll.line(index + length),\n          _this$scroll$line6 = _slicedToArray(_this$scroll$line5, 2),\n          line = _this$scroll$line6[0],\n          offset = _this$scroll$line6[1];\n\n      var suffixLength = 0;\n      var suffix = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a();\n\n      if (line != null) {\n        suffixLength = line.length() - offset;\n        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n      }\n\n      var contents = this.getContents(index, length + suffixLength);\n      var diff = contents.diff(new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(text).concat(suffix));\n      var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(diff);\n      return this.applyDelta(delta);\n    }\n  }, {\n    key: \"update\",\n    value: function update(change) {\n      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var selectionInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n      var oldDelta = this.delta;\n\n      if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && this.scroll.find(mutations[0].target)) {\n        // Optimization for character changes\n        var textBlot = this.scroll.find(mutations[0].target);\n\n        var _formats = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[/* bubbleFormats */ \"c\"])(textBlot);\n\n        var index = textBlot.offset(this.scroll);\n        var oldValue = mutations[0].oldValue.replace(_blots_cursor__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"].CONTENTS, '');\n        var oldText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(oldValue);\n        var newText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(textBlot.value());\n        var relativeSelectionInfo = selectionInfo && {\n          oldRange: shiftRange(selectionInfo.oldRange, -index),\n          newRange: shiftRange(selectionInfo.newRange, -index)\n        };\n        var diffDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(oldText.diff(newText, relativeSelectionInfo));\n        change = diffDelta.reduce(function (delta, op) {\n          if (op.insert) {\n            return delta.insert(op.insert, _formats);\n          }\n\n          return delta.push(op);\n        }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\n        this.delta = oldDelta.compose(change);\n      } else {\n        this.delta = this.getDelta();\n\n        if (!change || !lodash_isequal__WEBPACK_IMPORTED_MODULE_1___default()(oldDelta.compose(change), this.delta)) {\n          change = oldDelta.diff(this.delta, selectionInfo);\n        }\n      }\n\n      return change;\n    }\n  }]);\n\n  return Editor;\n}();\n\nfunction convertListHTML(items, lastIndent, types) {\n  if (items.length === 0) {\n    var _getListType = getListType(types.pop()),\n        _getListType2 = _slicedToArray(_getListType, 1),\n        _endTag = _getListType2[0];\n\n    if (lastIndent <= 0) {\n      return \"</li></\".concat(_endTag, \">\");\n    }\n\n    return \"</li></\".concat(_endTag, \">\").concat(convertListHTML([], lastIndent - 1, types));\n  }\n\n  var _items = _toArray(items),\n      _items$ = _items[0],\n      child = _items$.child,\n      offset = _items$.offset,\n      length = _items$.length,\n      indent = _items$.indent,\n      type = _items$.type,\n      rest = _items.slice(1);\n\n  var _getListType3 = getListType(type, child),\n      _getListType4 = _slicedToArray(_getListType3, 2),\n      tag = _getListType4[0],\n      attribute = _getListType4[1];\n\n  if (indent > lastIndent) {\n    types.push(type);\n\n    if (indent === lastIndent + 1) {\n      return \"<\".concat(tag, \"><li\").concat(attribute, \">\").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\n    }\n\n    return \"<\".concat(tag, \"><li>\").concat(convertListHTML(items, lastIndent + 1, types));\n  }\n\n  var previousType = types[types.length - 1];\n\n  if (indent === lastIndent && type === previousType) {\n    return \"</li><li\".concat(attribute, \">\").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\n  }\n\n  var _getListType5 = getListType(types.pop()),\n      _getListType6 = _slicedToArray(_getListType5, 1),\n      endTag = _getListType6[0];\n\n  return \"</li></\".concat(endTag, \">\").concat(convertListHTML(items, lastIndent - 1, types));\n}\n\nfunction convertHTML(blot, index, length) {\n  var isRoot = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n  if (typeof blot.html === 'function') {\n    return blot.html(index, length);\n  }\n\n  if (blot instanceof _blots_text__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"a\"]) {\n    return Object(_blots_text__WEBPACK_IMPORTED_MODULE_9__[/* escapeText */ \"b\"])(blot.value().slice(index, index + length));\n  }\n\n  if (blot.children) {\n    // TODO fix API\n    if (blot.statics.blotName === 'list-container') {\n      var items = [];\n      blot.children.forEachAt(index, length, function (child, offset, childLength) {\n        var formats = child.formats();\n        items.push({\n          child: child,\n          offset: offset,\n          length: childLength,\n          indent: formats.indent || 0,\n          type: formats.list\n        });\n      });\n      return convertListHTML(items, -1, []);\n    }\n\n    var parts = [];\n    blot.children.forEachAt(index, length, function (child, offset, childLength) {\n      parts.push(convertHTML(child, offset, childLength));\n    });\n    handleBreakLine(blot.children, parts);\n\n    if (isRoot || blot.statics.blotName === 'list') {\n      return parts.join('');\n    }\n\n    var _blot$domNode = blot.domNode,\n        outerHTML = _blot$domNode.outerHTML,\n        innerHTML = _blot$domNode.innerHTML;\n\n    var _outerHTML$split = outerHTML.split(\">\".concat(innerHTML, \"<\")),\n        _outerHTML$split2 = _slicedToArray(_outerHTML$split, 2),\n        start = _outerHTML$split2[0],\n        end = _outerHTML$split2[1]; // TODO cleanup\n\n\n    if (start === '<table') {\n      return \"<table style=\\\"border: 1px solid #000;\\\">\".concat(parts.join(''), \"<\").concat(end);\n    }\n\n    return \"\".concat(start, \">\").concat(parts.join(''), \"<\").concat(end);\n  }\n\n  return blot.domNode.outerHTML;\n}\n\nfunction handleBreakLine(linkedList, parts) {\n  if (linkedList.length === 1 && linkedList.head instanceof _blots_break__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"]) {\n    parts.push('<br>');\n  }\n}\n\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce(function (merged, name) {\n    if (formats[name] == null) return merged;\n\n    if (combined[name] === formats[name]) {\n      merged[name] = combined[name];\n    } else if (Array.isArray(combined[name])) {\n      if (combined[name].indexOf(formats[name]) < 0) {\n        merged[name] = combined[name].concat([formats[name]]);\n      }\n    } else {\n      merged[name] = [combined[name], formats[name]];\n    }\n\n    return merged;\n  }, {});\n}\n\nfunction getListType(type, child) {\n  var tag = type === 'ordered' ? 'ol' : 'ul';\n  var attributes = child ? \"\".concat(getBlotNodeAttributes(child)) : '';\n\n  switch (type) {\n    case 'checked':\n      return [tag, \"\".concat(attributes, \" data-list=\\\"checked\\\"\")];\n\n    case 'unchecked':\n      return [tag, \"\".concat(attributes, \" data-list=\\\"unchecked\\\"\")];\n\n    default:\n      return [tag, attributes];\n  }\n}\n\nfunction getBlotNodeAttributes(_ref) {\n  var domNode = _ref.domNode;\n\n  if (!domNode.hasAttributes()) {\n    return '';\n  }\n\n  var attributes = domNode.attributes;\n  var attributesString = ' ';\n\n  for (var i = 0; i < attributes.length; i += 1) {\n    var name = attributes[i].name;\n    var value = attributes[i].value;\n\n    if (name === 'class') {\n      value = removeIndentClass(value);\n    }\n\n    if (value.length && name.indexOf('data-') === -1) {\n      attributesString += \"\".concat(name, \"=\\\"\").concat(value, \"\\\"\");\n    }\n  }\n\n  return attributesString.length > 1 ? attributesString : '';\n}\n\nfunction removeIndentClass(classString) {\n  return classString.replace(/ql-indent-\\d/g, '').trim();\n}\n\nfunction normalizeDelta(delta) {\n  return delta.reduce(function (normalizedDelta, op) {\n    if (typeof op.insert === 'string') {\n      var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return normalizedDelta.insert(text, op.attributes);\n    }\n\n    return normalizedDelta.push(op);\n  }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\n}\n\nfunction shiftRange(_ref2, amount) {\n  var index = _ref2.index,\n      length = _ref2.length;\n  return new _selection__WEBPACK_IMPORTED_MODULE_5__[/* Range */ \"a\"](index + amount, length);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Editor);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return blockDelta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return bubbleFormats; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BlockEmbed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return Block; });\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\nvar NEWLINE_LENGTH = 1;\n\nvar Block = /*#__PURE__*/function (_BlockBlot) {\n  _inherits(Block, _BlockBlot);\n\n  var _super = _createSuper(Block);\n\n  function Block(scroll, domNode) {\n    var _this;\n\n    _classCallCheck(this, Block);\n\n    _this = _super.call(this, scroll, domNode);\n    _this.cache = {};\n    return _this;\n  }\n\n  _createClass(Block, [{\n    key: \"delta\",\n    value: function delta() {\n      if (this.cache.delta == null) {\n        this.cache.delta = blockDelta(this);\n      }\n\n      return this.cache.delta;\n    }\n  }, {\n    key: \"deleteAt\",\n    value: function deleteAt(index, length) {\n      _get(_getPrototypeOf(Block.prototype), \"deleteAt\", this).call(this, index, length);\n\n      this.cache = {};\n    }\n  }, {\n    key: \"formatAt\",\n    value: function formatAt(index, length, name, value) {\n      if (length <= 0) return;\n\n      if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_1__[\"Scope\"].BLOCK)) {\n        if (index + length === this.length()) {\n          this.format(name, value);\n        }\n      } else {\n        _get(_getPrototypeOf(Block.prototype), \"formatAt\", this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n      }\n\n      this.cache = {};\n    }\n  }, {\n    key: \"insertAt\",\n    value: function insertAt(index, value, def) {\n      if (def != null) {\n        _get(_getPrototypeOf(Block.prototype), \"insertAt\", this).call(this, index, value, def);\n\n        this.cache = {};\n        return;\n      }\n\n      if (value.length === 0) return;\n      var lines = value.split('\\n');\n      var text = lines.shift();\n\n      if (text.length > 0) {\n        if (index < this.length() - 1 || this.children.tail == null) {\n          _get(_getPrototypeOf(Block.prototype), \"insertAt\", this).call(this, Math.min(index, this.length() - 1), text);\n        } else {\n          this.children.tail.insertAt(this.children.tail.length(), text);\n        }\n\n        this.cache = {};\n      }\n\n      var block = this;\n      lines.reduce(function (lineIndex, line) {\n        block = block.split(lineIndex, true);\n        block.insertAt(0, line);\n        return line.length;\n      }, index + text.length);\n    }\n  }, {\n    key: \"insertBefore\",\n    value: function insertBefore(blot, ref) {\n      var head = this.children.head;\n\n      _get(_getPrototypeOf(Block.prototype), \"insertBefore\", this).call(this, blot, ref);\n\n      if (head instanceof _break__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"]) {\n        head.remove();\n      }\n\n      this.cache = {};\n    }\n  }, {\n    key: \"length\",\n    value: function length() {\n      if (this.cache.length == null) {\n        this.cache.length = _get(_getPrototypeOf(Block.prototype), \"length\", this).call(this) + NEWLINE_LENGTH;\n      }\n\n      return this.cache.length;\n    }\n  }, {\n    key: \"moveChildren\",\n    value: function moveChildren(target, ref) {\n      _get(_getPrototypeOf(Block.prototype), \"moveChildren\", this).call(this, target, ref);\n\n      this.cache = {};\n    }\n  }, {\n    key: \"optimize\",\n    value: function optimize(context) {\n      _get(_getPrototypeOf(Block.prototype), \"optimize\", this).call(this, context);\n\n      this.cache = {};\n    }\n  }, {\n    key: \"path\",\n    value: function path(index) {\n      return _get(_getPrototypeOf(Block.prototype), \"path\", this).call(this, index, true);\n    }\n  }, {\n    key: \"removeChild\",\n    value: function removeChild(child) {\n      _get(_getPrototypeOf(Block.prototype), \"removeChild\", this).call(this, child);\n\n      this.cache = {};\n    }\n  }, {\n    key: \"split\",\n    value: function split(index) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n        var clone = this.clone();\n\n        if (index === 0) {\n          this.parent.insertBefore(clone, this);\n          return this;\n        }\n\n        this.parent.insertBefore(clone, this.next);\n        return clone;\n      }\n\n      var next = _get(_getPrototypeOf(Block.prototype), \"split\", this).call(this, index, force);\n\n      this.cache = {};\n      return next;\n    }\n  }]);\n\n  return Block;\n}(parchment__WEBPACK_IMPORTED_MODULE_1__[\"BlockBlot\"]);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = _break__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"];\nBlock.allowedChildren = [_break__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"], _inline__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"], parchment__WEBPACK_IMPORTED_MODULE_1__[\"EmbedBlot\"], _text__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"]];\n\nvar BlockEmbed = /*#__PURE__*/function (_EmbedBlot) {\n  _inherits(BlockEmbed, _EmbedBlot);\n\n  var _super2 = _createSuper(BlockEmbed);\n\n  function BlockEmbed() {\n    _classCallCheck(this, BlockEmbed);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(BlockEmbed, [{\n    key: \"attach\",\n    value: function attach() {\n      _get(_getPrototypeOf(BlockEmbed.prototype), \"attach\", this).call(this);\n\n      this.attributes = new parchment__WEBPACK_IMPORTED_MODULE_1__[\"AttributorStore\"](this.domNode);\n    }\n  }, {\n    key: \"delta\",\n    value: function delta() {\n      return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(this.value(), _objectSpread(_objectSpread({}, this.formats()), this.attributes.values()));\n    }\n  }, {\n    key: \"format\",\n    value: function format(name, value) {\n      var attribute = this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_1__[\"Scope\"].BLOCK_ATTRIBUTE);\n\n      if (attribute != null) {\n        this.attributes.attribute(attribute, value);\n      }\n    }\n  }, {\n    key: \"formatAt\",\n    value: function formatAt(index, length, name, value) {\n      this.format(name, value);\n    }\n  }, {\n    key: \"insertAt\",\n    value: function insertAt(index, value, def) {\n      if (typeof value === 'string' && value.endsWith('\\n')) {\n        var block = this.scroll.create(Block.blotName);\n        this.parent.insertBefore(block, index === 0 ? this : this.next);\n        block.insertAt(0, value.slice(0, -1));\n      } else {\n        _get(_getPrototypeOf(BlockEmbed.prototype), \"insertAt\", this).call(this, index, value, def);\n      }\n    }\n  }]);\n\n  return BlockEmbed;\n}(parchment__WEBPACK_IMPORTED_MODULE_1__[\"EmbedBlot\"]);\n\nBlockEmbed.scope = parchment__WEBPACK_IMPORTED_MODULE_1__[\"Scope\"].BLOCK_BLOT; // It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\nfunction blockDelta(blot) {\n  var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  return blot.descendants(parchment__WEBPACK_IMPORTED_MODULE_1__[\"LeafBlot\"]).reduce(function (delta, leaf) {\n    if (leaf.length() === 0) {\n      return delta;\n    }\n\n    return delta.insert(leaf.value(), bubbleFormats(leaf, {}, filter));\n  }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a()).insert('\\n', bubbleFormats(blot));\n}\n\nfunction bubbleFormats(blot) {\n  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var filter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  if (blot == null) return formats;\n\n  if (typeof blot.formats === 'function') {\n    formats = _objectSpread(_objectSpread({}, formats), blot.formats());\n\n    if (filter) {\n      // exclude syntax highlighting from deltas and getFormat()\n      delete formats['code-token'];\n    }\n  }\n\n  if (blot.parent == null || blot.parent.statics.blotName === 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n\n  return bubbleFormats(blot.parent, formats, filter);\n}\n\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Range; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return Selection; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);\n/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isequal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19);\n/* harmony import */ var lodash_isequal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isequal__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\n\nvar debug = Object(_logger__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"])('quill:selection');\n\nvar Range = function Range(index) {\n  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  _classCallCheck(this, Range);\n\n  this.index = index;\n  this.length = length;\n};\n\nvar Selection = /*#__PURE__*/function () {\n  function Selection(scroll, emitter) {\n    var _this = this;\n\n    _classCallCheck(this, Selection);\n\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    this.cursor = this.scroll.create('cursor', this); // savedRange is last non-null range\n\n    this.savedRange = new Range(0, 0);\n    this.lastRange = this.savedRange;\n    this.lastNative = null;\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM('selectionchange', document, function () {\n      if (!_this.mouseDown && !_this.composing) {\n        setTimeout(_this.update.bind(_this, _emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.USER), 1);\n      }\n    });\n    this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].events.SCROLL_BEFORE_UPDATE, function () {\n      if (!_this.hasFocus()) return;\n\n      var native = _this.getNativeRange();\n\n      if (native == null) return;\n      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n\n      _this.emitter.once(_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].events.SCROLL_UPDATE, function () {\n        try {\n          if (_this.root.contains(native.start.node) && _this.root.contains(native.end.node)) {\n            _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n          }\n\n          _this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT);\n        } catch (ignored) {// ignore\n        }\n      });\n    });\n    this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].events.SCROLL_OPTIMIZE, function (mutations, context) {\n      if (context.range) {\n        var _context$range = context.range,\n            _startNode = _context$range.startNode,\n            _startOffset = _context$range.startOffset,\n            endNode = _context$range.endNode,\n            endOffset = _context$range.endOffset;\n\n        _this.setNativeRange(_startNode, _startOffset, endNode, endOffset);\n\n        _this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT);\n      }\n    });\n    this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT);\n  }\n\n  _createClass(Selection, [{\n    key: \"handleComposition\",\n    value: function handleComposition() {\n      var _this2 = this;\n\n      this.root.addEventListener('compositionstart', function () {\n        _this2.composing = true;\n\n        _this2.scroll.batchStart();\n      });\n      this.root.addEventListener('compositionend', function () {\n        _this2.scroll.batchEnd();\n\n        _this2.composing = false;\n\n        if (_this2.cursor.parent) {\n          var range = _this2.cursor.restore();\n\n          if (!range) return;\n          setTimeout(function () {\n            _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n          }, 1);\n        }\n      });\n    }\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging() {\n      var _this3 = this;\n\n      this.emitter.listenDOM('mousedown', document.body, function () {\n        _this3.mouseDown = true;\n      });\n      this.emitter.listenDOM('mouseup', document.body, function () {\n        _this3.mouseDown = false;\n\n        _this3.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.USER);\n      });\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      if (this.hasFocus()) return;\n      this.root.focus();\n      this.setRange(this.savedRange);\n    }\n  }, {\n    key: \"format\",\n    value: function format(_format, value) {\n      this.scroll.update();\n      var nativeRange = this.getNativeRange();\n      if (nativeRange == null || !nativeRange.native.collapsed || this.scroll.query(_format, parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK)) return;\n\n      if (nativeRange.start.node !== this.cursor.textNode) {\n        var blot = this.scroll.find(nativeRange.start.node, false);\n        if (blot == null) return; // TODO Give blot ability to not split\n\n        if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\"LeafBlot\"]) {\n          var after = blot.split(nativeRange.start.offset);\n          blot.parent.insertBefore(this.cursor, after);\n        } else {\n          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n        }\n\n        this.cursor.attach();\n      }\n\n      this.cursor.format(_format, value);\n      this.scroll.optimize();\n      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n      this.update();\n    }\n  }, {\n    key: \"getBounds\",\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var scrollLength = this.scroll.length();\n      index = Math.min(index, scrollLength - 1);\n      length = Math.min(index + length, scrollLength - 1) - index;\n      var node;\n\n      var _this$scroll$leaf = this.scroll.leaf(index),\n          _this$scroll$leaf2 = _slicedToArray(_this$scroll$leaf, 2),\n          leaf = _this$scroll$leaf2[0],\n          offset = _this$scroll$leaf2[1];\n\n      if (leaf == null) return null;\n\n      var _leaf$position = leaf.position(offset, true);\n\n      var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n      node = _leaf$position2[0];\n      offset = _leaf$position2[1];\n      var range = document.createRange();\n\n      if (length > 0) {\n        range.setStart(node, offset);\n\n        var _this$scroll$leaf3 = this.scroll.leaf(index + length);\n\n        var _this$scroll$leaf4 = _slicedToArray(_this$scroll$leaf3, 2);\n\n        leaf = _this$scroll$leaf4[0];\n        offset = _this$scroll$leaf4[1];\n        if (leaf == null) return null;\n\n        var _leaf$position3 = leaf.position(offset, true);\n\n        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n        node = _leaf$position4[0];\n        offset = _leaf$position4[1];\n        range.setEnd(node, offset);\n        return range.getBoundingClientRect();\n      }\n\n      var side = 'left';\n      var rect;\n\n      if (node instanceof Text) {\n        if (offset < node.data.length) {\n          range.setStart(node, offset);\n          range.setEnd(node, offset + 1);\n        } else {\n          range.setStart(node, offset - 1);\n          range.setEnd(node, offset);\n          side = 'right';\n        }\n\n        rect = range.getBoundingClientRect();\n      } else {\n        rect = leaf.domNode.getBoundingClientRect();\n        if (offset > 0) side = 'right';\n      }\n\n      return {\n        bottom: rect.top + rect.height,\n        height: rect.height,\n        left: rect[side],\n        right: rect[side],\n        top: rect.top,\n        width: 0\n      };\n    }\n  }, {\n    key: \"getNativeRange\",\n    value: function getNativeRange() {\n      var selection = document.getSelection();\n      if (selection == null || selection.rangeCount <= 0) return null;\n      var nativeRange = selection.getRangeAt(0);\n      if (nativeRange == null) return null;\n      var range = this.normalizeNative(nativeRange);\n      debug.info('getNativeRange', range);\n      return range;\n    }\n  }, {\n    key: \"getRange\",\n    value: function getRange() {\n      var normalized = this.getNativeRange();\n      if (normalized == null) return [null, null];\n      var range = this.normalizedToRange(normalized);\n      return [range, normalized];\n    }\n  }, {\n    key: \"hasFocus\",\n    value: function hasFocus() {\n      return document.activeElement === this.root || contains(this.root, document.activeElement);\n    }\n  }, {\n    key: \"normalizedToRange\",\n    value: function normalizedToRange(range) {\n      var _this4 = this;\n\n      var positions = [[range.start.node, range.start.offset]];\n\n      if (!range.native.collapsed) {\n        positions.push([range.end.node, range.end.offset]);\n      }\n\n      var indexes = positions.map(function (position) {\n        var _position = _slicedToArray(position, 2),\n            node = _position[0],\n            offset = _position[1];\n\n        var blot = _this4.scroll.find(node, true);\n\n        var index = blot.offset(_this4.scroll);\n\n        if (offset === 0) {\n          return index;\n        }\n\n        if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\"LeafBlot\"]) {\n          return index + blot.index(node, offset);\n        }\n\n        return index + blot.length();\n      });\n      var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n      var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n      return new Range(start, end - start);\n    }\n  }, {\n    key: \"normalizeNative\",\n    value: function normalizeNative(nativeRange) {\n      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n        return null;\n      }\n\n      var range = {\n        start: {\n          node: nativeRange.startContainer,\n          offset: nativeRange.startOffset\n        },\n        end: {\n          node: nativeRange.endContainer,\n          offset: nativeRange.endOffset\n        },\n        native: nativeRange\n      };\n      [range.start, range.end].forEach(function (position) {\n        var node = position.node,\n            offset = position.offset;\n\n        while (!(node instanceof Text) && node.childNodes.length > 0) {\n          if (node.childNodes.length > offset) {\n            node = node.childNodes[offset];\n            offset = 0;\n          } else if (node.childNodes.length === offset) {\n            node = node.lastChild;\n\n            if (node instanceof Text) {\n              offset = node.data.length;\n            } else if (node.childNodes.length > 0) {\n              // Container case\n              offset = node.childNodes.length;\n            } else {\n              // Embed case\n              offset = node.childNodes.length + 1;\n            }\n          } else {\n            break;\n          }\n        }\n\n        position.node = node;\n        position.offset = offset;\n      });\n      return range;\n    }\n  }, {\n    key: \"rangeToNative\",\n    value: function rangeToNative(range) {\n      var _this5 = this;\n\n      var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n      var args = [];\n      var scrollLength = this.scroll.length();\n      indexes.forEach(function (index, i) {\n        index = Math.min(scrollLength - 1, index);\n\n        var _this5$scroll$leaf = _this5.scroll.leaf(index),\n            _this5$scroll$leaf2 = _slicedToArray(_this5$scroll$leaf, 2),\n            leaf = _this5$scroll$leaf2[0],\n            leafOffset = _this5$scroll$leaf2[1];\n\n        var _leaf$position5 = leaf.position(leafOffset, i !== 0),\n            _leaf$position6 = _slicedToArray(_leaf$position5, 2),\n            node = _leaf$position6[0],\n            offset = _leaf$position6[1];\n\n        args.push(node, offset);\n      });\n\n      if (args.length < 2) {\n        return args.concat(args);\n      }\n\n      return args;\n    }\n  }, {\n    key: \"scrollIntoView\",\n    value: function scrollIntoView(scrollingContainer) {\n      var range = this.lastRange;\n      if (range == null) return;\n      var bounds = this.getBounds(range.index, range.length);\n      if (bounds == null) return;\n      var limit = this.scroll.length() - 1;\n\n      var _this$scroll$line = this.scroll.line(Math.min(range.index, limit)),\n          _this$scroll$line2 = _slicedToArray(_this$scroll$line, 1),\n          first = _this$scroll$line2[0];\n\n      var last = first;\n\n      if (range.length > 0) {\n        var _this$scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n        var _this$scroll$line4 = _slicedToArray(_this$scroll$line3, 1);\n\n        last = _this$scroll$line4[0];\n      }\n\n      if (first == null || last == null) return;\n      var scrollBounds = scrollingContainer.getBoundingClientRect();\n\n      if (bounds.top < scrollBounds.top) {\n        scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n      } else if (bounds.bottom > scrollBounds.bottom) {\n        scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n      }\n    }\n  }, {\n    key: \"setNativeRange\",\n    value: function setNativeRange(startNode, startOffset) {\n      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n\n      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n        return;\n      }\n\n      var selection = document.getSelection();\n      if (selection == null) return;\n\n      if (startNode != null) {\n        if (!this.hasFocus()) this.root.focus();\n\n        var _ref = this.getNativeRange() || {},\n            native = _ref.native;\n\n        if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n          if (startNode.tagName === 'BR') {\n            startOffset = Array.from(startNode.parentNode.childNodes).indexOf(startNode);\n            startNode = startNode.parentNode;\n          }\n\n          if (endNode.tagName === 'BR') {\n            endOffset = Array.from(endNode.parentNode.childNodes).indexOf(endNode);\n            endNode = endNode.parentNode;\n          }\n\n          var range = document.createRange();\n          range.setStart(startNode, startOffset);\n          range.setEnd(endNode, endOffset);\n          selection.removeAllRanges();\n          selection.addRange(range);\n        }\n      } else {\n        selection.removeAllRanges();\n        this.root.blur();\n        document.body.focus(); // root.blur() not enough for IE11\n      }\n    }\n  }, {\n    key: \"setRange\",\n    value: function setRange(range) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.API;\n\n      if (typeof force === 'string') {\n        source = force;\n        force = false;\n      }\n\n      debug.info('setRange', range);\n\n      if (range != null) {\n        var args = this.rangeToNative(range);\n        this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n      } else {\n        this.setNativeRange(null);\n      }\n\n      this.update(source);\n    }\n  }, {\n    key: \"update\",\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.USER;\n      var oldRange = this.lastRange;\n\n      var _this$getRange = this.getRange(),\n          _this$getRange2 = _slicedToArray(_this$getRange, 2),\n          lastRange = _this$getRange2[0],\n          nativeRange = _this$getRange2[1];\n\n      this.lastRange = lastRange;\n      this.lastNative = nativeRange;\n\n      if (this.lastRange != null) {\n        this.savedRange = this.lastRange;\n      }\n\n      if (!lodash_isequal__WEBPACK_IMPORTED_MODULE_2___default()(oldRange, this.lastRange)) {\n        var _this$emitter;\n\n        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n          var range = this.cursor.restore();\n\n          if (range) {\n            this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n          }\n        }\n\n        var args = [_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].events.SELECTION_CHANGE, lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1___default()(this.lastRange), lodash_clonedeep__WEBPACK_IMPORTED_MODULE_1___default()(oldRange), source];\n\n        (_this$emitter = this.emitter).emit.apply(_this$emitter, [_emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].events.EDITOR_CHANGE].concat(args));\n\n        if (source !== _emitter__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT) {\n          var _this$emitter2;\n\n          (_this$emitter2 = this.emitter).emit.apply(_this$emitter2, args);\n        }\n      }\n    }\n  }]);\n\n  return Selection;\n}();\n\nfunction contains(parent, descendant) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode; // eslint-disable-line no-unused-expressions\n  } catch (e) {\n    return false;\n  } // IE11 has bug with Text nodes\n  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n\n\n  if (descendant instanceof Text) {\n    descendant = descendant.parentNode;\n  }\n\n  return parent.contains(descendant);\n}\n\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Text; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return escapeText; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\nvar Text = /*#__PURE__*/function (_TextBlot) {\n  _inherits(Text, _TextBlot);\n\n  var _super = _createSuper(Text);\n\n  function Text() {\n    _classCallCheck(this, Text);\n\n    return _super.apply(this, arguments);\n  }\n\n  return Text;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"TextBlot\"]);\n\nfunction escapeText(text) {\n  return text.replace(/[&<>\"']/g, function (s) {\n    // https://lodash.com/docs#escape\n    var entityMap = {\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      \"'\": '&#39;'\n    };\n    return entityMap[s];\n  });\n}\n\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\nvar Break = /*#__PURE__*/function (_EmbedBlot) {\n  _inherits(Break, _EmbedBlot);\n\n  var _super = _createSuper(Break);\n\n  function Break() {\n    _classCallCheck(this, Break);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Break, [{\n    key: \"optimize\",\n    value: function optimize() {\n      if (this.prev || this.next) {\n        this.remove();\n      }\n    }\n  }, {\n    key: \"length\",\n    value: function length() {\n      return 0;\n    }\n  }, {\n    key: \"value\",\n    value: function value() {\n      return '';\n    }\n  }], [{\n    key: \"value\",\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  return Break;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"EmbedBlot\"]);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n/* harmony default export */ __webpack_exports__[\"a\"] = (Break);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\nvar Inline = /*#__PURE__*/function (_InlineBlot) {\n  _inherits(Inline, _InlineBlot);\n\n  var _super = _createSuper(Inline);\n\n  function Inline() {\n    _classCallCheck(this, Inline);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Inline, [{\n    key: \"formatAt\",\n    value: function formatAt(index, length, name, value) {\n      if (Inline.compare(this.statics.blotName, name) < 0 && this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOT)) {\n        var blot = this.isolate(index, length);\n\n        if (value) {\n          blot.wrap(name, value);\n        }\n      } else {\n        _get(_getPrototypeOf(Inline.prototype), \"formatAt\", this).call(this, index, length, name, value);\n      }\n    }\n  }, {\n    key: \"optimize\",\n    value: function optimize(context) {\n      _get(_getPrototypeOf(Inline.prototype), \"optimize\", this).call(this, context);\n\n      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n        var parent = this.parent.isolate(this.offset(), this.length());\n        this.moveChildren(parent);\n        parent.wrap(this);\n      }\n    }\n  }], [{\n    key: \"compare\",\n    value: function compare(self, other) {\n      var selfIndex = Inline.order.indexOf(self);\n      var otherIndex = Inline.order.indexOf(other);\n\n      if (selfIndex >= 0 || otherIndex >= 0) {\n        return selfIndex - otherIndex;\n      }\n\n      if (self === other) {\n        return 0;\n      }\n\n      if (self < other) {\n        return -1;\n      }\n\n      return 1;\n    }\n  }]);\n\n  return Inline;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"InlineBlot\"]);\n\nInline.allowedChildren = [Inline, _break__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"], parchment__WEBPACK_IMPORTED_MODULE_0__[\"EmbedBlot\"], _text__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"]]; // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\nInline.order = ['cursor', 'inline', // Must be lower\n'link', // Chrome wants <a> to be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'code' // Must be higher\n];\n/* harmony default export */ __webpack_exports__[\"a\"] = (Inline);\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar hasWindow = function hasWindow() {\n  return typeof window !== 'undefined';\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (hasWindow);\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  _classCallCheck(this, Module);\n\n  this.quill = quill;\n  this.options = options;\n};\n\nModule.DEFAULTS = {};\n/* harmony default export */ __webpack_exports__[\"a\"] = (Module);\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n  // Don't return `map.set` because it's not chainable in IE 11.\n  map.set(pair[0], pair[1]);\n  return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n  // Don't return `set.add` because it's not chainable in IE 11.\n  set.add(value);\n  return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n  var result;\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      if (isHostObject(value)) {\n        return object ? value : {};\n      }\n      result = initCloneObject(isFunc ? {} : value);\n      if (!isDeep) {\n        return copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, baseClone, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (!isArr) {\n    var props = isFull ? getAllKeys(value) : keys(value);\n  }\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n  });\n  return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n  return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var result = new buffer.constructor(buffer.length);\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n  var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n  return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n  var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n  return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return cloneMap(object, isDeep, cloneFunc);\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return cloneSet(object, isDeep, cloneFunc);\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = cloneDeep;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41), __webpack_require__(45)(module)))\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Code; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return CodeBlockContainer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return CodeBlock; });\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17);\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(16);\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\n\n\nvar CodeBlockContainer = /*#__PURE__*/function (_Container) {\n  _inherits(CodeBlockContainer, _Container);\n\n  var _super = _createSuper(CodeBlockContainer);\n\n  function CodeBlockContainer() {\n    _classCallCheck(this, CodeBlockContainer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(CodeBlockContainer, [{\n    key: \"code\",\n    value: function code(index, length) {\n      var text = this.children.map(function (child) {\n        return child.length() <= 1 ? '' : child.domNode.innerText;\n      }).join('\\n').slice(index, index + length);\n      return Object(_blots_text__WEBPACK_IMPORTED_MODULE_4__[/* escapeText */ \"b\"])(text);\n    }\n  }, {\n    key: \"html\",\n    value: function html(index, length) {\n      // `\\n`s are needed in order to support empty lines at the beginning and the end.\n      // https://html.spec.whatwg.org/multipage/syntax.html#element-restrictions\n      return \"<pre>\\n\".concat(this.code(index, length), \"\\n</pre>\");\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      var domNode = _get(_getPrototypeOf(CodeBlockContainer), \"create\", this).call(this, value);\n\n      domNode.setAttribute('spellcheck', false);\n      return domNode;\n    }\n  }]);\n\n  return CodeBlockContainer;\n}(_blots_container__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"]);\n\nvar CodeBlock = /*#__PURE__*/function (_Block) {\n  _inherits(CodeBlock, _Block);\n\n  var _super2 = _createSuper(CodeBlock);\n\n  function CodeBlock() {\n    _classCallCheck(this, CodeBlock);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(CodeBlock, null, [{\n    key: \"register\",\n    value: function register() {\n      _core_quill__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"].register(CodeBlockContainer);\n    }\n  }]);\n\n  return CodeBlock;\n}(_blots_block__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"d\"]);\n\nvar Code = /*#__PURE__*/function (_Inline) {\n  _inherits(Code, _Inline);\n\n  var _super3 = _createSuper(Code);\n\n  function Code() {\n    _classCallCheck(this, Code);\n\n    return _super3.apply(this, arguments);\n  }\n\n  return Code;\n}(_blots_inline__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"]);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\nCodeBlock.blotName = 'code-block';\nCodeBlock.className = 'ql-code-block';\nCodeBlock.tagName = 'DIV';\nCodeBlockContainer.blotName = 'code-block-container';\nCodeBlockContainer.className = 'ql-code-block-container';\nCodeBlockContainer.tagName = 'DIV';\nCodeBlockContainer.allowedChildren = [CodeBlock];\nCodeBlock.allowedChildren = [_blots_text__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"], _blots_break__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"], _blots_cursor__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"]];\nCodeBlock.requiredContainer = CodeBlockContainer;\nCodeBlock.TAB = '  ';\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8);\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\nfunction isLine(blot) {\n  return blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"d\"] || blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__[/* BlockEmbed */ \"a\"];\n}\n\nvar Scroll = /*#__PURE__*/function (_ScrollBlot) {\n  _inherits(Scroll, _ScrollBlot);\n\n  var _super = _createSuper(Scroll);\n\n  function Scroll(registry, domNode, _ref) {\n    var _this;\n\n    var emitter = _ref.emitter;\n\n    _classCallCheck(this, Scroll);\n\n    _this = _super.call(this, registry, domNode);\n    _this.emitter = emitter;\n    _this.batch = false;\n\n    _this.optimize();\n\n    _this.enable();\n\n    _this.domNode.addEventListener('dragstart', function (e) {\n      return _this.handleDragStart(e);\n    });\n\n    return _this;\n  }\n\n  _createClass(Scroll, [{\n    key: \"batchStart\",\n    value: function batchStart() {\n      if (!Array.isArray(this.batch)) {\n        this.batch = [];\n      }\n    }\n  }, {\n    key: \"batchEnd\",\n    value: function batchEnd() {\n      var mutations = this.batch;\n      this.batch = false;\n      this.update(mutations);\n    }\n  }, {\n    key: \"emitMount\",\n    value: function emitMount(blot) {\n      this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].events.SCROLL_BLOT_MOUNT, blot);\n    }\n  }, {\n    key: \"emitUnmount\",\n    value: function emitUnmount(blot) {\n      this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].events.SCROLL_BLOT_UNMOUNT, blot);\n    }\n  }, {\n    key: \"deleteAt\",\n    value: function deleteAt(index, length) {\n      var _this$line = this.line(index),\n          _this$line2 = _slicedToArray(_this$line, 2),\n          first = _this$line2[0],\n          offset = _this$line2[1];\n\n      var _this$line3 = this.line(index + length),\n          _this$line4 = _slicedToArray(_this$line3, 1),\n          last = _this$line4[0];\n\n      _get(_getPrototypeOf(Scroll.prototype), \"deleteAt\", this).call(this, index, length);\n\n      if (last != null && first !== last && offset > 0) {\n        if (first instanceof _block__WEBPACK_IMPORTED_MODULE_2__[/* BlockEmbed */ \"a\"] || last instanceof _block__WEBPACK_IMPORTED_MODULE_2__[/* BlockEmbed */ \"a\"]) {\n          this.optimize();\n          return;\n        }\n\n        var ref = last.children.head instanceof _break__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"] ? null : last.children.head;\n        first.moveChildren(last, ref);\n        first.remove();\n      }\n\n      this.optimize();\n    }\n  }, {\n    key: \"enable\",\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.domNode.setAttribute('contenteditable', enabled);\n    }\n  }, {\n    key: \"formatAt\",\n    value: function formatAt(index, length, format, value) {\n      _get(_getPrototypeOf(Scroll.prototype), \"formatAt\", this).call(this, index, length, format, value);\n\n      this.optimize();\n    }\n  }, {\n    key: \"handleDragStart\",\n    value: function handleDragStart(event) {\n      event.preventDefault();\n    }\n  }, {\n    key: \"insertAt\",\n    value: function insertAt(index, value, def) {\n      if (index >= this.length()) {\n        if (def == null || this.scroll.query(value, parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK) == null) {\n          var blot = this.scroll.create(this.statics.defaultChild.blotName);\n          this.appendChild(blot);\n\n          if (def == null && value.endsWith('\\n')) {\n            blot.insertAt(0, value.slice(0, -1), def);\n          } else {\n            blot.insertAt(0, value, def);\n          }\n        } else {\n          var embed = this.scroll.create(value, def);\n          this.appendChild(embed);\n        }\n      } else {\n        _get(_getPrototypeOf(Scroll.prototype), \"insertAt\", this).call(this, index, value, def);\n      }\n\n      this.optimize();\n    }\n  }, {\n    key: \"insertBefore\",\n    value: function insertBefore(blot, ref) {\n      if (blot.statics.scope === parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE_BLOT) {\n        var wrapper = this.scroll.create(this.statics.defaultChild.blotName);\n        wrapper.appendChild(blot);\n\n        _get(_getPrototypeOf(Scroll.prototype), \"insertBefore\", this).call(this, wrapper, ref);\n      } else {\n        _get(_getPrototypeOf(Scroll.prototype), \"insertBefore\", this).call(this, blot, ref);\n      }\n    }\n  }, {\n    key: \"isEnabled\",\n    value: function isEnabled() {\n      return this.domNode.getAttribute('contenteditable') === 'true';\n    }\n  }, {\n    key: \"leaf\",\n    value: function leaf(index) {\n      return this.path(index).pop() || [null, -1];\n    }\n  }, {\n    key: \"line\",\n    value: function line(index) {\n      if (index === this.length()) {\n        return this.line(index - 1);\n      }\n\n      return this.descendant(isLine, index);\n    }\n  }, {\n    key: \"lines\",\n    value: function lines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      var getLines = function getLines(blot, blotIndex, blotLength) {\n        var lines = [];\n        var lengthLeft = blotLength;\n        blot.children.forEachAt(blotIndex, blotLength, function (child, childIndex, childLength) {\n          if (isLine(child)) {\n            lines.push(child);\n          } else if (child instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\"ContainerBlot\"]) {\n            lines = lines.concat(getLines(child, childIndex, lengthLeft));\n          }\n\n          lengthLeft -= childLength;\n        });\n        return lines;\n      };\n\n      return getLines(this, index, length);\n    }\n  }, {\n    key: \"optimize\",\n    value: function optimize() {\n      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (this.batch) return;\n\n      _get(_getPrototypeOf(Scroll.prototype), \"optimize\", this).call(this, mutations, context);\n\n      if (mutations.length > 0) {\n        this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].events.SCROLL_OPTIMIZE, mutations, context);\n      }\n    }\n  }, {\n    key: \"path\",\n    value: function path(index) {\n      return _get(_getPrototypeOf(Scroll.prototype), \"path\", this).call(this, index).slice(1); // Exclude self\n    }\n  }, {\n    key: \"remove\",\n    value: function remove() {// Never remove self\n    }\n  }, {\n    key: \"update\",\n    value: function update(mutations) {\n      if (this.batch) {\n        if (Array.isArray(mutations)) {\n          this.batch = this.batch.concat(mutations);\n        }\n\n        return;\n      }\n\n      var source = _core_emitter__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].sources.USER;\n\n      if (typeof mutations === 'string') {\n        source = mutations;\n      }\n\n      if (!Array.isArray(mutations)) {\n        mutations = this.observer.takeRecords();\n      }\n\n      if (mutations.length > 0) {\n        this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].events.SCROLL_BEFORE_UPDATE, source, mutations);\n      }\n\n      _get(_getPrototypeOf(Scroll.prototype), \"update\", this).call(this, mutations.concat([])); // pass copy\n\n\n      if (mutations.length > 0) {\n        this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].events.SCROLL_UPDATE, source, mutations);\n      }\n    }\n  }]);\n\n  return Scroll;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"ScrollBlot\"]);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = _block__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"d\"];\nScroll.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"d\"], _block__WEBPACK_IMPORTED_MODULE_2__[/* BlockEmbed */ \"a\"], _container__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"]];\n/* harmony default export */ __webpack_exports__[\"a\"] = (Scroll);\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n  if (levels.indexOf(method) <= levels.indexOf(level)) {\n    var _console;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n\n  }\n}\n\nfunction namespace(ns) {\n  return levels.reduce(function (logger, method) {\n    logger[method] = debug.bind(console, method, ns);\n    return logger;\n  }, {});\n}\n\nnamespace.level = function (newLevel) {\n  level = newLevel;\n};\n\ndebug.level = namespace.level;\n/* harmony default export */ __webpack_exports__[\"a\"] = (namespace);\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\nvar Container = /*#__PURE__*/function (_ContainerBlot) {\n  _inherits(Container, _ContainerBlot);\n\n  var _super = _createSuper(Container);\n\n  function Container() {\n    _classCallCheck(this, Container);\n\n    return _super.apply(this, arguments);\n  }\n\n  return Container;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"ContainerBlot\"]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Container);\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\nvar Cursor = /*#__PURE__*/function (_EmbedBlot) {\n  _inherits(Cursor, _EmbedBlot);\n\n  var _super = _createSuper(Cursor);\n\n  _createClass(Cursor, null, [{\n    key: \"value\",\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  function Cursor(scroll, domNode, selection) {\n    var _this;\n\n    _classCallCheck(this, Cursor);\n\n    _this = _super.call(this, scroll, domNode);\n    _this.selection = selection;\n    _this.textNode = document.createTextNode(Cursor.CONTENTS);\n\n    _this.domNode.appendChild(_this.textNode);\n\n    _this.savedLength = 0;\n    return _this;\n  }\n\n  _createClass(Cursor, [{\n    key: \"detach\",\n    value: function detach() {\n      // super.detach() will also clear domNode.__blot\n      if (this.parent != null) this.parent.removeChild(this);\n    }\n  }, {\n    key: \"format\",\n    value: function format(name, value) {\n      if (this.savedLength !== 0) {\n        _get(_getPrototypeOf(Cursor.prototype), \"format\", this).call(this, name, value);\n\n        return;\n      }\n\n      var target = this;\n      var index = 0;\n\n      while (target != null && target.statics.scope !== parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK_BLOT) {\n        index += target.offset(target.parent);\n        target = target.parent;\n      }\n\n      if (target != null) {\n        this.savedLength = Cursor.CONTENTS.length;\n        target.optimize();\n        target.formatAt(index, Cursor.CONTENTS.length, name, value);\n        this.savedLength = 0;\n      }\n    }\n  }, {\n    key: \"index\",\n    value: function index(node, offset) {\n      if (node === this.textNode) return 0;\n      return _get(_getPrototypeOf(Cursor.prototype), \"index\", this).call(this, node, offset);\n    }\n  }, {\n    key: \"length\",\n    value: function length() {\n      return this.savedLength;\n    }\n  }, {\n    key: \"position\",\n    value: function position() {\n      return [this.textNode, this.textNode.data.length];\n    }\n  }, {\n    key: \"remove\",\n    value: function remove() {\n      _get(_getPrototypeOf(Cursor.prototype), \"remove\", this).call(this);\n\n      this.parent = null;\n    }\n  }, {\n    key: \"restore\",\n    value: function restore() {\n      if (this.selection.composing || this.parent == null) return null;\n      var range = this.selection.getNativeRange(); // Link format will insert text outside of anchor tag\n\n      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n      }\n\n      var prevTextBlot = this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"] ? this.prev : null;\n      var prevTextLength = prevTextBlot ? prevTextBlot.length() : 0;\n      var nextTextBlot = this.next instanceof _text__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"] ? this.next : null;\n      var nextText = nextTextBlot ? nextTextBlot.text : '';\n      var textNode = this.textNode; // take text from inside this blot and reset it\n\n      var newText = textNode.data.split(Cursor.CONTENTS).join('');\n      textNode.data = Cursor.CONTENTS; // proactively merge TextBlots around cursor so that optimization\n      // doesn't lose the cursor.  the reason we are here in cursor.restore\n      // could be that the user clicked in prevTextBlot or nextTextBlot, or\n      // the user typed something.\n\n      var mergedTextBlot;\n\n      if (prevTextBlot) {\n        mergedTextBlot = prevTextBlot;\n\n        if (newText || nextTextBlot) {\n          prevTextBlot.insertAt(prevTextBlot.length(), newText + nextText);\n\n          if (nextTextBlot) {\n            nextTextBlot.remove();\n          }\n        }\n      } else if (nextTextBlot) {\n        mergedTextBlot = nextTextBlot;\n        nextTextBlot.insertAt(0, newText);\n      } else {\n        var newTextNode = document.createTextNode(newText);\n        mergedTextBlot = this.scroll.create(newTextNode);\n        this.parent.insertBefore(mergedTextBlot, this);\n      }\n\n      this.remove();\n\n      if (range) {\n        // calculate selection to restore\n        var remapOffset = function remapOffset(node, offset) {\n          if (prevTextBlot && node === prevTextBlot.domNode) {\n            return offset;\n          }\n\n          if (node === textNode) {\n            return prevTextLength + offset - 1;\n          }\n\n          if (nextTextBlot && node === nextTextBlot.domNode) {\n            return prevTextLength + newText.length + offset;\n          }\n\n          return null;\n        };\n\n        var start = remapOffset(range.start.node, range.start.offset);\n        var end = remapOffset(range.end.node, range.end.offset);\n\n        if (start !== null && end !== null) {\n          return {\n            startNode: mergedTextBlot.domNode,\n            startOffset: start,\n            endNode: mergedTextBlot.domNode,\n            endOffset: end\n          };\n        }\n      }\n\n      return null;\n    }\n  }, {\n    key: \"update\",\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      if (mutations.some(function (mutation) {\n        return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n      })) {\n        var range = this.restore();\n        if (range) context.range = range;\n      }\n    }\n  }, {\n    key: \"value\",\n    value: function value() {\n      return '';\n    }\n  }]);\n\n  return Cursor;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"EmbedBlot\"]);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Cursor);\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./core/quill.js\nvar quill = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./blots/block.js\nvar block = __webpack_require__(5);\n\n// EXTERNAL MODULE: ./blots/break.js\nvar blots_break = __webpack_require__(8);\n\n// EXTERNAL MODULE: ./blots/container.js\nvar container = __webpack_require__(16);\n\n// EXTERNAL MODULE: ./blots/cursor.js\nvar cursor = __webpack_require__(17);\n\n// EXTERNAL MODULE: ./blots/embed.js\nvar blots_embed = __webpack_require__(43);\n\n// EXTERNAL MODULE: ./blots/inline.js\nvar inline = __webpack_require__(9);\n\n// EXTERNAL MODULE: ./blots/scroll.js\nvar blots_scroll = __webpack_require__(14);\n\n// EXTERNAL MODULE: ./blots/text.js\nvar blots_text = __webpack_require__(7);\n\n// EXTERNAL MODULE: ./modules/clipboard.js\nvar clipboard = __webpack_require__(44);\n\n// EXTERNAL MODULE: ./modules/history.js\nvar modules_history = __webpack_require__(34);\n\n// EXTERNAL MODULE: ./modules/keyboard.js\nvar keyboard = __webpack_require__(24);\n\n// EXTERNAL MODULE: ./node_modules/quill-delta/dist/Delta.js\nvar Delta = __webpack_require__(0);\nvar Delta_default = /*#__PURE__*/__webpack_require__.n(Delta);\n\n// EXTERNAL MODULE: ./core/emitter.js\nvar emitter = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./core/module.js\nvar core_module = __webpack_require__(11);\n\n// EXTERNAL MODULE: ./utils/hasWindow.js\nvar hasWindow = __webpack_require__(10);\n\n// CONCATENATED MODULE: ./modules/uploader.js\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\nvar uploader_Uploader = /*#__PURE__*/function (_Module) {\n  _inherits(Uploader, _Module);\n\n  var _super = _createSuper(Uploader);\n\n  function Uploader(quill, options) {\n    var _this;\n\n    _classCallCheck(this, Uploader);\n\n    _this = _super.call(this, quill, options);\n\n    _this.addDragOverHandler();\n\n    _this.addDropHandler();\n\n    return _this;\n  }\n\n  _createClass(Uploader, [{\n    key: \"addDragOverHandler\",\n    value: function addDragOverHandler() {\n      if (Object(hasWindow[\"a\" /* default */])()) {\n        var ua = window.navigator.userAgent.toLowerCase();\n        var isMsIe = ua.indexOf('msie ') !== -1 || ua.indexOf('trident/') !== -1 || ua.indexOf('edge/') !== -1;\n\n        if (isMsIe) {\n          this.quill.root.addEventListener('dragover', function (e) {\n            e.preventDefault();\n          });\n        }\n      }\n    }\n  }, {\n    key: \"addDropHandler\",\n    value: function addDropHandler() {\n      var _this2 = this;\n\n      this.quill.root.addEventListener('drop', function (e) {\n        e.preventDefault();\n        var native;\n        var onDrop = _this2.options.onDrop;\n\n        if (onDrop && typeof onDrop === 'function') {\n          onDrop(e);\n        }\n\n        if (document.caretRangeFromPoint) {\n          native = document.caretRangeFromPoint(e.clientX, e.clientY);\n        } else if (document.caretPositionFromPoint) {\n          var position = document.caretPositionFromPoint(e.clientX, e.clientY);\n          native = document.createRange();\n          native.setStart(position.offsetNode, position.offset);\n          native.setEnd(position.offsetNode, position.offset);\n        } else {\n          return;\n        }\n\n        var normalized = _this2.quill.selection.normalizeNative(native);\n\n        var range = _this2.quill.selection.normalizedToRange(normalized);\n\n        _this2.upload(range, e.dataTransfer.files);\n      });\n    }\n  }, {\n    key: \"upload\",\n    value: function upload(range, files) {\n      var _this3 = this;\n\n      var uploads = [];\n      Array.from(files).forEach(function (file) {\n        if (file && _this3.options.mimetypes.indexOf(file.type) !== -1) {\n          uploads.push(file);\n        }\n      });\n\n      if (uploads.length > 0) {\n        this.options.handler.call(this, range, uploads, this.options.imageBlot);\n      }\n    }\n  }]);\n\n  return Uploader;\n}(core_module[\"a\" /* default */]);\n\nuploader_Uploader.DEFAULTS = {\n  mimetypes: ['image/png', 'image/jpeg'],\n  imageBlot: 'image',\n  handler: function handler(range, files, blotName) {\n    var _this4 = this;\n\n    var promises = files.map(function (file) {\n      return new Promise(function (resolve) {\n        var reader = new FileReader();\n\n        reader.onload = function (e) {\n          resolve(e.target.result);\n        };\n\n        reader.readAsDataURL(file);\n      });\n    });\n    Promise.all(promises).then(function (images) {\n      var update = images.reduce(function (delta, image) {\n        return delta.insert(_defineProperty({}, blotName, image));\n      }, new Delta_default.a().retain(range.index).delete(range.length));\n\n      _this4.quill.updateContents(update, emitter[\"a\" /* default */].sources.USER);\n\n      _this4.quill.setSelection(range.index + images.length, emitter[\"a\" /* default */].sources.SILENT);\n    });\n  }\n};\n/* harmony default export */ var uploader = (uploader_Uploader);\n// CONCATENATED MODULE: ./core.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nquill[\"a\" /* default */].register({\n  'blots/block': block[\"d\" /* default */],\n  'blots/block/embed': block[\"a\" /* BlockEmbed */],\n  'blots/break': blots_break[\"a\" /* default */],\n  'blots/container': container[\"a\" /* default */],\n  'blots/cursor': cursor[\"a\" /* default */],\n  'blots/embed': blots_embed[\"a\" /* default */],\n  'blots/inline': inline[\"a\" /* default */],\n  'blots/scroll': blots_scroll[\"a\" /* default */],\n  'blots/text': blots_text[\"a\" /* default */],\n  'modules/clipboard': clipboard[\"a\" /* default */],\n  'modules/history': modules_history[\"a\" /* default */],\n  'modules/keyboard': keyboard[\"b\" /* default */],\n  'modules/uploader': uploader\n});\n/* harmony default export */ var core = __webpack_exports__[\"default\"] = (quill[\"a\" /* default */]);\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = isEqual;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41), __webpack_require__(45)(module)))\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41)))\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\nvar shared = __webpack_require__(70);\nvar has = __webpack_require__(25);\nvar uid = __webpack_require__(71);\nvar NATIVE_SYMBOL = __webpack_require__(79);\nvar USE_SYMBOL_AS_UID = __webpack_require__(104);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name)) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ColorAttributor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return ColorClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return ColorStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\nvar ColorAttributor = /*#__PURE__*/function (_StyleAttributor) {\n  _inherits(ColorAttributor, _StyleAttributor);\n\n  var _super = _createSuper(ColorAttributor);\n\n  function ColorAttributor() {\n    _classCallCheck(this, ColorAttributor);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ColorAttributor, [{\n    key: \"value\",\n    value: function value(domNode) {\n      var value = _get(_getPrototypeOf(ColorAttributor.prototype), \"value\", this).call(this, domNode);\n\n      if (value.indexOf('rgb(') !== 0) return value;\n      value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n      var hex = value.split(',').map(function (component) {\n        return \"00\".concat(parseInt(component, 10).toString(16)).slice(-2);\n      }).join('');\n      return \"#\".concat(hex);\n    }\n  }]);\n\n  return ColorAttributor;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"StyleAttributor\"]);\n\nvar ColorClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('color', 'ql-color', {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE\n});\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return DirectionAttribute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return DirectionClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return DirectionStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n\nvar config = {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK,\n  whitelist: ['rtl']\n};\nvar DirectionAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"Attributor\"]('direction', 'dir', config);\nvar DirectionClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('direction', 'ql-direction', config);\nvar DirectionStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"StyleAttributor\"]('direction', 'direction', config);\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return Keyboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return SHORTKEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return normalize; });\n/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);\n/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isequal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);\n/* harmony import */ var lodash_isequal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isequal__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1);\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15);\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(11);\n/* harmony import */ var _utils_hasWindow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(10);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\n\n\nvar debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"])('quill:keyboard');\nvar KEY_NAMES = {\n  backspace: 'backspace',\n  tab: 'tab',\n  enter: 'enter',\n  escape: 'escape',\n  pageup: 'pageUp',\n  pagedown: 'pageDown',\n  end: 'end',\n  home: 'home',\n  arrowleft: 'leftArrow',\n  arrowup: 'upArrow',\n  arrowright: 'rightArrow',\n  arrowdown: 'downArrow',\n  delete: 'del',\n  ' ': 'space',\n  '*': 'asterisk',\n  '-': 'minus',\n  alt: 'alt',\n  control: 'control',\n  shift: 'shift',\n  // IE11:\n  left: 'leftArrow',\n  up: 'upArrow',\n  right: 'rightArrow',\n  down: 'downArrow',\n  multiply: 'asterisk',\n  spacebar: 'space',\n  del: 'del',\n  subtract: 'minus',\n  esc: 'escape'\n};\nvar KEY_CODES = {\n  // iOS 10.2 and lower didn't supports KeyboardEvent.key\n  '8': 'backspace',\n  '9': 'tab',\n  '13': 'enter',\n  '27': 'escape',\n  '33': 'pageUp',\n  '34': 'pageDown',\n  '35': 'end',\n  '36': 'home',\n  '37': 'leftArrow',\n  '38': 'upArrow',\n  '39': 'rightArrow',\n  '40': 'downArrow',\n  '46': 'del',\n  '32': 'space',\n  '106': 'asterisk',\n  '109': 'minus',\n  '189': 'minus',\n  '173': 'minus',\n  '16': 'shift',\n  '17': 'control',\n  '18': 'alt'\n};\nvar SHORTKEY = Object(_utils_hasWindow__WEBPACK_IMPORTED_MODULE_7__[/* default */ \"a\"])() && /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = /*#__PURE__*/function (_Module) {\n  _inherits(Keyboard, _Module);\n\n  var _super = _createSuper(Keyboard);\n\n  _createClass(Keyboard, null, [{\n    key: \"match\",\n    value: function match(evt, binding) {\n      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n        return !!binding[key] !== evt[key] && binding[key] !== null;\n      })) {\n        return false;\n      }\n\n      return binding.key === Keyboard.normalizeKeyName(evt) || binding.key === evt.which;\n    }\n  }, {\n    key: \"normalizeKeyName\",\n    value: function normalizeKeyName(_ref) {\n      var key = _ref.key,\n          which = _ref.which;\n      var isKeySupported = !!key;\n      key = isKeySupported ? key : which;\n\n      if (key) {\n        if (isKeySupported) {\n          key = KEY_NAMES[key.toLowerCase()] || key;\n        } else {\n          key = KEY_CODES[key] || String.fromCharCode(key);\n        }\n      }\n\n      return key;\n    }\n  }]);\n\n  function Keyboard(quill, options) {\n    var _this;\n\n    _classCallCheck(this, Keyboard);\n\n    _this = _super.call(this, quill, options);\n    _this.bindings = {};\n    Object.keys(_this.options.bindings).forEach(function (name) {\n      if (_this.options.bindings[name]) {\n        _this.addBinding(_this.options.bindings[name]);\n      }\n    });\n\n    _this.addBinding({\n      key: 'enter',\n      shiftKey: null\n    }, _this.handleEnter);\n\n    _this.addBinding({\n      key: 'enter',\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null\n    }, function () {});\n\n    if (Object(_utils_hasWindow__WEBPACK_IMPORTED_MODULE_7__[/* default */ \"a\"])() && /Firefox/i.test(navigator.userAgent)) {\n      // Need to handle delete and backspace for Firefox in the general case #1171\n      _this.addBinding({\n        key: 'backspace'\n      }, {\n        collapsed: true\n      }, _this.handleBackspace);\n\n      _this.addBinding({\n        key: 'del'\n      }, {\n        collapsed: true\n      }, _this.handleDelete);\n    } else {\n      _this.addBinding({\n        key: 'backspace'\n      }, {\n        collapsed: true,\n        prefix: /^.?$/\n      }, _this.handleBackspace);\n\n      _this.addBinding({\n        key: 'del'\n      }, {\n        collapsed: true,\n        suffix: /^.?$/\n      }, _this.handleDelete);\n    }\n\n    _this.addBinding({\n      key: 'backspace'\n    }, {\n      collapsed: false\n    }, _this.handleDeleteRange);\n\n    _this.addBinding({\n      key: 'del'\n    }, {\n      collapsed: false\n    }, _this.handleDeleteRange);\n\n    _this.addBinding({\n      key: 'backspace',\n      altKey: null,\n      ctrlKey: null,\n      metaKey: null,\n      shiftKey: null\n    }, {\n      collapsed: true,\n      offset: 0\n    }, _this.handleBackspace);\n\n    _this.listen();\n\n    return _this;\n  }\n\n  _createClass(Keyboard, [{\n    key: \"addBinding\",\n    value: function addBinding(keyBinding) {\n      var _this2 = this;\n\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var binding = normalize(keyBinding);\n\n      if (binding == null) {\n        debug.warn('Attempted to add invalid keyboard binding', binding);\n        return;\n      }\n\n      if (typeof context === 'function') {\n        context = {\n          handler: context\n        };\n      }\n\n      if (typeof handler === 'function') {\n        handler = {\n          handler: handler\n        };\n      }\n\n      var keys = Array.isArray(binding.key) ? binding.key : [binding.key];\n      keys.forEach(function (key) {\n        var singleBinding = _objectSpread(_objectSpread(_objectSpread({}, binding), {}, {\n          key: key\n        }, context), handler);\n\n        _this2.bindings[singleBinding.key] = _this2.bindings[singleBinding.key] || [];\n\n        _this2.bindings[singleBinding.key].push(singleBinding);\n      });\n    }\n  }, {\n    key: \"listen\",\n    value: function listen() {\n      var _this3 = this;\n\n      this.quill.root.addEventListener('keydown', function (evt) {\n        if (evt.defaultPrevented || evt.isComposing) return;\n        var keyName = Keyboard.normalizeKeyName(evt);\n        var bindings = (_this3.bindings[keyName] || []).concat(_this3.bindings[evt.which] || []);\n        var matches = bindings.filter(function (binding) {\n          return Keyboard.match(evt, binding);\n        });\n        if (matches.length === 0) return;\n\n        var range = _this3.quill.getSelection();\n\n        if (range == null || !_this3.quill.hasFocus()) return;\n\n        var _this3$quill$getLine = _this3.quill.getLine(range.index),\n            _this3$quill$getLine2 = _slicedToArray(_this3$quill$getLine, 2),\n            line = _this3$quill$getLine2[0],\n            offset = _this3$quill$getLine2[1];\n\n        var _this3$quill$getLeaf = _this3.quill.getLeaf(range.index),\n            _this3$quill$getLeaf2 = _slicedToArray(_this3$quill$getLeaf, 2),\n            leafStart = _this3$quill$getLeaf2[0],\n            offsetStart = _this3$quill$getLeaf2[1];\n\n        var _ref2 = range.length === 0 ? [leafStart, offsetStart] : _this3.quill.getLeaf(range.index + range.length),\n            _ref3 = _slicedToArray(_ref2, 2),\n            leafEnd = _ref3[0],\n            offsetEnd = _ref3[1];\n\n        var prefixText = leafStart instanceof parchment__WEBPACK_IMPORTED_MODULE_3__[\"TextBlot\"] ? leafStart.value().slice(0, offsetStart) : '';\n        var suffixText = leafEnd instanceof parchment__WEBPACK_IMPORTED_MODULE_3__[\"TextBlot\"] ? leafEnd.value().slice(offsetEnd) : '';\n        var curContext = {\n          collapsed: range.length === 0,\n          empty: range.length === 0 && line.length() <= 1,\n          format: _this3.quill.getFormat(range),\n          line: line,\n          offset: offset,\n          prefix: prefixText,\n          suffix: suffixText,\n          event: evt\n        };\n        var prevented = matches.some(function (binding) {\n          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) {\n            return false;\n          }\n\n          if (binding.empty != null && binding.empty !== curContext.empty) {\n            return false;\n          }\n\n          if (binding.offset != null && binding.offset !== curContext.offset) {\n            return false;\n          }\n\n          if (Array.isArray(binding.format)) {\n            // any format is present\n            if (binding.format.every(function (name) {\n              return curContext.format[name] == null;\n            })) {\n              return false;\n            }\n          } else if (_typeof(binding.format) === 'object') {\n            // all formats must match\n            if (!Object.keys(binding.format).every(function (name) {\n              if (binding.format[name] === true) return curContext.format[name] != null;\n              if (binding.format[name] === false) return curContext.format[name] == null;\n              return lodash_isequal__WEBPACK_IMPORTED_MODULE_1___default()(binding.format[name], curContext.format[name]);\n            })) {\n              return false;\n            }\n          }\n\n          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\n            return false;\n          }\n\n          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\n            return false;\n          }\n\n          return binding.handler.call(_this3, range, curContext, binding) !== true;\n        });\n\n        if (prevented) {\n          evt.preventDefault();\n        }\n      });\n    }\n  }, {\n    key: \"handleBackspace\",\n    value: function handleBackspace(range, context) {\n      // Check for astral symbols\n      var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n      if (range.index === 0 || this.quill.getLength() <= 1) return;\n      var formats = {};\n\n      var _this$quill$getLine = this.quill.getLine(range.index),\n          _this$quill$getLine2 = _slicedToArray(_this$quill$getLine, 1),\n          line = _this$quill$getLine2[0];\n\n      var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index - length).delete(length);\n\n      if (context.offset === 0) {\n        // Always deleting newline here, length always 1\n        var _this$quill$getLine3 = this.quill.getLine(range.index - 1),\n            _this$quill$getLine4 = _slicedToArray(_this$quill$getLine3, 1),\n            prev = _this$quill$getLine4[0];\n\n        if (prev) {\n          var isPrevLineEmpty = prev.statics.blotName === 'block' && prev.length() <= 1;\n\n          if (!isPrevLineEmpty) {\n            var curFormats = line.formats();\n            var prevFormats = this.quill.getFormat(range.index - 1, 1);\n            formats = quill_delta__WEBPACK_IMPORTED_MODULE_2__[\"AttributeMap\"].diff(curFormats, prevFormats) || {};\n\n            if (Object.keys(formats).length > 0) {\n              // line.length() - 1 targets \\n in line, another -1 for newline being deleted\n              var formatDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index + line.length() - 2).retain(1, formats);\n              delta = delta.compose(formatDelta);\n            }\n          }\n        }\n      }\n\n      this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      this.quill.focus();\n    }\n  }, {\n    key: \"handleDelete\",\n    value: function handleDelete(range, context) {\n      // Check for astral symbols\n      var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n      if (range.index >= this.quill.getLength() - length) return;\n      var formats = {};\n\n      var _this$quill$getLine5 = this.quill.getLine(range.index),\n          _this$quill$getLine6 = _slicedToArray(_this$quill$getLine5, 1),\n          line = _this$quill$getLine6[0];\n\n      var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index).delete(length);\n\n      if (context.offset >= line.length() - 1) {\n        var _this$quill$getLine7 = this.quill.getLine(range.index + 1),\n            _this$quill$getLine8 = _slicedToArray(_this$quill$getLine7, 1),\n            next = _this$quill$getLine8[0];\n\n        if (next) {\n          var curFormats = line.formats();\n          var nextFormats = this.quill.getFormat(range.index, 1);\n          formats = quill_delta__WEBPACK_IMPORTED_MODULE_2__[\"AttributeMap\"].diff(curFormats, nextFormats) || {};\n\n          if (Object.keys(formats).length > 0) {\n            delta = delta.retain(next.length() - 1).retain(1, formats);\n          }\n        }\n      }\n\n      this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      this.quill.focus();\n    }\n  }, {\n    key: \"handleDeleteRange\",\n    value: function handleDeleteRange(range) {\n      var lines = this.quill.getLines(range);\n      var formats = {};\n\n      if (lines.length > 1) {\n        var firstFormats = lines[0].formats();\n        var lastFormats = lines[lines.length - 1].formats();\n        formats = quill_delta__WEBPACK_IMPORTED_MODULE_2__[\"AttributeMap\"].diff(lastFormats, firstFormats) || {};\n      }\n\n      this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n\n      if (Object.keys(formats).length > 0) {\n        this.quill.formatLine(range.index, 1, formats, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      }\n\n      this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n      this.quill.focus();\n    }\n  }, {\n    key: \"handleEnter\",\n    value: function handleEnter(range, context) {\n      var _this4 = this;\n\n      var lineFormats = Object.keys(context.format).reduce(function (formats, format) {\n        if (_this4.quill.scroll.query(format, parchment__WEBPACK_IMPORTED_MODULE_3__[\"Scope\"].BLOCK) && !Array.isArray(context.format[format])) {\n          formats[format] = context.format[format];\n        }\n\n        return formats;\n      }, {});\n      var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index).delete(range.length).insert('\\n', lineFormats);\n      this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n      this.quill.focus();\n      Object.keys(context.format).forEach(function (name) {\n        if (lineFormats[name] != null) return;\n        if (Array.isArray(context.format[name])) return;\n        if (name === 'code' || name === 'link') return;\n\n        _this4.quill.format(name, context.format[name], _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      });\n    }\n  }]);\n\n  return Keyboard;\n}(_core_module__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"]);\n\nKeyboard.DEFAULTS = {\n  bindings: {\n    bold: makeFormatHandler('bold'),\n    italic: makeFormatHandler('italic'),\n    underline: makeFormatHandler('underline'),\n    indent: {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: 'tab',\n      format: ['blockquote', 'indent', 'list'],\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        return false;\n      }\n    },\n    outdent: {\n      key: 'tab',\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        return false;\n      }\n    },\n    'outdent backspace': {\n      key: 'backspace',\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: ['indent', 'list'],\n      offset: 0,\n      handler: function handler(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        }\n      }\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: 'tab',\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler: function handler(range) {\n        this.quill.deleteText(range.index - 1, 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      }\n    },\n    tab: {\n      key: 'tab',\n      handler: function handler(range, context) {\n        if (context.format.table) return true;\n        this.quill.history.cutoff();\n        var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index).delete(range.length).insert('\\t');\n        this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n        return false;\n      }\n    },\n    'blockquote empty enter': {\n      key: 'enter',\n      collapsed: true,\n      format: ['blockquote'],\n      empty: true,\n      handler: function handler() {\n        this.quill.format('blockquote', false, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      }\n    },\n    'list empty enter': {\n      key: 'enter',\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler: function handler(range, context) {\n        var formats = {\n          list: false\n        };\n\n        if (context.format.indent) {\n          formats.indent = false;\n        }\n\n        this.quill.formatLine(range.index, range.length, formats, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      }\n    },\n    'checklist enter': {\n      key: 'enter',\n      collapsed: true,\n      format: {\n        list: 'checked'\n      },\n      handler: function handler(range) {\n        var _this$quill$getLine9 = this.quill.getLine(range.index),\n            _this$quill$getLine10 = _slicedToArray(_this$quill$getLine9, 2),\n            line = _this$quill$getLine10[0],\n            offset = _this$quill$getLine10[1];\n\n        var formats = _objectSpread(_objectSpread({}, line.formats()), {}, {\n          list: 'checked'\n        });\n\n        var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, {\n          list: 'unchecked'\n        });\n        this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'header enter': {\n      key: 'enter',\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler: function handler(range, context) {\n        var _this$quill$getLine11 = this.quill.getLine(range.index),\n            _this$quill$getLine12 = _slicedToArray(_this$quill$getLine11, 2),\n            line = _this$quill$getLine12[0],\n            offset = _this$quill$getLine12[1];\n\n        var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, {\n          header: null\n        });\n        this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'table backspace': {\n      key: 'backspace',\n      format: ['table'],\n      collapsed: true,\n      offset: 0,\n      handler: function handler() {}\n    },\n    'table delete': {\n      key: 'del',\n      format: ['table'],\n      collapsed: true,\n      suffix: /^$/,\n      handler: function handler() {}\n    },\n    'table enter': {\n      key: 'enter',\n      shiftKey: null,\n      format: ['table'],\n      handler: function handler(range) {\n        var module = this.quill.getModule('table');\n\n        if (module) {\n          var _module$getTable = module.getTable(range),\n              _module$getTable2 = _slicedToArray(_module$getTable, 4),\n              table = _module$getTable2[0],\n              row = _module$getTable2[1],\n              cell = _module$getTable2[2],\n              offset = _module$getTable2[3];\n\n          var shift = tableSide(table, row, cell, offset);\n          if (shift == null) return;\n          var index = table.offset();\n\n          if (shift < 0) {\n            var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(index).insert('\\n');\n            this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n            this.quill.setSelection(range.index + 1, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n          } else if (shift > 0) {\n            index += table.length();\n\n            var _delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(index).insert('\\n');\n\n            this.quill.updateContents(_delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n            this.quill.setSelection(index, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n          }\n        }\n      }\n    },\n    'table tab': {\n      key: 'tab',\n      shiftKey: null,\n      format: ['table'],\n      handler: function handler(range, context) {\n        var event = context.event,\n            cell = context.line;\n        var offset = cell.offset(this.quill.scroll);\n\n        if (event.shiftKey) {\n          this.quill.setSelection(offset - 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        } else {\n          this.quill.setSelection(offset + cell.length(), _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        }\n      }\n    },\n    'list autofill': {\n      key: 'space',\n      shiftKey: null,\n      collapsed: true,\n      format: {\n        list: false,\n        'code-block': false,\n        blockquote: false,\n        header: false,\n        table: false\n      },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler: function handler(range, context) {\n        if (this.quill.scroll.query('list') == null) return true;\n        var length = context.prefix.length;\n\n        var _this$quill$getLine13 = this.quill.getLine(range.index),\n            _this$quill$getLine14 = _slicedToArray(_this$quill$getLine13, 2),\n            line = _this$quill$getLine14[0],\n            offset = _this$quill$getLine14[1];\n\n        if (offset > length) return true;\n        var value;\n\n        switch (context.prefix.trim()) {\n          case '[]':\n          case '[ ]':\n            value = 'unchecked';\n            break;\n\n          case '[x]':\n            value = 'checked';\n            break;\n\n          case '-':\n          case '*':\n            value = 'bullet';\n            break;\n\n          default:\n            value = 'ordered';\n        }\n\n        this.quill.insertText(range.index, ' ', _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        this.quill.history.cutoff();\n        var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, {\n          list: value\n        });\n        this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n        return false;\n      }\n    },\n    'code exit': {\n      key: 'enter',\n      collapsed: true,\n      format: ['code-block'],\n      prefix: /^$/,\n      suffix: /^\\s*$/,\n      handler: function handler(range) {\n        var _this$quill$getLine15 = this.quill.getLine(range.index),\n            _this$quill$getLine16 = _slicedToArray(_this$quill$getLine15, 2),\n            line = _this$quill$getLine16[0],\n            offset = _this$quill$getLine16[1];\n\n        var numLines = 2;\n        var cur = line;\n\n        while (cur != null && cur.length() <= 1 && cur.formats()['code-block']) {\n          cur = cur.prev;\n          numLines -= 1; // Requisite prev lines are empty\n\n          if (numLines <= 0) {\n            var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_2___default.a().retain(range.index + line.length() - offset - 2).retain(1, {\n              'code-block': null\n            }).delete(1);\n            this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n            this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n            return false;\n          }\n        }\n\n        return true;\n      }\n    },\n    'embed left': makeEmbedArrowHandler('ArrowLeft', false),\n    'embed left shift': makeEmbedArrowHandler('ArrowLeft', true),\n    'embed right': makeEmbedArrowHandler('ArrowRight', false),\n    'embed right shift': makeEmbedArrowHandler('ArrowRight', true),\n    'table down': makeTableArrowHandler(false),\n    'table up': makeTableArrowHandler(true)\n  }\n};\n\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: 'tab',\n    shiftKey: !indent,\n    format: {\n      'code-block': true\n    },\n    handler: function handler(range) {\n      var CodeBlock = this.quill.scroll.query('code-block');\n      var lines = range.length === 0 ? this.quill.getLines(range.index, 1) : this.quill.getLines(range);\n      var index = range.index,\n          length = range.length;\n      lines.forEach(function (line, i) {\n        if (indent) {\n          line.insertAt(0, CodeBlock.TAB);\n\n          if (i === 0) {\n            index += CodeBlock.TAB.length;\n          } else {\n            length += CodeBlock.TAB.length;\n          }\n        } else if (line.domNode.textContent.indexOf(CodeBlock.TAB) === 0) {\n          line.deleteAt(0, CodeBlock.TAB.length);\n\n          if (i === 0) {\n            index -= CodeBlock.TAB.length;\n          } else {\n            length -= CodeBlock.TAB.length;\n          }\n        }\n      });\n      this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      this.quill.setSelection(index, length, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.SILENT);\n    }\n  };\n}\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n  var _ref4;\n\n  var where = key === 'leftArrow' ? 'prefix' : 'suffix';\n  return _ref4 = {\n    key: key,\n    shiftKey: shiftKey,\n    altKey: null\n  }, _defineProperty(_ref4, where, /^$/), _defineProperty(_ref4, \"handler\", function handler(range) {\n    var index = range.index;\n\n    if (key === 'rightArrow') {\n      index += range.length + 1;\n    }\n\n    var _this$quill$getLeaf = this.quill.getLeaf(index),\n        _this$quill$getLeaf2 = _slicedToArray(_this$quill$getLeaf, 1),\n        leaf = _this$quill$getLeaf2[0];\n\n    if (!(leaf instanceof parchment__WEBPACK_IMPORTED_MODULE_3__[\"EmbedBlot\"])) return true;\n\n    if (key === 'ArrowLeft') {\n      if (shiftKey) {\n        this.quill.setSelection(range.index - 1, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      } else {\n        this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n      }\n    } else if (shiftKey) {\n      this.quill.setSelection(range.index, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n    } else {\n      this.quill.setSelection(range.index + range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n    }\n\n    return false;\n  }), _ref4;\n}\n\nfunction makeFormatHandler(format) {\n  return {\n    key: format[0],\n    shortKey: true,\n    handler: function handler(range, context) {\n      this.quill.format(format, !context.format[format], _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n    }\n  };\n}\n\nfunction makeTableArrowHandler(up) {\n  return {\n    key: up ? 'upArrow' : 'downArrow',\n    collapsed: true,\n    format: ['table'],\n    handler: function handler(range, context) {\n      // TODO move to table module\n      var key = up ? 'prev' : 'next';\n      var cell = context.line;\n      var targetRow = cell.parent[key];\n\n      if (targetRow != null) {\n        if (targetRow.statics.blotName === 'table-row') {\n          var targetCell = targetRow.children.head;\n          var cur = cell;\n\n          while (cur.prev != null) {\n            cur = cur.prev;\n            targetCell = targetCell.next;\n          }\n\n          var index = targetCell.offset(this.quill.scroll) + Math.min(context.offset, targetCell.length() - 1);\n          this.quill.setSelection(index, 0, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n        }\n      } else {\n        var targetLine = cell.table()[key];\n\n        if (targetLine != null) {\n          if (up) {\n            this.quill.setSelection(targetLine.offset(this.quill.scroll) + targetLine.length() - 1, 0, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n          } else {\n            this.quill.setSelection(targetLine.offset(this.quill.scroll), 0, _core_quill__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"].sources.USER);\n          }\n        }\n      }\n\n      return false;\n    }\n  };\n}\n\nfunction normalize(binding) {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    binding = {\n      key: binding\n    };\n  } else if (_typeof(binding) === 'object') {\n    binding = lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0___default()(binding);\n  } else {\n    return null;\n  }\n\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n\n  return binding;\n}\n\nfunction tableSide(table, row, cell, offset) {\n  if (row.prev == null && row.next == null) {\n    if (cell.prev == null && cell.next == null) {\n      return offset === 0 ? -1 : 1;\n    }\n\n    return cell.prev == null ? -1 : 1;\n  }\n\n  if (row.prev == null) {\n    return -1;\n  }\n\n  if (row.next == null) {\n    return 1;\n  }\n\n  return null;\n}\n\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeMax = Math.max,\n    nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = merge;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41), __webpack_require__(45)(module)))\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AlignAttribute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return AlignClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return AlignStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n\nvar config = {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK,\n  whitelist: ['right', 'center', 'justify']\n};\nvar AlignAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"Attributor\"]('align', 'align', config);\nvar AlignClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('align', 'ql-align', config);\nvar AlignStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"StyleAttributor\"]('align', 'text-align', config);\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Link; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return _sanitize; });\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\nvar Link = /*#__PURE__*/function (_Inline) {\n  _inherits(Link, _Inline);\n\n  var _super = _createSuper(Link);\n\n  function Link() {\n    _classCallCheck(this, Link);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Link, [{\n    key: \"format\",\n    value: function format(name, value) {\n      if (name !== this.statics.blotName || !value) {\n        _get(_getPrototypeOf(Link.prototype), \"format\", this).call(this, name, value);\n      } else {\n        this.domNode.setAttribute('href', this.constructor.sanitize(value));\n      }\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      var node = _get(_getPrototypeOf(Link), \"create\", this).call(this, value);\n\n      node.setAttribute('href', this.sanitize(value));\n      node.setAttribute('rel', 'noopener noreferrer');\n      node.setAttribute('target', '_blank');\n      return node;\n    }\n  }, {\n    key: \"formats\",\n    value: function formats(domNode) {\n      return domNode.getAttribute('href');\n    }\n  }, {\n    key: \"sanitize\",\n    value: function sanitize(url) {\n      return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n    }\n  }]);\n\n  return Link;\n}(_blots_inline__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"]);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n  var anchor = document.createElement('a');\n  anchor.href = url;\n  var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n  return protocols.indexOf(protocol) > -1;\n}\n\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (new WeakMap());\n\n/***/ }),\n/* 30 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BackgroundClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return BackgroundStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22);\n\n\nvar BackgroundClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('background', 'ql-bg', {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE\n});\nvar BackgroundStyle = new _color__WEBPACK_IMPORTED_MODULE_1__[/* ColorAttributor */ \"a\"]('background', 'background-color', {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE\n});\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return FontStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FontClass; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\nvar config = {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE,\n  whitelist: ['serif', 'monospace']\n};\nvar FontClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('font', 'ql-font', config);\n\nvar FontStyleAttributor = /*#__PURE__*/function (_StyleAttributor) {\n  _inherits(FontStyleAttributor, _StyleAttributor);\n\n  var _super = _createSuper(FontStyleAttributor);\n\n  function FontStyleAttributor() {\n    _classCallCheck(this, FontStyleAttributor);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(FontStyleAttributor, [{\n    key: \"value\",\n    value: function value(node) {\n      return _get(_getPrototypeOf(FontStyleAttributor.prototype), \"value\", this).call(this, node).replace(/[\"']/g, '');\n    }\n  }]);\n\n  return FontStyleAttributor;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"StyleAttributor\"]);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return SizeClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return SizeStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n\nvar SizeClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('size', 'ql-size', {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE,\n  whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"StyleAttributor\"]('size', 'font-size', {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE,\n  whitelist: ['10px', '18px', '32px']\n});\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\nvar Bold = /*#__PURE__*/function (_Inline) {\n  _inherits(Bold, _Inline);\n\n  var _super = _createSuper(Bold);\n\n  function Bold() {\n    _classCallCheck(this, Bold);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Bold, [{\n    key: \"optimize\",\n    value: function optimize(context) {\n      _get(_getPrototypeOf(Bold.prototype), \"optimize\", this).call(this, context);\n\n      if (this.domNode.tagName !== this.statics.tagName[0]) {\n        this.replaceWith(this.statics.blotName);\n      }\n    }\n  }], [{\n    key: \"create\",\n    value: function create() {\n      return _get(_getPrototypeOf(Bold), \"create\", this).call(this);\n    }\n  }, {\n    key: \"formats\",\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return Bold;\n}(_blots_inline__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"]);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n/* harmony default export */ __webpack_exports__[\"a\"] = (Bold);\n\n/***/ }),\n/* 34 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return History; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return getLastChangeIndex; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);\n/* harmony import */ var _utils_hasWindow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\nvar History = /*#__PURE__*/function (_Module) {\n  _inherits(History, _Module);\n\n  var _super = _createSuper(History);\n\n  function History(quill, options) {\n    var _this;\n\n    _classCallCheck(this, History);\n\n    _this = _super.call(this, quill, options);\n    _this.lastRecorded = 0;\n    _this.ignoreChange = false;\n\n    _this.clear();\n\n    _this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n      if (eventName !== _core_quill__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].events.TEXT_CHANGE || _this.ignoreChange) return;\n\n      if (!_this.options.userOnly || source === _core_quill__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].sources.USER) {\n        _this.record(delta, oldDelta);\n      } else {\n        _this.transform(delta);\n      }\n    });\n\n    _this.quill.keyboard.addBinding({\n      key: 'z',\n      shortKey: true\n    }, _this.undo.bind(_assertThisInitialized(_this)));\n\n    _this.quill.keyboard.addBinding({\n      key: 'z',\n      shortKey: true,\n      shiftKey: true\n    }, _this.redo.bind(_assertThisInitialized(_this)));\n\n    if (Object(_utils_hasWindow__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"])() && /Win/i.test(navigator.platform)) {\n      _this.quill.keyboard.addBinding({\n        key: 'y',\n        shortKey: true\n      }, _this.redo.bind(_assertThisInitialized(_this)));\n    }\n\n    _this.quill.root.addEventListener('beforeinput', function (event) {\n      if (event.inputType === 'historyUndo') {\n        _this.undo();\n\n        event.preventDefault();\n      } else if (event.inputType === 'historyRedo') {\n        _this.redo();\n\n        event.preventDefault();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(History, [{\n    key: \"change\",\n    value: function change(source, dest) {\n      if (this.stack[source].length === 0) return;\n      var delta = this.stack[source].pop();\n      var base = this.quill.getContents();\n      var inverseDelta = delta.invert(base);\n      this.stack[dest].push(inverseDelta);\n      this.lastRecorded = 0;\n      this.ignoreChange = true;\n      this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].sources.USER);\n      this.ignoreChange = false;\n      var index = getLastChangeIndex(this.quill.scroll, delta);\n      this.quill.setSelection(index);\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.stack = {\n        undo: [],\n        redo: []\n      };\n    }\n  }, {\n    key: \"cutoff\",\n    value: function cutoff() {\n      this.lastRecorded = 0;\n    }\n  }, {\n    key: \"record\",\n    value: function record(changeDelta, oldDelta) {\n      if (changeDelta.ops.length === 0) return;\n      this.stack.redo = [];\n      var undoDelta = changeDelta.invert(oldDelta);\n      var timestamp = Date.now();\n\n      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n        var delta = this.stack.undo.pop();\n        undoDelta = undoDelta.compose(delta);\n      } else {\n        this.lastRecorded = timestamp;\n      }\n\n      if (undoDelta.length() === 0) return;\n      this.stack.undo.push(undoDelta);\n\n      if (this.stack.undo.length > this.options.maxStack) {\n        this.stack.undo.shift();\n      }\n    }\n  }, {\n    key: \"redo\",\n    value: function redo() {\n      this.change('redo', 'undo');\n    }\n  }, {\n    key: \"transform\",\n    value: function transform(delta) {\n      transformStack(this.stack.undo, delta);\n      transformStack(this.stack.redo, delta);\n    }\n  }, {\n    key: \"undo\",\n    value: function undo() {\n      this.change('undo', 'redo');\n    }\n  }]);\n\n  return History;\n}(_core_module__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"]);\n\nHistory.DEFAULTS = {\n  delay: 1000,\n  maxStack: 100,\n  userOnly: false\n};\n\nfunction transformStack(stack, delta) {\n  var remoteDelta = delta;\n\n  for (var i = stack.length - 1; i >= 0; i -= 1) {\n    var oldDelta = stack[i];\n    stack[i] = remoteDelta.transform(oldDelta, true);\n    remoteDelta = oldDelta.transform(remoteDelta);\n\n    if (stack[i].length() === 0) {\n      stack.splice(i, 1);\n    }\n  }\n}\n\nfunction endsWithNewlineChange(scroll, delta) {\n  var lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some(function (attr) {\n      return scroll.query(attr, parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK) != null;\n    });\n  }\n\n  return false;\n}\n\nfunction getLastChangeIndex(scroll, delta) {\n  var deleteLength = delta.reduce(function (length, op) {\n    return length + (op.delete || 0);\n  }, 0);\n  var changeIndex = delta.length() - deleteLength;\n\n  if (endsWithNewlineChange(scroll, delta)) {\n    changeIndex -= 1;\n  }\n\n  return changeIndex;\n}\n\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(42);\nvar definePropertyModule = __webpack_require__(37);\nvar createPropertyDescriptor = __webpack_require__(47);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(42);\nvar IE8_DOM_DEFINE = __webpack_require__(68);\nvar anObject = __webpack_require__(39);\nvar toPrimitive = __webpack_require__(55);\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(38);\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Theme = /*#__PURE__*/function () {\n  function Theme(quill, options) {\n    _classCallCheck(this, Theme);\n\n    this.quill = quill;\n    this.options = options;\n    this.modules = {};\n  }\n\n  _createClass(Theme, [{\n    key: \"init\",\n    value: function init() {\n      var _this = this;\n\n      Object.keys(this.options.modules).forEach(function (name) {\n        if (_this.modules[name] == null) {\n          _this.addModule(name);\n        }\n      });\n    }\n  }, {\n    key: \"addModule\",\n    value: function addModule(name) {\n      var ModuleClass = this.quill.constructor.import(\"modules/\".concat(name));\n      this.modules[name] = new ModuleClass(this.quill, this.options.modules[name] || {});\n      return this.modules[name];\n    }\n  }]);\n\n  return Theme;\n}();\n\nTheme.DEFAULTS = {\n  modules: {}\n};\nTheme.themes = {\n  default: Theme\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (Theme);\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(36);\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\nvar GUARD_TEXT = \"\\uFEFF\";\n\nvar Embed = /*#__PURE__*/function (_EmbedBlot) {\n  _inherits(Embed, _EmbedBlot);\n\n  var _super = _createSuper(Embed);\n\n  function Embed(scroll, node) {\n    var _this;\n\n    _classCallCheck(this, Embed);\n\n    _this = _super.call(this, scroll, node);\n    _this.contentNode = document.createElement('span');\n\n    _this.contentNode.setAttribute('contenteditable', false);\n\n    Array.from(_this.domNode.childNodes).forEach(function (childNode) {\n      _this.contentNode.appendChild(childNode);\n    });\n    _this.leftGuard = document.createTextNode(GUARD_TEXT);\n    _this.rightGuard = document.createTextNode(GUARD_TEXT);\n\n    _this.domNode.appendChild(_this.leftGuard);\n\n    _this.domNode.appendChild(_this.contentNode);\n\n    _this.domNode.appendChild(_this.rightGuard);\n\n    return _this;\n  }\n\n  _createClass(Embed, [{\n    key: \"index\",\n    value: function index(node, offset) {\n      if (node === this.leftGuard) return 0;\n      if (node === this.rightGuard) return 1;\n      return _get(_getPrototypeOf(Embed.prototype), \"index\", this).call(this, node, offset);\n    }\n  }, {\n    key: \"restore\",\n    value: function restore(node) {\n      var range;\n      var textNode;\n      var text = node.data.split(GUARD_TEXT).join('');\n\n      if (node === this.leftGuard) {\n        if (this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"]) {\n          var prevLength = this.prev.length();\n          this.prev.insertAt(prevLength, text);\n          range = {\n            startNode: this.prev.domNode,\n            startOffset: prevLength + text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(this.scroll.create(textNode), this);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      } else if (node === this.rightGuard) {\n        if (this.next instanceof _text__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"]) {\n          this.next.insertAt(0, text);\n          range = {\n            startNode: this.next.domNode,\n            startOffset: text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(this.scroll.create(textNode), this.next);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      }\n\n      node.data = GUARD_TEXT;\n      return range;\n    }\n  }, {\n    key: \"update\",\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      mutations.forEach(function (mutation) {\n        if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n          var range = _this2.restore(mutation.target);\n\n          if (range) context.range = range;\n        }\n      });\n    }\n  }]);\n\n  return Embed;\n}(parchment__WEBPACK_IMPORTED_MODULE_0__[\"EmbedBlot\"]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Embed);\n\n/***/ }),\n/* 44 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Clipboard; });\n/* unused harmony export matchAttributor */\n/* unused harmony export matchBlot */\n/* unused harmony export matchNewline */\n/* unused harmony export matchText */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return traverse; });\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(11);\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(27);\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(30);\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(13);\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(22);\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(23);\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(31);\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(32);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"])('quill:clipboard');\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar CLIPBOARD_CONFIG = [[TEXT_NODE, matchText], [TEXT_NODE, matchNewline], ['br', matchBreak], [ELEMENT_NODE, matchNewline], [ELEMENT_NODE, matchBlot], [ELEMENT_NODE, matchAttributor], [ELEMENT_NODE, matchStyles], ['li', matchIndent], ['ol, ul', matchList], ['pre', matchCodeBlock], ['tr', matchTable], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['strike', matchAlias.bind(matchAlias, 'strike')], ['style', matchIgnore]];\nvar ATTRIBUTE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_6__[/* AlignAttribute */ \"a\"], _formats_direction__WEBPACK_IMPORTED_MODULE_10__[/* DirectionAttribute */ \"a\"]].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\nvar STYLE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_6__[/* AlignStyle */ \"c\"], _formats_background__WEBPACK_IMPORTED_MODULE_7__[/* BackgroundStyle */ \"b\"], _formats_color__WEBPACK_IMPORTED_MODULE_9__[/* ColorStyle */ \"c\"], _formats_direction__WEBPACK_IMPORTED_MODULE_10__[/* DirectionStyle */ \"c\"], _formats_font__WEBPACK_IMPORTED_MODULE_11__[/* FontStyle */ \"b\"], _formats_size__WEBPACK_IMPORTED_MODULE_12__[/* SizeStyle */ \"b\"]].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar Clipboard = /*#__PURE__*/function (_Module) {\n  _inherits(Clipboard, _Module);\n\n  var _super = _createSuper(Clipboard);\n\n  function Clipboard(quill, options) {\n    var _this;\n\n    _classCallCheck(this, Clipboard);\n\n    _this = _super.call(this, quill, options);\n\n    _this.quill.root.addEventListener('copy', function (e) {\n      return _this.onCaptureCopy(e, false);\n    });\n\n    _this.quill.root.addEventListener('cut', function (e) {\n      return _this.onCaptureCopy(e, true);\n    });\n\n    _this.quill.root.addEventListener('paste', _this.onCapturePaste.bind(_assertThisInitialized(_this)));\n\n    _this.matchers = [];\n    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          selector = _ref2[0],\n          matcher = _ref2[1];\n\n      _this.addMatcher(selector, matcher);\n    });\n    return _this;\n  }\n\n  _createClass(Clipboard, [{\n    key: \"addMatcher\",\n    value: function addMatcher(selector, matcher) {\n      this.matchers.push([selector, matcher]);\n    }\n  }, {\n    key: \"convert\",\n    value: function convert(_ref3) {\n      var html = _ref3.html,\n          text = _ref3.text;\n      var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (formats[_formats_code__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"c\"].blotName]) {\n        return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(text, _defineProperty({}, _formats_code__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"c\"].blotName, formats[_formats_code__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"c\"].blotName]));\n      }\n\n      if (!html) {\n        return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(text || '');\n      }\n\n      var doc = new DOMParser().parseFromString(html, 'text/html');\n      var container = doc.body;\n      var nodeMatches = new WeakMap();\n\n      var _this$prepareMatching = this.prepareMatching(container, nodeMatches),\n          _this$prepareMatching2 = _slicedToArray(_this$prepareMatching, 2),\n          elementMatchers = _this$prepareMatching2[0],\n          textMatchers = _this$prepareMatching2[1];\n\n      var delta = traverse(this.quill.scroll, container, elementMatchers, textMatchers, nodeMatches); // Remove trailing newline\n\n      if (deltaEndsWith(delta, '\\n') && (delta.ops[delta.ops.length - 1].attributes == null || formats.table)) {\n        return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(delta.length() - 1).delete(1));\n      }\n\n      return delta;\n    }\n  }, {\n    key: \"dangerouslyPasteHTML\",\n    value: function dangerouslyPasteHTML(index, html) {\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.API;\n\n      if (typeof index === 'string') {\n        var delta = this.convert({\n          html: index,\n          text: ''\n        });\n        this.quill.setContents(delta, html);\n        this.quill.setSelection(0, _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT);\n      } else {\n        var paste = this.convert({\n          html: html,\n          text: ''\n        });\n        this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(index).concat(paste), source);\n        this.quill.setSelection(index + paste.length(), _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT);\n      }\n    }\n  }, {\n    key: \"onCaptureCopy\",\n    value: function onCaptureCopy(e) {\n      var isCut = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (e.defaultPrevented) return;\n\n      if (e.clipboardData) {\n        e.preventDefault();\n      } else {\n        return;\n      }\n\n      var _this$quill$selection = this.quill.selection.getRange(),\n          _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n          range = _this$quill$selection2[0];\n\n      if (range == null) return;\n\n      var _this$onCopy = this.onCopy(range, isCut),\n          html = _this$onCopy.html,\n          text = _this$onCopy.text;\n\n      e.clipboardData.setData('text/plain', text);\n      e.clipboardData.setData('text/html', html);\n\n      if (isCut) {\n        this.raiseCallback('onCut', e);\n        this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.USER);\n      }\n    }\n  }, {\n    key: \"onCapturePaste\",\n    value: function onCapturePaste(e) {\n      if (e.defaultPrevented || !this.quill.isEnabled()) return;\n      this.raiseCallback('onPaste', e);\n\n      if (e.clipboardData) {\n        e.preventDefault();\n      } else {\n        return;\n      }\n\n      var range = this.quill.getSelection(true);\n      if (range == null) return;\n      var html = e.clipboardData.getData('text/html');\n      var text = e.clipboardData.getData('text/plain');\n      var files = Array.from(e.clipboardData.files || []);\n\n      if (!html && files.length > 0) {\n        this.quill.uploader.upload(range, files);\n      } else {\n        this.onPaste(range, {\n          html: html,\n          text: text\n        });\n      }\n    }\n  }, {\n    key: \"raiseCallback\",\n    value: function raiseCallback(name, event) {\n      var callback = this.options[name];\n\n      if (callback && typeof callback === 'function') {\n        callback(event);\n      }\n    }\n  }, {\n    key: \"onCopy\",\n    value: function onCopy(range) {\n      var text = this.quill.getText(range);\n      var html = this.quill.getSemanticHTML(range);\n      return {\n        html: html,\n        text: text\n      };\n    }\n  }, {\n    key: \"onPaste\",\n    value: function onPaste(range, _ref4) {\n      var text = _ref4.text,\n          html = _ref4.html;\n      var formats = this.quill.getFormat(range.index);\n      var pastedDelta = this.convert({\n        text: text,\n        html: html\n      }, formats);\n      debug.log('onPaste', pastedDelta, {\n        text: text,\n        html: html\n      });\n      var delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length).concat(pastedDelta);\n      this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.USER); // range.length contributes to delta.length()\n\n      this.quill.setSelection(delta.length() - range.length, _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT);\n      this.quill.scrollIntoView();\n    }\n  }, {\n    key: \"prepareMatching\",\n    value: function prepareMatching(container, nodeMatches) {\n      var elementMatchers = [];\n      var textMatchers = [];\n      this.matchers.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            selector = _pair[0],\n            matcher = _pair[1];\n\n        switch (selector) {\n          case TEXT_NODE:\n            textMatchers.push(matcher);\n            break;\n\n          case ELEMENT_NODE:\n            elementMatchers.push(matcher);\n            break;\n\n          default:\n            Array.from(container.querySelectorAll(selector)).forEach(function (node) {\n              if (nodeMatches.has(node)) {\n                var matches = nodeMatches.get(node);\n                matches.push(matcher);\n              } else {\n                nodeMatches.set(node, [matcher]);\n              }\n            });\n            break;\n        }\n      });\n      return [elementMatchers, textMatchers];\n    }\n  }]);\n\n  return Clipboard;\n}(_core_module__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"]);\n\nClipboard.DEFAULTS = {\n  matchers: []\n};\n\nfunction applyFormat(delta, format, value) {\n  if (_typeof(format) === 'object') {\n    return Object.keys(format).reduce(function (newDelta, key) {\n      return applyFormat(newDelta, key, format[key]);\n    }, delta);\n  }\n\n  return delta.reduce(function (newDelta, op) {\n    if (op.attributes && op.attributes[format]) {\n      return newDelta.push(op);\n    }\n\n    var formats = value ? _defineProperty({}, format, value) : {};\n    return newDelta.insert(op.insert, _objectSpread(_objectSpread({}, formats), op.attributes));\n  }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\n}\n\nfunction deltaEndsWith(delta, text) {\n  var endText = '';\n\n  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i // eslint-disable-line no-plusplus\n  ) {\n    var op = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n\n  return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n  if (node.childNodes.length === 0) return false; // Exclude embed blocks\n\n  return ['address', 'article', 'blockquote', 'canvas', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'iframe', 'li', 'main', 'nav', 'ol', 'output', 'p', 'pre', 'section', 'table', 'td', 'tr', 'ul', 'video'].indexOf(node.tagName.toLowerCase()) !== -1;\n}\n\nvar preNodes = new WeakMap();\n\nfunction isPre(node) {\n  if (node == null) return false;\n\n  if (!preNodes.has(node)) {\n    if (node.tagName === 'PRE') {\n      preNodes.set(node, true);\n    } else {\n      preNodes.set(node, isPre(node.parentNode));\n    }\n  }\n\n  return preNodes.get(node);\n}\n\nfunction traverse(scroll, node, elementMatchers, textMatchers, nodeMatches) {\n  // Post-order\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce(function (delta, matcher) {\n      return matcher(node, delta, scroll);\n    }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\n  }\n\n  if (node.nodeType === node.ELEMENT_NODE) {\n    return Array.from(node.childNodes || []).reduce(function (delta, childNode) {\n      var childrenDelta = traverse(scroll, childNode, elementMatchers, textMatchers, nodeMatches);\n\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce(function (reducedDelta, matcher) {\n          return matcher(childNode, reducedDelta, scroll);\n        }, childrenDelta);\n        childrenDelta = (nodeMatches.get(childNode) || []).reduce(function (reducedDelta, matcher) {\n          return matcher(childNode, reducedDelta, scroll);\n        }, childrenDelta);\n      }\n\n      return delta.concat(childrenDelta);\n    }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\n  }\n\n  return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\n}\n\nfunction matchAlias(format, node, delta) {\n  return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta, scroll) {\n  var attributes = parchment__WEBPACK_IMPORTED_MODULE_1__[\"Attributor\"].keys(node);\n  var classes = parchment__WEBPACK_IMPORTED_MODULE_1__[\"ClassAttributor\"].keys(node);\n  var styles = parchment__WEBPACK_IMPORTED_MODULE_1__[\"StyleAttributor\"].keys(node);\n  var formats = {};\n  attributes.concat(classes).concat(styles).forEach(function (name) {\n    var attr = scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_1__[\"Scope\"].ATTRIBUTE);\n\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n\n    attr = ATTRIBUTE_ATTRIBUTORS[name];\n\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n\n    attr = STYLE_ATTRIBUTORS[name];\n\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n  });\n\n  if (Object.keys(formats).length > 0) {\n    return applyFormat(delta, formats);\n  }\n\n  return delta;\n}\n\nfunction matchBlot(node, delta, scroll) {\n  var match = scroll.query(node);\n  if (match == null) return delta;\n\n  if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_1__[\"EmbedBlot\"]) {\n    var embed = {};\n    var value = match.value(node);\n\n    if (value != null) {\n      embed[match.blotName] = value;\n      return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(embed, match.formats(node, scroll));\n    }\n  } else {\n    if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_1__[\"BlockBlot\"] && !deltaEndsWith(delta, '\\n')) {\n      delta.insert('\\n');\n    }\n\n    if (typeof match.formats === 'function') {\n      return applyFormat(delta, match.blotName, match.formats(node, scroll));\n    }\n  }\n\n  return delta;\n}\n\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n\n  return delta;\n}\n\nfunction matchCodeBlock(node, delta, scroll) {\n  var match = scroll.query('code-block');\n  var language = match ? match.formats(node, scroll) : true;\n  return applyFormat(delta, 'code-block', language);\n}\n\nfunction matchIgnore() {\n  return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\n}\n\nfunction matchIndent(node, delta, scroll) {\n  var match = scroll.query(node);\n\n  if (match == null || match.blotName !== 'list' || !deltaEndsWith(delta, '\\n')) {\n    return delta;\n  }\n\n  var indent = -1;\n  var parent = node.parentNode;\n\n  while (parent != null) {\n    if (['OL', 'UL'].indexOf(parent.tagName) !== -1) {\n      indent += 1;\n    }\n\n    parent = parent.parentNode;\n  }\n\n  if (indent <= 0) return delta;\n  return delta.reduce(function (composed, op) {\n    if (op.attributes && typeof op.attributes.indent === 'number') {\n      return composed.push(op);\n    }\n\n    return composed.insert(op.insert, _objectSpread({\n      indent: indent\n    }, op.attributes || {}));\n  }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\n}\n\nfunction matchList(node, delta) {\n  var list = node.tagName === 'OL' ? 'ordered' : 'bullet';\n  return applyFormat(delta, 'list', list);\n}\n\nfunction matchNewline(node, delta, scroll) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    if (isLine(node)) {\n      return delta.insert('\\n');\n    }\n\n    if (delta.length() > 0 && node.nextSibling) {\n      var nextSibling = node.nextSibling;\n\n      while (nextSibling != null) {\n        if (isLine(nextSibling)) {\n          return delta.insert('\\n');\n        }\n\n        var match = scroll.query(nextSibling);\n\n        if (match && match.prototype instanceof _blots_block__WEBPACK_IMPORTED_MODULE_2__[/* BlockEmbed */ \"a\"]) {\n          return delta.insert('\\n');\n        }\n\n        nextSibling = nextSibling.firstChild;\n      }\n    }\n  }\n\n  return delta;\n}\n\nfunction matchStyles(node, delta) {\n  var formats = {};\n  var style = node.style || {};\n\n  if (style.fontStyle === 'italic') {\n    formats.italic = true;\n  }\n\n  if (style.textDecoration.indexOf('underline') !== -1) {\n    formats.underline = true;\n  }\n\n  if (style.textDecoration.indexOf('line-through') !== -1) {\n    formats.strike = true;\n  }\n\n  if (style.fontWeight.indexOf('bold') === 0 || parseInt(style.fontWeight, 10) >= 700) {\n    formats.bold = true;\n  }\n\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n\n  if (parseFloat(style.textIndent || 0) > 0) {\n    // Could be 0.5in\n    return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert('\\t').concat(delta);\n  }\n\n  return delta;\n}\n\nfunction matchTable(node, delta) {\n  var table = node.parentNode.tagName === 'TABLE' ? node.parentNode : node.parentNode.parentNode;\n  var rows = Array.from(table.querySelectorAll('tr'));\n  var row = rows.indexOf(node) + 1;\n  return applyFormat(delta, 'table', row);\n}\n\nfunction matchText(node, delta) {\n  var text = node.data; // Word represents empty line with <o:p>&nbsp;</o:p>\n\n  if (node.parentNode.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n\n  if (text.trim().length === 0 && text.indexOf('\\n') !== -1) {\n    return delta;\n  }\n\n  if (!isPre(node)) {\n    var replacer = function replacer(collapse, match) {\n      var replaced = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\n      return replaced.length < 1 && collapse ? ' ' : replaced;\n    };\n\n    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n\n    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n    }\n\n    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n    }\n  }\n\n  return delta.insert(text);\n}\n\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\nvar getOwnPropertyDescriptor = __webpack_require__(58).f;\nvar createNonEnumerableProperty = __webpack_require__(35);\nvar redefine = __webpack_require__(72);\nvar setGlobal = __webpack_require__(54);\nvar copyConstructorProperties = __webpack_require__(96);\nvar isForced = __webpack_require__(101);\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(53);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return SyntaxCodeBlock; });\n/* unused harmony export CodeToken */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return Syntax; });\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11);\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5);\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8);\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(17);\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7);\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(13);\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(44);\n/* harmony import */ var _utils_hasWindow__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(10);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TokenAttributor = new parchment__WEBPACK_IMPORTED_MODULE_1__[\"ClassAttributor\"]('code-token', 'hljs', {\n  scope: parchment__WEBPACK_IMPORTED_MODULE_1__[\"Scope\"].INLINE\n});\n\nvar CodeToken = /*#__PURE__*/function (_Inline) {\n  _inherits(CodeToken, _Inline);\n\n  var _super = _createSuper(CodeToken);\n\n  _createClass(CodeToken, null, [{\n    key: \"formats\",\n    value: function formats(node, scroll) {\n      while (node != null && node !== scroll.domNode) {\n        if (node.classList && node.classList.contains(_formats_code__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"c\"].className)) {\n          return _get(_getPrototypeOf(CodeToken), \"formats\", this).call(this, node, scroll);\n        }\n\n        node = node.parentNode;\n      }\n\n      return undefined;\n    }\n  }]);\n\n  function CodeToken(scroll, domNode, value) {\n    var _this;\n\n    _classCallCheck(this, CodeToken);\n\n    _this = _super.call(this, scroll, domNode, value);\n    TokenAttributor.add(_this.domNode, value);\n    return _this;\n  }\n\n  _createClass(CodeToken, [{\n    key: \"format\",\n    value: function format(_format, value) {\n      if (_format !== CodeToken.blotName) {\n        _get(_getPrototypeOf(CodeToken.prototype), \"format\", this).call(this, _format, value);\n      } else if (value) {\n        TokenAttributor.add(this.domNode, value);\n      } else {\n        TokenAttributor.remove(this.domNode);\n        this.domNode.classList.remove(this.statics.className);\n      }\n    }\n  }, {\n    key: \"optimize\",\n    value: function optimize() {\n      var _get2;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      (_get2 = _get(_getPrototypeOf(CodeToken.prototype), \"optimize\", this)).call.apply(_get2, [this].concat(args));\n\n      if (!TokenAttributor.value(this.domNode)) {\n        this.unwrap();\n      }\n    }\n  }]);\n\n  return CodeToken;\n}(_blots_inline__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"]);\n\nCodeToken.blotName = 'code-token';\nCodeToken.className = 'ql-token';\n\nvar SyntaxCodeBlock = /*#__PURE__*/function (_CodeBlock) {\n  _inherits(SyntaxCodeBlock, _CodeBlock);\n\n  var _super2 = _createSuper(SyntaxCodeBlock);\n\n  function SyntaxCodeBlock() {\n    _classCallCheck(this, SyntaxCodeBlock);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(SyntaxCodeBlock, [{\n    key: \"format\",\n    // Syntax module will register\n    value: function format(name, value) {\n      if (name === this.statics.blotName && value) {\n        this.domNode.setAttribute('data-language', value);\n      } else {\n        _get(_getPrototypeOf(SyntaxCodeBlock.prototype), \"format\", this).call(this, name, value);\n      }\n    }\n  }, {\n    key: \"replaceWith\",\n    value: function replaceWith(name, value) {\n      this.formatAt(0, this.length(), CodeToken.blotName, false);\n      return _get(_getPrototypeOf(SyntaxCodeBlock.prototype), \"replaceWith\", this).call(this, name, value);\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      var domNode = _get(_getPrototypeOf(SyntaxCodeBlock), \"create\", this).call(this, value);\n\n      if (typeof value === 'string') {\n        domNode.setAttribute('data-language', value);\n      }\n\n      return domNode;\n    }\n  }, {\n    key: \"formats\",\n    value: function formats(domNode) {\n      return domNode.getAttribute('data-language') || 'plain';\n    }\n  }, {\n    key: \"register\",\n    value: function register() {}\n  }]);\n\n  return SyntaxCodeBlock;\n}(_formats_code__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"c\"]);\n\nvar SyntaxCodeBlockContainer = /*#__PURE__*/function (_CodeBlockContainer) {\n  _inherits(SyntaxCodeBlockContainer, _CodeBlockContainer);\n\n  var _super3 = _createSuper(SyntaxCodeBlockContainer);\n\n  function SyntaxCodeBlockContainer() {\n    _classCallCheck(this, SyntaxCodeBlockContainer);\n\n    return _super3.apply(this, arguments);\n  }\n\n  _createClass(SyntaxCodeBlockContainer, [{\n    key: \"attach\",\n    value: function attach() {\n      _get(_getPrototypeOf(SyntaxCodeBlockContainer.prototype), \"attach\", this).call(this);\n\n      this.forceNext = false;\n      this.scroll.emitMount(this);\n    }\n  }, {\n    key: \"format\",\n    value: function format(name, value) {\n      if (name === SyntaxCodeBlock.blotName) {\n        this.forceNext = true;\n        this.children.forEach(function (child) {\n          child.format(name, value);\n        });\n      }\n    }\n  }, {\n    key: \"formatAt\",\n    value: function formatAt(index, length, name, value) {\n      if (name === SyntaxCodeBlock.blotName) {\n        this.forceNext = true;\n      }\n\n      _get(_getPrototypeOf(SyntaxCodeBlockContainer.prototype), \"formatAt\", this).call(this, index, length, name, value);\n    }\n  }, {\n    key: \"highlight\",\n    value: function highlight(_highlight) {\n      var _this2 = this;\n\n      var forced = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (this.children.head == null) return;\n      var nodes = Array.from(this.domNode.childNodes).filter(function (node) {\n        return node !== _this2.uiNode;\n      });\n      var text = \"\".concat(nodes.map(function (node) {\n        return node.textContent;\n      }).join('\\n'), \"\\n\");\n      var language = SyntaxCodeBlock.formats(this.children.head.domNode);\n\n      if (forced || this.forceNext || this.cachedText !== text) {\n        if (text.trim().length > 0 || this.cachedText == null) {\n          var oldDelta = this.children.reduce(function (delta, child) {\n            return delta.concat(Object(_blots_block__WEBPACK_IMPORTED_MODULE_5__[/* blockDelta */ \"b\"])(child, false));\n          }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\n\n          var delta = _highlight(text, language);\n\n          oldDelta.diff(delta).reduce(function (index, _ref) {\n            var retain = _ref.retain,\n                attributes = _ref.attributes;\n            // Should be all retains\n            if (!retain) return index;\n\n            if (attributes) {\n              Object.keys(attributes).forEach(function (format) {\n                if ([SyntaxCodeBlock.blotName, CodeToken.blotName].indexOf(format) !== -1) {\n                  _this2.formatAt(index, retain, format, attributes[format]);\n                }\n              });\n            }\n\n            return index + retain;\n          }, 0);\n        }\n\n        this.cachedText = text;\n        this.forceNext = false;\n      }\n    }\n  }, {\n    key: \"html\",\n    value: function html(index, length) {\n      var _this$children$find = this.children.find(index),\n          _this$children$find2 = _slicedToArray(_this$children$find, 1),\n          codeBlock = _this$children$find2[0];\n\n      var language = codeBlock ? SyntaxCodeBlock.formats(codeBlock.domNode) : 'plain';\n      return \"<pre data-language=\\\"\".concat(language, \"\\\">\\n\").concat(this.code(index, length), \"\\n</pre>\");\n    }\n  }, {\n    key: \"optimize\",\n    value: function optimize(context) {\n      _get(_getPrototypeOf(SyntaxCodeBlockContainer.prototype), \"optimize\", this).call(this, context);\n\n      if (this.parent != null && this.children.head != null && this.uiNode != null) {\n        var language = SyntaxCodeBlock.formats(this.children.head.domNode);\n\n        if (language !== this.uiNode.value) {\n          this.uiNode.value = language;\n        }\n      }\n    }\n  }]);\n\n  return SyntaxCodeBlockContainer;\n}(_formats_code__WEBPACK_IMPORTED_MODULE_9__[/* CodeBlockContainer */ \"b\"]);\n\nSyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock];\nSyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer;\nSyntaxCodeBlock.allowedChildren = [CodeToken, _blots_cursor__WEBPACK_IMPORTED_MODULE_7__[/* default */ \"a\"], _blots_text__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"], _blots_break__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"]];\n\nvar Syntax = /*#__PURE__*/function (_Module) {\n  _inherits(Syntax, _Module);\n\n  var _super4 = _createSuper(Syntax);\n\n  _createClass(Syntax, null, [{\n    key: \"register\",\n    value: function register() {\n      _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].register(CodeToken, true);\n      _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].register(SyntaxCodeBlock, true);\n      _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].register(SyntaxCodeBlockContainer, true);\n    }\n  }]);\n\n  function Syntax(quill, options) {\n    var _this3;\n\n    _classCallCheck(this, Syntax);\n\n    _this3 = _super4.call(this, quill, options);\n\n    if (_this3.options.hljs == null) {\n      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n    }\n\n    _this3.languages = _this3.options.languages.reduce(function (memo, _ref2) {\n      var key = _ref2.key;\n      memo[key] = true;\n      return memo;\n    }, {});\n    _this3.highlightBlot = _this3.highlightBlot.bind(_assertThisInitialized(_this3));\n\n    _this3.initListener();\n\n    _this3.initTimer();\n\n    return _this3;\n  }\n\n  _createClass(Syntax, [{\n    key: \"initListener\",\n    value: function initListener() {\n      var _this4 = this;\n\n      this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].events.SCROLL_BLOT_MOUNT, function (blot) {\n        if (!(blot instanceof SyntaxCodeBlockContainer)) return;\n\n        var select = _this4.quill.root.ownerDocument.createElement('select');\n\n        _this4.options.languages.forEach(function (_ref3) {\n          var key = _ref3.key,\n              label = _ref3.label;\n          var option = select.ownerDocument.createElement('option');\n          option.textContent = label;\n          option.setAttribute('value', key);\n          select.appendChild(option);\n        });\n\n        select.addEventListener('change', function () {\n          blot.format(SyntaxCodeBlock.blotName, select.value);\n\n          _this4.quill.root.focus(); // Prevent scrolling\n\n\n          _this4.highlight(blot, true);\n        });\n\n        if (blot.uiNode == null) {\n          blot.attachUI(select);\n\n          if (blot.children.head) {\n            select.value = SyntaxCodeBlock.formats(blot.children.head.domNode);\n          }\n        }\n      });\n    }\n  }, {\n    key: \"initTimer\",\n    value: function initTimer() {\n      var _this5 = this;\n\n      var timer = null;\n      this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].events.SCROLL_OPTIMIZE, function () {\n        clearTimeout(timer);\n        timer = setTimeout(function () {\n          _this5.highlight();\n\n          timer = null;\n        }, _this5.options.interval);\n      });\n    }\n  }, {\n    key: \"highlight\",\n    value: function highlight() {\n      var _this6 = this;\n\n      var blot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (this.quill.selection.composing) return;\n      this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.USER);\n      var range = this.quill.getSelection();\n      var blots = blot == null ? this.quill.scroll.descendants(SyntaxCodeBlockContainer) : [blot];\n      blots.forEach(function (container) {\n        container.highlight(_this6.highlightBlot, force);\n      });\n      this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT);\n\n      if (range != null) {\n        this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].sources.SILENT);\n      }\n    }\n  }, {\n    key: \"highlightBlot\",\n    value: function highlightBlot(text) {\n      var language = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'plain';\n      language = this.languages[language] ? language : 'plain';\n\n      if (language === 'plain') {\n        return Object(_blots_text__WEBPACK_IMPORTED_MODULE_8__[/* escapeText */ \"b\"])(text).split('\\n').reduce(function (delta, line, i) {\n          if (i !== 0) {\n            delta.insert('\\n', _defineProperty({}, _formats_code__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"c\"].blotName, language));\n          }\n\n          return delta.insert(line);\n        }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\n      }\n\n      var container = this.quill.root.ownerDocument.createElement('div');\n      container.classList.add(_formats_code__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"c\"].className);\n      container.innerHTML = this.options.hljs.highlight(language, text).value;\n      return Object(_clipboard__WEBPACK_IMPORTED_MODULE_10__[/* traverse */ \"b\"])(this.quill.scroll, container, [function (node, delta) {\n        var value = TokenAttributor.value(node);\n\n        if (value) {\n          return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(delta.length(), _defineProperty({}, CodeToken.blotName, value)));\n        }\n\n        return delta;\n      }], [function (node, delta) {\n        return node.data.split('\\n').reduce(function (memo, nodeText, i) {\n          if (i !== 0) memo.insert('\\n', _defineProperty({}, _formats_code__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"c\"].blotName, language));\n          return memo.insert(nodeText);\n        }, delta);\n      }], new WeakMap());\n    }\n  }]);\n\n  return Syntax;\n}(_core_module__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"]);\n\nSyntax.DEFAULTS = {\n  hljs: function () {\n    if (Object(_utils_hasWindow__WEBPACK_IMPORTED_MODULE_11__[/* default */ \"a\"])()) {\n      return window.hljs;\n    }\n\n    return null;\n  }(),\n  interval: 1000,\n  languages: [{\n    key: 'plain',\n    label: 'Plain'\n  }, {\n    key: 'bash',\n    label: 'Bash'\n  }, {\n    key: 'cpp',\n    label: 'C++'\n  }, {\n    key: 'cs',\n    label: 'C#'\n  }, {\n    key: 'css',\n    label: 'CSS'\n  }, {\n    key: 'diff',\n    label: 'Diff'\n  }, {\n    key: 'xml',\n    label: 'HTML/XML'\n  }, {\n    key: 'java',\n    label: 'Java'\n  }, {\n    key: 'javascript',\n    label: 'Javascript'\n  }, {\n    key: 'markdown',\n    label: 'Markdown'\n  }, {\n    key: 'php',\n    label: 'PHP'\n  }, {\n    key: 'python',\n    label: 'Python'\n  }, {\n    key: 'ruby',\n    label: 'Ruby'\n  }, {\n    key: 'sql',\n    label: 'SQL'\n  }]\n};\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\nvar createNonEnumerableProperty = __webpack_require__(35);\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(38);\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(70);\nvar uid = __webpack_require__(71);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(42);\nvar propertyIsEnumerableModule = __webpack_require__(94);\nvar createPropertyDescriptor = __webpack_require__(47);\nvar toIndexedObject = __webpack_require__(59);\nvar toPrimitive = __webpack_require__(55);\nvar has = __webpack_require__(25);\nvar IE8_DOM_DEFINE = __webpack_require__(68);\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(95);\nvar requireObjectCoercible = __webpack_require__(46);\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(46);\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Iterator_1 = __importDefault(__webpack_require__(87));\r\nvar Op;\r\n(function (Op) {\r\n    function iterator(ops) {\r\n        return new Iterator_1.default(ops);\r\n    }\r\n    Op.iterator = iterator;\r\n    function length(op) {\r\n        if (typeof op.delete === 'number') {\r\n            return op.delete;\r\n        }\r\n        else if (typeof op.retain === 'number') {\r\n            return op.retain;\r\n        }\r\n        else {\r\n            return typeof op.insert === 'string' ? op.insert.length : 1;\r\n        }\r\n    }\r\n    Op.length = length;\r\n})(Op || (Op = {}));\r\nexports.default = Op;\r\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n  module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(92);\nvar global = __webpack_require__(20);\nvar isObject = __webpack_require__(38);\nvar createNonEnumerableProperty = __webpack_require__(35);\nvar objectHas = __webpack_require__(25);\nvar sharedKey = __webpack_require__(56);\nvar hiddenKeys = __webpack_require__(57);\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = new WeakMap();\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(67);\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\nvar setGlobal = __webpack_require__(54);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(42);\nvar fails = __webpack_require__(36);\nvar createElement = __webpack_require__(69);\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\nvar isObject = __webpack_require__(38);\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(48);\nvar store = __webpack_require__(67);\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.6.5',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\nvar createNonEnumerableProperty = __webpack_require__(35);\nvar has = __webpack_require__(25);\nvar setGlobal = __webpack_require__(54);\nvar inspectSource = __webpack_require__(66);\nvar InternalStateModule = __webpack_require__(65);\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(74);\nvar global = __webpack_require__(20);\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\n\nmodule.exports = global;\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(25);\nvar toIndexedObject = __webpack_require__(59);\nvar indexOf = __webpack_require__(99).indexOf;\nvar hiddenKeys = __webpack_require__(57);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(53);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(78);\nvar createNonEnumerableProperty = __webpack_require__(35);\nvar has = __webpack_require__(25);\nvar wellKnownSymbol = __webpack_require__(21);\nvar IS_PURE = __webpack_require__(48);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(25);\nvar toObject = __webpack_require__(62);\nvar sharedKey = __webpack_require__(56);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(103);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(36);\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(39);\nvar defineProperties = __webpack_require__(105);\nvar enumBugKeys = __webpack_require__(61);\nvar hiddenKeys = __webpack_require__(57);\nvar html = __webpack_require__(107);\nvar documentCreateElement = __webpack_require__(69);\nvar sharedKey = __webpack_require__(56);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(37).f;\nvar has = __webpack_require__(25);\nvar wellKnownSymbol = __webpack_require__(21);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(112);\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\nvar bind = __webpack_require__(82);\n\nvar call = Function.call;\n\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n  return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/core-js/features/array/from.js\nvar from = __webpack_require__(88);\n\n// EXTERNAL MODULE: ./node_modules/core-js/features/array/fill.js\nvar fill = __webpack_require__(120);\n\n// EXTERNAL MODULE: ./node_modules/core-js/features/string/ends-with.js\nvar ends_with = __webpack_require__(125);\n\n// CONCATENATED MODULE: ./polyfills.js\n// IE11 support\r\n\r\n\r\n\r\n\n// EXTERNAL MODULE: ./core.js + 1 modules\nvar core = __webpack_require__(18);\n\n// EXTERNAL MODULE: ./formats/align.js\nvar align = __webpack_require__(27);\n\n// EXTERNAL MODULE: ./formats/direction.js\nvar direction = __webpack_require__(23);\n\n// EXTERNAL MODULE: ./node_modules/parchment/src/parchment.ts + 17 modules\nvar parchment = __webpack_require__(2);\n\n// CONCATENATED MODULE: ./formats/indent.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\nvar IndentAttributor = /*#__PURE__*/function (_ClassAttributor) {\n  _inherits(IndentAttributor, _ClassAttributor);\n\n  var _super = _createSuper(IndentAttributor);\n\n  function IndentAttributor() {\n    _classCallCheck(this, IndentAttributor);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(IndentAttributor, [{\n    key: \"add\",\n    value: function add(node, value) {\n      if (value === '+1' || value === '-1') {\n        var indent = this.value(node) || 0;\n        value = value === '+1' ? indent + 1 : indent - 1;\n      }\n\n      if (value === 0) {\n        this.remove(node);\n        return true;\n      }\n\n      return _get(_getPrototypeOf(IndentAttributor.prototype), \"add\", this).call(this, node, value);\n    }\n  }, {\n    key: \"canAdd\",\n    value: function canAdd(node, value) {\n      return _get(_getPrototypeOf(IndentAttributor.prototype), \"canAdd\", this).call(this, node, value) || _get(_getPrototypeOf(IndentAttributor.prototype), \"canAdd\", this).call(this, node, parseInt(value, 10));\n    }\n  }, {\n    key: \"value\",\n    value: function value(node) {\n      return parseInt(_get(_getPrototypeOf(IndentAttributor.prototype), \"value\", this).call(this, node), 10) || undefined; // Don't return NaN\n    }\n  }]);\n\n  return IndentAttributor;\n}(parchment[\"ClassAttributor\"]);\n\nvar IndentClass = new IndentAttributor('indent', 'ql-indent', {\n  scope: parchment[\"Scope\"].BLOCK,\n  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n/* harmony default export */ var indent = (IndentClass);\n// EXTERNAL MODULE: ./blots/block.js\nvar block = __webpack_require__(5);\n\n// CONCATENATED MODULE: ./formats/blockquote.js\nfunction blockquote_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { blockquote_typeof = function _typeof(obj) { return typeof obj; }; } else { blockquote_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return blockquote_typeof(obj); }\n\nfunction blockquote_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction blockquote_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) blockquote_setPrototypeOf(subClass, superClass); }\n\nfunction blockquote_setPrototypeOf(o, p) { blockquote_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return blockquote_setPrototypeOf(o, p); }\n\nfunction blockquote_createSuper(Derived) { var hasNativeReflectConstruct = blockquote_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = blockquote_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = blockquote_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return blockquote_possibleConstructorReturn(this, result); }; }\n\nfunction blockquote_possibleConstructorReturn(self, call) { if (call && (blockquote_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return blockquote_assertThisInitialized(self); }\n\nfunction blockquote_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction blockquote_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction blockquote_getPrototypeOf(o) { blockquote_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return blockquote_getPrototypeOf(o); }\n\n\n\nvar Blockquote = /*#__PURE__*/function (_Block) {\n  blockquote_inherits(Blockquote, _Block);\n\n  var _super = blockquote_createSuper(Blockquote);\n\n  function Blockquote() {\n    blockquote_classCallCheck(this, Blockquote);\n\n    return _super.apply(this, arguments);\n  }\n\n  return Blockquote;\n}(block[\"d\" /* default */]);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n/* harmony default export */ var blockquote = (Blockquote);\n// CONCATENATED MODULE: ./formats/header.js\nfunction header_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { header_typeof = function _typeof(obj) { return typeof obj; }; } else { header_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return header_typeof(obj); }\n\nfunction header_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction header_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction header_createClass(Constructor, protoProps, staticProps) { if (protoProps) header_defineProperties(Constructor.prototype, protoProps); if (staticProps) header_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction header_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) header_setPrototypeOf(subClass, superClass); }\n\nfunction header_setPrototypeOf(o, p) { header_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return header_setPrototypeOf(o, p); }\n\nfunction header_createSuper(Derived) { var hasNativeReflectConstruct = header_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = header_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = header_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return header_possibleConstructorReturn(this, result); }; }\n\nfunction header_possibleConstructorReturn(self, call) { if (call && (header_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return header_assertThisInitialized(self); }\n\nfunction header_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction header_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction header_getPrototypeOf(o) { header_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return header_getPrototypeOf(o); }\n\n\n\nvar Header = /*#__PURE__*/function (_Block) {\n  header_inherits(Header, _Block);\n\n  var _super = header_createSuper(Header);\n\n  function Header() {\n    header_classCallCheck(this, Header);\n\n    return _super.apply(this, arguments);\n  }\n\n  header_createClass(Header, null, [{\n    key: \"formats\",\n    value: function formats(domNode) {\n      return this.tagName.indexOf(domNode.tagName) + 1;\n    }\n  }]);\n\n  return Header;\n}(block[\"d\" /* default */]);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n/* harmony default export */ var header = (Header);\n// EXTERNAL MODULE: ./blots/container.js\nvar container = __webpack_require__(16);\n\n// EXTERNAL MODULE: ./core/quill.js\nvar quill = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./formats/list.js\nfunction list_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction list_createClass(Constructor, protoProps, staticProps) { if (protoProps) list_defineProperties(Constructor.prototype, protoProps); if (staticProps) list_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction list_get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { list_get = Reflect.get; } else { list_get = function _get(target, property, receiver) { var base = list_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return list_get(target, property, receiver || target); }\n\nfunction list_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = list_getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction list_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { list_typeof = function _typeof(obj) { return typeof obj; }; } else { list_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return list_typeof(obj); }\n\nfunction list_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction list_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) list_setPrototypeOf(subClass, superClass); }\n\nfunction list_setPrototypeOf(o, p) { list_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return list_setPrototypeOf(o, p); }\n\nfunction list_createSuper(Derived) { var hasNativeReflectConstruct = list_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = list_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = list_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return list_possibleConstructorReturn(this, result); }; }\n\nfunction list_possibleConstructorReturn(self, call) { if (call && (list_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return list_assertThisInitialized(self); }\n\nfunction list_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction list_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction list_getPrototypeOf(o) { list_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return list_getPrototypeOf(o); }\n\n\n\n\n\nvar ListContainer = /*#__PURE__*/function (_Container) {\n  list_inherits(ListContainer, _Container);\n\n  var _super = list_createSuper(ListContainer);\n\n  function ListContainer() {\n    list_classCallCheck(this, ListContainer);\n\n    return _super.apply(this, arguments);\n  }\n\n  return ListContainer;\n}(container[\"a\" /* default */]);\n\nListContainer.blotName = 'list-container';\nListContainer.tagName = 'OL';\n\nvar list_ListItem = /*#__PURE__*/function (_Block) {\n  list_inherits(ListItem, _Block);\n\n  var _super2 = list_createSuper(ListItem);\n\n  list_createClass(ListItem, null, [{\n    key: \"create\",\n    value: function create(value) {\n      var node = list_get(list_getPrototypeOf(ListItem), \"create\", this).call(this);\n\n      node.setAttribute('data-list', value);\n      return node;\n    }\n  }, {\n    key: \"formats\",\n    value: function formats(domNode) {\n      return domNode.getAttribute('data-list') || undefined;\n    }\n  }, {\n    key: \"register\",\n    value: function register() {\n      quill[\"a\" /* default */].register(ListContainer);\n    }\n  }]);\n\n  function ListItem(scroll, domNode) {\n    var _this;\n\n    list_classCallCheck(this, ListItem);\n\n    _this = _super2.call(this, scroll, domNode);\n    var ui = domNode.ownerDocument.createElement('span');\n\n    var listEventHandler = function listEventHandler(e) {\n      if (!scroll.isEnabled()) return;\n\n      var format = _this.statics.formats(domNode, scroll);\n\n      if (format === 'checked') {\n        _this.format('list', 'unchecked');\n\n        e.preventDefault();\n      } else if (format === 'unchecked') {\n        _this.format('list', 'checked');\n\n        e.preventDefault();\n      }\n    };\n\n    ui.addEventListener('mousedown', listEventHandler);\n    ui.addEventListener('touchstart', listEventHandler);\n\n    _this.attachUI(ui);\n\n    return _this;\n  }\n\n  list_createClass(ListItem, [{\n    key: \"format\",\n    value: function format(name, value) {\n      if (name === this.statics.blotName && value) {\n        this.domNode.setAttribute('data-list', value);\n      } else {\n        list_get(list_getPrototypeOf(ListItem.prototype), \"format\", this).call(this, name, value);\n      }\n    }\n  }]);\n\n  return ListItem;\n}(block[\"d\" /* default */]);\n\nlist_ListItem.blotName = 'list';\nlist_ListItem.tagName = 'LI';\nListContainer.allowedChildren = [list_ListItem];\nlist_ListItem.requiredContainer = ListContainer;\n\n// EXTERNAL MODULE: ./formats/background.js\nvar background = __webpack_require__(30);\n\n// EXTERNAL MODULE: ./formats/color.js\nvar color = __webpack_require__(22);\n\n// EXTERNAL MODULE: ./formats/font.js\nvar font = __webpack_require__(31);\n\n// EXTERNAL MODULE: ./formats/size.js\nvar size = __webpack_require__(32);\n\n// EXTERNAL MODULE: ./formats/bold.js\nvar bold = __webpack_require__(33);\n\n// CONCATENATED MODULE: ./formats/italic.js\nfunction italic_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { italic_typeof = function _typeof(obj) { return typeof obj; }; } else { italic_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return italic_typeof(obj); }\n\nfunction italic_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction italic_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) italic_setPrototypeOf(subClass, superClass); }\n\nfunction italic_setPrototypeOf(o, p) { italic_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return italic_setPrototypeOf(o, p); }\n\nfunction italic_createSuper(Derived) { var hasNativeReflectConstruct = italic_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = italic_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = italic_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return italic_possibleConstructorReturn(this, result); }; }\n\nfunction italic_possibleConstructorReturn(self, call) { if (call && (italic_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return italic_assertThisInitialized(self); }\n\nfunction italic_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction italic_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction italic_getPrototypeOf(o) { italic_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return italic_getPrototypeOf(o); }\n\n\n\nvar Italic = /*#__PURE__*/function (_Bold) {\n  italic_inherits(Italic, _Bold);\n\n  var _super = italic_createSuper(Italic);\n\n  function Italic() {\n    italic_classCallCheck(this, Italic);\n\n    return _super.apply(this, arguments);\n  }\n\n  return Italic;\n}(bold[\"a\" /* default */]);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n/* harmony default export */ var italic = (Italic);\n// EXTERNAL MODULE: ./formats/link.js\nvar formats_link = __webpack_require__(28);\n\n// EXTERNAL MODULE: ./blots/inline.js\nvar inline = __webpack_require__(9);\n\n// CONCATENATED MODULE: ./formats/script.js\nfunction script_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { script_typeof = function _typeof(obj) { return typeof obj; }; } else { script_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return script_typeof(obj); }\n\nfunction script_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction script_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction script_createClass(Constructor, protoProps, staticProps) { if (protoProps) script_defineProperties(Constructor.prototype, protoProps); if (staticProps) script_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction script_get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { script_get = Reflect.get; } else { script_get = function _get(target, property, receiver) { var base = script_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return script_get(target, property, receiver || target); }\n\nfunction script_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = script_getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction script_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) script_setPrototypeOf(subClass, superClass); }\n\nfunction script_setPrototypeOf(o, p) { script_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return script_setPrototypeOf(o, p); }\n\nfunction script_createSuper(Derived) { var hasNativeReflectConstruct = script_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = script_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = script_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return script_possibleConstructorReturn(this, result); }; }\n\nfunction script_possibleConstructorReturn(self, call) { if (call && (script_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return script_assertThisInitialized(self); }\n\nfunction script_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction script_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction script_getPrototypeOf(o) { script_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return script_getPrototypeOf(o); }\n\n\n\nvar Script = /*#__PURE__*/function (_Inline) {\n  script_inherits(Script, _Inline);\n\n  var _super = script_createSuper(Script);\n\n  function Script() {\n    script_classCallCheck(this, Script);\n\n    return _super.apply(this, arguments);\n  }\n\n  script_createClass(Script, null, [{\n    key: \"create\",\n    value: function create(value) {\n      if (value === 'super') {\n        return document.createElement('sup');\n      }\n\n      if (value === 'sub') {\n        return document.createElement('sub');\n      }\n\n      return script_get(script_getPrototypeOf(Script), \"create\", this).call(this, value);\n    }\n  }, {\n    key: \"formats\",\n    value: function formats(domNode) {\n      if (domNode.tagName === 'SUB') return 'sub';\n      if (domNode.tagName === 'SUP') return 'super';\n      return undefined;\n    }\n  }]);\n\n  return Script;\n}(inline[\"a\" /* default */]);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n/* harmony default export */ var script = (Script);\n// CONCATENATED MODULE: ./formats/strike.js\nfunction strike_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { strike_typeof = function _typeof(obj) { return typeof obj; }; } else { strike_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return strike_typeof(obj); }\n\nfunction strike_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction strike_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) strike_setPrototypeOf(subClass, superClass); }\n\nfunction strike_setPrototypeOf(o, p) { strike_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return strike_setPrototypeOf(o, p); }\n\nfunction strike_createSuper(Derived) { var hasNativeReflectConstruct = strike_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = strike_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = strike_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return strike_possibleConstructorReturn(this, result); }; }\n\nfunction strike_possibleConstructorReturn(self, call) { if (call && (strike_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return strike_assertThisInitialized(self); }\n\nfunction strike_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction strike_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction strike_getPrototypeOf(o) { strike_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return strike_getPrototypeOf(o); }\n\n\n\nvar Strike = /*#__PURE__*/function (_Bold) {\n  strike_inherits(Strike, _Bold);\n\n  var _super = strike_createSuper(Strike);\n\n  function Strike() {\n    strike_classCallCheck(this, Strike);\n\n    return _super.apply(this, arguments);\n  }\n\n  return Strike;\n}(bold[\"a\" /* default */]);\n\nStrike.blotName = 'strike';\nStrike.tagName = ['S', 'STRIKE'];\n/* harmony default export */ var strike = (Strike);\n// CONCATENATED MODULE: ./formats/underline.js\nfunction underline_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { underline_typeof = function _typeof(obj) { return typeof obj; }; } else { underline_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return underline_typeof(obj); }\n\nfunction underline_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction underline_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) underline_setPrototypeOf(subClass, superClass); }\n\nfunction underline_setPrototypeOf(o, p) { underline_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return underline_setPrototypeOf(o, p); }\n\nfunction underline_createSuper(Derived) { var hasNativeReflectConstruct = underline_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = underline_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = underline_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return underline_possibleConstructorReturn(this, result); }; }\n\nfunction underline_possibleConstructorReturn(self, call) { if (call && (underline_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return underline_assertThisInitialized(self); }\n\nfunction underline_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction underline_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction underline_getPrototypeOf(o) { underline_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return underline_getPrototypeOf(o); }\n\n\n\nvar Underline = /*#__PURE__*/function (_Inline) {\n  underline_inherits(Underline, _Inline);\n\n  var _super = underline_createSuper(Underline);\n\n  function Underline() {\n    underline_classCallCheck(this, Underline);\n\n    return _super.apply(this, arguments);\n  }\n\n  return Underline;\n}(inline[\"a\" /* default */]);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n/* harmony default export */ var underline = (Underline);\n// EXTERNAL MODULE: ./blots/embed.js\nvar blots_embed = __webpack_require__(43);\n\n// EXTERNAL MODULE: ./utils/hasWindow.js\nvar hasWindow = __webpack_require__(10);\n\n// CONCATENATED MODULE: ./formats/formula.js\nfunction formula_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { formula_typeof = function _typeof(obj) { return typeof obj; }; } else { formula_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return formula_typeof(obj); }\n\nfunction formula_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction formula_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction formula_createClass(Constructor, protoProps, staticProps) { if (protoProps) formula_defineProperties(Constructor.prototype, protoProps); if (staticProps) formula_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction formula_get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { formula_get = Reflect.get; } else { formula_get = function _get(target, property, receiver) { var base = formula_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return formula_get(target, property, receiver || target); }\n\nfunction formula_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = formula_getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction formula_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) formula_setPrototypeOf(subClass, superClass); }\n\nfunction formula_setPrototypeOf(o, p) { formula_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return formula_setPrototypeOf(o, p); }\n\nfunction formula_createSuper(Derived) { var hasNativeReflectConstruct = formula_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = formula_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = formula_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return formula_possibleConstructorReturn(this, result); }; }\n\nfunction formula_possibleConstructorReturn(self, call) { if (call && (formula_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return formula_assertThisInitialized(self); }\n\nfunction formula_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction formula_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction formula_getPrototypeOf(o) { formula_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return formula_getPrototypeOf(o); }\n\n\n\n\nvar formula_Formula = /*#__PURE__*/function (_Embed) {\n  formula_inherits(Formula, _Embed);\n\n  var _super = formula_createSuper(Formula);\n\n  function Formula() {\n    formula_classCallCheck(this, Formula);\n\n    return _super.apply(this, arguments);\n  }\n\n  formula_createClass(Formula, [{\n    key: \"html\",\n    value: function html() {\n      var _this$value = this.value(),\n          formula = _this$value.formula;\n\n      return \"<span>\".concat(formula, \"</span>\");\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      var katex = null;\n\n      if (Object(hasWindow[\"a\" /* default */])()) {\n        katex = window.katex;\n      }\n\n      if (katex == null) {\n        throw new Error('Formula module requires KaTeX.');\n      }\n\n      var node = formula_get(formula_getPrototypeOf(Formula), \"create\", this).call(this, value);\n\n      if (typeof value === 'string') {\n        katex.render(value, node, {\n          throwOnError: false,\n          errorColor: '#f00'\n        });\n        node.setAttribute('data-value', value);\n      }\n\n      return node;\n    }\n  }, {\n    key: \"value\",\n    value: function value(domNode) {\n      return domNode.getAttribute('data-value');\n    }\n  }]);\n\n  return Formula;\n}(blots_embed[\"a\" /* default */]);\n\nformula_Formula.blotName = 'formula';\nformula_Formula.className = 'ql-formula';\nformula_Formula.tagName = 'SPAN';\n/* harmony default export */ var formula = (formula_Formula);\n// CONCATENATED MODULE: ./formats/image.js\nfunction image_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { image_typeof = function _typeof(obj) { return typeof obj; }; } else { image_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return image_typeof(obj); }\n\nfunction image_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction image_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction image_createClass(Constructor, protoProps, staticProps) { if (protoProps) image_defineProperties(Constructor.prototype, protoProps); if (staticProps) image_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction image_get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { image_get = Reflect.get; } else { image_get = function _get(target, property, receiver) { var base = image_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return image_get(target, property, receiver || target); }\n\nfunction image_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = image_getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction image_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) image_setPrototypeOf(subClass, superClass); }\n\nfunction image_setPrototypeOf(o, p) { image_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return image_setPrototypeOf(o, p); }\n\nfunction image_createSuper(Derived) { var hasNativeReflectConstruct = image_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = image_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = image_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return image_possibleConstructorReturn(this, result); }; }\n\nfunction image_possibleConstructorReturn(self, call) { if (call && (image_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return image_assertThisInitialized(self); }\n\nfunction image_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction image_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction image_getPrototypeOf(o) { image_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return image_getPrototypeOf(o); }\n\n\n\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar image_Image = /*#__PURE__*/function (_EmbedBlot) {\n  image_inherits(Image, _EmbedBlot);\n\n  var _super = image_createSuper(Image);\n\n  function Image() {\n    image_classCallCheck(this, Image);\n\n    return _super.apply(this, arguments);\n  }\n\n  image_createClass(Image, [{\n    key: \"format\",\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        image_get(image_getPrototypeOf(Image.prototype), \"format\", this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      var node = image_get(image_getPrototypeOf(Image), \"create\", this).call(this, value);\n\n      if (typeof value === 'string') {\n        node.setAttribute('src', this.sanitize(value));\n      }\n\n      return node;\n    }\n  }, {\n    key: \"formats\",\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n\n        return formats;\n      }, {});\n    }\n  }, {\n    key: \"match\",\n    value: function match(url) {\n      return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n    }\n  }, {\n    key: \"register\",\n    value: function register() {\n      if (Object(hasWindow[\"a\" /* default */])() && /Firefox/i.test(navigator.userAgent)) {\n        setTimeout(function () {\n          // Disable image resizing in Firefox\n          document.execCommand('enableObjectResizing', false, false);\n        }, 1);\n      }\n    }\n  }, {\n    key: \"sanitize\",\n    value: function sanitize(url) {\n      return Object(formats_link[\"b\" /* sanitize */])(url, ['http', 'https', 'data']) ? url : '//:0';\n    }\n  }, {\n    key: \"value\",\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Image;\n}(parchment[\"EmbedBlot\"]);\n\nimage_Image.blotName = 'image';\nimage_Image.tagName = 'IMG';\n/* harmony default export */ var formats_image = (image_Image);\n// CONCATENATED MODULE: ./formats/video.js\nfunction video_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { video_typeof = function _typeof(obj) { return typeof obj; }; } else { video_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return video_typeof(obj); }\n\nfunction video_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction video_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction video_createClass(Constructor, protoProps, staticProps) { if (protoProps) video_defineProperties(Constructor.prototype, protoProps); if (staticProps) video_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction video_get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { video_get = Reflect.get; } else { video_get = function _get(target, property, receiver) { var base = video_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return video_get(target, property, receiver || target); }\n\nfunction video_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = video_getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction video_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) video_setPrototypeOf(subClass, superClass); }\n\nfunction video_setPrototypeOf(o, p) { video_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return video_setPrototypeOf(o, p); }\n\nfunction video_createSuper(Derived) { var hasNativeReflectConstruct = video_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = video_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = video_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return video_possibleConstructorReturn(this, result); }; }\n\nfunction video_possibleConstructorReturn(self, call) { if (call && (video_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return video_assertThisInitialized(self); }\n\nfunction video_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction video_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction video_getPrototypeOf(o) { video_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return video_getPrototypeOf(o); }\n\n\n\nvar video_ATTRIBUTES = ['height', 'width'];\n\nvar video_Video = /*#__PURE__*/function (_BlockEmbed) {\n  video_inherits(Video, _BlockEmbed);\n\n  var _super = video_createSuper(Video);\n\n  function Video() {\n    video_classCallCheck(this, Video);\n\n    return _super.apply(this, arguments);\n  }\n\n  video_createClass(Video, [{\n    key: \"format\",\n    value: function format(name, value) {\n      if (video_ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        video_get(video_getPrototypeOf(Video.prototype), \"format\", this).call(this, name, value);\n      }\n    }\n  }, {\n    key: \"html\",\n    value: function html() {\n      var _this$value = this.value(),\n          video = _this$value.video;\n\n      return \"<a href=\\\"\".concat(video, \"\\\">\").concat(video, \"</a>\");\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      var node = video_get(video_getPrototypeOf(Video), \"create\", this).call(this, value);\n\n      node.setAttribute('frameborder', '0');\n      node.setAttribute('allowfullscreen', true);\n      node.setAttribute('src', this.sanitize(value));\n      return node;\n    }\n  }, {\n    key: \"formats\",\n    value: function formats(domNode) {\n      return video_ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n\n        return formats;\n      }, {});\n    }\n  }, {\n    key: \"sanitize\",\n    value: function sanitize(url) {\n      return formats_link[\"a\" /* default */].sanitize(url); // eslint-disable-line import/no-named-as-default-member\n    }\n  }, {\n    key: \"value\",\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Video;\n}(block[\"a\" /* BlockEmbed */]);\n\nvideo_Video.blotName = 'video';\nvideo_Video.className = 'ql-video';\nvideo_Video.tagName = 'IFRAME';\n/* harmony default export */ var video = (video_Video);\n// EXTERNAL MODULE: ./formats/code.js\nvar code = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./modules/syntax.js\nvar syntax = __webpack_require__(52);\n\n// EXTERNAL MODULE: ./node_modules/quill-delta/dist/Delta.js\nvar Delta = __webpack_require__(0);\nvar Delta_default = /*#__PURE__*/__webpack_require__.n(Delta);\n\n// EXTERNAL MODULE: ./core/module.js\nvar core_module = __webpack_require__(11);\n\n// CONCATENATED MODULE: ./formats/table.js\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction table_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { table_typeof = function _typeof(obj) { return typeof obj; }; } else { table_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return table_typeof(obj); }\n\nfunction table_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction table_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction table_createClass(Constructor, protoProps, staticProps) { if (protoProps) table_defineProperties(Constructor.prototype, protoProps); if (staticProps) table_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction table_get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { table_get = Reflect.get; } else { table_get = function _get(target, property, receiver) { var base = table_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return table_get(target, property, receiver || target); }\n\nfunction table_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = table_getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction table_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) table_setPrototypeOf(subClass, superClass); }\n\nfunction table_setPrototypeOf(o, p) { table_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return table_setPrototypeOf(o, p); }\n\nfunction table_createSuper(Derived) { var hasNativeReflectConstruct = table_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = table_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = table_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return table_possibleConstructorReturn(this, result); }; }\n\nfunction table_possibleConstructorReturn(self, call) { if (call && (table_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return table_assertThisInitialized(self); }\n\nfunction table_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction table_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction table_getPrototypeOf(o) { table_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return table_getPrototypeOf(o); }\n\n\n\n\nvar TableCell = /*#__PURE__*/function (_Block) {\n  table_inherits(TableCell, _Block);\n\n  var _super = table_createSuper(TableCell);\n\n  function TableCell() {\n    table_classCallCheck(this, TableCell);\n\n    return _super.apply(this, arguments);\n  }\n\n  table_createClass(TableCell, [{\n    key: \"cellOffset\",\n    value: function cellOffset() {\n      if (this.parent) {\n        return this.parent.children.indexOf(this);\n      }\n\n      return -1;\n    }\n  }, {\n    key: \"format\",\n    value: function format(name, value) {\n      if (name === TableCell.blotName && value) {\n        this.domNode.setAttribute('data-row', value);\n      } else {\n        table_get(table_getPrototypeOf(TableCell.prototype), \"format\", this).call(this, name, value);\n      }\n    }\n  }, {\n    key: \"row\",\n    value: function row() {\n      return this.parent;\n    }\n  }, {\n    key: \"rowOffset\",\n    value: function rowOffset() {\n      if (this.row()) {\n        return this.row().rowOffset();\n      }\n\n      return -1;\n    }\n  }, {\n    key: \"table\",\n    value: function table() {\n      return this.row() && this.row().table();\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      var node = table_get(table_getPrototypeOf(TableCell), \"create\", this).call(this);\n\n      if (value) {\n        node.setAttribute('data-row', value);\n      } else {\n        node.setAttribute('data-row', tableId());\n      }\n\n      return node;\n    }\n  }, {\n    key: \"formats\",\n    value: function formats(domNode) {\n      if (domNode.hasAttribute('data-row')) {\n        return domNode.getAttribute('data-row');\n      }\n\n      return undefined;\n    }\n  }]);\n\n  return TableCell;\n}(block[\"d\" /* default */]);\n\nTableCell.blotName = 'table';\nTableCell.tagName = 'TD';\n\nvar TableRow = /*#__PURE__*/function (_Container) {\n  table_inherits(TableRow, _Container);\n\n  var _super2 = table_createSuper(TableRow);\n\n  function TableRow() {\n    table_classCallCheck(this, TableRow);\n\n    return _super2.apply(this, arguments);\n  }\n\n  table_createClass(TableRow, [{\n    key: \"checkMerge\",\n    value: function checkMerge() {\n      if (table_get(table_getPrototypeOf(TableRow.prototype), \"checkMerge\", this).call(this) && this.next.children.head != null) {\n        var thisHead = this.children.head.formats();\n        var thisTail = this.children.tail.formats();\n        var nextHead = this.next.children.head.formats();\n        var nextTail = this.next.children.tail.formats();\n        return thisHead.table === thisTail.table && thisHead.table === nextHead.table && thisHead.table === nextTail.table;\n      }\n\n      return false;\n    }\n  }, {\n    key: \"optimize\",\n    value: function optimize() {\n      var _get2,\n          _this = this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      (_get2 = table_get(table_getPrototypeOf(TableRow.prototype), \"optimize\", this)).call.apply(_get2, [this].concat(args));\n\n      this.children.forEach(function (child) {\n        if (child.next == null) return;\n        var childFormats = child.formats();\n        var nextFormats = child.next.formats();\n\n        if (childFormats.table !== nextFormats.table) {\n          var next = _this.splitAfter(child);\n\n          if (next) {\n            next.optimize();\n          } // We might be able to merge with prev now\n\n\n          if (_this.prev) {\n            _this.prev.optimize();\n          }\n        }\n      });\n    }\n  }, {\n    key: \"rowOffset\",\n    value: function rowOffset() {\n      if (this.parent) {\n        return this.parent.children.indexOf(this);\n      }\n\n      return -1;\n    }\n  }, {\n    key: \"table\",\n    value: function table() {\n      return this.parent && this.parent.parent;\n    }\n  }]);\n\n  return TableRow;\n}(container[\"a\" /* default */]);\n\nTableRow.blotName = 'table-row';\nTableRow.tagName = 'TR';\n\nvar TableBody = /*#__PURE__*/function (_Container2) {\n  table_inherits(TableBody, _Container2);\n\n  var _super3 = table_createSuper(TableBody);\n\n  function TableBody() {\n    table_classCallCheck(this, TableBody);\n\n    return _super3.apply(this, arguments);\n  }\n\n  return TableBody;\n}(container[\"a\" /* default */]);\n\nTableBody.blotName = 'table-body';\nTableBody.tagName = 'TBODY';\n\nvar TableContainer = /*#__PURE__*/function (_Container3) {\n  table_inherits(TableContainer, _Container3);\n\n  var _super4 = table_createSuper(TableContainer);\n\n  function TableContainer() {\n    table_classCallCheck(this, TableContainer);\n\n    return _super4.apply(this, arguments);\n  }\n\n  table_createClass(TableContainer, [{\n    key: \"balanceCells\",\n    value: function balanceCells() {\n      var _this2 = this;\n\n      var rows = this.descendants(TableRow);\n      var maxColumns = rows.reduce(function (max, row) {\n        return Math.max(row.children.length, max);\n      }, 0);\n      rows.forEach(function (row) {\n        new Array(maxColumns - row.children.length).fill(0).forEach(function () {\n          var value;\n\n          if (row.children.head != null) {\n            value = TableCell.formats(row.children.head.domNode);\n          }\n\n          var blot = _this2.scroll.create(TableCell.blotName, value);\n\n          row.appendChild(blot);\n          blot.optimize(); // Add break blot\n        });\n      });\n    }\n  }, {\n    key: \"cells\",\n    value: function cells(column) {\n      return this.rows().map(function (row) {\n        return row.children.at(column);\n      });\n    }\n  }, {\n    key: \"deleteColumn\",\n    value: function deleteColumn(index) {\n      var _this$descendant = this.descendant(TableBody),\n          _this$descendant2 = _slicedToArray(_this$descendant, 1),\n          body = _this$descendant2[0];\n\n      if (body == null || body.children.head == null) return;\n      body.children.forEach(function (row) {\n        var cell = row.children.at(index);\n\n        if (cell != null) {\n          cell.remove();\n        }\n      });\n    }\n  }, {\n    key: \"insertColumn\",\n    value: function insertColumn(index) {\n      var _this3 = this;\n\n      var _this$descendant3 = this.descendant(TableBody),\n          _this$descendant4 = _slicedToArray(_this$descendant3, 1),\n          body = _this$descendant4[0];\n\n      if (body == null || body.children.head == null) return;\n      body.children.forEach(function (row) {\n        var ref = row.children.at(index);\n        var value = TableCell.formats(row.children.head.domNode);\n\n        var cell = _this3.scroll.create(TableCell.blotName, value);\n\n        row.insertBefore(cell, ref);\n      });\n    }\n  }, {\n    key: \"insertRow\",\n    value: function insertRow(index) {\n      var _this4 = this;\n\n      var _this$descendant5 = this.descendant(TableBody),\n          _this$descendant6 = _slicedToArray(_this$descendant5, 1),\n          body = _this$descendant6[0];\n\n      if (body == null || body.children.head == null) return;\n      var id = tableId();\n      var row = this.scroll.create(TableRow.blotName);\n      body.children.head.children.forEach(function () {\n        var cell = _this4.scroll.create(TableCell.blotName, id);\n\n        row.appendChild(cell);\n      });\n      var ref = body.children.at(index);\n      body.insertBefore(row, ref);\n    }\n  }, {\n    key: \"rows\",\n    value: function rows() {\n      var body = this.children.head;\n      if (body == null) return [];\n      return body.children.map(function (row) {\n        return row;\n      });\n    }\n  }]);\n\n  return TableContainer;\n}(container[\"a\" /* default */]);\n\nTableContainer.blotName = 'table-container';\nTableContainer.tagName = 'TABLE';\nTableContainer.allowedChildren = [TableBody];\nTableBody.requiredContainer = TableContainer;\nTableBody.allowedChildren = [TableRow];\nTableRow.requiredContainer = TableBody;\nTableRow.allowedChildren = [TableCell];\nTableCell.requiredContainer = TableRow;\n\nfunction tableId() {\n  var id = Math.random().toString(36).slice(2, 6);\n  return \"row-\".concat(id);\n}\n\n\n// CONCATENATED MODULE: ./modules/table.js\nfunction modules_table_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { modules_table_typeof = function _typeof(obj) { return typeof obj; }; } else { modules_table_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return modules_table_typeof(obj); }\n\nfunction table_slicedToArray(arr, i) { return table_arrayWithHoles(arr) || table_iterableToArrayLimit(arr, i) || table_unsupportedIterableToArray(arr, i) || table_nonIterableRest(); }\n\nfunction table_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction table_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return table_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return table_arrayLikeToArray(o, minLen); }\n\nfunction table_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction table_iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction table_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction modules_table_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction modules_table_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction modules_table_createClass(Constructor, protoProps, staticProps) { if (protoProps) modules_table_defineProperties(Constructor.prototype, protoProps); if (staticProps) modules_table_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction modules_table_inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) modules_table_setPrototypeOf(subClass, superClass); }\n\nfunction modules_table_setPrototypeOf(o, p) { modules_table_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return modules_table_setPrototypeOf(o, p); }\n\nfunction modules_table_createSuper(Derived) { var hasNativeReflectConstruct = modules_table_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = modules_table_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = modules_table_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return modules_table_possibleConstructorReturn(this, result); }; }\n\nfunction modules_table_possibleConstructorReturn(self, call) { if (call && (modules_table_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return modules_table_assertThisInitialized(self); }\n\nfunction modules_table_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction modules_table_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction modules_table_getPrototypeOf(o) { modules_table_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return modules_table_getPrototypeOf(o); }\n\n\n\n\n\n\nvar table_Table = /*#__PURE__*/function (_Module) {\n  modules_table_inherits(Table, _Module);\n\n  var _super = modules_table_createSuper(Table);\n\n  modules_table_createClass(Table, null, [{\n    key: \"register\",\n    value: function register() {\n      quill[\"a\" /* default */].register(TableCell);\n      quill[\"a\" /* default */].register(TableRow);\n      quill[\"a\" /* default */].register(TableBody);\n      quill[\"a\" /* default */].register(TableContainer);\n    }\n  }]);\n\n  function Table() {\n    var _this;\n\n    modules_table_classCallCheck(this, Table);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _this.listenBalanceCells();\n\n    return _this;\n  }\n\n  modules_table_createClass(Table, [{\n    key: \"balanceTables\",\n    value: function balanceTables() {\n      this.quill.scroll.descendants(TableContainer).forEach(function (table) {\n        table.balanceCells();\n      });\n    }\n  }, {\n    key: \"deleteColumn\",\n    value: function deleteColumn() {\n      var _this$getTable = this.getTable(),\n          _this$getTable2 = table_slicedToArray(_this$getTable, 3),\n          table = _this$getTable2[0],\n          cell = _this$getTable2[2];\n\n      if (cell == null) return;\n      table.deleteColumn(cell.cellOffset());\n      this.quill.update(quill[\"a\" /* default */].sources.USER);\n    }\n  }, {\n    key: \"deleteRow\",\n    value: function deleteRow() {\n      var _this$getTable3 = this.getTable(),\n          _this$getTable4 = table_slicedToArray(_this$getTable3, 2),\n          row = _this$getTable4[1];\n\n      if (row == null) return;\n      row.remove();\n      this.quill.update(quill[\"a\" /* default */].sources.USER);\n    }\n  }, {\n    key: \"deleteTable\",\n    value: function deleteTable() {\n      var _this$getTable5 = this.getTable(),\n          _this$getTable6 = table_slicedToArray(_this$getTable5, 1),\n          table = _this$getTable6[0];\n\n      if (table == null) return;\n      var offset = table.offset();\n      table.remove();\n      this.quill.update(quill[\"a\" /* default */].sources.USER);\n      this.quill.setSelection(offset, quill[\"a\" /* default */].sources.SILENT);\n    }\n  }, {\n    key: \"getTable\",\n    value: function getTable() {\n      var range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.quill.getSelection();\n      if (range == null) return [null, null, null, -1];\n\n      var _this$quill$getLine = this.quill.getLine(range.index),\n          _this$quill$getLine2 = table_slicedToArray(_this$quill$getLine, 2),\n          cell = _this$quill$getLine2[0],\n          offset = _this$quill$getLine2[1];\n\n      if (cell == null || cell.statics.blotName !== TableCell.blotName) {\n        return [null, null, null, -1];\n      }\n\n      var row = cell.parent;\n      var table = row.parent.parent;\n      return [table, row, cell, offset];\n    }\n  }, {\n    key: \"insertColumn\",\n    value: function insertColumn(offset) {\n      var range = this.quill.getSelection();\n\n      var _this$getTable7 = this.getTable(range),\n          _this$getTable8 = table_slicedToArray(_this$getTable7, 3),\n          table = _this$getTable8[0],\n          row = _this$getTable8[1],\n          cell = _this$getTable8[2];\n\n      if (cell == null) return;\n      var column = cell.cellOffset();\n      table.insertColumn(column + offset);\n      this.quill.update(quill[\"a\" /* default */].sources.USER);\n      var shift = row.rowOffset();\n\n      if (offset === 0) {\n        shift += 1;\n      }\n\n      this.quill.setSelection(range.index + shift, range.length, quill[\"a\" /* default */].sources.SILENT);\n    }\n  }, {\n    key: \"insertColumnLeft\",\n    value: function insertColumnLeft() {\n      this.insertColumn(0);\n    }\n  }, {\n    key: \"insertColumnRight\",\n    value: function insertColumnRight() {\n      this.insertColumn(1);\n    }\n  }, {\n    key: \"insertRow\",\n    value: function insertRow(offset) {\n      var range = this.quill.getSelection();\n\n      var _this$getTable9 = this.getTable(range),\n          _this$getTable10 = table_slicedToArray(_this$getTable9, 3),\n          table = _this$getTable10[0],\n          row = _this$getTable10[1],\n          cell = _this$getTable10[2];\n\n      if (cell == null) return;\n      var index = row.rowOffset();\n      table.insertRow(index + offset);\n      this.quill.update(quill[\"a\" /* default */].sources.USER);\n\n      if (offset > 0) {\n        this.quill.setSelection(range, quill[\"a\" /* default */].sources.SILENT);\n      } else {\n        this.quill.setSelection(range.index + row.children.length, range.length, quill[\"a\" /* default */].sources.SILENT);\n      }\n    }\n  }, {\n    key: \"insertRowAbove\",\n    value: function insertRowAbove() {\n      this.insertRow(0);\n    }\n  }, {\n    key: \"insertRowBelow\",\n    value: function insertRowBelow() {\n      this.insertRow(1);\n    }\n  }, {\n    key: \"insertTable\",\n    value: function insertTable(rows, columns) {\n      var range = this.quill.getSelection();\n      if (range == null) return;\n      var delta = new Array(rows).fill(0).reduce(function (memo) {\n        var text = new Array(columns).fill('\\n').join('');\n        return memo.insert(text, {\n          table: tableId()\n        });\n      }, new Delta_default.a().retain(range.index));\n      this.quill.updateContents(delta, quill[\"a\" /* default */].sources.USER);\n      this.quill.setSelection(range.index, quill[\"a\" /* default */].sources.SILENT);\n      this.balanceTables();\n    }\n  }, {\n    key: \"listenBalanceCells\",\n    value: function listenBalanceCells() {\n      var _this2 = this;\n\n      this.quill.on(quill[\"a\" /* default */].events.SCROLL_OPTIMIZE, function (mutations) {\n        mutations.some(function (mutation) {\n          if (['TD', 'TR', 'TBODY', 'TABLE'].indexOf(mutation.target.tagName) !== -1) {\n            _this2.quill.once(quill[\"a\" /* default */].events.TEXT_CHANGE, function (delta, old, source) {\n              if (source !== quill[\"a\" /* default */].sources.USER) return;\n\n              _this2.balanceTables();\n            });\n\n            return true;\n          }\n\n          return false;\n        });\n      });\n    }\n  }]);\n\n  return Table;\n}(core_module[\"a\" /* default */]);\n\n/* harmony default export */ var modules_table = (table_Table);\n// CONCATENATED MODULE: ./quill.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncore[\"default\"].register({\n  'attributors/attribute/direction': direction[\"a\" /* DirectionAttribute */],\n  'attributors/class/align': align[\"b\" /* AlignClass */],\n  'attributors/class/background': background[\"a\" /* BackgroundClass */],\n  'attributors/class/color': color[\"b\" /* ColorClass */],\n  'attributors/class/direction': direction[\"b\" /* DirectionClass */],\n  'attributors/class/font': font[\"a\" /* FontClass */],\n  'attributors/class/size': size[\"a\" /* SizeClass */],\n  'attributors/style/align': align[\"c\" /* AlignStyle */],\n  'attributors/style/background': background[\"b\" /* BackgroundStyle */],\n  'attributors/style/color': color[\"c\" /* ColorStyle */],\n  'attributors/style/direction': direction[\"c\" /* DirectionStyle */],\n  'attributors/style/font': font[\"b\" /* FontStyle */],\n  'attributors/style/size': size[\"b\" /* SizeStyle */]\n}, true);\ncore[\"default\"].register({\n  'formats/align': align[\"b\" /* AlignClass */],\n  'formats/direction': direction[\"b\" /* DirectionClass */],\n  'formats/indent': indent,\n  'formats/background': background[\"b\" /* BackgroundStyle */],\n  'formats/color': color[\"c\" /* ColorStyle */],\n  'formats/font': font[\"a\" /* FontClass */],\n  'formats/size': size[\"a\" /* SizeClass */],\n  'formats/blockquote': blockquote,\n  'formats/code-block': code[\"c\" /* default */],\n  'formats/header': header,\n  'formats/list': list_ListItem,\n  'formats/bold': bold[\"a\" /* default */],\n  'formats/code': code[\"a\" /* Code */],\n  'formats/italic': italic,\n  'formats/link': formats_link[\"a\" /* default */],\n  'formats/script': script,\n  'formats/strike': strike,\n  'formats/underline': underline,\n  'formats/formula': formula,\n  'formats/image': formats_image,\n  'formats/video': video,\n  'modules/syntax': syntax[\"b\" /* default */],\n  'modules/table': modules_table\n}, true);\n/* harmony default export */ var quill_0 = __webpack_exports__[\"default\"] = (core[\"default\"]);\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int|Object} [cursor_pos] Edit position in text1 or object with more info\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos, _fix_unicode) {\n  // Check for equality\n  if (text1 === text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  if (cursor_pos != null) {\n    var editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\n    if (editdiff) {\n      return editdiff;\n    }\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs, _fix_unicode);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i !== -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [\n      [DIFF_INSERT, longtext.substring(0, i)],\n      [DIFF_EQUAL, shorttext],\n      [DIFF_INSERT, longtext.substring(i + shorttext.length)]\n    ];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length === 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 !== 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 === -d || (k1 !== d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (\n        x1 < text1_length && y1 < text2_length &&\n        text1.charAt(x1) === text2.charAt(y1)\n      ) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] !== -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 === -d || (k2 !== d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (\n        x2 < text1_length && y2 < text2_length &&\n        text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)\n      ) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] !== -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (\n      text1.substring(pointerstart, pointermid) ==\n      text2.substring(pointerstart, pointermid)\n    ) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n\n  if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\n    pointermid--;\n  }\n\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.slice(-1) !== text2.slice(-1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (\n      text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n      text2.substring(text2.length - pointermid, text2.length - pointerend)\n    ) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n\n  if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\n    pointermid--;\n  }\n\n  return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) !== -1) {\n      var prefixLength = diff_commonPrefix(\n        longtext.substring(i), shorttext.substring(j));\n      var suffixLength = diff_commonSuffix(\n        longtext.substring(0, i), shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(\n          j - suffixLength, j) + shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [\n        best_longtext_a, best_longtext_b,\n        best_shorttext_a, best_shorttext_b, best_common\n      ];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\n */\nfunction diff_cleanupMerge(diffs, fix_unicode) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n      diffs.splice(pointer, 1);\n      continue;\n    }\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        var previous_equality = pointer - count_insert - count_delete - 1;\n        if (fix_unicode) {\n          // prevent splitting of unicode surrogate pairs.  when fix_unicode is true,\n          // we assume that the old and new text in the diff are complete and correct\n          // unicode-encoded JS strings, but the tuple boundaries may fall between\n          // surrogate pairs.  we fix this by shaving off stray surrogates from the end\n          // of the previous equality and the beginning of this equality.  this may create\n          // empty equalities or a common prefix or suffix.  for example, if AB and AC are\n          // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\n          // inserting 'AC', and then the common suffix 'AC' will be eliminated.  in this\n          // particular case, both equalities go away, we absorb any previous inequalities,\n          // and we keep scanning for the next equality before rewriting the tuples.\n          if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\n            var stray = diffs[previous_equality][1].slice(-1);\n            diffs[previous_equality][1] = diffs[previous_equality][1].slice(0, -1);\n            text_delete = stray + text_delete;\n            text_insert = stray + text_insert;\n            if (!diffs[previous_equality][1]) {\n              // emptied out previous equality, so delete it and include previous delete/insert\n              diffs.splice(previous_equality, 1);\n              pointer--;\n              var k = previous_equality - 1;\n              if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\n                count_insert++;\n                text_insert = diffs[k][1] + text_insert;\n                k--;\n              }\n              if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\n                count_delete++;\n                text_delete = diffs[k][1] + text_delete;\n                k--;\n              }\n              previous_equality = k;\n            }\n          }\n          if (starts_with_pair_end(diffs[pointer][1])) {\n            var stray = diffs[pointer][1].charAt(0);\n            diffs[pointer][1] = diffs[pointer][1].slice(1);\n            text_delete += stray;\n            text_insert += stray;\n          }\n        }\n        if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n          // for empty equality not at end, wait for next equality\n          diffs.splice(pointer, 1);\n          break;\n        }\n        if (text_delete.length > 0 || text_insert.length > 0) {\n          // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\n          if (text_delete.length > 0 && text_insert.length > 0) {\n            // Factor out any common prefixes.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if (previous_equality >= 0) {\n                diffs[previous_equality][1] += text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL, text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixes.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] =\n                text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length - commonlength);\n              text_delete = text_delete.substring(0, text_delete.length - commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          var n = count_insert + count_delete;\n          if (text_delete.length === 0 && text_insert.length === 0) {\n            diffs.splice(pointer - n, n);\n            pointer = pointer - n;\n          } else if (text_delete.length === 0) {\n            diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\n            pointer = pointer - n + 1;\n          } else if (text_insert.length === 0) {\n            diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\n            pointer = pointer - n + 1;\n          } else {\n            diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\n            pointer = pointer - n + 2;\n          }\n        }\n        if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] === DIFF_EQUAL &&\n      diffs[pointer + 1][0] === DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n        diffs[pointer - 1][1].length) === diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n          diffs[pointer][1].substring(0, diffs[pointer][1].length -\n            diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n        diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n          diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n          diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs, fix_unicode);\n  }\n};\n\nfunction is_surrogate_pair_start(charCode) {\n  return charCode >= 0xD800 && charCode <= 0xDBFF;\n}\n\nfunction is_surrogate_pair_end(charCode) {\n  return charCode >= 0xDC00 && charCode <= 0xDFFF;\n}\n\nfunction starts_with_pair_end(str) {\n  return is_surrogate_pair_end(str.charCodeAt(0));\n}\n\nfunction ends_with_pair_start(str) {\n  return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\n}\n\nfunction remove_empty_tuples(tuples) {\n  var ret = [];\n  for (var i = 0; i < tuples.length; i++) {\n    if (tuples[i][1].length > 0) {\n      ret.push(tuples[i]);\n    }\n  }\n  return ret;\n}\n\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\n  if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\n    return null;\n  }\n  return remove_empty_tuples([\n    [DIFF_EQUAL, before],\n    [DIFF_DELETE, oldMiddle],\n    [DIFF_INSERT, newMiddle],\n    [DIFF_EQUAL, after]\n  ]);\n}\n\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\n  // note: this runs after equality check has ruled out exact equality\n  var oldRange = typeof cursor_pos === 'number' ?\n    { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\n  var newRange = typeof cursor_pos === 'number' ?\n    null : cursor_pos.newRange;\n  // take into account the old and new selection to generate the best diff\n  // possible for a text edit.  for example, a text change from \"xxx\" to \"xx\"\n  // could be a delete or forwards-delete of any one of the x's, or the\n  // result of selecting two of the x's and typing \"x\".\n  var oldLength = oldText.length;\n  var newLength = newText.length;\n  if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\n    // see if we have an insert or delete before or after cursor\n    var oldCursor = oldRange.index;\n    var oldBefore = oldText.slice(0, oldCursor);\n    var oldAfter = oldText.slice(oldCursor);\n    var maybeNewCursor = newRange ? newRange.index : null;\n    editBefore: {\n      // is this an insert or delete right before oldCursor?\n      var newCursor = oldCursor + newLength - oldLength;\n      if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\n        break editBefore;\n      }\n      if (newCursor < 0 || newCursor > newLength) {\n        break editBefore;\n      }\n      var newBefore = newText.slice(0, newCursor);\n      var newAfter = newText.slice(newCursor);\n      if (newAfter !== oldAfter) {\n        break editBefore;\n      }\n      var prefixLength = Math.min(oldCursor, newCursor);\n      var oldPrefix = oldBefore.slice(0, prefixLength);\n      var newPrefix = newBefore.slice(0, prefixLength);\n      if (oldPrefix !== newPrefix) {\n        break editBefore;\n      }\n      var oldMiddle = oldBefore.slice(prefixLength);\n      var newMiddle = newBefore.slice(prefixLength);\n      return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\n    }\n    editAfter: {\n      // is this an insert or delete right after oldCursor?\n      if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\n        break editAfter;\n      }\n      var cursor = oldCursor;\n      var newBefore = newText.slice(0, cursor);\n      var newAfter = newText.slice(cursor);\n      if (newBefore !== oldBefore) {\n        break editAfter;\n      }\n      var suffixLength = Math.min(oldLength - cursor, newLength - cursor);\n      var oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\n      var newSuffix = newAfter.slice(newAfter.length - suffixLength);\n      if (oldSuffix !== newSuffix) {\n        break editAfter;\n      }\n      var oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\n      var newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\n      return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\n    }\n  }\n  if (oldRange.length > 0 && newRange && newRange.length === 0) {\n    replaceRange: {\n      // see if diff could be a splice of the old selection range\n      var oldPrefix = oldText.slice(0, oldRange.index);\n      var oldSuffix = oldText.slice(oldRange.index + oldRange.length);\n      var prefixLength = oldPrefix.length;\n      var suffixLength = oldSuffix.length;\n      if (newLength < prefixLength + suffixLength) {\n        break replaceRange;\n      }\n      var newPrefix = newText.slice(0, prefixLength);\n      var newSuffix = newText.slice(newLength - suffixLength);\n      if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\n        break replaceRange;\n      }\n      var oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\n      var newMiddle = newText.slice(prefixLength, newLength - suffixLength);\n      return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\n    }\n  }\n\n  return null;\n}\n\nfunction diff(text1, text2, cursor_pos) {\n  // only pass fix_unicode=true at the top level, not when diff_main is\n  // recursively invoked\n  return diff_main(text1, text2, cursor_pos, true);\n}\n\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar lodash_clonedeep_1 = __importDefault(__webpack_require__(12));\r\nvar lodash_isequal_1 = __importDefault(__webpack_require__(19));\r\nvar AttributeMap;\r\n(function (AttributeMap) {\r\n    function compose(a, b, keepNull) {\r\n        if (a === void 0) { a = {}; }\r\n        if (b === void 0) { b = {}; }\r\n        if (typeof a !== 'object') {\r\n            a = {};\r\n        }\r\n        if (typeof b !== 'object') {\r\n            b = {};\r\n        }\r\n        var attributes = lodash_clonedeep_1.default(b);\r\n        if (!keepNull) {\r\n            attributes = Object.keys(attributes).reduce(function (copy, key) {\r\n                if (attributes[key] != null) {\r\n                    copy[key] = attributes[key];\r\n                }\r\n                return copy;\r\n            }, {});\r\n        }\r\n        for (var key in a) {\r\n            if (a[key] !== undefined && b[key] === undefined) {\r\n                attributes[key] = a[key];\r\n            }\r\n        }\r\n        return Object.keys(attributes).length > 0 ? attributes : undefined;\r\n    }\r\n    AttributeMap.compose = compose;\r\n    function diff(a, b) {\r\n        if (a === void 0) { a = {}; }\r\n        if (b === void 0) { b = {}; }\r\n        if (typeof a !== 'object') {\r\n            a = {};\r\n        }\r\n        if (typeof b !== 'object') {\r\n            b = {};\r\n        }\r\n        var attributes = Object.keys(a)\r\n            .concat(Object.keys(b))\r\n            .reduce(function (attrs, key) {\r\n            if (!lodash_isequal_1.default(a[key], b[key])) {\r\n                attrs[key] = b[key] === undefined ? null : b[key];\r\n            }\r\n            return attrs;\r\n        }, {});\r\n        return Object.keys(attributes).length > 0 ? attributes : undefined;\r\n    }\r\n    AttributeMap.diff = diff;\r\n    function invert(attr, base) {\r\n        if (attr === void 0) { attr = {}; }\r\n        if (base === void 0) { base = {}; }\r\n        attr = attr || {};\r\n        var baseInverted = Object.keys(base).reduce(function (memo, key) {\r\n            if (base[key] !== attr[key] && attr[key] !== undefined) {\r\n                memo[key] = base[key];\r\n            }\r\n            return memo;\r\n        }, {});\r\n        return Object.keys(attr).reduce(function (memo, key) {\r\n            if (attr[key] !== base[key] && base[key] === undefined) {\r\n                memo[key] = null;\r\n            }\r\n            return memo;\r\n        }, baseInverted);\r\n    }\r\n    AttributeMap.invert = invert;\r\n    function transform(a, b, priority) {\r\n        if (priority === void 0) { priority = false; }\r\n        if (typeof a !== 'object') {\r\n            return b;\r\n        }\r\n        if (typeof b !== 'object') {\r\n            return undefined;\r\n        }\r\n        if (!priority) {\r\n            return b; // b simply overwrites us without priority\r\n        }\r\n        var attributes = Object.keys(b).reduce(function (attrs, key) {\r\n            if (a[key] === undefined) {\r\n                attrs[key] = b[key]; // null is a valid value\r\n            }\r\n            return attrs;\r\n        }, {});\r\n        return Object.keys(attributes).length > 0 ? attributes : undefined;\r\n    }\r\n    AttributeMap.transform = transform;\r\n})(AttributeMap || (AttributeMap = {}));\r\nexports.default = AttributeMap;\r\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Op_1 = __importDefault(__webpack_require__(63));\r\nvar Iterator = /** @class */ (function () {\r\n    function Iterator(ops) {\r\n        this.ops = ops;\r\n        this.index = 0;\r\n        this.offset = 0;\r\n    }\r\n    Iterator.prototype.hasNext = function () {\r\n        return this.peekLength() < Infinity;\r\n    };\r\n    Iterator.prototype.next = function (length) {\r\n        if (!length) {\r\n            length = Infinity;\r\n        }\r\n        var nextOp = this.ops[this.index];\r\n        if (nextOp) {\r\n            var offset = this.offset;\r\n            var opLength = Op_1.default.length(nextOp);\r\n            if (length >= opLength - offset) {\r\n                length = opLength - offset;\r\n                this.index += 1;\r\n                this.offset = 0;\r\n            }\r\n            else {\r\n                this.offset += length;\r\n            }\r\n            if (typeof nextOp.delete === 'number') {\r\n                return { delete: length };\r\n            }\r\n            else {\r\n                var retOp = {};\r\n                if (nextOp.attributes) {\r\n                    retOp.attributes = nextOp.attributes;\r\n                }\r\n                if (typeof nextOp.retain === 'number') {\r\n                    retOp.retain = length;\r\n                }\r\n                else if (typeof nextOp.insert === 'string') {\r\n                    retOp.insert = nextOp.insert.substr(offset, length);\r\n                }\r\n                else {\r\n                    // offset should === 0, length should === 1\r\n                    retOp.insert = nextOp.insert;\r\n                }\r\n                return retOp;\r\n            }\r\n        }\r\n        else {\r\n            return { retain: Infinity };\r\n        }\r\n    };\r\n    Iterator.prototype.peek = function () {\r\n        return this.ops[this.index];\r\n    };\r\n    Iterator.prototype.peekLength = function () {\r\n        if (this.ops[this.index]) {\r\n            // Should never return 0 if our index is being managed correctly\r\n            return Op_1.default.length(this.ops[this.index]) - this.offset;\r\n        }\r\n        else {\r\n            return Infinity;\r\n        }\r\n    };\r\n    Iterator.prototype.peekType = function () {\r\n        if (this.ops[this.index]) {\r\n            if (typeof this.ops[this.index].delete === 'number') {\r\n                return 'delete';\r\n            }\r\n            else if (typeof this.ops[this.index].retain === 'number') {\r\n                return 'retain';\r\n            }\r\n            else {\r\n                return 'insert';\r\n            }\r\n        }\r\n        return 'retain';\r\n    };\r\n    Iterator.prototype.rest = function () {\r\n        if (!this.hasNext()) {\r\n            return [];\r\n        }\r\n        else if (this.offset === 0) {\r\n            return this.ops.slice(this.index);\r\n        }\r\n        else {\r\n            var offset = this.offset;\r\n            var index = this.index;\r\n            var next = this.next();\r\n            var rest = this.ops.slice(this.index);\r\n            this.offset = offset;\r\n            this.index = index;\r\n            return [next].concat(rest);\r\n        }\r\n    };\r\n    return Iterator;\r\n}());\r\nexports.default = Iterator;\r\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(89);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(90);\n__webpack_require__(110);\nvar path = __webpack_require__(74);\n\nmodule.exports = path.Array.from;\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(91).charAt;\nvar InternalStateModule = __webpack_require__(65);\nvar defineIterator = __webpack_require__(93);\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(53);\nvar requireObjectCoercible = __webpack_require__(46);\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(20);\nvar inspectSource = __webpack_require__(66);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(49);\nvar createIteratorConstructor = __webpack_require__(102);\nvar getPrototypeOf = __webpack_require__(78);\nvar setPrototypeOf = __webpack_require__(108);\nvar setToStringTag = __webpack_require__(81);\nvar createNonEnumerableProperty = __webpack_require__(35);\nvar redefine = __webpack_require__(72);\nvar wellKnownSymbol = __webpack_require__(21);\nvar IS_PURE = __webpack_require__(48);\nvar Iterators = __webpack_require__(51);\nvar IteratorsCore = __webpack_require__(77);\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(36);\nvar classof = __webpack_require__(60);\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(25);\nvar ownKeys = __webpack_require__(97);\nvar getOwnPropertyDescriptorModule = __webpack_require__(58);\nvar definePropertyModule = __webpack_require__(37);\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(73);\nvar getOwnPropertyNamesModule = __webpack_require__(98);\nvar getOwnPropertySymbolsModule = __webpack_require__(100);\nvar anObject = __webpack_require__(39);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(75);\nvar enumBugKeys = __webpack_require__(61);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(59);\nvar toLength = __webpack_require__(50);\nvar toAbsoluteIndex = __webpack_require__(76);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(36);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(77).IteratorPrototype;\nvar create = __webpack_require__(80);\nvar createPropertyDescriptor = __webpack_require__(47);\nvar setToStringTag = __webpack_require__(81);\nvar Iterators = __webpack_require__(51);\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(36);\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(79);\n\nmodule.exports = NATIVE_SYMBOL\n  // eslint-disable-next-line no-undef\n  && !Symbol.sham\n  // eslint-disable-next-line no-undef\n  && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(42);\nvar definePropertyModule = __webpack_require__(37);\nvar anObject = __webpack_require__(39);\nvar objectKeys = __webpack_require__(106);\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(75);\nvar enumBugKeys = __webpack_require__(61);\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(73);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(39);\nvar aPossiblePrototype = __webpack_require__(109);\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(38);\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(49);\nvar from = __webpack_require__(111);\nvar checkCorrectnessOfIteration = __webpack_require__(119);\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(82);\nvar toObject = __webpack_require__(62);\nvar callWithSafeIterationClosing = __webpack_require__(113);\nvar isArrayIteratorMethod = __webpack_require__(114);\nvar toLength = __webpack_require__(50);\nvar createProperty = __webpack_require__(115);\nvar getIteratorMethod = __webpack_require__(116);\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(39);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    var returnMethod = iterator['return'];\n    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n    throw error;\n  }\n};\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(21);\nvar Iterators = __webpack_require__(51);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(55);\nvar definePropertyModule = __webpack_require__(37);\nvar createPropertyDescriptor = __webpack_require__(47);\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(117);\nvar Iterators = __webpack_require__(51);\nvar wellKnownSymbol = __webpack_require__(21);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(118);\nvar classofRaw = __webpack_require__(60);\nvar wellKnownSymbol = __webpack_require__(21);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(21);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(21);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(121);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(122);\nvar entryUnbind = __webpack_require__(83);\n\nmodule.exports = entryUnbind('Array', 'fill');\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(49);\nvar fill = __webpack_require__(123);\nvar addToUnscopables = __webpack_require__(124);\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(62);\nvar toAbsoluteIndex = __webpack_require__(76);\nvar toLength = __webpack_require__(50);\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = toLength(O.length);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(21);\nvar create = __webpack_require__(80);\nvar definePropertyModule = __webpack_require__(37);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(126);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(127);\nvar entryUnbind = __webpack_require__(83);\n\nmodule.exports = entryUnbind('String', 'endsWith');\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(49);\nvar getOwnPropertyDescriptor = __webpack_require__(58).f;\nvar toLength = __webpack_require__(50);\nvar notARegExp = __webpack_require__(128);\nvar requireObjectCoercible = __webpack_require__(46);\nvar correctIsRegExpLogic = __webpack_require__(130);\nvar IS_PURE = __webpack_require__(48);\n\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = String(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = toLength(that.length);\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = String(searchString);\n    return nativeEndsWith\n      ? nativeEndsWith.call(that, search, end)\n      : that.slice(end - search.length, end) === search;\n  }\n});\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isRegExp = __webpack_require__(129);\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(38);\nvar classof = __webpack_require__(60);\nvar wellKnownSymbol = __webpack_require__(21);\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(21);\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (e) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (f) { /* empty */ }\n  } return false;\n};\n\n\n/***/ }),\n/* 131 */,\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(84);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","/**\r\n * DevExtreme (exporter/svg_creator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getData = getData;\r\nexports.svgCreator = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _ajax = _interopRequireDefault(require(\"../core/utils/ajax\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _svg = require(\"../core/utils/svg\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar svgCreator = {\r\n    _markup: \"\",\r\n    _imageArray: {},\r\n    _imageDeferreds: [],\r\n    _getBinaryFile: function(src, callback) {\r\n        _ajax.default.sendRequest({\r\n            url: src,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\"\r\n        }).done(callback).fail(function() {\r\n            callback(false)\r\n        })\r\n    },\r\n    _loadImages: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(that._imageArray, function(src) {\r\n            var deferred = new _deferred.Deferred;\r\n            that._imageDeferreds.push(deferred);\r\n            that._getBinaryFile(src, function(response) {\r\n                if (!response) {\r\n                    delete that._imageArray[src];\r\n                    deferred.resolve();\r\n                    return\r\n                }\r\n                var i;\r\n                var binary = \"\";\r\n                var bytes = new Uint8Array(response);\r\n                var length = bytes.byteLength;\r\n                for (i = 0; i < length; i++) {\r\n                    binary += String.fromCharCode(bytes[i])\r\n                }\r\n                that._imageArray[src] = \"data:image/png;base64,\" + window.btoa(binary);\r\n                deferred.resolve()\r\n            })\r\n        })\r\n    },\r\n    _parseImages: function(element) {\r\n        var href;\r\n        var that = this;\r\n        if (\"image\" === element.tagName) {\r\n            href = (0, _renderer.default)(element).attr(\"href\") || (0, _renderer.default)(element).attr(\"xlink:href\");\r\n            if (!that._imageArray[href]) {\r\n                that._imageArray[href] = \"\"\r\n            }\r\n        }(0, _iterator.each)(element.childNodes, function(_, element) {\r\n            that._parseImages(element)\r\n        })\r\n    },\r\n    _prepareImages: function(svgElem) {\r\n        this._parseImages(svgElem);\r\n        this._loadImages();\r\n        return _deferred.when.apply(_renderer.default, this._imageDeferreds)\r\n    },\r\n    getData: function(data, options) {\r\n        var markup;\r\n        var that = this;\r\n        var xmlVersion = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>';\r\n        var svgElem = (0, _svg.getSvgElement)(data);\r\n        var $svgObject = (0, _renderer.default)(svgElem);\r\n        markup = xmlVersion + (0, _svg.getSvgMarkup)($svgObject.get(0), options.backgroundColor);\r\n        return that._prepareImages(svgElem).then(function() {\r\n            (0, _iterator.each)(that._imageArray, function(href, dataURI) {\r\n                var regexpString = \"href=['|\\\"]\".concat(href, \"['|\\\"]\");\r\n                markup = markup.replace(new RegExp(regexpString, \"gi\"), 'href=\"'.concat(dataURI, '\"'))\r\n            });\r\n            return (0, _type.isFunction)(window.Blob) ? that._getBlob(markup) : that._getBase64(markup)\r\n        })\r\n    },\r\n    _getBlob: function(markup) {\r\n        return new window.Blob([markup], {\r\n            type: \"image/svg+xml\"\r\n        })\r\n    },\r\n    _getBase64: function(markup) {\r\n        return window.btoa(markup)\r\n    }\r\n};\r\nexports.svgCreator = svgCreator;\r\n\r\nfunction getData(data, options) {\r\n    return svgCreator.getData(data, options)\r\n}\r\n","/**\r\n * DevExtreme (ui/html_editor/modules/toolbar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _toolbar = _interopRequireDefault(require(\"../../toolbar\"));\r\nrequire(\"../../select_box\");\r\nrequire(\"../../color_box/color_view\");\r\nrequire(\"../../number_box\");\r\nvar _widget_collector = _interopRequireDefault(require(\"./widget_collector\"));\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _message = _interopRequireDefault(require(\"../../../localization/message\"));\r\nvar _inflector = require(\"../../../core/utils/inflector\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _index = require(\"../../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar ToolbarModule = {};\r\nif (_devextremeQuill.default) {\r\n    var BaseModule = _devextremeQuill.default.import(\"core/module\");\r\n    var TOOLBAR_WRAPPER_CLASS = \"dx-htmleditor-toolbar-wrapper\";\r\n    var TOOLBAR_CLASS = \"dx-htmleditor-toolbar\";\r\n    var TOOLBAR_FORMAT_WIDGET_CLASS = \"dx-htmleditor-toolbar-format\";\r\n    var TOOLBAR_SEPARATOR_CLASS = \"dx-htmleditor-toolbar-separator\";\r\n    var TOOLBAR_MENU_SEPARATOR_CLASS = \"dx-htmleditor-toolbar-menu-separator\";\r\n    var ACTIVE_FORMAT_CLASS = \"dx-format-active\";\r\n    var BOX_ITEM_CONTENT_CLASS = \"dx-box-item-content\";\r\n    var ICON_CLASS = \"dx-icon\";\r\n    var SELECTION_CHANGE_EVENT = \"selection-change\";\r\n    var DIALOG_COLOR_CAPTION = \"dxHtmlEditor-dialogColorCaption\";\r\n    var DIALOG_BACKGROUND_CAPTION = \"dxHtmlEditor-dialogBackgroundCaption\";\r\n    var DIALOG_LINK_CAPTION = \"dxHtmlEditor-dialogLinkCaption\";\r\n    var DIALOG_LINK_FIELD_URL = \"dxHtmlEditor-dialogLinkUrlField\";\r\n    var DIALOG_LINK_FIELD_TEXT = \"dxHtmlEditor-dialogLinkTextField\";\r\n    var DIALOG_LINK_FIELD_TARGET = \"dxHtmlEditor-dialogLinkTargetField\";\r\n    var DIALOG_LINK_FIELD_TARGET_CLASS = \"dx-formdialog-field-target\";\r\n    var DIALOG_IMAGE_CAPTION = \"dxHtmlEditor-dialogImageCaption\";\r\n    var DIALOG_IMAGE_FIELD_URL = \"dxHtmlEditor-dialogImageUrlField\";\r\n    var DIALOG_IMAGE_FIELD_ALT = \"dxHtmlEditor-dialogImageAltField\";\r\n    var DIALOG_IMAGE_FIELD_WIDTH = \"dxHtmlEditor-dialogImageWidthField\";\r\n    var DIALOG_IMAGE_FIELD_HEIGHT = \"dxHtmlEditor-dialogImageHeightField\";\r\n    var DIALOG_TABLE_FIELD_COLUMNS = \"dxHtmlEditor-dialogInsertTableRowsField\";\r\n    var DIALOG_TABLE_FIELD_ROWS = \"dxHtmlEditor-dialogInsertTableColumnsField\";\r\n    var DIALOG_TABLE_CAPTION = \"dxHtmlEditor-dialogInsertTableCaption\";\r\n    var TABLE_OPERATIONS = [\"insertTable\", \"insertRowAbove\", \"insertRowBelow\", \"insertColumnLeft\", \"insertColumnRight\", \"deleteColumn\", \"deleteRow\", \"deleteTable\"];\r\n    var USER_ACTION = \"user\";\r\n    var SILENT_ACTION = \"silent\";\r\n    var HEADING_TEXT = _message.default.format(\"dxHtmlEditor-heading\");\r\n    var NORMAL_TEXT = _message.default.format(\"dxHtmlEditor-normalText\");\r\n    ToolbarModule = function(_BaseModule) {\r\n        _inherits(ToolbarModule, _BaseModule);\r\n        var _super = _createSuper(ToolbarModule);\r\n\r\n        function ToolbarModule(quill, options) {\r\n            var _this;\r\n            _classCallCheck(this, ToolbarModule);\r\n            _this = _super.call(this, quill, options);\r\n            _this._editorInstance = options.editorInstance;\r\n            _this._toolbarWidgets = new _widget_collector.default;\r\n            _this._formatHandlers = _this._getFormatHandlers();\r\n            if ((0, _type.isDefined)(options.items)) {\r\n                _this._addCallbacks();\r\n                _this._renderToolbar();\r\n                _this.quill.on(\"editor-change\", function(eventName) {\r\n                    var isSelectionChanged = eventName === SELECTION_CHANGE_EVENT;\r\n                    _this._updateToolbar(isSelectionChanged)\r\n                })\r\n            }\r\n            return _this\r\n        }\r\n        _createClass(ToolbarModule, [{\r\n            key: \"_applyFormat\",\r\n            value: function(formatArgs, event) {\r\n                var _this$quill;\r\n                this._editorInstance._saveValueChangeEvent(event);\r\n                (_this$quill = this.quill).format.apply(_this$quill, _toConsumableArray(formatArgs))\r\n            }\r\n        }, {\r\n            key: \"_addCallbacks\",\r\n            value: function() {\r\n                this._editorInstance.addCleanCallback(this.clean.bind(this));\r\n                this._editorInstance.addContentInitializedCallback(this.updateHistoryWidgets.bind(this))\r\n            }\r\n        }, {\r\n            key: \"_updateToolbar\",\r\n            value: function(isSelectionChanged) {\r\n                this.updateFormatWidgets(isSelectionChanged);\r\n                this.updateHistoryWidgets();\r\n                this.updateTableWidgets()\r\n            }\r\n        }, {\r\n            key: \"_getDefaultClickHandler\",\r\n            value: function(formatName) {\r\n                var _this2 = this;\r\n                return function(_ref) {\r\n                    var event = _ref.event;\r\n                    var formats = _this2.quill.getFormat();\r\n                    var value = formats[formatName];\r\n                    var newValue = !((0, _type.isBoolean)(value) ? value : (0, _type.isDefined)(value));\r\n                    _this2._applyFormat([formatName, newValue, USER_ACTION], event);\r\n                    _this2._updateFormatWidget(formatName, newValue, formats)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_updateFormatWidget\",\r\n            value: function(formatName, isApplied, formats) {\r\n                var widget = this._toolbarWidgets.getByName(formatName);\r\n                if (!widget) {\r\n                    return\r\n                }\r\n                if (isApplied) {\r\n                    this._markActiveFormatWidget(formatName, widget, formats)\r\n                } else {\r\n                    this._resetFormatWidget(formatName, widget);\r\n                    if (Object.prototype.hasOwnProperty.call(formatName)) {\r\n                        delete formats[formatName]\r\n                    }\r\n                }\r\n                this._toggleClearFormatting(isApplied || !(0, _type.isEmptyObject)(formats))\r\n            }\r\n        }, {\r\n            key: \"_getFormatHandlers\",\r\n            value: function() {\r\n                var _this3 = this;\r\n                return {\r\n                    clear: function(e) {\r\n                        var range = _this3.quill.getSelection();\r\n                        if (range) {\r\n                            _this3.quill.removeFormat(range);\r\n                            _this3.updateFormatWidgets()\r\n                        }\r\n                    },\r\n                    link: this._prepareLinkHandler(),\r\n                    image: this._prepareImageHandler(),\r\n                    color: this._prepareColorClickHandler(\"color\"),\r\n                    background: this._prepareColorClickHandler(\"background\"),\r\n                    orderedList: this._prepareShortcutHandler(\"list\", \"ordered\"),\r\n                    bulletList: this._prepareShortcutHandler(\"list\", \"bullet\"),\r\n                    alignLeft: this._prepareShortcutHandler(\"align\", \"left\"),\r\n                    alignCenter: this._prepareShortcutHandler(\"align\", \"center\"),\r\n                    alignRight: this._prepareShortcutHandler(\"align\", \"right\"),\r\n                    alignJustify: this._prepareShortcutHandler(\"align\", \"justify\"),\r\n                    codeBlock: this._getDefaultClickHandler(\"code-block\"),\r\n                    undo: function(_ref2) {\r\n                        var event = _ref2.event;\r\n                        _this3._editorInstance._saveValueChangeEvent(event);\r\n                        _this3.quill.history.undo()\r\n                    },\r\n                    redo: function(_ref3) {\r\n                        var event = _ref3.event;\r\n                        _this3._editorInstance._saveValueChangeEvent(event);\r\n                        _this3.quill.history.redo()\r\n                    },\r\n                    increaseIndent: function(_ref4) {\r\n                        var event = _ref4.event;\r\n                        _this3._applyFormat([\"indent\", \"+1\", USER_ACTION], event)\r\n                    },\r\n                    decreaseIndent: function(_ref5) {\r\n                        var event = _ref5.event;\r\n                        _this3._applyFormat([\"indent\", \"-1\", USER_ACTION], event)\r\n                    },\r\n                    superscript: this._prepareShortcutHandler(\"script\", \"super\"),\r\n                    subscript: this._prepareShortcutHandler(\"script\", \"sub\"),\r\n                    insertTable: this._prepareInsertTableHandler(),\r\n                    insertRowAbove: this._getTableOperationHandler(\"insertRowAbove\"),\r\n                    insertRowBelow: this._getTableOperationHandler(\"insertRowBelow\"),\r\n                    insertColumnLeft: this._getTableOperationHandler(\"insertColumnLeft\"),\r\n                    insertColumnRight: this._getTableOperationHandler(\"insertColumnRight\"),\r\n                    deleteColumn: this._getTableOperationHandler(\"deleteColumn\"),\r\n                    deleteRow: this._getTableOperationHandler(\"deleteRow\"),\r\n                    deleteTable: this._getTableOperationHandler(\"deleteTable\")\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_prepareShortcutHandler\",\r\n            value: function(formatName, shortcutValue) {\r\n                var _this4 = this;\r\n                return function(_ref6) {\r\n                    var event = _ref6.event;\r\n                    var formats = _this4.quill.getFormat();\r\n                    var value = formats[formatName] === shortcutValue ? false : shortcutValue;\r\n                    _this4._applyFormat([formatName, value, USER_ACTION], event);\r\n                    _this4.updateFormatWidgets(true)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_prepareLinkHandler\",\r\n            value: function() {\r\n                var _this5 = this;\r\n                return function() {\r\n                    _this5.quill.focus();\r\n                    var selection = _this5.quill.getSelection();\r\n                    var hasEmbedContent = _this5._hasEmbedContent(selection);\r\n                    var formats = selection ? _this5.quill.getFormat() : {};\r\n                    var formData = {\r\n                        href: formats.link || \"\",\r\n                        text: selection && !hasEmbedContent ? _this5.quill.getText(selection) : \"\",\r\n                        target: Object.prototype.hasOwnProperty.call(formats, \"target\") ? !!formats.target : true\r\n                    };\r\n                    _this5._editorInstance.formDialogOption(\"title\", _message.default.format(DIALOG_LINK_CAPTION));\r\n                    var promise = _this5._editorInstance.showFormDialog({\r\n                        formData: formData,\r\n                        items: _this5._getLinkFormItems(selection)\r\n                    });\r\n                    promise.done(function(formData, event) {\r\n                        if (selection && !hasEmbedContent) {\r\n                            var text = formData.text || formData.href;\r\n                            var index = selection.index,\r\n                                length = selection.length;\r\n                            formData.text = void 0;\r\n                            _this5._editorInstance._saveValueChangeEvent(event);\r\n                            length && _this5.quill.deleteText(index, length, SILENT_ACTION);\r\n                            _this5.quill.insertText(index, text, \"link\", formData, USER_ACTION);\r\n                            _this5.quill.setSelection(index + text.length, 0, USER_ACTION)\r\n                        } else {\r\n                            formData.text = !selection && !formData.text ? formData.href : formData.text;\r\n                            _this5._applyFormat([\"link\", formData, USER_ACTION], event)\r\n                        }\r\n                    });\r\n                    promise.fail(function() {\r\n                        _this5.quill.focus()\r\n                    })\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_hasEmbedContent\",\r\n            value: function(selection) {\r\n                return !!selection && this.quill.getText(selection).trim().length < selection.length\r\n            }\r\n        }, {\r\n            key: \"_getLinkFormItems\",\r\n            value: function(selection) {\r\n                return [{\r\n                    dataField: \"href\",\r\n                    label: {\r\n                        text: _message.default.format(DIALOG_LINK_FIELD_URL)\r\n                    }\r\n                }, {\r\n                    dataField: \"text\",\r\n                    label: {\r\n                        text: _message.default.format(DIALOG_LINK_FIELD_TEXT)\r\n                    },\r\n                    visible: !this._hasEmbedContent(selection)\r\n                }, {\r\n                    dataField: \"target\",\r\n                    editorType: \"dxCheckBox\",\r\n                    editorOptions: {\r\n                        text: _message.default.format(DIALOG_LINK_FIELD_TARGET)\r\n                    },\r\n                    cssClass: DIALOG_LINK_FIELD_TARGET_CLASS,\r\n                    label: {\r\n                        visible: false\r\n                    }\r\n                }]\r\n            }\r\n        }, {\r\n            key: \"_prepareImageHandler\",\r\n            value: function() {\r\n                var _this6 = this;\r\n                return function() {\r\n                    var formData = _this6.quill.getFormat();\r\n                    var isUpdateDialog = Object.prototype.hasOwnProperty.call(formData, \"imageSrc\");\r\n                    var defaultIndex = _this6._defaultPasteIndex;\r\n                    if (isUpdateDialog) {\r\n                        var _this6$quill$getForma = _this6.quill.getFormat(defaultIndex - 1, 1),\r\n                            imageSrc = _this6$quill$getForma.imageSrc;\r\n                        formData.src = formData.imageSrc;\r\n                        delete formData.imageSrc;\r\n                        if (!imageSrc || 0 === defaultIndex) {\r\n                            _this6.quill.setSelection(defaultIndex + 1, 0, SILENT_ACTION)\r\n                        }\r\n                    }\r\n                    var formatIndex = _this6._embedFormatIndex;\r\n                    _this6._editorInstance.formDialogOption(\"title\", _message.default.format(DIALOG_IMAGE_CAPTION));\r\n                    var promise = _this6._editorInstance.showFormDialog({\r\n                        formData: formData,\r\n                        items: _this6._imageFormItems\r\n                    });\r\n                    promise.done(function(formData, event) {\r\n                        var index = defaultIndex;\r\n                        _this6._editorInstance._saveValueChangeEvent(event);\r\n                        if (isUpdateDialog) {\r\n                            index = formatIndex;\r\n                            _this6.quill.deleteText(index, 1, SILENT_ACTION)\r\n                        }\r\n                        _this6.quill.insertEmbed(index, \"extendedImage\", formData, USER_ACTION);\r\n                        _this6.quill.setSelection(index + 1, 0, USER_ACTION)\r\n                    }).always(function() {\r\n                        _this6.quill.focus()\r\n                    })\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_prepareInsertTableHandler\",\r\n            value: function() {\r\n                var _this7 = this;\r\n                return function() {\r\n                    var formats = _this7.quill.getFormat();\r\n                    var isTableFocused = Object.prototype.hasOwnProperty.call(formats, \"table\");\r\n                    var formData = {\r\n                        rows: 1,\r\n                        columns: 1\r\n                    };\r\n                    if (isTableFocused) {\r\n                        _this7.quill.focus();\r\n                        return\r\n                    }\r\n                    _this7._editorInstance.formDialogOption(\"title\", _message.default.format(DIALOG_TABLE_CAPTION));\r\n                    var promise = _this7._editorInstance.showFormDialog({\r\n                        formData: formData,\r\n                        items: _this7._insertTableFormItems\r\n                    });\r\n                    promise.done(function(formData, event) {\r\n                        _this7.quill.focus();\r\n                        var table = _this7.quill.getModule(\"table\");\r\n                        if (table) {\r\n                            _this7._editorInstance._saveValueChangeEvent(event);\r\n                            var columns = formData.columns,\r\n                                rows = formData.rows;\r\n                            table.insertTable(columns, rows)\r\n                        }\r\n                    }).always(function() {\r\n                        _this7.quill.focus()\r\n                    })\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_getTableOperationHandler\",\r\n            value: function(operationName) {\r\n                var _this8 = this;\r\n                for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\r\n                    rest[_key - 1] = arguments[_key]\r\n                }\r\n                return function() {\r\n                    var table = _this8.quill.getModule(\"table\");\r\n                    if (!table) {\r\n                        return\r\n                    }\r\n                    _this8.quill.focus();\r\n                    return table[operationName].apply(table, rest)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_renderToolbar\",\r\n            value: function() {\r\n                var _this9 = this;\r\n                var container = this.options.container || this._getContainer();\r\n                this._$toolbar = (0, _renderer.default)(\"<div>\").addClass(TOOLBAR_CLASS).appendTo(container);\r\n                this._$toolbarContainer = (0, _renderer.default)(container).addClass(TOOLBAR_WRAPPER_CLASS);\r\n                _events_engine.default.on(this._$toolbarContainer, (0, _index.addNamespace)(\"mousedown\", this._editorInstance.NAME), function(e) {\r\n                    e.preventDefault()\r\n                });\r\n                this.toolbarInstance = this._editorInstance._createComponent(this._$toolbar, _toolbar.default, this.toolbarConfig);\r\n                this._editorInstance.on(\"optionChanged\", function(_ref7) {\r\n                    var name = _ref7.name;\r\n                    if (\"readOnly\" === name || \"disabled\" === name) {\r\n                        _this9.toolbarInstance.option(\"disabled\", _this9.isInteractionDisabled)\r\n                    }\r\n                })\r\n            }\r\n        }, {\r\n            key: \"isMultilineMode\",\r\n            value: function() {\r\n                var _this$options$multili;\r\n                return null !== (_this$options$multili = this.options.multiline) && void 0 !== _this$options$multili ? _this$options$multili : true\r\n            }\r\n        }, {\r\n            key: \"clean\",\r\n            value: function() {\r\n                this._toolbarWidgets.clear();\r\n                if (this._$toolbarContainer) {\r\n                    this._$toolbarContainer.empty().removeClass(TOOLBAR_WRAPPER_CLASS)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"repaint\",\r\n            value: function() {\r\n                this.toolbarInstance && this.toolbarInstance.repaint()\r\n            }\r\n        }, {\r\n            key: \"_getContainer\",\r\n            value: function() {\r\n                var $container = (0, _renderer.default)(\"<div>\");\r\n                this._editorInstance.$element().prepend($container);\r\n                return $container\r\n            }\r\n        }, {\r\n            key: \"_prepareToolbarItems\",\r\n            value: function() {\r\n                var _this10 = this;\r\n                var resultItems = [];\r\n                (0, _iterator.each)(this.options.items, function(index, item) {\r\n                    var newItem;\r\n                    if ((0, _type.isObject)(item)) {\r\n                        newItem = _this10._handleObjectItem(item)\r\n                    } else {\r\n                        if ((0, _type.isString)(item)) {\r\n                            var buttonItemConfig = _this10._prepareButtonItemConfig(item);\r\n                            newItem = _this10._getToolbarItem(buttonItemConfig)\r\n                        }\r\n                    }\r\n                    if (newItem) {\r\n                        resultItems.push(newItem)\r\n                    }\r\n                });\r\n                return resultItems\r\n            }\r\n        }, {\r\n            key: \"_handleObjectItem\",\r\n            value: function(item) {\r\n                if (item.formatName && item.formatValues && this._isAcceptableItem(item.widget, \"dxSelectBox\")) {\r\n                    var selectItemConfig = this._prepareSelectItemConfig(item);\r\n                    return this._getToolbarItem(selectItemConfig)\r\n                } else {\r\n                    if (item.formatName && this._isAcceptableItem(item.widget, \"dxButton\")) {\r\n                        var defaultButtonItemConfig = this._prepareButtonItemConfig(item.formatName);\r\n                        var buttonItemConfig = (0, _extend.extend)(true, defaultButtonItemConfig, item);\r\n                        return this._getToolbarItem(buttonItemConfig)\r\n                    } else {\r\n                        return this._getToolbarItem(item)\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_isAcceptableItem\",\r\n            value: function(widget, acceptableWidgetName) {\r\n                return !widget || widget === acceptableWidgetName\r\n            }\r\n        }, {\r\n            key: \"_prepareButtonItemConfig\",\r\n            value: function(formatName) {\r\n                var iconName = \"clear\" === formatName ? \"clearformat\" : formatName;\r\n                var buttonText = (0, _inflector.titleize)(formatName);\r\n                return {\r\n                    widget: \"dxButton\",\r\n                    formatName: formatName,\r\n                    options: {\r\n                        hint: buttonText,\r\n                        text: buttonText,\r\n                        icon: iconName.toLowerCase(),\r\n                        onClick: this._formatHandlers[formatName] || this._getDefaultClickHandler(formatName),\r\n                        stylingMode: \"text\"\r\n                    },\r\n                    showText: \"inMenu\"\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_prepareSelectItemConfig\",\r\n            value: function(item) {\r\n                var _this11 = this;\r\n                return (0, _extend.extend)(true, {\r\n                    widget: \"dxSelectBox\",\r\n                    formatName: item.formatName,\r\n                    options: {\r\n                        stylingMode: \"filled\",\r\n                        dataSource: item.formatValues,\r\n                        placeholder: (0, _inflector.titleize)(item.formatName),\r\n                        onValueChanged: function(e) {\r\n                            if (!_this11._isReset) {\r\n                                _this11._applyFormat([item.formatName, e.value, USER_ACTION], e.event);\r\n                                _this11._setValueSilent(e.component, e.value)\r\n                            }\r\n                        }\r\n                    }\r\n                }, item)\r\n            }\r\n        }, {\r\n            key: \"_prepareColorClickHandler\",\r\n            value: function(formatName) {\r\n                var _this12 = this;\r\n                return function() {\r\n                    var formData = _this12.quill.getFormat();\r\n                    var caption = \"color\" === formatName ? DIALOG_COLOR_CAPTION : DIALOG_BACKGROUND_CAPTION;\r\n                    _this12._editorInstance.formDialogOption(\"title\", _message.default.format(caption));\r\n                    var promise = _this12._editorInstance.showFormDialog({\r\n                        formData: formData,\r\n                        items: [{\r\n                            dataField: formatName,\r\n                            editorType: \"dxColorView\",\r\n                            editorOptions: {\r\n                                onContentReady: function(e) {\r\n                                    (0, _renderer.default)(e.element).closest(\".\".concat(BOX_ITEM_CONTENT_CLASS)).css(\"flexBasis\", \"auto\")\r\n                                },\r\n                                focusStateEnabled: false\r\n                            },\r\n                            label: {\r\n                                visible: false\r\n                            }\r\n                        }]\r\n                    });\r\n                    promise.done(function(formData, event) {\r\n                        _this12._applyFormat([formatName, formData[formatName], USER_ACTION], event)\r\n                    });\r\n                    promise.fail(function() {\r\n                        _this12.quill.focus()\r\n                    })\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_getToolbarItem\",\r\n            value: function(item) {\r\n                var _this13 = this;\r\n                var baseItem = {\r\n                    options: {\r\n                        onInitialized: function(e) {\r\n                            if (item.formatName) {\r\n                                e.component.$element().addClass(TOOLBAR_FORMAT_WIDGET_CLASS);\r\n                                e.component.$element().toggleClass(\"dx-\".concat(item.formatName.toLowerCase(), \"-format\"), !!item.formatName);\r\n                                _this13._toolbarWidgets.add(item.formatName, e.component)\r\n                            }\r\n                        }\r\n                    }\r\n                };\r\n                var multilineItem = this.isMultilineMode() ? {\r\n                    location: \"before\",\r\n                    locateInMenu: \"never\"\r\n                } : {};\r\n                return (0, _extend.extend)(true, {\r\n                    location: \"before\",\r\n                    locateInMenu: \"auto\"\r\n                }, this._getDefaultConfig(item.formatName), item, baseItem, multilineItem)\r\n            }\r\n        }, {\r\n            key: \"_getDefaultItemsConfig\",\r\n            value: function() {\r\n                return {\r\n                    header: {\r\n                        options: {\r\n                            displayExpr: function(item) {\r\n                                var isHeaderValue = (0, _type.isDefined)(item) && false !== item;\r\n                                return isHeaderValue ? \"\".concat(HEADING_TEXT, \" \").concat(item) : NORMAL_TEXT\r\n                            }\r\n                        }\r\n                    },\r\n                    clear: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    undo: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    redo: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    insertRowAbove: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    insertRowBelow: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    insertColumnLeft: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    insertColumnRight: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    deleteRow: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    deleteColumn: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    deleteTable: {\r\n                        options: {\r\n                            disabled: true\r\n                        }\r\n                    },\r\n                    separator: {\r\n                        template: function(data, index, element) {\r\n                            (0, _renderer.default)(element).addClass(TOOLBAR_SEPARATOR_CLASS)\r\n                        },\r\n                        menuItemTemplate: function(data, index, element) {\r\n                            (0, _renderer.default)(element).addClass(TOOLBAR_MENU_SEPARATOR_CLASS)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_getDefaultConfig\",\r\n            value: function(formatName) {\r\n                return this._getDefaultItemsConfig()[formatName]\r\n            }\r\n        }, {\r\n            key: \"updateHistoryWidgets\",\r\n            value: function() {\r\n                var historyModule = this.quill.history;\r\n                if (!historyModule) {\r\n                    return\r\n                }\r\n                var _historyModule$stack = historyModule.stack,\r\n                    undoOps = _historyModule$stack.undo,\r\n                    redoOps = _historyModule$stack.redo;\r\n                this._updateManipulationWidget(this._toolbarWidgets.getByName(\"undo\"), Boolean(undoOps.length));\r\n                this._updateManipulationWidget(this._toolbarWidgets.getByName(\"redo\"), Boolean(redoOps.length))\r\n            }\r\n        }, {\r\n            key: \"updateTableWidgets\",\r\n            value: function() {\r\n                var _this$quill$getFormat, _this14 = this;\r\n                var table = this.quill.getModule(\"table\");\r\n                if (!table) {\r\n                    return\r\n                }\r\n                var selection = this.quill.getSelection();\r\n                var isTableOperationsEnabled = selection && Boolean(null === (_this$quill$getFormat = this.quill.getFormat(selection)) || void 0 === _this$quill$getFormat ? void 0 : _this$quill$getFormat.table);\r\n                TABLE_OPERATIONS.forEach(function(operationName) {\r\n                    var isInsertTable = \"insertTable\" === operationName;\r\n                    var widget = _this14._toolbarWidgets.getByName(operationName);\r\n                    _this14._updateManipulationWidget(widget, isInsertTable ? !isTableOperationsEnabled : isTableOperationsEnabled)\r\n                })\r\n            }\r\n        }, {\r\n            key: \"_updateManipulationWidget\",\r\n            value: function(widget, isOperationEnabled) {\r\n                if (!widget) {\r\n                    return\r\n                }\r\n                widget.option(\"disabled\", !isOperationEnabled)\r\n            }\r\n        }, {\r\n            key: \"updateFormatWidgets\",\r\n            value: function(isResetRequired) {\r\n                var selection = this.quill.getSelection();\r\n                if (!selection) {\r\n                    return\r\n                }\r\n                var formats = this.quill.getFormat(selection);\r\n                var hasFormats = !(0, _type.isEmptyObject)(formats);\r\n                if (!hasFormats || isResetRequired) {\r\n                    this._resetFormatWidgets()\r\n                }\r\n                for (var formatName in formats) {\r\n                    var widgetName = this._getFormatWidgetName(formatName, formats);\r\n                    var formatWidget = this._toolbarWidgets.getByName(widgetName) || this._toolbarWidgets.getByName(formatName);\r\n                    if (!formatWidget) {\r\n                        continue\r\n                    }\r\n                    this._markActiveFormatWidget(formatName, formatWidget, formats)\r\n                }\r\n                this._toggleClearFormatting(hasFormats || selection.length > 1)\r\n            }\r\n        }, {\r\n            key: \"_markActiveFormatWidget\",\r\n            value: function(name, widget, formats) {\r\n                if (this._isColorFormat(name)) {\r\n                    this._updateColorWidget(name, formats[name])\r\n                }\r\n                if (\"value\" in widget.option()) {\r\n                    this._setValueSilent(widget, formats[name])\r\n                } else {\r\n                    widget.$element().addClass(ACTIVE_FORMAT_CLASS)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_toggleClearFormatting\",\r\n            value: function(hasFormats) {\r\n                var clearWidget = this._toolbarWidgets.getByName(\"clear\");\r\n                if (clearWidget) {\r\n                    clearWidget.option(\"disabled\", !hasFormats)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_isColorFormat\",\r\n            value: function(formatName) {\r\n                return \"color\" === formatName || \"background\" === formatName\r\n            }\r\n        }, {\r\n            key: \"_updateColorWidget\",\r\n            value: function(formatName, color) {\r\n                var formatWidget = this._toolbarWidgets.getByName(formatName);\r\n                if (!formatWidget) {\r\n                    return\r\n                }\r\n                formatWidget.$element().find(\".\".concat(ICON_CLASS)).css(\"borderBottomColor\", color || \"transparent\")\r\n            }\r\n        }, {\r\n            key: \"_getFormatWidgetName\",\r\n            value: function(formatName, formats) {\r\n                var widgetName;\r\n                switch (formatName) {\r\n                    case \"align\":\r\n                        widgetName = formatName + (0, _inflector.titleize)(formats[formatName]);\r\n                        break;\r\n                    case \"list\":\r\n                        widgetName = formats[formatName] + (0, _inflector.titleize)(formatName);\r\n                        break;\r\n                    case \"code-block\":\r\n                        widgetName = \"codeBlock\";\r\n                        break;\r\n                    case \"script\":\r\n                        widgetName = formats[formatName] + formatName;\r\n                        break;\r\n                    case \"imageSrc\":\r\n                        widgetName = \"image\";\r\n                        break;\r\n                    default:\r\n                        widgetName = formatName\r\n                }\r\n                return widgetName\r\n            }\r\n        }, {\r\n            key: \"_setValueSilent\",\r\n            value: function(widget, value) {\r\n                this._isReset = true;\r\n                widget.option(\"value\", value);\r\n                this._isReset = false\r\n            }\r\n        }, {\r\n            key: \"_resetFormatWidgets\",\r\n            value: function() {\r\n                var _this15 = this;\r\n                this._toolbarWidgets.each(function(name, widget) {\r\n                    _this15._resetFormatWidget(name, widget)\r\n                })\r\n            }\r\n        }, {\r\n            key: \"_resetFormatWidget\",\r\n            value: function(name, widget) {\r\n                widget.$element().removeClass(ACTIVE_FORMAT_CLASS);\r\n                if (this._isColorFormat(name)) {\r\n                    this._updateColorWidget(name)\r\n                }\r\n                if (\"clear\" === name) {\r\n                    widget.option(\"disabled\", true)\r\n                }\r\n                if (\"dxSelectBox\" === widget.NAME) {\r\n                    this._setValueSilent(widget, null)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"addClickHandler\",\r\n            value: function(formatName, handler) {\r\n                this._formatHandlers[formatName] = handler;\r\n                var formatWidget = this._toolbarWidgets.getByName(formatName);\r\n                if (formatWidget && \"dxButton\" === formatWidget.NAME) {\r\n                    formatWidget.option(\"onClick\", handler)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_insertTableFormItems\",\r\n            get: function() {\r\n                return [{\r\n                    dataField: \"columns\",\r\n                    editorType: \"dxNumberBox\",\r\n                    editorOptions: {\r\n                        min: 1\r\n                    },\r\n                    label: {\r\n                        text: _message.default.format(DIALOG_TABLE_FIELD_COLUMNS)\r\n                    }\r\n                }, {\r\n                    dataField: \"rows\",\r\n                    editorType: \"dxNumberBox\",\r\n                    editorOptions: {\r\n                        min: 1\r\n                    },\r\n                    label: {\r\n                        text: _message.default.format(DIALOG_TABLE_FIELD_ROWS)\r\n                    }\r\n                }]\r\n            }\r\n        }, {\r\n            key: \"_embedFormatIndex\",\r\n            get: function() {\r\n                var selection = this.quill.getSelection();\r\n                if (selection) {\r\n                    if (selection.length) {\r\n                        return selection.index\r\n                    } else {\r\n                        return selection.index - 1\r\n                    }\r\n                } else {\r\n                    return this.quill.getLength()\r\n                }\r\n            }\r\n        }, {\r\n            key: \"_defaultPasteIndex\",\r\n            get: function() {\r\n                var selection = this.quill.getSelection();\r\n                return selection && selection.index || this.quill.getLength()\r\n            }\r\n        }, {\r\n            key: \"_imageFormItems\",\r\n            get: function() {\r\n                return [{\r\n                    dataField: \"src\",\r\n                    label: {\r\n                        text: _message.default.format(DIALOG_IMAGE_FIELD_URL)\r\n                    }\r\n                }, {\r\n                    dataField: \"width\",\r\n                    label: {\r\n                        text: _message.default.format(DIALOG_IMAGE_FIELD_WIDTH)\r\n                    }\r\n                }, {\r\n                    dataField: \"height\",\r\n                    label: {\r\n                        text: _message.default.format(DIALOG_IMAGE_FIELD_HEIGHT)\r\n                    }\r\n                }, {\r\n                    dataField: \"alt\",\r\n                    label: {\r\n                        text: _message.default.format(DIALOG_IMAGE_FIELD_ALT)\r\n                    }\r\n                }]\r\n            }\r\n        }, {\r\n            key: \"toolbarConfig\",\r\n            get: function() {\r\n                return {\r\n                    dataSource: this._prepareToolbarItems(),\r\n                    disabled: this.isInteractionDisabled,\r\n                    menuContainer: this._$toolbarContainer,\r\n                    multiline: this.isMultilineMode()\r\n                }\r\n            }\r\n        }, {\r\n            key: \"isInteractionDisabled\",\r\n            get: function() {\r\n                return this._editorInstance.option(\"readOnly\") || this._editorInstance.option(\"disabled\")\r\n            }\r\n        }]);\r\n        return ToolbarModule\r\n    }(BaseModule)\r\n}\r\nvar _default = ToolbarModule;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/themes/generic.darkviolet.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar ACCENT_COLOR = \"#9c63ff\";\r\nvar BACKGROUND_COLOR = \"#17171f\";\r\nvar TITLE_COLOR = \"#f5f6f7\";\r\nvar SUBTITLE_COLOR = \"#fff\";\r\nvar TEXT_COLOR = \"#b2b2b6\";\r\nvar BORDER_COLOR = \"#343840\";\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.darkviolet\",\r\n    defaultPalette: \"Dark Violet\",\r\n    backgroundColor: BACKGROUND_COLOR,\r\n    primaryTitleColor: TITLE_COLOR,\r\n    secondaryTitleColor: SUBTITLE_COLOR,\r\n    gridColor: BORDER_COLOR,\r\n    axisColor: TEXT_COLOR,\r\n    \"export\": {\r\n        backgroundColor: BACKGROUND_COLOR,\r\n        font: {\r\n            color: TITLE_COLOR\r\n        },\r\n        button: {\r\n            \"default\": {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#414152\",\r\n                backgroundColor: BACKGROUND_COLOR\r\n            },\r\n            hover: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#5c5c74\",\r\n                backgroundColor: \"#2d2d3c\"\r\n            },\r\n            focus: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#7c7c97\",\r\n                backgroundColor: \"#2d2d3c\"\r\n            },\r\n            active: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#7c7c97\",\r\n                backgroundColor: \"#3c3c51\"\r\n            }\r\n        }\r\n    },\r\n    legend: {\r\n        font: {\r\n            color: TEXT_COLOR\r\n        }\r\n    },\r\n    tooltip: {\r\n        color: BACKGROUND_COLOR,\r\n        border: {\r\n            color: \"#414152\"\r\n        },\r\n        font: {\r\n            color: TITLE_COLOR\r\n        }\r\n    },\r\n    \"chart:common\": {\r\n        commonSeriesSettings: {\r\n            label: {\r\n                border: {\r\n                    color: BORDER_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        font: {\r\n            color: TITLE_COLOR\r\n        },\r\n        border: {\r\n            color: \"#414152\"\r\n        },\r\n        color: BACKGROUND_COLOR\r\n    },\r\n    chart: {\r\n        commonPaneSettings: {\r\n            border: {\r\n                color: BORDER_COLOR\r\n            }\r\n        },\r\n        commonAxisSettings: {\r\n            breakStyle: {\r\n                color: \"#575e6b\"\r\n            }\r\n        }\r\n    },\r\n    funnel: {\r\n        item: {\r\n            border: {\r\n                color: BACKGROUND_COLOR\r\n            }\r\n        }\r\n    },\r\n    sparkline: {\r\n        pointColor: BACKGROUND_COLOR,\r\n        minColor: \"#f0ad4e\",\r\n        maxColor: \"#d9534f\"\r\n    },\r\n    treeMap: {\r\n        group: {\r\n            color: BORDER_COLOR,\r\n            label: {\r\n                font: {\r\n                    color: SUBTITLE_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    rangeSelector: {\r\n        shutter: {\r\n            color: BACKGROUND_COLOR\r\n        },\r\n        scale: {\r\n            breakStyle: {\r\n                color: \"#575e6b\"\r\n            },\r\n            tick: {\r\n                opacity: .2\r\n            }\r\n        },\r\n        selectedRangeColor: ACCENT_COLOR,\r\n        sliderMarker: {\r\n            color: ACCENT_COLOR,\r\n            font: {\r\n                color: \"#fff\"\r\n            }\r\n        },\r\n        sliderHandle: {\r\n            color: ACCENT_COLOR,\r\n            opacity: .5\r\n        }\r\n    },\r\n    bullet: {\r\n        color: ACCENT_COLOR\r\n    },\r\n    gauge: {\r\n        valueIndicators: {\r\n            rangebar: {\r\n                color: ACCENT_COLOR\r\n            },\r\n            textcloud: {\r\n                color: ACCENT_COLOR\r\n            }\r\n        }\r\n    },\r\n    sankey: {\r\n        link: {\r\n            border: {\r\n                color: BACKGROUND_COLOR\r\n            }\r\n        },\r\n        node: {\r\n            border: {\r\n                color: BACKGROUND_COLOR\r\n            }\r\n        }\r\n    }\r\n}, \"generic.dark\");\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.darkviolet.compact\"\r\n}, \"generic.darkviolet\");\r\n","/**\r\n * DevExtreme (ui/resizable.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _translator = require(\"../animation/translator\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../core/dom_component\"));\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _array = require(\"../core/utils/array\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _math = require(\"../core/utils/math\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _drag = require(\"../events/drag\");\r\nvar _position = require(\"../core/utils/position\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _visibility_change = require(\"../events/visibility_change\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar RESIZABLE = \"dxResizable\";\r\nvar RESIZABLE_CLASS = \"dx-resizable\";\r\nvar RESIZABLE_RESIZING_CLASS = \"dx-resizable-resizing\";\r\nvar RESIZABLE_HANDLE_CLASS = \"dx-resizable-handle\";\r\nvar RESIZABLE_HANDLE_TOP_CLASS = \"dx-resizable-handle-top\";\r\nvar RESIZABLE_HANDLE_BOTTOM_CLASS = \"dx-resizable-handle-bottom\";\r\nvar RESIZABLE_HANDLE_LEFT_CLASS = \"dx-resizable-handle-left\";\r\nvar RESIZABLE_HANDLE_RIGHT_CLASS = \"dx-resizable-handle-right\";\r\nvar RESIZABLE_HANDLE_CORNER_CLASS = \"dx-resizable-handle-corner\";\r\nvar DRAGSTART_START_EVENT_NAME = (0, _index.addNamespace)(_drag.start, RESIZABLE);\r\nvar DRAGSTART_EVENT_NAME = (0, _index.addNamespace)(_drag.move, RESIZABLE);\r\nvar DRAGSTART_END_EVENT_NAME = (0, _index.addNamespace)(_drag.end, RESIZABLE);\r\nvar SIDE_BORDER_WIDTH_STYLES = {\r\n    left: \"borderLeftWidth\",\r\n    top: \"borderTopWidth\",\r\n    right: \"borderRightWidth\",\r\n    bottom: \"borderBottomWidth\"\r\n};\r\nvar Resizable = _dom_component.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            handles: \"all\",\r\n            step: \"1\",\r\n            stepPrecision: \"simple\",\r\n            area: void 0,\r\n            minWidth: 30,\r\n            maxWidth: 1 / 0,\r\n            minHeight: 30,\r\n            maxHeight: 1 / 0,\r\n            onResizeStart: null,\r\n            onResize: null,\r\n            onResizeEnd: null,\r\n            roundStepValue: true\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(RESIZABLE_CLASS)\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._renderHandles()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderActions()\r\n    },\r\n    _renderActions: function() {\r\n        this._resizeStartAction = this._createActionByOption(\"onResizeStart\");\r\n        this._resizeEndAction = this._createActionByOption(\"onResizeEnd\");\r\n        this._resizeAction = this._createActionByOption(\"onResize\")\r\n    },\r\n    _renderHandles: function() {\r\n        var _this = this;\r\n        this._handles = [];\r\n        var handles = this.option(\"handles\");\r\n        if (\"none\" === handles) {\r\n            return\r\n        }\r\n        var directions = \"all\" === handles ? [\"top\", \"bottom\", \"left\", \"right\"] : handles.split(\" \");\r\n        (0, _iterator.each)(directions, function(index, handleName) {\r\n            _this._renderHandle(handleName)\r\n        });\r\n        (0, _array.inArray)(\"bottom\", directions) + 1 && (0, _array.inArray)(\"right\", directions) + 1 && this._renderHandle(\"corner-bottom-right\");\r\n        (0, _array.inArray)(\"bottom\", directions) + 1 && (0, _array.inArray)(\"left\", directions) + 1 && this._renderHandle(\"corner-bottom-left\");\r\n        (0, _array.inArray)(\"top\", directions) + 1 && (0, _array.inArray)(\"right\", directions) + 1 && this._renderHandle(\"corner-top-right\");\r\n        (0, _array.inArray)(\"top\", directions) + 1 && (0, _array.inArray)(\"left\", directions) + 1 && this._renderHandle(\"corner-top-left\");\r\n        this._attachEventHandlers()\r\n    },\r\n    _renderHandle: function(handleName) {\r\n        var $handle = (0, _renderer.default)(\"<div>\").addClass(RESIZABLE_HANDLE_CLASS).addClass(RESIZABLE_HANDLE_CLASS + \"-\" + handleName).appendTo(this.$element());\r\n        this._handles.push($handle)\r\n    },\r\n    _attachEventHandlers: function() {\r\n        if (this.option(\"disabled\")) {\r\n            return\r\n        }\r\n        var handlers = {};\r\n        handlers[DRAGSTART_START_EVENT_NAME] = this._dragStartHandler.bind(this);\r\n        handlers[DRAGSTART_EVENT_NAME] = this._dragHandler.bind(this);\r\n        handlers[DRAGSTART_END_EVENT_NAME] = this._dragEndHandler.bind(this);\r\n        this._handles.forEach(function(handleElement) {\r\n            _events_engine.default.on(handleElement, handlers, {\r\n                direction: \"both\",\r\n                immediate: true\r\n            })\r\n        })\r\n    },\r\n    _detachEventHandlers: function() {\r\n        this._handles.forEach(function(handleElement) {\r\n            _events_engine.default.off(handleElement)\r\n        })\r\n    },\r\n    _toggleEventHandlers: function(shouldAttachEvents) {\r\n        shouldAttachEvents ? this._attachEventHandlers() : this._detachEventHandlers()\r\n    },\r\n    _dragStartHandler: function(e) {\r\n        var $element = this.$element();\r\n        if ($element.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n        this._toggleResizingClass(true);\r\n        this._movingSides = this._getMovingSides(e);\r\n        this._elementLocation = (0, _translator.locate)($element);\r\n        var elementRect = (0, _position.getBoundingRect)($element.get(0));\r\n        this._elementSize = {\r\n            width: elementRect.width,\r\n            height: elementRect.height\r\n        };\r\n        this._renderDragOffsets(e);\r\n        this._resizeStartAction({\r\n            event: e,\r\n            width: this._elementSize.width,\r\n            height: this._elementSize.height,\r\n            handles: this._movingSides\r\n        });\r\n        e.targetElements = null\r\n    },\r\n    _toggleResizingClass: function(value) {\r\n        this.$element().toggleClass(RESIZABLE_RESIZING_CLASS, value)\r\n    },\r\n    _renderDragOffsets: function(e) {\r\n        var area = this._getArea();\r\n        if (!area) {\r\n            return\r\n        }\r\n        var $handle = (0, _renderer.default)(e.target).closest(\".\" + RESIZABLE_HANDLE_CLASS);\r\n        var handleWidth = $handle.outerWidth();\r\n        var handleHeight = $handle.outerHeight();\r\n        var handleOffset = $handle.offset();\r\n        var areaOffset = area.offset;\r\n        var scrollOffset = this._getAreaScrollOffset();\r\n        e.maxLeftOffset = handleOffset.left - areaOffset.left - scrollOffset.scrollX;\r\n        e.maxRightOffset = areaOffset.left + area.width - handleOffset.left - handleWidth + scrollOffset.scrollX;\r\n        e.maxTopOffset = handleOffset.top - areaOffset.top - scrollOffset.scrollY;\r\n        e.maxBottomOffset = areaOffset.top + area.height - handleOffset.top - handleHeight + scrollOffset.scrollY\r\n    },\r\n    _getBorderWidth: function($element, direction) {\r\n        if ((0, _type.isWindow)($element.get(0))) {\r\n            return 0\r\n        }\r\n        var borderWidth = $element.css(SIDE_BORDER_WIDTH_STYLES[direction]);\r\n        return parseInt(borderWidth) || 0\r\n    },\r\n    _dragHandler: function(e) {\r\n        var $element = this.$element();\r\n        var sides = this._movingSides;\r\n        var location = this._elementLocation;\r\n        var size = this._elementSize;\r\n        var offset = this._getOffset(e);\r\n        var width = size.width + offset.x * (sides.left ? -1 : 1);\r\n        var height = size.height + offset.y * (sides.top ? -1 : 1);\r\n        if (offset.x || \"strict\" === this.option(\"stepPrecision\")) {\r\n            this._renderWidth(width)\r\n        }\r\n        if (offset.y || \"strict\" === this.option(\"stepPrecision\")) {\r\n            this._renderHeight(height)\r\n        }\r\n        var elementRect = (0, _position.getBoundingRect)($element.get(0));\r\n        var offsetTop = offset.y - ((elementRect.height || height) - height);\r\n        var offsetLeft = offset.x - ((elementRect.width || width) - width);\r\n        (0, _translator.move)($element, {\r\n            top: location.top + (sides.top ? offsetTop : 0),\r\n            left: location.left + (sides.left ? offsetLeft : 0)\r\n        });\r\n        this._resizeAction({\r\n            event: e,\r\n            width: this.option(\"width\") || width,\r\n            height: this.option(\"height\") || height,\r\n            handles: this._movingSides\r\n        });\r\n        (0, _visibility_change.triggerResizeEvent)($element)\r\n    },\r\n    _getOffset: function(e) {\r\n        var offset = e.offset;\r\n        var steps = (0, _common.pairToObject)(this.option(\"step\"), !this.option(\"roundStepValue\"));\r\n        var sides = this._getMovingSides(e);\r\n        var strictPrecision = \"strict\" === this.option(\"stepPrecision\");\r\n        if (!sides.left && !sides.right) {\r\n            offset.x = 0\r\n        }\r\n        if (!sides.top && !sides.bottom) {\r\n            offset.y = 0\r\n        }\r\n        return strictPrecision ? this._getStrictOffset(offset, steps, sides) : this._getSimpleOffset(offset, steps)\r\n    },\r\n    _getSimpleOffset: function(offset, steps) {\r\n        return {\r\n            x: offset.x - offset.x % steps.h,\r\n            y: offset.y - offset.y % steps.v\r\n        }\r\n    },\r\n    _getStrictOffset: function(offset, steps, sides) {\r\n        var location = this._elementLocation;\r\n        var size = this._elementSize;\r\n        var xPos = sides.left ? location.left : location.left + size.width;\r\n        var yPos = sides.top ? location.top : location.top + size.height;\r\n        var newXShift = (xPos + offset.x) % steps.h;\r\n        var newYShift = (yPos + offset.y) % steps.v;\r\n        var sign = Math.sign || function(x) {\r\n            x = +x;\r\n            if (0 === x || isNaN(x)) {\r\n                return x\r\n            }\r\n            return x > 0 ? 1 : -1\r\n        };\r\n        var separatorOffset = function(steps, offset) {\r\n            return (1 + .2 * sign(offset)) % 1 * steps\r\n        };\r\n        var isSmallOffset = function(offset, steps) {\r\n            return Math.abs(offset) < .2 * steps\r\n        };\r\n        var newOffsetX = offset.x - newXShift;\r\n        var newOffsetY = offset.y - newYShift;\r\n        if (newXShift > separatorOffset(steps.h, offset.x)) {\r\n            newOffsetX += steps.h\r\n        }\r\n        if (newYShift > separatorOffset(steps.v, offset.y)) {\r\n            newOffsetY += steps.v\r\n        }\r\n        return {\r\n            x: (sides.left || sides.right) && !isSmallOffset(offset.x, steps.h) ? newOffsetX : 0,\r\n            y: (sides.top || sides.bottom) && !isSmallOffset(offset.y, steps.v) ? newOffsetY : 0\r\n        }\r\n    },\r\n    _getMovingSides: function(e) {\r\n        var $target = (0, _renderer.default)(e.target);\r\n        var hasCornerTopLeftClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-top-left\");\r\n        var hasCornerTopRightClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-top-right\");\r\n        var hasCornerBottomLeftClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-bottom-left\");\r\n        var hasCornerBottomRightClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-bottom-right\");\r\n        return {\r\n            top: $target.hasClass(RESIZABLE_HANDLE_TOP_CLASS) || hasCornerTopLeftClass || hasCornerTopRightClass,\r\n            left: $target.hasClass(RESIZABLE_HANDLE_LEFT_CLASS) || hasCornerTopLeftClass || hasCornerBottomLeftClass,\r\n            bottom: $target.hasClass(RESIZABLE_HANDLE_BOTTOM_CLASS) || hasCornerBottomLeftClass || hasCornerBottomRightClass,\r\n            right: $target.hasClass(RESIZABLE_HANDLE_RIGHT_CLASS) || hasCornerTopRightClass || hasCornerBottomRightClass\r\n        }\r\n    },\r\n    _getArea: function() {\r\n        var area = this.option(\"area\");\r\n        if ((0, _type.isFunction)(area)) {\r\n            area = area.call(this)\r\n        }\r\n        if ((0, _type.isPlainObject)(area)) {\r\n            return this._getAreaFromObject(area)\r\n        }\r\n        return this._getAreaFromElement(area)\r\n    },\r\n    _getAreaScrollOffset: function() {\r\n        var area = this.option(\"area\");\r\n        var isElement = !(0, _type.isFunction)(area) && !(0, _type.isPlainObject)(area);\r\n        var scrollOffset = {\r\n            scrollY: 0,\r\n            scrollX: 0\r\n        };\r\n        if (isElement) {\r\n            var areaElement = (0, _renderer.default)(area)[0];\r\n            if ((0, _type.isWindow)(areaElement)) {\r\n                scrollOffset.scrollX = areaElement.pageXOffset;\r\n                scrollOffset.scrollY = areaElement.pageYOffset\r\n            }\r\n        }\r\n        return scrollOffset\r\n    },\r\n    _getAreaFromObject: function(area) {\r\n        var result = {\r\n            width: area.right - area.left,\r\n            height: area.bottom - area.top,\r\n            offset: {\r\n                left: area.left,\r\n                top: area.top\r\n            }\r\n        };\r\n        this._correctAreaGeometry(result);\r\n        return result\r\n    },\r\n    _getAreaFromElement: function(area) {\r\n        var $area = (0, _renderer.default)(area);\r\n        var result;\r\n        if ($area.length) {\r\n            result = {\r\n                width: $area.innerWidth(),\r\n                height: $area.innerHeight(),\r\n                offset: (0, _extend.extend)({\r\n                    top: 0,\r\n                    left: 0\r\n                }, (0, _type.isWindow)($area[0]) ? {} : $area.offset())\r\n            };\r\n            this._correctAreaGeometry(result, $area)\r\n        }\r\n        return result\r\n    },\r\n    _correctAreaGeometry: function(result, $area) {\r\n        var areaBorderLeft = $area ? this._getBorderWidth($area, \"left\") : 0;\r\n        var areaBorderTop = $area ? this._getBorderWidth($area, \"top\") : 0;\r\n        result.offset.left += areaBorderLeft + this._getBorderWidth(this.$element(), \"left\");\r\n        result.offset.top += areaBorderTop + this._getBorderWidth(this.$element(), \"top\");\r\n        result.width -= this.$element().outerWidth() - this.$element().innerWidth();\r\n        result.height -= this.$element().outerHeight() - this.$element().innerHeight()\r\n    },\r\n    _dragEndHandler: function(e) {\r\n        var $element = this.$element();\r\n        this._resizeEndAction({\r\n            event: e,\r\n            width: $element.outerWidth(),\r\n            height: $element.outerHeight(),\r\n            handles: this._movingSides\r\n        });\r\n        this._toggleResizingClass(false)\r\n    },\r\n    _renderWidth: function(width) {\r\n        this.option(\"width\", (0, _math.fitIntoRange)(width, this.option(\"minWidth\"), this.option(\"maxWidth\")))\r\n    },\r\n    _renderHeight: function(height) {\r\n        this.option(\"height\", (0, _math.fitIntoRange)(height, this.option(\"minHeight\"), this.option(\"maxHeight\")))\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"disabled\":\r\n                this._toggleEventHandlers(!args.value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"handles\":\r\n                this._invalidate();\r\n                break;\r\n            case \"minWidth\":\r\n            case \"maxWidth\":\r\n                (0, _window.hasWindow)() && this._renderWidth(this.$element().outerWidth());\r\n                break;\r\n            case \"minHeight\":\r\n            case \"maxHeight\":\r\n                (0, _window.hasWindow)() && this._renderHeight(this.$element().outerHeight());\r\n                break;\r\n            case \"onResize\":\r\n            case \"onResizeStart\":\r\n            case \"onResizeEnd\":\r\n                this._renderActions();\r\n                break;\r\n            case \"area\":\r\n            case \"stepPrecision\":\r\n            case \"step\":\r\n            case \"roundStepValue\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clean: function() {\r\n        this.$element().find(\".\" + RESIZABLE_HANDLE_CLASS).remove()\r\n    },\r\n    _useTemplates: function() {\r\n        return false\r\n    }\r\n});\r\n(0, _component_registrator.default)(RESIZABLE, Resizable);\r\nvar _default = Resizable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/core/base_widget.utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createEventTrigger = createEventTrigger;\r\nexports.createResizeHandler = createResizeHandler;\r\nexports.createIncidentOccurred = void 0;\r\nvar _version = _interopRequireDefault(require(\"../../core/version\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _errors_warnings = _interopRequireDefault(require(\"./errors_warnings\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ERROR_MESSAGES = _errors_warnings.default.ERROR_MESSAGES;\r\n\r\nfunction createEventTrigger(eventsMap, callbackGetter) {\r\n    var triggers = {};\r\n    (0, _iterator.each)(eventsMap, function(name, info) {\r\n        if (info.name) {\r\n            createEvent(name)\r\n        }\r\n    });\r\n    var changes;\r\n    triggerEvent.change = function(name) {\r\n        var eventInfo = eventsMap[name];\r\n        if (eventInfo) {\r\n            (changes = changes || {})[name] = eventInfo\r\n        }\r\n        return !!eventInfo\r\n    };\r\n    triggerEvent.applyChanges = function() {\r\n        if (changes) {\r\n            (0, _iterator.each)(changes, function(name, eventInfo) {\r\n                createEvent(eventInfo.newName || name)\r\n            });\r\n            changes = null\r\n        }\r\n    };\r\n    triggerEvent.dispose = function() {\r\n        eventsMap = callbackGetter = triggers = null\r\n    };\r\n    return triggerEvent;\r\n\r\n    function createEvent(name) {\r\n        var eventInfo = eventsMap[name];\r\n        triggers[eventInfo.name] = callbackGetter(name)\r\n    }\r\n\r\n    function triggerEvent(name, arg, complete) {\r\n        triggers[name](arg);\r\n        complete && complete()\r\n    }\r\n}\r\nvar createIncidentOccurred = function(widgetName, eventTrigger) {\r\n    return function(id, args) {\r\n        eventTrigger(\"incidentOccurred\", {\r\n            target: {\r\n                id: id,\r\n                type: \"E\" === id[0] ? \"error\" : \"warning\",\r\n                args: args,\r\n                text: _string.format.apply(null, [ERROR_MESSAGES[id]].concat(args || [])),\r\n                widget: widgetName,\r\n                version: _version.default\r\n            }\r\n        })\r\n    }\r\n};\r\nexports.createIncidentOccurred = createIncidentOccurred;\r\n\r\nfunction createResizeHandler(callback) {\r\n    var timeout;\r\n    var handler = function() {\r\n        clearTimeout(timeout);\r\n        timeout = setTimeout(callback, 100)\r\n    };\r\n    handler.dispose = function() {\r\n        clearTimeout(timeout);\r\n        return this\r\n    };\r\n    return handler\r\n}\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scroll_view.simulated.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiScrollable = require(\"./ui.scrollable.simulated\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar math = Math;\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar ScrollViewScroller = _uiScrollable.Scroller.inherit({\r\n    ctor: function() {\r\n        this._topPocketSize = 0;\r\n        this.callBase.apply(this, arguments);\r\n        this._initCallbacks();\r\n        this._releaseState()\r\n    },\r\n    _releaseState: function() {\r\n        this._state = STATE_RELEASED;\r\n        this._refreshPullDownText()\r\n    },\r\n    _refreshPullDownText: function() {\r\n        var that = this;\r\n        var pullDownTextItems = [{\r\n            element: this._$pullingDownText,\r\n            visibleState: STATE_RELEASED\r\n        }, {\r\n            element: this._$pulledDownText,\r\n            visibleState: STATE_READY\r\n        }, {\r\n            element: this._$refreshingText,\r\n            visibleState: STATE_REFRESHING\r\n        }];\r\n        (0, _iterator.each)(pullDownTextItems, function(_, item) {\r\n            var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n            item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n        })\r\n    },\r\n    _initCallbacks: function() {\r\n        this.pullDownCallbacks = (0, _callbacks.default)();\r\n        this.releaseCallbacks = (0, _callbacks.default)();\r\n        this.reachBottomCallbacks = (0, _callbacks.default)()\r\n    },\r\n    _updateBounds: function() {\r\n        var considerPockets = \"horizontal\" !== this._direction;\r\n        this._topPocketSize = considerPockets ? Math.round(this._$topPocket[this._dimension]()) : 0;\r\n        this._bottomPocketSize = considerPockets ? Math.round(this._$bottomPocket[this._dimension]()) : 0;\r\n        this.callBase();\r\n        this._bottomBound = this._minOffset + this._bottomPocketSize\r\n    },\r\n    _updateScrollbar: function() {\r\n        this._scrollbar.option({\r\n            containerSize: this._containerSize(),\r\n            contentSize: this._contentSize() - this._topPocketSize - this._bottomPocketSize,\r\n            scaleRatio: this._getScaleRatio()\r\n        })\r\n    },\r\n    _moveContent: function() {\r\n        this.callBase();\r\n        if (this._isPullDown()) {\r\n            this._pullDownReady()\r\n        } else {\r\n            if (this._isReachBottom()) {\r\n                this._reachBottomReady()\r\n            } else {\r\n                if (this._state !== STATE_RELEASED) {\r\n                    this._stateReleased()\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _moveScrollbar: function() {\r\n        this._scrollbar.moveTo(this._topPocketSize + this._location)\r\n    },\r\n    _isPullDown: function() {\r\n        return this._pullDownEnabled && this._location >= 0\r\n    },\r\n    _isReachBottom: function() {\r\n        return this._reachBottomEnabled && this._location - this._bottomBound <= .5\r\n    },\r\n    _scrollComplete: function() {\r\n        if (this._inBounds() && this._state === STATE_READY) {\r\n            this._pullDownRefreshing()\r\n        } else {\r\n            if (this._inBounds() && this._state === STATE_LOADING) {\r\n                this._reachBottomLoading()\r\n            } else {\r\n                this.callBase()\r\n            }\r\n        }\r\n    },\r\n    _reachBottomReady: function() {\r\n        if (this._state === STATE_LOADING) {\r\n            return\r\n        }\r\n        this._state = STATE_LOADING;\r\n        this._minOffset = this._getMinOffset()\r\n    },\r\n    _getMaxOffset: function() {\r\n        return -this._topPocketSize\r\n    },\r\n    _getMinOffset: function() {\r\n        return math.min(this.callBase(), -this._topPocketSize)\r\n    },\r\n    _reachBottomLoading: function() {\r\n        this.reachBottomCallbacks.fire()\r\n    },\r\n    _pullDownReady: function() {\r\n        if (this._state === STATE_READY) {\r\n            return\r\n        }\r\n        this._state = STATE_READY;\r\n        this._maxOffset = 0;\r\n        this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n        this._refreshPullDownText()\r\n    },\r\n    _stateReleased: function() {\r\n        if (this._state === STATE_RELEASED) {\r\n            return\r\n        }\r\n        this._releaseState();\r\n        this._updateBounds();\r\n        this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n        this.releaseCallbacks.fire()\r\n    },\r\n    _pullDownRefreshing: function() {\r\n        if (this._state === STATE_REFRESHING) {\r\n            return\r\n        }\r\n        this._state = STATE_REFRESHING;\r\n        this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n        this._refreshPullDownText();\r\n        this.pullDownCallbacks.fire()\r\n    },\r\n    _releaseHandler: function() {\r\n        if (this._state === STATE_RELEASED) {\r\n            this._moveToBounds()\r\n        }\r\n        this._update();\r\n        if (this._releaseTask) {\r\n            this._releaseTask.abort()\r\n        }\r\n        this._releaseTask = (0, _common.executeAsync)(this._release.bind(this));\r\n        return this._releaseTask.promise\r\n    },\r\n    _release: function() {\r\n        this._stateReleased();\r\n        this._scrollComplete()\r\n    },\r\n    _reachBottomEnablingHandler: function(enabled) {\r\n        if (this._reachBottomEnabled === enabled) {\r\n            return\r\n        }\r\n        this._reachBottomEnabled = enabled;\r\n        this._updateBounds()\r\n    },\r\n    _pullDownEnablingHandler: function(enabled) {\r\n        if (this._pullDownEnabled === enabled) {\r\n            return\r\n        }\r\n        this._pullDownEnabled = enabled;\r\n        this._considerTopPocketChange();\r\n        this._updateHandler()\r\n    },\r\n    _considerTopPocketChange: function() {\r\n        this._location -= this._$topPocket.height() || -this._topPocketSize;\r\n        this._maxOffset = 0;\r\n        this._move()\r\n    },\r\n    _pendingReleaseHandler: function() {\r\n        this._state = STATE_READY\r\n    },\r\n    dispose: function() {\r\n        if (this._releaseTask) {\r\n            this._releaseTask.abort()\r\n        }\r\n        this.callBase()\r\n    }\r\n});\r\nvar SimulatedScrollViewStrategy = _uiScrollable.SimulatedStrategy.inherit({\r\n    _init: function(scrollView) {\r\n        this.callBase(scrollView);\r\n        this._$pullDown = scrollView._$pullDown;\r\n        this._$topPocket = scrollView._$topPocket;\r\n        this._$bottomPocket = scrollView._$bottomPocket;\r\n        this._initCallbacks()\r\n    },\r\n    _initCallbacks: function() {\r\n        this.pullDownCallbacks = (0, _callbacks.default)();\r\n        this.releaseCallbacks = (0, _callbacks.default)();\r\n        this.reachBottomCallbacks = (0, _callbacks.default)()\r\n    },\r\n    render: function() {\r\n        this._renderPullDown();\r\n        this.callBase()\r\n    },\r\n    _renderPullDown: function() {\r\n        var $image = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n        var $loadContainer = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n        var $loadIndicator = new _load_indicator.default((0, _renderer.default)(\"<div>\")).$element();\r\n        var $text = this._$pullDownText = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n        this._$pullingDownText = (0, _renderer.default)(\"<div>\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n        this._$pulledDownText = (0, _renderer.default)(\"<div>\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n        this._$refreshingText = (0, _renderer.default)(\"<div>\").text(this.option(\"refreshingText\")).appendTo($text);\r\n        this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n    },\r\n    pullDownEnable: function(enabled) {\r\n        this._eventHandler(\"pullDownEnabling\", enabled)\r\n    },\r\n    reachBottomEnable: function(enabled) {\r\n        this._eventHandler(\"reachBottomEnabling\", enabled)\r\n    },\r\n    _createScroller: function(direction) {\r\n        var that = this;\r\n        var scroller = that._scrollers[direction] = new ScrollViewScroller(that._scrollerOptions(direction));\r\n        scroller.pullDownCallbacks.add(function() {\r\n            that.pullDownCallbacks.fire()\r\n        });\r\n        scroller.releaseCallbacks.add(function() {\r\n            that.releaseCallbacks.fire()\r\n        });\r\n        scroller.reachBottomCallbacks.add(function() {\r\n            that.reachBottomCallbacks.fire()\r\n        })\r\n    },\r\n    _scrollerOptions: function(direction) {\r\n        return (0, _extend.extend)(this.callBase(direction), {\r\n            $topPocket: this._$topPocket,\r\n            $bottomPocket: this._$bottomPocket,\r\n            $pullDown: this._$pullDown,\r\n            $pullDownText: this._$pullDownText,\r\n            $pullingDownText: this._$pullingDownText,\r\n            $pulledDownText: this._$pulledDownText,\r\n            $refreshingText: this._$refreshingText\r\n        })\r\n    },\r\n    pendingRelease: function() {\r\n        this._eventHandler(\"pendingRelease\")\r\n    },\r\n    release: function() {\r\n        return this._eventHandler(\"release\").done(this._updateAction)\r\n    },\r\n    location: function location() {\r\n        var location = this.callBase();\r\n        location.top += this._$topPocket.height();\r\n        return location\r\n    },\r\n    dispose: function() {\r\n        (0, _iterator.each)(this._scrollers, function() {\r\n            this.dispose()\r\n        });\r\n        this.callBase()\r\n    }\r\n});\r\nvar _default = SimulatedScrollViewStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/renderer_base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _element_data = require(\"./element_data\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"./dom_adapter\"));\r\nvar _window = require(\"./utils/window\");\r\nvar _type = require(\"./utils/type\");\r\nvar _style = require(\"./utils/style\");\r\nvar _size = require(\"./utils/size\");\r\nvar _html_parser = require(\"./utils/html_parser\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar renderer;\r\nvar initRender = function(selector, context) {\r\n    if (!selector) {\r\n        this.length = 0;\r\n        return this\r\n    }\r\n    if (\"string\" === typeof selector) {\r\n        if (\"body\" === selector) {\r\n            this[0] = context ? context.body : _dom_adapter.default.getBody();\r\n            this.length = 1;\r\n            return this\r\n        }\r\n        context = context || _dom_adapter.default.getDocument();\r\n        if (\"<\" === selector[0]) {\r\n            this[0] = _dom_adapter.default.createElement(selector.slice(1, -1), context);\r\n            this.length = 1;\r\n            return this\r\n        } [].push.apply(this, _dom_adapter.default.querySelectorAll(context, selector));\r\n        return this\r\n    } else {\r\n        if (_dom_adapter.default.isNode(selector) || (0, _type.isWindow)(selector)) {\r\n            this[0] = selector;\r\n            this.length = 1;\r\n            return this\r\n        } else {\r\n            if (Array.isArray(selector)) {\r\n                [].push.apply(this, selector);\r\n                return this\r\n            }\r\n        }\r\n    }\r\n    return renderer(selector.toArray ? selector.toArray() : [selector])\r\n};\r\nrenderer = function(selector, context) {\r\n    return new initRender(selector, context)\r\n};\r\nrenderer.fn = {\r\n    dxRenderer: true\r\n};\r\ninitRender.prototype = renderer.fn;\r\nvar repeatMethod = function(methodName, args) {\r\n    for (var i = 0; i < this.length; i++) {\r\n        var item = renderer(this[i]);\r\n        item[methodName].apply(item, args)\r\n    }\r\n    return this\r\n};\r\nvar setAttributeValue = function(element, attrName, value) {\r\n    if (void 0 !== value && null !== value) {\r\n        _dom_adapter.default.setAttribute(element, attrName, value)\r\n    } else {\r\n        _dom_adapter.default.removeAttribute(element, attrName)\r\n    }\r\n};\r\ninitRender.prototype.show = function() {\r\n    return this.toggle(true)\r\n};\r\ninitRender.prototype.hide = function() {\r\n    return this.toggle(false)\r\n};\r\ninitRender.prototype.toggle = function(value) {\r\n    if (this[0]) {\r\n        this.toggleClass(\"dx-state-invisible\", !value)\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.attr = function(attrName, value) {\r\n    if (this.length > 1 && arguments.length > 1) {\r\n        return repeatMethod.call(this, \"attr\", arguments)\r\n    }\r\n    if (!this[0]) {\r\n        if ((0, _type.isObject)(attrName) || void 0 !== value) {\r\n            return this\r\n        } else {\r\n            return\r\n        }\r\n    }\r\n    if (!this[0].getAttribute) {\r\n        return this.prop(attrName, value)\r\n    }\r\n    if (\"string\" === typeof attrName && 1 === arguments.length) {\r\n        var result = this[0].getAttribute(attrName);\r\n        return null == result ? void 0 : result\r\n    } else {\r\n        if ((0, _type.isPlainObject)(attrName)) {\r\n            for (var key in attrName) {\r\n                this.attr(key, attrName[key])\r\n            }\r\n        } else {\r\n            setAttributeValue(this[0], attrName, value)\r\n        }\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.removeAttr = function(attrName) {\r\n    this[0] && _dom_adapter.default.removeAttribute(this[0], attrName);\r\n    return this\r\n};\r\ninitRender.prototype.prop = function(propName, value) {\r\n    if (!this[0]) {\r\n        return this\r\n    }\r\n    if (\"string\" === typeof propName && 1 === arguments.length) {\r\n        return this[0][propName]\r\n    } else {\r\n        if ((0, _type.isPlainObject)(propName)) {\r\n            for (var key in propName) {\r\n                this.prop(key, propName[key])\r\n            }\r\n        } else {\r\n            _dom_adapter.default.setProperty(this[0], propName, value)\r\n        }\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.addClass = function(className) {\r\n    return this.toggleClass(className, true)\r\n};\r\ninitRender.prototype.removeClass = function(className) {\r\n    return this.toggleClass(className, false)\r\n};\r\ninitRender.prototype.hasClass = function(className) {\r\n    if (!this[0] || void 0 === this[0].className) {\r\n        return false\r\n    }\r\n    var classNames = className.split(\" \");\r\n    for (var i = 0; i < classNames.length; i++) {\r\n        if (this[0].classList) {\r\n            if (this[0].classList.contains(classNames[i])) {\r\n                return true\r\n            }\r\n        } else {\r\n            var _className = (0, _type.isString)(this[0].className) ? this[0].className : _dom_adapter.default.getAttribute(this[0], \"class\");\r\n            if ((_className || \"\").split(\" \").indexOf(classNames[i]) >= 0) {\r\n                return true\r\n            }\r\n        }\r\n    }\r\n    return false\r\n};\r\ninitRender.prototype.toggleClass = function(className, value) {\r\n    if (this.length > 1) {\r\n        return repeatMethod.call(this, \"toggleClass\", arguments)\r\n    }\r\n    if (!this[0] || !className) {\r\n        return this\r\n    }\r\n    value = void 0 === value ? !this.hasClass(className) : value;\r\n    var classNames = className.split(\" \");\r\n    for (var i = 0; i < classNames.length; i++) {\r\n        _dom_adapter.default.setClass(this[0], classNames[i], value)\r\n    }\r\n    return this\r\n};\r\n[\"width\", \"height\", \"outerWidth\", \"outerHeight\", \"innerWidth\", \"innerHeight\"].forEach(function(methodName) {\r\n    var partialName = methodName.toLowerCase().indexOf(\"width\") >= 0 ? \"Width\" : \"Height\";\r\n    var propName = partialName.toLowerCase();\r\n    var isOuter = 0 === methodName.indexOf(\"outer\");\r\n    var isInner = 0 === methodName.indexOf(\"inner\");\r\n    initRender.prototype[methodName] = function(value) {\r\n        if (this.length > 1 && arguments.length > 0) {\r\n            return repeatMethod.call(this, methodName, arguments)\r\n        }\r\n        var element = this[0];\r\n        if (!element) {\r\n            return\r\n        }\r\n        if ((0, _type.isWindow)(element)) {\r\n            return isOuter ? element[\"inner\" + partialName] : _dom_adapter.default.getDocumentElement()[\"client\" + partialName]\r\n        }\r\n        if (_dom_adapter.default.isDocument(element)) {\r\n            var documentElement = _dom_adapter.default.getDocumentElement();\r\n            var body = _dom_adapter.default.getBody();\r\n            return Math.max(body[\"scroll\" + partialName], body[\"offset\" + partialName], documentElement[\"scroll\" + partialName], documentElement[\"offset\" + partialName], documentElement[\"client\" + partialName])\r\n        }\r\n        if (0 === arguments.length || \"boolean\" === typeof value) {\r\n            var include = {\r\n                paddings: isInner || isOuter,\r\n                borders: isOuter,\r\n                margins: value\r\n            };\r\n            return (0, _size.getSize)(element, propName, include)\r\n        }\r\n        if (void 0 === value || null === value) {\r\n            return this\r\n        }\r\n        if ((0, _type.isNumeric)(value)) {\r\n            var elementStyles = window.getComputedStyle(element);\r\n            var sizeAdjustment = (0, _size.getElementBoxParams)(propName, elementStyles);\r\n            var isBorderBox = \"border-box\" === elementStyles.boxSizing;\r\n            value = Number(value);\r\n            if (isOuter) {\r\n                value -= isBorderBox ? 0 : sizeAdjustment.border + sizeAdjustment.padding\r\n            } else {\r\n                if (isInner) {\r\n                    value += isBorderBox ? sizeAdjustment.border : -sizeAdjustment.padding\r\n                } else {\r\n                    if (isBorderBox) {\r\n                        value += sizeAdjustment.border + sizeAdjustment.padding\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        value += (0, _type.isNumeric)(value) ? \"px\" : \"\";\r\n        _dom_adapter.default.setStyle(element, propName, value);\r\n        return this\r\n    }\r\n});\r\ninitRender.prototype.html = function(value) {\r\n    if (!arguments.length) {\r\n        return this[0].innerHTML\r\n    }\r\n    this.empty();\r\n    if (\"string\" === typeof value && !(0, _html_parser.isTablePart)(value) || \"number\" === typeof value) {\r\n        this[0].innerHTML = value;\r\n        return this\r\n    }\r\n    return this.append((0, _html_parser.parseHTML)(value))\r\n};\r\nvar appendElements = function(element, nextSibling) {\r\n    if (!this[0] || !element) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof element) {\r\n        element = (0, _html_parser.parseHTML)(element)\r\n    } else {\r\n        if (element.nodeType) {\r\n            element = [element]\r\n        } else {\r\n            if ((0, _type.isNumeric)(element)) {\r\n                element = [_dom_adapter.default.createTextNode(element)]\r\n            }\r\n        }\r\n    }\r\n    for (var i = 0; i < element.length; i++) {\r\n        var item = element[i];\r\n        var container = this[0];\r\n        var wrapTR = \"TABLE\" === container.tagName && \"TR\" === item.tagName;\r\n        if (wrapTR && container.tBodies && container.tBodies.length) {\r\n            container = container.tBodies[0]\r\n        }\r\n        _dom_adapter.default.insertElement(container, item.nodeType ? item : item[0], nextSibling)\r\n    }\r\n};\r\nvar setCss = function(name, value) {\r\n    if (!this[0] || !this[0].style) {\r\n        return\r\n    }\r\n    if (null === value || \"number\" === typeof value && isNaN(value)) {\r\n        return\r\n    }\r\n    name = (0, _style.styleProp)(name);\r\n    for (var i = 0; i < this.length; i++) {\r\n        this[i].style[name] = (0, _style.normalizeStyleProp)(name, value)\r\n    }\r\n};\r\ninitRender.prototype.css = function(name, value) {\r\n    if ((0, _type.isString)(name)) {\r\n        if (2 === arguments.length) {\r\n            setCss.call(this, name, value)\r\n        } else {\r\n            if (!this[0]) {\r\n                return\r\n            }\r\n            name = (0, _style.styleProp)(name);\r\n            var result = window.getComputedStyle(this[0])[name] || this[0].style[name];\r\n            return (0, _type.isNumeric)(result) ? result.toString() : result\r\n        }\r\n    } else {\r\n        if ((0, _type.isPlainObject)(name)) {\r\n            for (var key in name) {\r\n                setCss.call(this, key, name[key])\r\n            }\r\n        }\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.prepend = function(element) {\r\n    if (arguments.length > 1) {\r\n        for (var i = 0; i < arguments.length; i++) {\r\n            this.prepend(arguments[i])\r\n        }\r\n        return this\r\n    }\r\n    appendElements.apply(this, [element, this[0].firstChild]);\r\n    return this\r\n};\r\ninitRender.prototype.append = function(element) {\r\n    if (arguments.length > 1) {\r\n        for (var i = 0; i < arguments.length; i++) {\r\n            this.append(arguments[i])\r\n        }\r\n        return this\r\n    }\r\n    appendElements.apply(this, [element]);\r\n    return this\r\n};\r\ninitRender.prototype.prependTo = function(element) {\r\n    if (this.length > 1) {\r\n        for (var i = this.length - 1; i >= 0; i--) {\r\n            renderer(this[i]).prependTo(element)\r\n        }\r\n        return this\r\n    }\r\n    element = renderer(element);\r\n    if (element[0]) {\r\n        _dom_adapter.default.insertElement(element[0], this[0], element[0].firstChild)\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.appendTo = function(element) {\r\n    if (this.length > 1) {\r\n        return repeatMethod.call(this, \"appendTo\", arguments)\r\n    }\r\n    _dom_adapter.default.insertElement(renderer(element)[0], this[0]);\r\n    return this\r\n};\r\ninitRender.prototype.insertBefore = function(element) {\r\n    if (element && element[0]) {\r\n        _dom_adapter.default.insertElement(element[0].parentNode, this[0], element[0])\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.insertAfter = function(element) {\r\n    if (element && element[0]) {\r\n        _dom_adapter.default.insertElement(element[0].parentNode, this[0], element[0].nextSibling)\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.before = function(element) {\r\n    if (this[0]) {\r\n        _dom_adapter.default.insertElement(this[0].parentNode, element[0], this[0])\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.after = function(element) {\r\n    if (this[0]) {\r\n        _dom_adapter.default.insertElement(this[0].parentNode, element[0], this[0].nextSibling)\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.wrap = function(wrapper) {\r\n    if (this[0]) {\r\n        var wrap = renderer(wrapper);\r\n        wrap.insertBefore(this);\r\n        wrap.append(this)\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.wrapInner = function(wrapper) {\r\n    var contents = this.contents();\r\n    if (contents.length) {\r\n        contents.wrap(wrapper)\r\n    } else {\r\n        this.append(wrapper)\r\n    }\r\n    return this\r\n};\r\ninitRender.prototype.replaceWith = function(element) {\r\n    if (!(element && element[0])) {\r\n        return\r\n    }\r\n    if (element.is(this)) {\r\n        return this\r\n    }\r\n    element.insertBefore(this);\r\n    this.remove();\r\n    return element\r\n};\r\ninitRender.prototype.remove = function() {\r\n    if (this.length > 1) {\r\n        return repeatMethod.call(this, \"remove\", arguments)\r\n    }(0, _element_data.cleanDataRecursive)(this[0], true);\r\n    _dom_adapter.default.removeElement(this[0]);\r\n    return this\r\n};\r\ninitRender.prototype.detach = function() {\r\n    if (this.length > 1) {\r\n        return repeatMethod.call(this, \"detach\", arguments)\r\n    }\r\n    _dom_adapter.default.removeElement(this[0]);\r\n    return this\r\n};\r\ninitRender.prototype.empty = function() {\r\n    if (this.length > 1) {\r\n        return repeatMethod.call(this, \"empty\", arguments)\r\n    }(0, _element_data.cleanDataRecursive)(this[0]);\r\n    _dom_adapter.default.setText(this[0], \"\");\r\n    return this\r\n};\r\ninitRender.prototype.clone = function() {\r\n    var result = [];\r\n    for (var i = 0; i < this.length; i++) {\r\n        result.push(this[i].cloneNode(true))\r\n    }\r\n    return renderer(result)\r\n};\r\ninitRender.prototype.text = function(value) {\r\n    if (!arguments.length) {\r\n        var result = \"\";\r\n        for (var i = 0; i < this.length; i++) {\r\n            result += this[i] && this[i].textContent || \"\"\r\n        }\r\n        return result\r\n    }\r\n    var text = (0, _type.isFunction)(value) ? value() : value;\r\n    (0, _element_data.cleanDataRecursive)(this[0], false);\r\n    _dom_adapter.default.setText(this[0], (0, _type.isDefined)(text) ? text : \"\");\r\n    return this\r\n};\r\ninitRender.prototype.val = function(value) {\r\n    if (1 === arguments.length) {\r\n        return this.prop(\"value\", (0, _type.isDefined)(value) ? value : \"\")\r\n    }\r\n    return this.prop(\"value\")\r\n};\r\ninitRender.prototype.contents = function() {\r\n    if (!this[0]) {\r\n        return renderer()\r\n    }\r\n    var result = [];\r\n    result.push.apply(result, this[0].childNodes);\r\n    return renderer(result)\r\n};\r\ninitRender.prototype.find = function(selector) {\r\n    var result = renderer();\r\n    if (!selector) {\r\n        return result\r\n    }\r\n    var nodes = [];\r\n    var i;\r\n    if (\"string\" === typeof selector) {\r\n        selector = selector.trim();\r\n        for (i = 0; i < this.length; i++) {\r\n            var element = this[i];\r\n            if (_dom_adapter.default.isElementNode(element)) {\r\n                var elementId = element.getAttribute(\"id\");\r\n                var queryId = elementId || \"dx-query-children\";\r\n                if (!elementId) {\r\n                    setAttributeValue(element, \"id\", queryId)\r\n                }\r\n                queryId = \"[id='\" + queryId + \"'] \";\r\n                var querySelector = queryId + selector.replace(/([^\\\\])(,)/g, \"$1, \" + queryId);\r\n                nodes.push.apply(nodes, _dom_adapter.default.querySelectorAll(element, querySelector));\r\n                setAttributeValue(element, \"id\", elementId)\r\n            } else {\r\n                if (_dom_adapter.default.isDocument(element)) {\r\n                    nodes.push.apply(nodes, _dom_adapter.default.querySelectorAll(element, selector))\r\n                }\r\n            }\r\n        }\r\n    } else {\r\n        for (i = 0; i < this.length; i++) {\r\n            selector = _dom_adapter.default.isNode(selector) ? selector : selector[0];\r\n            if (this[i] !== selector && this[i].contains(selector)) {\r\n                nodes.push(selector)\r\n            }\r\n        }\r\n    }\r\n    return result.add(nodes)\r\n};\r\nvar isVisible = function(_, element) {\r\n    if (!element.nodeType) {\r\n        return true\r\n    }\r\n    return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length)\r\n};\r\ninitRender.prototype.filter = function(selector) {\r\n    if (!selector) {\r\n        return renderer()\r\n    }\r\n    if (\":visible\" === selector) {\r\n        return this.filter(isVisible)\r\n    } else {\r\n        if (\":hidden\" === selector) {\r\n            return this.filter(function(_, element) {\r\n                return !isVisible(_, element)\r\n            })\r\n        }\r\n    }\r\n    var result = [];\r\n    for (var i = 0; i < this.length; i++) {\r\n        var item = this[i];\r\n        if (_dom_adapter.default.isElementNode(item) && \"string\" === (0, _type.type)(selector)) {\r\n            _dom_adapter.default.elementMatches(item, selector) && result.push(item)\r\n        } else {\r\n            if (_dom_adapter.default.isNode(selector) || (0, _type.isWindow)(selector)) {\r\n                selector === item && result.push(item)\r\n            } else {\r\n                if ((0, _type.isFunction)(selector)) {\r\n                    selector.call(item, i, item) && result.push(item)\r\n                } else {\r\n                    for (var j = 0; j < selector.length; j++) {\r\n                        selector[j] === item && result.push(item)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return renderer(result)\r\n};\r\ninitRender.prototype.not = function(selector) {\r\n    var result = [];\r\n    var nodes = this.filter(selector).toArray();\r\n    for (var i = 0; i < this.length; i++) {\r\n        if (nodes.indexOf(this[i]) === -1) {\r\n            result.push(this[i])\r\n        }\r\n    }\r\n    return renderer(result)\r\n};\r\ninitRender.prototype.is = function(selector) {\r\n    return !!this.filter(selector).length\r\n};\r\ninitRender.prototype.children = function(selector) {\r\n    var result = [];\r\n    for (var i = 0; i < this.length; i++) {\r\n        var nodes = this[i] ? this[i].childNodes : [];\r\n        for (var j = 0; j < nodes.length; j++) {\r\n            if (_dom_adapter.default.isElementNode(nodes[j])) {\r\n                result.push(nodes[j])\r\n            }\r\n        }\r\n    }\r\n    result = renderer(result);\r\n    return selector ? result.filter(selector) : result\r\n};\r\ninitRender.prototype.siblings = function() {\r\n    var element = this[0];\r\n    if (!element || !element.parentNode) {\r\n        return renderer()\r\n    }\r\n    var result = [];\r\n    var parentChildNodes = element.parentNode.childNodes || [];\r\n    for (var i = 0; i < parentChildNodes.length; i++) {\r\n        var node = parentChildNodes[i];\r\n        if (_dom_adapter.default.isElementNode(node) && node !== element) {\r\n            result.push(node)\r\n        }\r\n    }\r\n    return renderer(result)\r\n};\r\ninitRender.prototype.each = function(callback) {\r\n    for (var i = 0; i < this.length; i++) {\r\n        if (false === callback.call(this[i], i, this[i])) {\r\n            break\r\n        }\r\n    }\r\n};\r\ninitRender.prototype.index = function(element) {\r\n    if (!element) {\r\n        return this.parent().children().index(this)\r\n    }\r\n    element = renderer(element);\r\n    return this.toArray().indexOf(element[0])\r\n};\r\ninitRender.prototype.get = function(index) {\r\n    return this[index < 0 ? this.length + index : index]\r\n};\r\ninitRender.prototype.eq = function(index) {\r\n    index = index < 0 ? this.length + index : index;\r\n    return renderer(this[index])\r\n};\r\ninitRender.prototype.first = function() {\r\n    return this.eq(0)\r\n};\r\ninitRender.prototype.last = function() {\r\n    return this.eq(-1)\r\n};\r\ninitRender.prototype.parent = function(selector) {\r\n    if (!this[0]) {\r\n        return renderer()\r\n    }\r\n    var result = renderer(this[0].parentNode);\r\n    return !selector || result.is(selector) ? result : renderer()\r\n};\r\ninitRender.prototype.parents = function(selector) {\r\n    var result = [];\r\n    var parent = this.parent();\r\n    while (parent && parent[0] && !_dom_adapter.default.isDocument(parent[0])) {\r\n        if (_dom_adapter.default.isElementNode(parent[0])) {\r\n            if (!selector || selector && parent.is(selector)) {\r\n                result.push(parent.get(0))\r\n            }\r\n        }\r\n        parent = parent.parent()\r\n    }\r\n    return renderer(result)\r\n};\r\ninitRender.prototype.closest = function(selector) {\r\n    if (this.is(selector)) {\r\n        return this\r\n    }\r\n    var parent = this.parent();\r\n    while (parent && parent.length) {\r\n        if (parent.is(selector)) {\r\n            return parent\r\n        }\r\n        parent = parent.parent()\r\n    }\r\n    return renderer()\r\n};\r\ninitRender.prototype.next = function(selector) {\r\n    if (!this[0]) {\r\n        return renderer()\r\n    }\r\n    var next = renderer(this[0].nextSibling);\r\n    if (!arguments.length) {\r\n        return next\r\n    }\r\n    while (next && next.length) {\r\n        if (next.is(selector)) {\r\n            return next\r\n        }\r\n        next = next.next()\r\n    }\r\n    return renderer()\r\n};\r\ninitRender.prototype.prev = function() {\r\n    if (!this[0]) {\r\n        return renderer()\r\n    }\r\n    return renderer(this[0].previousSibling)\r\n};\r\ninitRender.prototype.add = function(selector) {\r\n    var targets = renderer(selector);\r\n    var result = this.toArray();\r\n    for (var i = 0; i < targets.length; i++) {\r\n        var target = targets[i];\r\n        if (result.indexOf(target) === -1) {\r\n            result.push(target)\r\n        }\r\n    }\r\n    return renderer(result)\r\n};\r\nvar emptyArray = [];\r\ninitRender.prototype.splice = function() {\r\n    return renderer(emptyArray.splice.apply(this, arguments))\r\n};\r\ninitRender.prototype.slice = function() {\r\n    return renderer(emptyArray.slice.apply(this, arguments))\r\n};\r\ninitRender.prototype.toArray = function() {\r\n    return emptyArray.slice.call(this)\r\n};\r\nvar getWindowByElement = function(element) {\r\n    return (0, _type.isWindow)(element) ? element : element.defaultView\r\n};\r\ninitRender.prototype.offset = function() {\r\n    if (!this[0]) {\r\n        return\r\n    }\r\n    if (!this[0].getClientRects().length) {\r\n        return {\r\n            top: 0,\r\n            left: 0\r\n        }\r\n    }\r\n    var rect = this[0].getBoundingClientRect();\r\n    var win = getWindowByElement(this[0].ownerDocument);\r\n    var docElem = this[0].ownerDocument.documentElement;\r\n    return {\r\n        top: rect.top + win.pageYOffset - docElem.clientTop,\r\n        left: rect.left + win.pageXOffset - docElem.clientLeft\r\n    }\r\n};\r\ninitRender.prototype.offsetParent = function() {\r\n    if (!this[0]) {\r\n        return renderer()\r\n    }\r\n    var offsetParent = renderer(this[0].offsetParent);\r\n    while (offsetParent[0] && \"static\" === offsetParent.css(\"position\")) {\r\n        offsetParent = renderer(offsetParent[0].offsetParent)\r\n    }\r\n    offsetParent = offsetParent[0] ? offsetParent : renderer(_dom_adapter.default.getDocumentElement());\r\n    return offsetParent\r\n};\r\ninitRender.prototype.position = function() {\r\n    if (!this[0]) {\r\n        return\r\n    }\r\n    var offset;\r\n    var marginTop = parseFloat(this.css(\"marginTop\"));\r\n    var marginLeft = parseFloat(this.css(\"marginLeft\"));\r\n    if (\"fixed\" === this.css(\"position\")) {\r\n        offset = this[0].getBoundingClientRect();\r\n        return {\r\n            top: offset.top - marginTop,\r\n            left: offset.left - marginLeft\r\n        }\r\n    }\r\n    offset = this.offset();\r\n    var offsetParent = this.offsetParent();\r\n    var parentOffset = {\r\n        top: 0,\r\n        left: 0\r\n    };\r\n    if (\"HTML\" !== offsetParent[0].nodeName) {\r\n        parentOffset = offsetParent.offset()\r\n    }\r\n    parentOffset = {\r\n        top: parentOffset.top + parseFloat(offsetParent.css(\"borderTopWidth\")),\r\n        left: parentOffset.left + parseFloat(offsetParent.css(\"borderLeftWidth\"))\r\n    };\r\n    return {\r\n        top: offset.top - parentOffset.top - marginTop,\r\n        left: offset.left - parentOffset.left - marginLeft\r\n    }\r\n};\r\n[{\r\n    name: \"scrollLeft\",\r\n    offsetProp: \"pageXOffset\",\r\n    scrollWindow: function(win, value) {\r\n        win.scrollTo(value, win.pageYOffset)\r\n    }\r\n}, {\r\n    name: \"scrollTop\",\r\n    offsetProp: \"pageYOffset\",\r\n    scrollWindow: function(win, value) {\r\n        win.scrollTo(win.pageXOffset, value)\r\n    }\r\n}].forEach(function(directionStrategy) {\r\n    var propName = directionStrategy.name;\r\n    initRender.prototype[propName] = function(value) {\r\n        if (!this[0]) {\r\n            return\r\n        }\r\n        var window = getWindowByElement(this[0]);\r\n        if (void 0 === value) {\r\n            return window ? window[directionStrategy.offsetProp] : this[0][propName]\r\n        }\r\n        if (window) {\r\n            directionStrategy.scrollWindow(window, value)\r\n        } else {\r\n            this[0][propName] = value\r\n        }\r\n        return this\r\n    }\r\n});\r\ninitRender.prototype.data = function(key, value) {\r\n    if (!this[0]) {\r\n        return\r\n    }\r\n    if (arguments.length < 2) {\r\n        return _element_data.data.call(renderer, this[0], key)\r\n    }\r\n    _element_data.data.call(renderer, this[0], key, value);\r\n    return this\r\n};\r\ninitRender.prototype.removeData = function(key) {\r\n    this[0] && (0, _element_data.removeData)(this[0], key);\r\n    return this\r\n};\r\nvar rendererWrapper = function() {\r\n    return renderer.apply(this, arguments)\r\n};\r\nObject.defineProperty(rendererWrapper, \"fn\", {\r\n    enumerable: true,\r\n    configurable: true,\r\n    get: function() {\r\n        return renderer.fn\r\n    },\r\n    set: function(value) {\r\n        renderer.fn = value\r\n    }\r\n});\r\nvar _default = {\r\n    set: function(strategy) {\r\n        renderer = strategy\r\n    },\r\n    get: function() {\r\n        return rendererWrapper\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.focus.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.focus\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiData_grid2 = require(\"./ui.data_grid.utils\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n_uiData_grid.default.registerModule(\"focus\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                changeRowExpand: function(path, isRowClick) {\r\n                    if (this.option(\"focusedRowEnabled\") && Array.isArray(path) && this.isRowExpanded(path)) {\r\n                        var keyboardNavigation = this.getController(\"keyboardNavigation\");\r\n                        if ((!isRowClick || !keyboardNavigation.isKeyboardEnabled()) && this._isFocusedRowInsideGroup(path)) {\r\n                            this.option(\"focusedRowKey\", path)\r\n                        }\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _isFocusedRowInsideGroup: function(path) {\r\n                    var columnsController = this.getController(\"columns\");\r\n                    var focusedRowKey = this.option(\"focusedRowKey\");\r\n                    var rowIndex = this.getRowIndexByKey(focusedRowKey);\r\n                    var focusedRow = rowIndex >= 0 && this.getVisibleRows()[rowIndex];\r\n                    var groups = columnsController.getGroupDataSourceParameters(true);\r\n                    if (focusedRow) {\r\n                        for (var i = 0; i < path.length; ++i) {\r\n                            var getter = (0, _data.compileGetter)(groups[i] && groups[i].selector);\r\n                            if (getter(focusedRow.data) !== path[i]) {\r\n                                return false\r\n                            }\r\n                        }\r\n                    }\r\n                    return true\r\n                },\r\n                _getGroupPath: function(group) {\r\n                    var groupPath = [group.key];\r\n                    var items = group.items;\r\n                    while (items && items[0]) {\r\n                        var item = items[0];\r\n                        if (void 0 !== item.key) {\r\n                            groupPath.push(item.key)\r\n                        }\r\n                        items = item.items\r\n                    }\r\n                    return groupPath\r\n                },\r\n                _expandGroupByPath: function(that, groupPath, level) {\r\n                    var d = new _deferred.Deferred;\r\n                    level++;\r\n                    that.expandRow(groupPath.slice(0, level)).done(function() {\r\n                        if (level === groupPath.length) {\r\n                            d.resolve()\r\n                        } else {\r\n                            that._expandGroupByPath(that, groupPath, level).done(d.resolve).fail(d.reject)\r\n                        }\r\n                    }).fail(d.reject);\r\n                    return d.promise()\r\n                },\r\n                _calculateGlobalRowIndexByGroupedData: function(key) {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var filter = that._generateFilterByKey(key);\r\n                    var deferred = new _deferred.Deferred;\r\n                    var isGroupKey = Array.isArray(key);\r\n                    var group = dataSource.group();\r\n                    if (isGroupKey) {\r\n                        return deferred.resolve(-1).promise()\r\n                    }\r\n                    if (!dataSource._grouping._updatePagingOptions) {\r\n                        that._calculateGlobalRowIndexByFlatData(key, null, true).done(deferred.resolve).fail(deferred.reject);\r\n                        return deferred\r\n                    }\r\n                    dataSource.load({\r\n                        filter: that._concatWithCombinedFilter(filter),\r\n                        group: group\r\n                    }).done(function(data) {\r\n                        if (!data || 0 === data.length || !(0, _type.isDefined)(data[0].key) || data[0].key === -1) {\r\n                            return deferred.resolve(-1).promise()\r\n                        }\r\n                        var groupPath = that._getGroupPath(data[0]);\r\n                        that._expandGroupByPath(that, groupPath, 0).done(function() {\r\n                            that._calculateExpandedRowGlobalIndex(deferred, key, groupPath, group)\r\n                        }).fail(deferred.reject)\r\n                    }).fail(deferred.reject);\r\n                    return deferred.promise()\r\n                },\r\n                _calculateExpandedRowGlobalIndex: function(deferred, key, groupPath, group) {\r\n                    var groupFilter = (0, _uiData_grid2.createGroupFilter)(groupPath, {\r\n                        group: group\r\n                    });\r\n                    var dataSource = this._dataSource;\r\n                    var scrollingMode = this.option(\"scrolling.mode\");\r\n                    var isVirtualScrolling = \"virtual\" === scrollingMode || \"infinite\" === scrollingMode;\r\n                    var pageSize = dataSource.pageSize();\r\n                    var groupOffset;\r\n                    dataSource._grouping._updatePagingOptions({\r\n                        skip: 0,\r\n                        take: MAX_SAFE_INTEGER\r\n                    }, function(groupInfo, totalOffset) {\r\n                        if ((0, _common.equalByValue)(groupInfo.path, groupPath)) {\r\n                            groupOffset = totalOffset\r\n                        }\r\n                    });\r\n                    this._calculateGlobalRowIndexByFlatData(key, groupFilter).done(function(dataOffset) {\r\n                        var count;\r\n                        var groupContinuationCount;\r\n                        if (dataOffset < 0) {\r\n                            deferred.resolve(-1);\r\n                            return\r\n                        }\r\n                        var currentPageOffset = groupOffset % pageSize || pageSize;\r\n                        count = currentPageOffset + dataOffset - groupPath.length;\r\n                        if (isVirtualScrolling) {\r\n                            groupContinuationCount = 0\r\n                        } else {\r\n                            groupContinuationCount = Math.floor(count / (pageSize - groupPath.length)) * groupPath.length\r\n                        }\r\n                        count = groupOffset + dataOffset + groupContinuationCount;\r\n                        deferred.resolve(count)\r\n                    }).fail(deferred.reject)\r\n                }\r\n            }\r\n        }\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (events/core/event_registrator_callbacks.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _memorized_callbacks = _interopRequireDefault(require(\"../../core/memorized_callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = new _memorized_callbacks.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.columns_controller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.columns_controller\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"columns\", {\r\n    defaultOptions: function() {\r\n        return (0, _extend.extend)(true, {}, _uiGrid_core.default.defaultOptions(), {\r\n            commonColumnSettings: {\r\n                allowExporting: true\r\n            }\r\n        })\r\n    },\r\n    controllers: _uiGrid_core.default.controllers\r\n});\r\n","/**\r\n * DevExtreme (bundles/modules/viz.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nrequire(\"./core\");\r\nmodule.exports = DevExpress.viz = DevExpress.viz || {};\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.master_detail.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar MASTER_DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar ROW_LINES_CLASS = \"dx-row-lines\";\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            masterDetail: {\r\n                enabled: false,\r\n                autoExpandAll: false,\r\n                template: null\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            columns: {\r\n                _getExpandColumnsCore: function() {\r\n                    var expandColumns = this.callBase();\r\n                    if (this.option(\"masterDetail.enabled\")) {\r\n                        expandColumns.push({\r\n                            type: \"detailExpand\",\r\n                            cellTemplate: _uiGrid_core.default.getExpandCellTemplate()\r\n                        })\r\n                    }\r\n                    return expandColumns\r\n                }\r\n            },\r\n            data: function() {\r\n                var initMasterDetail = function(that) {\r\n                    that._expandedItems = [];\r\n                    that._isExpandAll = that.option(\"masterDetail.autoExpandAll\")\r\n                };\r\n                return {\r\n                    init: function() {\r\n                        var that = this;\r\n                        initMasterDetail(that);\r\n                        that.callBase()\r\n                    },\r\n                    expandAll: function(groupIndex) {\r\n                        var that = this;\r\n                        if (groupIndex < 0) {\r\n                            that._isExpandAll = true;\r\n                            that._expandedItems = [];\r\n                            that.updateItems()\r\n                        } else {\r\n                            that.callBase.apply(that, arguments)\r\n                        }\r\n                    },\r\n                    collapseAll: function(groupIndex) {\r\n                        var that = this;\r\n                        if (groupIndex < 0) {\r\n                            that._isExpandAll = false;\r\n                            that._expandedItems = [];\r\n                            that.updateItems()\r\n                        } else {\r\n                            that.callBase.apply(that, arguments)\r\n                        }\r\n                    },\r\n                    isRowExpanded: function(key) {\r\n                        var that = this;\r\n                        var expandIndex = _uiGrid_core.default.getIndexByKey(key, that._expandedItems);\r\n                        if (Array.isArray(key)) {\r\n                            return that.callBase.apply(that, arguments)\r\n                        } else {\r\n                            return !!(that._isExpandAll ^ (expandIndex >= 0 && that._expandedItems[expandIndex].visible))\r\n                        }\r\n                    },\r\n                    _getRowIndicesForExpand: function(key) {\r\n                        var rowIndex = this.getRowIndexByKey(key);\r\n                        return [rowIndex, rowIndex + 1]\r\n                    },\r\n                    _changeRowExpandCore: function(key) {\r\n                        var that = this;\r\n                        var result;\r\n                        if (Array.isArray(key)) {\r\n                            result = that.callBase.apply(that, arguments)\r\n                        } else {\r\n                            var expandIndex = _uiGrid_core.default.getIndexByKey(key, that._expandedItems);\r\n                            if (expandIndex >= 0) {\r\n                                var visible = that._expandedItems[expandIndex].visible;\r\n                                that._expandedItems[expandIndex].visible = !visible\r\n                            } else {\r\n                                that._expandedItems.push({\r\n                                    key: key,\r\n                                    visible: true\r\n                                })\r\n                            }\r\n                            that.updateItems({\r\n                                changeType: \"update\",\r\n                                rowIndices: that._getRowIndicesForExpand(key)\r\n                            });\r\n                            result = (new _deferred.Deferred).resolve()\r\n                        }\r\n                        return result\r\n                    },\r\n                    _processDataItem: function(data, options) {\r\n                        var that = this;\r\n                        var dataItem = that.callBase.apply(that, arguments);\r\n                        dataItem.isExpanded = that.isRowExpanded(dataItem.key);\r\n                        if (void 0 === options.detailColumnIndex) {\r\n                            options.detailColumnIndex = -1;\r\n                            (0, _iterator.each)(options.visibleColumns, function(index, column) {\r\n                                if (\"expand\" === column.command && !(0, _type.isDefined)(column.groupIndex)) {\r\n                                    options.detailColumnIndex = index;\r\n                                    return false\r\n                                }\r\n                            })\r\n                        }\r\n                        if (options.detailColumnIndex >= 0) {\r\n                            dataItem.values[options.detailColumnIndex] = dataItem.isExpanded\r\n                        }\r\n                        return dataItem\r\n                    },\r\n                    _processItems: function(items, change) {\r\n                        var that = this;\r\n                        var changeType = change.changeType;\r\n                        var result = [];\r\n                        items = that.callBase.apply(that, arguments);\r\n                        if (\"loadingAll\" === changeType) {\r\n                            return items\r\n                        }\r\n                        if (\"refresh\" === changeType) {\r\n                            that._expandedItems = (0, _common.grep)(that._expandedItems, function(item) {\r\n                                return item.visible\r\n                            })\r\n                        }(0, _iterator.each)(items, function(index, item) {\r\n                            result.push(item);\r\n                            var expandIndex = _uiGrid_core.default.getIndexByKey(item.key, that._expandedItems);\r\n                            if (\"data\" === item.rowType && (item.isExpanded || expandIndex >= 0) && !item.isNewRow) {\r\n                                result.push({\r\n                                    visible: item.isExpanded,\r\n                                    rowType: \"detail\",\r\n                                    key: item.key,\r\n                                    data: item.data,\r\n                                    values: []\r\n                                })\r\n                            }\r\n                        });\r\n                        return result\r\n                    },\r\n                    optionChanged: function(args) {\r\n                        var that = this;\r\n                        var isEnabledChanged;\r\n                        var isAutoExpandAllChanged;\r\n                        if (\"masterDetail\" === args.name) {\r\n                            args.name = \"dataSource\";\r\n                            switch (args.fullName) {\r\n                                case \"masterDetail\":\r\n                                    var value = args.value || {};\r\n                                    var previousValue = args.previousValue || {};\r\n                                    isEnabledChanged = value.enabled !== previousValue.enabled;\r\n                                    isAutoExpandAllChanged = value.autoExpandAll !== previousValue.autoExpandAll;\r\n                                    break;\r\n                                case \"masterDetail.enabled\":\r\n                                    isEnabledChanged = true;\r\n                                    break;\r\n                                case \"masterDetail.autoExpandAll\":\r\n                                    isAutoExpandAllChanged = true\r\n                            }\r\n                            if (isEnabledChanged || isAutoExpandAllChanged) {\r\n                                initMasterDetail(that)\r\n                            }\r\n                        }\r\n                        that.callBase(args)\r\n                    }\r\n                }\r\n            }(),\r\n            resizing: {\r\n                fireContentReadyAction: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    this._updateParentDataGrids(this.component.$element())\r\n                },\r\n                _updateParentDataGrids: function($element) {\r\n                    var _this = this;\r\n                    var $masterDetailRow = $element.closest(\".\" + MASTER_DETAIL_ROW_CLASS);\r\n                    if ($masterDetailRow.length) {\r\n                        (0, _deferred.when)(this._updateMasterDataGrid($masterDetailRow, $element)).done(function() {\r\n                            _this._updateParentDataGrids($masterDetailRow.parent())\r\n                        })\r\n                    }\r\n                },\r\n                _updateMasterDataGrid: function($masterDetailRow, $detailElement) {\r\n                    var masterRowOptions = (0, _renderer.default)($masterDetailRow).data(\"options\");\r\n                    var masterDataGrid = (0, _renderer.default)($masterDetailRow).closest(\".\" + this.getWidgetContainerClass()).parent().data(\"dxDataGrid\");\r\n                    if (masterRowOptions && masterDataGrid) {\r\n                        if (masterDataGrid.getView(\"rowsView\").isFixedColumns()) {\r\n                            this._updateFixedMasterDetailGrids(masterDataGrid, masterRowOptions.rowIndex, $detailElement)\r\n                        } else {\r\n                            var scrollable = masterDataGrid.getScrollable();\r\n                            return scrollable && scrollable.update()\r\n                        }\r\n                    }\r\n                },\r\n                _updateFixedMasterDetailGrids: function(masterDataGrid, masterRowIndex, $detailElement) {\r\n                    var _this2 = this;\r\n                    var $rows = (0, _renderer.default)(masterDataGrid.getRowElement(masterRowIndex));\r\n                    if ($rows && 2 === $rows.length && $rows.eq(0).height() !== $rows.eq(1).height()) {\r\n                        var detailElementWidth = $detailElement.width();\r\n                        return masterDataGrid.updateDimensions().done(function() {\r\n                            var isDetailHorizontalScrollCanBeShown = _this2.option(\"columnAutoWidth\") && true === masterDataGrid.option(\"scrolling.useNative\");\r\n                            var isDetailGridWidthChanged = isDetailHorizontalScrollCanBeShown && detailElementWidth !== $detailElement.width();\r\n                            if (isDetailHorizontalScrollCanBeShown && isDetailGridWidthChanged) {\r\n                                _this2.updateDimensions()\r\n                            }\r\n                        })\r\n                    }\r\n                },\r\n                _toggleBestFitMode: function(isBestFit) {\r\n                    this.callBase.apply(this, arguments);\r\n                    if (this.option(\"masterDetail.template\")) {\r\n                        var $rowsTable = this._rowsView._getTableElement();\r\n                        if ($rowsTable) {\r\n                            $rowsTable.find(\".dx-master-detail-cell\").toggleClass(\"dx-hidden\", isBestFit)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            rowsView: function() {\r\n                return {\r\n                    _getCellTemplate: function(options) {\r\n                        var that = this;\r\n                        var column = options.column;\r\n                        var editingController = that.getController(\"editing\");\r\n                        var isEditRow = editingController && editingController.isEditRow(options.rowIndex);\r\n                        var template;\r\n                        if (\"detail\" === column.command && !isEditRow) {\r\n                            template = that.option(\"masterDetail.template\") || {\r\n                                allowRenderToDetachedContainer: false,\r\n                                render: that._getDefaultTemplate(column)\r\n                            }\r\n                        } else {\r\n                            template = that.callBase.apply(that, arguments)\r\n                        }\r\n                        return template\r\n                    },\r\n                    _isDetailRow: function(row) {\r\n                        return row && row.rowType && 0 === row.rowType.indexOf(\"detail\")\r\n                    },\r\n                    _createRow: function(row) {\r\n                        var $row = this.callBase(row);\r\n                        if (row && this._isDetailRow(row)) {\r\n                            this.option(\"showRowLines\") && $row.addClass(ROW_LINES_CLASS);\r\n                            $row.addClass(MASTER_DETAIL_ROW_CLASS);\r\n                            if ((0, _type.isDefined)(row.visible)) {\r\n                                $row.toggle(row.visible)\r\n                            }\r\n                        }\r\n                        return $row\r\n                    },\r\n                    _renderCells: function($row, options) {\r\n                        var row = options.row;\r\n                        var $detailCell;\r\n                        var visibleColumns = this._columnsController.getVisibleColumns();\r\n                        if (row.rowType && this._isDetailRow(row)) {\r\n                            if (this._needRenderCell(0, options.columnIndices)) {\r\n                                $detailCell = this._renderCell($row, {\r\n                                    value: null,\r\n                                    row: row,\r\n                                    rowIndex: row.rowIndex,\r\n                                    column: {\r\n                                        command: \"detail\"\r\n                                    },\r\n                                    columnIndex: 0\r\n                                });\r\n                                $detailCell.addClass(CELL_FOCUS_DISABLED_CLASS).addClass(MASTER_DETAIL_CELL_CLASS).attr(\"colSpan\", visibleColumns.length)\r\n                            }\r\n                        } else {\r\n                            this.callBase.apply(this, arguments)\r\n                        }\r\n                    }\r\n                }\r\n            }()\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/currency.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _default = {\r\n    _formatNumberCore: function(value, format, formatConfig) {\r\n        if (\"currency\" === format) {\r\n            formatConfig.precision = formatConfig.precision || 0;\r\n            var result = this.format(value, (0, _extend.extend)({}, formatConfig, {\r\n                type: \"fixedpoint\"\r\n            }));\r\n            var currencyPart = this.getCurrencySymbol().symbol.replace(\"$\", \"$$$$\");\r\n            result = result.replace(/^(\\D*)(\\d.*)/, \"$1\" + currencyPart + \"$2\");\r\n            return result\r\n        }\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    getCurrencySymbol: function() {\r\n        return {\r\n            symbol: \"$\"\r\n        }\r\n    },\r\n    getOpenXmlCurrencyFormat: function() {\r\n        return \"$#,##0{0}_);\\\\($#,##0{0}\\\\)\"\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./scroll_view/ui.scroll_view\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/data_source.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _abstract_store = _interopRequireDefault(require(\"../../data/abstract_store\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _events_strategy = require(\"../../core/events_strategy\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _local_store = require(\"./local_store\");\r\nvar _remote_store = _interopRequireDefault(require(\"./remote_store\"));\r\nvar _data_source = require(\"./data_source.utils\");\r\nvar _xmla_store = require(\"./xmla_store/xmla_store\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.summary_display_modes\");\r\nvar _uiPivot_grid2 = require(\"./ui.pivot_grid.utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DESCRIPTION_NAME_BY_AREA = {\r\n    row: \"rows\",\r\n    column: \"columns\",\r\n    data: \"values\",\r\n    filter: \"filters\"\r\n};\r\nvar STATE_PROPERTIES = [\"area\", \"areaIndex\", \"sortOrder\", \"filterType\", \"filterValues\", \"sortBy\", \"sortBySummaryField\", \"sortBySummaryPath\", \"expanded\", \"summaryType\", \"summaryDisplayMode\"];\r\nvar CALCULATED_PROPERTIES = [\"format\", \"selector\", \"customizeText\", \"caption\"];\r\nvar ALL_CALCULATED_PROPERTIES = CALCULATED_PROPERTIES.concat([\"allowSorting\", \"allowSortingBySummary\", \"allowFiltering\", \"allowExpandAll\"]);\r\n\r\nfunction createCaption(field) {\r\n    var caption = field.dataField || field.groupName || \"\";\r\n    var summaryType = (field.summaryType || \"\").toLowerCase();\r\n    if ((0, _type.isString)(field.groupInterval)) {\r\n        caption += \"_\" + field.groupInterval\r\n    }\r\n    if (summaryType && \"custom\" !== summaryType) {\r\n        summaryType = summaryType.replace(/^./, summaryType[0].toUpperCase());\r\n        if (caption.length) {\r\n            summaryType = \" (\" + summaryType + \")\"\r\n        }\r\n    } else {\r\n        summaryType = \"\"\r\n    }\r\n    return (0, _inflector.titleize)(caption) + summaryType\r\n}\r\n\r\nfunction resetFieldState(field, properties) {\r\n    var initialProperties = field._initProperties || {};\r\n    (0, _iterator.each)(properties, function(_, prop) {\r\n        if (Object.prototype.hasOwnProperty.call(initialProperties, prop)) {\r\n            field[prop] = initialProperties[prop]\r\n        }\r\n    })\r\n}\r\n\r\nfunction updateCalculatedFieldProperties(field, calculatedProperties) {\r\n    resetFieldState(field, calculatedProperties);\r\n    if (!(0, _type.isDefined)(field.caption)) {\r\n        (0, _uiPivot_grid2.setFieldProperty)(field, \"caption\", createCaption(field))\r\n    }\r\n}\r\n\r\nfunction areExpressionsUsed(dataFields) {\r\n    return dataFields.some(function(field) {\r\n        return field.summaryDisplayMode || field.calculateSummaryValue\r\n    })\r\n}\r\n\r\nfunction isRunningTotalUsed(dataFields) {\r\n    return dataFields.some(function(field) {\r\n        return !!field.runningTotal\r\n    })\r\n}\r\n\r\nfunction isDataExists(data) {\r\n    return data.rows.length || data.columns.length || data.values.length\r\n}\r\nvar _default = _class.default.inherit(function() {\r\n    var findHeaderItem = function(headerItems, path) {\r\n        if (headerItems._cacheByPath) {\r\n            return headerItems._cacheByPath[path.join(\".\")] || null\r\n        }\r\n    };\r\n    var getHeaderItemsLastIndex = function getHeaderItemsLastIndex(headerItems, grandTotalIndex) {\r\n        var i;\r\n        var lastIndex = -1;\r\n        var headerItem;\r\n        if (headerItems) {\r\n            for (i = 0; i < headerItems.length; i++) {\r\n                headerItem = headerItems[i];\r\n                if (void 0 !== headerItem.index) {\r\n                    lastIndex = Math.max(lastIndex, headerItem.index)\r\n                }\r\n                if (headerItem.children) {\r\n                    lastIndex = Math.max(lastIndex, getHeaderItemsLastIndex(headerItem.children))\r\n                } else {\r\n                    if (headerItem.collapsedChildren) {\r\n                        lastIndex = Math.max(lastIndex, getHeaderItemsLastIndex(headerItem.collapsedChildren))\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        if ((0, _type.isDefined)(grandTotalIndex)) {\r\n            lastIndex = Math.max(lastIndex, grandTotalIndex)\r\n        }\r\n        return lastIndex\r\n    };\r\n    var updateHeaderItemChildren = function(headerItems, headerItem, children, grandTotalIndex) {\r\n        var applyingHeaderItemsCount = getHeaderItemsLastIndex(children) + 1;\r\n        var emptyIndex = getHeaderItemsLastIndex(headerItems, grandTotalIndex) + 1;\r\n        var index;\r\n        var applyingItemIndexesToCurrent = [];\r\n        var needIndexUpdate = false;\r\n        var d = new _deferred.Deferred;\r\n        if (headerItem.children && headerItem.children.length === children.length) {\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (void 0 !== child.index) {\r\n                    if (void 0 === headerItem.children[i].index) {\r\n                        child.index = applyingItemIndexesToCurrent[child.index] = emptyIndex++;\r\n                        headerItem.children[i] = child\r\n                    } else {\r\n                        applyingItemIndexesToCurrent[child.index] = headerItem.children[i].index\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            needIndexUpdate = true;\r\n            for (index = 0; index < applyingHeaderItemsCount; index++) {\r\n                applyingItemIndexesToCurrent[index] = emptyIndex++\r\n            }\r\n            headerItem.children = children\r\n        }(0, _deferred.when)((0, _uiPivot_grid2.foreachTreeAsync)(headerItem.children, function(items) {\r\n            if (needIndexUpdate) {\r\n                items[0].index = applyingItemIndexesToCurrent[items[0].index]\r\n            }\r\n        })).done(function() {\r\n            d.resolve(applyingItemIndexesToCurrent)\r\n        });\r\n        return d\r\n    };\r\n    var updateHeaderItems = function(headerItems, newHeaderItems, grandTotalIndex) {\r\n        var d = new _deferred.Deferred;\r\n        var emptyIndex = grandTotalIndex >= 0 && getHeaderItemsLastIndex(headerItems, grandTotalIndex) + 1;\r\n        var applyingItemIndexesToCurrent = [];\r\n        (0, _deferred.when)((0, _uiPivot_grid2.foreachTreeAsync)(headerItems, function(items) {\r\n            delete items[0].collapsedChildren\r\n        })).done(function() {\r\n            (0, _deferred.when)((0, _uiPivot_grid2.foreachTreeAsync)(newHeaderItems, function(newItems, index) {\r\n                var newItem = newItems[0];\r\n                if (newItem.index >= 0) {\r\n                    var headerItem = findHeaderItem(headerItems, (0, _uiPivot_grid2.createPath)(newItems));\r\n                    if (headerItem && headerItem.index >= 0) {\r\n                        applyingItemIndexesToCurrent[newItem.index] = headerItem.index\r\n                    } else {\r\n                        if (emptyIndex) {\r\n                            var path = (0, _uiPivot_grid2.createPath)(newItems.slice(1));\r\n                            headerItem = findHeaderItem(headerItems, path);\r\n                            var parentItems = path.length ? headerItem && headerItem.children : headerItems;\r\n                            if (parentItems) {\r\n                                parentItems[index] = newItem;\r\n                                newItem.index = applyingItemIndexesToCurrent[newItem.index] = emptyIndex++\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            })).done(function() {\r\n                d.resolve(applyingItemIndexesToCurrent)\r\n            })\r\n        });\r\n        return d\r\n    };\r\n    var updateDataSourceCells = function(dataSource, newDataSourceCells, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) {\r\n        var newRowIndex;\r\n        var newColumnIndex;\r\n        var newRowCells;\r\n        var newCell;\r\n        var rowIndex;\r\n        var columnIndex;\r\n        var dataSourceCells = dataSource.values;\r\n        if (newDataSourceCells) {\r\n            for (newRowIndex = 0; newRowIndex <= newDataSourceCells.length; newRowIndex++) {\r\n                newRowCells = newDataSourceCells[newRowIndex];\r\n                rowIndex = newRowItemIndexesToCurrent[newRowIndex];\r\n                if (!(0, _type.isDefined)(rowIndex)) {\r\n                    rowIndex = dataSource.grandTotalRowIndex\r\n                }\r\n                if (newRowCells && (0, _type.isDefined)(rowIndex)) {\r\n                    if (!dataSourceCells[rowIndex]) {\r\n                        dataSourceCells[rowIndex] = []\r\n                    }\r\n                    for (newColumnIndex = 0; newColumnIndex <= newRowCells.length; newColumnIndex++) {\r\n                        newCell = newRowCells[newColumnIndex];\r\n                        columnIndex = newColumnItemIndexesToCurrent[newColumnIndex];\r\n                        if (!(0, _type.isDefined)(columnIndex)) {\r\n                            columnIndex = dataSource.grandTotalColumnIndex\r\n                        }\r\n                        if ((0, _type.isDefined)(newCell) && (0, _type.isDefined)(columnIndex)) {\r\n                            dataSourceCells[rowIndex][columnIndex] = newCell\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n\r\n    function createLocalOrRemoteStore(dataSourceOptions, notifyProgress) {\r\n        var StoreConstructor = dataSourceOptions.remoteOperations || dataSourceOptions.paginate ? _remote_store.default : _local_store.LocalStore;\r\n        return new StoreConstructor((0, _extend.extend)((0, _utils.normalizeDataSourceOptions)(dataSourceOptions), {\r\n            onChanged: null,\r\n            onLoadingChanged: null,\r\n            onProgressChanged: notifyProgress\r\n        }))\r\n    }\r\n\r\n    function createStore(dataSourceOptions, notifyProgress) {\r\n        var store;\r\n        var storeOptions;\r\n        if ((0, _type.isPlainObject)(dataSourceOptions) && dataSourceOptions.load) {\r\n            store = createLocalOrRemoteStore(dataSourceOptions, notifyProgress)\r\n        } else {\r\n            if (dataSourceOptions && !dataSourceOptions.store) {\r\n                dataSourceOptions = {\r\n                    store: dataSourceOptions\r\n                }\r\n            }\r\n            storeOptions = dataSourceOptions.store;\r\n            if (\"xmla\" === storeOptions.type) {\r\n                store = new _xmla_store.XmlaStore(storeOptions)\r\n            } else {\r\n                if ((0, _type.isPlainObject)(storeOptions) && storeOptions.type || storeOptions instanceof _abstract_store.default || Array.isArray(storeOptions)) {\r\n                    store = createLocalOrRemoteStore(dataSourceOptions, notifyProgress)\r\n                } else {\r\n                    if (storeOptions instanceof _class.default) {\r\n                        store = storeOptions\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return store\r\n    }\r\n\r\n    function equalFields(fields, prevFields, count) {\r\n        for (var i = 0; i < count; i++) {\r\n            if (!fields[i] || !prevFields[i] || fields[i].index !== prevFields[i].index) {\r\n                return false\r\n            }\r\n        }\r\n        return true\r\n    }\r\n\r\n    function getExpandedPaths(dataSource, loadOptions, dimensionName, prevLoadOptions) {\r\n        var result = [];\r\n        var fields = loadOptions && loadOptions[dimensionName] || [];\r\n        var prevFields = prevLoadOptions && prevLoadOptions[dimensionName] || [];\r\n        (0, _uiPivot_grid2.foreachTree)(dataSource[dimensionName], function(items) {\r\n            var item = items[0];\r\n            var path = (0, _uiPivot_grid2.createPath)(items);\r\n            if (item.children && fields[path.length - 1] && !fields[path.length - 1].expanded) {\r\n                if (path.length < fields.length && (!prevLoadOptions || equalFields(fields, prevFields, path.length))) {\r\n                    result.push(path.slice())\r\n                }\r\n            }\r\n        }, true);\r\n        return result\r\n    }\r\n\r\n    function setFieldProperties(field, srcField, skipInitPropertySave, properties) {\r\n        if (srcField) {\r\n            (0, _iterator.each)(properties, function(_, name) {\r\n                if (skipInitPropertySave) {\r\n                    field[name] = srcField[name]\r\n                } else {\r\n                    if ((\"summaryType\" === name || \"summaryDisplayMode\" === name) && void 0 === srcField[name]) {\r\n                        return\r\n                    }(0, _uiPivot_grid2.setFieldProperty)(field, name, srcField[name])\r\n                }\r\n            })\r\n        } else {\r\n            resetFieldState(field, properties)\r\n        }\r\n        return field\r\n    }\r\n\r\n    function getFieldsState(fields, properties) {\r\n        var result = [];\r\n        (0, _iterator.each)(fields, function(_, field) {\r\n            result.push(setFieldProperties({\r\n                dataField: field.dataField,\r\n                name: field.name\r\n            }, field, true, properties))\r\n        });\r\n        return result\r\n    }\r\n\r\n    function getFieldStateId(field) {\r\n        if (field.name) {\r\n            return field.name\r\n        }\r\n        return field.dataField + \"\"\r\n    }\r\n\r\n    function getFieldsById(fields, id) {\r\n        var result = [];\r\n        (0, _iterator.each)(fields || [], function(_, field) {\r\n            if (getFieldStateId(field) === id) {\r\n                result.push(field)\r\n            }\r\n        });\r\n        return result\r\n    }\r\n\r\n    function setFieldsStateCore(stateFields, fields) {\r\n        stateFields = stateFields || [];\r\n        (0, _iterator.each)(fields, function(index, field) {\r\n            setFieldProperties(field, stateFields[index], false, STATE_PROPERTIES);\r\n            updateCalculatedFieldProperties(field, CALCULATED_PROPERTIES)\r\n        });\r\n        return fields\r\n    }\r\n\r\n    function setFieldsState(stateFields, fields) {\r\n        stateFields = stateFields || [];\r\n        var fieldsById = {};\r\n        var id;\r\n        (0, _iterator.each)(fields, function(_, field) {\r\n            id = getFieldStateId(field);\r\n            if (!fieldsById[id]) {\r\n                fieldsById[id] = getFieldsById(fields, getFieldStateId(field))\r\n            }\r\n        });\r\n        (0, _iterator.each)(fieldsById, function(id, fields) {\r\n            setFieldsStateCore(getFieldsById(stateFields, id), fields)\r\n        });\r\n        return fields\r\n    }\r\n\r\n    function getFieldsByGroup(fields, groupingField) {\r\n        return fields.filter(function(field) {\r\n            return field.groupName === groupingField.groupName && (0, _type.isNumeric)(field.groupIndex) && false !== field.visible\r\n        }).map(function(field) {\r\n            return (0, _extend.extend)(field, {\r\n                areaIndex: groupingField.areaIndex,\r\n                area: groupingField.area,\r\n                expanded: (0, _type.isDefined)(field.expanded) ? field.expanded : groupingField.expanded,\r\n                dataField: field.dataField || groupingField.dataField,\r\n                dataType: field.dataType || groupingField.dataType,\r\n                sortBy: field.sortBy || groupingField.sortBy,\r\n                sortOrder: field.sortOrder || groupingField.sortOrder,\r\n                sortBySummaryField: field.sortBySummaryField || groupingField.sortBySummaryField,\r\n                sortBySummaryPath: field.sortBySummaryPath || groupingField.sortBySummaryPath,\r\n                visible: field.visible || groupingField.visible,\r\n                showTotals: (0, _type.isDefined)(field.showTotals) ? field.showTotals : groupingField.showTotals,\r\n                showGrandTotals: (0, _type.isDefined)(field.showGrandTotals) ? field.showGrandTotals : groupingField.showGrandTotals\r\n            })\r\n        }).sort(function(a, b) {\r\n            return a.groupIndex - b.groupIndex\r\n        })\r\n    }\r\n\r\n    function sortFieldsByAreaIndex(fields) {\r\n        fields.sort(function(field1, field2) {\r\n            return field1.areaIndex - field2.areaIndex || field1.groupIndex - field2.groupIndex\r\n        })\r\n    }\r\n\r\n    function isAreaField(field, area) {\r\n        var canAddFieldInArea = \"data\" === area || false !== field.visible;\r\n        return field.area === area && !(0, _type.isDefined)(field.groupIndex) && canAddFieldInArea\r\n    }\r\n\r\n    function getFieldId(field, retrieveFieldsOptionValue) {\r\n        var groupName = field.groupName || \"\";\r\n        return (field.dataField || groupName) + (field.groupInterval ? groupName + field.groupInterval : \"NOGROUP\") + (retrieveFieldsOptionValue ? \"\" : groupName)\r\n    }\r\n\r\n    function mergeFields(fields, storeFields, retrieveFieldsOptionValue) {\r\n        var result = [];\r\n        var fieldsDictionary = {};\r\n        var removedFields = {};\r\n        var mergedGroups = [];\r\n        var dataTypes = (0, _uiPivot_grid2.getFieldsDataType)(fields);\r\n        if (storeFields) {\r\n            (0, _iterator.each)(storeFields, function(_, field) {\r\n                fieldsDictionary[getFieldId(field, retrieveFieldsOptionValue)] = field\r\n            });\r\n            (0, _iterator.each)(fields, function(_, field) {\r\n                var fieldKey = getFieldId(field, retrieveFieldsOptionValue);\r\n                var storeField = fieldsDictionary[fieldKey] || removedFields[fieldKey];\r\n                var mergedField;\r\n                if (storeField) {\r\n                    if (storeField._initProperties) {\r\n                        resetFieldState(storeField, ALL_CALCULATED_PROPERTIES)\r\n                    }\r\n                    mergedField = (0, _extend.extend)({}, storeField, field, {\r\n                        _initProperties: null\r\n                    })\r\n                } else {\r\n                    fieldsDictionary[fieldKey] = mergedField = field\r\n                }(0, _extend.extend)(mergedField, {\r\n                    dataType: dataTypes[field.dataField]\r\n                });\r\n                delete fieldsDictionary[fieldKey];\r\n                removedFields[fieldKey] = storeField;\r\n                result.push(mergedField)\r\n            });\r\n            if (retrieveFieldsOptionValue) {\r\n                (0, _iterator.each)(fieldsDictionary, function(_, field) {\r\n                    result.push(field)\r\n                })\r\n            }\r\n        } else {\r\n            result = fields\r\n        }\r\n        result.push.apply(result, mergedGroups);\r\n        assignGroupIndexes(result);\r\n        return result\r\n    }\r\n\r\n    function assignGroupIndexes(fields) {\r\n        fields.forEach(function(field) {\r\n            if (field.groupName && field.groupInterval && void 0 === field.groupIndex) {\r\n                var maxGroupIndex = fields.filter(function(f) {\r\n                    return f.groupName === field.groupName && (0, _type.isNumeric)(f.groupIndex)\r\n                }).map(function(f) {\r\n                    return f.groupIndex\r\n                }).reduce(function(prev, current) {\r\n                    return Math.max(prev, current)\r\n                }, -1);\r\n                field.groupIndex = maxGroupIndex + 1\r\n            }\r\n        })\r\n    }\r\n\r\n    function getFields(that) {\r\n        var result = new _deferred.Deferred;\r\n        var store = that._store;\r\n        var storeFields = store && store.getFields(that._fields);\r\n        var mergedFields;\r\n        (0, _deferred.when)(storeFields).done(function(storeFields) {\r\n            that._storeFields = storeFields;\r\n            mergedFields = mergeFields(that._fields, storeFields, that._retrieveFields);\r\n            result.resolve(mergedFields)\r\n        }).fail(result.reject);\r\n        return result\r\n    }\r\n\r\n    function formatHeaderItems(data, loadOptions, headerName) {\r\n        return (0, _uiPivot_grid2.foreachTreeAsync)(data[headerName], function(items) {\r\n            var item = items[0];\r\n            item.text = item.text || (0, _uiPivot_grid2.formatValue)(item.value, loadOptions[headerName][(0, _uiPivot_grid2.createPath)(items).length - 1])\r\n        })\r\n    }\r\n\r\n    function formatHeaders(loadOptions, data) {\r\n        return (0, _deferred.when)(formatHeaderItems(data, loadOptions, \"columns\"), formatHeaderItems(data, loadOptions, \"rows\"))\r\n    }\r\n\r\n    function updateCache(headerItems) {\r\n        var d = new _deferred.Deferred;\r\n        var cacheByPath = {};\r\n        (0, _deferred.when)((0, _uiPivot_grid2.foreachTreeAsync)(headerItems, function(items) {\r\n            var path = (0, _uiPivot_grid2.createPath)(items).join(\".\");\r\n            cacheByPath[path] = items[0]\r\n        })).done(d.resolve);\r\n        headerItems._cacheByPath = cacheByPath;\r\n        return d\r\n    }\r\n\r\n    function _getAreaFields(fields, area) {\r\n        var areaFields = [];\r\n        (0, _iterator.each)(fields, function() {\r\n            if (isAreaField(this, area)) {\r\n                areaFields.push(this)\r\n            }\r\n        });\r\n        return areaFields\r\n    }\r\n    return {\r\n        ctor: function(options) {\r\n            options = options || {};\r\n            this._eventsStrategy = new _events_strategy.EventsStrategy(this);\r\n            var that = this;\r\n            var store = createStore(options, function(progress) {\r\n                that._eventsStrategy.fireEvent(\"progressChanged\", [progress])\r\n            });\r\n            that._store = store;\r\n            that._paginate = !!options.paginate;\r\n            that._pageSize = options.pageSize || 40;\r\n            that._data = {\r\n                rows: [],\r\n                columns: [],\r\n                values: []\r\n            };\r\n            that._loadingCount = 0;\r\n            that._isFieldsModified = false;\r\n            (0, _iterator.each)([\"changed\", \"loadError\", \"loadingChanged\", \"progressChanged\", \"fieldsPrepared\", \"expandValueChanging\"], function(_, eventName) {\r\n                var optionName = \"on\" + eventName[0].toUpperCase() + eventName.slice(1);\r\n                if (Object.prototype.hasOwnProperty.call(options, optionName)) {\r\n                    this.on(eventName, options[optionName])\r\n                }\r\n            }.bind(this));\r\n            that._retrieveFields = (0, _type.isDefined)(options.retrieveFields) ? options.retrieveFields : true;\r\n            that._fields = options.fields || [];\r\n            that._descriptions = options.descriptions ? (0, _extend.extend)(that._createDescriptions(), options.descriptions) : void 0;\r\n            if (!store) {\r\n                (0, _extend.extend)(true, that._data, options.store || options)\r\n            }\r\n        },\r\n        getData: function() {\r\n            return this._data\r\n        },\r\n        getAreaFields: function(area, collectGroups) {\r\n            var areaFields = [];\r\n            var descriptions;\r\n            if (collectGroups || \"data\" === area) {\r\n                areaFields = _getAreaFields(this._fields, area);\r\n                sortFieldsByAreaIndex(areaFields)\r\n            } else {\r\n                descriptions = this._descriptions || {};\r\n                areaFields = descriptions[DESCRIPTION_NAME_BY_AREA[area]] || []\r\n            }\r\n            return areaFields\r\n        },\r\n        fields: function(_fields) {\r\n            var that = this;\r\n            if (_fields) {\r\n                that._fields = mergeFields(_fields, that._storeFields, that._retrieveFields);\r\n                that._fieldsPrepared(that._fields)\r\n            }\r\n            return that._fields\r\n        },\r\n        field: function field(id, options) {\r\n            var that = this;\r\n            var fields = that._fields;\r\n            var field = fields && fields[(0, _type.isNumeric)(id) ? id : (0, _uiPivot_grid2.findField)(fields, id)];\r\n            var levels;\r\n            if (field && options) {\r\n                (0, _iterator.each)(options, function(optionName, optionValue) {\r\n                    var isInitialization = (0, _array.inArray)(optionName, STATE_PROPERTIES) < 0;\r\n                    (0, _uiPivot_grid2.setFieldProperty)(field, optionName, optionValue, isInitialization);\r\n                    if (\"sortOrder\" === optionName) {\r\n                        levels = field.levels || [];\r\n                        for (var i = 0; i < levels.length; i++) {\r\n                            levels[i][optionName] = optionValue\r\n                        }\r\n                    }\r\n                });\r\n                updateCalculatedFieldProperties(field, CALCULATED_PROPERTIES);\r\n                that._descriptions = that._createDescriptions(field);\r\n                that._isFieldsModified = true;\r\n                that._eventsStrategy.fireEvent(\"fieldChanged\", [field])\r\n            }\r\n            return field\r\n        },\r\n        getFieldValues: function(index, applyFilters, options) {\r\n            var that = this;\r\n            var field = this._fields && this._fields[index];\r\n            var store = this.store();\r\n            var loadFields = [];\r\n            var loadOptions = {\r\n                columns: loadFields,\r\n                rows: [],\r\n                values: this.getAreaFields(\"data\"),\r\n                filters: applyFilters ? this._fields.filter(function(f) {\r\n                    return f !== field && f.area && f.filterValues && f.filterValues.length\r\n                }) : [],\r\n                skipValues: true\r\n            };\r\n            var searchValue;\r\n            var d = new _deferred.Deferred;\r\n            if (options) {\r\n                searchValue = options.searchValue;\r\n                loadOptions.columnSkip = options.skip;\r\n                loadOptions.columnTake = options.take\r\n            }\r\n            if (field && store) {\r\n                (0, _iterator.each)(field.levels || [field], function() {\r\n                    loadFields.push((0, _extend.extend)({}, this, {\r\n                        expanded: true,\r\n                        filterValues: null,\r\n                        sortOrder: \"asc\",\r\n                        sortBySummaryField: null,\r\n                        searchValue: searchValue\r\n                    }))\r\n                });\r\n                store.load(loadOptions).done(function(data) {\r\n                    if (loadOptions.columnSkip) {\r\n                        data.columns = data.columns.slice(loadOptions.columnSkip)\r\n                    }\r\n                    if (loadOptions.columnTake) {\r\n                        data.columns = data.columns.slice(0, loadOptions.columnTake)\r\n                    }\r\n                    formatHeaders(loadOptions, data);\r\n                    if (!loadOptions.columnTake) {\r\n                        that._sort(loadOptions, data)\r\n                    }\r\n                    d.resolve(data.columns)\r\n                }).fail(d)\r\n            } else {\r\n                d.reject()\r\n            }\r\n            return d\r\n        },\r\n        reload: function() {\r\n            return this.load({\r\n                reload: true\r\n            })\r\n        },\r\n        filter: function() {\r\n            var store = this._store;\r\n            return store.filter.apply(store, arguments)\r\n        },\r\n        load: function(options) {\r\n            var that = this;\r\n            var d = new _deferred.Deferred;\r\n            options = options || {};\r\n            that.beginLoading();\r\n            d.fail(function(e) {\r\n                that._eventsStrategy.fireEvent(\"loadError\", [e])\r\n            }).always(function() {\r\n                that.endLoading()\r\n            });\r\n\r\n            function loadTask() {\r\n                that._delayedLoadTask = void 0;\r\n                if (!that._descriptions) {\r\n                    (0, _deferred.when)(getFields(that)).done(function(fields) {\r\n                        that._fieldsPrepared(fields);\r\n                        that._loadCore(options, d)\r\n                    }).fail(d.reject).fail(that._loadErrorHandler)\r\n                } else {\r\n                    that._loadCore(options, d)\r\n                }\r\n            }\r\n            if (that.store()) {\r\n                that._delayedLoadTask = (0, _common.executeAsync)(loadTask)\r\n            } else {\r\n                loadTask()\r\n            }\r\n            return d\r\n        },\r\n        createDrillDownDataSource: function(params) {\r\n            return this._store.createDrillDownDataSource(this._descriptions, params)\r\n        },\r\n        _createDescriptions: function(currentField) {\r\n            var that = this;\r\n            var fields = that.fields();\r\n            var descriptions = {\r\n                rows: [],\r\n                columns: [],\r\n                values: [],\r\n                filters: []\r\n            };\r\n            (0, _iterator.each)([\"row\", \"column\", \"data\", \"filter\"], function(_, areaName) {\r\n                (0, _array.normalizeIndexes)(_getAreaFields(fields, areaName), \"areaIndex\", currentField)\r\n            });\r\n            (0, _iterator.each)(fields || [], function(_, field) {\r\n                var descriptionName = DESCRIPTION_NAME_BY_AREA[field.area];\r\n                var dimension = descriptions[descriptionName];\r\n                var groupName = field.groupName;\r\n                if (groupName && !(0, _type.isNumeric)(field.groupIndex)) {\r\n                    field.levels = getFieldsByGroup(fields, field)\r\n                }\r\n                if (!dimension || groupName && (0, _type.isNumeric)(field.groupIndex) || false === field.visible && \"data\" !== field.area && \"filter\" !== field.area) {\r\n                    return\r\n                }\r\n                if (field.levels && dimension !== descriptions.filters && dimension !== descriptions.values) {\r\n                    dimension.push.apply(dimension, field.levels);\r\n                    if (field.filterValues && field.filterValues.length) {\r\n                        descriptions.filters.push(field)\r\n                    }\r\n                } else {\r\n                    dimension.push(field)\r\n                }\r\n            });\r\n            (0, _iterator.each)(descriptions, function(_, fields) {\r\n                sortFieldsByAreaIndex(fields)\r\n            });\r\n            var indices = {};\r\n            (0, _iterator.each)(descriptions.values, function(_, field) {\r\n                var expression = field.calculateSummaryValue;\r\n                if ((0, _type.isFunction)(expression)) {\r\n                    var summaryCell = (0, _uiPivot_grid.createMockSummaryCell)(descriptions, fields, indices);\r\n                    expression(summaryCell)\r\n                }\r\n            });\r\n            return descriptions\r\n        },\r\n        _fieldsPrepared: function(fields) {\r\n            var that = this;\r\n            that._fields = fields;\r\n            (0, _iterator.each)(fields, function(index, field) {\r\n                field.index = index;\r\n                updateCalculatedFieldProperties(field, ALL_CALCULATED_PROPERTIES)\r\n            });\r\n            var currentFieldState = getFieldsState(fields, [\"caption\"]);\r\n            that._eventsStrategy.fireEvent(\"fieldsPrepared\", [fields]);\r\n            for (var i = 0; i < fields.length; i++) {\r\n                if (fields[i].caption !== currentFieldState[i].caption) {\r\n                    (0, _uiPivot_grid2.setFieldProperty)(fields[i], \"caption\", fields[i].caption, true)\r\n                }\r\n            }\r\n            that._descriptions = that._createDescriptions()\r\n        },\r\n        isLoading: function() {\r\n            return this._loadingCount > 0\r\n        },\r\n        state: function(_state, skipLoading) {\r\n            var that = this;\r\n            if (arguments.length) {\r\n                _state = (0, _extend.extend)({\r\n                    rowExpandedPaths: [],\r\n                    columnExpandedPaths: []\r\n                }, _state);\r\n                if (!that._descriptions) {\r\n                    that.beginLoading();\r\n                    (0, _deferred.when)(getFields(that)).done(function(fields) {\r\n                        that._fields = setFieldsState(_state.fields, fields);\r\n                        that._fieldsPrepared(fields);\r\n                        !skipLoading && that.load(_state)\r\n                    }).always(function() {\r\n                        that.endLoading()\r\n                    })\r\n                } else {\r\n                    that._fields = setFieldsState(_state.fields, that._fields);\r\n                    that._descriptions = that._createDescriptions();\r\n                    !skipLoading && that.load(_state)\r\n                }\r\n            } else {\r\n                return {\r\n                    fields: getFieldsState(that._fields, STATE_PROPERTIES),\r\n                    columnExpandedPaths: getExpandedPaths(that._data, that._descriptions, \"columns\", that._lastLoadOptions),\r\n                    rowExpandedPaths: getExpandedPaths(that._data, that._descriptions, \"rows\", that._lastLoadOptions)\r\n                }\r\n            }\r\n        },\r\n        beginLoading: function() {\r\n            this._changeLoadingCount(1)\r\n        },\r\n        endLoading: function() {\r\n            this._changeLoadingCount(-1)\r\n        },\r\n        _changeLoadingCount: function(increment) {\r\n            var oldLoading = this.isLoading();\r\n            this._loadingCount += increment;\r\n            var newLoading = this.isLoading();\r\n            if (oldLoading ^ newLoading) {\r\n                this._eventsStrategy.fireEvent(\"loadingChanged\", [newLoading])\r\n            }\r\n        },\r\n        _hasPagingValues: function(options, area, oppositeIndex) {\r\n            var takeField = area + \"Take\";\r\n            var skipField = area + \"Skip\";\r\n            var values = this._data.values;\r\n            var items = this._data[area + \"s\"];\r\n            var oppositeArea = \"row\" === area ? \"column\" : \"row\";\r\n            var indices = [];\r\n            if (options.path && options.area === area) {\r\n                var headerItem = findHeaderItem(items, options.path);\r\n                items = headerItem && headerItem.children;\r\n                if (!items) {\r\n                    return false\r\n                }\r\n            }\r\n            if (options.oppositePath && options.area === oppositeArea) {\r\n                var _headerItem = findHeaderItem(items, options.oppositePath);\r\n                items = _headerItem && _headerItem.children;\r\n                if (!items) {\r\n                    return false\r\n                }\r\n            }\r\n            for (var i = options[skipField]; i < options[skipField] + options[takeField]; i++) {\r\n                if (items[i]) {\r\n                    indices.push(items[i].index)\r\n                }\r\n            }\r\n            return indices.every(function(index) {\r\n                if (void 0 !== index) {\r\n                    if (\"row\" === area) {\r\n                        return (values[index] || [])[oppositeIndex]\r\n                    } else {\r\n                        return (values[oppositeIndex] || [])[index]\r\n                    }\r\n                }\r\n            })\r\n        },\r\n        _processPagingCacheByArea: function(options, pageSize, area) {\r\n            var takeField = area + \"Take\";\r\n            var skipField = area + \"Skip\";\r\n            var items = this._data[area + \"s\"];\r\n            var oppositeArea = \"row\" === area ? \"column\" : \"row\";\r\n            var item;\r\n            if (options[takeField]) {\r\n                if (options.path && options.area === area) {\r\n                    var headerItem = findHeaderItem(items, options.path);\r\n                    items = headerItem && headerItem.children || []\r\n                }\r\n                if (options.oppositePath && options.area === oppositeArea) {\r\n                    var _headerItem2 = findHeaderItem(items, options.oppositePath);\r\n                    items = _headerItem2 && _headerItem2.children || []\r\n                }\r\n                do {\r\n                    item = items[options[skipField]];\r\n                    if (item && void 0 !== item.index) {\r\n                        if (this._hasPagingValues(options, oppositeArea, item.index)) {\r\n                            options[skipField]++;\r\n                            options[takeField]--\r\n                        } else {\r\n                            break\r\n                        }\r\n                    }\r\n                } while (item && void 0 !== item.index && options[takeField]);\r\n                if (options[takeField]) {\r\n                    var start = Math.floor(options[skipField] / pageSize) * pageSize;\r\n                    var end = Math.ceil((options[skipField] + options[takeField]) / pageSize) * pageSize;\r\n                    options[skipField] = start;\r\n                    options[takeField] = end - start\r\n                }\r\n            }\r\n        },\r\n        _processPagingCache: function(storeLoadOptions) {\r\n            var pageSize = this._pageSize;\r\n            if (pageSize < 0) {\r\n                return\r\n            }\r\n            for (var i = 0; i < storeLoadOptions.length; i++) {\r\n                this._processPagingCacheByArea(storeLoadOptions[i], pageSize, \"row\");\r\n                this._processPagingCacheByArea(storeLoadOptions[i], pageSize, \"column\")\r\n            }\r\n        },\r\n        _loadCore: function(options, deferred) {\r\n            var that = this;\r\n            var store = this._store;\r\n            var descriptions = this._descriptions;\r\n            var reload = options.reload || this.paginate() && that._isFieldsModified;\r\n            var paginate = this.paginate();\r\n            var headerName = DESCRIPTION_NAME_BY_AREA[options.area];\r\n            options = options || {};\r\n            if (store) {\r\n                (0, _extend.extend)(options, descriptions);\r\n                options.columnExpandedPaths = options.columnExpandedPaths || getExpandedPaths(this._data, options, \"columns\", that._lastLoadOptions);\r\n                options.rowExpandedPaths = options.rowExpandedPaths || getExpandedPaths(this._data, options, \"rows\", that._lastLoadOptions);\r\n                if (paginate) {\r\n                    options.pageSize = this._pageSize\r\n                }\r\n                if (headerName) {\r\n                    options.headerName = headerName\r\n                }\r\n                that.beginLoading();\r\n                deferred.always(function() {\r\n                    that.endLoading()\r\n                });\r\n                var storeLoadOptions = [options];\r\n                that._eventsStrategy.fireEvent(\"customizeStoreLoadOptions\", [storeLoadOptions, reload]);\r\n                if (!reload) {\r\n                    that._processPagingCache(storeLoadOptions)\r\n                }\r\n                storeLoadOptions = storeLoadOptions.filter(function(options) {\r\n                    return !(options.rows.length && 0 === options.rowTake) && !(options.columns.length && 0 === options.columnTake)\r\n                });\r\n                if (!storeLoadOptions.length) {\r\n                    that._update(deferred);\r\n                    return\r\n                }\r\n                var results = storeLoadOptions.map(function(options) {\r\n                    return store.load(options)\r\n                });\r\n                _deferred.when.apply(null, results).done(function() {\r\n                    var results = arguments;\r\n                    for (var i = 0; i < results.length; i++) {\r\n                        var _options = storeLoadOptions[i];\r\n                        var data = results[i];\r\n                        var isLast = i === results.length - 1;\r\n                        if (_options.path) {\r\n                            that.applyPartialDataSource(_options.area, _options.path, data, isLast ? deferred : false, _options.oppositePath)\r\n                        } else {\r\n                            if (paginate && !reload && isDataExists(that._data)) {\r\n                                that.mergePartialDataSource(data, isLast ? deferred : false)\r\n                            } else {\r\n                                (0, _extend.extend)(that._data, data);\r\n                                that._lastLoadOptions = _options;\r\n                                that._update(isLast ? deferred : false)\r\n                            }\r\n                        }\r\n                    }\r\n                }).fail(deferred.reject)\r\n            } else {\r\n                that._update(deferred)\r\n            }\r\n        },\r\n        _sort: function(descriptions, data, getAscOrder) {\r\n            var store = this._store;\r\n            if (store && !this._paginate) {\r\n                (0, _data_source.sort)(descriptions, data, getAscOrder)\r\n            }\r\n        },\r\n        paginate: function() {\r\n            return this._paginate && this._store && this._store.supportPaging()\r\n        },\r\n        isEmpty: function() {\r\n            var dataFields = this.getAreaFields(\"data\");\r\n            var data = this.getData();\r\n            return !dataFields.length || !data.values.length\r\n        },\r\n        _update: function(deferred) {\r\n            var that = this;\r\n            var descriptions = that._descriptions;\r\n            var loadedData = that._data;\r\n            var dataFields = descriptions.values;\r\n            var expressionsUsed = areExpressionsUsed(dataFields);\r\n            (0, _deferred.when)(formatHeaders(descriptions, loadedData), updateCache(loadedData.rows), updateCache(loadedData.columns)).done(function() {\r\n                if (expressionsUsed) {\r\n                    that._sort(descriptions, loadedData, expressionsUsed);\r\n                    !that.isEmpty() && (0, _uiPivot_grid.applyDisplaySummaryMode)(descriptions, loadedData)\r\n                }\r\n                that._sort(descriptions, loadedData);\r\n                !that.isEmpty() && isRunningTotalUsed(dataFields) && (0, _uiPivot_grid.applyRunningTotal)(descriptions, loadedData);\r\n                that._data = loadedData;\r\n                false !== deferred && (0, _deferred.when)(deferred).done(function() {\r\n                    that._isFieldsModified = false;\r\n                    that._eventsStrategy.fireEvent(\"changed\");\r\n                    if ((0, _type.isDefined)(that._data.grandTotalRowIndex)) {\r\n                        loadedData.grandTotalRowIndex = that._data.grandTotalRowIndex\r\n                    }\r\n                    if ((0, _type.isDefined)(that._data.grandTotalColumnIndex)) {\r\n                        loadedData.grandTotalColumnIndex = that._data.grandTotalColumnIndex\r\n                    }\r\n                });\r\n                deferred && deferred.resolve(that._data)\r\n            });\r\n            return deferred\r\n        },\r\n        store: function() {\r\n            return this._store\r\n        },\r\n        collapseHeaderItem: function(area, path) {\r\n            var that = this;\r\n            var headerItems = \"column\" === area ? that._data.columns : that._data.rows;\r\n            var headerItem = findHeaderItem(headerItems, path);\r\n            var field = that.getAreaFields(area)[path.length - 1];\r\n            if (headerItem && headerItem.children) {\r\n                that._eventsStrategy.fireEvent(\"expandValueChanging\", [{\r\n                    area: area,\r\n                    path: path,\r\n                    expanded: false\r\n                }]);\r\n                if (field) {\r\n                    field.expanded = false\r\n                }\r\n                headerItem.collapsedChildren = headerItem.children;\r\n                delete headerItem.children;\r\n                that._update();\r\n                if (that.paginate()) {\r\n                    that.load()\r\n                }\r\n                return true\r\n            }\r\n            return false\r\n        },\r\n        collapseAll: function(id) {\r\n            var _this = this;\r\n            var dataChanged = false;\r\n            var field = this.field(id) || {};\r\n            var areaOffsets = [(0, _array.inArray)(field, this.getAreaFields(field.area))];\r\n            field.expanded = false;\r\n            if (field && field.levels) {\r\n                areaOffsets = [];\r\n                field.levels.forEach(function(f) {\r\n                    areaOffsets.push((0, _array.inArray)(f, _this.getAreaFields(field.area)));\r\n                    f.expanded = false\r\n                })\r\n            }(0, _uiPivot_grid2.foreachTree)(this._data[field.area + \"s\"], function(items) {\r\n                var item = items[0];\r\n                var path = (0, _uiPivot_grid2.createPath)(items);\r\n                if (item && item.children && areaOffsets.indexOf(path.length - 1) !== -1) {\r\n                    item.collapsedChildren = item.children;\r\n                    delete item.children;\r\n                    dataChanged = true\r\n                }\r\n            }, true);\r\n            dataChanged && this._update()\r\n        },\r\n        expandAll: function(id) {\r\n            var field = this.field(id);\r\n            if (field && field.area) {\r\n                field.expanded = true;\r\n                if (field && field.levels) {\r\n                    field.levels.forEach(function(f) {\r\n                        f.expanded = true\r\n                    })\r\n                }\r\n                this.load()\r\n            }\r\n        },\r\n        expandHeaderItem: function(area, path) {\r\n            var that = this;\r\n            var headerItems = \"column\" === area ? that._data.columns : that._data.rows;\r\n            var headerItem = findHeaderItem(headerItems, path);\r\n            if (headerItem && !headerItem.children) {\r\n                var hasCache = !!headerItem.collapsedChildren;\r\n                var options = {\r\n                    area: area,\r\n                    path: path,\r\n                    expanded: true,\r\n                    needExpandData: !hasCache\r\n                };\r\n                that._eventsStrategy.fireEvent(\"expandValueChanging\", [options]);\r\n                if (hasCache) {\r\n                    headerItem.children = headerItem.collapsedChildren;\r\n                    delete headerItem.collapsedChildren;\r\n                    that._update()\r\n                } else {\r\n                    if (this.store()) {\r\n                        that.load(options)\r\n                    }\r\n                }\r\n                return hasCache\r\n            }\r\n            return false\r\n        },\r\n        mergePartialDataSource: function(dataSource, deferred) {\r\n            var that = this;\r\n            var loadedData = that._data;\r\n            var newRowItemIndexesToCurrent;\r\n            var newColumnItemIndexesToCurrent;\r\n            if (dataSource && dataSource.values) {\r\n                dataSource.rows = dataSource.rows || [];\r\n                dataSource.columns = dataSource.columns || [];\r\n                newRowItemIndexesToCurrent = updateHeaderItems(loadedData.rows, dataSource.rows, loadedData.grandTotalColumnIndex);\r\n                newColumnItemIndexesToCurrent = updateHeaderItems(loadedData.columns, dataSource.columns, loadedData.grandTotalColumnIndex);\r\n                (0, _deferred.when)(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent).done(function(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) {\r\n                    if (newRowItemIndexesToCurrent.length || newColumnItemIndexesToCurrent.length) {\r\n                        updateDataSourceCells(loadedData, dataSource.values, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent)\r\n                    }\r\n                    that._update(deferred)\r\n                })\r\n            }\r\n        },\r\n        applyPartialDataSource: function(area, path, dataSource, deferred, oppositePath) {\r\n            var that = this;\r\n            var loadedData = that._data;\r\n            var headerItems = \"column\" === area ? loadedData.columns : loadedData.rows;\r\n            var headerItem;\r\n            var oppositeHeaderItems = \"column\" === area ? loadedData.rows : loadedData.columns;\r\n            var oppositeHeaderItem;\r\n            var newRowItemIndexesToCurrent;\r\n            var newColumnItemIndexesToCurrent;\r\n            if (dataSource && dataSource.values) {\r\n                dataSource.rows = dataSource.rows || [];\r\n                dataSource.columns = dataSource.columns || [];\r\n                headerItem = findHeaderItem(headerItems, path);\r\n                oppositeHeaderItem = oppositePath && findHeaderItem(oppositeHeaderItems, oppositePath);\r\n                if (headerItem) {\r\n                    if (\"column\" === area) {\r\n                        newColumnItemIndexesToCurrent = updateHeaderItemChildren(headerItems, headerItem, dataSource.columns, loadedData.grandTotalColumnIndex);\r\n                        if (oppositeHeaderItem) {\r\n                            newRowItemIndexesToCurrent = updateHeaderItemChildren(oppositeHeaderItems, oppositeHeaderItem, dataSource.rows, loadedData.grandTotalRowIndex)\r\n                        } else {\r\n                            newRowItemIndexesToCurrent = updateHeaderItems(loadedData.rows, dataSource.rows, loadedData.grandTotalRowIndex)\r\n                        }\r\n                    } else {\r\n                        newRowItemIndexesToCurrent = updateHeaderItemChildren(headerItems, headerItem, dataSource.rows, loadedData.grandTotalRowIndex);\r\n                        if (oppositeHeaderItem) {\r\n                            newColumnItemIndexesToCurrent = updateHeaderItemChildren(oppositeHeaderItems, oppositeHeaderItem, dataSource.columns, loadedData.grandTotalColumnIndex)\r\n                        } else {\r\n                            newColumnItemIndexesToCurrent = updateHeaderItems(loadedData.columns, dataSource.columns, loadedData.grandTotalColumnIndex)\r\n                        }\r\n                    }(0, _deferred.when)(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent).done(function(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) {\r\n                        if (\"row\" === area && newRowItemIndexesToCurrent.length || \"column\" === area && newColumnItemIndexesToCurrent.length) {\r\n                            updateDataSourceCells(loadedData, dataSource.values, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent)\r\n                        }\r\n                        that._update(deferred)\r\n                    })\r\n                }\r\n            }\r\n        },\r\n        on: function(eventName, eventHandler) {\r\n            this._eventsStrategy.on(eventName, eventHandler);\r\n            return this\r\n        },\r\n        off: function(eventName, eventHandler) {\r\n            this._eventsStrategy.off(eventName, eventHandler);\r\n            return this\r\n        },\r\n        dispose: function() {\r\n            var that = this;\r\n            var delayedLoadTask = that._delayedLoadTask;\r\n            this._eventsStrategy.dispose();\r\n            if (delayedLoadTask) {\r\n                delayedLoadTask.abort()\r\n            }\r\n            this._isDisposed = true\r\n        },\r\n        isDisposed: function() {\r\n            return !!this._isDisposed\r\n        }\r\n    }\r\n}());\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (data/array_query.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _data = require(\"../core/utils/data\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar Iterator = _class.default.inherit({\r\n    toArray: function() {\r\n        var result = [];\r\n        this.reset();\r\n        while (this.next()) {\r\n            result.push(this.current())\r\n        }\r\n        return result\r\n    },\r\n    countable: function() {\r\n        return false\r\n    }\r\n});\r\nvar ArrayIterator = Iterator.inherit({\r\n    ctor: function(array) {\r\n        this.array = array;\r\n        this.index = -1\r\n    },\r\n    next: function() {\r\n        if (this.index + 1 < this.array.length) {\r\n            this.index++;\r\n            return true\r\n        }\r\n        return false\r\n    },\r\n    current: function() {\r\n        return this.array[this.index]\r\n    },\r\n    reset: function() {\r\n        this.index = -1\r\n    },\r\n    toArray: function() {\r\n        return this.array.slice(0)\r\n    },\r\n    countable: function() {\r\n        return true\r\n    },\r\n    count: function() {\r\n        return this.array.length\r\n    }\r\n});\r\nvar WrappedIterator = Iterator.inherit({\r\n    ctor: function(iter) {\r\n        this.iter = iter\r\n    },\r\n    next: function() {\r\n        return this.iter.next()\r\n    },\r\n    current: function() {\r\n        return this.iter.current()\r\n    },\r\n    reset: function() {\r\n        return this.iter.reset()\r\n    }\r\n});\r\nvar MapIterator = WrappedIterator.inherit({\r\n    ctor: function(iter, mapper) {\r\n        this.callBase(iter);\r\n        this.index = -1;\r\n        this.mapper = mapper\r\n    },\r\n    current: function() {\r\n        return this.mapper(this.callBase(), this.index)\r\n    },\r\n    next: function() {\r\n        var hasNext = this.callBase();\r\n        if (hasNext) {\r\n            this.index++\r\n        }\r\n        return hasNext\r\n    }\r\n});\r\nvar defaultCompare = function(xValue, yValue) {\r\n    xValue = (0, _data.toComparable)(xValue);\r\n    yValue = (0, _data.toComparable)(yValue);\r\n    if (null === xValue && null !== yValue) {\r\n        return -1\r\n    }\r\n    if (null !== xValue && null === yValue) {\r\n        return 1\r\n    }\r\n    if (void 0 === xValue && void 0 !== yValue) {\r\n        return 1\r\n    }\r\n    if (void 0 !== xValue && void 0 === yValue) {\r\n        return -1\r\n    }\r\n    if (xValue < yValue) {\r\n        return -1\r\n    }\r\n    if (xValue > yValue) {\r\n        return 1\r\n    }\r\n    return 0\r\n};\r\nvar SortIterator = Iterator.inherit({\r\n    ctor: function(iter, getter, desc, compare) {\r\n        if (!(iter instanceof MapIterator)) {\r\n            iter = new MapIterator(iter, this._wrap)\r\n        }\r\n        this.iter = iter;\r\n        this.rules = [{\r\n            getter: getter,\r\n            desc: desc,\r\n            compare: compare\r\n        }]\r\n    },\r\n    thenBy: function(getter, desc, compare) {\r\n        var result = new SortIterator(this.sortedIter || this.iter, getter, desc, compare);\r\n        if (!this.sortedIter) {\r\n            result.rules = this.rules.concat(result.rules)\r\n        }\r\n        return result\r\n    },\r\n    next: function() {\r\n        this._ensureSorted();\r\n        return this.sortedIter.next()\r\n    },\r\n    current: function() {\r\n        this._ensureSorted();\r\n        return this.sortedIter.current()\r\n    },\r\n    reset: function() {\r\n        delete this.sortedIter\r\n    },\r\n    countable: function() {\r\n        return this.sortedIter || this.iter.countable()\r\n    },\r\n    count: function() {\r\n        if (this.sortedIter) {\r\n            return this.sortedIter.count()\r\n        }\r\n        return this.iter.count()\r\n    },\r\n    _ensureSorted: function() {\r\n        var that = this;\r\n        if (that.sortedIter) {\r\n            return\r\n        }(0, _iterator.each)(that.rules, function() {\r\n            this.getter = (0, _data.compileGetter)(this.getter)\r\n        });\r\n        that.sortedIter = new MapIterator(new ArrayIterator(this.iter.toArray().sort(function(x, y) {\r\n            return that._compare(x, y)\r\n        })), that._unwrap)\r\n    },\r\n    _wrap: function(record, index) {\r\n        return {\r\n            index: index,\r\n            value: record\r\n        }\r\n    },\r\n    _unwrap: function(wrappedItem) {\r\n        return wrappedItem.value\r\n    },\r\n    _compare: function(x, y) {\r\n        var xIndex = x.index;\r\n        var yIndex = y.index;\r\n        x = x.value;\r\n        y = y.value;\r\n        if (x === y) {\r\n            return xIndex - yIndex\r\n        }\r\n        for (var i = 0, rulesCount = this.rules.length; i < rulesCount; i++) {\r\n            var rule = this.rules[i];\r\n            var xValue = rule.getter(x);\r\n            var yValue = rule.getter(y);\r\n            var compare = rule.compare || defaultCompare;\r\n            var compareResult = compare(xValue, yValue);\r\n            if (compareResult) {\r\n                return rule.desc ? -compareResult : compareResult\r\n            }\r\n        }\r\n        return xIndex - yIndex\r\n    }\r\n});\r\nvar compileCriteria = function() {\r\n    var compileGroup = function(crit) {\r\n        var ops = [];\r\n        var isConjunctiveOperator = false;\r\n        var isConjunctiveNextOperator = false;\r\n        (0, _iterator.each)(crit, function() {\r\n            if (Array.isArray(this) || (0, _type.isFunction)(this)) {\r\n                if (ops.length > 1 && isConjunctiveOperator !== isConjunctiveNextOperator) {\r\n                    throw new _errors.default.errors.Error(\"E4019\")\r\n                }\r\n                ops.push(compileCriteria(this));\r\n                isConjunctiveOperator = isConjunctiveNextOperator;\r\n                isConjunctiveNextOperator = true\r\n            } else {\r\n                isConjunctiveNextOperator = _utils.default.isConjunctiveOperator(this)\r\n            }\r\n        });\r\n        return function(d) {\r\n            var result = isConjunctiveOperator;\r\n            for (var i = 0; i < ops.length; i++) {\r\n                if (ops[i](d) !== isConjunctiveOperator) {\r\n                    result = !isConjunctiveOperator;\r\n                    break\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    };\r\n    var toString = function(value) {\r\n        return (0, _type.isDefined)(value) ? value.toString() : \"\"\r\n    };\r\n    var compileBinary = function(crit) {\r\n        crit = _utils.default.normalizeBinaryCriterion(crit);\r\n        var getter = (0, _data.compileGetter)(crit[0]);\r\n        var op = crit[1];\r\n        var value = crit[2];\r\n        value = (0, _data.toComparable)(value);\r\n        switch (op.toLowerCase()) {\r\n            case \"=\":\r\n                return compileEquals(getter, value);\r\n            case \"<>\":\r\n                return compileEquals(getter, value, true);\r\n            case \">\":\r\n                return function(obj) {\r\n                    return (0, _data.toComparable)(getter(obj)) > value\r\n                };\r\n            case \"<\":\r\n                return function(obj) {\r\n                    return (0, _data.toComparable)(getter(obj)) < value\r\n                };\r\n            case \">=\":\r\n                return function(obj) {\r\n                    return (0, _data.toComparable)(getter(obj)) >= value\r\n                };\r\n            case \"<=\":\r\n                return function(obj) {\r\n                    return (0, _data.toComparable)(getter(obj)) <= value\r\n                };\r\n            case \"startswith\":\r\n                return function(obj) {\r\n                    return 0 === (0, _data.toComparable)(toString(getter(obj))).indexOf(value)\r\n                };\r\n            case \"endswith\":\r\n                return function(obj) {\r\n                    var getterValue = (0, _data.toComparable)(toString(getter(obj)));\r\n                    var searchValue = toString(value);\r\n                    if (getterValue.length < searchValue.length) {\r\n                        return false\r\n                    }\r\n                    return getterValue.lastIndexOf(value) === getterValue.length - value.length\r\n                };\r\n            case \"contains\":\r\n                return function(obj) {\r\n                    return (0, _data.toComparable)(toString(getter(obj))).indexOf(value) > -1\r\n                };\r\n            case \"notcontains\":\r\n                return function(obj) {\r\n                    return (0, _data.toComparable)(toString(getter(obj))).indexOf(value) === -1\r\n                }\r\n        }\r\n        throw _errors.default.errors.Error(\"E4003\", op)\r\n    };\r\n\r\n    function compileEquals(getter, value, negate) {\r\n        return function(obj) {\r\n            obj = (0, _data.toComparable)(getter(obj));\r\n            var result = useStrictComparison(value) ? obj === value : obj == value;\r\n            if (negate) {\r\n                result = !result\r\n            }\r\n            return result\r\n        }\r\n    }\r\n\r\n    function useStrictComparison(value) {\r\n        return \"\" === value || 0 === value || false === value\r\n    }\r\n\r\n    function compileUnary(crit) {\r\n        var op = crit[0];\r\n        var criteria = compileCriteria(crit[1]);\r\n        if (\"!\" === op) {\r\n            return function(obj) {\r\n                return !criteria(obj)\r\n            }\r\n        }\r\n        throw _errors.default.errors.Error(\"E4003\", op)\r\n    }\r\n    return function(crit) {\r\n        if ((0, _type.isFunction)(crit)) {\r\n            return crit\r\n        }\r\n        if (_utils.default.isGroupCriterion(crit)) {\r\n            return compileGroup(crit)\r\n        }\r\n        if (_utils.default.isUnaryOperation(crit)) {\r\n            return compileUnary(crit)\r\n        }\r\n        return compileBinary(crit)\r\n    }\r\n}();\r\nvar FilterIterator = WrappedIterator.inherit({\r\n    ctor: function(iter, criteria) {\r\n        this.callBase(iter);\r\n        this.criteria = compileCriteria(criteria)\r\n    },\r\n    next: function() {\r\n        while (this.iter.next()) {\r\n            if (this.criteria(this.current())) {\r\n                return true\r\n            }\r\n        }\r\n        return false\r\n    }\r\n});\r\nvar GroupIterator = Iterator.inherit({\r\n    ctor: function(iter, getter) {\r\n        this.iter = iter;\r\n        this.getter = getter\r\n    },\r\n    next: function() {\r\n        this._ensureGrouped();\r\n        return this.groupedIter.next()\r\n    },\r\n    current: function() {\r\n        this._ensureGrouped();\r\n        return this.groupedIter.current()\r\n    },\r\n    reset: function() {\r\n        delete this.groupedIter\r\n    },\r\n    countable: function() {\r\n        return !!this.groupedIter\r\n    },\r\n    count: function() {\r\n        return this.groupedIter.count()\r\n    },\r\n    _ensureGrouped: function() {\r\n        if (this.groupedIter) {\r\n            return\r\n        }\r\n        var hash = {};\r\n        var keys = [];\r\n        var iter = this.iter;\r\n        var getter = (0, _data.compileGetter)(this.getter);\r\n        iter.reset();\r\n        while (iter.next()) {\r\n            var current = iter.current();\r\n            var key = getter(current);\r\n            if (key in hash) {\r\n                hash[key].push(current)\r\n            } else {\r\n                hash[key] = [current];\r\n                keys.push(key)\r\n            }\r\n        }\r\n        this.groupedIter = new ArrayIterator((0, _iterator.map)(keys, function(key) {\r\n            return {\r\n                key: key,\r\n                items: hash[key]\r\n            }\r\n        }))\r\n    }\r\n});\r\nvar SelectIterator = WrappedIterator.inherit({\r\n    ctor: function(iter, getter) {\r\n        this.callBase(iter);\r\n        this.getter = (0, _data.compileGetter)(getter)\r\n    },\r\n    current: function() {\r\n        return this.getter(this.callBase())\r\n    },\r\n    countable: function() {\r\n        return this.iter.countable()\r\n    },\r\n    count: function() {\r\n        return this.iter.count()\r\n    }\r\n});\r\nvar SliceIterator = WrappedIterator.inherit({\r\n    ctor: function(iter, skip, take) {\r\n        this.callBase(iter);\r\n        this.skip = Math.max(0, skip);\r\n        this.take = Math.max(0, take);\r\n        this.pos = 0\r\n    },\r\n    next: function() {\r\n        if (this.pos >= this.skip + this.take) {\r\n            return false\r\n        }\r\n        while (this.pos < this.skip && this.iter.next()) {\r\n            this.pos++\r\n        }\r\n        this.pos++;\r\n        return this.iter.next()\r\n    },\r\n    reset: function() {\r\n        this.callBase();\r\n        this.pos = 0\r\n    },\r\n    countable: function() {\r\n        return this.iter.countable()\r\n    },\r\n    count: function() {\r\n        return Math.min(this.iter.count() - this.skip, this.take)\r\n    }\r\n});\r\nvar arrayQueryImpl = function arrayQueryImpl(iter, queryOptions) {\r\n    queryOptions = queryOptions || {};\r\n    if (!(iter instanceof Iterator)) {\r\n        iter = new ArrayIterator(iter)\r\n    }\r\n    var handleError = function(error) {\r\n        var handler = queryOptions.errorHandler;\r\n        if (handler) {\r\n            handler(error)\r\n        }\r\n        _errors.default._errorHandler(error)\r\n    };\r\n    var aggregateCore = function(aggregator) {\r\n        var d = (new _deferred.Deferred).fail(handleError);\r\n        var seed;\r\n        var step = aggregator.step;\r\n        var finalize = aggregator.finalize;\r\n        try {\r\n            iter.reset();\r\n            if (\"seed\" in aggregator) {\r\n                seed = aggregator.seed\r\n            } else {\r\n                seed = iter.next() ? iter.current() : NaN\r\n            }\r\n            var accumulator = seed;\r\n            while (iter.next()) {\r\n                accumulator = step(accumulator, iter.current())\r\n            }\r\n            d.resolve(finalize ? finalize(accumulator) : accumulator)\r\n        } catch (x) {\r\n            d.reject(x)\r\n        }\r\n        return d.promise()\r\n    };\r\n    var aggregate = function(seed, step, finalize) {\r\n        if (arguments.length < 2) {\r\n            return aggregateCore({\r\n                step: arguments[0]\r\n            })\r\n        }\r\n        return aggregateCore({\r\n            seed: seed,\r\n            step: step,\r\n            finalize: finalize\r\n        })\r\n    };\r\n    var standardAggregate = function(name) {\r\n        return aggregateCore(_utils.default.aggregators[name])\r\n    };\r\n    var select = function(getter) {\r\n        if (!(0, _type.isFunction)(getter) && !Array.isArray(getter)) {\r\n            getter = [].slice.call(arguments)\r\n        }\r\n        return chainQuery(new SelectIterator(iter, getter))\r\n    };\r\n    var selectProp = function(name) {\r\n        return select((0, _data.compileGetter)(name))\r\n    };\r\n\r\n    function chainQuery(iter) {\r\n        return arrayQueryImpl(iter, queryOptions)\r\n    }\r\n    return {\r\n        toArray: function() {\r\n            return iter.toArray()\r\n        },\r\n        enumerate: function() {\r\n            var d = (new _deferred.Deferred).fail(handleError);\r\n            try {\r\n                d.resolve(iter.toArray())\r\n            } catch (x) {\r\n                d.reject(x)\r\n            }\r\n            return d.promise()\r\n        },\r\n        sortBy: function(getter, desc, compare) {\r\n            return chainQuery(new SortIterator(iter, getter, desc, compare))\r\n        },\r\n        thenBy: function(getter, desc, compare) {\r\n            if (iter instanceof SortIterator) {\r\n                return chainQuery(iter.thenBy(getter, desc, compare))\r\n            }\r\n            throw _errors.default.errors.Error(\"E4004\")\r\n        },\r\n        filter: function(criteria) {\r\n            if (!Array.isArray(criteria)) {\r\n                criteria = [].slice.call(arguments)\r\n            }\r\n            return chainQuery(new FilterIterator(iter, criteria))\r\n        },\r\n        slice: function(skip, take) {\r\n            if (void 0 === take) {\r\n                take = Number.MAX_VALUE\r\n            }\r\n            return chainQuery(new SliceIterator(iter, skip, take))\r\n        },\r\n        select: select,\r\n        groupBy: function(getter) {\r\n            return chainQuery(new GroupIterator(iter, getter))\r\n        },\r\n        aggregate: aggregate,\r\n        count: function() {\r\n            if (iter.countable()) {\r\n                var d = (new _deferred.Deferred).fail(handleError);\r\n                try {\r\n                    d.resolve(iter.count())\r\n                } catch (x) {\r\n                    d.reject(x)\r\n                }\r\n                return d.promise()\r\n            }\r\n            return standardAggregate(\"count\")\r\n        },\r\n        sum: function(getter) {\r\n            if (getter) {\r\n                return selectProp(getter).sum()\r\n            }\r\n            return standardAggregate(\"sum\")\r\n        },\r\n        min: function(getter) {\r\n            if (getter) {\r\n                return selectProp(getter).min()\r\n            }\r\n            return standardAggregate(\"min\")\r\n        },\r\n        max: function(getter) {\r\n            if (getter) {\r\n                return selectProp(getter).max()\r\n            }\r\n            return standardAggregate(\"max\")\r\n        },\r\n        avg: function(getter) {\r\n            if (getter) {\r\n                return selectProp(getter).avg()\r\n            }\r\n            return standardAggregate(\"avg\")\r\n        }\r\n    }\r\n};\r\nvar _default = arrayQueryImpl;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/drop_down_menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _button = _interopRequireDefault(require(\"./button\"));\r\nvar _popover = _interopRequireDefault(require(\"./popover\"));\r\nvar _data_helper = _interopRequireDefault(require(\"../data_helper\"));\r\nvar _list = _interopRequireDefault(require(\"./list\"));\r\nvar _themes = require(\"./themes\");\r\nvar _child_default_template = require(\"../core/templates/child_default_template\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DROP_DOWN_MENU_CLASS = \"dx-dropdownmenu\";\r\nvar DROP_DOWN_MENU_POPUP_CLASS = \"dx-dropdownmenu-popup\";\r\nvar DROP_DOWN_MENU_POPUP_WRAPPER_CLASS = \"dx-dropdownmenu-popup-wrapper\";\r\nvar DROP_DOWN_MENU_LIST_CLASS = \"dx-dropdownmenu-list\";\r\nvar DROP_DOWN_MENU_BUTTON_CLASS = \"dx-dropdownmenu-button\";\r\nvar POPUP_OPTION_MAP = {\r\n    popupWidth: \"width\",\r\n    popupHeight: \"height\",\r\n    popupMaxHeight: \"maxHeight\",\r\n    popupAutoResizeEnabled: \"autoResizeEnabled\"\r\n};\r\nvar BUTTON_OPTION_MAP = {\r\n    buttonIcon: \"icon\",\r\n    buttonText: \"text\",\r\n    buttonWidth: \"width\",\r\n    buttonHeight: \"height\",\r\n    buttonTemplate: \"template\"\r\n};\r\nvar DropDownMenu = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        var extension = {};\r\n        if (!this.option(\"opened\") || !this._list.option(\"focusedElement\")) {\r\n            extension = this._button._supportedKeys()\r\n        }\r\n        return (0, _extend.extend)(this.callBase(), extension, {\r\n            tab: function() {\r\n                this._popup && this._popup.hide()\r\n            }\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            items: [],\r\n            onItemClick: null,\r\n            dataSource: null,\r\n            itemTemplate: \"item\",\r\n            buttonText: \"\",\r\n            buttonIcon: \"overflow\",\r\n            buttonWidth: void 0,\r\n            buttonHeight: void 0,\r\n            buttonTemplate: \"content\",\r\n            onButtonClick: null,\r\n            usePopover: false,\r\n            popupWidth: \"auto\",\r\n            popupHeight: \"auto\",\r\n            activeStateEnabled: true,\r\n            hoverStateEnabled: true,\r\n            opened: false,\r\n            selectionMode: \"none\",\r\n            selectedItemKeys: [],\r\n            deferRendering: false,\r\n            popupPosition: {\r\n                my: \"top center\",\r\n                at: \"bottom center\",\r\n                collision: \"fit flip\",\r\n                offset: {\r\n                    v: 1\r\n                }\r\n            },\r\n            popupAnimation: void 0,\r\n            onItemRendered: null,\r\n            menuWidget: _list.default,\r\n            popupMaxHeight: void 0,\r\n            closeOnClick: true,\r\n            useInkRipple: false,\r\n            container: void 0,\r\n            popupAutoResizeEnabled: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"ios\"\r\n            },\r\n            options: {\r\n                usePopover: true\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"generic\"\r\n            },\r\n            options: {\r\n                popupPosition: {\r\n                    offset: {\r\n                        v: 4\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"android\"\r\n            },\r\n            options: {\r\n                popupPosition: {\r\n                    my: \"top \" + (this.option(\"rtlEnabled\") ? \"left\" : \"right\"),\r\n                    at: \"top \" + (this.option(\"rtlEnabled\") ? \"left\" : \"right\"),\r\n                    collision: \"flipfit\"\r\n                },\r\n                popupAnimation: {\r\n                    show: {\r\n                        type: \"pop\",\r\n                        duration: 200,\r\n                        from: {\r\n                            scale: 0\r\n                        },\r\n                        to: {\r\n                            scale: 1\r\n                        }\r\n                    },\r\n                    hide: {\r\n                        type: \"pop\",\r\n                        duration: 200,\r\n                        from: {\r\n                            scale: 1\r\n                        },\r\n                        to: {\r\n                            scale: 0\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                useInkRipple: true\r\n            }\r\n        }])\r\n    },\r\n    _initOptions: function(options) {\r\n        if (\"android\" === _devices.default.current().platform) {\r\n            if (!options.popupPosition) {\r\n                options.popupPosition = {\r\n                    at: (options.usePopover ? \"bottom \" : \"top \") + (options.rtlEnabled ? \"left\" : \"right\")\r\n                }\r\n            }\r\n        }\r\n        this.callBase(options)\r\n    },\r\n    _dataSourceOptions: function() {\r\n        return {\r\n            paginate: false\r\n        }\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(DROP_DOWN_MENU_CLASS);\r\n        this._initDataSource();\r\n        this._initItemClickAction();\r\n        this._initButtonClickAction()\r\n    },\r\n    _initItemClickAction: function() {\r\n        this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n    },\r\n    _initButtonClickAction: function() {\r\n        this._buttonClickAction = this._createActionByOption(\"onButtonClick\")\r\n    },\r\n    _initTemplates: function() {\r\n        this._templateManager.addDefaultTemplates({\r\n            content: new _child_default_template.ChildDefaultTemplate(\"content\")\r\n        });\r\n        this.callBase()\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderButton();\r\n        this.callBase()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.setAria({\r\n            role: \"menubar\",\r\n            haspopup: true,\r\n            expanded: this.option(\"opened\")\r\n        })\r\n    },\r\n    _renderContentImpl: function() {\r\n        if (this.option(\"opened\")) {\r\n            this._renderPopup()\r\n        }\r\n    },\r\n    _clean: function() {\r\n        this._cleanFocusState();\r\n        if (this._popup) {\r\n            this._popup.$element().remove();\r\n            delete this._$popup\r\n        }\r\n    },\r\n    _renderButton: function() {\r\n        var $button = this.$element().addClass(DROP_DOWN_MENU_BUTTON_CLASS);\r\n        var config = this._buttonOptions();\r\n        this._button = this._createComponent($button, _button.default, config)\r\n    },\r\n    _toggleActiveState: function($element, value, e) {\r\n        this._button._toggleActiveState($element, value, e)\r\n    },\r\n    _buttonOptions: function() {\r\n        return {\r\n            text: this.option(\"buttonText\"),\r\n            icon: this.option(\"buttonIcon\"),\r\n            width: this.option(\"buttonWidth\"),\r\n            height: this.option(\"buttonHeight\"),\r\n            useInkRipple: this.option(\"useInkRipple\"),\r\n            template: this.option(\"buttonTemplate\"),\r\n            focusStateEnabled: false,\r\n            onClick: function(e) {\r\n                this.option(\"opened\", !this.option(\"opened\"));\r\n                this._buttonClickAction(e)\r\n            }.bind(this)\r\n        }\r\n    },\r\n    _toggleMenuVisibility: function(opened) {\r\n        var state = void 0 === opened ? !this._popup.option(\"visible\") : opened;\r\n        if (opened) {\r\n            this._renderPopup()\r\n        }\r\n        this._popup.toggle(state);\r\n        this.setAria(\"expanded\", state)\r\n    },\r\n    _renderPopup: function() {\r\n        if (this._$popup) {\r\n            return\r\n        }\r\n        var $popup = this._$popup = (0, _renderer.default)(\"<div>\").appendTo(this.$element());\r\n        var config = this._popupOptions();\r\n        this._popup = this._createComponent($popup, _popover.default, config)\r\n    },\r\n    _popupOptions: function() {\r\n        var usePopup = !this.option(\"usePopover\");\r\n        return {\r\n            onInitialized: function(args) {\r\n                args.component._wrapper().addClass(DROP_DOWN_MENU_POPUP_WRAPPER_CLASS).toggleClass(DROP_DOWN_MENU_POPUP_CLASS, usePopup)\r\n            },\r\n            visible: this.option(\"opened\"),\r\n            deferRendering: false,\r\n            contentTemplate: function(contentElement) {\r\n                this._renderList(contentElement)\r\n            }.bind(this),\r\n            position: this.option(\"popupPosition\"),\r\n            animation: this.option(\"popupAnimation\"),\r\n            onOptionChanged: function(args) {\r\n                if (\"visible\" === args.name) {\r\n                    this.option(\"opened\", args.value)\r\n                }\r\n            }.bind(this),\r\n            target: this.$element(),\r\n            height: this.option(\"popupHeight\"),\r\n            width: this.option(\"popupWidth\"),\r\n            maxHeight: this.option(\"popupMaxHeight\"),\r\n            container: this.option(\"container\"),\r\n            autoResizeEnabled: this.option(\"popupAutoResizeEnabled\")\r\n        }\r\n    },\r\n    _renderList: function(contentElement) {\r\n        var $content = (0, _renderer.default)(contentElement);\r\n        var listConfig = this._listOptions();\r\n        $content.addClass(DROP_DOWN_MENU_LIST_CLASS);\r\n        this._list = this._createComponent($content, this.option(\"menuWidget\"), listConfig);\r\n        this._list._getAriaTarget = function() {\r\n            return this.$element()\r\n        }.bind(this);\r\n        this._setListDataSource();\r\n        var listMaxHeight = .5 * (0, _renderer.default)(window).height();\r\n        if ($content.height() > listMaxHeight) {\r\n            $content.height(listMaxHeight)\r\n        }\r\n    },\r\n    _listOptions: function() {\r\n        return {\r\n            pageLoadMode: \"scrollBottom\",\r\n            indicateLoading: false,\r\n            noDataText: \"\",\r\n            selectionMode: this.option(\"selectionMode\"),\r\n            selectedItemKeys: this.option(\"selectedItemKeys\"),\r\n            itemTemplate: this.option(\"itemTemplate\"),\r\n            onItemClick: function(e) {\r\n                if (this.option(\"closeOnClick\")) {\r\n                    this.option(\"opened\", false)\r\n                }\r\n                this._itemClickAction(e)\r\n            }.bind(this),\r\n            tabIndex: -1,\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n            onItemRendered: this.option(\"onItemRendered\"),\r\n            _itemAttributes: {\r\n                role: \"menuitem\"\r\n            }\r\n        }\r\n    },\r\n    _setListDataSource: function() {\r\n        if (this._list) {\r\n            this._list.option(\"dataSource\", this._dataSource || this.option(\"items\"))\r\n        }\r\n        delete this._deferRendering\r\n    },\r\n    _getKeyboardListeners: function() {\r\n        return this.callBase().concat([this._list])\r\n    },\r\n    _toggleVisibility: function(visible) {\r\n        this.callBase(visible);\r\n        this._button.option(\"visible\", visible)\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name;\r\n        var value = args.value;\r\n        switch (name) {\r\n            case \"items\":\r\n            case \"dataSource\":\r\n                if (this.option(\"deferRendering\") && !this.option(\"opened\")) {\r\n                    this._deferRendering = true\r\n                } else {\r\n                    this._refreshDataSource();\r\n                    this._setListDataSource()\r\n                }\r\n                break;\r\n            case \"itemTemplate\":\r\n                if (this._list) {\r\n                    this._list.option(name, this._getTemplate(value))\r\n                }\r\n                break;\r\n            case \"onItemClick\":\r\n                this._initItemClickAction();\r\n                break;\r\n            case \"onButtonClick\":\r\n                this._buttonClickAction();\r\n                break;\r\n            case \"buttonIcon\":\r\n            case \"buttonText\":\r\n            case \"buttonWidth\":\r\n            case \"buttonHeight\":\r\n            case \"buttonTemplate\":\r\n                this._button.option(BUTTON_OPTION_MAP[name], value);\r\n                this._renderPopup();\r\n                break;\r\n            case \"popupWidth\":\r\n            case \"popupHeight\":\r\n            case \"popupMaxHeight\":\r\n            case \"popupAutoResizeEnabled\":\r\n                this._popup.option(POPUP_OPTION_MAP[name], value);\r\n                break;\r\n            case \"usePopover\":\r\n            case \"menuWidget\":\r\n            case \"useInkRipple\":\r\n                this._invalidate();\r\n                break;\r\n            case \"focusStateEnabled\":\r\n            case \"activeStateEnabled\":\r\n                if (this._list) {\r\n                    this._list.option(name, value)\r\n                }\r\n                this.callBase(args);\r\n                break;\r\n            case \"selectionMode\":\r\n            case \"selectedItemKeys\":\r\n            case \"onItemRendered\":\r\n                if (this._list) {\r\n                    this._list.option(name, value)\r\n                }\r\n                break;\r\n            case \"opened\":\r\n                if (this._deferRendering) {\r\n                    this._refreshDataSource();\r\n                    this._setListDataSource()\r\n                }\r\n                this._toggleMenuVisibility(value);\r\n                break;\r\n            case \"deferRendering\":\r\n            case \"popupPosition\":\r\n            case \"closeOnClick\":\r\n                break;\r\n            case \"container\":\r\n                this._popup && this._popup.option(args.name, args.value);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    open: function() {\r\n        this.option(\"opened\", true)\r\n    },\r\n    close: function() {\r\n        this.option(\"opened\", false)\r\n    }\r\n}).include(_data_helper.default);\r\n(0, _component_registrator.default)(\"dxDropDownMenu\", DropDownMenu);\r\nvar _default = DropDownMenu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/validation/default_adapter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DefaultAdapter = _class.default.inherit({\r\n    ctor: function(editor, validator) {\r\n        var _this = this;\r\n        this.editor = editor;\r\n        this.validator = validator;\r\n        this.validationRequestsCallbacks = [];\r\n        var handler = function(args) {\r\n            _this.validationRequestsCallbacks.forEach(function(item) {\r\n                return item(args)\r\n            })\r\n        };\r\n        editor.validationRequest.add(handler);\r\n        editor.on(\"disposing\", function() {\r\n            editor.validationRequest.remove(handler)\r\n        })\r\n    },\r\n    getValue: function() {\r\n        return this.editor.option(\"value\")\r\n    },\r\n    getCurrentValidationError: function() {\r\n        return this.editor.option(\"validationError\")\r\n    },\r\n    bypass: function() {\r\n        return this.editor.option(\"disabled\")\r\n    },\r\n    applyValidationResults: function(params) {\r\n        this.editor.option({\r\n            validationErrors: params.brokenRules,\r\n            validationStatus: params.status\r\n        })\r\n    },\r\n    reset: function() {\r\n        this.editor.reset()\r\n    },\r\n    focus: function() {\r\n        this.editor.focus()\r\n    }\r\n});\r\nvar _default = DefaultAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/gauges/tracker.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar EVENT_NS = \"gauge-tooltip\";\r\nvar TOOLTIP_HIDE_DELAY = 100;\r\nvar ready = _ready_callbacks.default.add;\r\nvar Tracker = _class.default.inherit({\r\n    ctor: function(parameters) {\r\n        var that = this;\r\n        that._element = parameters.renderer.g().attr({\r\n            \"class\": \"dxg-tracker\",\r\n            stroke: \"none\",\r\n            \"stroke-width\": 0,\r\n            fill: \"#000000\",\r\n            opacity: 1e-4\r\n        }).linkOn(parameters.container, {\r\n            name: \"tracker\",\r\n            after: \"peripheral\"\r\n        });\r\n        that._showTooltipCallback = function() {\r\n            var target = that._tooltipEvent.target;\r\n            var data_target = target[\"gauge-data-target\"];\r\n            var data_info = target[\"gauge-data-info\"];\r\n            that._targetEvent = null;\r\n            if (that._tooltipTarget !== target) {\r\n                var callback = function(result) {\r\n                    result && (that._tooltipTarget = target)\r\n                };\r\n                callback(that._callbacks[\"tooltip-show\"](data_target, data_info, callback))\r\n            }\r\n        };\r\n        that._hideTooltipCallback = function() {\r\n            that._hideTooltipTimeout = null;\r\n            that._targetEvent = null;\r\n            if (that._tooltipTarget) {\r\n                that._callbacks[\"tooltip-hide\"]();\r\n                that._tooltipTarget = null\r\n            }\r\n        };\r\n        that._dispose = function() {\r\n            clearTimeout(that._hideTooltipTimeout);\r\n            that._showTooltipCallback = that._hideTooltipCallback = that._dispose = null\r\n        }\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        that._dispose();\r\n        that.deactivate();\r\n        that._element.off(\".\" + EVENT_NS);\r\n        that._element.linkOff();\r\n        that._element = that._context = that._callbacks = null;\r\n        return that\r\n    },\r\n    activate: function() {\r\n        this._element.linkAppend();\r\n        return this\r\n    },\r\n    deactivate: function() {\r\n        this._element.linkRemove().clear();\r\n        return this\r\n    },\r\n    attach: function(element, target, info) {\r\n        element.data({\r\n            \"gauge-data-target\": target,\r\n            \"gauge-data-info\": info\r\n        }).append(this._element);\r\n        return this\r\n    },\r\n    detach: function(element) {\r\n        element.remove();\r\n        return this\r\n    },\r\n    setTooltipState: function(state) {\r\n        var that = this;\r\n        that._element.off(\".\" + EVENT_NS);\r\n        if (state) {\r\n            var data = {\r\n                tracker: that\r\n            };\r\n            that._element.on((0, _index.addNamespace)([_pointer.default.move], EVENT_NS), data, handleTooltipMouseOver).on((0, _index.addNamespace)([_pointer.default.out], EVENT_NS), data, handleTooltipMouseOut).on((0, _index.addNamespace)([_pointer.default.down], EVENT_NS), data, handleTooltipTouchStart).on((0, _index.addNamespace)([_pointer.default.up], EVENT_NS), data, handleTooltipTouchEnd).on((0, _index.addNamespace)([_wheel.name], EVENT_NS), data, handleTooltipMouseWheel)\r\n        }\r\n        return that\r\n    },\r\n    setCallbacks: function(callbacks) {\r\n        this._callbacks = callbacks;\r\n        return this\r\n    },\r\n    _showTooltip: function(event) {\r\n        var that = this;\r\n        clearTimeout(that._hideTooltipTimeout);\r\n        that._hideTooltipTimeout = null;\r\n        if (that._tooltipTarget === event.target) {\r\n            return\r\n        }\r\n        that._tooltipEvent = event;\r\n        that._showTooltipCallback()\r\n    },\r\n    _hideTooltip: function(delay) {\r\n        var that = this;\r\n        clearTimeout(that._hideTooltipTimeout);\r\n        if (delay) {\r\n            that._hideTooltipTimeout = setTimeout(that._hideTooltipCallback, delay)\r\n        } else {\r\n            that._hideTooltipCallback()\r\n        }\r\n    }\r\n});\r\nvar active_touch_tooltip_tracker = null;\r\n\r\nfunction handleTooltipMouseOver(event) {\r\n    var tracker = event.data.tracker;\r\n    tracker._x = event.pageX;\r\n    tracker._y = event.pageY;\r\n    tracker._showTooltip(event)\r\n}\r\n\r\nfunction handleTooltipMouseOut(event) {\r\n    event.data.tracker._hideTooltip(TOOLTIP_HIDE_DELAY)\r\n}\r\n\r\nfunction handleTooltipMouseWheel(event) {\r\n    event.data.tracker._hideTooltip()\r\n}\r\n\r\nfunction handleTooltipTouchStart(event) {\r\n    var tracker = active_touch_tooltip_tracker = event.data.tracker;\r\n    tracker._touch = true;\r\n    handleTooltipMouseOver(event)\r\n}\r\n\r\nfunction handleTooltipTouchEnd() {\r\n    active_touch_tooltip_tracker._touch = false\r\n}\r\n\r\nfunction handleDocumentTooltipTouchStart(event) {\r\n    var tracker = active_touch_tooltip_tracker;\r\n    if (tracker && !tracker._touch) {\r\n        tracker._hideTooltip(TOOLTIP_HIDE_DELAY);\r\n        active_touch_tooltip_tracker = null\r\n    }\r\n}\r\nready(function() {\r\n    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), (0, _index.addNamespace)([_pointer.default.down], EVENT_NS), handleDocumentTooltipTouchStart)\r\n});\r\nvar _default = Tracker;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/range.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Range = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _isDefined = _type.isDefined;\r\nvar _isDate = _type.isDate;\r\nvar _isFunction = _type.isFunction;\r\nvar minSelector = \"min\";\r\nvar maxSelector = \"max\";\r\nvar minVisibleSelector = \"minVisible\";\r\nvar maxVisibleSelector = \"maxVisible\";\r\nvar baseSelector = \"base\";\r\nvar axisTypeSelector = \"axisType\";\r\n\r\nfunction otherLessThan(thisValue, otherValue) {\r\n    return otherValue < thisValue\r\n}\r\n\r\nfunction otherGreaterThan(thisValue, otherValue) {\r\n    return otherValue > thisValue\r\n}\r\n\r\nfunction compareAndReplace(thisValue, otherValue, setValue, compare) {\r\n    var otherValueDefined = _isDefined(otherValue);\r\n    if (_isDefined(thisValue)) {\r\n        if (otherValueDefined && compare(thisValue, otherValue)) {\r\n            setValue(otherValue)\r\n        }\r\n    } else {\r\n        if (otherValueDefined) {\r\n            setValue(otherValue)\r\n        }\r\n    }\r\n}\r\nvar Range = function(range) {\r\n    range && (0, _extend.extend)(this, range)\r\n};\r\nexports.Range = Range;\r\nvar _Range = Range;\r\n_Range.prototype = {\r\n    constructor: _Range,\r\n    addRange: function(otherRange) {\r\n        var that = this;\r\n        var categories = that.categories;\r\n        var otherCategories = otherRange.categories;\r\n        var isDiscrete = \"discrete\" === that[axisTypeSelector];\r\n        var compareAndReplaceByField = function(field, compare) {\r\n            compareAndReplace(that[field], otherRange[field], function(value) {\r\n                that[field] = value\r\n            }, compare)\r\n        };\r\n        var controlValuesByVisibleBounds = function(valueField, visibleValueField, compare) {\r\n            compareAndReplace(that[valueField], that[visibleValueField], function(value) {\r\n                _isDefined(that[valueField]) && (that[valueField] = value)\r\n            }, compare)\r\n        };\r\n        var checkField = function(field) {\r\n            that[field] = that[field] || otherRange[field]\r\n        };\r\n        checkField(\"invert\");\r\n        checkField(axisTypeSelector);\r\n        checkField(\"dataType\");\r\n        checkField(\"isSpacedMargin\");\r\n        if (\"logarithmic\" === that[axisTypeSelector]) {\r\n            checkField(baseSelector)\r\n        } else {\r\n            that[baseSelector] = void 0\r\n        }\r\n        compareAndReplaceByField(minSelector, otherLessThan);\r\n        compareAndReplaceByField(maxSelector, otherGreaterThan);\r\n        if (isDiscrete) {\r\n            checkField(minVisibleSelector);\r\n            checkField(maxVisibleSelector)\r\n        } else {\r\n            compareAndReplaceByField(minVisibleSelector, otherLessThan);\r\n            compareAndReplaceByField(maxVisibleSelector, otherGreaterThan)\r\n        }\r\n        compareAndReplaceByField(\"interval\", otherLessThan);\r\n        if (!isDiscrete) {\r\n            controlValuesByVisibleBounds(minSelector, minVisibleSelector, otherLessThan);\r\n            controlValuesByVisibleBounds(minSelector, maxVisibleSelector, otherLessThan);\r\n            controlValuesByVisibleBounds(maxSelector, maxVisibleSelector, otherGreaterThan);\r\n            controlValuesByVisibleBounds(maxSelector, minVisibleSelector, otherGreaterThan)\r\n        }\r\n        if (void 0 === categories) {\r\n            that.categories = otherCategories\r\n        } else {\r\n            that.categories = otherCategories ? (0, _utils.unique)(categories.concat(otherCategories)) : categories\r\n        }\r\n        if (\"logarithmic\" === that[axisTypeSelector]) {\r\n            checkField(\"allowNegatives\");\r\n            compareAndReplaceByField(\"linearThreshold\", otherLessThan)\r\n        }\r\n        return that\r\n    },\r\n    isEmpty: function() {\r\n        return (!_isDefined(this[minSelector]) || !_isDefined(this[maxSelector])) && (!this.categories || 0 === this.categories.length)\r\n    },\r\n    correctValueZeroLevel: function() {\r\n        var that = this;\r\n        if (\"logarithmic\" === that[axisTypeSelector] || _isDate(that[maxSelector]) || _isDate(that[minSelector])) {\r\n            return that\r\n        }\r\n\r\n        function setZeroLevel(min, max) {\r\n            that[min] < 0 && that[max] < 0 && (that[max] = 0);\r\n            that[min] > 0 && that[max] > 0 && (that[min] = 0)\r\n        }\r\n        setZeroLevel(minSelector, maxSelector);\r\n        setZeroLevel(minVisibleSelector, maxVisibleSelector);\r\n        return that\r\n    },\r\n    sortCategories: function(sort) {\r\n        if (false === sort || !this.categories) {\r\n            return\r\n        }\r\n        if (Array.isArray(sort)) {\r\n            var sortValues = sort.map(function(item) {\r\n                return item.valueOf()\r\n            });\r\n            var filteredSeriesCategories = this.categories.filter(function(item) {\r\n                return sortValues.indexOf(item.valueOf()) === -1\r\n            });\r\n            this.categories = sort.concat(filteredSeriesCategories)\r\n        } else {\r\n            var notAFunction = !_isFunction(sort);\r\n            if (notAFunction && \"string\" !== this.dataType) {\r\n                sort = function(a, b) {\r\n                    return a.valueOf() - b.valueOf()\r\n                }\r\n            } else {\r\n                if (notAFunction) {\r\n                    sort = false\r\n                }\r\n            }\r\n            sort && this.categories.sort(sort)\r\n        }\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (data/endpoint_selector.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _proxy_url_formatter = _interopRequireDefault(require(\"./proxy_url_formatter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar IS_WINJS_ORIGIN;\r\nvar IS_LOCAL_ORIGIN;\r\n\r\nfunction isLocalHostName(url) {\r\n    return /^(localhost$|127\\.)/i.test(url)\r\n}\r\nvar EndpointSelector = function(config) {\r\n    this.config = config;\r\n    IS_WINJS_ORIGIN = \"ms-appx:\" === window.location.protocol;\r\n    IS_LOCAL_ORIGIN = isLocalHostName(window.location.hostname)\r\n};\r\nEndpointSelector.prototype = {\r\n    urlFor: function(key) {\r\n        var bag = this.config[key];\r\n        if (!bag) {\r\n            throw _errors.default.Error(\"E0006\")\r\n        }\r\n        if (_proxy_url_formatter.default.isProxyUsed()) {\r\n            return _proxy_url_formatter.default.formatProxyUrl(bag.local)\r\n        }\r\n        if (bag.production) {\r\n            if (IS_WINJS_ORIGIN && !Debug.debuggerEnabled || !IS_WINJS_ORIGIN && !IS_LOCAL_ORIGIN) {\r\n                return bag.production\r\n            }\r\n        }\r\n        return bag.local\r\n    }\r\n};\r\nvar _default = EndpointSelector;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (pdf_exporter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"exportDataGrid\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _export_data_grid.exportDataGrid\r\n    }\r\n});\r\nvar _export_data_grid = require(\"./exporter/jspdf/export_data_grid\");\r\n","/**\r\n * DevExtreme (exporter/excel/excel.tag_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar tagHelper = {\r\n    toXml: function(tagName, attributes, content) {\r\n        var result = [\"<\", tagName];\r\n        for (var attributeName in attributes) {\r\n            var attributeValue = attributes[attributeName];\r\n            if ((0, _type.isDefined)(attributeValue)) {\r\n                result.push(\" \", attributeName, '=\"', attributeValue, '\"')\r\n            }\r\n        }\r\n        if ((0, _type.isDefined)(content) && \"\" !== content) {\r\n            result.push(\">\", content, \"</\", tagName, \">\")\r\n        } else {\r\n            result.push(\" />\")\r\n        }\r\n        return result.join(\"\")\r\n    }\r\n};\r\nvar _default = tagHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.agenda.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _element = require(\"../../../core/element\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _date = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"../ui.scheduler.table_creator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar tableCreator = _uiScheduler2.default.tableCreator;\r\nvar AGENDA_CLASS = \"dx-scheduler-agenda\";\r\nvar AGENDA_DATE_CLASS = \"dx-scheduler-agenda-date\";\r\nvar GROUP_TABLE_CLASS = \"dx-scheduler-group-table\";\r\nvar AGENDA_GROUPED_ATTR = \"dx-group-column-count\";\r\nvar TIME_PANEL_ROW_CLASS = \"dx-scheduler-time-panel-row\";\r\nvar TIME_PANEL_CELL_CLASS = \"dx-scheduler-time-panel-cell\";\r\nvar NODATA_CONTAINER_CLASS = \"dx-scheduler-agenda-nodata\";\r\nvar LAST_ROW_CLASS = \"dx-scheduler-date-table-last-row\";\r\nvar INNER_CELL_MARGIN = 5;\r\nvar OUTER_CELL_MARGIN = 20;\r\nvar SchedulerAgenda = function(_SchedulerWorkSpace) {\r\n    _inherits(SchedulerAgenda, _SchedulerWorkSpace);\r\n    var _super = _createSuper(SchedulerAgenda);\r\n\r\n    function SchedulerAgenda() {\r\n        _classCallCheck(this, SchedulerAgenda);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerAgenda, [{\r\n        key: \"_init\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerAgenda.prototype), \"_init\", this).call(this);\r\n            this._activeStateUnit = void 0\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(SchedulerAgenda.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                agendaDuration: 7,\r\n                rowHeight: 60,\r\n                noDataText: \"\"\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            var name = args.name;\r\n            var value = args.value;\r\n            switch (name) {\r\n                case \"agendaDuration\":\r\n                    break;\r\n                case \"noDataText\":\r\n                case \"rowHeight\":\r\n                    this._recalculateAgenda(this._rows);\r\n                    break;\r\n                case \"groups\":\r\n                    if (!value || !value.length) {\r\n                        if (this._$groupTable) {\r\n                            this._$groupTable.remove();\r\n                            this._$groupTable = null;\r\n                            this._detachGroupCountAttr()\r\n                        }\r\n                    } else {\r\n                        if (!this._$groupTable) {\r\n                            this._initGroupTable();\r\n                            this._dateTableScrollable.$content().prepend(this._$groupTable)\r\n                        }\r\n                    }\r\n                    _get(_getPrototypeOf(SchedulerAgenda.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(SchedulerAgenda.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderFocusState\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_renderFocusTarget\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_cleanFocusState\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"supportAllDayRow\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_isVerticalGroupedWorkSpace\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return AGENDA_CLASS\r\n        }\r\n    }, {\r\n        key: \"_setFirstViewDate\",\r\n        value: function() {\r\n            this._firstViewDate = new Date(this.option(\"currentDate\"));\r\n            this._setStartDayHour(this._firstViewDate)\r\n        }\r\n    }, {\r\n        key: \"_getRowCount\",\r\n        value: function() {\r\n            return this.option(\"agendaDuration\")\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            return 1\r\n        }\r\n    }, {\r\n        key: \"_getTimePanelRowCount\",\r\n        value: function() {\r\n            return this.option(\"agendaDuration\")\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndex\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_getFormat\",\r\n        value: function() {\r\n            return \"d ddd\"\r\n        }\r\n    }, {\r\n        key: \"_renderAllDayPanel\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_toggleAllDayVisibility\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_initWorkSpaceUnits\",\r\n        value: function() {\r\n            this._initGroupTable();\r\n            this._$timePanel = (0, _renderer.default)(\"<table>\").addClass(this._getTimePanelClass());\r\n            this._$dateTable = (0, _renderer.default)(\"<table>\").addClass(this._getDateTableClass())\r\n        }\r\n    }, {\r\n        key: \"_initGroupTable\",\r\n        value: function() {\r\n            var groups = this.option(\"groups\");\r\n            if (groups && groups.length) {\r\n                this._$groupTable = (0, _renderer.default)(\"<table>\").addClass(GROUP_TABLE_CLASS)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderView\",\r\n        value: function() {\r\n            this._setFirstViewDate();\r\n            this._rows = [];\r\n            this.invoke(\"getAgendaRows\", {\r\n                agendaDuration: this.option(\"agendaDuration\"),\r\n                currentDate: new Date(this.option(\"currentDate\"))\r\n            }).done(function(rows) {\r\n                this._recalculateAgenda(rows)\r\n            }.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_recalculateAgenda\",\r\n        value: function(rows) {\r\n            var cellTemplates = [];\r\n            this._cleanView();\r\n            if (this._rowsIsEmpty(rows)) {\r\n                this._renderNoData();\r\n                return\r\n            }\r\n            this._rows = rows;\r\n            if (this._$groupTable) {\r\n                cellTemplates = this._renderGroupHeader();\r\n                this._setGroupHeaderCellsHeight()\r\n            }\r\n            this._renderTimePanel();\r\n            this._renderDateTable();\r\n            this.invoke(\"onAgendaReady\", rows);\r\n            this._applyCellTemplates(cellTemplates);\r\n            this._dateTableScrollable.update()\r\n        }\r\n    }, {\r\n        key: \"_renderNoData\",\r\n        value: function() {\r\n            this._$noDataContainer = (0, _renderer.default)(\"<div>\").addClass(NODATA_CONTAINER_CLASS).html(this.option(\"noDataText\"));\r\n            this._dateTableScrollable.$content().append(this._$noDataContainer)\r\n        }\r\n    }, {\r\n        key: \"_setTableSizes\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_toggleHorizontalScrollClass\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_createCrossScrollingConfig\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_setGroupHeaderCellsHeight\",\r\n        value: function() {\r\n            var $cells = this._getGroupHeaderCells().filter(function(_, element) {\r\n                return !element.getAttribute(\"rowSpan\")\r\n            });\r\n            var rows = this._removeEmptyRows(this._rows);\r\n            if (!rows.length) {\r\n                return\r\n            }\r\n            for (var i = 0; i < $cells.length; i++) {\r\n                var $cellContent = $cells.eq(i).find(\".dx-scheduler-group-header-content\");\r\n                $cellContent.outerHeight(this._getGroupRowHeight(rows[i]))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_rowsIsEmpty\",\r\n        value: function(rows) {\r\n            var result = true;\r\n            for (var i = 0; i < rows.length; i++) {\r\n                var groupRow = rows[i];\r\n                for (var j = 0; j < groupRow.length; j++) {\r\n                    if (groupRow[j]) {\r\n                        result = false;\r\n                        break\r\n                    }\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_detachGroupCountAttr\",\r\n        value: function() {\r\n            this.$element().removeAttr(AGENDA_GROUPED_ATTR)\r\n        }\r\n    }, {\r\n        key: \"_attachGroupCountAttr\",\r\n        value: function() {\r\n            this.$element().attr(AGENDA_GROUPED_ATTR, this.option(\"groups\").length)\r\n        }\r\n    }, {\r\n        key: \"_removeEmptyRows\",\r\n        value: function(rows) {\r\n            var result = [];\r\n            var isEmpty = function(data) {\r\n                return !data.some(function(value) {\r\n                    return value > 0\r\n                })\r\n            };\r\n            for (var i = 0; i < rows.length; i++) {\r\n                if (rows[i].length && !isEmpty(rows[i])) {\r\n                    result.push(rows[i])\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getGroupHeaderContainer\",\r\n        value: function() {\r\n            return this._$groupTable\r\n        }\r\n    }, {\r\n        key: \"_makeGroupRows\",\r\n        value: function() {\r\n            var tree = this.invoke(\"createReducedResourcesTree\");\r\n            var cellTemplate = this.option(\"resourceCellTemplate\");\r\n            var getGroupHeaderContentClass = this._getGroupHeaderContentClass();\r\n            var cellTemplates = [];\r\n            var table = tableCreator.makeGroupedTableFromJSON(tableCreator.VERTICAL, tree, {\r\n                cellTag: \"th\",\r\n                groupTableClass: GROUP_TABLE_CLASS,\r\n                groupRowClass: this._getGroupRowClass(),\r\n                groupCellClass: this._getGroupHeaderClass(),\r\n                groupCellCustomContent: function(cell, cellText, index, data) {\r\n                    var container = _dom_adapter.default.createElement(\"div\");\r\n                    var contentWrapper = _dom_adapter.default.createElement(\"div\");\r\n                    container.className = getGroupHeaderContentClass;\r\n                    contentWrapper.appendChild(cellText);\r\n                    container.appendChild(contentWrapper);\r\n                    container.className = getGroupHeaderContentClass;\r\n                    if (cellTemplate && cellTemplate.render) {\r\n                        cellTemplates.push(cellTemplate.render.bind(cellTemplate, {\r\n                            model: {\r\n                                data: data.data,\r\n                                id: data.value,\r\n                                color: data.color,\r\n                                text: cellText.textContent\r\n                            },\r\n                            container: (0, _element.getPublicElement)((0, _renderer.default)(container)),\r\n                            index: index\r\n                        }))\r\n                    } else {\r\n                        contentWrapper.appendChild(cellText);\r\n                        container.appendChild(contentWrapper)\r\n                    }\r\n                    cell.appendChild(container)\r\n                },\r\n                cellTemplate: cellTemplate\r\n            });\r\n            return {\r\n                elements: (0, _renderer.default)(table).find(\".\" + this._getGroupRowClass()),\r\n                cellTemplates: cellTemplates\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_cleanView\",\r\n        value: function() {\r\n            this._$dateTable.empty();\r\n            this._$timePanel.empty();\r\n            if (this._$groupTable) {\r\n                this._$groupTable.empty()\r\n            }\r\n            if (this._$noDataContainer) {\r\n                this._$noDataContainer.empty();\r\n                this._$noDataContainer.remove();\r\n                delete this._$noDataContainer\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createWorkSpaceElements\",\r\n        value: function() {\r\n            this._createWorkSpaceStaticElements()\r\n        }\r\n    }, {\r\n        key: \"_createWorkSpaceStaticElements\",\r\n        value: function() {\r\n            if (this._$groupTable) {\r\n                this._dateTableScrollable.$content().prepend(this._$groupTable)\r\n            }\r\n            this._dateTableScrollable.$content().append(this._$timePanel, this._$dateTable);\r\n            this.$element().append(this._dateTableScrollable.$element())\r\n        }\r\n    }, {\r\n        key: \"_renderDateTable\",\r\n        value: function() {\r\n            this._renderTableBody({\r\n                container: (0, _element.getPublicElement)(this._$dateTable),\r\n                rowClass: this._getDateTableRowClass(),\r\n                cellClass: this._getDateTableCellClass()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_attachTablesEvents\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_attachEvents\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_cleanCellDataCache\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"isIndicationAvailable\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_prepareCellTemplateOptions\",\r\n        value: function(text, date, rowIndex, $cell) {\r\n            var groupsOpt = this.option(\"groups\");\r\n            var groups = {};\r\n            var path = groupsOpt.length && this._getPathToLeaf(rowIndex) || [];\r\n            path.forEach(function(resourceValue, resourceIndex) {\r\n                var resourceName = groupsOpt[resourceIndex].name;\r\n                groups[resourceName] = resourceValue\r\n            });\r\n            return {\r\n                model: {\r\n                    text: text,\r\n                    date: date,\r\n                    groups: groups\r\n                },\r\n                container: (0, _element.getPublicElement)($cell),\r\n                index: rowIndex\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderTableBody\",\r\n        value: function(options) {\r\n            var cellTemplates = [];\r\n            var cellTemplateOpt = options.cellTemplate;\r\n            this._$rows = [];\r\n            var i;\r\n            var fillTableBody = function(rowIndex, rowSize) {\r\n                if (rowSize) {\r\n                    var date;\r\n                    var cellDateNumber;\r\n                    var cellDayName;\r\n                    var $row = (0, _renderer.default)(\"<tr>\");\r\n                    var $td = (0, _renderer.default)(\"<td>\").height(this._getRowHeight(rowSize));\r\n                    if (options.getStartDate) {\r\n                        date = options.getStartDate && options.getStartDate(rowIndex);\r\n                        cellDateNumber = _date.default.format(date, \"d\");\r\n                        cellDayName = _date.default.format(date, this._formatWeekday)\r\n                    }\r\n                    if (cellTemplateOpt && cellTemplateOpt.render) {\r\n                        var templateOptions = this._prepareCellTemplateOptions(cellDateNumber + \" \" + cellDayName, date, i, $td);\r\n                        cellTemplates.push(cellTemplateOpt.render.bind(cellTemplateOpt, templateOptions))\r\n                    } else {\r\n                        if (cellDateNumber && cellDayName) {\r\n                            $td.addClass(AGENDA_DATE_CLASS).text(cellDateNumber + \" \" + cellDayName)\r\n                        }\r\n                    }\r\n                    if (options.rowClass) {\r\n                        $row.addClass(options.rowClass)\r\n                    }\r\n                    if (options.cellClass) {\r\n                        $td.addClass(options.cellClass)\r\n                    }\r\n                    $row.append($td);\r\n                    this._$rows.push($row)\r\n                }\r\n            }.bind(this);\r\n            for (i = 0; i < this._rows.length; i++) {\r\n                (0, _iterator.each)(this._rows[i], fillTableBody);\r\n                this._setLastRowClass()\r\n            }(0, _renderer.default)(options.container).append((0, _renderer.default)(\"<tbody>\").append(this._$rows));\r\n            this._applyCellTemplates(cellTemplates)\r\n        }\r\n    }, {\r\n        key: \"_setLastRowClass\",\r\n        value: function() {\r\n            if (this._rows.length > 1 && this._$rows.length) {\r\n                var $lastRow = this._$rows[this._$rows.length - 1];\r\n                $lastRow.addClass(LAST_ROW_CLASS)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderTimePanel\",\r\n        value: function() {\r\n            this._renderTableBody({\r\n                container: (0, _element.getPublicElement)(this._$timePanel),\r\n                rowCount: this._getTimePanelRowCount(),\r\n                cellCount: 1,\r\n                rowClass: TIME_PANEL_ROW_CLASS,\r\n                cellClass: TIME_PANEL_CELL_CLASS,\r\n                cellTemplate: this.option(\"dateCellTemplate\"),\r\n                getStartDate: this._getTimePanelStartDate.bind(this)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getTimePanelStartDate\",\r\n        value: function(rowIndex) {\r\n            var current = new Date(this.option(\"currentDate\"));\r\n            var cellDate = new Date(current.setDate(current.getDate() + rowIndex));\r\n            return cellDate\r\n        }\r\n    }, {\r\n        key: \"_getRowHeight\",\r\n        value: function(rowSize) {\r\n            var baseHeight = this.option(\"rowHeight\");\r\n            var innerOffset = (rowSize - 1) * INNER_CELL_MARGIN;\r\n            return rowSize ? baseHeight * rowSize + innerOffset + OUTER_CELL_MARGIN : 0\r\n        }\r\n    }, {\r\n        key: \"_getGroupRowHeight\",\r\n        value: function(groupRows) {\r\n            if (!groupRows) {\r\n                return\r\n            }\r\n            var result = 0;\r\n            for (var i = 0; i < groupRows.length; i++) {\r\n                result += this._getRowHeight(groupRows[i])\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getAgendaVerticalStepHeight\",\r\n        value: function() {\r\n            return this.option(\"rowHeight\")\r\n        }\r\n    }, {\r\n        key: \"getEndViewDate\",\r\n        value: function() {\r\n            var currentDate = new Date(this.option(\"currentDate\"));\r\n            var agendaDuration = this.option(\"agendaDuration\");\r\n            currentDate.setHours(this.option(\"endDayHour\"));\r\n            var result = currentDate.setDate(currentDate.getDate() + agendaDuration - 1) - 6e4;\r\n            return new Date(result)\r\n        }\r\n    }, {\r\n        key: \"getEndViewDateByEndDayHour\",\r\n        value: function() {\r\n            return this.getEndViewDate()\r\n        }\r\n    }, {\r\n        key: \"getCoordinatesByDate\",\r\n        value: function() {\r\n            return {\r\n                top: 0,\r\n                left: 0,\r\n                max: 0,\r\n                groupIndex: 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getCellDataByCoordinates\",\r\n        value: function() {\r\n            return {\r\n                startDate: null,\r\n                endDate: null\r\n            }\r\n        }\r\n    }, {\r\n        key: \"updateScrollPosition\",\r\n        value: function(date) {\r\n            var scheduler = this.option(\"observer\");\r\n            var newDate = scheduler.timeZoneCalculator.createDate(date, {\r\n                path: \"toGrid\"\r\n            });\r\n            var bounds = this.getVisibleBounds();\r\n            var startDateHour = newDate.getHours();\r\n            var startDateMinutes = newDate.getMinutes();\r\n            if (this.needUpdateScrollPosition(startDateHour, startDateMinutes, bounds, newDate)) {\r\n                this.scrollToTime(startDateHour, startDateMinutes, newDate)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"needUpdateScrollPosition\",\r\n        value: function(hours, minutes, bounds) {\r\n            var isUpdateNeeded = false;\r\n            if (hours < bounds.top.hours || hours > bounds.bottom.hours) {\r\n                isUpdateNeeded = true\r\n            }\r\n            if (hours === bounds.top.hours && minutes < bounds.top.minutes) {\r\n                isUpdateNeeded = true\r\n            }\r\n            if (hours === bounds.bottom.hours && minutes > bounds.top.minutes) {\r\n                isUpdateNeeded = true\r\n            }\r\n            return isUpdateNeeded\r\n        }\r\n    }]);\r\n    return SchedulerAgenda\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerAgenda\", SchedulerAgenda);\r\nvar _default = SchedulerAgenda;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/polyfills/weak_map.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _array = require(\"../utils/array\");\r\nvar _window = require(\"../utils/window\");\r\nvar weakMap = (0, _window.hasWindow)() ? (0, _window.getWindow)().WeakMap : WeakMap;\r\nif (!weakMap) {\r\n    weakMap = function() {\r\n        var keys = [];\r\n        var values = [];\r\n        this.set = function(key, value) {\r\n            var index = (0, _array.inArray)(key, keys);\r\n            if (index === -1) {\r\n                keys.push(key);\r\n                values.push(value)\r\n            } else {\r\n                values[index] = value\r\n            }\r\n        };\r\n        this.get = function(key) {\r\n            var index = (0, _array.inArray)(key, keys);\r\n            if (index === -1) {\r\n                return\r\n            }\r\n            return values[index]\r\n        };\r\n        this.has = function(key) {\r\n            var index = (0, _array.inArray)(key, keys);\r\n            if (index === -1) {\r\n                return false\r\n            }\r\n            return true\r\n        };\r\n        this.delete = function(key) {\r\n            var index = (0, _array.inArray)(key, keys);\r\n            if (index === -1) {\r\n                return\r\n            }\r\n            keys.splice(index, 1);\r\n            values.splice(index, 1)\r\n        }\r\n    }\r\n}\r\nvar _default = weakMap;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (data_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _data_source = require(\"./data/data_source/data_source\");\r\nvar _extend = require(\"./core/utils/extend\");\r\nvar _utils = require(\"./data/data_source/utils\");\r\nvar DATA_SOURCE_OPTIONS_METHOD = \"_dataSourceOptions\";\r\nvar DATA_SOURCE_CHANGED_METHOD = \"_dataSourceChangedHandler\";\r\nvar DATA_SOURCE_LOAD_ERROR_METHOD = \"_dataSourceLoadErrorHandler\";\r\nvar DATA_SOURCE_LOADING_CHANGED_METHOD = \"_dataSourceLoadingChangedHandler\";\r\nvar DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD = \"_dataSourceFromUrlLoadMode\";\r\nvar SPECIFIC_DATA_SOURCE_OPTION = \"_getSpecificDataSourceOption\";\r\nvar NORMALIZE_DATA_SOURCE = \"_normalizeDataSource\";\r\nvar DataHelperMixin = {\r\n    postCtor: function() {\r\n        this.on(\"disposing\", function() {\r\n            this._disposeDataSource()\r\n        }.bind(this))\r\n    },\r\n    _refreshDataSource: function() {\r\n        this._initDataSource();\r\n        this._loadDataSource()\r\n    },\r\n    _initDataSource: function() {\r\n        var dataSourceOptions = SPECIFIC_DATA_SOURCE_OPTION in this ? this[SPECIFIC_DATA_SOURCE_OPTION]() : this.option(\"dataSource\");\r\n        var widgetDataSourceOptions;\r\n        var dataSourceType;\r\n        this._disposeDataSource();\r\n        if (dataSourceOptions) {\r\n            if (dataSourceOptions instanceof _data_source.DataSource) {\r\n                this._isSharedDataSource = true;\r\n                this._dataSource = dataSourceOptions\r\n            } else {\r\n                widgetDataSourceOptions = DATA_SOURCE_OPTIONS_METHOD in this ? this[DATA_SOURCE_OPTIONS_METHOD]() : {};\r\n                dataSourceType = this._dataSourceType ? this._dataSourceType() : _data_source.DataSource;\r\n                dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSourceOptions, {\r\n                    fromUrlLoadMode: DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD in this && this[DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD]()\r\n                });\r\n                this._dataSource = new dataSourceType((0, _extend.extend)(true, {}, widgetDataSourceOptions, dataSourceOptions))\r\n            }\r\n            if (NORMALIZE_DATA_SOURCE in this) {\r\n                this._dataSource = this[NORMALIZE_DATA_SOURCE](this._dataSource)\r\n            }\r\n            this._addDataSourceHandlers()\r\n        }\r\n    },\r\n    _addDataSourceHandlers: function() {\r\n        if (DATA_SOURCE_CHANGED_METHOD in this) {\r\n            this._addDataSourceChangeHandler()\r\n        }\r\n        if (DATA_SOURCE_LOAD_ERROR_METHOD in this) {\r\n            this._addDataSourceLoadErrorHandler()\r\n        }\r\n        if (DATA_SOURCE_LOADING_CHANGED_METHOD in this) {\r\n            this._addDataSourceLoadingChangedHandler()\r\n        }\r\n        this._addReadyWatcher()\r\n    },\r\n    _addReadyWatcher: function() {\r\n        this._dataSource.on(\"loadingChanged\", function(isLoading) {\r\n            this._ready && this._ready(!isLoading)\r\n        }.bind(this))\r\n    },\r\n    _addDataSourceChangeHandler: function() {\r\n        var dataSource = this._dataSource;\r\n        this._proxiedDataSourceChangedHandler = function(e) {\r\n            this[DATA_SOURCE_CHANGED_METHOD](dataSource.items(), e)\r\n        }.bind(this);\r\n        dataSource.on(\"changed\", this._proxiedDataSourceChangedHandler)\r\n    },\r\n    _addDataSourceLoadErrorHandler: function() {\r\n        this._proxiedDataSourceLoadErrorHandler = this[DATA_SOURCE_LOAD_ERROR_METHOD].bind(this);\r\n        this._dataSource.on(\"loadError\", this._proxiedDataSourceLoadErrorHandler)\r\n    },\r\n    _addDataSourceLoadingChangedHandler: function() {\r\n        this._proxiedDataSourceLoadingChangedHandler = this[DATA_SOURCE_LOADING_CHANGED_METHOD].bind(this);\r\n        this._dataSource.on(\"loadingChanged\", this._proxiedDataSourceLoadingChangedHandler)\r\n    },\r\n    _loadDataSource: function() {\r\n        if (this._dataSource) {\r\n            var dataSource = this._dataSource;\r\n            if (dataSource.isLoaded()) {\r\n                this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler()\r\n            } else {\r\n                dataSource.load()\r\n            }\r\n        }\r\n    },\r\n    _loadSingle: function(key, value) {\r\n        key = \"this\" === key ? this._dataSource.key() || \"this\" : key;\r\n        return this._dataSource.loadSingle(key, value)\r\n    },\r\n    _isLastPage: function() {\r\n        return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize\r\n    },\r\n    _isDataSourceLoading: function() {\r\n        return this._dataSource && this._dataSource.isLoading()\r\n    },\r\n    _disposeDataSource: function() {\r\n        if (this._dataSource) {\r\n            if (this._isSharedDataSource) {\r\n                delete this._isSharedDataSource;\r\n                this._proxiedDataSourceChangedHandler && this._dataSource.off(\"changed\", this._proxiedDataSourceChangedHandler);\r\n                this._proxiedDataSourceLoadErrorHandler && this._dataSource.off(\"loadError\", this._proxiedDataSourceLoadErrorHandler);\r\n                this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off(\"loadingChanged\", this._proxiedDataSourceLoadingChangedHandler)\r\n            } else {\r\n                this._dataSource.dispose()\r\n            }\r\n            delete this._dataSource;\r\n            delete this._proxiedDataSourceChangedHandler;\r\n            delete this._proxiedDataSourceLoadErrorHandler;\r\n            delete this._proxiedDataSourceLoadingChangedHandler\r\n        }\r\n    },\r\n    getDataSource: function() {\r\n        return this._dataSource || null\r\n    }\r\n};\r\nvar _default = DataHelperMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/themes/generic.carmine.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar ACCENT_COLOR = \"#f05b41\";\r\nvar BACKGROUND_COLOR = \"#fff\";\r\nvar TITLE_COLOR = \"#333\";\r\nvar SUBTITLE_COLOR = \"#8899a8\";\r\nvar TEXT_COLOR = \"#707070\";\r\nvar BORDER_COLOR = \"#dee1e3\";\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.carmine\",\r\n    defaultPalette: \"Carmine\",\r\n    backgroundColor: BACKGROUND_COLOR,\r\n    primaryTitleColor: TITLE_COLOR,\r\n    secondaryTitleColor: SUBTITLE_COLOR,\r\n    gridColor: BORDER_COLOR,\r\n    axisColor: TEXT_COLOR,\r\n    \"export\": {\r\n        backgroundColor: BACKGROUND_COLOR,\r\n        font: {\r\n            color: TITLE_COLOR\r\n        },\r\n        button: {\r\n            \"default\": {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#b1b7bd\",\r\n                backgroundColor: BACKGROUND_COLOR\r\n            },\r\n            hover: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#b1b7bd\",\r\n                backgroundColor: \"#faf2f0\"\r\n            },\r\n            focus: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#6d7781\",\r\n                backgroundColor: \"#faf2f0\"\r\n            },\r\n            active: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#6d7781\",\r\n                backgroundColor: \"#f5e7e4\"\r\n            }\r\n        }\r\n    },\r\n    legend: {\r\n        font: {\r\n            color: TEXT_COLOR\r\n        }\r\n    },\r\n    tooltip: {\r\n        color: BACKGROUND_COLOR,\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        font: {\r\n            color: TITLE_COLOR\r\n        }\r\n    },\r\n    \"chart:common\": {\r\n        commonSeriesSettings: {\r\n            label: {\r\n                border: {\r\n                    color: BORDER_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        font: {\r\n            color: TITLE_COLOR\r\n        },\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        color: BACKGROUND_COLOR\r\n    },\r\n    chart: {\r\n        commonPaneSettings: {\r\n            border: {\r\n                color: BORDER_COLOR\r\n            }\r\n        },\r\n        commonAxisSettings: {\r\n            breakStyle: {\r\n                color: \"#c1c5c7\"\r\n            }\r\n        }\r\n    },\r\n    rangeSelector: {\r\n        scale: {\r\n            breakStyle: {\r\n                color: \"#c1c5c7\"\r\n            },\r\n            tick: {\r\n                opacity: .12\r\n            }\r\n        },\r\n        selectedRangeColor: ACCENT_COLOR,\r\n        sliderMarker: {\r\n            color: ACCENT_COLOR\r\n        },\r\n        sliderHandle: {\r\n            color: ACCENT_COLOR,\r\n            opacity: .5\r\n        }\r\n    },\r\n    sparkline: {\r\n        pointColor: BACKGROUND_COLOR,\r\n        minColor: \"#f0ad4e\",\r\n        maxColor: \"#f74d61\"\r\n    },\r\n    treeMap: {\r\n        group: {\r\n            color: BORDER_COLOR,\r\n            label: {\r\n                font: {\r\n                    color: SUBTITLE_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    bullet: {\r\n        color: ACCENT_COLOR\r\n    },\r\n    gauge: {\r\n        valueIndicators: {\r\n            rangebar: {\r\n                color: ACCENT_COLOR\r\n            },\r\n            textcloud: {\r\n                color: ACCENT_COLOR\r\n            }\r\n        }\r\n    }\r\n}, \"generic.light\");\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.carmine.compact\"\r\n}, \"generic.carmine\");\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointments.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _element = require(\"../../core/element\");\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.publisher_mixin\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.appointment\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utilsTimeZone = _interopRequireDefault(require(\"./utils.timeZone.js\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar APPOINTMENT_SETTINGS_NAME = \"dxAppointmentSettings\";\r\nvar COMPONENT_CLASS = \"dx-scheduler-scrollable-appointments\";\r\nvar APPOINTMENT_ITEM_CLASS = \"dx-scheduler-appointment\";\r\nvar APPOINTMENT_TITLE_CLASS = \"dx-scheduler-appointment-title\";\r\nvar APPOINTMENT_CONTENT_DETAILS_CLASS = \"dx-scheduler-appointment-content-details\";\r\nvar APPOINTMENT_DATE_CLASS = \"dx-scheduler-appointment-content-date\";\r\nvar RECURRING_ICON_CLASS = \"dx-scheduler-appointment-recurrence-icon\";\r\nvar ALL_DAY_CONTENT_CLASS = \"dx-scheduler-appointment-content-allday\";\r\nvar DBLCLICK_EVENT_NAME = (0, _index.addNamespace)(_double_click.name, \"dxSchedulerAppointment\");\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerAppointments = _uiCollection_widget.default.inherit({\r\n    ctor: function(element, options) {\r\n        this.callBase(element, options)\r\n    },\r\n    _supportedKeys: function() {\r\n        var parent = this.callBase();\r\n        var tabHandler = function(e) {\r\n            var appointments = this._getAccessAppointments();\r\n            var focusedAppointment = appointments.filter(\".dx-state-focused\");\r\n            var index = focusedAppointment.data(APPOINTMENT_SETTINGS_NAME).sortedIndex;\r\n            var lastIndex = appointments.length - 1;\r\n            if (index > 0 && e.shiftKey || index < lastIndex && !e.shiftKey) {\r\n                e.preventDefault();\r\n                e.shiftKey ? index-- : index++;\r\n                var $nextAppointment = this._getAppointmentByIndex(index);\r\n                this._resetTabIndex($nextAppointment);\r\n                _events_engine.default.trigger($nextAppointment, \"focus\")\r\n            }\r\n        };\r\n        return (0, _extend.extend)(parent, {\r\n            escape: function() {\r\n                this.moveAppointmentBack();\r\n                this._escPressed = true\r\n            }.bind(this),\r\n            del: function(e) {\r\n                if (this.option(\"allowDelete\")) {\r\n                    e.preventDefault();\r\n                    var data = this._getItemData(e.target);\r\n                    this.notifyObserver(\"onDeleteButtonPress\", {\r\n                        data: data,\r\n                        target: e.target\r\n                    })\r\n                }\r\n            }.bind(this),\r\n            tab: tabHandler\r\n        })\r\n    },\r\n    _getAppointmentByIndex: function(sortedIndex) {\r\n        var appointments = this._getAccessAppointments();\r\n        return appointments.filter(function(_, $item) {\r\n            return (0, _element_data.data)($item, APPOINTMENT_SETTINGS_NAME).sortedIndex === sortedIndex\r\n        }).eq(0)\r\n    },\r\n    _getAccessAppointments: function() {\r\n        return this._itemElements().filter(\":visible\").not(\".dx-state-disabled\")\r\n    },\r\n    _resetTabIndex: function($appointment) {\r\n        this._focusTarget().attr(\"tabIndex\", -1);\r\n        $appointment.attr(\"tabIndex\", this.option(\"tabIndex\"))\r\n    },\r\n    _moveFocus: _common.noop,\r\n    _focusTarget: function() {\r\n        return this._itemElements()\r\n    },\r\n    _renderFocusTarget: function() {\r\n        var $appointment = this._getAppointmentByIndex(0);\r\n        this._resetTabIndex($appointment)\r\n    },\r\n    _focusInHandler: function(e) {\r\n        this.callBase.apply(this, arguments);\r\n        this._$currentAppointment = (0, _renderer.default)(e.target);\r\n        this.option(\"focusedElement\", (0, _element.getPublicElement)((0, _renderer.default)(e.target)))\r\n    },\r\n    _focusOutHandler: function() {\r\n        var $appointment = this._getAppointmentByIndex(0);\r\n        this.option(\"focusedElement\", (0, _element.getPublicElement)($appointment));\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _eventBindingTarget: function() {\r\n        return this._itemContainer()\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            noDataText: null,\r\n            activeStateEnabled: true,\r\n            hoverStateEnabled: true,\r\n            tabIndex: 0,\r\n            fixedContainer: null,\r\n            allDayContainer: null,\r\n            allowDrag: true,\r\n            allowResize: true,\r\n            allowAllDayResize: true,\r\n            onAppointmentDblClick: null,\r\n            _collectorOffset: 0\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"items\":\r\n                this._cleanFocusState();\r\n                this._clearDropDownItems();\r\n                this._clearDropDownItemsElements();\r\n                this._repaintAppointments(args.value);\r\n                this._renderDropDownAppointments();\r\n                this._attachAppointmentsEvents();\r\n                break;\r\n            case \"fixedContainer\":\r\n            case \"allDayContainer\":\r\n            case \"onAppointmentDblClick\":\r\n                break;\r\n            case \"allowDrag\":\r\n            case \"allowResize\":\r\n            case \"allowAllDayResize\":\r\n                this._invalidate();\r\n                break;\r\n            case \"focusedElement\":\r\n                this._resetTabIndex((0, _renderer.default)(args.value));\r\n                this.callBase(args);\r\n                break;\r\n            case \"allowDelete\":\r\n                break;\r\n            case \"focusStateEnabled\":\r\n                this._clearDropDownItemsElements();\r\n                this._renderDropDownAppointments();\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _isAllDayAppointment: function(appointment) {\r\n        return appointment.settings.length && appointment.settings[0].allDay || false\r\n    },\r\n    _isRepaintAppointment: function(appointment) {\r\n        return !(0, _type.isDefined)(appointment.needRepaint) || true === appointment.needRepaint\r\n    },\r\n    _isRepaintAll: function(appointments) {\r\n        if (this.invoke(\"isVirtualScrolling\")) {\r\n            return true\r\n        }\r\n        if (this.invoke(\"isCurrentViewAgenda\")) {\r\n            return true\r\n        }\r\n        for (var i = 0; i < appointments.length; i++) {\r\n            var appointment = appointments[i];\r\n            if (!this._isRepaintAppointment(appointment)) {\r\n                return false\r\n            }\r\n        }\r\n        return true\r\n    },\r\n    _applyFragment: function(fragment, allDay) {\r\n        if (fragment.children().length > 0) {\r\n            this._getAppointmentContainer(allDay).append(fragment)\r\n        }\r\n    },\r\n    _onEachAppointment: function(appointment, index, container, isRepaintAll) {\r\n        var _this = this;\r\n        var repaintAppointment = function() {\r\n            appointment.needRepaint = false;\r\n            _this._clearItem(appointment);\r\n            _this._renderItem(index, appointment, container)\r\n        };\r\n        if (true === (null === appointment || void 0 === appointment ? void 0 : appointment.needRemove)) {\r\n            this._clearItem(appointment)\r\n        } else {\r\n            if (isRepaintAll || this._isRepaintAppointment(appointment)) {\r\n                repaintAppointment()\r\n            }\r\n        }\r\n    },\r\n    _repaintAppointments: function(appointments) {\r\n        var _this2 = this;\r\n        this._renderByFragments(function($commonFragment, $allDayFragment) {\r\n            var isRepaintAll = _this2._isRepaintAll(appointments);\r\n            if (isRepaintAll) {\r\n                _this2._getAppointmentContainer(true).html(\"\");\r\n                _this2._getAppointmentContainer(false).html(\"\")\r\n            }!appointments.length && _this2._cleanItemContainer();\r\n            appointments.forEach(function(appointment, index) {\r\n                var container = _this2._isAllDayAppointment(appointment) ? $allDayFragment : $commonFragment;\r\n                _this2._onEachAppointment(appointment, index, container, isRepaintAll)\r\n            })\r\n        })\r\n    },\r\n    _renderByFragments: function(renderFunction) {\r\n        var isVirtualScrolling = this.invoke(\"isVirtualScrolling\");\r\n        if (isVirtualScrolling) {\r\n            var $commonFragment = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment());\r\n            var $allDayFragment = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment());\r\n            renderFunction($commonFragment, $allDayFragment);\r\n            this._applyFragment($commonFragment, false);\r\n            this._applyFragment($allDayFragment, true)\r\n        } else {\r\n            renderFunction(this._getAppointmentContainer(false), this._getAppointmentContainer(true))\r\n        }\r\n    },\r\n    _attachAppointmentsEvents: function() {\r\n        this._attachClickEvent();\r\n        this._attachHoldEvent();\r\n        this._attachContextMenuEvent();\r\n        this._attachAppointmentDblClick();\r\n        this._renderFocusState();\r\n        this._attachFeedbackEvents();\r\n        this._attachHoverEvents()\r\n    },\r\n    _clearItem: function(item) {\r\n        var $items = this._findItemElementByItem(item.itemData);\r\n        if (!$items.length) {\r\n            return\r\n        }(0, _iterator.each)($items, function(_, $item) {\r\n            $item.detach();\r\n            $item.remove()\r\n        })\r\n    },\r\n    _clearDropDownItems: function() {\r\n        this._virtualAppointments = {}\r\n    },\r\n    _clearDropDownItemsElements: function() {\r\n        this.invoke(\"clearCompactAppointments\")\r\n    },\r\n    _findItemElementByItem: function(item) {\r\n        var result = [];\r\n        var that = this;\r\n        this.itemElements().each(function() {\r\n            var $item = (0, _renderer.default)(this);\r\n            if ($item.data(that._itemDataKey()) === item) {\r\n                result.push($item)\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _itemClass: function() {\r\n        return APPOINTMENT_ITEM_CLASS\r\n    },\r\n    _itemContainer: function() {\r\n        var $container = this.callBase();\r\n        var $result = $container;\r\n        var $allDayContainer = this.option(\"allDayContainer\");\r\n        if ($allDayContainer) {\r\n            $result = $container.add($allDayContainer)\r\n        }\r\n        return $result\r\n    },\r\n    _cleanItemContainer: function() {\r\n        this.callBase();\r\n        var $allDayContainer = this.option(\"allDayContainer\");\r\n        if ($allDayContainer) {\r\n            $allDayContainer.empty()\r\n        }\r\n        this._virtualAppointments = {}\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        delete this._$currentAppointment;\r\n        delete this._initialSize;\r\n        delete this._initialCoordinates\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(COMPONENT_CLASS);\r\n        this._preventSingleAppointmentClick = false\r\n    },\r\n    _renderAppointmentTemplate: function($container, data, model) {\r\n        var formatText = this.invoke(\"getTextAndFormatDate\", model.appointmentData, model.appointmentData.settings || model.targetedAppointmentData, \"TIME\");\r\n        (0, _renderer.default)(\"<div>\").text(formatText.text).addClass(APPOINTMENT_TITLE_CLASS).appendTo($container);\r\n        if ((0, _type.isPlainObject)(data)) {\r\n            if (data.html) {\r\n                $container.html(data.html)\r\n            }\r\n        }\r\n        var $contentDetails = (0, _renderer.default)(\"<div>\").addClass(APPOINTMENT_CONTENT_DETAILS_CLASS);\r\n        (0, _renderer.default)(\"<div>\").addClass(APPOINTMENT_DATE_CLASS).text(formatText.formatDate).appendTo($contentDetails);\r\n        $contentDetails.appendTo($container);\r\n        if (data.recurrenceRule) {\r\n            (0, _renderer.default)(\"<span>\").addClass(RECURRING_ICON_CLASS + \" dx-icon-repeat\").appendTo($container)\r\n        }\r\n        if (data.allDay) {\r\n            (0, _renderer.default)(\"<div>\").text(\" \" + _message.default.format(\"dxScheduler-allDay\") + \": \").addClass(ALL_DAY_CONTENT_CLASS).prependTo($contentDetails)\r\n        }\r\n    },\r\n    _executeItemRenderAction: function(index, itemData, itemElement) {\r\n        var action = this._getItemRenderAction();\r\n        if (action) {\r\n            action(this.invoke(\"mapAppointmentFields\", {\r\n                itemData: itemData,\r\n                itemElement: itemElement\r\n            }))\r\n        }\r\n        delete this._currentAppointmentSettings\r\n    },\r\n    _itemClickHandler: function(e) {\r\n        this.callBase(e, {}, {\r\n            afterExecute: function(e) {\r\n                this._processItemClick(e.args[0].event)\r\n            }.bind(this)\r\n        })\r\n    },\r\n    _processItemClick: function(e) {\r\n        var $target = (0, _renderer.default)(e.currentTarget);\r\n        var data = this._getItemData($target);\r\n        if (\"keydown\" === e.type || (0, _index.isFakeClickEvent)(e)) {\r\n            this.notifyObserver(\"showEditAppointmentPopup\", {\r\n                data: data,\r\n                target: $target\r\n            });\r\n            return\r\n        }\r\n        this._appointmentClickTimeout = setTimeout(function() {\r\n            if (!this._preventSingleAppointmentClick && _dom_adapter.default.getBody().contains($target[0])) {\r\n                this.notifyObserver(\"showAppointmentTooltip\", {\r\n                    data: data,\r\n                    target: $target\r\n                })\r\n            }\r\n            this._preventSingleAppointmentClick = false\r\n        }.bind(this), 300)\r\n    },\r\n    _extendActionArgs: function() {\r\n        var args = this.callBase.apply(this, arguments);\r\n        return this.invoke(\"mapAppointmentFields\", args)\r\n    },\r\n    _render: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._attachAppointmentDblClick()\r\n    },\r\n    _attachAppointmentDblClick: function() {\r\n        var that = this;\r\n        var itemSelector = that._itemSelector();\r\n        var itemContainer = this._itemContainer();\r\n        _events_engine.default.off(itemContainer, DBLCLICK_EVENT_NAME, itemSelector);\r\n        _events_engine.default.on(itemContainer, DBLCLICK_EVENT_NAME, itemSelector, function(e) {\r\n            that._itemDXEventHandler(e, \"onAppointmentDblClick\", {}, {\r\n                afterExecute: function(e) {\r\n                    that._dblClickHandler(e.args[0].event)\r\n                }\r\n            })\r\n        })\r\n    },\r\n    _dblClickHandler: function(e) {\r\n        var $targetAppointment = (0, _renderer.default)(e.currentTarget);\r\n        var appointmentData = this._getItemData($targetAppointment);\r\n        clearTimeout(this._appointmentClickTimeout);\r\n        this._preventSingleAppointmentClick = true;\r\n        this.notifyObserver(\"showEditAppointmentPopup\", {\r\n            data: appointmentData,\r\n            target: $targetAppointment\r\n        })\r\n    },\r\n    _renderItem: function(index, item, container) {\r\n        var itemData = item.itemData;\r\n        for (var i = 0; i < item.settings.length; i++) {\r\n            var setting = item.settings[i];\r\n            this._currentAppointmentSettings = setting;\r\n            var $item = this.callBase(index, itemData, container);\r\n            $item.data(APPOINTMENT_SETTINGS_NAME, setting)\r\n        }\r\n    },\r\n    _getItemContent: function($itemFrame) {\r\n        $itemFrame.data(APPOINTMENT_SETTINGS_NAME, this._currentAppointmentSettings);\r\n        var $itemContent = this.callBase($itemFrame);\r\n        return $itemContent\r\n    },\r\n    _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n        var itemData = renderArgs.itemData,\r\n            container = renderArgs.container,\r\n            index = renderArgs.index;\r\n        return itemTemplate.render({\r\n            model: {\r\n                appointmentData: itemData,\r\n                targetedAppointmentData: this.invoke(\"getTargetedAppointmentData\", itemData, (0, _renderer.default)(container).parent())\r\n            },\r\n            container: container,\r\n            index: index\r\n        })\r\n    },\r\n    _getAppointmentContainer: function(allDay) {\r\n        var $allDayContainer = this.option(\"allDayContainer\");\r\n        var $container = this.itemsContainer().not($allDayContainer);\r\n        if (allDay && $allDayContainer) {\r\n            $container = $allDayContainer\r\n        }\r\n        return $container\r\n    },\r\n    _postprocessRenderItem: function(args) {\r\n        this._renderAppointment(args.itemElement, this._currentAppointmentSettings)\r\n    },\r\n    _renderAppointment: function($appointment, settings) {\r\n        $appointment.data(APPOINTMENT_SETTINGS_NAME, settings);\r\n        this._applyResourceDataAttr($appointment);\r\n        var data = this._getItemData($appointment);\r\n        var geometry = this.invoke(\"getAppointmentGeometry\", settings);\r\n        var allowResize = this.option(\"allowResize\") && (!(0, _type.isDefined)(settings.skipResizing) || (0, _type.isString)(settings.skipResizing));\r\n        var allowDrag = this.option(\"allowDrag\");\r\n        var allDay = settings.allDay;\r\n        this.invoke(\"setCellDataCacheAlias\", this._currentAppointmentSettings, geometry);\r\n        var deferredColor = this._getAppointmentColor($appointment, settings.groupIndex);\r\n        if (settings.virtual) {\r\n            this._processVirtualAppointment(settings, $appointment, data, deferredColor)\r\n        } else {\r\n            var info = settings.info;\r\n            this._createComponent($appointment, _uiScheduler2.default, {\r\n                observer: this.option(\"observer\"),\r\n                data: data,\r\n                geometry: geometry,\r\n                direction: settings.direction || \"vertical\",\r\n                allowResize: allowResize,\r\n                allowDrag: allowDrag,\r\n                allDay: allDay,\r\n                reduced: settings.appointmentReduced,\r\n                isCompact: settings.isCompact,\r\n                startDate: new Date(null === info || void 0 === info ? void 0 : info.appointment.startDate),\r\n                cellWidth: this.invoke(\"getCellWidth\"),\r\n                cellHeight: this.invoke(\"getCellHeight\"),\r\n                resizableConfig: this._resizableConfig(data, settings)\r\n            });\r\n            deferredColor.done(function(color) {\r\n                if (color) {\r\n                    $appointment.css(\"backgroundColor\", color)\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _applyResourceDataAttr: function($appointment) {\r\n        var resources = this.invoke(\"getResourcesFromItem\", this._getItemData($appointment));\r\n        if (resources) {\r\n            (0, _iterator.each)(resources, function(name, values) {\r\n                var attr = \"data-\" + (0, _common.normalizeKey)(name.toLowerCase()) + \"-\";\r\n                for (var i = 0; i < values.length; i++) {\r\n                    $appointment.attr(attr + (0, _common.normalizeKey)(values[i]), true)\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _resizableConfig: function(appointmentData, itemSetting) {\r\n        return {\r\n            area: this._calculateResizableArea(itemSetting, appointmentData),\r\n            onResizeStart: function(e) {\r\n                this._$currentAppointment = (0, _renderer.default)(e.element);\r\n                if (this.invoke(\"needRecalculateResizableArea\")) {\r\n                    var updatedArea = this._calculateResizableArea(this._$currentAppointment.data(APPOINTMENT_SETTINGS_NAME), this._$currentAppointment.data(\"dxItemData\"));\r\n                    e.component.option(\"area\", updatedArea);\r\n                    e.component._renderDragOffsets(e.event)\r\n                }\r\n                this._initialSize = {\r\n                    width: e.width,\r\n                    height: e.height\r\n                };\r\n                this._initialCoordinates = (0, _translator.locate)(this._$currentAppointment)\r\n            }.bind(this),\r\n            onResizeEnd: function(e) {\r\n                if (this._escPressed) {\r\n                    e.event.cancel = true;\r\n                    return\r\n                }\r\n                this._resizeEndHandler(e)\r\n            }.bind(this)\r\n        }\r\n    },\r\n    _calculateResizableArea: function(itemSetting, appointmentData) {\r\n        var area = this.$element().closest(\".dx-scrollable-content\");\r\n        return this.invoke(\"getResizableAppointmentArea\", {\r\n            coordinates: {\r\n                left: itemSetting.left,\r\n                top: 0,\r\n                groupIndex: itemSetting.groupIndex\r\n            },\r\n            allDay: itemSetting.allDay\r\n        }) || area\r\n    },\r\n    _resizeEndHandler: function(e) {\r\n        var scheduler = this.option(\"observer\");\r\n        var $element = (0, _renderer.default)(e.element);\r\n        var _$element$data = $element.data(\"dxAppointmentSettings\"),\r\n            info = _$element$data.info;\r\n        var sourceAppointment = this._getItemData($element);\r\n        var modifiedAppointmentAdapter = scheduler.createAppointmentAdapter(sourceAppointment).clone();\r\n        var startDate = this._getEndResizeAppointmentStartDate(e, sourceAppointment, info.appointment);\r\n        var endDate = info.appointment.endDate;\r\n        var dateRange = this._getDateRange(e, startDate, endDate);\r\n        modifiedAppointmentAdapter.startDate = new Date(dateRange[0]);\r\n        modifiedAppointmentAdapter.endDate = new Date(dateRange[1]);\r\n        this.notifyObserver(\"updateAppointmentAfterResize\", {\r\n            target: sourceAppointment,\r\n            data: modifiedAppointmentAdapter.clone({\r\n                pathTimeZone: \"fromGrid\"\r\n            }).source(),\r\n            $appointment: $element\r\n        })\r\n    },\r\n    _getEndResizeAppointmentStartDate: function(e, rawAppointment, appointmentInfo) {\r\n        var scheduler = this.option(\"observer\");\r\n        var appointmentAdapter = scheduler.createAppointmentAdapter(rawAppointment);\r\n        var startDate = appointmentInfo.startDate;\r\n        var recurrenceProcessor = (0, _recurrence.getRecurrenceProcessor)();\r\n        var recurrenceRule = appointmentAdapter.recurrenceRule,\r\n            startDateTimeZone = appointmentAdapter.startDateTimeZone;\r\n        var isAllDay = this.invoke(\"isAllDay\", rawAppointment);\r\n        var isRecurrent = recurrenceProcessor.isValidRecurrenceRule(recurrenceRule);\r\n        if (!e.handles.top && !isRecurrent && !isAllDay) {\r\n            startDate = scheduler.timeZoneCalculator.createDate(appointmentAdapter.startDate, {\r\n                appointmentTimeZone: startDateTimeZone,\r\n                path: \"toGrid\"\r\n            })\r\n        }\r\n        return startDate\r\n    },\r\n    _getDateRange: function(e, startDate, endDate) {\r\n        var itemData = this._getItemData(e.element);\r\n        var deltaTime = this.invoke(\"getDeltaTime\", e, this._initialSize, itemData);\r\n        var renderingStrategyDirection = this.invoke(\"getRenderingStrategyDirection\");\r\n        var isStartDateChanged = false;\r\n        var isAllDay = this.invoke(\"isAllDay\", itemData);\r\n        var needCorrectDates = this.invoke(\"needCorrectAppointmentDates\") && !isAllDay;\r\n        var startTime;\r\n        var endTime;\r\n        if (\"vertical\" !== renderingStrategyDirection || isAllDay) {\r\n            isStartDateChanged = this.option(\"rtlEnabled\") ? e.handles.right : e.handles.left\r\n        } else {\r\n            isStartDateChanged = e.handles.top\r\n        }\r\n        if (isStartDateChanged) {\r\n            startTime = needCorrectDates ? this._correctStartDateByDelta(startDate, deltaTime) : startDate.getTime() - deltaTime;\r\n            startTime += _utilsTimeZone.default.getTimezoneOffsetChangeInMs(startDate, endDate, startTime, endDate);\r\n            endTime = endDate.getTime()\r\n        } else {\r\n            startTime = startDate.getTime();\r\n            endTime = needCorrectDates ? this._correctEndDateByDelta(endDate, deltaTime) : endDate.getTime() + deltaTime;\r\n            endTime -= _utilsTimeZone.default.getTimezoneOffsetChangeInMs(startDate, endDate, startDate, endTime)\r\n        }\r\n        return [startTime, endTime]\r\n    },\r\n    _correctEndDateByDelta: function(endDate, deltaTime) {\r\n        var endDayHour = this.invoke(\"getEndDayHour\");\r\n        var startDayHour = this.invoke(\"getStartDayHour\");\r\n        var result = endDate.getTime() + deltaTime;\r\n        var visibleDayDuration = (endDayHour - startDayHour) * toMs(\"hour\");\r\n        var daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration);\r\n        var maxDate = new Date(endDate);\r\n        var minDate = new Date(endDate);\r\n        minDate.setHours(startDayHour, 0, 0, 0);\r\n        maxDate.setHours(endDayHour, 0, 0, 0);\r\n        if (result > maxDate.getTime() || result <= minDate.getTime()) {\r\n            var tailOfCurrentDay = maxDate.getTime() - endDate.getTime();\r\n            var tailOfPrevDays = deltaTime - tailOfCurrentDay;\r\n            var lastDay = new Date(endDate.setDate(endDate.getDate() + daysCount));\r\n            lastDay.setHours(startDayHour, 0, 0, 0);\r\n            result = lastDay.getTime() + tailOfPrevDays - visibleDayDuration * (daysCount - 1)\r\n        }\r\n        return result\r\n    },\r\n    _correctStartDateByDelta: function(startDate, deltaTime) {\r\n        var endDayHour = this.invoke(\"getEndDayHour\");\r\n        var startDayHour = this.invoke(\"getStartDayHour\");\r\n        var result = startDate.getTime() - deltaTime;\r\n        var visibleDayDuration = (endDayHour - startDayHour) * toMs(\"hour\");\r\n        var daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration);\r\n        var maxDate = new Date(startDate);\r\n        var minDate = new Date(startDate);\r\n        minDate.setHours(startDayHour, 0, 0, 0);\r\n        maxDate.setHours(endDayHour, 0, 0, 0);\r\n        if (result < minDate.getTime() || result >= maxDate.getTime()) {\r\n            var tailOfCurrentDay = startDate.getTime() - minDate.getTime();\r\n            var tailOfPrevDays = deltaTime - tailOfCurrentDay;\r\n            var firstDay = new Date(startDate.setDate(startDate.getDate() - daysCount));\r\n            firstDay.setHours(endDayHour, 0, 0, 0);\r\n            result = firstDay.getTime() - tailOfPrevDays + visibleDayDuration * (daysCount - 1)\r\n        }\r\n        return result\r\n    },\r\n    _tryGetAppointmentColor: function(appointment) {\r\n        var settings = (0, _renderer.default)(appointment).data(APPOINTMENT_SETTINGS_NAME);\r\n        if (!settings) {\r\n            return\r\n        }\r\n        return this._getAppointmentColor(appointment, settings.groupIndex)\r\n    },\r\n    _getAppointmentColor: function($appointment, groupIndex) {\r\n        var res = new _deferred.Deferred;\r\n        var response = this.invoke(\"getAppointmentColor\", {\r\n            itemData: this._getItemData($appointment),\r\n            groupIndex: groupIndex\r\n        });\r\n        response.done(function(color) {\r\n            return res.resolve(color)\r\n        });\r\n        return res.promise()\r\n    },\r\n    _calculateBoundOffset: function() {\r\n        return this.invoke(\"getBoundOffset\")\r\n    },\r\n    _virtualAppointments: {},\r\n    _processVirtualAppointment: function(appointmentSetting, $appointment, appointmentData, color) {\r\n        var virtualAppointment = appointmentSetting.virtual;\r\n        var virtualGroupIndex = virtualAppointment.index;\r\n        if (!(0, _type.isDefined)(this._virtualAppointments[virtualGroupIndex])) {\r\n            this._virtualAppointments[virtualGroupIndex] = {\r\n                coordinates: {\r\n                    top: virtualAppointment.top,\r\n                    left: virtualAppointment.left\r\n                },\r\n                items: {\r\n                    data: [],\r\n                    colors: [],\r\n                    settings: []\r\n                },\r\n                isAllDay: virtualAppointment.isAllDay ? true : false,\r\n                buttonColor: color\r\n            }\r\n        }\r\n        appointmentSetting.targetedAppointmentData = this.invoke(\"getTargetedAppointmentData\", appointmentData, $appointment);\r\n        this._virtualAppointments[virtualGroupIndex].items.settings.push(appointmentSetting);\r\n        this._virtualAppointments[virtualGroupIndex].items.data.push(appointmentData);\r\n        this._virtualAppointments[virtualGroupIndex].items.colors.push(color);\r\n        $appointment.remove()\r\n    },\r\n    _renderContentImpl: function() {\r\n        this.callBase();\r\n        this._renderDropDownAppointments()\r\n    },\r\n    _renderDropDownAppointments: function() {\r\n        var _this3 = this;\r\n        this._renderByFragments(function($commonFragment, $allDayFragment) {\r\n            (0, _iterator.each)(_this3._virtualAppointments, function(groupIndex) {\r\n                var virtualGroup = this._virtualAppointments[groupIndex];\r\n                var virtualItems = virtualGroup.items;\r\n                var virtualCoordinates = virtualGroup.coordinates;\r\n                var $fragment = virtualGroup.isAllDay ? $allDayFragment : $commonFragment;\r\n                var left = virtualCoordinates.left;\r\n                var buttonWidth = this.invoke(\"getDropDownAppointmentWidth\", virtualGroup.isAllDay);\r\n                var buttonHeight = this.invoke(\"getDropDownAppointmentHeight\");\r\n                var rtlOffset = this.option(\"rtlEnabled\") ? buttonWidth : 0;\r\n                this.notifyObserver(\"renderCompactAppointments\", {\r\n                    $container: $fragment,\r\n                    coordinates: {\r\n                        top: virtualCoordinates.top,\r\n                        left: left + rtlOffset\r\n                    },\r\n                    items: virtualItems,\r\n                    buttonColor: virtualGroup.buttonColor,\r\n                    width: buttonWidth - this.option(\"_collectorOffset\"),\r\n                    height: buttonHeight,\r\n                    onAppointmentClick: this.option(\"onItemClick\"),\r\n                    allowDrag: this.option(\"allowDrag\"),\r\n                    cellWidth: this.invoke(\"getCellWidth\"),\r\n                    isCompact: this.invoke(\"isAdaptive\") || this._isGroupCompact(virtualGroup),\r\n                    applyOffset: !virtualGroup.isAllDay && this.invoke(\"isApplyCompactAppointmentOffset\")\r\n                })\r\n            }.bind(_this3))\r\n        })\r\n    },\r\n    _isGroupCompact: function(virtualGroup) {\r\n        return !virtualGroup.isAllDay && this.invoke(\"supportCompactDropDownAppointments\")\r\n    },\r\n    _sortAppointmentsByStartDate: function(appointments) {\r\n        appointments.sort(function(a, b) {\r\n            var result = 0;\r\n            var firstDate = new Date(this.invoke(\"getField\", \"startDate\", a.settings || a)).getTime();\r\n            var secondDate = new Date(this.invoke(\"getField\", \"startDate\", b.settings || b)).getTime();\r\n            if (firstDate < secondDate) {\r\n                result = -1\r\n            }\r\n            if (firstDate > secondDate) {\r\n                result = 1\r\n            }\r\n            return result\r\n        }.bind(this))\r\n    },\r\n    _processRecurrenceAppointment: function(appointment, index, skipLongAppointments) {\r\n        var recurrenceRule = this.invoke(\"getField\", \"recurrenceRule\", appointment);\r\n        var result = {\r\n            parts: [],\r\n            indexes: []\r\n        };\r\n        if (recurrenceRule) {\r\n            var dates = appointment.settings || appointment;\r\n            var startDate = new Date(this.invoke(\"getField\", \"startDate\", dates));\r\n            var endDate = new Date(this.invoke(\"getField\", \"endDate\", dates));\r\n            var appointmentDuration = endDate.getTime() - startDate.getTime();\r\n            var recurrenceException = this.invoke(\"getField\", \"recurrenceException\", appointment);\r\n            var startViewDate = this.invoke(\"getStartViewDate\");\r\n            var endViewDate = this.invoke(\"getEndViewDate\");\r\n            var recurrentDates = (0, _recurrence.getRecurrenceProcessor)().generateDates({\r\n                rule: recurrenceRule,\r\n                exception: recurrenceException,\r\n                start: startDate,\r\n                end: endDate,\r\n                min: startViewDate,\r\n                max: endViewDate\r\n            });\r\n            var recurrentDateCount = appointment.settings ? 1 : recurrentDates.length;\r\n            for (var i = 0; i < recurrentDateCount; i++) {\r\n                var appointmentPart = (0, _extend.extend)({}, appointment, true);\r\n                if (recurrentDates[i]) {\r\n                    var appointmentSettings = this._applyStartDateToObj(recurrentDates[i], {});\r\n                    this._applyEndDateToObj(new Date(recurrentDates[i].getTime() + appointmentDuration), appointmentSettings);\r\n                    appointmentPart.settings = appointmentSettings\r\n                } else {\r\n                    appointmentPart.settings = dates\r\n                }\r\n                result.parts.push(appointmentPart);\r\n                if (!skipLongAppointments) {\r\n                    this._processLongAppointment(appointmentPart, result)\r\n                }\r\n            }\r\n            result.indexes.push(index)\r\n        }\r\n        return result\r\n    },\r\n    _processLongAppointment: function(appointment, result) {\r\n        var parts = this.splitAppointmentByDay(appointment);\r\n        var partCount = parts.length;\r\n        var endViewDate = this.invoke(\"getEndViewDate\").getTime();\r\n        var startViewDate = this.invoke(\"getStartViewDate\").getTime();\r\n        var startDateTimeZone = this.invoke(\"getField\", \"startDateTimeZone\", appointment);\r\n        result = result || {\r\n            parts: []\r\n        };\r\n        if (partCount > 1) {\r\n            (0, _extend.extend)(appointment, parts[0]);\r\n            for (var i = 1; i < partCount; i++) {\r\n                var startDate = this.invoke(\"getField\", \"startDate\", parts[i].settings).getTime();\r\n                startDate = this.invoke(\"convertDateByTimezone\", startDate, startDateTimeZone);\r\n                if (startDate < endViewDate && startDate > startViewDate) {\r\n                    result.parts.push(parts[i])\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _reduceRecurrenceAppointments: function(recurrenceIndexes, appointments) {\r\n        (0, _iterator.each)(recurrenceIndexes, function(i, index) {\r\n            appointments.splice(index - i, 1)\r\n        })\r\n    },\r\n    _combineAppointments: function(appointments, additionalAppointments) {\r\n        if (additionalAppointments.length) {\r\n            (0, _array.merge)(appointments, additionalAppointments)\r\n        }\r\n        this._sortAppointmentsByStartDate(appointments)\r\n    },\r\n    _applyStartDateToObj: function(startDate, obj) {\r\n        this.invoke(\"setField\", \"startDate\", obj, startDate);\r\n        return obj\r\n    },\r\n    _applyEndDateToObj: function(endDate, obj) {\r\n        this.invoke(\"setField\", \"endDate\", obj, endDate);\r\n        return obj\r\n    },\r\n    moveAppointmentBack: function(dragEvent) {\r\n        var $appointment = this._$currentAppointment;\r\n        var size = this._initialSize;\r\n        var coords = this._initialCoordinates;\r\n        if (dragEvent) {\r\n            if ((0, _type.isDeferred)(dragEvent.cancel)) {\r\n                dragEvent.cancel.resolve(true)\r\n            } else {\r\n                dragEvent.cancel = true\r\n            }\r\n        }\r\n        this.notifyObserver(\"moveBack\");\r\n        if ($appointment && !dragEvent) {\r\n            if (coords) {\r\n                (0, _translator.move)($appointment, coords);\r\n                delete this._initialSize\r\n            }\r\n            if (size) {\r\n                $appointment.outerWidth(size.width);\r\n                $appointment.outerHeight(size.height);\r\n                delete this._initialCoordinates\r\n            }\r\n        }\r\n    },\r\n    focus: function() {\r\n        if (this._$currentAppointment) {\r\n            var focusedElement = (0, _element.getPublicElement)(this._$currentAppointment);\r\n            this.option(\"focusedElement\", focusedElement);\r\n            _events_engine.default.trigger(focusedElement, \"focus\")\r\n        }\r\n    },\r\n    splitAppointmentByDay: function(appointment) {\r\n        var dates = appointment.settings || appointment;\r\n        var originalStartDate = new Date(this.invoke(\"getField\", \"startDate\", dates));\r\n        var startDate = _date.default.makeDate(originalStartDate);\r\n        var endDate = _date.default.makeDate(this.invoke(\"getField\", \"endDate\", dates));\r\n        var startDateTimeZone = this.invoke(\"getField\", \"startDateTimeZone\", appointment);\r\n        var endDateTimeZone = this.invoke(\"getField\", \"endDateTimeZone\", appointment);\r\n        var maxAllowedDate = this.invoke(\"getEndViewDate\");\r\n        var startDayHour = this.invoke(\"getStartDayHour\");\r\n        var endDayHour = this.invoke(\"getEndDayHour\");\r\n        var appointmentIsLong = this.invoke(\"appointmentTakesSeveralDays\", appointment);\r\n        var result = [];\r\n        startDate = this.invoke(\"convertDateByTimezone\", startDate, startDateTimeZone);\r\n        endDate = this.invoke(\"convertDateByTimezone\", endDate, endDateTimeZone);\r\n        if (startDate.getHours() <= endDayHour && startDate.getHours() >= startDayHour && !appointmentIsLong) {\r\n            result.push(this._applyStartDateToObj(new Date(startDate), {\r\n                appointmentData: appointment\r\n            }));\r\n            startDate.setDate(startDate.getDate() + 1)\r\n        }\r\n        while (appointmentIsLong && startDate.getTime() < endDate.getTime() && startDate < maxAllowedDate) {\r\n            var currentStartDate = new Date(startDate);\r\n            var currentEndDate = new Date(startDate);\r\n            this._checkStartDate(currentStartDate, originalStartDate, startDayHour);\r\n            this._checkEndDate(currentEndDate, endDate, endDayHour);\r\n            var appointmentData = (0, _object.deepExtendArraySafe)({}, appointment, true);\r\n            var appointmentSettings = {};\r\n            this._applyStartDateToObj(currentStartDate, appointmentSettings);\r\n            this._applyEndDateToObj(currentEndDate, appointmentSettings);\r\n            appointmentData.settings = appointmentSettings;\r\n            result.push(appointmentData);\r\n            startDate = _date.default.trimTime(startDate);\r\n            startDate.setDate(startDate.getDate() + 1);\r\n            startDate.setHours(startDayHour)\r\n        }\r\n        return result\r\n    },\r\n    _checkStartDate: function(currentDate, originalDate, startDayHour) {\r\n        if (!_date.default.sameDate(currentDate, originalDate) || currentDate.getHours() <= startDayHour) {\r\n            currentDate.setHours(startDayHour, 0, 0, 0)\r\n        } else {\r\n            currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds())\r\n        }\r\n    },\r\n    _checkEndDate: function(currentDate, originalDate, endDayHour) {\r\n        if (!_date.default.sameDate(currentDate, originalDate) || currentDate.getHours() > endDayHour) {\r\n            currentDate.setHours(endDayHour, 0, 0, 0)\r\n        } else {\r\n            currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds())\r\n        }\r\n    }\r\n}).include(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerAppointments\", SchedulerAppointments);\r\nvar _default = SchedulerAppointments;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollable.native.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.scrollbar\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCROLLABLE_NATIVE = \"dxNativeScrollable\";\r\nvar SCROLLABLE_NATIVE_CLASS = \"dx-scrollable-native\";\r\nvar SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar HIDE_SCROLLBAR_TIMEOUT = 500;\r\nvar NativeStrategy = _class.default.inherit({\r\n    ctor: function(scrollable) {\r\n        this._init(scrollable)\r\n    },\r\n    _init: function(scrollable) {\r\n        this._component = scrollable;\r\n        this._$element = scrollable.$element();\r\n        this._$container = scrollable._$container;\r\n        this._$content = scrollable._$content;\r\n        this._direction = scrollable.option(\"direction\");\r\n        this._useSimulatedScrollbar = scrollable.option(\"useSimulatedScrollbar\");\r\n        this._showScrollbar = scrollable.option(\"showScrollbar\");\r\n        this.option = scrollable.option.bind(scrollable);\r\n        this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n        this._isLocked = scrollable._isLocked.bind(scrollable);\r\n        this._isDirection = scrollable._isDirection.bind(scrollable);\r\n        this._allowedDirection = scrollable._allowedDirection.bind(scrollable)\r\n    },\r\n    render: function() {\r\n        this._renderPushBackOffset();\r\n        var device = _devices.default.real();\r\n        var deviceType = device.platform;\r\n        this._$element.addClass(SCROLLABLE_NATIVE_CLASS).addClass(SCROLLABLE_NATIVE_CLASS + \"-\" + deviceType).toggleClass(SCROLLABLE_SCROLLBARS_HIDDEN, !this._showScrollbar);\r\n        if (this._showScrollbar && this._useSimulatedScrollbar) {\r\n            this._renderScrollbars()\r\n        }\r\n    },\r\n    updateBounds: _common.noop,\r\n    _renderPushBackOffset: function() {\r\n        var pushBackValue = this.option(\"pushBackValue\");\r\n        if (!pushBackValue && !this._component._lastPushBackValue) {\r\n            return\r\n        }\r\n        this._$content.css({\r\n            paddingTop: pushBackValue,\r\n            paddingBottom: pushBackValue\r\n        });\r\n        this._component._lastPushBackValue = pushBackValue\r\n    },\r\n    _renderScrollbars: function() {\r\n        this._scrollbars = {};\r\n        this._hideScrollbarTimeout = 0;\r\n        this._$element.addClass(SCROLLABLE_SCROLLBAR_SIMULATED);\r\n        this._renderScrollbar(VERTICAL);\r\n        this._renderScrollbar(HORIZONTAL)\r\n    },\r\n    _renderScrollbar: function(direction) {\r\n        if (!this._isDirection(direction)) {\r\n            return\r\n        }\r\n        this._scrollbars[direction] = new _ui.default((0, _renderer.default)(\"<div>\").appendTo(this._$element), {\r\n            direction: direction,\r\n            expandable: this._component.option(\"scrollByThumb\")\r\n        })\r\n    },\r\n    handleInit: _common.noop,\r\n    handleStart: function() {\r\n        this._disablePushBack = true\r\n    },\r\n    handleMove: function(e) {\r\n        if (this._isLocked()) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n        if (this._allowedDirection()) {\r\n            e.originalEvent.isScrollingEvent = true\r\n        }\r\n    },\r\n    handleEnd: function() {\r\n        this._disablePushBack = false\r\n    },\r\n    handleCancel: _common.noop,\r\n    handleStop: _common.noop,\r\n    _eachScrollbar: function(callback) {\r\n        callback = callback.bind(this);\r\n        (0, _iterator.each)(this._scrollbars || {}, function(direction, scrollbar) {\r\n            callback(scrollbar, direction)\r\n        })\r\n    },\r\n    createActions: function() {\r\n        this._scrollAction = this._createActionByOption(\"onScroll\");\r\n        this._updateAction = this._createActionByOption(\"onUpdated\")\r\n    },\r\n    _createActionArgs: function() {\r\n        var location = this.location();\r\n        var containerElement = this._$container.get(0);\r\n        return {\r\n            event: this._eventForUserAction,\r\n            scrollOffset: {\r\n                top: -location.top,\r\n                left: -location.left\r\n            },\r\n            reachedLeft: this._isDirection(HORIZONTAL) ? location.left >= 0 : void 0,\r\n            reachedRight: this._isDirection(HORIZONTAL) ? Math.abs(location.left) >= containerElement.scrollWidth - containerElement.clientWidth : void 0,\r\n            reachedTop: this._isDirection(VERTICAL) ? location.top >= 0 : void 0,\r\n            reachedBottom: this._isDirection(VERTICAL) ? Math.abs(location.top) >= containerElement.scrollHeight - containerElement.clientHeight - 2 * this.option(\"pushBackValue\") : void 0\r\n        }\r\n    },\r\n    handleScroll: function(e) {\r\n        this._component._updateRtlConfig();\r\n        if (!this._isScrollLocationChanged()) {\r\n            e.stopImmediatePropagation();\r\n            return\r\n        }\r\n        this._eventForUserAction = e;\r\n        this._moveScrollbars();\r\n        this._scrollAction(this._createActionArgs());\r\n        this._lastLocation = this.location();\r\n        this._pushBackFromBoundary()\r\n    },\r\n    _pushBackFromBoundary: function() {\r\n        var pushBackValue = this.option(\"pushBackValue\");\r\n        if (!pushBackValue || this._disablePushBack) {\r\n            return\r\n        }\r\n        var scrollOffset = this._containerSize.height - this._contentSize.height;\r\n        var scrollTopPos = this._$container.scrollTop();\r\n        var scrollBottomPos = scrollOffset + scrollTopPos - 2 * pushBackValue;\r\n        if (!scrollTopPos) {\r\n            this._$container.scrollTop(pushBackValue)\r\n        } else {\r\n            if (!scrollBottomPos) {\r\n                this._$container.scrollTop(pushBackValue - scrollOffset)\r\n            }\r\n        }\r\n    },\r\n    _isScrollLocationChanged: function() {\r\n        var currentLocation = this.location();\r\n        var lastLocation = this._lastLocation || {};\r\n        var isTopChanged = lastLocation.top !== currentLocation.top;\r\n        var isLeftChanged = lastLocation.left !== currentLocation.left;\r\n        return isTopChanged || isLeftChanged\r\n    },\r\n    _moveScrollbars: function() {\r\n        this._eachScrollbar(function(scrollbar) {\r\n            scrollbar.moveTo(this.location());\r\n            scrollbar.option(\"visible\", true)\r\n        });\r\n        this._hideScrollbars()\r\n    },\r\n    _hideScrollbars: function() {\r\n        clearTimeout(this._hideScrollbarTimeout);\r\n        this._hideScrollbarTimeout = setTimeout(function() {\r\n            this._eachScrollbar(function(scrollbar) {\r\n                scrollbar.option(\"visible\", false)\r\n            })\r\n        }.bind(this), HIDE_SCROLLBAR_TIMEOUT)\r\n    },\r\n    location: function() {\r\n        return {\r\n            left: -this._$container.scrollLeft(),\r\n            top: this.option(\"pushBackValue\") - this._$container.scrollTop()\r\n        }\r\n    },\r\n    disabledChanged: _common.noop,\r\n    update: function() {\r\n        this._update();\r\n        this._updateAction(this._createActionArgs())\r\n    },\r\n    _update: function() {\r\n        this._updateDimensions();\r\n        this._updateScrollbars()\r\n    },\r\n    _updateDimensions: function() {\r\n        this._containerSize = {\r\n            height: this._$container.height(),\r\n            width: this._$container.width()\r\n        };\r\n        this._componentContentSize = {\r\n            height: this._component.$content().height(),\r\n            width: this._component.$content().width()\r\n        };\r\n        this._contentSize = {\r\n            height: this._$content.height(),\r\n            width: this._$content.width()\r\n        };\r\n        this._pushBackFromBoundary()\r\n    },\r\n    _updateScrollbars: function() {\r\n        this._eachScrollbar(function(scrollbar, direction) {\r\n            var dimension = direction === VERTICAL ? \"height\" : \"width\";\r\n            scrollbar.option({\r\n                containerSize: this._containerSize[dimension],\r\n                contentSize: this._componentContentSize[dimension]\r\n            });\r\n            scrollbar.update()\r\n        })\r\n    },\r\n    _allowedDirections: function() {\r\n        return {\r\n            vertical: this._isDirection(VERTICAL) && this._contentSize.height > this._containerSize.height,\r\n            horizontal: this._isDirection(HORIZONTAL) && this._contentSize.width > this._containerSize.width\r\n        }\r\n    },\r\n    dispose: function() {\r\n        var className = this._$element.get(0).className;\r\n        var scrollableNativeRegexp = new RegExp(SCROLLABLE_NATIVE_CLASS + \"\\\\S*\", \"g\");\r\n        if (scrollableNativeRegexp.test(className)) {\r\n            this._$element.removeClass(className.match(scrollableNativeRegexp).join(\" \"))\r\n        }\r\n        _events_engine.default.off(this._$element, \".\" + SCROLLABLE_NATIVE);\r\n        _events_engine.default.off(this._$container, \".\" + SCROLLABLE_NATIVE);\r\n        this._removeScrollbars();\r\n        clearTimeout(this._hideScrollbarTimeout)\r\n    },\r\n    _removeScrollbars: function() {\r\n        this._eachScrollbar(function(scrollbar) {\r\n            scrollbar.$element().remove()\r\n        })\r\n    },\r\n    scrollBy: function(distance) {\r\n        var location = this.location();\r\n        this._$container.scrollTop(Math.round(-location.top - distance.top + this.option(\"pushBackValue\")));\r\n        this._$container.scrollLeft(Math.round(-location.left - distance.left))\r\n    },\r\n    validate: function(e) {\r\n        if (this.option(\"disabled\")) {\r\n            return false\r\n        }\r\n        if ((0, _index.isDxMouseWheelEvent)(e) && this._isScrolledInMaxDirection(e)) {\r\n            return false\r\n        }\r\n        return !!this._allowedDirection()\r\n    },\r\n    _isScrolledInMaxDirection: function(e) {\r\n        var container = this._$container.get(0);\r\n        var result;\r\n        if (e.delta > 0) {\r\n            result = e.shiftKey ? !container.scrollLeft : !container.scrollTop\r\n        } else {\r\n            if (e.shiftKey) {\r\n                result = container.clientWidth + container.scrollLeft >= container.scrollWidth\r\n            } else {\r\n                result = container.clientHeight + container.scrollTop >= container.scrollHeight\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    getDirection: function() {\r\n        return this._allowedDirection()\r\n    },\r\n    verticalOffset: function() {\r\n        return this.option(\"pushBackValue\")\r\n    }\r\n});\r\nvar _default = NativeStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/funnel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _funnel = _interopRequireDefault(require(\"./funnel/funnel\"));\r\nvar _label = require(\"./funnel/label\");\r\nvar _export = require(\"./core/export\");\r\nvar _title = require(\"./core/title\");\r\nvar _legend = require(\"./components/legend\");\r\nvar _tracker = require(\"./funnel/tracker\");\r\nvar _tooltip = require(\"./funnel/tooltip\");\r\nvar _loading_indicator = require(\"./core/loading_indicator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_funnel.default.addPlugin(_label.plugin);\r\n_funnel.default.addPlugin(_export.plugin);\r\n_funnel.default.addPlugin(_title.plugin);\r\n_funnel.default.addPlugin(_legend.plugin);\r\n_funnel.default.addPlugin(_tracker.plugin);\r\n_funnel.default.addPlugin(_tooltip.plugin);\r\n_funnel.default.addPlugin(_loading_indicator.plugin);\r\nvar _default = _funnel.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/html_editor/converterController.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar ConverterController = function() {\r\n    function ConverterController() {\r\n        _classCallCheck(this, ConverterController);\r\n        this._converters = {}\r\n    }\r\n    _createClass(ConverterController, [{\r\n        key: \"addConverter\",\r\n        value: function(name, converter) {\r\n            this._converters[name] = converter\r\n        }\r\n    }, {\r\n        key: \"getConverter\",\r\n        value: function(name) {\r\n            return this._converters[name]\r\n        }\r\n    }]);\r\n    return ConverterController\r\n}();\r\nvar controller = new ConverterController;\r\nvar _default = controller;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.strategy.action_sheet.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiToolbar = _interopRequireDefault(require(\"./ui.toolbar.strategy\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _action_sheet = _interopRequireDefault(require(\"../action_sheet\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ActionSheetStrategy = _uiToolbar.default.inherit({\r\n    NAME: \"actionSheet\",\r\n    _getMenuItemTemplate: function() {\r\n        return this._toolbar._getTemplate(\"actionSheetItem\")\r\n    },\r\n    render: function() {\r\n        if (!this._hasVisibleMenuItems()) {\r\n            return\r\n        }\r\n        this.callBase()\r\n    },\r\n    _menuWidgetClass: function() {\r\n        return _action_sheet.default\r\n    },\r\n    _menuContainer: function() {\r\n        return this._toolbar.$element()\r\n    },\r\n    _widgetOptions: function() {\r\n        return (0, _extend.extend)({}, this.callBase(), {\r\n            target: this._$button,\r\n            showTitle: false\r\n        })\r\n    },\r\n    _menuButtonOptions: function() {\r\n        return (0, _extend.extend)({}, this.callBase(), {\r\n            icon: \"overflow\"\r\n        })\r\n    },\r\n    _toggleMenu: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._menu.toggle(this._menuShown);\r\n        this._menuShown = false\r\n    }\r\n});\r\nvar _default = ActionSheetStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/select_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _element = require(\"../core/element\");\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _utils = require(\"./widget/utils.ink_ripple\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"./drop_down_editor/ui.drop_down_list\"));\r\nvar _index = require(\"../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DISABLED_STATE_SELECTOR = \".dx-state-disabled\";\r\nvar SELECTBOX_CLASS = \"dx-selectbox\";\r\nvar SELECTBOX_POPUP_CLASS = \"dx-selectbox-popup\";\r\nvar SELECTBOX_CONTAINER_CLASS = \"dx-selectbox-container\";\r\nvar SELECTBOX_POPUP_WRAPPER_CLASS = \"dx-selectbox-popup-wrapper\";\r\nvar SelectBox = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        var that = this;\r\n        var parent = this.callBase();\r\n        var clearSelectBox = function(e) {\r\n            var isEditable = this._isEditable();\r\n            if (!isEditable) {\r\n                if (this.option(\"showClearButton\")) {\r\n                    e.preventDefault();\r\n                    this.reset()\r\n                }\r\n            } else {\r\n                if (this._valueSubstituted()) {\r\n                    this._preventFiltering = true\r\n                }\r\n            }\r\n            this._savedTextRemoveEvent = e;\r\n            this._preventSubstitution = true\r\n        };\r\n        var searchIfNeeded = function() {\r\n            if (that.option(\"searchEnabled\") && that._valueSubstituted()) {\r\n                that._searchHandler()\r\n            }\r\n        };\r\n        return (0, _extend.extend)({}, parent, {\r\n            tab: function() {\r\n                if (this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")) {\r\n                    this._cleanInputSelection()\r\n                }\r\n                if (this._wasSearch()) {\r\n                    this._clearFilter()\r\n                }\r\n                parent.tab && parent.tab.apply(this, arguments)\r\n            },\r\n            upArrow: function(e) {\r\n                if (parent.upArrow && parent.upArrow.apply(this, arguments)) {\r\n                    if (!this.option(\"opened\")) {\r\n                        this._setNextValue(e)\r\n                    }\r\n                    return true\r\n                }\r\n            },\r\n            downArrow: function(e) {\r\n                if (parent.downArrow && parent.downArrow.apply(this, arguments)) {\r\n                    if (!this.option(\"opened\")) {\r\n                        this._setNextValue(e)\r\n                    }\r\n                    return true\r\n                }\r\n            },\r\n            leftArrow: function() {\r\n                searchIfNeeded();\r\n                parent.leftArrow && parent.leftArrow.apply(this, arguments)\r\n            },\r\n            rightArrow: function() {\r\n                searchIfNeeded();\r\n                parent.rightArrow && parent.rightArrow.apply(this, arguments)\r\n            },\r\n            home: function() {\r\n                searchIfNeeded();\r\n                parent.home && parent.home.apply(this, arguments)\r\n            },\r\n            end: function() {\r\n                searchIfNeeded();\r\n                parent.end && parent.end.apply(this, arguments)\r\n            },\r\n            escape: function() {\r\n                var result = parent.escape && parent.escape.apply(this, arguments);\r\n                this._cancelEditing();\r\n                return (0, _type.isDefined)(result) ? result : true\r\n            },\r\n            enter: function(e) {\r\n                var isOpened = this.option(\"opened\");\r\n                var inputText = this._input().val().trim();\r\n                var isCustomText = inputText && this._list && !this._list.option(\"focusedElement\");\r\n                if (!inputText && (0, _type.isDefined)(this.option(\"value\")) && this.option(\"allowClearing\")) {\r\n                    this.option({\r\n                        selectedItem: null,\r\n                        value: null\r\n                    });\r\n                    this.close()\r\n                } else {\r\n                    if (this.option(\"acceptCustomValue\")) {\r\n                        e.preventDefault();\r\n                        if (isCustomText) {\r\n                            this._valueChangeEventHandler(e);\r\n                            if (isOpened) {\r\n                                this._toggleOpenState()\r\n                            }\r\n                        }\r\n                        return isOpened\r\n                    }\r\n                    if (parent.enter && parent.enter.apply(this, arguments)) {\r\n                        return isOpened\r\n                    }\r\n                }\r\n            },\r\n            space: function(e) {\r\n                var isOpened = this.option(\"opened\");\r\n                var isSearchEnabled = this.option(\"searchEnabled\");\r\n                var acceptCustomValue = this.option(\"acceptCustomValue\");\r\n                if (!isOpened || isSearchEnabled || acceptCustomValue) {\r\n                    return\r\n                }\r\n                e.preventDefault();\r\n                this._valueChangeEventHandler(e);\r\n                return true\r\n            },\r\n            backspace: clearSelectBox,\r\n            del: clearSelectBox\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            placeholder: _message.default.format(\"Select\"),\r\n            fieldTemplate: null,\r\n            valueChangeEvent: \"change\",\r\n            acceptCustomValue: false,\r\n            onCustomItemCreating: function(e) {\r\n                if (!(0, _type.isDefined)(e.customItem)) {\r\n                    e.customItem = e.text\r\n                }\r\n            },\r\n            showSelectionControls: false,\r\n            allowClearing: true,\r\n            tooltipEnabled: false,\r\n            openOnFieldClick: true,\r\n            showDropDownButton: true,\r\n            displayCustomValue: false,\r\n            useInkRipple: false,\r\n            useHiddenSubmitElement: true\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initCustomItemCreatingAction()\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(SELECTBOX_CLASS);\r\n        this._renderTooltip();\r\n        this.option(\"useInkRipple\") && this._renderInkRipple();\r\n        this.callBase();\r\n        this._$container.addClass(SELECTBOX_CONTAINER_CLASS)\r\n    },\r\n    _renderInkRipple: function() {\r\n        this._inkRipple = (0, _utils.render)()\r\n    },\r\n    _toggleActiveState: function($element, value, e) {\r\n        this.callBase.apply(this, arguments);\r\n        if (!this._inkRipple || this._isEditable()) {\r\n            return\r\n        }\r\n        var config = {\r\n            element: this._inputWrapper(),\r\n            event: e\r\n        };\r\n        if (value) {\r\n            this._inkRipple.showWave(config)\r\n        } else {\r\n            this._inkRipple.hideWave(config)\r\n        }\r\n    },\r\n    _createPopup: function() {\r\n        this.callBase();\r\n        this._popup.$element().addClass(SELECTBOX_POPUP_CLASS);\r\n        this._popup.overlayContent().attr(\"tabindex\", -1)\r\n    },\r\n    _popupWrapperClass: function() {\r\n        return this.callBase() + \" \" + SELECTBOX_POPUP_WRAPPER_CLASS\r\n    },\r\n    _cancelEditing: function() {\r\n        if (!this.option(\"searchEnabled\") && this._list) {\r\n            this._focusListElement(null);\r\n            this._updateField(this.option(\"selectedItem\"))\r\n        }\r\n    },\r\n    _renderOpenedState: function() {\r\n        this.callBase();\r\n        if (this.option(\"opened\")) {\r\n            this._scrollToSelectedItem();\r\n            this._focusSelectedElement()\r\n        }\r\n    },\r\n    _focusSelectedElement: function() {\r\n        var searchValue = this._searchValue();\r\n        if (!searchValue) {\r\n            this._focusListElement(null);\r\n            return\r\n        }\r\n        var $listItems = this._list._itemElements();\r\n        var index = (0, _array.inArray)(this.option(\"selectedItem\"), this.option(\"items\"));\r\n        var focusedElement = index >= 0 && !this._isCustomItemSelected() ? $listItems.eq(index) : null;\r\n        this._focusListElement(focusedElement)\r\n    },\r\n    _renderFocusedElement: function() {\r\n        if (!this._list) {\r\n            return\r\n        }\r\n        var searchValue = this._searchValue();\r\n        if (!searchValue || this.option(\"acceptCustomValue\")) {\r\n            this._focusListElement(null);\r\n            return\r\n        }\r\n        var $listItems = this._list._itemElements();\r\n        var focusedElement = $listItems.not(DISABLED_STATE_SELECTOR).eq(0);\r\n        this._focusListElement(focusedElement)\r\n    },\r\n    _focusListElement: function(element) {\r\n        this._preventInputValueRender = true;\r\n        this._list.option(\"focusedElement\", (0, _element.getPublicElement)(element));\r\n        delete this._preventInputValueRender\r\n    },\r\n    _scrollToSelectedItem: function() {\r\n        this._list && this._list.scrollToItem(this._list.option(\"selectedItem\"))\r\n    },\r\n    _listContentReadyHandler: function() {\r\n        this.callBase();\r\n        var isPaginate = this._dataSource && this._dataSource.paginate();\r\n        if (isPaginate && this._needPopupRepaint()) {\r\n            return\r\n        }\r\n        this._scrollToSelectedItem()\r\n    },\r\n    _renderValue: function() {\r\n        this._renderInputValue();\r\n        this._setSubmitValue();\r\n        return (new _deferred.Deferred).resolve()\r\n    },\r\n    _renderInputValue: function() {\r\n        return this.callBase().always(function() {\r\n            this._renderInputValueAsync()\r\n        }.bind(this))\r\n    },\r\n    _renderInputValueAsync: function() {\r\n        this._renderTooltip();\r\n        this._renderInputValueImpl().always(function() {\r\n            this._refreshSelected()\r\n        }.bind(this))\r\n    },\r\n    _renderInputValueImpl: function() {\r\n        this._renderField();\r\n        return (new _deferred.Deferred).resolve()\r\n    },\r\n    _setNextItem: function(step) {\r\n        var item = this._calcNextItem(step);\r\n        var value = this._valueGetter(item);\r\n        this._setValue(value)\r\n    },\r\n    _setNextValue: function(e) {\r\n        var dataSourceIsLoaded = this._dataSource.isLoaded() ? (new _deferred.Deferred).resolve() : this._dataSource.load();\r\n        dataSourceIsLoaded.done(function() {\r\n            var selectedIndex = this._getSelectedIndex();\r\n            var hasPages = this._dataSource.pageSize();\r\n            var isLastPage = this._dataSource.isLastPage();\r\n            var isLastItem = selectedIndex === this._items().length - 1;\r\n            this._saveValueChangeEvent(e);\r\n            var step = \"downArrow\" === (0, _index.normalizeKeyName)(e) ? 1 : -1;\r\n            if (hasPages && !isLastPage && isLastItem && step > 0) {\r\n                if (!this._popup) {\r\n                    this._createPopup()\r\n                }\r\n                if (!this._dataSource.isLoading()) {\r\n                    this._list._loadNextPage().done(this._setNextItem.bind(this, step))\r\n                }\r\n            } else {\r\n                this._setNextItem(step)\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _setSelectedItem: function(item) {\r\n        var isUnknownItem = !this._isCustomValueAllowed() && void 0 === item;\r\n        this.callBase(isUnknownItem ? null : item);\r\n        if (!isUnknownItem && (!this._isEditable() || this._isCustomItemSelected())) {\r\n            this._setListOption(\"selectedItem\", this.option(\"selectedItem\"))\r\n        }\r\n    },\r\n    _isCustomValueAllowed: function() {\r\n        return this.option(\"acceptCustomValue\") || this.callBase()\r\n    },\r\n    _displayValue: function(item) {\r\n        item = !(0, _type.isDefined)(item) && this._isCustomValueAllowed() ? this.option(\"value\") : item;\r\n        return this.callBase(item)\r\n    },\r\n    _listConfig: function() {\r\n        var result = (0, _extend.extend)(this.callBase(), {\r\n            pageLoadMode: \"scrollBottom\",\r\n            onSelectionChanged: this._getSelectionChangeHandler(),\r\n            selectedItem: this.option(\"selectedItem\"),\r\n            onFocusedItemChanged: this._listFocusedItemChangeHandler.bind(this)\r\n        });\r\n        if (this.option(\"showSelectionControls\")) {\r\n            (0, _extend.extend)(result, {\r\n                showSelectionControls: true,\r\n                selectionByClick: true\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    _listFocusedItemChangeHandler: function(e) {\r\n        if (this._preventInputValueRender) {\r\n            return\r\n        }\r\n        var list = e.component;\r\n        var focusedElement = (0, _renderer.default)(list.option(\"focusedElement\"));\r\n        var focusedItem = list._getItemData(focusedElement);\r\n        this._updateField(focusedItem)\r\n    },\r\n    _updateField: function(item) {\r\n        var fieldTemplate = this._getTemplateByOption(\"fieldTemplate\");\r\n        if (!(fieldTemplate && this.option(\"fieldTemplate\"))) {\r\n            var text = this._displayGetter(item);\r\n            this.option(\"text\", text);\r\n            this._renderDisplayText(text);\r\n            return\r\n        }\r\n        this._renderField()\r\n    },\r\n    _getSelectionChangeHandler: function() {\r\n        return this.option(\"showSelectionControls\") ? this._selectionChangeHandler.bind(this) : _common.noop\r\n    },\r\n    _selectionChangeHandler: function(e) {\r\n        (0, _iterator.each)(e.addedItems || [], function(_, addedItem) {\r\n            this._setValue(this._valueGetter(addedItem))\r\n        }.bind(this))\r\n    },\r\n    _getActualSearchValue: function() {\r\n        return this._dataSource.searchValue()\r\n    },\r\n    _toggleOpenState: function(isVisible) {\r\n        if (this.option(\"disabled\")) {\r\n            return\r\n        }\r\n        isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n        if (!isVisible) {\r\n            this._restoreInputText(true)\r\n        }\r\n        if (this._wasSearch() && isVisible) {\r\n            this._wasSearch(false);\r\n            var showDataImmediately = this.option(\"showDataBeforeSearch\") || 0 === this.option(\"minSearchLength\");\r\n            if (showDataImmediately && this._dataSource) {\r\n                if (this._searchTimer) {\r\n                    return\r\n                }\r\n                var searchValue = this._getActualSearchValue();\r\n                searchValue && this._wasSearch(true);\r\n                this._filterDataSource(searchValue || null)\r\n            } else {\r\n                this._setListOption(\"items\", [])\r\n            }\r\n        }\r\n        if (isVisible) {\r\n            this._scrollToSelectedItem()\r\n        }\r\n        this.callBase(isVisible)\r\n    },\r\n    _renderTooltip: function() {\r\n        if (this.option(\"tooltipEnabled\")) {\r\n            this.$element().attr(\"title\", this.option(\"displayValue\"))\r\n        }\r\n    },\r\n    _renderDimensions: function() {\r\n        this.callBase();\r\n        this._dimensionChanged()\r\n    },\r\n    _isValueEqualInputText: function() {\r\n        var initialSelectedItem = this.option(\"selectedItem\");\r\n        var value = this._displayGetter(initialSelectedItem);\r\n        var displayValue = value ? String(value) : \"\";\r\n        var inputText = this._searchValue();\r\n        return displayValue === inputText\r\n    },\r\n    _popupHidingHandler: function() {\r\n        if (this._isValueEqualInputText()) {\r\n            this._cancelEditing()\r\n        }\r\n        this.callBase()\r\n    },\r\n    _restoreInputText: function(saveEditingValue) {\r\n        if (this.option(\"readOnly\")) {\r\n            return\r\n        }\r\n        this._loadItemDeferred && this._loadItemDeferred.always(function() {\r\n            var initialSelectedItem = this.option(\"selectedItem\");\r\n            if (this.option(\"acceptCustomValue\")) {\r\n                if (!saveEditingValue) {\r\n                    this._updateField(initialSelectedItem);\r\n                    this._clearFilter()\r\n                }\r\n                return\r\n            }\r\n            if (this.option(\"searchEnabled\")) {\r\n                if (!this._searchValue() && this.option(\"allowClearing\")) {\r\n                    this._clearTextValue();\r\n                    return\r\n                }\r\n            }\r\n            if (this._isValueEqualInputText()) {\r\n                return\r\n            }\r\n            this._renderInputValue().always(function(selectedItem) {\r\n                var newSelectedItem = (0, _common.ensureDefined)(selectedItem, initialSelectedItem);\r\n                this._setSelectedItem(newSelectedItem);\r\n                this._updateField(newSelectedItem);\r\n                this._clearFilter()\r\n            }.bind(this))\r\n        }.bind(this))\r\n    },\r\n    _focusOutHandler: function(e) {\r\n        if (!this._preventNestedFocusEvent(e)) {\r\n            var isOverlayTarget = this._isOverlayNestedTarget(e.relatedTarget);\r\n            if (!isOverlayTarget) {\r\n                this._restoreInputText();\r\n                this._clearSearchTimer()\r\n            }\r\n            var shouldCancelSearch = this._wasSearch() && !this.option(\"acceptCustomValue\") && this.option(\"searchEnabled\") && this.option(\"opened\") && !isOverlayTarget;\r\n            if (shouldCancelSearch) {\r\n                this._searchCanceled()\r\n            }\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    _isOverlayNestedTarget: function(target) {\r\n        return !!(0, _renderer.default)(target).closest(\".\".concat(SELECTBOX_POPUP_WRAPPER_CLASS)).length\r\n    },\r\n    _clearTextValue: function() {\r\n        if (this.option(\"selectedItem\")) {\r\n            if (this._savedTextRemoveEvent) {\r\n                this._saveValueChangeEvent(this._savedTextRemoveEvent)\r\n            }\r\n            this.option(\"value\", null)\r\n        }\r\n        delete this._savedTextRemoveEvent\r\n    },\r\n    _shouldOpenPopup: function() {\r\n        return this._needPassDataSourceToList()\r\n    },\r\n    _isFocused: function() {\r\n        var activeElement = _dom_adapter.default.getActiveElement();\r\n        return this.callBase() && (0, _renderer.default)(activeElement).closest(this._input()).length > 0\r\n    },\r\n    _renderValueChangeEvent: function() {\r\n        if (this._isEditable()) {\r\n            this.callBase()\r\n        }\r\n    },\r\n    _isEditable: function() {\r\n        return this.option(\"acceptCustomValue\") || this.option(\"searchEnabled\")\r\n    },\r\n    _fieldRenderData: function() {\r\n        var $listFocused = this._list && this.option(\"opened\") && (0, _renderer.default)(this._list.option(\"focusedElement\"));\r\n        if ($listFocused && $listFocused.length) {\r\n            return this._list._getItemData($listFocused)\r\n        }\r\n        return this.option(\"selectedItem\")\r\n    },\r\n    _readOnlyPropValue: function() {\r\n        return !this._isEditable() || this.option(\"readOnly\")\r\n    },\r\n    _isSelectedValue: function(value) {\r\n        return this._isValueEquals(value, this.option(\"value\"))\r\n    },\r\n    _shouldCloseOnItemClick: function() {\r\n        return !(this.option(\"showSelectionControls\") && \"single\" !== this.option(\"selectionMode\"))\r\n    },\r\n    _listItemClickHandler: function(e) {\r\n        var previousValue = this._getCurrentValue();\r\n        this._focusListElement((0, _renderer.default)(e.itemElement));\r\n        this._saveValueChangeEvent(e.event);\r\n        if (this._shouldClearFilter()) {\r\n            this._clearFilter()\r\n        }\r\n        this._completeSelection(this._valueGetter(e.itemData));\r\n        if (this._shouldCloseOnItemClick()) {\r\n            this.option(\"opened\", false)\r\n        }\r\n        if (this.option(\"searchEnabled\") && previousValue === this._valueGetter(e.itemData)) {\r\n            this._updateField(e.itemData)\r\n        }\r\n    },\r\n    _shouldClearFilter: function() {\r\n        return this._wasSearch()\r\n    },\r\n    _completeSelection: function(value) {\r\n        this._setValue(value)\r\n    },\r\n    _loadItem: function(value, cache) {\r\n        var that = this;\r\n        var deferred = new _deferred.Deferred;\r\n        this.callBase(value, cache).done(function(item) {\r\n            deferred.resolve(item)\r\n        }.bind(this)).fail(function() {\r\n            var selectedItem = that.option(\"selectedItem\");\r\n            if (that.option(\"acceptCustomValue\") && value === that._valueGetter(selectedItem)) {\r\n                deferred.resolve(selectedItem)\r\n            } else {\r\n                deferred.reject()\r\n            }\r\n        }.bind(this));\r\n        return deferred.promise()\r\n    },\r\n    _loadInputValue: function(value, callback) {\r\n        this._loadItemDeferred = this._loadItem(value).always(callback);\r\n        return this._loadItemDeferred\r\n    },\r\n    _isCustomItemSelected: function() {\r\n        var selectedItem = this.option(\"selectedItem\");\r\n        var searchValue = this._searchValue();\r\n        var selectedItemText = this._displayGetter(selectedItem);\r\n        return !selectedItemText || searchValue !== selectedItemText.toString()\r\n    },\r\n    _valueChangeEventHandler: function(e) {\r\n        if (this.option(\"acceptCustomValue\") && this._isCustomItemSelected() && !this._isValueChanging) {\r\n            this._isValueChanging = true;\r\n            this._customItemAddedHandler(e);\r\n            this._isValueChanging = false\r\n        }\r\n    },\r\n    _initCustomItemCreatingAction: function() {\r\n        this._customItemCreatingAction = this._createActionByOption(\"onCustomItemCreating\")\r\n    },\r\n    _createCustomItem: function(text) {\r\n        var params = {\r\n            text: text\r\n        };\r\n        var actionResult = this._customItemCreatingAction(params);\r\n        var item = (0, _common.ensureDefined)(actionResult, params.customItem);\r\n        if ((0, _type.isDefined)(actionResult)) {\r\n            _errors.default.log(\"W0015\", \"onCustomItemCreating\", \"customItem\")\r\n        }\r\n        return item\r\n    },\r\n    _customItemAddedHandler: function(e) {\r\n        var searchValue = this._searchValue();\r\n        var item = this._createCustomItem(searchValue);\r\n        this._saveValueChangeEvent(e);\r\n        if (void 0 === item) {\r\n            this._renderValue();\r\n            throw _errors.default.Error(\"E0121\")\r\n        }\r\n        if ((0, _type.isPromise)(item)) {\r\n            (0, _deferred.fromPromise)(item).done(this._setCustomItem.bind(this)).fail(this._setCustomItem.bind(this, null))\r\n        } else {\r\n            this._setCustomItem(item)\r\n        }\r\n    },\r\n    _setCustomItem: function(item) {\r\n        if (this._disposed) {\r\n            return\r\n        }\r\n        item = item || null;\r\n        this.option(\"selectedItem\", item);\r\n        if (this._shouldClearFilter()) {\r\n            this._filterDataSource(null)\r\n        }\r\n        this._setValue(this._valueGetter(item));\r\n        this._renderDisplayText(this._displayGetter(item))\r\n    },\r\n    _clearValueHandler: function(e) {\r\n        this.callBase(e);\r\n        return false\r\n    },\r\n    _wasSearch: function(value) {\r\n        if (!arguments.length) {\r\n            return this._wasSearchValue\r\n        }\r\n        this._wasSearchValue = value\r\n    },\r\n    _searchHandler: function(e) {\r\n        if (this._preventFiltering) {\r\n            delete this._preventFiltering;\r\n            return\r\n        }\r\n        if (this._needPassDataSourceToList()) {\r\n            this._wasSearch(true)\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    _dataSourceFiltered: function(searchValue) {\r\n        this.callBase();\r\n        if (null !== searchValue) {\r\n            this._renderInputSubstitution();\r\n            this._renderFocusedElement()\r\n        }\r\n    },\r\n    _valueSubstituted: function() {\r\n        var input = this._input().get(0);\r\n        var isAllSelected = 0 === input.selectionStart && input.selectionEnd === this._searchValue().length;\r\n        var inputHasSelection = input.selectionStart !== input.selectionEnd;\r\n        return this._wasSearch() && inputHasSelection && !isAllSelected\r\n    },\r\n    _shouldSubstitutionBeRendered: function() {\r\n        return !this._preventSubstitution && this.option(\"searchEnabled\") && !this.option(\"acceptCustomValue\") && \"startswith\" === this.option(\"searchMode\")\r\n    },\r\n    _renderInputSubstitution: function() {\r\n        if (!this._shouldSubstitutionBeRendered()) {\r\n            delete this._preventSubstitution;\r\n            return\r\n        }\r\n        var item = this._list && this._getPlainItems(this._list.option(\"items\"))[0];\r\n        if (!item) {\r\n            return\r\n        }\r\n        var $input = this._input();\r\n        var valueLength = $input.val().length;\r\n        if (0 === valueLength) {\r\n            return\r\n        }\r\n        var inputElement = $input.get(0);\r\n        var displayValue = this._displayGetter(item).toString();\r\n        inputElement.value = displayValue;\r\n        this._caret({\r\n            start: valueLength,\r\n            end: displayValue.length\r\n        })\r\n    },\r\n    _cleanInputSelection: function() {\r\n        var inputElement = this._input().get(0);\r\n        var endPosition = inputElement.value.length;\r\n        inputElement.selectionStart = endPosition;\r\n        inputElement.selectionEnd = endPosition\r\n    },\r\n    _dispose: function() {\r\n        this._renderInputValueAsync = _common.noop;\r\n        delete this._loadItemDeferred;\r\n        this.callBase()\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"onCustomItemCreating\":\r\n                this._initCustomItemCreatingAction();\r\n                break;\r\n            case \"tooltipEnabled\":\r\n                this._renderTooltip();\r\n                break;\r\n            case \"displayCustomValue\":\r\n            case \"acceptCustomValue\":\r\n            case \"showSelectionControls\":\r\n            case \"useInkRipple\":\r\n                this._invalidate();\r\n                break;\r\n            case \"allowClearing\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clean: function() {\r\n        delete this._inkRipple;\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxSelectBox\", SelectBox);\r\nvar _default = SelectBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/version.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = \"20.2.4\";\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/financial_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.candlestick = exports.stock = void 0;\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar barSeries = _bar_series.chart.bar;\r\nvar DEFAULT_FINANCIAL_POINT_SIZE = 10;\r\nvar stock = (0, _extend2.extend)({}, _scatter_series.chart, {\r\n    _animate: _common.noop,\r\n    _applyMarkerClipRect: function(settings) {\r\n        settings[\"clip-path\"] = this._forceClipping ? this._paneClipRectID : this._widePaneClipRectID\r\n    },\r\n    _updatePointsVisibility: barSeries._updatePointsVisibility,\r\n    _getOptionsForPoint: barSeries._getOptionsForPoint,\r\n    _createErrorBarGroup: _common.noop,\r\n    areErrorBarsVisible: _common.noop,\r\n    _createGroups: _scatter_series.chart._createGroups,\r\n    _setMarkerGroupSettings: function() {\r\n        var that = this;\r\n        var markersGroup = that._markersGroup;\r\n        var styles = that._createPointStyles(that._getMarkerGroupOptions());\r\n        var defaultStyle = (0, _extend2.extend)(styles.normal, {\r\n            \"class\": \"default-markers\"\r\n        });\r\n        var defaultPositiveStyle = (0, _extend2.extend)(styles.positive.normal, {\r\n            \"class\": \"default-positive-markers\"\r\n        });\r\n        var reductionStyle = (0, _extend2.extend)(styles.reduction.normal, {\r\n            \"class\": \"reduction-markers\"\r\n        });\r\n        var reductionPositiveStyle = (0, _extend2.extend)(styles.reductionPositive.normal, {\r\n            \"class\": \"reduction-positive-markers\"\r\n        });\r\n        var markerSettings = {\r\n            \"class\": \"dxc-markers\"\r\n        };\r\n        that._applyMarkerClipRect(markerSettings);\r\n        markersGroup.attr(markerSettings);\r\n        that._createGroup(\"defaultMarkersGroup\", markersGroup, markersGroup, defaultStyle);\r\n        that._createGroup(\"reductionMarkersGroup\", markersGroup, markersGroup, reductionStyle);\r\n        that._createGroup(\"defaultPositiveMarkersGroup\", markersGroup, markersGroup, defaultPositiveStyle);\r\n        that._createGroup(\"reductionPositiveMarkersGroup\", markersGroup, markersGroup, reductionPositiveStyle)\r\n    },\r\n    _setGroupsSettings: function() {\r\n        _scatter_series.chart._setGroupsSettings.call(this, false)\r\n    },\r\n    _getCreatingPointOptions: function() {\r\n        var that = this;\r\n        var defaultPointOptions;\r\n        var creatingPointOptions = that._predefinedPointOptions;\r\n        if (!creatingPointOptions) {\r\n            defaultPointOptions = this._getPointOptions();\r\n            that._predefinedPointOptions = creatingPointOptions = (0, _extend2.extend)(true, {\r\n                styles: {}\r\n            }, defaultPointOptions);\r\n            creatingPointOptions.styles.normal = creatingPointOptions.styles.positive.normal = creatingPointOptions.styles.reduction.normal = creatingPointOptions.styles.reductionPositive.normal = {\r\n                \"stroke-width\": defaultPointOptions.styles && defaultPointOptions.styles.normal && defaultPointOptions.styles.normal[\"stroke-width\"]\r\n            }\r\n        }\r\n        return creatingPointOptions\r\n    },\r\n    _checkData: function(data, skippedFields) {\r\n        var valueFields = this.getValueFields();\r\n        return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n            openValue: valueFields[0],\r\n            highValue: valueFields[1],\r\n            lowValue: valueFields[2],\r\n            closeValue: valueFields[3]\r\n        }) && data.highValue === data.highValue && data.lowValue === data.lowValue\r\n    },\r\n    _getPointDataSelector: function(data, options) {\r\n        var _this = this;\r\n        var that = this;\r\n        var level;\r\n        var valueFields = that.getValueFields();\r\n        var argumentField = that.getArgumentField();\r\n        var openValueField = valueFields[0];\r\n        var highValueField = valueFields[1];\r\n        var lowValueField = valueFields[2];\r\n        var closeValueField = valueFields[3];\r\n        that.level = that._options.reduction.level;\r\n        switch ((0, _utils.normalizeEnum)(that.level)) {\r\n            case \"open\":\r\n                level = openValueField;\r\n                break;\r\n            case \"high\":\r\n                level = highValueField;\r\n                break;\r\n            case \"low\":\r\n                level = lowValueField;\r\n                break;\r\n            default:\r\n                level = closeValueField;\r\n                that.level = \"close\"\r\n        }\r\n        var prevLevelValue;\r\n        return function(data) {\r\n            var reductionValue = data[level];\r\n            var isReduction = false;\r\n            if ((0, _type.isDefined)(reductionValue)) {\r\n                if ((0, _type.isDefined)(prevLevelValue)) {\r\n                    isReduction = reductionValue < prevLevelValue\r\n                }\r\n                prevLevelValue = reductionValue\r\n            }\r\n            return {\r\n                argument: data[argumentField],\r\n                highValue: _this._processEmptyValue(data[highValueField]),\r\n                lowValue: _this._processEmptyValue(data[lowValueField]),\r\n                closeValue: _this._processEmptyValue(data[closeValueField]),\r\n                openValue: _this._processEmptyValue(data[openValueField]),\r\n                reductionValue: reductionValue,\r\n                tag: data[that.getTagField()],\r\n                isReduction: isReduction,\r\n                data: data\r\n            }\r\n        }\r\n    },\r\n    _parsePointStyle: function(style, defaultColor, innerColor) {\r\n        return {\r\n            stroke: style.color || defaultColor,\r\n            \"stroke-width\": style.width,\r\n            fill: style.color || innerColor\r\n        }\r\n    },\r\n    _getDefaultStyle: function(options) {\r\n        var that = this;\r\n        var mainPointColor = options.color || that._options.mainSeriesColor;\r\n        return {\r\n            normal: that._parsePointStyle(options, mainPointColor, mainPointColor),\r\n            hover: that._parsePointStyle(options.hoverStyle, mainPointColor, mainPointColor),\r\n            selection: that._parsePointStyle(options.selectionStyle, mainPointColor, mainPointColor)\r\n        }\r\n    },\r\n    _getReductionStyle: function(options) {\r\n        var that = this;\r\n        var reductionColor = options.reduction.color;\r\n        return {\r\n            normal: that._parsePointStyle({\r\n                color: reductionColor,\r\n                width: options.width,\r\n                hatching: options.hatching\r\n            }, reductionColor, reductionColor),\r\n            hover: that._parsePointStyle(options.hoverStyle, reductionColor, reductionColor),\r\n            selection: that._parsePointStyle(options.selectionStyle, reductionColor, reductionColor)\r\n        }\r\n    },\r\n    _createPointStyles: function(pointOptions) {\r\n        var that = this;\r\n        var innerColor = that._options.innerColor;\r\n        var styles = that._getDefaultStyle(pointOptions);\r\n        var positiveStyle = (0, _extend2.extend)(true, {}, styles);\r\n        var reductionStyle = that._getReductionStyle(pointOptions);\r\n        var reductionPositiveStyle = (0, _extend2.extend)(true, {}, reductionStyle);\r\n        positiveStyle.normal.fill = positiveStyle.hover.fill = positiveStyle.selection.fill = innerColor;\r\n        reductionPositiveStyle.normal.fill = reductionPositiveStyle.hover.fill = reductionPositiveStyle.selection.fill = innerColor;\r\n        styles.positive = positiveStyle;\r\n        styles.reduction = reductionStyle;\r\n        styles.reductionPositive = reductionPositiveStyle;\r\n        return styles\r\n    },\r\n    _endUpdateData: function() {\r\n        delete this._predefinedPointOptions\r\n    },\r\n    _defaultAggregator: \"ohlc\",\r\n    _aggregators: {\r\n        ohlc: function(_ref, series) {\r\n            var intervalStart = _ref.intervalStart,\r\n                data = _ref.data;\r\n            if (!data.length) {\r\n                return\r\n            }\r\n            var result = {};\r\n            var valueFields = series.getValueFields();\r\n            var highValueField = valueFields[1];\r\n            var lowValueField = valueFields[2];\r\n            result[highValueField] = -(1 / 0);\r\n            result[lowValueField] = 1 / 0;\r\n            result = data.reduce(function(result, item) {\r\n                if (null !== item[highValueField]) {\r\n                    result[highValueField] = Math.max(result[highValueField], item[highValueField])\r\n                }\r\n                if (null !== item[lowValueField]) {\r\n                    result[lowValueField] = Math.min(result[lowValueField], item[lowValueField])\r\n                }\r\n                return result\r\n            }, result);\r\n            result[valueFields[0]] = data[0][valueFields[0]];\r\n            result[valueFields[3]] = data[data.length - 1][valueFields[3]];\r\n            if (!isFinite(result[highValueField])) {\r\n                result[highValueField] = null\r\n            }\r\n            if (!isFinite(result[lowValueField])) {\r\n                result[lowValueField] = null\r\n            }\r\n            result[series.getArgumentField()] = intervalStart;\r\n            return result\r\n        }\r\n    },\r\n    getValueFields: function() {\r\n        var options = this._options;\r\n        return [options.openValueField || \"open\", options.highValueField || \"high\", options.lowValueField || \"low\", options.closeValueField || \"close\"]\r\n    },\r\n    getArgumentField: function() {\r\n        return this._options.argumentField || \"date\"\r\n    },\r\n    _patchMarginOptions: function(options) {\r\n        var pointOptions = this._getCreatingPointOptions();\r\n        var styles = pointOptions.styles;\r\n        var border = [styles.normal, styles.hover, styles.selection].reduce(function(max, style) {\r\n            return Math.max(max, style[\"stroke-width\"])\r\n        }, 0);\r\n        options.size = DEFAULT_FINANCIAL_POINT_SIZE + border;\r\n        options.sizePointNormalState = DEFAULT_FINANCIAL_POINT_SIZE;\r\n        return options\r\n    },\r\n    getSeriesPairCoord: function(coord, isArgument) {\r\n        var oppositeCoord = null;\r\n        var points = this.getVisiblePoints();\r\n        for (var i = 0; i < points.length; i++) {\r\n            var p = points[i];\r\n            var tmpCoord = void 0;\r\n            if (isArgument) {\r\n                tmpCoord = p.vx === coord ? (p.openY + p.closeY) / 2 : void 0\r\n            } else {\r\n                var coords = [Math.min(p.lowY, p.highY), Math.max(p.lowY, p.highY)];\r\n                tmpCoord = coord >= coords[0] && coord <= coords[1] ? p.vx : void 0\r\n            }\r\n            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n                oppositeCoord = tmpCoord;\r\n                break\r\n            }\r\n        }\r\n        return oppositeCoord\r\n    },\r\n    usePointsToDefineAutoHiding: function() {\r\n        return false\r\n    }\r\n});\r\nexports.stock = stock;\r\nvar candlestick = (0, _extend2.extend)({}, stock, {\r\n    _parsePointStyle: function(style, defaultColor, innerColor) {\r\n        var color = style.color || innerColor;\r\n        var base = stock._parsePointStyle.call(this, style, defaultColor, color);\r\n        base.fill = color;\r\n        base.hatching = style.hatching;\r\n        return base\r\n    }\r\n});\r\nexports.candlestick = candlestick;\r\n","/**\r\n * DevExtreme (ui/map/provider.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar Provider = _class.default.inherit({\r\n    _defaultRouteWeight: function() {\r\n        return 5\r\n    },\r\n    _defaultRouteOpacity: function() {\r\n        return .5\r\n    },\r\n    _defaultRouteColor: function() {\r\n        return \"#0000FF\"\r\n    },\r\n    ctor: function(map, $container) {\r\n        this._mapWidget = map;\r\n        this._$container = $container\r\n    },\r\n    render: function(markerOptions, routeOptions) {\r\n        return this._renderImpl().then(function() {\r\n            return _promise.default.all([this._applyFunctionIfNeeded(\"addMarkers\", markerOptions), this._applyFunctionIfNeeded(\"addRoutes\", routeOptions)]).then(function() {\r\n                return true\r\n            })\r\n        }.bind(this))\r\n    },\r\n    _renderImpl: abstract,\r\n    updateDimensions: abstract,\r\n    updateMapType: abstract,\r\n    updateBounds: abstract,\r\n    updateCenter: abstract,\r\n    updateZoom: abstract,\r\n    updateControls: abstract,\r\n    updateMarkers: function(markerOptionsToRemove, markerOptionsToAdd) {\r\n        return new _promise.default(function(resolve) {\r\n            return this._applyFunctionIfNeeded(\"removeMarkers\", markerOptionsToRemove).then(function(removeValue) {\r\n                this._applyFunctionIfNeeded(\"addMarkers\", markerOptionsToAdd).then(function(addValue) {\r\n                    resolve(addValue ? addValue : removeValue)\r\n                })\r\n            }.bind(this))\r\n        }.bind(this))\r\n    },\r\n    addMarkers: abstract,\r\n    removeMarkers: abstract,\r\n    adjustViewport: abstract,\r\n    updateRoutes: function(routeOptionsToRemove, routeOptionsToAdd) {\r\n        return new _promise.default(function(resolve) {\r\n            return this._applyFunctionIfNeeded(\"removeRoutes\", routeOptionsToRemove).then(function(removeValue) {\r\n                this._applyFunctionIfNeeded(\"addRoutes\", routeOptionsToAdd).then(function(addValue) {\r\n                    resolve(addValue ? addValue : removeValue)\r\n                })\r\n            }.bind(this))\r\n        }.bind(this))\r\n    },\r\n    addRoutes: abstract,\r\n    removeRoutes: abstract,\r\n    clean: abstract,\r\n    map: function() {\r\n        return this._map\r\n    },\r\n    isEventsCanceled: function() {\r\n        return false\r\n    },\r\n    _option: function(name, value) {\r\n        if (void 0 === value) {\r\n            return this._mapWidget.option(name)\r\n        }\r\n        this._mapWidget.setOptionSilent(name, value)\r\n    },\r\n    _keyOption: function(providerName) {\r\n        var key = this._option(\"apiKey\");\r\n        return void 0 === key[providerName] ? key : key[providerName]\r\n    },\r\n    _parseTooltipOptions: function(option) {\r\n        return {\r\n            text: option.text || option,\r\n            visible: option.isShown || false\r\n        }\r\n    },\r\n    _getLatLng: function(location) {\r\n        if (\"string\" === typeof location) {\r\n            var coords = (0, _iterator.map)(location.split(\",\"), function(item) {\r\n                return item.trim()\r\n            });\r\n            var numericRegex = /^[-+]?[0-9]*\\.?[0-9]*$/;\r\n            if (2 === coords.length && coords[0].match(numericRegex) && coords[1].match(numericRegex)) {\r\n                return {\r\n                    lat: parseFloat(coords[0]),\r\n                    lng: parseFloat(coords[1])\r\n                }\r\n            }\r\n        } else {\r\n            if (Array.isArray(location) && 2 === location.length) {\r\n                return {\r\n                    lat: location[0],\r\n                    lng: location[1]\r\n                }\r\n            } else {\r\n                if ((0, _type.isPlainObject)(location) && (0, _type.isNumeric)(location.lat) && (0, _type.isNumeric)(location.lng)) {\r\n                    return location\r\n                }\r\n            }\r\n        }\r\n        return null\r\n    },\r\n    _areBoundsSet: function() {\r\n        return this._option(\"bounds.northEast\") && this._option(\"bounds.southWest\")\r\n    },\r\n    _addEventNamespace: function(name) {\r\n        return (0, _index.addNamespace)(name, this._mapWidget.NAME)\r\n    },\r\n    _applyFunctionIfNeeded: function(fnName, array) {\r\n        if (!array.length) {\r\n            return _promise.default.resolve()\r\n        }\r\n        return this[fnName](array)\r\n    },\r\n    _fireAction: function(name, actionArguments) {\r\n        this._mapWidget._createActionByOption(name)(actionArguments)\r\n    },\r\n    _fireClickAction: function(actionArguments) {\r\n        this._fireAction(\"onClick\", actionArguments)\r\n    },\r\n    _fireMarkerAddedAction: function(actionArguments) {\r\n        this._fireAction(\"onMarkerAdded\", actionArguments)\r\n    },\r\n    _fireMarkerRemovedAction: function(actionArguments) {\r\n        this._fireAction(\"onMarkerRemoved\", actionArguments)\r\n    },\r\n    _fireRouteAddedAction: function(actionArguments) {\r\n        this._fireAction(\"onRouteAdded\", actionArguments)\r\n    },\r\n    _fireRouteRemovedAction: function(actionArguments) {\r\n        this._fireAction(\"onRouteRemoved\", actionArguments)\r\n    }\r\n});\r\nvar _default = Provider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel_creator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getData = getData;\r\nexports.ExcelCreator = void 0;\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../ui/widget/ui.errors\"));\r\nvar _string = require(\"../core/utils/string\");\r\nvar _jszip = _interopRequireDefault(require(\"jszip\"));\r\nvar _file_saver = require(\"./file_saver\");\r\nvar _excel_format_converter = _interopRequireDefault(require(\"./excel_format_converter\"));\r\nvar _excel = _interopRequireDefault(require(\"./excel/excel.file\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar XML_TAG = '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\r\nvar GROUP_SHEET_PR_XML = '<sheetPr><outlinePr summaryBelow=\"0\"/></sheetPr>';\r\nvar SINGLE_SHEET_PR_XML = \"<sheetPr/>\";\r\nvar BASE_STYLE_XML2 = '<borders count=\"1\"><border><left style=\"thin\"><color rgb=\"FFD3D3D3\"/></left><right style=\"thin\"><color rgb=\"FFD3D3D3\"/></right><top style=\"thin\"><color rgb=\"FFD3D3D3\"/></top><bottom style=\"thin\"><color rgb=\"FFD3D3D3\"/></bottom></border></borders><cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>';\r\nvar OPEN_XML_FORMAT_URL = \"http://schemas.openxmlformats.org\";\r\nvar RELATIONSHIP_PART_NAME = \"rels\";\r\nvar XL_FOLDER_NAME = \"xl\";\r\nvar WORKBOOK_FILE_NAME = \"workbook.xml\";\r\nvar CONTENTTYPES_FILE_NAME = \"[Content_Types].xml\";\r\nvar SHAREDSTRING_FILE_NAME = \"sharedStrings.xml\";\r\nvar STYLE_FILE_NAME = \"styles.xml\";\r\nvar WORKSHEETS_FOLDER = \"worksheets\";\r\nvar WORKSHEET_FILE_NAME = \"sheet1.xml\";\r\nvar WORKSHEET_HEADER_XML = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" mc:Ignorable=\"x14ac\" xmlns:x14ac=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\">';\r\nvar VALID_TYPES = {\r\n    \"boolean\": \"b\",\r\n    date: \"d\",\r\n    number: \"n\",\r\n    string: \"s\"\r\n};\r\nvar EXCEL_START_TIME = Date.UTC(1899, 11, 30);\r\nvar DAYS_COUNT_BEFORE_29_FEB_1900 = 60;\r\nvar MAX_DIGIT_WIDTH_IN_PIXELS = 7;\r\nvar UNSUPPORTED_FORMAT_MAPPING = {\r\n    quarter: \"shortDate\",\r\n    quarterAndYear: \"shortDate\",\r\n    minute: \"longTime\",\r\n    millisecond: \"longTime\"\r\n};\r\nvar ExcelCreator = _class.default.inherit({\r\n    _getXMLTag: function(tagName, attributes, content) {\r\n        var result = \"<\" + tagName;\r\n        var i;\r\n        var length = attributes.length;\r\n        var attr;\r\n        for (i = 0; i < length; i++) {\r\n            attr = attributes[i];\r\n            if (void 0 !== attr.value) {\r\n                result = result + \" \" + attr.name + '=\"' + attr.value + '\"'\r\n            }\r\n        }\r\n        return (0, _type.isDefined)(content) ? result + \">\" + content + \"</\" + tagName + \">\" : result + \" />\"\r\n    },\r\n    _convertToExcelCellRef: function(zeroBasedRowIndex, zeroBasedCellIndex) {\r\n        var columnName = \"\";\r\n        var max = 26;\r\n        var charCode;\r\n        var isCellIndexFound;\r\n        while (!isCellIndexFound) {\r\n            charCode = 65 + (zeroBasedCellIndex >= max ? zeroBasedCellIndex % max : Math.ceil(zeroBasedCellIndex));\r\n            columnName = String.fromCharCode(charCode) + columnName;\r\n            if (zeroBasedCellIndex >= max) {\r\n                zeroBasedCellIndex = Math.floor(zeroBasedCellIndex / max) - 1\r\n            } else {\r\n                isCellIndexFound = true\r\n            }\r\n        }\r\n        return columnName + (zeroBasedRowIndex + 1)\r\n    },\r\n    _convertToExcelCellRefAndTrackMaxIndex: function(rowIndex, cellIndex) {\r\n        if (this._maxRowIndex < Number(rowIndex)) {\r\n            this._maxRowIndex = Number(rowIndex)\r\n        }\r\n        if (this._maxColumnIndex < Number(cellIndex)) {\r\n            this._maxColumnIndex = Number(cellIndex)\r\n        }\r\n        return this._convertToExcelCellRef(rowIndex, cellIndex)\r\n    },\r\n    _getDataType: function(dataType) {\r\n        return VALID_TYPES[dataType] || VALID_TYPES.string\r\n    },\r\n    _tryGetExcelCellDataType: function(object) {\r\n        if ((0, _type.isDefined)(object)) {\r\n            if (\"number\" === typeof object) {\r\n                if (isFinite(object)) {\r\n                    return VALID_TYPES.number\r\n                } else {\r\n                    return VALID_TYPES.string\r\n                }\r\n            } else {\r\n                if ((0, _type.isString)(object)) {\r\n                    return VALID_TYPES.string\r\n                } else {\r\n                    if ((0, _type.isDate)(object)) {\r\n                        return VALID_TYPES.number\r\n                    } else {\r\n                        if ((0, _type.isBoolean)(object)) {\r\n                            return VALID_TYPES.boolean\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _formatObjectConverter: function(format, dataType) {\r\n        var result = {\r\n            format: format,\r\n            precision: format && format.precision,\r\n            dataType: dataType\r\n        };\r\n        if ((0, _type.isObject)(format)) {\r\n            return (0, _extend.extend)(result, format, {\r\n                format: format.formatter || format.type,\r\n                currency: format.currency\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    _tryConvertToExcelNumberFormat: function(format, dataType) {\r\n        var newFormat = this._formatObjectConverter(format, dataType);\r\n        format = newFormat.format;\r\n        var currency = newFormat.currency;\r\n        dataType = newFormat.dataType;\r\n        if ((0, _type.isDefined)(format) && \"date\" === dataType) {\r\n            format = UNSUPPORTED_FORMAT_MAPPING[format && format.type || format] || format\r\n        }\r\n        return _excel_format_converter.default.convertFormat(format, newFormat.precision, dataType, currency)\r\n    },\r\n    _appendString: function(value) {\r\n        if ((0, _type.isDefined)(value)) {\r\n            value = String(value);\r\n            if (value.length) {\r\n                value = (0, _string.encodeHtml)(value);\r\n                if (void 0 === this._stringHash[value]) {\r\n                    this._stringHash[value] = this._stringArray.length;\r\n                    this._stringArray.push(value)\r\n                }\r\n                return this._stringHash[value]\r\n            }\r\n        }\r\n    },\r\n    _tryGetExcelDateValue: function(date) {\r\n        var days;\r\n        var totalTime;\r\n        if ((0, _type.isDate)(date)) {\r\n            days = Math.floor((Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - EXCEL_START_TIME) / 864e5);\r\n            if (days < DAYS_COUNT_BEFORE_29_FEB_1900) {\r\n                days--\r\n            }\r\n            totalTime = (3600 * date.getHours() + 60 * date.getMinutes() + date.getSeconds()) / 86400;\r\n            return days + totalTime\r\n        }\r\n    },\r\n    _prepareValue: function(rowIndex, cellIndex) {\r\n        var dataProvider = this._dataProvider;\r\n        var _ref = dataProvider.getCellData(rowIndex, cellIndex) || {},\r\n            cellSourceData = _ref.cellSourceData;\r\n        var _ref2 = dataProvider.getCellData(rowIndex, cellIndex) || {},\r\n            value = _ref2.value;\r\n        var sourceValue;\r\n        var type = this._getDataType(dataProvider.getCellType(rowIndex, cellIndex));\r\n        if (type === VALID_TYPES.date && !(0, _type.isDate)(value)) {\r\n            type = VALID_TYPES.string\r\n        }\r\n        switch (type) {\r\n            case VALID_TYPES.string:\r\n                sourceValue = value;\r\n                value = this._appendString(value);\r\n                break;\r\n            case VALID_TYPES.date:\r\n                sourceValue = value;\r\n                value = this._tryGetExcelDateValue(value);\r\n                type = VALID_TYPES.number\r\n        }\r\n        return {\r\n            value: value,\r\n            type: type,\r\n            sourceValue: sourceValue,\r\n            cellSourceData: cellSourceData\r\n        }\r\n    },\r\n    _callCustomizeExcelCell: function(_ref3) {\r\n        var dataProvider = _ref3.dataProvider,\r\n            value = _ref3.value,\r\n            style = _ref3.style,\r\n            sourceData = _ref3.sourceData;\r\n        var styleCopy = _excel.default.copyCellFormat(style);\r\n        var args = {\r\n            value: value,\r\n            numberFormat: styleCopy.numberFormat,\r\n            clearStyle: function() {\r\n                this.horizontalAlignment = null;\r\n                this.verticalAlignment = null;\r\n                this.wrapTextEnabled = null;\r\n                this.font = null;\r\n                this.numberFormat = null\r\n            }\r\n        };\r\n        if ((0, _type.isDefined)(styleCopy)) {\r\n            if ((0, _type.isDefined)(styleCopy.alignment)) {\r\n                args.horizontalAlignment = styleCopy.alignment.horizontal;\r\n                args.verticalAlignment = styleCopy.alignment.vertical;\r\n                args.wrapTextEnabled = styleCopy.alignment.wrapText\r\n            }\r\n            args.backgroundColor = styleCopy.backgroundColor;\r\n            args.fillPatternType = styleCopy.fillPatternType;\r\n            args.fillPatternColor = styleCopy.fillPatternColor;\r\n            args.font = styleCopy.font\r\n        }\r\n        dataProvider.customizeExcelCell(args, sourceData);\r\n        var newStyle = styleCopy || {};\r\n        newStyle.font = args.font;\r\n        newStyle.alignment = newStyle.alignment || {};\r\n        newStyle.alignment.horizontal = args.horizontalAlignment;\r\n        newStyle.alignment.vertical = args.verticalAlignment;\r\n        newStyle.alignment.wrapText = args.wrapTextEnabled;\r\n        newStyle.backgroundColor = args.backgroundColor;\r\n        newStyle.fillPatternType = args.fillPatternType;\r\n        newStyle.fillPatternColor = args.fillPatternColor;\r\n        newStyle.numberFormat = args.numberFormat;\r\n        return {\r\n            value: args.value,\r\n            style: newStyle\r\n        }\r\n    },\r\n    _getDataArray: function() {\r\n        var that = this;\r\n        var rowIndex;\r\n        var cellIndex;\r\n        var cellsArray;\r\n        var cellData;\r\n        var result = [];\r\n        var dataProvider = that._dataProvider;\r\n        var rowsLength = dataProvider.getRowsCount();\r\n        var columns = dataProvider.getColumns();\r\n        var cellsLength;\r\n        for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n            cellsArray = [];\r\n            cellsLength = columns.length;\r\n            for (cellIndex = 0; cellIndex !== cellsLength; cellIndex++) {\r\n                cellData = that._prepareValue(rowIndex, cellIndex);\r\n                var styleArrayIndex = dataProvider.getStyleId(rowIndex, cellIndex);\r\n                var cellStyleId = this._styleArrayIndexToCellStyleIdMap[styleArrayIndex];\r\n                if (dataProvider.hasCustomizeExcelCell && dataProvider.hasCustomizeExcelCell()) {\r\n                    var value = cellData.sourceValue || cellData.value;\r\n                    var modifiedExcelCell = this._callCustomizeExcelCell({\r\n                        dataProvider: dataProvider,\r\n                        value: value,\r\n                        style: that._styleArray[styleArrayIndex],\r\n                        sourceData: cellData.cellSourceData\r\n                    });\r\n                    if (modifiedExcelCell.value !== value) {\r\n                        if (_typeof(modifiedExcelCell.value) !== _typeof(value) || \"number\" === typeof modifiedExcelCell.value && !isFinite(modifiedExcelCell.value)) {\r\n                            var cellDataType = this._tryGetExcelCellDataType(modifiedExcelCell.value);\r\n                            if ((0, _type.isDefined)(cellDataType)) {\r\n                                cellData.type = cellDataType\r\n                            }\r\n                        }\r\n                        switch (cellData.type) {\r\n                            case VALID_TYPES.string:\r\n                                cellData.value = this._appendString(modifiedExcelCell.value);\r\n                                break;\r\n                            case VALID_TYPES.date:\r\n                                cellData.value = modifiedExcelCell.value;\r\n                                break;\r\n                            case VALID_TYPES.number:\r\n                                var newValue = modifiedExcelCell.value;\r\n                                var excelDateValue = this._tryGetExcelDateValue(newValue);\r\n                                if ((0, _type.isDefined)(excelDateValue)) {\r\n                                    newValue = excelDateValue\r\n                                }\r\n                                cellData.value = newValue;\r\n                                break;\r\n                            default:\r\n                                cellData.value = modifiedExcelCell.value\r\n                        }\r\n                    }\r\n                    cellStyleId = this._excelFile.registerCellFormat(modifiedExcelCell.style)\r\n                }\r\n                cellsArray.push({\r\n                    style: cellStyleId,\r\n                    value: cellData.value,\r\n                    type: cellData.type\r\n                })\r\n            }\r\n            if (!that._needSheetPr && dataProvider.getGroupLevel(rowIndex) > 0) {\r\n                that._needSheetPr = true\r\n            }\r\n            result.push(cellsArray)\r\n        }\r\n        return result\r\n    },\r\n    _calculateWidth: function(pixelsWidth) {\r\n        pixelsWidth = parseInt(pixelsWidth, 10);\r\n        if (!pixelsWidth || pixelsWidth < 5) {\r\n            pixelsWidth = 100\r\n        }\r\n        return Math.min(255, Math.floor((pixelsWidth - 5) / MAX_DIGIT_WIDTH_IN_PIXELS * 100 + .5) / 100)\r\n    },\r\n    _prepareStyleData: function() {\r\n        var _this = this;\r\n        var that = this;\r\n        var styles = that._dataProvider.getStyles();\r\n        that._dataProvider.getColumns().forEach(function(column) {\r\n            that._colsArray.push(that._calculateWidth(column.width))\r\n        });\r\n        var fonts = [{\r\n            size: 11,\r\n            color: {\r\n                theme: 1\r\n            },\r\n            name: \"Calibri\",\r\n            family: 2,\r\n            scheme: \"minor\",\r\n            bold: false\r\n        }, {\r\n            size: 11,\r\n            color: {\r\n                theme: 1\r\n            },\r\n            name: \"Calibri\",\r\n            family: 2,\r\n            scheme: \"minor\",\r\n            bold: true\r\n        }];\r\n        this._excelFile.registerFont(fonts[0]);\r\n        this._excelFile.registerFont(fonts[1]);\r\n        styles.forEach(function(style) {\r\n            var numberFormat = that._tryConvertToExcelNumberFormat(style.format, style.dataType);\r\n            if (!(0, _type.isDefined)(numberFormat)) {\r\n                numberFormat = 0\r\n            }\r\n            that._styleArray.push({\r\n                font: fonts[Number(!!style.bold)],\r\n                numberFormat: numberFormat,\r\n                alignment: {\r\n                    vertical: \"top\",\r\n                    wrapText: !!style.wrapText,\r\n                    horizontal: style.alignment || \"left\"\r\n                }\r\n            })\r\n        });\r\n        that._styleArrayIndexToCellStyleIdMap = that._styleArray.map(function(item) {\r\n            return _this._excelFile.registerCellFormat(item)\r\n        })\r\n    },\r\n    _prepareCellData: function() {\r\n        this._cellsArray = this._getDataArray()\r\n    },\r\n    _createXMLRelationships: function(xmlRelationships) {\r\n        return this._getXMLTag(\"Relationships\", [{\r\n            name: \"xmlns\",\r\n            value: OPEN_XML_FORMAT_URL + \"/package/2006/relationships\"\r\n        }], xmlRelationships)\r\n    },\r\n    _createXMLRelationship: function(id, type, target) {\r\n        return this._getXMLTag(\"Relationship\", [{\r\n            name: \"Id\",\r\n            value: \"rId\" + id\r\n        }, {\r\n            name: \"Type\",\r\n            value: OPEN_XML_FORMAT_URL + \"/officeDocument/2006/relationships/\" + type\r\n        }, {\r\n            name: \"Target\",\r\n            value: target\r\n        }])\r\n    },\r\n    _getWorkbookContent: function() {\r\n        var content = '<bookViews><workbookView xWindow=\"0\" yWindow=\"0\" windowWidth=\"0\" windowHeight=\"0\"/></bookViews><sheets><sheet name=\"Sheet\" sheetId=\"1\" r:id=\"rId1\" /></sheets><definedNames><definedName name=\"_xlnm.Print_Titles\" localSheetId=\"0\">Sheet!$1:$1</definedName><definedName name=\"_xlnm._FilterDatabase\" hidden=\"0\" localSheetId=\"0\">Sheet!$A$1:$F$6332</definedName></definedNames>';\r\n        return XML_TAG + this._getXMLTag(\"workbook\", [{\r\n            name: \"xmlns:r\",\r\n            value: OPEN_XML_FORMAT_URL + \"/officeDocument/2006/relationships\"\r\n        }, {\r\n            name: \"xmlns\",\r\n            value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n        }], content)\r\n    },\r\n    _getContentTypesContent: function() {\r\n        return XML_TAG + '<Types xmlns=\"' + OPEN_XML_FORMAT_URL + '/package/2006/content-types\"><Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\" /><Default Extension=\"xml\" ContentType=\"application/xml\" /><Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\" /><Override PartName=\"/xl/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\" /><Override PartName=\"/xl/sharedStrings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\" /><Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\" /></Types>'\r\n    },\r\n    _generateStylesXML: function() {\r\n        var that = this;\r\n        var folder = that._zip.folder(XL_FOLDER_NAME);\r\n        var XML = \"\";\r\n        XML += this._excelFile.generateNumberFormatsXml();\r\n        XML += this._excelFile.generateFontsXml();\r\n        XML += this._excelFile.generateFillsXml();\r\n        XML += BASE_STYLE_XML2;\r\n        XML += this._excelFile.generateCellFormatsXml();\r\n        XML += that._getXMLTag(\"cellStyles\", [{\r\n            name: \"count\",\r\n            value: 1\r\n        }], that._getXMLTag(\"cellStyle\", [{\r\n            name: \"name\",\r\n            value: \"Normal\"\r\n        }, {\r\n            name: \"xfId\",\r\n            value: 0\r\n        }, {\r\n            name: \"builtinId\",\r\n            value: 0\r\n        }]));\r\n        XML = XML_TAG + that._getXMLTag(\"styleSheet\", [{\r\n            name: \"xmlns\",\r\n            value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n        }], XML);\r\n        folder.file(STYLE_FILE_NAME, XML);\r\n        that._styleArray = []\r\n    },\r\n    _generateStringsXML: function() {\r\n        var folder = this._zip.folder(XL_FOLDER_NAME);\r\n        var stringIndex;\r\n        var stringsLength = this._stringArray.length;\r\n        var sharedStringXml = XML_TAG;\r\n        for (stringIndex = 0; stringIndex < stringsLength; stringIndex++) {\r\n            this._stringArray[stringIndex] = this._getXMLTag(\"si\", [], this._getXMLTag(\"t\", [], this._stringArray[stringIndex]))\r\n        }\r\n        sharedStringXml += this._getXMLTag(\"sst\", [{\r\n            name: \"xmlns\",\r\n            value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n        }, {\r\n            name: \"count\",\r\n            value: this._stringArray.length\r\n        }, {\r\n            name: \"uniqueCount\",\r\n            value: this._stringArray.length\r\n        }], this._stringArray.join(\"\"));\r\n        folder.file(SHAREDSTRING_FILE_NAME, sharedStringXml);\r\n        this._stringArray = []\r\n    },\r\n    _getPaneXML: function() {\r\n        var attributes = [{\r\n            name: \"activePane\",\r\n            value: \"bottomLeft\"\r\n        }, {\r\n            name: \"state\",\r\n            value: \"frozen\"\r\n        }];\r\n        var frozenArea = this._dataProvider.getFrozenArea();\r\n        if (!(frozenArea.x || frozenArea.y)) {\r\n            return \"\"\r\n        }\r\n        if (frozenArea.x) {\r\n            attributes.push({\r\n                name: \"xSplit\",\r\n                value: frozenArea.x\r\n            })\r\n        }\r\n        if (frozenArea.y) {\r\n            attributes.push({\r\n                name: \"ySplit\",\r\n                value: frozenArea.y\r\n            })\r\n        }\r\n        attributes.push({\r\n            name: \"topLeftCell\",\r\n            value: this._convertToExcelCellRefAndTrackMaxIndex(frozenArea.y, frozenArea.x)\r\n        });\r\n        return this._getXMLTag(\"pane\", attributes)\r\n    },\r\n    _getAutoFilterXML: function(maxCellIndex) {\r\n        if (this._options.autoFilterEnabled) {\r\n            return '<autoFilter ref=\"A' + this._dataProvider.getHeaderRowCount() + \":\" + maxCellIndex + '\" />'\r\n        }\r\n        return \"\"\r\n    },\r\n    _getIgnoredErrorsXML: function(maxCellIndex) {\r\n        if (this._options.ignoreErrors) {\r\n            return '<ignoredErrors><ignoredError sqref=\"A1:' + maxCellIndex + '\" numberStoredAsText=\"1\" /></ignoredErrors>'\r\n        }\r\n        return \"\"\r\n    },\r\n    _generateWorksheetXML: function() {\r\n        var colIndex;\r\n        var rowIndex;\r\n        var cellData;\r\n        var xmlCells;\r\n        var xmlRows = [];\r\n        var rowsLength = this._cellsArray.length;\r\n        var cellsLength;\r\n        var colsLength = this._colsArray.length;\r\n        var rSpans = \"1:\" + colsLength;\r\n        var headerRowCount = this._dataProvider.getHeaderRowCount ? this._dataProvider.getHeaderRowCount() : 1;\r\n        var xmlResult = [WORKSHEET_HEADER_XML];\r\n        xmlResult.push(this._needSheetPr ? GROUP_SHEET_PR_XML : SINGLE_SHEET_PR_XML);\r\n        xmlResult.push('<dimension ref=\"A1:C1\"/>');\r\n        xmlResult.push(\"<sheetViews><sheetView \");\r\n        xmlResult.push(this._rtlEnabled ? 'rightToLeft=\"1\" ' : \"\");\r\n        xmlResult.push('tabSelected=\"1\" workbookViewId=\"0\">');\r\n        xmlResult.push(this._getPaneXML());\r\n        xmlResult.push(\"</sheetView></sheetViews>\");\r\n        xmlResult.push('<sheetFormatPr defaultRowHeight=\"15\"');\r\n        xmlResult.push(' outlineLevelRow=\"' + (this._dataProvider.getRowsCount() > 0 ? this._dataProvider.getGroupLevel(0) : 0) + '\"');\r\n        xmlResult.push(' x14ac:dyDescent=\"0.25\"/>');\r\n        for (colIndex = 0; colIndex < colsLength; colIndex++) {\r\n            this._colsArray[colIndex] = this._getXMLTag(\"col\", [{\r\n                name: \"width\",\r\n                value: this._colsArray[colIndex]\r\n            }, {\r\n                name: \"min\",\r\n                value: Number(colIndex) + 1\r\n            }, {\r\n                name: \"max\",\r\n                value: Number(colIndex) + 1\r\n            }, {\r\n                name: \"customWidth\",\r\n                value: 1\r\n            }])\r\n        }\r\n        xmlResult.push(this._getXMLTag(\"cols\", [], this._colsArray.join(\"\")) + \"<sheetData>\");\r\n        for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n            xmlCells = [];\r\n            cellsLength = this._cellsArray[rowIndex].length;\r\n            for (colIndex = 0; colIndex < cellsLength; colIndex++) {\r\n                rowIndex = Number(rowIndex);\r\n                cellData = this._cellsArray[rowIndex][colIndex];\r\n                xmlCells.push(this._getXMLTag(\"c\", [{\r\n                    name: \"r\",\r\n                    value: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex, colIndex)\r\n                }, {\r\n                    name: \"s\",\r\n                    value: cellData.style\r\n                }, {\r\n                    name: \"t\",\r\n                    value: cellData.type\r\n                }], (0, _type.isDefined)(cellData.value) ? this._getXMLTag(\"v\", [], cellData.value) : null))\r\n            }\r\n            xmlRows.push(this._getXMLTag(\"row\", [{\r\n                name: \"r\",\r\n                value: Number(rowIndex) + 1\r\n            }, {\r\n                name: \"spans\",\r\n                value: rSpans\r\n            }, {\r\n                name: \"outlineLevel\",\r\n                value: rowIndex >= headerRowCount ? this._dataProvider.getGroupLevel(rowIndex) : 0\r\n            }, {\r\n                name: \"x14ac:dyDescent\",\r\n                value: \"0.25\"\r\n            }], xmlCells.join(\"\")));\r\n            this._cellsArray[rowIndex] = null;\r\n            if (xmlRows.length > 1e4) {\r\n                xmlResult.push(xmlRows.join(\"\"));\r\n                xmlRows = []\r\n            }\r\n        }\r\n        xmlResult.push(xmlRows.join(\"\"));\r\n        xmlRows = [];\r\n        var rightBottomCellRef = this._convertToExcelCellRef(this._maxRowIndex, this._maxColumnIndex);\r\n        xmlResult.push(\"</sheetData>\" + this._getAutoFilterXML(rightBottomCellRef) + this._generateMergingXML() + this._getIgnoredErrorsXML(rightBottomCellRef) + \"</worksheet>\");\r\n        this._zip.folder(XL_FOLDER_NAME).folder(WORKSHEETS_FOLDER).file(WORKSHEET_FILE_NAME, xmlResult.join(\"\"));\r\n        this._colsArray = [];\r\n        this._cellsArray = [];\r\n        xmlResult = []\r\n    },\r\n    _generateMergingXML: function() {\r\n        var k;\r\n        var l;\r\n        var cellIndex;\r\n        var rowIndex;\r\n        var rowsLength = (0, _type.isDefined)(this._dataProvider.getHeaderRowCount) ? this._dataProvider.getHeaderRowCount() : this._dataProvider.getRowsCount();\r\n        var columnsLength = this._dataProvider.getColumns().length;\r\n        var usedArea = [];\r\n        var mergeArray = [];\r\n        var mergeIndex;\r\n        var mergeXML = \"\";\r\n        for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n            for (cellIndex = 0; cellIndex !== columnsLength; cellIndex++) {\r\n                if (!(0, _type.isDefined)(usedArea[rowIndex]) || !(0, _type.isDefined)(usedArea[rowIndex][cellIndex])) {\r\n                    var cellMerge = this._dataProvider.getCellMerging(rowIndex, cellIndex);\r\n                    if (cellMerge.colspan || cellMerge.rowspan) {\r\n                        mergeArray.push({\r\n                            start: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex, cellIndex),\r\n                            end: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex + (cellMerge.rowspan || 0), cellIndex + (cellMerge.colspan || 0))\r\n                        });\r\n                        for (k = rowIndex; k <= rowIndex + cellMerge.rowspan || 0; k++) {\r\n                            for (l = cellIndex; l <= cellIndex + cellMerge.colspan || 0; l++) {\r\n                                if (!(0, _type.isDefined)(usedArea[k])) {\r\n                                    usedArea[k] = []\r\n                                }\r\n                                usedArea[k][l] = true\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        var mergeArrayLength = mergeArray.length;\r\n        for (mergeIndex = 0; mergeIndex < mergeArrayLength; mergeIndex++) {\r\n            mergeXML += this._getXMLTag(\"mergeCell\", [{\r\n                name: \"ref\",\r\n                value: mergeArray[mergeIndex].start + \":\" + mergeArray[mergeIndex].end\r\n            }])\r\n        }\r\n        return mergeXML.length ? this._getXMLTag(\"mergeCells\", [{\r\n            name: \"count\",\r\n            value: mergeArrayLength\r\n        }], mergeXML) : \"\"\r\n    },\r\n    _generateCommonXML: function() {\r\n        var relsFileContent = XML_TAG + this._createXMLRelationships(this._createXMLRelationship(1, \"officeDocument\", \"xl/\" + WORKBOOK_FILE_NAME));\r\n        var folder = this._zip.folder(XL_FOLDER_NAME);\r\n        var relsXML = XML_TAG;\r\n        this._zip.folder(\"_\" + RELATIONSHIP_PART_NAME).file(\".\" + RELATIONSHIP_PART_NAME, relsFileContent);\r\n        var xmlRelationships = this._createXMLRelationship(1, \"worksheet\", \"worksheets/\" + WORKSHEET_FILE_NAME) + this._createXMLRelationship(2, \"styles\", STYLE_FILE_NAME) + this._createXMLRelationship(3, \"sharedStrings\", SHAREDSTRING_FILE_NAME);\r\n        relsXML += this._createXMLRelationships(xmlRelationships);\r\n        folder.folder(\"_\" + RELATIONSHIP_PART_NAME).file(WORKBOOK_FILE_NAME + \".rels\", relsXML);\r\n        folder.file(WORKBOOK_FILE_NAME, this._getWorkbookContent());\r\n        this._zip.file(CONTENTTYPES_FILE_NAME, this._getContentTypesContent())\r\n    },\r\n    _generateContent: function() {\r\n        this._prepareStyleData();\r\n        this._prepareCellData();\r\n        this._generateWorkXML();\r\n        this._generateCommonXML()\r\n    },\r\n    _generateWorkXML: function() {\r\n        this._generateStylesXML();\r\n        this._generateStringsXML();\r\n        this._generateWorksheetXML()\r\n    },\r\n    ctor: function(dataProvider, options) {\r\n        this._rtlEnabled = options && !!options.rtlEnabled;\r\n        this._options = options;\r\n        this._maxRowIndex = 0;\r\n        this._maxColumnIndex = 0;\r\n        this._stringArray = [];\r\n        this._stringHash = {};\r\n        this._styleArray = [];\r\n        this._colsArray = [];\r\n        this._cellsArray = [];\r\n        this._needSheetPr = false;\r\n        this._dataProvider = dataProvider;\r\n        this._excelFile = new _excel.default;\r\n        if ((0, _type.isDefined)(ExcelCreator.JSZip)) {\r\n            this._zip = new ExcelCreator.JSZip\r\n        } else {\r\n            this._zip = null\r\n        }\r\n    },\r\n    _checkZipState: function() {\r\n        if (!this._zip) {\r\n            throw _ui.default.Error(\"E1041\", \"JSZip\")\r\n        }\r\n    },\r\n    ready: function() {\r\n        return this._dataProvider.ready()\r\n    },\r\n    getData: function(isBlob) {\r\n        var options = {\r\n            type: isBlob ? \"blob\" : \"base64\",\r\n            compression: \"DEFLATE\",\r\n            mimeType: _file_saver.MIME_TYPES.EXCEL\r\n        };\r\n        var deferred = new _deferred.Deferred;\r\n        this._checkZipState();\r\n        this._generateContent();\r\n        if (this._zip.generateAsync) {\r\n            this._zip.generateAsync(options).then(deferred.resolve)\r\n        } else {\r\n            deferred.resolve(this._zip.generate(options))\r\n        }\r\n        return deferred\r\n    }\r\n});\r\nexports.ExcelCreator = ExcelCreator;\r\nExcelCreator.JSZip = _jszip.default;\r\n\r\nfunction getData(data, options) {\r\n    var excelCreator = new ExcelCreator(data, options);\r\n    excelCreator._checkZipState();\r\n    return excelCreator.ready().then(function() {\r\n        return excelCreator.getData((0, _type.isFunction)((0, _window.getWindow)().Blob))\r\n    })\r\n}\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.data_area.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataArea = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.area_item\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PIVOTGRID_AREA_CLASS = \"dx-pivotgrid-area\";\r\nvar PIVOTGRID_AREA_DATA_CLASS = \"dx-pivotgrid-area-data\";\r\nvar PIVOTGRID_TOTAL_CLASS = \"dx-total\";\r\nvar PIVOTGRID_GRAND_TOTAL_CLASS = \"dx-grandtotal\";\r\nvar PIVOTGRID_ROW_TOTAL_CLASS = \"dx-row-total\";\r\nvar DataArea = _uiPivot_grid.AreaItem.inherit({\r\n    _getAreaName: function() {\r\n        return \"data\"\r\n    },\r\n    _createGroupElement: function() {\r\n        return (0, _renderer.default)(\"<div>\").addClass(PIVOTGRID_AREA_CLASS).addClass(PIVOTGRID_AREA_DATA_CLASS)\r\n    },\r\n    _applyCustomStyles: function(options) {\r\n        var cell = options.cell;\r\n        var classArray = options.classArray;\r\n        if (\"T\" === cell.rowType || \"T\" === cell.columnType) {\r\n            classArray.push(PIVOTGRID_TOTAL_CLASS)\r\n        }\r\n        if (\"GT\" === cell.rowType || \"GT\" === cell.columnType) {\r\n            classArray.push(PIVOTGRID_GRAND_TOTAL_CLASS)\r\n        }\r\n        if (\"T\" === cell.rowType || \"GT\" === cell.rowType) {\r\n            classArray.push(PIVOTGRID_ROW_TOTAL_CLASS)\r\n        }\r\n        if (options.rowIndex === options.rowsCount - 1) {\r\n            options.cssArray.push(\"border-bottom: 0px\")\r\n        }\r\n        this.callBase(options)\r\n    },\r\n    _moveFakeTable: function(scrollPos) {\r\n        this._moveFakeTableHorizontally(scrollPos.x);\r\n        this._moveFakeTableTop(scrollPos.y);\r\n        this.callBase()\r\n    },\r\n    processScroll: function(useNativeScrolling, horizontalScroll, verticalScroll) {\r\n        var direction = \"both\";\r\n        if (horizontalScroll && !verticalScroll) {\r\n            direction = \"horizontal\"\r\n        } else {\r\n            if (!horizontalScroll && verticalScroll) {\r\n                direction = \"vertical\"\r\n            }\r\n        }\r\n        this._groupElement.css(\"borderTopWidth\", 0).dxScrollable({\r\n            useNative: !!useNativeScrolling,\r\n            useSimulatedScrollbar: !useNativeScrolling,\r\n            direction: direction,\r\n            bounceEnabled: false,\r\n            updateManually: true\r\n        })\r\n    },\r\n    reset: function() {\r\n        this.callBase();\r\n        if (this._virtualContent) {\r\n            this._virtualContent.parent().css(\"height\", \"auto\")\r\n        }\r\n    },\r\n    setVirtualContentParams: function(params) {\r\n        this.callBase(params);\r\n        this._virtualContent.parent().css(\"height\", params.height);\r\n        this._setTableCss({\r\n            top: params.top,\r\n            left: params.left\r\n        })\r\n    }\r\n});\r\nexports.DataArea = DataArea;\r\n","/**\r\n * DevExtreme (ui/load_panel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _load_indicator = _interopRequireDefault(require(\"./load_indicator\"));\r\nvar _overlay = _interopRequireDefault(require(\"./overlay\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _themes = require(\"./themes\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar LOADPANEL_CLASS = \"dx-loadpanel\";\r\nvar LOADPANEL_WRAPPER_CLASS = \"dx-loadpanel-wrapper\";\r\nvar LOADPANEL_INDICATOR_CLASS = \"dx-loadpanel-indicator\";\r\nvar LOADPANEL_MESSAGE_CLASS = \"dx-loadpanel-message\";\r\nvar LOADPANEL_CONTENT_CLASS = \"dx-loadpanel-content\";\r\nvar LOADPANEL_CONTENT_WRAPPER_CLASS = \"dx-loadpanel-content-wrapper\";\r\nvar LOADPANEL_PANE_HIDDEN_CLASS = \"dx-loadpanel-pane-hidden\";\r\nvar LoadPanel = _overlay.default.inherit({\r\n    _supportedKeys: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            escape: _common.noop\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            message: _message.default.format(\"Loading\"),\r\n            width: 222,\r\n            height: 90,\r\n            animation: null,\r\n            showIndicator: true,\r\n            indicatorSrc: \"\",\r\n            showPane: true,\r\n            delay: 0,\r\n            templatesRenderAsynchronously: false,\r\n            hideTopOverlayHandler: null,\r\n            resizeEnabled: false,\r\n            focusStateEnabled: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"generic\"\r\n            },\r\n            options: {\r\n                shadingColor: \"transparent\"\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                message: \"\",\r\n                width: 60,\r\n                height: 60,\r\n                maxHeight: 60,\r\n                maxWidth: 60\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.$element().addClass(LOADPANEL_CLASS);\r\n        this._wrapper().addClass(LOADPANEL_WRAPPER_CLASS)\r\n    },\r\n    _renderContentImpl: function() {\r\n        this.callBase();\r\n        this.$content().addClass(LOADPANEL_CONTENT_CLASS);\r\n        this._$contentWrapper = (0, _renderer.default)(\"<div>\").addClass(LOADPANEL_CONTENT_WRAPPER_CLASS);\r\n        this._$contentWrapper.appendTo(this._$content);\r\n        this._togglePaneVisible();\r\n        this._cleanPreviousContent();\r\n        this._renderLoadIndicator();\r\n        this._renderMessage()\r\n    },\r\n    _show: function() {\r\n        var delay = this.option(\"delay\");\r\n        if (!delay) {\r\n            return this.callBase()\r\n        }\r\n        var deferred = new _deferred.Deferred;\r\n        var callBase = this.callBase.bind(this);\r\n        this._clearShowTimeout();\r\n        this._showTimeout = setTimeout(function() {\r\n            callBase().done(function() {\r\n                deferred.resolve()\r\n            })\r\n        }, delay);\r\n        return deferred.promise()\r\n    },\r\n    _hide: function() {\r\n        this._clearShowTimeout();\r\n        return this.callBase()\r\n    },\r\n    _clearShowTimeout: function() {\r\n        clearTimeout(this._showTimeout)\r\n    },\r\n    _renderMessage: function() {\r\n        if (!this._$contentWrapper) {\r\n            return\r\n        }\r\n        var message = this.option(\"message\");\r\n        if (!message) {\r\n            return\r\n        }\r\n        var $message = (0, _renderer.default)(\"<div>\").addClass(LOADPANEL_MESSAGE_CLASS).text(message);\r\n        this._$contentWrapper.append($message)\r\n    },\r\n    _renderLoadIndicator: function() {\r\n        if (!this._$contentWrapper || !this.option(\"showIndicator\")) {\r\n            return\r\n        }\r\n        if (!this._$indicator) {\r\n            this._$indicator = (0, _renderer.default)(\"<div>\").addClass(LOADPANEL_INDICATOR_CLASS).appendTo(this._$contentWrapper)\r\n        }\r\n        this._createComponent(this._$indicator, _load_indicator.default, {\r\n            indicatorSrc: this.option(\"indicatorSrc\")\r\n        })\r\n    },\r\n    _cleanPreviousContent: function() {\r\n        this.$content().find(\".\" + LOADPANEL_MESSAGE_CLASS).remove();\r\n        this.$content().find(\".\" + LOADPANEL_INDICATOR_CLASS).remove();\r\n        delete this._$indicator\r\n    },\r\n    _togglePaneVisible: function() {\r\n        this.$content().toggleClass(LOADPANEL_PANE_HIDDEN_CLASS, !this.option(\"showPane\"))\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"delay\":\r\n                break;\r\n            case \"message\":\r\n            case \"showIndicator\":\r\n                this._cleanPreviousContent();\r\n                this._renderLoadIndicator();\r\n                this._renderMessage();\r\n                break;\r\n            case \"showPane\":\r\n                this._togglePaneVisible();\r\n                break;\r\n            case \"indicatorSrc\":\r\n                this._renderLoadIndicator();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        this._clearShowTimeout();\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxLoadPanel\", LoadPanel);\r\nvar _default = LoadPanel;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.context_menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"contextMenu\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (events/pointer/touch.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base = _interopRequireDefault(require(\"./base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar eventMap = {\r\n    dxpointerdown: \"touchstart\",\r\n    dxpointermove: \"touchmove\",\r\n    dxpointerup: \"touchend\",\r\n    dxpointercancel: \"touchcancel\",\r\n    dxpointerover: \"\",\r\n    dxpointerout: \"\",\r\n    dxpointerenter: \"\",\r\n    dxpointerleave: \"\"\r\n};\r\nvar normalizeTouchEvent = function(e) {\r\n    var pointers = [];\r\n    (0, _iterator.each)(e.touches, function(_, touch) {\r\n        pointers.push((0, _extend.extend)({\r\n            pointerId: touch.identifier\r\n        }, touch))\r\n    });\r\n    return {\r\n        pointers: pointers,\r\n        pointerId: e.changedTouches[0].identifier\r\n    }\r\n};\r\nvar skipTouchWithSameIdentifier = function(pointerEvent) {\r\n    return \"ios\" === _devices.default.real().platform && (\"dxpointerdown\" === pointerEvent || \"dxpointerup\" === pointerEvent)\r\n};\r\nvar TouchStrategy = _base.default.inherit({\r\n    ctor: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._pointerId = 0\r\n    },\r\n    _handler: function(e) {\r\n        if (skipTouchWithSameIdentifier(this._eventName)) {\r\n            var touch = e.changedTouches[0];\r\n            if (this._pointerId === touch.identifier && 0 !== this._pointerId) {\r\n                return\r\n            }\r\n            this._pointerId = touch.identifier\r\n        }\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    _fireEvent: function(args) {\r\n        return this.callBase((0, _extend.extend)(normalizeTouchEvent(args.originalEvent), args))\r\n    }\r\n});\r\nTouchStrategy.map = eventMap;\r\nTouchStrategy.normalize = normalizeTouchEvent;\r\nvar _default = TouchStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/themes/base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar BaseTheme;\r\nif (_devextremeQuill.default) {\r\n    var Theme = _devextremeQuill.default.import(\"core/theme\");\r\n    BaseTheme = function(_Theme) {\r\n        _inherits(BaseTheme, _Theme);\r\n        var _super = _createSuper(BaseTheme);\r\n\r\n        function BaseTheme(quill, options) {\r\n            var _this;\r\n            _classCallCheck(this, BaseTheme);\r\n            _this = _super.call(this, quill, options);\r\n            _this.quill.root.classList.add(\"dx-htmleditor-content\");\r\n            return _this\r\n        }\r\n        return BaseTheme\r\n    }(Theme)\r\n} else {\r\n    BaseTheme = {}\r\n}\r\nvar _default = BaseTheme;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/templates/template_base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TemplateBase = exports.renderedCallbacks = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../utils/callbacks\"));\r\nvar _dom = require(\"../utils/dom\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _errors = _interopRequireDefault(require(\"../errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar renderedCallbacks = (0, _callbacks.default)({\r\n    syncStrategy: true\r\n});\r\nexports.renderedCallbacks = renderedCallbacks;\r\nvar TemplateBase = function() {\r\n    function TemplateBase() {\r\n        _classCallCheck(this, TemplateBase)\r\n    }\r\n    _createClass(TemplateBase, [{\r\n        key: \"render\",\r\n        value: function(options) {\r\n            options = options || {};\r\n            var onRendered = options.onRendered;\r\n            delete options.onRendered;\r\n            var $result = this._renderCore(options);\r\n            this._ensureResultInContainer($result, options.container);\r\n            renderedCallbacks.fire($result, options.container);\r\n            onRendered && onRendered();\r\n            return $result\r\n        }\r\n    }, {\r\n        key: \"_ensureResultInContainer\",\r\n        value: function($result, container) {\r\n            if (!container) {\r\n                return\r\n            }\r\n            var $container = (0, _renderer.default)(container);\r\n            var resultInContainer = (0, _dom.contains)($container.get(0), $result.get(0));\r\n            $container.append($result);\r\n            if (resultInContainer) {\r\n                return\r\n            }\r\n            var resultInBody = _dom_adapter.default.getBody().contains($container.get(0));\r\n            if (!resultInBody) {\r\n                return\r\n            }(0, _visibility_change.triggerShownEvent)($result)\r\n        }\r\n    }, {\r\n        key: \"_renderCore\",\r\n        value: function() {\r\n            throw _errors.default.Error(\"E0001\")\r\n        }\r\n    }]);\r\n    return TemplateBase\r\n}();\r\nexports.TemplateBase = TemplateBase;\r\n","/**\r\n * DevExtreme (viz/vector_map/control_bar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ControlBar = ControlBar;\r\nvar _utils = require(\"../core/utils\");\r\nvar _math = Math;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _sqrt = _math.sqrt;\r\nvar parseHorizontalAlignment = (0, _utils.enumParser)([\"left\", \"center\", \"right\"]);\r\nvar parseVerticalAlignment = (0, _utils.enumParser)([\"top\", \"bottom\"]);\r\nvar COMMAND_RESET = \"command-reset\";\r\nvar COMMAND_MOVE_UP = \"command-move-up\";\r\nvar COMMAND_MOVE_RIGHT = \"command-move-right\";\r\nvar COMMAND_MOVE_DOWN = \"command-move-down\";\r\nvar COMMAND_MOVE_LEFT = \"command-move-left\";\r\nvar COMMAND_ZOOM_IN = \"command-zoom-in\";\r\nvar COMMAND_ZOOM_OUT = \"command-zoom-out\";\r\nvar COMMAND_ZOOM_DRAG_LINE = \"command-zoom-drag-line\";\r\nvar COMMAND_ZOOM_DRAG = \"command-zoom-drag\";\r\nvar EVENT_TARGET_TYPE = \"control-bar\";\r\nvar FLAG_CENTERING = 1;\r\nvar FLAG_ZOOMING = 2;\r\nvar SIZE_OPTIONS = {\r\n    bigCircleSize: 58,\r\n    smallCircleSize: 28,\r\n    buttonSize: 10,\r\n    arrowButtonOffset: 20,\r\n    incDecButtonSize: 11,\r\n    incButtonOffset: 66,\r\n    decButtonOffset: 227,\r\n    sliderLineStartOffset: 88.5,\r\n    sliderLineEndOffset: 205.5,\r\n    sliderLength: 20,\r\n    sliderWidth: 8,\r\n    trackerGap: 4\r\n};\r\nvar OFFSET_X = 30.5;\r\nvar OFFSET_Y = 30.5;\r\nvar TOTAL_WIDTH = 61;\r\nvar TOTAL_HEIGHT = 274;\r\nvar COMMAND_TO_TYPE_MAP = {};\r\nCOMMAND_TO_TYPE_MAP[COMMAND_RESET] = ResetCommand;\r\nCOMMAND_TO_TYPE_MAP[COMMAND_MOVE_UP] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_RIGHT] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_DOWN] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_LEFT] = MoveCommand;\r\nCOMMAND_TO_TYPE_MAP[COMMAND_ZOOM_IN] = COMMAND_TO_TYPE_MAP[COMMAND_ZOOM_OUT] = ZoomCommand;\r\nCOMMAND_TO_TYPE_MAP[COMMAND_ZOOM_DRAG] = ZoomDragCommand;\r\n\r\nfunction ControlBar(parameters) {\r\n    var that = this;\r\n    that._params = parameters;\r\n    that._createElements(parameters.renderer, parameters.container, parameters.dataKey);\r\n    parameters.layoutControl.addItem(that);\r\n    that._subscribeToProjection(parameters.projection);\r\n    that._subscribeToTracker(parameters.tracker);\r\n    that._createCallbacks(parameters.projection)\r\n}\r\nControlBar.prototype = {\r\n    constructor: ControlBar,\r\n    _flags: 0,\r\n    dispose: function() {\r\n        var that = this;\r\n        that._params.layoutControl.removeItem(that);\r\n        that._root.linkRemove().linkOff();\r\n        that._offProjection();\r\n        that._offTracker();\r\n        that._params = that._root = that._offProjection = that._offTracker = that._callbacks = null\r\n    },\r\n    _subscribeToProjection: function(projection) {\r\n        var that = this;\r\n        that._offProjection = projection.on({\r\n            engine: function() {\r\n                that._update()\r\n            },\r\n            zoom: updateZoom,\r\n            \"max-zoom\": function() {\r\n                that._zoomPartition = projection.getZoomScalePartition();\r\n                that._sliderUnitLength = that._sliderLineLength / that._zoomPartition;\r\n                updateZoom()\r\n            }\r\n        });\r\n\r\n        function updateZoom() {\r\n            that._adjustZoom(projection.getScaledZoom())\r\n        }\r\n    },\r\n    _subscribeToTracker: function(tracker) {\r\n        var that = this;\r\n        var isActive = false;\r\n        that._offTracker = tracker.on({\r\n            start: function(arg) {\r\n                isActive = arg.data.name === EVENT_TARGET_TYPE;\r\n                if (isActive) {\r\n                    that._processStart(arg.data.index, arg)\r\n                }\r\n            },\r\n            move: function(arg) {\r\n                if (isActive) {\r\n                    that._processMove(arg.data.index, arg)\r\n                }\r\n            },\r\n            end: function() {\r\n                if (isActive) {\r\n                    that._processEnd();\r\n                    isActive = false\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _createCallbacks: function(projection) {\r\n        var that = this;\r\n        that._callbacks = {\r\n            reset: function(isCenter, isZoom) {\r\n                if (isCenter) {\r\n                    projection.setCenter(null)\r\n                }\r\n                if (isZoom) {\r\n                    projection.setZoom(null)\r\n                }\r\n            },\r\n            beginMove: function() {\r\n                projection.beginMoveCenter()\r\n            },\r\n            endMove: function() {\r\n                projection.endMoveCenter()\r\n            },\r\n            move: function(shift) {\r\n                projection.moveCenter(shift)\r\n            },\r\n            zoom: function(_zoom) {\r\n                projection.setScaledZoom(_zoom)\r\n            }\r\n        }\r\n    },\r\n    _createElements: function(renderer, container, dataKey) {\r\n        var that = this;\r\n        that._root = renderer.g().attr({\r\n            \"class\": \"dxm-control-bar\"\r\n        }).linkOn(container, \"control-bar\");\r\n        var buttonsGroups = that._buttonsGroup = renderer.g().attr({\r\n            \"class\": \"dxm-control-buttons\"\r\n        }).append(that._root);\r\n        var trackersGroup = renderer.g().attr({\r\n            stroke: \"none\",\r\n            \"stroke-width\": 0,\r\n            fill: \"#000000\",\r\n            opacity: 1e-4\r\n        }).css({\r\n            cursor: \"pointer\"\r\n        }).append(that._root);\r\n        that._createButtons(renderer, dataKey, buttonsGroups);\r\n        that._createTrackers(renderer, dataKey, trackersGroup)\r\n    },\r\n    _createButtons: function(renderer, dataKey, group) {\r\n        var that = this;\r\n        var options = SIZE_OPTIONS;\r\n        var size = options.buttonSize / 2;\r\n        var offset1 = options.arrowButtonOffset - size;\r\n        var offset2 = options.arrowButtonOffset;\r\n        var incDecButtonSize = options.incDecButtonSize / 2;\r\n        var directionOptions = {\r\n            \"stroke-linecap\": \"square\",\r\n            fill: \"none\"\r\n        };\r\n        var line = \"line\";\r\n        renderer.circle(0, 0, options.bigCircleSize / 2).append(group);\r\n        renderer.circle(0, 0, size).attr({\r\n            fill: \"none\"\r\n        }).append(group);\r\n        renderer.path([-size, -offset1, 0, -offset2, size, -offset1], line).attr(directionOptions).append(group);\r\n        renderer.path([offset1, -size, offset2, 0, offset1, size], line).attr(directionOptions).append(group);\r\n        renderer.path([size, offset1, 0, offset2, -size, offset1], line).attr(directionOptions).append(group);\r\n        renderer.path([-offset1, size, -offset2, 0, -offset1, -size], line).attr(directionOptions).append(group);\r\n        renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).append(group);\r\n        renderer.path([\r\n            [-incDecButtonSize, options.incButtonOffset, incDecButtonSize, options.incButtonOffset],\r\n            [0, options.incButtonOffset - incDecButtonSize, 0, options.incButtonOffset + incDecButtonSize]\r\n        ], \"area\").append(group);\r\n        renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).append(group);\r\n        renderer.path([-incDecButtonSize, options.decButtonOffset, incDecButtonSize, options.decButtonOffset], \"area\").append(group);\r\n        that._zoomLine = renderer.path([], \"line\").append(group);\r\n        that._zoomDrag = renderer.rect(_floor(-options.sliderLength / 2), _floor(options.sliderLineEndOffset - options.sliderWidth / 2), options.sliderLength, options.sliderWidth).append(group);\r\n        that._sliderLineLength = options.sliderLineEndOffset - options.sliderLineStartOffset\r\n    },\r\n    _createTrackers: function(renderer, dataKey, group) {\r\n        var options = SIZE_OPTIONS;\r\n        var size = _round((options.arrowButtonOffset - options.trackerGap) / 2);\r\n        var offset1 = options.arrowButtonOffset - size;\r\n        var offset2 = _round(_sqrt(options.bigCircleSize * options.bigCircleSize / 4 - size * size));\r\n        var size2 = offset2 - offset1;\r\n        renderer.rect(-size, -size, 2 * size, 2 * size).data(dataKey, {\r\n            index: COMMAND_RESET,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group);\r\n        renderer.rect(-size, -offset2, 2 * size, size2).data(dataKey, {\r\n            index: COMMAND_MOVE_UP,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group);\r\n        renderer.rect(offset1, -size, size2, 2 * size).data(dataKey, {\r\n            index: COMMAND_MOVE_RIGHT,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group);\r\n        renderer.rect(-size, offset1, 2 * size, size2).data(dataKey, {\r\n            index: COMMAND_MOVE_DOWN,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group);\r\n        renderer.rect(-offset2, -size, size2, 2 * size).data(dataKey, {\r\n            index: COMMAND_MOVE_LEFT,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group);\r\n        renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).data(dataKey, {\r\n            index: COMMAND_ZOOM_IN,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group);\r\n        renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).data(dataKey, {\r\n            index: COMMAND_ZOOM_OUT,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group);\r\n        renderer.rect(-2, options.sliderLineStartOffset - 2, 4, options.sliderLineEndOffset - options.sliderLineStartOffset + 4).css({\r\n            cursor: \"default\"\r\n        }).data(dataKey, {\r\n            index: COMMAND_ZOOM_DRAG_LINE,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group);\r\n        this._zoomDragTracker = renderer.rect(-options.sliderLength / 2, options.sliderLineEndOffset - options.sliderWidth / 2, options.sliderLength, options.sliderWidth).data(dataKey, {\r\n            index: COMMAND_ZOOM_DRAG,\r\n            name: EVENT_TARGET_TYPE\r\n        }).append(group)\r\n    },\r\n    resize: function(size) {\r\n        if (this._isActive) {\r\n            this._root.attr({\r\n                visibility: null !== size ? null : \"hidden\"\r\n            })\r\n        }\r\n    },\r\n    getLayoutOptions: function() {\r\n        return this._isActive ? this._layoutOptions : null\r\n    },\r\n    locate: function(x, y) {\r\n        this._root.attr({\r\n            translateX: x + this._margin + OFFSET_X,\r\n            translateY: y + this._margin + OFFSET_Y\r\n        })\r\n    },\r\n    _update: function() {\r\n        var that = this;\r\n        that._isActive = that._isEnabled && that._flags && that._params.projection.isInvertible();\r\n        if (that._isActive) {\r\n            that._root.linkAppend()\r\n        } else {\r\n            that._root.linkRemove()\r\n        }\r\n        that._processEnd();\r\n        that.updateLayout()\r\n    },\r\n    setInteraction: function(interaction) {\r\n        var that = this;\r\n        if ((0, _utils.parseScalar)(interaction.centeringEnabled, true)) {\r\n            that._flags |= FLAG_CENTERING\r\n        } else {\r\n            that._flags &= ~FLAG_CENTERING\r\n        }\r\n        if ((0, _utils.parseScalar)(interaction.zoomingEnabled, true)) {\r\n            that._flags |= FLAG_ZOOMING\r\n        } else {\r\n            that._flags &= ~FLAG_ZOOMING\r\n        }\r\n        that._update()\r\n    },\r\n    setOptions: function(options) {\r\n        var that = this;\r\n        that._isEnabled = !!(0, _utils.parseScalar)(options.enabled, true);\r\n        that._margin = options.margin || 0;\r\n        that._layoutOptions = {\r\n            width: 2 * that._margin + TOTAL_WIDTH,\r\n            height: 2 * that._margin + TOTAL_HEIGHT,\r\n            horizontalAlignment: parseHorizontalAlignment(options.horizontalAlignment, \"left\"),\r\n            verticalAlignment: parseVerticalAlignment(options.verticalAlignment, \"top\")\r\n        };\r\n        that._buttonsGroup.attr({\r\n            \"stroke-width\": options.borderWidth,\r\n            stroke: options.borderColor,\r\n            fill: options.color,\r\n            \"fill-opacity\": options.opacity\r\n        });\r\n        that._update()\r\n    },\r\n    _adjustZoom: function(zoom) {\r\n        var that = this;\r\n        var start = SIZE_OPTIONS.sliderLineStartOffset;\r\n        var end = SIZE_OPTIONS.sliderLineEndOffset;\r\n        var h = SIZE_OPTIONS.sliderWidth;\r\n        that._zoomFactor = _max(_min(_round(zoom), that._zoomPartition), 0);\r\n        var transform = {\r\n            translateY: -_round(that._zoomFactor * that._sliderUnitLength)\r\n        };\r\n        var y = end - h / 2 + transform.translateY;\r\n        that._zoomLine.attr({\r\n            points: [\r\n                [0, start, 0, _max(start, y)],\r\n                [0, _min(end, y + h), 0, end]\r\n            ]\r\n        });\r\n        that._zoomDrag.attr(transform);\r\n        that._zoomDragTracker.attr(transform)\r\n    },\r\n    _applyZoom: function() {\r\n        this._callbacks.zoom(this._zoomFactor)\r\n    },\r\n    _processStart: function(command, arg) {\r\n        var commandType;\r\n        if (this._isActive) {\r\n            commandType = COMMAND_TO_TYPE_MAP[command];\r\n            this._command = commandType && commandType.flags & this._flags ? new commandType(this, command, arg) : null\r\n        }\r\n    },\r\n    _processMove: function(command, arg) {\r\n        this._command && this._command.update(command, arg)\r\n    },\r\n    _processEnd: function() {\r\n        this._command && this._command.finish();\r\n        this._command = null\r\n    }\r\n};\r\n\r\nfunction disposeCommand(command) {\r\n    delete command._owner;\r\n    command.update = function() {};\r\n    command.finish = function() {}\r\n}\r\n\r\nfunction ResetCommand(owner, command) {\r\n    this._owner = owner;\r\n    this._command = command\r\n}\r\nResetCommand.flags = FLAG_CENTERING | FLAG_ZOOMING;\r\nResetCommand.prototype.update = function(command) {\r\n    command !== this._command && disposeCommand(this)\r\n};\r\nResetCommand.prototype.finish = function() {\r\n    var flags = this._owner._flags;\r\n    this._owner._callbacks.reset(!!(flags & FLAG_CENTERING), !!(flags & FLAG_ZOOMING));\r\n    disposeCommand(this)\r\n};\r\n\r\nfunction MoveCommand(owner, command, arg) {\r\n    this._command = command;\r\n    var timeout = null;\r\n    var interval = 100;\r\n    var dx = 0;\r\n    var dy = 0;\r\n    switch (this._command) {\r\n        case COMMAND_MOVE_UP:\r\n            dy = -10;\r\n            break;\r\n        case COMMAND_MOVE_RIGHT:\r\n            dx = 10;\r\n            break;\r\n        case COMMAND_MOVE_DOWN:\r\n            dy = 10;\r\n            break;\r\n        case COMMAND_MOVE_LEFT:\r\n            dx = -10\r\n    }\r\n\r\n    function callback() {\r\n        owner._callbacks.move([dx, dy]);\r\n        timeout = setTimeout(callback, interval)\r\n    }\r\n    this._stop = function() {\r\n        clearTimeout(timeout);\r\n        owner._callbacks.endMove();\r\n        this._stop = owner = null;\r\n        return this\r\n    };\r\n    arg = null;\r\n    owner._callbacks.beginMove();\r\n    callback()\r\n}\r\nMoveCommand.flags = FLAG_CENTERING;\r\nMoveCommand.prototype.update = function(command) {\r\n    this._command !== command && this.finish()\r\n};\r\nMoveCommand.prototype.finish = function() {\r\n    disposeCommand(this._stop())\r\n};\r\n\r\nfunction ZoomCommand(owner, command) {\r\n    this._owner = owner;\r\n    this._command = command;\r\n    var timeout = null;\r\n    var interval = 150;\r\n    var dZoom = this._command === COMMAND_ZOOM_IN ? 1 : -1;\r\n\r\n    function callback() {\r\n        owner._adjustZoom(owner._zoomFactor + dZoom);\r\n        timeout = setTimeout(callback, interval)\r\n    }\r\n    this._stop = function() {\r\n        clearTimeout(timeout);\r\n        this._stop = owner = null;\r\n        return this\r\n    };\r\n    callback()\r\n}\r\nZoomCommand.flags = FLAG_ZOOMING;\r\nZoomCommand.prototype.update = function(command) {\r\n    this._command !== command && this.finish()\r\n};\r\nZoomCommand.prototype.finish = function() {\r\n    this._owner._applyZoom();\r\n    disposeCommand(this._stop())\r\n};\r\n\r\nfunction ZoomDragCommand(owner, command, arg) {\r\n    this._owner = owner;\r\n    this._zoomFactor = owner._zoomFactor;\r\n    this._pos = arg.y\r\n}\r\nZoomDragCommand.flags = FLAG_ZOOMING;\r\nZoomDragCommand.prototype.update = function(command, arg) {\r\n    var owner = this._owner;\r\n    owner._adjustZoom(this._zoomFactor + owner._zoomPartition * (this._pos - arg.y) / owner._sliderLineLength)\r\n};\r\nZoomDragCommand.prototype.finish = function() {\r\n    this._owner._applyZoom();\r\n    disposeCommand(this)\r\n};\r\n","/**\r\n * DevExtreme (viz/funnel/tracker.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = void 0;\r\nvar _funnel = _interopRequireDefault(require(\"./funnel\"));\r\nvar _tracker = require(\"../components/tracker\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATA_KEY_BASE = \"__funnel_data_\";\r\nvar dataKeyModifier = 0;\r\nvar proto = _funnel.default.prototype;\r\nproto._eventsMap.onItemClick = {\r\n    name: \"itemClick\"\r\n};\r\nproto._eventsMap.onLegendClick = {\r\n    name: \"legendClick\"\r\n};\r\nvar getDataKey = function() {\r\n    return DATA_KEY_BASE + dataKeyModifier++\r\n};\r\nvar plugin = {\r\n    name: \"tracker\",\r\n    init: function() {\r\n        var that = this;\r\n        var dataKey = getDataKey();\r\n        var getProxyData = function(e) {\r\n            var rootOffset = that._renderer.getRootOffset();\r\n            var x = Math.floor(e.pageX - rootOffset.left);\r\n            var y = Math.floor(e.pageY - rootOffset.top);\r\n            return that._hitTestTargets(x, y)\r\n        };\r\n        that._tracker = new _tracker.Tracker({\r\n            widget: that,\r\n            root: that._renderer.root,\r\n            getData: function(e, tooltipData) {\r\n                var target = e.target;\r\n                var data = target[dataKey];\r\n                if ((0, _type.isDefined)(data)) {\r\n                    return data\r\n                }\r\n                var proxyData = getProxyData(e);\r\n                if (tooltipData && proxyData && \"inside-label\" !== proxyData.type) {\r\n                    return\r\n                }\r\n                return proxyData && proxyData.id\r\n            },\r\n            getNode: function(index) {\r\n                return that._items[index]\r\n            },\r\n            click: function(e) {\r\n                var proxyData = getProxyData(e.event);\r\n                var dataType = proxyData && proxyData.type;\r\n                var event = \"legend\" === dataType ? \"legendClick\" : \"itemClick\";\r\n                that._eventTrigger(event, {\r\n                    item: e.node,\r\n                    event: e.event\r\n                })\r\n            }\r\n        });\r\n        this._dataKey = dataKey\r\n    },\r\n    dispose: function() {\r\n        this._tracker.dispose()\r\n    },\r\n    extenders: {\r\n        _change_TILING: function() {\r\n            var dataKey = this._dataKey;\r\n            this._items.forEach(function(item, index) {\r\n                item.element.data(dataKey, index)\r\n            })\r\n        }\r\n    }\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (data/query_implementation.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.queryImpl = void 0;\r\nvar _array_query = _interopRequireDefault(require(\"./array_query\"));\r\nvar _remote_query = _interopRequireDefault(require(\"./remote_query\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar queryImpl = {\r\n    array: _array_query.default,\r\n    remote: _remote_query.default\r\n};\r\nexports.queryImpl = queryImpl;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/week/date_table/layout.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.WeekTableLayout = WeekTableLayout;\r\nexports.viewFunction = void 0;\r\nvar _layout = require(\"../../base/date_table/layout\");\r\nvar _layout_props = require(\"../../base/layout_props\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_layout.DateTableLayoutBase, _extends({\r\n        viewData: viewModel.props.viewData,\r\n        viewType: \"week\",\r\n        dataCellTemplate: viewModel.props.dataCellTemplate\r\n    }, viewModel.restAttributes))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction WeekTableLayout(props) {\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.dataCellTemplate, props.groupOrientation, props.viewData, _objectWithoutProperties(props, [\"dataCellTemplate\", \"groupOrientation\", \"viewData\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n        }),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nWeekTableLayout.defaultProps = _objectSpread({}, _layout_props.LayoutProps);\r\n","/**\r\n * DevExtreme (ui/overlay/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getElementMaxHeightByWindow = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar WINDOW_HEIGHT_PERCENT = .9;\r\nvar getElementMaxHeightByWindow = function($element, startLocation) {\r\n    var $window = (0, _renderer.default)((0, _window.getWindow)());\r\n    var _$element$offset = $element.offset(),\r\n        elementOffset = _$element$offset.top;\r\n    var actualOffset;\r\n    if ((0, _type.isNumeric)(startLocation)) {\r\n        if (startLocation < elementOffset) {\r\n            return elementOffset - startLocation\r\n        } else {\r\n            actualOffset = $window.innerHeight() - startLocation + $window.scrollTop()\r\n        }\r\n    } else {\r\n        var offsetTop = elementOffset - $window.scrollTop();\r\n        var offsetBottom = $window.innerHeight() - offsetTop - $element.outerHeight();\r\n        actualOffset = Math.max(offsetTop, offsetBottom)\r\n    }\r\n    return actualOffset * WINDOW_HEIGHT_PERCENT\r\n};\r\nexports.getElementMaxHeightByWindow = getElementMaxHeightByWindow;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.header_panel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.header_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"headerPanel\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (data/query.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _query_implementation = require(\"./query_implementation\");\r\nvar query = function() {\r\n    var impl = Array.isArray(arguments[0]) ? \"array\" : \"remote\";\r\n    return _query_implementation.queryImpl[impl].apply(this, arguments)\r\n};\r\nvar _default = query;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.AllDayPanelTitle = AllDayPanelTitle;\r\nexports.AllDayPanelTitleProps = exports.viewFunction = void 0;\r\nvar _message = _interopRequireDefault(require(\"../../../../../../../localization/message\"));\r\nvar _combine_classes = require(\"../../../../../../utils/combine_classes\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(\"div\", _extends({}, viewModel.restAttributes, {\r\n        className: viewModel.classes\r\n    }), viewModel.text)\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar AllDayPanelTitleProps = {\r\n    className: \"\",\r\n    visible: true\r\n};\r\nexports.AllDayPanelTitleProps = AllDayPanelTitleProps;\r\n\r\nfunction AllDayPanelTitle(props) {\r\n    var __text = (0, _hooks.useCallback)(function() {\r\n        return _message.default.format(\"dxScheduler-allDay\")\r\n    }, []);\r\n    var __classes = (0, _hooks.useCallback)(function() {\r\n        return (0, _combine_classes.combineClasses)(_defineProperty({\r\n            \"dx-scheduler-all-day-title\": true,\r\n            \"dx-scheduler-all-day-title-hidden\": !props.visible\r\n        }, props.className, !!props.className))\r\n    }, [props.visible, props.className]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.className, props.visible, _objectWithoutProperties(props, [\"className\", \"visible\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread({}, props),\r\n        text: __text(),\r\n        classes: __classes(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nAllDayPanelTitle.defaultProps = _objectSpread({}, AllDayPanelTitleProps);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.master_detail.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.master_detail\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"masterDetail\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (exporter/exceljs/export.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Export = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _export_format = require(\"./export_format\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _window = require(\"../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar MAX_DIGIT_WIDTH_IN_PIXELS = 7;\r\nvar MAX_EXCEL_COLUMN_WIDTH = 255;\r\nvar Export = {\r\n    getFullOptions: function(options) {\r\n        var fullOptions = (0, _extend.extend)({}, options);\r\n        if (!((0, _type.isDefined)(fullOptions.worksheet) && (0, _type.isObject)(fullOptions.worksheet))) {\r\n            throw Error('The \"worksheet\" field must contain an object.')\r\n        }\r\n        if (!(0, _type.isDefined)(fullOptions.topLeftCell)) {\r\n            fullOptions.topLeftCell = {\r\n                row: 1,\r\n                column: 1\r\n            }\r\n        } else {\r\n            if ((0, _type.isString)(fullOptions.topLeftCell)) {\r\n                var _fullOptions$workshee = fullOptions.worksheet.getCell(fullOptions.topLeftCell),\r\n                    row = _fullOptions$workshee.row,\r\n                    col = _fullOptions$workshee.col;\r\n                fullOptions.topLeftCell = {\r\n                    row: row,\r\n                    column: col\r\n                }\r\n            }\r\n        }\r\n        if (!(0, _type.isDefined)(fullOptions.keepColumnWidths)) {\r\n            fullOptions.keepColumnWidths = true\r\n        }\r\n        if (!(0, _type.isDefined)(fullOptions.loadPanel)) {\r\n            fullOptions.loadPanel = {}\r\n        }\r\n        if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) {\r\n            fullOptions.loadPanel.enabled = true\r\n        }\r\n        if (!(0, _type.isDefined)(fullOptions.loadPanel.text)) {\r\n            fullOptions.loadPanel.text = _message.default.format(\"dxDataGrid-exporting\")\r\n        }\r\n        return fullOptions\r\n    },\r\n    convertDateForExcelJS: function(date) {\r\n        return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()))\r\n    },\r\n    setNumberFormat: function(excelCell, numberFormat) {\r\n        excelCell.numFmt = numberFormat\r\n    },\r\n    tryConvertToExcelNumberFormat: function(format, dataType) {\r\n        var newFormat = _export_format.ExportFormat.formatObjectConverter(format, dataType);\r\n        var currency = newFormat.currency;\r\n        format = newFormat.format;\r\n        dataType = newFormat.dataType;\r\n        return _export_format.ExportFormat.convertFormat(format, newFormat.precision, dataType, currency)\r\n    },\r\n    setAlignment: function(excelCell, wrapText, horizontalAlignment) {\r\n        excelCell.alignment = excelCell.alignment || {};\r\n        if ((0, _type.isDefined)(wrapText)) {\r\n            excelCell.alignment.wrapText = wrapText\r\n        }\r\n        if ((0, _type.isDefined)(horizontalAlignment)) {\r\n            excelCell.alignment.horizontal = horizontalAlignment\r\n        }\r\n        excelCell.alignment.vertical = \"top\"\r\n    },\r\n    setColumnsWidth: function(worksheet, widths, startColumnIndex) {\r\n        if (!(0, _type.isDefined)(widths)) {\r\n            return\r\n        }\r\n        for (var i = 0; i < widths.length; i++) {\r\n            var columnWidth = widths[i];\r\n            if (\"number\" === typeof columnWidth && isFinite(columnWidth)) {\r\n                worksheet.getColumn(startColumnIndex + i).width = Math.min(MAX_EXCEL_COLUMN_WIDTH, Math.floor(columnWidth / MAX_DIGIT_WIDTH_IN_PIXELS * 100) / 100)\r\n            }\r\n        }\r\n    },\r\n    tryGetMergeRange: function(rowIndex, cellIndex, mergedCells, dataProvider) {\r\n        if (!mergedCells[rowIndex] || !mergedCells[rowIndex][cellIndex]) {\r\n            var cellMerge = dataProvider.getCellMerging(rowIndex, cellIndex);\r\n            if (cellMerge.colspan || cellMerge.rowspan) {\r\n                for (var i = rowIndex; i <= rowIndex + cellMerge.rowspan || 0; i++) {\r\n                    for (var j = cellIndex; j <= cellIndex + cellMerge.colspan || 0; j++) {\r\n                        if (!mergedCells[i]) {\r\n                            mergedCells[i] = []\r\n                        }\r\n                        mergedCells[i][j] = true\r\n                    }\r\n                }\r\n                return {\r\n                    start: {\r\n                        row: rowIndex,\r\n                        column: cellIndex\r\n                    },\r\n                    end: {\r\n                        row: rowIndex + (cellMerge.rowspan || 0),\r\n                        column: cellIndex + (cellMerge.colspan || 0)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    mergeCells: function(worksheet, topLeftCell, mergeRanges) {\r\n        mergeRanges.forEach(function(mergeRange) {\r\n            worksheet.mergeCells(mergeRange.start.row + topLeftCell.row, mergeRange.start.column + topLeftCell.column, mergeRange.end.row + topLeftCell.row, mergeRange.end.column + topLeftCell.column)\r\n        })\r\n    },\r\n    setLoadPanelOptions: function(component, options, privateOptions) {\r\n        if (!(0, _window.hasWindow)()) {\r\n            return\r\n        }\r\n        component._setOptionWithoutOptionChange(\"loadPanel\", options);\r\n        privateOptions._renderLoadPanel(component)\r\n    },\r\n    \"export\": function(options, privateOptions) {\r\n        var _this = this;\r\n        var customizeCell = options.customizeCell,\r\n            component = options.component,\r\n            worksheet = options.worksheet,\r\n            topLeftCell = options.topLeftCell,\r\n            autoFilterEnabled = options.autoFilterEnabled,\r\n            keepColumnWidths = options.keepColumnWidths,\r\n            selectedRowsOnly = options.selectedRowsOnly,\r\n            loadPanel = options.loadPanel;\r\n        var initialLoadPanelOptions = (0, _extend.extend)({}, component.option(\"loadPanel\"));\r\n        if (\"animation\" in component.option(\"loadPanel\")) {\r\n            loadPanel.animation = null\r\n        }\r\n        this.setLoadPanelOptions(component, loadPanel, privateOptions);\r\n        var wrapText = !!component.option(\"wordWrapEnabled\");\r\n        worksheet.properties.outlineProperties = {\r\n            summaryBelow: false,\r\n            summaryRight: false\r\n        };\r\n        var cellRange = {\r\n            from: {\r\n                row: topLeftCell.row,\r\n                column: topLeftCell.column\r\n            },\r\n            to: {\r\n                row: topLeftCell.row,\r\n                column: topLeftCell.column\r\n            }\r\n        };\r\n        var dataProvider = component.getDataProvider(selectedRowsOnly);\r\n        return new Promise(function(resolve) {\r\n            dataProvider.ready().done(function() {\r\n                var columns = dataProvider.getColumns();\r\n                var headerRowCount = (0, _type.isFunction)(dataProvider.getHeaderRowCount) ? dataProvider.getHeaderRowCount() : 1;\r\n                var dataRowsCount = dataProvider.getRowsCount();\r\n                if (keepColumnWidths) {\r\n                    _this.setColumnsWidth(worksheet, dataProvider.getColumnsWidths(), cellRange.from.column)\r\n                }\r\n                var mergedCells = [];\r\n                var mergeRanges = [];\r\n                for (var rowIndex = 0; rowIndex < dataRowsCount; rowIndex++) {\r\n                    var row = worksheet.getRow(cellRange.from.row + rowIndex);\r\n                    _this.exportRow(rowIndex, columns.length, row, cellRange.from.column, dataProvider, customizeCell, headerRowCount, mergedCells, mergeRanges, wrapText, privateOptions);\r\n                    if (rowIndex >= 1) {\r\n                        cellRange.to.row++\r\n                    }\r\n                }\r\n                _this.mergeCells(worksheet, topLeftCell, mergeRanges);\r\n                cellRange.to.column += columns.length > 0 ? columns.length - 1 : 0;\r\n                var worksheetViewSettings = worksheet.views[0] || {};\r\n                if (component.option(\"rtlEnabled\")) {\r\n                    worksheetViewSettings.rightToLeft = true\r\n                }\r\n                if (headerRowCount > 0) {\r\n                    if (Object.keys(worksheetViewSettings).indexOf(\"state\") === -1) {\r\n                        (0, _extend.extend)(worksheetViewSettings, privateOptions._getWorksheetFrozenState(dataProvider, cellRange))\r\n                    }\r\n                    privateOptions._trySetAutoFilter(dataProvider, worksheet, cellRange, headerRowCount, autoFilterEnabled)\r\n                }\r\n                if (Object.keys(worksheetViewSettings).length > 0) {\r\n                    worksheet.views = [worksheetViewSettings]\r\n                }\r\n                resolve(cellRange)\r\n            }).always(function() {\r\n                _this.setLoadPanelOptions(component, initialLoadPanelOptions, privateOptions)\r\n            })\r\n        })\r\n    },\r\n    exportRow: function(rowIndex, cellCount, row, startColumnIndex, dataProvider, customizeCell, headerRowCount, mergedCells, mergeRanges, wrapText, privateOptions) {\r\n        var styles = dataProvider.getStyles();\r\n        privateOptions._trySetOutlineLevel(dataProvider, row, rowIndex, headerRowCount);\r\n        for (var cellIndex = 0; cellIndex < cellCount; cellIndex++) {\r\n            var cellData = dataProvider.getCellData(rowIndex, cellIndex, true);\r\n            var cell = cellData.cellSourceData;\r\n            var excelCell = row.getCell(startColumnIndex + cellIndex);\r\n            if ((0, _type.isDate)(cellData.value)) {\r\n                excelCell.value = this.convertDateForExcelJS(cellData.value)\r\n            } else {\r\n                excelCell.value = cellData.value\r\n            }\r\n            if ((0, _type.isDefined)(excelCell.value)) {\r\n                var _styles$dataProvider$ = styles[dataProvider.getStyleId(rowIndex, cellIndex)],\r\n                    bold = _styles$dataProvider$.bold,\r\n                    horizontalAlignment = _styles$dataProvider$.alignment,\r\n                    format = _styles$dataProvider$.format,\r\n                    dataType = _styles$dataProvider$.dataType;\r\n                var numberFormat = this.tryConvertToExcelNumberFormat(format, dataType);\r\n                if ((0, _type.isDefined)(numberFormat)) {\r\n                    numberFormat = numberFormat.replace(/&quot;/g, '\"')\r\n                } else {\r\n                    if ((0, _type.isString)(excelCell.value) && /^[@=+-]/.test(excelCell.value)) {\r\n                        numberFormat = \"@\"\r\n                    }\r\n                }\r\n                this.setNumberFormat(excelCell, numberFormat);\r\n                privateOptions._trySetFont(excelCell, bold);\r\n                this.setAlignment(excelCell, wrapText, horizontalAlignment)\r\n            }\r\n            if ((0, _type.isFunction)(customizeCell)) {\r\n                customizeCell(privateOptions._getCustomizeCellOptions(excelCell, cell))\r\n            }\r\n            if (privateOptions._needMergeRange(rowIndex, headerRowCount)) {\r\n                var mergeRange = this.tryGetMergeRange(rowIndex, cellIndex, mergedCells, dataProvider);\r\n                if ((0, _type.isDefined)(mergeRange)) {\r\n                    mergeRanges.push(mergeRange)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.Export = Export;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.column_chooser.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ColumnChooserView = exports.ColumnChooserController = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_chooser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ColumnChooserController = _uiGrid_core.default.controllers.columnChooser;\r\nexports.ColumnChooserController = ColumnChooserController;\r\nvar ColumnChooserView = _uiGrid_core.default.views.columnChooserView;\r\nexports.ColumnChooserView = ColumnChooserView;\r\n_uiData_grid.default.registerModule(\"columnChooser\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/form/ui.form.utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getItemPath = exports.isFullPathContainsTabs = exports.tryGetTabPath = exports.getOptionNameFromFullName = exports.getFullOptionName = exports.isExpectedItem = exports.getTextWithoutSpaces = exports.concatPaths = exports.createItemPathByIndex = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar createItemPathByIndex = function(index, isTabs) {\r\n    return \"\".concat(isTabs ? \"tabs\" : \"items\", \"[\").concat(index, \"]\")\r\n};\r\nexports.createItemPathByIndex = createItemPathByIndex;\r\nvar concatPaths = function(path1, path2) {\r\n    if ((0, _type.isDefined)(path1) && (0, _type.isDefined)(path2)) {\r\n        return \"\".concat(path1, \".\").concat(path2)\r\n    }\r\n    return path1 || path2\r\n};\r\nexports.concatPaths = concatPaths;\r\nvar getTextWithoutSpaces = function(text) {\r\n    return text ? text.replace(/\\s/g, \"\") : void 0\r\n};\r\nexports.getTextWithoutSpaces = getTextWithoutSpaces;\r\nvar isExpectedItem = function(item, fieldName) {\r\n    return item && (item.dataField === fieldName || item.name === fieldName || getTextWithoutSpaces(item.title) === fieldName || \"group\" === item.itemType && getTextWithoutSpaces(item.caption) === fieldName)\r\n};\r\nexports.isExpectedItem = isExpectedItem;\r\nvar getFullOptionName = function(path, optionName) {\r\n    return \"\".concat(path, \".\").concat(optionName)\r\n};\r\nexports.getFullOptionName = getFullOptionName;\r\nvar getOptionNameFromFullName = function(fullName) {\r\n    var parts = fullName.split(\".\");\r\n    return parts[parts.length - 1].replace(/\\[\\d+]/, \"\")\r\n};\r\nexports.getOptionNameFromFullName = getOptionNameFromFullName;\r\nvar tryGetTabPath = function(fullPath) {\r\n    var pathParts = fullPath.split(\".\");\r\n    var resultPathParts = _toConsumableArray(pathParts);\r\n    for (var i = pathParts.length - 1; i >= 0; i--) {\r\n        if (isFullPathContainsTabs(pathParts[i])) {\r\n            return resultPathParts.join(\".\")\r\n        }\r\n        resultPathParts.splice(i, 1)\r\n    }\r\n    return \"\"\r\n};\r\nexports.tryGetTabPath = tryGetTabPath;\r\nvar isFullPathContainsTabs = function(fullPath) {\r\n    return fullPath.indexOf(\"tabs\") > -1\r\n};\r\nexports.isFullPathContainsTabs = isFullPathContainsTabs;\r\nvar getItemPath = function getItemPath(items, item, isTabs) {\r\n    var index = items.indexOf(item);\r\n    if (index > -1) {\r\n        return createItemPathByIndex(index, isTabs)\r\n    }\r\n    for (var i = 0; i < items.length; i++) {\r\n        var targetItem = items[i];\r\n        var tabOrGroupItems = targetItem.tabs || targetItem.items;\r\n        if (tabOrGroupItems) {\r\n            var itemPath = getItemPath(tabOrGroupItems, item, targetItem.tabs);\r\n            if (itemPath) {\r\n                return concatPaths(createItemPathByIndex(i, isTabs), itemPath)\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.getItemPath = getItemPath;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/consts.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.HORIZONTAL_GROUP_ORIENTATION = exports.VERTICAL_GROUP_ORIENTATION = void 0;\r\nvar VERTICAL_GROUP_ORIENTATION = \"vertical\";\r\nexports.VERTICAL_GROUP_ORIENTATION = VERTICAL_GROUP_ORIENTATION;\r\nvar HORIZONTAL_GROUP_ORIENTATION = \"horizontal\";\r\nexports.HORIZONTAL_GROUP_ORIENTATION = HORIZONTAL_GROUP_ORIENTATION;\r\n","/**\r\n * DevExtreme (core/templates/empty_template.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.EmptyTemplate = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../renderer\"));\r\nvar _template_base = require(\"./template_base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar EmptyTemplate = function(_TemplateBase) {\r\n    _inherits(EmptyTemplate, _TemplateBase);\r\n    var _super = _createSuper(EmptyTemplate);\r\n\r\n    function EmptyTemplate() {\r\n        _classCallCheck(this, EmptyTemplate);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(EmptyTemplate, [{\r\n        key: \"_renderCore\",\r\n        value: function() {\r\n            return (0, _renderer.default)()\r\n        }\r\n    }]);\r\n    return EmptyTemplate\r\n}(_template_base.TemplateBase);\r\nexports.EmptyTemplate = EmptyTemplate;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.rows.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.RowsView = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.rows\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TREELIST_TEXT_CONTENT = \"dx-treelist-text-content\";\r\nvar TREELIST_EXPAND_ICON_CONTAINER_CLASS = \"dx-treelist-icon-container\";\r\nvar TREELIST_CELL_EXPANDABLE_CLASS = \"dx-treelist-cell-expandable\";\r\nvar TREELIST_EMPTY_SPACE = \"dx-treelist-empty-space\";\r\nvar TREELIST_EXPANDED_CLASS = \"dx-treelist-expanded\";\r\nvar TREELIST_COLLAPSED_CLASS = \"dx-treelist-collapsed\";\r\nvar RowsView = _uiGrid_core.default.views.rowsView.inherit(function() {\r\n    var createCellContent = function($container) {\r\n        return (0, _renderer.default)(\"<div>\").addClass(TREELIST_TEXT_CONTENT).appendTo($container)\r\n    };\r\n    var createIcon = function(hasIcon, isExpanded) {\r\n        var $iconElement = (0, _renderer.default)(\"<div>\").addClass(TREELIST_EMPTY_SPACE);\r\n        if (hasIcon) {\r\n            $iconElement.toggleClass(TREELIST_EXPANDED_CLASS, isExpanded).toggleClass(TREELIST_COLLAPSED_CLASS, !isExpanded).append((0, _renderer.default)(\"<span>\"))\r\n        }\r\n        return $iconElement\r\n    };\r\n    return {\r\n        _renderIconContainer: function($container, options) {\r\n            var _this = this;\r\n            var $iconContainer = (0, _renderer.default)(\"<div>\").addClass(TREELIST_EXPAND_ICON_CONTAINER_CLASS).appendTo($container);\r\n            options.watch && options.watch(function() {\r\n                return [options.row.level, options.row.isExpanded, options.row.node.hasChildren]\r\n            }, function() {\r\n                $iconContainer.empty();\r\n                _this._renderIcons($iconContainer, options)\r\n            });\r\n            $container.addClass(TREELIST_CELL_EXPANDABLE_CLASS);\r\n            return this._renderIcons($iconContainer, options)\r\n        },\r\n        _renderIcons: function($iconContainer, options) {\r\n            var row = options.row;\r\n            var level = row.level;\r\n            for (var i = 0; i <= level; i++) {\r\n                $iconContainer.append(createIcon(i === level && row.node.hasChildren, row.isExpanded))\r\n            }\r\n            return $iconContainer\r\n        },\r\n        _renderCellCommandContent: function(container, model) {\r\n            this._renderIconContainer(container, model);\r\n            return true\r\n        },\r\n        _processTemplate: function(template, options) {\r\n            var that = this;\r\n            var resultTemplate;\r\n            var renderingTemplate = this.callBase(template);\r\n            var firstDataColumnIndex = that._columnsController.getFirstDataColumnIndex();\r\n            if (renderingTemplate && options.column.index === firstDataColumnIndex) {\r\n                resultTemplate = {\r\n                    render: function(options) {\r\n                        var $container = options.container;\r\n                        if (that._renderCellCommandContent($container, options.model)) {\r\n                            options.container = createCellContent($container)\r\n                        }\r\n                        renderingTemplate.render(options)\r\n                    }\r\n                }\r\n            } else {\r\n                resultTemplate = renderingTemplate\r\n            }\r\n            return resultTemplate\r\n        },\r\n        _updateCell: function($cell, options) {\r\n            $cell = $cell.hasClass(TREELIST_TEXT_CONTENT) ? $cell.parent() : $cell;\r\n            this.callBase($cell, options)\r\n        },\r\n        _rowClick: function(e) {\r\n            var dataController = this._dataController;\r\n            var $targetElement = (0, _renderer.default)(e.event.target);\r\n            var isExpandIcon = this.isExpandIcon($targetElement);\r\n            var item = dataController && dataController.items()[e.rowIndex];\r\n            if (isExpandIcon && item) {\r\n                dataController.changeRowExpand(item.key)\r\n            }\r\n            this.callBase(e)\r\n        },\r\n        _createRow: function(row) {\r\n            var node = row && row.node;\r\n            var $rowElement = this.callBase.apply(this, arguments);\r\n            if (node) {\r\n                this.setAria(\"level\", row.level, $rowElement);\r\n                if (node.hasChildren) {\r\n                    this.setAria(\"expanded\", row.isExpanded, $rowElement)\r\n                }\r\n            }\r\n            return $rowElement\r\n        },\r\n        isExpandIcon: function($targetElement) {\r\n            return !!$targetElement.closest(\".\" + TREELIST_EXPANDED_CLASS + \", .\" + TREELIST_COLLAPSED_CLASS).length\r\n        }\r\n    }\r\n}());\r\nexports.RowsView = RowsView;\r\n_uiTree_list.default.registerModule(\"rows\", {\r\n    defaultOptions: _uiGrid_core.default.defaultOptions,\r\n    views: {\r\n        rowsView: RowsView\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/html_editor/converters/delta.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _converterController = _interopRequireDefault(require(\"../converterController\"));\r\nvar _quill_importer = require(\"../quill_importer\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar DeltaConverter = function() {\r\n    function DeltaConverter() {\r\n        _classCallCheck(this, DeltaConverter);\r\n        this.TextBlot = (0, _quill_importer.getQuill)().import(\"blots/text\");\r\n        this.BreakBlot = (0, _quill_importer.getQuill)().import(\"blots/break\")\r\n    }\r\n    _createClass(DeltaConverter, [{\r\n        key: \"setQuillInstance\",\r\n        value: function(quillInstance) {\r\n            this.quillInstance = quillInstance\r\n        }\r\n    }, {\r\n        key: \"toHtml\",\r\n        value: function() {\r\n            if (!this.quillInstance) {\r\n                return\r\n            }\r\n            return this._isQuillEmpty() ? \"\" : this.quillInstance.getSemanticHTML(0, this.quillInstance.getLength() + 1)\r\n        }\r\n    }, {\r\n        key: \"_isQuillEmpty\",\r\n        value: function() {\r\n            var delta = this.quillInstance.getContents();\r\n            return 1 === delta.length() && this._isDeltaEmpty(delta)\r\n        }\r\n    }, {\r\n        key: \"_isDeltaEmpty\",\r\n        value: function(delta) {\r\n            return delta.reduce(function(__, _ref) {\r\n                var insert = _ref.insert;\r\n                return insert.indexOf(\"\\n\") !== -1\r\n            })\r\n        }\r\n    }]);\r\n    return DeltaConverter\r\n}();\r\n_converterController.default.addConverter(\"delta\", DeltaConverter);\r\nvar _default = DeltaConverter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/collection/ui.collection_widget.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _template_manager = require(\"../../core/utils/template_manager\");\r\nvar _element = require(\"../../core/element\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _action = _interopRequireDefault(require(\"../../core/action\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _item = _interopRequireDefault(require(\"./item\"));\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _click = require(\"../../events/click\");\r\nvar _contextmenu = require(\"../../events/contextmenu\");\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COLLECTION_CLASS = \"dx-collection\";\r\nvar ITEM_CLASS = \"dx-item\";\r\nvar CONTENT_CLASS_POSTFIX = \"-content\";\r\nvar ITEM_CONTENT_PLACEHOLDER_CLASS = \"dx-item-content-placeholder\";\r\nvar ITEM_DATA_KEY = \"dxItemData\";\r\nvar ITEM_INDEX_KEY = \"dxItemIndex\";\r\nvar ITEM_TEMPLATE_ID_PREFIX = \"tmpl-\";\r\nvar ITEMS_OPTIONS_NAME = \"dxItem\";\r\nvar SELECTED_ITEM_CLASS = \"dx-item-selected\";\r\nvar ITEM_RESPONSE_WAIT_CLASS = \"dx-item-response-wait\";\r\nvar EMPTY_COLLECTION = \"dx-empty-collection\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar ITEM_PATH_REGEX = /^([^.]+\\[\\d+\\]\\.)+([\\w.]+)$/;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"item\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar FOCUS_PAGE_UP = \"pageup\";\r\nvar FOCUS_PAGE_DOWN = \"pagedown\";\r\nvar FOCUS_LAST = \"last\";\r\nvar FOCUS_FIRST = \"first\";\r\nvar CollectionWidget = _ui.default.inherit({\r\n    _activeStateUnit: \".\" + ITEM_CLASS,\r\n    _supportedKeys: function() {\r\n        var enter = function(e) {\r\n            var $itemElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n            if (!$itemElement.length) {\r\n                return\r\n            }\r\n            this._itemClickHandler((0, _extend.extend)({}, e, {\r\n                target: $itemElement,\r\n                currentTarget: $itemElement\r\n            }))\r\n        };\r\n        var space = function(e) {\r\n            e.preventDefault();\r\n            enter.call(this, e)\r\n        };\r\n        var move = function(location, e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            this._moveFocus(location, e)\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            space: space,\r\n            enter: enter,\r\n            leftArrow: move.bind(this, FOCUS_LEFT),\r\n            rightArrow: move.bind(this, FOCUS_RIGHT),\r\n            upArrow: move.bind(this, FOCUS_UP),\r\n            downArrow: move.bind(this, FOCUS_DOWN),\r\n            pageUp: move.bind(this, FOCUS_UP),\r\n            pageDown: move.bind(this, FOCUS_DOWN),\r\n            home: move.bind(this, FOCUS_FIRST),\r\n            end: move.bind(this, FOCUS_LAST)\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            selectOnFocus: false,\r\n            loopItemFocus: true,\r\n            items: [],\r\n            itemTemplate: \"item\",\r\n            onItemRendered: null,\r\n            onItemClick: null,\r\n            onItemHold: null,\r\n            itemHoldTimeout: 750,\r\n            onItemContextMenu: null,\r\n            onFocusedItemChanged: null,\r\n            noDataText: _message.default.format(\"dxCollectionWidget-noDataText\"),\r\n            dataSource: null,\r\n            _itemAttributes: {},\r\n            itemTemplateProperty: \"template\",\r\n            focusOnSelectedItem: true,\r\n            focusedElement: null,\r\n            displayExpr: void 0,\r\n            disabledExpr: function(data) {\r\n                return data ? data.disabled : void 0\r\n            },\r\n            visibleExpr: function(data) {\r\n                return data ? data.visible : void 0\r\n            }\r\n        })\r\n    },\r\n    _init: function() {\r\n        this._compileDisplayGetter();\r\n        this.callBase();\r\n        this._cleanRenderedItems();\r\n        this._refreshDataSource()\r\n    },\r\n    _compileDisplayGetter: function() {\r\n        var displayExpr = this.option(\"displayExpr\");\r\n        this._displayGetter = displayExpr ? (0, _data.compileGetter)(this.option(\"displayExpr\")) : void 0\r\n    },\r\n    _initTemplates: function() {\r\n        this._initItemsFromMarkup();\r\n        this._initDefaultItemTemplate();\r\n        this.callBase()\r\n    },\r\n    _getAnonymousTemplateName: function() {\r\n        return ANONYMOUS_TEMPLATE_NAME\r\n    },\r\n    _initDefaultItemTemplate: function() {\r\n        var fieldsMap = this._getFieldsMap();\r\n        this._templateManager.addDefaultTemplates({\r\n            item: new _bindable_template.BindableTemplate(function($container, data) {\r\n                if ((0, _type.isPlainObject)(data)) {\r\n                    this._prepareDefaultItemTemplate(data, $container)\r\n                } else {\r\n                    if (fieldsMap && (0, _type.isFunction)(fieldsMap.text)) {\r\n                        data = fieldsMap.text(data)\r\n                    }\r\n                    $container.text(String((0, _common.ensureDefined)(data, \"\")))\r\n                }\r\n            }.bind(this), this._getBindableFields(), this.option(\"integrationOptions.watchMethod\"), fieldsMap)\r\n        })\r\n    },\r\n    _getBindableFields: function() {\r\n        return [\"text\", \"html\"]\r\n    },\r\n    _getFieldsMap: function() {\r\n        if (this._displayGetter) {\r\n            return {\r\n                text: this._displayGetter\r\n            }\r\n        }\r\n    },\r\n    _prepareDefaultItemTemplate: function(data, $container) {\r\n        if ((0, _type.isDefined)(data.text)) {\r\n            $container.text(data.text)\r\n        }\r\n        if ((0, _type.isDefined)(data.html)) {\r\n            $container.html(data.html)\r\n        }\r\n    },\r\n    _initItemsFromMarkup: function() {\r\n        var _this = this;\r\n        var rawItems = (0, _template_manager.findTemplates)(this.$element(), ITEMS_OPTIONS_NAME);\r\n        if (!rawItems.length || this.option(\"items\").length) {\r\n            return\r\n        }\r\n        var items = rawItems.map(function(_ref) {\r\n            var element = _ref.element,\r\n                options = _ref.options;\r\n            var isTemplateRequired = /\\S/.test(element.innerHTML) && !options.template;\r\n            if (isTemplateRequired) {\r\n                options.template = _this._prepareItemTemplate(element)\r\n            } else {\r\n                (0, _renderer.default)(element).remove()\r\n            }\r\n            return options\r\n        });\r\n        this.option(\"items\", items)\r\n    },\r\n    _prepareItemTemplate: function(item) {\r\n        var templateId = ITEM_TEMPLATE_ID_PREFIX + new _guid.default;\r\n        var $template = (0, _renderer.default)(item).detach().clone().removeAttr(\"data-options\").addClass(TEMPLATE_WRAPPER_CLASS);\r\n        this._saveTemplate(templateId, $template);\r\n        return templateId\r\n    },\r\n    _dataSourceOptions: function() {\r\n        return {\r\n            paginate: false\r\n        }\r\n    },\r\n    _cleanRenderedItems: function() {\r\n        this._renderedItemsCount = 0\r\n    },\r\n    _focusTarget: function() {\r\n        return this.$element()\r\n    },\r\n    _focusInHandler: function(e) {\r\n        this.callBase.apply(this, arguments);\r\n        if ((0, _array.inArray)(e.target, this._focusTarget()) === -1) {\r\n            return\r\n        }\r\n        var $focusedElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n        if ($focusedElement.length) {\r\n            this._setFocusedItem($focusedElement)\r\n        } else {\r\n            var $activeItem = this._getActiveItem();\r\n            if ($activeItem.length) {\r\n                this.option(\"focusedElement\", (0, _element.getPublicElement)($activeItem))\r\n            }\r\n        }\r\n    },\r\n    _focusOutHandler: function() {\r\n        this.callBase.apply(this, arguments);\r\n        var $target = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n        this._updateFocusedItemState($target, false)\r\n    },\r\n    _getActiveItem: function(last) {\r\n        var $focusedElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n        if ($focusedElement.length) {\r\n            return $focusedElement\r\n        }\r\n        var index = this.option(\"focusOnSelectedItem\") ? this.option(\"selectedIndex\") : 0;\r\n        var activeElements = this._getActiveElement();\r\n        var lastIndex = activeElements.length - 1;\r\n        if (index < 0) {\r\n            index = last ? lastIndex : 0\r\n        }\r\n        return activeElements.eq(index)\r\n    },\r\n    _moveFocus: function(location) {\r\n        var $items = this._getAvailableItems();\r\n        var $newTarget;\r\n        switch (location) {\r\n            case FOCUS_PAGE_UP:\r\n            case FOCUS_UP:\r\n                $newTarget = this._prevItem($items);\r\n                break;\r\n            case FOCUS_PAGE_DOWN:\r\n            case FOCUS_DOWN:\r\n                $newTarget = this._nextItem($items);\r\n                break;\r\n            case FOCUS_RIGHT:\r\n                $newTarget = this.option(\"rtlEnabled\") ? this._prevItem($items) : this._nextItem($items);\r\n                break;\r\n            case FOCUS_LEFT:\r\n                $newTarget = this.option(\"rtlEnabled\") ? this._nextItem($items) : this._prevItem($items);\r\n                break;\r\n            case FOCUS_FIRST:\r\n                $newTarget = $items.first();\r\n                break;\r\n            case FOCUS_LAST:\r\n                $newTarget = $items.last();\r\n                break;\r\n            default:\r\n                return false\r\n        }\r\n        if (0 !== $newTarget.length) {\r\n            this.option(\"focusedElement\", (0, _element.getPublicElement)($newTarget))\r\n        }\r\n    },\r\n    _getVisibleItems: function($itemElements) {\r\n        $itemElements = $itemElements || this._itemElements();\r\n        return $itemElements.filter(\":visible\")\r\n    },\r\n    _getAvailableItems: function($itemElements) {\r\n        return this._getVisibleItems($itemElements).not(\".dx-state-disabled\")\r\n    },\r\n    _prevItem: function($items) {\r\n        var $target = this._getActiveItem();\r\n        var targetIndex = $items.index($target);\r\n        var $last = $items.last();\r\n        var $item = (0, _renderer.default)($items[targetIndex - 1]);\r\n        var loop = this.option(\"loopItemFocus\");\r\n        if (0 === $item.length && loop) {\r\n            $item = $last\r\n        }\r\n        return $item\r\n    },\r\n    _nextItem: function($items) {\r\n        var $target = this._getActiveItem(true);\r\n        var targetIndex = $items.index($target);\r\n        var $first = $items.first();\r\n        var $item = (0, _renderer.default)($items[targetIndex + 1]);\r\n        var loop = this.option(\"loopItemFocus\");\r\n        if (0 === $item.length && loop) {\r\n            $item = $first\r\n        }\r\n        return $item\r\n    },\r\n    _selectFocusedItem: function($target) {\r\n        this.selectItem($target)\r\n    },\r\n    _updateFocusedItemState: function(target, isFocused, needCleanItemId) {\r\n        var $target = (0, _renderer.default)(target);\r\n        if ($target.length) {\r\n            this._refreshActiveDescendant();\r\n            this._refreshItemId($target, needCleanItemId);\r\n            this._toggleFocusClass(isFocused, $target)\r\n        }\r\n        this._updateParentActiveDescendant()\r\n    },\r\n    _refreshActiveDescendant: function($target) {\r\n        this.setAria(\"activedescendant\", (0, _type.isDefined)(this.option(\"focusedElement\")) ? this.getFocusedItemId() : null, $target)\r\n    },\r\n    _refreshItemId: function($target, needCleanItemId) {\r\n        if (!needCleanItemId && this.option(\"focusedElement\")) {\r\n            this.setAria(\"id\", this.getFocusedItemId(), $target)\r\n        } else {\r\n            this.setAria(\"id\", null, $target)\r\n        }\r\n    },\r\n    _setFocusedItem: function($target) {\r\n        if (!$target || !$target.length) {\r\n            return\r\n        }\r\n        this._updateFocusedItemState($target, true);\r\n        this.onFocusedItemChanged(this.getFocusedItemId());\r\n        if (this.option(\"selectOnFocus\")) {\r\n            this._selectFocusedItem($target)\r\n        }\r\n    },\r\n    _findItemElementByItem: function(item) {\r\n        var result = (0, _renderer.default)();\r\n        var that = this;\r\n        this.itemElements().each(function() {\r\n            var $item = (0, _renderer.default)(this);\r\n            if ($item.data(that._itemDataKey()) === item) {\r\n                result = $item;\r\n                return false\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _getIndexByItem: function(item) {\r\n        return this.option(\"items\").indexOf(item)\r\n    },\r\n    _itemOptionChanged: function(item, property, value, oldValue) {\r\n        var $item = this._findItemElementByItem(item);\r\n        if (!$item.length) {\r\n            return\r\n        }\r\n        if (!this.constructor.ItemClass.getInstance($item).setDataField(property, value)) {\r\n            this._refreshItem($item, item)\r\n        }\r\n        var isDisabling = \"disabled\" === property && value;\r\n        if (isDisabling) {\r\n            this._resetItemFocus($item)\r\n        }\r\n    },\r\n    _resetItemFocus: function($item) {\r\n        if ($item.is(this.option(\"focusedElement\"))) {\r\n            this.option(\"focusedElement\", null)\r\n        }\r\n    },\r\n    _refreshItem: function($item) {\r\n        var itemData = this._getItemData($item);\r\n        var index = $item.data(this._itemIndexKey());\r\n        this._renderItem(this._renderedItemsCount + index, itemData, null, $item)\r\n    },\r\n    _updateParentActiveDescendant: _common.noop,\r\n    _optionChanged: function(args) {\r\n        if (\"items\" === args.name) {\r\n            var matches = args.fullName.match(ITEM_PATH_REGEX);\r\n            if (matches && matches.length) {\r\n                var property = matches[matches.length - 1];\r\n                var itemPath = args.fullName.replace(\".\" + property, \"\");\r\n                var item = this.option(itemPath);\r\n                this._itemOptionChanged(item, property, args.value, args.previousValue);\r\n                return\r\n            }\r\n        }\r\n        switch (args.name) {\r\n            case \"items\":\r\n            case \"_itemAttributes\":\r\n            case \"itemTemplateProperty\":\r\n            case \"showItemDataTitle\":\r\n                this._cleanRenderedItems();\r\n                this._invalidate();\r\n                break;\r\n            case \"dataSource\":\r\n                this._refreshDataSource();\r\n                this._renderEmptyMessage();\r\n                break;\r\n            case \"noDataText\":\r\n                this._renderEmptyMessage();\r\n                break;\r\n            case \"itemTemplate\":\r\n                this._invalidate();\r\n                break;\r\n            case \"onItemRendered\":\r\n                this._createItemRenderAction();\r\n                break;\r\n            case \"onItemClick\":\r\n                break;\r\n            case \"onItemHold\":\r\n            case \"itemHoldTimeout\":\r\n                this._attachHoldEvent();\r\n                break;\r\n            case \"onItemContextMenu\":\r\n                this._attachContextMenuEvent();\r\n                break;\r\n            case \"onFocusedItemChanged\":\r\n                this.onFocusedItemChanged = this._createActionByOption(\"onFocusedItemChanged\");\r\n                break;\r\n            case \"selectOnFocus\":\r\n            case \"loopItemFocus\":\r\n            case \"focusOnSelectedItem\":\r\n                break;\r\n            case \"focusedElement\":\r\n                this._updateFocusedItemState(args.previousValue, false, true);\r\n                this._setFocusedItem((0, _renderer.default)(args.value));\r\n                break;\r\n            case \"displayExpr\":\r\n                this._compileDisplayGetter();\r\n                this._initDefaultItemTemplate();\r\n                this._invalidate();\r\n                break;\r\n            case \"visibleExpr\":\r\n            case \"disabledExpr\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _invalidate: function() {\r\n        this.option(\"focusedElement\", null);\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    _loadNextPage: function() {\r\n        var dataSource = this._dataSource;\r\n        this._expectNextPageLoading();\r\n        dataSource.pageIndex(1 + dataSource.pageIndex());\r\n        return dataSource.load()\r\n    },\r\n    _expectNextPageLoading: function() {\r\n        this._startIndexForAppendedItems = 0\r\n    },\r\n    _expectLastItemLoading: function() {\r\n        this._startIndexForAppendedItems = -1\r\n    },\r\n    _forgetNextPageLoading: function() {\r\n        this._startIndexForAppendedItems = null\r\n    },\r\n    _dataSourceChangedHandler: function(newItems) {\r\n        var items = this.option(\"items\");\r\n        if (this._initialized && items && this._shouldAppendItems()) {\r\n            this._renderedItemsCount = items.length;\r\n            if (!this._isLastPage() || this._startIndexForAppendedItems !== -1) {\r\n                this.option().items = items.concat(newItems.slice(this._startIndexForAppendedItems))\r\n            }\r\n            this._forgetNextPageLoading();\r\n            this._refreshContent()\r\n        } else {\r\n            this.option(\"items\", newItems.slice())\r\n        }\r\n    },\r\n    _refreshContent: function() {\r\n        this._prepareContent();\r\n        this._renderContent()\r\n    },\r\n    _dataSourceLoadErrorHandler: function() {\r\n        this._forgetNextPageLoading();\r\n        this.option(\"items\", this.option(\"items\"))\r\n    },\r\n    _shouldAppendItems: function() {\r\n        return null != this._startIndexForAppendedItems && this._allowDynamicItemsAppend()\r\n    },\r\n    _allowDynamicItemsAppend: function() {\r\n        return false\r\n    },\r\n    _clean: function() {\r\n        this._cleanFocusState();\r\n        this._cleanItemContainer()\r\n    },\r\n    _cleanItemContainer: function() {\r\n        (0, _renderer.default)(this._itemContainer()).empty()\r\n    },\r\n    _dispose: function() {\r\n        this.callBase();\r\n        clearTimeout(this._itemFocusTimeout)\r\n    },\r\n    _refresh: function() {\r\n        this._cleanRenderedItems();\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _itemContainer: function() {\r\n        return this.$element()\r\n    },\r\n    _itemClass: function() {\r\n        return ITEM_CLASS\r\n    },\r\n    _itemContentClass: function() {\r\n        return this._itemClass() + CONTENT_CLASS_POSTFIX\r\n    },\r\n    _selectedItemClass: function() {\r\n        return SELECTED_ITEM_CLASS\r\n    },\r\n    _itemResponseWaitClass: function() {\r\n        return ITEM_RESPONSE_WAIT_CLASS\r\n    },\r\n    _itemSelector: function() {\r\n        return \".\" + this._itemClass()\r\n    },\r\n    _itemDataKey: function() {\r\n        return ITEM_DATA_KEY\r\n    },\r\n    _itemIndexKey: function() {\r\n        return ITEM_INDEX_KEY\r\n    },\r\n    _itemElements: function() {\r\n        return this._itemContainer().find(this._itemSelector())\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this.onFocusedItemChanged = this._createActionByOption(\"onFocusedItemChanged\");\r\n        this.$element().addClass(COLLECTION_CLASS);\r\n        this._prepareContent()\r\n    },\r\n    _prepareContent: (0, _common.deferRenderer)(function() {\r\n        this._renderContentImpl()\r\n    }),\r\n    _renderContent: function() {\r\n        this._fireContentReadyAction()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._attachClickEvent();\r\n        this._attachHoldEvent();\r\n        this._attachContextMenuEvent()\r\n    },\r\n    _attachClickEvent: function() {\r\n        var itemSelector = this._itemSelector();\r\n        var clickEventNamespace = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        var pointerDownEventNamespace = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n        var that = this;\r\n        var pointerDownAction = new _action.default(function(args) {\r\n            var event = args.event;\r\n            that._itemPointerDownHandler(event)\r\n        });\r\n        _events_engine.default.off(this._itemContainer(), clickEventNamespace, itemSelector);\r\n        _events_engine.default.off(this._itemContainer(), pointerDownEventNamespace, itemSelector);\r\n        _events_engine.default.on(this._itemContainer(), clickEventNamespace, itemSelector, function(e) {\r\n            this._itemClickHandler(e)\r\n        }.bind(this));\r\n        _events_engine.default.on(this._itemContainer(), pointerDownEventNamespace, itemSelector, function(e) {\r\n            pointerDownAction.execute({\r\n                element: (0, _renderer.default)(e.target),\r\n                event: e\r\n            })\r\n        })\r\n    },\r\n    _itemClickHandler: function(e, args, config) {\r\n        this._itemDXEventHandler(e, \"onItemClick\", args, config)\r\n    },\r\n    _itemPointerDownHandler: function(e) {\r\n        if (!this.option(\"focusStateEnabled\")) {\r\n            return\r\n        }\r\n        this._itemFocusHandler = function() {\r\n            clearTimeout(this._itemFocusTimeout);\r\n            this._itemFocusHandler = null;\r\n            if (e.isDefaultPrevented()) {\r\n                return\r\n            }\r\n            var $target = (0, _renderer.default)(e.target);\r\n            var $closestItem = $target.closest(this._itemElements());\r\n            var $closestFocusable = this._closestFocusable($target);\r\n            if ($closestItem.length && $closestFocusable && (0, _array.inArray)($closestFocusable.get(0), this._focusTarget()) !== -1) {\r\n                this.option(\"focusedElement\", (0, _element.getPublicElement)($closestItem))\r\n            }\r\n        }.bind(this);\r\n        this._itemFocusTimeout = setTimeout(this._forcePointerDownFocus.bind(this))\r\n    },\r\n    _closestFocusable: function($target) {\r\n        if ($target.is(_selectors.focusable)) {\r\n            return $target\r\n        } else {\r\n            $target = $target.parent();\r\n            while ($target.length && !_dom_adapter.default.isDocument($target.get(0))) {\r\n                if ($target.is(_selectors.focusable)) {\r\n                    return $target\r\n                }\r\n                $target = $target.parent()\r\n            }\r\n        }\r\n    },\r\n    _forcePointerDownFocus: function() {\r\n        this._itemFocusHandler && this._itemFocusHandler()\r\n    },\r\n    _updateFocusState: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._forcePointerDownFocus()\r\n    },\r\n    _attachHoldEvent: function() {\r\n        var $itemContainer = this._itemContainer();\r\n        var itemSelector = this._itemSelector();\r\n        var eventName = (0, _index.addNamespace)(_hold.default.name, this.NAME);\r\n        _events_engine.default.off($itemContainer, eventName, itemSelector);\r\n        _events_engine.default.on($itemContainer, eventName, itemSelector, {\r\n            timeout: this._getHoldTimeout()\r\n        }, this._itemHoldHandler.bind(this))\r\n    },\r\n    _getHoldTimeout: function() {\r\n        return this.option(\"itemHoldTimeout\")\r\n    },\r\n    _shouldFireHoldEvent: function() {\r\n        return this.hasActionSubscription(\"onItemHold\")\r\n    },\r\n    _itemHoldHandler: function(e) {\r\n        if (this._shouldFireHoldEvent()) {\r\n            this._itemDXEventHandler(e, \"onItemHold\")\r\n        } else {\r\n            e.cancel = true\r\n        }\r\n    },\r\n    _attachContextMenuEvent: function() {\r\n        var $itemContainer = this._itemContainer();\r\n        var itemSelector = this._itemSelector();\r\n        var eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME);\r\n        _events_engine.default.off($itemContainer, eventName, itemSelector);\r\n        _events_engine.default.on($itemContainer, eventName, itemSelector, this._itemContextMenuHandler.bind(this))\r\n    },\r\n    _shouldFireContextMenuEvent: function() {\r\n        return this.hasActionSubscription(\"onItemContextMenu\")\r\n    },\r\n    _itemContextMenuHandler: function(e) {\r\n        if (this._shouldFireContextMenuEvent()) {\r\n            this._itemDXEventHandler(e, \"onItemContextMenu\")\r\n        } else {\r\n            e.cancel = true\r\n        }\r\n    },\r\n    _renderContentImpl: function() {\r\n        var items = this.option(\"items\") || [];\r\n        if (this._renderedItemsCount) {\r\n            this._renderItems(items.slice(this._renderedItemsCount))\r\n        } else {\r\n            this._renderItems(items)\r\n        }\r\n    },\r\n    _renderItems: function(items) {\r\n        if (items.length) {\r\n            (0, _iterator.each)(items, function(index, itemData) {\r\n                this._renderItem(this._renderedItemsCount + index, itemData)\r\n            }.bind(this))\r\n        }\r\n        this._renderEmptyMessage()\r\n    },\r\n    _renderItem: function(index, itemData, $container, $itemToReplace) {\r\n        $container = $container || this._itemContainer();\r\n        var $itemFrame = this._renderItemFrame(index, itemData, $container, $itemToReplace);\r\n        this._setElementData($itemFrame, itemData, index);\r\n        $itemFrame.attr(this.option(\"_itemAttributes\"));\r\n        this._attachItemClickEvent(itemData, $itemFrame);\r\n        var $itemContent = this._getItemContent($itemFrame);\r\n        var renderContentPromise = this._renderItemContent({\r\n            index: index,\r\n            itemData: itemData,\r\n            container: (0, _element.getPublicElement)($itemContent),\r\n            contentClass: this._itemContentClass(),\r\n            defaultTemplateName: this.option(\"itemTemplate\")\r\n        });\r\n        var that = this;\r\n        (0, _deferred.when)(renderContentPromise).done(function($itemContent) {\r\n            that._postprocessRenderItem({\r\n                itemElement: $itemFrame,\r\n                itemContent: $itemContent,\r\n                itemData: itemData,\r\n                itemIndex: index\r\n            });\r\n            that._executeItemRenderAction(index, itemData, (0, _element.getPublicElement)($itemFrame))\r\n        });\r\n        return $itemFrame\r\n    },\r\n    _getItemContent: function($itemFrame) {\r\n        var $itemContent = $itemFrame.find(\".\" + ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n        $itemContent.removeClass(ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n        return $itemContent\r\n    },\r\n    _attachItemClickEvent: function(itemData, $itemElement) {\r\n        if (!itemData || !itemData.onClick) {\r\n            return\r\n        }\r\n        _events_engine.default.on($itemElement, _click.name, function(e) {\r\n            this._itemEventHandlerByHandler($itemElement, itemData.onClick, {\r\n                event: e\r\n            })\r\n        }.bind(this))\r\n    },\r\n    _renderItemContent: function(args) {\r\n        var itemTemplateName = this._getItemTemplateName(args);\r\n        var itemTemplate = this._getTemplate(itemTemplateName);\r\n        this._addItemContentClasses(args);\r\n        var $templateResult = (0, _renderer.default)(this._createItemByTemplate(itemTemplate, args));\r\n        if (!$templateResult.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n            return args.container\r\n        }\r\n        return this._renderItemContentByNode(args, $templateResult)\r\n    },\r\n    _renderItemContentByNode: function(args, $node) {\r\n        (0, _renderer.default)(args.container).replaceWith($node);\r\n        args.container = (0, _element.getPublicElement)($node);\r\n        this._addItemContentClasses(args);\r\n        return $node\r\n    },\r\n    _addItemContentClasses: function(args) {\r\n        var classes = [ITEM_CLASS + CONTENT_CLASS_POSTFIX, args.contentClass];\r\n        (0, _renderer.default)(args.container).addClass(classes.join(\" \"))\r\n    },\r\n    _appendItemToContainer: function($container, $itemFrame, index) {\r\n        $itemFrame.appendTo($container)\r\n    },\r\n    _renderItemFrame: function(index, itemData, $container, $itemToReplace) {\r\n        var $itemFrame = (0, _renderer.default)(\"<div>\");\r\n        new this.constructor.ItemClass($itemFrame, this._itemOptions(), itemData || {});\r\n        if ($itemToReplace && $itemToReplace.length) {\r\n            $itemToReplace.replaceWith($itemFrame)\r\n        } else {\r\n            this._appendItemToContainer.call(this, $container, $itemFrame, index)\r\n        }\r\n        if (this.option(\"showItemDataTitle\")) {\r\n            var displayValue = this._displayGetter ? this._displayGetter(itemData) : itemData;\r\n            $itemFrame.attr(\"title\", displayValue)\r\n        }\r\n        return $itemFrame\r\n    },\r\n    _itemOptions: function() {\r\n        var that = this;\r\n        return {\r\n            watchMethod: function() {\r\n                return that.option(\"integrationOptions.watchMethod\")\r\n            },\r\n            owner: that,\r\n            fieldGetter: function(field) {\r\n                var expr = that.option(field + \"Expr\");\r\n                var getter = (0, _data.compileGetter)(expr);\r\n                return getter\r\n            }\r\n        }\r\n    },\r\n    _postprocessRenderItem: _common.noop,\r\n    _executeItemRenderAction: function(index, itemData, itemElement) {\r\n        this._getItemRenderAction()({\r\n            itemElement: itemElement,\r\n            itemIndex: index,\r\n            itemData: itemData\r\n        })\r\n    },\r\n    _setElementData: function(element, data, index) {\r\n        element.addClass([ITEM_CLASS, this._itemClass()].join(\" \")).data(this._itemDataKey(), data).data(this._itemIndexKey(), index)\r\n    },\r\n    _createItemRenderAction: function() {\r\n        return this._itemRenderAction = this._createActionByOption(\"onItemRendered\", {\r\n            element: this.element(),\r\n            excludeValidators: [\"disabled\", \"readOnly\"],\r\n            category: \"rendering\"\r\n        })\r\n    },\r\n    _getItemRenderAction: function() {\r\n        return this._itemRenderAction || this._createItemRenderAction()\r\n    },\r\n    _getItemTemplateName: function(args) {\r\n        var data = args.itemData;\r\n        var templateProperty = args.templateProperty || this.option(\"itemTemplateProperty\");\r\n        var template = data && data[templateProperty];\r\n        return template || args.defaultTemplateName\r\n    },\r\n    _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n        return itemTemplate.render({\r\n            model: renderArgs.itemData,\r\n            container: renderArgs.container,\r\n            index: renderArgs.index\r\n        })\r\n    },\r\n    _emptyMessageContainer: function() {\r\n        return this._itemContainer()\r\n    },\r\n    _renderEmptyMessage: function(items) {\r\n        items = items || this.option(\"items\");\r\n        var noDataText = this.option(\"noDataText\");\r\n        var hideNoData = !noDataText || items && items.length || this._isDataSourceLoading();\r\n        if (hideNoData && this._$noData) {\r\n            this._$noData.remove();\r\n            this._$noData = null;\r\n            this.setAria(\"label\", void 0)\r\n        }\r\n        if (!hideNoData) {\r\n            this._$noData = this._$noData || (0, _renderer.default)(\"<div>\").addClass(\"dx-empty-message\");\r\n            this._$noData.appendTo(this._emptyMessageContainer()).html(noDataText);\r\n            this.setAria(\"label\", noDataText)\r\n        }\r\n        this.$element().toggleClass(EMPTY_COLLECTION, !hideNoData)\r\n    },\r\n    _itemDXEventHandler: function(dxEvent, handlerOptionName, actionArgs, actionConfig) {\r\n        this._itemEventHandler(dxEvent.target, handlerOptionName, (0, _extend.extend)(actionArgs, {\r\n            event: dxEvent\r\n        }), actionConfig)\r\n    },\r\n    _itemEventHandler: function(initiator, handlerOptionName, actionArgs, actionConfig) {\r\n        var action = this._createActionByOption(handlerOptionName, (0, _extend.extend)({\r\n            validatingTargetName: \"itemElement\"\r\n        }, actionConfig));\r\n        return this._itemEventHandlerImpl(initiator, action, actionArgs)\r\n    },\r\n    _itemEventHandlerByHandler: function(initiator, handler, actionArgs, actionConfig) {\r\n        var action = this._createAction(handler, (0, _extend.extend)({\r\n            validatingTargetName: \"itemElement\"\r\n        }, actionConfig));\r\n        return this._itemEventHandlerImpl(initiator, action, actionArgs)\r\n    },\r\n    _itemEventHandlerImpl: function(initiator, action, actionArgs) {\r\n        var $itemElement = this._closestItemElement((0, _renderer.default)(initiator));\r\n        var args = (0, _extend.extend)({}, actionArgs);\r\n        return action((0, _extend.extend)(actionArgs, this._extendActionArgs($itemElement), args))\r\n    },\r\n    _extendActionArgs: function($itemElement) {\r\n        return {\r\n            itemElement: (0, _element.getPublicElement)($itemElement),\r\n            itemIndex: this._itemElements().index($itemElement),\r\n            itemData: this._getItemData($itemElement)\r\n        }\r\n    },\r\n    _closestItemElement: function($element) {\r\n        return (0, _renderer.default)($element).closest(this._itemSelector())\r\n    },\r\n    _getItemData: function(itemElement) {\r\n        return (0, _renderer.default)(itemElement).data(this._itemDataKey())\r\n    },\r\n    _getSummaryItemsWidth: function(items, includeMargin) {\r\n        var result = 0;\r\n        if (items) {\r\n            (0, _iterator.each)(items, function(_, item) {\r\n                result += (0, _renderer.default)(item).outerWidth(includeMargin || false)\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    getFocusedItemId: function() {\r\n        if (!this._focusedItemId) {\r\n            this._focusedItemId = \"dx-\" + new _guid.default\r\n        }\r\n        return this._focusedItemId\r\n    },\r\n    itemElements: function() {\r\n        return this._itemElements()\r\n    },\r\n    itemsContainer: function() {\r\n        return this._itemContainer()\r\n    }\r\n}).include(_data_helper.default);\r\nCollectionWidget.ItemClass = _item.default;\r\nvar _default = CollectionWidget;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.chart_integration.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar FORMAT_DICTIONARY = {\r\n    number: \"numeric\",\r\n    date: \"datetime\"\r\n};\r\nvar UNBIND_KEY = \"dxPivotGridUnbinding\";\r\n\r\nfunction getFormattedValue(path, fields) {\r\n    var value = [];\r\n    var lastFieldIndex = fields.length - 1;\r\n    (0, _iterator.each)(path, function(i, item) {\r\n        value.push(item.text || (0, _uiPivot_grid.formatValue)(item.value, fields[lastFieldIndex - i]))\r\n    });\r\n    return value.reverse()\r\n}\r\n\r\nfunction getExpandedLevel(node) {\r\n    var level = 0;\r\n    (0, _uiPivot_grid.foreachTree)(node, function(members) {\r\n        level = Math.max(level, members.length - 1)\r\n    });\r\n    return level\r\n}\r\n\r\nfunction processDataCell(processCellArgs, processCell) {\r\n    var chartDataItem = processCellArgs.chartDataItem;\r\n    var processedCell = processCell && processCell(processCellArgs);\r\n    if (processedCell) {\r\n        chartDataItem = (0, _extend.extend)({}, chartDataItem, processedCell.chartDataItem);\r\n        processedCell = (0, _extend.extend)({}, processCellArgs, processedCell, {\r\n            chartDataItem: chartDataItem\r\n        });\r\n        return processedCell\r\n    }\r\n    return processCellArgs\r\n}\r\n\r\nfunction createChartDataSource(pivotGridDataSource, mapOptions, axisDictionary) {\r\n    var data = pivotGridDataSource.getData();\r\n    var dataSource = [];\r\n    var dataFields = pivotGridDataSource.getAreaFields(\"data\");\r\n    var rowFields = pivotGridDataSource.getAreaFields(\"row\");\r\n    var columnFields = pivotGridDataSource.getAreaFields(\"column\");\r\n    var columnElements = [{\r\n        index: data.grandTotalColumnIndex,\r\n        children: data.columns\r\n    }];\r\n    var rowElements = [{\r\n        index: data.grandTotalRowIndex,\r\n        children: data.rows\r\n    }];\r\n    var rowLevel = getExpandedLevel(rowElements);\r\n    var columnLevel = getExpandedLevel(columnElements);\r\n    var measureIndex;\r\n    var dataField;\r\n    var rowMemberIndex;\r\n    var rowVisibility;\r\n    var rowPathFormatted;\r\n    var rowPath;\r\n    var columnMemberIndex;\r\n    var columnVisibility;\r\n    var columnPath;\r\n    var columnPathFormatted;\r\n\r\n    function createDataItem() {\r\n        var dataCell = (data.values[rowMemberIndex] || [])[columnMemberIndex] || [];\r\n        var value = dataCell[measureIndex];\r\n        var axis;\r\n        var processCellArgs = {\r\n            rowPath: rowPath,\r\n            maxRowLevel: rowLevel,\r\n            rowPathFormatted: rowPathFormatted,\r\n            rowFields: rowFields,\r\n            columnPathFormatted: columnPathFormatted,\r\n            maxColumnLevel: columnLevel,\r\n            columnPath: columnPath,\r\n            columnFields: columnFields,\r\n            dataFields: dataFields,\r\n            dataIndex: measureIndex,\r\n            dataValues: dataCell,\r\n            visible: columnVisibility && rowVisibility\r\n        };\r\n        var seriesName = (mapOptions.inverted ? columnPathFormatted : rowPathFormatted).join(\" - \");\r\n        var argument = (mapOptions.inverted ? rowPathFormatted : columnPathFormatted).join(\"/\");\r\n        if (dataFields.length > 1) {\r\n            if (\"args\" === mapOptions.putDataFieldsInto || \"both\" === mapOptions.putDataFieldsInto) {\r\n                argument += \" | \" + dataField.caption\r\n            }\r\n            if (\"args\" !== mapOptions.putDataFieldsInto) {\r\n                seriesName += \" | \" + dataField.caption;\r\n                if (\"singleAxis\" !== mapOptions.dataFieldsDisplayMode) {\r\n                    axis = dataField.caption\r\n                }\r\n            }\r\n        }\r\n        processCellArgs.chartDataItem = {\r\n            val: void 0 === value ? null : value,\r\n            series: seriesName,\r\n            arg: argument\r\n        };\r\n        processCellArgs = processDataCell(processCellArgs, mapOptions.processCell);\r\n        if (processCellArgs.visible) {\r\n            axisDictionary[processCellArgs.chartDataItem.series] = axisDictionary[processCellArgs.chartDataItem.series] || axis;\r\n            dataSource.push(processCellArgs.chartDataItem)\r\n        }\r\n    }\r\n\r\n    function foreachRowColumn(callBack) {\r\n        (0, _uiPivot_grid.foreachTree)(rowElements, function(rowMembers) {\r\n            rowMemberIndex = rowMembers[0].index;\r\n            rowMembers = rowMembers.slice(0, rowMembers.length - 1);\r\n            rowVisibility = rowLevel === rowMembers.length;\r\n            rowPath = (0, _uiPivot_grid.createPath)(rowMembers);\r\n            rowPathFormatted = getFormattedValue(rowMembers, rowFields);\r\n            if (0 === rowPath.length) {\r\n                rowPathFormatted = [mapOptions.grandTotalText]\r\n            }(0, _uiPivot_grid.foreachTree)(columnElements, function(columnMembers) {\r\n                columnMemberIndex = columnMembers[0].index;\r\n                columnMembers = columnMembers.slice(0, columnMembers.length - 1);\r\n                columnVisibility = columnLevel === columnMembers.length;\r\n                columnPath = (0, _uiPivot_grid.createPath)(columnMembers);\r\n                columnPathFormatted = getFormattedValue(columnMembers, columnFields);\r\n                if (0 === columnPath.length) {\r\n                    columnPathFormatted = [mapOptions.grandTotalText]\r\n                }\r\n                callBack()\r\n            })\r\n        })\r\n    }\r\n\r\n    function foreachDataField(callback) {\r\n        (0, _iterator.each)(dataFields, function(index, field) {\r\n            dataField = field;\r\n            measureIndex = index;\r\n            callback()\r\n        })\r\n    }\r\n    if (false === mapOptions.alternateDataFields) {\r\n        foreachDataField(function() {\r\n            foreachRowColumn(createDataItem)\r\n        })\r\n    } else {\r\n        foreachRowColumn(function() {\r\n            foreachDataField(createDataItem)\r\n        })\r\n    }\r\n    return dataSource\r\n}\r\n\r\nfunction createValueAxisOptions(dataSource, options) {\r\n    var dataFields = dataSource.getAreaFields(\"data\");\r\n    if (\"args\" !== options.putDataFieldsInto && \"singleAxis\" !== options.dataFieldsDisplayMode || 1 === dataFields.length) {\r\n        var valueAxisSettings = [];\r\n        (0, _iterator.each)(dataFields, function(_, dataField) {\r\n            var valueAxisOptions = {\r\n                name: dataField.caption,\r\n                title: dataField.caption,\r\n                valueType: FORMAT_DICTIONARY[dataField.dataType] || dataField.dataType,\r\n                label: {\r\n                    format: dataField.format\r\n                }\r\n            };\r\n            if (dataField.customizeText) {\r\n                valueAxisOptions.label.customizeText = function(formatObject) {\r\n                    return dataField.customizeText.call(dataField, formatObject)\r\n                }\r\n            }\r\n            if (\"splitPanes\" === options.dataFieldsDisplayMode) {\r\n                valueAxisOptions.pane = dataField.caption\r\n            }\r\n            valueAxisSettings.push(valueAxisOptions)\r\n        });\r\n        return valueAxisSettings\r\n    }\r\n    return [{}]\r\n}\r\n\r\nfunction createPanesOptions(dataSource, options) {\r\n    var panes = [];\r\n    var dataFields = dataSource.getAreaFields(\"data\");\r\n    if (dataFields.length > 1 && \"splitPanes\" === options.dataFieldsDisplayMode && \"args\" !== options.putDataFieldsInto) {\r\n        (0, _iterator.each)(dataFields, function(_, dataField) {\r\n            panes.push({\r\n                name: dataField.caption\r\n            })\r\n        })\r\n    }\r\n    if (!panes.length) {\r\n        panes.push({})\r\n    }\r\n    return panes\r\n}\r\n\r\nfunction createChartOptions(dataSource, options) {\r\n    var _customizeSeries = options.customizeSeries;\r\n    var customizeChart = options.customizeChart;\r\n    var chartOptions = {\r\n        valueAxis: createValueAxisOptions(dataSource, options),\r\n        panes: createPanesOptions(dataSource, options)\r\n    };\r\n    var axisDictionary = {};\r\n    if (customizeChart) {\r\n        chartOptions = (0, _extend.extend)(true, {}, chartOptions, customizeChart(chartOptions))\r\n    }\r\n    chartOptions.dataSource = createChartDataSource(dataSource, options, axisDictionary);\r\n    chartOptions.seriesTemplate = {\r\n        nameField: \"series\",\r\n        customizeSeries: function(seriesName) {\r\n            var seriesOptions = {};\r\n            if (\"splitPanes\" === options.dataFieldsDisplayMode) {\r\n                seriesOptions.pane = axisDictionary[seriesName]\r\n            } else {\r\n                if (\"singleAxis\" !== options.dataFieldsDisplayMode) {\r\n                    seriesOptions.axis = axisDictionary[seriesName]\r\n                }\r\n            }\r\n            if (_customizeSeries) {\r\n                seriesOptions = (0, _extend.extend)(seriesOptions, _customizeSeries(seriesName, seriesOptions))\r\n            }\r\n            return seriesOptions\r\n        }\r\n    };\r\n    return chartOptions\r\n}\r\n\r\nfunction getChartInstance(chartElement) {\r\n    if (!chartElement) {\r\n        return false\r\n    }\r\n    if (chartElement.NAME) {\r\n        return \"dxChart\" === chartElement.NAME && chartElement\r\n    }\r\n    var element = (0, _renderer.default)(chartElement);\r\n    return element.data(\"dxChart\") && element.dxChart(\"instance\")\r\n}\r\n\r\nfunction removeBinding(chart) {\r\n    var unbind = chart.$element().data(UNBIND_KEY);\r\n    unbind && unbind()\r\n}\r\nvar _default = {\r\n    bindChart: function(chart, integrationOptions) {\r\n        integrationOptions = (0, _extend.extend)({}, integrationOptions);\r\n        var that = this;\r\n        var updateChart = function() {\r\n            integrationOptions.grandTotalText = that.option(\"texts.grandTotal\");\r\n            var chartOptions = createChartOptions(that.getDataSource(), integrationOptions);\r\n            chart.option(chartOptions)\r\n        };\r\n        chart = getChartInstance(chart);\r\n        if (!chart) {\r\n            return null\r\n        }\r\n        removeBinding(chart);\r\n        that.on(\"changed\", updateChart);\r\n        updateChart();\r\n        var disposeBinding = function() {\r\n            chart.$element().removeData(UNBIND_KEY);\r\n            that.off(\"changed\", updateChart)\r\n        };\r\n        chart.on(\"disposing\", disposeBinding);\r\n        this.on(\"disposing\", disposeBinding);\r\n        chart.$element().data(UNBIND_KEY, disposeBinding);\r\n        return disposeBinding\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/polyfills/promise.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar promise = (0, _window.hasWindow)() ? (0, _window.getWindow)().Promise : Promise;\r\nif (!promise) {\r\n    promise = function(resolver) {\r\n        var d = new _deferred.Deferred;\r\n        resolver(d.resolve.bind(this), d.reject.bind(this));\r\n        return d.promise()\r\n    };\r\n    promise.resolve = function(val) {\r\n        return (new _deferred.Deferred).resolve(val).promise()\r\n    };\r\n    promise.reject = function(val) {\r\n        return (new _deferred.Deferred).reject(val).promise()\r\n    };\r\n    promise.all = function(promises) {\r\n        return _deferred.when.apply(this, promises).then(function() {\r\n            return [].slice.call(arguments)\r\n        })\r\n    }\r\n}\r\nvar _default = promise;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/ldml/date.formatter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getFormatter = void 0;\r\n\r\nfunction leftPad(text, length) {\r\n    while (text.length < length) {\r\n        text = \"0\" + text\r\n    }\r\n    return text\r\n}\r\nvar FORMAT_TYPES = {\r\n    3: \"abbreviated\",\r\n    4: \"wide\",\r\n    5: \"narrow\"\r\n};\r\nvar LDML_FORMATTERS = {\r\n    y: function(date, count, useUtc) {\r\n        var year = date[useUtc ? \"getUTCFullYear\" : \"getFullYear\"]();\r\n        if (2 === count) {\r\n            year %= 100\r\n        }\r\n        return leftPad(year.toString(), count)\r\n    },\r\n    M: function(date, count, useUtc, dateParts) {\r\n        var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n        var formatType = FORMAT_TYPES[count];\r\n        if (formatType) {\r\n            return dateParts.getMonthNames(formatType, \"format\")[month]\r\n        }\r\n        return leftPad((month + 1).toString(), Math.min(count, 2))\r\n    },\r\n    L: function(date, count, useUtc, dateParts) {\r\n        var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n        var formatType = FORMAT_TYPES[count];\r\n        if (formatType) {\r\n            return dateParts.getMonthNames(formatType, \"standalone\")[month]\r\n        }\r\n        return leftPad((month + 1).toString(), Math.min(count, 2))\r\n    },\r\n    Q: function(date, count, useUtc, dateParts) {\r\n        var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n        var quarter = Math.floor(month / 3);\r\n        var formatType = FORMAT_TYPES[count];\r\n        if (formatType) {\r\n            return dateParts.getQuarterNames(formatType)[quarter]\r\n        }\r\n        return leftPad((quarter + 1).toString(), Math.min(count, 2))\r\n    },\r\n    E: function(date, count, useUtc, dateParts) {\r\n        var day = date[useUtc ? \"getUTCDay\" : \"getDay\"]();\r\n        var formatType = FORMAT_TYPES[count < 3 ? 3 : count];\r\n        return dateParts.getDayNames(formatType)[day]\r\n    },\r\n    a: function(date, count, useUtc, dateParts) {\r\n        var hours = date[useUtc ? \"getUTCHours\" : \"getHours\"]();\r\n        var period = hours < 12 ? 0 : 1;\r\n        var formatType = FORMAT_TYPES[count];\r\n        return dateParts.getPeriodNames(formatType)[period]\r\n    },\r\n    d: function(date, count, useUtc) {\r\n        return leftPad(date[useUtc ? \"getUTCDate\" : \"getDate\"]().toString(), Math.min(count, 2))\r\n    },\r\n    H: function(date, count, useUtc) {\r\n        return leftPad(date[useUtc ? \"getUTCHours\" : \"getHours\"]().toString(), Math.min(count, 2))\r\n    },\r\n    h: function(date, count, useUtc) {\r\n        var hours = date[useUtc ? \"getUTCHours\" : \"getHours\"]();\r\n        return leftPad((hours % 12 || 12).toString(), Math.min(count, 2))\r\n    },\r\n    m: function(date, count, useUtc) {\r\n        return leftPad(date[useUtc ? \"getUTCMinutes\" : \"getMinutes\"]().toString(), Math.min(count, 2))\r\n    },\r\n    s: function(date, count, useUtc) {\r\n        return leftPad(date[useUtc ? \"getUTCSeconds\" : \"getSeconds\"]().toString(), Math.min(count, 2))\r\n    },\r\n    S: function(date, count, useUtc) {\r\n        return leftPad(date[useUtc ? \"getUTCMilliseconds\" : \"getMilliseconds\"]().toString(), 3).substr(0, count)\r\n    },\r\n    x: function(date, count, useUtc) {\r\n        var timezoneOffset = useUtc ? 0 : date.getTimezoneOffset();\r\n        var signPart = timezoneOffset > 0 ? \"-\" : \"+\";\r\n        var timezoneOffsetAbs = Math.abs(timezoneOffset);\r\n        var hours = Math.floor(timezoneOffsetAbs / 60);\r\n        var minutes = timezoneOffsetAbs % 60;\r\n        var hoursPart = leftPad(hours.toString(), 2);\r\n        var minutesPart = leftPad(minutes.toString(), 2);\r\n        return signPart + hoursPart + (count >= 3 ? \":\" : \"\") + (count > 1 || minutes ? minutesPart : \"\")\r\n    },\r\n    X: function(date, count, useUtc) {\r\n        if (useUtc || !date.getTimezoneOffset()) {\r\n            return \"Z\"\r\n        }\r\n        return LDML_FORMATTERS.x(date, count, useUtc)\r\n    },\r\n    Z: function(date, count, useUtc) {\r\n        return LDML_FORMATTERS.X(date, count >= 5 ? 3 : 2, useUtc)\r\n    }\r\n};\r\nvar getFormatter = function(format, dateParts) {\r\n    return function(date) {\r\n        var charIndex;\r\n        var formatter;\r\n        var char;\r\n        var charCount = 0;\r\n        var separator = \"'\";\r\n        var isEscaping = false;\r\n        var isCurrentCharEqualsNext;\r\n        var result = \"\";\r\n        if (!date) {\r\n            return null\r\n        }\r\n        if (!format) {\r\n            return date\r\n        }\r\n        var useUtc = \"Z\" === format[format.length - 1] || \"'Z'\" === format.slice(-3);\r\n        for (charIndex = 0; charIndex < format.length; charIndex++) {\r\n            char = format[charIndex];\r\n            formatter = LDML_FORMATTERS[char];\r\n            isCurrentCharEqualsNext = char === format[charIndex + 1];\r\n            charCount++;\r\n            if (!isCurrentCharEqualsNext) {\r\n                if (formatter && !isEscaping) {\r\n                    result += formatter(date, charCount, useUtc, dateParts)\r\n                }\r\n                charCount = 0\r\n            }\r\n            if (char === separator && !isCurrentCharEqualsNext) {\r\n                isEscaping = !isEscaping\r\n            } else {\r\n                if (isEscaping || !formatter) {\r\n                    result += char\r\n                }\r\n            }\r\n            if (char === separator && isCurrentCharEqualsNext) {\r\n                charIndex++\r\n            }\r\n        }\r\n        return result\r\n    }\r\n};\r\nexports.getFormatter = getFormatter;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../../../../../core/component_registrator\"));\r\nvar _component = _interopRequireDefault(require(\"../../../../../../preact_wrapper/component\"));\r\nvar _title = require(\"./title\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar AllDayPanelTitle = function(_BaseComponent) {\r\n    _inherits(AllDayPanelTitle, _BaseComponent);\r\n    var _super = _createSuper(AllDayPanelTitle);\r\n\r\n    function AllDayPanelTitle() {\r\n        _classCallCheck(this, AllDayPanelTitle);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(AllDayPanelTitle, [{\r\n        key: \"_propsInfo\",\r\n        get: function() {\r\n            return {\r\n                twoWay: [],\r\n                allowNull: [],\r\n                elements: []\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_viewComponent\",\r\n        get: function() {\r\n            return _title.AllDayPanelTitle\r\n        }\r\n    }]);\r\n    return AllDayPanelTitle\r\n}(_component.default);\r\nexports.default = AllDayPanelTitle;\r\n(0, _component_registrator.default)(\"dxAllDayPanelTitle\", AllDayPanelTitle);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _empty_template = require(\"../../core/templates/empty_template\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _dialog = require(\"../dialog\");\r\nvar _themes = require(\"../themes\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _appointmentPopup = _interopRequireDefault(require(\"./appointmentPopup\"));\r\nvar _compactAppointmentsHelper = require(\"./compactAppointmentsHelper\");\r\nvar _desktopTooltipStrategy = require(\"./tooltip_strategies/desktopTooltipStrategy\");\r\nvar _mobileTooltipStrategy = require(\"./tooltip_strategies/mobileTooltipStrategy\");\r\nvar _ui3 = require(\"./ui.loading\");\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.appointments\"));\r\nvar _uiSchedulerAppointments = _interopRequireDefault(require(\"./ui.scheduler.appointments.layout_manager\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.appointment_model\"));\r\nvar _uiScheduler3 = _interopRequireDefault(require(\"./ui.scheduler.header\"));\r\nvar _uiScheduler4 = _interopRequireDefault(require(\"./ui.scheduler.resource_manager\"));\r\nvar _uiScheduler5 = _interopRequireDefault(require(\"./ui.scheduler.subscribes\"));\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _utils = _interopRequireDefault(require(\"./utils.timeZone\"));\r\nvar _uiScheduler6 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.agenda\"));\r\nvar _uiScheduler7 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.timeline_day\"));\r\nvar _uiScheduler8 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.timeline_month\"));\r\nvar _uiScheduler9 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.timeline_week\"));\r\nvar _uiScheduler10 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.timeline_work_week\"));\r\nvar _uiScheduler11 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.work_space_day\"));\r\nvar _uiScheduler12 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.work_space_month\"));\r\nvar _uiScheduler13 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.work_space_week\"));\r\nvar _uiScheduler14 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.work_space_work_week\"));\r\nvar _appointmentAdapter = _interopRequireDefault(require(\"./appointmentAdapter\"));\r\nvar _timeZoneCalculator = require(\"./timeZoneCalculator\");\r\nvar _dataStructures = require(\"./dataStructures\");\r\nvar _appointmentSettingsGenerator = require(\"./appointmentSettingsGenerator\");\r\nvar _utils2 = _interopRequireDefault(require(\"./utils\"));\r\nvar _dateAdapter = _interopRequireDefault(require(\"./dateAdapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar MINUTES_IN_HOUR = 60;\r\nvar WIDGET_CLASS = \"dx-scheduler\";\r\nvar WIDGET_SMALL_CLASS = \"\".concat(WIDGET_CLASS, \"-small\");\r\nvar WIDGET_ADAPTIVE_CLASS = \"\".concat(WIDGET_CLASS, \"-adaptive\");\r\nvar WIDGET_WIN_NO_TOUCH_CLASS = \"\".concat(WIDGET_CLASS, \"-win-no-touch\");\r\nvar WIDGET_READONLY_CLASS = \"\".concat(WIDGET_CLASS, \"-readonly\");\r\nvar WIDGET_SMALL_WIDTH = 400;\r\nvar FULL_DATE_FORMAT = \"yyyyMMddTHHmmss\";\r\nvar UTC_FULL_DATE_FORMAT = FULL_DATE_FORMAT + \"Z\";\r\nvar VIEWS_CONFIG = {\r\n    day: {\r\n        workSpace: _uiScheduler11.default,\r\n        renderingStrategy: \"vertical\"\r\n    },\r\n    week: {\r\n        workSpace: _uiScheduler13.default,\r\n        renderingStrategy: \"vertical\"\r\n    },\r\n    workWeek: {\r\n        workSpace: _uiScheduler14.default,\r\n        renderingStrategy: \"vertical\"\r\n    },\r\n    month: {\r\n        workSpace: _uiScheduler12.default,\r\n        renderingStrategy: \"horizontalMonth\"\r\n    },\r\n    timelineDay: {\r\n        workSpace: _uiScheduler7.default,\r\n        renderingStrategy: \"horizontal\"\r\n    },\r\n    timelineWeek: {\r\n        workSpace: _uiScheduler9.default,\r\n        renderingStrategy: \"horizontal\"\r\n    },\r\n    timelineWorkWeek: {\r\n        workSpace: _uiScheduler10.default,\r\n        renderingStrategy: \"horizontal\"\r\n    },\r\n    timelineMonth: {\r\n        workSpace: _uiScheduler8.default,\r\n        renderingStrategy: \"horizontalMonthLine\"\r\n    },\r\n    agenda: {\r\n        workSpace: _uiScheduler6.default,\r\n        renderingStrategy: \"agenda\"\r\n    }\r\n};\r\nvar Scheduler = function(_Widget) {\r\n    _inherits(Scheduler, _Widget);\r\n    var _super = _createSuper(Scheduler);\r\n\r\n    function Scheduler() {\r\n        _classCallCheck(this, Scheduler);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(Scheduler, [{\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            var defaultOptions = (0, _extend.extend)(_get(_getPrototypeOf(Scheduler.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                views: [\"day\", \"week\"],\r\n                currentView: \"day\",\r\n                currentDate: _date.default.trimTime(new Date),\r\n                min: void 0,\r\n                max: void 0,\r\n                dateSerializationFormat: void 0,\r\n                firstDayOfWeek: void 0,\r\n                groups: [],\r\n                resources: [],\r\n                dataSource: null,\r\n                customizeDateNavigatorText: void 0,\r\n                appointmentTemplate: \"item\",\r\n                dropDownAppointmentTemplate: \"dropDownAppointment\",\r\n                appointmentCollectorTemplate: \"appointmentCollector\",\r\n                dataCellTemplate: null,\r\n                timeCellTemplate: null,\r\n                resourceCellTemplate: null,\r\n                dateCellTemplate: null,\r\n                startDayHour: 0,\r\n                endDayHour: 24,\r\n                editing: {\r\n                    allowAdding: true,\r\n                    allowDeleting: true,\r\n                    allowDragging: true,\r\n                    allowResizing: true,\r\n                    allowUpdating: true,\r\n                    allowTimeZoneEditing: false,\r\n                    allowEditingTimeZones: false\r\n                },\r\n                showAllDayPanel: true,\r\n                showCurrentTimeIndicator: true,\r\n                shadeUntilCurrentTime: false,\r\n                indicatorUpdateInterval: 3e5,\r\n                indicatorTime: void 0,\r\n                recurrenceEditMode: \"dialog\",\r\n                cellDuration: 30,\r\n                maxAppointmentsPerCell: \"auto\",\r\n                selectedCellData: [],\r\n                groupByDate: false,\r\n                onAppointmentRendered: null,\r\n                onAppointmentClick: null,\r\n                onAppointmentDblClick: null,\r\n                onAppointmentContextMenu: null,\r\n                onCellClick: null,\r\n                onCellContextMenu: null,\r\n                onAppointmentAdding: null,\r\n                onAppointmentAdded: null,\r\n                onAppointmentUpdating: null,\r\n                onAppointmentUpdated: null,\r\n                onAppointmentDeleting: null,\r\n                onAppointmentDeleted: null,\r\n                onAppointmentFormOpening: null,\r\n                appointmentTooltipTemplate: \"appointmentTooltip\",\r\n                appointmentPopupTemplate: \"appointmentPopup\",\r\n                crossScrollingEnabled: false,\r\n                useDropDownViewSwitcher: false,\r\n                startDateExpr: \"startDate\",\r\n                endDateExpr: \"endDate\",\r\n                textExpr: \"text\",\r\n                descriptionExpr: \"description\",\r\n                allDayExpr: \"allDay\",\r\n                recurrenceRuleExpr: \"recurrenceRule\",\r\n                recurrenceExceptionExpr: \"recurrenceException\",\r\n                disabledExpr: \"disabled\",\r\n                remoteFiltering: false,\r\n                timeZone: \"\",\r\n                startDateTimeZoneExpr: \"startDateTimeZone\",\r\n                endDateTimeZoneExpr: \"endDateTimeZone\",\r\n                noDataText: _message.default.format(\"dxCollectionWidget-noDataText\"),\r\n                adaptivityEnabled: false,\r\n                allowMultipleCellSelection: true,\r\n                scrolling: {\r\n                    mode: \"standard\"\r\n                },\r\n                renovateRender: false,\r\n                _appointmentTooltipOffset: {\r\n                    x: 0,\r\n                    y: 0\r\n                },\r\n                _appointmentTooltipButtonsPosition: \"bottom\",\r\n                _appointmentTooltipOpenButtonText: _message.default.format(\"dxScheduler-openAppointment\"),\r\n                _dropDownButtonIcon: \"overflow\",\r\n                _appointmentCountPerCell: 2,\r\n                _collectorOffset: 0,\r\n                _appointmentOffset: 26\r\n            });\r\n            return (0, _extend.extend)(true, defaultOptions, {\r\n                integrationOptions: {\r\n                    useDeferUpdateForTemplates: false\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_defaultOptionsRules\",\r\n        value: function() {\r\n            return _get(_getPrototypeOf(Scheduler.prototype), \"_defaultOptionsRules\", this).call(this).concat([{\r\n                device: function() {\r\n                    return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n                },\r\n                options: {\r\n                    focusStateEnabled: true\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return !_devices.default.current().generic\r\n                },\r\n                options: {\r\n                    useDropDownViewSwitcher: true,\r\n                    editing: {\r\n                        allowDragging: false,\r\n                        allowResizing: false\r\n                    }\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return (0, _themes.isMaterial)()\r\n                },\r\n                options: {\r\n                    useDropDownViewSwitcher: true,\r\n                    dateCellTemplate: function(data, index, element) {\r\n                        var text = data.text;\r\n                        text.split(\" \").forEach(function(text, index) {\r\n                            var span = (0, _renderer.default)(\"<span>\").text(text).addClass(\"dx-scheduler-header-panel-cell-date\");\r\n                            (0, _renderer.default)(element).append(span);\r\n                            if (!index) {\r\n                                (0, _renderer.default)(element).append(\" \")\r\n                            }\r\n                        })\r\n                    },\r\n                    _appointmentTooltipOffset: {\r\n                        x: 0,\r\n                        y: 11\r\n                    },\r\n                    _appointmentTooltipButtonsPosition: \"top\",\r\n                    _appointmentTooltipOpenButtonText: null,\r\n                    _dropDownButtonIcon: \"chevrondown\",\r\n                    _appointmentCountPerCell: 1,\r\n                    _collectorOffset: 20,\r\n                    _appointmentOffset: 30\r\n                }\r\n            }])\r\n        }\r\n    }, {\r\n        key: \"_setDeprecatedOptions\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(Scheduler.prototype), \"_setDeprecatedOptions\", this).call(this);\r\n            (0, _extend.extend)(this._deprecatedOptions, {\r\n                dropDownAppointmentTemplate: {\r\n                    since: \"19.2\",\r\n                    message: \"appointmentTooltipTemplate\"\r\n                },\r\n                allowEditingTimeZones: {\r\n                    since: \"20.1\",\r\n                    alias: \"allowTimeZoneEditing\"\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentSettingsGenerator\",\r\n        value: function() {\r\n            return new _appointmentSettingsGenerator.AppointmentSettingsGenerator(this)\r\n        }\r\n    }, {\r\n        key: \"_postponeDataSourceLoading\",\r\n        value: function(promise) {\r\n            this.postponedOperations.add(\"_reloadDataSource\", this._reloadDataSource.bind(this), promise)\r\n        }\r\n    }, {\r\n        key: \"_postponeResourceLoading\",\r\n        value: function() {\r\n            var _this = this;\r\n            var whenLoaded = this.postponedOperations.add(\"_loadResources\", function() {\r\n                return _this._loadResources()\r\n            });\r\n            var resolveCallbacks = new _deferred.Deferred;\r\n            whenLoaded.done(function(resources) {\r\n                resolveCallbacks.resolve(resources)\r\n            });\r\n            this._postponeDataSourceLoading(whenLoaded);\r\n            return resolveCallbacks.promise()\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            var _this2 = this;\r\n            var value = args.value;\r\n            var name = args.name;\r\n            switch (args.name) {\r\n                case \"customizeDateNavigatorText\":\r\n                    this._updateOption(\"header\", name, value);\r\n                    break;\r\n                case \"firstDayOfWeek\":\r\n                    this._updateOption(\"workSpace\", name, value);\r\n                    this._updateOption(\"header\", name, value);\r\n                    break;\r\n                case \"currentDate\":\r\n                    value = this._dateOption(name);\r\n                    value = _date.default.trimTime(new Date(value));\r\n                    this.option(\"selectedCellData\", []);\r\n                    this._workSpace.option(name, new Date(value));\r\n                    this._header.option(name, new Date(value));\r\n                    this._header.option(\"displayedDate\", this._workSpace._getViewStartByOptions());\r\n                    this._appointments.option(\"items\", []);\r\n                    this._filterAppointmentsByDate();\r\n                    this._postponeDataSourceLoading();\r\n                    break;\r\n                case \"dataSource\":\r\n                    this._initDataSource();\r\n                    this._appointmentModel.setDataSource(this._dataSource);\r\n                    this._postponeResourceLoading().done(function(resources) {\r\n                        _this2._filterAppointmentsByDate();\r\n                        _this2._updateOption(\"workSpace\", \"showAllDayPanel\", _this2.option(\"showAllDayPanel\"))\r\n                    });\r\n                    break;\r\n                case \"min\":\r\n                case \"max\":\r\n                    value = this._dateOption(name);\r\n                    this._updateOption(\"header\", name, new Date(value));\r\n                    this._updateOption(\"workSpace\", name, new Date(value));\r\n                    break;\r\n                case \"views\":\r\n                    this._processCurrentView();\r\n                    if (this._getCurrentViewOptions()) {\r\n                        this.repaint()\r\n                    } else {\r\n                        this._header.option(name, value)\r\n                    }\r\n                    break;\r\n                case \"useDropDownViewSwitcher\":\r\n                    this._header.option(name, value);\r\n                    break;\r\n                case \"currentView\":\r\n                    this._processCurrentView();\r\n                    this.fire(\"validateDayHours\");\r\n                    this.getLayoutManager().initRenderingStrategy(this._getAppointmentsRenderingStrategy());\r\n                    this._validateCellDuration();\r\n                    this._appointments.option({\r\n                        items: [],\r\n                        allowDrag: this._allowDragging(),\r\n                        allowResize: this._allowResizing(),\r\n                        itemTemplate: this._getAppointmentTemplate(\"appointmentTemplate\")\r\n                    });\r\n                    this._postponeResourceLoading().done(function(resources) {\r\n                        _this2._refreshWorkSpace(resources);\r\n                        _this2._updateHeader();\r\n                        _this2._filterAppointmentsByDate();\r\n                        _this2._appointments.option(\"allowAllDayResize\", \"day\" !== value)\r\n                    });\r\n                    break;\r\n                case \"appointmentTemplate\":\r\n                    this._appointments.option(\"itemTemplate\", value);\r\n                    break;\r\n                case \"dateCellTemplate\":\r\n                case \"resourceCellTemplate\":\r\n                case \"dataCellTemplate\":\r\n                case \"timeCellTemplate\":\r\n                    this._updateOption(\"workSpace\", name, value);\r\n                    this.repaint();\r\n                    break;\r\n                case \"groups\":\r\n                    this._postponeResourceLoading().done(function(resources) {\r\n                        _this2._refreshWorkSpace(resources);\r\n                        _this2._filterAppointmentsByDate()\r\n                    });\r\n                    break;\r\n                case \"resources\":\r\n                    this._resourcesManager.setResources(this.option(\"resources\"));\r\n                    this._appointmentModel.setDataAccessors(this._combineDataAccessors());\r\n                    this._postponeResourceLoading().done(function(resources) {\r\n                        _this2._appointments.option(\"items\", []);\r\n                        _this2._refreshWorkSpace(resources);\r\n                        _this2._filterAppointmentsByDate()\r\n                    });\r\n                    break;\r\n                case \"startDayHour\":\r\n                case \"endDayHour\":\r\n                    this.fire(\"validateDayHours\");\r\n                    this._appointments.option(\"items\", []);\r\n                    this._updateOption(\"workSpace\", name, value);\r\n                    this._appointments.repaint();\r\n                    this._filterAppointmentsByDate();\r\n                    this._postponeDataSourceLoading();\r\n                    break;\r\n                case \"onAppointmentAdding\":\r\n                case \"onAppointmentAdded\":\r\n                case \"onAppointmentUpdating\":\r\n                case \"onAppointmentUpdated\":\r\n                case \"onAppointmentDeleting\":\r\n                case \"onAppointmentDeleted\":\r\n                case \"onAppointmentFormOpening\":\r\n                    this._actions[name] = this._createActionByOption(name);\r\n                    break;\r\n                case \"onAppointmentRendered\":\r\n                    this._appointments.option(\"onItemRendered\", this._getAppointmentRenderedAction());\r\n                    break;\r\n                case \"onAppointmentClick\":\r\n                    this._appointments.option(\"onItemClick\", this._createActionByOption(name));\r\n                    break;\r\n                case \"onAppointmentDblClick\":\r\n                    this._appointments.option(name, this._createActionByOption(name));\r\n                    break;\r\n                case \"onAppointmentContextMenu\":\r\n                    this._appointments.option(\"onItemContextMenu\", this._createActionByOption(name));\r\n                    break;\r\n                case \"noDataText\":\r\n                case \"allowMultipleCellSelection\":\r\n                case \"selectedCellData\":\r\n                case \"accessKey\":\r\n                case \"onCellClick\":\r\n                    this._workSpace.option(name, value);\r\n                    break;\r\n                case \"onCellContextMenu\":\r\n                    this._workSpace.option(name, value);\r\n                    break;\r\n                case \"crossScrollingEnabled\":\r\n                    this._postponeResourceLoading().done(function(resources) {\r\n                        _this2._appointments.option(\"items\", []);\r\n                        _this2._refreshWorkSpace(resources);\r\n                        if (_this2._readyToRenderAppointments) {\r\n                            _this2._appointments.option(\"items\", _this2._getAppointmentsToRepaint())\r\n                        }\r\n                    });\r\n                    break;\r\n                case \"cellDuration\":\r\n                    this._validateCellDuration();\r\n                    this._appointments.option(\"items\", []);\r\n                    if (this._readyToRenderAppointments) {\r\n                        this._updateOption(\"workSpace\", \"hoursInterval\", value / 60);\r\n                        this._appointments.option(\"items\", this._getAppointmentsToRepaint())\r\n                    }\r\n                    break;\r\n                case \"tabIndex\":\r\n                case \"focusStateEnabled\":\r\n                    this._updateOption(\"header\", name, value);\r\n                    this._updateOption(\"workSpace\", name, value);\r\n                    this._appointments.option(name, value);\r\n                    _get(_getPrototypeOf(Scheduler.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                case \"width\":\r\n                    this._updateOption(\"header\", name, value);\r\n                    if (this.option(\"crossScrollingEnabled\")) {\r\n                        this._updateOption(\"workSpace\", \"width\", value)\r\n                    }\r\n                    _get(_getPrototypeOf(Scheduler.prototype), \"_optionChanged\", this).call(this, args);\r\n                    this._dimensionChanged();\r\n                    break;\r\n                case \"height\":\r\n                    _get(_getPrototypeOf(Scheduler.prototype), \"_optionChanged\", this).call(this, args);\r\n                    this._dimensionChanged();\r\n                    break;\r\n                case \"editing\":\r\n                    this._initEditing();\r\n                    var editing = this._editing;\r\n                    this._bringEditingModeToAppointments(editing);\r\n                    this.hideAppointmentTooltip();\r\n                    this._cleanPopup();\r\n                    break;\r\n                case \"showAllDayPanel\":\r\n                    this._postponeResourceLoading().done(function(resources) {\r\n                        _this2._filterAppointmentsByDate();\r\n                        _this2._updateOption(\"workSpace\", \"allDayExpanded\", value);\r\n                        _this2._updateOption(\"workSpace\", name, value)\r\n                    });\r\n                    break;\r\n                case \"showCurrentTimeIndicator\":\r\n                case \"indicatorTime\":\r\n                case \"indicatorUpdateInterval\":\r\n                case \"shadeUntilCurrentTime\":\r\n                case \"groupByDate\":\r\n                    this._updateOption(\"workSpace\", name, value);\r\n                    this.repaint();\r\n                    break;\r\n                case \"appointmentDragging\":\r\n                case \"appointmentTooltipTemplate\":\r\n                case \"appointmentPopupTemplate\":\r\n                case \"recurrenceEditMode\":\r\n                case \"remoteFiltering\":\r\n                case \"timeZone\":\r\n                case \"dropDownAppointmentTemplate\":\r\n                case \"appointmentCollectorTemplate\":\r\n                case \"_appointmentTooltipOffset\":\r\n                case \"_appointmentTooltipButtonsPosition\":\r\n                case \"_appointmentTooltipOpenButtonText\":\r\n                case \"_dropDownButtonIcon\":\r\n                case \"_appointmentCountPerCell\":\r\n                case \"_collectorOffset\":\r\n                case \"_appointmentOffset\":\r\n                    this.repaint();\r\n                    break;\r\n                case \"dateSerializationFormat\":\r\n                    break;\r\n                case \"maxAppointmentsPerCell\":\r\n                    break;\r\n                case \"startDateExpr\":\r\n                case \"endDateExpr\":\r\n                case \"startDateTimeZoneExpr\":\r\n                case \"endDateTimeZoneExpr\":\r\n                case \"textExpr\":\r\n                case \"descriptionExpr\":\r\n                case \"allDayExpr\":\r\n                case \"recurrenceRuleExpr\":\r\n                case \"recurrenceExceptionExpr\":\r\n                case \"disabledExpr\":\r\n                    this._updateExpression(name, value);\r\n                    this._appointmentModel.setDataAccessors(this._combineDataAccessors());\r\n                    this._initAppointmentTemplate();\r\n                    this.repaint();\r\n                    break;\r\n                case \"adaptivityEnabled\":\r\n                    this._toggleAdaptiveClass();\r\n                    this.repaint();\r\n                    break;\r\n                case \"scrolling\":\r\n                    this._updateOption(\"workSpace\", args.fullName, value);\r\n                    break;\r\n                case \"renovateRender\":\r\n                    this._updateOption(\"workSpace\", name, value);\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(Scheduler.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_updateHeader\",\r\n        value: function() {\r\n            var viewCountConfig = this._getViewCountConfig();\r\n            this._header.option(\"intervalCount\", viewCountConfig.intervalCount);\r\n            this._header.option(\"displayedDate\", this._workSpace._getViewStartByOptions());\r\n            this._header.option(\"min\", this._dateOption(\"min\"));\r\n            this._header.option(\"max\", this._dateOption(\"max\"));\r\n            this._header.option(\"currentDate\", this._dateOption(\"currentDate\"));\r\n            this._header.option(\"firstDayOfWeek\", this._getCurrentViewOption(\"firstDayOfWeek\"));\r\n            this._header.option(\"currentView\", this._currentView)\r\n        }\r\n    }, {\r\n        key: \"_dateOption\",\r\n        value: function(optionName) {\r\n            var optionValue = this._getCurrentViewOption(optionName);\r\n            return _date_serialization.default.deserializeDate(optionValue)\r\n        }\r\n    }, {\r\n        key: \"_getSerializationFormat\",\r\n        value: function(optionName) {\r\n            var value = this._getCurrentViewOption(optionName);\r\n            if (\"number\" === typeof value) {\r\n                return \"number\"\r\n            }\r\n            if (!(0, _type.isString)(value)) {\r\n                return\r\n            }\r\n            return _date_serialization.default.getDateSerializationFormat(value)\r\n        }\r\n    }, {\r\n        key: \"_bringEditingModeToAppointments\",\r\n        value: function(editing) {\r\n            var editingConfig = {\r\n                allowDelete: editing.allowUpdating && editing.allowDeleting\r\n            };\r\n            if (!this._isAgenda()) {\r\n                editingConfig.allowDrag = editing.allowDragging;\r\n                editingConfig.allowResize = editing.allowResizing;\r\n                editingConfig.allowAllDayResize = editing.allowResizing && this._supportAllDayResizing()\r\n            }\r\n            this._appointments.option(editingConfig);\r\n            this.repaint()\r\n        }\r\n    }, {\r\n        key: \"_isAgenda\",\r\n        value: function() {\r\n            return \"agenda\" === this._getAppointmentsRenderingStrategy()\r\n        }\r\n    }, {\r\n        key: \"_allowDragging\",\r\n        value: function() {\r\n            return this._editing.allowDragging && !this._isAgenda()\r\n        }\r\n    }, {\r\n        key: \"_allowResizing\",\r\n        value: function() {\r\n            return this._editing.allowResizing && !this._isAgenda()\r\n        }\r\n    }, {\r\n        key: \"_allowAllDayResizing\",\r\n        value: function() {\r\n            return this._editing.allowResizing && this._supportAllDayResizing()\r\n        }\r\n    }, {\r\n        key: \"_supportAllDayResizing\",\r\n        value: function() {\r\n            return \"day\" !== this._getCurrentViewType() || this._currentView.intervalCount > 1\r\n        }\r\n    }, {\r\n        key: \"_isAllDayExpanded\",\r\n        value: function(items) {\r\n            return this.option(\"showAllDayPanel\") && this._appointmentModel.hasAllDayAppointments(items, this._getCurrentViewOption(\"startDayHour\"), this._getCurrentViewOption(\"endDayHour\"))\r\n        }\r\n    }, {\r\n        key: \"_getTimezoneOffsetByOption\",\r\n        value: function(date) {\r\n            return _utils.default.calculateTimezoneByValue(this.option(\"timeZone\"), date)\r\n        }\r\n    }, {\r\n        key: \"_filterAppointmentsByDate\",\r\n        value: function() {\r\n            var dateRange = this._workSpace.getDateRange();\r\n            this._appointmentModel.filterByDate(dateRange[0], dateRange[1], this.option(\"remoteFiltering\"), this.option(\"dateSerializationFormat\"))\r\n        }\r\n    }, {\r\n        key: \"_loadResources\",\r\n        value: function() {\r\n            var groups = this._getCurrentViewOption(\"groups\");\r\n            var result = new _deferred.Deferred;\r\n            this._resourcesManager.loadResources(groups).done(function(resources) {\r\n                this._loadedResources = resources;\r\n                result.resolve(resources)\r\n            }.bind(this));\r\n            return result.promise()\r\n        }\r\n    }, {\r\n        key: \"_reloadDataSource\",\r\n        value: function() {\r\n            var result = new _deferred.Deferred;\r\n            if (this._dataSource) {\r\n                this._dataSource.load().done(function() {\r\n                    (0, _ui3.hide)();\r\n                    this._fireContentReadyAction(result)\r\n                }.bind(this)).fail(function() {\r\n                    (0, _ui3.hide)();\r\n                    result.reject()\r\n                });\r\n                this._dataSource.isLoading() && (0, _ui3.show)({\r\n                    container: this.$element(),\r\n                    position: {\r\n                        of: this.$element()\r\n                    }\r\n                })\r\n            } else {\r\n                this._fireContentReadyAction(result)\r\n            }\r\n            return result.promise()\r\n        }\r\n    }, {\r\n        key: \"_fireContentReadyAction\",\r\n        value: function(result) {\r\n            var contentReadyBase = _get(_getPrototypeOf(Scheduler.prototype), \"_fireContentReadyAction\", this).bind(this);\r\n            var fireContentReady = function() {\r\n                contentReadyBase();\r\n                null === result || void 0 === result ? void 0 : result.resolve()\r\n            };\r\n            if (this._workSpaceRecalculation) {\r\n                var _this$_workSpaceRecal;\r\n                null === (_this$_workSpaceRecal = this._workSpaceRecalculation) || void 0 === _this$_workSpaceRecal ? void 0 : _this$_workSpaceRecal.done(function() {\r\n                    fireContentReady()\r\n                })\r\n            } else {\r\n                fireContentReady()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_dimensionChanged\",\r\n        value: function() {\r\n            var filteredItems = this.getFilteredItems();\r\n            this._toggleSmallClass();\r\n            if (!this._isAgenda() && filteredItems && this._isVisible()) {\r\n                this._workSpace._cleanAllowedPositions();\r\n                this._workSpace.option(\"allDayExpanded\", this._isAllDayExpanded(filteredItems));\r\n                this._workSpace._dimensionChanged();\r\n                var appointments = this._layoutManager.createAppointmentsMap(filteredItems);\r\n                this._appointments.option(\"items\", appointments)\r\n            }\r\n            this.hideAppointmentTooltip();\r\n            this._appointmentPopup.triggerResize();\r\n            this._appointmentPopup.updatePopupFullScreenMode()\r\n        }\r\n    }, {\r\n        key: \"_clean\",\r\n        value: function() {\r\n            this._cleanPopup();\r\n            _get(_getPrototypeOf(Scheduler.prototype), \"_clean\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_toggleSmallClass\",\r\n        value: function() {\r\n            var width = (0, _position.getBoundingRect)(this.$element().get(0)).width;\r\n            this.$element().toggleClass(WIDGET_SMALL_CLASS, width < WIDGET_SMALL_WIDTH)\r\n        }\r\n    }, {\r\n        key: \"_toggleAdaptiveClass\",\r\n        value: function() {\r\n            this.$element().toggleClass(WIDGET_ADAPTIVE_CLASS, this.option(\"adaptivityEnabled\"))\r\n        }\r\n    }, {\r\n        key: \"_visibilityChanged\",\r\n        value: function(visible) {\r\n            visible && this._dimensionChanged()\r\n        }\r\n    }, {\r\n        key: \"_dataSourceOptions\",\r\n        value: function() {\r\n            return {\r\n                paginate: false\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            var _this3 = this;\r\n            this._initExpressions({\r\n                startDate: this.option(\"startDateExpr\"),\r\n                endDate: this.option(\"endDateExpr\"),\r\n                startDateTimeZone: this.option(\"startDateTimeZoneExpr\"),\r\n                endDateTimeZone: this.option(\"endDateTimeZoneExpr\"),\r\n                allDay: this.option(\"allDayExpr\"),\r\n                text: this.option(\"textExpr\"),\r\n                description: this.option(\"descriptionExpr\"),\r\n                recurrenceRule: this.option(\"recurrenceRuleExpr\"),\r\n                recurrenceException: this.option(\"recurrenceExceptionExpr\"),\r\n                disabled: this.option(\"disabledExpr\")\r\n            });\r\n            _get(_getPrototypeOf(Scheduler.prototype), \"_init\", this).call(this);\r\n            this._initDataSource();\r\n            this._loadedResources = [];\r\n            this.$element().addClass(WIDGET_CLASS).toggleClass(WIDGET_WIN_NO_TOUCH_CLASS, !!(_browser.default.msie && _support.touch));\r\n            this._initEditing();\r\n            this._resourcesManager = new _uiScheduler4.default(this.option(\"resources\"));\r\n            var combinedDataAccessors = this._combineDataAccessors();\r\n            this._appointmentModel = new _uiScheduler2.default(this._dataSource, combinedDataAccessors, this.getAppointmentDurationInMinutes());\r\n            this._initActions();\r\n            this._compactAppointmentsHelper = new _compactAppointmentsHelper.CompactAppointmentsHelper(this);\r\n            this._asyncTemplatesTimers = [];\r\n            this._dataSourceLoadedCallback = (0, _callbacks.default)();\r\n            this._subscribes = _uiScheduler5.default;\r\n            this.timeZoneCalculator = new _timeZoneCalculator.TimeZoneCalculator({\r\n                getClientOffset: function(date) {\r\n                    return _this3.fire(\"getClientTimezoneOffset\", date)\r\n                },\r\n                getCommonOffset: function(date) {\r\n                    return _this3._getTimezoneOffsetByOption(date)\r\n                },\r\n                getAppointmentOffset: function(date, appointmentTimezone) {\r\n                    return _utils.default.calculateTimezoneByValue(appointmentTimezone, date)\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_initTemplates\",\r\n        value: function() {\r\n            this._initAppointmentTemplate();\r\n            this._templateManager.addDefaultTemplates({\r\n                appointmentTooltip: new _empty_template.EmptyTemplate,\r\n                dropDownAppointment: new _empty_template.EmptyTemplate\r\n            });\r\n            _get(_getPrototypeOf(Scheduler.prototype), \"_initTemplates\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_initAppointmentTemplate\",\r\n        value: function() {\r\n            var _this4 = this;\r\n            var expr = this._dataAccessors.expr;\r\n            var createGetter = function(property) {\r\n                return (0, _data.compileGetter)(\"appointmentData.\".concat(property))\r\n            };\r\n            this._templateManager.addDefaultTemplates(_defineProperty({}, \"item\", new _bindable_template.BindableTemplate(function($container, data, model) {\r\n                _this4.getAppointmentsInstance()._renderAppointmentTemplate($container, data, model)\r\n            }, [\"html\", \"text\", \"startDate\", \"endDate\", \"allDay\", \"description\", \"recurrenceRule\", \"recurrenceException\", \"startDateTimeZone\", \"endDateTimeZone\"], this.option(\"integrationOptions.watchMethod\"), {\r\n                text: createGetter(expr.textExpr),\r\n                startDate: createGetter(expr.startDateExpr),\r\n                endDate: createGetter(expr.endDateExpr),\r\n                startDateTimeZone: createGetter(expr.startDateTimeZoneExpr),\r\n                endDateTimeZone: createGetter(expr.endDateTimeZoneExpr),\r\n                allDay: createGetter(expr.allDayExpr),\r\n                recurrenceRule: createGetter(expr.recurrenceRuleExpr)\r\n            })))\r\n        }\r\n    }, {\r\n        key: \"_combineDataAccessors\",\r\n        value: function() {\r\n            var resourcesDataAccessors = this._resourcesManager._dataAccessors;\r\n            var result = (0, _extend.extend)(true, {}, this._dataAccessors);\r\n            (0, _iterator.each)(resourcesDataAccessors, function(type, accessor) {\r\n                result[type].resources = accessor\r\n            }.bind(this));\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_renderContent\",\r\n        value: function() {\r\n            this._renderContentImpl()\r\n        }\r\n    }, {\r\n        key: \"_dataSourceChangedHandler\",\r\n        value: function(result) {\r\n            if (this._readyToRenderAppointments) {\r\n                this._workSpaceRecalculation.done(function() {\r\n                    this._renderAppointments();\r\n                    if (this._isAgenda()) {\r\n                        this._workSpace._renderView();\r\n                        this._dataSourceLoadedCallback.fireWith(this, [this.getFilteredItems()])\r\n                    }\r\n                }.bind(this))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"isVirtualScrolling\",\r\n        value: function() {\r\n            var _this$getWorkSpace;\r\n            return null === (_this$getWorkSpace = this.getWorkSpace()) || void 0 === _this$getWorkSpace ? void 0 : _this$getWorkSpace.isVirtualScrolling()\r\n        }\r\n    }, {\r\n        key: \"_filterAppointments\",\r\n        value: function() {\r\n            var prerenderFilterName = this.isVirtualScrolling() ? \"prerenderFilterVirtual\" : \"prerenderFilter\";\r\n            return this.fire(prerenderFilterName)\r\n        }\r\n    }, {\r\n        key: \"_renderAppointments\",\r\n        value: function() {\r\n            this._filteredItems = this._filterAppointments();\r\n            this._workSpace.option(\"allDayExpanded\", this._isAllDayExpanded(this._filteredItems));\r\n            if (this._isAgenda()) {\r\n                this.getRenderingStrategyInstance().calculateRows(this._filteredItems, 7, this.option(\"currentDate\"), true)\r\n            }\r\n            if (this._filteredItems.length && this._isVisible()) {\r\n                this._appointments.option(\"items\", this._getAppointmentsToRepaint());\r\n                this._appointmentModel.cleanModelState()\r\n            } else {\r\n                this._appointments.option(\"items\", [])\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentsToRepaint\",\r\n        value: function() {\r\n            var appointments = this._layoutManager.createAppointmentsMap(this._filteredItems);\r\n            return this._layoutManager.getRepaintedAppointments(appointments, this.getAppointmentsInstance().option(\"items\"))\r\n        }\r\n    }, {\r\n        key: \"_initExpressions\",\r\n        value: function(fields) {\r\n            var isDateField = function(field) {\r\n                return \"startDate\" === field || \"endDate\" === field\r\n            };\r\n            if (!this._dataAccessors) {\r\n                this._dataAccessors = {\r\n                    getter: {},\r\n                    setter: {},\r\n                    expr: {}\r\n                }\r\n            }(0, _iterator.each)(fields, function(name, expr) {\r\n                if (expr) {\r\n                    var getter = (0, _data.compileGetter)(expr);\r\n                    var setter = (0, _data.compileSetter)(expr);\r\n                    var dateGetter;\r\n                    var dateSetter;\r\n                    if (isDateField(name)) {\r\n                        var that = this;\r\n                        dateGetter = function() {\r\n                            var value = getter.apply(this, arguments);\r\n                            if ((0, _config.default)().forceIsoDateParsing) {\r\n                                if (!that.option(\"dateSerializationFormat\")) {\r\n                                    var format = _date_serialization.default.getDateSerializationFormat(value);\r\n                                    if (format) {\r\n                                        that.option(\"dateSerializationFormat\", format)\r\n                                    }\r\n                                }\r\n                                value = _date_serialization.default.deserializeDate(value)\r\n                            }\r\n                            return value\r\n                        };\r\n                        dateSetter = function(object, value) {\r\n                            if ((0, _config.default)().forceIsoDateParsing || that.option(\"dateSerializationFormat\")) {\r\n                                value = _date_serialization.default.serializeDate(value, that.option(\"dateSerializationFormat\"))\r\n                            }\r\n                            setter.call(this, object, value)\r\n                        }\r\n                    }\r\n                    this._dataAccessors.getter[name] = dateGetter || getter;\r\n                    this._dataAccessors.setter[name] = dateSetter || setter;\r\n                    this._dataAccessors.expr[name + \"Expr\"] = expr\r\n                } else {\r\n                    delete this._dataAccessors.getter[name];\r\n                    delete this._dataAccessors.setter[name];\r\n                    delete this._dataAccessors.expr[name + \"Expr\"]\r\n                }\r\n            }.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_updateExpression\",\r\n        value: function(name, value) {\r\n            var exprObj = {};\r\n            exprObj[name.replace(\"Expr\", \"\")] = value;\r\n            this._initExpressions(exprObj)\r\n        }\r\n    }, {\r\n        key: \"_initEditing\",\r\n        value: function() {\r\n            var editing = this.option(\"editing\");\r\n            this._editing = {\r\n                allowAdding: !!editing,\r\n                allowUpdating: !!editing,\r\n                allowDeleting: !!editing,\r\n                allowResizing: !!editing,\r\n                allowDragging: !!editing\r\n            };\r\n            if ((0, _type.isObject)(editing)) {\r\n                this._editing = (0, _extend.extend)(this._editing, editing)\r\n            }\r\n            this._editing.allowDragging = this._editing.allowDragging && this._editing.allowUpdating;\r\n            this._editing.allowResizing = this._editing.allowResizing && this._editing.allowUpdating;\r\n            this.$element().toggleClass(WIDGET_READONLY_CLASS, this._isReadOnly())\r\n        }\r\n    }, {\r\n        key: \"_isReadOnly\",\r\n        value: function() {\r\n            var result = true;\r\n            var editing = this._editing;\r\n            for (var prop in editing) {\r\n                if (Object.prototype.hasOwnProperty.call(editing, prop)) {\r\n                    result = result && !editing[prop]\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_dispose\",\r\n        value: function() {\r\n            this._appointmentTooltip && this._appointmentTooltip.dispose();\r\n            this.hideAppointmentPopup();\r\n            this.hideAppointmentTooltip();\r\n            this._asyncTemplatesTimers.forEach(clearTimeout);\r\n            this._asyncTemplatesTimers = [];\r\n            _get(_getPrototypeOf(Scheduler.prototype), \"_dispose\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_initActions\",\r\n        value: function() {\r\n            this._actions = {\r\n                onAppointmentAdding: this._createActionByOption(\"onAppointmentAdding\"),\r\n                onAppointmentAdded: this._createActionByOption(\"onAppointmentAdded\"),\r\n                onAppointmentUpdating: this._createActionByOption(\"onAppointmentUpdating\"),\r\n                onAppointmentUpdated: this._createActionByOption(\"onAppointmentUpdated\"),\r\n                onAppointmentDeleting: this._createActionByOption(\"onAppointmentDeleting\"),\r\n                onAppointmentDeleted: this._createActionByOption(\"onAppointmentDeleted\"),\r\n                onAppointmentFormOpening: this._createActionByOption(\"onAppointmentFormOpening\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentRenderedAction\",\r\n        value: function() {\r\n            return this._createActionByOption(\"onAppointmentRendered\", {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_renderFocusTarget\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(Scheduler.prototype), \"_initMarkup\", this).call(this);\r\n            this.fire(\"validateDayHours\");\r\n            this._validateCellDuration();\r\n            this._processCurrentView();\r\n            this._renderHeader();\r\n            this._layoutManager = new _uiSchedulerAppointments.default(this, this._getAppointmentsRenderingStrategy());\r\n            this._appointments = this._createComponent(\"<div>\", _uiScheduler.default, this._appointmentsConfig());\r\n            this._appointments.option(\"itemTemplate\", this._getAppointmentTemplate(\"appointmentTemplate\"));\r\n            this._appointmentTooltip = new(this.option(\"adaptivityEnabled\") ? _mobileTooltipStrategy.MobileTooltipStrategy : _desktopTooltipStrategy.DesktopTooltipStrategy)(this._getAppointmentTooltipOptions());\r\n            this._appointmentPopup = new _appointmentPopup.default(this);\r\n            if (this._isLoaded() || this._isDataSourceLoading()) {\r\n                this._initMarkupCore(this._loadedResources);\r\n                this._dataSourceChangedHandler(this._dataSource.items());\r\n                this._fireContentReadyAction()\r\n            } else {\r\n                this._loadResources().done(function(resources) {\r\n                    this._initMarkupCore(resources);\r\n                    this._reloadDataSource()\r\n                }.bind(this))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentTooltipOptions\",\r\n        value: function() {\r\n            var _this5 = this;\r\n            var that = this;\r\n            return {\r\n                createComponent: that._createComponent.bind(that),\r\n                container: that.$element(),\r\n                getScrollableContainer: that.getWorkSpaceScrollableContainer.bind(that),\r\n                addDefaultTemplates: that._templateManager.addDefaultTemplates.bind(that._templateManager),\r\n                getAppointmentTemplate: that._getAppointmentTemplate.bind(that),\r\n                showAppointmentPopup: that.showAppointmentPopup.bind(that),\r\n                checkAndDeleteAppointment: that.checkAndDeleteAppointment.bind(that),\r\n                isAppointmentInAllDayPanel: that.isAppointmentInAllDayPanel.bind(that),\r\n                createFormattedDateText: function(appointment, targetedAppointment, format) {\r\n                    return _this5.fire(\"getTextAndFormatDate\", appointment, targetedAppointment, format)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"checkAndDeleteAppointment\",\r\n        value: function(appointment, targetedAppointment) {\r\n            var _this6 = this;\r\n            var targetedAdapter = this.createAppointmentAdapter(targetedAppointment);\r\n            this._checkRecurringAppointment(appointment, targetedAppointment, targetedAdapter.startDate, function() {\r\n                _this6.deleteAppointment(appointment)\r\n            }, true)\r\n        }\r\n    }, {\r\n        key: \"_getExtraAppointmentTooltipOptions\",\r\n        value: function() {\r\n            return {\r\n                rtlEnabled: this.option(\"rtlEnabled\"),\r\n                focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n                editing: this.option(\"editing\"),\r\n                offset: this.option(\"_appointmentTooltipOffset\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"isAppointmentInAllDayPanel\",\r\n        value: function(appointmentData) {\r\n            var workSpace = this._workSpace;\r\n            var itTakesAllDay = this.appointmentTakesAllDay(appointmentData);\r\n            return itTakesAllDay && workSpace.supportAllDayRow() && workSpace.option(\"showAllDayPanel\")\r\n        }\r\n    }, {\r\n        key: \"_initMarkupCore\",\r\n        value: function(resources) {\r\n            var _this7 = this;\r\n            this._readyToRenderAppointments = (0, _window.hasWindow)();\r\n            this._workSpace && this._cleanWorkspace();\r\n            this._renderWorkSpace(resources);\r\n            this._appointments.option({\r\n                fixedContainer: this._workSpace.getFixedContainer(),\r\n                allDayContainer: this._workSpace.getAllDayContainer()\r\n            });\r\n            this._waitAsyncTemplate(function() {\r\n                var _this7$_workSpaceReca;\r\n                return null === (_this7$_workSpaceReca = _this7._workSpaceRecalculation) || void 0 === _this7$_workSpaceReca ? void 0 : _this7$_workSpaceReca.resolve()\r\n            });\r\n            this._filterAppointmentsByDate()\r\n        }\r\n    }, {\r\n        key: \"_isLoaded\",\r\n        value: function() {\r\n            return this._isResourcesLoaded() && this._isDataSourceLoaded()\r\n        }\r\n    }, {\r\n        key: \"_isResourcesLoaded\",\r\n        value: function() {\r\n            return (0, _type.isDefined)(this._loadedResources)\r\n        }\r\n    }, {\r\n        key: \"_isDataSourceLoaded\",\r\n        value: function() {\r\n            return this._dataSource && this._dataSource.isLoaded()\r\n        }\r\n    }, {\r\n        key: \"_render\",\r\n        value: function() {\r\n            this._toggleSmallClass();\r\n            this._toggleAdaptiveClass();\r\n            _get(_getPrototypeOf(Scheduler.prototype), \"_render\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_renderHeader\",\r\n        value: function() {\r\n            var $header = (0, _renderer.default)(\"<div>\").appendTo(this.$element());\r\n            this._header = this._createComponent($header, _uiScheduler3.default, this._headerConfig())\r\n        }\r\n    }, {\r\n        key: \"_headerConfig\",\r\n        value: function() {\r\n            var currentViewOptions = this._getCurrentViewOptions();\r\n            var countConfig = this._getViewCountConfig();\r\n            var result = (0, _extend.extend)({\r\n                isAdaptive: this.option(\"adaptivityEnabled\"),\r\n                firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n                currentView: this._currentView,\r\n                tabIndex: this.option(\"tabIndex\"),\r\n                focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n                width: this.option(\"width\"),\r\n                rtlEnabled: this.option(\"rtlEnabled\"),\r\n                useDropDownViewSwitcher: this.option(\"useDropDownViewSwitcher\"),\r\n                _dropDownButtonIcon: this.option(\"_dropDownButtonIcon\"),\r\n                customizeDateNavigatorText: this.option(\"customizeDateNavigatorText\")\r\n            }, currentViewOptions);\r\n            result.observer = this;\r\n            result.intervalCount = countConfig.intervalCount;\r\n            result.views = this.option(\"views\");\r\n            result.min = new Date(this._dateOption(\"min\"));\r\n            result.max = new Date(this._dateOption(\"max\"));\r\n            result.currentDate = _date.default.trimTime(new Date(this._dateOption(\"currentDate\")));\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_appointmentsConfig\",\r\n        value: function() {\r\n            var that = this;\r\n            var config = {\r\n                observer: this,\r\n                onItemRendered: this._getAppointmentRenderedAction(),\r\n                onItemClick: this._createActionByOption(\"onAppointmentClick\"),\r\n                onItemContextMenu: this._createActionByOption(\"onAppointmentContextMenu\"),\r\n                onAppointmentDblClick: this._createActionByOption(\"onAppointmentDblClick\"),\r\n                tabIndex: this.option(\"tabIndex\"),\r\n                focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n                allowDrag: this._allowDragging(),\r\n                allowDelete: this._editing.allowUpdating && this._editing.allowDeleting,\r\n                allowResize: this._allowResizing(),\r\n                allowAllDayResize: this._allowAllDayResizing(),\r\n                rtlEnabled: this.option(\"rtlEnabled\"),\r\n                currentView: this.option(\"currentView\"),\r\n                onContentReady: function() {\r\n                    that._workSpace && that._workSpace.option(\"allDayExpanded\", that._isAllDayExpanded(that.getFilteredItems()))\r\n                }\r\n            };\r\n            return config\r\n        }\r\n    }, {\r\n        key: \"getCollectorOffset\",\r\n        value: function() {\r\n            if (this._workSpace.needApplyCollectorOffset() && !this.option(\"adaptivityEnabled\")) {\r\n                return this.option(\"_collectorOffset\")\r\n            } else {\r\n                return 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getAppointmentDurationInMinutes\",\r\n        value: function() {\r\n            return this._getCurrentViewOption(\"cellDuration\")\r\n        }\r\n    }, {\r\n        key: \"_processCurrentView\",\r\n        value: function() {\r\n            var views = this.option(\"views\");\r\n            var currentView = this.option(\"currentView\");\r\n            var that = this;\r\n            this._currentView = currentView;\r\n            (0, _iterator.each)(views, function(_, view) {\r\n                var isViewIsObject = (0, _type.isObject)(view);\r\n                var viewName = isViewIsObject ? view.name : view;\r\n                var viewType = view.type;\r\n                if (currentView === viewName || currentView === viewType) {\r\n                    that._currentView = view;\r\n                    return false\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_validateCellDuration\",\r\n        value: function() {\r\n            var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n            var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n            var cellDuration = this._getCurrentViewOption(\"cellDuration\");\r\n            if ((endDayHour - startDayHour) * MINUTES_IN_HOUR % cellDuration !== 0) {\r\n                _ui.default.log(\"W1015\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getCurrentViewType\",\r\n        value: function() {\r\n            return this._currentView.type || this._currentView\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentsRenderingStrategy\",\r\n        value: function() {\r\n            return VIEWS_CONFIG[this._getCurrentViewType()].renderingStrategy\r\n        }\r\n    }, {\r\n        key: \"_renderWorkSpace\",\r\n        value: function(groups) {\r\n            this._readyToRenderAppointments && this._toggleSmallClass();\r\n            var $workSpace = (0, _renderer.default)(\"<div>\").appendTo(this.$element());\r\n            var countConfig = this._getViewCountConfig();\r\n            var workSpaceComponent = VIEWS_CONFIG[this._getCurrentViewType()].workSpace;\r\n            var workSpaceConfig = this._workSpaceConfig(groups, countConfig);\r\n            this._workSpace = this._createComponent($workSpace, workSpaceComponent, workSpaceConfig);\r\n            this._allowDragging() && this._workSpace.initDragBehavior(this, this._all);\r\n            this._workSpace._attachTablesEvents();\r\n            this._workSpace.getWorkArea().append(this._appointments.$element());\r\n            this._recalculateWorkspace();\r\n            countConfig.startDate && this._header && this._header.option(\"currentDate\", this._workSpace._getHeaderDate());\r\n            this._appointments.option(\"_collectorOffset\", this.getCollectorOffset())\r\n        }\r\n    }, {\r\n        key: \"_getViewCountConfig\",\r\n        value: function() {\r\n            var currentView = this.option(\"currentView\");\r\n            var view = this._getViewByName(currentView);\r\n            var viewCount = view && view.intervalCount || 1;\r\n            var startDate = view && view.startDate || null;\r\n            return {\r\n                intervalCount: viewCount,\r\n                startDate: startDate\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getViewByName\",\r\n        value: function(name) {\r\n            var views = this.option(\"views\");\r\n            for (var i = 0; i < views.length; i++) {\r\n                if (views[i].name === name || views[i].type === name || views[i] === name) {\r\n                    return views[i]\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_recalculateWorkspace\",\r\n        value: function() {\r\n            var _this8 = this;\r\n            this._workSpaceRecalculation = new _deferred.Deferred;\r\n            this._waitAsyncTemplate(function() {\r\n                (0, _visibility_change.triggerResizeEvent)(_this8._workSpace.$element());\r\n                _this8._workSpace._refreshDateTimeIndication()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_workSpaceConfig\",\r\n        value: function(groups, countConfig) {\r\n            var _currentViewOptions$s, _this9 = this;\r\n            var currentViewOptions = this._getCurrentViewOptions();\r\n            var scrolling = this.option(\"scrolling\");\r\n            var result = (0, _extend.extend)({\r\n                noDataText: this.option(\"noDataText\"),\r\n                firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n                startDayHour: this.option(\"startDayHour\"),\r\n                endDayHour: this.option(\"endDayHour\"),\r\n                tabIndex: this.option(\"tabIndex\"),\r\n                accessKey: this.option(\"accessKey\"),\r\n                focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n                cellDuration: this.option(\"cellDuration\"),\r\n                showAllDayPanel: this.option(\"showAllDayPanel\"),\r\n                showCurrentTimeIndicator: this.option(\"showCurrentTimeIndicator\"),\r\n                indicatorTime: this.option(\"indicatorTime\"),\r\n                indicatorUpdateInterval: this.option(\"indicatorUpdateInterval\"),\r\n                shadeUntilCurrentTime: this.option(\"shadeUntilCurrentTime\"),\r\n                allDayExpanded: this._appointments.option(\"items\"),\r\n                crossScrollingEnabled: this.option(\"crossScrollingEnabled\"),\r\n                dataCellTemplate: this.option(\"dataCellTemplate\"),\r\n                timeCellTemplate: this.option(\"timeCellTemplate\"),\r\n                resourceCellTemplate: this.option(\"resourceCellTemplate\"),\r\n                dateCellTemplate: this.option(\"dateCellTemplate\"),\r\n                allowMultipleCellSelection: this.option(\"allowMultipleCellSelection\"),\r\n                selectedCellData: this.option(\"selectedCellData\"),\r\n                onSelectionChanged: function(args) {\r\n                    _this9.option(\"selectedCellData\", args.selectedCellData)\r\n                },\r\n                groupByDate: this._getCurrentViewOption(\"groupByDate\"),\r\n                scrolling: scrolling,\r\n                renovateRender: this.option(\"renovateRender\") || \"virtual\" === scrolling.mode || \"virtual\" === (null === (_currentViewOptions$s = currentViewOptions.scrolling) || void 0 === _currentViewOptions$s ? void 0 : _currentViewOptions$s.mode)\r\n            }, currentViewOptions);\r\n            result.observer = this;\r\n            result.intervalCount = countConfig.intervalCount;\r\n            result.startDate = countConfig.startDate;\r\n            result.groups = groups;\r\n            result.onCellClick = this._createActionByOption(\"onCellClick\");\r\n            result.onCellContextMenu = this._createActionByOption(\"onCellContextMenu\");\r\n            result.min = new Date(this._dateOption(\"min\"));\r\n            result.max = new Date(this._dateOption(\"max\"));\r\n            result.currentDate = _date.default.trimTime(new Date(this._dateOption(\"currentDate\")));\r\n            result.hoursInterval = result.cellDuration / 60;\r\n            result.allDayExpanded = this._isAllDayExpanded(this.getFilteredItems());\r\n            result.dataCellTemplate = result.dataCellTemplate ? this._getTemplate(result.dataCellTemplate) : null;\r\n            result.timeCellTemplate = result.timeCellTemplate ? this._getTemplate(result.timeCellTemplate) : null;\r\n            result.resourceCellTemplate = result.resourceCellTemplate ? this._getTemplate(result.resourceCellTemplate) : null;\r\n            result.dateCellTemplate = result.dateCellTemplate ? this._getTemplate(result.dateCellTemplate) : null;\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_waitAsyncTemplate\",\r\n        value: function(callback) {\r\n            if (this._options.silent(\"templatesRenderAsynchronously\")) {\r\n                var timer = setTimeout(function() {\r\n                    callback();\r\n                    clearTimeout(timer)\r\n                });\r\n                this._asyncTemplatesTimers.push(timer)\r\n            } else {\r\n                callback()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getCurrentViewOptions\",\r\n        value: function() {\r\n            return this._currentView\r\n        }\r\n    }, {\r\n        key: \"_getCurrentViewOption\",\r\n        value: function(optionName) {\r\n            var currentViewOptions = this._getCurrentViewOptions();\r\n            if (currentViewOptions && void 0 !== currentViewOptions[optionName]) {\r\n                return currentViewOptions[optionName]\r\n            }\r\n            return this.option(optionName)\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentTemplate\",\r\n        value: function(optionName) {\r\n            var currentViewOptions = this._getCurrentViewOptions();\r\n            if (currentViewOptions && currentViewOptions[optionName]) {\r\n                return this._getTemplate(currentViewOptions[optionName])\r\n            }\r\n            return this._getTemplateByOption(optionName)\r\n        }\r\n    }, {\r\n        key: \"_updateOption\",\r\n        value: function(viewName, optionName, value) {\r\n            var currentViewOptions = this._getCurrentViewOptions();\r\n            if (!currentViewOptions || !(0, _type.isDefined)(currentViewOptions[optionName])) {\r\n                this[\"_\" + viewName].option(optionName, value)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_refreshWorkSpace\",\r\n        value: function(groups) {\r\n            var _this10 = this;\r\n            this._cleanWorkspace();\r\n            delete this._workSpace;\r\n            this._renderWorkSpace(groups);\r\n            if (this._readyToRenderAppointments) {\r\n                this._appointments.option({\r\n                    fixedContainer: this._workSpace.getFixedContainer(),\r\n                    allDayContainer: this._workSpace.getAllDayContainer()\r\n                });\r\n                this._waitAsyncTemplate(function() {\r\n                    return _this10._workSpaceRecalculation.resolve()\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_cleanWorkspace\",\r\n        value: function() {\r\n            this._appointments.$element().detach();\r\n            this._workSpace._dispose();\r\n            this._workSpace.$element().remove();\r\n            this.option(\"selectedCellData\", [])\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceScrollable\",\r\n        value: function() {\r\n            return this._workSpace.getScrollable()\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceScrollableScrollTop\",\r\n        value: function(allDay) {\r\n            return this._workSpace.getGroupedScrollableScrollTop(allDay)\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceScrollableScrollLeft\",\r\n        value: function() {\r\n            return this._workSpace.getScrollableScrollLeft()\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceScrollableContainer\",\r\n        value: function() {\r\n            return this._workSpace.getScrollableContainer()\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceAllDayHeight\",\r\n        value: function() {\r\n            return this._workSpace.getAllDayHeight()\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceAllDayOffset\",\r\n        value: function() {\r\n            return this._workSpace.getAllDayOffset()\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceHeaderPanelHeight\",\r\n        value: function() {\r\n            return this._workSpace.getHeaderPanelHeight()\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceDateTableOffset\",\r\n        value: function() {\r\n            return !this.option(\"crossScrollingEnabled\") || this.option(\"rtlEnabled\") ? this._workSpace.getWorkSpaceLeftOffset() : 0\r\n        }\r\n    }, {\r\n        key: \"getWorkSpace\",\r\n        value: function() {\r\n            return this._workSpace\r\n        }\r\n    }, {\r\n        key: \"getAppointmentModel\",\r\n        value: function() {\r\n            return this._appointmentModel\r\n        }\r\n    }, {\r\n        key: \"getHeader\",\r\n        value: function() {\r\n            return this._header\r\n        }\r\n    }, {\r\n        key: \"getMaxAppointmentsPerCell\",\r\n        value: function() {\r\n            return this._getCurrentViewOption(\"maxAppointmentsPerCell\")\r\n        }\r\n    }, {\r\n        key: \"_cleanPopup\",\r\n        value: function() {\r\n            this._appointmentPopup && this._appointmentPopup.dispose()\r\n        }\r\n    }, {\r\n        key: \"_checkRecurringAppointment\",\r\n        value: function(targetAppointment, singleAppointment, exceptionDate, callback, isDeleted, isPopupEditing, dragEvent) {\r\n            delete this._updatedRecAppointment;\r\n            var recurrenceRule = this.fire(\"getField\", \"recurrenceRule\", targetAppointment);\r\n            if (!(0, _recurrence.getRecurrenceProcessor)().evalRecurrenceRule(recurrenceRule).isValid || !this._editing.allowUpdating) {\r\n                callback();\r\n                return\r\n            }\r\n            var editMode = this.option(\"recurrenceEditMode\");\r\n            switch (editMode) {\r\n                case \"series\":\r\n                    callback();\r\n                    break;\r\n                case \"occurrence\":\r\n                    this._singleAppointmentChangesHandler(targetAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent);\r\n                    break;\r\n                default:\r\n                    if (dragEvent) {\r\n                        dragEvent.cancel = new _deferred.Deferred\r\n                    }\r\n                    this._showRecurrenceChangeConfirm(isDeleted).done(function(result) {\r\n                        result && callback();\r\n                        !result && this._singleAppointmentChangesHandler(targetAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent)\r\n                    }.bind(this)).fail(function() {\r\n                        this._appointments.moveAppointmentBack(dragEvent)\r\n                    }.bind(this))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getCorrectedExceptionDateByDST\",\r\n        value: function(exceptionDate, appointment, targetedAppointment) {\r\n            var offset = appointment.startDate.getTimezoneOffset() - targetedAppointment.startDate.getTimezoneOffset();\r\n            if (0 !== offset) {\r\n                return (0, _dateAdapter.default)(exceptionDate).addTime(offset * _date.default.dateToMilliseconds(\"minute\")).result()\r\n            }\r\n            return exceptionDate\r\n        }\r\n    }, {\r\n        key: \"_singleAppointmentChangesHandler\",\r\n        value: function(rawAppointment, rawTargetedAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent) {\r\n            var _this11 = this;\r\n            var appointment = this.createAppointmentAdapter(rawAppointment);\r\n            var targetedAppointment = this.createAppointmentAdapter(rawTargetedAppointment);\r\n            var updatedAppointment = this.createAppointmentAdapter(rawAppointment);\r\n            targetedAppointment.recurrenceRule = \"\";\r\n            targetedAppointment.recurrenceException = \"\";\r\n            if (!isDeleted && !isPopupEditing) {\r\n                var keyPropertyName = this._appointmentModel.keyName;\r\n                delete rawTargetedAppointment[keyPropertyName];\r\n                this.addAppointment(rawTargetedAppointment)\r\n            }\r\n            var correctedExceptionDate = this._getCorrectedExceptionDateByDST(exceptionDate, appointment, targetedAppointment);\r\n            updatedAppointment.recurrenceException = this._createRecurrenceException(correctedExceptionDate, rawAppointment);\r\n            if (isPopupEditing) {\r\n                this._updatedRecAppointment = updatedAppointment.source();\r\n                this._appointmentPopup.show(rawTargetedAppointment, true);\r\n                this._editAppointmentData = rawAppointment\r\n            } else {\r\n                this._updateAppointment(rawAppointment, updatedAppointment.source(), function() {\r\n                    _this11._appointments.moveAppointmentBack(dragEvent)\r\n                }, dragEvent)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createRecurrenceException\",\r\n        value: function(exceptionDate, targetAppointment) {\r\n            var result = [];\r\n            var adapter = this.createAppointmentAdapter(targetAppointment);\r\n            if (adapter.recurrenceException) {\r\n                result.push(adapter.recurrenceException)\r\n            }\r\n            result.push(this._serializeRecurrenceException(exceptionDate, adapter.startDate, adapter.allDay));\r\n            return result.join()\r\n        }\r\n    }, {\r\n        key: \"_serializeRecurrenceException\",\r\n        value: function(exceptionDate, targetStartDate, isAllDay) {\r\n            isAllDay && exceptionDate.setHours(targetStartDate.getHours(), targetStartDate.getMinutes(), targetStartDate.getSeconds(), targetStartDate.getMilliseconds());\r\n            return _date_serialization.default.serializeDate(exceptionDate, UTC_FULL_DATE_FORMAT)\r\n        }\r\n    }, {\r\n        key: \"_showRecurrenceChangeConfirm\",\r\n        value: function(isDeleted) {\r\n            var message = _message.default.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteMessage\" : \"dxScheduler-confirmRecurrenceEditMessage\");\r\n            var seriesText = _message.default.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteSeries\" : \"dxScheduler-confirmRecurrenceEditSeries\");\r\n            var occurrenceText = _message.default.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteOccurrence\" : \"dxScheduler-confirmRecurrenceEditOccurrence\");\r\n            return (0, _dialog.custom)({\r\n                messageHtml: message,\r\n                showCloseButton: true,\r\n                showTitle: true,\r\n                buttons: [{\r\n                    text: seriesText,\r\n                    onClick: function() {\r\n                        return true\r\n                    }\r\n                }, {\r\n                    text: occurrenceText,\r\n                    onClick: function() {\r\n                        return false\r\n                    }\r\n                }]\r\n            }).show()\r\n        }\r\n    }, {\r\n        key: \"_getUpdatedData\",\r\n        value: function(options) {\r\n            var target = options.data || options;\r\n            var cellData = this.getTargetCellData();\r\n            var targetAllDay = this.fire(\"getField\", \"allDay\", target);\r\n            var targetStartDate = new Date(this.fire(\"getField\", \"startDate\", target));\r\n            var targetEndDate = new Date(this.fire(\"getField\", \"endDate\", target));\r\n            var date = cellData.startDate || targetStartDate;\r\n            if (!targetStartDate || isNaN(targetStartDate)) {\r\n                targetStartDate = date\r\n            }\r\n            var targetStartTime = targetStartDate.getTime();\r\n            if (!targetEndDate || isNaN(targetEndDate)) {\r\n                targetEndDate = cellData.endDate\r\n            }\r\n            var targetEndTime = targetEndDate.getTime() || cellData.endData;\r\n            var duration = targetEndTime - targetStartTime;\r\n            if (this._workSpace.keepOriginalHours()) {\r\n                var diff = targetStartTime - _date.default.trimTime(targetStartDate).getTime();\r\n                date = new Date(_date.default.trimTime(date).getTime() + diff)\r\n            }\r\n            var updatedData = {};\r\n            var allDay = cellData.allDay;\r\n            this.fire(\"setField\", \"allDay\", updatedData, allDay);\r\n            this.fire(\"setField\", \"startDate\", updatedData, date);\r\n            var endDate = new Date(date.getTime() + duration);\r\n            if (this.appointmentTakesAllDay(target) && !updatedData.allDay && this._workSpace.supportAllDayRow()) {\r\n                endDate = this._workSpace.calculateEndDate(date)\r\n            }\r\n            if (targetAllDay && !this._workSpace.supportAllDayRow() && !this._workSpace.keepOriginalHours()) {\r\n                var dateCopy = new Date(date);\r\n                dateCopy.setHours(0);\r\n                endDate = new Date(dateCopy.getTime() + duration);\r\n                if (0 !== endDate.getHours()) {\r\n                    endDate.setHours(this._getCurrentViewOption(\"endDayHour\"))\r\n                }\r\n            }\r\n            endDate = new Date(endDate.getTime() - _utils.default.getTimezoneOffsetChangeInMs(targetStartDate, targetEndDate, date, endDate));\r\n            this.fire(\"setField\", \"endDate\", updatedData, endDate);\r\n            this._resourcesManager.setResourcesToItem(updatedData, cellData.groups);\r\n            return updatedData\r\n        }\r\n    }, {\r\n        key: \"getTargetedAppointment\",\r\n        value: function(appointment, element) {\r\n            var settings = _utils2.default.dataAccessors.getAppointmentSettings(element);\r\n            var info = _utils2.default.dataAccessors.getAppointmentInfo(element);\r\n            var appointmentIndex = (0, _renderer.default)(element).data(this._appointments._itemIndexKey());\r\n            var adapter = this.createAppointmentAdapter(appointment);\r\n            var targetedAdapter = adapter.clone();\r\n            var isRecurrenceAppointment = adapter.recurrenceRule && (0, _recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(adapter.recurrenceRule);\r\n            if (this._isAgenda() && isRecurrenceAppointment) {\r\n                var getStartDate = this.getRenderingStrategyInstance().getAppointmentDataCalculator();\r\n                var newStartDate = getStartDate((0, _renderer.default)(element), adapter.startDate).startDate;\r\n                targetedAdapter.startDate = newStartDate;\r\n                targetedAdapter.endDate = new Date(newStartDate.getTime() + adapter.duration)\r\n            } else {\r\n                if (settings) {\r\n                    targetedAdapter.startDate = info ? info.sourceAppointment.startDate : adapter.startDate;\r\n                    targetedAdapter.endDate = info ? info.sourceAppointment.endDate : adapter.endDate\r\n                }\r\n            }\r\n            var rawTargetedAppointment = targetedAdapter.source();\r\n            if (element) {\r\n                this.setTargetedAppointmentResources(rawTargetedAppointment, element, appointmentIndex)\r\n            }\r\n            return rawTargetedAppointment\r\n        }\r\n    }, {\r\n        key: \"subscribe\",\r\n        value: function(subject, action) {\r\n            this._subscribes[subject] = _uiScheduler5.default[subject] = action\r\n        }\r\n    }, {\r\n        key: \"fire\",\r\n        value: function(subject) {\r\n            var callback = this._subscribes[subject];\r\n            var args = Array.prototype.slice.call(arguments);\r\n            if (!(0, _type.isFunction)(callback)) {\r\n                throw _ui.default.Error(\"E1031\", subject)\r\n            }\r\n            return callback.apply(this, args.slice(1))\r\n        }\r\n    }, {\r\n        key: \"getTargetCellData\",\r\n        value: function() {\r\n            return this._workSpace.getDataByDroppableCell()\r\n        }\r\n    }, {\r\n        key: \"_updateAppointment\",\r\n        value: function(target, appointment, onUpdatePrevented, dragEvent) {\r\n            var updatingOptions = {\r\n                newData: appointment,\r\n                oldData: (0, _extend.extend)({}, target),\r\n                cancel: false\r\n            };\r\n            var performFailAction = function(err) {\r\n                if (onUpdatePrevented) {\r\n                    onUpdatePrevented.call(this)\r\n                }\r\n                if (err && \"Error\" === err.name) {\r\n                    throw err\r\n                }\r\n            }.bind(this);\r\n            this._actions.onAppointmentUpdating(updatingOptions);\r\n            if (dragEvent && !(0, _type.isDeferred)(dragEvent.cancel)) {\r\n                dragEvent.cancel = new _deferred.Deferred\r\n            }\r\n            return this._processActionResult(updatingOptions, function(canceled) {\r\n                var deferred = new _deferred.Deferred;\r\n                if (!canceled) {\r\n                    this._expandAllDayPanel(appointment);\r\n                    try {\r\n                        deferred = this._appointmentModel.update(target, appointment).done(function() {\r\n                            dragEvent && dragEvent.cancel.resolve(false)\r\n                        }).always(function(e) {\r\n                            this._executeActionWhenOperationIsCompleted(this._actions.onAppointmentUpdated, appointment, e)\r\n                        }.bind(this)).fail(function() {\r\n                            performFailAction()\r\n                        })\r\n                    } catch (err) {\r\n                        performFailAction(err);\r\n                        deferred.resolve()\r\n                    }\r\n                } else {\r\n                    performFailAction();\r\n                    deferred.resolve()\r\n                }\r\n                return deferred.promise()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_processActionResult\",\r\n        value: function(actionOptions, callback) {\r\n            var _this12 = this;\r\n            var deferred = new _deferred.Deferred;\r\n            var resolveCallback = function(callbackResult) {\r\n                (0, _deferred.when)((0, _deferred.fromPromise)(callbackResult)).always(deferred.resolve)\r\n            };\r\n            if ((0, _type.isPromise)(actionOptions.cancel)) {\r\n                (0, _deferred.when)((0, _deferred.fromPromise)(actionOptions.cancel)).always(function(cancel) {\r\n                    if (!(0, _type.isDefined)(cancel)) {\r\n                        cancel = \"rejected\" === actionOptions.cancel.state()\r\n                    }\r\n                    resolveCallback(callback.call(_this12, cancel))\r\n                })\r\n            } else {\r\n                resolveCallback(callback.call(this, actionOptions.cancel))\r\n            }\r\n            return deferred.promise()\r\n        }\r\n    }, {\r\n        key: \"_expandAllDayPanel\",\r\n        value: function(appointment) {\r\n            if (!this._isAllDayExpanded(this.getFilteredItems()) && this.appointmentTakesAllDay(appointment)) {\r\n                this._workSpace.option(\"allDayExpanded\", true)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_executeActionWhenOperationIsCompleted\",\r\n        value: function(action, appointment, e) {\r\n            var options = {\r\n                appointmentData: appointment\r\n            };\r\n            var isError = e && \"Error\" === e.name;\r\n            if (isError) {\r\n                options.error = e\r\n            } else {\r\n                this._appointmentPopup.isVisible() && this._appointmentPopup.hide()\r\n            }\r\n            action(options);\r\n            this._fireContentReadyAction()\r\n        }\r\n    }, {\r\n        key: \"getAppointmentPopup\",\r\n        value: function() {\r\n            return this._appointmentPopup.getPopup()\r\n        }\r\n    }, {\r\n        key: \"getUpdatedAppointment\",\r\n        value: function() {\r\n            return this._appointmentModel.getUpdatedAppointment()\r\n        }\r\n    }, {\r\n        key: \"getUpdatedAppointmentKeys\",\r\n        value: function() {\r\n            return this._appointmentModel.getUpdatedAppointmentKeys()\r\n        }\r\n    }, {\r\n        key: \"getAppointmentsInstance\",\r\n        value: function() {\r\n            return this._appointments\r\n        }\r\n    }, {\r\n        key: \"getResourceManager\",\r\n        value: function() {\r\n            return this._resourcesManager\r\n        }\r\n    }, {\r\n        key: \"getLayoutManager\",\r\n        value: function() {\r\n            return this._layoutManager\r\n        }\r\n    }, {\r\n        key: \"getRenderingStrategyInstance\",\r\n        value: function() {\r\n            return this._layoutManager.getRenderingStrategyInstance()\r\n        }\r\n    }, {\r\n        key: \"getFilteredItems\",\r\n        value: function() {\r\n            return this._filteredItems\r\n        }\r\n    }, {\r\n        key: \"getActions\",\r\n        value: function() {\r\n            return this._actions\r\n        }\r\n    }, {\r\n        key: \"appointmentTakesAllDay\",\r\n        value: function(appointment) {\r\n            return this._appointmentModel.appointmentTakesAllDay(appointment, this._getCurrentViewOption(\"startDayHour\"), this._getCurrentViewOption(\"endDayHour\"))\r\n        }\r\n    }, {\r\n        key: \"_getRecurrenceException\",\r\n        value: function(appointmentData) {\r\n            var recurrenceException = this.fire(\"getField\", \"recurrenceException\", appointmentData);\r\n            if (recurrenceException) {\r\n                var startDate = this.fire(\"getField\", \"startDate\", appointmentData);\r\n                var exceptions = recurrenceException.split(\",\");\r\n                var startDateTimeZone = this.fire(\"getField\", \"startDateTimeZone\", appointmentData);\r\n                for (var i = 0; i < exceptions.length; i++) {\r\n                    exceptions[i] = this._convertRecurrenceException(exceptions[i], startDate, startDateTimeZone)\r\n                }\r\n                recurrenceException = exceptions.join()\r\n            }\r\n            return recurrenceException\r\n        }\r\n    }, {\r\n        key: \"_convertRecurrenceException\",\r\n        value: function(exceptionString, startDate, startDateTimeZone) {\r\n            exceptionString = exceptionString.replace(/\\s/g, \"\");\r\n            var exceptionDate = _date_serialization.default.deserializeDate(exceptionString);\r\n            var convertedStartDate = this.fire(\"convertDateByTimezone\", startDate, startDateTimeZone);\r\n            var convertedExceptionDate = this.fire(\"convertDateByTimezone\", exceptionDate, startDateTimeZone);\r\n            convertedExceptionDate = _utils.default.correctRecurrenceExceptionByTimezone(convertedExceptionDate, convertedStartDate, this.option(\"timeZone\"), startDateTimeZone);\r\n            exceptionString = _date_serialization.default.serializeDate(convertedExceptionDate, FULL_DATE_FORMAT);\r\n            return exceptionString\r\n        }\r\n    }, {\r\n        key: \"dayHasAppointment\",\r\n        value: function(day, appointment, trimTime) {\r\n            var startDate = new Date(this.fire(\"getField\", \"startDate\", appointment));\r\n            var endDate = new Date(this.fire(\"getField\", \"endDate\", appointment));\r\n            var startDateTimeZone = this.fire(\"getField\", \"startDateTimeZone\", appointment);\r\n            var endDateTimeZone = this.fire(\"getField\", \"endDateTimeZone\", appointment);\r\n            startDate = this.fire(\"convertDateByTimezone\", startDate, startDateTimeZone);\r\n            endDate = this.fire(\"convertDateByTimezone\", endDate, endDateTimeZone);\r\n            if (day.getTime() === endDate.getTime()) {\r\n                return startDate.getTime() === endDate.getTime()\r\n            }\r\n            if (trimTime) {\r\n                day = _date.default.trimTime(day);\r\n                startDate = _date.default.trimTime(startDate);\r\n                endDate = _date.default.trimTime(endDate)\r\n            }\r\n            var dayTimeStamp = day.getTime();\r\n            var startDateTimeStamp = startDate.getTime();\r\n            var endDateTimeStamp = endDate.getTime();\r\n            return (0, _array.inArray)(dayTimeStamp, [startDateTimeStamp, endDateTimeStamp]) > -1 || startDateTimeStamp < dayTimeStamp && endDateTimeStamp > dayTimeStamp\r\n        }\r\n    }, {\r\n        key: \"setTargetedAppointmentResources\",\r\n        value: function(rawAppointment, element, appointmentIndex) {\r\n            var groups = this._getCurrentViewOption(\"groups\");\r\n            if (null !== groups && void 0 !== groups && groups.length) {\r\n                var resourcesSetter = this._resourcesManager._dataAccessors.setter;\r\n                var workSpace = this._workSpace;\r\n                var getGroups;\r\n                var setResourceCallback;\r\n                if (this._isAgenda()) {\r\n                    getGroups = function() {\r\n                        var apptSettings = this.getLayoutManager()._positionMap[appointmentIndex];\r\n                        return workSpace._getCellGroups(apptSettings[0].groupIndex)\r\n                    };\r\n                    setResourceCallback = function(_, group) {\r\n                        resourcesSetter[group.name](rawAppointment, group.id)\r\n                    }\r\n                } else {\r\n                    getGroups = function() {\r\n                        var setting = _utils2.default.dataAccessors.getAppointmentSettings(element) || {};\r\n                        return workSpace.getCellDataByCoordinates({\r\n                            left: setting.left,\r\n                            top: setting.top\r\n                        }).groups\r\n                    };\r\n                    setResourceCallback = function(field, value) {\r\n                        resourcesSetter[field](rawAppointment, value)\r\n                    }\r\n                }(0, _iterator.each)(getGroups.call(this), setResourceCallback)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getStartViewDate\",\r\n        value: function() {\r\n            return this._workSpace.getStartViewDate()\r\n        }\r\n    }, {\r\n        key: \"getEndViewDate\",\r\n        value: function() {\r\n            return this._workSpace.getEndViewDate()\r\n        }\r\n    }, {\r\n        key: \"showAppointmentPopup\",\r\n        value: function(rawAppointment, createNewAppointment, rawTargetedAppointment) {\r\n            var _this13 = this;\r\n            var appointment = this.createAppointmentAdapter(rawTargetedAppointment || rawAppointment);\r\n            var newTargetedAppointment = (0, _extend.extend)({}, rawAppointment, rawTargetedAppointment);\r\n            this._checkRecurringAppointment(rawAppointment, newTargetedAppointment, appointment.startDate, function() {\r\n                if (createNewAppointment || (0, _type.isEmptyObject)(rawAppointment)) {\r\n                    delete _this13._editAppointmentData;\r\n                    _this13._editing.allowAdding && _this13._appointmentPopup.show(rawAppointment, true)\r\n                } else {\r\n                    _this13._editAppointmentData = rawAppointment;\r\n                    _this13._appointmentPopup.show(rawAppointment, _this13._editing.allowUpdating)\r\n                }\r\n            }, false, true)\r\n        }\r\n    }, {\r\n        key: \"hideAppointmentPopup\",\r\n        value: function(saveChanges) {\r\n            if (this._appointmentPopup && this._appointmentPopup.isVisible()) {\r\n                saveChanges && this._appointmentPopup.saveChanges();\r\n                this._appointmentPopup.hide()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"showAppointmentTooltip\",\r\n        value: function(appointment, target, targetedAppointment) {\r\n            if (appointment) {\r\n                var info = new _dataStructures.AppointmentTooltipInfo(appointment, targetedAppointment, this._appointments._tryGetAppointmentColor(target));\r\n                this.showAppointmentTooltipCore(target, [info])\r\n            }\r\n        }\r\n    }, {\r\n        key: \"showAppointmentTooltipCore\",\r\n        value: function(target, data, options) {\r\n            if (this._appointmentTooltip.isAlreadyShown(target)) {\r\n                this.hideAppointmentTooltip()\r\n            } else {\r\n                this._appointmentTooltip.show(target, data, (0, _extend.extend)(this._getExtraAppointmentTooltipOptions(), options))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"hideAppointmentTooltip\",\r\n        value: function() {\r\n            this._appointmentTooltip && this._appointmentTooltip.hide()\r\n        }\r\n    }, {\r\n        key: \"scrollToTime\",\r\n        value: function(hours, minutes, date) {\r\n            this._workSpace.scrollToTime(hours, minutes, date)\r\n        }\r\n    }, {\r\n        key: \"scrollTo\",\r\n        value: function(date, groups, allDay) {\r\n            this._workSpace.scrollTo(date, groups, allDay)\r\n        }\r\n    }, {\r\n        key: \"addAppointment\",\r\n        value: function(appointment) {\r\n            var _this14 = this;\r\n            var adapter = this.createAppointmentAdapter(appointment);\r\n            adapter.text = adapter.text || \"\";\r\n            var serializedAppointment = adapter.source(true);\r\n            var addingOptions = {\r\n                appointmentData: serializedAppointment,\r\n                cancel: false\r\n            };\r\n            this._actions.onAppointmentAdding(addingOptions);\r\n            return this._processActionResult(addingOptions, function(canceled) {\r\n                if (canceled) {\r\n                    return (new _deferred.Deferred).resolve()\r\n                }\r\n                _this14._expandAllDayPanel(serializedAppointment);\r\n                return _this14._appointmentModel.add(serializedAppointment).always(function(e) {\r\n                    return _this14._executeActionWhenOperationIsCompleted(_this14._actions.onAppointmentAdded, serializedAppointment, e)\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"updateAppointment\",\r\n        value: function(target, appointment) {\r\n            return this._updateAppointment(target, appointment)\r\n        }\r\n    }, {\r\n        key: \"deleteAppointment\",\r\n        value: function(appointment) {\r\n            var deletingOptions = {\r\n                appointmentData: appointment,\r\n                cancel: false\r\n            };\r\n            this._actions.onAppointmentDeleting(deletingOptions);\r\n            this._processActionResult(deletingOptions, function(canceled) {\r\n                if (!canceled) {\r\n                    this._appointmentModel.remove(appointment).always(function(e) {\r\n                        this._executeActionWhenOperationIsCompleted(this._actions.onAppointmentDeleted, appointment, e)\r\n                    }.bind(this))\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"focus\",\r\n        value: function() {\r\n            if (this._editAppointmentData) {\r\n                this._appointments.focus()\r\n            } else {\r\n                this._workSpace.focus()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getFirstDayOfWeek\",\r\n        value: function() {\r\n            return (0, _type.isDefined)(this.option(\"firstDayOfWeek\")) ? this.option(\"firstDayOfWeek\") : _date2.default.firstDayOfWeekIndex()\r\n        }\r\n    }, {\r\n        key: \"createAppointmentAdapter\",\r\n        value: function(rawAppointment) {\r\n            var _this15 = this;\r\n            var options = {\r\n                getField: function(rawAppointment, property) {\r\n                    return _this15.fire(\"getField\", property, rawAppointment)\r\n                },\r\n                setField: function(rawAppointment, property, value) {\r\n                    return _this15.fire(\"setField\", property, rawAppointment, value)\r\n                },\r\n                getTimeZoneCalculator: function() {\r\n                    return _this15.timeZoneCalculator\r\n                }\r\n            };\r\n            return new _appointmentAdapter.default(rawAppointment, options)\r\n        }\r\n    }]);\r\n    return Scheduler\r\n}(_ui2.default);\r\nScheduler.include(_data_helper.default);\r\n(0, _component_registrator.default)(\"dxScheduler\", Scheduler);\r\nvar _default = Scheduler;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toast.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../core/utils/ready_callbacks\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _overlay = _interopRequireDefault(require(\"./overlay\"));\r\nvar _themes = require(\"./themes\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar ready = _ready_callbacks.default.add;\r\nvar TOAST_CLASS = \"dx-toast\";\r\nvar TOAST_CLASS_PREFIX = TOAST_CLASS + \"-\";\r\nvar TOAST_WRAPPER_CLASS = TOAST_CLASS_PREFIX + \"wrapper\";\r\nvar TOAST_CONTENT_CLASS = TOAST_CLASS_PREFIX + \"content\";\r\nvar TOAST_MESSAGE_CLASS = TOAST_CLASS_PREFIX + \"message\";\r\nvar TOAST_ICON_CLASS = TOAST_CLASS_PREFIX + \"icon\";\r\nvar WIDGET_NAME = \"dxToast\";\r\nvar toastTypes = [\"info\", \"warning\", \"error\", \"success\"];\r\nvar TOAST_STACK = [];\r\nvar FIRST_Z_INDEX_OFFSET = 8e3;\r\nvar visibleToastInstance = null;\r\nvar POSITION_ALIASES = {\r\n    top: {\r\n        my: \"top\",\r\n        at: \"top\",\r\n        of: null,\r\n        offset: \"0 0\"\r\n    },\r\n    bottom: {\r\n        my: \"bottom\",\r\n        at: \"bottom\",\r\n        of: null,\r\n        offset: \"0 -20\"\r\n    },\r\n    center: {\r\n        my: \"center\",\r\n        at: \"center\",\r\n        of: null,\r\n        offset: \"0 0\"\r\n    },\r\n    right: {\r\n        my: \"center right\",\r\n        at: \"center right\",\r\n        of: null,\r\n        offset: \"0 0\"\r\n    },\r\n    left: {\r\n        my: \"center left\",\r\n        at: \"center left\",\r\n        of: null,\r\n        offset: \"0 0\"\r\n    }\r\n};\r\nready(function() {\r\n    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), _pointer.default.down, function(e) {\r\n        for (var i = TOAST_STACK.length - 1; i >= 0; i--) {\r\n            if (!TOAST_STACK[i]._proxiedDocumentDownHandler(e)) {\r\n                return\r\n            }\r\n        }\r\n    })\r\n});\r\nvar Toast = _overlay.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            message: \"\",\r\n            type: \"info\",\r\n            displayTime: 2e3,\r\n            position: \"bottom center\",\r\n            animation: {\r\n                show: {\r\n                    type: \"fade\",\r\n                    duration: 400,\r\n                    from: 0,\r\n                    to: 1\r\n                },\r\n                hide: {\r\n                    type: \"fade\",\r\n                    duration: 400,\r\n                    to: 0\r\n                }\r\n            },\r\n            shading: false,\r\n            height: \"auto\",\r\n            hideTopOverlayHandler: null,\r\n            closeOnSwipe: true,\r\n            closeOnClick: false,\r\n            resizeEnabled: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"android\"\r\n            },\r\n            options: {\r\n                closeOnOutsideClick: true,\r\n                width: \"auto\",\r\n                position: {\r\n                    at: \"bottom left\",\r\n                    my: \"bottom left\",\r\n                    offset: \"20 -20\"\r\n                },\r\n                animation: {\r\n                    show: {\r\n                        type: \"slide\",\r\n                        duration: 200,\r\n                        from: {\r\n                            position: {\r\n                                my: \"top\",\r\n                                at: \"bottom\",\r\n                                of: window\r\n                            }\r\n                        }\r\n                    },\r\n                    hide: {\r\n                        type: \"slide\",\r\n                        duration: 200,\r\n                        to: {\r\n                            position: {\r\n                                my: \"top\",\r\n                                at: \"bottom\",\r\n                                of: window\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            device: function(_device) {\r\n                var isPhone = \"phone\" === _device.deviceType;\r\n                var isAndroid = \"android\" === _device.platform;\r\n                return isPhone && isAndroid\r\n            },\r\n            options: {\r\n                width: function() {\r\n                    var _window$visualViewpor;\r\n                    return (null === window || void 0 === window ? void 0 : null === (_window$visualViewpor = window.visualViewport) || void 0 === _window$visualViewpor ? void 0 : _window$visualViewpor.width) || (0, _renderer.default)(window).width()\r\n                },\r\n                position: {\r\n                    at: \"bottom center\",\r\n                    my: \"bottom center\",\r\n                    offset: \"0 0\"\r\n                }\r\n            }\r\n        }, {\r\n            device: function(_device2) {\r\n                return \"phone\" === _device2.deviceType\r\n            },\r\n            options: {\r\n                width: function() {\r\n                    var _window$visualViewpor2;\r\n                    return (null === window || void 0 === window ? void 0 : null === (_window$visualViewpor2 = window.visualViewport) || void 0 === _window$visualViewpor2 ? void 0 : _window$visualViewpor2.width) || (0, _renderer.default)(window).width()\r\n                }\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                minWidth: 344,\r\n                maxWidth: 568,\r\n                displayTime: 4e3\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._posStringToObject()\r\n    },\r\n    _renderContentImpl: function() {\r\n        if (this.option(\"message\")) {\r\n            this._message = (0, _renderer.default)(\"<div>\").addClass(TOAST_MESSAGE_CLASS).text(this.option(\"message\")).appendTo(this.$content())\r\n        }\r\n        this.setAria(\"role\", \"alert\", this._message);\r\n        if ((0, _array.inArray)(this.option(\"type\").toLowerCase(), toastTypes) > -1) {\r\n            this.$content().prepend((0, _renderer.default)(\"<div>\").addClass(TOAST_ICON_CLASS))\r\n        }\r\n        this.callBase()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.$element().addClass(TOAST_CLASS);\r\n        this._wrapper().addClass(TOAST_WRAPPER_CLASS);\r\n        this._$content.addClass(TOAST_CLASS_PREFIX + String(this.option(\"type\")).toLowerCase());\r\n        this.$content().addClass(TOAST_CONTENT_CLASS);\r\n        this._toggleCloseEvents(\"Swipe\");\r\n        this._toggleCloseEvents(\"Click\")\r\n    },\r\n    _renderScrollTerminator: _common.noop,\r\n    _toggleCloseEvents: function(event) {\r\n        var dxEvent = \"dx\" + event.toLowerCase();\r\n        _events_engine.default.off(this._$content, dxEvent);\r\n        this.option(\"closeOn\" + event) && _events_engine.default.on(this._$content, dxEvent, this.hide.bind(this))\r\n    },\r\n    _posStringToObject: function() {\r\n        if (!(0, _type.isString)(this.option(\"position\"))) {\r\n            return\r\n        }\r\n        var verticalPosition = this.option(\"position\").split(\" \")[0];\r\n        var horizontalPosition = this.option(\"position\").split(\" \")[1];\r\n        this.option(\"position\", (0, _extend.extend)({}, POSITION_ALIASES[verticalPosition]));\r\n        switch (horizontalPosition) {\r\n            case \"center\":\r\n            case \"left\":\r\n            case \"right\":\r\n                this.option(\"position\").at += \" \" + horizontalPosition;\r\n                this.option(\"position\").my += \" \" + horizontalPosition\r\n        }\r\n    },\r\n    _show: function() {\r\n        if (visibleToastInstance && visibleToastInstance !== this) {\r\n            clearTimeout(visibleToastInstance._hideTimeout);\r\n            visibleToastInstance.hide()\r\n        }\r\n        visibleToastInstance = this;\r\n        return this.callBase.apply(this, arguments).done(function() {\r\n            clearTimeout(this._hideTimeout);\r\n            this._hideTimeout = setTimeout(this.hide.bind(this), this.option(\"displayTime\"))\r\n        }.bind(this))\r\n    },\r\n    _hide: function() {\r\n        visibleToastInstance = null;\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    _overlayStack: function() {\r\n        return TOAST_STACK\r\n    },\r\n    _zIndexInitValue: function() {\r\n        return this.callBase() + FIRST_Z_INDEX_OFFSET\r\n    },\r\n    _dispose: function() {\r\n        clearTimeout(this._hideTimeout);\r\n        visibleToastInstance = null;\r\n        this.callBase()\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"type\":\r\n                this._$content.removeClass(TOAST_CLASS_PREFIX + args.previousValue);\r\n                this._$content.addClass(TOAST_CLASS_PREFIX + String(args.value).toLowerCase());\r\n                break;\r\n            case \"message\":\r\n                if (this._message) {\r\n                    this._message.text(args.value)\r\n                }\r\n                break;\r\n            case \"closeOnSwipe\":\r\n                this._toggleCloseEvents(\"Swipe\");\r\n                break;\r\n            case \"closeOnClick\":\r\n                this._toggleCloseEvents(\"Click\");\r\n                break;\r\n            case \"displayTime\":\r\n            case \"position\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(WIDGET_NAME, Toast);\r\nvar _default = Toast;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/range_selector.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _range_selector = _interopRequireDefault(require(\"./range_selector/range_selector\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _range_selector.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/vector_map/projection.main.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.projection = exports.Projection = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _event_emitter = require(\"./event_emitter\");\r\n\r\nfunction _slicedToArray(arr, i) {\r\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n    if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n        return\r\n    }\r\n    var _arr = [];\r\n    var _n = true;\r\n    var _d = false;\r\n    var _e = void 0;\r\n    try {\r\n        for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n            _arr.push(_s.value);\r\n            if (i && _arr.length === i) {\r\n                break\r\n            }\r\n        }\r\n    } catch (err) {\r\n        _d = true;\r\n        _e = err\r\n    } finally {\r\n        try {\r\n            if (!_n && null != _i.return) {\r\n                _i.return()\r\n            }\r\n        } finally {\r\n            if (_d) {\r\n                throw _e\r\n            }\r\n        }\r\n    }\r\n    return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return arr\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar _Number = Number;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _abs = Math.abs;\r\nvar _round = Math.round;\r\nvar _ln = Math.log;\r\nvar _pow = Math.pow;\r\nvar TWO_TO_LN2 = 2 / Math.LN2;\r\nvar MIN_BOUNDS_RANGE = 1 / 3600 / 180 / 10;\r\nvar DEFAULT_MIN_ZOOM = 1;\r\nvar DEFAULT_MAX_ZOOM = 256;\r\nvar DEFAULT_CENTER = [NaN, NaN];\r\nvar DEFAULT_ENGINE_NAME = \"mercator\";\r\n\r\nfunction floatsEqual(f1, f2) {\r\n    return _abs(f1 - f2) < 1e-8\r\n}\r\n\r\nfunction arraysEqual(a1, a2) {\r\n    return floatsEqual(a1[0], a2[0]) && floatsEqual(a1[1], a2[1])\r\n}\r\n\r\nfunction parseAndClamp(value, minValue, maxValue, defaultValue) {\r\n    var val = _Number(value);\r\n    return isFinite(val) ? _min(_max(val, minValue), maxValue) : defaultValue\r\n}\r\n\r\nfunction parseAndClampArray(value, minValue, maxValue, defaultValue) {\r\n    return [parseAndClamp(value[0], minValue[0], maxValue[0], defaultValue[0]), parseAndClamp(value[1], minValue[1], maxValue[1], defaultValue[1])]\r\n}\r\n\r\nfunction getEngine(engine) {\r\n    return engine instanceof Engine && engine || projection.get(engine) || projection(engine) || projection.get(DEFAULT_ENGINE_NAME)\r\n}\r\nvar Projection = function(parameters) {\r\n    var that = this;\r\n    that._initEvents();\r\n    that._params = parameters;\r\n    that._engine = getEngine();\r\n    that._center = that._engine.center();\r\n    that._adjustCenter()\r\n};\r\nexports.Projection = Projection;\r\nProjection.prototype = {\r\n    constructor: Projection,\r\n    _minZoom: DEFAULT_MIN_ZOOM,\r\n    _maxZoom: DEFAULT_MAX_ZOOM,\r\n    _zoom: DEFAULT_MIN_ZOOM,\r\n    _center: DEFAULT_CENTER,\r\n    _canvas: {},\r\n    _scale: [],\r\n    dispose: function() {\r\n        this._disposeEvents()\r\n    },\r\n    setEngine: function(value) {\r\n        var that = this;\r\n        var engine = getEngine(value);\r\n        if (that._engine !== engine) {\r\n            that._engine = engine;\r\n            that._fire(\"engine\");\r\n            if (that._changeCenter(engine.center())) {\r\n                that._triggerCenterChanged()\r\n            }\r\n            if (that._changeZoom(that._minZoom)) {\r\n                that._triggerZoomChanged()\r\n            }\r\n            that._adjustCenter();\r\n            that._setupScreen()\r\n        }\r\n    },\r\n    setBounds: function(bounds) {\r\n        if (void 0 !== bounds) {\r\n            this.setEngine(this._engine.original().bounds(bounds))\r\n        }\r\n    },\r\n    _setupScreen: function() {\r\n        var that = this;\r\n        var canvas = that._canvas;\r\n        var width = canvas.width;\r\n        var height = canvas.height;\r\n        var engine = that._engine;\r\n        var aspectRatio = engine.ar();\r\n        that._x0 = canvas.left + width / 2;\r\n        that._y0 = canvas.top + height / 2;\r\n        var min = [that.project([engine.min()[0], 0])[0], that.project([0, engine.min()[1]])[1]];\r\n        var max = [that.project([engine.max()[0], 0])[0], that.project([0, engine.max()[1]])[1]];\r\n        var screenAR = width / height;\r\n        var boundsAR = _abs(max[0] - min[0]) / _abs(max[1] - min[1]);\r\n        var correction;\r\n        if (isNaN(boundsAR) || 0 === boundsAR || _min(screenAR, aspectRatio) <= aspectRatio * boundsAR && aspectRatio * boundsAR <= _max(screenAR, aspectRatio)) {\r\n            correction = 1\r\n        } else {\r\n            correction = boundsAR > 1 ? boundsAR : 1 / boundsAR\r\n        }\r\n        if (aspectRatio * boundsAR >= screenAR) {\r\n            that._xRadius = width / 2 / correction;\r\n            that._yRadius = width / 2 / (aspectRatio * correction)\r\n        } else {\r\n            that._xRadius = height / 2 * (aspectRatio / correction);\r\n            that._yRadius = height / 2 / correction\r\n        }\r\n        that._fire(\"screen\")\r\n    },\r\n    setSize: function(canvas) {\r\n        this._canvas = canvas;\r\n        this._setupScreen()\r\n    },\r\n    getCanvas: function() {\r\n        return this._canvas\r\n    },\r\n    _toScreen: function(coordinates) {\r\n        return [this._x0 + this._xRadius * coordinates[0], this._y0 + this._yRadius * coordinates[1]]\r\n    },\r\n    _fromScreen: function(coordinates) {\r\n        return [(coordinates[0] - this._x0) / this._xRadius, (coordinates[1] - this._y0) / this._yRadius]\r\n    },\r\n    _toTransformed: function(coordinates) {\r\n        return [coordinates[0] * this._zoom + this._xCenter, coordinates[1] * this._zoom + this._yCenter]\r\n    },\r\n    _toTransformedFast: function(coordinates) {\r\n        return [coordinates[0] * this._zoom, coordinates[1] * this._zoom]\r\n    },\r\n    _fromTransformed: function(coordinates) {\r\n        return [(coordinates[0] - this._xCenter) / this._zoom, (coordinates[1] - this._yCenter) / this._zoom]\r\n    },\r\n    _adjustCenter: function() {\r\n        var that = this;\r\n        var center = that._engine.project(that._center);\r\n        that._xCenter = -center[0] * that._zoom || 0;\r\n        that._yCenter = -center[1] * that._zoom || 0\r\n    },\r\n    project: function(coordinates) {\r\n        return this._engine.project(coordinates)\r\n    },\r\n    transform: function(coordinates) {\r\n        return this._toScreen(this._toTransformedFast(coordinates))\r\n    },\r\n    isInvertible: function() {\r\n        return this._engine.isInvertible()\r\n    },\r\n    getSquareSize: function(size) {\r\n        return [size[0] * this._zoom * this._xRadius, size[1] * this._zoom * this._yRadius]\r\n    },\r\n    getZoom: function() {\r\n        return this._zoom\r\n    },\r\n    _changeZoom: function(value) {\r\n        var that = this;\r\n        var oldZoom = that._zoom;\r\n        var newZoom = that._zoom = parseAndClamp(value, that._minZoom, that._maxZoom, that._minZoom);\r\n        var isChanged = !floatsEqual(oldZoom, newZoom);\r\n        if (isChanged) {\r\n            that._adjustCenter();\r\n            that._fire(\"zoom\")\r\n        }\r\n        return isChanged\r\n    },\r\n    setZoom: function(value) {\r\n        if (this._engine.isInvertible() && this._changeZoom(value)) {\r\n            this._triggerZoomChanged()\r\n        }\r\n    },\r\n    getScaledZoom: function() {\r\n        return _round((this._scale.length - 1) * _ln(this._zoom) / _ln(this._maxZoom))\r\n    },\r\n    setScaledZoom: function(scaledZoom) {\r\n        this.setZoom(this._scale[_round(scaledZoom)])\r\n    },\r\n    changeScaledZoom: function(deltaZoom) {\r\n        this.setZoom(this._scale[_max(_min(_round(this.getScaledZoom() + deltaZoom), this._scale.length - 1), 0)])\r\n    },\r\n    getZoomScalePartition: function() {\r\n        return this._scale.length - 1\r\n    },\r\n    _setupScaling: function() {\r\n        var that = this;\r\n        var k = _max(_round(TWO_TO_LN2 * _ln(that._maxZoom)), 4);\r\n        var step = _pow(that._maxZoom, 1 / k);\r\n        var zoom = that._minZoom;\r\n        that._scale = [zoom];\r\n        for (var i = 1; i <= k; ++i) {\r\n            that._scale.push(zoom *= step)\r\n        }\r\n    },\r\n    setMaxZoom: function(maxZoom) {\r\n        var that = this;\r\n        that._minZoom = DEFAULT_MIN_ZOOM;\r\n        that._maxZoom = parseAndClamp(maxZoom, that._minZoom, _Number.MAX_VALUE, DEFAULT_MAX_ZOOM);\r\n        that._setupScaling();\r\n        if (that._zoom > that._maxZoom) {\r\n            that.setZoom(that._maxZoom)\r\n        }\r\n        that._fire(\"max-zoom\")\r\n    },\r\n    getCenter: function() {\r\n        return this._center.slice()\r\n    },\r\n    setCenter: function(value) {\r\n        if (this._engine.isInvertible() && this._changeCenter(value || [])) {\r\n            this._triggerCenterChanged()\r\n        }\r\n    },\r\n    _changeCenter: function(value) {\r\n        var that = this;\r\n        var engine = that._engine;\r\n        var oldCenter = that._center;\r\n        var newCenter = that._center = parseAndClampArray(value, engine.min(), engine.max(), engine.center());\r\n        var isChanged = !arraysEqual(oldCenter, newCenter);\r\n        if (isChanged) {\r\n            that._adjustCenter();\r\n            that._fire(\"center\")\r\n        }\r\n        return isChanged\r\n    },\r\n    _triggerCenterChanged: function() {\r\n        this._params.centerChanged(this.getCenter())\r\n    },\r\n    _triggerZoomChanged: function() {\r\n        this._params.zoomChanged(this.getZoom())\r\n    },\r\n    setCenterByPoint: function(coordinates, screenPosition) {\r\n        var that = this;\r\n        var p = that._engine.project(coordinates);\r\n        var q = that._fromScreen(screenPosition);\r\n        that.setCenter(that._engine.unproject([-q[0] / that._zoom + p[0], -q[1] / that._zoom + p[1]]))\r\n    },\r\n    beginMoveCenter: function() {\r\n        if (this._engine.isInvertible()) {\r\n            this._moveCenter = this._center\r\n        }\r\n    },\r\n    endMoveCenter: function() {\r\n        var that = this;\r\n        if (that._moveCenter) {\r\n            if (!arraysEqual(that._moveCenter, that._center)) {\r\n                that._triggerCenterChanged()\r\n            }\r\n            that._moveCenter = null\r\n        }\r\n    },\r\n    moveCenter: function(shift) {\r\n        var that = this;\r\n        if (that._moveCenter) {\r\n            var current = that.toScreenPoint(that._center);\r\n            that._changeCenter(that.fromScreenPoint([current[0] + shift[0], current[1] + shift[1]]))\r\n        }\r\n    },\r\n    getViewport: function() {\r\n        var that = this;\r\n        var unproject = that._engine.unproject;\r\n        var lt = unproject(that._fromTransformed([-1, -1]));\r\n        var lb = unproject(that._fromTransformed([-1, 1]));\r\n        var rt = unproject(that._fromTransformed([1, -1]));\r\n        var rb = unproject(that._fromTransformed([1, 1]));\r\n        var minMax = findMinMax([selectFarthestPoint(lt[0], lb[0], rt[0], rb[0]), selectFarthestPoint(lt[1], rt[1], lb[1], rb[1])], [selectFarthestPoint(rt[0], rb[0], lt[0], lb[0]), selectFarthestPoint(lb[1], rb[1], lt[1], rt[1])]);\r\n        return [].concat(minMax.min, minMax.max)\r\n    },\r\n    setViewport: function(viewport) {\r\n        var engine = this._engine;\r\n        var data = viewport ? getZoomAndCenterFromViewport(engine.project, engine.unproject, viewport) : [this._minZoom, engine.center()];\r\n        this.setZoom(data[0]);\r\n        this.setCenter(data[1])\r\n    },\r\n    getTransform: function() {\r\n        return {\r\n            translateX: this._xCenter * this._xRadius,\r\n            translateY: this._yCenter * this._yRadius\r\n        }\r\n    },\r\n    fromScreenPoint: function(coordinates) {\r\n        return this._engine.unproject(this._fromTransformed(this._fromScreen(coordinates)))\r\n    },\r\n    toScreenPoint: function(coordinates) {\r\n        return this._toScreen(this._toTransformed(this._engine.project(coordinates)))\r\n    },\r\n    _eventNames: [\"engine\", \"screen\", \"center\", \"zoom\", \"max-zoom\"]\r\n};\r\n(0, _event_emitter.makeEventEmitter)(Projection);\r\n\r\nfunction selectFarthestPoint(point1, point2, basePoint1, basePoint2) {\r\n    var basePoint = (basePoint1 + basePoint2) / 2;\r\n    return _abs(point1 - basePoint) > _abs(point2 - basePoint) ? point1 : point2\r\n}\r\n\r\nfunction selectClosestPoint(point1, point2, basePoint1, basePoint2) {\r\n    var basePoint = (basePoint1 + basePoint2) / 2;\r\n    return _abs(point1 - basePoint) < _abs(point2 - basePoint) ? point1 : point2\r\n}\r\n\r\nfunction getZoomAndCenterFromViewport(project, unproject, viewport) {\r\n    var lt = project([viewport[0], viewport[3]]);\r\n    var lb = project([viewport[0], viewport[1]]);\r\n    var rt = project([viewport[2], viewport[3]]);\r\n    var rb = project([viewport[2], viewport[1]]);\r\n    var l = selectClosestPoint(lt[0], lb[0], rt[0], rb[0]);\r\n    var r = selectClosestPoint(rt[0], rb[0], lt[0], lb[0]);\r\n    var t = selectClosestPoint(lt[1], rt[1], lb[1], rb[1]);\r\n    var b = selectClosestPoint(lb[1], rb[1], lt[1], rt[1]);\r\n    return [2 / _max(_abs(l - r), _abs(t - b)), unproject([(l + r) / 2, (t + b) / 2])]\r\n}\r\n\r\nfunction setMinMax(engine, p1, p2) {\r\n    var _findMinMax = findMinMax(p1, p2),\r\n        min = _findMinMax.min,\r\n        max = _findMinMax.max;\r\n    engine.min = returnArray(min);\r\n    engine.max = returnArray(max)\r\n}\r\nvar Engine = function() {\r\n    function Engine(parameters) {\r\n        _classCallCheck(this, Engine);\r\n        var that = this;\r\n        var project = createProjectMethod(parameters.to);\r\n        var unproject = parameters.from ? createUnprojectMethod(parameters.from) : returnValue(DEFAULT_CENTER);\r\n        that.project = project;\r\n        that.unproject = unproject;\r\n        that.original = returnValue(that);\r\n        that.source = function() {\r\n            return (0, _extend.extend)({}, parameters)\r\n        };\r\n        that.isInvertible = returnValue(!!parameters.from);\r\n        that.ar = returnValue(parameters.aspectRatio > 0 ? _Number(parameters.aspectRatio) : 1);\r\n        that.center = returnArray(unproject([0, 0]));\r\n        setMinMax(that, [unproject([-1, 0])[0], unproject([0, 1])[1]], [unproject([1, 0])[0], unproject([0, -1])[1]])\r\n    }\r\n    _createClass(Engine, [{\r\n        key: \"aspectRatio\",\r\n        value: function(_aspectRatio) {\r\n            var engine = new Engine((0, _extend.extend)(this.source(), {\r\n                aspectRatio: _aspectRatio\r\n            }));\r\n            engine.original = this.original;\r\n            engine.min = this.min;\r\n            engine.max = this.max;\r\n            return engine\r\n        }\r\n    }, {\r\n        key: \"bounds\",\r\n        value: function(_bounds) {\r\n            _bounds = _bounds || [];\r\n            var parameters = this.source();\r\n            var min = this.min();\r\n            var max = this.max();\r\n            var b1 = parseAndClampArray([_bounds[0], _bounds[1]], min, max, min);\r\n            var b2 = parseAndClampArray([_bounds[2], _bounds[3]], min, max, max);\r\n            var p1 = parameters.to(b1);\r\n            var p2 = parameters.to(b2);\r\n            var delta = _min(_abs(p2[0] - p1[0]) > MIN_BOUNDS_RANGE ? _abs(p2[0] - p1[0]) : 2, _abs(p2[1] - p1[1]) > MIN_BOUNDS_RANGE ? _abs(p2[1] - p1[1]) : 2);\r\n            if (delta < 2) {\r\n                (0, _extend.extend)(parameters, createProjectUnprojectMethods(parameters.to, parameters.from, p1, p2, delta))\r\n            }\r\n            var engine = new Engine(parameters);\r\n            engine.original = this.original;\r\n            setMinMax(engine, b1, b2);\r\n            return engine\r\n        }\r\n    }]);\r\n    return Engine\r\n}();\r\n\r\nfunction invertVerticalAxis(pair) {\r\n    return [pair[0], -pair[1]]\r\n}\r\n\r\nfunction createProjectMethod(method) {\r\n    return function(arg) {\r\n        return invertVerticalAxis(method(arg))\r\n    }\r\n}\r\n\r\nfunction createUnprojectMethod(method) {\r\n    return function(arg) {\r\n        return method(invertVerticalAxis(arg))\r\n    }\r\n}\r\n\r\nfunction returnValue(value) {\r\n    return function() {\r\n        return value\r\n    }\r\n}\r\n\r\nfunction returnArray(value) {\r\n    return function() {\r\n        return value.slice()\r\n    }\r\n}\r\n\r\nfunction findMinMax(p1, p2) {\r\n    return {\r\n        min: [_min(p1[0], p2[0]), _min(p1[1], p2[1])],\r\n        max: [_max(p1[0], p2[0]), _max(p1[1], p2[1])]\r\n    }\r\n}\r\nvar projection = function(parameters) {\r\n    return parameters && parameters.to ? new Engine(parameters) : null\r\n};\r\nexports.projection = projection;\r\nvar projectionsCache = {};\r\nprojection.get = function(name) {\r\n    return projectionsCache[name] || null\r\n};\r\nprojection.add = function(name, engine) {\r\n    engine = engine instanceof Engine && engine || projection(engine);\r\n    if (!projectionsCache[name] && engine) {\r\n        projectionsCache[name] = engine\r\n    }\r\n    return projection\r\n};\r\n\r\nfunction createProjectUnprojectMethods(project, unproject, p1, p2, delta) {\r\n    var x0 = (p1[0] + p2[0]) / 2 - delta / 2;\r\n    var y0 = (p1[1] + p2[1]) / 2 - delta / 2;\r\n    var k = 2 / delta;\r\n    return {\r\n        to: function(coordinates) {\r\n            var _project = project(coordinates),\r\n                _project2 = _slicedToArray(_project, 2),\r\n                p0 = _project2[0],\r\n                p1 = _project2[1];\r\n            return [-1 + (p0 - x0) * k, -1 + (p1 - y0) * k]\r\n        },\r\n        from: function(coordinates) {\r\n            return unproject([x0 + (coordinates[0] + 1) / k, y0 + (coordinates[1] + 1) / k])\r\n        }\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (viz/series/scatter_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _extend3 = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range_data_calculator = _interopRequireDefault(require(\"./helpers/range_data_calculator\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar math = Math;\r\nvar _abs = math.abs;\r\nvar _sqrt = math.sqrt;\r\nvar _max = math.max;\r\nvar DEFAULT_TRACKER_WIDTH = 12;\r\nvar DEFAULT_DURATION = 400;\r\nvar HIGH_ERROR = \"highError\";\r\nvar LOW_ERROR = \"lowError\";\r\nvar VARIANCE = \"variance\";\r\nvar STANDARD_DEVIATION = \"stddeviation\";\r\nvar STANDARD_ERROR = \"stderror\";\r\nvar PERCENT = \"percent\";\r\nvar FIXED = \"fixed\";\r\nvar UNDEFINED = \"undefined\";\r\nvar DISCRETE = \"discrete\";\r\nvar LOGARITHMIC = \"logarithmic\";\r\nvar DATETIME = \"datetime\";\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\n\r\nfunction sum(array) {\r\n    var result = 0;\r\n    (0, _iterator.each)(array, function(_, value) {\r\n        result += value\r\n    });\r\n    return result\r\n}\r\n\r\nfunction isErrorBarTypeCorrect(type) {\r\n    return (0, _array.inArray)(type, [FIXED, PERCENT, VARIANCE, STANDARD_DEVIATION, STANDARD_ERROR]) !== -1\r\n}\r\n\r\nfunction variance(array, expectedValue) {\r\n    return sum((0, _utils.map)(array, function(value) {\r\n        return (value - expectedValue) * (value - expectedValue)\r\n    })) / array.length\r\n}\r\n\r\nfunction calculateAvgErrorBars(result, data, series) {\r\n    var errorBarsOptions = series.getOptions().valueErrorBar;\r\n    var valueField = series.getValueFields()[0];\r\n    var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n    var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n    if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {\r\n        var fusionData = data.reduce(function(result, item) {\r\n            if ((0, _type.isDefined)(item[lowValueField])) {\r\n                result[0] += item[valueField] - item[lowValueField];\r\n                result[1]++\r\n            }\r\n            if ((0, _type.isDefined)(item[highValueField])) {\r\n                result[2] += item[highValueField] - item[valueField];\r\n                result[3]++\r\n            }\r\n            return result\r\n        }, [0, 0, 0, 0]);\r\n        if (fusionData[1]) {\r\n            result[lowValueField] = result[valueField] - fusionData[0] / fusionData[1]\r\n        }\r\n        if (fusionData[2]) {\r\n            result[highValueField] = result[valueField] + fusionData[2] / fusionData[3]\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction calculateSumErrorBars(result, data, series) {\r\n    var errorBarsOptions = series.getOptions().valueErrorBar;\r\n    var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n    var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n    if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {\r\n        result[lowValueField] = 0;\r\n        result[highValueField] = 0;\r\n        result = data.reduce(function(result, item) {\r\n            result[lowValueField] += item[lowValueField];\r\n            result[highValueField] += item[highValueField];\r\n            return result\r\n        }, result)\r\n    }\r\n    return result\r\n}\r\n\r\nfunction getMinMaxAggregator(compare) {\r\n    return function(_ref, series) {\r\n        var intervalStart = _ref.intervalStart,\r\n            data = _ref.data;\r\n        var valueField = series.getValueFields()[0];\r\n        var targetData = data[0];\r\n        targetData = data.reduce(function(result, item) {\r\n            var value = item[valueField];\r\n            if (null === result[valueField]) {\r\n                result = item\r\n            }\r\n            if (null !== value && compare(value, result[valueField])) {\r\n                return item\r\n            }\r\n            return result\r\n        }, targetData);\r\n        return (0, _extend3.extend)({}, targetData, _defineProperty({}, series.getArgumentField(), intervalStart))\r\n    }\r\n}\r\n\r\nfunction checkFields(data, fieldsToCheck, skippedFields) {\r\n    var allFieldsIsValid = true;\r\n    for (var field in fieldsToCheck) {\r\n        var isArgument = \"argument\" === field;\r\n        if (isArgument || \"size\" === field ? !(0, _type.isDefined)(data[field]) : void 0 === data[field]) {\r\n            var selector = fieldsToCheck[field];\r\n            if (!isArgument) {\r\n                skippedFields[selector] = (skippedFields[selector] || 0) + 1\r\n            }\r\n            allFieldsIsValid = false\r\n        }\r\n    }\r\n    return allFieldsIsValid\r\n}\r\nvar baseScatterMethods = {\r\n    _defaultDuration: DEFAULT_DURATION,\r\n    _defaultTrackerWidth: DEFAULT_TRACKER_WIDTH,\r\n    _applyStyle: _common.noop,\r\n    _updateOptions: _common.noop,\r\n    _parseStyle: _common.noop,\r\n    _prepareSegment: _common.noop,\r\n    _drawSegment: _common.noop,\r\n    _appendInGroup: function() {\r\n        this._group.append(this._extGroups.seriesGroup)\r\n    },\r\n    _createLegendState: function(styleOptions, defaultColor) {\r\n        return {\r\n            fill: styleOptions.color || defaultColor,\r\n            hatching: styleOptions.hatching ? (0, _extend3.extend)({}, styleOptions.hatching, {\r\n                direction: \"right\"\r\n            }) : void 0\r\n        }\r\n    },\r\n    _applyElementsClipRect: function(settings) {\r\n        settings[\"clip-path\"] = this._paneClipRectID\r\n    },\r\n    _applyMarkerClipRect: function(settings) {\r\n        settings[\"clip-path\"] = this._forceClipping ? this._paneClipRectID : null\r\n    },\r\n    _createGroup: function(groupName, parent, target, settings) {\r\n        var group = parent[groupName] = parent[groupName] || this._renderer.g();\r\n        target && group.append(target);\r\n        settings && group.attr(settings)\r\n    },\r\n    _applyClearingSettings: function(settings) {\r\n        settings.opacity = null;\r\n        settings.scale = null;\r\n        if (this._options.rotated) {\r\n            settings.translateX = null\r\n        } else {\r\n            settings.translateY = null\r\n        }\r\n    },\r\n    _createGroups: function() {\r\n        var that = this;\r\n        that._createGroup(\"_markersGroup\", that, that._group);\r\n        that._createGroup(\"_labelsGroup\", that)\r\n    },\r\n    _setMarkerGroupSettings: function() {\r\n        var that = this;\r\n        var settings = that._createPointStyles(that._getMarkerGroupOptions()).normal;\r\n        settings.class = \"dxc-markers\";\r\n        settings.opacity = 1;\r\n        that._applyMarkerClipRect(settings);\r\n        that._markersGroup.attr(settings)\r\n    },\r\n    getVisibleArea: function() {\r\n        return this._visibleArea\r\n    },\r\n    areErrorBarsVisible: function() {\r\n        var errorBarOptions = this._options.valueErrorBar;\r\n        return errorBarOptions && this._errorBarsEnabled() && \"none\" !== errorBarOptions.displayMode && (isErrorBarTypeCorrect((0, _utils.normalizeEnum)(errorBarOptions.type)) || (0, _type.isDefined)(errorBarOptions.lowValueField) || (0, _type.isDefined)(errorBarOptions.highValueField))\r\n    },\r\n    groupPointsByCoords: function(rotated) {\r\n        var cat = [];\r\n        (0, _iterator.each)(this.getVisiblePoints(), function(_, p) {\r\n            var pointCoord = parseInt(rotated ? p.vy : p.vx);\r\n            if (!cat[pointCoord]) {\r\n                cat[pointCoord] = p\r\n            } else {\r\n                Array.isArray(cat[pointCoord]) ? cat[pointCoord].push(p) : cat[pointCoord] = [cat[pointCoord], p]\r\n            }\r\n        });\r\n        return cat\r\n    },\r\n    _createErrorBarGroup: function(animationEnabled) {\r\n        var that = this;\r\n        var errorBarOptions = that._options.valueErrorBar;\r\n        var settings;\r\n        if (that.areErrorBarsVisible()) {\r\n            settings = {\r\n                \"class\": \"dxc-error-bars\",\r\n                stroke: errorBarOptions.color,\r\n                \"stroke-width\": errorBarOptions.lineWidth,\r\n                opacity: animationEnabled ? .001 : errorBarOptions.opacity || 1,\r\n                \"stroke-linecap\": \"square\",\r\n                sharp: true,\r\n                \"clip-path\": that._forceClipping ? that._paneClipRectID : that._widePaneClipRectID\r\n            };\r\n            that._createGroup(\"_errorBarGroup\", that, that._group, settings)\r\n        }\r\n    },\r\n    _setGroupsSettings: function(animationEnabled) {\r\n        var that = this;\r\n        that._setMarkerGroupSettings();\r\n        that._setLabelGroupSettings(animationEnabled);\r\n        that._createErrorBarGroup(animationEnabled)\r\n    },\r\n    _getCreatingPointOptions: function() {\r\n        var that = this;\r\n        var defaultPointOptions;\r\n        var creatingPointOptions = that._predefinedPointOptions;\r\n        var normalStyle;\r\n        if (!creatingPointOptions) {\r\n            defaultPointOptions = that._getPointOptions();\r\n            that._predefinedPointOptions = creatingPointOptions = (0, _extend3.extend)(true, {\r\n                styles: {}\r\n            }, defaultPointOptions);\r\n            normalStyle = defaultPointOptions.styles && defaultPointOptions.styles.normal || {};\r\n            creatingPointOptions.styles = creatingPointOptions.styles || {};\r\n            creatingPointOptions.styles.normal = {\r\n                \"stroke-width\": normalStyle[\"stroke-width\"],\r\n                r: normalStyle.r,\r\n                opacity: normalStyle.opacity\r\n            }\r\n        }\r\n        return creatingPointOptions\r\n    },\r\n    _getPointOptions: function() {\r\n        return this._parsePointOptions(this._preparePointOptions(), this._options.label)\r\n    },\r\n    _getOptionsForPoint: function() {\r\n        return this._options.point\r\n    },\r\n    _parsePointStyle: function(style, defaultColor, defaultBorderColor, defaultSize) {\r\n        var border = style.border || {};\r\n        var sizeValue = void 0 !== style.size ? style.size : defaultSize;\r\n        return {\r\n            fill: style.color || defaultColor,\r\n            stroke: border.color || defaultBorderColor,\r\n            \"stroke-width\": border.visible ? border.width : 0,\r\n            r: sizeValue / 2 + (border.visible && 0 !== sizeValue ? ~~(border.width / 2) || 0 : 0)\r\n        }\r\n    },\r\n    _createPointStyles: function(pointOptions) {\r\n        var that = this;\r\n        var mainPointColor = pointOptions.color || that._options.mainSeriesColor;\r\n        var containerColor = that._options.containerBackgroundColor;\r\n        var normalStyle = that._parsePointStyle(pointOptions, mainPointColor, mainPointColor);\r\n        normalStyle.visibility = pointOptions.visible ? \"visible\" : \"hidden\";\r\n        return {\r\n            normal: normalStyle,\r\n            hover: that._parsePointStyle(pointOptions.hoverStyle, containerColor, mainPointColor, pointOptions.size),\r\n            selection: that._parsePointStyle(pointOptions.selectionStyle, containerColor, mainPointColor, pointOptions.size)\r\n        }\r\n    },\r\n    _checkData: function(data, skippedFields, fieldsToCheck) {\r\n        fieldsToCheck = fieldsToCheck || {\r\n            value: this.getValueFields()[0]\r\n        };\r\n        fieldsToCheck.argument = this.getArgumentField();\r\n        return checkFields(data, fieldsToCheck, skippedFields || {}) && data.value === data.value\r\n    },\r\n    getValueRangeInitialValue: function() {\r\n        return\r\n    },\r\n    _getRangeData: function() {\r\n        return _range_data_calculator.default.getRangeData(this)\r\n    },\r\n    _getPointDataSelector: function() {\r\n        var _this = this;\r\n        var valueField = this.getValueFields()[0];\r\n        var argumentField = this.getArgumentField();\r\n        var tagField = this.getTagField();\r\n        var areErrorBarsVisible = this.areErrorBarsVisible();\r\n        var lowValueField;\r\n        var highValueField;\r\n        if (areErrorBarsVisible) {\r\n            var errorBarOptions = this._options.valueErrorBar;\r\n            lowValueField = errorBarOptions.lowValueField || LOW_ERROR;\r\n            highValueField = errorBarOptions.highValueField || HIGH_ERROR\r\n        }\r\n        return function(data) {\r\n            var pointData = {\r\n                value: _this._processEmptyValue(data[valueField]),\r\n                argument: data[argumentField],\r\n                tag: data[tagField],\r\n                data: data\r\n            };\r\n            if (areErrorBarsVisible) {\r\n                pointData.lowError = data[lowValueField];\r\n                pointData.highError = data[highValueField]\r\n            }\r\n            return pointData\r\n        }\r\n    },\r\n    _errorBarsEnabled: function() {\r\n        return this.valueAxisType !== DISCRETE && this.valueAxisType !== LOGARITHMIC && this.valueType !== DATETIME\r\n    },\r\n    _drawPoint: function(options) {\r\n        var point = options.point;\r\n        if (point.isInVisibleArea()) {\r\n            point.clearVisibility();\r\n            point.draw(this._renderer, options.groups, options.hasAnimation, options.firstDrawing);\r\n            this._drawnPoints.push(point)\r\n        } else {\r\n            point.setInvisibility()\r\n        }\r\n    },\r\n    _animateComplete: function() {\r\n        var that = this;\r\n        var animationSettings = {\r\n            duration: that._defaultDuration\r\n        };\r\n        that._labelsGroup && that._labelsGroup.animate({\r\n            opacity: 1\r\n        }, animationSettings);\r\n        that._errorBarGroup && that._errorBarGroup.animate({\r\n            opacity: that._options.valueErrorBar.opacity || 1\r\n        }, animationSettings)\r\n    },\r\n    _animate: function() {\r\n        var that = this;\r\n        var lastPointIndex = that._drawnPoints.length - 1;\r\n        (0, _iterator.each)(that._drawnPoints || [], function(i, p) {\r\n            p.animate(i === lastPointIndex ? function() {\r\n                that._animateComplete()\r\n            } : void 0, {\r\n                translateX: p.x,\r\n                translateY: p.y\r\n            })\r\n        })\r\n    },\r\n    _defaultAggregator: \"avg\",\r\n    _aggregators: {\r\n        avg: function(_ref2, series) {\r\n            var _calculateAvgErrorBar;\r\n            var data = _ref2.data,\r\n                intervalStart = _ref2.intervalStart;\r\n            if (!data.length) {\r\n                return\r\n            }\r\n            var valueField = series.getValueFields()[0];\r\n            var aggregationResult = data.reduce(function(result, item) {\r\n                var value = item[valueField];\r\n                if ((0, _type.isDefined)(value)) {\r\n                    result[0] += value;\r\n                    result[1]++\r\n                } else {\r\n                    if (null === value) {\r\n                        result[2]++\r\n                    }\r\n                }\r\n                return result\r\n            }, [0, 0, 0]);\r\n            return calculateAvgErrorBars((_calculateAvgErrorBar = {}, _defineProperty(_calculateAvgErrorBar, valueField, aggregationResult[2] === data.length ? null : aggregationResult[0] / aggregationResult[1]), _defineProperty(_calculateAvgErrorBar, series.getArgumentField(), intervalStart), _calculateAvgErrorBar), data, series)\r\n        },\r\n        sum: function(_ref3, series) {\r\n            var _calculateSumErrorBar;\r\n            var intervalStart = _ref3.intervalStart,\r\n                data = _ref3.data;\r\n            if (!data.length) {\r\n                return\r\n            }\r\n            var valueField = series.getValueFields()[0];\r\n            var aggregationResult = data.reduce(function(result, item) {\r\n                var value = item[valueField];\r\n                if (void 0 !== value) {\r\n                    result[0] += value\r\n                }\r\n                if (null === value) {\r\n                    result[1]++\r\n                } else {\r\n                    if (void 0 === value) {\r\n                        result[2]++\r\n                    }\r\n                }\r\n                return result\r\n            }, [0, 0, 0]);\r\n            var value = aggregationResult[0];\r\n            if (aggregationResult[1] === data.length) {\r\n                value = null\r\n            }\r\n            if (aggregationResult[2] === data.length) {\r\n                return\r\n            }\r\n            return calculateSumErrorBars((_calculateSumErrorBar = {}, _defineProperty(_calculateSumErrorBar, valueField, value), _defineProperty(_calculateSumErrorBar, series.getArgumentField(), intervalStart), _calculateSumErrorBar), data, series)\r\n        },\r\n        count: function(_ref4, series) {\r\n            var _ref5;\r\n            var data = _ref4.data,\r\n                intervalStart = _ref4.intervalStart;\r\n            var valueField = series.getValueFields()[0];\r\n            return _ref5 = {}, _defineProperty(_ref5, series.getArgumentField(), intervalStart), _defineProperty(_ref5, valueField, data.filter(function(i) {\r\n                return void 0 !== i[valueField]\r\n            }).length), _ref5\r\n        },\r\n        min: getMinMaxAggregator(function(a, b) {\r\n            return a < b\r\n        }),\r\n        max: getMinMaxAggregator(function(a, b) {\r\n            return a > b\r\n        })\r\n    },\r\n    _endUpdateData: function() {\r\n        delete this._predefinedPointOptions\r\n    },\r\n    getArgumentField: function() {\r\n        return this._options.argumentField || \"arg\"\r\n    },\r\n    getValueFields: function() {\r\n        var options = this._options;\r\n        var errorBarsOptions = options.valueErrorBar;\r\n        var valueFields = [options.valueField || \"val\"];\r\n        var lowValueField;\r\n        var highValueField;\r\n        if (errorBarsOptions) {\r\n            lowValueField = errorBarsOptions.lowValueField;\r\n            highValueField = errorBarsOptions.highValueField;\r\n            (0, _type.isString)(lowValueField) && valueFields.push(lowValueField);\r\n            (0, _type.isString)(highValueField) && valueFields.push(highValueField)\r\n        }\r\n        return valueFields\r\n    },\r\n    _calculateErrorBars: function(data) {\r\n        if (!this.areErrorBarsVisible()) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var options = that._options;\r\n        var errorBarsOptions = options.valueErrorBar;\r\n        var errorBarType = (0, _utils.normalizeEnum)(errorBarsOptions.type);\r\n        var floatErrorValue = parseFloat(errorBarsOptions.value);\r\n        var valueField = that.getValueFields()[0];\r\n        var value;\r\n        var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n        var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n        var valueArray;\r\n        var valueArrayLength;\r\n        var meanValue;\r\n        var processDataItem;\r\n        var addSubError = function(_i, item) {\r\n            value = item.value;\r\n            item.lowError = value - floatErrorValue;\r\n            item.highError = value + floatErrorValue\r\n        };\r\n        switch (errorBarType) {\r\n            case FIXED:\r\n                processDataItem = addSubError;\r\n                break;\r\n            case PERCENT:\r\n                processDataItem = function(_, item) {\r\n                    value = item.value;\r\n                    var error = value * floatErrorValue / 100;\r\n                    item.lowError = value - error;\r\n                    item.highError = value + error\r\n                };\r\n                break;\r\n            case UNDEFINED:\r\n                processDataItem = function(_, item) {\r\n                    item.lowError = item.data[lowValueField];\r\n                    item.highError = item.data[highValueField]\r\n                };\r\n                break;\r\n            default:\r\n                valueArray = (0, _utils.map)(data, function(item) {\r\n                    return (0, _type.isDefined)(item.data[valueField]) ? item.data[valueField] : null\r\n                });\r\n                valueArrayLength = valueArray.length;\r\n                floatErrorValue = floatErrorValue || 1;\r\n                switch (errorBarType) {\r\n                    case VARIANCE:\r\n                        floatErrorValue = variance(valueArray, sum(valueArray) / valueArrayLength) * floatErrorValue;\r\n                        processDataItem = addSubError;\r\n                        break;\r\n                    case STANDARD_DEVIATION:\r\n                        meanValue = sum(valueArray) / valueArrayLength;\r\n                        floatErrorValue = _sqrt(variance(valueArray, meanValue)) * floatErrorValue;\r\n                        processDataItem = function(_, item) {\r\n                            item.lowError = meanValue - floatErrorValue;\r\n                            item.highError = meanValue + floatErrorValue\r\n                        };\r\n                        break;\r\n                    case STANDARD_ERROR:\r\n                        floatErrorValue = _sqrt(variance(valueArray, sum(valueArray) / valueArrayLength) / valueArrayLength) * floatErrorValue;\r\n                        processDataItem = addSubError\r\n                }\r\n        }\r\n        processDataItem && (0, _iterator.each)(data, processDataItem)\r\n    },\r\n    _patchMarginOptions: function(options) {\r\n        var pointOptions = this._getCreatingPointOptions();\r\n        var styles = pointOptions.styles;\r\n        var maxSize = [styles.normal, styles.hover, styles.selection].reduce(function(max, style) {\r\n            return _max(max, 2 * style.r + style[\"stroke-width\"])\r\n        }, 0);\r\n        options.size = pointOptions.visible ? maxSize : 0;\r\n        options.sizePointNormalState = pointOptions.visible ? 2 * styles.normal.r + styles.normal[\"stroke-width\"] : 2;\r\n        return options\r\n    },\r\n    usePointsToDefineAutoHiding: function() {\r\n        return true\r\n    }\r\n};\r\nexports.chart = chart = (0, _extend3.extend)({}, baseScatterMethods, {\r\n    drawTrackers: function() {\r\n        var that = this;\r\n        var trackers;\r\n        var trackersGroup;\r\n        var segments = that._segments || [];\r\n        var rotated = that._options.rotated;\r\n        if (!that.isVisible()) {\r\n            return\r\n        }\r\n        if (segments.length) {\r\n            trackers = that._trackers = that._trackers || [];\r\n            trackersGroup = that._trackersGroup = (that._trackersGroup || that._renderer.g().attr({\r\n                fill: \"gray\",\r\n                opacity: .001,\r\n                stroke: \"gray\",\r\n                \"class\": \"dxc-trackers\"\r\n            })).attr({\r\n                \"clip-path\": this._paneClipRectID || null\r\n            }).append(that._group);\r\n            (0, _iterator.each)(segments, function(i, segment) {\r\n                if (!trackers[i]) {\r\n                    trackers[i] = that._drawTrackerElement(segment).data({\r\n                        \"chart-data-series\": that\r\n                    }).append(trackersGroup)\r\n                } else {\r\n                    that._updateTrackerElement(segment, trackers[i])\r\n                }\r\n            })\r\n        }\r\n        that._trackersTranslator = that.groupPointsByCoords(rotated)\r\n    },\r\n    _checkAxisVisibleAreaCoord: function(isArgument, coord) {\r\n        var axis = isArgument ? this.getArgumentAxis() : this.getValueAxis();\r\n        var visibleArea = axis.getVisibleArea();\r\n        return (0, _type.isDefined)(coord) && visibleArea[0] <= coord && visibleArea[1] >= coord\r\n    },\r\n    checkSeriesViewportCoord: function(axis, coord) {\r\n        return true\r\n    },\r\n    getSeriesPairCoord: function(coord, isArgument) {\r\n        var oppositeCoord = null;\r\n        var isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;\r\n        var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n        var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n        var points = this.getVisiblePoints();\r\n        for (var i = 0; i < points.length; i++) {\r\n            var p = points[i];\r\n            var tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0;\r\n            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n                oppositeCoord = tmpCoord;\r\n                break\r\n            }\r\n        }\r\n        return oppositeCoord\r\n    },\r\n    _getNearestPoints: function(point, nextPoint) {\r\n        return [point, nextPoint]\r\n    },\r\n    _getBezierPoints: function() {\r\n        return []\r\n    },\r\n    _getNearestPointsByCoord: function(coord, isArgument) {\r\n        var that = this;\r\n        var rotated = that.getOptions().rotated;\r\n        var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n        var coordName = isOpposite ? \"vy\" : \"vx\";\r\n        var allPoints = that.getPoints();\r\n        var bezierPoints = that._getBezierPoints();\r\n        var nearestPoints = [];\r\n        if (allPoints.length > 1) {\r\n            allPoints.forEach(function(point, i) {\r\n                var nextPoint = allPoints[i + 1];\r\n                if (nextPoint && (point[coordName] <= coord && nextPoint[coordName] >= coord || point[coordName] >= coord && nextPoint[coordName] <= coord)) {\r\n                    nearestPoints.push(that._getNearestPoints(point, nextPoint, bezierPoints))\r\n                }\r\n            })\r\n        } else {\r\n            nearestPoints.push([allPoints[0], allPoints[0]])\r\n        }\r\n        return nearestPoints\r\n    },\r\n    getNeighborPoint: function(x, y) {\r\n        var pCoord = this._options.rotated ? y : x;\r\n        var nCoord = pCoord;\r\n        var cat = this._trackersTranslator;\r\n        var point = null;\r\n        var minDistance;\r\n        var oppositeCoord = this._options.rotated ? x : y;\r\n        var oppositeCoordName = this._options.rotated ? \"vx\" : \"vy\";\r\n        if (this.isVisible() && cat) {\r\n            point = cat[pCoord];\r\n            do {\r\n                point = cat[nCoord] || cat[pCoord];\r\n                pCoord--;\r\n                nCoord++\r\n            } while ((pCoord >= 0 || nCoord < cat.length) && !point);\r\n            if (Array.isArray(point)) {\r\n                minDistance = _abs(point[0][oppositeCoordName] - oppositeCoord);\r\n                (0, _iterator.each)(point, function(i, p) {\r\n                    var distance = _abs(p[oppositeCoordName] - oppositeCoord);\r\n                    if (minDistance >= distance) {\r\n                        minDistance = distance;\r\n                        point = p\r\n                    }\r\n                })\r\n            }\r\n        }\r\n        return point\r\n    },\r\n    _applyVisibleArea: function() {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        var visibleX = (rotated ? that.getValueAxis() : that.getArgumentAxis()).getVisibleArea();\r\n        var visibleY = (rotated ? that.getArgumentAxis() : that.getValueAxis()).getVisibleArea();\r\n        that._visibleArea = {\r\n            minX: visibleX[0],\r\n            maxX: visibleX[1],\r\n            minY: visibleY[0],\r\n            maxY: visibleY[1]\r\n        }\r\n    },\r\n    getPointCenterByArg: function(arg) {\r\n        var point = this.getPointsByArg(arg)[0];\r\n        return point ? point.getCenterCoord() : void 0\r\n    }\r\n});\r\nexports.polar = polar = (0, _extend3.extend)({}, baseScatterMethods, {\r\n    drawTrackers: function() {\r\n        chart.drawTrackers.call(this);\r\n        var cat = this._trackersTranslator;\r\n        var index;\r\n        if (!this.isVisible()) {\r\n            return\r\n        }(0, _iterator.each)(cat, function(i, category) {\r\n            if (category) {\r\n                index = i;\r\n                return false\r\n            }\r\n        });\r\n        cat[index + 360] = cat[index]\r\n    },\r\n    getNeighborPoint: function(x, y) {\r\n        var pos = (0, _utils.convertXYToPolar)(this.getValueAxis().getCenter(), x, y);\r\n        return chart.getNeighborPoint.call(this, pos.phi, pos.r)\r\n    },\r\n    _applyVisibleArea: function() {\r\n        var that = this;\r\n        var canvas = that.getValueAxis().getCanvas();\r\n        that._visibleArea = {\r\n            minX: canvas.left,\r\n            maxX: canvas.width - canvas.right,\r\n            minY: canvas.top,\r\n            maxY: canvas.height - canvas.bottom\r\n        }\r\n    },\r\n    getSeriesPairCoord: function(params, isArgument) {\r\n        var coords = null;\r\n        var paramName = isArgument ? \"argument\" : \"radius\";\r\n        var points = this.getVisiblePoints();\r\n        for (var i = 0; i < points.length; i++) {\r\n            var p = points[i];\r\n            var tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? {\r\n                x: p.x,\r\n                y: p.y\r\n            } : void 0;\r\n            if ((0, _type.isDefined)(tmpPoint)) {\r\n                coords = tmpPoint;\r\n                break\r\n            }\r\n        }\r\n        return coords\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (core/postponed_operations.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.PostponedOperations = void 0;\r\nvar _deferred = require(\"./utils/deferred\");\r\nvar _type = require(\"./utils/type\");\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar PostponedOperations = function() {\r\n    function PostponedOperations() {\r\n        _classCallCheck(this, PostponedOperations);\r\n        this._postponedOperations = {}\r\n    }\r\n    _createClass(PostponedOperations, [{\r\n        key: \"add\",\r\n        value: function(key, fn, postponedPromise) {\r\n            if (key in this._postponedOperations) {\r\n                postponedPromise && this._postponedOperations[key].promises.push(postponedPromise)\r\n            } else {\r\n                var completePromise = new _deferred.Deferred;\r\n                this._postponedOperations[key] = {\r\n                    fn: fn,\r\n                    completePromise: completePromise,\r\n                    promises: postponedPromise ? [postponedPromise] : []\r\n                }\r\n            }\r\n            return this._postponedOperations[key].completePromise.promise()\r\n        }\r\n    }, {\r\n        key: \"callPostponedOperations\",\r\n        value: function() {\r\n            for (var key in this._postponedOperations) {\r\n                var operation = this._postponedOperations[key];\r\n                if ((0, _type.isDefined)(operation)) {\r\n                    if (operation.promises && operation.promises.length) {\r\n                        _deferred.when.apply(void 0, _toConsumableArray(operation.promises)).done(operation.fn).then(operation.completePromise.resolve)\r\n                    } else {\r\n                        operation.fn().done(operation.completePromise.resolve)\r\n                    }\r\n                }\r\n            }\r\n            this._postponedOperations = {}\r\n        }\r\n    }]);\r\n    return PostponedOperations\r\n}();\r\nexports.PostponedOperations = PostponedOperations;\r\n","/**\r\n * DevExtreme (ui/scheduler/tooltip_strategies/mobileTooltipStrategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.MobileTooltipStrategy = void 0;\r\nvar _overlay = _interopRequireDefault(require(\"../../overlay\"));\r\nvar _tooltipStrategyBase = require(\"./tooltipStrategyBase\");\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar SLIDE_PANEL_CLASS_NAME = \"dx-scheduler-overlay-panel\";\r\nvar MAX_TABLET_OVERLAY_HEIGHT_FACTOR = .9;\r\nvar MAX_HEIGHT = {\r\n    PHONE: 250,\r\n    TABLET: \"90%\",\r\n    DEFAULT: \"auto\"\r\n};\r\nvar MAX_WIDTH = {\r\n    PHONE: \"100%\",\r\n    TABLET: \"80%\"\r\n};\r\nvar animationConfig = {\r\n    show: {\r\n        type: \"slide\",\r\n        duration: 300,\r\n        from: {\r\n            position: {\r\n                my: \"top\",\r\n                at: \"bottom\",\r\n                of: (0, _window.getWindow)()\r\n            }\r\n        },\r\n        to: {\r\n            position: {\r\n                my: \"center\",\r\n                at: \"center\",\r\n                of: (0, _window.getWindow)()\r\n            }\r\n        }\r\n    },\r\n    hide: {\r\n        type: \"slide\",\r\n        duration: 300,\r\n        to: {\r\n            position: {\r\n                my: \"top\",\r\n                at: \"bottom\",\r\n                of: (0, _window.getWindow)()\r\n            }\r\n        },\r\n        from: {\r\n            position: {\r\n                my: \"center\",\r\n                at: \"center\",\r\n                of: (0, _window.getWindow)()\r\n            }\r\n        }\r\n    }\r\n};\r\nvar createPhoneDeviceConfig = function(listHeight) {\r\n    return {\r\n        shading: false,\r\n        width: MAX_WIDTH.PHONE,\r\n        height: listHeight > MAX_HEIGHT.PHONE ? MAX_HEIGHT.PHONE : MAX_HEIGHT.DEFAULT,\r\n        position: {\r\n            my: \"bottom\",\r\n            at: \"bottom\",\r\n            of: (0, _window.getWindow)()\r\n        }\r\n    }\r\n};\r\nvar createTabletDeviceConfig = function(listHeight) {\r\n    var currentMaxHeight = (0, _renderer.default)((0, _window.getWindow)()).height() * MAX_TABLET_OVERLAY_HEIGHT_FACTOR;\r\n    return {\r\n        shading: true,\r\n        width: MAX_WIDTH.TABLET,\r\n        height: listHeight > currentMaxHeight ? MAX_HEIGHT.TABLET : MAX_HEIGHT.DEFAULT,\r\n        position: {\r\n            my: \"center\",\r\n            at: \"center\",\r\n            of: (0, _window.getWindow)()\r\n        }\r\n    }\r\n};\r\nvar MobileTooltipStrategy = function(_TooltipStrategyBase) {\r\n    _inherits(MobileTooltipStrategy, _TooltipStrategyBase);\r\n    var _super = _createSuper(MobileTooltipStrategy);\r\n\r\n    function MobileTooltipStrategy() {\r\n        _classCallCheck(this, MobileTooltipStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(MobileTooltipStrategy, [{\r\n        key: \"_shouldUseTarget\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_onShowing\",\r\n        value: function() {\r\n            var isTabletWidth = (0, _renderer.default)((0, _window.getWindow)()).width() > 700;\r\n            this._tooltip.option(\"height\", MAX_HEIGHT.DEFAULT);\r\n            var listHeight = this._list.$element().outerHeight();\r\n            this._tooltip.option(isTabletWidth ? createTabletDeviceConfig(listHeight) : createPhoneDeviceConfig(listHeight))\r\n        }\r\n    }, {\r\n        key: \"_createTooltip\",\r\n        value: function(target, dataList) {\r\n            var _this = this;\r\n            var element = this._createTooltipElement(SLIDE_PANEL_CLASS_NAME);\r\n            return this._options.createComponent(element, _overlay.default, {\r\n                target: (0, _window.getWindow)(),\r\n                closeOnOutsideClick: true,\r\n                animation: animationConfig,\r\n                onShowing: function() {\r\n                    return _this._onShowing()\r\n                },\r\n                onShown: this._onShown.bind(this),\r\n                contentTemplate: this._getContentTemplate(dataList)\r\n            })\r\n        }\r\n    }]);\r\n    return MobileTooltipStrategy\r\n}(_tooltipStrategyBase.TooltipStrategyBase);\r\nexports.MobileTooltipStrategy = MobileTooltipStrategy;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.summary_display_modes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.applyDisplaySummaryMode = applyDisplaySummaryMode;\r\nexports.applyRunningTotal = applyRunningTotal;\r\nexports.createMockSummaryCell = createMockSummaryCell;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar COLUMN = \"column\";\r\nvar ROW = \"row\";\r\nvar NULL = null;\r\nvar calculatePercentValue = function(value, totalValue) {\r\n    var result = value / totalValue;\r\n    if (!(0, _type.isDefined)(value) || isNaN(result)) {\r\n        result = NULL\r\n    }\r\n    return result\r\n};\r\nvar _percentOfGrandTotal = function(e, dimension) {\r\n    return calculatePercentValue(e.value(), e.grandTotal(dimension).value())\r\n};\r\nvar percentOfParent = function(e, dimension) {\r\n    var parent = e.parent(dimension);\r\n    var parentValue = parent ? parent.value() : e.value();\r\n    return calculatePercentValue(e.value(), parentValue)\r\n};\r\nvar createAbsoluteVariationExp = function(allowCrossGroup) {\r\n    return function(e) {\r\n        var prevCell = e.prev(COLUMN, allowCrossGroup);\r\n        var prevValue = prevCell && prevCell.value();\r\n        if ((0, _type.isDefined)(prevValue) && (0, _type.isDefined)(e.value())) {\r\n            return e.value() - prevValue\r\n        }\r\n        return NULL\r\n    }\r\n};\r\nvar createPercentVariationExp = function(allowCrossGroup) {\r\n    var absoluteExp = createAbsoluteVariationExp(allowCrossGroup);\r\n    return function(e) {\r\n        var absVar = absoluteExp(e);\r\n        var prevCell = e.prev(COLUMN, allowCrossGroup);\r\n        var prevValue = prevCell && prevCell.value();\r\n        return absVar !== NULL && prevValue ? absVar / prevValue : NULL\r\n    }\r\n};\r\nvar summaryDictionary = {\r\n    percentOfColumnTotal: function(e) {\r\n        return percentOfParent(e, ROW)\r\n    },\r\n    percentOfRowTotal: function(e) {\r\n        return percentOfParent(e, COLUMN)\r\n    },\r\n    percentOfColumnGrandTotal: function(e) {\r\n        return _percentOfGrandTotal(e, ROW)\r\n    },\r\n    percentOfRowGrandTotal: function(e) {\r\n        return _percentOfGrandTotal(e, COLUMN)\r\n    },\r\n    percentOfGrandTotal: function(e) {\r\n        return _percentOfGrandTotal(e)\r\n    }\r\n};\r\nvar getPrevCellCrossGroup = function getPrevCellCrossGroup(cell, direction) {\r\n    if (!cell || !cell.parent(direction)) {\r\n        return\r\n    }\r\n    var prevCell = cell.prev(direction);\r\n    if (!prevCell) {\r\n        prevCell = getPrevCellCrossGroup(cell.parent(direction), direction)\r\n    }\r\n    return prevCell\r\n};\r\nvar createRunningTotalExpr = function(field) {\r\n    if (!field.runningTotal) {\r\n        return\r\n    }\r\n    var direction = field.runningTotal === COLUMN ? ROW : COLUMN;\r\n    return function(e) {\r\n        var prevCell = field.allowCrossGroupCalculation ? getPrevCellCrossGroup(e, direction) : e.prev(direction, false);\r\n        var value = e.value(true);\r\n        var prevValue = prevCell && prevCell.value(true);\r\n        if ((0, _type.isDefined)(prevValue) && (0, _type.isDefined)(value)) {\r\n            value = prevValue + value\r\n        } else {\r\n            if ((0, _type.isDefined)(prevValue)) {\r\n                value = prevValue\r\n            }\r\n        }\r\n        return value\r\n    }\r\n};\r\n\r\nfunction createCache() {\r\n    return {\r\n        fields: {},\r\n        positions: {}\r\n    }\r\n}\r\n\r\nfunction getFieldPos(descriptions, field, cache) {\r\n    var fieldParams = {\r\n        index: -1\r\n    };\r\n    if (!(0, _type.isObject)(field)) {\r\n        if (cache.fields[field]) {\r\n            field = cache[field]\r\n        } else {\r\n            var allFields = descriptions.columns.concat(descriptions.rows).concat(descriptions.values);\r\n            var fieldIndex = (0, _uiPivot_grid.findField)(allFields, field);\r\n            field = cache[field] = allFields[fieldIndex]\r\n        }\r\n    }\r\n    if (field) {\r\n        var area = field.area || \"data\";\r\n        fieldParams = cache.positions[field.index] = cache.positions[field.index] || {\r\n            area: area,\r\n            index: (0, _array.inArray)(field, descriptions[\"data\" === area ? \"values\" : area + \"s\"])\r\n        }\r\n    }\r\n    return fieldParams\r\n}\r\n\r\nfunction getPathFieldName(dimension) {\r\n    return dimension === ROW ? \"_rowPath\" : \"_columnPath\"\r\n}\r\nvar SummaryCell = function(columnPath, rowPath, data, descriptions, fieldIndex, fieldsCache) {\r\n    this._columnPath = columnPath;\r\n    this._rowPath = rowPath;\r\n    this._fieldIndex = fieldIndex;\r\n    this._fieldsCache = fieldsCache || createCache();\r\n    this._data = data;\r\n    this._descriptions = descriptions;\r\n    var cell = data.values && data.values[rowPath[0].index] && data.values[rowPath[0].index][columnPath[0].index];\r\n    if (cell) {\r\n        cell.originalCell = cell.originalCell || cell.slice();\r\n        cell.postProcessedFlags = cell.postProcessedFlags || [];\r\n        this._cell = cell\r\n    }\r\n};\r\nSummaryCell.prototype = (0, _extend.extend)(SummaryCell.prototype, {\r\n    _getPath: function(dimension) {\r\n        return this[getPathFieldName(dimension)]\r\n    },\r\n    _getDimension: function(dimension) {\r\n        dimension = dimension === ROW ? \"rows\" : \"columns\";\r\n        return this._descriptions[dimension]\r\n    },\r\n    _createCell: function(config) {\r\n        var that = this;\r\n        return new SummaryCell(config._columnPath || that._columnPath, config._rowPath || that._rowPath, that._data, that._descriptions, that._fieldIndex)\r\n    },\r\n    parent: function(direction) {\r\n        var path = this._getPath(direction).slice();\r\n        var config = {};\r\n        path.shift();\r\n        if (path.length) {\r\n            config[getPathFieldName(direction)] = path;\r\n            return this._createCell(config)\r\n        }\r\n        return NULL\r\n    },\r\n    children: function(direction) {\r\n        var path = this._getPath(direction).slice();\r\n        var item = path[0];\r\n        var result = [];\r\n        var cellConfig = {};\r\n        if (item.children) {\r\n            for (var i = 0; i < item.children.length; i++) {\r\n                cellConfig[getPathFieldName(direction)] = [item.children[i]].concat(path.slice());\r\n                result.push(this._createCell(cellConfig))\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    grandTotal: function(direction) {\r\n        var config = {};\r\n        var rowPath = this._rowPath;\r\n        var columnPath = this._columnPath;\r\n        var dimensionPath = this._getPath(direction);\r\n        var pathFieldName = getPathFieldName(direction);\r\n        if (!direction) {\r\n            config._rowPath = [rowPath[rowPath.length - 1]];\r\n            config._columnPath = [columnPath[columnPath.length - 1]]\r\n        } else {\r\n            config[pathFieldName] = [dimensionPath[dimensionPath.length - 1]]\r\n        }\r\n        return this._createCell(config)\r\n    },\r\n    next: function(direction, allowCrossGroup) {\r\n        var currentPath = this._getPath(direction);\r\n        var item = currentPath[0];\r\n        var parent = this.parent(direction);\r\n        var siblings;\r\n        if (parent) {\r\n            var index = (0, _array.inArray)(item, currentPath[1].children);\r\n            siblings = parent.children(direction);\r\n            if (siblings[index + 1]) {\r\n                return siblings[index + 1]\r\n            }\r\n        }\r\n        if (allowCrossGroup && parent) {\r\n            do {\r\n                parent = parent.next(direction, allowCrossGroup);\r\n                siblings = parent ? parent.children(direction) : []\r\n            } while (parent && !siblings.length);\r\n            return siblings[0] || NULL\r\n        }\r\n        return NULL\r\n    },\r\n    prev: function(direction, allowCrossGroup) {\r\n        var currentPath = this._getPath(direction);\r\n        var item = currentPath[0];\r\n        var parent = this.parent(direction);\r\n        var siblings;\r\n        if (parent) {\r\n            var index = (0, _array.inArray)(item, currentPath[1].children);\r\n            siblings = parent.children(direction);\r\n            if (siblings[index - 1]) {\r\n                return siblings[index - 1]\r\n            }\r\n        }\r\n        if (allowCrossGroup && parent) {\r\n            do {\r\n                parent = parent.prev(direction, allowCrossGroup);\r\n                siblings = parent ? parent.children(direction) : []\r\n            } while (parent && !siblings.length);\r\n            return siblings[siblings.length - 1] || NULL\r\n        }\r\n        return NULL\r\n    },\r\n    cell: function() {\r\n        return this._cell\r\n    },\r\n    field: function field(area) {\r\n        if (\"data\" === area) {\r\n            return this._descriptions.values[this._fieldIndex]\r\n        }\r\n        var path = this._getPath(area);\r\n        var descriptions = this._getDimension(area);\r\n        var field = descriptions[path.length - 2];\r\n        return field || NULL\r\n    },\r\n    child: function(direction, fieldValue) {\r\n        var children = this.children(direction);\r\n        for (var i = 0; i < children.length; i++) {\r\n            var childLevelField = childLevelField || children[i].field(direction);\r\n            if (children[i].value(childLevelField) === fieldValue) {\r\n                return children[i]\r\n            }\r\n        }\r\n        return NULL\r\n    },\r\n    slice: function(field, value) {\r\n        var that = this;\r\n        var config = {};\r\n        var fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);\r\n        var area = fieldPos.area;\r\n        var fieldIndex = fieldPos.index;\r\n        var sliceCell = NULL;\r\n        var newPath = [];\r\n        if (area === ROW || area === COLUMN) {\r\n            var path = this._getPath(area).slice();\r\n            var level = fieldIndex !== -1 && path.length - 2 - fieldIndex;\r\n            if (path[level]) {\r\n                newPath[path.length - 1] = path[path.length - 1];\r\n                for (var i = level; i >= 0; i--) {\r\n                    if (path[i + 1]) {\r\n                        var childItems = path[i + 1].children || [];\r\n                        var currentValue = i === level ? value : path[i].value;\r\n                        path[i] = void 0;\r\n                        for (var childIndex = 0; childIndex < childItems.length; childIndex++) {\r\n                            if (childItems[childIndex].value === currentValue) {\r\n                                path[i] = childItems[childIndex];\r\n                                break\r\n                            }\r\n                        }\r\n                    }\r\n                    if (void 0 === path[i]) {\r\n                        return sliceCell\r\n                    }\r\n                }\r\n                config[getPathFieldName(area)] = path;\r\n                sliceCell = that._createCell(config)\r\n            }\r\n        }\r\n        return sliceCell\r\n    },\r\n    value: function(arg1, arg2) {\r\n        var cell = this._cell;\r\n        var fieldIndex = this._fieldIndex;\r\n        var fistArgIsBoolean = true === arg1 || false === arg1;\r\n        var field = !fistArgIsBoolean ? arg1 : NULL;\r\n        var needCalculatedValue = fistArgIsBoolean && arg1 || arg2;\r\n        if ((0, _type.isDefined)(field)) {\r\n            var fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);\r\n            fieldIndex = fieldPos.index;\r\n            if (\"data\" !== fieldPos.area) {\r\n                var path = this._getPath(fieldPos.area);\r\n                var level = fieldIndex !== -1 && path.length - 2 - fieldIndex;\r\n                return path[level] && path[level].value\r\n            }\r\n        }\r\n        if (cell && cell.originalCell) {\r\n            return needCalculatedValue ? cell[fieldIndex] : cell.originalCell[fieldIndex]\r\n        }\r\n        return NULL\r\n    },\r\n    isPostProcessed: function(field) {\r\n        var fieldIndex = this._fieldIndex;\r\n        if ((0, _type.isDefined)(field)) {\r\n            var fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);\r\n            fieldIndex = fieldPos.index;\r\n            if (\"data\" !== fieldPos.area) {\r\n                return false\r\n            }\r\n        }\r\n        return !!(this._cell && this._cell.postProcessedFlags[fieldIndex])\r\n    }\r\n});\r\n\r\nfunction getExpression(field) {\r\n    var summaryDisplayMode = field.summaryDisplayMode;\r\n    var crossGroupCalculation = field.allowCrossGroupCalculation;\r\n    var expression = NULL;\r\n    if ((0, _type.isFunction)(field.calculateSummaryValue)) {\r\n        expression = field.calculateSummaryValue\r\n    } else {\r\n        if (summaryDisplayMode) {\r\n            if (\"absoluteVariation\" === summaryDisplayMode) {\r\n                expression = createAbsoluteVariationExp(crossGroupCalculation)\r\n            } else {\r\n                if (\"percentVariation\" === summaryDisplayMode) {\r\n                    expression = createPercentVariationExp(crossGroupCalculation)\r\n                } else {\r\n                    expression = summaryDictionary[summaryDisplayMode]\r\n                }\r\n            }\r\n            if (expression && !field.format && summaryDisplayMode.indexOf(\"percent\") !== -1) {\r\n                (0, _uiPivot_grid.setFieldProperty)(field, \"format\", \"percent\")\r\n            }\r\n        }\r\n    }\r\n    return expression\r\n}\r\n\r\nfunction processDataCell(data, rowIndex, columnIndex, isRunningTotalCalculation) {\r\n    var values = data.values[rowIndex][columnIndex] = data.values[rowIndex][columnIndex] || [];\r\n    var originalCell = values.originalCell;\r\n    if (!originalCell) {\r\n        return\r\n    }\r\n    if (values.allowResetting || !isRunningTotalCalculation) {\r\n        data.values[rowIndex][columnIndex] = originalCell.slice()\r\n    }\r\n    data.values[rowIndex][columnIndex].allowResetting = isRunningTotalCalculation\r\n}\r\n\r\nfunction applyDisplaySummaryMode(descriptions, data) {\r\n    var expressions = [];\r\n    var columnElements = [{\r\n        index: data.grandTotalColumnIndex,\r\n        children: data.columns\r\n    }];\r\n    var rowElements = [{\r\n        index: data.grandTotalRowIndex,\r\n        children: data.rows\r\n    }];\r\n    var valueFields = descriptions.values;\r\n    var fieldsCache = createCache();\r\n    data.values = data.values || [];\r\n    (0, _uiPivot_grid.foreachTree)(columnElements, function(columnPath) {\r\n        columnPath[0].isEmpty = []\r\n    }, false);\r\n    (0, _uiPivot_grid.foreachTree)(rowElements, function(rowPath) {\r\n        var rowItem = rowPath[0];\r\n        rowItem.isEmpty = [];\r\n        data.values[rowItem.index] = data.values[rowItem.index] || [];\r\n        (0, _uiPivot_grid.foreachTree)(columnElements, function(columnPath) {\r\n            var columnItem = columnPath[0];\r\n            var isEmptyCell;\r\n            processDataCell(data, rowItem.index, columnItem.index, false);\r\n            for (var i = 0; i < valueFields.length; i++) {\r\n                var field = valueFields[i];\r\n                var expression = expressions[i] = void 0 === expressions[i] ? getExpression(field) : expressions[i];\r\n                isEmptyCell = false;\r\n                if (expression) {\r\n                    var expressionArg = new SummaryCell(columnPath, rowPath, data, descriptions, i, fieldsCache);\r\n                    var cell = expressionArg.cell();\r\n                    var value = cell[i] = expression(expressionArg);\r\n                    cell.postProcessedFlags[i] = true;\r\n                    isEmptyCell = null === value || void 0 === value\r\n                }\r\n                if (void 0 === columnItem.isEmpty[i]) {\r\n                    columnItem.isEmpty[i] = true\r\n                }\r\n                if (void 0 === rowItem.isEmpty[i]) {\r\n                    rowItem.isEmpty[i] = true\r\n                }\r\n                if (!isEmptyCell) {\r\n                    rowItem.isEmpty[i] = columnItem.isEmpty[i] = false\r\n                }\r\n            }\r\n        }, false)\r\n    }, false);\r\n    data.isEmptyGrandTotalRow = rowElements[0].isEmpty;\r\n    data.isEmptyGrandTotalColumn = columnElements[0].isEmpty\r\n}\r\n\r\nfunction applyRunningTotal(descriptions, data) {\r\n    var expressions = [];\r\n    var columnElements = [{\r\n        index: data.grandTotalColumnIndex,\r\n        children: data.columns\r\n    }];\r\n    var rowElements = [{\r\n        index: data.grandTotalRowIndex,\r\n        children: data.rows\r\n    }];\r\n    var valueFields = descriptions.values;\r\n    var fieldsCache = createCache();\r\n    data.values = data.values || [];\r\n    (0, _uiPivot_grid.foreachTree)(rowElements, function(rowPath) {\r\n        var rowItem = rowPath[0];\r\n        data.values[rowItem.index] = data.values[rowItem.index] || [];\r\n        (0, _uiPivot_grid.foreachTree)(columnElements, function(columnPath) {\r\n            var columnItem = columnPath[0];\r\n            processDataCell(data, rowItem.index, columnItem.index, true);\r\n            for (var i = 0; i < valueFields.length; i++) {\r\n                var field = valueFields[i];\r\n                var expression = expressions[i] = void 0 === expressions[i] ? createRunningTotalExpr(field) : expressions[i];\r\n                if (expression) {\r\n                    var expressionArg = new SummaryCell(columnPath, rowPath, data, descriptions, i, fieldsCache);\r\n                    var cell = expressionArg.cell();\r\n                    cell[i] = expression(expressionArg);\r\n                    cell.postProcessedFlags[i] = true\r\n                }\r\n            }\r\n        }, false)\r\n    }, false)\r\n}\r\n\r\nfunction createMockSummaryCell(descriptions, fields, indices) {\r\n    var summaryCell = new SummaryCell([], [], {}, descriptions, 0);\r\n    summaryCell.value = function(fieldId) {\r\n        if ((0, _type.isDefined)(fieldId)) {\r\n            var index = (0, _uiPivot_grid.findField)(fields, fieldId);\r\n            var field = fields[index];\r\n            if (!indices[index] && field && !(0, _type.isDefined)(field.area)) {\r\n                descriptions.values.push(field);\r\n                indices[index] = true\r\n            }\r\n        }\r\n    };\r\n    summaryCell.grandTotal = function() {\r\n        return this\r\n    };\r\n    summaryCell.children = function() {\r\n        return []\r\n    };\r\n    return summaryCell\r\n}\r\n","/**\r\n * DevExtreme (events/pointer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar support = _interopRequireWildcard(require(\"../core/utils/support\"));\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../core/utils/browser\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _event_registrator = _interopRequireDefault(require(\"./core/event_registrator\"));\r\nvar _touch = _interopRequireDefault(require(\"./pointer/touch\"));\r\nvar _mspointer = _interopRequireDefault(require(\"./pointer/mspointer\"));\r\nvar _mouse = _interopRequireDefault(require(\"./pointer/mouse\"));\r\nvar _mouse_and_touch = _interopRequireDefault(require(\"./pointer/mouse_and_touch\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\nvar getStrategy = function(support, device, browser) {\r\n    if (support.pointerEvents && browser.msie) {\r\n        return _mspointer.default\r\n    }\r\n    var tablet = device.tablet,\r\n        phone = device.phone;\r\n    if (support.touch && !(tablet || phone)) {\r\n        return _mouse_and_touch.default\r\n    }\r\n    if (support.touch) {\r\n        return _touch.default\r\n    }\r\n    return _mouse.default\r\n};\r\nvar EventStrategy = getStrategy(support, _devices.default.real(), _browser.default);\r\n(0, _iterator.each)(EventStrategy.map, function(pointerEvent, originalEvents) {\r\n    (0, _event_registrator.default)(pointerEvent, new EventStrategy(pointerEvent, originalEvents))\r\n});\r\nvar pointer = {\r\n    down: \"dxpointerdown\",\r\n    up: \"dxpointerup\",\r\n    move: \"dxpointermove\",\r\n    cancel: \"dxpointercancel\",\r\n    enter: \"dxpointerenter\",\r\n    leave: \"dxpointerleave\",\r\n    over: \"dxpointerover\",\r\n    out: \"dxpointerout\"\r\n};\r\nvar _default = pointer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/memorized_callbacks.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _callbacks = _interopRequireDefault(require(\"./utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar MemorizedCallbacks = function() {\r\n    function MemorizedCallbacks() {\r\n        _classCallCheck(this, MemorizedCallbacks);\r\n        this.memory = [];\r\n        this.callbacks = (0, _callbacks.default)()\r\n    }\r\n    _createClass(MemorizedCallbacks, [{\r\n        key: \"add\",\r\n        value: function(fn) {\r\n            (0, _iterator.each)(this.memory, function(_, item) {\r\n                return fn.apply(fn, item)\r\n            });\r\n            this.callbacks.add(fn)\r\n        }\r\n    }, {\r\n        key: \"remove\",\r\n        value: function(fn) {\r\n            this.callbacks.remove(fn)\r\n        }\r\n    }, {\r\n        key: \"fire\",\r\n        value: function() {\r\n            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n                args[_key] = arguments[_key]\r\n            }\r\n            this.memory.push(args);\r\n            this.callbacks.fire.apply(this.callbacks, args)\r\n        }\r\n    }]);\r\n    return MemorizedCallbacks\r\n}();\r\nexports.default = MemorizedCallbacks;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/axes/base_axis.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.Axis = exports.calculateCanvasMargins = exports.measureLabels = void 0;\r\nvar _smart_formatter = require(\"./smart_formatter\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _axes_constants = _interopRequireDefault(require(\"./axes_constants\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _parse_utils = require(\"../components/parse_utils\");\r\nvar _tick_generator = require(\"./tick_generator\");\r\nvar _translator2d = require(\"../translators/translator2d\");\r\nvar _range = require(\"../translators/range\");\r\nvar _tick = require(\"./tick\");\r\nvar _math2 = require(\"../../core/utils/math\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _xy_axes = _interopRequireDefault(require(\"./xy_axes\"));\r\nvar polarMethods = _interopRequireWildcard(require(\"./polar_axes\"));\r\nvar _constant_line = _interopRequireDefault(require(\"./constant_line\"));\r\nvar _strip = _interopRequireDefault(require(\"./strip\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar convertTicksToValues = _axes_constants.default.convertTicksToValues;\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _max = _math.max;\r\nvar _min = _math.min;\r\nvar _isArray = Array.isArray;\r\nvar DEFAULT_AXIS_LABEL_SPACING = 5;\r\nvar MAX_GRID_BORDER_ADHENSION = 4;\r\nvar TOP = _axes_constants.default.top;\r\nvar BOTTOM = _axes_constants.default.bottom;\r\nvar LEFT = _axes_constants.default.left;\r\nvar RIGHT = _axes_constants.default.right;\r\nvar CENTER = _axes_constants.default.center;\r\nvar KEEP = \"keep\";\r\nvar SHIFT = \"shift\";\r\nvar RESET = \"reset\";\r\nvar ROTATE = \"rotate\";\r\nvar DEFAULT_AXIS_DIVISION_FACTOR = 50;\r\nvar DEFAULT_MINOR_AXIS_DIVISION_FACTOR = 15;\r\nvar SCROLL_THRESHOLD = 5;\r\nvar MIN_BAR_MARGIN = 5;\r\nvar MAX_MARGIN_VALUE = .8;\r\nvar dateIntervals = {\r\n    day: 864e5,\r\n    week: 6048e5\r\n};\r\n\r\nfunction getTickGenerator(options, incidentOccurred, skipTickGeneration, rangeIsEmpty, adjustDivisionFactor, _ref) {\r\n    var _options$workWeek;\r\n    var allowNegatives = _ref.allowNegatives,\r\n        linearThreshold = _ref.linearThreshold;\r\n    return (0, _tick_generator.tickGenerator)({\r\n        axisType: options.type,\r\n        dataType: options.dataType,\r\n        logBase: options.logarithmBase,\r\n        allowNegatives: allowNegatives,\r\n        linearThreshold: linearThreshold,\r\n        axisDivisionFactor: adjustDivisionFactor(options.axisDivisionFactor || DEFAULT_AXIS_DIVISION_FACTOR),\r\n        minorAxisDivisionFactor: adjustDivisionFactor(options.minorAxisDivisionFactor || DEFAULT_MINOR_AXIS_DIVISION_FACTOR),\r\n        numberMultipliers: options.numberMultipliers,\r\n        calculateMinors: options.minorTick.visible || options.minorGrid.visible || options.calculateMinors,\r\n        allowDecimals: options.allowDecimals,\r\n        endOnTick: options.endOnTick,\r\n        incidentOccurred: incidentOccurred,\r\n        firstDayOfWeek: null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0],\r\n        skipTickGeneration: skipTickGeneration,\r\n        skipCalculationLimits: options.skipCalculationLimits,\r\n        generateExtraTick: options.generateExtraTick,\r\n        minTickInterval: options.minTickInterval,\r\n        rangeIsEmpty: rangeIsEmpty\r\n    })\r\n}\r\n\r\nfunction createMajorTick(axis, renderer, skippedCategory) {\r\n    var options = axis.getOptions();\r\n    return (0, _tick.tick)(axis, renderer, options.tick, options.grid, skippedCategory, false)\r\n}\r\n\r\nfunction createMinorTick(axis, renderer) {\r\n    var options = axis.getOptions();\r\n    return (0, _tick.tick)(axis, renderer, options.minorTick, options.minorGrid)\r\n}\r\n\r\nfunction createBoundaryTick(axis, renderer, isFirst) {\r\n    var options = axis.getOptions();\r\n    return (0, _tick.tick)(axis, renderer, (0, _extend.extend)({}, options.tick, {\r\n        visible: options.showCustomBoundaryTicks\r\n    }), options.grid, void 0, false, isFirst ? -1 : 1)\r\n}\r\n\r\nfunction callAction(elements, action, actionArgument1, actionArgument2) {\r\n    (elements || []).forEach(function(e) {\r\n        return e[action](actionArgument1, actionArgument2)\r\n    })\r\n}\r\n\r\nfunction initTickCoords(ticks) {\r\n    callAction(ticks, \"initCoords\")\r\n}\r\n\r\nfunction drawTickMarks(ticks, options) {\r\n    callAction(ticks, \"drawMark\", options)\r\n}\r\n\r\nfunction drawGrids(ticks, drawLine) {\r\n    callAction(ticks, \"drawGrid\", drawLine)\r\n}\r\n\r\nfunction updateTicksPosition(ticks, options, animate) {\r\n    callAction(ticks, \"updateTickPosition\", options, animate)\r\n}\r\n\r\nfunction updateGridsPosition(ticks, animate) {\r\n    callAction(ticks, \"updateGridPosition\", animate)\r\n}\r\nvar measureLabels = function(items) {\r\n    items.forEach(function(item) {\r\n        var label = item.getContentContainer();\r\n        item.labelBBox = label ? label.getBBox() : {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        }\r\n    })\r\n};\r\nexports.measureLabels = measureLabels;\r\n\r\nfunction cleanUpInvalidTicks(ticks) {\r\n    var i = ticks.length - 1;\r\n    for (i; i >= 0; i--) {\r\n        if (!removeInvalidTick(ticks, i)) {\r\n            break\r\n        }\r\n    }\r\n    for (i = 0; i < ticks.length; i++) {\r\n        if (removeInvalidTick(ticks, i)) {\r\n            i--\r\n        } else {\r\n            break\r\n        }\r\n    }\r\n}\r\n\r\nfunction removeInvalidTick(ticks, i) {\r\n    if (null === ticks[i].coords.x || null === ticks[i].coords.y) {\r\n        ticks.splice(i, 1);\r\n        return true\r\n    }\r\n    return false\r\n}\r\n\r\nfunction validateAxisOptions(options) {\r\n    var _labelOptions$minSpac;\r\n    var labelOptions = options.label;\r\n    var position = options.position;\r\n    var defaultPosition = options.isHorizontal ? BOTTOM : LEFT;\r\n    var secondaryPosition = options.isHorizontal ? TOP : RIGHT;\r\n    var labelPosition = labelOptions.position;\r\n    if (position !== defaultPosition && position !== secondaryPosition) {\r\n        position = defaultPosition\r\n    }\r\n    if (!labelPosition || \"outside\" === labelPosition) {\r\n        labelPosition = position\r\n    } else {\r\n        if (\"inside\" === labelPosition) {\r\n            var _TOP$BOTTOM$LEFT$RIGH;\r\n            labelPosition = (_TOP$BOTTOM$LEFT$RIGH = {}, _defineProperty(_TOP$BOTTOM$LEFT$RIGH, TOP, BOTTOM), _defineProperty(_TOP$BOTTOM$LEFT$RIGH, BOTTOM, TOP), _defineProperty(_TOP$BOTTOM$LEFT$RIGH, LEFT, RIGHT), _defineProperty(_TOP$BOTTOM$LEFT$RIGH, RIGHT, LEFT), _TOP$BOTTOM$LEFT$RIGH)[position]\r\n        }\r\n    }\r\n    if (labelPosition !== defaultPosition && labelPosition !== secondaryPosition) {\r\n        labelPosition = position\r\n    }\r\n    if (labelOptions.alignment !== CENTER && !labelOptions.userAlignment) {\r\n        var _TOP$BOTTOM$LEFT$RIGH2;\r\n        labelOptions.alignment = (_TOP$BOTTOM$LEFT$RIGH2 = {}, _defineProperty(_TOP$BOTTOM$LEFT$RIGH2, TOP, CENTER), _defineProperty(_TOP$BOTTOM$LEFT$RIGH2, BOTTOM, CENTER), _defineProperty(_TOP$BOTTOM$LEFT$RIGH2, LEFT, RIGHT), _defineProperty(_TOP$BOTTOM$LEFT$RIGH2, RIGHT, LEFT), _TOP$BOTTOM$LEFT$RIGH2)[labelPosition]\r\n    }\r\n    options.position = position;\r\n    labelOptions.position = labelPosition;\r\n    options.hoverMode = options.hoverMode ? options.hoverMode.toLowerCase() : \"none\";\r\n    labelOptions.minSpacing = null !== (_labelOptions$minSpac = labelOptions.minSpacing) && void 0 !== _labelOptions$minSpac ? _labelOptions$minSpac : DEFAULT_AXIS_LABEL_SPACING;\r\n    options.type && (options.type = options.type.toLowerCase());\r\n    options.argumentType && (options.argumentType = options.argumentType.toLowerCase());\r\n    options.valueType && (options.valueType = options.valueType.toLowerCase())\r\n}\r\n\r\nfunction getOptimalAngle(boxes, labelOpt) {\r\n    var angle = 180 * _math.asin((boxes[0].height + labelOpt.minSpacing) / (boxes[1].x - boxes[0].x)) / _math.PI;\r\n    return angle < 45 ? -45 : -90\r\n}\r\n\r\nfunction updateLabels(ticks, step, func) {\r\n    ticks.forEach(function(tick, index) {\r\n        if (tick.getContentContainer()) {\r\n            if (index % step !== 0) {\r\n                tick.removeLabel()\r\n            } else {\r\n                if (func) {\r\n                    func(tick, index)\r\n                }\r\n            }\r\n        }\r\n    })\r\n}\r\n\r\nfunction getZoomBoundValue(optionValue, dataValue) {\r\n    if (void 0 === optionValue) {\r\n        return dataValue\r\n    } else {\r\n        if (null === optionValue) {\r\n            return\r\n        } else {\r\n            return optionValue\r\n        }\r\n    }\r\n}\r\n\r\nfunction configureGenerator(options, axisDivisionFactor, viewPort, screenDelta, minTickInterval) {\r\n    var tickGeneratorOptions = (0, _extend.extend)({}, options, {\r\n        endOnTick: true,\r\n        axisDivisionFactor: axisDivisionFactor,\r\n        skipCalculationLimits: true,\r\n        generateExtraTick: true,\r\n        minTickInterval: minTickInterval\r\n    });\r\n    return function(tickInterval, skipTickGeneration, min, max, breaks) {\r\n        return getTickGenerator(tickGeneratorOptions, _common.noop, skipTickGeneration, viewPort.isEmpty(), function(v) {\r\n            return v\r\n        }, viewPort)({\r\n            min: min,\r\n            max: max,\r\n            categories: viewPort.categories,\r\n            isSpacedMargin: viewPort.isSpacedMargin\r\n        }, screenDelta, tickInterval, (0, _type.isDefined)(tickInterval), void 0, void 0, void 0, breaks)\r\n    }\r\n}\r\n\r\nfunction getConstantLineSharpDirection(coord, axisCanvas) {\r\n    return Math.max(axisCanvas.start, axisCanvas.end) !== coord ? 1 : -1\r\n}\r\nvar calculateCanvasMargins = function(bBoxes, canvas) {\r\n    var cLeft = canvas.left;\r\n    var cTop = canvas.top;\r\n    var cRight = canvas.width - canvas.right;\r\n    var cBottom = canvas.height - canvas.bottom;\r\n    return bBoxes.reduce(function(margins, bBox) {\r\n        if (!bBox || bBox.isEmpty) {\r\n            return margins\r\n        }\r\n        return {\r\n            left: _max(margins.left, cLeft - bBox.x),\r\n            top: _max(margins.top, cTop - bBox.y),\r\n            right: _max(margins.right, bBox.x + bBox.width - cRight),\r\n            bottom: _max(margins.bottom, bBox.y + bBox.height - cBottom)\r\n        }\r\n    }, {\r\n        left: 0,\r\n        right: 0,\r\n        top: 0,\r\n        bottom: 0\r\n    })\r\n};\r\nexports.calculateCanvasMargins = calculateCanvasMargins;\r\nvar Axis = function(renderSettings) {\r\n    var that = this;\r\n    that._renderer = renderSettings.renderer;\r\n    that._incidentOccurred = renderSettings.incidentOccurred;\r\n    that._eventTrigger = renderSettings.eventTrigger;\r\n    that._stripsGroup = renderSettings.stripsGroup;\r\n    that._labelAxesGroup = renderSettings.labelAxesGroup;\r\n    that._constantLinesGroup = renderSettings.constantLinesGroup;\r\n    that._scaleBreaksGroup = renderSettings.scaleBreaksGroup;\r\n    that._axesContainerGroup = renderSettings.axesContainerGroup;\r\n    that._gridContainerGroup = renderSettings.gridGroup;\r\n    that._axisCssPrefix = renderSettings.widgetClass + \"-\" + (renderSettings.axisClass ? renderSettings.axisClass + \"-\" : \"\");\r\n    that._setType(renderSettings.axisType, renderSettings.drawingType);\r\n    that._createAxisGroups();\r\n    that._translator = that._createTranslator();\r\n    that.isArgumentAxis = renderSettings.isArgumentAxis;\r\n    that._viewport = {};\r\n    that._firstDrawing = true;\r\n    that._initRange = {};\r\n    that._getTemplate = renderSettings.getTemplate\r\n};\r\nexports.Axis = Axis;\r\nAxis.prototype = {\r\n    constructor: Axis,\r\n    _drawAxis: function() {\r\n        var options = this._options;\r\n        if (!options.visible) {\r\n            return\r\n        }\r\n        this._axisElement = this._createAxisElement();\r\n        this._updateAxisElementPosition();\r\n        this._axisElement.attr({\r\n            \"stroke-width\": options.width,\r\n            stroke: options.color,\r\n            \"stroke-opacity\": options.opacity\r\n        }).sharp(this._getSharpParam(true), this.getAxisSharpDirection()).append(this._axisLineGroup)\r\n    },\r\n    _createPathElement: function(points, attr, sharpDirection) {\r\n        return this.sharp(this._renderer.path(points, \"line\").attr(attr), sharpDirection)\r\n    },\r\n    sharp: function(svgElement) {\r\n        var sharpDirection = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\r\n        return svgElement.sharp(this._getSharpParam(), sharpDirection)\r\n    },\r\n    customPositionIsAvailable: function() {\r\n        return false\r\n    },\r\n    getOrthogonalAxis: _common.noop,\r\n    getCustomPosition: _common.noop,\r\n    getCustomBoundaryPosition: _common.noop,\r\n    resolveOverlappingForCustomPositioning: _common.noop,\r\n    hasCustomPosition: function() {\r\n        return false\r\n    },\r\n    customPositionIsBoundaryOrthogonalAxis: function() {\r\n        return false\r\n    },\r\n    getResolvedBoundaryPosition: function() {\r\n        return this.getOptions().position\r\n    },\r\n    getAxisSharpDirection: function() {\r\n        var position = this.getResolvedBoundaryPosition();\r\n        return this.hasCustomPosition() || position !== BOTTOM && position !== RIGHT ? 1 : -1\r\n    },\r\n    getSharpDirectionByCoords: function(coords) {\r\n        var canvas = this._getCanvasStartEnd();\r\n        var maxCoord = Math.max(canvas.start, canvas.end);\r\n        return this.getRadius ? 0 : maxCoord !== coords[this._isHorizontal ? \"x\" : \"y\"] ? 1 : -1\r\n    },\r\n    _getGridLineDrawer: function() {\r\n        var that = this;\r\n        return function(tick, gridStyle) {\r\n            var grid = that._getGridPoints(tick.coords);\r\n            if (grid.points) {\r\n                return that._createPathElement(grid.points, gridStyle, that.getSharpDirectionByCoords(tick.coords))\r\n            }\r\n            return null\r\n        }\r\n    },\r\n    _getGridPoints: function(coords) {\r\n        var that = this;\r\n        var isHorizontal = this._isHorizontal;\r\n        var tickPositionField = isHorizontal ? \"x\" : \"y\";\r\n        var orthogonalPositions = this._orthogonalPositions;\r\n        var positionFrom = orthogonalPositions.start;\r\n        var positionTo = orthogonalPositions.end;\r\n        var borderOptions = that.borderOptions;\r\n        var canvasStart = isHorizontal ? LEFT : TOP;\r\n        var canvasEnd = isHorizontal ? RIGHT : BOTTOM;\r\n        var axisCanvas = that.getCanvas();\r\n        var canvas = {\r\n            left: axisCanvas.left,\r\n            right: axisCanvas.width - axisCanvas.right,\r\n            top: axisCanvas.top,\r\n            bottom: axisCanvas.height - axisCanvas.bottom\r\n        };\r\n        var firstBorderLinePosition = borderOptions.visible && borderOptions[canvasStart] ? canvas[canvasStart] : void 0;\r\n        var lastBorderLinePosition = borderOptions.visible && borderOptions[canvasEnd] ? canvas[canvasEnd] : void 0;\r\n        var minDelta = MAX_GRID_BORDER_ADHENSION + firstBorderLinePosition;\r\n        var maxDelta = lastBorderLinePosition - MAX_GRID_BORDER_ADHENSION;\r\n        if (that.areCoordsOutsideAxis(coords) || void 0 === coords[tickPositionField] || coords[tickPositionField] < minDelta || coords[tickPositionField] > maxDelta) {\r\n            return {\r\n                points: null\r\n            }\r\n        }\r\n        return {\r\n            points: isHorizontal ? null !== coords[tickPositionField] ? [coords[tickPositionField], positionFrom, coords[tickPositionField], positionTo] : null : null !== coords[tickPositionField] ? [positionFrom, coords[tickPositionField], positionTo, coords[tickPositionField]] : null\r\n        }\r\n    },\r\n    _getConstantLinePos: function(parsedValue, canvasStart, canvasEnd) {\r\n        var value = this._getTranslatedCoord(parsedValue);\r\n        if (!(0, _type.isDefined)(value) || value < _min(canvasStart, canvasEnd) || value > _max(canvasStart, canvasEnd)) {\r\n            return\r\n        }\r\n        return value\r\n    },\r\n    _getConstantLineGraphicAttributes: function(value) {\r\n        var positionFrom = this._orthogonalPositions.start;\r\n        var positionTo = this._orthogonalPositions.end;\r\n        return {\r\n            points: this._isHorizontal ? [value, positionFrom, value, positionTo] : [positionFrom, value, positionTo, value]\r\n        }\r\n    },\r\n    _createConstantLine: function(value, attr) {\r\n        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr, getConstantLineSharpDirection(value, this._getCanvasStartEnd()))\r\n    },\r\n    _drawConstantLineLabelText: function(text, x, y, _ref2, group) {\r\n        var font = _ref2.font,\r\n            cssClass = _ref2.cssClass;\r\n        return this._renderer.text(text, x, y).css((0, _utils.patchFontOptions)((0, _extend.extend)({}, this._options.label.font, font))).attr({\r\n            align: \"center\",\r\n            \"class\": cssClass\r\n        }).append(group)\r\n    },\r\n    _drawConstantLineLabels: function(parsedValue, lineLabelOptions, value, group) {\r\n        var _text;\r\n        var that = this;\r\n        var text = lineLabelOptions.text;\r\n        var options = that._options;\r\n        var labelOptions = options.label;\r\n        that._checkAlignmentConstantLineLabels(lineLabelOptions);\r\n        text = null !== (_text = text) && void 0 !== _text ? _text : that.formatLabel(parsedValue, labelOptions);\r\n        var coords = that._getConstantLineLabelsCoords(value, lineLabelOptions);\r\n        return that._drawConstantLineLabelText(text, coords.x, coords.y, lineLabelOptions, group)\r\n    },\r\n    _getStripPos: function(startValue, endValue, canvasStart, canvasEnd, range) {\r\n        var isContinuous = !!(range.minVisible || range.maxVisible);\r\n        var categories = (range.categories || []).reduce(function(result, cat) {\r\n            result.push(cat.valueOf());\r\n            return result\r\n        }, []);\r\n        var start;\r\n        var end;\r\n        var swap;\r\n        var startCategoryIndex;\r\n        var endCategoryIndex;\r\n        if (!isContinuous) {\r\n            if ((0, _type.isDefined)(startValue) && (0, _type.isDefined)(endValue)) {\r\n                var parsedStartValue = this.parser(startValue);\r\n                var parsedEndValue = this.parser(endValue);\r\n                startCategoryIndex = (0, _array.inArray)((0, _type.isDefined)(parsedStartValue) ? parsedStartValue.valueOf() : void 0, categories);\r\n                endCategoryIndex = (0, _array.inArray)((0, _type.isDefined)(parsedEndValue) ? parsedEndValue.valueOf() : void 0, categories);\r\n                if (startCategoryIndex === -1 || endCategoryIndex === -1) {\r\n                    return {\r\n                        from: 0,\r\n                        to: 0,\r\n                        outOfCanvas: true\r\n                    }\r\n                }\r\n                if (startCategoryIndex > endCategoryIndex) {\r\n                    swap = endValue;\r\n                    endValue = startValue;\r\n                    startValue = swap\r\n                }\r\n            }\r\n        }\r\n        if ((0, _type.isDefined)(startValue)) {\r\n            startValue = this.validateUnit(startValue, \"E2105\", \"strip\");\r\n            start = this._getTranslatedCoord(startValue, -1)\r\n        } else {\r\n            start = canvasStart\r\n        }\r\n        if ((0, _type.isDefined)(endValue)) {\r\n            endValue = this.validateUnit(endValue, \"E2105\", \"strip\");\r\n            end = this._getTranslatedCoord(endValue, 1)\r\n        } else {\r\n            end = canvasEnd\r\n        }\r\n        var stripPosition = start < end ? {\r\n            from: start,\r\n            to: end\r\n        } : {\r\n            from: end,\r\n            to: start\r\n        };\r\n        var visibleArea = this.getVisibleArea();\r\n        if (stripPosition.from <= visibleArea[0] && stripPosition.to <= visibleArea[0] || stripPosition.from >= visibleArea[1] && stripPosition.to >= visibleArea[1]) {\r\n            stripPosition.outOfCanvas = true\r\n        }\r\n        return stripPosition\r\n    },\r\n    _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n        var x;\r\n        var y;\r\n        var width;\r\n        var height;\r\n        var orthogonalPositions = this._orthogonalPositions;\r\n        var positionFrom = orthogonalPositions.start;\r\n        var positionTo = orthogonalPositions.end;\r\n        if (this._isHorizontal) {\r\n            x = fromPoint;\r\n            y = _min(positionFrom, positionTo);\r\n            width = toPoint - fromPoint;\r\n            height = _abs(positionFrom - positionTo)\r\n        } else {\r\n            x = _min(positionFrom, positionTo);\r\n            y = fromPoint;\r\n            width = _abs(positionFrom - positionTo);\r\n            height = _abs(fromPoint - toPoint)\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y,\r\n            width: width,\r\n            height: height\r\n        }\r\n    },\r\n    _createStrip: function(attrs) {\r\n        return this._renderer.rect(attrs.x, attrs.y, attrs.width, attrs.height)\r\n    },\r\n    _adjustStripLabels: function() {\r\n        var that = this;\r\n        this._strips.forEach(function(strip) {\r\n            if (strip.label) {\r\n                strip.label.attr(that._getAdjustedStripLabelCoords(strip))\r\n            }\r\n        })\r\n    },\r\n    _adjustLabelsCoord: function(offset, maxWidth, checkCanvas) {\r\n        var _this = this;\r\n        var that = this;\r\n        var getContainerAttrs = function(tick) {\r\n            return _this._getLabelAdjustedCoord(tick, offset + (tick.labelOffset || 0), maxWidth, checkCanvas)\r\n        };\r\n        that._majorTicks.forEach(function(tick) {\r\n            if (tick.label) {\r\n                tick.updateMultilineTextAlignment();\r\n                tick.label.attr(getContainerAttrs(tick))\r\n            } else {\r\n                tick.templateContainer && tick.templateContainer.attr(getContainerAttrs(tick))\r\n            }\r\n        })\r\n    },\r\n    _adjustLabels: function(offset) {\r\n        var that = this;\r\n        var options = that.getOptions();\r\n        var positionsAreConsistent = options.position === options.label.position;\r\n        var maxSize = that._majorTicks.reduce(function(size, tick) {\r\n            if (!tick.getContentContainer()) {\r\n                return size\r\n            }\r\n            var bBox = tick.labelRotationAngle ? (0, _utils.rotateBBox)(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle) : tick.labelBBox;\r\n            return {\r\n                width: _max(size.width || 0, bBox.width),\r\n                height: _max(size.height || 0, bBox.height),\r\n                offset: _max(size.offset || 0, tick.labelOffset || 0)\r\n            }\r\n        }, {});\r\n        var additionalOffset = positionsAreConsistent ? that._isHorizontal ? maxSize.height : maxSize.width : 0;\r\n        that._adjustLabelsCoord(offset, maxSize.width);\r\n        return offset + additionalOffset + (additionalOffset && that._options.label.indentFromAxis) + (positionsAreConsistent ? maxSize.offset : 0)\r\n    },\r\n    _getLabelAdjustedCoord: function(tick, offset, maxWidth) {\r\n        offset = offset || 0;\r\n        var that = this;\r\n        var options = that._options;\r\n        var templateBox = tick.templateContainer && tick.templateContainer.getBBox();\r\n        var box = templateBox || (0, _utils.rotateBBox)(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle || 0);\r\n        var textAlign = tick.labelAlignment || options.label.alignment;\r\n        var isDiscrete = \"discrete\" === that._options.type;\r\n        var isFlatLabel = tick.labelRotationAngle % 90 === 0;\r\n        var indentFromAxis = options.label.indentFromAxis;\r\n        var labelPosition = options.label.position;\r\n        var axisPosition = that._axisPosition;\r\n        var labelCoords = tick.labelCoords;\r\n        var labelX = labelCoords.x;\r\n        var translateX;\r\n        var translateY;\r\n        if (that._isHorizontal) {\r\n            if (labelPosition === BOTTOM) {\r\n                translateY = axisPosition + indentFromAxis - box.y + offset\r\n            } else {\r\n                translateY = axisPosition - indentFromAxis - (box.y + box.height) - offset\r\n            }\r\n            if (textAlign === RIGHT) {\r\n                translateX = isDiscrete && isFlatLabel ? tick.coords.x - (box.x + box.width) : labelX - box.x - box.width\r\n            } else {\r\n                if (textAlign === LEFT) {\r\n                    translateX = isDiscrete && isFlatLabel ? labelX - box.x - (tick.coords.x - labelX) : labelX - box.x\r\n                } else {\r\n                    translateX = labelX - box.x - box.width / 2\r\n                }\r\n            }\r\n        } else {\r\n            translateY = labelCoords.y - box.y - box.height / 2;\r\n            if (labelPosition === LEFT) {\r\n                if (textAlign === LEFT) {\r\n                    translateX = axisPosition - indentFromAxis - maxWidth - box.x\r\n                } else {\r\n                    if (textAlign === CENTER) {\r\n                        translateX = axisPosition - indentFromAxis - maxWidth / 2 - box.x - box.width / 2\r\n                    } else {\r\n                        translateX = axisPosition - indentFromAxis - box.x - box.width\r\n                    }\r\n                }\r\n                translateX -= offset\r\n            } else {\r\n                if (textAlign === RIGHT) {\r\n                    translateX = axisPosition + indentFromAxis + maxWidth - box.x - box.width\r\n                } else {\r\n                    if (textAlign === CENTER) {\r\n                        translateX = axisPosition + indentFromAxis + maxWidth / 2 - box.x - box.width / 2\r\n                    } else {\r\n                        translateX = axisPosition + indentFromAxis - box.x\r\n                    }\r\n                }\r\n                translateX += offset\r\n            }\r\n        }\r\n        return {\r\n            translateX: translateX,\r\n            translateY: translateY\r\n        }\r\n    },\r\n    _createAxisConstantLineGroups: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var classSelector = that._axisCssPrefix;\r\n        var constantLinesClass = classSelector + \"constant-lines\";\r\n        var insideGroup = renderer.g().attr({\r\n            \"class\": constantLinesClass\r\n        });\r\n        var outsideGroup1 = renderer.g().attr({\r\n            \"class\": constantLinesClass\r\n        });\r\n        var outsideGroup2 = renderer.g().attr({\r\n            \"class\": constantLinesClass\r\n        });\r\n        return {\r\n            inside: insideGroup,\r\n            outside1: outsideGroup1,\r\n            left: outsideGroup1,\r\n            top: outsideGroup1,\r\n            outside2: outsideGroup2,\r\n            right: outsideGroup2,\r\n            bottom: outsideGroup2,\r\n            remove: function() {\r\n                this.inside.remove();\r\n                this.outside1.remove();\r\n                this.outside2.remove()\r\n            },\r\n            clear: function() {\r\n                this.inside.clear();\r\n                this.outside1.clear();\r\n                this.outside2.clear()\r\n            }\r\n        }\r\n    },\r\n    _createAxisGroups: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var classSelector = that._axisCssPrefix;\r\n        that._axisGroup = renderer.g().attr({\r\n            \"class\": classSelector + \"axis\"\r\n        }).enableLinks();\r\n        that._axisStripGroup = renderer.g().attr({\r\n            \"class\": classSelector + \"strips\"\r\n        });\r\n        that._axisGridGroup = renderer.g().attr({\r\n            \"class\": classSelector + \"grid\"\r\n        });\r\n        that._axisElementsGroup = renderer.g().attr({\r\n            \"class\": classSelector + \"elements\"\r\n        }).linkOn(that._axisGroup, \"axisElements\").linkAppend();\r\n        that._axisLineGroup = renderer.g().attr({\r\n            \"class\": classSelector + \"line\"\r\n        }).linkOn(that._axisGroup, \"axisLine\").linkAppend();\r\n        that._axisTitleGroup = renderer.g().attr({\r\n            \"class\": classSelector + \"title\"\r\n        }).append(that._axisGroup);\r\n        that._axisConstantLineGroups = {\r\n            above: that._createAxisConstantLineGroups(),\r\n            under: that._createAxisConstantLineGroups()\r\n        };\r\n        that._axisStripLabelGroup = renderer.g().attr({\r\n            \"class\": classSelector + \"axis-labels\"\r\n        })\r\n    },\r\n    _clearAxisGroups: function() {\r\n        var that = this;\r\n        that._axisGroup.remove();\r\n        that._axisStripGroup.remove();\r\n        that._axisStripLabelGroup.remove();\r\n        that._axisConstantLineGroups.above.remove();\r\n        that._axisConstantLineGroups.under.remove();\r\n        that._axisGridGroup.remove();\r\n        that._axisTitleGroup.clear();\r\n        (!that._options.label.template || !that.isRendered()) && that._axisElementsGroup.clear();\r\n        that._axisLineGroup && that._axisLineGroup.clear();\r\n        that._axisStripGroup && that._axisStripGroup.clear();\r\n        that._axisGridGroup && that._axisGridGroup.clear();\r\n        that._axisConstantLineGroups.above.clear();\r\n        that._axisConstantLineGroups.under.clear();\r\n        that._axisStripLabelGroup && that._axisStripLabelGroup.clear()\r\n    },\r\n    _getLabelFormatObject: function(value, labelOptions, range, point, tickInterval, ticks) {\r\n        range = range || this._getViewportRange();\r\n        var formatObject = {\r\n            value: value,\r\n            valueText: (0, _smart_formatter.smartFormatter)(value, {\r\n                labelOptions: labelOptions,\r\n                ticks: ticks || convertTicksToValues(this._majorTicks),\r\n                tickInterval: null !== tickInterval && void 0 !== tickInterval ? tickInterval : this._tickInterval,\r\n                dataType: this._options.dataType,\r\n                logarithmBase: this._options.logarithmBase,\r\n                type: this._options.type,\r\n                showTransition: !this._options.marker.visible,\r\n                point: point\r\n            }) || \"\",\r\n            min: range.minVisible,\r\n            max: range.maxVisible\r\n        };\r\n        if (point) {\r\n            formatObject.point = point\r\n        }\r\n        return formatObject\r\n    },\r\n    formatLabel: function(value, labelOptions, range, point, tickInterval, ticks) {\r\n        var formatObject = this._getLabelFormatObject(value, labelOptions, range, point, tickInterval, ticks);\r\n        return (0, _type.isFunction)(labelOptions.customizeText) ? labelOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText\r\n    },\r\n    formatHint: function(value, labelOptions, range) {\r\n        var formatObject = this._getLabelFormatObject(value, labelOptions, range);\r\n        return (0, _type.isFunction)(labelOptions.customizeHint) ? labelOptions.customizeHint.call(formatObject, formatObject) : void 0\r\n    },\r\n    formatRange: function(startValue, endValue, interval) {\r\n        return (0, _smart_formatter.formatRange)(startValue, endValue, interval, this.getOptions())\r\n    },\r\n    _setTickOffset: function() {\r\n        var options = this._options;\r\n        var discreteAxisDivisionMode = options.discreteAxisDivisionMode;\r\n        this._tickOffset = +(\"crossLabels\" !== discreteAxisDivisionMode || !discreteAxisDivisionMode)\r\n    },\r\n    resetApplyingAnimation: function(isFirstDrawing) {\r\n        this._resetApplyingAnimation = true;\r\n        if (isFirstDrawing) {\r\n            this._firstDrawing = true\r\n        }\r\n    },\r\n    getMargins: function() {\r\n        var that = this;\r\n        if (that.hasCustomPosition()) {\r\n            return {\r\n                left: 0,\r\n                right: 0,\r\n                top: 0,\r\n                bottom: 0\r\n            }\r\n        }\r\n        var options = that._options;\r\n        var position = options.position;\r\n        var placeholderSize = options.placeholderSize;\r\n        var canvas = that.getCanvas();\r\n        var cLeft = canvas.left;\r\n        var cTop = canvas.top;\r\n        var cRight = canvas.width - canvas.right;\r\n        var cBottom = canvas.height - canvas.bottom;\r\n        var edgeMarginCorrection = _max(options.grid.visible && options.grid.width || 0, options.tick.visible && options.tick.width || 0);\r\n        var constantLineAboveSeries = that._axisConstantLineGroups.above;\r\n        var constantLineUnderSeries = that._axisConstantLineGroups.under;\r\n        var boxes = [that._axisElementsGroup, constantLineAboveSeries.outside1, constantLineAboveSeries.outside2, constantLineUnderSeries.outside1, constantLineUnderSeries.outside2, that._axisLineGroup].map(function(group) {\r\n            return group && group.getBBox()\r\n        }).concat(function(group) {\r\n            var box = group && group.getBBox();\r\n            if (!box || box.isEmpty) {\r\n                return box\r\n            }\r\n            if (that._isHorizontal) {\r\n                box.x = cLeft;\r\n                box.width = cRight - cLeft\r\n            } else {\r\n                box.y = cTop;\r\n                box.height = cBottom - cTop\r\n            }\r\n            return box\r\n        }(that._axisTitleGroup));\r\n        var margins = calculateCanvasMargins(boxes, canvas);\r\n        margins[position] += options.crosshairMargin;\r\n        if (placeholderSize) {\r\n            margins[position] = placeholderSize\r\n        }\r\n        if (edgeMarginCorrection) {\r\n            if (that._isHorizontal && canvas.right < edgeMarginCorrection && margins.right < edgeMarginCorrection) {\r\n                margins.right = edgeMarginCorrection\r\n            }\r\n            if (!that._isHorizontal && canvas.bottom < edgeMarginCorrection && margins.bottom < edgeMarginCorrection) {\r\n                margins.bottom = edgeMarginCorrection\r\n            }\r\n        }\r\n        return margins\r\n    },\r\n    validateUnit: function(unit, idError, parameters) {\r\n        var that = this;\r\n        unit = that.parser(unit);\r\n        if (void 0 === unit && idError) {\r\n            that._incidentOccurred(idError, [parameters])\r\n        }\r\n        return unit\r\n    },\r\n    _setType: function(axisType, drawingType) {\r\n        var that = this;\r\n        var axisTypeMethods;\r\n        switch (axisType) {\r\n            case \"xyAxes\":\r\n                axisTypeMethods = _xy_axes.default;\r\n                break;\r\n            case \"polarAxes\":\r\n                axisTypeMethods = polarMethods\r\n        }(0, _extend.extend)(that, axisTypeMethods[drawingType])\r\n    },\r\n    _getSharpParam: function() {\r\n        return true\r\n    },\r\n    _disposeBreaksGroup: _common.noop,\r\n    dispose: function() {\r\n        var that = this;\r\n        [that._axisElementsGroup, that._axisStripGroup, that._axisGroup].forEach(function(g) {\r\n            g.dispose()\r\n        });\r\n        that._strips = that._title = null;\r\n        that._axisStripGroup = that._axisConstantLineGroups = that._axisStripLabelGroup = that._axisBreaksGroup = null;\r\n        that._axisLineGroup = that._axisElementsGroup = that._axisGridGroup = null;\r\n        that._axisGroup = that._axisTitleGroup = null;\r\n        that._axesContainerGroup = that._stripsGroup = that._constantLinesGroup = null;\r\n        that._renderer = that._options = that._textOptions = that._textFontStyles = null;\r\n        that._translator = null;\r\n        that._majorTicks = that._minorTicks = null;\r\n        that._disposeBreaksGroup();\r\n        that._templatesRendered && that._templatesRendered.reject()\r\n    },\r\n    getOptions: function() {\r\n        return this._options\r\n    },\r\n    setPane: function(pane) {\r\n        this.pane = pane;\r\n        this._options.pane = pane\r\n    },\r\n    setTypes: function(type, axisType, typeSelector) {\r\n        this._options.type = type || this._options.type;\r\n        this._options[typeSelector] = axisType || this._options[typeSelector];\r\n        this._updateTranslator()\r\n    },\r\n    resetTypes: function(typeSelector) {\r\n        this._options.type = this._initTypes.type;\r\n        this._options[typeSelector] = this._initTypes[typeSelector]\r\n    },\r\n    getTranslator: function() {\r\n        return this._translator\r\n    },\r\n    updateOptions: function(options) {\r\n        var that = this;\r\n        var labelOpt = options.label;\r\n        validateAxisOptions(options);\r\n        that._options = options;\r\n        options.tick = options.tick || {};\r\n        options.minorTick = options.minorTick || {};\r\n        options.grid = options.grid || {};\r\n        options.minorGrid = options.minorGrid || {};\r\n        options.title = options.title || {};\r\n        options.marker = options.marker || {};\r\n        that._initTypes = {\r\n            type: options.type,\r\n            argumentType: options.argumentType,\r\n            valueType: options.valueType\r\n        };\r\n        that._setTickOffset();\r\n        that._isHorizontal = options.isHorizontal;\r\n        that.pane = options.pane;\r\n        that.name = options.name;\r\n        that.priority = options.priority;\r\n        that._hasLabelFormat = \"\" !== labelOpt.format && (0, _type.isDefined)(labelOpt.format);\r\n        that._textOptions = {\r\n            opacity: labelOpt.opacity,\r\n            align: \"center\",\r\n            \"class\": labelOpt.cssClass\r\n        };\r\n        that._textFontStyles = (0, _utils.patchFontOptions)(labelOpt.font);\r\n        if (options.type === _axes_constants.default.logarithmic) {\r\n            if (options.logarithmBaseError) {\r\n                that._incidentOccurred(\"E2104\");\r\n                delete options.logarithmBaseError\r\n            }\r\n        }\r\n        that._updateTranslator();\r\n        that._createConstantLines();\r\n        that._strips = (options.strips || []).map(function(o) {\r\n            return (0, _strip.default)(that, o)\r\n        });\r\n        that._majorTicks = that._minorTicks = null;\r\n        that._firstDrawing = true\r\n    },\r\n    calculateInterval: function(value, prevValue) {\r\n        var options = this._options;\r\n        if (!options || options.type !== _axes_constants.default.logarithmic) {\r\n            return _abs(value - prevValue)\r\n        }\r\n        var _Range = new _range.Range(this.getTranslator().getBusinessRange()),\r\n            allowNegatives = _Range.allowNegatives,\r\n            linearThreshold = _Range.linearThreshold;\r\n        return _abs((0, _utils.getLogExt)(value, options.logarithmBase, allowNegatives, linearThreshold) - (0, _utils.getLogExt)(prevValue, options.logarithmBase, allowNegatives, linearThreshold))\r\n    },\r\n    getCanvasRange: function() {\r\n        var translator = this._translator;\r\n        return {\r\n            startValue: translator.from(translator.translate(\"canvas_position_start\")),\r\n            endValue: translator.from(translator.translate(\"canvas_position_end\"))\r\n        }\r\n    },\r\n    _processCanvas: function(canvas) {\r\n        return canvas\r\n    },\r\n    updateCanvas: function(canvas, canvasRedesign) {\r\n        if (!canvasRedesign) {\r\n            var positions = this._orthogonalPositions = {\r\n                start: !this._isHorizontal ? canvas.left : canvas.top,\r\n                end: !this._isHorizontal ? canvas.width - canvas.right : canvas.height - canvas.bottom\r\n            };\r\n            positions.center = positions.start + (positions.end - positions.start) / 2\r\n        } else {\r\n            this._orthogonalPositions = null\r\n        }\r\n        this._canvas = canvas;\r\n        this._translator.updateCanvas(this._processCanvas(canvas));\r\n        this._initAxisPositions()\r\n    },\r\n    getCanvas: function() {\r\n        return this._canvas\r\n    },\r\n    getAxisShift: function() {\r\n        return this._axisShift || 0\r\n    },\r\n    hideTitle: function() {\r\n        var that = this;\r\n        if (that._options.title.text) {\r\n            that._incidentOccurred(\"W2105\", [that._isHorizontal ? \"horizontal\" : \"vertical\"]);\r\n            that._axisTitleGroup.clear()\r\n        }\r\n    },\r\n    getTitle: function() {\r\n        return this._title\r\n    },\r\n    hideOuterElements: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        if ((options.label.visible || that._outsideConstantLines.length) && !that._translator.getBusinessRange().isEmpty()) {\r\n            that._incidentOccurred(\"W2106\", [that._isHorizontal ? \"horizontal\" : \"vertical\"]);\r\n            that._axisElementsGroup.clear();\r\n            callAction(that._outsideConstantLines, \"removeLabel\")\r\n        }\r\n    },\r\n    _resolveLogarithmicOptionsForRange: function(range) {\r\n        var options = this._options;\r\n        if (options.type === _axes_constants.default.logarithmic) {\r\n            range.addRange({\r\n                allowNegatives: void 0 !== options.allowNegatives ? options.allowNegatives : range.min <= 0\r\n            });\r\n            if (!isNaN(options.linearThreshold)) {\r\n                range.linearThreshold = options.linearThreshold\r\n            }\r\n        }\r\n    },\r\n    adjustViewport: function(businessRange) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var isDiscrete = options.type === _axes_constants.default.discrete;\r\n        var categories = that._seriesData && that._seriesData.categories || [];\r\n        var wholeRange = that.adjustRange((0, _utils.getVizRangeObject)(options.wholeRange));\r\n        var visualRange = that.getViewport() || {};\r\n        var result = new _range.Range(businessRange);\r\n        that._addConstantLinesToRange(result, \"minVisible\", \"maxVisible\");\r\n        var minDefined = (0, _type.isDefined)(visualRange.startValue);\r\n        var maxDefined = (0, _type.isDefined)(visualRange.endValue);\r\n        if (!isDiscrete) {\r\n            minDefined = minDefined && (!(0, _type.isDefined)(wholeRange.endValue) || visualRange.startValue < wholeRange.endValue);\r\n            maxDefined = maxDefined && (!(0, _type.isDefined)(wholeRange.startValue) || visualRange.endValue > wholeRange.startValue)\r\n        }\r\n        var minVisible = minDefined ? visualRange.startValue : result.minVisible;\r\n        var maxVisible = maxDefined ? visualRange.endValue : result.maxVisible;\r\n        if (!isDiscrete) {\r\n            var _wholeRange$startValu, _wholeRange$endValue;\r\n            result.min = null !== (_wholeRange$startValu = wholeRange.startValue) && void 0 !== _wholeRange$startValu ? _wholeRange$startValu : result.min;\r\n            result.max = null !== (_wholeRange$endValue = wholeRange.endValue) && void 0 !== _wholeRange$endValue ? _wholeRange$endValue : result.max\r\n        } else {\r\n            var categoriesInfo = (0, _utils.getCategoriesInfo)(categories, wholeRange.startValue, wholeRange.endValue);\r\n            categories = categoriesInfo.categories;\r\n            result.categories = categories\r\n        }\r\n        var adjustedVisualRange = (0, _utils.adjustVisualRange)({\r\n            axisType: options.type,\r\n            dataType: options.dataType,\r\n            base: options.logarithmBase\r\n        }, {\r\n            startValue: minDefined ? visualRange.startValue : void 0,\r\n            endValue: maxDefined ? visualRange.endValue : void 0,\r\n            length: visualRange.length\r\n        }, {\r\n            categories: categories,\r\n            min: wholeRange.startValue,\r\n            max: wholeRange.endValue\r\n        }, {\r\n            categories: categories,\r\n            min: minVisible,\r\n            max: maxVisible\r\n        });\r\n        result.minVisible = adjustedVisualRange.startValue;\r\n        result.maxVisible = adjustedVisualRange.endValue;\r\n        !(0, _type.isDefined)(result.min) && (result.min = result.minVisible);\r\n        !(0, _type.isDefined)(result.max) && (result.max = result.maxVisible);\r\n        result.addRange({});\r\n        that._resolveLogarithmicOptionsForRange(result);\r\n        return result\r\n    },\r\n    adjustRange: function(range) {\r\n        range = range || {};\r\n        var isDiscrete = this._options.type === _axes_constants.default.discrete;\r\n        var isLogarithmic = this._options.type === _axes_constants.default.logarithmic;\r\n        var disabledNegatives = false === this._options.allowNegatives;\r\n        if (isLogarithmic) {\r\n            range.startValue = disabledNegatives && range.startValue <= 0 ? null : range.startValue;\r\n            range.endValue = disabledNegatives && range.endValue <= 0 ? null : range.endValue\r\n        }\r\n        if (!isDiscrete && (0, _type.isDefined)(range.startValue) && (0, _type.isDefined)(range.endValue) && range.startValue > range.endValue) {\r\n            var tmp = range.endValue;\r\n            range.endValue = range.startValue;\r\n            range.startValue = tmp\r\n        }\r\n        return range\r\n    },\r\n    _getVisualRangeUpdateMode: function(viewport, newRange, oppositeValue) {\r\n        var value = this._options.visualRangeUpdateMode;\r\n        var translator = this._translator;\r\n        var range = this._seriesData;\r\n        if (this.isArgumentAxis) {\r\n            if ([SHIFT, KEEP, RESET].indexOf(value) === -1) {\r\n                if (range.axisType === _axes_constants.default.discrete) {\r\n                    var categories = range.categories;\r\n                    var newCategories = newRange.categories;\r\n                    var visualRange = this.visualRange();\r\n                    if (categories && newCategories && categories.length && newCategories.map(function(c) {\r\n                            return c.valueOf()\r\n                        }).join(\",\").indexOf(categories.map(function(c) {\r\n                            return c.valueOf()\r\n                        }).join(\",\")) !== -1 && (visualRange.startValue.valueOf() !== categories[0].valueOf() || visualRange.endValue.valueOf() !== categories[categories.length - 1].valueOf())) {\r\n                        value = KEEP\r\n                    } else {\r\n                        value = RESET\r\n                    }\r\n                } else {\r\n                    var minPoint = translator.translate(range.min);\r\n                    var minVisiblePoint = translator.translate(viewport.startValue);\r\n                    var maxPoint = translator.translate(range.max);\r\n                    var maxVisiblePoint = translator.translate(viewport.endValue);\r\n                    if (minPoint === minVisiblePoint && maxPoint === maxVisiblePoint) {\r\n                        value = RESET\r\n                    } else {\r\n                        if (minPoint !== minVisiblePoint && maxPoint === maxVisiblePoint) {\r\n                            value = SHIFT\r\n                        } else {\r\n                            value = KEEP\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            if ([KEEP, RESET].indexOf(value) === -1) {\r\n                if (oppositeValue === KEEP) {\r\n                    value = KEEP\r\n                } else {\r\n                    value = RESET\r\n                }\r\n            }\r\n        }\r\n        return value\r\n    },\r\n    _handleBusinessRangeChanged: function(oppositeVisualRangeUpdateMode, axisReinitialized, newRange) {\r\n        var that = this;\r\n        var visualRange = this.visualRange();\r\n        if (axisReinitialized || that._translator.getBusinessRange().isEmpty()) {\r\n            return\r\n        }\r\n        var visualRangeUpdateMode = that._lastVisualRangeUpdateMode = that._getVisualRangeUpdateMode(visualRange, newRange, oppositeVisualRangeUpdateMode);\r\n        if (!that.isArgumentAxis) {\r\n            var viewport = that.getViewport();\r\n            if (!(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue) && !(0, _type.isDefined)(viewport.length)) {\r\n                visualRangeUpdateMode = RESET\r\n            }\r\n        }\r\n        that._prevDataWasEmpty && (visualRangeUpdateMode = KEEP);\r\n        if (visualRangeUpdateMode === KEEP) {\r\n            that._setVisualRange([visualRange.startValue, visualRange.endValue])\r\n        }\r\n        if (visualRangeUpdateMode === RESET) {\r\n            that._setVisualRange([null, null])\r\n        }\r\n        if (visualRangeUpdateMode === SHIFT) {\r\n            that._setVisualRange({\r\n                length: that.getVisualRangeLength()\r\n            })\r\n        }\r\n    },\r\n    getVisualRangeLength: function(range) {\r\n        var currentBusinessRange = range || this._translator.getBusinessRange();\r\n        var type = this._options.type;\r\n        var length;\r\n        if (type === _axes_constants.default.logarithmic) {\r\n            length = (0, _math2.adjust)(this.calculateInterval(currentBusinessRange.maxVisible, currentBusinessRange.minVisible))\r\n        } else {\r\n            if (type === _axes_constants.default.discrete) {\r\n                var categoriesInfo = (0, _utils.getCategoriesInfo)(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);\r\n                length = categoriesInfo.categories.length\r\n            } else {\r\n                length = currentBusinessRange.maxVisible - currentBusinessRange.minVisible\r\n            }\r\n        }\r\n        return length\r\n    },\r\n    getVisualRangeCenter: function(range) {\r\n        var businessRange = this._translator.getBusinessRange();\r\n        var currentBusinessRange = range || businessRange;\r\n        var _this$_options = this._options,\r\n            type = _this$_options.type,\r\n            logarithmBase = _this$_options.logarithmBase;\r\n        var center;\r\n        if (!(0, _type.isDefined)(currentBusinessRange.minVisible) || !(0, _type.isDefined)(currentBusinessRange.maxVisible)) {\r\n            return\r\n        }\r\n        if (type === _axes_constants.default.logarithmic) {\r\n            var allowNegatives = currentBusinessRange.allowNegatives,\r\n                linearThreshold = currentBusinessRange.linearThreshold,\r\n                minVisible = currentBusinessRange.minVisible,\r\n                maxVisible = currentBusinessRange.maxVisible;\r\n            center = (0, _utils.raiseToExt)((0, _math2.adjust)((0, _utils.getLogExt)(maxVisible, logarithmBase, allowNegatives, linearThreshold) + (0, _utils.getLogExt)(minVisible, logarithmBase, allowNegatives, linearThreshold)) / 2, logarithmBase, allowNegatives, linearThreshold)\r\n        } else {\r\n            if (type === _axes_constants.default.discrete) {\r\n                var categoriesInfo = (0, _utils.getCategoriesInfo)(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);\r\n                var index = Math.ceil(categoriesInfo.categories.length / 2) - 1;\r\n                center = businessRange.categories.indexOf(categoriesInfo.categories[index])\r\n            } else {\r\n                center = (currentBusinessRange.maxVisible.valueOf() + currentBusinessRange.minVisible.valueOf()) / 2\r\n            }\r\n        }\r\n        return center\r\n    },\r\n    setBusinessRange: function(range, axisReinitialized, oppositeVisualRangeUpdateMode, argCategories) {\r\n        var _that$_seriesData$min, _that$_seriesData$max;\r\n        var that = this;\r\n        var options = that._options;\r\n        var isDiscrete = options.type === _axes_constants.default.discrete;\r\n        that._handleBusinessRangeChanged(oppositeVisualRangeUpdateMode, axisReinitialized, range);\r\n        that._seriesData = new _range.Range(range);\r\n        var dataIsEmpty = that._seriesData.isEmpty();\r\n        that._prevDataWasEmpty = dataIsEmpty;\r\n        that._seriesData.addRange({\r\n            categories: options.categories,\r\n            dataType: options.dataType,\r\n            axisType: options.type,\r\n            base: options.logarithmBase,\r\n            invert: options.inverted\r\n        });\r\n        that._resolveLogarithmicOptionsForRange(that._seriesData);\r\n        if (!isDiscrete) {\r\n            if (!(0, _type.isDefined)(that._seriesData.min) && !(0, _type.isDefined)(that._seriesData.max)) {\r\n                var visualRange = that.getViewport();\r\n                visualRange && that._seriesData.addRange({\r\n                    min: visualRange.startValue,\r\n                    max: visualRange.endValue\r\n                })\r\n            }\r\n            var synchronizedValue = options.synchronizedValue;\r\n            if ((0, _type.isDefined)(synchronizedValue)) {\r\n                that._seriesData.addRange({\r\n                    min: synchronizedValue,\r\n                    max: synchronizedValue\r\n                })\r\n            }\r\n        }\r\n        that._seriesData.minVisible = null !== (_that$_seriesData$min = that._seriesData.minVisible) && void 0 !== _that$_seriesData$min ? _that$_seriesData$min : that._seriesData.min;\r\n        that._seriesData.maxVisible = null !== (_that$_seriesData$max = that._seriesData.maxVisible) && void 0 !== _that$_seriesData$max ? _that$_seriesData$max : that._seriesData.max;\r\n        if (!that.isArgumentAxis && options.showZero) {\r\n            that._seriesData.correctValueZeroLevel()\r\n        }\r\n        that._seriesData.sortCategories(that.getCategoriesSorter(argCategories));\r\n        that._seriesData.userBreaks = that._getScaleBreaks(options, that._seriesData, that._series, that.isArgumentAxis);\r\n        that._translator.updateBusinessRange(that._getViewportRange())\r\n    },\r\n    _addConstantLinesToRange: function(dataRange, minValueField, maxValueField) {\r\n        this._outsideConstantLines.concat(this._insideConstantLines || []).forEach(function(cl) {\r\n            if (cl.options.extendAxis) {\r\n                var _dataRange$addRange;\r\n                var value = cl.getParsedValue();\r\n                dataRange.addRange((_dataRange$addRange = {}, _defineProperty(_dataRange$addRange, minValueField, value), _defineProperty(_dataRange$addRange, maxValueField, value), _dataRange$addRange))\r\n            }\r\n        })\r\n    },\r\n    setGroupSeries: function(series) {\r\n        this._series = series\r\n    },\r\n    getLabelsPosition: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var position = options.position;\r\n        var labelShift = options.label.indentFromAxis + (that._axisShift || 0) + that._constantLabelOffset;\r\n        var axisPosition = that._axisPosition;\r\n        return position === TOP || position === LEFT ? axisPosition - labelShift : axisPosition + labelShift\r\n    },\r\n    getFormattedValue: function(value, options, point) {\r\n        var labelOptions = this._options.label;\r\n        return (0, _type.isDefined)(value) ? this.formatLabel(value, (0, _extend.extend)(true, {}, labelOptions, options), void 0, point) : null\r\n    },\r\n    _getBoundaryTicks: function(majors, viewPort) {\r\n        var that = this;\r\n        var length = majors.length;\r\n        var options = that._options;\r\n        var customBounds = options.customBoundTicks;\r\n        var min = viewPort.minVisible;\r\n        var max = viewPort.maxVisible;\r\n        var addMinMax = options.showCustomBoundaryTicks ? that._boundaryTicksVisibility : {};\r\n        var boundaryTicks = [];\r\n        if (options.type === _axes_constants.default.discrete) {\r\n            if (that._tickOffset && 0 !== majors.length) {\r\n                boundaryTicks = [majors[0], majors[majors.length - 1]]\r\n            }\r\n        } else {\r\n            if (customBounds) {\r\n                if (addMinMax.min && (0, _type.isDefined)(customBounds[0])) {\r\n                    boundaryTicks.push(customBounds[0])\r\n                }\r\n                if (addMinMax.max && (0, _type.isDefined)(customBounds[1])) {\r\n                    boundaryTicks.push(customBounds[1])\r\n                }\r\n            } else {\r\n                if (addMinMax.min && (0 === length || majors[0] > min)) {\r\n                    boundaryTicks.push(min)\r\n                }\r\n                if (addMinMax.max && (0 === length || majors[length - 1] < max)) {\r\n                    boundaryTicks.push(max)\r\n                }\r\n            }\r\n        }\r\n        return boundaryTicks\r\n    },\r\n    setPercentLabelFormat: function() {\r\n        if (!this._hasLabelFormat) {\r\n            this._options.label.format = \"percent\"\r\n        }\r\n    },\r\n    resetAutoLabelFormat: function() {\r\n        if (!this._hasLabelFormat) {\r\n            delete this._options.label.format\r\n        }\r\n    },\r\n    getMultipleAxesSpacing: function() {\r\n        return this._options.multipleAxesSpacing || 0\r\n    },\r\n    getTicksValues: function() {\r\n        return {\r\n            majorTicksValues: convertTicksToValues(this._majorTicks),\r\n            minorTicksValues: convertTicksToValues(this._minorTicks)\r\n        }\r\n    },\r\n    estimateTickInterval: function(canvas) {\r\n        var that = this;\r\n        that.updateCanvas(canvas);\r\n        return that._tickInterval !== that._getTicks(that._getViewportRange(), _common.noop, true).tickInterval\r\n    },\r\n    setTicks: function(ticks) {\r\n        var majors = ticks.majorTicks || [];\r\n        this._majorTicks = majors.map(createMajorTick(this, this._renderer, this._getSkippedCategory(majors)));\r\n        this._minorTicks = (ticks.minorTicks || []).map(createMinorTick(this, this._renderer));\r\n        this._isSynchronized = true\r\n    },\r\n    _adjustDivisionFactor: function(val) {\r\n        return val\r\n    },\r\n    _getTicks: function(viewPort, incidentOccurred, skipTickGeneration) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var customTicks = options.customTicks;\r\n        var customMinorTicks = options.customMinorTicks;\r\n        return getTickGenerator(options, incidentOccurred || that._incidentOccurred, skipTickGeneration, that._translator.getBusinessRange().isEmpty(), that._adjustDivisionFactor.bind(that), viewPort)({\r\n            min: viewPort.minVisible,\r\n            max: viewPort.maxVisible,\r\n            categories: viewPort.categories,\r\n            isSpacedMargin: viewPort.isSpacedMargin\r\n        }, that._getScreenDelta(), options.tickInterval, \"ignore\" === options.label.overlappingBehavior || options.forceUserTickInterval, {\r\n            majors: customTicks,\r\n            minors: customMinorTicks\r\n        }, options.minorTickInterval, options.minorTickCount, that._initialBreaks)\r\n    },\r\n    _createTicksAndLabelFormat: function(range, incidentOccurred) {\r\n        var options = this._options;\r\n        var ticks = this._getTicks(range, incidentOccurred, false);\r\n        if (!range.isEmpty() && options.type === _axes_constants.default.discrete && \"datetime\" === options.dataType && !this._hasLabelFormat && ticks.ticks.length) {\r\n            options.label.format = _format_helper.default.getDateFormatByTicks(ticks.ticks)\r\n        }\r\n        return ticks\r\n    },\r\n    getAggregationInfo: function(useAllAggregatedPoints, range) {\r\n        var _visualRange$startVal, _visualRange$endValue, _that$_seriesData;\r\n        var that = this;\r\n        var options = that._options;\r\n        var marginOptions = that._marginOptions;\r\n        var businessRange = new _range.Range(that.getTranslator().getBusinessRange()).addRange(range);\r\n        var visualRange = that.getViewport();\r\n        var minVisible = null !== (_visualRange$startVal = null === visualRange || void 0 === visualRange ? void 0 : visualRange.startValue) && void 0 !== _visualRange$startVal ? _visualRange$startVal : businessRange.minVisible;\r\n        var maxVisible = null !== (_visualRange$endValue = null === visualRange || void 0 === visualRange ? void 0 : visualRange.endValue) && void 0 !== _visualRange$endValue ? _visualRange$endValue : businessRange.maxVisible;\r\n        var ticks = [];\r\n        if (options.type === _axes_constants.default.discrete && options.aggregateByCategory) {\r\n            return {\r\n                aggregateByCategory: true\r\n            }\r\n        }\r\n        var aggregationInterval = options.aggregationInterval;\r\n        var aggregationGroupWidth = options.aggregationGroupWidth;\r\n        if (!aggregationGroupWidth && marginOptions) {\r\n            if (marginOptions.checkInterval) {\r\n                aggregationGroupWidth = options.axisDivisionFactor\r\n            }\r\n            if (marginOptions.sizePointNormalState) {\r\n                aggregationGroupWidth = Math.min(marginOptions.sizePointNormalState, options.axisDivisionFactor)\r\n            }\r\n        }\r\n        var minInterval = !options.aggregationGroupWidth && !aggregationInterval && range.interval;\r\n        var generateTicks = configureGenerator(options, aggregationGroupWidth, businessRange, that._getScreenDelta(), minInterval);\r\n        var tickInterval = generateTicks(aggregationInterval, true, minVisible, maxVisible, null === (_that$_seriesData = that._seriesData) || void 0 === _that$_seriesData ? void 0 : _that$_seriesData.breaks).tickInterval;\r\n        if (options.type !== _axes_constants.default.discrete) {\r\n            var min = useAllAggregatedPoints ? businessRange.min : minVisible;\r\n            var max = useAllAggregatedPoints ? businessRange.max : maxVisible;\r\n            if ((0, _type.isDefined)(min) && (0, _type.isDefined)(max)) {\r\n                var add = (0, _utils.getAddFunction)({\r\n                    base: options.logarithmBase,\r\n                    axisType: options.type,\r\n                    dataType: options.dataType\r\n                }, false);\r\n                var start = min;\r\n                var end = max;\r\n                if (!useAllAggregatedPoints) {\r\n                    var maxMinDistance = Math.max(that.calculateInterval(max, min), \"datetime\" === options.dataType ? _date.default.dateToMilliseconds(tickInterval) : tickInterval);\r\n                    start = add(min, maxMinDistance, -1);\r\n                    end = add(max, maxMinDistance)\r\n                }\r\n                start = start < businessRange.min ? businessRange.min : start;\r\n                end = end > businessRange.max ? businessRange.max : end;\r\n                var breaks = that._getScaleBreaks(options, {\r\n                    minVisible: start,\r\n                    maxVisible: end\r\n                }, that._series, that.isArgumentAxis);\r\n                var filteredBreaks = that._filterBreaks(breaks, {\r\n                    minVisible: start,\r\n                    maxVisible: end\r\n                }, options.breakStyle);\r\n                ticks = generateTicks(tickInterval, false, start, end, filteredBreaks).ticks\r\n            }\r\n        }\r\n        that._aggregationInterval = tickInterval;\r\n        return {\r\n            interval: tickInterval,\r\n            ticks: ticks\r\n        }\r\n    },\r\n    createTicks: function(canvas) {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var options = that._options;\r\n        if (!canvas) {\r\n            return\r\n        }\r\n        that._isSynchronized = false;\r\n        that.updateCanvas(canvas);\r\n        var range = that._getViewportRange();\r\n        that._initialBreaks = range.breaks = this._seriesData.breaks = that._filterBreaks(this._seriesData.userBreaks, range, options.breakStyle);\r\n        that._estimatedTickInterval = that._getTicks(that.adjustViewport(this._seriesData), _common.noop, true).tickInterval;\r\n        var margins = this._calculateValueMargins();\r\n        range.addRange({\r\n            minVisible: margins.minValue,\r\n            maxVisible: margins.maxValue,\r\n            isSpacedMargin: margins.isSpacedMargin\r\n        });\r\n        var ticks = that._createTicksAndLabelFormat(range);\r\n        var boundaryTicks = that._getBoundaryTicks(ticks.ticks, that._getViewportRange());\r\n        if (options.showCustomBoundaryTicks && boundaryTicks.length) {\r\n            that._boundaryTicks = [boundaryTicks[0]].map(createBoundaryTick(that, renderer, true));\r\n            if (boundaryTicks.length > 1) {\r\n                that._boundaryTicks = that._boundaryTicks.concat([boundaryTicks[1]].map(createBoundaryTick(that, renderer, false)))\r\n            }\r\n        } else {\r\n            that._boundaryTicks = []\r\n        }\r\n        var minors = (ticks.minorTicks || []).filter(function(minor) {\r\n            return !boundaryTicks.some(function(boundary) {\r\n                return (0, _utils.valueOf)(boundary) === (0, _utils.valueOf)(minor)\r\n            })\r\n        });\r\n        that._tickInterval = ticks.tickInterval;\r\n        that._minorTickInterval = ticks.minorTickInterval;\r\n        var oldMajorTicks = that._majorTicks || [];\r\n        var majorTicksByValues = oldMajorTicks.reduce(function(r, t) {\r\n            r[t.value.valueOf()] = t;\r\n            return r\r\n        }, {});\r\n        var sameType = (0, _type.type)(ticks.ticks[0]) === (0, _type.type)(oldMajorTicks[0] && oldMajorTicks[0].value);\r\n        var skippedCategory = that._getSkippedCategory(ticks.ticks);\r\n        var majorTicks = ticks.ticks.map(function(v) {\r\n            var tick = majorTicksByValues[v.valueOf()];\r\n            if (tick && sameType) {\r\n                delete majorTicksByValues[v.valueOf()];\r\n                tick.setSkippedCategory(skippedCategory);\r\n                return tick\r\n            } else {\r\n                return createMajorTick(that, renderer, skippedCategory)(v)\r\n            }\r\n        });\r\n        that._majorTicks = majorTicks;\r\n        var oldMinorTicks = that._minorTicks || [];\r\n        that._minorTicks = minors.map(function(v, i) {\r\n            var minorTick = oldMinorTicks[i];\r\n            if (minorTick) {\r\n                minorTick.updateValue(v);\r\n                return minorTick\r\n            }\r\n            return createMinorTick(that, renderer)(v)\r\n        });\r\n        that._ticksToRemove = Object.keys(majorTicksByValues).map(function(k) {\r\n            return majorTicksByValues[k]\r\n        }).concat(oldMinorTicks.slice(that._minorTicks.length, oldMinorTicks.length));\r\n        that._ticksToRemove.forEach(function(t) {\r\n            var _t$label;\r\n            return null === (_t$label = t.label) || void 0 === _t$label ? void 0 : _t$label.removeTitle()\r\n        });\r\n        if (ticks.breaks) {\r\n            that._seriesData.breaks = ticks.breaks\r\n        }\r\n        that._reinitTranslator(that._getViewportRange())\r\n    },\r\n    _reinitTranslator: function(range) {\r\n        var that = this;\r\n        var translator = that._translator;\r\n        if (that._isSynchronized) {\r\n            return\r\n        }\r\n        translator.updateBusinessRange(range)\r\n    },\r\n    _getViewportRange: function() {\r\n        return this.adjustViewport(this._seriesData)\r\n    },\r\n    setMarginOptions: function(options) {\r\n        this._marginOptions = options\r\n    },\r\n    getMarginOptions: function() {\r\n        var _this$_marginOptions;\r\n        return null !== (_this$_marginOptions = this._marginOptions) && void 0 !== _this$_marginOptions ? _this$_marginOptions : {}\r\n    },\r\n    _calculateRangeInterval: function(interval) {\r\n        var isDateTime = \"datetime\" === this._options.dataType;\r\n        var minArgs = [];\r\n        var addToArgs = function(value) {\r\n            (0, _type.isDefined)(value) && minArgs.push(isDateTime ? _date.default.dateToMilliseconds(value) : value)\r\n        };\r\n        addToArgs(this._tickInterval);\r\n        addToArgs(this._estimatedTickInterval);\r\n        (0, _type.isDefined)(interval) && minArgs.push(interval);\r\n        addToArgs(this._aggregationInterval);\r\n        return this._calculateWorkWeekInterval(_min.apply(this, minArgs))\r\n    },\r\n    _calculateWorkWeekInterval: function(businessInterval) {\r\n        var options = this._options;\r\n        if (\"datetime\" === options.dataType && options.workdaysOnly && businessInterval) {\r\n            var workWeek = options.workWeek.length * dateIntervals.day;\r\n            var weekend = dateIntervals.week - workWeek;\r\n            if (workWeek !== businessInterval && weekend < businessInterval) {\r\n                var weekendsCount = Math.ceil(businessInterval / dateIntervals.week);\r\n                businessInterval = weekend >= businessInterval ? dateIntervals.day : businessInterval - weekend * weekendsCount\r\n            } else {\r\n                if (weekend >= businessInterval && businessInterval > dateIntervals.day) {\r\n                    businessInterval = dateIntervals.day\r\n                }\r\n            }\r\n        }\r\n        return businessInterval\r\n    },\r\n    _getConvertIntervalCoefficient: function(intervalInPx, screenDelta) {\r\n        var ratioOfCanvasRange = this._translator.ratioOfCanvasRange();\r\n        return ratioOfCanvasRange / (ratioOfCanvasRange * screenDelta / (intervalInPx + screenDelta))\r\n    },\r\n    _calculateValueMargins: function(ticks) {\r\n        this._resetMargins();\r\n        var that = this;\r\n        var margins = that.getMarginOptions();\r\n        var marginSize = (margins.size || 0) / 2;\r\n        var options = that._options;\r\n        var dataRange = that._getViewportRange();\r\n        var viewPort = that.getViewport();\r\n        var screenDelta = that._getScreenDelta();\r\n        var isDiscrete = (options.type || \"\").indexOf(_axes_constants.default.discrete) !== -1;\r\n        var valueMarginsEnabled = options.valueMarginsEnabled && !isDiscrete && !that.customPositionIsBoundaryOrthogonalAxis();\r\n        var translator = that._translator;\r\n        var minValueMargin = options.minValueMargin;\r\n        var maxValueMargin = options.maxValueMargin;\r\n        var minPadding = 0;\r\n        var maxPadding = 0;\r\n        var interval = 0;\r\n        var rangeInterval;\r\n        if (dataRange.stubData || !screenDelta) {\r\n            return {\r\n                startPadding: 0,\r\n                endPadding: 0\r\n            }\r\n        }\r\n        if (that.isArgumentAxis && margins.checkInterval) {\r\n            rangeInterval = that._calculateRangeInterval(dataRange.interval);\r\n            var pxInterval = translator.getInterval(rangeInterval);\r\n            if (isFinite(pxInterval)) {\r\n                interval = Math.ceil(pxInterval / (2 * that._getConvertIntervalCoefficient(pxInterval, screenDelta)))\r\n            } else {\r\n                rangeInterval = 0\r\n            }\r\n        }\r\n        var minPercentPadding;\r\n        var maxPercentPadding;\r\n        var maxPaddingValue = screenDelta * MAX_MARGIN_VALUE / 2;\r\n        if (valueMarginsEnabled) {\r\n            if ((0, _type.isDefined)(minValueMargin)) {\r\n                minPercentPadding = isFinite(minValueMargin) ? minValueMargin : 0\r\n            } else {\r\n                if (!that.isArgumentAxis && margins.checkInterval && (0, _utils.valueOf)(dataRange.minVisible) > 0 && (0, _utils.valueOf)(dataRange.minVisible) === (0, _utils.valueOf)(dataRange.min)) {\r\n                    minPadding = MIN_BAR_MARGIN\r\n                } else {\r\n                    minPadding = Math.max(marginSize, interval);\r\n                    minPadding = Math.min(maxPaddingValue, minPadding)\r\n                }\r\n            }\r\n            if ((0, _type.isDefined)(maxValueMargin)) {\r\n                maxPercentPadding = isFinite(maxValueMargin) ? maxValueMargin : 0\r\n            } else {\r\n                if (!that.isArgumentAxis && margins.checkInterval && (0, _utils.valueOf)(dataRange.maxVisible) < 0 && (0, _utils.valueOf)(dataRange.maxVisible) === (0, _utils.valueOf)(dataRange.max)) {\r\n                    maxPadding = MIN_BAR_MARGIN\r\n                } else {\r\n                    maxPadding = Math.max(marginSize, interval);\r\n                    maxPadding = Math.min(maxPaddingValue, maxPadding)\r\n                }\r\n            }\r\n        }\r\n        var percentStick = margins.percentStick && !this.isArgumentAxis;\r\n        if (percentStick) {\r\n            if (1 === _abs(dataRange.max)) {\r\n                maxPadding = 0\r\n            }\r\n            if (1 === _abs(dataRange.min)) {\r\n                minPadding = 0\r\n            }\r\n        }\r\n        var canvasStartEnd = that._getCanvasStartEnd();\r\n        var commonMargin = 1 + (minPercentPadding || 0) + (maxPercentPadding || 0);\r\n        var screenDeltaWithMargins = (screenDelta - minPadding - maxPadding) / commonMargin || screenDelta;\r\n        if (void 0 !== minPercentPadding || void 0 !== maxPercentPadding) {\r\n            if (void 0 !== minPercentPadding) {\r\n                minPadding = screenDeltaWithMargins * minPercentPadding\r\n            }\r\n            if (void 0 !== maxPercentPadding) {\r\n                maxPadding = screenDeltaWithMargins * maxPercentPadding\r\n            }\r\n        }\r\n        var minValue;\r\n        var maxValue;\r\n        if (options.type !== _axes_constants.default.discrete && ticks && ticks.length > 1 && !options.skipViewportExtending && !viewPort.action && false !== options.endOnTick) {\r\n            var length = ticks.length;\r\n            var firstTickPosition = translator.translate(ticks[0].value);\r\n            var lastTickPosition = translator.translate(ticks[length - 1].value);\r\n            var invertMultiplier = firstTickPosition > lastTickPosition ? -1 : 1;\r\n            var minTickPadding = _max(invertMultiplier * (canvasStartEnd.start - firstTickPosition), 0);\r\n            var maxTickPadding = _max(invertMultiplier * (lastTickPosition - canvasStartEnd.end), 0);\r\n            if (minTickPadding > minPadding || maxTickPadding > maxPadding) {\r\n                var commonPadding = maxTickPadding + minTickPadding;\r\n                var coeff = that._getConvertIntervalCoefficient(commonPadding, screenDelta);\r\n                if (minTickPadding >= minPadding) {\r\n                    minValue = ticks[0].value\r\n                }\r\n                if (maxTickPadding >= maxPadding) {\r\n                    maxValue = ticks[length - 1].value\r\n                }\r\n                minPadding = _max(minTickPadding, minPadding) / coeff;\r\n                maxPadding = _max(maxTickPadding, maxPadding) / coeff\r\n            }\r\n        }\r\n        minPercentPadding = void 0 === minPercentPadding ? minPadding / screenDeltaWithMargins : minPercentPadding;\r\n        maxPercentPadding = void 0 === maxPercentPadding ? maxPadding / screenDeltaWithMargins : maxPercentPadding;\r\n        if (!isDiscrete) {\r\n            if (this._translator.isInverted()) {\r\n                var _minValue, _maxValue;\r\n                minValue = null !== (_minValue = minValue) && void 0 !== _minValue ? _minValue : translator.from(canvasStartEnd.start + screenDelta * minPercentPadding, -1);\r\n                maxValue = null !== (_maxValue = maxValue) && void 0 !== _maxValue ? _maxValue : translator.from(canvasStartEnd.end - screenDelta * maxPercentPadding, 1)\r\n            } else {\r\n                var _minValue2, _maxValue2;\r\n                minValue = null !== (_minValue2 = minValue) && void 0 !== _minValue2 ? _minValue2 : translator.from(canvasStartEnd.start - screenDelta * minPercentPadding, -1);\r\n                maxValue = null !== (_maxValue2 = maxValue) && void 0 !== _maxValue2 ? _maxValue2 : translator.from(canvasStartEnd.end + screenDelta * maxPercentPadding, 1)\r\n            }\r\n        }\r\n        var _that$getCorrectedVal = that.getCorrectedValuesToZero(minValue, maxValue),\r\n            correctedMin = _that$getCorrectedVal.correctedMin,\r\n            correctedMax = _that$getCorrectedVal.correctedMax,\r\n            start = _that$getCorrectedVal.start,\r\n            end = _that$getCorrectedVal.end;\r\n        minPadding = null !== start && void 0 !== start ? start : minPadding;\r\n        maxPadding = null !== end && void 0 !== end ? end : maxPadding;\r\n        return {\r\n            startPadding: translator.isInverted() ? maxPadding : minPadding,\r\n            endPadding: translator.isInverted() ? minPadding : maxPadding,\r\n            minValue: null !== correctedMin && void 0 !== correctedMin ? correctedMin : minValue,\r\n            maxValue: null !== correctedMax && void 0 !== correctedMax ? correctedMax : maxValue,\r\n            interval: rangeInterval,\r\n            isSpacedMargin: minPadding === maxPadding && 0 !== minPadding\r\n        }\r\n    },\r\n    getCorrectedValuesToZero: function(minValue, maxValue) {\r\n        var that = this;\r\n        var translator = that._translator;\r\n        var canvasStartEnd = that._getCanvasStartEnd();\r\n        var dataRange = that._getViewportRange();\r\n        var screenDelta = that._getScreenDelta();\r\n        var options = that._options;\r\n        var start;\r\n        var end;\r\n        var correctedMin;\r\n        var correctedMax;\r\n        var correctZeroLevel = function(minPoint, maxPoint) {\r\n            var minExpectedPadding = _abs(canvasStartEnd.start - minPoint);\r\n            var maxExpectedPadding = _abs(canvasStartEnd.end - maxPoint);\r\n            var coeff = that._getConvertIntervalCoefficient(minExpectedPadding + maxExpectedPadding, screenDelta);\r\n            start = minExpectedPadding / coeff;\r\n            end = maxExpectedPadding / coeff\r\n        };\r\n        if (!that.isArgumentAxis && \"datetime\" !== options.dataType) {\r\n            if (minValue * dataRange.min <= 0 && minValue * dataRange.minVisible <= 0) {\r\n                correctZeroLevel(translator.translate(0), translator.translate(maxValue));\r\n                correctedMin = 0\r\n            }\r\n            if (maxValue * dataRange.max <= 0 && maxValue * dataRange.maxVisible <= 0) {\r\n                correctZeroLevel(translator.translate(minValue), translator.translate(0));\r\n                correctedMax = 0\r\n            }\r\n        }\r\n        return {\r\n            start: isFinite(start) ? start : null,\r\n            end: isFinite(end) ? end : null,\r\n            correctedMin: correctedMin,\r\n            correctedMax: correctedMax\r\n        }\r\n    },\r\n    applyMargins: function() {\r\n        if (this._isSynchronized) {\r\n            return\r\n        }\r\n        var margins = this._calculateValueMargins(this._majorTicks);\r\n        var canvas = (0, _extend.extend)({}, this._canvas, {\r\n            startPadding: margins.startPadding,\r\n            endPadding: margins.endPadding\r\n        });\r\n        this._translator.updateCanvas(this._processCanvas(canvas));\r\n        if (isFinite(margins.interval)) {\r\n            var br = this._translator.getBusinessRange();\r\n            br.addRange({\r\n                interval: margins.interval\r\n            });\r\n            this._translator.updateBusinessRange(br)\r\n        }\r\n    },\r\n    _resetMargins: function() {\r\n        this._reinitTranslator(this._getViewportRange());\r\n        if (this._canvas) {\r\n            this._translator.updateCanvas(this._processCanvas(this._canvas))\r\n        }\r\n    },\r\n    _createConstantLines: function() {\r\n        var _this2 = this;\r\n        var constantLines = (this._options.constantLines || []).map(function(o) {\r\n            return (0, _constant_line.default)(_this2, o)\r\n        });\r\n        this._outsideConstantLines = constantLines.filter(function(l) {\r\n            return \"outside\" === l.labelPosition\r\n        });\r\n        this._insideConstantLines = constantLines.filter(function(l) {\r\n            return \"inside\" === l.labelPosition\r\n        })\r\n    },\r\n    draw: function(canvas, borderOptions) {\r\n        var that = this;\r\n        var options = this._options;\r\n        that.borderOptions = borderOptions || {\r\n            visible: false\r\n        };\r\n        that._resetMargins();\r\n        that.createTicks(canvas);\r\n        that.applyMargins();\r\n        that._clearAxisGroups();\r\n        initTickCoords(that._majorTicks);\r\n        initTickCoords(that._minorTicks);\r\n        initTickCoords(that._boundaryTicks);\r\n        that._axisGroup.append(that._axesContainerGroup);\r\n        that._drawAxis();\r\n        that._drawTitle();\r\n        drawTickMarks(that._majorTicks, options.tick);\r\n        drawTickMarks(that._minorTicks, options.minorTick);\r\n        drawTickMarks(that._boundaryTicks, options.tick);\r\n        var drawGridLine = that._getGridLineDrawer();\r\n        drawGrids(that._majorTicks, drawGridLine);\r\n        drawGrids(that._minorTicks, drawGridLine);\r\n        callAction(that._majorTicks, \"drawLabel\", that._getViewportRange(), that._getTemplate());\r\n        that._templatesRendered && that._templatesRendered.reject();\r\n        that._templatesRendered = new _deferred.Deferred;\r\n        _deferred.when.apply(this, that._majorTicks.map(function(tick) {\r\n            return tick.getTemplateDeferred()\r\n        })).done(function() {\r\n            that._templatesRendered.resolve()\r\n        });\r\n        that._majorTicks.forEach(function(tick) {\r\n            tick.labelRotationAngle = 0;\r\n            tick.labelAlignment = void 0;\r\n            tick.labelOffset = 0\r\n        });\r\n        callAction(that._outsideConstantLines.concat(that._insideConstantLines), \"draw\");\r\n        callAction(that._strips, \"draw\");\r\n        that._dateMarkers = that._drawDateMarkers() || [];\r\n        that._labelAxesGroup && that._axisStripLabelGroup.append(that._labelAxesGroup);\r\n        that._gridContainerGroup && that._axisGridGroup.append(that._gridContainerGroup);\r\n        that._stripsGroup && that._axisStripGroup.append(that._stripsGroup);\r\n        if (that._constantLinesGroup) {\r\n            that._axisConstantLineGroups.above.inside.append(that._constantLinesGroup.above);\r\n            that._axisConstantLineGroups.above.outside1.append(that._constantLinesGroup.above);\r\n            that._axisConstantLineGroups.above.outside2.append(that._constantLinesGroup.above);\r\n            that._axisConstantLineGroups.under.inside.append(that._constantLinesGroup.under);\r\n            that._axisConstantLineGroups.under.outside1.append(that._constantLinesGroup.under);\r\n            that._axisConstantLineGroups.under.outside2.append(that._constantLinesGroup.under)\r\n        }\r\n        that._measureTitle();\r\n        measureLabels(that._majorTicks);\r\n        !options.label.template && that._applyWordWrap();\r\n        measureLabels(that._outsideConstantLines);\r\n        measureLabels(that._insideConstantLines);\r\n        measureLabels(that._strips);\r\n        measureLabels(that._dateMarkers);\r\n        that._adjustConstantLineLabels(that._insideConstantLines);\r\n        that._adjustStripLabels();\r\n        var offset = that._constantLabelOffset = that._adjustConstantLineLabels(that._outsideConstantLines);\r\n        if (!that._translator.getBusinessRange().isEmpty()) {\r\n            that._setLabelsPlacement();\r\n            offset = that._adjustLabels(offset)\r\n        }\r\n        offset = that._adjustDateMarkers(offset);\r\n        that._adjustTitle(offset)\r\n    },\r\n    getTemplatesDef: function() {\r\n        return this._templatesRendered\r\n    },\r\n    setRenderedState: function(state) {\r\n        this._drawn = state\r\n    },\r\n    isRendered: function() {\r\n        return this._drawn\r\n    },\r\n    _applyWordWrap: function() {\r\n        var that = this;\r\n        var convertedTickInterval;\r\n        var textWidth;\r\n        var textHeight;\r\n        var options = this._options;\r\n        var tickInterval = that._tickInterval;\r\n        if ((0, _type.isDefined)(tickInterval)) {\r\n            convertedTickInterval = that.getTranslator().getInterval(\"datetime\" === options.dataType ? _date.default.dateToMilliseconds(tickInterval) : tickInterval)\r\n        }\r\n        var displayMode = that._validateDisplayMode(options.label.displayMode);\r\n        var overlappingMode = that._validateOverlappingMode(options.label.overlappingBehavior, displayMode);\r\n        var wordWrapMode = options.label.wordWrap || \"none\";\r\n        var overflowMode = options.label.textOverflow || \"none\";\r\n        if ((\"none\" !== wordWrapMode || \"none\" !== overflowMode) && displayMode !== ROTATE && overlappingMode !== ROTATE && \"auto\" !== overlappingMode) {\r\n            var usefulSpace = (0, _type.isDefined)(options.placeholderSize) ? options.placeholderSize - options.label.indentFromAxis : void 0;\r\n            if (that._isHorizontal) {\r\n                textWidth = convertedTickInterval;\r\n                textHeight = usefulSpace\r\n            } else {\r\n                textWidth = usefulSpace;\r\n                textHeight = convertedTickInterval\r\n            }\r\n            var correctByWidth = false;\r\n            var correctByHeight = false;\r\n            if (textWidth) {\r\n                if (that._majorTicks.some(function(tick) {\r\n                        return tick.labelBBox.width > textWidth\r\n                    })) {\r\n                    correctByWidth = true\r\n                }\r\n            }\r\n            if (textHeight) {\r\n                if (that._majorTicks.some(function(tick) {\r\n                        return tick.labelBBox.height > textHeight\r\n                    })) {\r\n                    correctByHeight = true\r\n                }\r\n            }\r\n            if (correctByWidth || correctByHeight) {\r\n                that._majorTicks.forEach(function(tick) {\r\n                    tick.label && tick.label.setMaxSize(textWidth, textHeight, options.label)\r\n                });\r\n                measureLabels(that._majorTicks)\r\n            }\r\n        }\r\n    },\r\n    _measureTitle: _common.noop,\r\n    animate: function() {\r\n        callAction(this._majorTicks, \"animateLabels\")\r\n    },\r\n    updateSize: function(canvas, animate) {\r\n        var updateTitle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;\r\n        var that = this;\r\n        that.updateCanvas(canvas);\r\n        if (updateTitle) {\r\n            that._checkTitleOverflow();\r\n            that._measureTitle();\r\n            that._updateTitleCoords()\r\n        }\r\n        that._reinitTranslator(that._getViewportRange());\r\n        that.applyMargins();\r\n        var animationEnabled = !that._firstDrawing && animate;\r\n        var options = this._options;\r\n        initTickCoords(that._majorTicks);\r\n        initTickCoords(that._minorTicks);\r\n        initTickCoords(that._boundaryTicks);\r\n        if (this._resetApplyingAnimation && !this._firstDrawing) {\r\n            that._resetStartCoordinates()\r\n        }\r\n        cleanUpInvalidTicks(that._majorTicks);\r\n        cleanUpInvalidTicks(that._minorTicks);\r\n        cleanUpInvalidTicks(that._boundaryTicks);\r\n        if (this._axisElement) {\r\n            that._updateAxisElementPosition()\r\n        }\r\n        updateTicksPosition(that._majorTicks, options.tick, animationEnabled);\r\n        updateTicksPosition(that._minorTicks, options.minorTick, animationEnabled);\r\n        updateTicksPosition(that._boundaryTicks, options.tick);\r\n        callAction(that._majorTicks, \"updateLabelPosition\", animationEnabled);\r\n        that._outsideConstantLines.concat(that._insideConstantLines || []).forEach(function(l) {\r\n            return l.updatePosition(animationEnabled)\r\n        });\r\n        callAction(that._strips, \"updatePosition\", animationEnabled);\r\n        updateGridsPosition(that._majorTicks, animationEnabled);\r\n        updateGridsPosition(that._minorTicks, animationEnabled);\r\n        if (animationEnabled) {\r\n            callAction(that._ticksToRemove || [], \"fadeOutElements\")\r\n        }\r\n        that.prepareAnimation();\r\n        that._ticksToRemove = null;\r\n        if (!that._translator.getBusinessRange().isEmpty()) {\r\n            that._firstDrawing = false\r\n        }\r\n        this._resetApplyingAnimation = false\r\n    },\r\n    prepareAnimation: function() {\r\n        var that = this;\r\n        var action = \"saveCoords\";\r\n        callAction(that._majorTicks, action);\r\n        callAction(that._minorTicks, action);\r\n        callAction(that._insideConstantLines, action);\r\n        callAction(that._outsideConstantLines, action);\r\n        callAction(that._strips, action)\r\n    },\r\n    _resetStartCoordinates: function() {\r\n        var that = this;\r\n        var action = \"resetCoordinates\";\r\n        callAction(that._majorTicks, action);\r\n        callAction(that._minorTicks, action);\r\n        callAction(that._insideConstantLines, action);\r\n        callAction(that._outsideConstantLines, action);\r\n        callAction(that._strips, action)\r\n    },\r\n    applyClipRects: function(elementsClipID, canvasClipID) {\r\n        this._axisGroup.attr({\r\n            \"clip-path\": canvasClipID\r\n        });\r\n        this._axisStripGroup.attr({\r\n            \"clip-path\": elementsClipID\r\n        })\r\n    },\r\n    _validateVisualRange: function(optionValue) {\r\n        var range = (0, _utils.getVizRangeObject)(optionValue);\r\n        if (void 0 !== range.startValue) {\r\n            range.startValue = this.validateUnit(range.startValue)\r\n        }\r\n        if (void 0 !== range.endValue) {\r\n            range.endValue = this.validateUnit(range.endValue)\r\n        }\r\n        return (0, _utils.convertVisualRangeObject)(range, !_isArray(optionValue))\r\n    },\r\n    _validateOptions: function(options) {\r\n        var that = this;\r\n        options.wholeRange = that._validateVisualRange(options.wholeRange);\r\n        options.visualRange = options._customVisualRange = that._validateVisualRange(options._customVisualRange);\r\n        that._setVisualRange(options._customVisualRange);\r\n    },\r\n    beforeCleanGroups: function() {\r\n        this._options.label.template && this._axisElementsGroup && this._axisElementsGroup.linkRemove()\r\n    },\r\n    afterCleanGroups: function() {\r\n        this._options.label.template && this._axisElementsGroup && this._axisElementsGroup.linkAppend()\r\n    },\r\n    validate: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var dataType = that.isArgumentAxis ? options.argumentType : options.valueType;\r\n        var parser = dataType ? (0, _parse_utils.getParser)(dataType) : function(unit) {\r\n            return unit\r\n        };\r\n        that.parser = parser;\r\n        options.dataType = dataType;\r\n        that._validateOptions(options)\r\n    },\r\n    resetVisualRange: function(isSilent) {\r\n        this._seriesData.minVisible = this._seriesData.min;\r\n        this._seriesData.maxVisible = this._seriesData.max;\r\n        this.handleZooming([null, null], {\r\n            start: !!isSilent,\r\n            end: !!isSilent\r\n        })\r\n    },\r\n    _setVisualRange: function(visualRange, allowPartialUpdate) {\r\n        var range = this.adjustRange((0, _utils.getVizRangeObject)(visualRange));\r\n        if (allowPartialUpdate) {\r\n            (0, _type.isDefined)(range.startValue) && (this._viewport.startValue = range.startValue);\r\n            (0, _type.isDefined)(range.endValue) && (this._viewport.endValue = range.endValue)\r\n        } else {\r\n            this._viewport = range\r\n        }\r\n    },\r\n    _applyZooming: function(visualRange, allowPartialUpdate) {\r\n        var that = this;\r\n        that._resetVisualRangeOption();\r\n        that._setVisualRange(visualRange, allowPartialUpdate);\r\n        var viewPort = that.getViewport();\r\n        that._seriesData.userBreaks = that._getScaleBreaks(that._options, {\r\n            minVisible: viewPort.startValue,\r\n            maxVisible: viewPort.endValue\r\n        }, that._series, that.isArgumentAxis);\r\n        that._translator.updateBusinessRange(that._getViewportRange())\r\n    },\r\n    getZoomStartEventArg: function(event, actionType) {\r\n        return {\r\n            axis: this,\r\n            range: this.visualRange(),\r\n            cancel: false,\r\n            event: event,\r\n            actionType: actionType\r\n        }\r\n    },\r\n    _getZoomEndEventArg: function(previousRange, event, actionType, zoomFactor, shift) {\r\n        var newRange = this.visualRange();\r\n        return {\r\n            axis: this,\r\n            previousRange: previousRange,\r\n            range: newRange,\r\n            cancel: false,\r\n            event: event,\r\n            actionType: actionType,\r\n            zoomFactor: zoomFactor,\r\n            shift: shift,\r\n            rangeStart: newRange.startValue,\r\n            rangeEnd: newRange.endValue\r\n        }\r\n    },\r\n    getZoomBounds: function() {\r\n        var wholeRange = (0, _utils.getVizRangeObject)(this._options.wholeRange);\r\n        var range = this.getTranslator().getBusinessRange();\r\n        var secondPriorityRange = {\r\n            startValue: getZoomBoundValue(this._initRange.startValue, range.min),\r\n            endValue: getZoomBoundValue(this._initRange.endValue, range.max)\r\n        };\r\n        return {\r\n            startValue: getZoomBoundValue(wholeRange.startValue, secondPriorityRange.startValue),\r\n            endValue: getZoomBoundValue(wholeRange.endValue, secondPriorityRange.endValue)\r\n        }\r\n    },\r\n    setInitRange: function() {\r\n        this._initRange = {};\r\n        if (0 === Object.keys(this._options.wholeRange || {}).length) {\r\n            this._initRange = this.getZoomBounds()\r\n        }\r\n    },\r\n    _resetVisualRangeOption: function() {\r\n        this._options._customVisualRange = {}\r\n    },\r\n    getTemplatesGroups: function() {\r\n        var ticks = this._majorTicks;\r\n        if (ticks) {\r\n            return this._majorTicks.map(function(tick) {\r\n                return tick.templateContainer\r\n            }).filter(function(item) {\r\n                return (0, _type.isDefined)(item)\r\n            })\r\n        } else {\r\n            return []\r\n        }\r\n    },\r\n    setCustomVisualRange: function(range) {\r\n        this._options._customVisualRange = range\r\n    },\r\n    visualRange: function visualRange() {\r\n        var that = this;\r\n        var args = arguments;\r\n        var visualRange;\r\n        if (0 === args.length) {\r\n            var adjustedRange = that._getAdjustedBusinessRange();\r\n            var startValue = adjustedRange.minVisible;\r\n            var endValue = adjustedRange.maxVisible;\r\n            if (that._options.type === _axes_constants.default.discrete) {\r\n                var _startValue, _endValue;\r\n                startValue = null !== (_startValue = startValue) && void 0 !== _startValue ? _startValue : adjustedRange.categories[0];\r\n                endValue = null !== (_endValue = endValue) && void 0 !== _endValue ? _endValue : adjustedRange.categories[adjustedRange.categories.length - 1];\r\n                return {\r\n                    startValue: startValue,\r\n                    endValue: endValue,\r\n                    categories: (0, _utils.getCategoriesInfo)(adjustedRange.categories, startValue, endValue).categories\r\n                }\r\n            }\r\n            return {\r\n                startValue: startValue,\r\n                endValue: endValue\r\n            }\r\n        } else {\r\n            if (_isArray(args[0])) {\r\n                visualRange = args[0]\r\n            } else {\r\n                if ((0, _type.isPlainObject)(args[0])) {\r\n                    visualRange = (0, _extend.extend)({}, args[0])\r\n                } else {\r\n                    visualRange = [args[0], args[1]]\r\n                }\r\n            }\r\n        }\r\n        var zoomResults = that.handleZooming(visualRange, args[1]);\r\n        if (!zoomResults.isPrevented) {\r\n            that._visualRange(that, zoomResults)\r\n        }\r\n    },\r\n    handleZooming: function(visualRange, preventEvents, domEvent, action) {\r\n        var that = this;\r\n        preventEvents = preventEvents || {};\r\n        if ((0, _type.isDefined)(visualRange)) {\r\n            visualRange = that._validateVisualRange(visualRange);\r\n            visualRange.action = action\r\n        }\r\n        var zoomStartEvent = that.getZoomStartEventArg(domEvent, action);\r\n        var previousRange = zoomStartEvent.range;\r\n        !preventEvents.start && that._eventTrigger(\"zoomStart\", zoomStartEvent);\r\n        var zoomResults = {\r\n            isPrevented: zoomStartEvent.cancel,\r\n            skipEventRising: preventEvents.skipEventRising,\r\n            range: visualRange || zoomStartEvent.range\r\n        };\r\n        if (!zoomStartEvent.cancel) {\r\n            (0, _type.isDefined)(visualRange) && that._applyZooming(visualRange, preventEvents.allowPartialUpdate);\r\n            if (!(0, _type.isDefined)(that._storedZoomEndParams)) {\r\n                that._storedZoomEndParams = {\r\n                    startRange: previousRange,\r\n                    type: this.getOptions().type\r\n                }\r\n            }\r\n            that._storedZoomEndParams.event = domEvent;\r\n            that._storedZoomEndParams.action = action;\r\n            that._storedZoomEndParams.prevent = !!preventEvents.end\r\n        }\r\n        return zoomResults\r\n    },\r\n    handleZoomEnd: function() {\r\n        var that = this;\r\n        if ((0, _type.isDefined)(that._storedZoomEndParams) && !that._storedZoomEndParams.prevent) {\r\n            var previousRange = that._storedZoomEndParams.startRange;\r\n            var domEvent = that._storedZoomEndParams.event;\r\n            var action = that._storedZoomEndParams.action;\r\n            var previousBusinessRange = {\r\n                minVisible: previousRange.startValue,\r\n                maxVisible: previousRange.endValue,\r\n                categories: previousRange.categories\r\n            };\r\n            var typeIsNotChanged = that.getOptions().type === that._storedZoomEndParams.type;\r\n            var shift = typeIsNotChanged ? (0, _math2.adjust)(that.getVisualRangeCenter() - that.getVisualRangeCenter(previousBusinessRange)) : NaN;\r\n            var zoomFactor = typeIsNotChanged ? +(Math.round(that.getVisualRangeLength(previousBusinessRange) / (that.getVisualRangeLength() || 1) + \"e+2\") + \"e-2\") : NaN;\r\n            var zoomEndEvent = that._getZoomEndEventArg(previousRange, domEvent, action, zoomFactor, shift);\r\n            zoomEndEvent.cancel = that.checkZoomingLowerLimitOvercome(1 === zoomFactor ? \"pan\" : \"zoom\", zoomFactor).stopInteraction;\r\n            that._eventTrigger(\"zoomEnd\", zoomEndEvent);\r\n            if (zoomEndEvent.cancel) {\r\n                that._restorePreviousVisualRange(previousRange)\r\n            }\r\n            that._storedZoomEndParams = null\r\n        }\r\n    },\r\n    _restorePreviousVisualRange: function(previousRange) {\r\n        var that = this;\r\n        that._storedZoomEndParams = null;\r\n        that._applyZooming(previousRange);\r\n        that._visualRange(that, previousRange)\r\n    },\r\n    checkZoomingLowerLimitOvercome: function(actionType, zoomFactor, range) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var translator = that._translator;\r\n        var minZoom = options.minVisualRangeLength;\r\n        var correctedRange = range;\r\n        var visualRange;\r\n        var isOvercoming = \"zoom\" === actionType && zoomFactor >= 1;\r\n        var businessRange = translator.getBusinessRange();\r\n        if (range) {\r\n            visualRange = that.adjustRange((0, _utils.getVizRangeObject)(range));\r\n            visualRange = {\r\n                minVisible: visualRange.startValue,\r\n                maxVisible: visualRange.endValue,\r\n                categories: businessRange.categories\r\n            }\r\n        }\r\n        var beforeVisualRangeLength = that.getVisualRangeLength(businessRange);\r\n        var afterVisualRangeLength = that.getVisualRangeLength(visualRange);\r\n        if ((0, _type.isDefined)(minZoom) || \"discrete\" === options.type) {\r\n            minZoom = translator.convert(minZoom);\r\n            if (visualRange && minZoom < beforeVisualRangeLength && minZoom >= afterVisualRangeLength) {\r\n                correctedRange = (0, _utils.getVizRangeObject)(translator.getRangeByMinZoomValue(minZoom, visualRange));\r\n                isOvercoming = false\r\n            } else {\r\n                isOvercoming &= minZoom > afterVisualRangeLength\r\n            }\r\n        } else {\r\n            var canvasLength = that._translator.canvasLength;\r\n            var fullRange = {\r\n                minVisible: businessRange.min,\r\n                maxVisible: businessRange.max,\r\n                categories: businessRange.categories\r\n            };\r\n            isOvercoming &= that.getVisualRangeLength(fullRange) / canvasLength >= afterVisualRangeLength\r\n        }\r\n        return {\r\n            stopInteraction: !!isOvercoming,\r\n            correctedRange: correctedRange\r\n        }\r\n    },\r\n    dataVisualRangeIsReduced: function() {\r\n        var minDataValue;\r\n        var maxDataValue;\r\n        var translator = this.getTranslator();\r\n        if (\"discrete\" === this._options.type) {\r\n            var categories = translator.getBusinessRange().categories;\r\n            minDataValue = categories[0];\r\n            maxDataValue = categories[categories.length - 1]\r\n        } else {\r\n            var seriesData = this._seriesData;\r\n            minDataValue = seriesData.min;\r\n            maxDataValue = seriesData.max\r\n        }\r\n        if (!(0, _type.isDefined)(minDataValue) || !(0, _type.isDefined)(maxDataValue)) {\r\n            return false\r\n        }\r\n        var startPoint = translator.translate(minDataValue);\r\n        var endPoint = translator.translate(maxDataValue);\r\n        var edges = [Math.min(startPoint, endPoint), Math.max(startPoint, endPoint)];\r\n        var visualRange = this.visualRange();\r\n        var visualRangeStartPoint = translator.translate(visualRange.startValue);\r\n        var visualRangeEndPoint = translator.translate(visualRange.endValue);\r\n        return visualRangeStartPoint > edges[0] && visualRangeStartPoint < edges[1] || visualRangeEndPoint > edges[0] && visualRangeEndPoint < edges[1] || visualRangeStartPoint === visualRangeEndPoint && edges[0] !== edges[1]\r\n    },\r\n    isExtremePosition: function(isMax) {\r\n        var extremeDataValue;\r\n        var seriesData;\r\n        if (\"discrete\" === this._options.type) {\r\n            seriesData = this._translator.getBusinessRange();\r\n            extremeDataValue = isMax ? seriesData.categories[seriesData.categories.length - 1] : seriesData.categories[0]\r\n        } else {\r\n            seriesData = this.getZoomBounds();\r\n            extremeDataValue = isMax ? seriesData.endValue : seriesData.startValue\r\n        }\r\n        var translator = this.getTranslator();\r\n        var extremePoint = translator.translate(extremeDataValue);\r\n        var visualRange = this.visualRange();\r\n        var visualRangePoint = isMax ? translator.translate(visualRange.endValue) : translator.translate(visualRange.startValue);\r\n        return _abs(visualRangePoint - extremePoint) < SCROLL_THRESHOLD\r\n    },\r\n    getViewport: function() {\r\n        return this._viewport\r\n    },\r\n    getFullTicks: function() {\r\n        var majors = this._majorTicks || [];\r\n        if (this._options.type === _axes_constants.default.discrete) {\r\n            return convertTicksToValues(majors)\r\n        } else {\r\n            return convertTicksToValues(majors.concat(this._minorTicks, this._boundaryTicks)).sort(function(a, b) {\r\n                return (0, _utils.valueOf)(a) - (0, _utils.valueOf)(b)\r\n            })\r\n        }\r\n    },\r\n    measureLabels: function(canvas, withIndents) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var widthAxis = options.visible ? options.width : 0;\r\n        var ticks;\r\n        var indent = withIndents ? options.label.indentFromAxis + .5 * options.tick.length : 0;\r\n        var tickInterval;\r\n        var viewportRange = that._getViewportRange();\r\n        if (viewportRange.isEmpty() || !options.label.visible || !that._axisElementsGroup) {\r\n            return {\r\n                height: widthAxis,\r\n                width: widthAxis,\r\n                x: 0,\r\n                y: 0\r\n            }\r\n        }\r\n        if (that._majorTicks) {\r\n            ticks = convertTicksToValues(that._majorTicks)\r\n        } else {\r\n            that.updateCanvas(canvas);\r\n            ticks = that._createTicksAndLabelFormat(viewportRange, _common.noop);\r\n            tickInterval = ticks.tickInterval;\r\n            ticks = ticks.ticks\r\n        }\r\n        var maxText = ticks.reduce(function(prevLabel, tick, index) {\r\n            var label = that.formatLabel(tick, options.label, viewportRange, void 0, tickInterval, ticks);\r\n            if (prevLabel.length < label.length) {\r\n                return label\r\n            } else {\r\n                return prevLabel\r\n            }\r\n        }, that.formatLabel(ticks[0], options.label, viewportRange, void 0, tickInterval, ticks));\r\n        var text = that._renderer.text(maxText, 0, 0).css(that._textFontStyles).attr(that._textOptions).append(that._renderer.root);\r\n        var box = text.getBBox();\r\n        text.remove();\r\n        return {\r\n            x: box.x,\r\n            y: box.y,\r\n            width: box.width + indent,\r\n            height: box.height + indent\r\n        }\r\n    },\r\n    _setLabelsPlacement: function() {\r\n        if (!this._options.label.visible) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var labelOpt = that._options.label;\r\n        var displayMode = that._validateDisplayMode(labelOpt.displayMode);\r\n        var overlappingMode = that._validateOverlappingMode(labelOpt.overlappingBehavior, displayMode);\r\n        var ignoreOverlapping = \"none\" === overlappingMode || \"ignore\" === overlappingMode;\r\n        var behavior = {\r\n            rotationAngle: labelOpt.rotationAngle,\r\n            staggeringSpacing: labelOpt.staggeringSpacing\r\n        };\r\n        var notRecastStep;\r\n        var boxes = that._majorTicks.map(function(tick) {\r\n            return tick.labelBBox\r\n        });\r\n        var step = that._getStep(boxes);\r\n        switch (displayMode) {\r\n            case ROTATE:\r\n                if (ignoreOverlapping) {\r\n                    notRecastStep = true;\r\n                    step = 1\r\n                }\r\n                that._applyLabelMode(displayMode, step, boxes, labelOpt, notRecastStep);\r\n                break;\r\n            case \"stagger\":\r\n                if (ignoreOverlapping) {\r\n                    step = 2\r\n                }\r\n                that._applyLabelMode(displayMode, _max(step, 2), boxes, labelOpt);\r\n                break;\r\n            default:\r\n                that._applyLabelOverlapping(boxes, overlappingMode, step, behavior)\r\n        }\r\n    },\r\n    _applyLabelOverlapping: function(boxes, mode, step, behavior) {\r\n        var that = this;\r\n        var labelOpt = that._options.label;\r\n        var majorTicks = that._majorTicks;\r\n        if (\"none\" === mode || \"ignore\" === mode) {\r\n            return\r\n        }\r\n        var checkLabels = function(box, index, array) {\r\n            if (0 === index) {\r\n                return false\r\n            }\r\n            return _axes_constants.default.areLabelsOverlap(box, array[index - 1], labelOpt.minSpacing, labelOpt.alignment)\r\n        };\r\n        if (step > 1 && boxes.some(checkLabels)) {\r\n            that._applyLabelMode(mode, step, boxes, behavior)\r\n        }\r\n        that._checkBoundedLabelsOverlapping(majorTicks, boxes, mode)\r\n    },\r\n    _applyLabelMode: function(mode, step, boxes, behavior, notRecastStep) {\r\n        var that = this;\r\n        var majorTicks = that._majorTicks;\r\n        var labelOpt = that._options.label;\r\n        var angle = behavior.rotationAngle;\r\n        var labelHeight;\r\n        var alignment;\r\n        var func;\r\n        switch (mode) {\r\n            case ROTATE:\r\n                if (!labelOpt.userAlignment) {\r\n                    alignment = angle < 0 ? RIGHT : LEFT;\r\n                    if (angle % 90 === 0) {\r\n                        alignment = CENTER\r\n                    }\r\n                }\r\n                step = notRecastStep ? step : that._getStep(boxes, angle);\r\n                func = function(tick) {\r\n                    var contentContainer = tick.getContentContainer();\r\n                    if (!contentContainer) {\r\n                        return\r\n                    }\r\n                    contentContainer.rotate(angle);\r\n                    tick.labelRotationAngle = angle;\r\n                    alignment && (tick.labelAlignment = alignment)\r\n                };\r\n                updateLabels(majorTicks, step, func);\r\n                break;\r\n            case \"stagger\":\r\n                labelHeight = that._getMaxLabelHeight(boxes, behavior.staggeringSpacing);\r\n                func = function(tick, index) {\r\n                    if (index / (step - 1) % 2 !== 0) {\r\n                        tick.labelOffset = labelHeight\r\n                    }\r\n                };\r\n                updateLabels(majorTicks, step - 1, func);\r\n                break;\r\n            case \"auto\":\r\n            case \"_auto\":\r\n                if (2 === step) {\r\n                    that._applyLabelMode(\"stagger\", step, boxes, behavior)\r\n                } else {\r\n                    that._applyLabelMode(ROTATE, step, boxes, {\r\n                        rotationAngle: getOptimalAngle(boxes, labelOpt)\r\n                    })\r\n                }\r\n                break;\r\n            default:\r\n                updateLabels(majorTicks, step)\r\n        }\r\n    },\r\n    getMarkerTrackers: _common.noop,\r\n    _drawDateMarkers: _common.noop,\r\n    _adjustDateMarkers: _common.noop,\r\n    coordsIn: _common.noop,\r\n    areCoordsOutsideAxis: _common.noop,\r\n    _getSkippedCategory: _common.noop,\r\n    _initAxisPositions: _common.noop,\r\n    _drawTitle: _common.noop,\r\n    _updateTitleCoords: _common.noop,\r\n    _adjustConstantLineLabels: _common.noop,\r\n    _createTranslator: function() {\r\n        return new _translator2d.Translator2D({}, {}, {})\r\n    },\r\n    _updateTranslator: function() {\r\n        var translator = this._translator;\r\n        translator.update(translator.getBusinessRange(), this._canvas || {}, this._getTranslatorOptions())\r\n    },\r\n    _getTranslatorOptions: function() {\r\n        var _options$workWeek2, _options$breakStyle$w, _options$breakStyle;\r\n        var options = this._options;\r\n        return {\r\n            isHorizontal: this._isHorizontal,\r\n            shiftZeroValue: !this.isArgumentAxis,\r\n            interval: options.semiDiscreteInterval,\r\n            firstDayOfWeek: null === (_options$workWeek2 = options.workWeek) || void 0 === _options$workWeek2 ? void 0 : _options$workWeek2[0],\r\n            stick: this._getStick(),\r\n            breaksSize: null !== (_options$breakStyle$w = null === (_options$breakStyle = options.breakStyle) || void 0 === _options$breakStyle ? void 0 : _options$breakStyle.width) && void 0 !== _options$breakStyle$w ? _options$breakStyle$w : 0\r\n        }\r\n    },\r\n    getVisibleArea: function() {\r\n        var canvas = this._getCanvasStartEnd();\r\n        return [canvas.start, canvas.end].sort(function(a, b) {\r\n            return a - b\r\n        })\r\n    },\r\n    _getCanvasStartEnd: function() {\r\n        var isHorizontal = this._isHorizontal;\r\n        var canvas = this._canvas || {};\r\n        var invert = this._translator.getBusinessRange().invert;\r\n        var coords = isHorizontal ? [canvas.left, canvas.width - canvas.right] : [canvas.height - canvas.bottom, canvas.top];\r\n        invert && coords.reverse();\r\n        return {\r\n            start: coords[0],\r\n            end: coords[1]\r\n        }\r\n    },\r\n    _getScreenDelta: function() {\r\n        var that = this;\r\n        var canvas = that._getCanvasStartEnd();\r\n        var breaks = that._seriesData ? that._seriesData.breaks || [] : [];\r\n        var breaksLength = breaks.length;\r\n        var screenDelta = _abs(canvas.start - canvas.end);\r\n        return screenDelta - (breaksLength ? breaks[breaksLength - 1].cumulativeWidth : 0)\r\n    },\r\n    _getScaleBreaks: function() {\r\n        return []\r\n    },\r\n    _filterBreaks: function() {\r\n        return []\r\n    },\r\n    _adjustTitle: _common.noop,\r\n    _checkTitleOverflow: _common.noop,\r\n    getSpiderTicks: _common.noop,\r\n    setSpiderTicks: _common.noop,\r\n    _checkBoundedLabelsOverlapping: _common.noop,\r\n    drawScaleBreaks: _common.noop,\r\n    _visualRange: _common.noop,\r\n    _rotateConstantLine: _common.noop,\r\n    applyVisualRangeSetter: function(visualRangeSetter) {\r\n        this._visualRange = visualRangeSetter\r\n    },\r\n    getCategoriesSorter: function(argCategories) {\r\n        var sort;\r\n        if (this.isArgumentAxis) {\r\n            sort = argCategories\r\n        } else {\r\n            var categoriesSortingMethod = this._options.categoriesSortingMethod;\r\n            sort = null !== categoriesSortingMethod && void 0 !== categoriesSortingMethod ? categoriesSortingMethod : this._options.categories\r\n        }\r\n        return sort\r\n    },\r\n    _getAdjustedBusinessRange: function() {\r\n        return this.adjustViewport(this._translator.getBusinessRange())\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointment_model.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar DATE_FILTER_POSITION = 0;\r\nvar USER_FILTER_POSITION = 1;\r\nvar FilterMaker = function() {\r\n    function FilterMaker(dataAccessors) {\r\n        _classCallCheck(this, FilterMaker);\r\n        this._filterRegistry = null;\r\n        this._dataAccessors = dataAccessors\r\n    }\r\n    _createClass(FilterMaker, [{\r\n        key: \"isRegistered\",\r\n        value: function() {\r\n            return !!this._filterRegistry\r\n        }\r\n    }, {\r\n        key: \"clearRegistry\",\r\n        value: function() {\r\n            delete this._filterRegistry\r\n        }\r\n    }, {\r\n        key: \"make\",\r\n        value: function(type, args) {\r\n            if (!this._filterRegistry) {\r\n                this._filterRegistry = {}\r\n            }\r\n            this._make(type).apply(this, args)\r\n        }\r\n    }, {\r\n        key: \"_make\",\r\n        value: function(type) {\r\n            var _this = this;\r\n            switch (type) {\r\n                case \"date\":\r\n                    return function(min, max, useAccessors) {\r\n                        var startDate = useAccessors ? _this._dataAccessors.getter.startDate : _this._dataAccessors.expr.startDateExpr;\r\n                        var endDate = useAccessors ? _this._dataAccessors.getter.endDate : _this._dataAccessors.expr.endDateExpr;\r\n                        var recurrenceRule = _this._dataAccessors.expr.recurrenceRuleExpr;\r\n                        _this._filterRegistry.date = [\r\n                            [\r\n                                [endDate, \">\", min],\r\n                                [startDate, \"<\", max]\r\n                            ], \"or\", [recurrenceRule, \"startswith\", \"freq\"], \"or\", [\r\n                                [endDate, min],\r\n                                [startDate, min]\r\n                            ]\r\n                        ];\r\n                        if (!recurrenceRule) {\r\n                            _this._filterRegistry.date.splice(1, 2)\r\n                        }\r\n                    };\r\n                case \"user\":\r\n                    return function(userFilter) {\r\n                        _this._filterRegistry.user = userFilter\r\n                    }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"combine\",\r\n        value: function() {\r\n            var filter = [];\r\n            this._filterRegistry.date && filter.push(this._filterRegistry.date);\r\n            this._filterRegistry.user && filter.push(this._filterRegistry.user);\r\n            return filter\r\n        }\r\n    }, {\r\n        key: \"dateFilter\",\r\n        value: function() {\r\n            return this._filterRegistry.date\r\n        }\r\n    }]);\r\n    return FilterMaker\r\n}();\r\nvar compareDateWithStartDayHour = function(startDate, endDate, startDayHour, allDay, severalDays) {\r\n    var startTime = _date.default.dateTimeFromDecimal(startDayHour);\r\n    var result = startDate.getHours() >= startTime.hours && startDate.getMinutes() >= startTime.minutes || endDate.getHours() === startTime.hours && endDate.getMinutes() > startTime.minutes || endDate.getHours() > startTime.hours || severalDays || allDay;\r\n    return result\r\n};\r\nvar compareDateWithEndDayHour = function(startDate, endDate, startDayHour, endDayHour, allDay, severalDays, max, min) {\r\n    var hiddenInterval = (24 - endDayHour + startDayHour) * toMs(\"hour\");\r\n    var apptDuration = endDate.getTime() - startDate.getTime();\r\n    var delta = (hiddenInterval - apptDuration) / toMs(\"hour\");\r\n    var apptStartHour = startDate.getHours();\r\n    var apptStartMinutes = startDate.getMinutes();\r\n    var result;\r\n    var endTime = _date.default.dateTimeFromDecimal(endDayHour);\r\n    var startTime = _date.default.dateTimeFromDecimal(startDayHour);\r\n    result = apptStartHour < endTime.hours || apptStartHour === endTime.hours && apptStartMinutes < endTime.minutes || allDay && startDate <= max || severalDays && startDate < max && endDate > min && (apptStartHour < endTime.hours || 60 * endDate.getHours() + endDate.getMinutes() > 60 * startTime.hours);\r\n    if (apptDuration < hiddenInterval) {\r\n        if (apptStartHour > endTime.hours && apptStartMinutes > endTime.minutes && delta <= apptStartHour - endDayHour) {\r\n            result = false\r\n        }\r\n    }\r\n    return result\r\n};\r\nvar AppointmentModel = function() {\r\n    function AppointmentModel(dataSource, dataAccessors, baseAppointmentDuration) {\r\n        _classCallCheck(this, AppointmentModel);\r\n        this.setDataAccessors(dataAccessors);\r\n        this.setDataSource(dataSource);\r\n        this._updatedAppointmentKeys = [];\r\n        this._filterMaker = new FilterMaker(dataAccessors);\r\n        this._baseAppointmentDuration = baseAppointmentDuration\r\n    }\r\n    _createClass(AppointmentModel, [{\r\n        key: \"_createFilter\",\r\n        value: function(min, max, remoteFiltering, dateSerializationFormat) {\r\n            this._filterMaker.make(\"date\", [min, max]);\r\n            var userFilterPosition = this._excessFiltering() ? this._dataSource.filter()[USER_FILTER_POSITION] : this._dataSource.filter();\r\n            this._filterMaker.make(\"user\", [userFilterPosition]);\r\n            if (remoteFiltering) {\r\n                this._dataSource.filter(this._combineRemoteFilter(dateSerializationFormat))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_excessFiltering\",\r\n        value: function() {\r\n            var dateFilter = this._filterMaker.dateFilter();\r\n            var dataSourceFilter = this._dataSource.filter();\r\n            return dataSourceFilter && ((0, _common.equalByValue)(dataSourceFilter, dateFilter) || dataSourceFilter.length && (0, _common.equalByValue)(dataSourceFilter[DATE_FILTER_POSITION], dateFilter))\r\n        }\r\n    }, {\r\n        key: \"_combineFilter\",\r\n        value: function() {\r\n            return this._filterMaker.combine()\r\n        }\r\n    }, {\r\n        key: \"_getStoreKey\",\r\n        value: function(target) {\r\n            var store = this._dataSource.store();\r\n            return store.keyOf(target)\r\n        }\r\n    }, {\r\n        key: \"_filterAppointmentByResources\",\r\n        value: function(appointment, resources) {\r\n            var _this2 = this;\r\n            var result = false;\r\n            var i;\r\n            var len;\r\n            var resourceName;\r\n            var checkAppointmentResourceValues = function() {\r\n                var resourceGetter = _this2._dataAccessors.getter.resources[resourceName];\r\n                var resource;\r\n                if ((0, _type.isFunction)(resourceGetter)) {\r\n                    resource = resourceGetter(appointment)\r\n                }\r\n                var appointmentResourceValues = (0, _array.wrapToArray)(resource);\r\n                var resourceData = (0, _iterator.map)(resources[i].items, function(item) {\r\n                    return item.id\r\n                });\r\n                for (var j = 0, itemDataCount = appointmentResourceValues.length; j < itemDataCount; j++) {\r\n                    if ((0, _array.inArray)(appointmentResourceValues[j], resourceData) > -1) {\r\n                        return true\r\n                    }\r\n                }\r\n                return false\r\n            };\r\n            for (i = 0, len = resources.length; i < len; i++) {\r\n                resourceName = resources[i].name;\r\n                result = checkAppointmentResourceValues.call(this);\r\n                if (!result) {\r\n                    return false\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_filterAppointmentByRRule\",\r\n        value: function(appointment, min, max, startDayHour, endDayHour, firstDayOfWeek) {\r\n            var recurrenceRule = appointment.recurrenceRule;\r\n            var recurrenceException = appointment.recurrenceException;\r\n            var allDay = appointment.allDay;\r\n            var result = true;\r\n            var appointmentStartDate = appointment.startDate;\r\n            var appointmentEndDate = appointment.endDate;\r\n            var recurrenceProcessor = (0, _recurrence.getRecurrenceProcessor)();\r\n            if (allDay || this._appointmentPartInInterval(appointmentStartDate, appointmentEndDate, startDayHour, endDayHour)) {\r\n                var trimmedDates = this._trimDates(min, max);\r\n                min = trimmedDates.min;\r\n                max = new Date(trimmedDates.max.getTime() - toMs(\"minute\"))\r\n            }\r\n            if (recurrenceRule && !recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) {\r\n                result = appointmentEndDate > min && appointmentStartDate <= max\r\n            }\r\n            if (result && recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) {\r\n                result = recurrenceProcessor.hasRecurrence({\r\n                    rule: recurrenceRule,\r\n                    exception: recurrenceException,\r\n                    start: appointmentStartDate,\r\n                    end: appointmentEndDate,\r\n                    min: min,\r\n                    max: max,\r\n                    firstDayOfWeek: firstDayOfWeek\r\n                })\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_appointmentPartInInterval\",\r\n        value: function(startDate, endDate, startDayHour, endDayHour) {\r\n            var apptStartDayHour = startDate.getHours();\r\n            var apptEndDayHour = endDate.getHours();\r\n            return apptStartDayHour <= startDayHour && apptEndDayHour <= endDayHour && apptEndDayHour >= startDayHour || apptEndDayHour >= endDayHour && apptStartDayHour <= endDayHour && apptStartDayHour >= startDayHour\r\n        }\r\n    }, {\r\n        key: \"_createCombinedFilter\",\r\n        value: function(filterOptions, timeZoneCalculator) {\r\n            var dataAccessors = this._dataAccessors;\r\n            var startDayHour = filterOptions.startDayHour;\r\n            var endDayHour = filterOptions.endDayHour;\r\n            var min = new Date(filterOptions.min);\r\n            var max = new Date(filterOptions.max);\r\n            var resources = filterOptions.resources;\r\n            var firstDayOfWeek = filterOptions.firstDayOfWeek;\r\n            var getRecurrenceException = filterOptions.recurrenceException;\r\n            var that = this;\r\n            return [\r\n                [function(appointment) {\r\n                    var result = true;\r\n                    var startDate = new Date(dataAccessors.getter.startDate(appointment));\r\n                    var endDate = new Date(dataAccessors.getter.endDate(appointment));\r\n                    var appointmentTakesAllDay = that.appointmentTakesAllDay(appointment, startDayHour, endDayHour);\r\n                    var appointmentTakesSeveralDays = that.appointmentTakesSeveralDays(appointment);\r\n                    var isAllDay = dataAccessors.getter.allDay(appointment);\r\n                    var appointmentIsLong = appointmentTakesSeveralDays || appointmentTakesAllDay;\r\n                    var useRecurrence = (0, _type.isDefined)(dataAccessors.getter.recurrenceRule);\r\n                    var recurrenceRule;\r\n                    if (useRecurrence) {\r\n                        recurrenceRule = dataAccessors.getter.recurrenceRule(appointment)\r\n                    }\r\n                    if (resources && resources.length) {\r\n                        result = that._filterAppointmentByResources(appointment, resources)\r\n                    }\r\n                    if (appointmentTakesAllDay && false === filterOptions.allDay) {\r\n                        result = false\r\n                    }\r\n                    var startDateTimeZone = dataAccessors.getter.startDateTimeZone(appointment);\r\n                    var endDateTimeZone = dataAccessors.getter.endDateTimeZone(appointment);\r\n                    var comparableStartDate = timeZoneCalculator.createDate(startDate, {\r\n                        appointmentTimeZone: startDateTimeZone,\r\n                        path: \"toGrid\"\r\n                    });\r\n                    var comparableEndDate = timeZoneCalculator.createDate(endDate, {\r\n                        appointmentTimeZone: endDateTimeZone,\r\n                        path: \"toGrid\"\r\n                    });\r\n                    if (result && useRecurrence) {\r\n                        var recurrenceException = getRecurrenceException ? getRecurrenceException(appointment) : dataAccessors.getter.recurrenceException(appointment);\r\n                        result = that._filterAppointmentByRRule({\r\n                            startDate: comparableStartDate,\r\n                            endDate: comparableEndDate,\r\n                            recurrenceRule: recurrenceRule,\r\n                            recurrenceException: recurrenceException,\r\n                            allDay: appointmentTakesAllDay\r\n                        }, min, max, startDayHour, endDayHour, firstDayOfWeek)\r\n                    }\r\n                    if (result && comparableEndDate < min && appointmentIsLong && !isAllDay && (!useRecurrence || useRecurrence && !recurrenceRule)) {\r\n                        result = false\r\n                    }\r\n                    if (result && void 0 !== startDayHour && (!useRecurrence || !filterOptions.isVirtualScrolling)) {\r\n                        result = compareDateWithStartDayHour(comparableStartDate, comparableEndDate, startDayHour, appointmentTakesAllDay, appointmentTakesSeveralDays)\r\n                    }\r\n                    if (result && void 0 !== endDayHour) {\r\n                        result = compareDateWithEndDayHour(comparableStartDate, comparableEndDate, startDayHour, endDayHour, appointmentTakesAllDay, appointmentTakesSeveralDays, max, min)\r\n                    }\r\n                    if (result && useRecurrence && !recurrenceRule) {\r\n                        if (comparableEndDate < min && !isAllDay) {\r\n                            result = false\r\n                        }\r\n                    }\r\n                    return result\r\n                }]\r\n            ]\r\n        }\r\n    }, {\r\n        key: \"setDataSource\",\r\n        value: function(dataSource) {\r\n            this._dataSource = dataSource;\r\n            this.cleanModelState();\r\n            this._initStoreChangeHandlers();\r\n            this._filterMaker && this._filterMaker.clearRegistry()\r\n        }\r\n    }, {\r\n        key: \"_initStoreChangeHandlers\",\r\n        value: function() {\r\n            var _this3 = this;\r\n            var dataSource = this._dataSource;\r\n            var store = null === dataSource || void 0 === dataSource ? void 0 : dataSource.store();\r\n            if (store) {\r\n                store.on(\"updating\", function(newItem) {\r\n                    _this3._updatedAppointment = newItem\r\n                });\r\n                store.on(\"push\", function(pushItems) {\r\n                    var items = dataSource.items();\r\n                    var keyName = store.key();\r\n                    pushItems.forEach(function(pushItem) {\r\n                        var itemExists = 0 !== items.filter(function(item) {\r\n                            return item[keyName] === pushItem.key\r\n                        }).length;\r\n                        if (itemExists) {\r\n                            _this3._updatedAppointmentKeys.push({\r\n                                key: keyName,\r\n                                value: pushItem.key\r\n                            })\r\n                        } else {\r\n                            items.push(pushItem.data)\r\n                        }\r\n                    })\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getUpdatedAppointment\",\r\n        value: function() {\r\n            return this._updatedAppointment\r\n        }\r\n    }, {\r\n        key: \"getUpdatedAppointmentKeys\",\r\n        value: function() {\r\n            return this._updatedAppointmentKeys\r\n        }\r\n    }, {\r\n        key: \"cleanModelState\",\r\n        value: function() {\r\n            this._updatedAppointment = null;\r\n            this._updatedAppointmentKeys = []\r\n        }\r\n    }, {\r\n        key: \"setDataAccessors\",\r\n        value: function(dataAccessors) {\r\n            this._dataAccessors = dataAccessors;\r\n            this._filterMaker = new FilterMaker(dataAccessors)\r\n        }\r\n    }, {\r\n        key: \"filterByDate\",\r\n        value: function(min, max, remoteFiltering, dateSerializationFormat) {\r\n            if (!this._dataSource) {\r\n                return\r\n            }\r\n            var trimmedDates = this._trimDates(min, max);\r\n            if (!this._filterMaker.isRegistered()) {\r\n                this._createFilter(trimmedDates.min, trimmedDates.max, remoteFiltering, dateSerializationFormat)\r\n            } else {\r\n                var _this$_dataSource$fil;\r\n                this._filterMaker.make(\"date\", [trimmedDates.min, trimmedDates.max]);\r\n                if ((null === (_this$_dataSource$fil = this._dataSource.filter()) || void 0 === _this$_dataSource$fil ? void 0 : _this$_dataSource$fil.length) > 1) {\r\n                    var userFilter = this._serializeRemoteFilter([this._dataSource.filter()[1]], dateSerializationFormat);\r\n                    this._filterMaker.make(\"user\", userFilter)\r\n                }\r\n                if (remoteFiltering) {\r\n                    this._dataSource.filter(this._combineRemoteFilter(dateSerializationFormat))\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_combineRemoteFilter\",\r\n        value: function(dateSerializationFormat) {\r\n            var combinedFilter = this._filterMaker.combine();\r\n            return this._serializeRemoteFilter(combinedFilter, dateSerializationFormat)\r\n        }\r\n    }, {\r\n        key: \"_serializeRemoteFilter\",\r\n        value: function(filter, dateSerializationFormat) {\r\n            if (!Array.isArray(filter)) {\r\n                return filter\r\n            }\r\n            filter = (0, _extend.extend)([], filter);\r\n            var startDate = this._dataAccessors.expr.startDateExpr;\r\n            var endDate = this._dataAccessors.expr.endDateExpr;\r\n            if ((0, _type.isString)(filter[0])) {\r\n                if ((0, _config.default)().forceIsoDateParsing && filter.length > 1) {\r\n                    if (filter[0] === startDate || filter[0] === endDate) {\r\n                        filter[filter.length - 1] = _date_serialization.default.serializeDate(new Date(filter[filter.length - 1]), dateSerializationFormat)\r\n                    }\r\n                }\r\n            }\r\n            for (var i = 0; i < filter.length; i++) {\r\n                filter[i] = this._serializeRemoteFilter(filter[i], dateSerializationFormat)\r\n            }\r\n            return filter\r\n        }\r\n    }, {\r\n        key: \"_createAppointmentFilter\",\r\n        value: function(filterOptions, timeZoneCalculator) {\r\n            var combinedFilter = this._createCombinedFilter(filterOptions, timeZoneCalculator);\r\n            if (this._filterMaker.isRegistered()) {\r\n                this._filterMaker.make(\"user\", void 0);\r\n                var trimmedDates = this._trimDates(filterOptions.min, filterOptions.max);\r\n                this._filterMaker.make(\"date\", [trimmedDates.min, trimmedDates.max, true]);\r\n                var dateFilter = this.customizeDateFilter(this._filterMaker.combine(), timeZoneCalculator);\r\n                combinedFilter.push([dateFilter])\r\n            }\r\n            return combinedFilter\r\n        }\r\n    }, {\r\n        key: \"filterLoadedAppointments\",\r\n        value: function(filterOption, timeZoneCalculator) {\r\n            var combinedFilter = this._createAppointmentFilter(filterOption, timeZoneCalculator);\r\n            return (0, _query.default)(this.getPreparedDataItems()).filter(combinedFilter).toArray()\r\n        }\r\n    }, {\r\n        key: \"getPreparedDataItems\",\r\n        value: function() {\r\n            var _this4 = this;\r\n            var dataItems = this._dataSource.items();\r\n            return (0, _iterator.map)(dataItems, function(item) {\r\n                var startDate = new Date(_this4._dataAccessors.getter.startDate(item));\r\n                var endDate = new Date(_this4._dataAccessors.getter.endDate(item));\r\n                _this4.replaceWrongEndDate(item, startDate, endDate);\r\n                return item\r\n            })\r\n        }\r\n    }, {\r\n        key: \"replaceWrongEndDate\",\r\n        value: function(appointment, startDate, endDate) {\r\n            if (this._isEndDateWrong(startDate, endDate)) {\r\n                var isAllDay = this._dataAccessors.getter.allDay(appointment);\r\n                var calculatedEndDate = this._calculateAppointmentEndDate(isAllDay, startDate);\r\n                this._dataAccessors.setter.endDate(appointment, calculatedEndDate)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"filterLoadedVirtualAppointments\",\r\n        value: function(filterOptions, timeZoneCalculator, groupCount) {\r\n            var _this5 = this;\r\n            var combinedFilters = [];\r\n            var itemsToFilter = this.getPreparedDataItems();\r\n            var needPreFilter = groupCount > 0;\r\n            if (needPreFilter) {\r\n                itemsToFilter = itemsToFilter.filter(function(item) {\r\n                    for (var i = 0; i < filterOptions.length; ++i) {\r\n                        var resources = filterOptions[i].resources;\r\n                        if (_this5._filterAppointmentByResources(item, resources)) {\r\n                            return true\r\n                        }\r\n                    }\r\n                })\r\n            }\r\n            filterOptions.forEach(function(filterOption) {\r\n                combinedFilters.length && combinedFilters.push(\"or\");\r\n                var filter = _this5._createAppointmentFilter(filterOption, timeZoneCalculator);\r\n                combinedFilters.push(filter)\r\n            });\r\n            return (0, _query.default)(itemsToFilter).filter(combinedFilters).toArray()\r\n        }\r\n    }, {\r\n        key: \"_trimDates\",\r\n        value: function(min, max) {\r\n            var minCopy = _date.default.trimTime(new Date(min));\r\n            var maxCopy = _date.default.trimTime(new Date(max));\r\n            maxCopy.setDate(maxCopy.getDate() + 1);\r\n            return {\r\n                min: minCopy,\r\n                max: maxCopy\r\n            }\r\n        }\r\n    }, {\r\n        key: \"hasAllDayAppointments\",\r\n        value: function(items, startDayHour, endDayHour) {\r\n            if (!items) {\r\n                return false\r\n            }\r\n            var that = this;\r\n            var result = false;\r\n            (0, _iterator.each)(items, function(index, item) {\r\n                if (that.appointmentTakesAllDay(item, startDayHour, endDayHour)) {\r\n                    result = true;\r\n                    return false\r\n                }\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"appointmentTakesAllDay\",\r\n        value: function(appointment, startDayHour, endDayHour) {\r\n            var dataAccessors = this._dataAccessors;\r\n            var startDate = dataAccessors.getter.startDate(appointment);\r\n            var endDate = dataAccessors.getter.endDate(appointment);\r\n            var allDay = dataAccessors.getter.allDay(appointment);\r\n            return allDay || this._appointmentHasAllDayDuration(startDate, endDate, startDayHour, endDayHour)\r\n        }\r\n    }, {\r\n        key: \"_appointmentHasAllDayDuration\",\r\n        value: function(startDate, endDate, startDayHour, endDayHour) {\r\n            startDate = new Date(startDate);\r\n            endDate = new Date(endDate);\r\n            var dayDuration = 24;\r\n            var appointmentDurationInHours = this._getAppointmentDurationInHours(startDate, endDate);\r\n            return appointmentDurationInHours >= dayDuration || this._appointmentHasShortDayDuration(startDate, endDate, startDayHour, endDayHour)\r\n        }\r\n    }, {\r\n        key: \"_appointmentHasShortDayDuration\",\r\n        value: function(startDate, endDate, startDayHour, endDayHour) {\r\n            var appointmentDurationInHours = this._getAppointmentDurationInHours(startDate, endDate);\r\n            var shortDayDurationInHours = endDayHour - startDayHour;\r\n            return appointmentDurationInHours >= shortDayDurationInHours && startDate.getHours() === startDayHour && endDate.getHours() === endDayHour\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDurationInHours\",\r\n        value: function(startDate, endDate) {\r\n            return (endDate.getTime() - startDate.getTime()) / toMs(\"hour\")\r\n        }\r\n    }, {\r\n        key: \"appointmentTakesSeveralDays\",\r\n        value: function(appointment) {\r\n            var dataAccessors = this._dataAccessors;\r\n            var startDate = new Date(dataAccessors.getter.startDate(appointment));\r\n            var endDate = new Date(dataAccessors.getter.endDate(appointment));\r\n            return !_date.default.sameDate(startDate, endDate)\r\n        }\r\n    }, {\r\n        key: \"customizeDateFilter\",\r\n        value: function(dateFilter, timeZoneCalculator) {\r\n            var _this6 = this;\r\n            var currentFilter = (0, _extend.extend)(true, [], dateFilter);\r\n            return function(appointment) {\r\n                var startDate = new Date(_this6._dataAccessors.getter.startDate(appointment));\r\n                var endDate = new Date(_this6._dataAccessors.getter.endDate(appointment));\r\n                appointment = (0, _extend.extend)(true, {}, appointment);\r\n                var startDateTimeZone = _this6._dataAccessors.getter.startDateTimeZone(appointment);\r\n                var endDateTimeZone = _this6._dataAccessors.getter.endDateTimeZone(appointment);\r\n                var comparableStartDate = timeZoneCalculator.createDate(startDate, {\r\n                    appointmentTimeZone: startDateTimeZone,\r\n                    path: \"toGrid\"\r\n                });\r\n                var comparableEndDate = timeZoneCalculator.createDate(endDate, {\r\n                    appointmentTimeZone: endDateTimeZone,\r\n                    path: \"toGrid\"\r\n                });\r\n                _this6._dataAccessors.setter.startDate(appointment, comparableStartDate);\r\n                _this6._dataAccessors.setter.endDate(appointment, comparableEndDate);\r\n                return (0, _query.default)([appointment]).filter(currentFilter).toArray().length > 0\r\n            }.bind(this)\r\n        }\r\n    }, {\r\n        key: \"_calculateAppointmentEndDate\",\r\n        value: function(isAllDay, startDate) {\r\n            if (isAllDay) {\r\n                return _date.default.setToDayEnd(new Date(startDate))\r\n            }\r\n            return new Date(startDate.getTime() + this._baseAppointmentDuration * toMs(\"minute\"))\r\n        }\r\n    }, {\r\n        key: \"_isEndDateWrong\",\r\n        value: function(startDate, endDate) {\r\n            return !endDate || isNaN(endDate.getTime()) || startDate.getTime() > endDate.getTime()\r\n        }\r\n    }, {\r\n        key: \"add\",\r\n        value: function(data) {\r\n            var _this7 = this;\r\n            return this._dataSource.store().insert(data).done(function() {\r\n                _this7._dataSource.load()\r\n            }.bind(this))\r\n        }\r\n    }, {\r\n        key: \"update\",\r\n        value: function(target, data) {\r\n            var _this8 = this;\r\n            var key = this._getStoreKey(target);\r\n            var d = new _deferred.Deferred;\r\n            this._dataSource.store().update(key, data).done(function() {\r\n                _this8._dataSource.load().done(d.resolve).fail(d.reject)\r\n            }).fail(d.reject);\r\n            return d.promise()\r\n        }\r\n    }, {\r\n        key: \"remove\",\r\n        value: function(target) {\r\n            var _this9 = this;\r\n            var key = this._getStoreKey(target);\r\n            return this._dataSource.store().remove(key).done(function() {\r\n                _this9._dataSource.load()\r\n            }.bind(this))\r\n        }\r\n    }, {\r\n        key: \"keyName\",\r\n        get: function() {\r\n            var store = this._dataSource.store();\r\n            return store.key()\r\n        }\r\n    }]);\r\n    return AppointmentModel\r\n}();\r\nvar _default = AppointmentModel;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/dom_component.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _config = _interopRequireDefault(require(\"./config\"));\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _resize_callbacks = _interopRequireDefault(require(\"../core/utils/resize_callbacks\"));\r\nvar _component = _interopRequireDefault(require(\"./component\"));\r\nvar _template_manager = require(\"./template_manager\");\r\nvar _public_component = require(\"./utils/public_component\");\r\nvar _element_data = require(\"./element_data\");\r\nvar _iterator = require(\"./utils/iterator\");\r\nvar _extend = require(\"./utils/extend\");\r\nvar _element = require(\"../core/element\");\r\nvar _common = require(\"./utils/common\");\r\nvar _array = require(\"./utils/array\");\r\nvar _type = require(\"./utils/type\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _short = require(\"../events/short\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _component.default.abstract;\r\nvar DOMComponent = _component.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            width: void 0,\r\n            height: void 0,\r\n            rtlEnabled: (0, _config.default)().rtlEnabled,\r\n            elementAttr: {},\r\n            disabled: false,\r\n            integrationOptions: {}\r\n        }, this._useTemplates() ? _template_manager.TemplateManager.createDefaultOptions() : {})\r\n    },\r\n    ctor: function(element, options) {\r\n        this._createElement(element);\r\n        (0, _public_component.attachInstanceToElement)(this._$element, this, this._dispose);\r\n        this.callBase(options)\r\n    },\r\n    _createElement: function(element) {\r\n        this._$element = (0, _renderer.default)(element)\r\n    },\r\n    _getSynchronizableOptionsForCreateComponent: function() {\r\n        return [\"rtlEnabled\", \"disabled\", \"templatesRenderAsynchronously\"]\r\n    },\r\n    _visibilityChanged: abstract,\r\n    _dimensionChanged: abstract,\r\n    _init: function() {\r\n        this.callBase();\r\n        this._attachWindowResizeCallback();\r\n        this._initTemplateManager()\r\n    },\r\n    _setOptionsByDevice: function(instanceCustomRules) {\r\n        this.callBase([].concat(this.constructor._classCustomRules || [], instanceCustomRules || []))\r\n    },\r\n    _isInitialOptionValue: function(name) {\r\n        var isCustomOption = this.constructor._classCustomRules && Object.prototype.hasOwnProperty.call(this._convertRulesToOptions(this.constructor._classCustomRules), name);\r\n        return !isCustomOption && this.callBase(name)\r\n    },\r\n    _attachWindowResizeCallback: function() {\r\n        if (this._isDimensionChangeSupported()) {\r\n            var windowResizeCallBack = this._windowResizeCallBack = this._dimensionChanged.bind(this);\r\n            _resize_callbacks.default.add(windowResizeCallBack)\r\n        }\r\n    },\r\n    _isDimensionChangeSupported: function() {\r\n        return this._dimensionChanged !== abstract\r\n    },\r\n    _renderComponent: function() {\r\n        this._initMarkup();\r\n        (0, _window.hasWindow)() && this._render()\r\n    },\r\n    _initMarkup: function() {\r\n        var _ref = this.option() || {},\r\n            rtlEnabled = _ref.rtlEnabled;\r\n        this._renderElementAttributes();\r\n        this._toggleRTLDirection(rtlEnabled);\r\n        this._renderVisibilityChange();\r\n        this._renderDimensions()\r\n    },\r\n    _render: function() {\r\n        this._attachVisibilityChangeHandlers()\r\n    },\r\n    _renderElementAttributes: function() {\r\n        var _ref2 = this.option() || {},\r\n            elementAttr = _ref2.elementAttr;\r\n        var attributes = (0, _extend.extend)({}, elementAttr);\r\n        var classNames = attributes.class;\r\n        delete attributes.class;\r\n        this.$element().attr(attributes).addClass(classNames)\r\n    },\r\n    _renderVisibilityChange: function() {\r\n        if (this._isDimensionChangeSupported()) {\r\n            this._attachDimensionChangeHandlers()\r\n        }\r\n        if (this._isVisibilityChangeSupported()) {\r\n            var $element = this.$element();\r\n            $element.addClass(\"dx-visibility-change-handler\")\r\n        }\r\n    },\r\n    _renderDimensions: function() {\r\n        var $element = this.$element();\r\n        var element = $element.get(0);\r\n        var width = this._getOptionValue(\"width\", element);\r\n        var height = this._getOptionValue(\"height\", element);\r\n        if (this._isCssUpdateRequired(element, height, width)) {\r\n            $element.css({\r\n                width: null === width ? \"\" : width,\r\n                height: null === height ? \"\" : height\r\n            })\r\n        }\r\n    },\r\n    _isCssUpdateRequired: function(element, height, width) {\r\n        return !!((0, _type.isDefined)(width) || (0, _type.isDefined)(height) || element.style.width || element.style.height)\r\n    },\r\n    _attachDimensionChangeHandlers: function() {\r\n        var _this = this;\r\n        var $el = this.$element();\r\n        var namespace = \"\".concat(this.NAME, \"VisibilityChange\");\r\n        _short.resize.off($el, {\r\n            namespace: namespace\r\n        });\r\n        _short.resize.on($el, function() {\r\n            return _this._dimensionChanged()\r\n        }, {\r\n            namespace: namespace\r\n        })\r\n    },\r\n    _attachVisibilityChangeHandlers: function() {\r\n        var _this2 = this;\r\n        if (this._isVisibilityChangeSupported()) {\r\n            var $el = this.$element();\r\n            var namespace = \"\".concat(this.NAME, \"VisibilityChange\");\r\n            this._isHidden = !this._isVisible();\r\n            _short.visibility.off($el, {\r\n                namespace: namespace\r\n            });\r\n            _short.visibility.on($el, function() {\r\n                return _this2._checkVisibilityChanged(\"shown\")\r\n            }, function() {\r\n                return _this2._checkVisibilityChanged(\"hiding\")\r\n            }, {\r\n                namespace: namespace\r\n            })\r\n        }\r\n    },\r\n    _isVisible: function() {\r\n        var $element = this.$element();\r\n        return $element.is(\":visible\")\r\n    },\r\n    _checkVisibilityChanged: function(action) {\r\n        var isVisible = this._isVisible();\r\n        if (isVisible) {\r\n            if (\"hiding\" === action && !this._isHidden) {\r\n                this._visibilityChanged(false);\r\n                this._isHidden = true\r\n            } else {\r\n                if (\"shown\" === action && this._isHidden) {\r\n                    this._isHidden = false;\r\n                    this._visibilityChanged(true)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _isVisibilityChangeSupported: function() {\r\n        return this._visibilityChanged !== abstract && (0, _window.hasWindow)()\r\n    },\r\n    _clean: _common.noop,\r\n    _modelByElement: function() {\r\n        var _this$option = this.option(),\r\n            modelByElement = _this$option.modelByElement;\r\n        var $element = this.$element();\r\n        return modelByElement ? modelByElement($element) : void 0\r\n    },\r\n    _invalidate: function() {\r\n        if (this._isUpdateAllowed()) {\r\n            throw _errors.default.Error(\"E0007\")\r\n        }\r\n        this._requireRefresh = true\r\n    },\r\n    _refresh: function() {\r\n        this._clean();\r\n        this._renderComponent()\r\n    },\r\n    _dispose: function() {\r\n        this._templateManager && this._templateManager.dispose();\r\n        this.callBase();\r\n        this._clean();\r\n        this._detachWindowResizeCallback()\r\n    },\r\n    _detachWindowResizeCallback: function() {\r\n        if (this._isDimensionChangeSupported()) {\r\n            _resize_callbacks.default.remove(this._windowResizeCallBack)\r\n        }\r\n    },\r\n    _toggleRTLDirection: function(rtl) {\r\n        var $element = this.$element();\r\n        $element.toggleClass(\"dx-rtl\", rtl)\r\n    },\r\n    _createComponent: function(element, component) {\r\n        var _this3 = this;\r\n        var config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n        var synchronizableOptions = (0, _common.grep)(this._getSynchronizableOptionsForCreateComponent(), function(value) {\r\n            return !(value in config)\r\n        });\r\n        var _this$option2 = this.option(),\r\n            integrationOptions = _this$option2.integrationOptions;\r\n        var _this$option3 = this.option(),\r\n            nestedComponentOptions = _this$option3.nestedComponentOptions;\r\n        nestedComponentOptions = nestedComponentOptions || _common.noop;\r\n        var nestedComponentConfig = (0, _extend.extend)({\r\n            integrationOptions: integrationOptions\r\n        }, nestedComponentOptions(this));\r\n        synchronizableOptions.forEach(function(optionName) {\r\n            return nestedComponentConfig[optionName] = _this3.option(optionName)\r\n        });\r\n        this._extendConfig(config, nestedComponentConfig);\r\n        var instance = void 0;\r\n        if ((0, _type.isString)(component)) {\r\n            var $element = (0, _renderer.default)(element)[component](config);\r\n            instance = $element[component](\"instance\")\r\n        } else {\r\n            if (element) {\r\n                instance = component.getInstance(element);\r\n                if (instance) {\r\n                    instance.option(config)\r\n                } else {\r\n                    instance = new component(element, config)\r\n                }\r\n            }\r\n        }\r\n        if (instance) {\r\n            var optionChangedHandler = function(_ref3) {\r\n                var name = _ref3.name,\r\n                    value = _ref3.value;\r\n                if ((0, _array.inArray)(name, synchronizableOptions) >= 0) {\r\n                    instance.option(name, value)\r\n                }\r\n            };\r\n            this.on(\"optionChanged\", optionChangedHandler);\r\n            instance.on(\"disposing\", function() {\r\n                return _this3.off(\"optionChanged\", optionChangedHandler)\r\n            })\r\n        }\r\n        return instance\r\n    },\r\n    _extendConfig: function(config, extendConfig) {\r\n        (0, _iterator.each)(extendConfig, function(key, value) {\r\n            !Object.prototype.hasOwnProperty.call(config, key) && (config[key] = value)\r\n        })\r\n    },\r\n    _defaultActionConfig: function() {\r\n        var $element = this.$element();\r\n        var context = this._modelByElement($element);\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            context: context\r\n        })\r\n    },\r\n    _defaultActionArgs: function() {\r\n        var $element = this.$element();\r\n        var model = this._modelByElement($element);\r\n        var element = this.element();\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            element: element,\r\n            model: model\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"width\":\r\n            case \"height\":\r\n                this._renderDimensions();\r\n                break;\r\n            case \"rtlEnabled\":\r\n                this._invalidate();\r\n                break;\r\n            case \"elementAttr\":\r\n                this._renderElementAttributes();\r\n                break;\r\n            case \"disabled\":\r\n            case \"integrationOptions\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _removeAttributes: function(element) {\r\n        var attrs = element.attributes;\r\n        for (var i = attrs.length - 1; i >= 0; i--) {\r\n            var attr = attrs[i];\r\n            if (attr) {\r\n                var name = attr.name;\r\n                if (!name.indexOf(\"aria-\") || name.indexOf(\"dx-\") !== -1 || \"role\" === name || \"style\" === name || \"tabindex\" === name) {\r\n                    element.removeAttribute(name)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _removeClasses: function(element) {\r\n        element.className = element.className.split(\" \").filter(function(cssClass) {\r\n            return 0 !== cssClass.lastIndexOf(\"dx-\", 0)\r\n        }).join(\" \")\r\n    },\r\n    _updateDOMComponent: function(renderRequired) {\r\n        if (renderRequired) {\r\n            this._renderComponent()\r\n        } else {\r\n            if (this._requireRefresh) {\r\n                this._requireRefresh = false;\r\n                this._refresh()\r\n            }\r\n        }\r\n    },\r\n    endUpdate: function() {\r\n        var renderRequired = this._isInitializingRequired();\r\n        this.callBase();\r\n        this._isUpdateAllowed() && this._updateDOMComponent(renderRequired)\r\n    },\r\n    $element: function() {\r\n        return this._$element\r\n    },\r\n    element: function() {\r\n        var $element = this.$element();\r\n        return (0, _element.getPublicElement)($element)\r\n    },\r\n    dispose: function() {\r\n        var element = this.$element().get(0);\r\n        (0, _element_data.cleanDataRecursive)(element, true);\r\n        element.textContent = \"\";\r\n        this._removeAttributes(element);\r\n        this._removeClasses(element)\r\n    },\r\n    resetOption: function(optionName) {\r\n        this.callBase(optionName);\r\n        if (\"width\" === optionName || \"height\" === optionName) {\r\n            var initialOption = this.initialOption(optionName);\r\n            !(0, _type.isDefined)(initialOption) && this.$element().css(optionName, \"\")\r\n        }\r\n    },\r\n    _getAnonymousTemplateName: function() {\r\n        return\r\n    },\r\n    _initTemplateManager: function() {\r\n        if (this._templateManager || !this._useTemplates()) {\r\n            return\r\n        }\r\n        var _this$option4 = this.option(),\r\n            _this$option4$integra = _this$option4.integrationOptions,\r\n            integrationOptions = void 0 === _this$option4$integra ? {} : _this$option4$integra;\r\n        var createTemplate = integrationOptions.createTemplate;\r\n        this._templateManager = new _template_manager.TemplateManager(createTemplate, this._getAnonymousTemplateName());\r\n        this._initTemplates()\r\n    },\r\n    _initTemplates: function() {\r\n        var _this4 = this;\r\n        var _this$_templateManage = this._templateManager.extractTemplates(this.$element()),\r\n            templates = _this$_templateManage.templates,\r\n            anonymousTemplateMeta = _this$_templateManage.anonymousTemplateMeta;\r\n        var anonymousTemplate = this.option(\"integrationOptions.templates.\".concat(anonymousTemplateMeta.name));\r\n        templates.forEach(function(_ref4) {\r\n            var name = _ref4.name,\r\n                template = _ref4.template;\r\n            _this4._options.silent(\"integrationOptions.templates.\".concat(name), template)\r\n        });\r\n        if (anonymousTemplateMeta.name && !anonymousTemplate) {\r\n            this._options.silent(\"integrationOptions.templates.\".concat(anonymousTemplateMeta.name), anonymousTemplateMeta.template);\r\n            this._options.silent(\"_hasAnonymousTemplateContent\", true)\r\n        }\r\n    },\r\n    _getTemplateByOption: function(optionName) {\r\n        return this._getTemplate(this.option(optionName))\r\n    },\r\n    _getTemplate: function(templateSource) {\r\n        var templates = this.option(\"integrationOptions.templates\");\r\n        var isAsyncTemplate = this.option(\"templatesRenderAsynchronously\");\r\n        var skipTemplates = this.option(\"integrationOptions.skipTemplates\");\r\n        return this._templateManager.getTemplate(templateSource, templates, {\r\n            isAsyncTemplate: isAsyncTemplate,\r\n            skipTemplates: skipTemplates\r\n        }, this)\r\n    },\r\n    _saveTemplate: function(name, template) {\r\n        this._setOptionWithoutOptionChange(\"integrationOptions.templates.\" + name, this._templateManager._createTemplate(template))\r\n    },\r\n    _useTemplates: function() {\r\n        return true\r\n    }\r\n});\r\nDOMComponent.getInstance = function(element) {\r\n    return (0, _public_component.getInstanceByElement)((0, _renderer.default)(element), this)\r\n};\r\nDOMComponent.defaultOptions = function(rule) {\r\n    this._classCustomRules = this._classCustomRules || [];\r\n    this._classCustomRules.push(rule)\r\n};\r\nvar _default = DOMComponent;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/bullet.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _bullet = _interopRequireDefault(require(\"./sparklines/bullet\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _bullet.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (renovation/preact_wrapper/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.removeDifferentElements = exports.wrapElement = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar addAttributes = function($element, attributes) {\r\n    (0, _iterator.each)(attributes, function(_, _ref) {\r\n        var name = _ref.name,\r\n            value = _ref.value;\r\n        if (\"class\" === name) {\r\n            $element.addClass(value)\r\n        } else {\r\n            $element.attr(name, value)\r\n        }\r\n    })\r\n};\r\nvar wrapElement = function($element, $wrapper) {\r\n    var _$wrapper$get = $wrapper.get(0),\r\n        attributes = _$wrapper$get.attributes;\r\n    var children = $wrapper.contents();\r\n    addAttributes($element, attributes);\r\n    $wrapper.remove();\r\n    (0, _iterator.each)(children, function(_, child) {\r\n        $element.append(child)\r\n    });\r\n    return children\r\n};\r\nexports.wrapElement = wrapElement;\r\nvar removeDifferentElements = function($children, $newChildren) {\r\n    (0, _iterator.each)($newChildren, function(__, element) {\r\n        var hasComponent = false;\r\n        (0, _iterator.each)($children, function(_, oldElement) {\r\n            if (element === oldElement) {\r\n                hasComponent = true\r\n            }\r\n        });\r\n        if (!hasComponent && element.parentNode) {\r\n            element.parentNode.removeChild(element)\r\n        }\r\n    })\r\n};\r\nexports.removeDifferentElements = removeDifferentElements;\r\n","/**\r\n * DevExtreme (viz/core/layout.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"./utils\");\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _round = Math.round;\r\nvar ALIGN_START = 0;\r\nvar ALIGN_MIDDLE = 1;\r\nvar ALIGN_END = 2;\r\nvar horizontalAlignmentMap = {\r\n    left: ALIGN_START,\r\n    center: ALIGN_MIDDLE,\r\n    right: ALIGN_END\r\n};\r\nvar verticalAlignmentMap = {\r\n    top: ALIGN_START,\r\n    center: ALIGN_MIDDLE,\r\n    bottom: ALIGN_END\r\n};\r\nvar sideMap = {\r\n    horizontal: 0,\r\n    vertical: 1\r\n};\r\nvar slicersMap = {};\r\nvar BBOX_CEIL_CORRECTION = 2;\r\nslicersMap[ALIGN_START] = function(a, b, size) {\r\n    return [a, _min(b, a + size)]\r\n};\r\nslicersMap[ALIGN_MIDDLE] = function(a, b, size) {\r\n    return [_max(a, (a + b - size) / 2), _min(b, (a + b + size) / 2)]\r\n};\r\nslicersMap[ALIGN_END] = function(a, b, size) {\r\n    return [_max(a, b - size), b]\r\n};\r\n\r\nfunction pickValue(value, map, defaultValue) {\r\n    var val = (0, _utils.normalizeEnum)(value);\r\n    return val in map ? map[val] : defaultValue\r\n}\r\n\r\nfunction normalizeLayoutOptions(options) {\r\n    var side = pickValue(options.side, sideMap, 1);\r\n    var alignment = [pickValue(options.horizontalAlignment, horizontalAlignmentMap, ALIGN_MIDDLE), pickValue(options.verticalAlignment, verticalAlignmentMap, ALIGN_START)];\r\n    return {\r\n        side: side,\r\n        primary: bringToEdge(alignment[side]),\r\n        secondary: alignment[1 - side],\r\n        weak: options.weak,\r\n        priority: options.priority || 0,\r\n        header: options.header,\r\n        position: options.position\r\n    }\r\n}\r\n\r\nfunction bringToEdge(primary) {\r\n    return primary < 2 ? 0 : 2\r\n}\r\n\r\nfunction getConjugateSide(side) {\r\n    return 1 - side\r\n}\r\n\r\nfunction getSlice(alignment, a, b, size) {\r\n    return slicersMap[alignment](a, b, size)\r\n}\r\n\r\nfunction getShrink(alignment, size) {\r\n    return (alignment > 0 ? -1 : 1) * size\r\n}\r\n\r\nfunction processForward(item, rect, minSize) {\r\n    var side = item.side;\r\n    var size = item.element.measure([rect[2] - rect[0], rect[3] - rect[1]]);\r\n    var minSide = \"indside\" === item.position ? 0 : minSize[side];\r\n    var isValid = size[side] < rect[2 + side] - rect[side] - minSide;\r\n    if (isValid) {\r\n        if (\"inside\" !== item.position) {\r\n            rect[item.primary + side] += getShrink(item.primary, size[side])\r\n        }\r\n        item.size = size\r\n    }\r\n    return isValid\r\n}\r\n\r\nfunction processRectBackward(item, rect, alignmentRect) {\r\n    var primarySide = item.side;\r\n    var secondarySide = getConjugateSide(primarySide);\r\n    var itemRect = [];\r\n    var secondary = getSlice(item.secondary, alignmentRect[secondarySide], alignmentRect[2 + secondarySide], item.size[secondarySide]);\r\n    itemRect[primarySide] = _round(itemRect[2 + primarySide] = rect[item.primary + primarySide] + (\"inside\" === item.position ? getShrink(item.primary, item.size[primarySide]) : 0));\r\n    itemRect[item.primary + primarySide] = _round(rect[item.primary + primarySide] - getShrink(item.primary, item.size[primarySide]));\r\n    if (\"inside\" !== item.position) {\r\n        rect[item.primary + primarySide] = itemRect[item.primary + primarySide]\r\n    }\r\n    itemRect[secondarySide] = _round(secondary[0]);\r\n    itemRect[2 + secondarySide] = _round(secondary[1]);\r\n    return itemRect\r\n}\r\n\r\nfunction processBackward(item, rect, alignmentRect, fitRect, size, targetRect) {\r\n    var itemRect = processRectBackward(item, rect, alignmentRect);\r\n    var itemFitRect = processRectBackward(item, fitRect, fitRect);\r\n    if (size[item.side] > 0) {\r\n        size[item.side] -= item.size[item.side];\r\n        targetRect[item.primary + item.side] = itemRect[item.primary + item.side];\r\n        item.element.freeSpace()\r\n    } else {\r\n        item.element.move(itemRect, itemFitRect)\r\n    }\r\n}\r\n\r\nfunction Layout() {\r\n    this._targets = []\r\n}\r\nLayout.prototype = {\r\n    constructor: Layout,\r\n    dispose: function() {\r\n        this._targets = null\r\n    },\r\n    add: function(target) {\r\n        this._targets.push(target)\r\n    },\r\n    forward: function(targetRect, minSize) {\r\n        var rect = targetRect.slice();\r\n        var targets = createTargets(this._targets);\r\n        var i;\r\n        var ii = targets.length;\r\n        var cache = [];\r\n        for (i = 0; i < ii; ++i) {\r\n            if (processForward(targets[i], rect, minSize)) {\r\n                cache.push(targets[i])\r\n            } else {\r\n                targets[i].element.freeSpace()\r\n            }\r\n        }\r\n        this._cache = cache.reverse();\r\n        return rect\r\n    },\r\n    backward: function(targetRect, alignmentRect) {\r\n        var size = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0];\r\n        var backwardRect = targetRect.slice();\r\n        var fitRect = targetRect.slice();\r\n        var targets = this._cache;\r\n        var targetSide = 0;\r\n        var target;\r\n        var i;\r\n        var ii = targets.length;\r\n        for (i = 0; i < ii; ++i) {\r\n            target = targets[i];\r\n            if (target.side !== targetSide) {\r\n                backwardRect = targetRect.slice()\r\n            }\r\n            processBackward(target, backwardRect, alignmentRect, fitRect, size, targetRect);\r\n            targetSide = target.side\r\n        }\r\n        return size\r\n    }\r\n};\r\n\r\nfunction createTargets(targets) {\r\n    var i;\r\n    var ii = targets.length;\r\n    var collection = [];\r\n    var layout;\r\n    for (i = 0; i < ii; ++i) {\r\n        layout = targets[i].layoutOptions();\r\n        if (layout) {\r\n            layout = normalizeLayoutOptions(layout);\r\n            layout.element = targets[i];\r\n            collection.push(layout)\r\n        }\r\n    }\r\n    collection.sort(function(a, b) {\r\n        return b.side - a.side || a.priority - b.priority\r\n    });\r\n    collection = processWeakItems(collection);\r\n    return collection\r\n}\r\n\r\nfunction processWeakItems(collection) {\r\n    var weakItem = collection.filter(function(item) {\r\n        return true === item.weak\r\n    })[0];\r\n    var headerItem;\r\n    if (weakItem) {\r\n        headerItem = collection.filter(function(item) {\r\n            return weakItem.primary === item.primary && item.side === weakItem.side && item !== weakItem\r\n        })[0]\r\n    }\r\n    if (weakItem && headerItem) {\r\n        return [makeHeader(headerItem, weakItem)].concat(collection.filter(function(item) {\r\n            return !(item === headerItem || item === weakItem)\r\n        }))\r\n    }\r\n    return collection\r\n}\r\n\r\nfunction processBackwardHeaderRect(element, rect) {\r\n    var rectCopy = rect.slice();\r\n    var itemRect = processRectBackward(element, rectCopy, rectCopy);\r\n    itemRect[element.side] = rect[element.side];\r\n    itemRect[2 + element.side] = rect[2 + element.side];\r\n    return itemRect\r\n}\r\n\r\nfunction makeHeader(header, weakElement) {\r\n    var side = header.side;\r\n    var primary = header.primary;\r\n    var secondary = header.secondary;\r\n    return {\r\n        side: side,\r\n        primary: primary,\r\n        secondary: secondary,\r\n        priority: 0,\r\n        element: {\r\n            measure: function(targetSize) {\r\n                var result = targetSize.slice();\r\n                var weakSize = weakElement.element.measure(targetSize.slice());\r\n                targetSize[primary] -= weakSize[primary];\r\n                var headerSize = header.element.measure(targetSize.slice());\r\n                result[side] = weakSize[side] = headerSize[side] = Math.max(headerSize[side], weakSize[side]);\r\n                weakElement.size = weakSize;\r\n                header.size = headerSize;\r\n                return result\r\n            },\r\n            move: function(rect, fitRect) {\r\n                if (fitRect[2] - fitRect[0] < header.size[0] + weakElement.size[0] - BBOX_CEIL_CORRECTION) {\r\n                    this.freeSpace();\r\n                    return\r\n                }\r\n                var weakRect = processBackwardHeaderRect(weakElement, fitRect, fitRect);\r\n                fitRect[2 + weakElement.primary] = weakRect[weakElement.primary];\r\n                var headerFitReact = processBackwardHeaderRect(header, fitRect, fitRect);\r\n                if (fitRect[2 + weakElement.primary] < rect[2 + weakElement.primary] && header.size[header.primary] > rect[2 + header.primary] - rect[header.primary]) {\r\n                    rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary]\r\n                }\r\n                var headerRect = processBackwardHeaderRect(header, rect, rect);\r\n                if (headerRect[2 + weakElement.primary] > fitRect[2 + weakElement.primary]) {\r\n                    rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary];\r\n                    headerRect = processBackwardHeaderRect(header, rect, rect)\r\n                }\r\n                weakElement.element.move(weakRect);\r\n                header.element.move(headerRect, headerFitReact)\r\n            },\r\n            freeSpace: function() {\r\n                header.element.freeSpace();\r\n                weakElement.element.freeSpace()\r\n            }\r\n        }\r\n    }\r\n}\r\nvar _default = Layout;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/calendar/ui.calendar.views.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiCalendar = _interopRequireDefault(require(\"./ui.calendar.base_view\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CALENDAR_OTHER_MONTH_CLASS = \"dx-calendar-other-month\";\r\nvar CALENDAR_OTHER_VIEW_CLASS = \"dx-calendar-other-view\";\r\nvar Views = {\r\n    month: _uiCalendar.default.inherit({\r\n        _getViewName: function() {\r\n            return \"month\"\r\n        },\r\n        _getDefaultOptions: function() {\r\n            return (0, _extend.extend)(this.callBase(), {\r\n                firstDayOfWeek: void 0,\r\n                rowCount: 6,\r\n                colCount: 7\r\n            })\r\n        },\r\n        _renderImpl: function() {\r\n            this.callBase();\r\n            this._renderHeader()\r\n        },\r\n        _renderBody: function() {\r\n            this.callBase();\r\n            this._$table.find(\".\".concat(CALENDAR_OTHER_VIEW_CLASS)).addClass(CALENDAR_OTHER_MONTH_CLASS)\r\n        },\r\n        _renderFocusTarget: _common.noop,\r\n        getCellAriaLabel: function(date) {\r\n            return _date2.default.format(date, \"longdate\")\r\n        },\r\n        _renderHeader: function() {\r\n            var $headerRow = (0, _renderer.default)(\"<tr>\");\r\n            var $header = (0, _renderer.default)(\"<thead>\").append($headerRow);\r\n            this._$table.prepend($header);\r\n            for (var colIndex = 0, colCount = this.option(\"colCount\"); colIndex < colCount; colIndex++) {\r\n                this._renderHeaderCell(colIndex, $headerRow)\r\n            }\r\n        },\r\n        _renderHeaderCell: function(cellIndex, $headerRow) {\r\n            var _this$_getDayCaption = this._getDayCaption(this._getFirstDayOfWeek() + cellIndex),\r\n                fullCaption = _this$_getDayCaption.full,\r\n                abbrCaption = _this$_getDayCaption.abbreviated;\r\n            var $cell = (0, _renderer.default)(\"<th>\").attr({\r\n                scope: \"col\",\r\n                abbr: fullCaption\r\n            }).text(abbrCaption);\r\n            this._appendCell($headerRow, $cell)\r\n        },\r\n        getNavigatorCaption: function() {\r\n            return _date2.default.format(this.option(\"date\"), \"monthandyear\")\r\n        },\r\n        _isTodayCell: function(cellDate) {\r\n            var today = this.option(\"_todayDate\")();\r\n            return _date.default.sameDate(cellDate, today)\r\n        },\r\n        _isDateOutOfRange: function(cellDate) {\r\n            var minDate = this.option(\"min\");\r\n            var maxDate = this.option(\"max\");\r\n            return !_date.default.dateInRange(cellDate, minDate, maxDate, \"date\")\r\n        },\r\n        _isOtherView: function(cellDate) {\r\n            return cellDate.getMonth() !== this.option(\"date\").getMonth()\r\n        },\r\n        _getCellText: function(cellDate) {\r\n            return _date2.default.format(cellDate, \"d\")\r\n        },\r\n        _getDayCaption: function(day) {\r\n            var daysInWeek = this.option(\"colCount\");\r\n            var dayIndex = day % daysInWeek;\r\n            return {\r\n                full: _date2.default.getDayNames()[dayIndex],\r\n                abbreviated: _date2.default.getDayNames(\"abbreviated\")[dayIndex]\r\n            }\r\n        },\r\n        _getFirstCellData: function() {\r\n            var firstDay = _date.default.getFirstMonthDate(this.option(\"date\"));\r\n            var firstMonthDayOffset = this._getFirstDayOfWeek() - firstDay.getDay();\r\n            var daysInWeek = this.option(\"colCount\");\r\n            if (firstMonthDayOffset >= 0) {\r\n                firstMonthDayOffset -= daysInWeek\r\n            }\r\n            firstDay.setDate(firstDay.getDate() + firstMonthDayOffset);\r\n            return firstDay\r\n        },\r\n        _getNextCellData: function(date) {\r\n            date = _date.default.createDate(date);\r\n            date.setDate(date.getDate() + 1);\r\n            return date\r\n        },\r\n        _getFirstDayOfWeek: function() {\r\n            return (0, _type.isDefined)(this.option(\"firstDayOfWeek\")) ? this.option(\"firstDayOfWeek\") : _date2.default.firstDayOfWeekIndex()\r\n        },\r\n        _getCellByDate: function(date) {\r\n            return this._$table.find(\"td[data-value='\".concat(_date_serialization.default.serializeDate(date, _date.default.getShortDateFormat()), \"']\"))\r\n        },\r\n        isBoundary: function(date) {\r\n            return _date.default.sameMonthAndYear(date, this.option(\"min\")) || _date.default.sameMonthAndYear(date, this.option(\"max\"))\r\n        },\r\n        _getDefaultDisabledDatesHandler: function(disabledDates) {\r\n            return function(args) {\r\n                var isDisabledDate = disabledDates.some(function(item) {\r\n                    return _date.default.sameDate(item, args.date)\r\n                });\r\n                if (isDisabledDate) {\r\n                    return true\r\n                }\r\n            }\r\n        }\r\n    }),\r\n    year: _uiCalendar.default.inherit({\r\n        _getViewName: function() {\r\n            return \"year\"\r\n        },\r\n        _isTodayCell: function(cellDate) {\r\n            var today = this.option(\"_todayDate\")();\r\n            return _date.default.sameMonthAndYear(cellDate, today)\r\n        },\r\n        _isDateOutOfRange: function(cellDate) {\r\n            return !_date.default.dateInRange(cellDate, _date.default.getFirstMonthDate(this.option(\"min\")), _date.default.getLastMonthDate(this.option(\"max\")))\r\n        },\r\n        _isOtherView: function() {\r\n            return false\r\n        },\r\n        _getCellText: function(cellDate) {\r\n            return _date2.default.getMonthNames(\"abbreviated\")[cellDate.getMonth()]\r\n        },\r\n        _getFirstCellData: function() {\r\n            var currentDate = this.option(\"date\");\r\n            var data = _date.default.createDate(currentDate);\r\n            data.setDate(1);\r\n            data.setMonth(0);\r\n            return data\r\n        },\r\n        _getNextCellData: function(date) {\r\n            date = _date.default.createDate(date);\r\n            date.setMonth(date.getMonth() + 1);\r\n            return date\r\n        },\r\n        _getCellByDate: function(date) {\r\n            var foundDate = _date.default.createDate(date);\r\n            foundDate.setDate(1);\r\n            return this._$table.find(\"td[data-value='\".concat(_date_serialization.default.serializeDate(foundDate, _date.default.getShortDateFormat()), \"']\"))\r\n        },\r\n        getCellAriaLabel: function(date) {\r\n            return _date2.default.format(date, \"monthandyear\")\r\n        },\r\n        getNavigatorCaption: function() {\r\n            return _date2.default.format(this.option(\"date\"), \"yyyy\")\r\n        },\r\n        isBoundary: function(date) {\r\n            return _date.default.sameYear(date, this.option(\"min\")) || _date.default.sameYear(date, this.option(\"max\"))\r\n        }\r\n    }),\r\n    decade: _uiCalendar.default.inherit({\r\n        _getViewName: function() {\r\n            return \"decade\"\r\n        },\r\n        _isTodayCell: function(cellDate) {\r\n            var today = this.option(\"_todayDate\")();\r\n            return _date.default.sameYear(cellDate, today)\r\n        },\r\n        _isDateOutOfRange: function(cellDate) {\r\n            var min = this.option(\"min\");\r\n            var max = this.option(\"max\");\r\n            return !_date.default.dateInRange(cellDate.getFullYear(), min && min.getFullYear(), max && max.getFullYear())\r\n        },\r\n        _isOtherView: function(cellDate) {\r\n            var date = _date.default.createDate(cellDate);\r\n            date.setMonth(1);\r\n            return !_date.default.sameDecade(date, this.option(\"date\"))\r\n        },\r\n        _getCellText: function(cellDate) {\r\n            return _date2.default.format(cellDate, \"yyyy\")\r\n        },\r\n        _getFirstCellData: function() {\r\n            var year = _date.default.getFirstYearInDecade(this.option(\"date\")) - 1;\r\n            return _date.default.createDateWithFullYear(year, 0, 1)\r\n        },\r\n        _getNextCellData: function(date) {\r\n            date = _date.default.createDate(date);\r\n            date.setFullYear(date.getFullYear() + 1);\r\n            return date\r\n        },\r\n        getNavigatorCaption: function() {\r\n            var currentDate = this.option(\"date\");\r\n            var firstYearInDecade = _date.default.getFirstYearInDecade(currentDate);\r\n            var startDate = _date.default.createDate(currentDate);\r\n            var endDate = _date.default.createDate(currentDate);\r\n            startDate.setFullYear(firstYearInDecade);\r\n            endDate.setFullYear(firstYearInDecade + 9);\r\n            return _date2.default.format(startDate, \"yyyy\") + \"-\" + _date2.default.format(endDate, \"yyyy\")\r\n        },\r\n        _isValueOnCurrentView: function(currentDate, value) {\r\n            return _date.default.sameDecade(currentDate, value)\r\n        },\r\n        _getCellByDate: function(date) {\r\n            var foundDate = _date.default.createDate(date);\r\n            foundDate.setDate(1);\r\n            foundDate.setMonth(0);\r\n            return this._$table.find(\"td[data-value='\".concat(_date_serialization.default.serializeDate(foundDate, _date.default.getShortDateFormat()), \"']\"))\r\n        },\r\n        isBoundary: function(date) {\r\n            return _date.default.sameDecade(date, this.option(\"min\")) || _date.default.sameDecade(date, this.option(\"max\"))\r\n        }\r\n    }),\r\n    century: _uiCalendar.default.inherit({\r\n        _getViewName: function() {\r\n            return \"century\"\r\n        },\r\n        _isTodayCell: function(cellDate) {\r\n            var today = this.option(\"_todayDate\")();\r\n            return _date.default.sameDecade(cellDate, today)\r\n        },\r\n        _isDateOutOfRange: function(cellDate) {\r\n            var decade = _date.default.getFirstYearInDecade(cellDate);\r\n            var minDecade = _date.default.getFirstYearInDecade(this.option(\"min\"));\r\n            var maxDecade = _date.default.getFirstYearInDecade(this.option(\"max\"));\r\n            return !_date.default.dateInRange(decade, minDecade, maxDecade)\r\n        },\r\n        _isOtherView: function(cellDate) {\r\n            var date = _date.default.createDate(cellDate);\r\n            date.setMonth(1);\r\n            return !_date.default.sameCentury(date, this.option(\"date\"))\r\n        },\r\n        _getCellText: function(cellDate) {\r\n            var startDate = _date2.default.format(cellDate, \"yyyy\");\r\n            var endDate = _date.default.createDate(cellDate);\r\n            endDate.setFullYear(endDate.getFullYear() + 9);\r\n            return startDate + \" - \" + _date2.default.format(endDate, \"yyyy\")\r\n        },\r\n        _getFirstCellData: function() {\r\n            var decade = _date.default.getFirstDecadeInCentury(this.option(\"date\")) - 10;\r\n            return _date.default.createDateWithFullYear(decade, 0, 1)\r\n        },\r\n        _getNextCellData: function(date) {\r\n            date = _date.default.createDate(date);\r\n            date.setFullYear(date.getFullYear() + 10);\r\n            return date\r\n        },\r\n        _getCellByDate: function(date) {\r\n            var foundDate = _date.default.createDate(date);\r\n            foundDate.setDate(1);\r\n            foundDate.setMonth(0);\r\n            foundDate.setFullYear(_date.default.getFirstYearInDecade(foundDate));\r\n            return this._$table.find(\"td[data-value='\".concat(_date_serialization.default.serializeDate(foundDate, _date.default.getShortDateFormat()), \"']\"))\r\n        },\r\n        getNavigatorCaption: function() {\r\n            var currentDate = this.option(\"date\");\r\n            var firstDecadeInCentury = _date.default.getFirstDecadeInCentury(currentDate);\r\n            var startDate = _date.default.createDate(currentDate);\r\n            var endDate = _date.default.createDate(currentDate);\r\n            startDate.setFullYear(firstDecadeInCentury);\r\n            endDate.setFullYear(firstDecadeInCentury + 99);\r\n            return _date2.default.format(startDate, \"yyyy\") + \"-\" + _date2.default.format(endDate, \"yyyy\")\r\n        },\r\n        isBoundary: function(date) {\r\n            return _date.default.sameCentury(date, this.option(\"min\")) || _date.default.sameCentury(date, this.option(\"max\"))\r\n        }\r\n    })\r\n};\r\nvar _default = Views;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/string.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.isEmpty = exports.replaceAll = exports.format = exports.quadToObject = exports.encodeHtml = void 0;\r\nvar _type = require(\"./type\");\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar encodeHtml = function() {\r\n    var encodeRegExp = [new RegExp(\"&\", \"g\"), new RegExp('\"', \"g\"), new RegExp(\"'\", \"g\"), new RegExp(\"<\", \"g\"), new RegExp(\">\", \"g\")];\r\n    return function(str) {\r\n        return String(str).replace(encodeRegExp[0], \"&amp;\").replace(encodeRegExp[1], \"&quot;\").replace(encodeRegExp[2], \"&#39;\").replace(encodeRegExp[3], \"&lt;\").replace(encodeRegExp[4], \"&gt;\")\r\n    }\r\n}();\r\nexports.encodeHtml = encodeHtml;\r\nvar splitQuad = function(raw) {\r\n    switch (_typeof(raw)) {\r\n        case \"string\":\r\n            return raw.split(/\\s+/, 4);\r\n        case \"object\":\r\n            return [raw.x || raw.h || raw.left, raw.y || raw.v || raw.top, raw.x || raw.h || raw.right, raw.y || raw.v || raw.bottom];\r\n        case \"number\":\r\n            return [raw];\r\n        default:\r\n            return raw\r\n    }\r\n};\r\nvar quadToObject = function(raw) {\r\n    var quad = splitQuad(raw);\r\n    var left = parseInt(quad && quad[0], 10);\r\n    var top = parseInt(quad && quad[1], 10);\r\n    var right = parseInt(quad && quad[2], 10);\r\n    var bottom = parseInt(quad && quad[3], 10);\r\n    if (!isFinite(left)) {\r\n        left = 0\r\n    }\r\n    if (!isFinite(top)) {\r\n        top = left\r\n    }\r\n    if (!isFinite(right)) {\r\n        right = left\r\n    }\r\n    if (!isFinite(bottom)) {\r\n        bottom = top\r\n    }\r\n    return {\r\n        top: top,\r\n        right: right,\r\n        bottom: bottom,\r\n        left: left\r\n    }\r\n};\r\nexports.quadToObject = quadToObject;\r\nvar format = function() {\r\n    var s = arguments[0];\r\n    var values = [].slice.call(arguments).slice(1);\r\n    var replaceDollarCount;\r\n    var reg;\r\n    var value;\r\n    if ((0, _type.isFunction)(s)) {\r\n        return s.apply(this, values)\r\n    }\r\n    for (var i = 0; i < values.length; i++) {\r\n        reg = new RegExp(\"\\\\{\" + i + \"\\\\}\", \"gm\");\r\n        value = values[i];\r\n        if (\"string\" === (0, _type.type)(value) && value.indexOf(\"$\") >= 0) {\r\n            replaceDollarCount = \"$\".replace(\"$\", \"$$\").length;\r\n            value = value.replace(\"$\", 1 === replaceDollarCount ? \"$$$$\" : \"$$\")\r\n        }\r\n        s = s.replace(reg, value)\r\n    }\r\n    return s\r\n};\r\nexports.format = format;\r\nvar replaceAll = function() {\r\n    var quote = function(str) {\r\n        return (str + \"\").replace(/([+*?.[^\\]$(){}><|=!:])/g, \"\\\\$1\")\r\n    };\r\n    return function(text, searchToken, replacementToken) {\r\n        return text.replace(new RegExp(\"(\" + quote(searchToken) + \")\", \"gi\"), replacementToken)\r\n    }\r\n}();\r\nexports.replaceAll = replaceAll;\r\nvar isEmpty = function() {\r\n    var SPACE_REGEXP = /\\s/g;\r\n    return function(text) {\r\n        return !text || !text.replace(SPACE_REGEXP, \"\")\r\n    }\r\n}();\r\nexports.isEmpty = isEmpty;\r\n","/**\r\n * DevExtreme (ui/scheduler/appointmentAdapter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _object = require(\"../../core/utils/object\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar PROPERTY_NAMES = {\r\n    startDate: \"startDate\",\r\n    endDate: \"endDate\",\r\n    allDay: \"allDay\",\r\n    text: \"text\",\r\n    description: \"description\",\r\n    startDateTimeZone: \"startDateTimeZone\",\r\n    endDateTimeZone: \"endDateTimeZone\",\r\n    recurrenceRule: \"recurrenceRule\",\r\n    recurrenceException: \"recurrenceException\",\r\n    disabled: \"disabled\"\r\n};\r\nvar AppointmentAdapter = function() {\r\n    function AppointmentAdapter(rawAppointment, options) {\r\n        _classCallCheck(this, AppointmentAdapter);\r\n        this.rawAppointment = rawAppointment;\r\n        this.options = options\r\n    }\r\n    _createClass(AppointmentAdapter, [{\r\n        key: \"getField\",\r\n        value: function(property) {\r\n            return this.options.getField(this.rawAppointment, property)\r\n        }\r\n    }, {\r\n        key: \"setField\",\r\n        value: function(property, value) {\r\n            return this.options.setField(this.rawAppointment, property, value)\r\n        }\r\n    }, {\r\n        key: \"calculateStartDate\",\r\n        value: function(pathTimeZoneConversion) {\r\n            if (!this.startDate || isNaN(this.startDate.getTime())) {\r\n                throw _ui.default.Error(\"E1032\", this.text)\r\n            }\r\n            return this.calculateDate(this.startDate, this.startDateTimeZone, pathTimeZoneConversion)\r\n        }\r\n    }, {\r\n        key: \"calculateEndDate\",\r\n        value: function(pathTimeZoneConversion) {\r\n            return this.calculateDate(this.endDate, this.endDateTimeZone, pathTimeZoneConversion)\r\n        }\r\n    }, {\r\n        key: \"calculateDate\",\r\n        value: function(date, appointmentTimeZone, pathTimeZoneConversion) {\r\n            if (!date) {\r\n                return\r\n            }\r\n            return this.timeZoneCalculator.createDate(date, {\r\n                appointmentTimeZone: appointmentTimeZone,\r\n                path: pathTimeZoneConversion\r\n            })\r\n        }\r\n    }, {\r\n        key: \"clone\",\r\n        value: function() {\r\n            var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;\r\n            var result = new AppointmentAdapter((0, _object.deepExtendArraySafe)({}, this.rawAppointment), this.options);\r\n            if (null !== options && void 0 !== options && options.pathTimeZone) {\r\n                result.startDate = result.calculateStartDate(options.pathTimeZone);\r\n                result.endDate = result.calculateEndDate(options.pathTimeZone)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"source\",\r\n        value: function() {\r\n            var serializeDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n            if (serializeDate) {\r\n                var clonedAdapter = this.clone();\r\n                clonedAdapter.startDate = this.startDate;\r\n                clonedAdapter.endDate = this.endDate;\r\n                return clonedAdapter.source()\r\n            }\r\n            return (0, _extend.extend)({}, this.rawAppointment)\r\n        }\r\n    }, {\r\n        key: \"duration\",\r\n        get: function() {\r\n            return this.endDate ? this.endDate - this.startDate : 0\r\n        }\r\n    }, {\r\n        key: \"startDate\",\r\n        get: function() {\r\n            var result = this.getField(PROPERTY_NAMES.startDate);\r\n            return void 0 === result ? result : new Date(result)\r\n        },\r\n        set: function(value) {\r\n            this.setField(PROPERTY_NAMES.startDate, value)\r\n        }\r\n    }, {\r\n        key: \"endDate\",\r\n        get: function() {\r\n            var result = this.getField(PROPERTY_NAMES.endDate);\r\n            return void 0 === result ? result : new Date(result)\r\n        },\r\n        set: function(value) {\r\n            this.setField(PROPERTY_NAMES.endDate, value)\r\n        }\r\n    }, {\r\n        key: \"allDay\",\r\n        get: function() {\r\n            return this.getField(PROPERTY_NAMES.allDay)\r\n        },\r\n        set: function(value) {\r\n            this.setField(PROPERTY_NAMES.allDay, value)\r\n        }\r\n    }, {\r\n        key: \"text\",\r\n        get: function() {\r\n            return this.getField(PROPERTY_NAMES.text)\r\n        },\r\n        set: function(value) {\r\n            this.setField(PROPERTY_NAMES.text, value)\r\n        }\r\n    }, {\r\n        key: \"description\",\r\n        get: function() {\r\n            return this.getField(PROPERTY_NAMES.description)\r\n        },\r\n        set: function(value) {\r\n            this.setField(PROPERTY_NAMES.description, value)\r\n        }\r\n    }, {\r\n        key: \"startDateTimeZone\",\r\n        get: function() {\r\n            return this.getField(PROPERTY_NAMES.startDateTimeZone)\r\n        }\r\n    }, {\r\n        key: \"endDateTimeZone\",\r\n        get: function() {\r\n            return this.getField(PROPERTY_NAMES.endDateTimeZone)\r\n        }\r\n    }, {\r\n        key: \"recurrenceRule\",\r\n        get: function() {\r\n            return this.getField(PROPERTY_NAMES.recurrenceRule)\r\n        },\r\n        set: function(value) {\r\n            this.setField(PROPERTY_NAMES.recurrenceRule, value)\r\n        }\r\n    }, {\r\n        key: \"recurrenceException\",\r\n        get: function() {\r\n            return this.getField(PROPERTY_NAMES.recurrenceException)\r\n        },\r\n        set: function(value) {\r\n            this.setField(PROPERTY_NAMES.recurrenceException, value)\r\n        }\r\n    }, {\r\n        key: \"disabled\",\r\n        get: function() {\r\n            return this.getField(PROPERTY_NAMES.disabled)\r\n        }\r\n    }, {\r\n        key: \"timeZoneCalculator\",\r\n        get: function() {\r\n            return this.options.getTimeZoneCalculator()\r\n        }\r\n    }]);\r\n    return AppointmentAdapter\r\n}();\r\nvar _default = AppointmentAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.master_detail.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.master_detail\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"masterDetail\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                isRowExpanded: function() {\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _processItems: function() {\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _processDataItem: function() {\r\n                    return this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        }\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (exporter/excel/excel.number_format_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar numberFormatHelper = {\r\n    ID_PROPERTY_NAME: \"id\",\r\n    tryCreateTag: function(sourceObj) {\r\n        var result = null;\r\n        if (\"string\" === typeof sourceObj) {\r\n            result = {\r\n                formatCode: sourceObj\r\n            };\r\n            if (numberFormatHelper.isEmpty(result)) {\r\n                result = null\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    areEqual: function(leftTag, rightTag) {\r\n        return numberFormatHelper.isEmpty(leftTag) && numberFormatHelper.isEmpty(rightTag) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.formatCode === rightTag.formatCode\r\n    },\r\n    isEmpty: function(tag) {\r\n        return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.formatCode) || \"\" === tag.formatCode\r\n    },\r\n    toXml: function(tag) {\r\n        return _excel.default.toXml(\"numFmt\", {\r\n            numFmtId: tag[numberFormatHelper.ID_PROPERTY_NAME],\r\n            formatCode: tag.formatCode\r\n        })\r\n    }\r\n};\r\nvar _default = numberFormatHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (data/data_source.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _data_source = require(\"./data_source/data_source\");\r\nvar _default = _data_source.DataSource;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (events/short.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.keyboard = exports.click = exports.dxClick = exports.focus = exports.visibility = exports.hover = exports.resize = exports.active = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"./core/events_engine\"));\r\nvar _keyboard_processor = _interopRequireDefault(require(\"./core/keyboard_processor\"));\r\nvar _index = require(\"./utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction addNamespace(event, namespace) {\r\n    return namespace ? (0, _index.addNamespace)(event, namespace) : event\r\n}\r\n\r\nfunction executeAction(action, args) {\r\n    return \"function\" === typeof action ? action(args) : action.execute(args)\r\n}\r\nvar active = {\r\n    on: function($el, active, inactive, opts) {\r\n        var selector = opts.selector,\r\n            showTimeout = opts.showTimeout,\r\n            hideTimeout = opts.hideTimeout,\r\n            namespace = opts.namespace;\r\n        _events_engine.default.on($el, addNamespace(\"dxactive\", namespace), selector, {\r\n            timeout: showTimeout\r\n        }, function(event) {\r\n            return executeAction(active, {\r\n                event: event,\r\n                element: event.currentTarget\r\n            })\r\n        });\r\n        _events_engine.default.on($el, addNamespace(\"dxinactive\", namespace), selector, {\r\n            timeout: hideTimeout\r\n        }, function(event) {\r\n            return executeAction(inactive, {\r\n                event: event,\r\n                element: event.currentTarget\r\n            })\r\n        })\r\n    },\r\n    off: function($el, _ref) {\r\n        var namespace = _ref.namespace,\r\n            selector = _ref.selector;\r\n        _events_engine.default.off($el, addNamespace(\"dxactive\", namespace), selector);\r\n        _events_engine.default.off($el, addNamespace(\"dxinactive\", namespace), selector)\r\n    }\r\n};\r\nexports.active = active;\r\nvar resize = {\r\n    on: function($el, resize) {\r\n        var _ref2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},\r\n            namespace = _ref2.namespace;\r\n        _events_engine.default.on($el, addNamespace(\"dxresize\", namespace), resize)\r\n    },\r\n    off: function($el) {\r\n        var _ref3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\r\n            namespace = _ref3.namespace;\r\n        _events_engine.default.off($el, addNamespace(\"dxresize\", namespace))\r\n    }\r\n};\r\nexports.resize = resize;\r\nvar hover = {\r\n    on: function($el, start, end, _ref4) {\r\n        var selector = _ref4.selector,\r\n            namespace = _ref4.namespace;\r\n        _events_engine.default.on($el, addNamespace(\"dxhoverend\", namespace), selector, function(event) {\r\n            return end(event)\r\n        });\r\n        _events_engine.default.on($el, addNamespace(\"dxhoverstart\", namespace), selector, function(event) {\r\n            return executeAction(start, {\r\n                element: event.target,\r\n                event: event\r\n            })\r\n        })\r\n    },\r\n    off: function($el, _ref5) {\r\n        var selector = _ref5.selector,\r\n            namespace = _ref5.namespace;\r\n        _events_engine.default.off($el, addNamespace(\"dxhoverstart\", namespace), selector);\r\n        _events_engine.default.off($el, addNamespace(\"dxhoverend\", namespace), selector)\r\n    }\r\n};\r\nexports.hover = hover;\r\nvar visibility = {\r\n    on: function($el, shown, hiding, _ref6) {\r\n        var namespace = _ref6.namespace;\r\n        _events_engine.default.on($el, addNamespace(\"dxhiding\", namespace), hiding);\r\n        _events_engine.default.on($el, addNamespace(\"dxshown\", namespace), shown)\r\n    },\r\n    off: function($el, _ref7) {\r\n        var namespace = _ref7.namespace;\r\n        _events_engine.default.off($el, addNamespace(\"dxhiding\", namespace));\r\n        _events_engine.default.off($el, addNamespace(\"dxshown\", namespace))\r\n    }\r\n};\r\nexports.visibility = visibility;\r\nvar focus = {\r\n    on: function($el, focusIn, focusOut, _ref8) {\r\n        var namespace = _ref8.namespace,\r\n            isFocusable = _ref8.isFocusable;\r\n        _events_engine.default.on($el, addNamespace(\"focusin\", namespace), focusIn);\r\n        _events_engine.default.on($el, addNamespace(\"focusout\", namespace), focusOut);\r\n        if (_dom_adapter.default.hasDocumentProperty(\"onbeforeactivate\")) {\r\n            _events_engine.default.on($el, addNamespace(\"beforeactivate\", namespace), function(e) {\r\n                return isFocusable(null, e.target) || e.preventDefault()\r\n            })\r\n        }\r\n    },\r\n    off: function($el, _ref9) {\r\n        var namespace = _ref9.namespace;\r\n        _events_engine.default.off($el, addNamespace(\"focusin\", namespace));\r\n        _events_engine.default.off($el, addNamespace(\"focusout\", namespace));\r\n        if (_dom_adapter.default.hasDocumentProperty(\"onbeforeactivate\")) {\r\n            _events_engine.default.off($el, addNamespace(\"beforeactivate\", namespace))\r\n        }\r\n    },\r\n    trigger: function($el) {\r\n        return _events_engine.default.trigger($el, \"focus\")\r\n    }\r\n};\r\nexports.focus = focus;\r\nvar dxClick = {\r\n    on: function($el, click) {\r\n        var _ref10 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},\r\n            namespace = _ref10.namespace;\r\n        _events_engine.default.on($el, addNamespace(\"dxclick\", namespace), click)\r\n    },\r\n    off: function($el) {\r\n        var _ref11 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\r\n            namespace = _ref11.namespace;\r\n        _events_engine.default.off($el, addNamespace(\"dxclick\", namespace))\r\n    }\r\n};\r\nexports.dxClick = dxClick;\r\nvar click = {\r\n    on: function($el, click) {\r\n        var _ref12 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},\r\n            namespace = _ref12.namespace;\r\n        _events_engine.default.on($el, addNamespace(\"click\", namespace), click)\r\n    },\r\n    off: function($el) {\r\n        var _ref13 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\r\n            namespace = _ref13.namespace;\r\n        _events_engine.default.off($el, addNamespace(\"click\", namespace))\r\n    }\r\n};\r\nexports.click = click;\r\nvar index = 0;\r\nvar keyboardProcessors = {};\r\nvar generateListenerId = function() {\r\n    return \"keyboardProcessorId\".concat(index++)\r\n};\r\nvar keyboard = {\r\n    on: function(element, focusTarget, handler) {\r\n        var listenerId = generateListenerId();\r\n        keyboardProcessors[listenerId] = new _keyboard_processor.default({\r\n            element: element,\r\n            focusTarget: focusTarget,\r\n            handler: handler\r\n        });\r\n        return listenerId\r\n    },\r\n    off: function(listenerId) {\r\n        if (listenerId && keyboardProcessors[listenerId]) {\r\n            keyboardProcessors[listenerId].dispose();\r\n            delete keyboardProcessors[listenerId]\r\n        }\r\n    },\r\n    _getProcessor: function(listenerId) {\r\n        return keyboardProcessors[listenerId]\r\n    }\r\n};\r\nexports.keyboard = keyboard;\r\n","/**\r\n * DevExtreme (ui/html_editor/ui.html_editor.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _element = require(\"../../core/element\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _empty_template = require(\"../../core/templates/empty_template\");\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiEventsEmitterGesture = _interopRequireDefault(require(\"../scroll_view/ui.events.emitter.gesture.scroll\"));\r\nvar _utils = require(\"../text_box/utils.scroll\");\r\nvar _quill_registrator = _interopRequireDefault(require(\"./quill_registrator\"));\r\nrequire(\"./converters/delta\");\r\nvar _converterController = _interopRequireDefault(require(\"./converterController\"));\r\nvar _wordLists = _interopRequireDefault(require(\"./matchers/wordLists\"));\r\nvar _formDialog = _interopRequireDefault(require(\"./ui/formDialog\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar HTML_EDITOR_CLASS = \"dx-htmleditor\";\r\nvar QUILL_CONTAINER_CLASS = \"dx-quill-container\";\r\nvar QUILL_CLIPBOARD_CLASS = \"ql-clipboard\";\r\nvar HTML_EDITOR_SUBMIT_ELEMENT_CLASS = \"dx-htmleditor-submit-element\";\r\nvar HTML_EDITOR_CONTENT_CLASS = \"dx-htmleditor-content\";\r\nvar MARKDOWN_VALUE_TYPE = \"markdown\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"htmlContent\";\r\nvar HtmlEditor = _editor.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            focusStateEnabled: true,\r\n            valueType: \"html\",\r\n            placeholder: \"\",\r\n            toolbar: null,\r\n            variables: null,\r\n            mediaResizing: null,\r\n            mentions: null,\r\n            customizeModules: null,\r\n            formDialogOptions: null\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._cleanCallback = (0, _callbacks.default)();\r\n        this._contentInitializedCallback = (0, _callbacks.default)()\r\n    },\r\n    _getAnonymousTemplateName: function() {\r\n        return ANONYMOUS_TEMPLATE_NAME\r\n    },\r\n    _initTemplates: function() {\r\n        this._templateManager.addDefaultTemplates(_defineProperty({}, ANONYMOUS_TEMPLATE_NAME, new _empty_template.EmptyTemplate));\r\n        this.callBase()\r\n    },\r\n    _focusTarget: function() {\r\n        return this._getContent()\r\n    },\r\n    _getContent: function() {\r\n        return this.$element().find(\".\".concat(HTML_EDITOR_CONTENT_CLASS))\r\n    },\r\n    _focusInHandler: function(_ref) {\r\n        var relatedTarget = _ref.relatedTarget;\r\n        if (this._shouldSkipFocusEvent(relatedTarget)) {\r\n            return\r\n        }\r\n        this._toggleFocusClass(true, this.$element());\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _focusOutHandler: function(_ref2) {\r\n        var relatedTarget = _ref2.relatedTarget;\r\n        if (this._shouldSkipFocusEvent(relatedTarget)) {\r\n            return\r\n        }\r\n        this._toggleFocusClass(false, this.$element());\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _shouldSkipFocusEvent: function(relatedTarget) {\r\n        return (0, _renderer.default)(relatedTarget).hasClass(QUILL_CLIPBOARD_CLASS)\r\n    },\r\n    _initMarkup: function() {\r\n        this._$htmlContainer = (0, _renderer.default)(\"<div>\").addClass(QUILL_CONTAINER_CLASS);\r\n        this.$element().addClass(HTML_EDITOR_CLASS).wrapInner(this._$htmlContainer);\r\n        var template = this._getTemplate(ANONYMOUS_TEMPLATE_NAME);\r\n        var transclude = true;\r\n        this._$templateResult = template && template.render({\r\n            container: (0, _element.getPublicElement)(this._$htmlContainer),\r\n            noModel: true,\r\n            transclude: transclude\r\n        });\r\n        this._renderSubmitElement();\r\n        this.callBase();\r\n        this._updateContainerMarkup()\r\n    },\r\n    _renderSubmitElement: function() {\r\n        this._$submitElement = (0, _renderer.default)(\"<textarea>\").addClass(HTML_EDITOR_SUBMIT_ELEMENT_CLASS).attr(\"hidden\", true).appendTo(this.$element());\r\n        this._setSubmitValue(this.option(\"value\"))\r\n    },\r\n    _setSubmitValue: function(value) {\r\n        this._getSubmitElement().val(value)\r\n    },\r\n    _getSubmitElement: function() {\r\n        return this._$submitElement\r\n    },\r\n    _updateContainerMarkup: function() {\r\n        var markup = this.option(\"value\");\r\n        if (this._isMarkdownValue()) {\r\n            this._prepareMarkdownConverter();\r\n            markup = this._markdownConverter.toHtml(markup)\r\n        }\r\n        if (markup) {\r\n            this._$htmlContainer.html(markup)\r\n        }\r\n    },\r\n    _prepareMarkdownConverter: function() {\r\n        var MarkdownConverter = _converterController.default.getConverter(\"markdown\");\r\n        if (MarkdownConverter) {\r\n            this._markdownConverter = new MarkdownConverter\r\n        } else {\r\n            throw _ui.default.Error(\"E1051\", \"markdown\")\r\n        }\r\n    },\r\n    _render: function() {\r\n        this._prepareConverters();\r\n        this.callBase()\r\n    },\r\n    _prepareQuillRegistrator: function() {\r\n        if (!this._quillRegistrator) {\r\n            this._quillRegistrator = new _quill_registrator.default\r\n        }\r\n    },\r\n    _getRegistrator: function() {\r\n        this._prepareQuillRegistrator();\r\n        return this._quillRegistrator\r\n    },\r\n    _prepareConverters: function() {\r\n        if (!this._deltaConverter) {\r\n            var DeltaConverter = _converterController.default.getConverter(\"delta\");\r\n            if (DeltaConverter) {\r\n                this._deltaConverter = new DeltaConverter\r\n            }\r\n        }\r\n        if (this.option(\"valueType\") === MARKDOWN_VALUE_TYPE && !this._markdownConverter) {\r\n            this._prepareMarkdownConverter()\r\n        }\r\n    },\r\n    _renderContentImpl: function() {\r\n        this._contentRenderedDeferred = new _deferred.Deferred;\r\n        var renderContentPromise = this._contentRenderedDeferred.promise();\r\n        this.callBase();\r\n        this._renderHtmlEditor();\r\n        this._renderFormDialog();\r\n        this._addKeyPressHandler();\r\n        return renderContentPromise\r\n    },\r\n    _attachFocusEvents: function() {\r\n        (0, _common.deferRender)(this.callBase.bind(this))\r\n    },\r\n    _addKeyPressHandler: function() {\r\n        var keyDownEvent = (0, _index.addNamespace)(\"keydown\", \"\".concat(this.NAME, \"TextChange\"));\r\n        _events_engine.default.on(this._$htmlContainer, keyDownEvent, this._keyDownHandler.bind(this))\r\n    },\r\n    _keyDownHandler: function(e) {\r\n        this._saveValueChangeEvent(e)\r\n    },\r\n    _renderHtmlEditor: function() {\r\n        var _this = this;\r\n        var customizeModules = this.option(\"customizeModules\");\r\n        var modulesConfig = this._getModulesConfig();\r\n        if ((0, _type.isFunction)(customizeModules)) {\r\n            customizeModules(modulesConfig)\r\n        }\r\n        this._quillInstance = this._getRegistrator().createEditor(this._$htmlContainer[0], {\r\n            placeholder: this.option(\"placeholder\"),\r\n            readOnly: this.option(\"readOnly\") || this.option(\"disabled\"),\r\n            modules: modulesConfig,\r\n            theme: \"basic\"\r\n        });\r\n        this._deltaConverter.setQuillInstance(this._quillInstance);\r\n        this._textChangeHandlerWithContext = this._textChangeHandler.bind(this);\r\n        this._quillInstance.on(\"text-change\", this._textChangeHandlerWithContext);\r\n        this._renderScrollHandler();\r\n        if (this._hasTranscludedContent()) {\r\n            this._updateContentTask = (0, _common.executeAsync)(function() {\r\n                _this._applyTranscludedContent()\r\n            })\r\n        } else {\r\n            this._finalizeContentRendering()\r\n        }\r\n    },\r\n    _renderScrollHandler: function() {\r\n        var $scrollContainer = this._getContent();\r\n        var initScrollData = (0, _utils.prepareScrollData)($scrollContainer);\r\n        _events_engine.default.on($scrollContainer, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.init, this.NAME), initScrollData, _common.noop)\r\n    },\r\n    _applyTranscludedContent: function() {\r\n        var valueOption = this.option(\"value\");\r\n        if (!(0, _type.isDefined)(valueOption)) {\r\n            var html = this._deltaConverter.toHtml();\r\n            var newDelta = this._quillInstance.clipboard.convert({\r\n                html: html\r\n            });\r\n            if (newDelta.ops.length) {\r\n                this._quillInstance.setContents(newDelta);\r\n                return\r\n            }\r\n        }\r\n        this._finalizeContentRendering()\r\n    },\r\n    _hasTranscludedContent: function() {\r\n        return this._$templateResult && this._$templateResult.length\r\n    },\r\n    _getModulesConfig: function() {\r\n        var _this2 = this;\r\n        var quill = this._getRegistrator().getQuill();\r\n        var wordListMatcher = (0, _wordLists.default)(quill);\r\n        var modulesConfig = (0, _extend.extend)({}, {\r\n            table: true,\r\n            toolbar: this._getModuleConfigByOption(\"toolbar\"),\r\n            variables: this._getModuleConfigByOption(\"variables\"),\r\n            resizing: this._getModuleConfigByOption(\"mediaResizing\"),\r\n            mentions: this._getModuleConfigByOption(\"mentions\"),\r\n            uploader: {\r\n                onDrop: function(e) {\r\n                    return _this2._saveValueChangeEvent(e)\r\n                },\r\n                imageBlot: \"extendedImage\"\r\n            },\r\n            clipboard: {\r\n                onPaste: function(e) {\r\n                    return _this2._saveValueChangeEvent(e)\r\n                },\r\n                onCut: function(e) {\r\n                    return _this2._saveValueChangeEvent(e)\r\n                },\r\n                matchers: [\r\n                    [\"p.MsoListParagraphCxSpFirst\", wordListMatcher],\r\n                    [\"p.MsoListParagraphCxSpMiddle\", wordListMatcher],\r\n                    [\"p.MsoListParagraphCxSpLast\", wordListMatcher]\r\n                ]\r\n            }\r\n        }, this._getCustomModules());\r\n        return modulesConfig\r\n    },\r\n    _getModuleConfigByOption: function(userOptionName) {\r\n        var optionValue = this.option(userOptionName);\r\n        var config = {};\r\n        if (!(0, _type.isDefined)(optionValue)) {\r\n            return\r\n        }\r\n        if (Array.isArray(optionValue)) {\r\n            config[userOptionName] = optionValue\r\n        } else {\r\n            config = optionValue\r\n        }\r\n        return (0, _extend.extend)(this._getBaseModuleConfig(), config)\r\n    },\r\n    _getBaseModuleConfig: function() {\r\n        return {\r\n            editorInstance: this\r\n        }\r\n    },\r\n    _getCustomModules: function() {\r\n        var _this3 = this;\r\n        var modules = {};\r\n        var moduleNames = this._getRegistrator().getRegisteredModuleNames();\r\n        moduleNames.forEach(function(modulePath) {\r\n            modules[modulePath] = _this3._getBaseModuleConfig()\r\n        });\r\n        return modules\r\n    },\r\n    _textChangeHandler: function(newDelta, oldDelta, source) {\r\n        var htmlMarkup = this._deltaConverter.toHtml();\r\n        var convertedValue = this._isMarkdownValue() ? this._updateValueByType(MARKDOWN_VALUE_TYPE, htmlMarkup) : htmlMarkup;\r\n        var currentValue = this.option(\"value\");\r\n        if (currentValue !== convertedValue && !this._isNullValueConverted(currentValue, convertedValue)) {\r\n            this._isEditorUpdating = true;\r\n            this.option(\"value\", convertedValue)\r\n        }\r\n        this._finalizeContentRendering()\r\n    },\r\n    _isNullValueConverted: function(currentValue, convertedValue) {\r\n        return null === currentValue && \"\" === convertedValue\r\n    },\r\n    _finalizeContentRendering: function() {\r\n        if (this._contentRenderedDeferred) {\r\n            this.clearHistory();\r\n            this._contentInitializedCallback.fire();\r\n            this._contentRenderedDeferred.resolve();\r\n            this._contentRenderedDeferred = void 0\r\n        }\r\n    },\r\n    _updateValueByType: function(valueType, value) {\r\n        var converter = this._markdownConverter;\r\n        if (!(0, _type.isDefined)(converter)) {\r\n            return\r\n        }\r\n        var currentValue = (0, _common.ensureDefined)(value, this.option(\"value\"));\r\n        return valueType === MARKDOWN_VALUE_TYPE ? converter.toMarkdown(currentValue) : converter.toHtml(currentValue)\r\n    },\r\n    _isMarkdownValue: function() {\r\n        return this.option(\"valueType\") === MARKDOWN_VALUE_TYPE\r\n    },\r\n    _resetEnabledState: function() {\r\n        if (this._quillInstance) {\r\n            var isEnabled = !(this.option(\"readOnly\") || this.option(\"disabled\"));\r\n            this._quillInstance.enable(isEnabled)\r\n        }\r\n    },\r\n    _renderFormDialog: function() {\r\n        var userOptions = (0, _extend.extend)(true, {\r\n            width: \"auto\",\r\n            height: \"auto\",\r\n            closeOnOutsideClick: true\r\n        }, this.option(\"formDialogOptions\"));\r\n        this._formDialog = new _formDialog.default(this, userOptions)\r\n    },\r\n    _getQuillContainer: function() {\r\n        return this._$htmlContainer\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"value\":\r\n                if (this._quillInstance) {\r\n                    if (this._isEditorUpdating) {\r\n                        this._isEditorUpdating = false\r\n                    } else {\r\n                        var updatedValue = this._isMarkdownValue() ? this._updateValueByType(\"HTML\", args.value) : args.value;\r\n                        this._updateHtmlContent(updatedValue)\r\n                    }\r\n                } else {\r\n                    this._$htmlContainer.html(args.value)\r\n                }\r\n                this._setSubmitValue(args.value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"placeholder\":\r\n            case \"variables\":\r\n            case \"toolbar\":\r\n            case \"mentions\":\r\n            case \"customizeModules\":\r\n                this._invalidate();\r\n                break;\r\n            case \"valueType\":\r\n                this._prepareConverters();\r\n                var newValue = this._updateValueByType(args.value);\r\n                if (\"html\" === args.value && this._quillInstance) {\r\n                    this._updateHtmlContent(newValue)\r\n                } else {\r\n                    this.option(\"value\", newValue)\r\n                }\r\n                break;\r\n            case \"readOnly\":\r\n            case \"disabled\":\r\n                this.callBase(args);\r\n                this._resetEnabledState();\r\n                break;\r\n            case \"formDialogOptions\":\r\n                this._renderFormDialog();\r\n                break;\r\n            case \"mediaResizing\":\r\n                if (!args.previousValue || !args.value) {\r\n                    this._invalidate()\r\n                } else {\r\n                    this._quillInstance.getModule(\"resizing\").option(args.name, args.value)\r\n                }\r\n                break;\r\n            case \"width\":\r\n                this.callBase(args);\r\n                this._repaintToolbar();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _repaintToolbar: function() {\r\n        var toolbar = this._quillInstance.getModule(\"toolbar\");\r\n        toolbar && toolbar.repaint()\r\n    },\r\n    _updateHtmlContent: function(html) {\r\n        var newDelta = this._quillInstance.clipboard.convert({\r\n            html: html\r\n        });\r\n        this._quillInstance.setContents(newDelta)\r\n    },\r\n    _clean: function() {\r\n        if (this._quillInstance) {\r\n            _events_engine.default.off(this._getContent(), \".\".concat(this.NAME));\r\n            this._quillInstance.off(\"text-change\", this._textChangeHandlerWithContext);\r\n            this._cleanCallback.fire()\r\n        }\r\n        this._abortUpdateContentTask();\r\n        this._cleanCallback.empty();\r\n        this._contentInitializedCallback.empty();\r\n        this.callBase()\r\n    },\r\n    _abortUpdateContentTask: function() {\r\n        if (this._updateContentTask) {\r\n            this._updateContentTask.abort();\r\n            this._updateContentTask = void 0\r\n        }\r\n    },\r\n    _applyQuillMethod: function(methodName, args) {\r\n        if (this._quillInstance) {\r\n            return this._quillInstance[methodName].apply(this._quillInstance, args)\r\n        }\r\n    },\r\n    _applyQuillHistoryMethod: function(methodName) {\r\n        if (this._quillInstance && this._quillInstance.history) {\r\n            this._quillInstance.history[methodName]()\r\n        }\r\n    },\r\n    addCleanCallback: function(callback) {\r\n        this._cleanCallback.add(callback)\r\n    },\r\n    addContentInitializedCallback: function(callback) {\r\n        this._contentInitializedCallback.add(callback)\r\n    },\r\n    register: function(components) {\r\n        this._getRegistrator().registerModules(components);\r\n        if (this._quillInstance) {\r\n            this.repaint()\r\n        }\r\n    },\r\n    get: function(modulePath) {\r\n        return this._getRegistrator().getQuill().import(modulePath)\r\n    },\r\n    getModule: function(moduleName) {\r\n        return this._applyQuillMethod(\"getModule\", arguments)\r\n    },\r\n    getQuillInstance: function() {\r\n        return this._quillInstance\r\n    },\r\n    getSelection: function() {\r\n        return this._applyQuillMethod(\"getSelection\")\r\n    },\r\n    setSelection: function(index, length) {\r\n        this._applyQuillMethod(\"setSelection\", arguments)\r\n    },\r\n    format: function(formatName, formatValue) {\r\n        this._applyQuillMethod(\"format\", arguments)\r\n    },\r\n    formatText: function(index, length, formatName, formatValue) {\r\n        this._applyQuillMethod(\"formatText\", arguments)\r\n    },\r\n    formatLine: function(index, length, formatName, formatValue) {\r\n        this._applyQuillMethod(\"formatLine\", arguments)\r\n    },\r\n    getFormat: function(index, length) {\r\n        return this._applyQuillMethod(\"getFormat\", arguments)\r\n    },\r\n    removeFormat: function(index, length) {\r\n        return this._applyQuillMethod(\"removeFormat\", arguments)\r\n    },\r\n    clearHistory: function() {\r\n        this._applyQuillHistoryMethod(\"clear\")\r\n    },\r\n    undo: function() {\r\n        this._applyQuillHistoryMethod(\"undo\")\r\n    },\r\n    redo: function() {\r\n        this._applyQuillHistoryMethod(\"redo\")\r\n    },\r\n    getLength: function() {\r\n        return this._applyQuillMethod(\"getLength\")\r\n    },\r\n    \"delete\": function(index, length) {\r\n        this._applyQuillMethod(\"deleteText\", arguments)\r\n    },\r\n    insertText: function(index, text, formats) {\r\n        this._applyQuillMethod(\"insertText\", arguments)\r\n    },\r\n    insertEmbed: function(index, type, config) {\r\n        this._applyQuillMethod(\"insertEmbed\", arguments)\r\n    },\r\n    showFormDialog: function(formConfig) {\r\n        return this._formDialog.show(formConfig)\r\n    },\r\n    formDialogOption: function(optionName, optionValue) {\r\n        return this._formDialog.popupOption.apply(this._formDialog, arguments)\r\n    },\r\n    focus: function() {\r\n        this.callBase();\r\n        this._applyQuillMethod(\"focus\")\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxHtmlEditor\", HtmlEditor);\r\nvar _default = HtmlEditor;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.toFixed = toFixed;\r\nvar _math = require(\"../core/utils/math\");\r\nvar DECIMAL_BASE = 10;\r\n\r\nfunction roundByAbs(value) {\r\n    var valueSign = (0, _math.sign)(value);\r\n    return valueSign * Math.round(Math.abs(value))\r\n}\r\n\r\nfunction adjustValue(value, precision) {\r\n    var precisionMultiplier = Math.pow(DECIMAL_BASE, precision);\r\n    var roundMultiplier = precisionMultiplier * DECIMAL_BASE;\r\n    var intermediateValue = value * roundMultiplier / DECIMAL_BASE;\r\n    return roundByAbs(intermediateValue) / precisionMultiplier\r\n}\r\n\r\nfunction toFixed(value, precision) {\r\n    var valuePrecision = precision || 0;\r\n    var adjustedValue = valuePrecision > 0 ? adjustValue.apply(void 0, arguments) : value;\r\n    return adjustedValue.toFixed(valuePrecision)\r\n}\r\n","/**\r\n * DevExtreme (localization/cldr-data/first_day_of_week_data.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = {\r\n    \"af-NA\": 1,\r\n    agq: 1,\r\n    ak: 1,\r\n    ar: 6,\r\n    \"ar-EH\": 1,\r\n    \"ar-ER\": 1,\r\n    \"ar-KM\": 1,\r\n    \"ar-LB\": 1,\r\n    \"ar-MA\": 1,\r\n    \"ar-MR\": 1,\r\n    \"ar-PS\": 1,\r\n    \"ar-SO\": 1,\r\n    \"ar-SS\": 1,\r\n    \"ar-TD\": 1,\r\n    \"ar-TN\": 1,\r\n    asa: 1,\r\n    ast: 1,\r\n    az: 1,\r\n    \"az-Cyrl\": 1,\r\n    bas: 1,\r\n    be: 1,\r\n    bem: 1,\r\n    bez: 1,\r\n    bg: 1,\r\n    bm: 1,\r\n    br: 1,\r\n    bs: 1,\r\n    \"bs-Cyrl\": 1,\r\n    ca: 1,\r\n    ce: 1,\r\n    cgg: 1,\r\n    ckb: 6,\r\n    cs: 1,\r\n    cu: 1,\r\n    cy: 1,\r\n    da: 1,\r\n    de: 1,\r\n    dje: 1,\r\n    dsb: 1,\r\n    dua: 1,\r\n    dyo: 1,\r\n    ee: 1,\r\n    el: 1,\r\n    \"en-001\": 1,\r\n    \"en-AE\": 6,\r\n    \"en-BI\": 1,\r\n    \"en-MP\": 1,\r\n    \"en-SD\": 6,\r\n    eo: 1,\r\n    es: 1,\r\n    et: 1,\r\n    eu: 1,\r\n    ewo: 1,\r\n    fa: 6,\r\n    ff: 1,\r\n    \"ff-Adlm\": 1,\r\n    fi: 1,\r\n    fo: 1,\r\n    fr: 1,\r\n    \"fr-DJ\": 6,\r\n    \"fr-DZ\": 6,\r\n    \"fr-SY\": 6,\r\n    fur: 1,\r\n    fy: 1,\r\n    ga: 1,\r\n    gd: 1,\r\n    gl: 1,\r\n    gsw: 1,\r\n    gv: 1,\r\n    ha: 1,\r\n    hr: 1,\r\n    hsb: 1,\r\n    hu: 1,\r\n    hy: 1,\r\n    ia: 1,\r\n    ig: 1,\r\n    is: 1,\r\n    it: 1,\r\n    jgo: 1,\r\n    jmc: 1,\r\n    ka: 1,\r\n    kab: 6,\r\n    kde: 1,\r\n    kea: 1,\r\n    khq: 1,\r\n    kk: 1,\r\n    kkj: 1,\r\n    kl: 1,\r\n    \"ko-KP\": 1,\r\n    ksb: 1,\r\n    ksf: 1,\r\n    ksh: 1,\r\n    ku: 1,\r\n    kw: 1,\r\n    ky: 1,\r\n    lag: 1,\r\n    lb: 1,\r\n    lg: 1,\r\n    ln: 1,\r\n    lrc: 6,\r\n    lt: 1,\r\n    lu: 1,\r\n    lv: 1,\r\n    \"mas-TZ\": 1,\r\n    mfe: 1,\r\n    mg: 1,\r\n    mgo: 1,\r\n    mi: 1,\r\n    mk: 1,\r\n    mn: 1,\r\n    ms: 1,\r\n    mua: 1,\r\n    mzn: 6,\r\n    naq: 1,\r\n    nb: 1,\r\n    nds: 1,\r\n    nl: 1,\r\n    nmg: 1,\r\n    nn: 1,\r\n    nnh: 1,\r\n    nus: 1,\r\n    nyn: 1,\r\n    os: 1,\r\n    pcm: 1,\r\n    pl: 1,\r\n    prg: 1,\r\n    ps: 6,\r\n    \"pt-AO\": 1,\r\n    \"pt-CH\": 1,\r\n    \"pt-CV\": 1,\r\n    \"pt-GQ\": 1,\r\n    \"pt-GW\": 1,\r\n    \"pt-LU\": 1,\r\n    \"pt-ST\": 1,\r\n    \"pt-TL\": 1,\r\n    \"qu-BO\": 1,\r\n    \"qu-EC\": 1,\r\n    rm: 1,\r\n    rn: 1,\r\n    ro: 1,\r\n    rof: 1,\r\n    ru: 1,\r\n    rw: 1,\r\n    rwk: 1,\r\n    sah: 1,\r\n    sbp: 1,\r\n    se: 1,\r\n    ses: 1,\r\n    sg: 1,\r\n    shi: 1,\r\n    \"shi-Latn\": 1,\r\n    si: 1,\r\n    sk: 1,\r\n    sl: 1,\r\n    smn: 1,\r\n    so: 1,\r\n    \"so-DJ\": 6,\r\n    sq: 1,\r\n    sr: 1,\r\n    \"sr-Latn\": 1,\r\n    sv: 1,\r\n    sw: 1,\r\n    \"ta-LK\": 1,\r\n    \"ta-MY\": 1,\r\n    teo: 1,\r\n    tg: 1,\r\n    \"ti-ER\": 1,\r\n    tk: 1,\r\n    to: 1,\r\n    tr: 1,\r\n    tt: 1,\r\n    twq: 1,\r\n    tzm: 1,\r\n    uk: 1,\r\n    uz: 1,\r\n    \"uz-Arab\": 6,\r\n    \"uz-Cyrl\": 1,\r\n    vai: 1,\r\n    \"vai-Latn\": 1,\r\n    vi: 1,\r\n    vo: 1,\r\n    vun: 1,\r\n    wae: 1,\r\n    wo: 1,\r\n    xog: 1,\r\n    yav: 1,\r\n    yi: 1,\r\n    yo: 1,\r\n    zgh: 1\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_view/ui.tree_view.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _element = require(\"../../core/element\");\r\nvar _check_box = _interopRequireDefault(require(\"../check_box\"));\r\nvar _ui = _interopRequireDefault(require(\"../hierarchical_collection/ui.hierarchical_collection_widget\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _ui3 = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar WIDGET_CLASS = \"dx-treeview\";\r\nvar NODE_CLASS = \"\".concat(WIDGET_CLASS, \"-node\");\r\nvar NODE_CONTAINER_CLASS = \"\".concat(NODE_CLASS, \"-container\");\r\nvar NODE_LOAD_INDICATOR_CLASS = \"\".concat(NODE_CLASS, \"-loadindicator\");\r\nvar OPENED_NODE_CONTAINER_CLASS = \"\".concat(NODE_CLASS, \"-container-opened\");\r\nvar IS_LEAF = \"\".concat(NODE_CLASS, \"-is-leaf\");\r\nvar ITEM_CLASS = \"\".concat(WIDGET_CLASS, \"-item\");\r\nvar ITEM_WITH_CHECKBOX_CLASS = \"\".concat(ITEM_CLASS, \"-with-checkbox\");\r\nvar ITEM_WITHOUT_CHECKBOX_CLASS = \"\".concat(ITEM_CLASS, \"-without-checkbox\");\r\nvar ITEM_DATA_KEY = \"\".concat(ITEM_CLASS, \"-data\");\r\nvar TOGGLE_ITEM_VISIBILITY_CLASS = \"\".concat(WIDGET_CLASS, \"-toggle-item-visibility\");\r\nvar LOAD_INDICATOR_CLASS = \"\".concat(WIDGET_CLASS, \"-loadindicator\");\r\nvar LOAD_INDICATOR_WRAPPER_CLASS = \"\".concat(WIDGET_CLASS, \"-loadindicator-wrapper\");\r\nvar TOGGLE_ITEM_VISIBILITY_OPENED_CLASS = \"\".concat(WIDGET_CLASS, \"-toggle-item-visibility-opened\");\r\nvar SELECT_ALL_ITEM_CLASS = \"\".concat(WIDGET_CLASS, \"-select-all-item\");\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar SELECTED_ITEM_CLASS = \"dx-state-selected\";\r\nvar EXPAND_EVENT_NAMESPACE = \"dxTreeView_expand\";\r\nvar DATA_ITEM_ID = \"data-item-id\";\r\nvar TreeViewBase = _ui.default.inherit({\r\n    _supportedKeys: function(e) {\r\n        var _this = this;\r\n        var click = function(e) {\r\n            var $itemElement = (0, _renderer.default)(_this.option(\"focusedElement\"));\r\n            if (!$itemElement.length) {\r\n                return\r\n            }\r\n            e.target = $itemElement;\r\n            e.currentTarget = $itemElement;\r\n            _this._itemClickHandler(e, $itemElement.children(\".\" + ITEM_CLASS));\r\n            var expandEventName = _this._getEventNameByOption(_this.option(\"expandEvent\"));\r\n            var expandByClick = expandEventName === (0, _index.addNamespace)(_click.name, EXPAND_EVENT_NAMESPACE);\r\n            if (expandByClick) {\r\n                _this._expandEventHandler(e)\r\n            }\r\n        };\r\n        var select = function(e) {\r\n            e.preventDefault();\r\n            _this._changeCheckBoxState((0, _renderer.default)(_this.option(\"focusedElement\")))\r\n        };\r\n        var toggleExpandedNestedItems = function(state, e) {\r\n            if (!this.option(\"expandAllEnabled\")) {\r\n                return\r\n            }\r\n            e.preventDefault();\r\n            var $rootElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n            if (!$rootElement.length) {\r\n                return\r\n            }\r\n            var rootItem = this._getItemData($rootElement.find(\".\".concat(ITEM_CLASS)));\r\n            this._toggleExpandedNestedItems([rootItem], state)\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            enter: this._showCheckboxes() ? select : click,\r\n            space: this._showCheckboxes() ? select : click,\r\n            asterisk: toggleExpandedNestedItems.bind(this, true),\r\n            minus: toggleExpandedNestedItems.bind(this, false)\r\n        })\r\n    },\r\n    _changeCheckBoxState: function($element) {\r\n        var checkboxInstance = this._getCheckBoxInstance($element);\r\n        var currentState = checkboxInstance.option(\"value\");\r\n        if (!checkboxInstance.option(\"disabled\")) {\r\n            this._updateItemSelection(!currentState, $element.find(\".\" + ITEM_CLASS).get(0), true, $element)\r\n        }\r\n    },\r\n    _toggleExpandedNestedItems: function(items, state) {\r\n        if (!items) {\r\n            return\r\n        }\r\n        for (var i = 0, len = items.length; i < len; i++) {\r\n            var item = items[i];\r\n            var node = this._dataAdapter.getNodeByItem(item);\r\n            this._toggleExpandedState(node, state);\r\n            this._toggleExpandedNestedItems(item.items, state)\r\n        }\r\n    },\r\n    _getNodeElement: function(node, cache) {\r\n        var key = this._encodeString(node.internalFields.key);\r\n        if (cache) {\r\n            if (!cache.$nodeByKey) {\r\n                cache.$nodeByKey = {};\r\n                this.$element().find(\".\".concat(NODE_CLASS)).each(function() {\r\n                    var $node = (0, _renderer.default)(this);\r\n                    var key = $node.attr(DATA_ITEM_ID);\r\n                    cache.$nodeByKey[key] = $node\r\n                })\r\n            }\r\n            return cache.$nodeByKey[key] || (0, _renderer.default)()\r\n        }\r\n        var element = this.$element().get(0).querySelector(\"[\".concat(DATA_ITEM_ID, '=\"').concat(key, '\"]'));\r\n        return (0, _renderer.default)(element)\r\n    },\r\n    _activeStateUnit: \".\" + ITEM_CLASS,\r\n    _widgetClass: function() {\r\n        return WIDGET_CLASS\r\n    },\r\n    _getDefaultOptions: function() {\r\n        var defaultOptions = (0, _extend.extend)(this.callBase(), {\r\n            animationEnabled: true,\r\n            dataStructure: \"tree\",\r\n            deferRendering: true,\r\n            expandAllEnabled: false,\r\n            hasItemsExpr: \"hasItems\",\r\n            selectNodesRecursive: true,\r\n            expandNodesRecursive: true,\r\n            showCheckBoxesMode: \"none\",\r\n            selectAllText: _message.default.format(\"dxList-selectAll\"),\r\n            onItemSelectionChanged: null,\r\n            onItemExpanded: null,\r\n            onItemCollapsed: null,\r\n            scrollDirection: \"vertical\",\r\n            virtualModeEnabled: false,\r\n            rootValue: 0,\r\n            focusStateEnabled: false,\r\n            selectionMode: \"multiple\",\r\n            expandEvent: \"dblclick\",\r\n            selectByClick: false,\r\n            createChildren: null,\r\n            onSelectAllValueChanged: null\r\n        });\r\n        return (0, _extend.extend)(true, defaultOptions, {\r\n            integrationOptions: {\r\n                useDeferUpdateForTemplates: false\r\n            }\r\n        })\r\n    },\r\n    _initSelectedItems: _common.noop,\r\n    _syncSelectionOptions: _common.asyncNoop,\r\n    _fireSelectionChanged: function() {\r\n        var selectionChangePromise = this._selectionChangePromise;\r\n        (0, _deferred.when)(selectionChangePromise).done(function() {\r\n            this._createActionByOption(\"onSelectionChanged\", {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            })()\r\n        }.bind(this))\r\n    },\r\n    _createSelectAllValueChangedAction: function() {\r\n        this._selectAllValueChangedAction = this._createActionByOption(\"onSelectAllValueChanged\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _fireSelectAllValueChanged: function(value) {\r\n        this._selectAllValueChangedAction({\r\n            value: value\r\n        })\r\n    },\r\n    _checkBoxModeChange: function(value, previousValue) {\r\n        if (\"none\" === previousValue || \"none\" === value) {\r\n            this.repaint();\r\n            return\r\n        }\r\n        var selectAllExists = this._$selectAllItem && this._$selectAllItem.length;\r\n        switch (value) {\r\n            case \"selectAll\":\r\n                !selectAllExists && this._renderSelectAllItem();\r\n                break;\r\n            case \"normal\":\r\n                if (selectAllExists) {\r\n                    this._$selectAllItem.remove();\r\n                    delete this._$selectAllItem\r\n                }\r\n        }\r\n    },\r\n    _removeSelection: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(this._dataAdapter.getFullData(), function(_, node) {\r\n            if (!that._hasChildren(node)) {\r\n                return\r\n            }\r\n            that._dataAdapter.toggleSelection(node.internalFields.key, false, true)\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name,\r\n            value = args.value,\r\n            previousValue = args.previousValue;\r\n        switch (name) {\r\n            case \"selectAllText\":\r\n                if (this._$selectAllItem) {\r\n                    this._$selectAllItem.dxCheckBox(\"instance\").option(\"text\", value)\r\n                }\r\n                break;\r\n            case \"showCheckBoxesMode\":\r\n                this._checkBoxModeChange(value, previousValue);\r\n                break;\r\n            case \"scrollDirection\":\r\n                this._scrollableContainer.option(\"direction\", value);\r\n                break;\r\n            case \"items\":\r\n                delete this._$selectAllItem;\r\n                this.callBase(args);\r\n                break;\r\n            case \"dataSource\":\r\n                this.callBase(args);\r\n                this._initDataAdapter();\r\n                this._filter = {};\r\n                break;\r\n            case \"hasItemsExpr\":\r\n                this._initAccessors();\r\n                this.repaint();\r\n                break;\r\n            case \"expandEvent\":\r\n                this._initExpandEvent();\r\n                break;\r\n            case \"deferRendering\":\r\n            case \"dataStructure\":\r\n            case \"rootValue\":\r\n            case \"createChildren\":\r\n            case \"expandNodesRecursive\":\r\n            case \"onItemSelectionChanged\":\r\n            case \"onItemExpanded\":\r\n            case \"onItemCollapsed\":\r\n            case \"expandAllEnabled\":\r\n            case \"animationEnabled\":\r\n            case \"virtualModeEnabled\":\r\n            case \"selectByClick\":\r\n                break;\r\n            case \"selectionMode\":\r\n                this._initDataAdapter();\r\n                this.callBase(args);\r\n                break;\r\n            case \"onSelectAllValueChanged\":\r\n                this._createSelectAllValueChangedAction();\r\n                break;\r\n            case \"selectNodesRecursive\":\r\n                this._dataAdapter.setOption(\"recursiveSelection\", args.value);\r\n                this.repaint();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _initDataSource: function() {\r\n        if (this._useCustomChildrenLoader()) {\r\n            this._loadChildrenByCustomLoader(null).done(function(newItems) {\r\n                if (newItems && newItems.length) {\r\n                    this.option(\"items\", newItems)\r\n                }\r\n            }.bind(this))\r\n        } else {\r\n            this.callBase();\r\n            this._isVirtualMode() && this._initVirtualMode()\r\n        }\r\n    },\r\n    _initVirtualMode: function() {\r\n        var filter = this._filter;\r\n        if (!filter.custom) {\r\n            filter.custom = this._dataSource.filter()\r\n        }\r\n        if (!filter.internal) {\r\n            filter.internal = [this.option(\"parentIdExpr\"), this.option(\"rootValue\")]\r\n        }\r\n    },\r\n    _useCustomChildrenLoader: function() {\r\n        return (0, _type.isFunction)(this.option(\"createChildren\")) && this._isDataStructurePlain()\r\n    },\r\n    _loadChildrenByCustomLoader: function(parentNode) {\r\n        var invocationResult = this.option(\"createChildren\").call(this, parentNode);\r\n        if (Array.isArray(invocationResult)) {\r\n            return (new _deferred.Deferred).resolve(invocationResult).promise()\r\n        }\r\n        if (invocationResult && (0, _type.isFunction)(invocationResult.then)) {\r\n            return (0, _deferred.fromPromise)(invocationResult)\r\n        }\r\n        return (new _deferred.Deferred).resolve([]).promise()\r\n    },\r\n    _combineFilter: function() {\r\n        if (!this._filter.custom || !this._filter.custom.length) {\r\n            return this._filter.internal\r\n        }\r\n        return [this._filter.custom, this._filter.internal]\r\n    },\r\n    _dataSourceLoadErrorHandler: function() {\r\n        this._renderEmptyMessage()\r\n    },\r\n    _init: function() {\r\n        this._filter = {};\r\n        this.callBase();\r\n        this._initStoreChangeHandlers()\r\n    },\r\n    _dataSourceChangedHandler: function(newItems) {\r\n        var items = this.option(\"items\");\r\n        if (this._initialized && this._isVirtualMode() && items.length) {\r\n            return\r\n        }\r\n        this.option(\"items\", newItems)\r\n    },\r\n    _removeTreeViewLoadIndicator: function() {\r\n        if (!this._treeViewLoadIndicator) {\r\n            return\r\n        }\r\n        this._treeViewLoadIndicator.remove();\r\n        this._treeViewLoadIndicator = null\r\n    },\r\n    _createTreeViewLoadIndicator: function() {\r\n        this._treeViewLoadIndicator = (0, _renderer.default)(\"<div>\").addClass(LOAD_INDICATOR_CLASS);\r\n        this._createComponent(this._treeViewLoadIndicator, _load_indicator.default, {});\r\n        return this._treeViewLoadIndicator\r\n    },\r\n    _dataSourceLoadingChangedHandler: function(isLoading) {\r\n        var resultFilter;\r\n        if (this._isVirtualMode()) {\r\n            resultFilter = this._combineFilter();\r\n            this._dataSource.filter(resultFilter)\r\n        }\r\n        if (isLoading && !this._dataSource.isLoaded()) {\r\n            this.option(\"items\", []);\r\n            var $wrapper = (0, _renderer.default)(\"<div>\").addClass(LOAD_INDICATOR_WRAPPER_CLASS);\r\n            this._createTreeViewLoadIndicator().appendTo($wrapper);\r\n            this.itemsContainer().append($wrapper);\r\n            if (this._isVirtualMode() && this._dataSource.filter() !== resultFilter) {\r\n                this._dataSource.filter([])\r\n            }\r\n        } else {\r\n            this._removeTreeViewLoadIndicator()\r\n        }\r\n    },\r\n    _initStoreChangeHandlers: function() {\r\n        var _this2 = this;\r\n        if (\"plain\" !== this.option(\"dataStructure\")) {\r\n            return\r\n        }\r\n        this._dataSource && this._dataSource.store().on(\"inserted\", function(newItem) {\r\n            _this2.option().items = _this2.option(\"items\").concat(newItem);\r\n            _this2._dataAdapter.addItem(newItem);\r\n            if (!_this2._dataAdapter.isFiltered(newItem)) {\r\n                return\r\n            }\r\n            _this2._updateLevel(_this2._parentIdGetter(newItem))\r\n        }).on(\"removed\", function(removedKey) {\r\n            var node = _this2._dataAdapter.getNodeByKey(removedKey);\r\n            if ((0, _type.isDefined)(node)) {\r\n                _this2.option(\"items\")[_this2._dataAdapter.getIndexByKey(node.internalFields.key)] = 0;\r\n                _this2._markChildrenItemsToRemove(node);\r\n                _this2._removeItems();\r\n                _this2._dataAdapter.removeItem(removedKey);\r\n                _this2._updateLevel(_this2._parentIdGetter(node))\r\n            }\r\n        })\r\n    },\r\n    _markChildrenItemsToRemove: function(node) {\r\n        var _this3 = this;\r\n        var keys = node.internalFields.childrenKeys;\r\n        (0, _iterator.each)(keys, function(_, key) {\r\n            _this3.option(\"items\")[_this3._dataAdapter.getIndexByKey(key)] = 0;\r\n            _this3._markChildrenItemsToRemove(_this3._dataAdapter.getNodeByKey(key))\r\n        })\r\n    },\r\n    _removeItems: function() {\r\n        var _this4 = this;\r\n        var items = (0, _extend.extend)(true, [], this.option(\"items\"));\r\n        var counter = 0;\r\n        (0, _iterator.each)(items, function(index, item) {\r\n            if (!item) {\r\n                _this4.option(\"items\").splice(index - counter, 1);\r\n                counter++\r\n            }\r\n        })\r\n    },\r\n    _updateLevel: function(parentId) {\r\n        var $container = this._getContainerByParentKey(parentId);\r\n        this._renderItems($container, this._dataAdapter.getChildrenNodes(parentId))\r\n    },\r\n    _getOldContainer: function($itemElement) {\r\n        if ($itemElement.length) {\r\n            return $itemElement.children(\".\".concat(NODE_CONTAINER_CLASS))\r\n        }\r\n        if (this._scrollableContainer) {\r\n            return this._scrollableContainer.$content().children()\r\n        }\r\n        return (0, _renderer.default)()\r\n    },\r\n    _getContainerByParentKey: function(parentId) {\r\n        var node = this._dataAdapter.getNodeByKey(parentId);\r\n        var $itemElement = node ? this._getNodeElement(node) : [];\r\n        this._getOldContainer($itemElement).remove();\r\n        var $container = this._renderNodeContainer($itemElement);\r\n        if (this._isRootLevel(parentId)) {\r\n            if (!this._scrollableContainer) {\r\n                this._renderScrollableContainer()\r\n            }\r\n            this._scrollableContainer.$content().append($container)\r\n        }\r\n        return $container\r\n    },\r\n    _isRootLevel: function(parentId) {\r\n        return parentId === this.option(\"rootValue\")\r\n    },\r\n    _getAccessors: function() {\r\n        var accessors = this.callBase();\r\n        accessors.push(\"hasItems\");\r\n        return accessors\r\n    },\r\n    _getDataAdapterOptions: function() {\r\n        return {\r\n            rootValue: this.option(\"rootValue\"),\r\n            multipleSelection: !this._isSingleSelection(),\r\n            recursiveSelection: this._isRecursiveSelection(),\r\n            recursiveExpansion: this.option(\"expandNodesRecursive\"),\r\n            selectionRequired: this.option(\"selectionRequired\"),\r\n            dataType: this.option(\"dataStructure\"),\r\n            sort: this._dataSource && this._dataSource.sort()\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderScrollableContainer();\r\n        this._renderEmptyMessage(this._dataAdapter.getRootNodes());\r\n        this.callBase();\r\n        this.setAria(\"role\", \"tree\")\r\n    },\r\n    _renderContentImpl: function() {\r\n        var $nodeContainer = this._renderNodeContainer();\r\n        this._scrollableContainer.$content().append($nodeContainer);\r\n        if (!this.option(\"items\") || !this.option(\"items\").length) {\r\n            return\r\n        }\r\n        this._renderItems($nodeContainer, this._dataAdapter.getRootNodes());\r\n        this._initExpandEvent();\r\n        if (this._selectAllEnabled()) {\r\n            this._createSelectAllValueChangedAction();\r\n            this._renderSelectAllItem($nodeContainer)\r\n        }\r\n    },\r\n    _isVirtualMode: function() {\r\n        return this.option(\"virtualModeEnabled\") && this._isDataStructurePlain() && !!this.option(\"dataSource\")\r\n    },\r\n    _isDataStructurePlain: function() {\r\n        return \"plain\" === this.option(\"dataStructure\")\r\n    },\r\n    _fireContentReadyAction: function() {\r\n        var dataSource = this.getDataSource();\r\n        var skipContentReadyAction = dataSource && !dataSource.isLoaded();\r\n        if (this._scrollableContainer && (0, _window.hasWindow)()) {\r\n            this._scrollableContainer.update()\r\n        }\r\n        if (!skipContentReadyAction) {\r\n            this.callBase()\r\n        }\r\n        if (this._scrollableContainer && (0, _window.hasWindow)()) {\r\n            this._scrollableContainer.update()\r\n        }\r\n    },\r\n    _renderScrollableContainer: function() {\r\n        this._scrollableContainer = this._createComponent((0, _renderer.default)(\"<div>\").appendTo(this.$element()), _ui2.default, {\r\n            direction: this.option(\"scrollDirection\"),\r\n            useKeyboard: false\r\n        })\r\n    },\r\n    _renderNodeContainer: function($parent) {\r\n        var $container = (0, _renderer.default)(\"<ul>\").addClass(NODE_CONTAINER_CLASS);\r\n        this.setAria(\"role\", \"group\", $container);\r\n        if ($parent && $parent.length) {\r\n            var itemData = this._getItemData($parent.children(\".\" + ITEM_CLASS));\r\n            if (this._expandedGetter(itemData)) {\r\n                $container.addClass(OPENED_NODE_CONTAINER_CLASS)\r\n            }\r\n            $container.appendTo($parent)\r\n        }\r\n        return $container\r\n    },\r\n    _createDOMElement: function($nodeContainer, node) {\r\n        var $node = (0, _renderer.default)(\"<li>\").addClass(NODE_CLASS).attr(DATA_ITEM_ID, this._encodeString(node.internalFields.key)).prependTo($nodeContainer);\r\n        this.setAria({\r\n            role: \"treeitem\",\r\n            label: this._displayGetter(node.internalFields.item) || \"\",\r\n            expanded: node.internalFields.expanded || false,\r\n            level: this._getLevel($nodeContainer)\r\n        }, $node);\r\n        return $node\r\n    },\r\n    _getLevel: function($nodeContainer) {\r\n        var parent = $nodeContainer.parent();\r\n        return parent.hasClass(\"dx-scrollable-content\") ? 1 : parseInt(parent.attr(\"aria-level\")) + 1\r\n    },\r\n    _showCheckboxes: function() {\r\n        return \"none\" !== this.option(\"showCheckBoxesMode\")\r\n    },\r\n    _selectAllEnabled: function() {\r\n        return \"selectAll\" === this.option(\"showCheckBoxesMode\") && !this._isSingleSelection()\r\n    },\r\n    _renderItems: function($nodeContainer, nodes) {\r\n        var length = nodes.length - 1;\r\n        for (var i = length; i >= 0; i--) {\r\n            this._renderItem(i, nodes[i], $nodeContainer)\r\n        }\r\n        this._renderedItemsCount += nodes.length\r\n    },\r\n    _renderItem: function(nodeIndex, node, $nodeContainer) {\r\n        var $node = this._createDOMElement($nodeContainer, node);\r\n        var nodeData = node.internalFields;\r\n        var showCheckBox = this._showCheckboxes();\r\n        $node.addClass(showCheckBox ? ITEM_WITH_CHECKBOX_CLASS : ITEM_WITHOUT_CHECKBOX_CLASS);\r\n        $node.toggleClass(INVISIBLE_STATE_CLASS, false === nodeData.item.visible);\r\n        showCheckBox && this._renderCheckBox($node, node);\r\n        this.setAria(\"selected\", nodeData.selected, $node);\r\n        this._toggleSelectedClass($node, nodeData.selected);\r\n        this.callBase(this._renderedItemsCount + nodeIndex, nodeData.item, $node);\r\n        if (false !== nodeData.item.visible) {\r\n            this._renderChildren($node, node)\r\n        }\r\n    },\r\n    _setAriaSelected: function() {},\r\n    _renderChildren: function($node, node) {\r\n        var _this5 = this;\r\n        if (!this._hasChildren(node)) {\r\n            this._addLeafClass($node);\r\n            return\r\n        }\r\n        this._renderToggleItemVisibilityIcon($node, node);\r\n        if (this.option(\"deferRendering\") && !node.internalFields.expanded) {\r\n            return\r\n        }\r\n        this._loadSublevel(node).done(function(childNodes) {\r\n            _this5._renderSublevel($node, _this5._getActualNode(node), childNodes)\r\n        })\r\n    },\r\n    _getActualNode: function(cachedNode) {\r\n        return this._dataAdapter.getNodeByKey(cachedNode.internalFields.key)\r\n    },\r\n    _hasChildren: function(node) {\r\n        if (this._isVirtualMode() || this._useCustomChildrenLoader()) {\r\n            return false !== this._hasItemsGetter(node.internalFields.item)\r\n        }\r\n        return this.callBase(node)\r\n    },\r\n    _loadSublevel: function(node) {\r\n        var _this6 = this;\r\n        var deferred = new _deferred.Deferred;\r\n        var childrenNodes = this._getChildNodes(node);\r\n        if (childrenNodes.length) {\r\n            deferred.resolve(childrenNodes)\r\n        } else {\r\n            this._loadNestedItems(node).done(function(items) {\r\n                deferred.resolve(_this6._dataAdapter.getNodesByItems(items))\r\n            })\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    _renderSublevel: function($node, node, childNodes) {\r\n        var $nestedNodeContainer = this._renderNodeContainer($node, node);\r\n        var childNodesByChildrenKeys = childNodes.filter(function(childNode) {\r\n            return node.internalFields.childrenKeys.indexOf(childNode.internalFields.key) !== -1\r\n        });\r\n        this._renderItems($nestedNodeContainer, childNodesByChildrenKeys);\r\n        if (childNodesByChildrenKeys.length && !node.internalFields.selected) {\r\n            var firstChild = childNodesByChildrenKeys[0];\r\n            this._updateParentsState(firstChild, this._getNodeElement(firstChild))\r\n        }\r\n        this._normalizeIconState($node, childNodesByChildrenKeys.length);\r\n        if (node.internalFields.expanded) {\r\n            $nestedNodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS)\r\n        }\r\n    },\r\n    _executeItemRenderAction: function(itemIndex, itemData, itemElement) {\r\n        var node = this._getNode(itemElement);\r\n        this._getItemRenderAction()({\r\n            itemElement: itemElement,\r\n            itemIndex: itemIndex,\r\n            itemData: itemData,\r\n            node: this._dataAdapter.getPublicNode(node)\r\n        })\r\n    },\r\n    _addLeafClass: function($node) {\r\n        $node.addClass(IS_LEAF)\r\n    },\r\n    _expandEventHandler: function(e) {\r\n        var $nodeElement = (0, _renderer.default)(e.currentTarget.parentNode);\r\n        if (!$nodeElement.hasClass(IS_LEAF)) {\r\n            this._toggleExpandedState(e.currentTarget, void 0, e)\r\n        }\r\n    },\r\n    _initExpandEvent: function() {\r\n        var expandedEventName = this._getEventNameByOption(this.option(\"expandEvent\"));\r\n        var $itemsContainer = this._itemContainer();\r\n        var itemSelector = this._itemSelector();\r\n        _events_engine.default.off($itemsContainer, \".\" + EXPAND_EVENT_NAMESPACE, itemSelector);\r\n        _events_engine.default.on($itemsContainer, expandedEventName, itemSelector, this._expandEventHandler.bind(this))\r\n    },\r\n    _getEventNameByOption: function(name) {\r\n        var event = \"click\" === name ? _click.name : _double_click.name;\r\n        return (0, _index.addNamespace)(event, EXPAND_EVENT_NAMESPACE)\r\n    },\r\n    _getNode: function(identifier) {\r\n        if (!(0, _type.isDefined)(identifier)) {\r\n            return null\r\n        }\r\n        if (identifier.internalFields) {\r\n            return identifier\r\n        }\r\n        if ((0, _type.isPrimitive)(identifier)) {\r\n            return this._dataAdapter.getNodeByKey(identifier)\r\n        }\r\n        var itemElement = (0, _renderer.default)(identifier).get(0);\r\n        if (!itemElement) {\r\n            return null\r\n        }\r\n        if (_dom_adapter.default.isElementNode(itemElement)) {\r\n            return this._getNodeByElement(itemElement)\r\n        }\r\n        return this._dataAdapter.getNodeByItem(itemElement)\r\n    },\r\n    _getNodeByElement: function(itemElement) {\r\n        var $node = (0, _renderer.default)(itemElement).closest(\".\" + NODE_CLASS);\r\n        var key = this._decodeString($node.attr(DATA_ITEM_ID));\r\n        return this._dataAdapter.getNodeByKey(key)\r\n    },\r\n    _toggleExpandedState: function(itemElement, state, e) {\r\n        var node = this._getNode(itemElement);\r\n        if (!node) {\r\n            return (new _deferred.Deferred).reject().promise()\r\n        }\r\n        if (node.internalFields.disabled) {\r\n            return (new _deferred.Deferred).reject().promise()\r\n        }\r\n        var currentState = node.internalFields.expanded;\r\n        if (currentState === state) {\r\n            return (new _deferred.Deferred).resolve().promise()\r\n        }\r\n        if (this._hasChildren(node)) {\r\n            var $node = this._getNodeElement(node);\r\n            if ($node.find(\".\".concat(NODE_LOAD_INDICATOR_CLASS, \":not(.\").concat(INVISIBLE_STATE_CLASS, \")\")).length) {\r\n                return (new _deferred.Deferred).reject().promise()\r\n            }\r\n            this._createLoadIndicator($node)\r\n        }\r\n        if (!(0, _type.isDefined)(state)) {\r\n            state = !currentState\r\n        }\r\n        this._dataAdapter.toggleExpansion(node.internalFields.key, state);\r\n        return this._updateExpandedItemsUI(node, state, e)\r\n    },\r\n    _createLoadIndicator: function($node) {\r\n        var $icon = $node.children(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n        var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n        if ($icon.hasClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS) || $nodeContainer.not(\":empty\").length) {\r\n            return\r\n        }\r\n        this._createComponent((0, _renderer.default)(\"<div>\").addClass(NODE_LOAD_INDICATOR_CLASS), _load_indicator.default, {}).$element().appendTo($node);\r\n        $icon.hide()\r\n    },\r\n    _renderToggleItemVisibilityIcon: function($node, node) {\r\n        var $icon = (0, _renderer.default)(\"<div>\").addClass(TOGGLE_ITEM_VISIBILITY_CLASS).appendTo($node);\r\n        if (node.internalFields.expanded) {\r\n            $icon.addClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS);\r\n            $node.parent().addClass(OPENED_NODE_CONTAINER_CLASS)\r\n        }\r\n        if (node.internalFields.disabled) {\r\n            $icon.addClass(DISABLED_STATE_CLASS)\r\n        }\r\n        this._renderToggleItemVisibilityIconClick($icon, node)\r\n    },\r\n    _renderToggleItemVisibilityIconClick: function($icon, node) {\r\n        var _this7 = this;\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        _events_engine.default.off($icon, eventName);\r\n        _events_engine.default.on($icon, eventName, function(e) {\r\n            _this7._toggleExpandedState(node.internalFields.key, void 0, e)\r\n        })\r\n    },\r\n    _updateExpandedItemsUI: function(node, state, e) {\r\n        var $node = this._getNodeElement(node);\r\n        var isHiddenNode = !$node.length || state && $node.is(\":hidden\");\r\n        if (this.option(\"expandNodesRecursive\") && isHiddenNode) {\r\n            var parentNode = this._getNode(node.internalFields.parentKey);\r\n            if (parentNode) {\r\n                this._updateExpandedItemsUI(parentNode, state, e)\r\n            }\r\n        }\r\n        var $icon = $node.children(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n        var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n        $icon.toggleClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS, state);\r\n        var nodeContainerExists = $nodeContainer.length > 0;\r\n        var completionCallback = new _deferred.Deferred;\r\n        if (!state || nodeContainerExists && !$nodeContainer.is(\":empty\")) {\r\n            this._animateNodeContainer(node, state, e, completionCallback);\r\n            return completionCallback.promise()\r\n        }\r\n        if (0 === node.internalFields.childrenKeys.length && (this._isVirtualMode() || this._useCustomChildrenLoader())) {\r\n            this._loadNestedItemsWithUpdate(node, state, e, completionCallback);\r\n            return completionCallback.promise()\r\n        }\r\n        this._renderSublevel($node, node, this._getChildNodes(node));\r\n        this._fireContentReadyAction();\r\n        this._animateNodeContainer(node, state, e, completionCallback);\r\n        return completionCallback.promise()\r\n    },\r\n    _loadNestedItemsWithUpdate: function(node, state, e, completionCallback) {\r\n        var _this8 = this;\r\n        var $node = this._getNodeElement(node);\r\n        this._loadNestedItems(node).done(function(items) {\r\n            var actualNodeData = _this8._getActualNode(node);\r\n            _this8._renderSublevel($node, actualNodeData, _this8._dataAdapter.getNodesByItems(items));\r\n            if (!items || !items.length) {\r\n                return\r\n            }\r\n            _this8._fireContentReadyAction();\r\n            _this8._animateNodeContainer(actualNodeData, state, e, completionCallback)\r\n        })\r\n    },\r\n    _loadNestedItems: function(node) {\r\n        var _this9 = this;\r\n        if (this._useCustomChildrenLoader()) {\r\n            var publicNode = this._dataAdapter.getPublicNode(node);\r\n            return this._loadChildrenByCustomLoader(publicNode).done(function(newItems) {\r\n                if (!_this9._areNodesExists(newItems)) {\r\n                    _this9._appendItems(newItems)\r\n                }\r\n            })\r\n        }\r\n        if (!this._isVirtualMode()) {\r\n            return (new _deferred.Deferred).resolve([]).promise()\r\n        }\r\n        this._filter.internal = [this.option(\"parentIdExpr\"), node.internalFields.key];\r\n        this._dataSource.filter(this._combineFilter());\r\n        return this._dataSource.load().done(function(newItems) {\r\n            if (!_this9._areNodesExists(newItems)) {\r\n                _this9._appendItems(newItems)\r\n            }\r\n        })\r\n    },\r\n    _areNodesExists: function(newItems, items) {\r\n        var keyOfRootItem = this.keyOf(newItems[0]);\r\n        var fullData = this._dataAdapter.getFullData();\r\n        return !!this._dataAdapter.getNodeByKey(keyOfRootItem, fullData)\r\n    },\r\n    _appendItems: function(newItems) {\r\n        this.option().items = this.option(\"items\").concat(newItems);\r\n        this._initDataAdapter()\r\n    },\r\n    _animateNodeContainer: function(node, state, e, completionCallback) {\r\n        var $node = this._getNodeElement(node);\r\n        var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n        if (node && completionCallback && 0 === $nodeContainer.length) {\r\n            completionCallback.resolve()\r\n        }\r\n        $nodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS);\r\n        var nodeHeight = $nodeContainer.height();\r\n        _fx.default.stop($nodeContainer, true);\r\n        _fx.default.animate($nodeContainer, {\r\n            type: \"custom\",\r\n            duration: this.option(\"animationEnabled\") ? 400 : 0,\r\n            from: {\r\n                maxHeight: state ? 0 : nodeHeight\r\n            },\r\n            to: {\r\n                maxHeight: state ? nodeHeight : 0\r\n            },\r\n            complete: function() {\r\n                $nodeContainer.css(\"maxHeight\", \"none\");\r\n                $nodeContainer.toggleClass(OPENED_NODE_CONTAINER_CLASS, state);\r\n                this.setAria(\"expanded\", state, $node);\r\n                this._scrollableContainer.update();\r\n                this._fireExpandedStateUpdatedEvent(state, node, e);\r\n                if (completionCallback) {\r\n                    completionCallback.resolve()\r\n                }\r\n            }.bind(this)\r\n        })\r\n    },\r\n    _fireExpandedStateUpdatedEvent: function(isExpanded, node, e) {\r\n        if (!this._hasChildren(node)) {\r\n            return\r\n        }\r\n        var optionName = isExpanded ? \"onItemExpanded\" : \"onItemCollapsed\";\r\n        if ((0, _type.isDefined)(e)) {\r\n            this._itemDXEventHandler(e, optionName, {\r\n                node: this._dataAdapter.getPublicNode(node)\r\n            })\r\n        } else {\r\n            var target = this._getNodeElement(node);\r\n            this._itemEventHandler(target, optionName, {\r\n                event: e,\r\n                node: this._dataAdapter.getPublicNode(node)\r\n            })\r\n        }\r\n    },\r\n    _normalizeIconState: function($node, hasNewItems) {\r\n        var $loadIndicator = $node.find(\".dx-loadindicator\");\r\n        $loadIndicator.length && _load_indicator.default.getInstance($loadIndicator).option(\"visible\", false);\r\n        if (hasNewItems) {\r\n            var $icon = $node.find(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n            $icon.show();\r\n            return\r\n        }\r\n        $node.find(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS).removeClass(TOGGLE_ITEM_VISIBILITY_CLASS);\r\n        $node.addClass(IS_LEAF)\r\n    },\r\n    _emptyMessageContainer: function() {\r\n        return this._scrollableContainer ? this._scrollableContainer.content() : this.callBase()\r\n    },\r\n    _renderContent: function() {\r\n        var items = this.option(\"items\");\r\n        if (items && items.length) {\r\n            this._contentAlreadyRendered = true\r\n        }\r\n        this.callBase()\r\n    },\r\n    _renderSelectAllItem: function($container) {\r\n        $container = $container || this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).first();\r\n        this._$selectAllItem = (0, _renderer.default)(\"<div>\").addClass(SELECT_ALL_ITEM_CLASS);\r\n        var value = this._dataAdapter.isAllSelected();\r\n        this._createComponent(this._$selectAllItem, _check_box.default, {\r\n            value: value,\r\n            text: this.option(\"selectAllText\"),\r\n            onValueChanged: function(args) {\r\n                this._toggleSelectAll(args);\r\n                this._fireSelectAllValueChanged(args.value)\r\n            }.bind(this)\r\n        });\r\n        this._toggleSelectedClass(this._$selectAllItem, value);\r\n        $container.before(this._$selectAllItem)\r\n    },\r\n    _toggleSelectAll: function(args) {\r\n        this._dataAdapter.toggleSelectAll(args.value);\r\n        this._updateItemsUI();\r\n        this._fireSelectionChanged()\r\n    },\r\n    _renderCheckBox: function($node, node) {\r\n        var $checkbox = (0, _renderer.default)(\"<div>\").appendTo($node);\r\n        this._createComponent($checkbox, _check_box.default, {\r\n            value: node.internalFields.selected,\r\n            onValueChanged: this._changeCheckboxValue.bind(this),\r\n            focusStateEnabled: false,\r\n            disabled: this._disabledGetter(node)\r\n        })\r\n    },\r\n    _toggleSelectedClass: function($node, value) {\r\n        $node.toggleClass(SELECTED_ITEM_CLASS, !!value)\r\n    },\r\n    _toggleNodeDisabledState: function(node, state) {\r\n        var $node = this._getNodeElement(node);\r\n        var $item = $node.find(\".\" + ITEM_CLASS).eq(0);\r\n        this._dataAdapter.toggleNodeDisabledState(node.internalFields.key, state);\r\n        $item.toggleClass(DISABLED_STATE_CLASS, !!state);\r\n        if (this._showCheckboxes()) {\r\n            var checkbox = this._getCheckBoxInstance($node);\r\n            checkbox.option(\"disabled\", !!state)\r\n        }\r\n    },\r\n    _itemOptionChanged: function(item, property, value) {\r\n        var node = this._dataAdapter.getNodeByItem(item);\r\n        if (property === this.option(\"disabledExpr\")) {\r\n            this._toggleNodeDisabledState(node, value)\r\n        }\r\n    },\r\n    _changeCheckboxValue: function(e) {\r\n        var $node = (0, _renderer.default)(e.element).parent(\".\" + NODE_CLASS);\r\n        var $item = $node.children(\".\" + ITEM_CLASS);\r\n        var item = this._getItemData($item);\r\n        var node = this._getNodeByElement($item);\r\n        var value = e.value;\r\n        if (node && node.internalFields.selected === value) {\r\n            return\r\n        }\r\n        this._updateItemSelection(value, item, e.event)\r\n    },\r\n    _isSingleSelection: function() {\r\n        return \"single\" === this.option(\"selectionMode\")\r\n    },\r\n    _isRecursiveSelection: function() {\r\n        return this.option(\"selectNodesRecursive\") && \"single\" !== this.option(\"selectionMode\")\r\n    },\r\n    _isLastSelectedBranch: function(publicNode, selectedNodesKeys, deep) {\r\n        var keyIndex = selectedNodesKeys.indexOf(publicNode.key);\r\n        if (keyIndex >= 0) {\r\n            selectedNodesKeys.splice(keyIndex, 1)\r\n        }\r\n        if (deep) {\r\n            (0, _iterator.each)(publicNode.children, function(_, childNode) {\r\n                this._isLastSelectedBranch(childNode, selectedNodesKeys, true)\r\n            }.bind(this))\r\n        }\r\n        if (publicNode.parent) {\r\n            this._isLastSelectedBranch(publicNode.parent, selectedNodesKeys)\r\n        }\r\n        return 0 === selectedNodesKeys.length\r\n    },\r\n    _isLastRequired: function(node) {\r\n        var selectionRequired = this.option(\"selectionRequired\");\r\n        var isSingleMode = this._isSingleSelection();\r\n        var selectedNodesKeys = this.getSelectedNodeKeys();\r\n        if (!selectionRequired) {\r\n            return\r\n        }\r\n        if (isSingleMode) {\r\n            return 1 === selectedNodesKeys.length\r\n        } else {\r\n            return this._isLastSelectedBranch(node.internalFields.publicNode, selectedNodesKeys.slice(), true)\r\n        }\r\n    },\r\n    _updateItemSelection: function(value, itemElement, dxEvent) {\r\n        var _this10 = this;\r\n        var node = this._getNode(itemElement);\r\n        if (!node) {\r\n            return false\r\n        }\r\n        if (node.internalFields.selected === value) {\r\n            return true\r\n        }\r\n        if (!value && this._isLastRequired(node)) {\r\n            if (this._showCheckboxes()) {\r\n                var $node = this._getNodeElement(node);\r\n                var checkbox = this._getCheckBoxInstance($node);\r\n                checkbox && checkbox.option(\"value\", true)\r\n            }\r\n            return false\r\n        }\r\n        var selectedNodesKeys = this.getSelectedNodeKeys();\r\n        if (this._isSingleSelection() && value) {\r\n            (0, _iterator.each)(selectedNodesKeys, function(index, nodeKey) {\r\n                _this10.unselectItem(nodeKey)\r\n            })\r\n        }\r\n        this._dataAdapter.toggleSelection(node.internalFields.key, value);\r\n        this._updateItemsUI();\r\n        var initiator = dxEvent || this._findItemElementByItem(node.internalFields.item);\r\n        var handler = dxEvent ? this._itemDXEventHandler : this._itemEventHandler;\r\n        handler.call(this, initiator, \"onItemSelectionChanged\", {\r\n            node: this._dataAdapter.getPublicNode(node),\r\n            itemData: node.internalFields.item\r\n        });\r\n        this._fireSelectionChanged();\r\n        return true\r\n    },\r\n    _getCheckBoxInstance: function($node) {\r\n        return $node.children(\".dx-checkbox\").dxCheckBox(\"instance\")\r\n    },\r\n    _updateItemsUI: function() {\r\n        var _this11 = this;\r\n        var cache = {};\r\n        (0, _iterator.each)(this._dataAdapter.getData(), function(_, node) {\r\n            var $node = _this11._getNodeElement(node, cache);\r\n            var nodeSelection = node.internalFields.selected;\r\n            if (!$node.length) {\r\n                return\r\n            }\r\n            _this11._toggleSelectedClass($node, nodeSelection);\r\n            _this11.setAria(\"selected\", nodeSelection, $node);\r\n            if (_this11._showCheckboxes()) {\r\n                var checkbox = _this11._getCheckBoxInstance($node);\r\n                checkbox.option(\"value\", nodeSelection)\r\n            }\r\n        });\r\n        if (this._selectAllEnabled()) {\r\n            this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", this._dataAdapter.isAllSelected())\r\n        }\r\n    },\r\n    _updateParentsState: function(node, $node) {\r\n        if (!$node) {\r\n            return\r\n        }\r\n        var parentNode = this._dataAdapter.getNodeByKey(node.internalFields.parentKey);\r\n        var $parentNode = (0, _renderer.default)($node.parents(\".\" + NODE_CLASS)[0]);\r\n        if (this._showCheckboxes()) {\r\n            var parentValue = parentNode.internalFields.selected;\r\n            this._getCheckBoxInstance($parentNode).option(\"value\", parentValue);\r\n            this._toggleSelectedClass($parentNode, parentValue)\r\n        }\r\n        if (parentNode.internalFields.parentKey !== this.option(\"rootValue\")) {\r\n            this._updateParentsState(parentNode, $parentNode)\r\n        }\r\n    },\r\n    _itemEventHandlerImpl: function(initiator, action, actionArgs) {\r\n        var $itemElement = (0, _renderer.default)(initiator).closest(\".\" + NODE_CLASS).children(\".\" + ITEM_CLASS);\r\n        return action((0, _extend.extend)(this._extendActionArgs($itemElement), actionArgs))\r\n    },\r\n    _itemContextMenuHandler: function(e) {\r\n        this._createEventHandler(\"onItemContextMenu\", e)\r\n    },\r\n    _itemHoldHandler: function(e) {\r\n        this._createEventHandler(\"onItemHold\", e)\r\n    },\r\n    _createEventHandler: function(eventName, e) {\r\n        var node = this._getNodeByElement(e.currentTarget);\r\n        this._itemDXEventHandler(e, eventName, {\r\n            node: this._dataAdapter.getPublicNode(node)\r\n        })\r\n    },\r\n    _itemClass: function() {\r\n        return ITEM_CLASS\r\n    },\r\n    _itemDataKey: function() {\r\n        return ITEM_DATA_KEY\r\n    },\r\n    _attachClickEvent: function() {\r\n        var clickSelector = \".\" + this._itemClass();\r\n        var pointerDownSelector = \".\" + NODE_CLASS + \", .\" + SELECT_ALL_ITEM_CLASS;\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        var pointerDownEvent = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n        var $itemContainer = this._itemContainer();\r\n        var that = this;\r\n        _events_engine.default.off($itemContainer, eventName, clickSelector);\r\n        _events_engine.default.off($itemContainer, pointerDownEvent, pointerDownSelector);\r\n        _events_engine.default.on($itemContainer, eventName, clickSelector, function(e) {\r\n            that._itemClickHandler(e, (0, _renderer.default)(this))\r\n        });\r\n        _events_engine.default.on($itemContainer, pointerDownEvent, pointerDownSelector, function(e) {\r\n            that._itemPointerDownHandler(e)\r\n        })\r\n    },\r\n    _itemClickHandler: function(e, $item) {\r\n        var itemData = this._getItemData($item);\r\n        var node = this._getNodeByElement($item);\r\n        this._itemDXEventHandler(e, \"onItemClick\", {\r\n            node: this._dataAdapter.getPublicNode(node)\r\n        });\r\n        if (this.option(\"selectByClick\") && !e.isDefaultPrevented()) {\r\n            this._updateItemSelection(!node.internalFields.selected, itemData, e)\r\n        }\r\n    },\r\n    _updateSelectionToFirstItem: function($items, startIndex) {\r\n        var itemIndex = startIndex;\r\n        while (itemIndex >= 0) {\r\n            var $item = (0, _renderer.default)($items[itemIndex]);\r\n            this._updateItemSelection(true, $item.find(\".\" + ITEM_CLASS).get(0));\r\n            itemIndex--\r\n        }\r\n    },\r\n    _updateSelectionToLastItem: function($items, startIndex) {\r\n        var length = $items.length;\r\n        var itemIndex = startIndex;\r\n        while (itemIndex < length) {\r\n            var $item = (0, _renderer.default)($items[itemIndex]);\r\n            this._updateItemSelection(true, $item.find(\".\" + ITEM_CLASS).get(0));\r\n            itemIndex++\r\n        }\r\n    },\r\n    _focusInHandler: function(e) {\r\n        var _this12 = this;\r\n        this._updateFocusState(e, true);\r\n        if (this.option(\"focusedElement\")) {\r\n            clearTimeout(this._setFocusedItemTimeout);\r\n            this._setFocusedItemTimeout = setTimeout(function() {\r\n                _this12._setFocusedItem((0, _renderer.default)(_this12.option(\"focusedElement\")))\r\n            });\r\n            return\r\n        }\r\n        var $activeItem = this._getActiveItem();\r\n        this.option(\"focusedElement\", (0, _element.getPublicElement)($activeItem.closest(\".\" + NODE_CLASS)))\r\n    },\r\n    _setFocusedItem: function($target) {\r\n        if (!$target || !$target.length) {\r\n            return\r\n        }\r\n        if (!$target.children().hasClass(DISABLED_STATE_CLASS)) {\r\n            this.callBase($target)\r\n        }\r\n    },\r\n    _itemPointerDownHandler: function(e) {\r\n        if (!this.option(\"focusStateEnabled\")) {\r\n            return\r\n        }\r\n        var $target = (0, _renderer.default)(e.target).closest(\".\" + NODE_CLASS + \", .\" + SELECT_ALL_ITEM_CLASS);\r\n        if (!$target.length) {\r\n            return\r\n        }\r\n        var itemElement = $target.hasClass(DISABLED_STATE_CLASS) ? null : $target;\r\n        this.option(\"focusedElement\", (0, _element.getPublicElement)(itemElement))\r\n    },\r\n    _findNonDisabledNodes: function($nodes) {\r\n        return $nodes.not(function() {\r\n            return (0, _renderer.default)(this).children(\".\" + ITEM_CLASS).hasClass(DISABLED_STATE_CLASS)\r\n        })\r\n    },\r\n    _moveFocus: function(location, e) {\r\n        var FOCUS_UP = \"up\";\r\n        var FOCUS_DOWN = \"down\";\r\n        var FOCUS_FIRST = \"first\";\r\n        var FOCUS_LAST = \"last\";\r\n        var FOCUS_LEFT = this.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n        var FOCUS_RIGHT = this.option(\"rtlEnabled\") ? \"left\" : \"right\";\r\n        this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).each(function() {\r\n            _fx.default.stop(this, true)\r\n        });\r\n        var $items = this._findNonDisabledNodes(this._nodeElements());\r\n        if (!$items || !$items.length) {\r\n            return\r\n        }\r\n        switch (location) {\r\n            case FOCUS_UP:\r\n                var $prevItem = this._prevItem($items);\r\n                this.option(\"focusedElement\", (0, _element.getPublicElement)($prevItem));\r\n                var prevItemElement = this._getNodeItemElement($prevItem);\r\n                this._scrollableContainer.scrollToElement(prevItemElement);\r\n                if (e.shiftKey && this._showCheckboxes()) {\r\n                    this._updateItemSelection(true, prevItemElement)\r\n                }\r\n                break;\r\n            case FOCUS_DOWN:\r\n                var $nextItem = this._nextItem($items);\r\n                this.option(\"focusedElement\", (0, _element.getPublicElement)($nextItem));\r\n                var nextItemElement = this._getNodeItemElement($nextItem);\r\n                this._scrollableContainer.scrollToElement(nextItemElement);\r\n                if (e.shiftKey && this._showCheckboxes()) {\r\n                    this._updateItemSelection(true, nextItemElement)\r\n                }\r\n                break;\r\n            case FOCUS_FIRST:\r\n                var $firstItem = $items.first();\r\n                if (e.shiftKey && this._showCheckboxes()) {\r\n                    this._updateSelectionToFirstItem($items, $items.index(this._prevItem($items)))\r\n                }\r\n                this.option(\"focusedElement\", (0, _element.getPublicElement)($firstItem));\r\n                this._scrollableContainer.scrollToElement(this._getNodeItemElement($firstItem));\r\n                break;\r\n            case FOCUS_LAST:\r\n                var $lastItem = $items.last();\r\n                if (e.shiftKey && this._showCheckboxes()) {\r\n                    this._updateSelectionToLastItem($items, $items.index(this._nextItem($items)))\r\n                }\r\n                this.option(\"focusedElement\", (0, _element.getPublicElement)($lastItem));\r\n                this._scrollableContainer.scrollToElement(this._getNodeItemElement($lastItem));\r\n                break;\r\n            case FOCUS_RIGHT:\r\n                this._expandFocusedContainer();\r\n                break;\r\n            case FOCUS_LEFT:\r\n                this._collapseFocusedContainer();\r\n                break;\r\n            default:\r\n                this.callBase.apply(this, arguments);\r\n                return\r\n        }\r\n    },\r\n    _getNodeItemElement: function($node) {\r\n        return $node.find(\".\" + ITEM_CLASS).get(0)\r\n    },\r\n    _nodeElements: function() {\r\n        return this.$element().find(\".\" + NODE_CLASS).not(\":hidden\")\r\n    },\r\n    _expandFocusedContainer: function() {\r\n        var $focusedNode = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n        if (!$focusedNode.length || $focusedNode.hasClass(IS_LEAF)) {\r\n            return\r\n        }\r\n        var $node = $focusedNode.find(\".\".concat(NODE_CONTAINER_CLASS)).eq(0);\r\n        if ($node.hasClass(OPENED_NODE_CONTAINER_CLASS)) {\r\n            var $nextItem = this._nextItem(this._findNonDisabledNodes(this._nodeElements()));\r\n            this.option(\"focusedElement\", (0, _element.getPublicElement)($nextItem));\r\n            this._scrollableContainer.scrollToElement(this._getNodeItemElement($nextItem));\r\n            return\r\n        }\r\n        var node = this._getNodeByElement($focusedNode.children(\".\" + ITEM_CLASS));\r\n        this._toggleExpandedState(node, true)\r\n    },\r\n    _getClosestNonDisabledNode: function($node) {\r\n        do {\r\n            $node = $node.parent().closest(\".\" + NODE_CLASS)\r\n        } while ($node.children(\".dx-treeview-item.dx-state-disabled\").length);\r\n        return $node\r\n    },\r\n    _collapseFocusedContainer: function() {\r\n        var $focusedNode = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n        if (!$focusedNode.length) {\r\n            return\r\n        }\r\n        var nodeElement = $focusedNode.find(\".\".concat(NODE_CONTAINER_CLASS)).eq(0);\r\n        if (!$focusedNode.hasClass(IS_LEAF) && nodeElement.hasClass(OPENED_NODE_CONTAINER_CLASS)) {\r\n            var node = this._getNodeByElement($focusedNode.children(\".\" + ITEM_CLASS));\r\n            this._toggleExpandedState(node, false)\r\n        } else {\r\n            var collapsedNode = this._getClosestNonDisabledNode($focusedNode);\r\n            collapsedNode.length && this.option(\"focusedElement\", (0, _element.getPublicElement)(collapsedNode));\r\n            this._scrollableContainer.scrollToElement(this._getNodeItemElement(collapsedNode))\r\n        }\r\n    },\r\n    _encodeString: function(value) {\r\n        return (0, _type.isString)(value) ? encodeURI(value) : value\r\n    },\r\n    _decodeString: function(value) {\r\n        return (0, _type.isString)(value) ? decodeURI(value) : value\r\n    },\r\n    updateDimensions: function() {\r\n        var _this13 = this;\r\n        var deferred = new _deferred.Deferred;\r\n        if (this._scrollableContainer) {\r\n            this._scrollableContainer.update().done(function() {\r\n                deferred.resolveWith(_this13)\r\n            })\r\n        } else {\r\n            deferred.resolveWith(this)\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    selectItem: function(itemElement) {\r\n        return this._updateItemSelection(true, itemElement)\r\n    },\r\n    unselectItem: function(itemElement) {\r\n        return this._updateItemSelection(false, itemElement)\r\n    },\r\n    expandItem: function(itemElement) {\r\n        return this._toggleExpandedState(itemElement, true)\r\n    },\r\n    collapseItem: function(itemElement) {\r\n        return this._toggleExpandedState(itemElement, false)\r\n    },\r\n    getNodes: function() {\r\n        return this._dataAdapter.getTreeNodes()\r\n    },\r\n    getSelectedNodes: function() {\r\n        var _this14 = this;\r\n        return this.getSelectedNodeKeys().map(function(key) {\r\n            var node = _this14._dataAdapter.getNodeByKey(key);\r\n            return _this14._dataAdapter.getPublicNode(node)\r\n        })\r\n    },\r\n    getSelectedNodesKeys: function() {\r\n        _ui3.default.log(\"W0002\", \"dxTreeView\", \"getSelectedNodesKeys\", \"20.1\", \"Use the 'getSelectedNodeKeys' method instead\");\r\n        return this.getSelectedNodeKeys()\r\n    },\r\n    getSelectedNodeKeys: function() {\r\n        return this._dataAdapter.getSelectedNodesKeys()\r\n    },\r\n    selectAll: function() {\r\n        if (this._selectAllEnabled()) {\r\n            this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", true)\r\n        } else {\r\n            this._toggleSelectAll({\r\n                value: true\r\n            })\r\n        }\r\n    },\r\n    unselectAll: function() {\r\n        if (this._selectAllEnabled()) {\r\n            this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", false)\r\n        } else {\r\n            this._toggleSelectAll({\r\n                value: false\r\n            })\r\n        }\r\n    },\r\n    expandAll: function() {\r\n        var dataAdapter = this._dataAdapter;\r\n        (0, _iterator.each)(dataAdapter.getData(), function(_, node) {\r\n            return dataAdapter.toggleExpansion(node.internalFields.key, true)\r\n        });\r\n        this.repaint()\r\n    },\r\n    collapseAll: function() {\r\n        (0, _iterator.each)(this._dataAdapter.getExpandedNodesKeys(), function(_, key) {\r\n            this._toggleExpandedState(key, false)\r\n        }.bind(this))\r\n    },\r\n    scrollToItem: function(keyOrItemOrElement) {\r\n        var _this15 = this;\r\n        var node = this._getNode(keyOrItemOrElement);\r\n        if (!node) {\r\n            return (new _deferred.Deferred).reject().promise()\r\n        }\r\n        var nodeKeysToExpand = [];\r\n        var parentNode = node.internalFields.publicNode.parent;\r\n        while (null != parentNode) {\r\n            if (!parentNode.expanded) {\r\n                nodeKeysToExpand.push(parentNode.key)\r\n            }\r\n            parentNode = parentNode.parent\r\n        }\r\n        var scrollCallback = new _deferred.Deferred;\r\n        this._expandNodes(nodeKeysToExpand.reverse()).always(function() {\r\n            var $element = _this15._getNodeElement(node);\r\n            if ($element && $element.length) {\r\n                _this15._scrollableContainer.scrollToElementTopLeft($element);\r\n                scrollCallback.resolve()\r\n            } else {\r\n                scrollCallback.reject()\r\n            }\r\n        });\r\n        return scrollCallback.promise()\r\n    },\r\n    _expandNodes: function(keysToExpand) {\r\n        var _this16 = this;\r\n        if (!keysToExpand || 0 === keysToExpand.length) {\r\n            return (new _deferred.Deferred).resolve().promise()\r\n        }\r\n        var resultCallback = new _deferred.Deferred;\r\n        var callbacksByNodes = keysToExpand.map(function(key) {\r\n            return _this16.expandItem(key)\r\n        });\r\n        _deferred.when.apply(_renderer.default, callbacksByNodes).done(function() {\r\n            return resultCallback.resolve()\r\n        }).fail(function() {\r\n            return resultCallback.reject()\r\n        });\r\n        return resultCallback.promise()\r\n    },\r\n    _dispose: function() {\r\n        this.callBase();\r\n        clearTimeout(this._setFocusedItemTimeout)\r\n    }\r\n});\r\nvar _default = TreeViewBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/action.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"./renderer\"));\r\nvar _window = require(\"./utils/window\");\r\nvar _type = require(\"./utils/type\");\r\nvar _iterator = require(\"./utils/iterator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar Action = function() {\r\n    function Action(action, config) {\r\n        _classCallCheck(this, Action);\r\n        config = config || {};\r\n        this._action = action;\r\n        this._context = config.context || (0, _window.getWindow)();\r\n        this._beforeExecute = config.beforeExecute;\r\n        this._afterExecute = config.afterExecute;\r\n        this._component = config.component;\r\n        this._validatingTargetName = config.validatingTargetName;\r\n        var excludeValidators = this._excludeValidators = {};\r\n        if (config.excludeValidators) {\r\n            for (var i = 0; i < config.excludeValidators.length; i++) {\r\n                excludeValidators[config.excludeValidators[i]] = true\r\n            }\r\n        }\r\n    }\r\n    _createClass(Action, [{\r\n        key: \"execute\",\r\n        value: function() {\r\n            var e = {\r\n                action: this._action,\r\n                args: Array.prototype.slice.call(arguments),\r\n                context: this._context,\r\n                component: this._component,\r\n                validatingTargetName: this._validatingTargetName,\r\n                cancel: false,\r\n                handled: false\r\n            };\r\n            var beforeExecute = this._beforeExecute;\r\n            var afterExecute = this._afterExecute;\r\n            var argsBag = e.args[0] || {};\r\n            if (!this._validateAction(e)) {\r\n                return\r\n            }\r\n            null === beforeExecute || void 0 === beforeExecute ? void 0 : beforeExecute.call(this._context, e);\r\n            if (e.cancel) {\r\n                return\r\n            }\r\n            var result = this._executeAction(e);\r\n            if (argsBag.cancel) {\r\n                return\r\n            }\r\n            null === afterExecute || void 0 === afterExecute ? void 0 : afterExecute.call(this._context, e);\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_validateAction\",\r\n        value: function(e) {\r\n            var excludeValidators = this._excludeValidators;\r\n            var executors = Action.executors;\r\n            for (var name in executors) {\r\n                if (!excludeValidators[name]) {\r\n                    var _executor$validate;\r\n                    var executor = executors[name];\r\n                    null === (_executor$validate = executor.validate) || void 0 === _executor$validate ? void 0 : _executor$validate.call(executor, e);\r\n                    if (e.cancel) {\r\n                        return false\r\n                    }\r\n                }\r\n            }\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_executeAction\",\r\n        value: function(e) {\r\n            var result;\r\n            var executors = Action.executors;\r\n            for (var name in executors) {\r\n                var _executor$execute;\r\n                var executor = executors[name];\r\n                null === (_executor$execute = executor.execute) || void 0 === _executor$execute ? void 0 : _executor$execute.call(executor, e);\r\n                if (e.handled) {\r\n                    result = e.result;\r\n                    break\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }], [{\r\n        key: \"registerExecutor\",\r\n        value: function(name, executor) {\r\n            if ((0, _type.isPlainObject)(name)) {\r\n                (0, _iterator.each)(name, Action.registerExecutor);\r\n                return\r\n            }\r\n            Action.executors[name] = executor\r\n        }\r\n    }, {\r\n        key: \"unregisterExecutor\",\r\n        value: function() {\r\n            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n                args[_key] = arguments[_key]\r\n            }(0, _iterator.each)(args, function() {\r\n                delete Action.executors[this]\r\n            })\r\n        }\r\n    }]);\r\n    return Action\r\n}();\r\nexports.default = Action;\r\nAction.executors = {};\r\nvar createValidatorByTargetElement = function(condition) {\r\n    return function(e) {\r\n        if (!e.args.length) {\r\n            return\r\n        }\r\n        var args = e.args[0];\r\n        var element = args[e.validatingTargetName] || args.element;\r\n        if (element && condition((0, _renderer.default)(element))) {\r\n            e.cancel = true\r\n        }\r\n    }\r\n};\r\nAction.registerExecutor({\r\n    disabled: {\r\n        validate: createValidatorByTargetElement(function($target) {\r\n            return $target.is(\".dx-state-disabled, .dx-state-disabled *\")\r\n        })\r\n    },\r\n    readOnly: {\r\n        validate: createValidatorByTargetElement(function($target) {\r\n            return $target.is(\".dx-state-readonly, .dx-state-readonly *:not(.dx-state-independent)\")\r\n        })\r\n    },\r\n    undefined: {\r\n        execute: function(e) {\r\n            if (!e.action) {\r\n                e.result = void 0;\r\n                e.handled = true\r\n            }\r\n        }\r\n    },\r\n    func: {\r\n        execute: function(e) {\r\n            if ((0, _type.isFunction)(e.action)) {\r\n                e.result = e.action.call(e.context, e.args[0]);\r\n                e.handled = true\r\n            }\r\n        }\r\n    }\r\n});\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/pointer/mouse_and_touch.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _base = _interopRequireDefault(require(\"./base\"));\r\nvar _mouse = _interopRequireDefault(require(\"./mouse\"));\r\nvar _touch = _interopRequireDefault(require(\"./touch\"));\r\nvar _index = require(\"../utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar eventMap = {\r\n    dxpointerdown: \"touchstart mousedown\",\r\n    dxpointermove: \"touchmove mousemove\",\r\n    dxpointerup: \"touchend mouseup\",\r\n    dxpointercancel: \"touchcancel\",\r\n    dxpointerover: \"mouseover\",\r\n    dxpointerout: \"mouseout\",\r\n    dxpointerenter: \"mouseenter\",\r\n    dxpointerleave: \"mouseleave\"\r\n};\r\nvar activated = false;\r\nvar activateStrategy = function() {\r\n    if (activated) {\r\n        return\r\n    }\r\n    _mouse.default.activate();\r\n    activated = true\r\n};\r\nvar MouseAndTouchStrategy = _base.default.inherit({\r\n    EVENT_LOCK_TIMEOUT: 100,\r\n    ctor: function() {\r\n        this.callBase.apply(this, arguments);\r\n        activateStrategy()\r\n    },\r\n    _handler: function(e) {\r\n        var isMouse = (0, _index.isMouseEvent)(e);\r\n        if (!isMouse) {\r\n            this._skipNextEvents = true\r\n        }\r\n        if (isMouse && this._mouseLocked) {\r\n            return\r\n        }\r\n        if (isMouse && this._skipNextEvents) {\r\n            this._skipNextEvents = false;\r\n            this._mouseLocked = true;\r\n            clearTimeout(this._unlockMouseTimer);\r\n            var that = this;\r\n            this._unlockMouseTimer = setTimeout(function() {\r\n                that._mouseLocked = false\r\n            }, this.EVENT_LOCK_TIMEOUT);\r\n            return\r\n        }\r\n        return this.callBase(e)\r\n    },\r\n    _fireEvent: function(args) {\r\n        var normalizer = (0, _index.isMouseEvent)(args.originalEvent) ? _mouse.default.normalize : _touch.default.normalize;\r\n        return this.callBase((0, _extend.extend)(normalizer(args.originalEvent), args))\r\n    },\r\n    dispose: function() {\r\n        this.callBase();\r\n        this._skipNextEvents = false;\r\n        this._mouseLocked = false;\r\n        clearTimeout(this._unlockMouseTimer)\r\n    }\r\n});\r\nMouseAndTouchStrategy.map = eventMap;\r\nMouseAndTouchStrategy.resetObserver = _mouse.default.resetObserver;\r\nvar _default = MouseAndTouchStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/collection/ui.collection_widget.edit.strategy.plain.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _uiCollection_widgetEdit = _interopRequireDefault(require(\"./ui.collection_widget.edit.strategy\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar PlainEditStrategy = _uiCollection_widgetEdit.default.inherit({\r\n    _getPlainItems: function() {\r\n        return this._collectionWidget.option(\"items\") || []\r\n    },\r\n    getIndexByItemData: function(itemData) {\r\n        var keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);\r\n        if (keyOf) {\r\n            return this.getIndexByKey(keyOf(itemData))\r\n        } else {\r\n            return (0, _array.inArray)(itemData, this._getPlainItems())\r\n        }\r\n    },\r\n    getItemDataByIndex: function(index) {\r\n        return this._getPlainItems()[index]\r\n    },\r\n    deleteItemAtIndex: function(index) {\r\n        this._getPlainItems().splice(index, 1)\r\n    },\r\n    itemsGetter: function() {\r\n        return this._getPlainItems()\r\n    },\r\n    getKeysByItems: function(items) {\r\n        var keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);\r\n        var result = items;\r\n        if (keyOf) {\r\n            result = [];\r\n            for (var i = 0; i < items.length; i++) {\r\n                result.push(keyOf(items[i]))\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    getIndexByKey: function(key) {\r\n        var cache = this._cache;\r\n        var keys = cache && cache.keys || this.getKeysByItems(this._getPlainItems());\r\n        if (cache && !cache.keys) {\r\n            cache.keys = keys\r\n        }\r\n        if (\"object\" === _typeof(key)) {\r\n            for (var i = 0, length = keys.length; i < length; i++) {\r\n                if (this._equalKeys(key, keys[i])) {\r\n                    return i\r\n                }\r\n            }\r\n        } else {\r\n            return keys.indexOf(key)\r\n        }\r\n        return -1\r\n    },\r\n    getItemsByKeys: function(keys, items) {\r\n        return (items || keys).slice()\r\n    },\r\n    moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n        var items = this._getPlainItems();\r\n        var movedItemData = items[movingIndex];\r\n        items.splice(movingIndex, 1);\r\n        items.splice(destinationIndex, 0, movedItemData)\r\n    },\r\n    _isItemIndex: function(index) {\r\n        return \"number\" === typeof index && Math.round(index) === index\r\n    },\r\n    _getNormalizedItemIndex: function(itemElement) {\r\n        return this._collectionWidget._itemElements().index(itemElement)\r\n    },\r\n    _normalizeItemIndex: function(index) {\r\n        return index\r\n    },\r\n    _denormalizeItemIndex: function(index) {\r\n        return index\r\n    },\r\n    _getItemByNormalizedIndex: function(index) {\r\n        return index > -1 ? this._collectionWidget._itemElements().eq(index) : null\r\n    },\r\n    _itemsFromSameParent: function() {\r\n        return true\r\n    }\r\n});\r\nvar _default = PlainEditStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/day/date_table/layout.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.DayDateTableLayout = DayDateTableLayout;\r\nexports.viewFunction = void 0;\r\nvar _layout = require(\"../../base/date_table/layout\");\r\nvar _layout_props = require(\"../../base/layout_props\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_layout.DateTableLayoutBase, _extends({\r\n        viewData: viewModel.props.viewData,\r\n        viewType: \"day\",\r\n        dataCellTemplate: viewModel.props.dataCellTemplate\r\n    }, viewModel.restAttributes))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction DayDateTableLayout(props) {\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.dataCellTemplate, props.groupOrientation, props.viewData, _objectWithoutProperties(props, [\"dataCellTemplate\", \"groupOrientation\", \"viewData\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n        }),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nDayDateTableLayout.defaultProps = _objectSpread({}, _layout_props.LayoutProps);\r\n","/**\r\n * DevExtreme (ui/radio_group.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _radio_group = _interopRequireDefault(require(\"./radio_group/radio_group\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _radio_group.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiList = require(\"../list/ui.list.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TOOLBAR_MENU_ACTION_CLASS = \"dx-toolbar-menu-action\";\r\nvar TOOLBAR_HIDDEN_BUTTON_CLASS = \"dx-toolbar-hidden-button\";\r\nvar TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS = \"dx-toolbar-hidden-button-group\";\r\nvar TOOLBAR_MENU_SECTION_CLASS = \"dx-toolbar-menu-section\";\r\nvar TOOLBAR_MENU_LAST_SECTION_CLASS = \"dx-toolbar-menu-last-section\";\r\nvar ToolbarMenu = _uiList.ListBase.inherit({\r\n    _activeStateUnit: \".\" + TOOLBAR_MENU_ACTION_CLASS,\r\n    _initMarkup: function() {\r\n        this._renderSections();\r\n        this.callBase()\r\n    },\r\n    _getSections: function() {\r\n        return this._itemContainer().children()\r\n    },\r\n    _itemElements: function() {\r\n        return this._getSections().children(this._itemSelector())\r\n    },\r\n    _renderSections: function() {\r\n        var that = this;\r\n        var $container = this._itemContainer();\r\n        (0, _iterator.each)([\"before\", \"center\", \"after\", \"menu\"], function() {\r\n            var sectionName = \"_$\" + this + \"Section\";\r\n            var $section = that[sectionName];\r\n            if (!$section) {\r\n                that[sectionName] = $section = (0, _renderer.default)(\"<div>\").addClass(TOOLBAR_MENU_SECTION_CLASS)\r\n            }\r\n            $section.appendTo($container)\r\n        })\r\n    },\r\n    _renderItems: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._updateSections()\r\n    },\r\n    _updateSections: function() {\r\n        var $sections = this.$element().find(\".\" + TOOLBAR_MENU_SECTION_CLASS);\r\n        $sections.removeClass(TOOLBAR_MENU_LAST_SECTION_CLASS);\r\n        $sections.not(\":empty\").eq(-1).addClass(TOOLBAR_MENU_LAST_SECTION_CLASS)\r\n    },\r\n    _renderItem: function(index, item, itemContainer, $after) {\r\n        var location = item.location || \"menu\";\r\n        var $container = this[\"_$\" + location + \"Section\"];\r\n        var itemElement = this.callBase(index, item, $container, $after);\r\n        if (this._getItemTemplateName({\r\n                itemData: item\r\n            })) {\r\n            itemElement.addClass(\"dx-toolbar-menu-custom\")\r\n        }\r\n        if (\"menu\" === location || \"dxButton\" === item.widget || item.isAction) {\r\n            itemElement.addClass(TOOLBAR_MENU_ACTION_CLASS)\r\n        }\r\n        if (\"dxButton\" === item.widget) {\r\n            itemElement.addClass(TOOLBAR_HIDDEN_BUTTON_CLASS)\r\n        }\r\n        if (\"dxButtonGroup\" === item.widget) {\r\n            itemElement.addClass(TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS)\r\n        }\r\n        itemElement.addClass(item.cssClass);\r\n        return itemElement\r\n    },\r\n    _getItemTemplateName: function(args) {\r\n        var template = this.callBase(args);\r\n        var data = args.itemData;\r\n        var menuTemplate = data && data.menuItemTemplate;\r\n        return menuTemplate || template\r\n    },\r\n    _itemClickHandler: function(e, args, config) {\r\n        if ((0, _renderer.default)(e.target).closest(\".\" + TOOLBAR_MENU_ACTION_CLASS).length) {\r\n            this.callBase(e, args, config)\r\n        }\r\n    },\r\n    _clean: function() {\r\n        this._getSections().empty();\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxToolbarMenu\", ToolbarMenu);\r\nvar _default = ToolbarMenu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/timeZoneCalculator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TimeZoneCalculator = exports.PathTimeZoneConversion = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar PathTimeZoneConversion = {\r\n    fromSourceToAppointment: \"toAppointment\",\r\n    fromAppointmentToSource: \"fromAppointment\",\r\n    fromSourceToGrid: \"toGrid\",\r\n    fromGridToSource: \"fromGrid\"\r\n};\r\nexports.PathTimeZoneConversion = PathTimeZoneConversion;\r\nvar TimeZoneCalculator = function() {\r\n    function TimeZoneCalculator(options) {\r\n        _classCallCheck(this, TimeZoneCalculator);\r\n        this.options = options\r\n    }\r\n    _createClass(TimeZoneCalculator, [{\r\n        key: \"createDate\",\r\n        value: function(sourceDate, info) {\r\n            var date = new Date(sourceDate);\r\n            switch (info.path) {\r\n                case PathTimeZoneConversion.fromSourceToAppointment:\r\n                    return this._getConvertedDate(date, info.appointmentTimeZone, true);\r\n                case PathTimeZoneConversion.fromAppointmentToSource:\r\n                    return this._getConvertedDate(date, info.appointmentTimeZone, true, true);\r\n                case PathTimeZoneConversion.fromSourceToGrid:\r\n                    return this._getConvertedDate(date, info.appointmentTimeZone, false);\r\n                case PathTimeZoneConversion.fromGridToSource:\r\n                    return this._getConvertedDate(date, info.appointmentTimeZone, false, true)\r\n            }\r\n            throw new Error(\"not specified pathTimeZoneConversion\")\r\n        }\r\n    }, {\r\n        key: \"getOffsets\",\r\n        value: function(date, appointmentTimezone) {\r\n            var clientOffset = -this._getClientOffset(date) / toMs(\"hour\");\r\n            var commonOffset = this._getCommonOffset(date);\r\n            var appointmentOffset = this._getAppointmentOffset(date, appointmentTimezone);\r\n            return {\r\n                client: clientOffset,\r\n                common: !(0, _type.isDefined)(commonOffset) ? clientOffset : commonOffset,\r\n                appointment: \"number\" !== typeof appointmentOffset ? clientOffset : appointmentOffset\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getClientOffset\",\r\n        value: function(date) {\r\n            return this.options.getClientOffset(date)\r\n        }\r\n    }, {\r\n        key: \"_getCommonOffset\",\r\n        value: function(date) {\r\n            return this.options.getCommonOffset(date)\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentOffset\",\r\n        value: function(date, appointmentTimezone) {\r\n            return this.options.getAppointmentOffset(date, appointmentTimezone)\r\n        }\r\n    }, {\r\n        key: \"_getConvertedDate\",\r\n        value: function(date, appointmentTimezone, useAppointmentTimeZone, isBack) {\r\n            var newDate = new Date(date.getTime());\r\n            var offsets = this.getOffsets(newDate, appointmentTimezone);\r\n            if (useAppointmentTimeZone && !!appointmentTimezone) {\r\n                return this._getConvertedDateByOffsets(date, offsets.client, offsets.appointment, isBack)\r\n            }\r\n            return this._getConvertedDateByOffsets(date, offsets.client, offsets.common, isBack)\r\n        }\r\n    }, {\r\n        key: \"_getConvertedDateByOffsets\",\r\n        value: function(date, clientOffset, targetOffset, isBack) {\r\n            var direction = isBack ? -1 : 1;\r\n            var utcDate = date.getTime() - direction * clientOffset * toMs(\"hour\");\r\n            return new Date(utcDate + direction * targetOffset * toMs(\"hour\"))\r\n        }\r\n    }]);\r\n    return TimeZoneCalculator\r\n}();\r\nexports.TimeZoneCalculator = TimeZoneCalculator;\r\n","/**\r\n * DevExtreme (data/array_store.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = _interopRequireDefault(require(\"./utils\"));\r\nvar _query = _interopRequireDefault(require(\"./query\"));\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _abstract_store = _interopRequireDefault(require(\"./abstract_store\"));\r\nvar _array_utils = require(\"./array_utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ArrayStore = _abstract_store.default.inherit({\r\n    ctor: function(options) {\r\n        if (Array.isArray(options)) {\r\n            options = {\r\n                data: options\r\n            }\r\n        } else {\r\n            options = options || {}\r\n        }\r\n        this.callBase(options);\r\n        var initialArray = options.data;\r\n        if (initialArray && !Array.isArray(initialArray)) {\r\n            throw _errors.default.errors.Error(\"E4006\")\r\n        }\r\n        this._array = initialArray || []\r\n    },\r\n    createQuery: function() {\r\n        return (0, _query.default)(this._array, {\r\n            errorHandler: this._errorHandler\r\n        })\r\n    },\r\n    _byKeyImpl: function(key) {\r\n        var index = (0, _array_utils.indexByKey)(this, this._array, key);\r\n        if (index === -1) {\r\n            return _utils.default.rejectedPromise(_errors.default.errors.Error(\"E4009\"))\r\n        }\r\n        return _utils.default.trivialPromise(this._array[index])\r\n    },\r\n    _insertImpl: function(values) {\r\n        return (0, _array_utils.insert)(this, this._array, values)\r\n    },\r\n    _pushImpl: function(changes) {\r\n        (0, _array_utils.applyBatch)({\r\n            keyInfo: this,\r\n            data: this._array,\r\n            changes: changes\r\n        })\r\n    },\r\n    _updateImpl: function(key, values) {\r\n        return (0, _array_utils.update)(this, this._array, key, values)\r\n    },\r\n    _removeImpl: function(key) {\r\n        return (0, _array_utils.remove)(this, this._array, key)\r\n    },\r\n    clear: function() {\r\n        this._eventsStrategy.fireEvent(\"modifying\");\r\n        this._array = [];\r\n        this._eventsStrategy.fireEvent(\"modified\")\r\n    }\r\n}, \"array\");\r\nvar _default = ArrayStore;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (localization/parentLocale.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar PARENT_LOCALE_SEPARATOR = \"-\";\r\nvar _default = function(parentLocales, locale) {\r\n    var parentLocale = parentLocales[locale];\r\n    if (parentLocale) {\r\n        return \"root\" !== parentLocale && parentLocale\r\n    }\r\n    return locale.substr(0, locale.lastIndexOf(PARENT_LOCALE_SEPARATOR))\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/exceljs/export_pivot_grid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.exportPivotGrid = exportPivotGrid;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _export = require(\"./export\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar privateOptions = {\r\n    _getWorksheetFrozenState: function(dataProvider, cellRange) {\r\n        return {\r\n            state: \"frozen\",\r\n            xSplit: cellRange.from.column + dataProvider.getFrozenArea().x - 1,\r\n            ySplit: cellRange.from.row + dataProvider.getFrozenArea().y - 1\r\n        }\r\n    },\r\n    _getCustomizeCellOptions: function(excelCell, pivotCell) {\r\n        return {\r\n            excelCell: excelCell,\r\n            pivotCell: pivotCell\r\n        }\r\n    },\r\n    _needMergeRange: function() {\r\n        return true\r\n    },\r\n    _renderLoadPanel: function(component) {\r\n        component._renderLoadPanel(component._dataArea.groupElement(), component.$element())\r\n    },\r\n    _trySetAutoFilter: _common.noop,\r\n    _trySetFont: _common.noop,\r\n    _trySetOutlineLevel: _common.noop\r\n};\r\n\r\nfunction exportPivotGrid(options) {\r\n    return _export.Export.export(_getFullOptions(options), privateOptions)\r\n}\r\n\r\nfunction _getFullOptions(options) {\r\n    if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {\r\n        throw Error('The \"exportPivotGrid\" method requires a configuration object.')\r\n    }\r\n    if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && \"dxPivotGrid\" === options.component.NAME)) {\r\n        throw Error('The \"component\" field must contain a PivotGrid instance.')\r\n    }\r\n    return _export.Export.getFullOptions(options)\r\n}\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/time_panel/layout.j.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../../../../core/component_registrator\"));\r\nvar _component = _interopRequireDefault(require(\"../../../../../preact_wrapper/component\"));\r\nvar _layout = require(\"./layout\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar TimePanelTableLayout = function(_BaseComponent) {\r\n    _inherits(TimePanelTableLayout, _BaseComponent);\r\n    var _super = _createSuper(TimePanelTableLayout);\r\n\r\n    function TimePanelTableLayout() {\r\n        _classCallCheck(this, TimePanelTableLayout);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(TimePanelTableLayout, [{\r\n        key: \"getProps\",\r\n        value: function() {\r\n            var props = _get(_getPrototypeOf(TimePanelTableLayout.prototype), \"getProps\", this).call(this);\r\n            props.timeCellTemplate = this._createTemplateComponent(props, props.timeCellTemplate);\r\n            props.dataCellTemplate = this._createTemplateComponent(props, props.dataCellTemplate);\r\n            return props\r\n        }\r\n    }, {\r\n        key: \"_propsInfo\",\r\n        get: function() {\r\n            return {\r\n                twoWay: [],\r\n                allowNull: [],\r\n                elements: []\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_viewComponent\",\r\n        get: function() {\r\n            return _layout.TimePanelTableLayout\r\n        }\r\n    }]);\r\n    return TimePanelTableLayout\r\n}(_component.default);\r\nexports.default = TimePanelTableLayout;\r\n(0, _component_registrator.default)(\"dxTimePanelTableLayout\", TimePanelTableLayout);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.virtual_columns.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.virtual_columns\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"virtualColumns\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (core/utils/scroll_rtl_behavior.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\nvar _call_once = _interopRequireDefault(require(\"./call_once\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getScrollRtlBehavior = (0, _call_once.default)(function() {\r\n    var document = _dom_adapter.default.getDocument();\r\n    document.body.insertAdjacentHTML(\"beforeend\", \"<div style='direction: rtl;\\n       position: absolute; left: 0; top: -1; overflow: hidden; width: 1px;\\n       height: 1px;'><div style='width: 2px; height: 1px;'></div></div>\");\r\n    var scroller = document.body.lastElementChild;\r\n    var initiallyPositive = scroller.scrollLeft > 0;\r\n    scroller.scrollLeft = -1;\r\n    var hasNegative = scroller.scrollLeft < 0;\r\n    var result = {\r\n        decreasing: hasNegative || initiallyPositive,\r\n        positive: !hasNegative\r\n    };\r\n    document.body.removeChild(scroller);\r\n    return result\r\n});\r\nvar _default = getScrollRtlBehavior;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/form/ui.form.items_runtime_info.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar FormItemsRunTimeInfo = function() {\r\n    function FormItemsRunTimeInfo() {\r\n        _classCallCheck(this, FormItemsRunTimeInfo);\r\n        this._map = {}\r\n    }\r\n    _createClass(FormItemsRunTimeInfo, [{\r\n        key: \"_findWidgetInstance\",\r\n        value: function(condition) {\r\n            var result;\r\n            (0, _iterator.each)(this._map, function(guid, _ref) {\r\n                var widgetInstance = _ref.widgetInstance,\r\n                    item = _ref.item;\r\n                if (condition(item)) {\r\n                    result = widgetInstance;\r\n                    return false\r\n                }\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_findFieldByCondition\",\r\n        value: function(callback, valueExpr) {\r\n            var result;\r\n            (0, _iterator.each)(this._map, function(key, value) {\r\n                if (callback(value)) {\r\n                    result = \"guid\" === valueExpr ? key : value[valueExpr];\r\n                    return false\r\n                }\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"clear\",\r\n        value: function() {\r\n            this._map = {}\r\n        }\r\n    }, {\r\n        key: \"removeItemsByItems\",\r\n        value: function(itemsRunTimeInfo) {\r\n            var _this = this;\r\n            (0, _iterator.each)(itemsRunTimeInfo.getItems(), function(guid) {\r\n                return _this.removeItemByKey(guid)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"removeItemByKey\",\r\n        value: function(key) {\r\n            delete this._map[key]\r\n        }\r\n    }, {\r\n        key: \"add\",\r\n        value: function(options) {\r\n            var key = options.guid || new _guid.default;\r\n            this._map[key] = options;\r\n            return key\r\n        }\r\n    }, {\r\n        key: \"addItemsOrExtendFrom\",\r\n        value: function(itemsRunTimeInfo) {\r\n            var _this2 = this;\r\n            itemsRunTimeInfo.each(function(key, itemRunTimeInfo) {\r\n                if (_this2._map[key]) {\r\n                    if (itemRunTimeInfo.widgetInstance) {\r\n                        _this2._map[key].widgetInstance = itemRunTimeInfo.widgetInstance\r\n                    }\r\n                    _this2._map[key].$itemContainer = itemRunTimeInfo.$itemContainer\r\n                } else {\r\n                    _this2.add({\r\n                        item: itemRunTimeInfo.item,\r\n                        widgetInstance: itemRunTimeInfo.widgetInstance,\r\n                        guid: key,\r\n                        $itemContainer: itemRunTimeInfo.$itemContainer\r\n                    })\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"extendRunTimeItemInfoByKey\",\r\n        value: function(key, options) {\r\n            if (this._map[key]) {\r\n                this._map[key] = (0, _extend.extend)(this._map[key], options)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"findWidgetInstanceByItem\",\r\n        value: function(item) {\r\n            return this._findWidgetInstance(function(storedItem) {\r\n                return storedItem === item\r\n            })\r\n        }\r\n    }, {\r\n        key: \"getGroupOrTabLayoutManagerByPath\",\r\n        value: function(targetPath) {\r\n            return this._findFieldByCondition(function(_ref2) {\r\n                var path = _ref2.path;\r\n                return path === targetPath\r\n            }, \"layoutManager\")\r\n        }\r\n    }, {\r\n        key: \"getKeyByPath\",\r\n        value: function(targetPath) {\r\n            return this._findFieldByCondition(function(_ref3) {\r\n                var path = _ref3.path;\r\n                return path === targetPath\r\n            }, \"guid\")\r\n        }\r\n    }, {\r\n        key: \"findWidgetInstanceByName\",\r\n        value: function(name) {\r\n            return this._findWidgetInstance(function(item) {\r\n                return name === item.name\r\n            })\r\n        }\r\n    }, {\r\n        key: \"findWidgetInstanceByDataField\",\r\n        value: function(dataField) {\r\n            return this._findWidgetInstance(function(item) {\r\n                return dataField === ((0, _type.isString)(item) ? item : item.dataField)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"findItemContainerByItem\",\r\n        value: function(item) {\r\n            for (var key in this._map) {\r\n                if (this._map[key].item === item) {\r\n                    return this._map[key].$itemContainer\r\n                }\r\n            }\r\n            return null\r\n        }\r\n    }, {\r\n        key: \"findItemIndexByItem\",\r\n        value: function(targetItem) {\r\n            return this._findFieldByCondition(function(_ref4) {\r\n                var item = _ref4.item;\r\n                return item === targetItem\r\n            }, \"itemIndex\")\r\n        }\r\n    }, {\r\n        key: \"getItems\",\r\n        value: function() {\r\n            return this._map\r\n        }\r\n    }, {\r\n        key: \"each\",\r\n        value: function(handler) {\r\n            (0, _iterator.each)(this._map, function(key, itemRunTimeInfo) {\r\n                handler(key, itemRunTimeInfo)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"removeItemsByPathStartWith\",\r\n        value: function(path) {\r\n            var _this3 = this;\r\n            var keys = Object.keys(this._map);\r\n            var filteredKeys = keys.filter(function(key) {\r\n                return _this3._map[key].path.indexOf(path, 0) > -1\r\n            });\r\n            filteredKeys.forEach(function(key) {\r\n                return _this3.removeItemByKey(key)\r\n            })\r\n        }\r\n    }]);\r\n    return FormItemsRunTimeInfo\r\n}();\r\nexports.default = FormItemsRunTimeInfo;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.area_item.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.AreaItem = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PIVOTGRID_EXPAND_CLASS = \"dx-expand\";\r\nvar getRealElementWidth = function(element) {\r\n    var width = 0;\r\n    var offsetWidth = element.offsetWidth;\r\n    if (element.getBoundingClientRect) {\r\n        var clientRect = (0, _position.getBoundingRect)(element);\r\n        width = clientRect.width;\r\n        if (!width) {\r\n            width = clientRect.right - clientRect.left\r\n        }\r\n        if (width <= offsetWidth - 1) {\r\n            width = offsetWidth\r\n        }\r\n    }\r\n    return width > 0 ? width : offsetWidth\r\n};\r\n\r\nfunction getFakeTableOffset(scrollPos, elementOffset, tableSize, viewPortSize) {\r\n    var offset = 0;\r\n    var halfTableCount = 0;\r\n    var halfTableSize = tableSize / 2;\r\n    if (scrollPos + viewPortSize - (elementOffset + tableSize) > 1) {\r\n        if (scrollPos >= elementOffset + tableSize + halfTableSize) {\r\n            halfTableCount = parseInt((scrollPos - (elementOffset + tableSize)) / halfTableSize, 10)\r\n        }\r\n        offset = elementOffset + tableSize + halfTableSize * halfTableCount\r\n    } else {\r\n        if (scrollPos < elementOffset) {\r\n            if (scrollPos <= elementOffset - halfTableSize) {\r\n                halfTableCount = parseInt((scrollPos - (elementOffset - halfTableSize)) / halfTableSize, 10)\r\n            }\r\n            offset = elementOffset - (tableSize - halfTableSize * halfTableCount)\r\n        } else {\r\n            offset = elementOffset\r\n        }\r\n    }\r\n    return offset\r\n}\r\nvar AreaItem = _class.default.inherit({\r\n    _getRowElement: function(index) {\r\n        var that = this;\r\n        if (that._tableElement && that._tableElement.length > 0) {\r\n            return that._tableElement[0].rows[index]\r\n        }\r\n        return null\r\n    },\r\n    _createGroupElement: function() {\r\n        return (0, _renderer.default)(\"<div>\")\r\n    },\r\n    _createTableElement: function() {\r\n        return (0, _renderer.default)(\"<table>\")\r\n    },\r\n    _getCellText: function(cell, encodeHtml) {\r\n        var cellText = cell.isWhiteSpace ? \"&nbsp\" : cell.text || \"&nbsp\";\r\n        if (encodeHtml && (cellText.indexOf(\"<\") !== -1 || cellText.indexOf(\">\") !== -1)) {\r\n            cellText = (0, _renderer.default)(\"<div>\").text(cellText).html()\r\n        }\r\n        return cellText\r\n    },\r\n    _getRowClassNames: function() {},\r\n    _applyCustomStyles: function(options) {\r\n        if (options.cell.width) {\r\n            options.cssArray.push(\"min-width:\" + options.cell.width + \"px\")\r\n        }\r\n        if (options.cell.sorted) {\r\n            options.classArray.push(\"dx-pivotgrid-sorted\")\r\n        }\r\n    },\r\n    _getMainElementMarkup: function() {\r\n        return \"<tbody>\"\r\n    },\r\n    _getCloseMainElementMarkup: function() {\r\n        return \"</tbody>\"\r\n    },\r\n    _renderTableContent: function(tableElement, data) {\r\n        var that = this;\r\n        var rowsCount = data.length;\r\n        var row;\r\n        var cell;\r\n        var i;\r\n        var j;\r\n        var rowElement;\r\n        var cellElement;\r\n        var cellText;\r\n        var rtlEnabled = that.option(\"rtlEnabled\");\r\n        var markupArray = [];\r\n        var encodeHtml = that.option(\"encodeHtml\");\r\n        var rowClassNames;\r\n        var colspan = \"colspan='\";\r\n        var rowspan = \"rowspan='\";\r\n        tableElement.data(\"area\", that._getAreaName());\r\n        tableElement.data(\"data\", data);\r\n        tableElement.css(\"width\", \"\");\r\n        markupArray.push(that._getMainElementMarkup());\r\n        for (i = 0; i < rowsCount; i++) {\r\n            row = data[i];\r\n            var columnMarkupArray = [];\r\n            rowClassNames = [];\r\n            markupArray.push(\"<tr \");\r\n            for (j = 0; j < row.length; j++) {\r\n                cell = row[j];\r\n                this._getRowClassNames(i, cell, rowClassNames);\r\n                columnMarkupArray.push(\"<td \");\r\n                if (cell) {\r\n                    cell.rowspan && columnMarkupArray.push(rowspan + (cell.rowspan || 1) + \"'\");\r\n                    cell.colspan && columnMarkupArray.push(colspan + (cell.colspan || 1) + \"'\");\r\n                    var styleOptions = {\r\n                        cellElement: cellElement,\r\n                        cell: cell,\r\n                        cellsCount: row.length,\r\n                        cellIndex: j,\r\n                        rowElement: rowElement,\r\n                        rowIndex: i,\r\n                        rowsCount: rowsCount,\r\n                        rtlEnabled: rtlEnabled,\r\n                        classArray: [],\r\n                        cssArray: []\r\n                    };\r\n                    that._applyCustomStyles(styleOptions);\r\n                    if (styleOptions.cssArray.length) {\r\n                        columnMarkupArray.push(\"style='\");\r\n                        columnMarkupArray.push(styleOptions.cssArray.join(\";\"));\r\n                        columnMarkupArray.push(\"'\")\r\n                    }\r\n                    if (styleOptions.classArray.length) {\r\n                        columnMarkupArray.push(\"class='\");\r\n                        columnMarkupArray.push(styleOptions.classArray.join(\" \"));\r\n                        columnMarkupArray.push(\"'\")\r\n                    }\r\n                    columnMarkupArray.push(\">\");\r\n                    if ((0, _type.isDefined)(cell.expanded)) {\r\n                        columnMarkupArray.push(\"<div class='dx-expand-icon-container'><span class='\" + PIVOTGRID_EXPAND_CLASS + \"'></span></div>\")\r\n                    }\r\n                    cellText = this._getCellText(cell, encodeHtml)\r\n                } else {\r\n                    cellText = \"\"\r\n                }\r\n                columnMarkupArray.push(\"<span \");\r\n                if ((0, _type.isDefined)(cell.wordWrapEnabled)) {\r\n                    columnMarkupArray.push(\"style='white-space:\", cell.wordWrapEnabled ? \"normal\" : \"nowrap\", \";'\")\r\n                }\r\n                columnMarkupArray.push(\">\" + cellText + \"</span>\");\r\n                if (cell.sorted) {\r\n                    columnMarkupArray.push(\"<span class='dx-icon-sorted'></span>\")\r\n                }\r\n                columnMarkupArray.push(\"</td>\")\r\n            }\r\n            if (rowClassNames.length) {\r\n                markupArray.push(\"class='\");\r\n                markupArray.push(rowClassNames.join(\" \"));\r\n                markupArray.push(\"'\")\r\n            }\r\n            markupArray.push(\">\");\r\n            markupArray.push(columnMarkupArray.join(\"\"));\r\n            markupArray.push(\"</tr>\")\r\n        }\r\n        markupArray.push(this._getCloseMainElementMarkup());\r\n        tableElement.append(markupArray.join(\"\"));\r\n        this._triggerOnCellPrepared(tableElement, data)\r\n    },\r\n    _triggerOnCellPrepared: function(tableElement, data) {\r\n        var that = this;\r\n        var rowElements = tableElement.find(\"tr\");\r\n        var areaName = that._getAreaName();\r\n        var onCellPrepared = that.option(\"onCellPrepared\");\r\n        var hasEvent = that.component._eventsStrategy.hasEvent(\"cellPrepared\");\r\n        var rowElement;\r\n        var $cellElement;\r\n        var onCellPreparedArgs;\r\n        var defaultActionArgs = this.component._defaultActionArgs();\r\n        var row;\r\n        var cell;\r\n        var rowIndex;\r\n        var columnIndex;\r\n        if (onCellPrepared || hasEvent) {\r\n            for (rowIndex = 0; rowIndex < data.length; rowIndex++) {\r\n                row = data[rowIndex];\r\n                rowElement = rowElements.eq(rowIndex);\r\n                for (columnIndex = 0; columnIndex < row.length; columnIndex++) {\r\n                    cell = row[columnIndex];\r\n                    $cellElement = rowElement.children().eq(columnIndex);\r\n                    onCellPreparedArgs = {\r\n                        area: areaName,\r\n                        rowIndex: rowIndex,\r\n                        columnIndex: columnIndex,\r\n                        cellElement: (0, _element.getPublicElement)($cellElement),\r\n                        cell: cell\r\n                    };\r\n                    if (hasEvent) {\r\n                        that.component._trigger(\"onCellPrepared\", onCellPreparedArgs)\r\n                    } else {\r\n                        onCellPrepared((0, _extend.extend)(onCellPreparedArgs, defaultActionArgs))\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _getRowHeight: function(index) {\r\n        var row = this._getRowElement(index);\r\n        var height = 0;\r\n        var offsetHeight = row.offsetHeight;\r\n        if (row && row.lastChild) {\r\n            if (row.getBoundingClientRect) {\r\n                var clientRect = (0, _position.getBoundingRect)(row);\r\n                height = clientRect.height;\r\n                if (height <= offsetHeight - 1) {\r\n                    height = offsetHeight\r\n                }\r\n            }\r\n            return height > 0 ? height : offsetHeight\r\n        }\r\n        return 0\r\n    },\r\n    _setRowHeight: function(index, value) {\r\n        var row = this._getRowElement(index);\r\n        if (row) {\r\n            row.style.height = value + \"px\"\r\n        }\r\n    },\r\n    ctor: function(component) {\r\n        this.component = component\r\n    },\r\n    option: function() {\r\n        return this.component.option.apply(this.component, arguments)\r\n    },\r\n    getRowsLength: function() {\r\n        var that = this;\r\n        if (that._tableElement && that._tableElement.length > 0) {\r\n            return that._tableElement[0].rows.length\r\n        }\r\n        return 0\r\n    },\r\n    getRowsHeight: function() {\r\n        var that = this;\r\n        var result = [];\r\n        var rowsLength = that.getRowsLength();\r\n        var i;\r\n        for (i = 0; i < rowsLength; i++) {\r\n            result.push(that._getRowHeight(i))\r\n        }\r\n        return result\r\n    },\r\n    setRowsHeight: function(values) {\r\n        var that = this;\r\n        var totalHeight = 0;\r\n        var valuesLength = values.length;\r\n        var i;\r\n        for (i = 0; i < valuesLength; i++) {\r\n            totalHeight += values[i];\r\n            that._setRowHeight(i, values[i])\r\n        }\r\n        this._tableHeight = totalHeight;\r\n        this._tableElement[0].style.height = totalHeight + \"px\"\r\n    },\r\n    getColumnsWidth: function() {\r\n        var rowsLength = this.getRowsLength();\r\n        var rowIndex;\r\n        var row;\r\n        var i;\r\n        var columnIndex;\r\n        var processedCells = [];\r\n        var result = [];\r\n        var fillCells = function(cells, rowIndex, columnIndex, rowSpan, colSpan) {\r\n            var rowOffset;\r\n            var columnOffset;\r\n            for (rowOffset = 0; rowOffset < rowSpan; rowOffset++) {\r\n                for (columnOffset = 0; columnOffset < colSpan; columnOffset++) {\r\n                    cells[rowIndex + rowOffset] = cells[rowIndex + rowOffset] || [];\r\n                    cells[rowIndex + rowOffset][columnIndex + columnOffset] = true\r\n                }\r\n            }\r\n        };\r\n        if (rowsLength) {\r\n            for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n                processedCells[rowIndex] = processedCells[rowIndex] || [];\r\n                row = this._getRowElement(rowIndex);\r\n                for (i = 0; i < row.cells.length; i++) {\r\n                    for (columnIndex = 0; processedCells[rowIndex][columnIndex]; columnIndex++) {}\r\n                    fillCells(processedCells, rowIndex, columnIndex, row.cells[i].rowSpan, row.cells[i].colSpan);\r\n                    if (1 === row.cells[i].colSpan) {\r\n                        result[columnIndex] = result[columnIndex] || getRealElementWidth(row.cells[i])\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    setColumnsWidth: function(values) {\r\n        var i;\r\n        var tableElement = this._tableElement[0];\r\n        var colgroupElementHTML = \"\";\r\n        var columnsCount = this.getColumnsCount();\r\n        var columnWidth = [];\r\n        for (i = 0; i < columnsCount; i++) {\r\n            columnWidth.push(values[i] || 0)\r\n        }\r\n        for (i = columnsCount; i < values.length && values; i++) {\r\n            columnWidth[columnsCount - 1] += values[i]\r\n        }\r\n        for (i = 0; i < columnsCount; i++) {\r\n            colgroupElementHTML += '<col style=\"width: ' + columnWidth[i] + 'px\">'\r\n        }\r\n        this._colgroupElement.html(colgroupElementHTML);\r\n        this._tableWidth = columnWidth.reduce(function(sum, width) {\r\n            return sum + width\r\n        }, 0);\r\n        tableElement.style.width = this._tableWidth + \"px\";\r\n        tableElement.style.tableLayout = \"fixed\"\r\n    },\r\n    resetColumnsWidth: function() {\r\n        this._colgroupElement.find(\"col\").width(\"auto\");\r\n        this._tableElement.css({\r\n            width: \"\",\r\n            tableLayout: \"\"\r\n        })\r\n    },\r\n    groupWidth: function(value) {\r\n        if (void 0 === value) {\r\n            return this._groupElement.width()\r\n        } else {\r\n            if (value >= 0) {\r\n                this._groupWidth = value;\r\n                return this._groupElement[0].style.width = value + \"px\"\r\n            } else {\r\n                return this._groupElement[0].style.width = value\r\n            }\r\n        }\r\n    },\r\n    groupHeight: function(value) {\r\n        if (void 0 === value) {\r\n            return this._groupElement.height()\r\n        }\r\n        this._groupHeight = null;\r\n        if (value >= 0) {\r\n            this._groupHeight = value;\r\n            this._groupElement[0].style.height = value + \"px\"\r\n        } else {\r\n            this._groupElement[0].style.height = value\r\n        }\r\n    },\r\n    groupElement: function() {\r\n        return this._groupElement\r\n    },\r\n    tableElement: function() {\r\n        return this._tableElement\r\n    },\r\n    element: function() {\r\n        return this._rootElement\r\n    },\r\n    headElement: function() {\r\n        return this._tableElement.find(\"thead\")\r\n    },\r\n    _setTableCss: function(styles) {\r\n        if (this.option(\"rtlEnabled\")) {\r\n            styles.right = styles.left;\r\n            delete styles.left\r\n        }\r\n        this.tableElement().css(styles)\r\n    },\r\n    setVirtualContentParams: function(params) {\r\n        this._virtualContent.css({\r\n            width: params.width,\r\n            height: params.height\r\n        });\r\n        this.groupElement().addClass(\"dx-virtual-mode\")\r\n    },\r\n    disableVirtualMode: function() {\r\n        this.groupElement().removeClass(\"dx-virtual-mode\")\r\n    },\r\n    _renderVirtualContent: function() {\r\n        var that = this;\r\n        if (!that._virtualContent && \"virtual\" === that.option(\"scrolling.mode\")) {\r\n            that._virtualContent = (0, _renderer.default)(\"<div>\").addClass(\"dx-virtual-content\").insertBefore(that._tableElement)\r\n        }\r\n    },\r\n    reset: function() {\r\n        var that = this;\r\n        var tableElement = that._tableElement[0];\r\n        that._fakeTable && that._fakeTable.detach();\r\n        that._fakeTable = null;\r\n        that.disableVirtualMode();\r\n        that.groupWidth(\"100%\");\r\n        that.groupHeight(\"auto\");\r\n        that.resetColumnsWidth();\r\n        if (tableElement) {\r\n            for (var i = 0; i < tableElement.rows.length; i++) {\r\n                tableElement.rows[i].style.height = \"\"\r\n            }\r\n            tableElement.style.height = \"\";\r\n            tableElement.style.width = \"100%\"\r\n        }\r\n    },\r\n    _updateFakeTableVisibility: function() {\r\n        var that = this;\r\n        var tableElement = that.tableElement()[0];\r\n        var horizontalOffsetName = that.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n        var fakeTableElement = that._fakeTable[0];\r\n        if (tableElement.style.top === fakeTableElement.style.top && fakeTableElement.style[horizontalOffsetName] === tableElement.style[horizontalOffsetName]) {\r\n            that._fakeTable.addClass(\"dx-hidden\")\r\n        } else {\r\n            that._fakeTable.removeClass(\"dx-hidden\")\r\n        }\r\n    },\r\n    _moveFakeTableHorizontally: function(scrollPos) {\r\n        var that = this;\r\n        var rtlEnabled = that.option(\"rtlEnabled\");\r\n        var offsetStyleName = rtlEnabled ? \"right\" : \"left\";\r\n        var tableElementOffset = parseFloat(that.tableElement()[0].style[offsetStyleName]);\r\n        var offset = getFakeTableOffset(scrollPos, tableElementOffset, that._tableWidth, that._groupWidth);\r\n        if (parseFloat(that._fakeTable[0].style[offsetStyleName]) !== offset) {\r\n            that._fakeTable[0].style[offsetStyleName] = offset + \"px\"\r\n        }\r\n    },\r\n    _moveFakeTableTop: function(scrollPos) {\r\n        var that = this;\r\n        var tableElementOffsetTop = parseFloat(that.tableElement()[0].style.top);\r\n        var offsetTop = getFakeTableOffset(scrollPos, tableElementOffsetTop, that._tableHeight, that._groupHeight);\r\n        if (parseFloat(that._fakeTable[0].style.top) !== offsetTop) {\r\n            that._fakeTable[0].style.top = offsetTop + \"px\"\r\n        }\r\n    },\r\n    _moveFakeTable: function() {\r\n        this._updateFakeTableVisibility()\r\n    },\r\n    _createFakeTable: function() {\r\n        var that = this;\r\n        if (!that._fakeTable) {\r\n            that._fakeTable = that.tableElement().clone().addClass(\"dx-pivot-grid-fake-table\").appendTo(that._virtualContent)\r\n        }\r\n    },\r\n    render: function(rootElement, data) {\r\n        var that = this;\r\n        if (that._tableElement) {\r\n            try {\r\n                that._tableElement[0].innerHTML = \"\"\r\n            } catch (e) {\r\n                that._tableElement.empty()\r\n            }\r\n            that._tableElement.attr(\"style\", \"\")\r\n        } else {\r\n            that._groupElement = that._createGroupElement();\r\n            that._tableElement = that._createTableElement();\r\n            that._tableElement.appendTo(that._groupElement);\r\n            that._groupElement.appendTo(rootElement);\r\n            that._rootElement = rootElement\r\n        }\r\n        that._colgroupElement = (0, _renderer.default)(\"<colgroup>\").appendTo(that._tableElement);\r\n        that._renderTableContent(that._tableElement, data);\r\n        that._renderVirtualContent()\r\n    },\r\n    _getScrollable: function() {\r\n        return this.groupElement().data(\"dxScrollable\")\r\n    },\r\n    on: function(eventName, handler) {\r\n        var that = this;\r\n        var scrollable = that._getScrollable();\r\n        if (scrollable) {\r\n            scrollable.on(eventName, function(e) {\r\n                if (that.option(\"rtlEnabled\") && (0, _type.isDefined)(e.scrollOffset.left)) {\r\n                    e.scrollOffset.left = scrollable.$content().width() - scrollable._container().width() - e.scrollOffset.left\r\n                }\r\n                handler(e)\r\n            })\r\n        }\r\n        return this\r\n    },\r\n    off: function(eventName) {\r\n        var scrollable = this._getScrollable();\r\n        if (scrollable) {\r\n            scrollable.off(eventName)\r\n        }\r\n        return this\r\n    },\r\n    scrollTo: function(pos) {\r\n        var scrollable = this._getScrollable();\r\n        var scrollablePos = pos;\r\n        if (scrollable) {\r\n            if (this.option(\"rtlEnabled\")) {\r\n                if (\"column\" === this._getAreaName()) {\r\n                    scrollablePos = scrollable.$content().width() - scrollable._container().width() - pos\r\n                } else {\r\n                    if (\"data\" === this._getAreaName()) {\r\n                        scrollablePos = {\r\n                            x: scrollable.$content().width() - scrollable._container().width() - pos.x,\r\n                            y: pos.y\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            scrollable.scrollTo(scrollablePos);\r\n            if (this._virtualContent) {\r\n                this._createFakeTable();\r\n                this._moveFakeTable(pos)\r\n            }\r\n        }\r\n    },\r\n    updateScrollable: function() {\r\n        var scrollable = this._getScrollable();\r\n        if (scrollable) {\r\n            return scrollable.update()\r\n        }\r\n    },\r\n    getColumnsCount: function() {\r\n        var columnCount = 0;\r\n        var row = this._getRowElement(0);\r\n        var cells;\r\n        if (row) {\r\n            cells = row.cells;\r\n            for (var i = 0, len = cells.length; i < len; ++i) {\r\n                columnCount += cells[i].colSpan\r\n            }\r\n        }\r\n        return columnCount\r\n    },\r\n    getData: function() {\r\n        var tableElement = this._tableElement;\r\n        return tableElement ? tableElement.data(\"data\") : []\r\n    }\r\n});\r\nexports.AreaItem = AreaItem;\r\n","/**\r\n * DevExtreme (viz/gauges/common.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createIndicatorCreator = createIndicatorCreator;\r\nexports.dxGauge = void 0;\r\nvar _base_gauge = require(\"./base_gauge\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _base_axis = require(\"../axes/base_axis\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _isArray = Array.isArray;\r\nvar _isFinite = isFinite;\r\nvar _Number = Number;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar SHIFT_ANGLE = 90;\r\nvar OPTION_VALUE = \"value\";\r\nvar OPTION_SUBVALUES = \"subvalues\";\r\nvar DEFAULT_MINOR_AXIS_DIVISION_FACTOR = 5;\r\nvar DEFAULT_NUMBER_MULTIPLIERS = [1, 2, 5];\r\n\r\nfunction processValue(value, fallbackValue) {\r\n    if (null === value) {\r\n        return value\r\n    }\r\n    return _isFinite(value) ? _Number(value) : fallbackValue\r\n}\r\n\r\nfunction parseArrayOfNumbers(arg) {\r\n    return _isArray(arg) ? arg : (0, _type.isNumeric)(arg) ? [arg] : null\r\n}\r\nvar dxGauge = _base_gauge.dxBaseGauge.inherit({\r\n    _initCore: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        that._setupValue(that.option(OPTION_VALUE));\r\n        that.__subvalues = parseArrayOfNumbers(that.option(OPTION_SUBVALUES));\r\n        that._setupSubvalues(that.__subvalues);\r\n        selectMode(that);\r\n        that.callBase.apply(that, arguments);\r\n        that._rangeContainer = new that._factory.RangeContainer({\r\n            renderer: renderer,\r\n            container: renderer.root,\r\n            translator: that._translator,\r\n            themeManager: that._themeManager\r\n        });\r\n        that._initScale()\r\n    },\r\n    _fontFields: [\"scale.label.font\", \"valueIndicators.rangebar.text.font\", \"valueIndicators.textcloud.text.font\", \"indicator.text.font\"],\r\n    _initScale: function() {\r\n        var that = this;\r\n        that._scaleGroup = that._renderer.g().attr({\r\n            \"class\": \"dxg-scale\"\r\n        }).linkOn(that._renderer.root, \"scale\");\r\n        that._scale = new _base_axis.Axis({\r\n            incidentOccurred: that._incidentOccurred,\r\n            renderer: that._renderer,\r\n            axesContainerGroup: that._scaleGroup,\r\n            axisType: that._scaleTypes.type,\r\n            drawingType: that._scaleTypes.drawingType,\r\n            widgetClass: \"dxg\",\r\n            getTemplate: function() {}\r\n        })\r\n    },\r\n    _disposeCore: function() {\r\n        var that = this;\r\n        that.callBase.apply(that, arguments);\r\n        that._scale.dispose();\r\n        that._scaleGroup.linkOff();\r\n        that._rangeContainer.dispose();\r\n        that._disposeValueIndicators();\r\n        that._scale = that._scaleGroup = that._rangeContainer = null\r\n    },\r\n    _disposeValueIndicators: function() {\r\n        var that = this;\r\n        that._valueIndicator && that._valueIndicator.dispose();\r\n        that._subvalueIndicatorsSet && that._subvalueIndicatorsSet.dispose();\r\n        that._valueIndicator = that._subvalueIndicatorsSet = null\r\n    },\r\n    _setupDomainCore: function() {\r\n        var that = this;\r\n        var scaleOption = that.option(\"scale\") || {};\r\n        var startValue = that.option(\"startValue\");\r\n        var endValue = that.option(\"endValue\");\r\n        startValue = (0, _type.isNumeric)(startValue) ? _Number(startValue) : (0, _type.isNumeric)(scaleOption.startValue) ? _Number(scaleOption.startValue) : 0;\r\n        endValue = (0, _type.isNumeric)(endValue) ? _Number(endValue) : (0, _type.isNumeric)(scaleOption.endValue) ? _Number(scaleOption.endValue) : 100;\r\n        that._baseValue = startValue < endValue ? startValue : endValue;\r\n        that._translator.setDomain(startValue, endValue)\r\n    },\r\n    _cleanContent: function() {\r\n        var that = this;\r\n        that._rangeContainer.clean();\r\n        that._cleanValueIndicators()\r\n    },\r\n    _measureScale: function(scaleOptions) {\r\n        var that = this;\r\n        var majorTick = scaleOptions.tick;\r\n        var majorTickEnabled = majorTick.visible && majorTick.length > 0 && majorTick.width > 0;\r\n        var minorTick = scaleOptions.minorTick;\r\n        var minorTickEnabled = minorTick.visible && minorTick.length > 0 && minorTick.width > 0;\r\n        var label = scaleOptions.label;\r\n        var indentFromTick = Number(label.indentFromTick);\r\n        if (!majorTickEnabled && !minorTickEnabled && !label.visible) {\r\n            return {}\r\n        }\r\n        var textParams = that._scale.measureLabels((0, _extend2.extend)({}, that._canvas));\r\n        var layoutValue = that._getScaleLayoutValue();\r\n        var result = {\r\n            min: layoutValue,\r\n            max: layoutValue\r\n        };\r\n        var coefs = that._getTicksCoefficients(scaleOptions);\r\n        var innerCoef = coefs.inner;\r\n        var outerCoef = coefs.outer;\r\n        if (majorTickEnabled) {\r\n            result.min = _min(result.min, layoutValue - innerCoef * majorTick.length);\r\n            result.max = _max(result.max, layoutValue + outerCoef * majorTick.length)\r\n        }\r\n        if (minorTickEnabled) {\r\n            result.min = _min(result.min, layoutValue - innerCoef * minorTick.length);\r\n            result.max = _max(result.max, layoutValue + outerCoef * minorTick.length)\r\n        }\r\n        label.visible && that._correctScaleIndents(result, indentFromTick, textParams);\r\n        return result\r\n    },\r\n    _renderContent: function() {\r\n        var that = this;\r\n        var scaleOptions = that._prepareScaleSettings();\r\n        that._rangeContainer.render(_extend(that._getOption(\"rangeContainer\"), {\r\n            vertical: that._area.vertical\r\n        }));\r\n        that._renderScale(scaleOptions);\r\n        var elements = (0, _utils.map)([that._rangeContainer].concat(that._prepareValueIndicators()), function(element) {\r\n            return element && element.enabled ? element : null\r\n        });\r\n        that._applyMainLayout(elements, that._measureScale(scaleOptions));\r\n        _each(elements, function(_, element) {\r\n            element.resize(that._getElementLayout(element.getOffset()))\r\n        });\r\n        that._shiftScale(that._getElementLayout(0), scaleOptions);\r\n        that._beginValueChanging();\r\n        that._updateActiveElements();\r\n        that._endValueChanging()\r\n    },\r\n    _prepareScaleSettings: function() {\r\n        var that = this;\r\n        var userOptions = that.option(\"scale\");\r\n        var scaleOptions = (0, _extend2.extend)(true, {}, that._themeManager.theme(\"scale\"), userOptions);\r\n        scaleOptions.label.indentFromAxis = 0;\r\n        scaleOptions.isHorizontal = !that._area.vertical;\r\n        scaleOptions.forceUserTickInterval |= (0, _type.isDefined)(userOptions) && (0, _type.isDefined)(userOptions.tickInterval) && !(0, _type.isDefined)(userOptions.scaleDivisionFactor);\r\n        scaleOptions.axisDivisionFactor = scaleOptions.scaleDivisionFactor || that._gridSpacingFactor;\r\n        scaleOptions.minorAxisDivisionFactor = scaleOptions.minorScaleDivisionFactor || DEFAULT_MINOR_AXIS_DIVISION_FACTOR;\r\n        scaleOptions.numberMultipliers = DEFAULT_NUMBER_MULTIPLIERS;\r\n        scaleOptions.tickOrientation = that._getTicksOrientation(scaleOptions);\r\n        if (scaleOptions.label.useRangeColors) {\r\n            scaleOptions.label.customizeColor = function() {\r\n                return that._rangeContainer.getColorForValue(this.value)\r\n            }\r\n        }\r\n        return scaleOptions\r\n    },\r\n    _renderScale: function(scaleOptions) {\r\n        var that = this;\r\n        var bounds = that._translator.getDomain();\r\n        var startValue = bounds[0];\r\n        var endValue = bounds[1];\r\n        var angles = that._translator.getCodomain();\r\n        var invert = !!(startValue > endValue ^ scaleOptions.inverted);\r\n        var min = _min(startValue, endValue);\r\n        var max = _max(startValue, endValue);\r\n        scaleOptions.min = min;\r\n        scaleOptions.max = max;\r\n        scaleOptions.startAngle = SHIFT_ANGLE - angles[0];\r\n        scaleOptions.endAngle = SHIFT_ANGLE - angles[1];\r\n        scaleOptions.skipViewportExtending = true;\r\n        scaleOptions.inverted = invert;\r\n        that._scale.updateOptions(scaleOptions);\r\n        that._scale.setBusinessRange({\r\n            axisType: \"continuous\",\r\n            dataType: \"numeric\",\r\n            min: min,\r\n            max: max,\r\n            invert: invert\r\n        });\r\n        that._updateScaleTickIndent(scaleOptions);\r\n        that._scaleGroup.linkAppend();\r\n        that._scale.draw((0, _extend2.extend)({}, that._canvas))\r\n    },\r\n    _updateIndicatorSettings: function(settings) {\r\n        var that = this;\r\n        settings.currentValue = settings.baseValue = _isFinite(that._translator.translate(settings.baseValue)) ? _Number(settings.baseValue) : that._baseValue;\r\n        settings.vertical = that._area.vertical;\r\n        if (settings.text && !settings.text.format) {\r\n            settings.text.format = that._defaultFormatOptions\r\n        }\r\n    },\r\n    _prepareIndicatorSettings: function(options, defaultTypeField) {\r\n        var that = this;\r\n        var theme = that._themeManager.theme(\"valueIndicators\");\r\n        var type = (0, _utils.normalizeEnum)(options.type || that._themeManager.theme(defaultTypeField));\r\n        var settings = _extend(true, {}, theme._default, theme[type], options);\r\n        settings.type = type;\r\n        settings.animation = that._animationSettings;\r\n        settings.containerBackgroundColor = that._containerBackgroundColor;\r\n        that._updateIndicatorSettings(settings);\r\n        return settings\r\n    },\r\n    _cleanValueIndicators: function() {\r\n        this._valueIndicator && this._valueIndicator.clean();\r\n        this._subvalueIndicatorsSet && this._subvalueIndicatorsSet.clean()\r\n    },\r\n    _prepareValueIndicators: function() {\r\n        var that = this;\r\n        that._prepareValueIndicator();\r\n        null !== that.__subvalues && that._prepareSubvalueIndicators();\r\n        return [that._valueIndicator, that._subvalueIndicatorsSet]\r\n    },\r\n    _updateActiveElements: function() {\r\n        this._updateValueIndicator();\r\n        this._updateSubvalueIndicators()\r\n    },\r\n    _prepareValueIndicator: function() {\r\n        var that = this;\r\n        var target = that._valueIndicator;\r\n        var settings = that._prepareIndicatorSettings(that.option(\"valueIndicator\") || {}, \"valueIndicatorType\");\r\n        if (target && target.type !== settings.type) {\r\n            target.dispose();\r\n            target = null\r\n        }\r\n        if (!target) {\r\n            target = that._valueIndicator = that._createIndicator(settings.type, that._renderer.root, \"dxg-value-indicator\", \"value-indicator\")\r\n        }\r\n        target.render(settings)\r\n    },\r\n    _createSubvalueIndicatorsSet: function() {\r\n        var that = this;\r\n        var root = that._renderer.root;\r\n        return new ValueIndicatorsSet({\r\n            createIndicator: function(type, i) {\r\n                return that._createIndicator(type, root, \"dxg-subvalue-indicator\", \"subvalue-indicator\", i)\r\n            },\r\n            createPalette: function(palette) {\r\n                return that._themeManager.createPalette(palette)\r\n            }\r\n        })\r\n    },\r\n    _prepareSubvalueIndicators: function() {\r\n        var that = this;\r\n        var target = that._subvalueIndicatorsSet;\r\n        var settings = that._prepareIndicatorSettings(that.option(\"subvalueIndicator\") || {}, \"subvalueIndicatorType\");\r\n        if (!target) {\r\n            target = that._subvalueIndicatorsSet = that._createSubvalueIndicatorsSet()\r\n        }\r\n        var isRecreate = settings.type !== target.type;\r\n        target.type = settings.type;\r\n        var dummy = that._createIndicator(settings.type, that._renderer.root);\r\n        if (dummy) {\r\n            dummy.dispose();\r\n            target.render(settings, isRecreate)\r\n        }\r\n    },\r\n    _setupValue: function(value) {\r\n        this.__value = processValue(value, this.__value)\r\n    },\r\n    _setupSubvalues: function(subvalues) {\r\n        var vals = void 0 === subvalues ? this.__subvalues : parseArrayOfNumbers(subvalues);\r\n        var i;\r\n        var ii;\r\n        var list;\r\n        if (null === vals) {\r\n            return\r\n        }\r\n        for (i = 0, ii = vals.length, list = []; i < ii; ++i) {\r\n            list.push(processValue(vals[i], this.__subvalues[i]))\r\n        }\r\n        this.__subvalues = list\r\n    },\r\n    _updateValueIndicator: function() {\r\n        var that = this;\r\n        that._valueIndicator && that._valueIndicator.value(that.__value, that._noAnimation)\r\n    },\r\n    _updateSubvalueIndicators: function() {\r\n        var that = this;\r\n        that._subvalueIndicatorsSet && that._subvalueIndicatorsSet.values(that.__subvalues, that._noAnimation)\r\n    },\r\n    value: function(arg) {\r\n        if (void 0 !== arg) {\r\n            this._changeValue(arg);\r\n            return this\r\n        }\r\n        return this.__value\r\n    },\r\n    subvalues: function(arg) {\r\n        if (void 0 !== arg) {\r\n            this._changeSubvalues(arg);\r\n            return this\r\n        }\r\n        return null !== this.__subvalues ? this.__subvalues.slice() : void 0\r\n    },\r\n    _changeValue: function(value) {\r\n        var that = this;\r\n        that._setupValue(value);\r\n        that._beginValueChanging();\r\n        that._updateValueIndicator();\r\n        if (that.__value !== that.option(OPTION_VALUE)) {\r\n            that.option(OPTION_VALUE, that.__value)\r\n        }\r\n        that._endValueChanging()\r\n    },\r\n    _changeSubvalues: function(subvalues) {\r\n        var that = this;\r\n        if (null !== that.__subvalues) {\r\n            that._setupSubvalues(subvalues);\r\n            that._beginValueChanging();\r\n            that._updateSubvalueIndicators();\r\n            that._endValueChanging()\r\n        } else {\r\n            that.__subvalues = parseArrayOfNumbers(subvalues);\r\n            that._setContentSize();\r\n            that._renderContent()\r\n        }\r\n        if (!(0, _base_gauge.compareArrays)(that.__subvalues, that.option(OPTION_SUBVALUES))) {\r\n            that.option(OPTION_SUBVALUES, that.__subvalues)\r\n        }\r\n    },\r\n    _optionChangesMap: {\r\n        scale: \"DOMAIN\",\r\n        rangeContainer: \"MOSTLY_TOTAL\",\r\n        valueIndicator: \"MOSTLY_TOTAL\",\r\n        subvalueIndicator: \"MOSTLY_TOTAL\",\r\n        containerBackgroundColor: \"MOSTLY_TOTAL\",\r\n        value: \"VALUE\",\r\n        subvalues: \"SUBVALUES\",\r\n        valueIndicators: \"MOSTLY_TOTAL\"\r\n    },\r\n    _customChangesOrder: [\"VALUE\", \"SUBVALUES\"],\r\n    _change_VALUE: function() {\r\n        this._changeValue(this.option(OPTION_VALUE))\r\n    },\r\n    _change_SUBVALUES: function() {\r\n        this._changeSubvalues(this.option(OPTION_SUBVALUES))\r\n    },\r\n    _applyMainLayout: null,\r\n    _getElementLayout: null,\r\n    _createIndicator: function(type, owner, className, trackerType, trackerIndex, _strict) {\r\n        var that = this;\r\n        var indicator = that._factory.createIndicator({\r\n            renderer: that._renderer,\r\n            translator: that._translator,\r\n            owner: owner,\r\n            tracker: that._tracker,\r\n            className: className\r\n        }, type, _strict);\r\n        if (indicator) {\r\n            indicator.type = type;\r\n            indicator._trackerInfo = {\r\n                type: trackerType,\r\n                index: trackerIndex\r\n            }\r\n        }\r\n        return indicator\r\n    },\r\n    _getApproximateScreenRange: null\r\n});\r\nexports.dxGauge = dxGauge;\r\n\r\nfunction valueGetter(arg) {\r\n    return arg ? arg.value : null\r\n}\r\n\r\nfunction setupValues(that, fieldName, optionItems) {\r\n    var currentValues = that[fieldName];\r\n    var newValues = _isArray(optionItems) ? (0, _utils.map)(optionItems, valueGetter) : [];\r\n    var i = 0;\r\n    var ii = newValues.length;\r\n    var list = [];\r\n    for (; i < ii; ++i) {\r\n        list.push(processValue(newValues[i], currentValues[i]))\r\n    }\r\n    that[fieldName] = list\r\n}\r\n\r\nfunction selectMode(gauge) {\r\n    if (void 0 === gauge.option(OPTION_VALUE) && void 0 === gauge.option(OPTION_SUBVALUES)) {\r\n        if (void 0 !== gauge.option(\"valueIndicators\")) {\r\n            disableDefaultMode(gauge);\r\n            selectHardMode(gauge)\r\n        }\r\n    }\r\n}\r\n\r\nfunction disableDefaultMode(that) {\r\n    that.value = that.subvalues = _common.noop;\r\n    that._setupValue = that._setupSubvalues = that._updateValueIndicator = that._updateSubvalueIndicators = null\r\n}\r\n\r\nfunction selectHardMode(that) {\r\n    that._indicatorValues = [];\r\n    setupValues(that, \"_indicatorValues\", that.option(\"valueIndicators\"));\r\n    that._valueIndicators = [];\r\n    var _applyMostlyTotalChange = that._applyMostlyTotalChange;\r\n    that._applyMostlyTotalChange = function() {\r\n        setupValues(this, \"_indicatorValues\", this.option(\"valueIndicators\"));\r\n        _applyMostlyTotalChange.call(this)\r\n    };\r\n    that._updateActiveElements = updateActiveElements_hardMode;\r\n    that._prepareValueIndicators = prepareValueIndicators_hardMode;\r\n    that._disposeValueIndicators = disposeValueIndicators_hardMode;\r\n    that._cleanValueIndicators = cleanValueIndicators_hardMode;\r\n    that.indicatorValue = indicatorValue_hardMode\r\n}\r\n\r\nfunction updateActiveElements_hardMode() {\r\n    var that = this;\r\n    _each(that._valueIndicators, function(_, valueIndicator) {\r\n        valueIndicator.value(that._indicatorValues[valueIndicator.index], that._noAnimation)\r\n    })\r\n}\r\n\r\nfunction prepareValueIndicators_hardMode() {\r\n    var that = this;\r\n    var valueIndicators = that._valueIndicators || [];\r\n    var userOptions = that.option(\"valueIndicators\");\r\n    var optionList = [];\r\n    var i = 0;\r\n    var ii;\r\n    for (ii = _isArray(userOptions) ? userOptions.length : 0; i < ii; ++i) {\r\n        optionList.push(userOptions[i])\r\n    }\r\n    for (ii = valueIndicators.length; i < ii; ++i) {\r\n        optionList.push(null)\r\n    }\r\n    var newValueIndicators = [];\r\n    _each(optionList, function(i, userSettings) {\r\n        var valueIndicator = valueIndicators[i];\r\n        if (!userSettings) {\r\n            valueIndicator && valueIndicator.dispose();\r\n            return\r\n        }\r\n        var settings = that._prepareIndicatorSettings(userSettings, \"valueIndicatorType\");\r\n        if (valueIndicator && valueIndicator.type !== settings.type) {\r\n            valueIndicator.dispose();\r\n            valueIndicator = null\r\n        }\r\n        if (!valueIndicator) {\r\n            valueIndicator = that._createIndicator(settings.type, that._renderer.root, \"dxg-value-indicator\", \"value-indicator\", i, true)\r\n        }\r\n        if (valueIndicator) {\r\n            valueIndicator.index = i;\r\n            valueIndicator.render(settings);\r\n            newValueIndicators.push(valueIndicator)\r\n        }\r\n    });\r\n    that._valueIndicators = newValueIndicators;\r\n    return that._valueIndicators\r\n}\r\n\r\nfunction disposeValueIndicators_hardMode() {\r\n    _each(this._valueIndicators, function(_, valueIndicator) {\r\n        valueIndicator.dispose()\r\n    });\r\n    this._valueIndicators = null\r\n}\r\n\r\nfunction cleanValueIndicators_hardMode() {\r\n    _each(this._valueIndicators, function(_, valueIndicator) {\r\n        valueIndicator.clean()\r\n    })\r\n}\r\n\r\nfunction indicatorValue_hardMode(index, value) {\r\n    return accessPointerValue(this, this._valueIndicators, this._indicatorValues, index, value)\r\n}\r\n\r\nfunction accessPointerValue(that, pointers, values, index, value) {\r\n    if (void 0 !== value) {\r\n        if (void 0 !== values[index]) {\r\n            values[index] = processValue(value, values[index]);\r\n            pointers[index] && pointers[index].value(values[index])\r\n        }\r\n        return that\r\n    } else {\r\n        return values[index]\r\n    }\r\n}\r\n\r\nfunction ValueIndicatorsSet(parameters) {\r\n    this._parameters = parameters;\r\n    this._indicators = []\r\n}\r\nValueIndicatorsSet.prototype = {\r\n    constructor: ValueIndicatorsSet,\r\n    dispose: function() {\r\n        var that = this;\r\n        _each(that._indicators, function(_, indicator) {\r\n            indicator.dispose()\r\n        });\r\n        that._parameters = that._options = that._indicators = that._colorPalette = that._palette = null;\r\n        return that\r\n    },\r\n    clean: function() {\r\n        var that = this;\r\n        that._sample && that._sample.clean().dispose();\r\n        _each(that._indicators, function(_, indicator) {\r\n            indicator.clean()\r\n        });\r\n        that._sample = that._options = that._palette = null;\r\n        return that\r\n    },\r\n    render: function(options, isRecreate) {\r\n        var that = this;\r\n        that._options = options;\r\n        that._sample = that._parameters.createIndicator(that.type);\r\n        that._sample.render(options);\r\n        that.enabled = that._sample.enabled;\r\n        that._palette = (0, _type.isDefined)(options.palette) ? that._parameters.createPalette(options.palette) : null;\r\n        if (that.enabled) {\r\n            that._generatePalette(that._indicators.length);\r\n            that._indicators = (0, _utils.map)(that._indicators, function(indicator, i) {\r\n                if (isRecreate) {\r\n                    indicator.dispose();\r\n                    indicator = that._parameters.createIndicator(that.type, i)\r\n                }\r\n                indicator.render(that._getIndicatorOptions(i));\r\n                return indicator\r\n            })\r\n        }\r\n        return that\r\n    },\r\n    getOffset: function() {\r\n        return this._sample.getOffset()\r\n    },\r\n    resize: function(layout) {\r\n        var that = this;\r\n        that._layout = layout;\r\n        _each(that._indicators, function(_, indicator) {\r\n            indicator.resize(layout)\r\n        });\r\n        return that\r\n    },\r\n    measure: function(layout) {\r\n        return this._sample.measure(layout)\r\n    },\r\n    _getIndicatorOptions: function(index) {\r\n        var result = this._options;\r\n        if (this._colorPalette) {\r\n            result = _extend({}, result, {\r\n                color: this._colorPalette[index]\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    _generatePalette: function(count) {\r\n        var that = this;\r\n        var colors = null;\r\n        if (that._palette) {\r\n            that._palette.reset();\r\n            colors = that._palette.generateColors(count, {\r\n                repeat: true\r\n            })\r\n        }\r\n        that._colorPalette = colors\r\n    },\r\n    _adjustIndicatorsCount: function(count) {\r\n        var that = this;\r\n        var indicators = that._indicators;\r\n        var i;\r\n        var ii;\r\n        var indicator;\r\n        var indicatorsLen = indicators.length;\r\n        if (indicatorsLen > count) {\r\n            for (i = count, ii = indicatorsLen; i < ii; ++i) {\r\n                indicators[i].clean().dispose()\r\n            }\r\n            that._indicators = indicators.slice(0, count);\r\n            that._generatePalette(indicators.length)\r\n        } else {\r\n            if (indicatorsLen < count) {\r\n                that._generatePalette(count);\r\n                for (i = indicatorsLen, ii = count; i < ii; ++i) {\r\n                    indicator = that._parameters.createIndicator(that.type, i);\r\n                    indicator.render(that._getIndicatorOptions(i)).resize(that._layout);\r\n                    indicators.push(indicator)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    values: function(arg, _noAnimation) {\r\n        var that = this;\r\n        if (!that.enabled) {\r\n            return\r\n        }\r\n        if (void 0 !== arg) {\r\n            if (!_isArray(arg)) {\r\n                arg = _isFinite(arg) ? [Number(arg)] : null\r\n            }\r\n            if (arg) {\r\n                that._adjustIndicatorsCount(arg.length);\r\n                _each(that._indicators, function(i, indicator) {\r\n                    indicator.value(arg[i], _noAnimation)\r\n                })\r\n            }\r\n            return that\r\n        }\r\n        return (0, _utils.map)(that._indicators, function(indicator) {\r\n            return indicator.value()\r\n        })\r\n    }\r\n};\r\n\r\nfunction createIndicatorCreator(indicators) {\r\n    return function(parameters, type, _strict) {\r\n        var indicatorType = indicators[(0, _utils.normalizeEnum)(type)] || !_strict && indicators._default;\r\n        return indicatorType ? new indicatorType(parameters) : null\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (viz/gauges/linear_indicators.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.textcloud = exports.trianglemarker = exports.circle = exports.rhombus = exports.rectangle = exports.rangebar = exports._default = void 0;\r\nvar _base_indicators = require(\"./base_indicators\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _Number = Number;\r\nvar SimpleIndicator = _base_indicators.BaseIndicator.inherit({\r\n    _move: function() {\r\n        var that = this;\r\n        var delta = that._actualPosition - that._zeroPosition;\r\n        that._rootElement.move(that.vertical ? 0 : delta, that.vertical ? delta : 0);\r\n        that._trackerElement && that._trackerElement.move(that.vertical ? 0 : delta, that.vertical ? delta : 0)\r\n    },\r\n    _isEnabled: function() {\r\n        this.vertical = this._options.vertical;\r\n        return this._options.length > 0 && this._options.width > 0\r\n    },\r\n    _isVisible: function() {\r\n        return true\r\n    },\r\n    _getTrackerSettings: function() {\r\n        var options = this._options;\r\n        var x1;\r\n        var x2;\r\n        var y1;\r\n        var y2;\r\n        var width = options.width / 2;\r\n        var length = options.length / 2;\r\n        var p = this._zeroPosition;\r\n        width > 10 || (width = 10);\r\n        length > 10 || (length = 10);\r\n        if (this.vertical) {\r\n            x1 = options.x - length;\r\n            x2 = options.x + length;\r\n            y1 = p + width;\r\n            y2 = p - width\r\n        } else {\r\n            x1 = p - width;\r\n            x2 = p + width;\r\n            y1 = options.y + length;\r\n            y2 = options.y - length\r\n        }\r\n        return {\r\n            points: [x1, y1, x1, y2, x2, y2, x2, y1]\r\n        }\r\n    },\r\n    _render: function() {\r\n        var that = this;\r\n        that._zeroPosition = that._translator.getCodomainStart()\r\n    },\r\n    _clear: function() {\r\n        delete this._element\r\n    },\r\n    measure: function(layout) {\r\n        var p = this.vertical ? layout.x : layout.y;\r\n        return {\r\n            min: p - this._options.length / 2,\r\n            max: p + this._options.length / 2\r\n        }\r\n    },\r\n    getTooltipParameters: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var p = that._actualPosition;\r\n        var parameters = {\r\n            x: p,\r\n            y: p,\r\n            value: that._currentValue,\r\n            color: options.color,\r\n            offset: options.width / 2\r\n        };\r\n        that.vertical ? parameters.x = options.x : parameters.y = options.y;\r\n        return parameters\r\n    }\r\n});\r\nvar rectangle = SimpleIndicator.inherit({\r\n    _render: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var x1;\r\n        var x2;\r\n        var y1;\r\n        var y2;\r\n        that.callBase();\r\n        var p = that._zeroPosition;\r\n        if (that.vertical) {\r\n            x1 = options.x - options.length / 2;\r\n            x2 = options.x + options.length / 2;\r\n            y1 = p + options.width / 2;\r\n            y2 = p - options.width / 2\r\n        } else {\r\n            x1 = p - options.width / 2;\r\n            x2 = p + options.width / 2;\r\n            y1 = options.y + options.length / 2;\r\n            y2 = options.y - options.length / 2\r\n        }\r\n        that._element = that._element || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._element.attr({\r\n            points: [x1, y1, x1, y2, x2, y2, x2, y1]\r\n        })\r\n    }\r\n});\r\nexports.rectangle = rectangle;\r\nvar rhombus = SimpleIndicator.inherit({\r\n    _render: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var x;\r\n        var y;\r\n        var dx;\r\n        var dy;\r\n        that.callBase();\r\n        if (that.vertical) {\r\n            x = options.x;\r\n            y = that._zeroPosition;\r\n            dx = options.length / 2 || 0;\r\n            dy = options.width / 2 || 0\r\n        } else {\r\n            x = that._zeroPosition;\r\n            y = options.y;\r\n            dx = options.width / 2 || 0;\r\n            dy = options.length / 2 || 0\r\n        }\r\n        that._element = that._element || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._element.attr({\r\n            points: [x - dx, y, x, y - dy, x + dx, y, x, y + dy]\r\n        })\r\n    }\r\n});\r\nexports.rhombus = rhombus;\r\nvar circle = SimpleIndicator.inherit({\r\n    _render: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var x;\r\n        var y;\r\n        that.callBase();\r\n        if (that.vertical) {\r\n            x = options.x;\r\n            y = that._zeroPosition\r\n        } else {\r\n            x = that._zeroPosition;\r\n            y = options.y\r\n        }\r\n        var r = options.length / 2 || 0;\r\n        that._element = that._element || that._renderer.circle().append(that._rootElement);\r\n        that._element.attr({\r\n            cx: x,\r\n            cy: y,\r\n            r: r\r\n        })\r\n    }\r\n});\r\nexports.circle = circle;\r\nvar triangleMarker = SimpleIndicator.inherit({\r\n    _isEnabled: function() {\r\n        var that = this;\r\n        that.vertical = that._options.vertical;\r\n        that._inverted = that.vertical ? \"right\" === (0, _utils.normalizeEnum)(that._options.horizontalOrientation) : \"bottom\" === (0, _utils.normalizeEnum)(that._options.verticalOrientation);\r\n        return that._options.length > 0 && that._options.width > 0\r\n    },\r\n    _isVisible: function() {\r\n        return true\r\n    },\r\n    _render: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var x1;\r\n        var x2;\r\n        var y1;\r\n        var y2;\r\n        var settings = {\r\n            stroke: \"none\",\r\n            \"stroke-width\": 0,\r\n            \"stroke-linecap\": \"square\"\r\n        };\r\n        that.callBase();\r\n        if (that.vertical) {\r\n            x1 = options.x;\r\n            y1 = that._zeroPosition;\r\n            x2 = x1 + _Number(that._inverted ? options.length : -options.length);\r\n            settings.points = [x1, y1, x2, y1 - options.width / 2, x2, y1 + options.width / 2]\r\n        } else {\r\n            y1 = options.y;\r\n            x1 = that._zeroPosition;\r\n            y2 = y1 + _Number(that._inverted ? options.length : -options.length);\r\n            settings.points = [x1, y1, x1 - options.width / 2, y2, x1 + options.width / 2, y2]\r\n        }\r\n        if (options.space > 0) {\r\n            settings[\"stroke-width\"] = Math.min(options.space, options.width / 4) || 0;\r\n            settings.stroke = settings[\"stroke-width\"] > 0 ? options.containerBackgroundColor || \"none\" : \"none\"\r\n        }\r\n        that._element = that._element || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._element.attr(settings).sharp()\r\n    },\r\n    _getTrackerSettings: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var width = options.width / 2;\r\n        var length = _Number(options.length);\r\n        var x1;\r\n        var x2;\r\n        var y1;\r\n        var y2;\r\n        var result;\r\n        width > 10 || (width = 10);\r\n        length > 20 || (length = 20);\r\n        if (that.vertical) {\r\n            x1 = x2 = options.x;\r\n            x2 = x1 + (that._inverted ? length : -length);\r\n            y1 = that._zeroPosition + width;\r\n            y2 = that._zeroPosition - width;\r\n            result = [x1, y1, x2, y1, x2, y2, x1, y2]\r\n        } else {\r\n            y1 = options.y;\r\n            y2 = y1 + (that._inverted ? length : -length);\r\n            x1 = that._zeroPosition - width;\r\n            x2 = that._zeroPosition + width;\r\n            result = [x1, y1, x1, y2, x2, y2, x2, y1]\r\n        }\r\n        return {\r\n            points: result\r\n        }\r\n    },\r\n    measure: function(layout) {\r\n        var that = this;\r\n        var length = _Number(that._options.length);\r\n        var minBound;\r\n        var maxBound;\r\n        if (that.vertical) {\r\n            minBound = maxBound = layout.x;\r\n            if (that._inverted) {\r\n                maxBound = minBound + length\r\n            } else {\r\n                minBound = maxBound - length\r\n            }\r\n        } else {\r\n            minBound = maxBound = layout.y;\r\n            if (that._inverted) {\r\n                maxBound = minBound + length\r\n            } else {\r\n                minBound = maxBound - length\r\n            }\r\n        }\r\n        return {\r\n            min: minBound,\r\n            max: maxBound,\r\n            indent: that._options.width / 2\r\n        }\r\n    },\r\n    getTooltipParameters: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var s = (that._inverted ? options.length : -options.length) / 2;\r\n        var parameters = that.callBase();\r\n        that.vertical ? parameters.x += s : parameters.y += s;\r\n        parameters.offset = options.length / 2;\r\n        return parameters\r\n    }\r\n});\r\nexports.trianglemarker = triangleMarker;\r\nvar textCloud = _base_indicators.BaseTextCloudMarker.inherit({\r\n    _isEnabled: function() {\r\n        var that = this;\r\n        that.vertical = that._options.vertical;\r\n        that._inverted = that.vertical ? \"right\" === (0, _utils.normalizeEnum)(that._options.horizontalOrientation) : \"bottom\" === (0, _utils.normalizeEnum)(that._options.verticalOrientation);\r\n        return true\r\n    },\r\n    _isVisible: function() {\r\n        return true\r\n    },\r\n    _getTextCloudOptions: function() {\r\n        var that = this;\r\n        var x = that._actualPosition;\r\n        var y = that._actualPosition;\r\n        var type;\r\n        if (that.vertical) {\r\n            x = that._options.x;\r\n            type = that._inverted ? \"top-left\" : \"top-right\"\r\n        } else {\r\n            y = that._options.y;\r\n            type = that._inverted ? \"right-top\" : \"right-bottom\"\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y,\r\n            type: type\r\n        }\r\n    },\r\n    measure: function(layout) {\r\n        var that = this;\r\n        var minBound;\r\n        var maxBound;\r\n        var arrowLength = _Number(that._options.arrowLength) || 0;\r\n        var indent;\r\n        that._measureText();\r\n        if (that.vertical) {\r\n            indent = that._textFullHeight;\r\n            if (that._inverted) {\r\n                minBound = layout.x;\r\n                maxBound = layout.x + arrowLength + that._textFullWidth\r\n            } else {\r\n                minBound = layout.x - arrowLength - that._textFullWidth;\r\n                maxBound = layout.x\r\n            }\r\n        } else {\r\n            indent = that._textFullWidth;\r\n            if (that._inverted) {\r\n                minBound = layout.y;\r\n                maxBound = layout.y + arrowLength + that._textFullHeight\r\n            } else {\r\n                minBound = layout.y - arrowLength - that._textFullHeight;\r\n                maxBound = layout.y\r\n            }\r\n        }\r\n        return {\r\n            min: minBound,\r\n            max: maxBound,\r\n            indent: indent\r\n        }\r\n    }\r\n});\r\nexports.textcloud = textCloud;\r\nvar rangeBar = _base_indicators.BaseRangeBar.inherit({\r\n    _isEnabled: function() {\r\n        var that = this;\r\n        that.vertical = that._options.vertical;\r\n        that._inverted = that.vertical ? \"right\" === (0, _utils.normalizeEnum)(that._options.horizontalOrientation) : \"bottom\" === (0, _utils.normalizeEnum)(that._options.verticalOrientation);\r\n        return that._options.size > 0\r\n    },\r\n    _isVisible: function() {\r\n        return true\r\n    },\r\n    _createBarItem: function() {\r\n        return this._renderer.path([], \"area\").append(this._rootElement)\r\n    },\r\n    _createTracker: function() {\r\n        return this._renderer.path([], \"area\")\r\n    },\r\n    _setBarSides: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var size = _Number(options.size);\r\n        var minSide;\r\n        var maxSide;\r\n        if (that.vertical) {\r\n            if (that._inverted) {\r\n                minSide = options.x;\r\n                maxSide = options.x + size\r\n            } else {\r\n                minSide = options.x - size;\r\n                maxSide = options.x\r\n            }\r\n        } else {\r\n            if (that._inverted) {\r\n                minSide = options.y;\r\n                maxSide = options.y + size\r\n            } else {\r\n                minSide = options.y - size;\r\n                maxSide = options.y\r\n            }\r\n        }\r\n        that._minSide = minSide;\r\n        that._maxSide = maxSide;\r\n        that._minBound = minSide;\r\n        that._maxBound = maxSide\r\n    },\r\n    _getSpace: function() {\r\n        var options = this._options;\r\n        return options.space > 0 ? _Number(options.space) : 0\r\n    },\r\n    _isTextVisible: function() {\r\n        var textOptions = this._options.text || {};\r\n        return textOptions.indent > 0 || textOptions.indent < 0\r\n    },\r\n    _getTextAlign: function() {\r\n        return this.vertical ? this._options.text.indent > 0 ? \"left\" : \"right\" : \"center\"\r\n    },\r\n    _setTextItemsSides: function() {\r\n        var that = this;\r\n        var indent = _Number(that._options.text.indent);\r\n        if (indent > 0) {\r\n            that._lineStart = that._maxSide;\r\n            that._lineEnd = that._maxSide + indent;\r\n            that._textPosition = that._lineEnd + (that.vertical ? 2 : that._textHeight / 2);\r\n            that._maxBound = that._textPosition + (that.vertical ? that._textWidth : that._textHeight / 2)\r\n        } else {\r\n            if (indent < 0) {\r\n                that._lineStart = that._minSide;\r\n                that._lineEnd = that._minSide + indent;\r\n                that._textPosition = that._lineEnd - (that.vertical ? 2 : that._textHeight / 2);\r\n                that._minBound = that._textPosition - (that.vertical ? that._textWidth : that._textHeight / 2)\r\n            }\r\n        }\r\n    },\r\n    _getPositions: function() {\r\n        var that = this;\r\n        var startPosition = that._startPosition;\r\n        var endPosition = that._endPosition;\r\n        var space = that._space;\r\n        var basePosition = that._basePosition;\r\n        var actualPosition = that._actualPosition;\r\n        var mainPosition1;\r\n        var mainPosition2;\r\n        var backPosition1;\r\n        var backPosition2;\r\n        if (startPosition < endPosition) {\r\n            if (basePosition < actualPosition) {\r\n                mainPosition1 = basePosition;\r\n                mainPosition2 = actualPosition\r\n            } else {\r\n                mainPosition1 = actualPosition;\r\n                mainPosition2 = basePosition\r\n            }\r\n            backPosition1 = mainPosition1 - space;\r\n            backPosition2 = mainPosition2 + space\r\n        } else {\r\n            if (basePosition > actualPosition) {\r\n                mainPosition1 = basePosition;\r\n                mainPosition2 = actualPosition\r\n            } else {\r\n                mainPosition1 = actualPosition;\r\n                mainPosition2 = basePosition\r\n            }\r\n            backPosition1 = mainPosition1 + space;\r\n            backPosition2 = mainPosition2 - space\r\n        }\r\n        return {\r\n            start: startPosition,\r\n            end: endPosition,\r\n            main1: mainPosition1,\r\n            main2: mainPosition2,\r\n            back1: backPosition1,\r\n            back2: backPosition2\r\n        }\r\n    },\r\n    _buildItemSettings: function(from, to) {\r\n        var that = this;\r\n        var side1 = that._minSide;\r\n        var side2 = that._maxSide;\r\n        var points = that.vertical ? [side1, from, side1, to, side2, to, side2, from] : [from, side1, from, side2, to, side2, to, side1];\r\n        return {\r\n            points: points\r\n        }\r\n    },\r\n    _updateTextPosition: function() {\r\n        var that = this;\r\n        that._text.attr(that.vertical ? {\r\n            x: that._textPosition,\r\n            y: that._actualPosition + that._textVerticalOffset\r\n        } : {\r\n            x: that._actualPosition,\r\n            y: that._textPosition + that._textVerticalOffset\r\n        })\r\n    },\r\n    _updateLinePosition: function() {\r\n        var that = this;\r\n        var actualPosition = that._actualPosition;\r\n        var side1;\r\n        var side2;\r\n        var points;\r\n        if (that.vertical) {\r\n            if (that._basePosition >= actualPosition) {\r\n                side1 = actualPosition;\r\n                side2 = actualPosition + 2\r\n            } else {\r\n                side1 = actualPosition - 2;\r\n                side2 = actualPosition\r\n            }\r\n            points = [that._lineStart, side1, that._lineStart, side2, that._lineEnd, side2, that._lineEnd, side1]\r\n        } else {\r\n            if (that._basePosition <= actualPosition) {\r\n                side1 = actualPosition - 2;\r\n                side2 = actualPosition\r\n            } else {\r\n                side1 = actualPosition;\r\n                side2 = actualPosition + 2\r\n            }\r\n            points = [side1, that._lineStart, side1, that._lineEnd, side2, that._lineEnd, side2, that._lineStart]\r\n        }\r\n        that._line.attr({\r\n            points: points\r\n        }).sharp()\r\n    },\r\n    _getTooltipPosition: function() {\r\n        var that = this;\r\n        var crossCenter = (that._minSide + that._maxSide) / 2;\r\n        var alongCenter = (that._basePosition + that._actualPosition) / 2;\r\n        return that.vertical ? {\r\n            x: crossCenter,\r\n            y: alongCenter\r\n        } : {\r\n            x: alongCenter,\r\n            y: crossCenter\r\n        }\r\n    },\r\n    measure: function(layout) {\r\n        var that = this;\r\n        var size = _Number(that._options.size);\r\n        var textIndent = _Number(that._options.text.indent);\r\n        var minBound;\r\n        var maxBound;\r\n        var indent;\r\n        that._measureText();\r\n        if (that.vertical) {\r\n            minBound = maxBound = layout.x;\r\n            if (that._inverted) {\r\n                maxBound += size\r\n            } else {\r\n                minBound -= size\r\n            }\r\n            if (that._hasText) {\r\n                indent = that._textHeight / 2;\r\n                if (textIndent > 0) {\r\n                    maxBound += textIndent + that._textWidth\r\n                }\r\n                if (textIndent < 0) {\r\n                    minBound += textIndent - that._textWidth\r\n                }\r\n            }\r\n        } else {\r\n            minBound = maxBound = layout.y;\r\n            if (that._inverted) {\r\n                maxBound += size\r\n            } else {\r\n                minBound -= size\r\n            }\r\n            if (that._hasText) {\r\n                indent = that._textWidth / 2;\r\n                if (textIndent > 0) {\r\n                    maxBound += textIndent + that._textHeight\r\n                }\r\n                if (textIndent < 0) {\r\n                    minBound += textIndent - that._textHeight\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            min: minBound,\r\n            max: maxBound,\r\n            indent: indent\r\n        }\r\n    }\r\n});\r\nexports.rangebar = exports._default = rangeBar;\r\n","/**\r\n * DevExtreme (ui/list/item.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _item = _interopRequireDefault(require(\"../collection/item\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar LIST_ITEM_BADGE_CONTAINER_CLASS = \"dx-list-item-badge-container\";\r\nvar LIST_ITEM_BADGE_CLASS = \"dx-list-item-badge\";\r\nvar BADGE_CLASS = \"dx-badge\";\r\nvar LIST_ITEM_CHEVRON_CONTAINER_CLASS = \"dx-list-item-chevron-container\";\r\nvar LIST_ITEM_CHEVRON_CLASS = \"dx-list-item-chevron\";\r\nvar ListItem = _item.default.inherit({\r\n    _renderWatchers: function() {\r\n        this.callBase();\r\n        this._startWatcher(\"badge\", this._renderBadge.bind(this));\r\n        this._startWatcher(\"showChevron\", this._renderShowChevron.bind(this))\r\n    },\r\n    _renderBadge: function(badge) {\r\n        this._$element.children(\".\" + LIST_ITEM_BADGE_CONTAINER_CLASS).remove();\r\n        if (!badge) {\r\n            return\r\n        }\r\n        var $badge = (0, _renderer.default)(\"<div>\").addClass(LIST_ITEM_BADGE_CONTAINER_CLASS).append((0, _renderer.default)(\"<div>\").addClass(LIST_ITEM_BADGE_CLASS).addClass(BADGE_CLASS).text(badge));\r\n        var $chevron = this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).first();\r\n        $chevron.length > 0 ? $badge.insertBefore($chevron) : $badge.appendTo(this._$element)\r\n    },\r\n    _renderShowChevron: function(showChevron) {\r\n        this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).remove();\r\n        if (!showChevron) {\r\n            return\r\n        }\r\n        var $chevronContainer = (0, _renderer.default)(\"<div>\").addClass(LIST_ITEM_CHEVRON_CONTAINER_CLASS);\r\n        var $chevron = (0, _renderer.default)(\"<div>\").addClass(LIST_ITEM_CHEVRON_CLASS);\r\n        $chevronContainer.append($chevron).appendTo(this._$element)\r\n    }\r\n});\r\nvar _default = ListItem;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.accessibility.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.registerKeyboardAction = void 0;\r\nvar accessibility = _interopRequireWildcard(require(\"../../ui/shared/accessibility\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\nvar registerKeyboardAction = function(viewName, instance, $element, selector, action) {\r\n    var keyboardController = instance.getController(\"keyboardNavigation\");\r\n    if (instance.option(\"useLegacyKeyboardNavigation\") || keyboardController && !keyboardController.isKeyboardEnabled()) {\r\n        return\r\n    }\r\n    var executeKeyDown = function(args) {\r\n        instance.executeAction(\"onKeyDown\", args)\r\n    };\r\n    instance.createAction(\"onKeyDown\");\r\n    accessibility.registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown)\r\n};\r\nexports.registerKeyboardAction = registerKeyboardAction;\r\n","/**\r\n * DevExtreme (events/core/keyboard_processor.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COMPOSITION_START_EVENT = \"compositionstart\";\r\nvar COMPOSITION_END_EVENT = \"compositionend\";\r\nvar KEYDOWN_EVENT = \"keydown\";\r\nvar NAMESPACE = \"KeyboardProcessor\";\r\nvar KeyboardProcessor = _class.default.inherit({\r\n    _keydown: (0, _index.addNamespace)(KEYDOWN_EVENT, NAMESPACE),\r\n    _compositionStart: (0, _index.addNamespace)(COMPOSITION_START_EVENT, NAMESPACE),\r\n    _compositionEnd: (0, _index.addNamespace)(COMPOSITION_END_EVENT, NAMESPACE),\r\n    ctor: function(options) {\r\n        var _this = this;\r\n        options = options || {};\r\n        if (options.element) {\r\n            this._element = (0, _renderer.default)(options.element)\r\n        }\r\n        if (options.focusTarget) {\r\n            this._focusTarget = options.focusTarget\r\n        }\r\n        this._handler = options.handler;\r\n        if (this._element) {\r\n            this._processFunction = function(e) {\r\n                var isNotFocusTarget = _this._focusTarget && _this._focusTarget !== e.target && (0, _array.inArray)(e.target, _this._focusTarget) < 0;\r\n                var shouldSkipProcessing = _this._isComposingJustFinished && 229 === e.which || _this._isComposing || isNotFocusTarget;\r\n                _this._isComposingJustFinished = false;\r\n                if (!shouldSkipProcessing) {\r\n                    _this.process(e)\r\n                }\r\n            };\r\n            this._toggleProcessingWithContext = this.toggleProcessing.bind(this);\r\n            _events_engine.default.on(this._element, this._keydown, this._processFunction);\r\n            _events_engine.default.on(this._element, this._compositionStart, this._toggleProcessingWithContext);\r\n            _events_engine.default.on(this._element, this._compositionEnd, this._toggleProcessingWithContext)\r\n        }\r\n    },\r\n    dispose: function() {\r\n        if (this._element) {\r\n            _events_engine.default.off(this._element, this._keydown, this._processFunction);\r\n            _events_engine.default.off(this._element, this._compositionStart, this._toggleProcessingWithContext);\r\n            _events_engine.default.off(this._element, this._compositionEnd, this._toggleProcessingWithContext)\r\n        }\r\n        this._element = void 0;\r\n        this._handler = void 0\r\n    },\r\n    process: function(e) {\r\n        this._handler({\r\n            keyName: (0, _index.normalizeKeyName)(e),\r\n            key: e.key,\r\n            code: e.code,\r\n            ctrl: e.ctrlKey,\r\n            location: e.location,\r\n            metaKey: e.metaKey,\r\n            shift: e.shiftKey,\r\n            alt: e.altKey,\r\n            which: e.which,\r\n            originalEvent: e\r\n        })\r\n    },\r\n    toggleProcessing: function(_ref) {\r\n        var type = _ref.type;\r\n        this._isComposing = type === COMPOSITION_START_EVENT;\r\n        this._isComposingJustFinished = !this._isComposing\r\n    }\r\n});\r\nvar _default = KeyboardProcessor;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/nav_bar/item.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _item = _interopRequireDefault(require(\"../tabs/item\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TABS_ITEM_BADGE_CLASS = \"dx-tabs-item-badge\";\r\nvar NAVBAR_ITEM_BADGE_CLASS = \"dx-navbar-item-badge\";\r\nvar NavBarItem = _item.default.inherit({\r\n    _renderBadge: function(badge) {\r\n        this.callBase(badge);\r\n        this._$element.children(\".\" + TABS_ITEM_BADGE_CLASS).removeClass(TABS_ITEM_BADGE_CLASS).addClass(NAVBAR_ITEM_BADGE_CLASS)\r\n    }\r\n});\r\nvar _default = NavBarItem;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.events.emitter.gesture.scroll.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _emitter = _interopRequireDefault(require(\"../../events/gesture/emitter.gesture\"));\r\nvar _emitter_registrator = _interopRequireDefault(require(\"../../events/core/emitter_registrator\"));\r\nvar _frame = require(\"../../animation/frame\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _version = require(\"../../core/utils/version\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar realDevice = _devices.default.real();\r\nvar SCROLL_INIT_EVENT = \"dxscrollinit\";\r\nvar SCROLL_START_EVENT = \"dxscrollstart\";\r\nvar SCROLL_MOVE_EVENT = \"dxscroll\";\r\nvar SCROLL_END_EVENT = \"dxscrollend\";\r\nvar SCROLL_STOP_EVENT = \"dxscrollstop\";\r\nvar SCROLL_CANCEL_EVENT = \"dxscrollcancel\";\r\nvar Locker = _class.default.inherit(function() {\r\n    var NAMESPACED_SCROLL_EVENT = (0, _index.addNamespace)(\"scroll\", \"dxScrollEmitter\");\r\n    return {\r\n        ctor: function(element) {\r\n            this._element = element;\r\n            this._locked = false;\r\n            var that = this;\r\n            this._proxiedScroll = function(e) {\r\n                that._scroll(e)\r\n            };\r\n            _events_engine.default.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n        },\r\n        _scroll: abstract,\r\n        check: function(e, callback) {\r\n            if (this._locked) {\r\n                callback()\r\n            }\r\n        },\r\n        dispose: function() {\r\n            _events_engine.default.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n        }\r\n    }\r\n}());\r\nvar TimeoutLocker = Locker.inherit(function() {\r\n    return {\r\n        ctor: function(element, timeout) {\r\n            this.callBase(element);\r\n            this._timeout = timeout\r\n        },\r\n        _scroll: function() {\r\n            this._prepare();\r\n            this._forget()\r\n        },\r\n        _prepare: function() {\r\n            if (this._timer) {\r\n                this._clearTimer()\r\n            }\r\n            this._locked = true\r\n        },\r\n        _clearTimer: function() {\r\n            clearTimeout(this._timer);\r\n            this._locked = false;\r\n            this._timer = null\r\n        },\r\n        _forget: function() {\r\n            var that = this;\r\n            this._timer = setTimeout(function() {\r\n                that._clearTimer()\r\n            }, this._timeout)\r\n        },\r\n        dispose: function() {\r\n            this.callBase();\r\n            this._clearTimer()\r\n        }\r\n    }\r\n}());\r\nvar WheelLocker = TimeoutLocker.inherit(function() {\r\n    var WHEEL_UNLOCK_TIMEOUT = 400;\r\n    return {\r\n        ctor: function(element) {\r\n            this.callBase(element, WHEEL_UNLOCK_TIMEOUT);\r\n            this._lastWheelDirection = null\r\n        },\r\n        check: function(e, callback) {\r\n            this._checkDirectionChanged(e);\r\n            this.callBase(e, callback)\r\n        },\r\n        _checkDirectionChanged: function(e) {\r\n            if (!(0, _index.isDxMouseWheelEvent)(e)) {\r\n                this._lastWheelDirection = null;\r\n                return\r\n            }\r\n            var direction = e.shiftKey || false;\r\n            var directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection;\r\n            this._lastWheelDirection = direction;\r\n            this._locked = this._locked && !directionChange\r\n        }\r\n    }\r\n}());\r\nvar PointerLocker = TimeoutLocker.inherit(function() {\r\n    var POINTER_UNLOCK_TIMEOUT = 400;\r\n    return {\r\n        ctor: function(element) {\r\n            this.callBase(element, POINTER_UNLOCK_TIMEOUT)\r\n        }\r\n    }\r\n}());\r\n! function() {\r\n    var ios8_greater = realDevice.ios && (0, _version.compare)(realDevice.version, [8]) >= 0;\r\n    var android5_greater = realDevice.android && (0, _version.compare)(realDevice.version, [5]) >= 0;\r\n    if (!(ios8_greater || android5_greater)) {\r\n        return\r\n    }\r\n    PointerLocker = Locker.inherit(function() {\r\n        return {\r\n            _scroll: function() {\r\n                this._locked = true;\r\n                var that = this;\r\n                (0, _frame.cancelAnimationFrame)(this._scrollFrame);\r\n                this._scrollFrame = (0, _frame.requestAnimationFrame)(function() {\r\n                    that._locked = false\r\n                })\r\n            },\r\n            check: function(e, callback) {\r\n                (0, _frame.cancelAnimationFrame)(this._scrollFrame);\r\n                (0, _frame.cancelAnimationFrame)(this._checkFrame);\r\n                var that = this;\r\n                var callBase = this.callBase;\r\n                this._checkFrame = (0, _frame.requestAnimationFrame)(function() {\r\n                    callBase.call(that, e, callback);\r\n                    that._locked = false\r\n                })\r\n            },\r\n            dispose: function() {\r\n                this.callBase();\r\n                (0, _frame.cancelAnimationFrame)(this._scrollFrame);\r\n                (0, _frame.cancelAnimationFrame)(this._checkFrame)\r\n            }\r\n        }\r\n    }())\r\n}();\r\nvar ScrollEmitter = _emitter.default.inherit(function() {\r\n    var INERTIA_TIMEOUT = 100;\r\n    var VELOCITY_CALC_TIMEOUT = 200;\r\n    var FRAME_DURATION = Math.round(1e3 / 60);\r\n    return {\r\n        ctor: function(element) {\r\n            this.callBase.apply(this, arguments);\r\n            this.direction = \"both\";\r\n            this._pointerLocker = new PointerLocker(element);\r\n            this._wheelLocker = new WheelLocker(element)\r\n        },\r\n        validate: function() {\r\n            return true\r\n        },\r\n        configure: function(data) {\r\n            if (data.scrollTarget) {\r\n                this._pointerLocker.dispose();\r\n                this._wheelLocker.dispose();\r\n                this._pointerLocker = new PointerLocker(data.scrollTarget);\r\n                this._wheelLocker = new WheelLocker(data.scrollTarget)\r\n            }\r\n            this.callBase(data)\r\n        },\r\n        _init: function(e) {\r\n            this._wheelLocker.check(e, function() {\r\n                if ((0, _index.isDxMouseWheelEvent)(e)) {\r\n                    this._accept(e)\r\n                }\r\n            }.bind(this));\r\n            this._pointerLocker.check(e, function() {\r\n                var skipCheck = this.isNative && (0, _index.isMouseEvent)(e);\r\n                if (!(0, _index.isDxMouseWheelEvent)(e) && !skipCheck) {\r\n                    this._accept(e)\r\n                }\r\n            }.bind(this));\r\n            this._fireEvent(SCROLL_INIT_EVENT, e);\r\n            this._prevEventData = (0, _index.eventData)(e)\r\n        },\r\n        move: function(e) {\r\n            this.callBase.apply(this, arguments);\r\n            e.isScrollingEvent = this.isNative || e.isScrollingEvent\r\n        },\r\n        _start: function(e) {\r\n            this._savedEventData = (0, _index.eventData)(e);\r\n            this._fireEvent(SCROLL_START_EVENT, e);\r\n            this._prevEventData = (0, _index.eventData)(e)\r\n        },\r\n        _move: function(e) {\r\n            var currentEventData = (0, _index.eventData)(e);\r\n            this._fireEvent(SCROLL_MOVE_EVENT, e, {\r\n                delta: (0, _index.eventDelta)(this._prevEventData, currentEventData)\r\n            });\r\n            var delta = (0, _index.eventDelta)(this._savedEventData, currentEventData);\r\n            if (delta.time > VELOCITY_CALC_TIMEOUT) {\r\n                this._savedEventData = this._prevEventData\r\n            }\r\n            this._prevEventData = (0, _index.eventData)(e)\r\n        },\r\n        _end: function(e) {\r\n            var endEventDelta = (0, _index.eventDelta)(this._prevEventData, (0, _index.eventData)(e));\r\n            var velocity = {\r\n                x: 0,\r\n                y: 0\r\n            };\r\n            if (!(0, _index.isDxMouseWheelEvent)(e) && endEventDelta.time < INERTIA_TIMEOUT) {\r\n                var delta = (0, _index.eventDelta)(this._savedEventData, this._prevEventData);\r\n                var velocityMultiplier = FRAME_DURATION / delta.time;\r\n                velocity = {\r\n                    x: delta.x * velocityMultiplier,\r\n                    y: delta.y * velocityMultiplier\r\n                }\r\n            }\r\n            this._fireEvent(SCROLL_END_EVENT, e, {\r\n                velocity: velocity\r\n            })\r\n        },\r\n        _stop: function(e) {\r\n            this._fireEvent(SCROLL_STOP_EVENT, e)\r\n        },\r\n        cancel: function(e) {\r\n            this.callBase.apply(this, arguments);\r\n            this._fireEvent(SCROLL_CANCEL_EVENT, e)\r\n        },\r\n        dispose: function() {\r\n            this.callBase.apply(this, arguments);\r\n            this._pointerLocker.dispose();\r\n            this._wheelLocker.dispose()\r\n        },\r\n        _clearSelection: function() {\r\n            if (this.isNative) {\r\n                return\r\n            }\r\n            return this.callBase.apply(this, arguments)\r\n        },\r\n        _toggleGestureCover: function() {\r\n            if (this.isNative) {\r\n                return\r\n            }\r\n            return this.callBase.apply(this, arguments)\r\n        }\r\n    }\r\n}());\r\n(0, _emitter_registrator.default)({\r\n    emitter: ScrollEmitter,\r\n    events: [SCROLL_INIT_EVENT, SCROLL_START_EVENT, SCROLL_MOVE_EVENT, SCROLL_END_EVENT, SCROLL_STOP_EVENT, SCROLL_CANCEL_EVENT]\r\n});\r\nvar _default = {\r\n    init: SCROLL_INIT_EVENT,\r\n    start: SCROLL_START_EVENT,\r\n    move: SCROLL_MOVE_EVENT,\r\n    end: SCROLL_END_EVENT,\r\n    stop: SCROLL_STOP_EVENT,\r\n    cancel: SCROLL_CANCEL_EVENT\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/selection/selection.strategy.deferred.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _selection = _interopRequireDefault(require(\"./selection.strategy\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _selection.default.inherit({\r\n    getSelectedItems: function() {\r\n        return this._loadFilteredData(this.options.selectionFilter)\r\n    },\r\n    getSelectedItemKeys: function() {\r\n        var d = new _deferred.Deferred;\r\n        var that = this;\r\n        var key = this.options.key();\r\n        var select = (0, _type.isString)(key) ? [key] : key;\r\n        this._loadFilteredData(this.options.selectionFilter, null, select).done(function(items) {\r\n            var keys = items.map(function(item) {\r\n                return that.options.keyOf(item)\r\n            });\r\n            d.resolve(keys)\r\n        }).fail(d.reject);\r\n        return d.promise()\r\n    },\r\n    selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n        if (isSelectAll) {\r\n            var filter = this.options.filter();\r\n            var needResetSelectionFilter = !filter || JSON.stringify(filter) === JSON.stringify(this.options.selectionFilter) && isDeselect;\r\n            if (needResetSelectionFilter) {\r\n                this._setOption(\"selectionFilter\", isDeselect ? [] : null)\r\n            } else {\r\n                this._addSelectionFilter(isDeselect, filter, isSelectAll)\r\n            }\r\n        } else {\r\n            if (!preserve) {\r\n                this._setOption(\"selectionFilter\", [])\r\n            }\r\n            for (var i = 0; i < keys.length; i++) {\r\n                if (isDeselect) {\r\n                    this.removeSelectedItem(keys[i])\r\n                } else {\r\n                    this.addSelectedItem(keys[i])\r\n                }\r\n            }\r\n        }\r\n        this.onSelectionChanged();\r\n        return (new _deferred.Deferred).resolve()\r\n    },\r\n    setSelectedItems: function(keys) {\r\n        this._setOption(\"selectionFilter\", null);\r\n        for (var i = 0; i < keys.length; i++) {\r\n            this.addSelectedItem(keys[i])\r\n        }\r\n    },\r\n    isItemDataSelected: function(itemData) {\r\n        return this.isItemKeySelected(itemData)\r\n    },\r\n    isItemKeySelected: function(itemData) {\r\n        var selectionFilter = this.options.selectionFilter;\r\n        if (!selectionFilter) {\r\n            return true\r\n        }\r\n        return !!(0, _query.default)([itemData]).filter(selectionFilter).toArray().length\r\n    },\r\n    _getFilterByKey: function(key) {\r\n        var keyField = this.options.key();\r\n        var filter = [keyField, \"=\", key];\r\n        if (Array.isArray(keyField)) {\r\n            filter = [];\r\n            for (var i = 0; i < keyField.length; i++) {\r\n                filter.push([keyField[i], \"=\", key[keyField[i]]]);\r\n                if (i !== keyField.length - 1) {\r\n                    filter.push(\"and\")\r\n                }\r\n            }\r\n        }\r\n        return filter\r\n    },\r\n    addSelectedItem: function(key) {\r\n        var filter = this._getFilterByKey(key);\r\n        this._addSelectionFilter(false, filter)\r\n    },\r\n    removeSelectedItem: function(key) {\r\n        var filter = this._getFilterByKey(key);\r\n        this._addSelectionFilter(true, filter)\r\n    },\r\n    validate: function() {\r\n        var key = this.options.key;\r\n        if (key && void 0 === key()) {\r\n            throw _ui.default.Error(\"E1042\", \"Deferred selection\")\r\n        }\r\n    },\r\n    _findSubFilter: function(selectionFilter, filter) {\r\n        if (!selectionFilter) {\r\n            return -1\r\n        }\r\n        var filterString = JSON.stringify(filter);\r\n        for (var index = 0; index < selectionFilter.length; index++) {\r\n            var subFilter = selectionFilter[index];\r\n            if (subFilter && JSON.stringify(subFilter) === filterString) {\r\n                return index\r\n            }\r\n        }\r\n        return -1\r\n    },\r\n    _isLastSubFilter: function(selectionFilter, filter) {\r\n        if (selectionFilter && filter) {\r\n            return this._findSubFilter(selectionFilter, filter) === selectionFilter.length - 1 || 0 === this._findSubFilter([selectionFilter], filter)\r\n        }\r\n        return false\r\n    },\r\n    _addFilterOperator: function(selectionFilter, filterOperator) {\r\n        if (selectionFilter.length > 1 && (0, _type.isString)(selectionFilter[1]) && selectionFilter[1] !== filterOperator) {\r\n            selectionFilter = [selectionFilter]\r\n        }\r\n        if (selectionFilter.length) {\r\n            selectionFilter.push(filterOperator)\r\n        }\r\n        return selectionFilter\r\n    },\r\n    _denormalizeFilter: function(filter) {\r\n        if (filter && (0, _type.isString)(filter[0])) {\r\n            filter = [filter]\r\n        }\r\n        return filter\r\n    },\r\n    _addSelectionFilter: function(isDeselect, filter, isSelectAll) {\r\n        var that = this;\r\n        var currentFilter = isDeselect ? [\"!\", filter] : filter;\r\n        var currentOperation = isDeselect ? \"and\" : \"or\";\r\n        var needAddFilter = true;\r\n        var selectionFilter = that.options.selectionFilter || [];\r\n        selectionFilter = that._denormalizeFilter(selectionFilter);\r\n        if (selectionFilter && selectionFilter.length) {\r\n            that._removeSameFilter(selectionFilter, filter, isDeselect, isSelectAll);\r\n            var filterIndex = that._removeSameFilter(selectionFilter, filter, !isDeselect);\r\n            var isKeyOperatorsAfterRemoved = this._isKeyFilter(filter) && this._hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex);\r\n            needAddFilter = filter.length && !isKeyOperatorsAfterRemoved;\r\n            if (needAddFilter) {\r\n                selectionFilter = that._addFilterOperator(selectionFilter, currentOperation)\r\n            }\r\n        }\r\n        if (needAddFilter) {\r\n            selectionFilter.push(currentFilter)\r\n        }\r\n        selectionFilter = that._normalizeFilter(selectionFilter);\r\n        that._setOption(\"selectionFilter\", !isDeselect && !selectionFilter.length ? null : selectionFilter)\r\n    },\r\n    _normalizeFilter: function(filter) {\r\n        if (filter && 1 === filter.length) {\r\n            filter = filter[0]\r\n        }\r\n        return filter\r\n    },\r\n    _removeFilterByIndex: function(filter, filterIndex, isSelectAll) {\r\n        var operation = filter[1];\r\n        if (filterIndex > 0) {\r\n            filter.splice(filterIndex - 1, 2)\r\n        } else {\r\n            filter.splice(filterIndex, 2)\r\n        }\r\n        if (isSelectAll && \"and\" === operation) {\r\n            filter.splice(0, filter.length)\r\n        }\r\n    },\r\n    _isSimpleKeyFilter: function(filter, key) {\r\n        return 3 === filter.length && filter[0] === key && \"=\" === filter[1]\r\n    },\r\n    _isKeyFilter: function(filter) {\r\n        if (2 === filter.length && \"!\" === filter[0]) {\r\n            return this._isKeyFilter(filter[1])\r\n        }\r\n        var keyField = this.options.key();\r\n        if (Array.isArray(keyField)) {\r\n            if (filter.length !== 2 * keyField.length - 1) {\r\n                return false\r\n            }\r\n            for (var i = 0; i < keyField.length; i++) {\r\n                if (i > 0 && \"and\" !== filter[i]) {\r\n                    return false\r\n                }\r\n                if (!this._isSimpleKeyFilter(filter[2 * i], keyField[i])) {\r\n                    return false\r\n                }\r\n            }\r\n            return true\r\n        }\r\n        return this._isSimpleKeyFilter(filter, keyField)\r\n    },\r\n    _hasKeyFiltersOnlyStartingFromIndex: function(selectionFilter, filterIndex) {\r\n        if (filterIndex >= 0) {\r\n            for (var i = filterIndex; i < selectionFilter.length; i++) {\r\n                if (\"string\" !== typeof selectionFilter[i] && !this._isKeyFilter(selectionFilter[i])) {\r\n                    return false\r\n                }\r\n            }\r\n            return true\r\n        }\r\n        return false\r\n    },\r\n    _removeSameFilter: function(selectionFilter, filter, inverted, isSelectAll) {\r\n        filter = inverted ? [\"!\", filter] : filter;\r\n        if (JSON.stringify(filter) === JSON.stringify(selectionFilter)) {\r\n            selectionFilter.splice(0, selectionFilter.length);\r\n            return 0\r\n        }\r\n        var filterIndex = this._findSubFilter(selectionFilter, filter);\r\n        if (filterIndex >= 0) {\r\n            this._removeFilterByIndex(selectionFilter, filterIndex, isSelectAll);\r\n            return filterIndex\r\n        } else {\r\n            for (var i = 0; i < selectionFilter.length; i++) {\r\n                if (Array.isArray(selectionFilter[i]) && selectionFilter[i].length > 2) {\r\n                    var _filterIndex = this._removeSameFilter(selectionFilter[i], filter, false, isSelectAll);\r\n                    if (_filterIndex >= 0) {\r\n                        if (!selectionFilter[i].length) {\r\n                            this._removeFilterByIndex(selectionFilter, i, isSelectAll)\r\n                        } else {\r\n                            if (1 === selectionFilter[i].length) {\r\n                                selectionFilter[i] = selectionFilter[i][0]\r\n                            }\r\n                        }\r\n                        return _filterIndex\r\n                    }\r\n                }\r\n            }\r\n            return -1\r\n        }\r\n    },\r\n    getSelectAllState: function() {\r\n        var filter = this.options.filter();\r\n        var selectionFilter = this.options.selectionFilter;\r\n        if (!selectionFilter) {\r\n            return true\r\n        }\r\n        if (!selectionFilter.length) {\r\n            return false\r\n        }\r\n        if (!filter || !filter.length) {\r\n            return\r\n        }\r\n        selectionFilter = this._denormalizeFilter(selectionFilter);\r\n        if (this._isLastSubFilter(selectionFilter, filter)) {\r\n            return true\r\n        }\r\n        if (this._isLastSubFilter(selectionFilter, [\"!\", filter])) {\r\n            return false\r\n        }\r\n        return\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/calendar/ui.calendar.navigator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CALENDAR_NAVIGATOR_CLASS = \"dx-calendar-navigator\";\r\nvar CALENDAR_NAVIGATOR_PREVIOUS_MONTH_CLASS = \"dx-calendar-navigator-previous-month\";\r\nvar CALENDAR_NAVIGATOR_NEXT_MONTH_CLASS = \"dx-calendar-navigator-next-month\";\r\nvar CALENDAR_NAVIGATOR_PREVIOUS_VIEW_CLASS = \"dx-calendar-navigator-previous-view\";\r\nvar CALENDAR_NAVIGATOR_NEXT_VIEW_CLASS = \"dx-calendar-navigator-next-view\";\r\nvar CALENDAR_NAVIGATOR_DISABLED_LINK_CLASS = \"dx-calendar-disabled-navigator-link\";\r\nvar CALENDAR_NAVIGATOR_CAPTION_BUTTON_CLASS = \"dx-calendar-caption-button\";\r\nvar Navigator = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            onClick: null,\r\n            onCaptionClick: null,\r\n            text: \"\"\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initActions()\r\n    },\r\n    _initActions: function() {\r\n        this._clickAction = this._createActionByOption(\"onClick\");\r\n        this._captionClickAction = this._createActionByOption(\"onCaptionClick\")\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this.$element().addClass(CALENDAR_NAVIGATOR_CLASS);\r\n        this._renderButtons();\r\n        this._renderCaption()\r\n    },\r\n    _renderButtons: function() {\r\n        var that = this;\r\n        var direction = this.option(\"rtlEnabled\") ? -1 : 1;\r\n        this._prevButton = this._createComponent((0, _renderer.default)(\"<a>\"), _button.default, {\r\n            focusStateEnabled: false,\r\n            icon: \"chevronleft\",\r\n            onClick: function(e) {\r\n                that._clickAction({\r\n                    direction: -direction,\r\n                    event: e\r\n                })\r\n            },\r\n            integrationOptions: {}\r\n        });\r\n        var $prevButton = this._prevButton.$element().addClass(CALENDAR_NAVIGATOR_PREVIOUS_VIEW_CLASS).addClass(CALENDAR_NAVIGATOR_PREVIOUS_MONTH_CLASS);\r\n        this._nextButton = this._createComponent((0, _renderer.default)(\"<a>\"), _button.default, {\r\n            focusStateEnabled: false,\r\n            icon: \"chevronright\",\r\n            onClick: function(e) {\r\n                that._clickAction({\r\n                    direction: direction,\r\n                    event: e\r\n                })\r\n            },\r\n            integrationOptions: {}\r\n        });\r\n        var $nextButton = this._nextButton.$element().addClass(CALENDAR_NAVIGATOR_NEXT_VIEW_CLASS).addClass(CALENDAR_NAVIGATOR_NEXT_MONTH_CLASS);\r\n        this._caption = this._createComponent((0, _renderer.default)(\"<a>\").addClass(CALENDAR_NAVIGATOR_CAPTION_BUTTON_CLASS), _button.default, {\r\n            focusStateEnabled: false,\r\n            onClick: function(e) {\r\n                that._captionClickAction({\r\n                    event: e\r\n                })\r\n            },\r\n            integrationOptions: {}\r\n        });\r\n        var $caption = this._caption.$element();\r\n        this.$element().append($prevButton, $caption, $nextButton)\r\n    },\r\n    _renderCaption: function() {\r\n        this._caption.option(\"text\", this.option(\"text\"))\r\n    },\r\n    toggleButton: function(buttonPrefix, value) {\r\n        var buttonName = \"_\" + buttonPrefix + \"Button\";\r\n        var button = this[buttonName];\r\n        if (button) {\r\n            button.option(\"disabled\", value);\r\n            button.$element().toggleClass(CALENDAR_NAVIGATOR_DISABLED_LINK_CLASS, value)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"text\":\r\n                this._renderCaption();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = Navigator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.hierarchical_collection_widget.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _icon = require(\"../../core/utils/icon\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.data_adapter\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar HierarchicalCollectionWidget = _uiCollection_widget.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            keyExpr: \"id\",\r\n            displayExpr: \"text\",\r\n            selectedExpr: \"selected\",\r\n            disabledExpr: \"disabled\",\r\n            itemsExpr: \"items\",\r\n            hoverStateEnabled: true,\r\n            parentIdExpr: \"parentId\",\r\n            expandedExpr: \"expanded\"\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initAccessors();\r\n        this._initDataAdapter();\r\n        this._initDynamicTemplates()\r\n    },\r\n    _initDataSource: function() {\r\n        this.callBase();\r\n        this._dataSource && this._dataSource.paginate(false)\r\n    },\r\n    _initDataAdapter: function() {\r\n        var accessors = this._createDataAdapterAccessors();\r\n        this._dataAdapter = new _ui.default((0, _extend.extend)({\r\n            dataAccessors: {\r\n                getters: accessors.getters,\r\n                setters: accessors.setters\r\n            },\r\n            items: this.option(\"items\")\r\n        }, this._getDataAdapterOptions()))\r\n    },\r\n    _getDataAdapterOptions: _common.noop,\r\n    _initDynamicTemplates: function() {\r\n        var that = this;\r\n        this._templateManager.addDefaultTemplates({\r\n            item: new _bindable_template.BindableTemplate(function($container, itemData) {\r\n                $container.html(itemData.html).append(this._getIconContainer(itemData)).append(this._getTextContainer(itemData)).append(this._getPopoutContainer(itemData));\r\n                that._addContentClasses(itemData, $container.parent())\r\n            }.bind(this), [\"text\", \"html\", \"items\", \"icon\"], this.option(\"integrationOptions.watchMethod\"), {\r\n                text: this._displayGetter,\r\n                items: this._itemsGetter\r\n            })\r\n        })\r\n    },\r\n    _getIconContainer: function(itemData) {\r\n        return itemData.icon ? (0, _icon.getImageContainer)(itemData.icon) : void 0\r\n    },\r\n    _getTextContainer: function(itemData) {\r\n        return (0, _renderer.default)(\"<span>\").text(itemData.text)\r\n    },\r\n    _getPopoutContainer: _common.noop,\r\n    _addContentClasses: _common.noop,\r\n    _initAccessors: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(this._getAccessors(), function(_, accessor) {\r\n            that._compileAccessor(accessor)\r\n        });\r\n        this._compileDisplayGetter()\r\n    },\r\n    _getAccessors: function() {\r\n        return [\"key\", \"selected\", \"items\", \"disabled\", \"parentId\", \"expanded\"]\r\n    },\r\n    _getChildNodes: function(node) {\r\n        var that = this;\r\n        var arr = [];\r\n        (0, _iterator.each)(node.internalFields.childrenKeys, function(_, key) {\r\n            var childNode = that._dataAdapter.getNodeByKey(key);\r\n            arr.push(childNode)\r\n        });\r\n        return arr\r\n    },\r\n    _hasChildren: function(node) {\r\n        return node && node.internalFields.childrenKeys.length\r\n    },\r\n    _compileAccessor: function(optionName) {\r\n        var getter = \"_\" + optionName + \"Getter\";\r\n        var setter = \"_\" + optionName + \"Setter\";\r\n        var optionExpr = this.option(optionName + \"Expr\");\r\n        if (!optionExpr) {\r\n            this[getter] = _common.noop;\r\n            this[setter] = _common.noop;\r\n            return\r\n        } else {\r\n            if ((0, _type.isFunction)(optionExpr)) {\r\n                this[setter] = function(obj, value) {\r\n                    obj[optionExpr()] = value\r\n                };\r\n                this[getter] = function(obj) {\r\n                    return obj[optionExpr()]\r\n                };\r\n                return\r\n            }\r\n        }\r\n        this[getter] = (0, _data.compileGetter)(optionExpr);\r\n        this[setter] = (0, _data.compileSetter)(optionExpr)\r\n    },\r\n    _createDataAdapterAccessors: function() {\r\n        var that = this;\r\n        var accessors = {\r\n            getters: {},\r\n            setters: {}\r\n        };\r\n        (0, _iterator.each)(this._getAccessors(), function(_, accessor) {\r\n            var getterName = \"_\" + accessor + \"Getter\";\r\n            var setterName = \"_\" + accessor + \"Setter\";\r\n            var newAccessor = \"parentId\" === accessor ? \"parentKey\" : accessor;\r\n            accessors.getters[newAccessor] = that[getterName];\r\n            accessors.setters[newAccessor] = that[setterName]\r\n        });\r\n        accessors.getters.display = !this._displayGetter ? function(itemData) {\r\n            return itemData.text\r\n        } : this._displayGetter;\r\n        return accessors\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._addWidgetClass()\r\n    },\r\n    _addWidgetClass: function() {\r\n        this._focusTarget().addClass(this._widgetClass())\r\n    },\r\n    _widgetClass: _common.noop,\r\n    _renderItemFrame: function(index, itemData) {\r\n        var $itemFrame = this.callBase.apply(this, arguments);\r\n        $itemFrame.toggleClass(DISABLED_STATE_CLASS, !!this._disabledGetter(itemData));\r\n        return $itemFrame\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"displayExpr\":\r\n            case \"keyExpr\":\r\n                this._initAccessors();\r\n                this._initDynamicTemplates();\r\n                this.repaint();\r\n                break;\r\n            case \"itemsExpr\":\r\n            case \"selectedExpr\":\r\n            case \"disabledExpr\":\r\n            case \"expandedExpr\":\r\n            case \"parentIdExpr\":\r\n                this._initAccessors();\r\n                this._initDataAdapter();\r\n                this.repaint();\r\n                break;\r\n            case \"items\":\r\n                this._initDataAdapter();\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = HierarchicalCollectionWidget;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _ui = _interopRequireDefault(require(\"../text_box/ui.text_editor\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _number_box = _interopRequireDefault(require(\"./number_box.spins\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar math = Math;\r\nvar WIDGET_CLASS = \"dx-numberbox\";\r\nvar FIREFOX_CONTROL_KEYS = [\"tab\", \"del\", \"backspace\", \"leftArrow\", \"rightArrow\", \"home\", \"end\", \"enter\"];\r\nvar FORCE_VALUECHANGE_EVENT_NAMESPACE = \"NumberBoxForceValueChange\";\r\nvar NumberBoxBase = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            upArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                this._spinUpChangeHandler(e)\r\n            },\r\n            downArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                this._spinDownChangeHandler(e)\r\n            },\r\n            enter: function() {}\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: 0,\r\n            min: void 0,\r\n            max: void 0,\r\n            step: 1,\r\n            showSpinButtons: false,\r\n            useLargeSpinButtons: true,\r\n            mode: \"text\",\r\n            invalidValueMessage: _message.default.format(\"dxNumberBox-invalidValueMessage\"),\r\n            buttons: void 0\r\n        })\r\n    },\r\n    _getDefaultButtons: function() {\r\n        return this.callBase().concat([{\r\n            name: \"spins\",\r\n            Ctor: _number_box.default\r\n        }])\r\n    },\r\n    _isSupportInputMode: function() {\r\n        var version = parseFloat(_browser.default.version);\r\n        return _browser.default.chrome && version >= 66 || _browser.default.safari && version >= 12 || _browser.default.msie && version >= 75\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return _devices.default.real().generic && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                useLargeSpinButtons: false\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return \"desktop\" !== _devices.default.real().deviceType && !this._isSupportInputMode()\r\n            }.bind(this),\r\n            options: {\r\n                mode: \"number\"\r\n            }\r\n        }])\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderSubmitElement();\r\n        this.$element().addClass(WIDGET_CLASS);\r\n        this.callBase()\r\n    },\r\n    _getDefaultAttributes: function() {\r\n        var attributes = this.callBase();\r\n        attributes.inputmode = \"decimal\";\r\n        return attributes\r\n    },\r\n    _renderContentImpl: function() {\r\n        this.option(\"isValid\") && this._validateValue(this.option(\"value\"));\r\n        this.setAria(\"role\", \"spinbutton\")\r\n    },\r\n    _renderSubmitElement: function() {\r\n        this._$submitElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n        this._setSubmitValue(this.option(\"value\"))\r\n    },\r\n    _setSubmitValue: function(value) {\r\n        this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value))\r\n    },\r\n    _getSubmitElement: function() {\r\n        return this._$submitElement\r\n    },\r\n    _keyPressHandler: function(e) {\r\n        this.callBase(e);\r\n        var char = (0, _index.getChar)(e);\r\n        var validCharRegExp = /[\\d.,eE\\-+]|Subtract/;\r\n        var isInputCharValid = validCharRegExp.test(char);\r\n        if (!isInputCharValid) {\r\n            var keyName = (0, _index.normalizeKeyName)(e);\r\n            if (e.metaKey || e.ctrlKey || keyName && (0, _array.inArray)(keyName, FIREFOX_CONTROL_KEYS) >= 0) {\r\n                return\r\n            }\r\n            e.preventDefault();\r\n            return false\r\n        }\r\n        this._keyPressed = true\r\n    },\r\n    _onMouseWheel: function(dxEvent) {\r\n        dxEvent.delta > 0 ? this._spinValueChange(1, dxEvent) : this._spinValueChange(-1, dxEvent)\r\n    },\r\n    _renderValue: function() {\r\n        var inputValue = this._input().val();\r\n        var value = this.option(\"value\");\r\n        if (!inputValue.length || Number(inputValue) !== value) {\r\n            this._forceValueRender();\r\n            this._toggleEmptinessEventHandler()\r\n        }\r\n        var valueText = (0, _type.isDefined)(value) ? null : _message.default.format(\"dxNumberBox-noDataText\");\r\n        this.setAria({\r\n            valuenow: (0, _common.ensureDefined)(value, \"\"),\r\n            valuetext: valueText\r\n        });\r\n        this.option(\"text\", this._input().val());\r\n        this._updateButtons();\r\n        return (new _deferred.Deferred).resolve()\r\n    },\r\n    _forceValueRender: function() {\r\n        var value = this.option(\"value\");\r\n        var number = Number(value);\r\n        var formattedValue = isNaN(number) ? \"\" : this._applyDisplayValueFormatter(value);\r\n        this._renderDisplayText(formattedValue)\r\n    },\r\n    _applyDisplayValueFormatter: function(value) {\r\n        return this.option(\"displayValueFormatter\")(value)\r\n    },\r\n    _renderProps: function() {\r\n        this.callBase();\r\n        this._input().prop({\r\n            min: this.option(\"min\"),\r\n            max: this.option(\"max\"),\r\n            step: this.option(\"step\")\r\n        });\r\n        this.setAria({\r\n            valuemin: (0, _common.ensureDefined)(this.option(\"min\"), \"\"),\r\n            valuemax: (0, _common.ensureDefined)(this.option(\"max\"), \"\")\r\n        })\r\n    },\r\n    _spinButtonsPointerDownHandler: function() {\r\n        var $input = this._input();\r\n        if (!this.option(\"useLargeSpinButtons\") && _dom_adapter.default.getActiveElement() !== $input[0]) {\r\n            _events_engine.default.trigger($input, \"focus\")\r\n        }\r\n    },\r\n    _spinUpChangeHandler: function(e) {\r\n        if (!this.option(\"readOnly\")) {\r\n            this._spinValueChange(1, e.event || e)\r\n        }\r\n    },\r\n    _spinDownChangeHandler: function(e) {\r\n        if (!this.option(\"readOnly\")) {\r\n            this._spinValueChange(-1, e.event || e)\r\n        }\r\n    },\r\n    _spinValueChange: function(sign, dxEvent) {\r\n        var step = parseFloat(this.option(\"step\"));\r\n        if (0 === step) {\r\n            return\r\n        }\r\n        var value = parseFloat(this._normalizeInputValue()) || 0;\r\n        value = this._correctRounding(value, step * sign);\r\n        var min = this.option(\"min\");\r\n        var max = this.option(\"max\");\r\n        if ((0, _type.isDefined)(min)) {\r\n            value = Math.max(min, value)\r\n        }\r\n        if ((0, _type.isDefined)(max)) {\r\n            value = Math.min(max, value)\r\n        }\r\n        this._saveValueChangeEvent(dxEvent);\r\n        this.option(\"value\", value)\r\n    },\r\n    _correctRounding: function(value, step) {\r\n        var regex = /[,.](.*)/;\r\n        var isFloatValue = regex.test(value);\r\n        var isFloatStep = regex.test(step);\r\n        if (isFloatValue || isFloatStep) {\r\n            var valueAccuracy = isFloatValue ? regex.exec(value)[0].length : 0;\r\n            var stepAccuracy = isFloatStep ? regex.exec(step)[0].length : 0;\r\n            var accuracy = math.max(valueAccuracy, stepAccuracy);\r\n            value = this._round(value + step, accuracy);\r\n            return value\r\n        }\r\n        return value + step\r\n    },\r\n    _round: function(value, precision) {\r\n        precision = precision || 0;\r\n        var multiplier = Math.pow(10, precision);\r\n        value *= multiplier;\r\n        value = Math.round(value) / multiplier;\r\n        return value\r\n    },\r\n    _renderValueChangeEvent: function() {\r\n        this.callBase();\r\n        var forceValueChangeEvent = (0, _index.addNamespace)(\"focusout\", FORCE_VALUECHANGE_EVENT_NAMESPACE);\r\n        _events_engine.default.off(this.element(), forceValueChangeEvent);\r\n        _events_engine.default.on(this.element(), forceValueChangeEvent, this._forceRefreshInputValue.bind(this))\r\n    },\r\n    _forceRefreshInputValue: function() {\r\n        if (\"number\" === this.option(\"mode\")) {\r\n            return\r\n        }\r\n        var $input = this._input();\r\n        var formattedValue = this._applyDisplayValueFormatter(this.option(\"value\"));\r\n        $input.val(null);\r\n        $input.val(formattedValue)\r\n    },\r\n    _valueChangeEventHandler: function(e) {\r\n        var $input = this._input();\r\n        var inputValue = this._normalizeText();\r\n        var value = this._parseValue(inputValue);\r\n        var valueHasDigits = \".\" !== inputValue && \"-\" !== inputValue;\r\n        if (this._isValueValid() && !this._validateValue(value)) {\r\n            $input.val(this._applyDisplayValueFormatter(value));\r\n            return\r\n        }\r\n        if (valueHasDigits) {\r\n            this.callBase(e, isNaN(value) ? null : value)\r\n        }\r\n        this._applyValueBoundaries(inputValue, value);\r\n        this.validationRequest.fire({\r\n            value: value,\r\n            editor: this\r\n        })\r\n    },\r\n    _applyValueBoundaries: function(inputValue, parsedValue) {\r\n        var isValueIncomplete = this._isValueIncomplete(inputValue);\r\n        var isValueCorrect = this._isValueInRange(inputValue);\r\n        if (!isValueIncomplete && !isValueCorrect && null !== parsedValue) {\r\n            if (Number(inputValue) !== parsedValue) {\r\n                this._input().val(this._applyDisplayValueFormatter(parsedValue))\r\n            }\r\n        }\r\n    },\r\n    _replaceCommaWithPoint: function(value) {\r\n        return value.replace(\",\", \".\")\r\n    },\r\n    _inputIsInvalid: function() {\r\n        var isNumberMode = \"number\" === this.option(\"mode\");\r\n        var validityState = this._input().get(0).validity;\r\n        return isNumberMode && validityState && validityState.badInput\r\n    },\r\n    _renderDisplayText: function(text) {\r\n        if (this._inputIsInvalid()) {\r\n            return\r\n        }\r\n        this.callBase(text)\r\n    },\r\n    _isValueIncomplete: function(value) {\r\n        var incompleteRegex = /(^-$)|(^-?\\d*\\.$)|(\\d+e-?$)/i;\r\n        return incompleteRegex.test(value)\r\n    },\r\n    _isValueInRange: function(value) {\r\n        return (0, _math.inRange)(value, this.option(\"min\"), this.option(\"max\"))\r\n    },\r\n    _isNumber: function(value) {\r\n        return null !== this._parseValue(value)\r\n    },\r\n    _validateValue: function(value) {\r\n        var inputValue = this._normalizeText();\r\n        var isValueValid = this._isValueValid();\r\n        var isValid = true;\r\n        var isNumber = this._isNumber(inputValue);\r\n        if (isNaN(Number(value))) {\r\n            isValid = false\r\n        }\r\n        if (!value && isValueValid) {\r\n            isValid = true\r\n        } else {\r\n            if (!isNumber && !isValueValid) {\r\n                isValid = false\r\n            }\r\n        }\r\n        this.option({\r\n            isValid: isValid,\r\n            validationError: isValid ? null : {\r\n                editorSpecific: true,\r\n                message: this.option(\"invalidValueMessage\")\r\n            }\r\n        });\r\n        return isValid\r\n    },\r\n    _normalizeInputValue: function() {\r\n        return this._parseValue(this._normalizeText())\r\n    },\r\n    _normalizeText: function() {\r\n        var value = this._input().val().trim();\r\n        return this._replaceCommaWithPoint(value)\r\n    },\r\n    _parseValue: function(value) {\r\n        var number = parseFloat(value);\r\n        if (isNaN(number)) {\r\n            return null\r\n        }\r\n        return (0, _math.fitIntoRange)(number, this.option(\"min\"), this.option(\"max\"))\r\n    },\r\n    _clearValue: function() {\r\n        if (this._inputIsInvalid()) {\r\n            this._input().val(\"\");\r\n            this._validateValue()\r\n        }\r\n        this.callBase()\r\n    },\r\n    reset: function() {\r\n        if (null === this.option(\"value\")) {\r\n            this.option(\"text\", \"\");\r\n            this._renderValue()\r\n        } else {\r\n            this.option(\"value\", null)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"value\":\r\n                this._validateValue(args.value);\r\n                this._setSubmitValue(args.value);\r\n                this.callBase(args);\r\n                this._resumeValueChangeAction();\r\n                break;\r\n            case \"step\":\r\n                this._renderProps();\r\n                break;\r\n            case \"min\":\r\n            case \"max\":\r\n                this._renderProps();\r\n                this.option(\"value\", this._parseValue(this.option(\"value\")));\r\n                break;\r\n            case \"showSpinButtons\":\r\n            case \"useLargeSpinButtons\":\r\n                this._updateButtons([\"spins\"]);\r\n                break;\r\n            case \"invalidValueMessage\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = NumberBoxBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/click.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.name = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _frame = require(\"../animation/frame\");\r\nvar _index = require(\"./utils/index\");\r\nvar _event_nodes_disposing = require(\"./utils/event_nodes_disposing\");\r\nvar _pointer = _interopRequireDefault(require(\"./pointer\"));\r\nvar _emitter = _interopRequireDefault(require(\"./core/emitter\"));\r\nvar _emitter_registrator = _interopRequireDefault(require(\"./core/emitter_registrator\"));\r\nvar _version = require(\"../core/utils/version\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CLICK_EVENT_NAME = \"dxclick\";\r\nexports.name = CLICK_EVENT_NAME;\r\nvar TOUCH_BOUNDARY = 10;\r\nvar abs = Math.abs;\r\nvar isInput = function(element) {\r\n    return (0, _renderer.default)(element).is(\"input, textarea, select, button ,:focus, :focus *\")\r\n};\r\nvar misc = {\r\n    requestAnimationFrame: _frame.requestAnimationFrame,\r\n    cancelAnimationFrame: _frame.cancelAnimationFrame\r\n};\r\nvar ClickEmitter = _emitter.default.inherit({\r\n    ctor: function(element) {\r\n        this.callBase(element);\r\n        this._makeElementClickable((0, _renderer.default)(element))\r\n    },\r\n    _makeElementClickable: function($element) {\r\n        if (!$element.attr(\"onclick\")) {\r\n            $element.attr(\"onclick\", \"void(0)\")\r\n        }\r\n    },\r\n    start: function(e) {\r\n        this._blurPrevented = e.isDefaultPrevented();\r\n        this._startTarget = e.target;\r\n        this._startEventData = (0, _index.eventData)(e)\r\n    },\r\n    end: function(e) {\r\n        if (this._eventOutOfElement(e, this.getElement().get(0)) || e.type === _pointer.default.cancel) {\r\n            this._cancel(e);\r\n            return\r\n        }\r\n        if (!isInput(e.target) && !this._blurPrevented) {\r\n            (0, _dom.resetActiveElement)()\r\n        }\r\n        this._accept(e);\r\n        this._clickAnimationFrame = misc.requestAnimationFrame(function() {\r\n            this._fireClickEvent(e)\r\n        }.bind(this))\r\n    },\r\n    _eventOutOfElement: function(e, element) {\r\n        var target = e.target;\r\n        var targetChanged = !(0, _dom.contains)(element, target) && element !== target;\r\n        var gestureDelta = (0, _index.eventDelta)((0, _index.eventData)(e), this._startEventData);\r\n        var boundsExceeded = abs(gestureDelta.x) > TOUCH_BOUNDARY || abs(gestureDelta.y) > TOUCH_BOUNDARY;\r\n        return targetChanged || boundsExceeded\r\n    },\r\n    _fireClickEvent: function(e) {\r\n        this._fireEvent(CLICK_EVENT_NAME, e, {\r\n            target: (0, _dom.closestCommonParent)(this._startTarget, e.target)\r\n        })\r\n    },\r\n    dispose: function() {\r\n        misc.cancelAnimationFrame(this._clickAnimationFrame)\r\n    }\r\n});\r\nvar realDevice = _devices.default.real();\r\nvar useNativeClick = realDevice.generic || realDevice.ios && (0, _version.compare)(realDevice.version, [9, 3]) >= 0 || realDevice.android && (0, _version.compare)(realDevice.version, [5]) >= 0;\r\n! function() {\r\n    var NATIVE_CLICK_CLASS = \"dx-native-click\";\r\n    var isNativeClickEvent = function(target) {\r\n        return useNativeClick || (0, _renderer.default)(target).closest(\".\" + NATIVE_CLICK_CLASS).length\r\n    };\r\n    var prevented = null;\r\n    var lastFiredEvent = null;\r\n\r\n    function onNodeRemove() {\r\n        lastFiredEvent = null\r\n    }\r\n    var clickHandler = function(e) {\r\n        var originalEvent = e.originalEvent;\r\n        var eventAlreadyFired = lastFiredEvent === originalEvent || originalEvent && originalEvent.DXCLICK_FIRED;\r\n        var leftButton = !e.which || 1 === e.which;\r\n        if (leftButton && !prevented && isNativeClickEvent(e.target) && !eventAlreadyFired) {\r\n            if (originalEvent) {\r\n                originalEvent.DXCLICK_FIRED = true\r\n            }(0, _event_nodes_disposing.unsubscribeNodesDisposing)(lastFiredEvent, onNodeRemove);\r\n            lastFiredEvent = originalEvent;\r\n            (0, _event_nodes_disposing.subscribeNodesDisposing)(lastFiredEvent, onNodeRemove);\r\n            (0, _index.fireEvent)({\r\n                type: CLICK_EVENT_NAME,\r\n                originalEvent: e\r\n            })\r\n        }\r\n    };\r\n    ClickEmitter = ClickEmitter.inherit({\r\n        _makeElementClickable: function($element) {\r\n            if (!isNativeClickEvent($element)) {\r\n                this.callBase($element)\r\n            }\r\n            _events_engine.default.on($element, \"click\", clickHandler)\r\n        },\r\n        configure: function(data) {\r\n            this.callBase(data);\r\n            if (data.useNative) {\r\n                this.getElement().addClass(NATIVE_CLICK_CLASS)\r\n            }\r\n        },\r\n        start: function(e) {\r\n            prevented = null;\r\n            if (!isNativeClickEvent(e.target)) {\r\n                this.callBase(e)\r\n            }\r\n        },\r\n        end: function(e) {\r\n            if (!isNativeClickEvent(e.target)) {\r\n                this.callBase(e)\r\n            }\r\n        },\r\n        cancel: function() {\r\n            prevented = true\r\n        },\r\n        dispose: function() {\r\n            this.callBase();\r\n            _events_engine.default.off(this.getElement(), \"click\", clickHandler)\r\n        }\r\n    })\r\n}();\r\n! function() {\r\n    var desktopDevice = _devices.default.real().generic;\r\n    if (!desktopDevice) {\r\n        var startTarget = null;\r\n        var blurPrevented = false;\r\n        var pointerDownHandler = function(e) {\r\n            startTarget = e.target;\r\n            blurPrevented = e.isDefaultPrevented()\r\n        };\r\n        var clickHandler = function(e) {\r\n            var $target = (0, _renderer.default)(e.target);\r\n            if (!blurPrevented && startTarget && !$target.is(startTarget) && !(0, _renderer.default)(startTarget).is(\"label\") && isInput($target)) {\r\n                (0, _dom.resetActiveElement)()\r\n            }\r\n            startTarget = null;\r\n            blurPrevented = false\r\n        };\r\n        var NATIVE_CLICK_FIXER_NAMESPACE = \"NATIVE_CLICK_FIXER\";\r\n        var document = _dom_adapter.default.getDocument();\r\n        _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.down, NATIVE_CLICK_FIXER_NAMESPACE), pointerDownHandler);\r\n        _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(\"click\", NATIVE_CLICK_FIXER_NAMESPACE), clickHandler)\r\n    }\r\n}();\r\n(0, _emitter_registrator.default)({\r\n    emitter: ClickEmitter,\r\n    bubble: true,\r\n    events: [CLICK_EVENT_NAME]\r\n});\r\n","/**\r\n * DevExtreme (ui/list/ui.list.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.setScrollView = setScrollView;\r\nexports.ListBase = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _icon = require(\"../../core/utils/icon\");\r\nvar _element = require(\"../../core/element\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _swipe = require(\"../../events/swipe\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _utils = require(\"../widget/utils.ink_ripple\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _item = _interopRequireDefault(require(\"./item\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _themes = require(\"../themes\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _scroll_view = _interopRequireDefault(require(\"../scroll_view\"));\r\nvar _uiScrollable = require(\"../scroll_view/ui.scrollable.device\");\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.live_update\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _grouped_data_converter_mixin = _interopRequireDefault(require(\"../shared/grouped_data_converter_mixin\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar LIST_CLASS = \"dx-list\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_ITEM_SELECTOR = \".\" + LIST_ITEM_CLASS;\r\nvar LIST_ITEM_ICON_CONTAINER_CLASS = \"dx-list-item-icon-container\";\r\nvar LIST_ITEM_ICON_CLASS = \"dx-list-item-icon\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar LIST_GROUP_HEADER_CLASS = \"dx-list-group-header\";\r\nvar LIST_GROUP_BODY_CLASS = \"dx-list-group-body\";\r\nvar LIST_COLLAPSIBLE_GROUPS_CLASS = \"dx-list-collapsible-groups\";\r\nvar LIST_GROUP_COLLAPSED_CLASS = \"dx-list-group-collapsed\";\r\nvar LIST_GROUP_HEADER_INDICATOR_CLASS = \"dx-list-group-header-indicator\";\r\nvar LIST_HAS_NEXT_CLASS = \"dx-has-next\";\r\nvar LIST_NEXT_BUTTON_CLASS = \"dx-list-next-button\";\r\nvar WRAP_ITEM_TEXT_CLASS = \"dx-wrap-item-text\";\r\nvar SELECT_ALL_ITEM_SELECTOR = \".dx-list-select-all\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar LIST_FEEDBACK_SHOW_TIMEOUT = 70;\r\nvar groupItemsGetter = (0, _data.compileGetter)(\"items\");\r\nvar _scrollView;\r\nvar ListBase = _uiCollection_widget.default.inherit({\r\n    _activeStateUnit: [LIST_ITEM_SELECTOR, SELECT_ALL_ITEM_SELECTOR].join(\",\"),\r\n    _supportedKeys: function() {\r\n        var that = this;\r\n        var moveFocusPerPage = function(direction) {\r\n            var $item = getEdgeVisibleItem(direction);\r\n            var isFocusedItem = $item.is(that.option(\"focusedElement\"));\r\n            if (isFocusedItem) {\r\n                scrollListTo($item, direction);\r\n                $item = getEdgeVisibleItem(direction)\r\n            }\r\n            that.option(\"focusedElement\", (0, _element.getPublicElement)($item));\r\n            that.scrollToItem($item)\r\n        };\r\n\r\n        function getEdgeVisibleItem(direction) {\r\n            var scrollTop = that.scrollTop();\r\n            var containerHeight = that.$element().height();\r\n            var $item = (0, _renderer.default)(that.option(\"focusedElement\"));\r\n            var isItemVisible = true;\r\n            if (!$item.length) {\r\n                return (0, _renderer.default)()\r\n            }\r\n            while (isItemVisible) {\r\n                var $nextItem = $item[direction]();\r\n                if (!$nextItem.length) {\r\n                    break\r\n                }\r\n                var nextItemLocation = $nextItem.position().top + $nextItem.outerHeight() / 2;\r\n                isItemVisible = nextItemLocation < containerHeight + scrollTop && nextItemLocation > scrollTop;\r\n                if (isItemVisible) {\r\n                    $item = $nextItem\r\n                }\r\n            }\r\n            return $item\r\n        }\r\n\r\n        function scrollListTo($item, direction) {\r\n            var resultPosition = $item.position().top;\r\n            if (\"prev\" === direction) {\r\n                resultPosition = $item.position().top - that.$element().height() + $item.outerHeight()\r\n            }\r\n            that.scrollTo(resultPosition)\r\n        }\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            leftArrow: _common.noop,\r\n            rightArrow: _common.noop,\r\n            pageUp: function() {\r\n                moveFocusPerPage(\"prev\");\r\n                return false\r\n            },\r\n            pageDown: function() {\r\n                moveFocusPerPage(\"next\");\r\n                return false\r\n            }\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: true,\r\n            pullRefreshEnabled: false,\r\n            scrollingEnabled: true,\r\n            showScrollbar: \"onScroll\",\r\n            useNativeScrolling: true,\r\n            bounceEnabled: true,\r\n            scrollByContent: true,\r\n            scrollByThumb: false,\r\n            pullingDownText: _message.default.format(\"dxList-pullingDownText\"),\r\n            pulledDownText: _message.default.format(\"dxList-pulledDownText\"),\r\n            refreshingText: _message.default.format(\"dxList-refreshingText\"),\r\n            pageLoadingText: _message.default.format(\"dxList-pageLoadingText\"),\r\n            onScroll: null,\r\n            onPullRefresh: null,\r\n            onPageLoading: null,\r\n            pageLoadMode: \"scrollBottom\",\r\n            nextButtonText: _message.default.format(\"dxList-nextButtonText\"),\r\n            onItemSwipe: null,\r\n            grouped: false,\r\n            onGroupRendered: null,\r\n            collapsibleGroups: false,\r\n            groupTemplate: \"group\",\r\n            indicateLoading: true,\r\n            activeStateEnabled: true,\r\n            _itemAttributes: {\r\n                role: \"option\"\r\n            },\r\n            _listAttributes: {\r\n                role: \"listbox\"\r\n            },\r\n            useInkRipple: false,\r\n            wrapItemText: false,\r\n            _swipeEnabled: true,\r\n            _revertPageOnEmptyLoad: false,\r\n            showChevronExpr: function(data) {\r\n                return data ? data.showChevron : void 0\r\n            },\r\n            badgeExpr: function(data) {\r\n                return data ? data.badge : void 0\r\n            }\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        var themeName = (0, _themes.current)();\r\n        return this.callBase().concat((0, _uiScrollable.deviceDependentOptions)(), [{\r\n            device: function() {\r\n                return !_support.nativeScrolling\r\n            },\r\n            options: {\r\n                useNativeScrolling: false\r\n            }\r\n        }, {\r\n            device: function(_device) {\r\n                return !_support.nativeScrolling && !_devices.default.isSimulator() && \"desktop\" === _devices.default.real().deviceType && \"generic\" === _device.platform\r\n            },\r\n            options: {\r\n                showScrollbar: \"onHover\",\r\n                pageLoadMode: \"nextButton\"\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)(themeName)\r\n            },\r\n            options: {\r\n                pullingDownText: \"\",\r\n                pulledDownText: \"\",\r\n                refreshingText: \"\",\r\n                pageLoadingText: \"\",\r\n                useInkRipple: true\r\n            }\r\n        }])\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._updateLoadingState(true)\r\n        }\r\n    },\r\n    _itemClass: function() {\r\n        return LIST_ITEM_CLASS\r\n    },\r\n    _itemDataKey: function() {\r\n        return LIST_ITEM_DATA_KEY\r\n    },\r\n    _itemContainer: function() {\r\n        return this._$container\r\n    },\r\n    _saveSelectionChangeEvent: function(e) {\r\n        this._selectionChangeEventInstance = e\r\n    },\r\n    _getSelectionChangeEvent: function() {\r\n        return this._selectionChangeEventInstance\r\n    },\r\n    _refreshItemElements: function() {\r\n        if (!this.option(\"grouped\")) {\r\n            this._itemElementsCache = this._itemContainer().children(this._itemSelector())\r\n        } else {\r\n            this._itemElementsCache = this._itemContainer().children(\".\" + LIST_GROUP_CLASS).children(\".\" + LIST_GROUP_BODY_CLASS).children(this._itemSelector())\r\n        }\r\n    },\r\n    _modifyByChanges: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._refreshItemElements();\r\n        this._updateLoadingState(true)\r\n    },\r\n    reorderItem: function(itemElement, toItemElement) {\r\n        var promise = this.callBase(itemElement, toItemElement);\r\n        return promise.done(function() {\r\n            this._refreshItemElements()\r\n        })\r\n    },\r\n    deleteItem: function(itemElement) {\r\n        var promise = this.callBase(itemElement);\r\n        return promise.done(function() {\r\n            this._refreshItemElements()\r\n        })\r\n    },\r\n    _itemElements: function() {\r\n        return this._itemElementsCache\r\n    },\r\n    _itemSelectHandler: function(e) {\r\n        if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n            return\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    _allowDynamicItemsAppend: function() {\r\n        return true\r\n    },\r\n    _resetDataSourcePageIndex: function() {\r\n        var currentDataSource = this.getDataSource();\r\n        if (currentDataSource && 0 !== currentDataSource.pageIndex()) {\r\n            currentDataSource.pageIndex(0);\r\n            currentDataSource.load()\r\n        }\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._resetDataSourcePageIndex();\r\n        this._$container = this.$element();\r\n        this._initScrollView();\r\n        this._feedbackShowTimeout = LIST_FEEDBACK_SHOW_TIMEOUT;\r\n        this._createGroupRenderAction()\r\n    },\r\n    _scrollBottomMode: function() {\r\n        return \"scrollBottom\" === this.option(\"pageLoadMode\")\r\n    },\r\n    _nextButtonMode: function() {\r\n        return \"nextButton\" === this.option(\"pageLoadMode\")\r\n    },\r\n    _dataSourceOptions: function() {\r\n        var scrollBottom = this._scrollBottomMode();\r\n        var nextButton = this._nextButtonMode();\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            paginate: (0, _common.ensureDefined)(scrollBottom || nextButton, true)\r\n        })\r\n    },\r\n    _getGroupedOption: function() {\r\n        return this.option(\"grouped\")\r\n    },\r\n    _dataSourceFromUrlLoadMode: function() {\r\n        return \"raw\"\r\n    },\r\n    _initScrollView: function() {\r\n        var scrollingEnabled = this.option(\"scrollingEnabled\");\r\n        var pullRefreshEnabled = scrollingEnabled && this.option(\"pullRefreshEnabled\");\r\n        var autoPagingEnabled = scrollingEnabled && this._scrollBottomMode() && !!this._dataSource;\r\n        this._scrollView = this._createComponent(this.$element(), getScrollView(), {\r\n            disabled: this.option(\"disabled\") || !scrollingEnabled,\r\n            onScroll: this._scrollHandler.bind(this),\r\n            onPullDown: pullRefreshEnabled ? this._pullDownHandler.bind(this) : null,\r\n            onReachBottom: autoPagingEnabled ? this._scrollBottomHandler.bind(this) : null,\r\n            showScrollbar: this.option(\"showScrollbar\"),\r\n            useNative: this.option(\"useNativeScrolling\"),\r\n            bounceEnabled: this.option(\"bounceEnabled\"),\r\n            scrollByContent: this.option(\"scrollByContent\"),\r\n            scrollByThumb: this.option(\"scrollByThumb\"),\r\n            pullingDownText: this.option(\"pullingDownText\"),\r\n            pulledDownText: this.option(\"pulledDownText\"),\r\n            refreshingText: this.option(\"refreshingText\"),\r\n            reachBottomText: this.option(\"pageLoadingText\"),\r\n            useKeyboard: false\r\n        });\r\n        this._$container = (0, _renderer.default)(this._scrollView.content());\r\n        if (this.option(\"wrapItemText\")) {\r\n            this._$container.addClass(WRAP_ITEM_TEXT_CLASS)\r\n        }\r\n        this._createScrollViewActions()\r\n    },\r\n    _createScrollViewActions: function() {\r\n        this._scrollAction = this._createActionByOption(\"onScroll\");\r\n        this._pullRefreshAction = this._createActionByOption(\"onPullRefresh\");\r\n        this._pageLoadingAction = this._createActionByOption(\"onPageLoading\")\r\n    },\r\n    _scrollHandler: function(e) {\r\n        this._scrollAction && this._scrollAction(e)\r\n    },\r\n    _initTemplates: function() {\r\n        this._templateManager.addDefaultTemplates({\r\n            group: new _bindable_template.BindableTemplate(function($container, data) {\r\n                if ((0, _type.isPlainObject)(data)) {\r\n                    if (data.key) {\r\n                        $container.text(data.key)\r\n                    }\r\n                } else {\r\n                    $container.text(String(data))\r\n                }\r\n            }, [\"key\"], this.option(\"integrationOptions.watchMethod\"))\r\n        });\r\n        this.callBase()\r\n    },\r\n    _prepareDefaultItemTemplate: function(data, $container) {\r\n        this.callBase(data, $container);\r\n        if (data.icon) {\r\n            var $icon = (0, _icon.getImageContainer)(data.icon).addClass(LIST_ITEM_ICON_CLASS);\r\n            var $iconContainer = (0, _renderer.default)(\"<div>\").addClass(LIST_ITEM_ICON_CONTAINER_CLASS);\r\n            $iconContainer.append($icon);\r\n            $container.prepend($iconContainer)\r\n        }\r\n    },\r\n    _getBindableFields: function() {\r\n        return [\"text\", \"html\", \"icon\"]\r\n    },\r\n    _updateLoadingState: function(tryLoadMore) {\r\n        var isDataLoaded = !tryLoadMore || this._isLastPage();\r\n        var scrollBottomMode = this._scrollBottomMode();\r\n        var stopLoading = isDataLoaded || !scrollBottomMode;\r\n        var hideLoadIndicator = stopLoading && !this._isDataSourceLoading();\r\n        if (stopLoading || this._scrollViewIsFull()) {\r\n            this._scrollView.release(hideLoadIndicator);\r\n            this._toggleNextButton(this._shouldRenderNextButton() && !this._isLastPage());\r\n            this._loadIndicationSuppressed(false)\r\n        } else {\r\n            this._infiniteDataLoading()\r\n        }\r\n    },\r\n    _shouldRenderNextButton: function() {\r\n        return this._nextButtonMode() && this._dataSource && this._dataSource.isLoaded()\r\n    },\r\n    _dataSourceLoadingChangedHandler: function(isLoading) {\r\n        if (this._loadIndicationSuppressed()) {\r\n            return\r\n        }\r\n        if (isLoading && this.option(\"indicateLoading\")) {\r\n            this._showLoadingIndicatorTimer = setTimeout(function() {\r\n                var isEmpty = !this._itemElements().length;\r\n                if (this._scrollView && !isEmpty) {\r\n                    this._scrollView.startLoading()\r\n                }\r\n            }.bind(this))\r\n        } else {\r\n            clearTimeout(this._showLoadingIndicatorTimer);\r\n            this._scrollView && this._scrollView.finishLoading()\r\n        }\r\n    },\r\n    _dataSourceChangedHandler: function(newItems) {\r\n        if (!this._shouldAppendItems() && (0, _window.hasWindow)()) {\r\n            this._scrollView && this._scrollView.scrollTo(0)\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _refreshContent: function() {\r\n        this._prepareContent();\r\n        this._fireContentReadyAction()\r\n    },\r\n    _hideLoadingIfLoadIndicationOff: function() {\r\n        if (!this.option(\"indicateLoading\")) {\r\n            this._dataSourceLoadingChangedHandler(false)\r\n        }\r\n    },\r\n    _loadIndicationSuppressed: function(value) {\r\n        if (!arguments.length) {\r\n            return this._isLoadIndicationSuppressed\r\n        }\r\n        this._isLoadIndicationSuppressed = value\r\n    },\r\n    _scrollViewIsFull: function() {\r\n        return !this._scrollView || this._scrollView.isFull()\r\n    },\r\n    _pullDownHandler: function(e) {\r\n        this._pullRefreshAction(e);\r\n        if (this._dataSource && !this._isDataSourceLoading()) {\r\n            this._clearSelectedItems();\r\n            this._dataSource.pageIndex(0);\r\n            this._dataSource.reload()\r\n        } else {\r\n            this._updateLoadingState()\r\n        }\r\n    },\r\n    _infiniteDataLoading: function() {\r\n        var _this = this;\r\n        var isElementVisible = this.$element().is(\":visible\");\r\n        if (isElementVisible && !this._scrollViewIsFull() && !this._isDataSourceLoading() && !this._isLastPage()) {\r\n            clearTimeout(this._loadNextPageTimer);\r\n            this._loadNextPageTimer = setTimeout(function() {\r\n                _this._loadNextPage().done(_this._setPreviousPageIfNewIsEmpty.bind(_this))\r\n            })\r\n        }\r\n    },\r\n    _setPreviousPageIfNewIsEmpty: function(result) {\r\n        if (this.option(\"_revertPageOnEmptyLoad\")) {\r\n            var dataSource = this.getDataSource();\r\n            var pageIndex = null === dataSource || void 0 === dataSource ? void 0 : dataSource.pageIndex();\r\n            if (0 === (null === result || void 0 === result ? void 0 : result.length) && pageIndex > 0) {\r\n                this._fireContentReadyAction();\r\n                dataSource.pageIndex(pageIndex - 1)\r\n            }\r\n        }\r\n    },\r\n    _scrollBottomHandler: function(e) {\r\n        this._pageLoadingAction(e);\r\n        if (!this._isDataSourceLoading() && !this._isLastPage()) {\r\n            this._loadNextPage()\r\n        } else {\r\n            this._updateLoadingState()\r\n        }\r\n    },\r\n    _renderItems: function(items) {\r\n        if (this.option(\"grouped\")) {\r\n            (0, _iterator.each)(items, this._renderGroup.bind(this));\r\n            this._attachGroupCollapseEvent();\r\n            this._renderEmptyMessage();\r\n            if ((0, _themes.isMaterial)()) {\r\n                this.attachGroupHeaderInkRippleEvents()\r\n            }\r\n        } else {\r\n            this.callBase.apply(this, arguments)\r\n        }\r\n        this._refreshItemElements();\r\n        this._updateLoadingState(true)\r\n    },\r\n    _attachGroupCollapseEvent: function() {\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n        var $element = this.$element();\r\n        var collapsibleGroups = this.option(\"collapsibleGroups\");\r\n        $element.toggleClass(LIST_COLLAPSIBLE_GROUPS_CLASS, collapsibleGroups);\r\n        _events_engine.default.off($element, eventName, selector);\r\n        if (collapsibleGroups) {\r\n            _events_engine.default.on($element, eventName, selector, function(e) {\r\n                this._createAction(function(e) {\r\n                    var $group = (0, _renderer.default)(e.event.currentTarget).parent();\r\n                    this._collapseGroupHandler($group);\r\n                    if (this.option(\"focusStateEnabled\")) {\r\n                        this.option(\"focusedElement\", (0, _element.getPublicElement)($group.find(\".\" + LIST_ITEM_CLASS).eq(0)))\r\n                    }\r\n                }.bind(this), {\r\n                    validatingTargetName: \"element\"\r\n                })({\r\n                    event: e\r\n                })\r\n            }.bind(this))\r\n        }\r\n    },\r\n    _collapseGroupHandler: function($group, toggle) {\r\n        var deferred = new _deferred.Deferred;\r\n        if ($group.hasClass(LIST_GROUP_COLLAPSED_CLASS) === toggle) {\r\n            return deferred.resolve()\r\n        }\r\n        var $groupBody = $group.children(\".\" + LIST_GROUP_BODY_CLASS);\r\n        var startHeight = $groupBody.outerHeight();\r\n        var endHeight = 0 === startHeight ? $groupBody.height(\"auto\").outerHeight() : 0;\r\n        $group.toggleClass(LIST_GROUP_COLLAPSED_CLASS, toggle);\r\n        _fx.default.animate($groupBody, {\r\n            type: \"custom\",\r\n            from: {\r\n                height: startHeight\r\n            },\r\n            to: {\r\n                height: endHeight\r\n            },\r\n            duration: 200,\r\n            complete: function() {\r\n                this.updateDimensions();\r\n                this._updateLoadingState();\r\n                deferred.resolve()\r\n            }.bind(this)\r\n        });\r\n        return deferred.promise()\r\n    },\r\n    _dataSourceLoadErrorHandler: function() {\r\n        this._forgetNextPageLoading();\r\n        if (this._initialized) {\r\n            this._renderEmptyMessage();\r\n            this._updateLoadingState()\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this._itemElementsCache = (0, _renderer.default)();\r\n        this.$element().addClass(LIST_CLASS);\r\n        this.callBase();\r\n        this.option(\"useInkRipple\") && this._renderInkRipple();\r\n        this.setAria(\"role\", this.option(\"_listAttributes\").role)\r\n    },\r\n    _renderInkRipple: function() {\r\n        this._inkRipple = (0, _utils.render)()\r\n    },\r\n    _toggleActiveState: function($element, value, e) {\r\n        this.callBase.apply(this, arguments);\r\n        var that = this;\r\n        if (!this._inkRipple) {\r\n            return\r\n        }\r\n        var config = {\r\n            element: $element,\r\n            event: e\r\n        };\r\n        if (value) {\r\n            if ((0, _themes.isMaterial)()) {\r\n                this._inkRippleTimer = setTimeout(function() {\r\n                    that._inkRipple.showWave(config)\r\n                }, LIST_FEEDBACK_SHOW_TIMEOUT / 2)\r\n            } else {\r\n                that._inkRipple.showWave(config)\r\n            }\r\n        } else {\r\n            clearTimeout(this._inkRippleTimer);\r\n            this._inkRipple.hideWave(config)\r\n        }\r\n    },\r\n    _postprocessRenderItem: function(args) {\r\n        this._refreshItemElements();\r\n        this.callBase.apply(this, arguments);\r\n        if (this.option(\"_swipeEnabled\")) {\r\n            this._attachSwipeEvent((0, _renderer.default)(args.itemElement))\r\n        }\r\n    },\r\n    _attachSwipeEvent: function($itemElement) {\r\n        var endEventName = (0, _index.addNamespace)(_swipe.end, this.NAME);\r\n        _events_engine.default.on($itemElement, endEventName, this._itemSwipeEndHandler.bind(this))\r\n    },\r\n    _itemSwipeEndHandler: function(e) {\r\n        this._itemDXEventHandler(e, \"onItemSwipe\", {\r\n            direction: e.offset < 0 ? \"left\" : \"right\"\r\n        })\r\n    },\r\n    _nextButtonHandler: function(e) {\r\n        this._pageLoadingAction(e);\r\n        var source = this._dataSource;\r\n        if (source && !source.isLoading()) {\r\n            this._scrollView.toggleLoading(true);\r\n            this._$nextButton.detach();\r\n            this._loadIndicationSuppressed(true);\r\n            this._loadNextPage()\r\n        }\r\n    },\r\n    _renderGroup: function(index, group) {\r\n        var $groupElement = (0, _renderer.default)(\"<div>\").addClass(LIST_GROUP_CLASS).appendTo(this._itemContainer());\r\n        var $groupHeaderElement = (0, _renderer.default)(\"<div>\").addClass(LIST_GROUP_HEADER_CLASS).appendTo($groupElement);\r\n        var groupTemplateName = this.option(\"groupTemplate\");\r\n        var groupTemplate = this._getTemplate(group.template || groupTemplateName, group, index, $groupHeaderElement);\r\n        var renderArgs = {\r\n            index: index,\r\n            itemData: group,\r\n            container: (0, _element.getPublicElement)($groupHeaderElement)\r\n        };\r\n        this._createItemByTemplate(groupTemplate, renderArgs);\r\n        if ((0, _themes.isMaterial)()) {\r\n            (0, _renderer.default)(\"<div>\").addClass(LIST_GROUP_HEADER_INDICATOR_CLASS).prependTo($groupHeaderElement)\r\n        }\r\n        this._renderingGroupIndex = index;\r\n        var $groupBody = (0, _renderer.default)(\"<div>\").addClass(LIST_GROUP_BODY_CLASS).appendTo($groupElement);\r\n        (0, _iterator.each)(groupItemsGetter(group) || [], function(index, item) {\r\n            this._renderItem(index, item, $groupBody)\r\n        }.bind(this));\r\n        this._groupRenderAction({\r\n            groupElement: (0, _element.getPublicElement)($groupElement),\r\n            groupIndex: index,\r\n            groupData: group\r\n        })\r\n    },\r\n    downInkRippleHandler: function(e) {\r\n        this._toggleActiveState((0, _renderer.default)(e.currentTarget), true, e)\r\n    },\r\n    upInkRippleHandler: function(e) {\r\n        this._toggleActiveState((0, _renderer.default)(e.currentTarget), false)\r\n    },\r\n    attachGroupHeaderInkRippleEvents: function() {\r\n        var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n        var $element = this.$element();\r\n        this._downInkRippleHandler = this._downInkRippleHandler || this.downInkRippleHandler.bind(this);\r\n        this._upInkRippleHandler = this._upInkRippleHandler || this.upInkRippleHandler.bind(this);\r\n        var downArguments = [$element, \"dxpointerdown\", selector, this._downInkRippleHandler];\r\n        var upArguments = [$element, \"dxpointerup dxpointerout\", selector, this._upInkRippleHandler];\r\n        _events_engine.default.off.apply(_events_engine.default, downArguments);\r\n        _events_engine.default.on.apply(_events_engine.default, downArguments);\r\n        _events_engine.default.off.apply(_events_engine.default, upArguments);\r\n        _events_engine.default.on.apply(_events_engine.default, upArguments)\r\n    },\r\n    _createGroupRenderAction: function() {\r\n        this._groupRenderAction = this._createActionByOption(\"onGroupRendered\")\r\n    },\r\n    _clean: function() {\r\n        clearTimeout(this._inkRippleTimer);\r\n        if (this._$nextButton) {\r\n            this._$nextButton.remove();\r\n            this._$nextButton = null\r\n        }\r\n        delete this._inkRipple;\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _dispose: function() {\r\n        clearTimeout(this._holdTimer);\r\n        clearTimeout(this._loadNextPageTimer);\r\n        clearTimeout(this._showLoadingIndicatorTimer);\r\n        this.callBase()\r\n    },\r\n    _toggleDisabledState: function(value) {\r\n        this.callBase(value);\r\n        this._scrollView.option(\"disabled\", value || !this.option(\"scrollingEnabled\"))\r\n    },\r\n    _toggleNextButton: function(value) {\r\n        var dataSource = this._dataSource;\r\n        var $nextButton = this._getNextButton();\r\n        this.$element().toggleClass(LIST_HAS_NEXT_CLASS, value);\r\n        if (value && dataSource && dataSource.isLoaded()) {\r\n            $nextButton.appendTo(this._itemContainer())\r\n        }\r\n        if (!value) {\r\n            $nextButton.detach()\r\n        }\r\n    },\r\n    _getNextButton: function() {\r\n        if (!this._$nextButton) {\r\n            this._$nextButton = this._createNextButton()\r\n        }\r\n        return this._$nextButton\r\n    },\r\n    _createNextButton: function() {\r\n        var $result = (0, _renderer.default)(\"<div>\").addClass(LIST_NEXT_BUTTON_CLASS);\r\n        var $button = (0, _renderer.default)(\"<div>\").appendTo($result);\r\n        this._createComponent($button, _button.default, {\r\n            text: this.option(\"nextButtonText\"),\r\n            onClick: this._nextButtonHandler.bind(this),\r\n            type: (0, _themes.isMaterial)() ? \"default\" : void 0,\r\n            integrationOptions: {}\r\n        });\r\n        return $result\r\n    },\r\n    _moveFocus: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this.scrollToItem(this.option(\"focusedElement\"))\r\n    },\r\n    _refresh: function() {\r\n        if (!(0, _window.hasWindow)()) {\r\n            this.callBase()\r\n        } else {\r\n            var scrollTop = this._scrollView.scrollTop();\r\n            this.callBase();\r\n            scrollTop && this._scrollView.scrollTo(scrollTop)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"pageLoadMode\":\r\n                this._toggleNextButton(args.value);\r\n                this._initScrollView();\r\n                break;\r\n            case \"dataSource\":\r\n                this.callBase(args);\r\n                this._initScrollView();\r\n                break;\r\n            case \"pullingDownText\":\r\n            case \"pulledDownText\":\r\n            case \"refreshingText\":\r\n            case \"pageLoadingText\":\r\n            case \"showScrollbar\":\r\n            case \"bounceEnabled\":\r\n            case \"scrollByContent\":\r\n            case \"scrollByThumb\":\r\n            case \"useNativeScrolling\":\r\n            case \"scrollingEnabled\":\r\n            case \"pullRefreshEnabled\":\r\n                this._initScrollView();\r\n                this._updateLoadingState();\r\n                break;\r\n            case \"nextButtonText\":\r\n            case \"onItemSwipe\":\r\n            case \"useInkRipple\":\r\n                this._invalidate();\r\n                break;\r\n            case \"onScroll\":\r\n            case \"onPullRefresh\":\r\n            case \"onPageLoading\":\r\n                this._createScrollViewActions();\r\n                break;\r\n            case \"grouped\":\r\n            case \"collapsibleGroups\":\r\n            case \"groupTemplate\":\r\n                this._invalidate();\r\n                break;\r\n            case \"wrapItemText\":\r\n                this._$container.toggleClass(WRAP_ITEM_TEXT_CLASS, args.value);\r\n                break;\r\n            case \"onGroupRendered\":\r\n                this._createGroupRenderAction();\r\n                break;\r\n            case \"width\":\r\n            case \"height\":\r\n                this.callBase(args);\r\n                this._scrollView.update();\r\n                break;\r\n            case \"indicateLoading\":\r\n                this._hideLoadingIfLoadIndicationOff();\r\n                break;\r\n            case \"visible\":\r\n                this.callBase(args);\r\n                this._scrollView.update();\r\n                break;\r\n            case \"rtlEnabled\":\r\n                this._initScrollView();\r\n                this.callBase(args);\r\n                break;\r\n            case \"showChevronExpr\":\r\n            case \"badgeExpr\":\r\n                this._invalidate();\r\n                break;\r\n            case \"_swipeEnabled\":\r\n            case \"_revertPageOnEmptyLoad\":\r\n                break;\r\n            case \"_listAttributes\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _extendActionArgs: function($itemElement) {\r\n        if (!this.option(\"grouped\")) {\r\n            return this.callBase($itemElement)\r\n        }\r\n        var $group = $itemElement.closest(\".\" + LIST_GROUP_CLASS);\r\n        var $item = $group.find(\".\" + LIST_ITEM_CLASS);\r\n        return (0, _extend.extend)(this.callBase($itemElement), {\r\n            itemIndex: {\r\n                group: $group.index(),\r\n                item: $item.index($itemElement)\r\n            }\r\n        })\r\n    },\r\n    expandGroup: function(groupIndex) {\r\n        var deferred = new _deferred.Deferred;\r\n        var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n        this._collapseGroupHandler($group, false).done(function() {\r\n            deferred.resolveWith(this)\r\n        }.bind(this));\r\n        return deferred.promise()\r\n    },\r\n    collapseGroup: function(groupIndex) {\r\n        var deferred = new _deferred.Deferred;\r\n        var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n        this._collapseGroupHandler($group, true).done(function() {\r\n            deferred.resolveWith(this)\r\n        }.bind(this));\r\n        return deferred\r\n    },\r\n    updateDimensions: function() {\r\n        var that = this;\r\n        var deferred = new _deferred.Deferred;\r\n        if (that._scrollView) {\r\n            that._scrollView.update().done(function() {\r\n                !that._scrollViewIsFull() && that._updateLoadingState(true);\r\n                deferred.resolveWith(that)\r\n            })\r\n        } else {\r\n            deferred.resolveWith(that)\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    reload: function() {\r\n        this.callBase();\r\n        this.scrollTo(0);\r\n        this._pullDownHandler()\r\n    },\r\n    repaint: function() {\r\n        this.scrollTo(0);\r\n        this.callBase()\r\n    },\r\n    scrollTop: function() {\r\n        return this._scrollView.scrollOffset().top\r\n    },\r\n    clientHeight: function() {\r\n        return this._scrollView.clientHeight()\r\n    },\r\n    scrollHeight: function() {\r\n        return this._scrollView.scrollHeight()\r\n    },\r\n    scrollBy: function(distance) {\r\n        this._scrollView.scrollBy(distance)\r\n    },\r\n    scrollTo: function(location) {\r\n        this._scrollView.scrollTo(location)\r\n    },\r\n    scrollToItem: function(itemElement) {\r\n        var $item = this._editStrategy.getItemElement(itemElement);\r\n        this._scrollView.scrollToElement($item)\r\n    }\r\n}).include(_grouped_data_converter_mixin.default);\r\nexports.ListBase = ListBase;\r\nListBase.ItemClass = _item.default;\r\n\r\nfunction getScrollView() {\r\n    return _scrollView || _scroll_view.default\r\n}\r\n\r\nfunction setScrollView(value) {\r\n    _scrollView = value\r\n}\r\n","/**\r\n * DevExtreme (core/utils/variable_wrapper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _console = require(\"./console\");\r\nvar _dependency_injector = _interopRequireDefault(require(\"./dependency_injector\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = (0, _dependency_injector.default)({\r\n    isWrapped: function() {\r\n        return false\r\n    },\r\n    isWritableWrapped: function() {\r\n        return false\r\n    },\r\n    wrap: function(value) {\r\n        return value\r\n    },\r\n    unwrap: function(value) {\r\n        return value\r\n    },\r\n    assign: function() {\r\n        _console.logger.error(\"Method 'assign' should not be used for not wrapped variables. Use 'isWrapped' method for ensuring.\")\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/dialog.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.confirm = exports.alert = exports.custom = exports.title = exports.FakeDialogComponent = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component = _interopRequireDefault(require(\"../core/component\"));\r\nvar _action = _interopRequireDefault(require(\"../core/action\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _config = _interopRequireDefault(require(\"../core/config\"));\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _view_port = require(\"../core/utils/view_port\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\nvar _popup = _interopRequireDefault(require(\"./popup\"));\r\nvar _common = require(\"../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DEFAULT_BUTTON = {\r\n    text: \"OK\",\r\n    onClick: function() {\r\n        return true\r\n    }\r\n};\r\nvar DX_DIALOG_CLASSNAME = \"dx-dialog\";\r\nvar DX_DIALOG_WRAPPER_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-wrapper\");\r\nvar DX_DIALOG_ROOT_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-root\");\r\nvar DX_DIALOG_CONTENT_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-content\");\r\nvar DX_DIALOG_MESSAGE_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-message\");\r\nvar DX_DIALOG_BUTTONS_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-buttons\");\r\nvar DX_DIALOG_BUTTON_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-button\");\r\nvar DX_BUTTON_CLASSNAME = \"dx-button\";\r\nvar FakeDialogComponent = _component.default.inherit({\r\n    ctor: function(element, options) {\r\n        this.callBase(options)\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"ios\"\r\n            },\r\n            options: {\r\n                width: 276\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"android\"\r\n            },\r\n            options: {\r\n                lWidth: \"60%\",\r\n                pWidth: \"80%\"\r\n            }\r\n        }])\r\n    }\r\n});\r\nexports.FakeDialogComponent = FakeDialogComponent;\r\nvar title = \"\";\r\nexports.title = title;\r\nvar custom = function(options) {\r\n    var deferred = new _deferred.Deferred;\r\n    var defaultOptions = (new FakeDialogComponent).option();\r\n    options = (0, _extend.extend)(defaultOptions, options);\r\n    var $element = (0, _renderer.default)(\"<div>\").addClass(DX_DIALOG_CLASSNAME).appendTo((0, _view_port.value)());\r\n    var isMessageDefined = \"message\" in options;\r\n    var isMessageHtmlDefined = \"messageHtml\" in options;\r\n    if (isMessageDefined) {\r\n        _ui.default.log(\"W1013\")\r\n    }\r\n    var messageHtml = String(isMessageHtmlDefined ? options.messageHtml : options.message);\r\n    var $message = (0, _renderer.default)(\"<div>\").addClass(DX_DIALOG_MESSAGE_CLASSNAME).html(messageHtml);\r\n    var popupToolbarItems = [];\r\n    (0, _iterator.each)(options.buttons || [DEFAULT_BUTTON], function() {\r\n        var action = new _action.default(this.onClick, {\r\n            context: popupInstance\r\n        });\r\n        popupToolbarItems.push({\r\n            toolbar: \"bottom\",\r\n            location: _devices.default.current().android ? \"after\" : \"center\",\r\n            widget: \"dxButton\",\r\n            options: (0, _extend.extend)({}, this, {\r\n                onClick: function() {\r\n                    var result = action.execute.apply(action, arguments);\r\n                    hide(result)\r\n                }\r\n            })\r\n        })\r\n    });\r\n    var popupInstance = new _popup.default($element, (0, _extend.extend)({\r\n        title: options.title || title,\r\n        showTitle: (0, _common.ensureDefined)(options.showTitle, true),\r\n        dragEnabled: (0, _common.ensureDefined)(options.dragEnabled, true),\r\n        height: \"auto\",\r\n        width: function() {\r\n            var isPortrait = (0, _renderer.default)(window).height() > (0, _renderer.default)(window).width();\r\n            var key = (isPortrait ? \"p\" : \"l\") + \"Width\";\r\n            var widthOption = Object.prototype.hasOwnProperty.call(options, key) ? options[key] : options.width;\r\n            return (0, _type.isFunction)(widthOption) ? widthOption() : widthOption\r\n        },\r\n        showCloseButton: options.showCloseButton || false,\r\n        ignoreChildEvents: false,\r\n        onContentReady: function(args) {\r\n            args.component.$content().addClass(DX_DIALOG_CONTENT_CLASSNAME).append($message)\r\n        },\r\n        onShowing: function(e) {\r\n            e.component.bottomToolbar().addClass(DX_DIALOG_BUTTONS_CLASSNAME).find(\".\".concat(DX_BUTTON_CLASSNAME)).addClass(DX_DIALOG_BUTTON_CLASSNAME);\r\n            (0, _dom.resetActiveElement)()\r\n        },\r\n        onShown: function(e) {\r\n            var $firstButton = e.component.bottomToolbar().find(\".\".concat(DX_BUTTON_CLASSNAME)).first();\r\n            _events_engine.default.trigger($firstButton, \"focus\")\r\n        },\r\n        onHiding: function() {\r\n            deferred.reject()\r\n        },\r\n        toolbarItems: popupToolbarItems,\r\n        animation: {\r\n            show: {\r\n                type: \"pop\",\r\n                duration: 400\r\n            },\r\n            hide: {\r\n                type: \"pop\",\r\n                duration: 400,\r\n                to: {\r\n                    opacity: 0,\r\n                    scale: 0\r\n                },\r\n                from: {\r\n                    opacity: 1,\r\n                    scale: 1\r\n                }\r\n            }\r\n        },\r\n        rtlEnabled: (0, _config.default)().rtlEnabled,\r\n        boundaryOffset: {\r\n            h: 10,\r\n            v: 0\r\n        }\r\n    }, options.popupOptions));\r\n    popupInstance._wrapper().addClass(DX_DIALOG_WRAPPER_CLASSNAME);\r\n    if (options.position) {\r\n        popupInstance.option(\"position\", options.position)\r\n    }\r\n    popupInstance._wrapper().addClass(DX_DIALOG_ROOT_CLASSNAME);\r\n\r\n    function show() {\r\n        popupInstance.show();\r\n        return deferred.promise()\r\n    }\r\n\r\n    function hide(value) {\r\n        deferred.resolve(value);\r\n        popupInstance.hide().done(function() {\r\n            popupInstance.$element().remove()\r\n        })\r\n    }\r\n    return {\r\n        show: show,\r\n        hide: hide\r\n    }\r\n};\r\nexports.custom = custom;\r\nvar alert = function(messageHtml, title, showTitle) {\r\n    var options = (0, _type.isPlainObject)(messageHtml) ? messageHtml : {\r\n        title: title,\r\n        messageHtml: messageHtml,\r\n        showTitle: showTitle,\r\n        dragEnabled: showTitle\r\n    };\r\n    return custom(options).show()\r\n};\r\nexports.alert = alert;\r\nvar confirm = function(messageHtml, title, showTitle) {\r\n    var options = (0, _type.isPlainObject)(messageHtml) ? messageHtml : {\r\n        title: title,\r\n        messageHtml: messageHtml,\r\n        showTitle: showTitle,\r\n        buttons: [{\r\n            text: _message.default.format(\"Yes\"),\r\n            onClick: function() {\r\n                return true\r\n            }\r\n        }, {\r\n            text: _message.default.format(\"No\"),\r\n            onClick: function() {\r\n                return false\r\n            }\r\n        }],\r\n        dragEnabled: showTitle\r\n    };\r\n    return custom(options).show()\r\n};\r\nexports.confirm = confirm;\r\n","/**\r\n * DevExtreme (ui/button.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _utils = require(\"./widget/utils.ink_ripple\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar themes = _interopRequireWildcard(require(\"./themes\"));\r\nvar _action = _interopRequireDefault(require(\"../core/action\"));\r\nvar _validation_engine = _interopRequireDefault(require(\"./validation_engine\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _short = require(\"../events/short\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _function_template = require(\"../core/templates/function_template\");\r\nvar _icon = require(\"../core/utils/icon\");\r\nvar _element = require(\"../core/element\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar Button = function(_Widget) {\r\n    _inherits(Button, _Widget);\r\n    var _super = _createSuper(Button);\r\n\r\n    function Button() {\r\n        var _this;\r\n        _classCallCheck(this, Button);\r\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n            args[_key] = arguments[_key]\r\n        }\r\n        _this = _super.call.apply(_super, [this].concat(args));\r\n        _this._feedbackHideTimeout = 100;\r\n        return _this\r\n    }\r\n    _createClass(Button, [{\r\n        key: \"_$content\",\r\n        value: function() {\r\n            return this.$element().find(\".dx-button-content\")\r\n        }\r\n    }, {\r\n        key: \"_$submitInput\",\r\n        value: function() {\r\n            return this.$element().find(\".dx-button-submit-input\")\r\n        }\r\n    }, {\r\n        key: \"_attachActiveEvents\",\r\n        value: function(active, inactive) {\r\n            var $el = this._eventBindingTarget();\r\n            var namespace = \"inkRipple\";\r\n            var selector = this._activeStateUnit;\r\n            _short.active.off($el, {\r\n                namespace: namespace,\r\n                selector: selector\r\n            });\r\n            _short.active.on($el, new _action.default(active), new _action.default(inactive, {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            }), {\r\n                showTimeout: this._feedbackShowTimeout,\r\n                hideTimeout: this._feedbackHideTimeout,\r\n                selector: selector,\r\n                namespace: namespace\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_defaultOptionsRules\",\r\n        value: function() {\r\n            return _get(_getPrototypeOf(Button.prototype), \"_defaultOptionsRules\", this).call(this).concat([{\r\n                device: function() {\r\n                    return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n                },\r\n                options: {\r\n                    focusStateEnabled: true\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return themes.isMaterial(themes.current())\r\n                },\r\n                options: {\r\n                    useInkRipple: true\r\n                }\r\n            }])\r\n        }\r\n    }, {\r\n        key: \"_executeClickAction\",\r\n        value: function(event) {\r\n            this._clickAction({\r\n                validationGroup: this._validationGroupConfig,\r\n                event: event\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_findGroup\",\r\n        value: function() {\r\n            var $element = this.$element();\r\n            var model = this._modelByElement($element);\r\n            var _this$option = this.option(),\r\n                validationGroup = _this$option.validationGroup;\r\n            return validationGroup || _validation_engine.default.findGroup($element, model)\r\n        }\r\n    }, {\r\n        key: \"_getContentData\",\r\n        value: function() {\r\n            var _this$option2 = this.option(),\r\n                icon = _this$option2.icon,\r\n                text = _this$option2.text,\r\n                type = _this$option2.type,\r\n                _templateData = _this$option2._templateData;\r\n            return (0, _extend.extend)({\r\n                icon: \"back\" === type && !icon ? \"back\" : icon,\r\n                text: text\r\n            }, _templateData)\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(Button.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                hoverStateEnabled: true,\r\n                onClick: null,\r\n                type: \"normal\",\r\n                text: \"\",\r\n                icon: \"\",\r\n                iconPosition: \"left\",\r\n                validationGroup: void 0,\r\n                activeStateEnabled: true,\r\n                template: \"content\",\r\n                useSubmitBehavior: false,\r\n                useInkRipple: false,\r\n                _templateData: {},\r\n                stylingMode: \"contained\"\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getSubmitAction\",\r\n        value: function() {\r\n            var _this2 = this;\r\n            var needValidate = true;\r\n            var validationStatus = \"valid\";\r\n            return this._createAction(function(_ref) {\r\n                var event = _ref.event;\r\n                if (needValidate) {\r\n                    var validationGroup = _this2._validationGroupConfig;\r\n                    if (validationGroup) {\r\n                        var _validationGroup$vali = validationGroup.validate(),\r\n                            status = _validationGroup$vali.status,\r\n                            complete = _validationGroup$vali.complete;\r\n                        validationStatus = status;\r\n                        if (\"pending\" === status) {\r\n                            needValidate = false;\r\n                            _this2.option(\"disabled\", true);\r\n                            complete.then(function(_ref2) {\r\n                                var status = _ref2.status;\r\n                                _this2.option(\"disabled\", false);\r\n                                validationStatus = status;\r\n                                \"valid\" === validationStatus && _this2._submitInput().click();\r\n                                needValidate = true\r\n                            })\r\n                        }\r\n                    }\r\n                }\r\n                \"valid\" !== validationStatus && event.preventDefault();\r\n                event.stopPropagation()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            this.$element().addClass(\"dx-button\");\r\n            this._renderType();\r\n            this._renderStylingMode();\r\n            this._renderInkRipple();\r\n            this._renderClick();\r\n            this._updateAriaLabel();\r\n            _get(_getPrototypeOf(Button.prototype), \"_initMarkup\", this).call(this);\r\n            this._updateContent();\r\n            this.setAria(\"role\", \"button\")\r\n        }\r\n    }, {\r\n        key: \"_getAnonymousTemplateName\",\r\n        value: function() {\r\n            return ANONYMOUS_TEMPLATE_NAME\r\n        }\r\n    }, {\r\n        key: \"_initTemplates\",\r\n        value: function() {\r\n            var _this3 = this;\r\n            this._templateManager.addDefaultTemplates({\r\n                content: new _function_template.FunctionTemplate(function(_ref3) {\r\n                    var _ref3$model = _ref3.model,\r\n                        model = void 0 === _ref3$model ? {} : _ref3$model,\r\n                        container = _ref3.container;\r\n                    var text = model.text,\r\n                        icon = model.icon;\r\n                    var _this3$option = _this3.option(),\r\n                        iconPosition = _this3$option.iconPosition;\r\n                    var $icon = (0, _icon.getImageContainer)(icon);\r\n                    var $textContainer = text && (0, _renderer.default)(\"<span>\").text(text).addClass(\"dx-button-text\");\r\n                    var $container = (0, _renderer.default)(container);\r\n                    $container.append($textContainer);\r\n                    if (\"left\" === iconPosition) {\r\n                        $container.prepend($icon)\r\n                    } else {\r\n                        $icon.addClass(\"dx-icon-right\");\r\n                        $container.append($icon)\r\n                    }\r\n                })\r\n            });\r\n            _get(_getPrototypeOf(Button.prototype), \"_initTemplates\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            var name = args.name,\r\n                previousValue = args.previousValue;\r\n            switch (name) {\r\n                case \"onClick\":\r\n                    this._updateClick();\r\n                    break;\r\n                case \"icon\":\r\n                case \"text\":\r\n                    this._updateContent();\r\n                    this._updateAriaLabel();\r\n                    break;\r\n                case \"type\":\r\n                    this._updateType(previousValue);\r\n                    this._updateContent();\r\n                    break;\r\n                case \"_templateData\":\r\n                    break;\r\n                case \"template\":\r\n                case \"iconPosition\":\r\n                    this._updateContent();\r\n                    break;\r\n                case \"stylingMode\":\r\n                    this._updateStylingMode();\r\n                    break;\r\n                case \"useSubmitBehavior\":\r\n                    this._updateSubmitInput();\r\n                    break;\r\n                case \"useInkRipple\":\r\n                    this._invalidate();\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(Button.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderClick\",\r\n        value: function() {\r\n            var _this4 = this;\r\n            var $el = this.$element();\r\n            _short.dxClick.off($el, {\r\n                namespace: this.NAME\r\n            });\r\n            _short.dxClick.on($el, function(event) {\r\n                return _this4._executeClickAction(event)\r\n            }, {\r\n                namespace: this.NAME\r\n            });\r\n            this._updateClick()\r\n        }\r\n    }, {\r\n        key: \"_renderInkRipple\",\r\n        value: function() {\r\n            var _this5 = this;\r\n            var _this$option3 = this.option(),\r\n                text = _this$option3.text,\r\n                icon = _this$option3.icon,\r\n                type = _this$option3.type,\r\n                useInkRipple = _this$option3.useInkRipple;\r\n            if (useInkRipple) {\r\n                var isOnlyIconButton = !text && icon || \"back\" === type;\r\n                var _inkRipple = (0, _utils.render)(isOnlyIconButton ? {\r\n                    waveSizeCoefficient: 1,\r\n                    useHoldAnimation: false,\r\n                    isCentered: true\r\n                } : {});\r\n                var changeWaveVisibility = function(event, visible) {\r\n                    var _this5$option = _this5.option(),\r\n                        activeStateEnabled = _this5$option.activeStateEnabled,\r\n                        useInkRipple = _this5$option.useInkRipple;\r\n                    if (useInkRipple && activeStateEnabled && !_this5._disposed) {\r\n                        var config = {\r\n                            element: _this5._$content(),\r\n                            event: event\r\n                        };\r\n                        visible ? _inkRipple.showWave(config) : _inkRipple.hideWave(config)\r\n                    }\r\n                };\r\n                this._attachActiveEvents(function(_ref4) {\r\n                    var event = _ref4.event;\r\n                    return changeWaveVisibility(event, true)\r\n                }, function(_ref5) {\r\n                    var event = _ref5.event;\r\n                    return changeWaveVisibility(event)\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderStylingMode\",\r\n        value: function() {\r\n            var $element = this.$element();\r\n            var _this$option4 = this.option(),\r\n                stylingMode = _this$option4.stylingMode;\r\n            if ([\"contained\", \"text\", \"outlined\"].indexOf(stylingMode) === -1) {\r\n                stylingMode = this._getDefaultOptions().stylingMode\r\n            }\r\n            $element.addClass(\"dx-button-mode-\".concat(stylingMode))\r\n        }\r\n    }, {\r\n        key: \"_renderSubmitInput\",\r\n        value: function() {\r\n            var _this$option5 = this.option(),\r\n                useSubmitBehavior = _this$option5.useSubmitBehavior;\r\n            if (useSubmitBehavior) {\r\n                var submitAction = this._getSubmitAction();\r\n                var $content = this._$content();\r\n                (0, _renderer.default)(\"<input>\").attr(\"type\", \"submit\").attr(\"tabindex\", -1).addClass(\"dx-button-submit-input\").appendTo($content);\r\n                _short.click.on(this._$submitInput(), function(event) {\r\n                    return submitAction({\r\n                        event: event\r\n                    })\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderType\",\r\n        value: function() {\r\n            var _this$option6 = this.option(),\r\n                type = _this$option6.type;\r\n            var $element = this.$element();\r\n            type && $element.addClass(\"dx-button-\".concat(type))\r\n        }\r\n    }, {\r\n        key: \"_submitInput\",\r\n        value: function() {\r\n            return this._$submitInput().get(0)\r\n        }\r\n    }, {\r\n        key: \"_supportedKeys\",\r\n        value: function() {\r\n            var _this6 = this;\r\n            var click = function(e) {\r\n                e.preventDefault();\r\n                _this6._executeClickAction(e)\r\n            };\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(Button.prototype), \"_supportedKeys\", this).call(this), {\r\n                space: click,\r\n                enter: click\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_updateAriaLabel\",\r\n        value: function() {\r\n            var ariaTarget = this._getAriaTarget();\r\n            var _this$option7 = this.option(),\r\n                icon = _this$option7.icon,\r\n                text = _this$option7.text;\r\n            if (!text) {\r\n                if (\"image\" === (0, _icon.getImageSourceType)(icon)) {\r\n                    icon = icon.indexOf(\"base64\") === -1 ? icon.replace(/.+\\/([^.]+)\\..+$/, \"$1\") : \"Base64\"\r\n                }\r\n                text = icon || \"\"\r\n            }\r\n            ariaTarget.attr(\"aria-label\", text || null)\r\n        }\r\n    }, {\r\n        key: \"_updateClick\",\r\n        value: function() {\r\n            var _this7 = this;\r\n            this._clickAction = this._createActionByOption(\"onClick\", {\r\n                excludeValidators: [\"readOnly\"],\r\n                afterExecute: function() {\r\n                    var _this7$option = _this7.option(),\r\n                        useSubmitBehavior = _this7$option.useSubmitBehavior;\r\n                    useSubmitBehavior && setTimeout(function() {\r\n                        return _this7._submitInput().click()\r\n                    })\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_updateContent\",\r\n        value: function() {\r\n            var $element = this.$element();\r\n            var $content = this._$content();\r\n            var data = this._getContentData();\r\n            var _this$option8 = this.option(),\r\n                template = _this$option8.template,\r\n                iconPosition = _this$option8.iconPosition;\r\n            var icon = data.icon,\r\n                text = data.text;\r\n            $content.length ? $content.empty() : $content = (0, _renderer.default)(\"<div>\").addClass(\"dx-button-content\").appendTo($element);\r\n            $element.toggleClass(\"dx-button-has-icon\", !!icon).toggleClass(\"dx-button-icon-right\", !!icon && \"left\" !== iconPosition).toggleClass(\"dx-button-has-text\", !!text);\r\n            var $template = (0, _renderer.default)(this._getTemplateByOption(\"template\").render({\r\n                model: data,\r\n                container: (0, _element.getPublicElement)($content),\r\n                transclude: this._templateManager.anonymousTemplateName === template\r\n            }));\r\n            if ($template.hasClass(\"dx-template-wrapper\")) {\r\n                $template.addClass(\"dx-button-content\");\r\n                $content.replaceWith($template)\r\n            }\r\n            this._updateSubmitInput()\r\n        }\r\n    }, {\r\n        key: \"_updateSubmitInput\",\r\n        value: function() {\r\n            var _this$option9 = this.option(),\r\n                useSubmitBehavior = _this$option9.useSubmitBehavior;\r\n            var $submitInput = this._$submitInput();\r\n            if (!useSubmitBehavior && $submitInput.length) {\r\n                $submitInput.remove()\r\n            } else {\r\n                if (useSubmitBehavior && !$submitInput.length) {\r\n                    this._renderSubmitInput()\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_updateStylingMode\",\r\n        value: function() {\r\n            var $element = this.$element();\r\n            [\"contained\", \"text\", \"outlined\"].map(function(mode) {\r\n                return \"dx-button-mode-\".concat(mode)\r\n            }).forEach($element.removeClass.bind($element));\r\n            this._renderStylingMode()\r\n        }\r\n    }, {\r\n        key: \"_updateType\",\r\n        value: function(previous) {\r\n            var $element = this.$element();\r\n            [previous, \"back\", \"danger\", \"default\", \"normal\", \"success\"].map(function(type) {\r\n                return \"dx-button-\".concat(type)\r\n            }).forEach($element.removeClass.bind($element));\r\n            this._renderType()\r\n        }\r\n    }, {\r\n        key: \"_validationGroupConfig\",\r\n        get: function() {\r\n            return _validation_engine.default.getGroupConfig(this._findGroup())\r\n        }\r\n    }]);\r\n    return Button\r\n}(_ui.default);\r\n(0, _component_registrator.default)(\"dxButton\", Button);\r\nvar _default = Button;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.table_creator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _element = require(\"../../core/element\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar ROW_SELECTOR = \"tr\";\r\nvar SchedulerTableCreator = function() {\r\n    function SchedulerTableCreator() {\r\n        _classCallCheck(this, SchedulerTableCreator);\r\n        this.VERTICAL = \"vertical\";\r\n        this.HORIZONTAL = \"horizontal\"\r\n    }\r\n    _createClass(SchedulerTableCreator, [{\r\n        key: \"insertAllDayRow\",\r\n        value: function(allDayElements, tableBody, index) {\r\n            if (allDayElements[index]) {\r\n                var row = allDayElements[index].find(ROW_SELECTOR);\r\n                if (!row.length) {\r\n                    row = (0, _renderer.default)(_dom_adapter.default.createElement(ROW_SELECTOR));\r\n                    row.append(allDayElements[index].get(0))\r\n                }\r\n                tableBody.appendChild(row.get ? row.get(0) : row)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"makeTable\",\r\n        value: function(options) {\r\n            var tableBody = _dom_adapter.default.createElement(\"tbody\");\r\n            var templateCallbacks = [];\r\n            var row;\r\n            var rowCountInGroup = options.groupCount ? options.rowCount / options.groupCount : options.rowCount;\r\n            var allDayElementIndex = 0;\r\n            var allDayElements = options.allDayElements;\r\n            var groupIndex = options.groupIndex;\r\n            var rowCount = options.rowCount;\r\n            (0, _renderer.default)(options.container).append(tableBody);\r\n            if (allDayElements) {\r\n                this.insertAllDayRow(allDayElements, tableBody, 0);\r\n                allDayElementIndex++\r\n            }\r\n            for (var i = 0; i < rowCount; i++) {\r\n                row = _dom_adapter.default.createElement(ROW_SELECTOR);\r\n                tableBody.appendChild(row);\r\n                var isLastRowInGroup = (i + 1) % rowCountInGroup === 0;\r\n                if (options.rowClass) {\r\n                    row.className = options.rowClass\r\n                }\r\n                for (var j = 0; j < options.cellCount; j++) {\r\n                    var td = _dom_adapter.default.createElement(\"td\");\r\n                    row.appendChild(td);\r\n                    if (options.cellClass) {\r\n                        if ((0, _type.isFunction)(options.cellClass)) {\r\n                            td.className = options.cellClass(i, j)\r\n                        } else {\r\n                            td.className = options.cellClass\r\n                        }\r\n                    }\r\n                    var cellDataObject = void 0;\r\n                    var dataKey = void 0;\r\n                    var dataValue = void 0;\r\n                    if (options.getCellData) {\r\n                        cellDataObject = options.getCellData(td, i, j, groupIndex);\r\n                        dataKey = cellDataObject.key;\r\n                        dataValue = cellDataObject.value;\r\n                        dataKey && (0, _element_data.data)(td, dataKey, dataValue)\r\n                    }\r\n                    if (options.cellTemplate && options.cellTemplate.render) {\r\n                        var templateOptions = {\r\n                            model: {\r\n                                text: options.getCellText ? options.getCellText(i, j) : \"\",\r\n                                date: options.getCellDate ? options.getCellDate(i) : void 0\r\n                            },\r\n                            container: (0, _element.getPublicElement)((0, _renderer.default)(td)),\r\n                            index: i * options.cellCount + j\r\n                        };\r\n                        if (dataValue) {\r\n                            if (dataValue.startDate) {\r\n                                templateOptions.model.startDate = dataValue.startDate\r\n                            }\r\n                            if (dataValue.endDate) {\r\n                                templateOptions.model.endDate = dataValue.endDate\r\n                            }\r\n                            if (dataValue.groups) {\r\n                                templateOptions.model.groups = dataValue.groups\r\n                            }\r\n                            if (dataValue.allDay) {\r\n                                templateOptions.model.allDay = dataValue.allDay\r\n                            }\r\n                        }\r\n                        templateCallbacks.push(options.cellTemplate.render.bind(options.cellTemplate, templateOptions))\r\n                    } else {\r\n                        if (options.getCellText) {\r\n                            td.innerHTML = \"<div>\" + options.getCellText(i, j) + \"</div>\"\r\n                        }\r\n                    }\r\n                }\r\n                if (allDayElements && isLastRowInGroup) {\r\n                    this.insertAllDayRow(allDayElements, tableBody, allDayElementIndex);\r\n                    allDayElementIndex++\r\n                }\r\n            }\r\n            return templateCallbacks\r\n        }\r\n    }, {\r\n        key: \"makeGroupedTable\",\r\n        value: function(type, groups, cssClasses, cellCount, cellTemplate, rowCount, groupByDate) {\r\n            var rows = [];\r\n            if (type === this.VERTICAL) {\r\n                rows = this._makeVerticalGroupedRows(groups, cssClasses, cellTemplate, rowCount)\r\n            } else {\r\n                rows = this._makeHorizontalGroupedRows(groups, cssClasses, cellCount, cellTemplate, groupByDate)\r\n            }\r\n            return rows\r\n        }\r\n    }, {\r\n        key: \"makeGroupedTableFromJSON\",\r\n        value: function(type, data, config) {\r\n            var table;\r\n            var cellStorage = [];\r\n            var rowIndex = 0;\r\n            config = config || {};\r\n            var cellTag = config.cellTag || \"td\";\r\n            var childrenField = config.childrenField || \"children\";\r\n            var titleField = config.titleField || \"title\";\r\n            var groupTableClass = config.groupTableClass;\r\n            var groupRowClass = config.groupRowClass;\r\n            var groupCellClass = config.groupCellClass;\r\n            var groupCellCustomContent = config.groupCellCustomContent;\r\n\r\n            function createTable() {\r\n                table = _dom_adapter.default.createElement(\"table\");\r\n                if (groupTableClass) {\r\n                    table.className = groupTableClass\r\n                }\r\n            }\r\n\r\n            function getChildCount(item) {\r\n                if (item[childrenField]) {\r\n                    return item[childrenField].length\r\n                }\r\n                return 0\r\n            }\r\n\r\n            function createCell(text, childCount, index, data) {\r\n                var cell = {\r\n                    element: _dom_adapter.default.createElement(cellTag),\r\n                    childCount: childCount\r\n                };\r\n                if (groupCellClass) {\r\n                    cell.element.className = groupCellClass\r\n                }\r\n                var cellText = _dom_adapter.default.createTextNode(text);\r\n                if (\"function\" === typeof groupCellCustomContent) {\r\n                    groupCellCustomContent(cell.element, cellText, index, data)\r\n                } else {\r\n                    cell.element.appendChild(cellText)\r\n                }\r\n                return cell\r\n            }\r\n\r\n            function generateCells(data) {\r\n                for (var i = 0; i < data.length; i++) {\r\n                    var childCount = getChildCount(data[i]);\r\n                    var cell = createCell(data[i][titleField], childCount, i, data[i]);\r\n                    if (!cellStorage[rowIndex]) {\r\n                        cellStorage[rowIndex] = []\r\n                    }\r\n                    cellStorage[rowIndex].push(cell);\r\n                    if (childCount) {\r\n                        generateCells(data[i][childrenField])\r\n                    } else {\r\n                        rowIndex++\r\n                    }\r\n                }\r\n            }\r\n\r\n            function putCellsToRows() {\r\n                cellStorage.forEach(function(cells) {\r\n                    var row = _dom_adapter.default.createElement(ROW_SELECTOR);\r\n                    if (groupRowClass) {\r\n                        row.className = groupRowClass\r\n                    }\r\n                    var rowspans = [];\r\n                    for (var i = cells.length - 1; i >= 0; i--) {\r\n                        var prev = cells[i + 1];\r\n                        var rowspan = cells[i].childCount;\r\n                        if (prev && prev.childCount) {\r\n                            rowspan *= prev.childCount\r\n                        }\r\n                        rowspans.push(rowspan)\r\n                    }\r\n                    rowspans.reverse();\r\n                    cells.forEach(function(cell, index) {\r\n                        if (rowspans[index]) {\r\n                            cell.element.setAttribute(\"rowSpan\", rowspans[index])\r\n                        }\r\n                        row.appendChild(cell.element)\r\n                    });\r\n                    table.appendChild(row)\r\n                })\r\n            }\r\n            createTable();\r\n            generateCells(data);\r\n            putCellsToRows();\r\n            return table\r\n        }\r\n    }, {\r\n        key: \"_makeFlexGroupedRowCells\",\r\n        value: function(group, repeatCount, cssClasses, cellTemplate) {\r\n            var repeatByDate = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1;\r\n            var cells = [];\r\n            var items = group.items;\r\n            var itemCount = items.length;\r\n            for (var i = 0; i < repeatCount * repeatByDate; i++) {\r\n                for (var j = 0; j < itemCount; j++) {\r\n                    var $container = (0, _renderer.default)(\"<div>\");\r\n                    var cell = {};\r\n                    if (cellTemplate && cellTemplate.render) {\r\n                        var templateOptions = {\r\n                            model: items[j],\r\n                            container: (0, _element.getPublicElement)($container),\r\n                            index: i * itemCount + j\r\n                        };\r\n                        if (group.data) {\r\n                            templateOptions.model.data = group.data[j]\r\n                        }\r\n                        cell.template = cellTemplate.render.bind(cellTemplate, templateOptions)\r\n                    } else {\r\n                        $container.text(items[j].text).attr(\"title\", items[j].text).addClass(\"dx-scheduler-group-header-content\");\r\n                        $container = (0, _renderer.default)(\"<div>\").append($container)\r\n                    }\r\n                    var cssClass = (0, _type.isFunction)(cssClasses.groupHeaderClass) ? cssClasses.groupHeaderClass(j) : cssClasses.groupHeaderClass;\r\n                    cell.element = $container.addClass(cssClass);\r\n                    cells.push(cell)\r\n                }\r\n            }\r\n            return cells\r\n        }\r\n    }, {\r\n        key: \"_makeVerticalGroupedRows\",\r\n        value: function(groups, cssClasses, cellTemplate) {\r\n            var cellTemplates = [];\r\n            var repeatCount = 1;\r\n            var cellsArray = [];\r\n            var cellIterator = function(cell) {\r\n                if (cell.template) {\r\n                    cellTemplates.push(cell.template)\r\n                }\r\n            };\r\n            for (var i = 0; i < groups.length; i++) {\r\n                if (i > 0) {\r\n                    repeatCount = groups[i - 1].items.length * repeatCount\r\n                }\r\n                var cells = this._makeFlexGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate);\r\n                cells.forEach(cellIterator);\r\n                cellsArray.push(cells)\r\n            }\r\n            var rows = [];\r\n            var groupCount = cellsArray.length;\r\n            for (var _i = 0; _i < groupCount; _i++) {\r\n                rows.push((0, _renderer.default)(\"<div>\").addClass(cssClasses.groupHeaderRowClass))\r\n            }\r\n            for (var _i2 = groupCount - 1; _i2 >= 0; _i2--) {\r\n                var currentColumnLength = cellsArray[_i2].length;\r\n                for (var j = 0; j < currentColumnLength; j++) {\r\n                    rows[_i2].append(cellsArray[_i2][j].element)\r\n                }\r\n            }\r\n            return {\r\n                elements: (0, _renderer.default)(\"<div>\").addClass(\"dx-scheduler-group-flex-container\").append(rows),\r\n                cellTemplates: cellTemplates\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_makeHorizontalGroupedRows\",\r\n        value: function(groups, cssClasses, cellCount, cellTemplate, groupByDate) {\r\n            var repeatCount = 1;\r\n            var groupCount = groups.length;\r\n            var rows = [];\r\n            var cellTemplates = [];\r\n            var repeatByDate = groupByDate ? cellCount : 1;\r\n            var cellIterator = function(cell) {\r\n                if (cell.template) {\r\n                    cellTemplates.push(cell.template)\r\n                }\r\n                return cell.element\r\n            };\r\n            for (var i = 0; i < groupCount; i++) {\r\n                if (i > 0) {\r\n                    repeatCount = groups[i - 1].items.length * repeatCount\r\n                }\r\n                var cells = this._makeGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate, repeatByDate);\r\n                rows.push((0, _renderer.default)(\"<tr>\").addClass(cssClasses.groupRowClass).append(cells.map(cellIterator)))\r\n            }\r\n            var maxCellCount = rows[groupCount - 1].find(\"th\").length;\r\n            for (var j = 0; j < groupCount; j++) {\r\n                var $cell = rows[j].find(\"th\");\r\n                var colspan = maxCellCount / $cell.length;\r\n                if (!groupByDate) {\r\n                    colspan *= cellCount\r\n                }\r\n                if (colspan > 1 && 1 === repeatByDate || groupByDate && groupCount > 1) {\r\n                    $cell.attr(\"colSpan\", colspan)\r\n                }\r\n            }\r\n            return {\r\n                elements: rows,\r\n                cellTemplates: cellTemplates\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_makeGroupedRowCells\",\r\n        value: function(group, repeatCount, cssClasses, cellTemplate, repeatByDate) {\r\n            repeatByDate = repeatByDate || 1;\r\n            repeatCount *= repeatByDate;\r\n            var cells = [];\r\n            var items = group.items;\r\n            var itemCount = items.length;\r\n            for (var i = 0; i < repeatCount; i++) {\r\n                for (var j = 0; j < itemCount; j++) {\r\n                    var $container = (0, _renderer.default)(\"<div>\");\r\n                    var cell = {};\r\n                    if (cellTemplate && cellTemplate.render) {\r\n                        var templateOptions = {\r\n                            model: items[j],\r\n                            container: (0, _element.getPublicElement)($container),\r\n                            index: i * itemCount + j\r\n                        };\r\n                        if (group.data) {\r\n                            templateOptions.model.data = group.data[j]\r\n                        }\r\n                        cell.template = cellTemplate.render.bind(cellTemplate, templateOptions)\r\n                    } else {\r\n                        $container.text(items[j].text);\r\n                        $container = (0, _renderer.default)(\"<div>\").append($container)\r\n                    }\r\n                    $container.addClass(cssClasses.groupHeaderContentClass);\r\n                    var cssClass = void 0;\r\n                    if ((0, _type.isFunction)(cssClasses.groupHeaderClass)) {\r\n                        cssClass = cssClasses.groupHeaderClass(j)\r\n                    } else {\r\n                        cssClass = cssClasses.groupHeaderClass\r\n                    }\r\n                    cell.element = (0, _renderer.default)(\"<th>\").addClass(cssClass).append($container);\r\n                    cells.push(cell)\r\n                }\r\n            }\r\n            return cells\r\n        }\r\n    }]);\r\n    return SchedulerTableCreator\r\n}();\r\nvar _default = {\r\n    tableCreator: new SchedulerTableCreator\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.disableIntl = disableIntl;\r\nObject.defineProperty(exports, \"message\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _message.default\r\n    }\r\n});\r\nObject.defineProperty(exports, \"number\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _number.default\r\n    }\r\n});\r\nObject.defineProperty(exports, \"date\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _date.default\r\n    }\r\n});\r\nexports.parseDate = exports.formatDate = exports.parseNumber = exports.formatNumber = exports.formatMessage = exports.loadMessages = exports.locale = void 0;\r\nvar _core = _interopRequireDefault(require(\"./localization/core\"));\r\nvar _message = _interopRequireDefault(require(\"./localization/message\"));\r\nvar _number = _interopRequireDefault(require(\"./localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"./localization/date\"));\r\nrequire(\"./localization/currency\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar locale = _core.default.locale.bind(_core.default);\r\nexports.locale = locale;\r\nvar loadMessages = _message.default.load.bind(_message.default);\r\nexports.loadMessages = loadMessages;\r\nvar formatMessage = _message.default.format.bind(_message.default);\r\nexports.formatMessage = formatMessage;\r\nvar formatNumber = _number.default.format.bind(_number.default);\r\nexports.formatNumber = formatNumber;\r\nvar parseNumber = _number.default.parse.bind(_number.default);\r\nexports.parseNumber = parseNumber;\r\nvar formatDate = _date.default.format.bind(_date.default);\r\nexports.formatDate = formatDate;\r\nvar parseDate = _date.default.parse.bind(_date.default);\r\nexports.parseDate = parseDate;\r\n\r\nfunction disableIntl() {\r\n    if (\"intl\" === _number.default.engine()) {\r\n        _number.default.resetInjection()\r\n    }\r\n    if (\"intl\" === _date.default.engine()) {\r\n        _date.default.resetInjection()\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (ui/load_indicator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _support = require(\"../core/utils/support\");\r\nvar _themes = require(\"./themes\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar navigator = (0, _window.getNavigator)();\r\nvar LOADINDICATOR_CLASS = \"dx-loadindicator\";\r\nvar LOADINDICATOR_WRAPPER_CLASS = \"dx-loadindicator-wrapper\";\r\nvar LOADINDICATOR_CONTENT_CLASS = \"dx-loadindicator-content\";\r\nvar LOADINDICATOR_ICON_CLASS = \"dx-loadindicator-icon\";\r\nvar LOADINDICATOR_SEGMENT_CLASS = \"dx-loadindicator-segment\";\r\nvar LOADINDICATOR_SEGMENT_INNER_CLASS = \"dx-loadindicator-segment-inner\";\r\nvar LOADINDICATOR_IMAGE_CLASS = \"dx-loadindicator-image\";\r\nvar LoadIndicator = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            indicatorSrc: \"\",\r\n            activeStateEnabled: false,\r\n            hoverStateEnabled: false,\r\n            _animatingSegmentCount: 1,\r\n            _animatingSegmentInner: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        var themeName = (0, _themes.current)();\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                var realDevice = _devices.default.real();\r\n                var obsoleteAndroid = \"android\" === realDevice.platform && !/chrome/i.test(navigator.userAgent);\r\n                return obsoleteAndroid\r\n            },\r\n            options: {\r\n                viaImage: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)(themeName)\r\n            },\r\n            options: {\r\n                _animatingSegmentCount: 2,\r\n                _animatingSegmentInner: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isGeneric)(themeName)\r\n            },\r\n            options: {\r\n                _animatingSegmentCount: 7\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(LOADINDICATOR_CLASS)\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._renderWrapper();\r\n        this._renderIndicatorContent();\r\n        this._renderMarkup()\r\n    },\r\n    _renderWrapper: function() {\r\n        this._$wrapper = (0, _renderer.default)(\"<div>\").addClass(LOADINDICATOR_WRAPPER_CLASS);\r\n        this.$element().append(this._$wrapper)\r\n    },\r\n    _renderIndicatorContent: function() {\r\n        this._$content = (0, _renderer.default)(\"<div>\").addClass(LOADINDICATOR_CONTENT_CLASS);\r\n        this._$wrapper.append(this._$content)\r\n    },\r\n    _renderMarkup: function() {\r\n        if ((0, _support.animation)() && !this.option(\"viaImage\") && !this.option(\"indicatorSrc\")) {\r\n            this._renderMarkupForAnimation()\r\n        } else {\r\n            this._renderMarkupForImage()\r\n        }\r\n    },\r\n    _renderMarkupForAnimation: function() {\r\n        var animatingSegmentInner = this.option(\"_animatingSegmentInner\");\r\n        this._$indicator = (0, _renderer.default)(\"<div>\").addClass(LOADINDICATOR_ICON_CLASS);\r\n        this._$content.append(this._$indicator);\r\n        for (var i = this.option(\"_animatingSegmentCount\"); i >= 0; --i) {\r\n            var $segment = (0, _renderer.default)(\"<div>\").addClass(LOADINDICATOR_SEGMENT_CLASS).addClass(LOADINDICATOR_SEGMENT_CLASS + i);\r\n            if (animatingSegmentInner) {\r\n                $segment.append((0, _renderer.default)(\"<div>\").addClass(LOADINDICATOR_SEGMENT_INNER_CLASS))\r\n            }\r\n            this._$indicator.append($segment)\r\n        }\r\n    },\r\n    _renderMarkupForImage: function() {\r\n        var indicatorSrc = this.option(\"indicatorSrc\");\r\n        this._$wrapper.addClass(LOADINDICATOR_IMAGE_CLASS);\r\n        if (indicatorSrc) {\r\n            this._$wrapper.css(\"backgroundImage\", \"url(\" + indicatorSrc + \")\")\r\n        }\r\n    },\r\n    _renderDimensions: function() {\r\n        this.callBase();\r\n        this._updateContentSizeForAnimation()\r\n    },\r\n    _updateContentSizeForAnimation: function() {\r\n        if (!this._$indicator) {\r\n            return\r\n        }\r\n        var width = this.option(\"width\");\r\n        var height = this.option(\"height\");\r\n        if (width || height) {\r\n            width = this.$element().width();\r\n            height = this.$element().height();\r\n            var minDimension = Math.min(height, width);\r\n            this._$wrapper.css({\r\n                height: minDimension,\r\n                width: minDimension,\r\n                fontSize: minDimension\r\n            })\r\n        }\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        this._removeMarkupForAnimation();\r\n        this._removeMarkupForImage()\r\n    },\r\n    _removeMarkupForAnimation: function() {\r\n        if (!this._$indicator) {\r\n            return\r\n        }\r\n        this._$indicator.remove();\r\n        delete this._$indicator\r\n    },\r\n    _removeMarkupForImage: function() {\r\n        this._$wrapper.css(\"backgroundImage\", \"none\")\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"_animatingSegmentCount\":\r\n            case \"_animatingSegmentInner\":\r\n            case \"indicatorSrc\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxLoadIndicator\", LoadIndicator);\r\nvar _default = LoadIndicator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (events/swipe.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.end = exports.start = exports.swipe = void 0;\r\nvar _index = require(\"./utils/index\");\r\nvar _emitter = _interopRequireDefault(require(\"./gesture/emitter.gesture\"));\r\nvar _emitter_registrator = _interopRequireDefault(require(\"./core/emitter_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SWIPE_START_EVENT = \"dxswipestart\";\r\nexports.start = SWIPE_START_EVENT;\r\nvar SWIPE_EVENT = \"dxswipe\";\r\nexports.swipe = SWIPE_EVENT;\r\nvar SWIPE_END_EVENT = \"dxswipeend\";\r\nexports.end = SWIPE_END_EVENT;\r\nvar HorizontalStrategy = {\r\n    defaultItemSizeFunc: function() {\r\n        return this.getElement().width()\r\n    },\r\n    getBounds: function() {\r\n        return [this._maxLeftOffset, this._maxRightOffset]\r\n    },\r\n    calcOffsetRatio: function(e) {\r\n        var endEventData = (0, _index.eventData)(e);\r\n        return (endEventData.x - (this._savedEventData && this._savedEventData.x || 0)) / this._itemSizeFunc().call(this, e)\r\n    },\r\n    isFastSwipe: function(e) {\r\n        var endEventData = (0, _index.eventData)(e);\r\n        return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.x - this._tickData.x) >= endEventData.time - this._tickData.time\r\n    }\r\n};\r\nvar VerticalStrategy = {\r\n    defaultItemSizeFunc: function() {\r\n        return this.getElement().height()\r\n    },\r\n    getBounds: function() {\r\n        return [this._maxTopOffset, this._maxBottomOffset]\r\n    },\r\n    calcOffsetRatio: function(e) {\r\n        var endEventData = (0, _index.eventData)(e);\r\n        return (endEventData.y - (this._savedEventData && this._savedEventData.y || 0)) / this._itemSizeFunc().call(this, e)\r\n    },\r\n    isFastSwipe: function(e) {\r\n        var endEventData = (0, _index.eventData)(e);\r\n        return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.y - this._tickData.y) >= endEventData.time - this._tickData.time\r\n    }\r\n};\r\nvar STRATEGIES = {\r\n    horizontal: HorizontalStrategy,\r\n    vertical: VerticalStrategy\r\n};\r\nvar SwipeEmitter = _emitter.default.inherit({\r\n    TICK_INTERVAL: 300,\r\n    FAST_SWIPE_SPEED_LIMIT: 10,\r\n    ctor: function(element) {\r\n        this.callBase(element);\r\n        this.direction = \"horizontal\";\r\n        this.elastic = true\r\n    },\r\n    _getStrategy: function() {\r\n        return STRATEGIES[this.direction]\r\n    },\r\n    _defaultItemSizeFunc: function() {\r\n        return this._getStrategy().defaultItemSizeFunc.call(this)\r\n    },\r\n    _itemSizeFunc: function() {\r\n        return this.itemSizeFunc || this._defaultItemSizeFunc\r\n    },\r\n    _init: function(e) {\r\n        this._tickData = (0, _index.eventData)(e)\r\n    },\r\n    _start: function(e) {\r\n        this._savedEventData = (0, _index.eventData)(e);\r\n        e = this._fireEvent(SWIPE_START_EVENT, e);\r\n        if (!e.cancel) {\r\n            this._maxLeftOffset = e.maxLeftOffset;\r\n            this._maxRightOffset = e.maxRightOffset;\r\n            this._maxTopOffset = e.maxTopOffset;\r\n            this._maxBottomOffset = e.maxBottomOffset\r\n        }\r\n    },\r\n    _move: function(e) {\r\n        var strategy = this._getStrategy();\r\n        var moveEventData = (0, _index.eventData)(e);\r\n        var offset = strategy.calcOffsetRatio.call(this, e);\r\n        offset = this._fitOffset(offset, this.elastic);\r\n        if (moveEventData.time - this._tickData.time > this.TICK_INTERVAL) {\r\n            this._tickData = moveEventData\r\n        }\r\n        this._fireEvent(SWIPE_EVENT, e, {\r\n            offset: offset\r\n        });\r\n        e.preventDefault()\r\n    },\r\n    _end: function(e) {\r\n        var strategy = this._getStrategy();\r\n        var offsetRatio = strategy.calcOffsetRatio.call(this, e);\r\n        var isFast = strategy.isFastSwipe.call(this, e);\r\n        var startOffset = offsetRatio;\r\n        var targetOffset = this._calcTargetOffset(offsetRatio, isFast);\r\n        startOffset = this._fitOffset(startOffset, this.elastic);\r\n        targetOffset = this._fitOffset(targetOffset, false);\r\n        this._fireEvent(SWIPE_END_EVENT, e, {\r\n            offset: startOffset,\r\n            targetOffset: targetOffset\r\n        })\r\n    },\r\n    _fitOffset: function(offset, elastic) {\r\n        var strategy = this._getStrategy();\r\n        var bounds = strategy.getBounds.call(this);\r\n        if (offset < -bounds[0]) {\r\n            return elastic ? (-2 * bounds[0] + offset) / 3 : -bounds[0]\r\n        }\r\n        if (offset > bounds[1]) {\r\n            return elastic ? (2 * bounds[1] + offset) / 3 : bounds[1]\r\n        }\r\n        return offset\r\n    },\r\n    _calcTargetOffset: function(offsetRatio, isFast) {\r\n        var result;\r\n        if (isFast) {\r\n            result = Math.ceil(Math.abs(offsetRatio));\r\n            if (offsetRatio < 0) {\r\n                result = -result\r\n            }\r\n        } else {\r\n            result = Math.round(offsetRatio)\r\n        }\r\n        return result\r\n    }\r\n});\r\n(0, _emitter_registrator.default)({\r\n    emitter: SwipeEmitter,\r\n    events: [SWIPE_START_EVENT, SWIPE_EVENT, SWIPE_END_EVENT]\r\n});\r\n","/**\r\n * DevExtreme (core/utils/version.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.compare = compare;\r\n\r\nfunction compare(x, y, maxLevel) {\r\n    function normalizeArg(value) {\r\n        if (\"string\" === typeof value) {\r\n            return value.split(\".\")\r\n        }\r\n        if (\"number\" === typeof value) {\r\n            return [value]\r\n        }\r\n        return value\r\n    }\r\n    x = normalizeArg(x);\r\n    y = normalizeArg(y);\r\n    var length = Math.max(x.length, y.length);\r\n    if (isFinite(maxLevel)) {\r\n        length = Math.min(length, maxLevel)\r\n    }\r\n    for (var i = 0; i < length; i++) {\r\n        var xItem = parseInt(x[i] || 0, 10);\r\n        var yItem = parseInt(y[i] || 0, 10);\r\n        if (xItem < yItem) {\r\n            return -1\r\n        }\r\n        if (xItem > yItem) {\r\n            return 1\r\n        }\r\n    }\r\n    return 0\r\n}\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_month.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-month\";\r\nvar DAY_IN_MILLISECONDS = 864e5;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerTimelineMonth = function(_SchedulerTimeline) {\r\n    _inherits(SchedulerTimelineMonth, _SchedulerTimeline);\r\n    var _super = _createSuper(SchedulerTimelineMonth);\r\n\r\n    function SchedulerTimelineMonth() {\r\n        _classCallCheck(this, SchedulerTimelineMonth);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerTimelineMonth, [{\r\n        key: \"_renderView\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerTimelineMonth.prototype), \"_renderView\", this).call(this);\r\n            this._updateScrollable()\r\n        }\r\n    }, {\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return TIMELINE_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getDateHeaderTemplate\",\r\n        value: function() {\r\n            return this.option(\"dateCellTemplate\")\r\n        }\r\n    }, {\r\n        key: \"_getHiddenInterval\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"_calculateDurationInCells\",\r\n        value: function(timeDiff) {\r\n            return timeDiff / this.getCellDuration()\r\n        }\r\n    }, {\r\n        key: \"getCellDuration\",\r\n        value: function() {\r\n            return toMs(\"day\")\r\n        }\r\n    }, {\r\n        key: \"calculateEndViewDate\",\r\n        value: function(dateOfLastViewCell) {\r\n            return new Date(dateOfLastViewCell.getTime() + this._calculateDayDuration() * toMs(\"hour\"))\r\n        }\r\n    }, {\r\n        key: \"isIndicatorVisible\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            var currentDate = this.option(\"currentDate\");\r\n            var cellCount = 0;\r\n            if (this._isWorkSpaceWithCount()) {\r\n                var intervalCount = this.option(\"intervalCount\");\r\n                for (var i = 1; i <= intervalCount; i++) {\r\n                    cellCount += new Date(currentDate.getFullYear(), currentDate.getMonth() + i, 0).getDate()\r\n                }\r\n            } else {\r\n                cellCount = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate()\r\n            }\r\n            return cellCount\r\n        }\r\n    }, {\r\n        key: \"_setFirstViewDate\",\r\n        value: function() {\r\n            this._firstViewDate = _date.default.getFirstMonthDate(this.option(\"currentDate\"));\r\n            this._setStartDayHour(this._firstViewDate)\r\n        }\r\n    }, {\r\n        key: \"_getFormat\",\r\n        value: function() {\r\n            return this._formatWeekdayAndDay\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndex\",\r\n        value: function(headerIndex) {\r\n            var resultDate = new Date(this._firstViewDate);\r\n            resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n            return resultDate\r\n        }\r\n    }, {\r\n        key: \"_getInterval\",\r\n        value: function() {\r\n            return DAY_IN_MILLISECONDS\r\n        }\r\n    }, {\r\n        key: \"_getIntervalBetween\",\r\n        value: function(currentDate) {\r\n            var firstViewDate = this.getStartViewDate();\r\n            var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n            return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option(\"startDayHour\")) - timeZoneOffset\r\n        }\r\n    }, {\r\n        key: \"calculateEndDate\",\r\n        value: function(startDate) {\r\n            var startDateCopy = new Date(startDate);\r\n            return new Date(startDateCopy.setHours(this.option(\"endDayHour\")))\r\n        }\r\n    }, {\r\n        key: \"_calculateHiddenInterval\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"_getDateByCellIndexes\",\r\n        value: function(rowIndex, cellIndex) {\r\n            var date = _get(_getPrototypeOf(SchedulerTimelineMonth.prototype), \"_getDateByCellIndexes\", this).call(this, rowIndex, cellIndex);\r\n            this._setStartDayHour(date);\r\n            return date\r\n        }\r\n    }, {\r\n        key: \"getPositionShift\",\r\n        value: function() {\r\n            return {\r\n                top: 0,\r\n                left: 0,\r\n                cellPosition: 0\r\n            }\r\n        }\r\n    }]);\r\n    return SchedulerTimelineMonth\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineMonth\", SchedulerTimelineMonth);\r\nvar _default = SchedulerTimelineMonth;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/position.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getDefaultAlignment = exports.getBoundingRect = void 0;\r\nvar _config = _interopRequireDefault(require(\"../config\"));\r\nvar _type = require(\"../utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getDefaultAlignment = function(isRtlEnabled) {\r\n    var rtlEnabled = null !== isRtlEnabled && void 0 !== isRtlEnabled ? isRtlEnabled : (0, _config.default)().rtlEnabled;\r\n    return rtlEnabled ? \"right\" : \"left\"\r\n};\r\nexports.getDefaultAlignment = getDefaultAlignment;\r\nvar getBoundingRect = function(element) {\r\n    if ((0, _type.isWindow)(element)) {\r\n        return {\r\n            width: element.outerWidth,\r\n            height: element.outerHeight\r\n        }\r\n    }\r\n    var rect;\r\n    try {\r\n        rect = element.getBoundingClientRect()\r\n    } catch (e) {\r\n        rect = {\r\n            width: 0,\r\n            height: 0,\r\n            bottom: 0,\r\n            top: 0,\r\n            left: 0,\r\n            right: 0\r\n        }\r\n    }\r\n    return rect\r\n};\r\nexports.getBoundingRect = getBoundingRect;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_resizing_reordering.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COLUMNS_SEPARATOR_CLASS = \"columns-separator\";\r\nvar COLUMNS_SEPARATOR_TRANSPARENT = \"columns-separator-transparent\";\r\nvar DRAGGING_HEADER_CLASS = \"drag-header\";\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_DRAG_ACTION_CLASS = \"drag-action\";\r\nvar TRACKER_CLASS = \"tracker\";\r\nvar HEADERS_DROP_HIGHLIGHT_CLASS = \"drop-highlight\";\r\nvar BLOCK_SEPARATOR_CLASS = \"dx-block-separator\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar DRAGGING_COMMAND_CELL_CLASS = \"dx-drag-command-cell\";\r\nvar MODULE_NAMESPACE = \"dxDataGridResizingReordering\";\r\nvar COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH = 10;\r\nvar DRAGGING_DELTA = 5;\r\nvar COLUMN_OPACITY = .5;\r\nvar allowResizing = function(that) {\r\n    return that.option(\"allowColumnResizing\") || that.getController(\"columns\").isColumnOptionUsed(\"allowResizing\")\r\n};\r\nvar allowReordering = function(that) {\r\n    return that.option(\"allowColumnReordering\") || that.getController(\"columns\").isColumnOptionUsed(\"allowReordering\")\r\n};\r\nvar TrackerView = _uiGrid_core.default.View.inherit({\r\n    _renderCore: function() {\r\n        this.callBase();\r\n        this.element().addClass(this.addWidgetPrefix(TRACKER_CLASS));\r\n        this.hide()\r\n    },\r\n    _unsubscribeFromCallback: function() {\r\n        if (this._positionChanged) {\r\n            this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n        }\r\n    },\r\n    _subscribeToCallback: function() {\r\n        var that = this;\r\n        that._positionChanged = function(position) {\r\n            var $element = that.element();\r\n            if ($element && $element.hasClass(that.addWidgetPrefix(TRACKER_CLASS))) {\r\n                $element.css({\r\n                    top: position.top\r\n                });\r\n                $element.height(position.height)\r\n            }\r\n        };\r\n        this._tablePositionController.positionChanged.add(that._positionChanged)\r\n    },\r\n    optionChanged: function(args) {\r\n        if (\"allowColumnResizing\" === args.name) {\r\n            this._unsubscribeFromCallback();\r\n            if (args.value) {\r\n                this._subscribeToCallback();\r\n                this._invalidate()\r\n            }\r\n        }\r\n        this.callBase(args)\r\n    },\r\n    init: function() {\r\n        this.callBase();\r\n        this._tablePositionController = this.getController(\"tablePosition\");\r\n        this._subscribeToCallback()\r\n    },\r\n    isVisible: function() {\r\n        return allowResizing(this)\r\n    },\r\n    show: function() {\r\n        this.element().show()\r\n    },\r\n    hide: function() {\r\n        this.element() && this.element().hide()\r\n    },\r\n    setHeight: function(value) {\r\n        this.element().height(value)\r\n    },\r\n    dispose: function() {\r\n        this._unsubscribeFromCallback();\r\n        this.callBase()\r\n    }\r\n});\r\nvar SeparatorView = _uiGrid_core.default.View.inherit({\r\n    _renderSeparator: function() {},\r\n    _renderCore: function(options) {\r\n        this.callBase(options);\r\n        this._isShown = true;\r\n        this._renderSeparator();\r\n        this.hide()\r\n    },\r\n    show: function() {\r\n        this._isShown = true\r\n    },\r\n    hide: function() {\r\n        this._isShown = false\r\n    },\r\n    height: function(value) {\r\n        var $element = this.element();\r\n        if ($element) {\r\n            if ((0, _type.isDefined)(value)) {\r\n                $element.height(value)\r\n            } else {\r\n                return $element.height()\r\n            }\r\n        }\r\n    },\r\n    width: function(value) {\r\n        var $element = this.element();\r\n        if ($element) {\r\n            if ((0, _type.isDefined)(value)) {\r\n                $element.width(value)\r\n            } else {\r\n                return $element.width()\r\n            }\r\n        }\r\n    }\r\n});\r\nvar ColumnsSeparatorView = SeparatorView.inherit({\r\n    _renderSeparator: function() {\r\n        this.callBase();\r\n        var $element = this.element();\r\n        $element.addClass(this.addWidgetPrefix(COLUMNS_SEPARATOR_CLASS))\r\n    },\r\n    _subscribeToCallback: function() {\r\n        var that = this;\r\n        var $element;\r\n        that._positionChanged = function(position) {\r\n            $element = that.element();\r\n            if ($element) {\r\n                $element.css({\r\n                    top: position.top\r\n                });\r\n                $element.height(position.height)\r\n            }\r\n        };\r\n        that._tablePositionController.positionChanged.add(that._positionChanged)\r\n    },\r\n    _unsubscribeFromCallback: function() {\r\n        this._positionChanged && this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n    },\r\n    _init: function() {\r\n        this._isTransparent = allowResizing(this);\r\n        if (this.isVisible()) {\r\n            this._subscribeToCallback()\r\n        }\r\n    },\r\n    isVisible: function() {\r\n        return this.option(\"showColumnHeaders\") && (allowReordering(this) || allowResizing(this))\r\n    },\r\n    optionChanged: function(args) {\r\n        if (\"allowColumnResizing\" === args.name) {\r\n            if (args.value) {\r\n                this._init();\r\n                this._invalidate();\r\n                this.hide(true)\r\n            } else {\r\n                this._unsubscribeFromCallback();\r\n                this._isTransparent = allowResizing(this);\r\n                this.hide(true)\r\n            }\r\n        }\r\n        this.callBase(args)\r\n    },\r\n    init: function() {\r\n        this.callBase();\r\n        this._tablePositionController = this.getController(\"tablePosition\");\r\n        this._init()\r\n    },\r\n    show: function() {\r\n        var that = this;\r\n        var $element = this.element();\r\n        if ($element && !that._isShown) {\r\n            if (that._isTransparent) {\r\n                $element.removeClass(that.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT))\r\n            } else {\r\n                $element.show()\r\n            }\r\n        }\r\n        this.callBase()\r\n    },\r\n    hide: function(force) {\r\n        var $element = this.element();\r\n        var columnsSeparatorTransparent = this.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT);\r\n        if ($element && (this._isShown || force)) {\r\n            if (this._isTransparent) {\r\n                $element.addClass(columnsSeparatorTransparent);\r\n                $element.css(\"left\", \"\");\r\n                $element.show()\r\n            } else {\r\n                if ($element.hasClass(columnsSeparatorTransparent)) {\r\n                    $element.removeClass(columnsSeparatorTransparent)\r\n                }\r\n                $element.hide()\r\n            }\r\n        }\r\n        this.callBase()\r\n    },\r\n    moveByX: function(outerX) {\r\n        var $element = this.element();\r\n        if ($element) {\r\n            $element.css(\"left\", outerX - this._parentElement().offset().left)\r\n        }\r\n    },\r\n    changeCursor: function(cursorName) {\r\n        cursorName = (0, _type.isDefined)(cursorName) ? cursorName : \"\";\r\n        var $element = this.element();\r\n        if ($element) {\r\n            $element.css(\"cursor\", cursorName)\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._unsubscribeFromCallback();\r\n        this.callBase()\r\n    }\r\n});\r\nvar BlockSeparatorView = SeparatorView.inherit({\r\n    init: function() {\r\n        var that = this;\r\n        this.callBase();\r\n        this.getController(\"data\").loadingChanged.add(function(isLoading) {\r\n            if (!isLoading) {\r\n                that.hide()\r\n            }\r\n        })\r\n    },\r\n    _renderSeparator: function() {\r\n        this.callBase();\r\n        this.element().addClass(BLOCK_SEPARATOR_CLASS).html(\"&nbsp;\")\r\n    },\r\n    hide: function() {\r\n        var that = this;\r\n        var $parent = this._parentElement();\r\n        var $element = this.element();\r\n        if ($element && this._isShown) {\r\n            $element.css(\"display\", \"none\")\r\n        }\r\n        if ($parent && !$parent.children(\".\" + BLOCK_SEPARATOR_CLASS).length) {\r\n            $parent.prepend(that.element())\r\n        }\r\n        that.callBase()\r\n    },\r\n    isVisible: function() {\r\n        var groupPanelOptions = this.option(\"groupPanel\");\r\n        var columnChooserOptions = this.option(\"columnChooser\");\r\n        return groupPanelOptions && groupPanelOptions.visible || columnChooserOptions && columnChooserOptions.enabled\r\n    },\r\n    show: function(targetLocation) {\r\n        var that = this;\r\n        var $element = this.element();\r\n        var startAnimate = function(toOptions) {\r\n            _fx.default.stop($element, true);\r\n            _fx.default.animate($element, {\r\n                type: \"slide\",\r\n                from: {\r\n                    width: 0,\r\n                    display: toOptions.display\r\n                },\r\n                to: toOptions,\r\n                duration: 300,\r\n                easing: \"swing\"\r\n            })\r\n        };\r\n        if ($element && !that._isShown) {\r\n            switch (targetLocation) {\r\n                case \"group\":\r\n                    startAnimate({\r\n                        width: \"50px\",\r\n                        display: \"inline-block\"\r\n                    });\r\n                    break;\r\n                case \"columnChooser\":\r\n                    startAnimate({\r\n                        width: \"100%\",\r\n                        display: \"block\"\r\n                    });\r\n                    break;\r\n                default:\r\n                    $element.css(\"display\", \"\")\r\n            }\r\n        }\r\n        that.callBase()\r\n    }\r\n});\r\nvar DraggingHeaderView = _uiGrid_core.default.View.inherit({\r\n    _isDragging: false,\r\n    isDragging: function() {\r\n        return this._isDragging\r\n    },\r\n    _getDraggingPanelByPos: function(pos) {\r\n        var that = this;\r\n        var result;\r\n        (0, _iterator.each)(that._dragOptions.draggingPanels, function(index, draggingPanel) {\r\n            if (draggingPanel) {\r\n                var boundingRect = draggingPanel.getBoundingRect();\r\n                if (boundingRect && (void 0 === boundingRect.bottom || pos.y < boundingRect.bottom) && (void 0 === boundingRect.top || pos.y > boundingRect.top) && (void 0 === boundingRect.left || pos.x > boundingRect.left) && (void 0 === boundingRect.right || pos.x < boundingRect.right)) {\r\n                    result = draggingPanel;\r\n                    return false\r\n                }\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _renderCore: function() {\r\n        this.element().addClass(this.addWidgetPrefix(DRAGGING_HEADER_CLASS) + \" \" + this.addWidgetPrefix(CELL_CONTENT_CLASS) + \" \" + WIDGET_CLASS).hide()\r\n    },\r\n    _resetTargetColumnOptions: function() {\r\n        var params = this._dropOptions;\r\n        params.targetColumnIndex = -1;\r\n        delete params.targetColumnElement;\r\n        delete params.isLast;\r\n        delete params.posX;\r\n        delete params.posY\r\n    },\r\n    _getVisibleIndexObject: function(rowIndex, visibleIndex) {\r\n        if ((0, _type.isDefined)(rowIndex)) {\r\n            return {\r\n                columnIndex: visibleIndex,\r\n                rowIndex: rowIndex\r\n            }\r\n        }\r\n        return visibleIndex\r\n    },\r\n    dispose: function() {\r\n        var element = this.element();\r\n        this._dragOptions = null;\r\n        element && element.parent().find(\".\" + this.addWidgetPrefix(DRAGGING_HEADER_CLASS)).remove()\r\n    },\r\n    isVisible: function() {\r\n        var columnsController = this.getController(\"columns\");\r\n        var commonColumnSettings = columnsController.getCommonSettings();\r\n        return this.option(\"showColumnHeaders\") && (allowReordering(this) || commonColumnSettings.allowGrouping || commonColumnSettings.allowHiding)\r\n    },\r\n    init: function() {\r\n        var that = this;\r\n        this.callBase();\r\n        this._controller = this.getController(\"draggingHeader\");\r\n        this._columnsResizerViewController = this.getController(\"columnsResizer\");\r\n        this.getController(\"data\").loadingChanged.add(function(isLoading) {\r\n            var element = that.element();\r\n            if (!isLoading && element) {\r\n                element.hide()\r\n            }\r\n        })\r\n    },\r\n    dragHeader: function(options) {\r\n        var that = this;\r\n        var columnElement = options.columnElement;\r\n        var isCommandColumn = !!options.sourceColumn.type;\r\n        that._isDragging = true;\r\n        that._dragOptions = options;\r\n        that._dropOptions = {\r\n            sourceIndex: options.index,\r\n            sourceColumnIndex: that._getVisibleIndexObject(options.rowIndex, options.columnIndex),\r\n            sourceColumnElement: options.columnElement,\r\n            sourceLocation: options.sourceLocation\r\n        };\r\n        var document = _dom_adapter.default.getDocument();\r\n        that._onSelectStart = document.onselectstart;\r\n        document.onselectstart = function() {\r\n            return false\r\n        };\r\n        that._controller.drag(that._dropOptions);\r\n        that.element().css({\r\n            textAlign: columnElement && columnElement.css(\"textAlign\"),\r\n            height: columnElement && (isCommandColumn && columnElement.get(0).clientHeight || columnElement.height()),\r\n            width: columnElement && (isCommandColumn && columnElement.get(0).clientWidth || columnElement.width()),\r\n            whiteSpace: columnElement && columnElement.css(\"whiteSpace\")\r\n        }).addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS)).toggleClass(DRAGGING_COMMAND_CELL_CLASS, isCommandColumn).text(isCommandColumn ? \"\" : options.sourceColumn.caption);\r\n        that.element().appendTo(_swatch_container.default.getSwatchContainer(columnElement))\r\n    },\r\n    moveHeader: function(args) {\r\n        var e = args.event;\r\n        var that = e.data.that;\r\n        var eventData = (0, _index.eventData)(e);\r\n        var isResizing = that._columnsResizerViewController ? that._columnsResizerViewController.isResizing() : false;\r\n        var dragOptions = that._dragOptions;\r\n        if (that._isDragging && !isResizing) {\r\n            var $element = that.element();\r\n            var moveDeltaX = Math.abs(eventData.x - dragOptions.columnElement.offset().left - dragOptions.deltaX);\r\n            var moveDeltaY = Math.abs(eventData.y - dragOptions.columnElement.offset().top - dragOptions.deltaY);\r\n            if ($element.is(\":visible\") || moveDeltaX > DRAGGING_DELTA || moveDeltaY > DRAGGING_DELTA) {\r\n                $element.show();\r\n                var newLeft = eventData.x - dragOptions.deltaX;\r\n                var newTop = eventData.y - dragOptions.deltaY;\r\n                $element.css({\r\n                    left: newLeft,\r\n                    top: newTop\r\n                });\r\n                that.dockHeader(eventData)\r\n            }\r\n            e.preventDefault()\r\n        }\r\n    },\r\n    dockHeader: function(eventData) {\r\n        var that = this;\r\n        var targetDraggingPanel = that._getDraggingPanelByPos(eventData);\r\n        var controller = that._controller;\r\n        var params = that._dropOptions;\r\n        var dragOptions = that._dragOptions;\r\n        if (targetDraggingPanel) {\r\n            var rtlEnabled = that.option(\"rtlEnabled\");\r\n            var isVerticalOrientation = \"columnChooser\" === targetDraggingPanel.getName();\r\n            var axisName = isVerticalOrientation ? \"y\" : \"x\";\r\n            var targetLocation = targetDraggingPanel.getName();\r\n            var rowIndex = \"headers\" === targetLocation ? dragOptions.rowIndex : void 0;\r\n            var sourceColumn = dragOptions.sourceColumn;\r\n            var columnElements = targetDraggingPanel.getColumnElements(rowIndex, sourceColumn && sourceColumn.ownerBand) || [];\r\n            var pointsByTarget = dragOptions.pointsByTarget = dragOptions.pointsByTarget || {};\r\n            var pointsByColumns = \"columnChooser\" === targetLocation ? [] : pointsByTarget[targetLocation] || controller._generatePointsByColumns((0, _extend.extend)({}, dragOptions, {\r\n                targetDraggingPanel: targetDraggingPanel,\r\n                columns: targetDraggingPanel.getColumns(rowIndex),\r\n                columnElements: columnElements,\r\n                isVerticalOrientation: isVerticalOrientation,\r\n                startColumnIndex: \"headers\" === targetLocation && (0, _renderer.default)(columnElements[0]).index()\r\n            }));\r\n            pointsByTarget[targetLocation] = pointsByColumns;\r\n            params.targetLocation = targetLocation;\r\n            if (pointsByColumns.length > 0) {\r\n                for (var i = 0; i < pointsByColumns.length; i++) {\r\n                    var centerPosition = pointsByColumns[i + 1] && (pointsByColumns[i][axisName] + pointsByColumns[i + 1][axisName]) / 2;\r\n                    if (void 0 === centerPosition || (rtlEnabled && \"x\" === axisName ? eventData[axisName] > centerPosition : eventData[axisName] < centerPosition)) {\r\n                        params.targetColumnIndex = that._getVisibleIndexObject(rowIndex, pointsByColumns[i].columnIndex);\r\n                        if (columnElements[i]) {\r\n                            params.targetColumnElement = columnElements.eq(i);\r\n                            params.isLast = false\r\n                        } else {\r\n                            params.targetColumnElement = columnElements.last();\r\n                            params.isLast = true\r\n                        }\r\n                        params.posX = pointsByColumns[i].x;\r\n                        params.posY = pointsByColumns[i].y;\r\n                        controller.dock(params);\r\n                        break\r\n                    }\r\n                }\r\n            } else {\r\n                that._resetTargetColumnOptions();\r\n                controller.dock(params)\r\n            }\r\n        }\r\n    },\r\n    dropHeader: function(args) {\r\n        var e = args.event;\r\n        var that = e.data.that;\r\n        var controller = that._controller;\r\n        that.element().hide();\r\n        if (controller && that._isDragging) {\r\n            controller.drop(that._dropOptions)\r\n        }\r\n        that.element().appendTo(that._parentElement());\r\n        that._dragOptions = null;\r\n        that._dropOptions = null;\r\n        that._isDragging = false;\r\n        _dom_adapter.default.getDocument().onselectstart = that._onSelectStart || null\r\n    }\r\n});\r\nvar isNextColumnResizingMode = function(that) {\r\n    return \"widget\" !== that.option(\"columnResizingMode\")\r\n};\r\nvar ColumnsResizerViewController = _uiGrid_core.default.ViewController.inherit({\r\n    _isHeadersRowArea: function(posY) {\r\n        if (this._columnHeadersView) {\r\n            var element = this._columnHeadersView.element();\r\n            if (element) {\r\n                var offsetTop = element.offset().top;\r\n                var headersRowHeight = this._columnHeadersView.getHeadersRowHeight();\r\n                return posY >= offsetTop && posY <= offsetTop + headersRowHeight\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _isRtlParentStyle: function() {\r\n        var _this$_$parentContain;\r\n        return this.option(\"rtlEnabled\") && \"rtl\" === (null === (_this$_$parentContain = this._$parentContainer) || void 0 === _this$_$parentContain ? void 0 : _this$_$parentContain.parent().css(\"direction\"))\r\n    },\r\n    _pointCreated: function(point, cellsLength, columns) {\r\n        var isNextColumnMode = isNextColumnResizingMode(this);\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var isRtlParentStyle = this._isRtlParentStyle();\r\n        var firstPointColumnIndex = !isNextColumnMode && rtlEnabled && !isRtlParentStyle ? 0 : 1;\r\n        if (point.index >= firstPointColumnIndex && point.index < cellsLength + (!isNextColumnMode && (!rtlEnabled || isRtlParentStyle) ? 1 : 0)) {\r\n            point.columnIndex -= firstPointColumnIndex;\r\n            var currentColumn = columns[point.columnIndex] || {};\r\n            var nextColumn = columns[point.columnIndex + 1] || {};\r\n            return !(isNextColumnMode ? currentColumn.allowResizing && nextColumn.allowResizing : currentColumn.allowResizing)\r\n        }\r\n        return true\r\n    },\r\n    _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n        if (pointsByColumns) {\r\n            for (var i = 0; i < pointsByColumns.length; i++) {\r\n                if (pointsByColumns[i].x === pointsByColumns[0].x && pointsByColumns[i + 1] && pointsByColumns[i].x === pointsByColumns[i + 1].x) {\r\n                    continue\r\n                }\r\n                if (pointsByColumns[i].x - deltaX <= currentX && currentX <= pointsByColumns[i].x + deltaX) {\r\n                    return pointsByColumns[i]\r\n                }\r\n            }\r\n        }\r\n        return null\r\n    },\r\n    _moveSeparator: function(args) {\r\n        var e = args.event;\r\n        var that = e.data;\r\n        var columnsSeparatorWidth = that._columnsSeparatorView.width();\r\n        var isNextColumnMode = isNextColumnResizingMode(that);\r\n        var deltaX = columnsSeparatorWidth / 2;\r\n        var parentOffset = that._$parentContainer.offset();\r\n        var parentOffsetLeft = parentOffset.left;\r\n        var eventData = (0, _index.eventData)(e);\r\n        var rtlEnabled = that.option(\"rtlEnabled\");\r\n        var isRtlParentStyle = this._isRtlParentStyle();\r\n        if (that._isResizing && that._resizingInfo) {\r\n            if ((parentOffsetLeft <= eventData.x || !isNextColumnMode && isRtlParentStyle) && (!isNextColumnMode || eventData.x <= parentOffsetLeft + that._$parentContainer.width())) {\r\n                if (that._updateColumnsWidthIfNeeded(eventData.x)) {\r\n                    var $cell = that._columnHeadersView.getColumnElements().eq(that._resizingInfo.currentColumnIndex);\r\n                    var cell = $cell[0];\r\n                    if (cell) {\r\n                        var outerWidth = cell.getBoundingClientRect().width;\r\n                        that._columnsSeparatorView.moveByX($cell.offset().left + ((isNextColumnMode || isRtlParentStyle) && rtlEnabled ? 0 : outerWidth));\r\n                        that._tablePositionController.update(that._targetPoint.y);\r\n                        e.preventDefault()\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            if (that._isHeadersRowArea(eventData.y)) {\r\n                if (that._previousParentOffset) {\r\n                    if (that._previousParentOffset.left !== parentOffset.left || that._previousParentOffset.top !== parentOffset.top) {\r\n                        that.pointsByColumns(null)\r\n                    }\r\n                }\r\n                that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, columnsSeparatorWidth);\r\n                that._previousParentOffset = parentOffset;\r\n                that._isReadyResizing = false;\r\n                if (that._targetPoint) {\r\n                    that._columnsSeparatorView.changeCursor(\"col-resize\");\r\n                    that._columnsSeparatorView.moveByX(that._targetPoint.x - deltaX);\r\n                    that._tablePositionController.update(that._targetPoint.y);\r\n                    that._isReadyResizing = true;\r\n                    e.preventDefault()\r\n                } else {\r\n                    that._columnsSeparatorView.changeCursor()\r\n                }\r\n            } else {\r\n                that.pointsByColumns(null);\r\n                that._isReadyResizing = false;\r\n                that._columnsSeparatorView.changeCursor()\r\n            }\r\n        }\r\n    },\r\n    _endResizing: function(args) {\r\n        var e = args.event;\r\n        var that = e.data;\r\n        if (that._isResizing) {\r\n            that.pointsByColumns(null);\r\n            that._resizingInfo = null;\r\n            that._columnsSeparatorView.hide();\r\n            that._columnsSeparatorView.changeCursor();\r\n            that._trackerView.hide();\r\n            that._isReadyResizing = false;\r\n            that._isResizing = false\r\n        }\r\n    },\r\n    _getNextColumnIndex: function(currentColumnIndex) {\r\n        return currentColumnIndex + 1\r\n    },\r\n    _setupResizingInfo: function(posX) {\r\n        var that = this;\r\n        var currentColumnIndex = that._targetPoint.columnIndex;\r\n        var nextColumnIndex = that._getNextColumnIndex(currentColumnIndex);\r\n        var currentHeader = that._columnHeadersView.getHeaderElement(currentColumnIndex);\r\n        var nextHeader = that._columnHeadersView.getHeaderElement(nextColumnIndex);\r\n        that._resizingInfo = {\r\n            startPosX: posX,\r\n            currentColumnIndex: currentColumnIndex,\r\n            currentColumnWidth: currentHeader && currentHeader.length > 0 ? (0, _position.getBoundingRect)(currentHeader[0]).width : 0,\r\n            nextColumnIndex: nextColumnIndex,\r\n            nextColumnWidth: nextHeader && nextHeader.length > 0 ? (0, _position.getBoundingRect)(nextHeader[0]).width : 0\r\n        }\r\n    },\r\n    _startResizing: function(args) {\r\n        var e = args.event;\r\n        var that = e.data;\r\n        var eventData = (0, _index.eventData)(e);\r\n        if ((0, _index.isTouchEvent)(e)) {\r\n            if (that._isHeadersRowArea(eventData.y)) {\r\n                that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH);\r\n                if (that._targetPoint) {\r\n                    that._columnsSeparatorView.moveByX(that._targetPoint.x - that._columnsSeparatorView.width() / 2);\r\n                    that._isReadyResizing = true\r\n                }\r\n            } else {\r\n                that._isReadyResizing = false\r\n            }\r\n        }\r\n        if (that._isReadyResizing) {\r\n            that._setupResizingInfo(eventData.x);\r\n            that._isResizing = true;\r\n            that._tablePositionController.update(that._targetPoint.y);\r\n            that._columnsSeparatorView.show();\r\n            that._trackerView.show();\r\n            var scrollable = that.component.getScrollable();\r\n            if (scrollable && that._isRtlParentStyle()) {\r\n                that._scrollRight = scrollable.$content().width() - scrollable._container().width() - scrollable.scrollLeft()\r\n            }\r\n            e.preventDefault();\r\n            e.stopPropagation()\r\n        }\r\n        if (this.isResizing()) {\r\n            this.getController(\"editorFactory\").loseFocus()\r\n        }\r\n    },\r\n    _generatePointsByColumns: function() {\r\n        var that = this;\r\n        var columns = that._columnsController ? that._columnsController.getVisibleColumns() : [];\r\n        var cells = that._columnHeadersView.getColumnElements();\r\n        var pointsByColumns = [];\r\n        if (cells && cells.length > 0) {\r\n            pointsByColumns = _uiGrid_core2.default.getPointsByColumns(cells, function(point) {\r\n                return that._pointCreated(point, cells.length, columns)\r\n            })\r\n        }\r\n        that._pointsByColumns = pointsByColumns\r\n    },\r\n    _unsubscribeFromEvents: function() {\r\n        this._moveSeparatorHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this._moveSeparatorHandler);\r\n        this._startResizingHandler && _events_engine.default.off(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this._startResizingHandler);\r\n        if (this._endResizingHandler) {\r\n            _events_engine.default.off(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler);\r\n            _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler)\r\n        }\r\n    },\r\n    _subscribeToEvents: function() {\r\n        this._moveSeparatorHandler = this.createAction(this._moveSeparator);\r\n        this._startResizingHandler = this.createAction(this._startResizing);\r\n        this._endResizingHandler = this.createAction(this._endResizing);\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this, this._moveSeparatorHandler);\r\n        _events_engine.default.on(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this, this._startResizingHandler);\r\n        _events_engine.default.on(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler);\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler)\r\n    },\r\n    _updateColumnsWidthIfNeeded: function(posX) {\r\n        var deltaX;\r\n        var needUpdate = false;\r\n        var nextCellWidth;\r\n        var resizingInfo = this._resizingInfo;\r\n        var columnsController = this._columnsController;\r\n        var visibleColumns = columnsController.getVisibleColumns();\r\n        var columnsSeparatorWidth = this._columnsSeparatorView.width();\r\n        var contentWidth = this._rowsView.contentWidth();\r\n        var isNextColumnMode = isNextColumnResizingMode(this);\r\n        var adaptColumnWidthByRatio = isNextColumnMode && this.option(\"adaptColumnWidthByRatio\") && !this.option(\"columnAutoWidth\");\r\n        var minWidth;\r\n        var nextColumn;\r\n        var cellWidth;\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var isRtlParentStyle = this._isRtlParentStyle();\r\n\r\n        function isPercentWidth(width) {\r\n            return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n        }\r\n\r\n        function setColumnWidth(column, columnWidth, contentWidth, adaptColumnWidthByRatio) {\r\n            if (column) {\r\n                var oldColumnWidth = column.width;\r\n                if (oldColumnWidth) {\r\n                    adaptColumnWidthByRatio = isPercentWidth(oldColumnWidth)\r\n                }\r\n                if (adaptColumnWidthByRatio) {\r\n                    column && columnsController.columnOption(column.index, \"visibleWidth\", columnWidth);\r\n                    column && columnsController.columnOption(column.index, \"width\", (columnWidth / contentWidth * 100).toFixed(3) + \"%\")\r\n                } else {\r\n                    column && columnsController.columnOption(column.index, \"visibleWidth\", null);\r\n                    column && columnsController.columnOption(column.index, \"width\", columnWidth)\r\n                }\r\n            }\r\n        }\r\n\r\n        function correctContentWidth(contentWidth, visibleColumns) {\r\n            var allColumnsHaveWidth = visibleColumns.every(function(column) {\r\n                return column.width\r\n            });\r\n            if (allColumnsHaveWidth) {\r\n                var totalPercent = visibleColumns.reduce(function(sum, column) {\r\n                    if (isPercentWidth(column.width)) {\r\n                        sum += parseFloat(column.width)\r\n                    }\r\n                    return sum\r\n                }, 0);\r\n                if (totalPercent > 100) {\r\n                    contentWidth = contentWidth / totalPercent * 100\r\n                }\r\n            }\r\n            return contentWidth\r\n        }\r\n        deltaX = posX - resizingInfo.startPosX;\r\n        if ((isNextColumnMode || isRtlParentStyle) && rtlEnabled) {\r\n            deltaX = -deltaX\r\n        }\r\n        cellWidth = resizingInfo.currentColumnWidth + deltaX;\r\n        var column = visibleColumns[resizingInfo.currentColumnIndex];\r\n        minWidth = column && column.minWidth || columnsSeparatorWidth;\r\n        needUpdate = cellWidth >= minWidth;\r\n        if (isNextColumnMode) {\r\n            nextCellWidth = resizingInfo.nextColumnWidth - deltaX;\r\n            nextColumn = visibleColumns[resizingInfo.nextColumnIndex];\r\n            minWidth = nextColumn && nextColumn.minWidth || columnsSeparatorWidth;\r\n            needUpdate = needUpdate && nextCellWidth >= minWidth\r\n        }\r\n        if (needUpdate) {\r\n            columnsController.beginUpdate();\r\n            cellWidth = Math.floor(cellWidth);\r\n            contentWidth = correctContentWidth(contentWidth, visibleColumns);\r\n            setColumnWidth(column, cellWidth, contentWidth, adaptColumnWidthByRatio);\r\n            if (isNextColumnMode) {\r\n                nextCellWidth = Math.floor(nextCellWidth);\r\n                setColumnWidth(nextColumn, nextCellWidth, contentWidth, adaptColumnWidthByRatio)\r\n            } else {\r\n                var columnWidths = this._columnHeadersView.getColumnWidths();\r\n                columnWidths[resizingInfo.currentColumnIndex] = cellWidth;\r\n                var hasScroll = columnWidths.reduce(function(totalWidth, width) {\r\n                    return totalWidth + width\r\n                }, 0) > this._rowsView.contentWidth();\r\n                if (!hasScroll) {\r\n                    var lastColumnIndex = _uiGrid_core2.default.getLastResizableColumnIndex(visibleColumns);\r\n                    if (lastColumnIndex >= 0) {\r\n                        columnsController.columnOption(visibleColumns[lastColumnIndex].index, \"visibleWidth\", \"auto\")\r\n                    }\r\n                }\r\n                for (var i = 0; i < columnWidths.length; i++) {\r\n                    if (visibleColumns[i] && visibleColumns[i] !== column && void 0 === visibleColumns[i].width) {\r\n                        columnsController.columnOption(visibleColumns[i].index, \"width\", columnWidths[i])\r\n                    }\r\n                }\r\n            }\r\n            columnsController.endUpdate();\r\n            if (!isNextColumnMode) {\r\n                this.component.updateDimensions();\r\n                var scrollable = this.component.getScrollable();\r\n                if (scrollable && isRtlParentStyle) {\r\n                    var left = scrollable.$content().width() - scrollable._container().width() - this._scrollRight;\r\n                    scrollable.scrollTo({\r\n                        left: left\r\n                    })\r\n                }\r\n            }\r\n        }\r\n        return needUpdate\r\n    },\r\n    _subscribeToCallback: function(callback, handler) {\r\n        callback.add(handler);\r\n        this._subscribesToCallbacks.push({\r\n            callback: callback,\r\n            handler: handler\r\n        })\r\n    },\r\n    _unsubscribeFromCallbacks: function() {\r\n        for (var i = 0; i < this._subscribesToCallbacks.length; i++) {\r\n            var subscribe = this._subscribesToCallbacks[i];\r\n            subscribe.callback.remove(subscribe.handler)\r\n        }\r\n        this._subscribesToCallbacks = []\r\n    },\r\n    _unsubscribes: function() {\r\n        this._unsubscribeFromEvents();\r\n        this._unsubscribeFromCallbacks()\r\n    },\r\n    _init: function() {\r\n        var that = this;\r\n        var generatePointsByColumnsHandler = function() {\r\n            if (!that._isResizing) {\r\n                that.pointsByColumns(null)\r\n            }\r\n        };\r\n        var generatePointsByColumnsScrollHandler = function(offset) {\r\n            if (that._scrollLeft !== offset.left) {\r\n                that._scrollLeft = offset.left;\r\n                that.pointsByColumns(null)\r\n            }\r\n        };\r\n        that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n        that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n        that._trackerView = that.getView(\"trackerView\");\r\n        that._rowsView = that.getView(\"rowsView\");\r\n        that._columnsController = that.getController(\"columns\");\r\n        that._tablePositionController = that.getController(\"tablePosition\");\r\n        that._$parentContainer = that.component.$element();\r\n        that._subscribeToCallback(that._columnHeadersView.renderCompleted, generatePointsByColumnsHandler);\r\n        that._subscribeToCallback(that._columnHeadersView.resizeCompleted, generatePointsByColumnsHandler);\r\n        that._subscribeToCallback(that._columnsSeparatorView.renderCompleted, function() {\r\n            that._unsubscribeFromEvents();\r\n            that._subscribeToEvents()\r\n        });\r\n        that._subscribeToCallback(that._rowsView.renderCompleted, function() {\r\n            that._rowsView.scrollChanged.remove(generatePointsByColumnsScrollHandler);\r\n            that._rowsView.scrollChanged.add(generatePointsByColumnsScrollHandler)\r\n        });\r\n        var previousScrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n        var previousTableHeight = 0;\r\n        that._subscribeToCallback(that.getController(\"tablePosition\").positionChanged, function(e) {\r\n            if (that._isResizing && !that._rowsView.isResizing) {\r\n                var scrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n                if (previousScrollbarVisibility !== scrollbarVisibility || previousTableHeight && previousTableHeight !== e.height) {\r\n                    previousScrollbarVisibility = scrollbarVisibility;\r\n                    previousTableHeight = e.height;\r\n                    that.component.updateDimensions()\r\n                } else {\r\n                    that._rowsView.updateFreeSpaceRowHeight()\r\n                }\r\n            }\r\n            previousTableHeight = e.height\r\n        })\r\n    },\r\n    optionChanged: function(args) {\r\n        this.callBase(args);\r\n        if (\"allowColumnResizing\" === args.name) {\r\n            if (args.value) {\r\n                this._init();\r\n                this._subscribeToEvents()\r\n            } else {\r\n                this._unsubscribes()\r\n            }\r\n        }\r\n    },\r\n    isResizing: function() {\r\n        return this._isResizing\r\n    },\r\n    init: function() {\r\n        this._subscribesToCallbacks = [];\r\n        if (allowResizing(this)) {\r\n            this._init()\r\n        }\r\n    },\r\n    pointsByColumns: function(value) {\r\n        if (void 0 !== value) {\r\n            this._pointsByColumns = value\r\n        } else {\r\n            if (!this._pointsByColumns) {\r\n                this._generatePointsByColumns()\r\n            }\r\n            return this._pointsByColumns\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._unsubscribes();\r\n        this.callBase()\r\n    }\r\n});\r\nvar TablePositionViewController = _uiGrid_core.default.ViewController.inherit({\r\n    update: function(top) {\r\n        var that = this;\r\n        var params = {};\r\n        var $element = that._columnHeadersView.element();\r\n        var offset = $element && $element.offset();\r\n        var offsetTop = offset && offset.top || 0;\r\n        var diffOffsetTop = (0, _type.isDefined)(top) ? Math.abs(top - offsetTop) : 0;\r\n        var columnsHeadersHeight = that._columnHeadersView ? that._columnHeadersView.getHeight() : 0;\r\n        var scrollBarWidth = that._rowsView.getScrollbarWidth(true);\r\n        var rowsHeight = that._rowsView ? that._rowsView.height() - scrollBarWidth : 0;\r\n        var columnsResizerController = that.component.getController(\"columnsResizer\");\r\n        var draggingHeaderView = that.component.getView(\"draggingHeaderView\");\r\n        params.height = columnsHeadersHeight;\r\n        var isDraggingOrResizing = false !== columnsResizerController.isResizing() || draggingHeaderView.isDragging();\r\n        if (isDraggingOrResizing) {\r\n            params.height += rowsHeight - diffOffsetTop\r\n        }\r\n        if (null !== top && $element && $element.length) {\r\n            params.top = $element[0].offsetTop + diffOffsetTop\r\n        }\r\n        that.positionChanged.fire(params)\r\n    },\r\n    init: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        that._columnHeadersView = this.getView(\"columnHeadersView\");\r\n        that._rowsView = this.getView(\"rowsView\");\r\n        that._pagerView = this.getView(\"pagerView\");\r\n        that._rowsView.resizeCompleted.add(function() {\r\n            if (that.option(\"allowColumnResizing\")) {\r\n                var targetPoint = that.getController(\"columnsResizer\")._targetPoint;\r\n                that.update(targetPoint ? targetPoint.y : null)\r\n            }\r\n        })\r\n    },\r\n    ctor: function(component) {\r\n        this.callBase(component);\r\n        this.positionChanged = (0, _callbacks.default)()\r\n    }\r\n});\r\nvar DraggingHeaderViewController = _uiGrid_core.default.ViewController.inherit({\r\n    _generatePointsByColumns: function(options) {\r\n        var that = this;\r\n        return _uiGrid_core2.default.getPointsByColumns(options.columnElements, function(point) {\r\n            return that._pointCreated(point, options.columns, options.targetDraggingPanel.getName(), options.sourceColumn)\r\n        }, options.isVerticalOrientation, options.startColumnIndex)\r\n    },\r\n    _pointCreated: function(point, columns, location, sourceColumn) {\r\n        var targetColumn = columns[point.columnIndex];\r\n        var prevColumn = columns[point.columnIndex - 1];\r\n        switch (location) {\r\n            case \"columnChooser\":\r\n                return true;\r\n            case \"headers\":\r\n                return sourceColumn && !sourceColumn.allowReordering || (!targetColumn || !targetColumn.allowReordering) && (!prevColumn || !prevColumn.allowReordering);\r\n            default:\r\n                return 0 === columns.length\r\n        }\r\n    },\r\n    _subscribeToEvents: function(draggingHeader, draggingPanels) {\r\n        var that = this;\r\n        (0, _iterator.each)(draggingPanels, function(_, draggingPanel) {\r\n            if (draggingPanel) {\r\n                var columns;\r\n                var rowCount = draggingPanel.getRowCount ? draggingPanel.getRowCount() : 1;\r\n                var nameDraggingPanel = draggingPanel.getName();\r\n                var subscribeToEvents = function(index, columnElement) {\r\n                    if (!columnElement) {\r\n                        return\r\n                    }\r\n                    var $columnElement = (0, _renderer.default)(columnElement);\r\n                    var column = columns[index];\r\n                    if (draggingPanel.allowDragging(column, nameDraggingPanel, draggingPanels)) {\r\n                        $columnElement.addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS));\r\n                        _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE), that.createAction(function(args) {\r\n                            var e = args.event;\r\n                            var eventData = (0, _index.eventData)(e);\r\n                            draggingHeader.dragHeader({\r\n                                deltaX: eventData.x - (0, _renderer.default)(e.currentTarget).offset().left,\r\n                                deltaY: eventData.y - (0, _renderer.default)(e.currentTarget).offset().top,\r\n                                sourceColumn: column,\r\n                                index: column.index,\r\n                                columnIndex: index,\r\n                                columnElement: $columnElement,\r\n                                sourceLocation: nameDraggingPanel,\r\n                                draggingPanels: draggingPanels,\r\n                                rowIndex: that._columnsController.getRowIndex(column.index, true)\r\n                            })\r\n                        }));\r\n                        _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE), {\r\n                            that: draggingHeader\r\n                        }, that.createAction(draggingHeader.moveHeader));\r\n                        _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE), {\r\n                            that: draggingHeader\r\n                        }, that.createAction(draggingHeader.dropHeader))\r\n                    }\r\n                };\r\n                for (var i = 0; i < rowCount; i++) {\r\n                    var columnElements = draggingPanel.getColumnElements(i) || [];\r\n                    if (columnElements.length) {\r\n                        columns = draggingPanel.getColumns(i) || [];\r\n                        (0, _iterator.each)(columnElements, subscribeToEvents)\r\n                    }\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _unsubscribeFromEvents: function(draggingHeader, draggingPanels) {\r\n        var that = this;\r\n        (0, _iterator.each)(draggingPanels, function(_, draggingPanel) {\r\n            if (draggingPanel) {\r\n                var columnElements = draggingPanel.getColumnElements() || [];\r\n                (0, _iterator.each)(columnElements, function(index, columnElement) {\r\n                    var $columnElement = (0, _renderer.default)(columnElement);\r\n                    _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE));\r\n                    _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE));\r\n                    _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE));\r\n                    $columnElement.removeClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS))\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _getSeparator: function(targetLocation) {\r\n        return \"headers\" === targetLocation ? this._columnsSeparatorView : this._blockSeparatorView\r\n    },\r\n    hideSeparators: function(type) {\r\n        var blockSeparator = this._blockSeparatorView;\r\n        var columnsSeparator = this._columnsSeparatorView;\r\n        this._animationColumnIndex = null;\r\n        blockSeparator && blockSeparator.hide();\r\n        \"block\" !== type && columnsSeparator && columnsSeparator.hide()\r\n    },\r\n    init: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        that._columnsController = that.getController(\"columns\");\r\n        that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n        that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n        that._draggingHeaderView = that.getView(\"draggingHeaderView\");\r\n        that._rowsView = that.getView(\"rowsView\");\r\n        that._blockSeparatorView = that.getView(\"blockSeparatorView\");\r\n        that._headerPanelView = that.getView(\"headerPanel\");\r\n        that._columnChooserView = that.getView(\"columnChooserView\");\r\n        var subscribeToEvents = function() {\r\n            if (that._draggingHeaderView) {\r\n                var draggingPanels = [that._columnChooserView, that._columnHeadersView, that._headerPanelView];\r\n                that._unsubscribeFromEvents(that._draggingHeaderView, draggingPanels);\r\n                that._subscribeToEvents(that._draggingHeaderView, draggingPanels)\r\n            }\r\n        };\r\n        that._columnHeadersView.renderCompleted.add(subscribeToEvents);\r\n        that._headerPanelView && that._headerPanelView.renderCompleted.add(subscribeToEvents);\r\n        that._columnChooserView && that._columnChooserView.renderCompleted.add(subscribeToEvents)\r\n    },\r\n    allowDrop: function(parameters) {\r\n        return this._columnsController.allowMoveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n    },\r\n    drag: function(parameters) {\r\n        var sourceIndex = parameters.sourceIndex;\r\n        var sourceLocation = parameters.sourceLocation;\r\n        var sourceColumnElement = parameters.sourceColumnElement;\r\n        var headersView = this._columnHeadersView;\r\n        var rowsView = this._rowsView;\r\n        if (sourceColumnElement) {\r\n            sourceColumnElement.css({\r\n                opacity: COLUMN_OPACITY\r\n            });\r\n            if (\"headers\" === sourceLocation) {\r\n                headersView && headersView.setRowsOpacity(sourceIndex, COLUMN_OPACITY);\r\n                rowsView && rowsView.setRowsOpacity(sourceIndex, COLUMN_OPACITY)\r\n            }\r\n        }\r\n    },\r\n    dock: function(parameters) {\r\n        var that = this;\r\n        var targetColumnIndex = (0, _type.isObject)(parameters.targetColumnIndex) ? parameters.targetColumnIndex.columnIndex : parameters.targetColumnIndex;\r\n        var sourceLocation = parameters.sourceLocation;\r\n        var targetLocation = parameters.targetLocation;\r\n        var separator = that._getSeparator(targetLocation);\r\n        var hasTargetVisibleIndex = targetColumnIndex >= 0;\r\n        var showSeparator = function() {\r\n            if (that._animationColumnIndex !== targetColumnIndex) {\r\n                that.hideSeparators();\r\n                separator.element()[parameters.isLast ? \"insertAfter\" : \"insertBefore\"](parameters.targetColumnElement);\r\n                that._animationColumnIndex = targetColumnIndex;\r\n                separator.show(targetLocation)\r\n            }\r\n        };\r\n        that._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).toggleClass(that.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS), \"headers\" !== sourceLocation && \"headers\" === targetLocation && !hasTargetVisibleIndex);\r\n        if (separator) {\r\n            if (that.allowDrop(parameters) && hasTargetVisibleIndex) {\r\n                if (\"group\" === targetLocation || \"columnChooser\" === targetLocation) {\r\n                    showSeparator()\r\n                } else {\r\n                    that.hideSeparators(\"block\");\r\n                    that.getController(\"tablePosition\").update(parameters.posY);\r\n                    separator.moveByX(parameters.posX - separator.width());\r\n                    separator.show()\r\n                }\r\n            } else {\r\n                that.hideSeparators()\r\n            }\r\n        }\r\n    },\r\n    drop: function(parameters) {\r\n        var sourceColumnElement = parameters.sourceColumnElement;\r\n        if (sourceColumnElement) {\r\n            sourceColumnElement.css({\r\n                opacity: \"\"\r\n            });\r\n            this._columnHeadersView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n            this._rowsView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n            this._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).removeClass(this.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS))\r\n        }\r\n        if (this.allowDrop(parameters)) {\r\n            var separator = this._getSeparator(parameters.targetLocation);\r\n            if (separator) {\r\n                separator.hide()\r\n            }\r\n            this._columnsController.moveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n        }\r\n    },\r\n    dispose: function() {\r\n        if (this._draggingHeaderView) {\r\n            this._unsubscribeFromEvents(this._draggingHeaderView, [this._columnChooserView, this._columnHeadersView, this._headerPanelView])\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    views: {\r\n        columnsSeparatorView: ColumnsSeparatorView,\r\n        blockSeparatorView: BlockSeparatorView,\r\n        draggingHeaderView: DraggingHeaderView,\r\n        trackerView: TrackerView\r\n    },\r\n    controllers: {\r\n        draggingHeader: DraggingHeaderViewController,\r\n        tablePosition: TablePositionViewController,\r\n        columnsResizer: ColumnsResizerViewController\r\n    },\r\n    extenders: {\r\n        views: {\r\n            rowsView: {\r\n                _needUpdateRowHeight: function(itemCount) {\r\n                    var wordWrapEnabled = this.option(\"wordWrapEnabled\");\r\n                    var columnsResizerController = this.getController(\"columnsResizer\");\r\n                    var isResizing = columnsResizerController.isResizing();\r\n                    return this.callBase.apply(this, arguments) || itemCount > 0 && wordWrapEnabled && isResizing\r\n                }\r\n            }\r\n        },\r\n        controllers: {\r\n            editorFactory: {\r\n                renderFocusOverlay: function() {\r\n                    if (this.getController(\"columnsResizer\").isResizing()) {\r\n                        return\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/multi_view/ui.multi_view.animation.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.animation = exports._translator = void 0;\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _translator2 = require(\"../../animation/translator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _translator = {\r\n    move: function($element, position) {\r\n        (0, _translator2.move)($element, {\r\n            left: position\r\n        })\r\n    }\r\n};\r\nexports._translator = _translator;\r\nvar animation = {\r\n    moveTo: function($element, position, duration, completeAction) {\r\n        _fx.default.animate($element, {\r\n            type: \"slide\",\r\n            to: {\r\n                left: position\r\n            },\r\n            duration: duration,\r\n            complete: completeAction\r\n        })\r\n    },\r\n    complete: function($element) {\r\n        _fx.default.stop($element, true)\r\n    }\r\n};\r\nexports.animation = animation;\r\n","/**\r\n * DevExtreme (core/utils/array.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.groupBy = exports.find = exports.merge = exports.normalizeIndexes = exports.removeDuplicates = exports.intersection = exports.inArray = exports.wrapToArray = exports.isEmpty = void 0;\r\nvar _type = require(\"./type\");\r\nvar _iterator = require(\"./iterator\");\r\nvar _object = require(\"./object\");\r\nvar _config = _interopRequireDefault(require(\"../config\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar isEmpty = function(entity) {\r\n    return Array.isArray(entity) && !entity.length\r\n};\r\nexports.isEmpty = isEmpty;\r\nvar wrapToArray = function(entity) {\r\n    return Array.isArray(entity) ? entity : [entity]\r\n};\r\nexports.wrapToArray = wrapToArray;\r\nvar inArray = function(value, object) {\r\n    if (!object) {\r\n        return -1\r\n    }\r\n    var array = Array.isArray(object) ? object : object.toArray();\r\n    return array.indexOf(value)\r\n};\r\nexports.inArray = inArray;\r\nvar intersection = function(a, b) {\r\n    if (!Array.isArray(a) || 0 === a.length || !Array.isArray(b) || 0 === b.length) {\r\n        return []\r\n    }\r\n    var result = [];\r\n    (0, _iterator.each)(a, function(_, value) {\r\n        var index = inArray(value, b);\r\n        if (index !== -1) {\r\n            result.push(value)\r\n        }\r\n    });\r\n    return result\r\n};\r\nexports.intersection = intersection;\r\nvar removeDuplicates = function(from, what) {\r\n    if (!Array.isArray(from) || 0 === from.length) {\r\n        return []\r\n    }\r\n    if (!Array.isArray(what) || 0 === what.length) {\r\n        return from.slice()\r\n    }\r\n    var result = [];\r\n    (0, _iterator.each)(from, function(_, value) {\r\n        var index = inArray(value, what);\r\n        if (index === -1) {\r\n            result.push(value)\r\n        }\r\n    });\r\n    return result\r\n};\r\nexports.removeDuplicates = removeDuplicates;\r\nvar normalizeIndexes = function(items, indexParameterName, currentItem, needIndexCallback) {\r\n    var indexedItems = {};\r\n    var parameterIndex = 0;\r\n    var useLegacyVisibleIndex = (0, _config.default)().useLegacyVisibleIndex;\r\n    (0, _iterator.each)(items, function(index, item) {\r\n        index = item[indexParameterName];\r\n        if (index >= 0) {\r\n            indexedItems[index] = indexedItems[index] || [];\r\n            if (item === currentItem) {\r\n                indexedItems[index].unshift(item)\r\n            } else {\r\n                indexedItems[index].push(item)\r\n            }\r\n        } else {\r\n            item[indexParameterName] = void 0\r\n        }\r\n    });\r\n    if (!useLegacyVisibleIndex) {\r\n        (0, _iterator.each)(items, function() {\r\n            if (!(0, _type.isDefined)(this[indexParameterName]) && (!needIndexCallback || needIndexCallback(this))) {\r\n                while (indexedItems[parameterIndex]) {\r\n                    parameterIndex++\r\n                }\r\n                indexedItems[parameterIndex] = [this];\r\n                parameterIndex++\r\n            }\r\n        })\r\n    }\r\n    parameterIndex = 0;\r\n    (0, _object.orderEach)(indexedItems, function(index, items) {\r\n        (0, _iterator.each)(items, function() {\r\n            if (index >= 0) {\r\n                this[indexParameterName] = parameterIndex++\r\n            }\r\n        })\r\n    });\r\n    if (useLegacyVisibleIndex) {\r\n        (0, _iterator.each)(items, function() {\r\n            if (!(0, _type.isDefined)(this[indexParameterName]) && (!needIndexCallback || needIndexCallback(this))) {\r\n                this[indexParameterName] = parameterIndex++\r\n            }\r\n        })\r\n    }\r\n    return parameterIndex\r\n};\r\nexports.normalizeIndexes = normalizeIndexes;\r\nvar merge = function(array1, array2) {\r\n    for (var i = 0; i < array2.length; i++) {\r\n        array1[array1.length] = array2[i]\r\n    }\r\n    return array1\r\n};\r\nexports.merge = merge;\r\nvar find = function(array, condition) {\r\n    for (var i = 0; i < array.length; i++) {\r\n        if (condition(array[i])) {\r\n            return array[i]\r\n        }\r\n    }\r\n};\r\nexports.find = find;\r\nvar groupBy = function(array, cb) {\r\n    return array.reduce(function(result, item) {\r\n        return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, cb(item), [].concat(_toConsumableArray(result[cb(item)] || []), [item])))\r\n    }, {})\r\n};\r\nexports.groupBy = groupBy;\r\n","/**\r\n * DevExtreme (viz/series/points/stock_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _candlestick_point = _interopRequireDefault(require(\"./candlestick_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _isNumeric = _type.isNumeric;\r\nvar _default = _extend({}, _candlestick_point.default, {\r\n    _getPoints: function() {\r\n        var that = this;\r\n        var createPoint = that._options.rotated ? function(x, y) {\r\n            return [y, x]\r\n        } : function(x, y) {\r\n            return [x, y]\r\n        };\r\n        var openYExist = _isNumeric(that.openY);\r\n        var closeYExist = _isNumeric(that.closeY);\r\n        var x = that.x;\r\n        var width = that.width;\r\n        var points = [].concat(createPoint(x, that.highY));\r\n        openYExist && (points = points.concat(createPoint(x, that.openY)));\r\n        openYExist && (points = points.concat(createPoint(x - width / 2, that.openY)));\r\n        openYExist && (points = points.concat(createPoint(x, that.openY)));\r\n        closeYExist && (points = points.concat(createPoint(x, that.closeY)));\r\n        closeYExist && (points = points.concat(createPoint(x + width / 2, that.closeY)));\r\n        closeYExist && (points = points.concat(createPoint(x, that.closeY)));\r\n        points = points.concat(createPoint(x, that.lowY));\r\n        return points\r\n    },\r\n    _drawMarkerInGroup: function(group, attributes, renderer) {\r\n        this.graphic = renderer.path(this._getPoints(), \"line\").attr({\r\n            \"stroke-linecap\": \"square\"\r\n        }).attr(attributes).data({\r\n            \"chart-data-point\": this\r\n        }).sharp().append(group)\r\n    },\r\n    _getMinTrackerWidth: function() {\r\n        var width = 2 + this._styles.normal[\"stroke-width\"];\r\n        return width + width % 2\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.filter_builder.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_builder\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"filterBuilder\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/core/helpers.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.expand = expand;\r\nexports.changes = changes;\r\nexports.replaceInherit = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar isServerSide = !(0, _window.hasWindow)();\r\n\r\nfunction Flags() {\r\n    this.reset()\r\n}\r\nFlags.prototype = {\r\n    constructor: Flags,\r\n    add: function(codes) {\r\n        var i;\r\n        var ii = codes.length;\r\n        var flags = this._flags;\r\n        for (i = 0; i < ii; ++i) {\r\n            flags[codes[i]] = 1\r\n        }\r\n    },\r\n    has: function(code) {\r\n        return this._flags[code] > 0\r\n    },\r\n    count: function() {\r\n        return Object.keys(this._flags).length\r\n    },\r\n    reset: function() {\r\n        this._flags = {}\r\n    }\r\n};\r\n\r\nfunction combineMaps(baseMap, thisMap) {\r\n    return baseMap !== thisMap ? (0, _extend2.extend)({}, baseMap, thisMap) : (0, _extend2.extend)({}, baseMap)\r\n}\r\n\r\nfunction combineLists(baseList, thisList) {\r\n    return baseList !== thisList ? baseList.concat(thisList) : baseList.slice()\r\n}\r\n\r\nfunction buildTotalChanges(proto) {\r\n    proto._totalChangesOrder = proto._optionChangesOrder.concat(proto._layoutChangesOrder, proto._customChangesOrder)\r\n}\r\n\r\nfunction addChange(settings) {\r\n    var proto = this.prototype;\r\n    var code = settings.code;\r\n    proto[\"_change_\" + code] = settings.handler;\r\n    if (settings.isThemeDependent) {\r\n        proto._themeDependentChanges.push(code)\r\n    }\r\n    if (settings.option) {\r\n        proto._optionChangesMap[settings.option] = code\r\n    }(settings.isOptionChange ? proto._optionChangesOrder : proto._customChangesOrder).push(code);\r\n    buildTotalChanges(proto)\r\n}\r\n\r\nfunction createChainExecutor() {\r\n    var executeChain = function executeChain() {\r\n        var i;\r\n        var ii = executeChain._chain.length;\r\n        var result;\r\n        for (i = 0; i < ii; ++i) {\r\n            result = executeChain._chain[i].apply(this, arguments)\r\n        }\r\n        return result\r\n    };\r\n    executeChain._chain = [];\r\n    executeChain.add = function(item) {\r\n        executeChain._chain.push(item)\r\n    };\r\n    executeChain.copy = function(executor) {\r\n        executeChain._chain = executor._chain.slice()\r\n    };\r\n    return executeChain\r\n}\r\n\r\nfunction expand(target, name, expander) {\r\n    var current = target[name];\r\n    if (!current) {\r\n        current = expander\r\n    } else {\r\n        if (!current.add) {\r\n            current = createChainExecutor();\r\n            current.add(target[name]);\r\n            current.add(expander)\r\n        } else {\r\n            if (false === Object.prototype.hasOwnProperty.call(target, name)) {\r\n                current = createChainExecutor();\r\n                current.copy(target[name])\r\n            }\r\n            current.add(expander)\r\n        }\r\n    }\r\n    target[name] = current\r\n}\r\n\r\nfunction addPlugin(plugin) {\r\n    var proto = this.prototype;\r\n    proto._plugins.push(plugin);\r\n    plugin.fontFields && proto._fontFields.push.apply(proto._fontFields, plugin.fontFields);\r\n    if (plugin.members) {\r\n        (0, _extend2.extend)(this.prototype, plugin.members)\r\n    }\r\n    if (plugin.customize) {\r\n        plugin.customize(this)\r\n    }\r\n    if (plugin.extenders) {\r\n        Object.keys(plugin.extenders).forEach(function(key) {\r\n            var func = plugin.extenders[key];\r\n            expand(proto, key, func)\r\n        }, this)\r\n    }\r\n}\r\nvar replaceInherit = isServerSide ? function(widget) {\r\n    var _inherit = widget.inherit;\r\n    widget.inherit = function() {\r\n        var result = _inherit.apply(this, arguments);\r\n        var proto = result.prototype;\r\n        [\"_plugins\", \"_eventsMap\", \"_initialChanges\", \"_themeDependentChanges\", \"_optionChangesMap\", \"_optionChangesOrder\", \"_layoutChangesOrder\", \"_customChangesOrder\", \"_totalChangesOrder\"].forEach(function(key) {\r\n            proto[key] = {}\r\n        });\r\n        result.addPlugin = _common.noop;\r\n        return result\r\n    };\r\n    widget.addChange = _common.noop;\r\n    widget.addPlugin = _common.noop\r\n} : function(widget) {\r\n    var _inherit = widget.inherit;\r\n    widget.inherit = function() {\r\n        var proto = this.prototype;\r\n        var plugins = proto._plugins;\r\n        var fontFields = proto._fontFields;\r\n        var eventsMap = proto._eventsMap;\r\n        var initialChanges = proto._initialChanges;\r\n        var themeDependentChanges = proto._themeDependentChanges;\r\n        var optionChangesMap = proto._optionChangesMap;\r\n        var partialOptionChangesMap = proto._partialOptionChangesMap;\r\n        var partialOptionChangesPath = proto._partialOptionChangesPath;\r\n        var optionChangesOrder = proto._optionChangesOrder;\r\n        var layoutChangesOrder = proto._layoutChangesOrder;\r\n        var customChangesOrder = proto._customChangesOrder;\r\n        var result = _inherit.apply(this, arguments);\r\n        proto = result.prototype;\r\n        proto._plugins = combineLists(plugins, proto._plugins);\r\n        proto._fontFields = combineLists(fontFields, proto._fontFields);\r\n        proto._eventsMap = combineMaps(eventsMap, proto._eventsMap);\r\n        proto._initialChanges = combineLists(initialChanges, proto._initialChanges);\r\n        proto._themeDependentChanges = combineLists(themeDependentChanges, proto._themeDependentChanges);\r\n        proto._optionChangesMap = combineMaps(optionChangesMap, proto._optionChangesMap);\r\n        proto._partialOptionChangesMap = combineMaps(partialOptionChangesMap, proto._partialOptionChangesMap);\r\n        proto._partialOptionChangesPath = combineMaps(partialOptionChangesPath, proto._partialOptionChangesPath);\r\n        proto._optionChangesOrder = combineLists(optionChangesOrder, proto._optionChangesOrder);\r\n        proto._layoutChangesOrder = combineLists(layoutChangesOrder, proto._layoutChangesOrder);\r\n        proto._customChangesOrder = combineLists(customChangesOrder, proto._customChangesOrder);\r\n        buildTotalChanges(proto);\r\n        result.addPlugin = addPlugin;\r\n        return result\r\n    };\r\n    widget.prototype._plugins = [];\r\n    widget.prototype._fontFields = [];\r\n    widget.addChange = addChange;\r\n    widget.addPlugin = addPlugin\r\n};\r\nexports.replaceInherit = replaceInherit;\r\n\r\nfunction changes() {\r\n    return new Flags\r\n}\r\n","/**\r\n * DevExtreme (localization/default_date_names.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar MONTHS = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\nvar DAYS = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\nvar PERIODS = [\"AM\", \"PM\"];\r\nvar QUARTERS = [\"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\nvar cutCaptions = function(captions, format) {\r\n    var lengthByFormat = {\r\n        abbreviated: 3,\r\n        \"short\": 2,\r\n        narrow: 1\r\n    };\r\n    return (0, _iterator.map)(captions, function(caption) {\r\n        return caption.substr(0, lengthByFormat[format])\r\n    })\r\n};\r\nvar _default = {\r\n    getMonthNames: function(format) {\r\n        return cutCaptions(MONTHS, format)\r\n    },\r\n    getDayNames: function(format) {\r\n        return cutCaptions(DAYS, format)\r\n    },\r\n    getQuarterNames: function(format) {\r\n        return QUARTERS\r\n    },\r\n    getPeriodNames: function(format) {\r\n        return PERIODS\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_view_roller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _translator = require(\"../../animation/translator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATEVIEW_ROLLER_CLASS = \"dx-dateviewroller\";\r\nvar DATEVIEW_ROLLER_ACTIVE_CLASS = \"dx-state-active\";\r\nvar DATEVIEW_ROLLER_CURRENT_CLASS = \"dx-dateviewroller-current\";\r\nvar DATEVIEW_ROLLER_ITEM_CLASS = \"dx-dateview-item\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_CLASS = \"dx-dateview-item-selected\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS = \"dx-dateview-item-selected-frame\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS = \"dx-dateview-item-selected-border\";\r\nvar DateViewRoller = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            showScrollbar: false,\r\n            useNative: false,\r\n            selectedIndex: 0,\r\n            bounceEnabled: false,\r\n            items: [],\r\n            showOnClick: false,\r\n            onClick: null,\r\n            onSelectedIndexChanged: null\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"generic\"\r\n            },\r\n            options: {\r\n                scrollByContent: true\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._renderSelectedItemFrame()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.$element().addClass(DATEVIEW_ROLLER_CLASS);\r\n        this._renderContainerClick();\r\n        this._renderItems();\r\n        this._renderSelectedValue();\r\n        this._renderItemsClick();\r\n        this._renderWheelEvent();\r\n        this._wrapAction(\"_endAction\", this._endActionHandler.bind(this));\r\n        this._renderSelectedIndexChanged()\r\n    },\r\n    _renderSelectedIndexChanged: function() {\r\n        this._selectedIndexChanged = this._createActionByOption(\"onSelectedIndexChanged\")\r\n    },\r\n    _renderWheelEvent: function() {\r\n        var _this = this;\r\n        _events_engine.default.on(this._$container, \"dxmousewheel\", function(e) {\r\n            _this._isWheelScrolled = true\r\n        })\r\n    },\r\n    _renderContainerClick: function() {\r\n        if (!this.option(\"showOnClick\")) {\r\n            return\r\n        }\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        var clickAction = this._createActionByOption(\"onClick\");\r\n        _events_engine.default.off(this._$container, eventName);\r\n        _events_engine.default.on(this._$container, eventName, function(e) {\r\n            clickAction({\r\n                event: e\r\n            })\r\n        })\r\n    },\r\n    _wrapAction: function(actionName, callback) {\r\n        var strategy = this._strategy;\r\n        var originalAction = strategy[actionName];\r\n        strategy[actionName] = function() {\r\n            callback.apply(this, arguments);\r\n            return originalAction.apply(this, arguments)\r\n        }\r\n    },\r\n    _renderItems: function() {\r\n        var items = this.option(\"items\") || [];\r\n        var $items = (0, _renderer.default)();\r\n        this._$content.empty();\r\n        items.forEach(function(item) {\r\n            $items = $items.add((0, _renderer.default)(\"<div>\").addClass(DATEVIEW_ROLLER_ITEM_CLASS).append(item))\r\n        });\r\n        this._$content.append($items);\r\n        this._$items = $items;\r\n        this.update()\r\n    },\r\n    _renderSelectedItemFrame: function() {\r\n        (0, _renderer.default)(\"<div>\").addClass(DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS).append((0, _renderer.default)(\"<div>\").addClass(DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS)).appendTo(this._$container)\r\n    },\r\n    _renderSelectedValue: function(selectedIndex) {\r\n        var index = this._fitIndex(selectedIndex || this.option(\"selectedIndex\"));\r\n        this._moveTo({\r\n            top: this._getItemPosition(index)\r\n        });\r\n        this._renderActiveStateItem()\r\n    },\r\n    _fitIndex: function(index) {\r\n        var items = this.option(\"items\") || [];\r\n        var itemCount = items.length;\r\n        if (index >= itemCount) {\r\n            return itemCount - 1\r\n        }\r\n        if (index < 0) {\r\n            return 0\r\n        }\r\n        return index\r\n    },\r\n    _getItemPosition: function(index) {\r\n        return Math.round(this._itemHeight() * index)\r\n    },\r\n    _renderItemsClick: function() {\r\n        var itemSelector = this._getItemSelector();\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        _events_engine.default.off(this.$element(), eventName, itemSelector);\r\n        _events_engine.default.on(this.$element(), eventName, itemSelector, this._itemClickHandler.bind(this))\r\n    },\r\n    _getItemSelector: function() {\r\n        return \".\" + DATEVIEW_ROLLER_ITEM_CLASS\r\n    },\r\n    _itemClickHandler: function(e) {\r\n        this.option(\"selectedIndex\", this._itemElementIndex(e.currentTarget))\r\n    },\r\n    _itemElementIndex: function(itemElement) {\r\n        return this._itemElements().index(itemElement)\r\n    },\r\n    _itemElements: function() {\r\n        return this.$element().find(this._getItemSelector())\r\n    },\r\n    _renderActiveStateItem: function() {\r\n        var selectedIndex = this.option(\"selectedIndex\");\r\n        (0, _iterator.each)(this._$items, function(index) {\r\n            (0, _renderer.default)(this).toggleClass(DATEVIEW_ROLLER_ITEM_SELECTED_CLASS, selectedIndex === index)\r\n        })\r\n    },\r\n    _shouldScrollToNeighborItem: function() {\r\n        return \"desktop\" === _devices.default.real().deviceType && this._isWheelScrolled\r\n    },\r\n    _moveTo: function(targetLocation) {\r\n        targetLocation = this._normalizeLocation(targetLocation);\r\n        var location = this._location();\r\n        var delta = {\r\n            x: -(location.left - targetLocation.left),\r\n            y: -(location.top - targetLocation.top)\r\n        };\r\n        if (this._isVisible() && (delta.x || delta.y)) {\r\n            this._strategy._prepareDirections(true);\r\n            if (this._animation && !this._shouldScrollToNeighborItem()) {\r\n                var that = this;\r\n                _fx.default.stop(this._$content);\r\n                _fx.default.animate(this._$content, {\r\n                    duration: 200,\r\n                    type: \"slide\",\r\n                    to: {\r\n                        top: Math.floor(delta.y)\r\n                    },\r\n                    complete: function() {\r\n                        (0, _translator.resetPosition)(that._$content);\r\n                        that._strategy.handleMove({\r\n                            delta: delta\r\n                        })\r\n                    }\r\n                });\r\n                delete this._animation\r\n            } else {\r\n                this._strategy.handleMove({\r\n                    delta: delta\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _validate: function(e) {\r\n        return this._strategy.validate(e)\r\n    },\r\n    _fitSelectedIndexInRange: function(index) {\r\n        var itemsCount = this.option(\"items\").length;\r\n        return Math.max(Math.min(index, itemsCount - 1), 0)\r\n    },\r\n    _isInNullNeighborhood: function(x) {\r\n        var EPS = .1;\r\n        return -EPS <= x && x <= EPS\r\n    },\r\n    _getSelectedIndexAfterScroll: function(currentSelectedIndex) {\r\n        var locationTop = -this._location().top;\r\n        var currentSelectedIndexPosition = currentSelectedIndex * this._itemHeight();\r\n        var dy = locationTop - currentSelectedIndexPosition;\r\n        if (this._isInNullNeighborhood(dy)) {\r\n            return currentSelectedIndex\r\n        }\r\n        var direction = dy > 0 ? 1 : -1;\r\n        var newSelectedIndex = this._fitSelectedIndexInRange(currentSelectedIndex + direction);\r\n        return newSelectedIndex\r\n    },\r\n    _getNewSelectedIndex: function(currentSelectedIndex) {\r\n        if (this._shouldScrollToNeighborItem()) {\r\n            return this._getSelectedIndexAfterScroll(currentSelectedIndex)\r\n        }\r\n        this._animation = true;\r\n        var ratio = -this._location().top / this._itemHeight();\r\n        return Math.round(ratio)\r\n    },\r\n    _endActionHandler: function() {\r\n        var currentSelectedIndex = this.option(\"selectedIndex\");\r\n        var newSelectedIndex = this._getNewSelectedIndex(currentSelectedIndex);\r\n        if (newSelectedIndex === currentSelectedIndex) {\r\n            this._renderSelectedValue(newSelectedIndex)\r\n        } else {\r\n            this.option(\"selectedIndex\", newSelectedIndex)\r\n        }\r\n        this._isWheelScrolled = false\r\n    },\r\n    _itemHeight: function() {\r\n        var $item = this._$items.first();\r\n        return $item.get(0) && (0, _position.getBoundingRect)($item.get(0)).height || 0\r\n    },\r\n    _toggleActive: function(state) {\r\n        this.$element().toggleClass(DATEVIEW_ROLLER_ACTIVE_CLASS, state)\r\n    },\r\n    _isVisible: function() {\r\n        return this._$container.is(\":visible\")\r\n    },\r\n    _fireSelectedIndexChanged: function(value, previousValue) {\r\n        this._selectedIndexChanged({\r\n            value: value,\r\n            previousValue: previousValue,\r\n            event: void 0\r\n        })\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        this.callBase(visible);\r\n        if (visible) {\r\n            this._renderSelectedValue(this.option(\"selectedIndex\"))\r\n        }\r\n        this.toggleActiveState(false)\r\n    },\r\n    toggleActiveState: function(state) {\r\n        this.$element().toggleClass(DATEVIEW_ROLLER_CURRENT_CLASS, state)\r\n    },\r\n    _refreshSelectedIndex: function() {\r\n        var selectedIndex = this.option(\"selectedIndex\");\r\n        var fitIndex = this._fitIndex(selectedIndex);\r\n        fitIndex === selectedIndex ? this._renderActiveStateItem() : this.option(\"selectedIndex\", fitIndex)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"selectedIndex\":\r\n                this._fireSelectedIndexChanged(args.value, args.previousValue);\r\n                this._renderSelectedValue(args.value);\r\n                break;\r\n            case \"items\":\r\n                this._renderItems();\r\n                this._refreshSelectedIndex();\r\n                break;\r\n            case \"onClick\":\r\n            case \"showOnClick\":\r\n                this._renderContainerClick();\r\n                break;\r\n            case \"onSelectedIndexChanged\":\r\n                this._renderSelectedIndexChanged();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxDateViewRoller\", DateViewRoller);\r\nvar _default = DateViewRoller;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/form/constants.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.FORM_VALIDATION_SUMMARY = exports.GROUP_COL_COUNT_ATTR = exports.GROUP_COL_COUNT_CLASS = exports.FIELD_ITEM_TAB_CLASS = exports.HIDDEN_LABEL_CLASS = exports.FORM_GROUP_WITH_CAPTION_CLASS = exports.FIELD_ITEM_CONTENT_HAS_TABS_CLASS = exports.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS = exports.FORM_GROUP_CONTENT_CLASS = exports.ROOT_SIMPLE_ITEM_CLASS = exports.SINGLE_COLUMN_ITEM_CONTENT = exports.FIELD_BUTTON_ITEM_CLASS = exports.FIELD_EMPTY_ITEM_CLASS = exports.FIELD_ITEM_CONTENT_CLASS = exports.FIELD_ITEM_CONTENT_LOCATION_CLASS = exports.FIELD_ITEM_LABEL_CLASS = exports.FIELD_ITEM_LABEL_ALIGN_CLASS = exports.FIELD_ITEM_LABEL_LOCATION_CLASS = exports.LABEL_HORIZONTAL_ALIGNMENT_CLASS = exports.LABEL_VERTICAL_ALIGNMENT_CLASS = exports.FORM_LAYOUT_MANAGER_CLASS = exports.FIELD_ITEM_CONTENT_WRAPPER_CLASS = exports.FIELD_ITEM_HELP_TEXT_CLASS = exports.FIELD_ITEM_LABEL_CONTENT_CLASS = exports.FIELD_ITEM_LABEL_TEXT_CLASS = exports.FIELD_ITEM_REQUIRED_CLASS = exports.FIELD_ITEM_OPTIONAL_CLASS = exports.FIELD_ITEM_REQUIRED_MARK_CLASS = exports.FIELD_ITEM_OPTIONAL_MARK_CLASS = exports.LAYOUT_MANAGER_ONE_COLUMN = exports.FLEX_LAYOUT_CLASS = exports.FIELD_ITEM_CLASS = exports.FORM_FIELD_ITEM_COL_CLASS = exports.FORM_GROUP_CAPTION_CLASS = exports.FORM_GROUP_CLASS = exports.FORM_CLASS = void 0;\r\nvar FORM_CLASS = \"dx-form\";\r\nexports.FORM_CLASS = FORM_CLASS;\r\nvar FORM_GROUP_CLASS = \"dx-form-group\";\r\nexports.FORM_GROUP_CLASS = FORM_GROUP_CLASS;\r\nvar FORM_GROUP_CAPTION_CLASS = \"dx-form-group-caption\";\r\nexports.FORM_GROUP_CAPTION_CLASS = FORM_GROUP_CAPTION_CLASS;\r\nvar FORM_FIELD_ITEM_COL_CLASS = \"dx-col-\";\r\nexports.FORM_FIELD_ITEM_COL_CLASS = FORM_FIELD_ITEM_COL_CLASS;\r\nvar FIELD_ITEM_CLASS = \"dx-field-item\";\r\nexports.FIELD_ITEM_CLASS = FIELD_ITEM_CLASS;\r\nvar FLEX_LAYOUT_CLASS = \"dx-flex-layout\";\r\nexports.FLEX_LAYOUT_CLASS = FLEX_LAYOUT_CLASS;\r\nvar LAYOUT_MANAGER_ONE_COLUMN = \"dx-layout-manager-one-col\";\r\nexports.LAYOUT_MANAGER_ONE_COLUMN = LAYOUT_MANAGER_ONE_COLUMN;\r\nvar FIELD_ITEM_OPTIONAL_MARK_CLASS = \"dx-field-item-optional-mark\";\r\nexports.FIELD_ITEM_OPTIONAL_MARK_CLASS = FIELD_ITEM_OPTIONAL_MARK_CLASS;\r\nvar FIELD_ITEM_REQUIRED_MARK_CLASS = \"dx-field-item-required-mark\";\r\nexports.FIELD_ITEM_REQUIRED_MARK_CLASS = FIELD_ITEM_REQUIRED_MARK_CLASS;\r\nvar FIELD_ITEM_OPTIONAL_CLASS = \"dx-field-item-optional\";\r\nexports.FIELD_ITEM_OPTIONAL_CLASS = FIELD_ITEM_OPTIONAL_CLASS;\r\nvar FIELD_ITEM_REQUIRED_CLASS = \"dx-field-item-required\";\r\nexports.FIELD_ITEM_REQUIRED_CLASS = FIELD_ITEM_REQUIRED_CLASS;\r\nvar FIELD_ITEM_LABEL_TEXT_CLASS = \"dx-field-item-label-text\";\r\nexports.FIELD_ITEM_LABEL_TEXT_CLASS = FIELD_ITEM_LABEL_TEXT_CLASS;\r\nvar FIELD_ITEM_LABEL_CONTENT_CLASS = \"dx-field-item-label-content\";\r\nexports.FIELD_ITEM_LABEL_CONTENT_CLASS = FIELD_ITEM_LABEL_CONTENT_CLASS;\r\nvar FIELD_ITEM_HELP_TEXT_CLASS = \"dx-field-item-help-text\";\r\nexports.FIELD_ITEM_HELP_TEXT_CLASS = FIELD_ITEM_HELP_TEXT_CLASS;\r\nvar FIELD_ITEM_CONTENT_WRAPPER_CLASS = \"dx-field-item-content-wrapper\";\r\nexports.FIELD_ITEM_CONTENT_WRAPPER_CLASS = FIELD_ITEM_CONTENT_WRAPPER_CLASS;\r\nvar FORM_LAYOUT_MANAGER_CLASS = \"dx-layout-manager\";\r\nexports.FORM_LAYOUT_MANAGER_CLASS = FORM_LAYOUT_MANAGER_CLASS;\r\nvar LABEL_VERTICAL_ALIGNMENT_CLASS = \"dx-label-v-align\";\r\nexports.LABEL_VERTICAL_ALIGNMENT_CLASS = LABEL_VERTICAL_ALIGNMENT_CLASS;\r\nvar LABEL_HORIZONTAL_ALIGNMENT_CLASS = \"dx-label-h-align\";\r\nexports.LABEL_HORIZONTAL_ALIGNMENT_CLASS = LABEL_HORIZONTAL_ALIGNMENT_CLASS;\r\nvar FIELD_ITEM_LABEL_LOCATION_CLASS = \"dx-field-item-label-location-\";\r\nexports.FIELD_ITEM_LABEL_LOCATION_CLASS = FIELD_ITEM_LABEL_LOCATION_CLASS;\r\nvar FIELD_ITEM_LABEL_ALIGN_CLASS = \"dx-field-item-label-align\";\r\nexports.FIELD_ITEM_LABEL_ALIGN_CLASS = FIELD_ITEM_LABEL_ALIGN_CLASS;\r\nvar FIELD_ITEM_LABEL_CLASS = \"dx-field-item-label\";\r\nexports.FIELD_ITEM_LABEL_CLASS = FIELD_ITEM_LABEL_CLASS;\r\nvar FIELD_ITEM_CONTENT_LOCATION_CLASS = \"dx-field-item-content-location-\";\r\nexports.FIELD_ITEM_CONTENT_LOCATION_CLASS = FIELD_ITEM_CONTENT_LOCATION_CLASS;\r\nvar FIELD_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nexports.FIELD_ITEM_CONTENT_CLASS = FIELD_ITEM_CONTENT_CLASS;\r\nvar FIELD_EMPTY_ITEM_CLASS = \"dx-field-empty-item\";\r\nexports.FIELD_EMPTY_ITEM_CLASS = FIELD_EMPTY_ITEM_CLASS;\r\nvar FIELD_BUTTON_ITEM_CLASS = \"dx-field-button-item\";\r\nexports.FIELD_BUTTON_ITEM_CLASS = FIELD_BUTTON_ITEM_CLASS;\r\nvar SINGLE_COLUMN_ITEM_CONTENT = \"dx-single-column-item-content\";\r\nexports.SINGLE_COLUMN_ITEM_CONTENT = SINGLE_COLUMN_ITEM_CONTENT;\r\nvar ROOT_SIMPLE_ITEM_CLASS = \"dx-root-simple-item\";\r\nexports.ROOT_SIMPLE_ITEM_CLASS = ROOT_SIMPLE_ITEM_CLASS;\r\nvar FORM_GROUP_CONTENT_CLASS = \"dx-form-group-content\";\r\nexports.FORM_GROUP_CONTENT_CLASS = FORM_GROUP_CONTENT_CLASS;\r\nvar FIELD_ITEM_CONTENT_HAS_GROUP_CLASS = \"dx-field-item-has-group\";\r\nexports.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS = FIELD_ITEM_CONTENT_HAS_GROUP_CLASS;\r\nvar FIELD_ITEM_CONTENT_HAS_TABS_CLASS = \"dx-field-item-has-tabs\";\r\nexports.FIELD_ITEM_CONTENT_HAS_TABS_CLASS = FIELD_ITEM_CONTENT_HAS_TABS_CLASS;\r\nvar FORM_GROUP_WITH_CAPTION_CLASS = \"dx-form-group-with-caption\";\r\nexports.FORM_GROUP_WITH_CAPTION_CLASS = FORM_GROUP_WITH_CAPTION_CLASS;\r\nvar HIDDEN_LABEL_CLASS = \"dx-layout-manager-hidden-label\";\r\nexports.HIDDEN_LABEL_CLASS = HIDDEN_LABEL_CLASS;\r\nvar FIELD_ITEM_TAB_CLASS = \"dx-field-item-tab\";\r\nexports.FIELD_ITEM_TAB_CLASS = FIELD_ITEM_TAB_CLASS;\r\nvar GROUP_COL_COUNT_CLASS = \"dx-group-colcount-\";\r\nexports.GROUP_COL_COUNT_CLASS = GROUP_COL_COUNT_CLASS;\r\nvar GROUP_COL_COUNT_ATTR = \"group-col-count\";\r\nexports.GROUP_COL_COUNT_ATTR = GROUP_COL_COUNT_ATTR;\r\nvar FORM_VALIDATION_SUMMARY = \"dx-form-validation-summary\";\r\nexports.FORM_VALIDATION_SUMMARY = FORM_VALIDATION_SUMMARY;\r\n","/**\r\n * DevExtreme (ui/selection/selection.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _selectionStrategy = _interopRequireDefault(require(\"./selection.strategy.deferred\"));\r\nvar _selectionStrategy2 = _interopRequireDefault(require(\"./selection.strategy.standard\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _class.default.inherit({\r\n    ctor: function(options) {\r\n        this.options = (0, _extend.extend)(this._getDefaultOptions(), options, {\r\n            selectedItemKeys: options.selectedKeys || []\r\n        });\r\n        this._selectionStrategy = this.options.deferred ? new _selectionStrategy.default(this.options) : new _selectionStrategy2.default(this.options);\r\n        this._focusedItemIndex = -1;\r\n        if (!this.options.equalByReference) {\r\n            this._selectionStrategy.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n        }\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return {\r\n            allowNullValue: false,\r\n            deferred: false,\r\n            equalByReference: false,\r\n            mode: \"multiple\",\r\n            selectedItems: [],\r\n            selectionFilter: [],\r\n            maxFilterLengthInRequest: 0,\r\n            onSelectionChanged: _common.noop,\r\n            key: _common.noop,\r\n            keyOf: function(item) {\r\n                return item\r\n            },\r\n            load: function() {\r\n                return (new _deferred.Deferred).resolve([])\r\n            },\r\n            totalCount: function() {\r\n                return -1\r\n            },\r\n            isSelectableItem: function() {\r\n                return true\r\n            },\r\n            isItemSelected: function() {\r\n                return false\r\n            },\r\n            getItemData: function(item) {\r\n                return item\r\n            },\r\n            dataFields: _common.noop,\r\n            filter: _common.noop\r\n        }\r\n    },\r\n    validate: function() {\r\n        this._selectionStrategy.validate()\r\n    },\r\n    getSelectedItemKeys: function() {\r\n        return this._selectionStrategy.getSelectedItemKeys()\r\n    },\r\n    getSelectedItems: function() {\r\n        return this._selectionStrategy.getSelectedItems()\r\n    },\r\n    selectionFilter: function(value) {\r\n        if (void 0 === value) {\r\n            return this.options.selectionFilter\r\n        }\r\n        var filterIsChanged = this.options.selectionFilter !== value && JSON.stringify(this.options.selectionFilter) !== JSON.stringify(value);\r\n        this.options.selectionFilter = value;\r\n        filterIsChanged && this.onSelectionChanged()\r\n    },\r\n    setSelection: function(keys) {\r\n        return this.selectedItemKeys(keys)\r\n    },\r\n    select: function(keys) {\r\n        return this.selectedItemKeys(keys, true)\r\n    },\r\n    deselect: function(keys) {\r\n        return this.selectedItemKeys(keys, true, true)\r\n    },\r\n    selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n        var that = this;\r\n        keys = (0, _type.isDefined)(keys) ? keys : [];\r\n        keys = Array.isArray(keys) ? keys : [keys];\r\n        that.validate();\r\n        return this._selectionStrategy.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)\r\n    },\r\n    clearSelection: function() {\r\n        return this.selectedItemKeys([])\r\n    },\r\n    _addSelectedItem: function(itemData, key) {\r\n        this._selectionStrategy.addSelectedItem(key, itemData)\r\n    },\r\n    _removeSelectedItem: function(key) {\r\n        this._selectionStrategy.removeSelectedItem(key)\r\n    },\r\n    _setSelectedItems: function(keys, items) {\r\n        this._selectionStrategy.setSelectedItems(keys, items)\r\n    },\r\n    onSelectionChanged: function() {\r\n        this._selectionStrategy.onSelectionChanged()\r\n    },\r\n    changeItemSelection: function(itemIndex, keys) {\r\n        var isSelectedItemsChanged;\r\n        var items = this.options.plainItems();\r\n        var item = items[itemIndex];\r\n        if (!this.isSelectable() || !this.isDataItem(item)) {\r\n            return false\r\n        }\r\n        var itemData = this.options.getItemData(item);\r\n        var itemKey = this.options.keyOf(itemData);\r\n        keys = keys || {};\r\n        if (keys.shift && \"multiple\" === this.options.mode && this._focusedItemIndex >= 0) {\r\n            isSelectedItemsChanged = this.changeItemSelectionWhenShiftKeyPressed(itemIndex, items)\r\n        } else {\r\n            if (keys.control) {\r\n                this._resetItemSelectionWhenShiftKeyPressed();\r\n                var isSelected = this._selectionStrategy.isItemDataSelected(itemData);\r\n                if (\"single\" === this.options.mode) {\r\n                    this.clearSelectedItems()\r\n                }\r\n                if (isSelected) {\r\n                    this._removeSelectedItem(itemKey)\r\n                } else {\r\n                    this._addSelectedItem(itemData, itemKey)\r\n                }\r\n                isSelectedItemsChanged = true\r\n            } else {\r\n                this._resetItemSelectionWhenShiftKeyPressed();\r\n                var isKeysEqual = this._selectionStrategy.equalKeys(this.options.selectedItemKeys[0], itemKey);\r\n                if (1 !== this.options.selectedItemKeys.length || !isKeysEqual) {\r\n                    this._setSelectedItems([itemKey], [itemData]);\r\n                    isSelectedItemsChanged = true\r\n                }\r\n            }\r\n        }\r\n        if (isSelectedItemsChanged) {\r\n            this._focusedItemIndex = itemIndex;\r\n            this.onSelectionChanged();\r\n            return true\r\n        }\r\n    },\r\n    isDataItem: function(item) {\r\n        return this.options.isSelectableItem(item)\r\n    },\r\n    isSelectable: function() {\r\n        return \"single\" === this.options.mode || \"multiple\" === this.options.mode\r\n    },\r\n    isItemDataSelected: function(data) {\r\n        return this._selectionStrategy.isItemDataSelected(data)\r\n    },\r\n    isItemSelected: function(arg) {\r\n        return this._selectionStrategy.isItemKeySelected(arg)\r\n    },\r\n    _resetItemSelectionWhenShiftKeyPressed: function() {\r\n        delete this._shiftFocusedItemIndex\r\n    },\r\n    _resetFocusedItemIndex: function() {\r\n        this._focusedItemIndex = -1\r\n    },\r\n    changeItemSelectionWhenShiftKeyPressed: function(itemIndex, items) {\r\n        var isSelectedItemsChanged = false;\r\n        var itemIndexStep;\r\n        var index;\r\n        var keyOf = this.options.keyOf;\r\n        var focusedItem = items[this._focusedItemIndex];\r\n        var focusedData = this.options.getItemData(focusedItem);\r\n        var focusedKey = keyOf(focusedData);\r\n        var isFocusedItemSelected = focusedItem && this.isItemDataSelected(focusedData);\r\n        if (!(0, _type.isDefined)(this._shiftFocusedItemIndex)) {\r\n            this._shiftFocusedItemIndex = this._focusedItemIndex\r\n        }\r\n        var data;\r\n        var itemKey;\r\n        if (this._shiftFocusedItemIndex !== this._focusedItemIndex) {\r\n            itemIndexStep = this._focusedItemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n            for (index = this._focusedItemIndex; index !== this._shiftFocusedItemIndex; index += itemIndexStep) {\r\n                if (this.isDataItem(items[index])) {\r\n                    itemKey = keyOf(this.options.getItemData(items[index]));\r\n                    this._removeSelectedItem(itemKey);\r\n                    isSelectedItemsChanged = true\r\n                }\r\n            }\r\n        }\r\n        if (itemIndex !== this._shiftFocusedItemIndex) {\r\n            itemIndexStep = itemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n            for (index = itemIndex; index !== this._shiftFocusedItemIndex; index += itemIndexStep) {\r\n                if (this.isDataItem(items[index])) {\r\n                    data = this.options.getItemData(items[index]);\r\n                    itemKey = keyOf(data);\r\n                    this._addSelectedItem(data, itemKey);\r\n                    isSelectedItemsChanged = true\r\n                }\r\n            }\r\n        }\r\n        if (this.isDataItem(focusedItem) && !isFocusedItemSelected) {\r\n            this._addSelectedItem(focusedData, focusedKey);\r\n            isSelectedItemsChanged = true\r\n        }\r\n        return isSelectedItemsChanged\r\n    },\r\n    clearSelectedItems: function() {\r\n        this._setSelectedItems([], [])\r\n    },\r\n    selectAll: function(isOnePage) {\r\n        this._resetFocusedItemIndex();\r\n        if (isOnePage) {\r\n            return this._onePageSelectAll(false)\r\n        } else {\r\n            return this.selectedItemKeys([], true, false, true)\r\n        }\r\n    },\r\n    deselectAll: function(isOnePage) {\r\n        this._resetFocusedItemIndex();\r\n        if (isOnePage) {\r\n            return this._onePageSelectAll(true)\r\n        } else {\r\n            return this.selectedItemKeys([], true, true, true)\r\n        }\r\n    },\r\n    _onePageSelectAll: function(isDeselect) {\r\n        var items = this._selectionStrategy.getSelectableItems(this.options.plainItems());\r\n        for (var i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            if (this.isDataItem(item)) {\r\n                var itemData = this.options.getItemData(item);\r\n                var itemKey = this.options.keyOf(itemData);\r\n                var isSelected = this.isItemSelected(itemKey);\r\n                if (!isSelected && !isDeselect) {\r\n                    this._addSelectedItem(itemData, itemKey)\r\n                }\r\n                if (isSelected && isDeselect) {\r\n                    this._removeSelectedItem(itemKey)\r\n                }\r\n            }\r\n        }\r\n        this.onSelectionChanged();\r\n        return (new _deferred.Deferred).resolve()\r\n    },\r\n    getSelectAllState: function(visibleOnly) {\r\n        return this._selectionStrategy.getSelectAllState(visibleOnly)\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/table.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.Table = Table;\r\nexports.TableProps = exports.viewFunction = void 0;\r\nvar _row = require(\"./row\");\r\nvar _utils = require(\"../utils\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(\"table\", _extends({}, viewModel.restAttributes, {\r\n        className: viewModel.props.className,\r\n        style: viewModel.style\r\n    }), Preact.h(\"tbody\", null, Preact.h(Preact.Fragment, null, viewModel.props.isVirtual && Preact.h(_row.Row, {\r\n        isVirtual: true,\r\n        height: viewModel.props.topVirtualRowHeight\r\n    }), viewModel.props.children, viewModel.props.isVirtual && Preact.h(_row.Row, {\r\n        isVirtual: true,\r\n        height: viewModel.props.bottomVirtualRowHeight\r\n    }))))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar TableProps = {\r\n    className: \"\",\r\n    topVirtualRowHeight: 0,\r\n    bottomVirtualRowHeight: 0,\r\n    isVirtual: false\r\n};\r\nexports.TableProps = TableProps;\r\n\r\nfunction Table(props) {\r\n    var __style = (0, _hooks.useCallback)(function() {\r\n        var height = props.height;\r\n        var _restAttributes = __restAttributes(),\r\n            style = _restAttributes.style;\r\n        return (0, _utils.addHeightToStyle)(height, style)\r\n    }, [props.height]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.bottomVirtualRowHeight, props.children, props.className, props.height, props.isVirtual, props.topVirtualRowHeight, _objectWithoutProperties(props, [\"bottomVirtualRowHeight\", \"children\", \"className\", \"height\", \"isVirtual\", \"topVirtualRowHeight\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread({}, props),\r\n        style: __style(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nTable.defaultProps = _objectSpread({}, TableProps);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.expanded.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.GroupingHelper = void 0;\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiData_gridGrouping = require(\"./ui.data_grid.grouping.core\");\r\nvar _uiData_grid2 = require(\"./ui.data_grid.utils\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar loadTotalCount = function(dataSource, options) {\r\n    var d = new _deferred.Deferred;\r\n    var loadOptions = (0, _extend.extend)({\r\n        skip: 0,\r\n        take: 1,\r\n        requireTotalCount: true\r\n    }, options);\r\n    dataSource.load(loadOptions).done(function(data, extra) {\r\n        d.resolve(extra && extra.totalCount)\r\n    }).fail(d.reject.bind(d));\r\n    return d\r\n};\r\nvar GroupingHelper = _uiData_gridGrouping.GroupingHelper.inherit(function() {\r\n    var foreachCollapsedGroups = function(that, callback, updateOffsets) {\r\n        return that.foreachGroups(function(groupInfo) {\r\n            if (!groupInfo.isExpanded) {\r\n                return callback(groupInfo)\r\n            }\r\n        }, false, false, updateOffsets, true)\r\n    };\r\n    var correctSkipLoadOption = function(that, skip) {\r\n        var skipCorrection = 0;\r\n        var resultSkip = skip || 0;\r\n        if (skip) {\r\n            foreachCollapsedGroups(that, function(groupInfo) {\r\n                if (groupInfo.offset - skipCorrection >= skip) {\r\n                    return false\r\n                }\r\n                skipCorrection += groupInfo.count - 1\r\n            });\r\n            resultSkip += skipCorrection\r\n        }\r\n        return resultSkip\r\n    };\r\n    var processGroupItems = function processGroupItems(that, items, path, offset, skipFirstItem, take) {\r\n        var removeLastItemsCount = 0;\r\n        var needRemoveFirstItem = false;\r\n        for (var i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            if (void 0 !== item.items) {\r\n                path.push(item.key);\r\n                var groupInfo = that.findGroupInfo(path);\r\n                if (groupInfo && !groupInfo.isExpanded) {\r\n                    item.collapsedItems = item.items;\r\n                    item.items = null;\r\n                    offset += groupInfo.count;\r\n                    take--;\r\n                    if (take < 0) {\r\n                        removeLastItemsCount++\r\n                    }\r\n                    if (skipFirstItem) {\r\n                        needRemoveFirstItem = true\r\n                    }\r\n                } else {\r\n                    if (item.items) {\r\n                        var offsetInfo = processGroupItems(that, item.items, path, offset, skipFirstItem, take);\r\n                        if (skipFirstItem) {\r\n                            if (offsetInfo.offset - offset > 1) {\r\n                                item.isContinuation = true\r\n                            } else {\r\n                                needRemoveFirstItem = true\r\n                            }\r\n                        }\r\n                        offset = offsetInfo.offset;\r\n                        take = offsetInfo.take;\r\n                        if (take < 0) {\r\n                            if (item.items.length) {\r\n                                item.isContinuationOnNextPage = true\r\n                            } else {\r\n                                removeLastItemsCount++\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                path.pop()\r\n            } else {\r\n                if (skipFirstItem) {\r\n                    needRemoveFirstItem = true\r\n                }\r\n                offset++;\r\n                take--;\r\n                if (take < 0) {\r\n                    removeLastItemsCount++\r\n                }\r\n            }\r\n            skipFirstItem = false\r\n        }\r\n        if (needRemoveFirstItem) {\r\n            items.splice(0, 1)\r\n        }\r\n        if (removeLastItemsCount) {\r\n            items.splice(-removeLastItemsCount, removeLastItemsCount)\r\n        }\r\n        return {\r\n            offset: offset,\r\n            take: take\r\n        }\r\n    };\r\n    var pathEquals = function(path1, path2) {\r\n        if (path1.length !== path2.length) {\r\n            return false\r\n        }\r\n        for (var i = 0; i < path1.length; i++) {\r\n            if (!_utils.default.keysEqual(null, path1[i], path2[i])) {\r\n                return false\r\n            }\r\n        }\r\n        return true\r\n    };\r\n    var updateGroupOffsets = function updateGroupOffsets(that, items, path, offset, additionalGroupInfo) {\r\n        if (!items) {\r\n            return\r\n        }\r\n        for (var i = 0; i < items.length; i++) {\r\n            var item = items[i];\r\n            if (\"key\" in item && void 0 !== item.items) {\r\n                path.push(item.key);\r\n                if (additionalGroupInfo && pathEquals(additionalGroupInfo.path, path) && !item.isContinuation) {\r\n                    additionalGroupInfo.offset = offset\r\n                }\r\n                var groupInfo = that.findGroupInfo(path);\r\n                if (groupInfo && !item.isContinuation) {\r\n                    groupInfo.offset = offset\r\n                }\r\n                if (groupInfo && !groupInfo.isExpanded) {\r\n                    offset += groupInfo.count\r\n                } else {\r\n                    offset = updateGroupOffsets(that, item.items, path, offset, additionalGroupInfo)\r\n                }\r\n                path.pop()\r\n            } else {\r\n                offset++\r\n            }\r\n        }\r\n        return offset\r\n    };\r\n    var removeGroupLoadOption = function(storeLoadOptions, loadOptions) {\r\n        if (loadOptions.group) {\r\n            var groups = _uiData_grid.default.normalizeSortingInfo(loadOptions.group);\r\n            var sorts = _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.sort);\r\n            storeLoadOptions.sort = _store_helper.default.arrangeSortingInfo(groups, sorts);\r\n            delete loadOptions.group\r\n        }\r\n    };\r\n    var createNotGroupFilter = function(path, storeLoadOptions, group) {\r\n        var groups = _uiData_grid.default.normalizeSortingInfo(group || storeLoadOptions.group);\r\n        var filter = [];\r\n        for (var i = 0; i < path.length; i++) {\r\n            var filterElement = [];\r\n            for (var j = 0; j <= i; j++) {\r\n                filterElement.push([groups[j].selector, i === j ? \"<>\" : \"=\", path[j]])\r\n            }\r\n            filter.push(_uiData_grid.default.combineFilters(filterElement))\r\n        }\r\n        filter = _uiData_grid.default.combineFilters(filter, \"or\");\r\n        return _uiData_grid.default.combineFilters([filter, storeLoadOptions.filter])\r\n    };\r\n    var getGroupCount = function getGroupCount(item, groupCount) {\r\n        var count = item.count || item.items.length;\r\n        if (!item.count && groupCount > 1) {\r\n            count = 0;\r\n            for (var i = 0; i < item.items.length; i++) {\r\n                count += getGroupCount(item.items[i], groupCount - 1)\r\n            }\r\n        }\r\n        return count\r\n    };\r\n    return {\r\n        handleDataLoading: function(options) {\r\n            var that = this;\r\n            var storeLoadOptions = options.storeLoadOptions;\r\n            var collapsedGroups = [];\r\n            var collapsedItemsCount = 0;\r\n            var skipFirstItem = false;\r\n            var take;\r\n            var group = options.loadOptions.group;\r\n            var skipCorrection = 0;\r\n            removeGroupLoadOption(storeLoadOptions, options.loadOptions);\r\n            options.group = options.group || group;\r\n            if (options.isCustomLoading) {\r\n                return\r\n            }\r\n            var loadOptions = (0, _extend.extend)({}, storeLoadOptions);\r\n            loadOptions.skip = correctSkipLoadOption(that, storeLoadOptions.skip);\r\n            if (loadOptions.skip && loadOptions.take && group) {\r\n                loadOptions.skip--;\r\n                loadOptions.take++;\r\n                skipFirstItem = true\r\n            }\r\n            if (loadOptions.take && group) {\r\n                take = loadOptions.take;\r\n                loadOptions.take++\r\n            }\r\n            foreachCollapsedGroups(that, function(groupInfo) {\r\n                if (groupInfo.offset >= loadOptions.skip + loadOptions.take + skipCorrection) {\r\n                    return false\r\n                } else {\r\n                    if (groupInfo.offset >= loadOptions.skip + skipCorrection && groupInfo.count) {\r\n                        skipCorrection += groupInfo.count - 1;\r\n                        collapsedGroups.push(groupInfo);\r\n                        collapsedItemsCount += groupInfo.count\r\n                    }\r\n                }\r\n            });\r\n            (0, _iterator.each)(collapsedGroups, function() {\r\n                loadOptions.filter = createNotGroupFilter(this.path, loadOptions, group)\r\n            });\r\n            options.storeLoadOptions = loadOptions;\r\n            options.collapsedGroups = collapsedGroups;\r\n            options.collapsedItemsCount = collapsedItemsCount;\r\n            options.skip = loadOptions.skip || 0;\r\n            options.skipFirstItem = skipFirstItem;\r\n            options.take = take\r\n        },\r\n        handleDataLoaded: function(options, callBase) {\r\n            var that = this;\r\n            var data = options.data;\r\n            var collapsedGroups = options.collapsedGroups;\r\n            var groups = _uiData_grid.default.normalizeSortingInfo(options.group);\r\n            var groupCount = groups.length;\r\n\r\n            function appendCollapsedPath(data, path, groups, collapsedGroup, offset) {\r\n                if (!data || !path.length || !groups.length) {\r\n                    return\r\n                }\r\n                var keyValue;\r\n                var i;\r\n                var pathValue = (0, _data.toComparable)(path[0], true);\r\n                for (i = 0; i < data.length; i++) {\r\n                    keyValue = (0, _data.toComparable)(data[i].key, true);\r\n                    if (offset >= collapsedGroup.offset || pathValue === keyValue) {\r\n                        break\r\n                    } else {\r\n                        offset += getGroupCount(data[i], groups.length)\r\n                    }\r\n                }\r\n                if (!data.length || pathValue !== keyValue) {\r\n                    data.splice(i, 0, {\r\n                        key: path[0],\r\n                        items: [],\r\n                        count: 1 === path.length ? collapsedGroup.count : void 0\r\n                    })\r\n                }\r\n                appendCollapsedPath(data[i].items, path.slice(1), groups.slice(1), collapsedGroup, offset)\r\n            }\r\n            if (options.collapsedItemsCount && options.extra && options.extra.totalCount >= 0) {\r\n                options.extra.totalCount += options.collapsedItemsCount\r\n            }\r\n            callBase(options);\r\n            if (groupCount) {\r\n                var query = (0, _query.default)(data);\r\n                _store_helper.default.multiLevelGroup(query, groups).enumerate().done(function(groupedData) {\r\n                    data = groupedData\r\n                });\r\n                if (collapsedGroups) {\r\n                    for (var pathIndex = 0; pathIndex < collapsedGroups.length; pathIndex++) {\r\n                        appendCollapsedPath(data, collapsedGroups[pathIndex].path, groups, collapsedGroups[pathIndex], options.skip)\r\n                    }\r\n                }\r\n                if (!options.isCustomLoading) {\r\n                    processGroupItems(that, data, [], options.skip, options.skipFirstItem, options.take)\r\n                }\r\n                options.data = data\r\n            }\r\n        },\r\n        isGroupItemCountable: function(item) {\r\n            return null === item.items\r\n        },\r\n        updateTotalItemsCount: function() {\r\n            var itemsCountCorrection = 0;\r\n            foreachCollapsedGroups(this, function(groupInfo) {\r\n                if (groupInfo.count) {\r\n                    itemsCountCorrection -= groupInfo.count - 1\r\n                }\r\n            });\r\n            this.callBase(itemsCountCorrection)\r\n        },\r\n        changeRowExpand: function(path) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var beginPageIndex = dataSource.beginPageIndex ? dataSource.beginPageIndex() : dataSource.pageIndex();\r\n            var dataSourceItems = dataSource.items();\r\n            var offset = correctSkipLoadOption(that, beginPageIndex * dataSource.pageSize());\r\n            var groupInfo = that.findGroupInfo(path);\r\n            var groupCountQuery;\r\n            if (groupInfo && !groupInfo.isExpanded) {\r\n                groupCountQuery = (new _deferred.Deferred).resolve(groupInfo.count)\r\n            } else {\r\n                groupCountQuery = loadTotalCount(dataSource, {\r\n                    filter: (0, _uiData_grid2.createGroupFilter)(path, {\r\n                        filter: dataSource.filter(),\r\n                        group: dataSource.group()\r\n                    })\r\n                })\r\n            }\r\n            return (0, _deferred.when)(groupCountQuery).done(function(count) {\r\n                count = parseInt(count.length ? count[0] : count);\r\n                if (groupInfo) {\r\n                    updateGroupOffsets(that, dataSourceItems, [], offset);\r\n                    groupInfo.isExpanded = !groupInfo.isExpanded;\r\n                    groupInfo.count = count\r\n                } else {\r\n                    groupInfo = {\r\n                        offset: -1,\r\n                        count: count,\r\n                        path: path,\r\n                        isExpanded: false\r\n                    };\r\n                    updateGroupOffsets(that, dataSourceItems, [], offset, groupInfo);\r\n                    if (groupInfo.offset >= 0) {\r\n                        that.addGroupInfo(groupInfo)\r\n                    }\r\n                }\r\n                that.updateTotalItemsCount()\r\n            }).fail(function() {\r\n                dataSource._eventsStrategy.fireEvent(\"loadError\", arguments)\r\n            })\r\n        },\r\n        allowCollapseAll: function() {\r\n            return false\r\n        },\r\n        refresh: function(options, operationTypes) {\r\n            var that = this;\r\n            var storeLoadOptions = options.storeLoadOptions;\r\n            var dataSource = that._dataSource;\r\n            this.callBase.apply(this, arguments);\r\n            if (operationTypes.reload) {\r\n                return foreachCollapsedGroups(that, function(groupInfo) {\r\n                    var groupCountQuery = loadTotalCount(dataSource, {\r\n                        filter: (0, _uiData_grid2.createGroupFilter)(groupInfo.path, storeLoadOptions)\r\n                    });\r\n                    var groupOffsetQuery = loadTotalCount(dataSource, {\r\n                        filter: (0, _uiData_gridGrouping.createOffsetFilter)(groupInfo.path, storeLoadOptions)\r\n                    });\r\n                    return (0, _deferred.when)(groupOffsetQuery, groupCountQuery).done(function(offset, count) {\r\n                        offset = parseInt(offset.length ? offset[0] : offset);\r\n                        count = parseInt(count.length ? count[0] : count);\r\n                        groupInfo.offset = offset;\r\n                        if (groupInfo.count !== count) {\r\n                            groupInfo.count = count;\r\n                            that.updateTotalItemsCount()\r\n                        }\r\n                    })\r\n                }, true)\r\n            }\r\n        }\r\n    }\r\n}());\r\nexports.GroupingHelper = GroupingHelper;\r\n","/**\r\n * DevExtreme (localization/ldml/number.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getFormatter = getFormatter;\r\nexports.getFormat = getFormat;\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _utils = require(\"../utils\");\r\nvar DEFAULT_CONFIG = {\r\n    thousandsSeparator: \",\",\r\n    decimalSeparator: \".\"\r\n};\r\nvar ESCAPING_CHAR = \"'\";\r\nvar MAXIMUM_NUMBER_LENGTH = 15;\r\n\r\nfunction getGroupSizes(formatString) {\r\n    return formatString.split(\",\").slice(1).map(function(str) {\r\n        return str.split(\"\").filter(function(char) {\r\n            return \"#\" === char || \"0\" === char\r\n        }).length\r\n    })\r\n}\r\n\r\nfunction getSignParts(format) {\r\n    var signParts = format.split(\";\");\r\n    if (1 === signParts.length) {\r\n        signParts.push(\"-\" + signParts[0])\r\n    }\r\n    return signParts\r\n}\r\n\r\nfunction reverseString(str) {\r\n    return str.toString().split(\"\").reverse().join(\"\")\r\n}\r\n\r\nfunction isPercentFormat(format) {\r\n    return format.indexOf(\"%\") !== -1 && !format.match(/'[^']*%[^']*'/g)\r\n}\r\n\r\nfunction removeStubs(str) {\r\n    return str.replace(/'.+'/g, \"\")\r\n}\r\n\r\nfunction getNonRequiredDigitCount(floatFormat) {\r\n    if (!floatFormat) {\r\n        return 0\r\n    }\r\n    var format = removeStubs(floatFormat);\r\n    return format.length - format.replace(/[#]/g, \"\").length\r\n}\r\n\r\nfunction getRequiredDigitCount(floatFormat) {\r\n    if (!floatFormat) {\r\n        return 0\r\n    }\r\n    var format = removeStubs(floatFormat);\r\n    return format.length - format.replace(/[0]/g, \"\").length\r\n}\r\n\r\nfunction normalizeValueString(valuePart, minDigitCount, maxDigitCount) {\r\n    if (!valuePart) {\r\n        return \"\"\r\n    }\r\n    if (valuePart.length > maxDigitCount) {\r\n        valuePart = valuePart.substr(0, maxDigitCount)\r\n    }\r\n    while (valuePart.length > minDigitCount && \"0\" === valuePart.slice(-1)) {\r\n        valuePart = valuePart.substr(0, valuePart.length - 1)\r\n    }\r\n    while (valuePart.length < minDigitCount) {\r\n        valuePart += \"0\"\r\n    }\r\n    return valuePart\r\n}\r\n\r\nfunction applyGroups(valueString, groupSizes, thousandsSeparator) {\r\n    if (!groupSizes.length) {\r\n        return valueString\r\n    }\r\n    var groups = [];\r\n    var index = 0;\r\n    while (valueString) {\r\n        var groupSize = groupSizes[index];\r\n        if (!groupSize) {\r\n            break\r\n        }\r\n        groups.push(valueString.slice(0, groupSize));\r\n        valueString = valueString.slice(groupSize);\r\n        if (index < groupSizes.length - 1) {\r\n            index++\r\n        }\r\n    }\r\n    return groups.join(thousandsSeparator)\r\n}\r\n\r\nfunction formatNumberPart(format, valueString) {\r\n    return format.split(ESCAPING_CHAR).map(function(formatPart, escapeIndex) {\r\n        var isEscape = escapeIndex % 2;\r\n        if (!formatPart && isEscape) {\r\n            return ESCAPING_CHAR\r\n        }\r\n        return isEscape ? formatPart : formatPart.replace(/[,#0]+/, valueString)\r\n    }).join(\"\")\r\n}\r\n\r\nfunction getFloatPointIndex(format) {\r\n    var isEscape = false;\r\n    for (var index = 0; index < format.length; index++) {\r\n        if (\"'\" === format[index]) {\r\n            isEscape = !isEscape\r\n        }\r\n        if (\".\" === format[index] && !isEscape) {\r\n            return index\r\n        }\r\n    }\r\n    return format.length\r\n}\r\n\r\nfunction getFormatter(format, config) {\r\n    config = config || DEFAULT_CONFIG;\r\n    return function(value) {\r\n        if (\"number\" !== typeof value || isNaN(value)) {\r\n            return \"\"\r\n        }\r\n        var signFormatParts = getSignParts(format);\r\n        var isPositiveZero = 1 / value === 1 / 0;\r\n        var isPositive = value > 0 || isPositiveZero;\r\n        var numberFormat = signFormatParts[isPositive ? 0 : 1];\r\n        if (isPercentFormat(numberFormat)) {\r\n            value = 100 * value\r\n        }\r\n        if (!isPositive) {\r\n            value = -value\r\n        }\r\n        var floatPointIndex = getFloatPointIndex(numberFormat);\r\n        var floatFormatParts = [numberFormat.substr(0, floatPointIndex), numberFormat.substr(floatPointIndex + 1)];\r\n        var minFloatPrecision = getRequiredDigitCount(floatFormatParts[1]);\r\n        var maxFloatPrecision = minFloatPrecision + getNonRequiredDigitCount(floatFormatParts[1]);\r\n        var minIntegerPrecision = getRequiredDigitCount(floatFormatParts[0]);\r\n        var maxIntegerPrecision = getNonRequiredDigitCount(floatFormatParts[0]) || config.unlimitedIntegerDigits ? void 0 : minIntegerPrecision;\r\n        var integerLength = Math.floor(value).toString().length;\r\n        var floatPrecision = (0, _math.fitIntoRange)(maxFloatPrecision, 0, MAXIMUM_NUMBER_LENGTH - integerLength);\r\n        var groupSizes = getGroupSizes(floatFormatParts[0]).reverse();\r\n        var valueParts = (0, _utils.toFixed)(value, floatPrecision < 0 ? 0 : floatPrecision).split(\".\");\r\n        var valueIntegerPart = normalizeValueString(reverseString(valueParts[0]), minIntegerPrecision, maxIntegerPrecision);\r\n        var valueFloatPart = normalizeValueString(valueParts[1], minFloatPrecision, maxFloatPrecision);\r\n        valueIntegerPart = applyGroups(valueIntegerPart, groupSizes, config.thousandsSeparator);\r\n        var integerString = reverseString(formatNumberPart(reverseString(floatFormatParts[0]), valueIntegerPart));\r\n        var floatString = maxFloatPrecision ? formatNumberPart(floatFormatParts[1], valueFloatPart) : \"\";\r\n        var result = integerString + (floatString.match(/\\d/) ? config.decimalSeparator : \"\") + floatString;\r\n        return result\r\n    }\r\n}\r\n\r\nfunction parseValue(text, isPercent, isNegative) {\r\n    var value = (isPercent ? .01 : 1) * parseFloat(text) || 0;\r\n    return isNegative ? -value : value\r\n}\r\n\r\nfunction prepareValueText(valueText, formatter, isPercent, isIntegerPart) {\r\n    var nextValueText = valueText;\r\n    var char;\r\n    var text;\r\n    var nextText;\r\n    do {\r\n        if (nextText) {\r\n            char = text.length === nextText.length ? \"0\" : \"1\";\r\n            valueText = isIntegerPart ? char + valueText : valueText + char\r\n        }\r\n        text = nextText || formatter(parseValue(nextValueText, isPercent));\r\n        nextValueText = isIntegerPart ? \"1\" + nextValueText : nextValueText + \"1\";\r\n        nextText = formatter(parseValue(nextValueText, isPercent))\r\n    } while (text !== nextText && (isIntegerPart ? text.length === nextText.length : text.length <= nextText.length));\r\n    if (isIntegerPart && nextText.length > text.length) {\r\n        var hasGroups = formatter(12345).indexOf(\"12345\") === -1;\r\n        do {\r\n            valueText = \"1\" + valueText\r\n        } while (hasGroups && parseValue(valueText, isPercent) < 1e5)\r\n    }\r\n    return valueText\r\n}\r\n\r\nfunction getFormatByValueText(valueText, formatter, isPercent, isNegative) {\r\n    var format = formatter(parseValue(valueText, isPercent, isNegative));\r\n    var valueTextParts = valueText.split(\".\");\r\n    var valueTextWithModifiedFloat = valueTextParts[0] + \".3\" + valueTextParts[1].slice(1);\r\n    var valueWithModifiedFloat = parseValue(valueTextWithModifiedFloat, isPercent, isNegative);\r\n    var decimalSeparatorIndex = formatter(valueWithModifiedFloat).indexOf(\"3\") - 1;\r\n    format = format.replace(/(\\d)\\D(\\d)/g, \"$1,$2\");\r\n    if (decimalSeparatorIndex >= 0) {\r\n        format = format.slice(0, decimalSeparatorIndex) + \".\" + format.slice(decimalSeparatorIndex + 1)\r\n    }\r\n    format = format.replace(/1+/, \"1\").replace(/1/g, \"#\");\r\n    if (!isPercent) {\r\n        format = format.replace(\"%\", \"'%'\")\r\n    }\r\n    return format\r\n}\r\n\r\nfunction getFormat(formatter) {\r\n    var valueText = \".\";\r\n    var isPercent = formatter(1).indexOf(\"100\") >= 0;\r\n    valueText = prepareValueText(valueText, formatter, isPercent, true);\r\n    valueText = prepareValueText(valueText, formatter, isPercent, false);\r\n    var positiveFormat = getFormatByValueText(valueText, formatter, isPercent, false);\r\n    var negativeFormat = getFormatByValueText(valueText, formatter, isPercent, true);\r\n    return negativeFormat === \"-\" + positiveFormat ? positiveFormat : positiveFormat + \";\" + negativeFormat\r\n}\r\n","/**\r\n * DevExtreme (animation/translator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.parseTranslate = exports.resetPosition = exports.move = exports.getTranslate = exports.getTranslateCss = exports.clearCache = exports.locate = void 0;\r\nvar _element_data = require(\"../core/element_data\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar TRANSLATOR_DATA_KEY = \"dxTranslator\";\r\nvar TRANSFORM_MATRIX_REGEX = /matrix(3d)?\\((.+?)\\)/;\r\nvar TRANSLATE_REGEX = /translate(?:3d)?\\((.+?)\\)/;\r\nvar locate = function($element) {\r\n    var translate = getTranslate($element);\r\n    return {\r\n        left: translate.x,\r\n        top: translate.y\r\n    }\r\n};\r\nexports.locate = locate;\r\n\r\nfunction isPercentValue(value) {\r\n    return \"string\" === (0, _type.type)(value) && \"%\" === value[value.length - 1]\r\n}\r\n\r\nfunction cacheTranslate($element, translate) {\r\n    if ($element.length) {\r\n        (0, _element_data.data)($element.get(0), TRANSLATOR_DATA_KEY, translate)\r\n    }\r\n}\r\nvar clearCache = function($element) {\r\n    if ($element.length) {\r\n        (0, _element_data.removeData)($element.get(0), TRANSLATOR_DATA_KEY)\r\n    }\r\n};\r\nexports.clearCache = clearCache;\r\nvar getTranslateCss = function(translate) {\r\n    translate.x = translate.x || 0;\r\n    translate.y = translate.y || 0;\r\n    var xValueString = isPercentValue(translate.x) ? translate.x : translate.x + \"px\";\r\n    var yValueString = isPercentValue(translate.y) ? translate.y : translate.y + \"px\";\r\n    return \"translate(\" + xValueString + \", \" + yValueString + \")\"\r\n};\r\nexports.getTranslateCss = getTranslateCss;\r\nvar getTranslate = function($element) {\r\n    var result = $element.length ? (0, _element_data.data)($element.get(0), TRANSLATOR_DATA_KEY) : null;\r\n    if (!result) {\r\n        var transformValue = $element.css(\"transform\") || getTranslateCss({\r\n            x: 0,\r\n            y: 0\r\n        });\r\n        var matrix = transformValue.match(TRANSFORM_MATRIX_REGEX);\r\n        var is3D = matrix && matrix[1];\r\n        if (matrix) {\r\n            matrix = matrix[2].split(\",\");\r\n            if (\"3d\" === is3D) {\r\n                matrix = matrix.slice(12, 15)\r\n            } else {\r\n                matrix.push(0);\r\n                matrix = matrix.slice(4, 7)\r\n            }\r\n        } else {\r\n            matrix = [0, 0, 0]\r\n        }\r\n        result = {\r\n            x: parseFloat(matrix[0]),\r\n            y: parseFloat(matrix[1]),\r\n            z: parseFloat(matrix[2])\r\n        };\r\n        cacheTranslate($element, result)\r\n    }\r\n    return result\r\n};\r\nexports.getTranslate = getTranslate;\r\nvar move = function($element, position) {\r\n    var left = position.left;\r\n    var top = position.top;\r\n    var translate;\r\n    if (void 0 === left) {\r\n        translate = getTranslate($element);\r\n        translate.y = top || 0\r\n    } else {\r\n        if (void 0 === top) {\r\n            translate = getTranslate($element);\r\n            translate.x = left || 0\r\n        } else {\r\n            translate = {\r\n                x: left || 0,\r\n                y: top || 0,\r\n                z: 0\r\n            };\r\n            cacheTranslate($element, translate)\r\n        }\r\n    }\r\n    $element.css({\r\n        transform: getTranslateCss(translate)\r\n    });\r\n    if (isPercentValue(left) || isPercentValue(top)) {\r\n        clearCache($element)\r\n    }\r\n};\r\nexports.move = move;\r\nvar resetPosition = function($element, finishTransition) {\r\n    var originalTransition;\r\n    var stylesConfig = {\r\n        left: 0,\r\n        top: 0,\r\n        transform: \"none\"\r\n    };\r\n    if (finishTransition) {\r\n        originalTransition = $element.css(\"transition\");\r\n        stylesConfig.transition = \"none\"\r\n    }\r\n    $element.css(stylesConfig);\r\n    clearCache($element);\r\n    if (finishTransition) {\r\n        $element.get(0).offsetHeight;\r\n        $element.css(\"transition\", originalTransition)\r\n    }\r\n};\r\nexports.resetPosition = resetPosition;\r\nvar parseTranslate = function(translateString) {\r\n    var result = translateString.match(TRANSLATE_REGEX);\r\n    if (!result || !result[1]) {\r\n        return\r\n    }\r\n    result = result[1].split(\",\");\r\n    result = {\r\n        x: parseFloat(result[0]),\r\n        y: parseFloat(result[1]),\r\n        z: parseFloat(result[2])\r\n    };\r\n    return result\r\n};\r\nexports.parseTranslate = parseTranslate;\r\n","/**\r\n * DevExtreme (viz/gauges/circular_gauge.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base_gauge = require(\"./base_gauge\");\r\nvar _common = require(\"./common\");\r\nvar _utils = require(\"../core/utils\");\r\nvar circularIndicators = _interopRequireWildcard(require(\"./circular_indicators\"));\r\nvar _circular_range_container = _interopRequireDefault(require(\"./circular_range_container\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _isFinite = isFinite;\r\nvar _normalizeAngle = _utils.normalizeAngle;\r\nvar _getCosAndSin = _utils.getCosAndSin;\r\nvar _abs = Math.abs;\r\nvar _max = Math.max;\r\nvar _min = Math.min;\r\nvar _round = Math.round;\r\nvar _each = _iterator.each;\r\nvar PI = Math.PI;\r\n\r\nfunction getSides(startAngle, endAngle) {\r\n    var startCosSin = _getCosAndSin(startAngle);\r\n    var endCosSin = _getCosAndSin(endAngle);\r\n    var startCos = startCosSin.cos;\r\n    var startSin = startCosSin.sin;\r\n    var endCos = endCosSin.cos;\r\n    var endSin = endCosSin.sin;\r\n    return {\r\n        left: startSin <= 0 && endSin >= 0 || startSin <= 0 && endSin <= 0 && startCos <= endCos || startSin >= 0 && endSin >= 0 && startCos >= endCos ? -1 : _min(startCos, endCos, 0),\r\n        right: startSin >= 0 && endSin <= 0 || startSin >= 0 && endSin >= 0 && startCos >= endCos || startSin <= 0 && endSin <= 0 && startCos <= endCos ? 1 : _max(startCos, endCos, 0),\r\n        up: startCos <= 0 && endCos >= 0 || startCos <= 0 && endCos <= 0 && startSin >= endSin || startCos >= 0 && endCos >= 0 && startSin <= endSin ? -1 : -_max(startSin, endSin, 0),\r\n        down: startCos >= 0 && endCos <= 0 || startCos >= 0 && endCos >= 0 && startSin <= endSin || startCos <= 0 && endCos <= 0 && startSin >= endSin ? 1 : -_min(startSin, endSin, 0)\r\n    }\r\n}\r\nvar dxCircularGauge = _common.dxGauge.inherit({\r\n    _rootClass: \"dxg-circular-gauge\",\r\n    _factoryMethods: {\r\n        rangeContainer: \"createCircularRangeContainer\",\r\n        indicator: \"createCircularIndicator\"\r\n    },\r\n    _gridSpacingFactor: 17,\r\n    _scaleTypes: {\r\n        type: \"polarAxes\",\r\n        drawingType: \"circular\"\r\n    },\r\n    _getThemeManagerOptions: function() {\r\n        var options = this.callBase.apply(this, arguments);\r\n        options.subTheme = \"_circular\";\r\n        return options\r\n    },\r\n    _updateScaleTickIndent: function(scaleOptions) {\r\n        var indentFromTick = scaleOptions.label.indentFromTick;\r\n        var length = scaleOptions.tick.visible ? scaleOptions.tick.length : 0;\r\n        var textParams = this._scale.measureLabels((0, _extend.extend)({}, this._canvas));\r\n        var tickCorrection = length;\r\n        if (\"inside\" === scaleOptions.orientation) {\r\n            tickCorrection = 0\r\n        } else {\r\n            if (\"center\" === scaleOptions.orientation) {\r\n                tickCorrection = .5 * length\r\n            }\r\n        }\r\n        scaleOptions.label.indentFromAxis = indentFromTick >= 0 ? indentFromTick + tickCorrection : indentFromTick - tickCorrection - _max(textParams.width, textParams.height);\r\n        this._scale.updateOptions(scaleOptions)\r\n    },\r\n    _setupCodomain: function() {\r\n        var that = this;\r\n        var geometry = that.option(\"geometry\") || {};\r\n        var startAngle = geometry.startAngle;\r\n        var endAngle = geometry.endAngle;\r\n        var sides;\r\n        startAngle = _isFinite(startAngle) ? _normalizeAngle(startAngle) : 225;\r\n        endAngle = _isFinite(endAngle) ? _normalizeAngle(endAngle) : -45;\r\n        if (_abs(startAngle - endAngle) < 1) {\r\n            endAngle -= 360;\r\n            sides = {\r\n                left: -1,\r\n                up: -1,\r\n                right: 1,\r\n                down: 1\r\n            }\r\n        } else {\r\n            startAngle < endAngle && (endAngle -= 360);\r\n            sides = getSides(startAngle, endAngle)\r\n        }\r\n        that._area = {\r\n            x: 0,\r\n            y: 0,\r\n            radius: 100,\r\n            startCoord: startAngle,\r\n            endCoord: endAngle,\r\n            sides: sides\r\n        };\r\n        that._translator.setCodomain(startAngle, endAngle)\r\n    },\r\n    _shiftScale: function(layout) {\r\n        var scale = this._scale;\r\n        var canvas = scale.getCanvas();\r\n        canvas.width = canvas.height = 2 * layout.radius;\r\n        scale.draw(canvas);\r\n        var centerCoords = scale.getCenter();\r\n        scale.shift({\r\n            right: layout.x - centerCoords.x,\r\n            bottom: layout.y - centerCoords.y\r\n        })\r\n    },\r\n    _getScaleLayoutValue: function() {\r\n        return this._area.radius\r\n    },\r\n    _getTicksOrientation: function(scaleOptions) {\r\n        return scaleOptions.orientation\r\n    },\r\n    _getTicksCoefficients: function(options) {\r\n        var coefs = {\r\n            inner: 0,\r\n            outer: 1\r\n        };\r\n        if (\"inside\" === options.orientation) {\r\n            coefs.inner = 1;\r\n            coefs.outer = 0\r\n        } else {\r\n            if (\"center\" === options.orientation) {\r\n                coefs.inner = coefs.outer = .5\r\n            }\r\n        }\r\n        return coefs\r\n    },\r\n    _correctScaleIndents: function(result, indentFromTick, textParams) {\r\n        if (indentFromTick >= 0) {\r\n            result.horizontalOffset = indentFromTick + textParams.width;\r\n            result.verticalOffset = indentFromTick + textParams.height\r\n        } else {\r\n            result.horizontalOffset = result.verticalOffset = 0;\r\n            result.min -= -indentFromTick + _max(textParams.width, textParams.height)\r\n        }\r\n        result.inverseHorizontalOffset = textParams.width / 2;\r\n        result.inverseVerticalOffset = textParams.height / 2\r\n    },\r\n    _measureMainElements: function(elements, scaleMeasurement) {\r\n        var that = this;\r\n        var radius = that._area.radius;\r\n        var maxRadius = 0;\r\n        var minRadius = 1 / 0;\r\n        var maxHorizontalOffset = 0;\r\n        var maxVerticalOffset = 0;\r\n        var maxInverseHorizontalOffset = 0;\r\n        var maxInverseVerticalOffset = 0;\r\n        var scale = that._scale;\r\n        _each(elements.concat(scale), function(_, element) {\r\n            var bounds = element.measure ? element.measure({\r\n                radius: radius - element.getOffset()\r\n            }) : scaleMeasurement;\r\n            bounds.min > 0 && (minRadius = _min(minRadius, bounds.min));\r\n            bounds.max > 0 && (maxRadius = _max(maxRadius, bounds.max));\r\n            bounds.horizontalOffset > 0 && (maxHorizontalOffset = _max(maxHorizontalOffset, bounds.max + bounds.horizontalOffset));\r\n            bounds.verticalOffset > 0 && (maxVerticalOffset = _max(maxVerticalOffset, bounds.max + bounds.verticalOffset));\r\n            bounds.inverseHorizontalOffset > 0 && (maxInverseHorizontalOffset = _max(maxInverseHorizontalOffset, bounds.inverseHorizontalOffset));\r\n            bounds.inverseVerticalOffset > 0 && (maxInverseVerticalOffset = _max(maxInverseVerticalOffset, bounds.inverseVerticalOffset))\r\n        });\r\n        maxHorizontalOffset = _max(maxHorizontalOffset - maxRadius, 0);\r\n        maxVerticalOffset = _max(maxVerticalOffset - maxRadius, 0);\r\n        return {\r\n            minRadius: minRadius,\r\n            maxRadius: maxRadius,\r\n            horizontalMargin: maxHorizontalOffset,\r\n            verticalMargin: maxVerticalOffset,\r\n            inverseHorizontalMargin: maxInverseHorizontalOffset,\r\n            inverseVerticalMargin: maxInverseVerticalOffset\r\n        }\r\n    },\r\n    _applyMainLayout: function(elements, scaleMeasurement) {\r\n        var measurements = this._measureMainElements(elements, scaleMeasurement);\r\n        var area = this._area;\r\n        var sides = area.sides;\r\n        var margins = {\r\n            left: (sides.left < -.1 ? measurements.horizontalMargin : measurements.inverseHorizontalMargin) || 0,\r\n            right: (sides.right > .1 ? measurements.horizontalMargin : measurements.inverseHorizontalMargin) || 0,\r\n            top: (sides.up < -.1 ? measurements.verticalMargin : measurements.inverseVerticalMargin) || 0,\r\n            bottom: (sides.down > .1 ? measurements.verticalMargin : measurements.inverseVerticalMargin) || 0\r\n        };\r\n        var rect = selectRectByAspectRatio(this._innerRect, (sides.down - sides.up) / (sides.right - sides.left), margins);\r\n        var radius = _min(getWidth(rect) / (sides.right - sides.left), getHeight(rect) / (sides.down - sides.up));\r\n        radius = radius - measurements.maxRadius + area.radius;\r\n        var x = rect.left - getWidth(rect) * sides.left / (sides.right - sides.left);\r\n        var y = rect.top - getHeight(rect) * sides.up / (sides.down - sides.up);\r\n        area.x = _round(x);\r\n        area.y = _round(y);\r\n        area.radius = radius;\r\n        rect.left -= margins.left;\r\n        rect.right += margins.right;\r\n        rect.top -= margins.top;\r\n        rect.bottom += margins.bottom;\r\n        this._innerRect = rect\r\n    },\r\n    _getElementLayout: function(offset) {\r\n        return {\r\n            x: this._area.x,\r\n            y: this._area.y,\r\n            radius: _round(this._area.radius - offset)\r\n        }\r\n    },\r\n    _getApproximateScreenRange: function() {\r\n        var that = this;\r\n        var area = that._area;\r\n        var r = _min(that._canvas.width / (area.sides.right - area.sides.left), that._canvas.height / (area.sides.down - area.sides.up));\r\n        r > area.totalRadius && (r = area.totalRadius);\r\n        r = .8 * r;\r\n        return -that._translator.getCodomainRange() * r * PI / 180\r\n    },\r\n    _getDefaultSize: function() {\r\n        return {\r\n            width: 300,\r\n            height: 300\r\n        }\r\n    },\r\n    _factory: (0, _object.clone)(_base_gauge.dxBaseGauge.prototype._factory)\r\n});\r\n\r\nfunction getWidth(rect) {\r\n    return rect.right - rect.left\r\n}\r\n\r\nfunction getHeight(rect) {\r\n    return rect.bottom - rect.top\r\n}\r\n\r\nfunction selectRectByAspectRatio(srcRect, aspectRatio, margins) {\r\n    var rect = (0, _extend.extend)({}, srcRect);\r\n    var selfAspectRatio;\r\n    var width = 0;\r\n    var height = 0;\r\n    margins = margins || {};\r\n    if (aspectRatio > 0) {\r\n        rect.left += margins.left || 0;\r\n        rect.right -= margins.right || 0;\r\n        rect.top += margins.top || 0;\r\n        rect.bottom -= margins.bottom || 0;\r\n        if (getWidth(rect) > 0 && getHeight(rect) > 0) {\r\n            selfAspectRatio = getHeight(rect) / getWidth(rect);\r\n            if (selfAspectRatio > 1) {\r\n                aspectRatio < selfAspectRatio ? width = getWidth(rect) : height = getHeight(rect)\r\n            } else {\r\n                aspectRatio > selfAspectRatio ? height = getHeight(rect) : width = getWidth(rect)\r\n            }\r\n            width > 0 || (width = height / aspectRatio);\r\n            height > 0 || (height = width * aspectRatio);\r\n            width = (getWidth(rect) - width) / 2;\r\n            height = (getHeight(rect) - height) / 2;\r\n            rect.left += width;\r\n            rect.right -= width;\r\n            rect.top += height;\r\n            rect.bottom -= height\r\n        } else {\r\n            rect.left = rect.right = (rect.left + rect.right) / 2;\r\n            rect.top = rect.bottom = (rect.top + rect.bottom) / 2\r\n        }\r\n    }\r\n    return rect\r\n}\r\nvar indicators = dxCircularGauge.prototype._factory.indicators = {};\r\ndxCircularGauge.prototype._factory.createIndicator = (0, _common.createIndicatorCreator)(indicators);\r\nindicators._default = circularIndicators._default;\r\nindicators.rectangleneedle = circularIndicators.rectangleneedle;\r\nindicators.triangleneedle = circularIndicators.triangleneedle;\r\nindicators.twocolorneedle = circularIndicators.twocolorneedle;\r\nindicators.trianglemarker = circularIndicators.trianglemarker;\r\nindicators.textcloud = circularIndicators.textcloud;\r\nindicators.rangebar = circularIndicators.rangebar;\r\ndxCircularGauge.prototype._factory.RangeContainer = _circular_range_container.default;\r\n(0, _component_registrator.default)(\"dxCircularGauge\", dxCircularGauge);\r\nvar _default = dxCircularGauge;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_week.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-week\";\r\nvar SchedulerTimelineWeek = function(_SchedulerTimeline) {\r\n    _inherits(SchedulerTimelineWeek, _SchedulerTimeline);\r\n    var _super = _createSuper(SchedulerTimelineWeek);\r\n\r\n    function SchedulerTimelineWeek() {\r\n        _classCallCheck(this, SchedulerTimelineWeek);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerTimelineWeek, [{\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return TIMELINE_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            return _get(_getPrototypeOf(SchedulerTimelineWeek.prototype), \"_getCellCount\", this).call(this) * this._getWeekDuration()\r\n        }\r\n    }, {\r\n        key: \"_getHeaderPanelCellWidth\",\r\n        value: function($headerRow) {\r\n            return (0, _position.getBoundingRect)($headerRow.children().first().get(0)).width\r\n        }\r\n    }, {\r\n        key: \"_getWeekDuration\",\r\n        value: function() {\r\n            return 7\r\n        }\r\n    }, {\r\n        key: \"_needRenderWeekHeader\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_incrementDate\",\r\n        value: function(date) {\r\n            date.setDate(date.getDate() + 1)\r\n        }\r\n    }]);\r\n    return SchedulerTimelineWeek\r\n}(_uiScheduler.default);\r\nexports.default = SchedulerTimelineWeek;\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineWeek\", SchedulerTimelineWeek);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/filter_builder/ui.filter_operations_dictionary.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar OPERATION_ICONS = {\r\n    \"=\": \"equal\",\r\n    \"<>\": \"notequal\",\r\n    \"<\": \"less\",\r\n    \"<=\": \"lessorequal\",\r\n    \">\": \"greater\",\r\n    \">=\": \"greaterorequal\",\r\n    notcontains: \"doesnotcontain\",\r\n    contains: \"contains\",\r\n    startswith: \"startswith\",\r\n    endswith: \"endswith\",\r\n    isblank: \"isblank\",\r\n    isnotblank: \"isnotblank\"\r\n};\r\nvar OPERATION_NAME = {\r\n    \"=\": \"equal\",\r\n    \"<>\": \"notEqual\",\r\n    \"<\": \"lessThan\",\r\n    \"<=\": \"lessThanOrEqual\",\r\n    \">\": \"greaterThan\",\r\n    \">=\": \"greaterThanOrEqual\",\r\n    startswith: \"startsWith\",\r\n    contains: \"contains\",\r\n    notcontains: \"notContains\",\r\n    endswith: \"endsWith\",\r\n    isblank: \"isBlank\",\r\n    isnotblank: \"isNotBlank\",\r\n    between: \"between\"\r\n};\r\nvar _default = {\r\n    getIconByFilterOperation: function(filterOperation) {\r\n        return OPERATION_ICONS[filterOperation]\r\n    },\r\n    getNameByFilterOperation: function(filterOperation) {\r\n        return OPERATION_NAME[filterOperation]\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/gauges/bar_gauge.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.dxBarGauge = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _base_gauge = require(\"./base_gauge\");\r\nvar _circular_gauge = _interopRequireDefault(require(\"./circular_gauge\"));\r\nvar _legend = require(\"../components/legend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PI_DIV_180 = Math.PI / 180;\r\nvar _abs = Math.abs;\r\nvar _round = Math.round;\r\nvar _floor = Math.floor;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _getSampleText = _base_gauge.getSampleText;\r\nvar _formatValue = _base_gauge.formatValue;\r\nvar _compareArrays = _base_gauge.compareArrays;\r\nvar _isArray = Array.isArray;\r\nvar _convertAngleToRendererSpace = _utils.convertAngleToRendererSpace;\r\nvar _getCosAndSin = _utils.getCosAndSin;\r\nvar _patchFontOptions = _utils.patchFontOptions;\r\nvar _Number = Number;\r\nvar _isFinite = isFinite;\r\nvar _noop = _common.noop;\r\nvar _extend = _extend2.extend;\r\nvar OPTION_VALUES = \"values\";\r\nvar BarWrapper;\r\nvar dxBarGauge = _base_gauge.dxBaseGauge.inherit({\r\n    _rootClass: \"dxbg-bar-gauge\",\r\n    _themeSection: \"barGauge\",\r\n    _fontFields: [\"label.font\", \"legend.font\", \"legend.title.font\", \"legend.title.subtitle.font\"],\r\n    _initCore: function() {\r\n        var that = this;\r\n        that.callBase.apply(that, arguments);\r\n        that._barsGroup = that._renderer.g().attr({\r\n            \"class\": \"dxbg-bars\"\r\n        }).linkOn(that._renderer.root, \"bars\");\r\n        that._values = [];\r\n        that._context = {\r\n            renderer: that._renderer,\r\n            translator: that._translator,\r\n            tracker: that._tracker,\r\n            group: that._barsGroup\r\n        };\r\n        that._animateStep = function(pos) {\r\n            var bars = that._bars;\r\n            var i;\r\n            var ii;\r\n            for (i = 0, ii = bars.length; i < ii; ++i) {\r\n                bars[i].animate(pos)\r\n            }\r\n        };\r\n        that._animateComplete = function() {\r\n            that._bars.forEach(function(bar) {\r\n                return bar.endAnimation()\r\n            });\r\n            that._checkOverlap()\r\n        }\r\n    },\r\n    _disposeCore: function() {\r\n        var that = this;\r\n        that._barsGroup.linkOff();\r\n        that._barsGroup = that._values = that._context = that._animateStep = that._animateComplete = null;\r\n        that.callBase.apply(that, arguments)\r\n    },\r\n    _setupDomainCore: function() {\r\n        var that = this;\r\n        var startValue = that.option(\"startValue\");\r\n        var endValue = that.option(\"endValue\");\r\n        _isFinite(startValue) || (startValue = 0);\r\n        _isFinite(endValue) || (endValue = 100);\r\n        that._translator.setDomain(startValue, endValue);\r\n        that._baseValue = that._translator.adjust(that.option(\"baseValue\"));\r\n        _isFinite(that._baseValue) || (that._baseValue = startValue < endValue ? startValue : endValue)\r\n    },\r\n    _getDefaultSize: function() {\r\n        return {\r\n            width: 300,\r\n            height: 300\r\n        }\r\n    },\r\n    _setupCodomain: _circular_gauge.default.prototype._setupCodomain,\r\n    _getApproximateScreenRange: function() {\r\n        var that = this;\r\n        var sides = that._area.sides;\r\n        var width = that._canvas.width / (sides.right - sides.left);\r\n        var height = that._canvas.height / (sides.down - sides.up);\r\n        var r = width < height ? width : height;\r\n        return -that._translator.getCodomainRange() * r * PI_DIV_180\r\n    },\r\n    _setupAnimationSettings: function() {\r\n        var that = this;\r\n        that.callBase.apply(that, arguments);\r\n        if (that._animationSettings) {\r\n            that._animationSettings.step = that._animateStep;\r\n            that._animationSettings.complete = that._animateComplete\r\n        }\r\n    },\r\n    _cleanContent: function() {\r\n        var that = this;\r\n        that._barsGroup.linkRemove();\r\n        that._animationSettings && that._barsGroup.stopAnimation();\r\n        that._barsGroup.clear()\r\n    },\r\n    _renderContent: function() {\r\n        var that = this;\r\n        var labelOptions = that.option(\"label\");\r\n        var text;\r\n        var bBox;\r\n        var context = that._context;\r\n        that._barsGroup.linkAppend();\r\n        context.textEnabled = void 0 === labelOptions || labelOptions && (!(\"visible\" in labelOptions) || labelOptions.visible);\r\n        if (context.textEnabled) {\r\n            context.textColor = labelOptions && labelOptions.font && labelOptions.font.color || null;\r\n            labelOptions = _extend(true, {}, that._themeManager.theme().label, labelOptions);\r\n            context.formatOptions = {\r\n                format: void 0 !== labelOptions.format ? labelOptions.format : that._defaultFormatOptions,\r\n                customizeText: labelOptions.customizeText\r\n            };\r\n            context.textOptions = {\r\n                align: \"center\"\r\n            };\r\n            context.fontStyles = _patchFontOptions(_extend({}, that._themeManager.theme().label.font, labelOptions.font, {\r\n                color: null\r\n            }));\r\n            that._textIndent = labelOptions.indent > 0 ? _Number(labelOptions.indent) : 0;\r\n            context.lineWidth = labelOptions.connectorWidth > 0 ? _Number(labelOptions.connectorWidth) : 0;\r\n            context.lineColor = labelOptions.connectorColor || null;\r\n            text = that._renderer.text(_getSampleText(that._translator, context.formatOptions), 0, 0).attr(context.textOptions).css(context.fontStyles).append(that._barsGroup);\r\n            bBox = text.getBBox();\r\n            text.remove();\r\n            context.textY = bBox.y;\r\n            context.textWidth = bBox.width;\r\n            context.textHeight = bBox.height\r\n        }\r\n        _circular_gauge.default.prototype._applyMainLayout.call(that);\r\n        that._renderBars()\r\n    },\r\n    _measureMainElements: function() {\r\n        var result = {\r\n            maxRadius: this._area.radius\r\n        };\r\n        if (this._context.textEnabled) {\r\n            result.horizontalMargin = this._context.textWidth;\r\n            result.verticalMargin = this._context.textHeight;\r\n            result.inverseHorizontalMargin = this._context.textWidth / 2;\r\n            result.inverseVerticalMargin = this._context.textHeight / 2\r\n        }\r\n        return result\r\n    },\r\n    _renderBars: function() {\r\n        var that = this;\r\n        var options = _extend({}, that._themeManager.theme(), that.option());\r\n        var radius;\r\n        var area = that._area;\r\n        var relativeInnerRadius = options.relativeInnerRadius > 0 && options.relativeInnerRadius < 1 ? _Number(options.relativeInnerRadius) : .1;\r\n        radius = area.radius;\r\n        if (that._context.textEnabled) {\r\n            that._textIndent = _round(_min(that._textIndent, radius / 2));\r\n            radius -= that._textIndent\r\n        }\r\n        that._outerRadius = _floor(radius);\r\n        that._innerRadius = _floor(radius * relativeInnerRadius);\r\n        that._barSpacing = options.barSpacing > 0 ? _Number(options.barSpacing) : 0;\r\n        _extend(that._context, {\r\n            backgroundColor: options.backgroundColor,\r\n            x: area.x,\r\n            y: area.y,\r\n            startAngle: area.startCoord,\r\n            endAngle: area.endCoord,\r\n            baseAngle: that._translator.translate(that._baseValue)\r\n        });\r\n        that._arrangeBars()\r\n    },\r\n    _arrangeBars: function() {\r\n        var that = this;\r\n        var radius = that._outerRadius - that._innerRadius;\r\n        var context = that._context;\r\n        var i;\r\n        var count = that._bars.length;\r\n        that._beginValueChanging();\r\n        context.barSize = count > 0 ? _max((radius - (count - 1) * that._barSpacing) / count, 1) : 0;\r\n        var spacing = count > 1 ? _max(_min((radius - count * context.barSize) / (count - 1), that._barSpacing), 0) : 0;\r\n        var _count = _min(_floor((radius + spacing) / context.barSize), count);\r\n        that._setBarsCount(count);\r\n        radius = that._outerRadius;\r\n        context.textRadius = radius;\r\n        context.textIndent = that._textIndent;\r\n        that._palette.reset();\r\n        var unitOffset = context.barSize + spacing;\r\n        var colors = that._palette.generateColors(_count);\r\n        for (i = 0; i < _count; ++i, radius -= unitOffset) {\r\n            that._bars[i].arrange({\r\n                radius: radius,\r\n                color: colors[i]\r\n            })\r\n        }\r\n        for (var _i = _count; _i < count; _i++) {\r\n            that._bars[_i].hide()\r\n        }\r\n        if (that._animationSettings && !that._noAnimation) {\r\n            that._animateBars()\r\n        } else {\r\n            that._updateBars()\r\n        }\r\n        that._endValueChanging()\r\n    },\r\n    _setBarsCount: function() {\r\n        var that = this;\r\n        if (that._bars.length > 0) {\r\n            if (that._dummyBackground) {\r\n                that._dummyBackground.dispose();\r\n                that._dummyBackground = null\r\n            }\r\n        } else {\r\n            if (!that._dummyBackground) {\r\n                that._dummyBackground = that._renderer.arc().attr({\r\n                    \"stroke-linejoin\": \"round\"\r\n                })\r\n            }\r\n            that._dummyBackground.attr({\r\n                x: that._context.x,\r\n                y: that._context.y,\r\n                outerRadius: that._outerRadius,\r\n                innerRadius: that._innerRadius,\r\n                startAngle: that._context.endAngle,\r\n                endAngle: that._context.startAngle,\r\n                fill: that._context.backgroundColor\r\n            }).append(that._barsGroup)\r\n        }\r\n    },\r\n    _updateBars: function() {\r\n        this._bars.forEach(function(bar) {\r\n            return bar.applyValue()\r\n        });\r\n        this._checkOverlap()\r\n    },\r\n    _checkOverlap: function() {\r\n        var that = this;\r\n        var bars = that._bars;\r\n        var overlapStrategy = (0, _utils.normalizeEnum)(that._getOption(\"resolveLabelOverlapping\", true));\r\n        if (\"none\" === overlapStrategy) {\r\n            return\r\n        }\r\n        var sortedBars = bars.concat().sort(function(a, b) {\r\n            return a.getValue() - b.getValue()\r\n        });\r\n        var currentIndex = 0;\r\n        var nextIndex = 1;\r\n        while (currentIndex < sortedBars.length && nextIndex < sortedBars.length) {\r\n            var current = sortedBars[currentIndex];\r\n            var next = sortedBars[nextIndex];\r\n            if (current.checkIntersect(next)) {\r\n                next.hideLabel();\r\n                nextIndex++\r\n            } else {\r\n                currentIndex = nextIndex;\r\n                nextIndex = currentIndex + 1\r\n            }\r\n        }\r\n    },\r\n    _animateBars: function() {\r\n        var that = this;\r\n        var i;\r\n        var ii = that._bars.length;\r\n        if (ii > 0) {\r\n            for (i = 0; i < ii; ++i) {\r\n                that._bars[i].beginAnimation()\r\n            }\r\n            that._barsGroup.animate({\r\n                _: 0\r\n            }, that._animationSettings)\r\n        }\r\n    },\r\n    _buildNodes: function() {\r\n        var that = this;\r\n        var options = that._options.silent();\r\n        that._palette = that._themeManager.createPalette(options.palette, {\r\n            useHighlight: true,\r\n            extensionMode: options.paletteExtensionMode\r\n        });\r\n        that._palette.reset();\r\n        that._bars = that._bars || [];\r\n        that._animationSettings && that._barsGroup.stopAnimation();\r\n        var barValues = that._values.filter(_isFinite);\r\n        var count = barValues.length;\r\n        if (that._bars.length > count) {\r\n            var ii = that._bars.length;\r\n            for (var i = count; i < ii; ++i) {\r\n                that._bars[i].dispose()\r\n            }\r\n            that._bars.splice(count, ii - count)\r\n        } else {\r\n            if (that._bars.length < count) {\r\n                for (var _i2 = that._bars.length; _i2 < count; ++_i2) {\r\n                    that._bars.push(new BarWrapper(_i2, that._context))\r\n                }\r\n            }\r\n        }\r\n        that._bars.forEach(function(bar, index) {\r\n            bar.update({\r\n                color: that._palette.getNextColor(count),\r\n                value: barValues[index]\r\n            })\r\n        })\r\n    },\r\n    _updateValues: function(values) {\r\n        var that = this;\r\n        var list = _isArray(values) && values || _isFinite(values) && [values] || [];\r\n        var i;\r\n        var ii = list.length;\r\n        var value;\r\n        that._values.length = ii;\r\n        for (i = 0; i < ii; ++i) {\r\n            value = list[i];\r\n            that._values[i] = value = _Number(_isFinite(value) ? value : that._values[i])\r\n        }\r\n        if (!that._resizing) {\r\n            if (!_compareArrays(that._values, that.option(OPTION_VALUES))) {\r\n                that.option(OPTION_VALUES, that._values.slice())\r\n            }\r\n        }\r\n        this._change([\"NODES\"])\r\n    },\r\n    values: function(arg) {\r\n        if (void 0 !== arg) {\r\n            this._updateValues(arg);\r\n            return this\r\n        } else {\r\n            return this._values.slice(0)\r\n        }\r\n    },\r\n    _optionChangesMap: {\r\n        backgroundColor: \"MOSTLY_TOTAL\",\r\n        relativeInnerRadius: \"MOSTLY_TOTAL\",\r\n        barSpacing: \"MOSTLY_TOTAL\",\r\n        label: \"MOSTLY_TOTAL\",\r\n        resolveLabelOverlapping: \"MOSTLY_TOTAL\",\r\n        palette: \"MOSTLY_TOTAL\",\r\n        paletteExtensionMode: \"MOSTLY_TOTAL\",\r\n        values: \"VALUES\"\r\n    },\r\n    _change_VALUES: function() {\r\n        this._updateValues(this.option(OPTION_VALUES))\r\n    },\r\n    _factory: (0, _object.clone)(_base_gauge.dxBaseGauge.prototype._factory),\r\n    _optionChangesOrder: [\"VALUES\", \"NODES\"],\r\n    _initialChanges: [\"VALUES\"],\r\n    _change_NODES: function() {\r\n        this._buildNodes()\r\n    },\r\n    _change_MOSTLY_TOTAL: function() {\r\n        this._change([\"NODES\"]);\r\n        this.callBase()\r\n    },\r\n    _proxyData: [],\r\n    _getLegendData: function() {\r\n        var that = this;\r\n        var formatOptions = {};\r\n        var options = that._options.silent();\r\n        var labelFormatOptions = (options.label || {}).format;\r\n        var legendFormatOptions = (options.legend || {}).itemTextFormat;\r\n        if (legendFormatOptions) {\r\n            formatOptions.format = legendFormatOptions\r\n        } else {\r\n            formatOptions.format = labelFormatOptions || that._defaultFormatOptions\r\n        }\r\n        return (this._bars || []).map(function(b) {\r\n            return {\r\n                id: b.index,\r\n                item: {\r\n                    value: b.getValue(),\r\n                    color: b.getColor(),\r\n                    index: b.index\r\n                },\r\n                text: _formatValue(b.getValue(), formatOptions),\r\n                visible: true,\r\n                states: {\r\n                    normal: {\r\n                        fill: b.getColor()\r\n                    }\r\n                }\r\n            }\r\n        })\r\n    }\r\n});\r\nexports.dxBarGauge = dxBarGauge;\r\nBarWrapper = function(index, context) {\r\n    var that = this;\r\n    that._context = context;\r\n    that._tracker = context.renderer.arc().attr({\r\n        \"stroke-linejoin\": \"round\"\r\n    });\r\n    that.index = index\r\n};\r\n_extend(BarWrapper.prototype, {\r\n    dispose: function() {\r\n        var that = this;\r\n        that._background.dispose();\r\n        that._bar.dispose();\r\n        if (that._context.textEnabled) {\r\n            that._line.dispose();\r\n            that._text.dispose()\r\n        }\r\n        that._context.tracker.detach(that._tracker);\r\n        that._context = that._settings = that._background = that._bar = that._line = that._text = that._tracker = null;\r\n        return that\r\n    },\r\n    arrange: function(options) {\r\n        var that = this;\r\n        var context = that._context;\r\n        this._visible = true;\r\n        context.tracker.attach(that._tracker, that, {\r\n            index: that.index\r\n        });\r\n        that._background = context.renderer.arc().attr({\r\n            \"stroke-linejoin\": \"round\",\r\n            fill: context.backgroundColor\r\n        }).append(context.group);\r\n        that._settings = that._settings || {\r\n            x: context.x,\r\n            y: context.y,\r\n            startAngle: context.baseAngle,\r\n            endAngle: context.baseAngle\r\n        };\r\n        that._bar = context.renderer.arc().attr(_extend({\r\n            \"stroke-linejoin\": \"round\"\r\n        }, that._settings)).append(context.group);\r\n        if (context.textEnabled) {\r\n            that._line = context.renderer.path([], \"line\").attr({\r\n                \"stroke-width\": context.lineWidth\r\n            }).append(context.group);\r\n            that._text = context.renderer.text().css(context.fontStyles).attr(context.textOptions).append(context.group)\r\n        }\r\n        that._angle = isFinite(that._angle) ? that._angle : context.baseAngle;\r\n        that._settings.outerRadius = options.radius;\r\n        that._settings.innerRadius = options.radius - context.barSize;\r\n        that._settings.x = context.x;\r\n        that._settings.y = context.y;\r\n        that._background.attr(_extend({}, that._settings, {\r\n            startAngle: context.endAngle,\r\n            endAngle: context.startAngle,\r\n            fill: that._context.backgroundColor\r\n        }));\r\n        that._bar.attr({\r\n            x: context.x,\r\n            y: context.y,\r\n            outerRadius: that._settings.outerRadius,\r\n            innerRadius: that._settings.innerRadius,\r\n            fill: that._color\r\n        });\r\n        that._tracker.attr(that._settings);\r\n        if (context.textEnabled) {\r\n            that._line.attr({\r\n                points: [context.x, context.y - that._settings.innerRadius, context.x, context.y - context.textRadius - context.textIndent],\r\n                stroke: context.lineColor || that._color\r\n            }).sharp();\r\n            that._text.css({\r\n                fill: context.textColor || that._color\r\n            })\r\n        }\r\n        return that\r\n    },\r\n    getTooltipParameters: function() {\r\n        var that = this;\r\n        var cosSin = _getCosAndSin((that._angle + that._context.baseAngle) / 2);\r\n        return {\r\n            x: _round(that._context.x + (that._settings.outerRadius + that._settings.innerRadius) / 2 * cosSin.cos),\r\n            y: _round(that._context.y - (that._settings.outerRadius + that._settings.innerRadius) / 2 * cosSin.sin),\r\n            offset: 0,\r\n            color: that._color,\r\n            value: that._value\r\n        }\r\n    },\r\n    setAngle: function(angle) {\r\n        var that = this;\r\n        var context = that._context;\r\n        var settings = that._settings;\r\n        var cosSin;\r\n        that._angle = angle;\r\n        setAngles(settings, context.baseAngle, angle);\r\n        that._bar.attr(settings);\r\n        that._tracker.attr(settings);\r\n        if (context.textEnabled) {\r\n            cosSin = _getCosAndSin(angle);\r\n            var indent = context.textIndent;\r\n            var radius = context.textRadius + indent;\r\n            var x = context.x + radius * cosSin.cos;\r\n            var y = context.y - radius * cosSin.sin;\r\n            var halfWidth = .5 * context.textWidth;\r\n            var textHeight = context.textHeight;\r\n            var textY = context.textY;\r\n            if (_abs(x - context.x) > indent) {\r\n                x += x < context.x ? -halfWidth : halfWidth\r\n            }\r\n            if (_abs(y - context.y) <= indent) {\r\n                y -= textY + .5 * textHeight\r\n            } else {\r\n                y -= y < context.y ? textY + textHeight : textY\r\n            }\r\n            var text = _formatValue(that._value, context.formatOptions, {\r\n                index: that.index\r\n            });\r\n            var visibility = \"\" === text ? \"hidden\" : null;\r\n            that._text.attr({\r\n                text: text,\r\n                x: x,\r\n                y: y,\r\n                visibility: visibility\r\n            });\r\n            that._line.attr({\r\n                visibility: visibility\r\n            });\r\n            that._line.rotate(_convertAngleToRendererSpace(angle), context.x, context.y)\r\n        }\r\n        return that\r\n    },\r\n    hideLabel: function() {\r\n        this._text.attr({\r\n            visibility: \"hidden\"\r\n        });\r\n        this._line.attr({\r\n            visibility: \"hidden\"\r\n        })\r\n    },\r\n    checkIntersect: function(anotherBar) {\r\n        var coords = this.calculateLabelCoords();\r\n        var anotherCoords = anotherBar.calculateLabelCoords();\r\n        if (!coords || !anotherCoords) {\r\n            return false\r\n        }\r\n        var width = Math.max(0, Math.min(coords.bottomRight.x, anotherCoords.bottomRight.x) - Math.max(coords.topLeft.x, anotherCoords.topLeft.x));\r\n        var height = Math.max(0, Math.min(coords.bottomRight.y, anotherCoords.bottomRight.y) - Math.max(coords.topLeft.y, anotherCoords.topLeft.y));\r\n        return width * height !== 0\r\n    },\r\n    calculateLabelCoords: function() {\r\n        if (!this._text) {\r\n            return\r\n        }\r\n        var box = this._text.getBBox();\r\n        return {\r\n            topLeft: {\r\n                x: box.x,\r\n                y: box.y\r\n            },\r\n            bottomRight: {\r\n                x: box.x + box.width,\r\n                y: box.y + box.height\r\n            }\r\n        }\r\n    },\r\n    _processValue: function(value) {\r\n        return this._context.translator.translate(this._context.translator.adjust(value))\r\n    },\r\n    applyValue: function() {\r\n        if (!this._visible) {\r\n            return this\r\n        }\r\n        return this.setAngle(this._processValue(this.getValue()))\r\n    },\r\n    update: function(_ref) {\r\n        var color = _ref.color,\r\n            value = _ref.value;\r\n        this._color = color;\r\n        this._value = value\r\n    },\r\n    hide: function() {\r\n        this._visible = false\r\n    },\r\n    getColor: function() {\r\n        return this._color\r\n    },\r\n    getValue: function() {\r\n        return this._value\r\n    },\r\n    beginAnimation: function() {\r\n        if (!this._visible) {\r\n            return this\r\n        }\r\n        var that = this;\r\n        var angle = this._processValue(this.getValue());\r\n        if (!compareFloats(that._angle, angle)) {\r\n            that._start = that._angle;\r\n            that._delta = angle - that._angle;\r\n            that._tracker.attr({\r\n                visibility: \"hidden\"\r\n            });\r\n            if (that._context.textEnabled) {\r\n                that._line.attr({\r\n                    visibility: \"hidden\"\r\n                });\r\n                that._text.attr({\r\n                    visibility: \"hidden\"\r\n                })\r\n            }\r\n        } else {\r\n            that.animate = _noop;\r\n            that.setAngle(that._angle)\r\n        }\r\n    },\r\n    animate: function(pos) {\r\n        if (!this._visible) {\r\n            return this\r\n        }\r\n        var that = this;\r\n        that._angle = that._start + that._delta * pos;\r\n        setAngles(that._settings, that._context.baseAngle, that._angle);\r\n        that._bar.attr(that._settings)\r\n    },\r\n    endAnimation: function() {\r\n        var that = this;\r\n        if (void 0 !== that._delta) {\r\n            if (compareFloats(that._angle, that._start + that._delta)) {\r\n                that._tracker.attr({\r\n                    visibility: null\r\n                });\r\n                that.setAngle(that._angle)\r\n            }\r\n        } else {\r\n            delete that.animate\r\n        }\r\n        delete that._start;\r\n        delete that._delta\r\n    }\r\n});\r\n\r\nfunction setAngles(target, angle1, angle2) {\r\n    target.startAngle = angle1 < angle2 ? angle1 : angle2;\r\n    target.endAngle = angle1 < angle2 ? angle2 : angle1\r\n}\r\n\r\nfunction compareFloats(value1, value2) {\r\n    return _abs(value1 - value2) < 1e-4\r\n}(0, _component_registrator.default)(\"dxBarGauge\", dxBarGauge);\r\ndxBarGauge.addPlugin(_legend.plugin);\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _version = require(\"../../core/utils/version\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../drop_down_editor/ui.drop_down_editor\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiDate_boxStrategy = _interopRequireDefault(require(\"./ui.date_box.strategy.calendar\"));\r\nvar _uiDate_boxStrategy2 = _interopRequireDefault(require(\"./ui.date_box.strategy.date_view\"));\r\nvar _uiDate_boxStrategy3 = _interopRequireDefault(require(\"./ui.date_box.strategy.native\"));\r\nvar _uiDate_boxStrategy4 = _interopRequireDefault(require(\"./ui.date_box.strategy.calendar_with_time\"));\r\nvar _uiDate_boxStrategy5 = _interopRequireDefault(require(\"./ui.date_box.strategy.list\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DATEBOX_CLASS = \"dx-datebox\";\r\nvar DX_AUTO_WIDTH_CLASS = \"dx-auto-width\";\r\nvar DX_INVALID_BADGE_CLASS = \"dx-show-invalid-badge\";\r\nvar DX_CLEAR_BUTTON_CLASS = \"dx-clear-button-area\";\r\nvar DATEBOX_WRAPPER_CLASS = \"dx-datebox-wrapper\";\r\nvar PICKER_TYPE = {\r\n    calendar: \"calendar\",\r\n    rollers: \"rollers\",\r\n    list: \"list\",\r\n    \"native\": \"native\"\r\n};\r\nvar TYPE = {\r\n    date: \"date\",\r\n    datetime: \"datetime\",\r\n    time: \"time\"\r\n};\r\nvar STRATEGY_NAME = {\r\n    calendar: \"Calendar\",\r\n    dateView: \"DateView\",\r\n    \"native\": \"Native\",\r\n    calendarWithTime: \"CalendarWithTime\",\r\n    list: \"List\"\r\n};\r\nvar STRATEGY_CLASSES = {\r\n    Calendar: _uiDate_boxStrategy.default,\r\n    DateView: _uiDate_boxStrategy2.default,\r\n    Native: _uiDate_boxStrategy3.default,\r\n    CalendarWithTime: _uiDate_boxStrategy4.default,\r\n    List: _uiDate_boxStrategy5.default\r\n};\r\nvar DateBox = _ui2.default.inherit({\r\n    _supportedKeys: function() {\r\n        return (0, _extend.extend)(this.callBase(), this._strategy.supportedKeys())\r\n    },\r\n    _renderButtonContainers: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._strategy.customizeButtons()\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            type: \"date\",\r\n            showAnalogClock: true,\r\n            value: null,\r\n            dateSerializationFormat: void 0,\r\n            min: void 0,\r\n            max: void 0,\r\n            displayFormat: null,\r\n            interval: 30,\r\n            disabledDates: null,\r\n            pickerType: PICKER_TYPE.calendar,\r\n            invalidDateMessage: _message.default.format(\"dxDateBox-validation-datetime\"),\r\n            dateOutOfRangeMessage: _message.default.format(\"validation-range\"),\r\n            applyButtonText: _message.default.format(\"OK\"),\r\n            adaptivityEnabled: false,\r\n            calendarOptions: {},\r\n            useHiddenSubmitElement: true\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"ios\"\r\n            },\r\n            options: {\r\n                \"dropDownOptions.showTitle\": true\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"android\"\r\n            },\r\n            options: {\r\n                buttonsLocation: \"bottom after\"\r\n            }\r\n        }, {\r\n            device: function() {\r\n                var realDevice = _devices.default.real();\r\n                var platform = realDevice.platform;\r\n                return \"ios\" === platform || \"android\" === platform\r\n            },\r\n            options: {\r\n                pickerType: PICKER_TYPE.native\r\n            }\r\n        }, {\r\n            device: function(currentDevice) {\r\n                var realDevice = _devices.default.real();\r\n                var platform = realDevice.platform;\r\n                var version = realDevice.version;\r\n                return \"generic\" === platform && \"desktop\" !== currentDevice.deviceType || \"android\" === platform && (0, _version.compare)(version, [4, 4]) < 0\r\n            },\r\n            options: {\r\n                pickerType: PICKER_TYPE.rollers\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"generic\",\r\n                deviceType: \"desktop\"\r\n            },\r\n            options: {\r\n                buttonsLocation: \"bottom after\"\r\n            }\r\n        }])\r\n    },\r\n    _initOptions: function(options) {\r\n        this._userOptions = (0, _extend.extend)({}, options);\r\n        this.callBase(options);\r\n        this._updatePickerOptions()\r\n    },\r\n    _updatePickerOptions: function() {\r\n        var pickerType = this.option(\"pickerType\");\r\n        var type = this.option(\"type\");\r\n        if (pickerType === PICKER_TYPE.list && (type === TYPE.datetime || type === TYPE.date)) {\r\n            pickerType = PICKER_TYPE.calendar\r\n        }\r\n        if (type === TYPE.time && pickerType === PICKER_TYPE.calendar) {\r\n            pickerType = PICKER_TYPE.list\r\n        }\r\n        this.option(\"showDropDownButton\", \"generic\" !== _devices.default.real().platform || pickerType !== PICKER_TYPE.native);\r\n        this._pickerType = pickerType\r\n    },\r\n    _init: function() {\r\n        this._initStrategy();\r\n        this.option((0, _extend.extend)({}, this._strategy.getDefaultOptions(), this._userOptions));\r\n        delete this._userOptions;\r\n        this.callBase()\r\n    },\r\n    _toLowerCaseFirstLetter: function(string) {\r\n        return string.charAt(0).toLowerCase() + string.substr(1)\r\n    },\r\n    _initStrategy: function() {\r\n        var strategyName = this._getStrategyName(this._getFormatType());\r\n        var strategy = STRATEGY_CLASSES[strategyName];\r\n        if (!(this._strategy && this._strategy.NAME === strategyName)) {\r\n            this._strategy = new strategy(this)\r\n        }\r\n    },\r\n    _getFormatType: function() {\r\n        var currentType = this.option(\"type\");\r\n        var isTime = /h|m|s/g.test(currentType);\r\n        var isDate = /d|M|Y/g.test(currentType);\r\n        var type = \"\";\r\n        if (isDate) {\r\n            type += TYPE.date\r\n        }\r\n        if (isTime) {\r\n            type += TYPE.time\r\n        }\r\n        return type\r\n    },\r\n    _getStrategyName: function(type) {\r\n        var pickerType = this._pickerType;\r\n        if (pickerType === PICKER_TYPE.rollers) {\r\n            return STRATEGY_NAME.dateView\r\n        } else {\r\n            if (pickerType === PICKER_TYPE.native) {\r\n                return STRATEGY_NAME.native\r\n            }\r\n        }\r\n        if (type === TYPE.date) {\r\n            return STRATEGY_NAME.calendar\r\n        }\r\n        if (type === TYPE.datetime) {\r\n            return STRATEGY_NAME.calendarWithTime\r\n        }\r\n        return STRATEGY_NAME.list\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(DATEBOX_CLASS);\r\n        this.callBase();\r\n        this._refreshFormatClass();\r\n        this._refreshPickerTypeClass();\r\n        this._strategy.renderInputMinMax(this._input())\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._formatValidationIcon()\r\n    },\r\n    _renderDimensions: function() {\r\n        this.callBase();\r\n        this.$element().toggleClass(DX_AUTO_WIDTH_CLASS, !this.option(\"width\"));\r\n        this._dimensionChanged()\r\n    },\r\n    _dimensionChanged: function() {\r\n        this.callBase(arguments);\r\n        if (this._popup) {\r\n            var _this$_strategy$_upda, _this$_strategy;\r\n            null === (_this$_strategy$_upda = (_this$_strategy = this._strategy)._updatePopupHeight) || void 0 === _this$_strategy$_upda ? void 0 : _this$_strategy$_upda.call(_this$_strategy)\r\n        }\r\n    },\r\n    _refreshFormatClass: function() {\r\n        var $element = this.$element();\r\n        (0, _iterator.each)(TYPE, function(_, item) {\r\n            $element.removeClass(DATEBOX_CLASS + \"-\" + item)\r\n        });\r\n        $element.addClass(DATEBOX_CLASS + \"-\" + this.option(\"type\"))\r\n    },\r\n    _refreshPickerTypeClass: function() {\r\n        var $element = this.$element();\r\n        (0, _iterator.each)(PICKER_TYPE, function(_, item) {\r\n            $element.removeClass(DATEBOX_CLASS + \"-\" + item)\r\n        });\r\n        $element.addClass(DATEBOX_CLASS + \"-\" + this._pickerType)\r\n    },\r\n    _formatValidationIcon: function() {\r\n        if (!(0, _window.hasWindow)()) {\r\n            return\r\n        }\r\n        var inputElement = this._input().get(0);\r\n        var isRtlEnabled = this.option(\"rtlEnabled\");\r\n        var clearButtonWidth = this._getClearButtonWidth();\r\n        var longestElementDimensions = this._getLongestElementDimensions();\r\n        var curWidth = parseFloat(window.getComputedStyle(inputElement).width) - clearButtonWidth;\r\n        var shouldHideValidationIcon = longestElementDimensions.width > curWidth;\r\n        var style = inputElement.style;\r\n        this.$element().toggleClass(DX_INVALID_BADGE_CLASS, !shouldHideValidationIcon);\r\n        if (shouldHideValidationIcon) {\r\n            if (void 0 === this._storedPadding) {\r\n                this._storedPadding = isRtlEnabled ? longestElementDimensions.leftPadding : longestElementDimensions.rightPadding\r\n            }\r\n            isRtlEnabled ? style.paddingLeft = 0 : style.paddingRight = 0\r\n        } else {\r\n            isRtlEnabled ? style.paddingLeft = this._storedPadding + \"px\" : style.paddingRight = this._storedPadding + \"px\"\r\n        }\r\n    },\r\n    _getClearButtonWidth: function() {\r\n        var clearButtonWidth = 0;\r\n        if (this._isClearButtonVisible() && \"\" === this._input().val()) {\r\n            var clearButtonElement = this.$element().find(\".\" + DX_CLEAR_BUTTON_CLASS).get(0);\r\n            clearButtonWidth = parseFloat(window.getComputedStyle(clearButtonElement).width)\r\n        }\r\n        return clearButtonWidth\r\n    },\r\n    _getLongestElementDimensions: function() {\r\n        var format = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n        var longestValue = _date2.default.format(_ui.default.getLongestDate(format, _date2.default.getMonthNames(), _date2.default.getDayNames()), format);\r\n        var $input = this._input();\r\n        var inputElement = $input.get(0);\r\n        var $longestValueElement = (0, _dom.createTextElementHiddenCopy)($input, longestValue);\r\n        var isPaddingStored = void 0 !== this._storedPadding;\r\n        var storedPadding = !isPaddingStored ? 0 : this._storedPadding;\r\n        $longestValueElement.appendTo(this.$element());\r\n        var elementWidth = parseFloat(window.getComputedStyle($longestValueElement.get(0)).width);\r\n        var rightPadding = parseFloat(window.getComputedStyle(inputElement).paddingRight);\r\n        var leftPadding = parseFloat(window.getComputedStyle(inputElement).paddingLeft);\r\n        var necessaryWidth = elementWidth + leftPadding + rightPadding + storedPadding;\r\n        $longestValueElement.remove();\r\n        return {\r\n            width: necessaryWidth,\r\n            leftPadding: leftPadding,\r\n            rightPadding: rightPadding\r\n        }\r\n    },\r\n    _getKeyboardListeners: function() {\r\n        return this.callBase().concat([this._strategy && this._strategy.getKeyboardListener()])\r\n    },\r\n    _renderPopup: function() {\r\n        this.callBase();\r\n        this._popup._wrapper().addClass(DATEBOX_WRAPPER_CLASS);\r\n        this._renderPopupWrapper()\r\n    },\r\n    _popupConfig: function() {\r\n        var popupConfig = this.callBase();\r\n        return (0, _extend.extend)(this._strategy.popupConfig(popupConfig), {\r\n            title: this._getPopupTitle(),\r\n            dragEnabled: false\r\n        })\r\n    },\r\n    _renderPopupWrapper: function() {\r\n        if (!this._popup) {\r\n            return\r\n        }\r\n        var $element = this.$element();\r\n        var classPostfixes = (0, _extend.extend)({}, TYPE, PICKER_TYPE);\r\n        (0, _iterator.each)(classPostfixes, function(_, item) {\r\n            $element.removeClass(DATEBOX_WRAPPER_CLASS + \"-\" + item)\r\n        }.bind(this));\r\n        this._popup._wrapper().addClass(DATEBOX_WRAPPER_CLASS + \"-\" + this.option(\"type\")).addClass(DATEBOX_WRAPPER_CLASS + \"-\" + this._pickerType)\r\n    },\r\n    _renderPopupContent: function() {\r\n        this.callBase();\r\n        this._strategy.renderPopupContent()\r\n    },\r\n    _getFirstPopupElement: function() {\r\n        return this._strategy.getFirstPopupElement() || this.callBase()\r\n    },\r\n    _getLastPopupElement: function() {\r\n        return this._strategy.getLastPopupElement() || this.callBase()\r\n    },\r\n    _popupShowingHandler: function() {\r\n        this.callBase();\r\n        this._strategy.popupShowingHandler()\r\n    },\r\n    _popupHiddenHandler: function() {\r\n        this.callBase();\r\n        this._strategy.popupHiddenHandler()\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._formatValidationIcon()\r\n        }\r\n    },\r\n    _clearValueHandler: function(e) {\r\n        this.option(\"text\", \"\");\r\n        this.callBase(e)\r\n    },\r\n    _readOnlyPropValue: function() {\r\n        if (this._pickerType === PICKER_TYPE.rollers) {\r\n            return true\r\n        }\r\n        var platform = _devices.default.real().platform;\r\n        var isCustomValueDisabled = this._isNativeType() && (\"ios\" === platform || \"android\" === platform);\r\n        if (isCustomValueDisabled) {\r\n            return this.option(\"readOnly\")\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _isClearButtonVisible: function() {\r\n        return this.callBase() && !this._isNativeType()\r\n    },\r\n    _renderValue: function() {\r\n        var value = this.dateOption(\"value\");\r\n        this.option(\"text\", this._getDisplayedText(value));\r\n        this._strategy.renderValue();\r\n        return this.callBase()\r\n    },\r\n    _setSubmitValue: function() {\r\n        var value = this.dateOption(\"value\");\r\n        var dateSerializationFormat = this.option(\"dateSerializationFormat\");\r\n        var submitFormat = _ui.default.SUBMIT_FORMATS_MAP[this.option(\"type\")];\r\n        var submitValue = dateSerializationFormat ? _date_serialization.default.serializeDate(value, dateSerializationFormat) : _ui.default.toStandardDateFormat(value, submitFormat);\r\n        this._getSubmitElement().val(submitValue)\r\n    },\r\n    _getDisplayedText: function(value) {\r\n        var mode = this.option(\"mode\");\r\n        var displayedText;\r\n        if (\"text\" === mode) {\r\n            var displayFormat = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n            displayedText = _date2.default.format(value, displayFormat)\r\n        } else {\r\n            var format = this._getFormatByMode(mode);\r\n            if (format) {\r\n                displayedText = _date2.default.format(value, format)\r\n            } else {\r\n                displayedText = _ui.default.toStandardDateFormat(value, mode)\r\n            }\r\n        }\r\n        return displayedText\r\n    },\r\n    _getFormatByMode: function(mode) {\r\n        return (0, _support.inputType)(mode) ? null : _ui.default.FORMATS_MAP[mode]\r\n    },\r\n    _valueChangeEventHandler: function(e) {\r\n        var text = this.option(\"text\");\r\n        var currentValue = this.dateOption(\"value\");\r\n        if (text === this._getDisplayedText(currentValue)) {\r\n            this._applyInternalValidation(currentValue);\r\n            return\r\n        }\r\n        var parsedDate = this._getParsedDate(text);\r\n        var value = currentValue || this._getDateByDefault();\r\n        var type = this.option(\"type\");\r\n        var newValue = _ui.default.mergeDates(value, parsedDate, type);\r\n        var date = parsedDate && \"time\" === type ? newValue : parsedDate;\r\n        if (this._applyInternalValidation(date).isValid) {\r\n            var displayedText = this._getDisplayedText(newValue);\r\n            if (value && newValue && value.getTime() === newValue.getTime() && displayedText !== text) {\r\n                this._renderValue()\r\n            } else {\r\n                this.dateValue(newValue, e)\r\n            }\r\n        }\r\n    },\r\n    _getDateByDefault: function() {\r\n        return this._strategy.useCurrentDateByDefault() && this._strategy.getDefaultDate()\r\n    },\r\n    _getParsedDate: function(text) {\r\n        var displayFormat = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n        var parsedText = this._strategy.getParsedText(text, displayFormat);\r\n        return (0, _type.isDefined)(parsedText) ? parsedText : void 0\r\n    },\r\n    _applyInternalValidation: function(value) {\r\n        var text = this.option(\"text\");\r\n        var hasText = !!text && null !== value;\r\n        var isDate = !!value && (0, _type.isDate)(value) && !isNaN(value.getTime());\r\n        var isDateInRange = isDate && _date.default.dateInRange(value, this.dateOption(\"min\"), this.dateOption(\"max\"), this.option(\"type\"));\r\n        var isValid = !hasText && !value || isDateInRange;\r\n        var validationMessage = \"\";\r\n        if (!isDate) {\r\n            validationMessage = this.option(\"invalidDateMessage\")\r\n        } else {\r\n            if (!isDateInRange) {\r\n                validationMessage = this.option(\"dateOutOfRangeMessage\")\r\n            }\r\n        }\r\n        this.option({\r\n            isValid: isValid,\r\n            validationError: isValid ? null : {\r\n                editorSpecific: true,\r\n                message: validationMessage\r\n            }\r\n        });\r\n        return {\r\n            isValid: isValid,\r\n            isDate: isDate\r\n        }\r\n    },\r\n    _applyCustomValidation: function(value) {\r\n        this.validationRequest.fire({\r\n            editor: this,\r\n            value: this._serializeDate(value)\r\n        })\r\n    },\r\n    _isValueChanged: function(newValue) {\r\n        var oldValue = this.dateOption(\"value\");\r\n        var oldTime = oldValue && oldValue.getTime();\r\n        var newTime = newValue && newValue.getTime();\r\n        return oldTime !== newTime\r\n    },\r\n    _isTextChanged: function(newValue) {\r\n        var oldText = this.option(\"text\");\r\n        var newText = newValue && this._getDisplayedText(newValue) || \"\";\r\n        return oldText !== newText\r\n    },\r\n    _renderProps: function() {\r\n        this.callBase();\r\n        this._input().attr(\"autocomplete\", \"off\")\r\n    },\r\n    _renderOpenedState: function() {\r\n        if (!this._isNativeType()) {\r\n            this.callBase()\r\n        }\r\n        if (this._strategy.isAdaptivityChanged()) {\r\n            this._refreshStrategy()\r\n        }\r\n        this._strategy.renderOpenedState()\r\n    },\r\n    _getPopupTitle: function() {\r\n        var placeholder = this.option(\"placeholder\");\r\n        if (placeholder) {\r\n            return placeholder\r\n        }\r\n        var type = this.option(\"type\");\r\n        if (type === TYPE.time) {\r\n            return _message.default.format(\"dxDateBox-simulatedDataPickerTitleTime\")\r\n        }\r\n        if (type === TYPE.date || type === TYPE.datetime) {\r\n            return _message.default.format(\"dxDateBox-simulatedDataPickerTitleDate\")\r\n        }\r\n        return \"\"\r\n    },\r\n    _renderPlaceholder: function() {\r\n        this._popup && this._popup.option(\"title\", this._getPopupTitle());\r\n        this.callBase()\r\n    },\r\n    _refreshStrategy: function() {\r\n        this._strategy.dispose();\r\n        this._initStrategy();\r\n        this.option(this._strategy.getDefaultOptions());\r\n        this._refresh()\r\n    },\r\n    _applyButtonHandler: function(e) {\r\n        var value = this._strategy.getValue();\r\n        var _this$_applyInternalV = this._applyInternalValidation(value),\r\n            isValid = _this$_applyInternalV.isValid,\r\n            isDate = _this$_applyInternalV.isDate;\r\n        if (isValid) {\r\n            this.dateValue(value, e.event)\r\n        } else {\r\n            if (isDate) {\r\n                var displayedText = this._getDisplayedText(value);\r\n                this.option(\"text\", displayedText);\r\n                this._renderDisplayText(displayedText)\r\n            }\r\n        }\r\n        this.callBase()\r\n    },\r\n    _dispose: function() {\r\n        this._strategy && this._strategy.dispose();\r\n        this.callBase()\r\n    },\r\n    _isNativeType: function() {\r\n        return this._pickerType === PICKER_TYPE.native\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"showClearButton\":\r\n            case \"buttons\":\r\n                this.callBase.apply(this, arguments);\r\n                this._formatValidationIcon();\r\n                break;\r\n            case \"pickerType\":\r\n                this._updatePickerOptions({\r\n                    pickerType: args.value\r\n                });\r\n                this._refreshStrategy();\r\n                this._refreshPickerTypeClass();\r\n                this._invalidate();\r\n                break;\r\n            case \"type\":\r\n                this._updatePickerOptions({\r\n                    format: args.value\r\n                });\r\n                this._refreshStrategy();\r\n                this._refreshFormatClass();\r\n                this._renderPopupWrapper();\r\n                this._formatValidationIcon();\r\n                this._updateValue();\r\n                break;\r\n            case \"placeholder\":\r\n                this._renderPlaceholder();\r\n                break;\r\n            case \"min\":\r\n            case \"max\":\r\n                var isValid = this.option(\"isValid\");\r\n                this._applyInternalValidation(this.dateOption(\"value\"));\r\n                if (!isValid) {\r\n                    this._applyCustomValidation(this.dateOption(\"value\"))\r\n                }\r\n                this._invalidate();\r\n                break;\r\n            case \"dateSerializationFormat\":\r\n            case \"interval\":\r\n            case \"disabledDates\":\r\n            case \"calendarOptions\":\r\n                this._invalidate();\r\n                break;\r\n            case \"displayFormat\":\r\n                this.option(\"text\", this._getDisplayedText(this.dateOption(\"value\")));\r\n                this._renderInputValue();\r\n                break;\r\n            case \"text\":\r\n                this._strategy.textChangedHandler(args.value);\r\n                this.callBase.apply(this, arguments);\r\n                break;\r\n            case \"isValid\":\r\n                this.callBase.apply(this, arguments);\r\n                this._formatValidationIcon();\r\n                break;\r\n            case \"showDropDownButton\":\r\n                this._formatValidationIcon();\r\n                this.callBase.apply(this, arguments);\r\n                break;\r\n            case \"readOnly\":\r\n                this.callBase.apply(this, arguments);\r\n                this._formatValidationIcon();\r\n                break;\r\n            case \"invalidDateMessage\":\r\n            case \"dateOutOfRangeMessage\":\r\n            case \"adaptivityEnabled\":\r\n            case \"showAnalogClock\":\r\n                break;\r\n            default:\r\n                this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    _getSerializationFormat: function() {\r\n        var value = this.option(\"value\");\r\n        if (this.option(\"dateSerializationFormat\") && (0, _config.default)().forceIsoDateParsing) {\r\n            return this.option(\"dateSerializationFormat\")\r\n        }\r\n        if ((0, _type.isNumeric)(value)) {\r\n            return \"number\"\r\n        }\r\n        if (!(0, _type.isString)(value)) {\r\n            return\r\n        }\r\n        return _date_serialization.default.getDateSerializationFormat(value)\r\n    },\r\n    _updateValue: function(value) {\r\n        this.callBase();\r\n        this._applyInternalValidation(value || this.dateOption(\"value\"))\r\n    },\r\n    dateValue: function(value, dxEvent) {\r\n        var isValueChanged = this._isValueChanged(value);\r\n        if (isValueChanged && dxEvent) {\r\n            this._saveValueChangeEvent(dxEvent)\r\n        }\r\n        if (!isValueChanged) {\r\n            if (this._isTextChanged(value)) {\r\n                this._updateValue(value)\r\n            } else {\r\n                if (\"\" === this.option(\"text\")) {\r\n                    this._applyCustomValidation(value)\r\n                }\r\n            }\r\n        }\r\n        return this.dateOption(\"value\", value)\r\n    },\r\n    dateOption: function(optionName, value) {\r\n        if (1 === arguments.length) {\r\n            return _date_serialization.default.deserializeDate(this.option(optionName))\r\n        }\r\n        this.option(optionName, this._serializeDate(value))\r\n    },\r\n    _serializeDate: function(date) {\r\n        var serializationFormat = this._getSerializationFormat();\r\n        return _date_serialization.default.serializeDate(date, serializationFormat)\r\n    },\r\n    reset: function() {\r\n        this.callBase();\r\n        this._updateValue(this.dateOption(\"value\"))\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxDateBox\", DateBox);\r\nvar _default = DateBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (data/apply_changes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _array_utils = require(\"./array_utils\");\r\nvar _default = _array_utils.applyChanges;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/options/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createDefaultOptionRules = exports.getNestedOptionValue = exports.getParentName = exports.getFieldName = exports.deviceMatch = exports.normalizeOptions = exports.convertRulesToOptions = void 0;\r\nvar _devices = _interopRequireDefault(require(\"../devices\"));\r\nvar _type = require(\"../utils/type\");\r\nvar _common = require(\"../utils/common\");\r\nvar _extend = require(\"../utils/extend\");\r\nvar _data = require(\"../utils/data\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar cachedGetters = {};\r\nvar convertRulesToOptions = function(rules) {\r\n    var currentDevice = _devices.default.current();\r\n    return rules.reduce(function(options, _ref) {\r\n        var device = _ref.device,\r\n            ruleOptions = _ref.options;\r\n        var deviceFilter = device || {};\r\n        var match = (0, _type.isFunction)(deviceFilter) ? deviceFilter(currentDevice) : deviceMatch(currentDevice, deviceFilter);\r\n        if (match) {\r\n            (0, _extend.extend)(true, options, ruleOptions)\r\n        }\r\n        return options\r\n    }, {})\r\n};\r\nexports.convertRulesToOptions = convertRulesToOptions;\r\nvar normalizeOptions = function(options, value) {\r\n    return \"string\" !== typeof options ? options : _defineProperty({}, options, value)\r\n};\r\nexports.normalizeOptions = normalizeOptions;\r\nvar deviceMatch = function(device, filter) {\r\n    return (0, _type.isEmptyObject)(filter) || (0, _common.findBestMatches)(device, [filter]).length > 0\r\n};\r\nexports.deviceMatch = deviceMatch;\r\nvar getFieldName = function(fullName) {\r\n    return fullName.substr(fullName.lastIndexOf(\".\") + 1)\r\n};\r\nexports.getFieldName = getFieldName;\r\nvar getParentName = function(fullName) {\r\n    return fullName.substr(0, fullName.lastIndexOf(\".\"))\r\n};\r\nexports.getParentName = getParentName;\r\nvar getNestedOptionValue = function(optionsObject, name) {\r\n    cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name);\r\n    return cachedGetters[name](optionsObject, {\r\n        functionsAsIs: true\r\n    })\r\n};\r\nexports.getNestedOptionValue = getNestedOptionValue;\r\nvar createDefaultOptionRules = function() {\r\n    var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\r\n    return options\r\n};\r\nexports.createDefaultOptionRules = createDefaultOptionRules;\r\n","/**\r\n * DevExtreme (ui/context_menu/ui.menu_base.edit.strategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiCollection_widgetEditStrategy = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit.strategy.plain\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar MenuBaseEditStrategy = function(_PlainEditStrategy) {\r\n    _inherits(MenuBaseEditStrategy, _PlainEditStrategy);\r\n    var _super = _createSuper(MenuBaseEditStrategy);\r\n\r\n    function MenuBaseEditStrategy() {\r\n        _classCallCheck(this, MenuBaseEditStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(MenuBaseEditStrategy, [{\r\n        key: \"_getPlainItems\",\r\n        value: function() {\r\n            return (0, _iterator.map)(this._collectionWidget.option(\"items\"), function getMenuItems(item) {\r\n                return item.items ? [item].concat((0, _iterator.map)(item.items, getMenuItems)) : item\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_stringifyItem\",\r\n        value: function(item) {\r\n            var _this = this;\r\n            return JSON.stringify(item, function(key, value) {\r\n                if (\"template\" === key) {\r\n                    return _this._getTemplateString(value)\r\n                }\r\n                return value\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getTemplateString\",\r\n        value: function(template) {\r\n            var result;\r\n            if (\"object\" === _typeof(template)) {\r\n                result = (0, _renderer.default)(template).text()\r\n            } else {\r\n                result = template.toString()\r\n            }\r\n            return result\r\n        }\r\n    }]);\r\n    return MenuBaseEditStrategy\r\n}(_uiCollection_widgetEditStrategy.default);\r\nvar _default = MenuBaseEditStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/pdf_creator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getData = getData;\r\nvar _version = _interopRequireDefault(require(\"../core/version\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _image_creator = require(\"./image_creator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar mainPageTemplate = \"%PDF-1.3\\r\\n2 0 obj\\r\\n<</ProcSet[/PDF/ImageB/ImageC/ImageI]/XObject<</I0 5 0 R>>>>\\r\\nendobj\\r\\n4 0 obj\\r\\n<</Type/Pages/Kids[1 0 R]/Count 1>>\\r\\nendobj\\r\\n7 0 obj\\r\\n<</OpenAction[1 0 R /FitH null]/Type/Catalog/Pages 4 0 R/PageLayout/OneColumn>>\\r\\nendobj\\r\\n1 0 obj\\r\\n<</Type/Page/Resources 2 0 R/MediaBox[0 0 _width_ _height_]/Contents 3 0 R/Parent 4 0 R>>\\r\\nendobj\\r\\n\";\r\nvar contentTemplate = \"3 0 obj\\r\\n<</Length 52>>stream\\r\\n0.20 w\\n0 G\\nq _width_ 0 0 _height_ 0.00 0.00 cm /I0 Do Q\\r\\nendstream\\r\\nendobj\\r\\n\";\r\nvar infoTemplate = \"6 0 obj\\r\\n<</CreationDate _date_/Producer(DevExtreme _version_)>>\\r\\nendobj\\r\\n\";\r\nvar imageStartTemplate = \"5 0 obj\\r\\n<</Type/XObject/Subtype/Image/Width _width_/Height _height_/ColorSpace/DeviceRGB/BitsPerComponent 8/Filter/DCTDecode/Length _length_>>stream\\r\\n\";\r\nvar imageEndTemplate = \"\\r\\nendstream\\r\\nendobj\\r\\n\";\r\nvar trailerTemplate = \"trailer\\r\\n<<\\r\\n/Size 8\\r\\n/Root 7 0 R\\r\\n/Info 6 0 R\\r\\n>>\\r\\nstartxref\\r\\n_length_\\r\\n%%EOF\";\r\nvar xrefTemplate = \"xref\\r\\n0 8\\r\\n0000000000 65535 f\\r\\n0000000241 00000 n\\r\\n0000000010 00000 n\\r\\n_main_ 00000 n\\r\\n0000000089 00000 n\\r\\n_image_ 00000 n\\r\\n_info_ 00000 n\\r\\n0000000143 00000 n\\r\\n\";\r\nvar pad = function pad(str, len) {\r\n    return str.length < len ? pad(\"0\" + str, len) : str\r\n};\r\nvar composePdfString = function(imageString, options, curDate) {\r\n    var margin = 2 * (options.margin || 0);\r\n    var width = options.width + margin;\r\n    var height = options.height + margin;\r\n    var widthPt = (.75 * width).toFixed(2);\r\n    var heightPt = (.75 * height).toFixed(2);\r\n    var mainPage = mainPageTemplate.replace(\"_width_\", widthPt).replace(\"_height_\", heightPt);\r\n    var content = contentTemplate.replace(\"_width_\", widthPt).replace(\"_height_\", heightPt);\r\n    var info = infoTemplate.replace(\"_date_\", curDate).replace(\"_version_\", _version.default);\r\n    var image = imageStartTemplate.replace(\"_width_\", width).replace(\"_height_\", height).replace(\"_length_\", imageString.length) + imageString + imageEndTemplate;\r\n    var xref = getXref(mainPage.length, content.length, info.length);\r\n    var mainContent = mainPage + content + info + image;\r\n    var trailer = trailerTemplate.replace(\"_length_\", mainContent.length);\r\n    return mainContent + xref + trailer\r\n};\r\n\r\nfunction getXref(mainPageLength, contentLength, infoLength) {\r\n    return xrefTemplate.replace(\"_main_\", pad(mainPageLength + \"\", 10)).replace(\"_info_\", pad(mainPageLength + contentLength + \"\", 10)).replace(\"_image_\", pad(mainPageLength + contentLength + infoLength + \"\", 10))\r\n}\r\nvar getCurDate = function() {\r\n    return new Date\r\n};\r\nvar getBlob = function(binaryData) {\r\n    var i = 0;\r\n    var dataArray = new Uint8Array(binaryData.length);\r\n    for (; i < binaryData.length; i++) {\r\n        dataArray[i] = binaryData.charCodeAt(i)\r\n    }\r\n    return new window.Blob([dataArray.buffer], {\r\n        type: \"application/pdf\"\r\n    })\r\n};\r\nvar getBase64 = function(binaryData) {\r\n    return window.btoa(binaryData)\r\n};\r\n\r\nfunction getData(data, options) {\r\n    return _image_creator.imageCreator.getImageData(data, (0, _extend.extend)({}, options, {\r\n        format: \"JPEG\"\r\n    })).then(function(imageString) {\r\n        var binaryData = composePdfString(imageString, options, getCurDate());\r\n        var pdfData = (0, _type.isFunction)(window.Blob) ? getBlob(binaryData) : getBase64(binaryData);\r\n        return pdfData\r\n    })\r\n}\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.list.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _list = _interopRequireDefault(require(\"../list\"));\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.strategy\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _utils = require(\"../drop_down_editor/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DATE_FORMAT = \"date\";\r\nvar BOUNDARY_VALUES = {\r\n    min: new Date(0, 0, 0, 0, 0),\r\n    max: new Date(0, 0, 0, 23, 59)\r\n};\r\nvar ListStrategy = _uiDate_box.default.inherit({\r\n    NAME: \"List\",\r\n    supportedKeys: function() {\r\n        return {\r\n            tab: function() {\r\n                if (this.option(\"opened\")) {\r\n                    this.close()\r\n                }\r\n            },\r\n            space: _common.noop,\r\n            home: _common.noop,\r\n            end: _common.noop\r\n        }\r\n    },\r\n    getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            applyValueMode: \"instantly\"\r\n        })\r\n    },\r\n    getDisplayFormat: function(displayFormat) {\r\n        return displayFormat || \"shorttime\"\r\n    },\r\n    popupConfig: function(_popupConfig) {\r\n        return _popupConfig\r\n    },\r\n    useCurrentDateByDefault: function() {\r\n        return true\r\n    },\r\n    getDefaultDate: function() {\r\n        return new Date(null)\r\n    },\r\n    popupShowingHandler: function() {\r\n        this.dateBox._dimensionChanged()\r\n    },\r\n    _renderWidget: function() {\r\n        this.callBase();\r\n        this._refreshItems()\r\n    },\r\n    _getWidgetName: function() {\r\n        return _list.default\r\n    },\r\n    _getWidgetOptions: function() {\r\n        return {\r\n            itemTemplate: this._timeListItemTemplate.bind(this),\r\n            onItemClick: this._listItemClickHandler.bind(this),\r\n            tabIndex: -1,\r\n            onFocusedItemChanged: this._refreshActiveDescendant.bind(this),\r\n            selectionMode: \"single\"\r\n        }\r\n    },\r\n    _refreshActiveDescendant: function(e) {\r\n        this.dateBox.setAria(\"activedescendant\", \"\");\r\n        this.dateBox.setAria(\"activedescendant\", e.actionValue)\r\n    },\r\n    _refreshItems: function() {\r\n        this._widgetItems = this._getTimeListItems();\r\n        this._widget.option(\"items\", this._widgetItems)\r\n    },\r\n    renderOpenedState: function() {\r\n        if (!this._widget) {\r\n            return\r\n        }\r\n        this._widget.option(\"focusedElement\", null);\r\n        this._setSelectedItemsByValue();\r\n        if (this._widget.option(\"templatesRenderAsynchronously\")) {\r\n            this._asyncScrollTimeout = setTimeout(this._scrollToSelectedItem.bind(this))\r\n        } else {\r\n            this._scrollToSelectedItem()\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this.callBase();\r\n        clearTimeout(this._asyncScrollTimeout)\r\n    },\r\n    _updateValue: function() {\r\n        if (!this._widget) {\r\n            return\r\n        }\r\n        this._refreshItems();\r\n        this._setSelectedItemsByValue();\r\n        this._scrollToSelectedItem()\r\n    },\r\n    _setSelectedItemsByValue: function() {\r\n        var value = this.dateBoxValue();\r\n        var dateIndex = this._getDateIndex(value);\r\n        if (dateIndex === -1) {\r\n            this._widget.option(\"selectedItems\", [])\r\n        } else {\r\n            this._widget.option(\"selectedIndex\", dateIndex)\r\n        }\r\n    },\r\n    _scrollToSelectedItem: function() {\r\n        this._widget.scrollToItem(this._widget.option(\"selectedIndex\"))\r\n    },\r\n    _getDateIndex: function(date) {\r\n        var result = -1;\r\n        for (var i = 0, n = this._widgetItems.length; i < n; i++) {\r\n            if (this._areDatesEqual(date, this._widgetItems[i])) {\r\n                result = i;\r\n                break\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _areDatesEqual: function(first, second) {\r\n        return (0, _type.isDate)(first) && (0, _type.isDate)(second) && first.getHours() === second.getHours() && first.getMinutes() === second.getMinutes()\r\n    },\r\n    _getTimeListItems: function() {\r\n        var min = this.dateBox.dateOption(\"min\") || this._getBoundaryDate(\"min\");\r\n        var max = this.dateBox.dateOption(\"max\") || this._getBoundaryDate(\"max\");\r\n        var value = this.dateBox.dateOption(\"value\") || null;\r\n        var delta = max - min;\r\n        var minutes = min.getMinutes() % this.dateBox.option(\"interval\");\r\n        if (delta < 0) {\r\n            return []\r\n        }\r\n        if (delta > _ui.default.ONE_DAY) {\r\n            delta = _ui.default.ONE_DAY\r\n        }\r\n        if (value - min < _ui.default.ONE_DAY) {\r\n            return this._getRangeItems(min, new Date(min), delta)\r\n        }\r\n        min = this._getBoundaryDate(\"min\");\r\n        min.setMinutes(minutes);\r\n        if (value && Math.abs(value - max) < _ui.default.ONE_DAY) {\r\n            delta = (60 * max.getHours() + Math.abs(max.getMinutes() - minutes)) * _ui.default.ONE_MINUTE\r\n        }\r\n        return this._getRangeItems(min, new Date(min), delta)\r\n    },\r\n    _getRangeItems: function(startValue, currentValue, rangeDuration) {\r\n        var rangeItems = [];\r\n        var interval = this.dateBox.option(\"interval\");\r\n        while (currentValue - startValue <= rangeDuration) {\r\n            rangeItems.push(new Date(currentValue));\r\n            currentValue.setMinutes(currentValue.getMinutes() + interval)\r\n        }\r\n        return rangeItems\r\n    },\r\n    _getBoundaryDate: function(boundary) {\r\n        var boundaryValue = BOUNDARY_VALUES[boundary];\r\n        var currentValue = new Date((0, _common.ensureDefined)(this.dateBox.dateOption(\"value\"), 0));\r\n        return new Date(currentValue.getFullYear(), currentValue.getMonth(), currentValue.getDate(), boundaryValue.getHours(), boundaryValue.getMinutes())\r\n    },\r\n    _timeListItemTemplate: function(itemData) {\r\n        var displayFormat = this.dateBox.option(\"displayFormat\");\r\n        return _date.default.format(itemData, this.getDisplayFormat(displayFormat))\r\n    },\r\n    _listItemClickHandler: function(e) {\r\n        this.dateBox.option(\"opened\", false);\r\n        var date = this.dateBox.option(\"value\");\r\n        var itemData = e.itemData;\r\n        var hours = itemData.getHours();\r\n        var minutes = itemData.getMinutes();\r\n        var seconds = itemData.getSeconds();\r\n        var year = itemData.getFullYear();\r\n        var month = itemData.getMonth();\r\n        var day = itemData.getDate();\r\n        if (date) {\r\n            if (this.dateBox.option(\"dateSerializationFormat\")) {\r\n                date = _date_serialization.default.deserializeDate(date)\r\n            } else {\r\n                date = new Date(date)\r\n            }\r\n            date.setHours(hours);\r\n            date.setMinutes(minutes);\r\n            date.setSeconds(seconds);\r\n            date.setFullYear(year);\r\n            date.setMonth(month);\r\n            date.setDate(day)\r\n        } else {\r\n            date = new Date(year, month, day, hours, minutes, 0, 0)\r\n        }\r\n        this.dateBoxValue(date, e.event)\r\n    },\r\n    getKeyboardListener: function() {\r\n        return this._widget\r\n    },\r\n    _updatePopupHeight: function() {\r\n        var dropDownOptionsHeight = (0, _utils.getSizeValue)(this.dateBox.option(\"dropDownOptions.height\"));\r\n        if (void 0 === dropDownOptionsHeight || \"auto\" === dropDownOptionsHeight) {\r\n            this.dateBox._setPopupOption(\"height\", \"auto\");\r\n            var popupHeight = this._widget.$element().outerHeight();\r\n            var maxHeight = .45 * (0, _renderer.default)(window).height();\r\n            this.dateBox._setPopupOption(\"height\", Math.min(popupHeight, maxHeight))\r\n        }\r\n        this.dateBox._timeList && this.dateBox._timeList.updateDimensions()\r\n    },\r\n    getParsedText: function(text, format) {\r\n        var value = this.callBase(text, format);\r\n        if (value) {\r\n            value = _ui.default.mergeDates(value, new Date(null), DATE_FORMAT)\r\n        }\r\n        return value\r\n    }\r\n});\r\nvar _default = ListStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/shared/accessibility.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.subscribeVisibilityChange = subscribeVisibilityChange;\r\nexports.unsubscribeVisibilityChange = unsubscribeVisibilityChange;\r\nexports.hiddenFocus = hiddenFocus;\r\nexports.registerKeyboardAction = registerKeyboardAction;\r\nexports.restoreFocus = restoreFocus;\r\nexports.selectView = selectView;\r\nexports.setTabIndex = setTabIndex;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar FOCUS_STATE_CLASS = \"dx-state-focused\";\r\nvar FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FOCUSED_ROW_SELECTOR = \".dx-row-focused\";\r\nvar GRID_ROW_SELECTOR = \".dx-datagrid-rowsview .dx-row\";\r\nvar GRID_CELL_SELECTOR = \"\".concat(GRID_ROW_SELECTOR, \" > td\");\r\nvar TREELIST_ROW_SELECTOR = \".dx-treelist-rowsview .dx-row\";\r\nvar TREELIST_CELL_SELECTOR = \"\".concat(TREELIST_ROW_SELECTOR, \" > td\");\r\nvar viewItemSelectorMap = {\r\n    groupPanel: [\".dx-datagrid-group-panel .dx-group-panel-item[tabindex]\"],\r\n    columnHeaders: [\".dx-datagrid-headers .dx-header-row > td.dx-datagrid-action\", \".dx-treelist-headers .dx-header-row > td.dx-treelist-action\"],\r\n    filterRow: [\".dx-datagrid-headers .dx-datagrid-filter-row .dx-editor-cell .dx-texteditor-input\", \".dx-treelist-headers .dx-treelist-filter-row .dx-editor-cell .dx-texteditor-input\"],\r\n    rowsView: [\"\".concat(FOCUSED_ROW_SELECTOR), \"\".concat(GRID_ROW_SELECTOR, \"[tabindex]\"), \"\".concat(GRID_CELL_SELECTOR, \"[tabindex]\"), \"\".concat(GRID_CELL_SELECTOR), \"\".concat(TREELIST_ROW_SELECTOR, \"[tabindex]\"), \"\".concat(TREELIST_CELL_SELECTOR, \"[tabindex]\"), \"\".concat(TREELIST_CELL_SELECTOR)],\r\n    footer: [\".dx-datagrid-total-footer .dx-datagrid-summary-item\", \".dx-treelist-total-footer .dx-treelist-summary-item\"],\r\n    filterPanel: [\".dx-datagrid-filter-panel .dx-icon-filter\", \".dx-treelist-filter-panel .dx-icon-filter\"],\r\n    pager: [\".dx-datagrid-pager [tabindex]\", \".dx-treelist-pager [tabindex]\"]\r\n};\r\nvar isMouseDown = false;\r\nvar isHiddenFocusing = false;\r\nvar focusedElementInfo = null;\r\n\r\nfunction processKeyDown(viewName, instance, event, action, $mainElement, executeKeyDown) {\r\n    var isHandled = fireKeyDownEvent(instance, event.originalEvent, executeKeyDown);\r\n    if (isHandled) {\r\n        return\r\n    }\r\n    var keyName = (0, _index.normalizeKeyName)(event);\r\n    if (\"enter\" === keyName || \"space\" === keyName) {\r\n        saveFocusedElementInfo(event.target, instance);\r\n        action && action({\r\n            event: event\r\n        })\r\n    } else {\r\n        if (\"tab\" === keyName) {\r\n            $mainElement.addClass(FOCUS_STATE_CLASS)\r\n        } else {\r\n            selectView(viewName, instance, event)\r\n        }\r\n    }\r\n}\r\n\r\nfunction saveFocusedElementInfo(target, instance) {\r\n    var $target = (0, _renderer.default)(target);\r\n    var ariaLabel = $target.attr(\"aria-label\");\r\n    var $activeElements = getActiveAccessibleElements(ariaLabel, instance.element());\r\n    var targetIndex = $activeElements.index($target);\r\n    focusedElementInfo = (0, _extend.extend)({}, {\r\n        ariaLabel: ariaLabel,\r\n        index: targetIndex\r\n    }, {\r\n        viewInstance: instance\r\n    })\r\n}\r\n\r\nfunction getActiveAccessibleElements(ariaLabel, viewElement) {\r\n    var $viewElement = (0, _renderer.default)(viewElement);\r\n    var $activeElements;\r\n    if (ariaLabel) {\r\n        $activeElements = $viewElement.find('[aria-label=\"'.concat(ariaLabel, '\"][tabindex]'))\r\n    } else {\r\n        $activeElements = $viewElement.find(\"[tabindex]\")\r\n    }\r\n    return $activeElements\r\n}\r\n\r\nfunction findFocusedViewElement(viewSelectors) {\r\n    for (var index in viewSelectors) {\r\n        var selector = viewSelectors[index];\r\n        var $focusViewElement = (0, _renderer.default)(selector).first();\r\n        if ($focusViewElement.length) {\r\n            return $focusViewElement\r\n        }\r\n    }\r\n}\r\n\r\nfunction fireKeyDownEvent(instance, event, executeAction) {\r\n    var args = {\r\n        event: event,\r\n        handled: false\r\n    };\r\n    if (executeAction) {\r\n        executeAction(args)\r\n    } else {\r\n        instance._createActionByOption(\"onKeyDown\")(args)\r\n    }\r\n    return args.handled\r\n}\r\n\r\nfunction onDocumentVisibilityChange() {\r\n    isHiddenFocusing = \"visible\" === _dom_adapter.default.getDocument().visibilityState\r\n}\r\n\r\nfunction subscribeVisibilityChange() {\r\n    _events_engine.default.on(_dom_adapter.default.getDocument(), \"visibilitychange\", onDocumentVisibilityChange)\r\n}\r\n\r\nfunction unsubscribeVisibilityChange() {\r\n    _events_engine.default.off(_dom_adapter.default.getDocument(), \"visibilitychange\", onDocumentVisibilityChange)\r\n}\r\n\r\nfunction hiddenFocus(element) {\r\n    isHiddenFocusing = true;\r\n    element.focus();\r\n    isHiddenFocusing = false\r\n}\r\n\r\nfunction registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown) {\r\n    if (instance.option(\"useLegacyKeyboardNavigation\")) {\r\n        return _common.noop\r\n    }\r\n    var $mainElement = (0, _renderer.default)(instance.element());\r\n    var keyDownHandler = function(e) {\r\n        return processKeyDown(viewName, instance, e, action, $mainElement, executeKeyDown)\r\n    };\r\n    var mouseDownHandler = function() {\r\n        isMouseDown = true;\r\n        $mainElement.removeClass(FOCUS_STATE_CLASS)\r\n    };\r\n    var focusinHandler = function() {\r\n        var needShowOverlay = !isMouseDown && !isHiddenFocusing;\r\n        if (needShowOverlay) {\r\n            $mainElement.addClass(FOCUS_STATE_CLASS)\r\n        }\r\n        isMouseDown = false\r\n    };\r\n    _events_engine.default.on($element, \"keydown\", selector, keyDownHandler);\r\n    _events_engine.default.on($element, \"mousedown\", selector, mouseDownHandler);\r\n    _events_engine.default.on($element, \"focusin\", selector, focusinHandler);\r\n    return function() {\r\n        _events_engine.default.off($element, \"keydown\", selector, keyDownHandler);\r\n        _events_engine.default.off($element, \"mousedown\", selector, mouseDownHandler);\r\n        _events_engine.default.off($element, \"focusin\", selector, focusinHandler)\r\n    }\r\n}\r\n\r\nfunction restoreFocus(instance) {\r\n    if (!instance.option(\"useLegacyKeyboardNavigation\") && focusedElementInfo) {\r\n        var viewInstance = focusedElementInfo.viewInstance;\r\n        if (viewInstance) {\r\n            var $activeElements = getActiveAccessibleElements(focusedElementInfo.ariaLabel, viewInstance.element());\r\n            var $targetElement = $activeElements.eq(focusedElementInfo.index);\r\n            focusedElementInfo = null;\r\n            _events_engine.default.trigger($targetElement, \"focus\")\r\n        }\r\n    }\r\n}\r\n\r\nfunction selectView(viewName, instance, event) {\r\n    var keyName = (0, _index.normalizeKeyName)(event);\r\n    if (event.ctrlKey && (\"upArrow\" === keyName || \"downArrow\" === keyName)) {\r\n        var viewNames = Object.keys(viewItemSelectorMap);\r\n        var viewItemIndex = viewNames.indexOf(viewName);\r\n        while (viewItemIndex >= 0 && viewItemIndex < viewNames.length) {\r\n            viewItemIndex = \"upArrow\" === keyName ? --viewItemIndex : ++viewItemIndex;\r\n            var _viewName = viewNames[viewItemIndex];\r\n            var viewSelectors = viewItemSelectorMap[_viewName];\r\n            var $focusViewElement = findFocusedViewElement(viewSelectors);\r\n            if ($focusViewElement && $focusViewElement.length) {\r\n                $focusViewElement.attr(\"tabindex\", instance.option(\"tabindex\") || 0);\r\n                _events_engine.default.trigger($focusViewElement, \"focus\");\r\n                $focusViewElement.removeClass(FOCUS_DISABLED_CLASS);\r\n                break\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction setTabIndex(instance, $element) {\r\n    if (!instance.option(\"useLegacyKeyboardnavigation\")) {\r\n        $element.attr(\"tabindex\", instance.option(\"tabindex\") || 0)\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (viz/vector_map/tracker.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Tracker = Tracker;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _event_emitter = require(\"./event_emitter\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar navigator = (0, _window.getNavigator)();\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _sqrt = _math.sqrt;\r\nvar _round = _math.round;\r\nvar _addNamespace = _index.addNamespace;\r\nvar _NAME = \"dxVectorMap\";\r\nvar EVENT_START = \"start\";\r\nvar EVENT_MOVE = \"move\";\r\nvar EVENT_END = \"end\";\r\nvar EVENT_ZOOM = \"zoom\";\r\nvar EVENT_HOVER_ON = \"hover-on\";\r\nvar EVENT_HOVER_OFF = \"hover-off\";\r\nvar EVENT_CLICK = \"click\";\r\nvar EVENT_FOCUS_ON = \"focus-on\";\r\nvar EVENT_FOCUS_MOVE = \"focus-move\";\r\nvar EVENT_FOCUS_OFF = \"focus-off\";\r\nvar CLICK_TIME_THRESHOLD = 500;\r\nvar CLICK_COORD_THRESHOLD_MOUSE = 5;\r\nvar CLICK_COORD_THRESHOLD_TOUCH = 20;\r\nvar DRAG_COORD_THRESHOLD_MOUSE = 5;\r\nvar DRAG_COORD_THRESHOLD_TOUCH = 10;\r\nvar FOCUS_OFF_DELAY = 100;\r\nvar WHEEL_COOLDOWN = 50;\r\nvar WHEEL_DIRECTION_COOLDOWN = 300;\r\nvar EVENTS;\r\nvar Focus;\r\nsetupEvents();\r\n\r\nfunction Tracker(parameters) {\r\n    var that = this;\r\n    that._root = parameters.root;\r\n    that._createEventHandlers(parameters.dataKey);\r\n    that._createProjectionHandlers(parameters.projection);\r\n    that._initEvents();\r\n    that._focus = new Focus(function(name, arg) {\r\n        that._fire(name, arg)\r\n    });\r\n    that._attachHandlers()\r\n}\r\nTracker.prototype = {\r\n    constructor: Tracker,\r\n    dispose: function() {\r\n        var that = this;\r\n        that._detachHandlers();\r\n        that._disposeEvents();\r\n        that._focus.dispose();\r\n        that._root = that._focus = that._docHandlers = that._rootHandlers = null\r\n    },\r\n    _eventNames: [EVENT_START, EVENT_MOVE, EVENT_END, EVENT_ZOOM, EVENT_CLICK, EVENT_HOVER_ON, EVENT_HOVER_OFF, EVENT_FOCUS_ON, EVENT_FOCUS_OFF, EVENT_FOCUS_MOVE],\r\n    _startClick: function(event, data) {\r\n        if (!data) {\r\n            return\r\n        }\r\n        var coords = getEventCoords(event);\r\n        this._clickState = {\r\n            x: coords.x,\r\n            y: coords.y,\r\n            threshold: isTouchEvent(event) ? CLICK_COORD_THRESHOLD_TOUCH : CLICK_COORD_THRESHOLD_MOUSE,\r\n            time: Date.now()\r\n        }\r\n    },\r\n    _endClick: function(event, data) {\r\n        var state = this._clickState;\r\n        var threshold;\r\n        var coords;\r\n        if (!state) {\r\n            return\r\n        }\r\n        if (data && Date.now() - state.time <= CLICK_TIME_THRESHOLD) {\r\n            threshold = state.threshold;\r\n            coords = getEventCoords(event);\r\n            if (_abs(coords.x - state.x) <= threshold && _abs(coords.y - state.y) <= threshold) {\r\n                this._fire(EVENT_CLICK, {\r\n                    data: data,\r\n                    x: coords.x,\r\n                    y: coords.y,\r\n                    $event: event\r\n                })\r\n            }\r\n        }\r\n        this._clickState = null\r\n    },\r\n    _startDrag: function(event, data) {\r\n        if (!data) {\r\n            return\r\n        }\r\n        var coords = getEventCoords(event);\r\n        var state = this._dragState = {\r\n            x: coords.x,\r\n            y: coords.y,\r\n            data: data\r\n        };\r\n        this._fire(EVENT_START, {\r\n            x: state.x,\r\n            y: state.y,\r\n            data: state.data\r\n        })\r\n    },\r\n    _moveDrag: function(event, data) {\r\n        var state = this._dragState;\r\n        if (!state) {\r\n            return\r\n        }\r\n        var coords = getEventCoords(event);\r\n        var threshold = isTouchEvent(event) ? DRAG_COORD_THRESHOLD_TOUCH : DRAG_COORD_THRESHOLD_MOUSE;\r\n        if (state.active || _abs(coords.x - state.x) > threshold || _abs(coords.y - state.y) > threshold) {\r\n            state.x = coords.x;\r\n            state.y = coords.y;\r\n            state.active = true;\r\n            state.data = data || {};\r\n            this._fire(EVENT_MOVE, {\r\n                x: state.x,\r\n                y: state.y,\r\n                data: state.data\r\n            })\r\n        }\r\n    },\r\n    _endDrag: function() {\r\n        var state = this._dragState;\r\n        if (!state) {\r\n            return\r\n        }\r\n        this._dragState = null;\r\n        this._fire(EVENT_END, {\r\n            x: state.x,\r\n            y: state.y,\r\n            data: state.data\r\n        })\r\n    },\r\n    _wheelZoom: function(event, data) {\r\n        if (!data) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var lock = that._wheelLock;\r\n        var time = Date.now();\r\n        if (time - lock.time <= WHEEL_COOLDOWN) {\r\n            return\r\n        }\r\n        if (time - lock.dirTime > WHEEL_DIRECTION_COOLDOWN) {\r\n            lock.dir = 0\r\n        }\r\n        var delta = adjustWheelDelta(event.delta / 120 || 0, lock);\r\n        if (0 === delta) {\r\n            return\r\n        }\r\n        var coords = getEventCoords(event);\r\n        that._fire(EVENT_ZOOM, {\r\n            delta: delta,\r\n            x: coords.x,\r\n            y: coords.y\r\n        });\r\n        lock.time = lock.dirTime = time\r\n    },\r\n    _startZoom: function(event, data) {\r\n        if (!isTouchEvent(event) || !data) {\r\n            return\r\n        }\r\n        var state = this._zoomState = this._zoomState || {};\r\n        var coords;\r\n        var pointer2;\r\n        if (state.pointer1 && state.pointer2) {\r\n            return\r\n        }\r\n        if (void 0 === state.pointer1) {\r\n            state.pointer1 = getPointerId(event) || 0;\r\n            coords = getMultitouchEventCoords(event, state.pointer1);\r\n            state.x1 = state.x1_0 = coords.x;\r\n            state.y1 = state.y1_0 = coords.y\r\n        }\r\n        if (void 0 === state.pointer2) {\r\n            pointer2 = getPointerId(event) || 1;\r\n            if (pointer2 !== state.pointer1) {\r\n                coords = getMultitouchEventCoords(event, pointer2);\r\n                if (coords) {\r\n                    state.x2 = state.x2_0 = coords.x;\r\n                    state.y2 = state.y2_0 = coords.y;\r\n                    state.pointer2 = pointer2;\r\n                    state.ready = true;\r\n                    this._endDrag()\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _moveZoom: function(event) {\r\n        var state = this._zoomState;\r\n        var coords;\r\n        if (!state || !isTouchEvent(event)) {\r\n            return\r\n        }\r\n        if (void 0 !== state.pointer1) {\r\n            coords = getMultitouchEventCoords(event, state.pointer1);\r\n            if (coords) {\r\n                state.x1 = coords.x;\r\n                state.y1 = coords.y\r\n            }\r\n        }\r\n        if (void 0 !== state.pointer2) {\r\n            coords = getMultitouchEventCoords(event, state.pointer2);\r\n            if (coords) {\r\n                state.x2 = coords.x;\r\n                state.y2 = coords.y\r\n            }\r\n        }\r\n    },\r\n    _endZoom: function(event) {\r\n        var state = this._zoomState;\r\n        var startDistance;\r\n        var currentDistance;\r\n        if (!state || !isTouchEvent(event)) {\r\n            return\r\n        }\r\n        if (state.ready) {\r\n            startDistance = getDistance(state.x1_0, state.y1_0, state.x2_0, state.y2_0);\r\n            currentDistance = getDistance(state.x1, state.y1, state.x2, state.y2);\r\n            this._fire(EVENT_ZOOM, {\r\n                ratio: currentDistance / startDistance,\r\n                x: (state.x1_0 + state.x2_0) / 2,\r\n                y: (state.y1_0 + state.y2_0) / 2\r\n            })\r\n        }\r\n        this._zoomState = null\r\n    },\r\n    _startHover: function(event, data) {\r\n        this._doHover(event, data, true)\r\n    },\r\n    _moveHover: function(event, data) {\r\n        this._doHover(event, data, false)\r\n    },\r\n    _doHover: function(event, data, isTouch) {\r\n        var that = this;\r\n        if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {\r\n            that._cancelHover();\r\n            return\r\n        }\r\n        if (isTouchEvent(event) !== isTouch || that._hoverTarget === event.target || that._hoverState && that._hoverState.data === data) {\r\n            return\r\n        }\r\n        that._cancelHover();\r\n        if (data) {\r\n            that._hoverState = {\r\n                data: data\r\n            };\r\n            that._fire(EVENT_HOVER_ON, {\r\n                data: data\r\n            })\r\n        }\r\n        that._hoverTarget = event.target\r\n    },\r\n    _cancelHover: function() {\r\n        var state = this._hoverState;\r\n        this._hoverState = this._hoverTarget = null;\r\n        if (state) {\r\n            this._fire(EVENT_HOVER_OFF, {\r\n                data: state.data\r\n            })\r\n        }\r\n    },\r\n    _startFocus: function(event, data) {\r\n        this._doFocus(event, data, true)\r\n    },\r\n    _moveFocus: function(event, data) {\r\n        this._doFocus(event, data, false)\r\n    },\r\n    _doFocus: function(event, data, isTouch) {\r\n        var that = this;\r\n        if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {\r\n            that._cancelFocus();\r\n            return\r\n        }\r\n        if (isTouchEvent(event) !== isTouch) {\r\n            return\r\n        }\r\n        that._focus.turnOff();\r\n        data && that._focus.turnOn(data, getEventCoords(event))\r\n    },\r\n    _cancelFocus: function() {\r\n        this._focus.cancel()\r\n    },\r\n    _createEventHandlers: function(DATA_KEY) {\r\n        var that = this;\r\n        that._docHandlers = {};\r\n        that._rootHandlers = {};\r\n        that._rootHandlers[EVENTS.start] = that._docHandlers[EVENTS.start] = function(event) {\r\n            var isTouch = isTouchEvent(event);\r\n            var data = getData(event);\r\n            if (isTouch && !that._isTouchEnabled) {\r\n                return\r\n            }\r\n            if (data) {\r\n                event.preventDefault();\r\n                event.stopPropagation()\r\n            }\r\n            that._startClick(event, data);\r\n            that._startDrag(event, data);\r\n            that._startZoom(event, data);\r\n            that._startHover(event, data);\r\n            that._startFocus(event, data)\r\n        };\r\n        that._docHandlers[EVENTS.move] = function(event) {\r\n            var isTouch = isTouchEvent(event);\r\n            var data = getData(event);\r\n            if (isTouch && !that._isTouchEnabled) {\r\n                return\r\n            }\r\n            that._moveDrag(event, data);\r\n            that._moveZoom(event, data);\r\n            that._moveHover(event, data);\r\n            that._moveFocus(event, data)\r\n        };\r\n        that._docHandlers[EVENTS.end] = function(event) {\r\n            var isTouch = isTouchEvent(event);\r\n            var data = getData(event);\r\n            if (isTouch && !that._isTouchEnabled) {\r\n                return\r\n            }\r\n            that._endClick(event, data);\r\n            that._endDrag(event, data);\r\n            that._endZoom(event, data)\r\n        };\r\n        that._rootHandlers[EVENTS.wheel] = function(event) {\r\n            that._cancelFocus();\r\n            if (!that._isWheelEnabled) {\r\n                return\r\n            }\r\n            var data = getData(event);\r\n            if (data) {\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n                that._wheelZoom(event, data)\r\n            }\r\n        };\r\n        that._wheelLock = {\r\n            dir: 0\r\n        };\r\n\r\n        function getData(event) {\r\n            var target = event.target;\r\n            return (\"tspan\" === target.tagName ? target.parentNode : target)[DATA_KEY]\r\n        }\r\n    },\r\n    _createProjectionHandlers: function(projection) {\r\n        var that = this;\r\n        projection.on({\r\n            center: handler,\r\n            zoom: handler\r\n        });\r\n\r\n        function handler() {\r\n            that._cancelFocus()\r\n        }\r\n    },\r\n    reset: function() {\r\n        var that = this;\r\n        that._clickState = null;\r\n        that._endDrag();\r\n        that._cancelHover();\r\n        that._cancelFocus()\r\n    },\r\n    setOptions: function(options) {\r\n        var that = this;\r\n        that.reset();\r\n        that._detachHandlers();\r\n        that._isTouchEnabled = !!(0, _utils.parseScalar)(options.touchEnabled, true);\r\n        that._isWheelEnabled = !!(0, _utils.parseScalar)(options.wheelEnabled, true);\r\n        that._attachHandlers()\r\n    },\r\n    _detachHandlers: function() {\r\n        var that = this;\r\n        if (that._isTouchEnabled) {\r\n            that._root.css({\r\n                \"touch-action\": \"\",\r\n                \"-webkit-user-select\": \"\"\r\n            }).off(_addNamespace(\"MSHoldVisual\", _NAME)).off(_addNamespace(\"contextmenu\", _NAME))\r\n        }\r\n        _events_engine.default.off(_dom_adapter.default.getDocument(), that._docHandlers);\r\n        that._root.off(that._rootHandlers)\r\n    },\r\n    _attachHandlers: function() {\r\n        var that = this;\r\n        if (that._isTouchEnabled) {\r\n            that._root.css({\r\n                \"touch-action\": \"none\",\r\n                \"-webkit-user-select\": \"none\"\r\n            }).on(_addNamespace(\"MSHoldVisual\", _NAME), function(event) {\r\n                event.preventDefault()\r\n            }).on(_addNamespace(\"contextmenu\", _NAME), function(event) {\r\n                isTouchEvent(event) && event.preventDefault()\r\n            })\r\n        }\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), that._docHandlers);\r\n        that._root.on(that._rootHandlers)\r\n    }\r\n};\r\nFocus = function(fire) {\r\n    var that = this;\r\n    var _activeData = null;\r\n    var _data = null;\r\n    var _disabled = false;\r\n    var _offTimer = null;\r\n    var _x;\r\n    var _y;\r\n    that.dispose = function() {\r\n        clearTimeout(_offTimer);\r\n        that.turnOn = that.turnOff = that.cancel = that.dispose = that = fire = _activeData = _data = _offTimer = null\r\n    };\r\n    that.turnOn = function(data, coords) {\r\n        if (data === _data && _disabled) {\r\n            return\r\n        }\r\n        _disabled = false;\r\n        _data = data;\r\n        if (_activeData) {\r\n            _x = coords.x;\r\n            _y = coords.y;\r\n            if (_data === _activeData) {\r\n                fire(EVENT_FOCUS_MOVE, {\r\n                    data: _data,\r\n                    x: _x,\r\n                    y: _y\r\n                });\r\n                onCheck(true)\r\n            } else {\r\n                fire(EVENT_FOCUS_ON, {\r\n                    data: _data,\r\n                    x: _x,\r\n                    y: _y,\r\n                    done: onCheck\r\n                })\r\n            }\r\n        } else {\r\n            _x = coords.x;\r\n            _y = coords.y;\r\n            fire(EVENT_FOCUS_ON, {\r\n                data: _data,\r\n                x: _x,\r\n                y: _y,\r\n                done: onCheck\r\n            })\r\n        }\r\n\r\n        function onCheck(result) {\r\n            _disabled = !result;\r\n            if (result) {\r\n                _activeData = _data;\r\n                clearTimeout(_offTimer);\r\n                _offTimer = null\r\n            }\r\n        }\r\n    };\r\n    that.turnOff = function() {\r\n        _data = null;\r\n        if (_activeData && !_disabled) {\r\n            _offTimer = _offTimer || setTimeout(function() {\r\n                _offTimer = null;\r\n                fire(EVENT_FOCUS_OFF, {\r\n                    data: _activeData\r\n                });\r\n                _activeData = null\r\n            }, FOCUS_OFF_DELAY)\r\n        }\r\n    };\r\n    that.cancel = function() {\r\n        clearTimeout(_offTimer);\r\n        if (_activeData) {\r\n            fire(EVENT_FOCUS_OFF, {\r\n                data: _activeData\r\n            })\r\n        }\r\n        _activeData = _data = _offTimer = null\r\n    }\r\n};\r\n(0, _event_emitter.makeEventEmitter)(Tracker);\r\n\r\nfunction getDistance(x1, y1, x2, y2) {\r\n    return _sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))\r\n}\r\n\r\nfunction isTouchEvent(event) {\r\n    var type = event.originalEvent.type;\r\n    var pointerType = event.originalEvent.pointerType;\r\n    return /^touch/.test(type) || /^MSPointer/.test(type) && 4 !== pointerType || /^pointer/.test(type) && \"mouse\" !== pointerType\r\n}\r\n\r\nfunction selectItem(flags, items) {\r\n    var i = 0;\r\n    var ii = flags.length;\r\n    var item;\r\n    for (; i < ii; ++i) {\r\n        if (flags[i]) {\r\n            item = items[i];\r\n            break\r\n        }\r\n    }\r\n    return _addNamespace(item || items[i], _NAME)\r\n}\r\n\r\nfunction setupEvents() {\r\n    var flags = [navigator.pointerEnabled, navigator.msPointerEnabled, (0, _window.hasProperty)(\"ontouchstart\")];\r\n    EVENTS = {\r\n        start: selectItem(flags, [\"pointerdown\", \"MSPointerDown\", \"touchstart mousedown\", \"mousedown\"]),\r\n        move: selectItem(flags, [\"pointermove\", \"MSPointerMove\", \"touchmove mousemove\", \"mousemove\"]),\r\n        end: selectItem(flags, [\"pointerup\", \"MSPointerUp\", \"touchend mouseup\", \"mouseup\"]),\r\n        wheel: _addNamespace(_wheel.name, _NAME)\r\n    }\r\n}\r\n\r\nfunction getEventCoords(event) {\r\n    var originalEvent = event.originalEvent;\r\n    var touch = originalEvent.touches && originalEvent.touches[0] || {};\r\n    return {\r\n        x: touch.pageX || originalEvent.pageX || event.pageX,\r\n        y: touch.pageY || originalEvent.pageY || event.pageY\r\n    }\r\n}\r\n\r\nfunction getPointerId(event) {\r\n    return event.originalEvent.pointerId\r\n}\r\n\r\nfunction getMultitouchEventCoords(event, pointerId) {\r\n    var originalEvent = event.originalEvent;\r\n    if (void 0 !== originalEvent.pointerId) {\r\n        originalEvent = originalEvent.pointerId === pointerId ? originalEvent : null\r\n    } else {\r\n        originalEvent = originalEvent.touches[pointerId]\r\n    }\r\n    return originalEvent ? {\r\n        x: originalEvent.pageX || event.pageX,\r\n        y: originalEvent.pageY || event.pageY\r\n    } : null\r\n}\r\n\r\nfunction adjustWheelDelta(delta, lock) {\r\n    if (0 === delta) {\r\n        return 0\r\n    }\r\n    var _delta = _abs(delta);\r\n    var sign = _round(delta / _delta);\r\n    if (lock.dir && sign !== lock.dir) {\r\n        return 0\r\n    }\r\n    lock.dir = sign;\r\n    if (_delta < .1) {\r\n        _delta = 0\r\n    } else {\r\n        if (_delta < 1) {\r\n            _delta = 1\r\n        } else {\r\n            if (_delta > 4) {\r\n                _delta = 4\r\n            } else {\r\n                _delta = _round(_delta)\r\n            }\r\n        }\r\n    }\r\n    return sign * _delta\r\n}\r\n","/**\r\n * DevExtreme (data/errors.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _error = _interopRequireDefault(require(\"../core/utils/error\"));\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar handlers = {};\r\nvar errors = (0, _error.default)(_errors.default.ERROR_MESSAGES, {\r\n    E4000: \"[DevExpress.data]: {0}\",\r\n    E4001: \"Unknown aggregating function is detected: '{0}'\",\r\n    E4002: \"Unsupported OData protocol version is used\",\r\n    E4003: \"Unknown filter operation is used: {0}\",\r\n    E4004: \"The thenby() method is called before the sortby() method\",\r\n    E4005: \"Store requires a key expression for this operation\",\r\n    E4006: \"ArrayStore 'data' option must be an array\",\r\n    E4007: \"Compound keys cannot be auto-generated\",\r\n    E4008: \"Attempt to insert an item with a duplicated key\",\r\n    E4009: \"Data item cannot be found\",\r\n    E4010: \"CustomStore does not support creating queries\",\r\n    E4011: \"Custom Store method is not implemented or is not a function: {0}\",\r\n    E4012: \"Custom Store method returns an invalid value: {0}\",\r\n    E4013: \"Local Store requires the 'name' configuration option is specified\",\r\n    E4014: \"Unknown data type is specified for ODataStore: {0}\",\r\n    E4015: \"Unknown entity name or alias is used: {0}\",\r\n    E4016: \"The compileSetter(expr) method is called with 'self' passed as a parameter\",\r\n    E4017: \"Keys cannot be modified\",\r\n    E4018: \"The server has returned a non-numeric value in a response to an item count request\",\r\n    E4019: \"Mixing of group operators inside a single group of filter expression is not allowed\",\r\n    E4020: \"Unknown store type is detected: {0}\",\r\n    E4021: \"The server response does not provide the totalCount value\",\r\n    E4022: \"The server response does not provide the groupCount value\",\r\n    E4023: \"Could not parse the following XML: {0}\",\r\n    E4024: \"String function {0} cannot be used with the data field {1} of type {2}.\",\r\n    W4000: \"Data returned from the server has an incorrect structure\",\r\n    W4001: 'The {0} field is listed in both \"keyType\" and \"fieldTypes\". The value of \"fieldTypes\" is used.',\r\n    W4002: \"Data loading has failed for some cells due to the following error: {0}\"\r\n});\r\n\r\nfunction handleError(error) {\r\n    var id = \"E4000\";\r\n    if (error && \"__id\" in error) {\r\n        id = error.__id\r\n    }\r\n    errors.log(id, error)\r\n}\r\nvar errorHandler = null;\r\nvar _errorHandler = function(error) {\r\n    if (handlers.errorHandler) {\r\n        handlers.errorHandler(error)\r\n    }\r\n};\r\nhandlers = {\r\n    errors: errors,\r\n    errorHandler: errorHandler,\r\n    _errorHandler: _errorHandler\r\n};\r\nvar _default = handlers;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/core/emitter_registrator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _event_registrator = _interopRequireDefault(require(\"./event_registrator\"));\r\nvar _index = require(\"../utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../pointer\"));\r\nvar _wheel = require(\"./wheel\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar MANAGER_EVENT = \"dxEventManager\";\r\nvar EMITTER_DATA = \"dxEmitter\";\r\nvar EventManager = _class.default.inherit({\r\n    ctor: function() {\r\n        this._attachHandlers();\r\n        this.reset();\r\n        this._proxiedCancelHandler = this._cancelHandler.bind(this);\r\n        this._proxiedAcceptHandler = this._acceptHandler.bind(this)\r\n    },\r\n    _attachHandlers: function() {\r\n        _ready_callbacks.default.add(function() {\r\n            var document = _dom_adapter.default.getDocument();\r\n            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.down, MANAGER_EVENT), this._pointerDownHandler.bind(this));\r\n            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.move, MANAGER_EVENT), this._pointerMoveHandler.bind(this));\r\n            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)([_pointer.default.up, _pointer.default.cancel].join(\" \"), MANAGER_EVENT), this._pointerUpHandler.bind(this));\r\n            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_wheel.name, MANAGER_EVENT), this._mouseWheelHandler.bind(this))\r\n        }.bind(this))\r\n    },\r\n    _eachEmitter: function(callback) {\r\n        var activeEmitters = this._activeEmitters || [];\r\n        var i = 0;\r\n        while (activeEmitters.length > i) {\r\n            var emitter = activeEmitters[i];\r\n            if (false === callback(emitter)) {\r\n                break\r\n            }\r\n            if (activeEmitters[i] === emitter) {\r\n                i++\r\n            }\r\n        }\r\n    },\r\n    _applyToEmitters: function(method, arg) {\r\n        this._eachEmitter(function(emitter) {\r\n            emitter[method].call(emitter, arg)\r\n        })\r\n    },\r\n    reset: function() {\r\n        this._eachEmitter(this._proxiedCancelHandler);\r\n        this._activeEmitters = []\r\n    },\r\n    resetEmitter: function(emitter) {\r\n        this._proxiedCancelHandler(emitter)\r\n    },\r\n    _pointerDownHandler: function(e) {\r\n        if ((0, _index.isMouseEvent)(e) && e.which > 1) {\r\n            return\r\n        }\r\n        this._updateEmitters(e)\r\n    },\r\n    _updateEmitters: function(e) {\r\n        if (!this._isSetChanged(e)) {\r\n            return\r\n        }\r\n        this._cleanEmitters(e);\r\n        this._fetchEmitters(e)\r\n    },\r\n    _isSetChanged: function(e) {\r\n        var currentSet = this._closestEmitter(e);\r\n        var previousSet = this._emittersSet || [];\r\n        var setChanged = currentSet.length !== previousSet.length;\r\n        (0, _iterator.each)(currentSet, function(index, emitter) {\r\n            setChanged = setChanged || previousSet[index] !== emitter;\r\n            return !setChanged\r\n        });\r\n        this._emittersSet = currentSet;\r\n        return setChanged\r\n    },\r\n    _closestEmitter: function(e) {\r\n        var that = this;\r\n        var result = [];\r\n        var $element = (0, _renderer.default)(e.target);\r\n\r\n        function handleEmitter(_, emitter) {\r\n            if (!!emitter && emitter.validatePointers(e) && emitter.validate(e)) {\r\n                emitter.addCancelCallback(that._proxiedCancelHandler);\r\n                emitter.addAcceptCallback(that._proxiedAcceptHandler);\r\n                result.push(emitter)\r\n            }\r\n        }\r\n        while ($element.length) {\r\n            var emitters = (0, _element_data.data)($element.get(0), EMITTER_DATA) || [];\r\n            (0, _iterator.each)(emitters, handleEmitter);\r\n            $element = $element.parent()\r\n        }\r\n        return result\r\n    },\r\n    _acceptHandler: function(acceptedEmitter, e) {\r\n        var that = this;\r\n        this._eachEmitter(function(emitter) {\r\n            if (emitter !== acceptedEmitter) {\r\n                that._cancelEmitter(emitter, e)\r\n            }\r\n        })\r\n    },\r\n    _cancelHandler: function(canceledEmitter, e) {\r\n        this._cancelEmitter(canceledEmitter, e)\r\n    },\r\n    _cancelEmitter: function(emitter, e) {\r\n        var activeEmitters = this._activeEmitters;\r\n        if (e) {\r\n            emitter.cancel(e)\r\n        } else {\r\n            emitter.reset()\r\n        }\r\n        emitter.removeCancelCallback();\r\n        emitter.removeAcceptCallback();\r\n        var emitterIndex = (0, _array.inArray)(emitter, activeEmitters);\r\n        if (emitterIndex > -1) {\r\n            activeEmitters.splice(emitterIndex, 1)\r\n        }\r\n    },\r\n    _cleanEmitters: function(e) {\r\n        this._applyToEmitters(\"end\", e);\r\n        this.reset(e)\r\n    },\r\n    _fetchEmitters: function(e) {\r\n        this._activeEmitters = this._emittersSet.slice();\r\n        this._applyToEmitters(\"start\", e)\r\n    },\r\n    _pointerMoveHandler: function(e) {\r\n        this._applyToEmitters(\"move\", e)\r\n    },\r\n    _pointerUpHandler: function(e) {\r\n        this._updateEmitters(e)\r\n    },\r\n    _mouseWheelHandler: function(e) {\r\n        if (!this._allowInterruptionByMouseWheel()) {\r\n            return\r\n        }\r\n        e.pointers = [null];\r\n        this._pointerDownHandler(e);\r\n        this._adjustWheelEvent(e);\r\n        this._pointerMoveHandler(e);\r\n        e.pointers = [];\r\n        this._pointerUpHandler(e)\r\n    },\r\n    _allowInterruptionByMouseWheel: function() {\r\n        var allowInterruption = true;\r\n        this._eachEmitter(function(emitter) {\r\n            allowInterruption = emitter.allowInterruptionByMouseWheel() && allowInterruption;\r\n            return allowInterruption\r\n        });\r\n        return allowInterruption\r\n    },\r\n    _adjustWheelEvent: function(e) {\r\n        var closestGestureEmitter = null;\r\n        this._eachEmitter(function(emitter) {\r\n            if (!emitter.gesture) {\r\n                return\r\n            }\r\n            var direction = emitter.getDirection(e);\r\n            if (\"horizontal\" !== direction && !e.shiftKey || \"vertical\" !== direction && e.shiftKey) {\r\n                closestGestureEmitter = emitter;\r\n                return false\r\n            }\r\n        });\r\n        if (!closestGestureEmitter) {\r\n            return\r\n        }\r\n        var direction = closestGestureEmitter.getDirection(e);\r\n        var verticalGestureDirection = \"both\" === direction && !e.shiftKey || \"vertical\" === direction;\r\n        var prop = verticalGestureDirection ? \"pageY\" : \"pageX\";\r\n        e[prop] += e.delta\r\n    },\r\n    isActive: function(element) {\r\n        var result = false;\r\n        this._eachEmitter(function(emitter) {\r\n            result = result || emitter.getElement().is(element)\r\n        });\r\n        return result\r\n    }\r\n});\r\nvar eventManager = new EventManager;\r\nvar EMITTER_SUBSCRIPTION_DATA = \"dxEmitterSubscription\";\r\nvar registerEmitter = function(emitterConfig) {\r\n    var emitterClass = emitterConfig.emitter;\r\n    var emitterName = emitterConfig.events[0];\r\n    var emitterEvents = emitterConfig.events;\r\n    (0, _iterator.each)(emitterEvents, function(_, eventName) {\r\n        (0, _event_registrator.default)(eventName, {\r\n            noBubble: !emitterConfig.bubble,\r\n            setup: function(element) {\r\n                var subscriptions = (0, _element_data.data)(element, EMITTER_SUBSCRIPTION_DATA) || {};\r\n                var emitters = (0, _element_data.data)(element, EMITTER_DATA) || {};\r\n                var emitter = emitters[emitterName] || new emitterClass(element);\r\n                subscriptions[eventName] = true;\r\n                emitters[emitterName] = emitter;\r\n                (0, _element_data.data)(element, EMITTER_DATA, emitters);\r\n                (0, _element_data.data)(element, EMITTER_SUBSCRIPTION_DATA, subscriptions)\r\n            },\r\n            add: function(element, handleObj) {\r\n                var emitters = (0, _element_data.data)(element, EMITTER_DATA);\r\n                var emitter = emitters[emitterName];\r\n                emitter.configure((0, _extend.extend)({\r\n                    delegateSelector: handleObj.selector\r\n                }, handleObj.data), handleObj.type)\r\n            },\r\n            teardown: function(element) {\r\n                var subscriptions = (0, _element_data.data)(element, EMITTER_SUBSCRIPTION_DATA);\r\n                var emitters = (0, _element_data.data)(element, EMITTER_DATA);\r\n                var emitter = emitters[emitterName];\r\n                delete subscriptions[eventName];\r\n                var disposeEmitter = true;\r\n                (0, _iterator.each)(emitterEvents, function(_, eventName) {\r\n                    disposeEmitter = disposeEmitter && !subscriptions[eventName];\r\n                    return disposeEmitter\r\n                });\r\n                if (disposeEmitter) {\r\n                    if (eventManager.isActive(element)) {\r\n                        eventManager.resetEmitter(emitter)\r\n                    }\r\n                    emitter && emitter.dispose();\r\n                    delete emitters[emitterName]\r\n                }\r\n            }\r\n        })\r\n    })\r\n};\r\nvar _default = registerEmitter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollable.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _element = require(\"../../core/element\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiEventsEmitterGesture = _interopRequireDefault(require(\"./ui.events.emitter.gesture.scroll\"));\r\nvar _uiScrollable = require(\"./ui.scrollable.simulated\");\r\nvar _uiScrollable2 = _interopRequireDefault(require(\"./ui.scrollable.native\"));\r\nvar _uiScrollable3 = require(\"./ui.scrollable.device\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCROLLABLE = \"dxScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_CLASS = \"dx-scrollable\";\r\nvar SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nvar SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar BOTH = \"both\";\r\nvar Scrollable = _dom_component.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            disabled: false,\r\n            onScroll: null,\r\n            direction: VERTICAL,\r\n            showScrollbar: \"onScroll\",\r\n            useNative: true,\r\n            bounceEnabled: true,\r\n            scrollByContent: true,\r\n            scrollByThumb: false,\r\n            onUpdated: null,\r\n            onStart: null,\r\n            onEnd: null,\r\n            onBounce: null,\r\n            onStop: null,\r\n            useSimulatedScrollbar: false,\r\n            useKeyboard: true,\r\n            inertiaEnabled: true,\r\n            pushBackValue: 0,\r\n            updateManually: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat((0, _uiScrollable3.deviceDependentOptions)(), [{\r\n            device: function() {\r\n                return _support.nativeScrolling && \"android\" === _devices.default.real().platform && !_browser.default.mozilla\r\n            },\r\n            options: {\r\n                useSimulatedScrollbar: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return \"ios\" === _devices.default.real().platform\r\n            },\r\n            options: {\r\n                pushBackValue: 1\r\n            }\r\n        }])\r\n    },\r\n    _initOptions: function(options) {\r\n        this.callBase(options);\r\n        if (!(\"useSimulatedScrollbar\" in options)) {\r\n            this._setUseSimulatedScrollbar()\r\n        }\r\n    },\r\n    _setUseSimulatedScrollbar: function() {\r\n        if (!this.initialOption(\"useSimulatedScrollbar\")) {\r\n            this.option(\"useSimulatedScrollbar\", !this.option(\"useNative\"))\r\n        }\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initScrollableMarkup();\r\n        this._locked = false\r\n    },\r\n    _getWindowDevicePixelRatio: function() {\r\n        return (0, _window.hasWindow)() ? (0, _window.getWindow)().devicePixelRatio : 1\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this.update();\r\n            this._updateRtlPosition();\r\n            this._savedScrollOffset && this.scrollTo(this._savedScrollOffset);\r\n            delete this._savedScrollOffset\r\n        } else {\r\n            this._savedScrollOffset = this.scrollOffset()\r\n        }\r\n    },\r\n    _initScrollableMarkup: function() {\r\n        var $element = this.$element().addClass(SCROLLABLE_CLASS);\r\n        var $container = this._$container = (0, _renderer.default)(\"<div>\").addClass(SCROLLABLE_CONTAINER_CLASS);\r\n        var $wrapper = this._$wrapper = (0, _renderer.default)(\"<div>\").addClass(SCROLLABLE_WRAPPER_CLASS);\r\n        var $content = this._$content = (0, _renderer.default)(\"<div>\").addClass(SCROLLABLE_CONTENT_CLASS);\r\n        if (_dom_adapter.default.hasDocumentProperty(\"onbeforeactivate\") && _browser.default.msie && _browser.default.version < 12) {\r\n            _events_engine.default.on($element, (0, _index.addNamespace)(\"beforeactivate\", SCROLLABLE), function(e) {\r\n                if (!(0, _renderer.default)(e.target).is(_selectors.focusable)) {\r\n                    e.preventDefault()\r\n                }\r\n            })\r\n        }\r\n        $content.append($element.contents()).appendTo($container);\r\n        $container.appendTo($wrapper);\r\n        $wrapper.appendTo($element)\r\n    },\r\n    _dimensionChanged: function() {\r\n        this.update();\r\n        this._updateRtlPosition()\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._renderDirection()\r\n    },\r\n    _render: function() {\r\n        this._renderStrategy();\r\n        this._attachEventHandlers();\r\n        this._renderDisabledState();\r\n        this._createActions();\r\n        this.update();\r\n        this.callBase();\r\n        this._rtlConfig = {\r\n            scrollRight: 0,\r\n            clientWidth: this._container().get(0).clientWidth,\r\n            windowPixelRatio: this._getWindowDevicePixelRatio()\r\n        };\r\n        this._updateRtlPosition()\r\n    },\r\n    _isHorizontalAndRtlEnabled: function() {\r\n        return this.option(\"rtlEnabled\") && this.option(\"direction\") !== VERTICAL\r\n    },\r\n    _updateRtlPosition: function() {\r\n        var _this = this;\r\n        this._updateBounds();\r\n        if (this._isHorizontalAndRtlEnabled()) {\r\n            (0, _common.deferUpdate)(function() {\r\n                var containerElement = _this._container().get(0);\r\n                var scrollLeft = containerElement.scrollWidth - containerElement.clientWidth - _this._rtlConfig.scrollRight;\r\n                if (scrollLeft <= 0) {\r\n                    scrollLeft = 0;\r\n                    _this._rtlConfig.scrollRight = containerElement.scrollWidth - containerElement.clientWidth\r\n                }(0, _common.deferRender)(function() {\r\n                    if (_this.scrollLeft() !== scrollLeft) {\r\n                        _this._rtlConfig.skipUpdating = true;\r\n                        _this.scrollTo({\r\n                            left: scrollLeft\r\n                        });\r\n                        _this._rtlConfig.skipUpdating = false\r\n                    }\r\n                })\r\n            })\r\n        }\r\n    },\r\n    _updateBounds: function() {\r\n        this._strategy.updateBounds()\r\n    },\r\n    _attachEventHandlers: function() {\r\n        var strategy = this._strategy;\r\n        var initEventData = {\r\n            getDirection: strategy.getDirection.bind(strategy),\r\n            validate: this._validate.bind(this),\r\n            isNative: this.option(\"useNative\"),\r\n            scrollTarget: this._$container\r\n        };\r\n        _events_engine.default.off(this._$wrapper, \".\" + SCROLLABLE);\r\n        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.init, SCROLLABLE), initEventData, this._initHandler.bind(this));\r\n        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.start, SCROLLABLE), strategy.handleStart.bind(strategy));\r\n        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.move, SCROLLABLE), strategy.handleMove.bind(strategy));\r\n        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.end, SCROLLABLE), strategy.handleEnd.bind(strategy));\r\n        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy));\r\n        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.stop, SCROLLABLE), strategy.handleStop.bind(strategy));\r\n        _events_engine.default.off(this._$container, \".\" + SCROLLABLE);\r\n        _events_engine.default.on(this._$container, (0, _index.addNamespace)(\"scroll\", SCROLLABLE), strategy.handleScroll.bind(strategy))\r\n    },\r\n    _updateRtlConfig: function() {\r\n        if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) {\r\n            var _this$_container$get = this._container().get(0),\r\n                clientWidth = _this$_container$get.clientWidth,\r\n                scrollWidth = _this$_container$get.scrollWidth,\r\n                scrollLeft = _this$_container$get.scrollLeft;\r\n            var windowPixelRatio = this._getWindowDevicePixelRatio();\r\n            if (this._rtlConfig.windowPixelRatio === windowPixelRatio && this._rtlConfig.clientWidth === clientWidth) {\r\n                this._rtlConfig.scrollRight = scrollWidth - (scrollLeft + clientWidth)\r\n            }\r\n            this._rtlConfig.clientWidth = clientWidth;\r\n            this._rtlConfig.windowPixelRatio = windowPixelRatio\r\n        }\r\n    },\r\n    _validate: function(e) {\r\n        if (this._isLocked()) {\r\n            return false\r\n        }\r\n        this._updateIfNeed();\r\n        return this._strategy.validate(e)\r\n    },\r\n    _initHandler: function() {\r\n        var strategy = this._strategy;\r\n        strategy.handleInit.apply(strategy, arguments)\r\n    },\r\n    _renderDisabledState: function() {\r\n        this.$element().toggleClass(SCROLLABLE_DISABLED_CLASS, this.option(\"disabled\"));\r\n        if (this.option(\"disabled\")) {\r\n            this._lock()\r\n        } else {\r\n            this._unlock()\r\n        }\r\n    },\r\n    _renderDirection: function() {\r\n        this.$element().removeClass(\"dx-scrollable-\" + HORIZONTAL).removeClass(\"dx-scrollable-\" + VERTICAL).removeClass(\"dx-scrollable-\" + BOTH).addClass(\"dx-scrollable-\" + this.option(\"direction\"))\r\n    },\r\n    _renderStrategy: function() {\r\n        this._createStrategy();\r\n        this._strategy.render();\r\n        this.$element().data(SCROLLABLE_STRATEGY, this._strategy)\r\n    },\r\n    _createStrategy: function() {\r\n        this._strategy = this.option(\"useNative\") ? new _uiScrollable2.default(this) : new _uiScrollable.SimulatedStrategy(this)\r\n    },\r\n    _createActions: function() {\r\n        this._strategy && this._strategy.createActions()\r\n    },\r\n    _clean: function() {\r\n        this._strategy && this._strategy.dispose()\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"onStart\":\r\n            case \"onEnd\":\r\n            case \"onStop\":\r\n            case \"onUpdated\":\r\n            case \"onScroll\":\r\n            case \"onBounce\":\r\n                this._createActions();\r\n                break;\r\n            case \"direction\":\r\n                this._resetInactiveDirection();\r\n                this._invalidate();\r\n                break;\r\n            case \"useNative\":\r\n                this._setUseSimulatedScrollbar();\r\n                this._invalidate();\r\n                break;\r\n            case \"inertiaEnabled\":\r\n            case \"scrollByContent\":\r\n            case \"scrollByThumb\":\r\n            case \"bounceEnabled\":\r\n            case \"useKeyboard\":\r\n            case \"showScrollbar\":\r\n            case \"useSimulatedScrollbar\":\r\n            case \"pushBackValue\":\r\n                this._invalidate();\r\n                break;\r\n            case \"disabled\":\r\n                this._renderDisabledState();\r\n                this._strategy && this._strategy.disabledChanged();\r\n                break;\r\n            case \"updateManually\":\r\n                break;\r\n            case \"width\":\r\n                this.callBase(args);\r\n                this._updateRtlPosition();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _resetInactiveDirection: function() {\r\n        var inactiveProp = this._getInactiveProp();\r\n        if (!inactiveProp || !(0, _window.hasWindow)()) {\r\n            return\r\n        }\r\n        var scrollOffset = this.scrollOffset();\r\n        scrollOffset[inactiveProp] = 0;\r\n        this.scrollTo(scrollOffset)\r\n    },\r\n    _getInactiveProp: function() {\r\n        var direction = this.option(\"direction\");\r\n        if (direction === VERTICAL) {\r\n            return \"left\"\r\n        }\r\n        if (direction === HORIZONTAL) {\r\n            return \"top\"\r\n        }\r\n    },\r\n    _location: function() {\r\n        return this._strategy.location()\r\n    },\r\n    _normalizeLocation: function(location) {\r\n        if ((0, _type.isPlainObject)(location)) {\r\n            var left = (0, _common.ensureDefined)(location.left, location.x);\r\n            var top = (0, _common.ensureDefined)(location.top, location.y);\r\n            return {\r\n                left: (0, _type.isDefined)(left) ? -left : void 0,\r\n                top: (0, _type.isDefined)(top) ? -top : void 0\r\n            }\r\n        } else {\r\n            var direction = this.option(\"direction\");\r\n            return {\r\n                left: direction !== VERTICAL ? -location : void 0,\r\n                top: direction !== HORIZONTAL ? -location : void 0\r\n            }\r\n        }\r\n    },\r\n    _isLocked: function() {\r\n        return this._locked\r\n    },\r\n    _lock: function() {\r\n        this._locked = true\r\n    },\r\n    _unlock: function() {\r\n        if (!this.option(\"disabled\")) {\r\n            this._locked = false\r\n        }\r\n    },\r\n    _isDirection: function(direction) {\r\n        var current = this.option(\"direction\");\r\n        if (direction === VERTICAL) {\r\n            return current !== HORIZONTAL\r\n        }\r\n        if (direction === HORIZONTAL) {\r\n            return current !== VERTICAL\r\n        }\r\n        return current === direction\r\n    },\r\n    _updateAllowedDirection: function() {\r\n        var allowedDirections = this._strategy._allowedDirections();\r\n        if (this._isDirection(BOTH) && allowedDirections.vertical && allowedDirections.horizontal) {\r\n            this._allowedDirectionValue = BOTH\r\n        } else {\r\n            if (this._isDirection(HORIZONTAL) && allowedDirections.horizontal) {\r\n                this._allowedDirectionValue = HORIZONTAL\r\n            } else {\r\n                if (this._isDirection(VERTICAL) && allowedDirections.vertical) {\r\n                    this._allowedDirectionValue = VERTICAL\r\n                } else {\r\n                    this._allowedDirectionValue = null\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _allowedDirection: function() {\r\n        return this._allowedDirectionValue\r\n    },\r\n    _container: function() {\r\n        return this._$container\r\n    },\r\n    $content: function() {\r\n        return this._$content\r\n    },\r\n    content: function() {\r\n        return (0, _element.getPublicElement)(this._$content)\r\n    },\r\n    scrollOffset: function() {\r\n        var location = this._location();\r\n        return {\r\n            top: -location.top,\r\n            left: -location.left\r\n        }\r\n    },\r\n    scrollTop: function() {\r\n        return this.scrollOffset().top\r\n    },\r\n    scrollLeft: function() {\r\n        return this.scrollOffset().left\r\n    },\r\n    clientHeight: function() {\r\n        return this._$container.height()\r\n    },\r\n    scrollHeight: function() {\r\n        return this.$content().outerHeight() - 2 * this._strategy.verticalOffset()\r\n    },\r\n    clientWidth: function() {\r\n        return this._$container.width()\r\n    },\r\n    scrollWidth: function() {\r\n        return this.$content().outerWidth()\r\n    },\r\n    update: function() {\r\n        if (!this._strategy) {\r\n            return\r\n        }\r\n        return (0, _deferred.when)(this._strategy.update()).done(function() {\r\n            this._updateAllowedDirection()\r\n        }.bind(this))\r\n    },\r\n    scrollBy: function(distance) {\r\n        distance = this._normalizeLocation(distance);\r\n        if (!distance.top && !distance.left) {\r\n            return\r\n        }\r\n        this._updateIfNeed();\r\n        this._strategy.scrollBy(distance);\r\n        this._updateRtlConfig()\r\n    },\r\n    scrollTo: function(targetLocation) {\r\n        targetLocation = this._normalizeLocation(targetLocation);\r\n        this._updateIfNeed();\r\n        var location = this._location();\r\n        if (!this.option(\"useNative\")) {\r\n            targetLocation = this._strategy._applyScaleRatio(targetLocation);\r\n            location = this._strategy._applyScaleRatio(location)\r\n        }\r\n        var distance = this._normalizeLocation({\r\n            left: location.left - (0, _common.ensureDefined)(targetLocation.left, location.left),\r\n            top: location.top - (0, _common.ensureDefined)(targetLocation.top, location.top)\r\n        });\r\n        if (!distance.top && !distance.left) {\r\n            return\r\n        }\r\n        this._strategy.scrollBy(distance);\r\n        this._updateRtlConfig()\r\n    },\r\n    scrollToElement: function(element, offset) {\r\n        var $element = (0, _renderer.default)(element);\r\n        var elementInsideContent = this.$content().find(element).length;\r\n        var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n        if (!elementInsideContent || !elementIsInsideContent) {\r\n            return\r\n        }\r\n        var scrollPosition = {\r\n            top: 0,\r\n            left: 0\r\n        };\r\n        var direction = this.option(\"direction\");\r\n        if (direction !== VERTICAL) {\r\n            scrollPosition.left = this.getScrollElementPosition($element, HORIZONTAL, offset)\r\n        }\r\n        if (direction !== HORIZONTAL) {\r\n            scrollPosition.top = this.getScrollElementPosition($element, VERTICAL, offset)\r\n        }\r\n        this.scrollTo(scrollPosition)\r\n    },\r\n    scrollToElementTopLeft: function(element) {\r\n        var $element = (0, _renderer.default)(element);\r\n        var elementInsideContent = this.$content().find(element).length;\r\n        var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n        if (!elementInsideContent || !elementIsInsideContent) {\r\n            return\r\n        }\r\n        var scrollPosition = {\r\n            top: 0,\r\n            left: 0\r\n        };\r\n        var direction = this.option(\"direction\");\r\n        if (direction !== VERTICAL) {\r\n            var leftPosition = this._elementPositionRelativeToContent($element, \"left\");\r\n            scrollPosition.left = true === this.option(\"rtlEnabled\") ? leftPosition + $element.width() - this.clientWidth() : leftPosition\r\n        }\r\n        if (direction !== HORIZONTAL) {\r\n            scrollPosition.top = this._elementPositionRelativeToContent($element, \"top\")\r\n        }\r\n        this.scrollTo(scrollPosition)\r\n    },\r\n    getScrollElementPosition: function($element, direction, offset) {\r\n        offset = offset || {};\r\n        var isVertical = direction === VERTICAL;\r\n        var startOffset = (isVertical ? offset.top : offset.left) || 0;\r\n        var endOffset = (isVertical ? offset.bottom : offset.right) || 0;\r\n        var pushBackOffset = isVertical ? this._strategy.verticalOffset() : 0;\r\n        var elementPositionRelativeToContent = this._elementPositionRelativeToContent($element, isVertical ? \"top\" : \"left\");\r\n        var elementPosition = elementPositionRelativeToContent - pushBackOffset;\r\n        var elementSize = $element[isVertical ? \"outerHeight\" : \"outerWidth\"]();\r\n        var scrollLocation = isVertical ? this.scrollTop() : this.scrollLeft();\r\n        var clientSize = this._container().get(0)[isVertical ? \"clientHeight\" : \"clientWidth\"];\r\n        var startDistance = scrollLocation - elementPosition + startOffset;\r\n        var endDistance = scrollLocation - elementPosition - elementSize + clientSize - endOffset;\r\n        if (startDistance <= 0 && endDistance >= 0) {\r\n            return scrollLocation\r\n        }\r\n        return scrollLocation - (Math.abs(startDistance) > Math.abs(endDistance) ? endDistance : startDistance)\r\n    },\r\n    _elementPositionRelativeToContent: function($element, prop) {\r\n        var result = 0;\r\n        while (this._hasScrollContent($element)) {\r\n            result += $element.position()[prop];\r\n            $element = $element.offsetParent()\r\n        }\r\n        return result\r\n    },\r\n    _hasScrollContent: function($element) {\r\n        var $content = this.$content();\r\n        return $element.closest($content).length && !$element.is($content)\r\n    },\r\n    _updateIfNeed: function() {\r\n        if (!this.option(\"updateManually\")) {\r\n            this.update()\r\n        }\r\n    },\r\n    _useTemplates: function() {\r\n        return false\r\n    }\r\n});\r\n(0, _component_registrator.default)(SCROLLABLE, Scrollable);\r\nvar _default = Scrollable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/tooltip_viewer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TooltipViewer = TooltipViewer;\r\nvar TOOLTIP_OFFSET = 12;\r\n\r\nfunction TooltipViewer(params) {\r\n    this._subscribeToTracker(params.tracker, params.tooltip, params.layerCollection)\r\n}\r\nTooltipViewer.prototype = {\r\n    constructor: TooltipViewer,\r\n    dispose: function() {\r\n        this._offTracker();\r\n        this._offTracker = null\r\n    },\r\n    _subscribeToTracker: function(tracker, tooltip, layerCollection) {\r\n        this._offTracker = tracker.on({\r\n            \"focus-on\": function(arg) {\r\n                var layer;\r\n                var proxy;\r\n                if (tooltip.isEnabled()) {\r\n                    layer = layerCollection.byName(arg.data.name);\r\n                    proxy = layer && layer.getProxy(arg.data.index);\r\n                    var callback = function(result) {\r\n                        result && arg.done(result)\r\n                    };\r\n                    proxy && callback(tooltip.show(proxy, {\r\n                        x: arg.x,\r\n                        y: arg.y,\r\n                        offset: TOOLTIP_OFFSET\r\n                    }, {\r\n                        target: proxy\r\n                    }, void 0, callback))\r\n                }\r\n            },\r\n            \"focus-move\": function(arg) {\r\n                tooltip.move(arg.x, arg.y, TOOLTIP_OFFSET)\r\n            },\r\n            \"focus-off\": function() {\r\n                tooltip.hide()\r\n            }\r\n        })\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/validator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _element_data = require(\"../core/element_data\");\r\nvar _callbacks = _interopRequireDefault(require(\"../core/utils/callbacks\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../core/dom_component\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _validation_engine = _interopRequireDefault(require(\"./validation_engine\"));\r\nvar _default_adapter = _interopRequireDefault(require(\"./validation/default_adapter\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _guid = _interopRequireDefault(require(\"../core/guid\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar VALIDATOR_CLASS = \"dx-validator\";\r\nvar VALIDATION_STATUS_VALID = \"valid\";\r\nvar VALIDATION_STATUS_INVALID = \"invalid\";\r\nvar VALIDATION_STATUS_PENDING = \"pending\";\r\nvar Validator = _dom_component.default.inherit({\r\n    _initOptions: function(options) {\r\n        this.callBase.apply(this, arguments);\r\n        this.option(_validation_engine.default.initValidationOptions(options))\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            validationRules: []\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initGroupRegistration();\r\n        this.focused = (0, _callbacks.default)();\r\n        this._initAdapter();\r\n        this._validationInfo = {\r\n            result: null,\r\n            deferred: null,\r\n            skipValidation: false\r\n        }\r\n    },\r\n    _initGroupRegistration: function() {\r\n        var group = this._findGroup();\r\n        if (!this._groupWasInit) {\r\n            this.on(\"disposing\", function(args) {\r\n                _validation_engine.default.removeRegisteredValidator(args.component._validationGroup, args.component)\r\n            })\r\n        }\r\n        if (!this._groupWasInit || this._validationGroup !== group) {\r\n            _validation_engine.default.removeRegisteredValidator(this._validationGroup, this);\r\n            this._groupWasInit = true;\r\n            this._validationGroup = group;\r\n            _validation_engine.default.registerValidatorInGroup(group, this)\r\n        }\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            validationGroup: true\r\n        })\r\n    },\r\n    _initAdapter: function() {\r\n        var _this = this;\r\n        var element = this.$element()[0];\r\n        var dxStandardEditor = (0, _element_data.data)(element, \"dx-validation-target\");\r\n        var adapter = this.option(\"adapter\");\r\n        if (!adapter) {\r\n            if (dxStandardEditor) {\r\n                adapter = new _default_adapter.default(dxStandardEditor, this);\r\n                adapter.validationRequestsCallbacks.push(function(args) {\r\n                    if (_this._validationInfo.skipValidation) {\r\n                        return\r\n                    }\r\n                    _this.validate(args)\r\n                });\r\n                this.option(\"adapter\", adapter);\r\n                return\r\n            }\r\n            throw _ui.default.Error(\"E0120\")\r\n        }\r\n        var callbacks = adapter.validationRequestsCallbacks;\r\n        if (callbacks) {\r\n            callbacks.push(function(args) {\r\n                _this.validate(args)\r\n            })\r\n        }\r\n    },\r\n    _toggleRTLDirection: function(isRtl) {\r\n        var _this$option$editor$o, _this$option, _this$option$editor;\r\n        var rtlEnabled = null !== (_this$option$editor$o = null === (_this$option = this.option(\"adapter\")) || void 0 === _this$option ? void 0 : null === (_this$option$editor = _this$option.editor) || void 0 === _this$option$editor ? void 0 : _this$option$editor.option(\"rtlEnabled\")) && void 0 !== _this$option$editor$o ? _this$option$editor$o : isRtl;\r\n        this.callBase(rtlEnabled)\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(VALIDATOR_CLASS);\r\n        this.callBase()\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._initGroupRegistration()\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"validationGroup\":\r\n                this._initGroupRegistration();\r\n                return;\r\n            case \"validationRules\":\r\n                this._resetValidationRules();\r\n                void 0 !== this.option(\"isValid\") && this.validate();\r\n                return;\r\n            case \"adapter\":\r\n                this._initAdapter();\r\n                break;\r\n            case \"isValid\":\r\n            case \"validationStatus\":\r\n                this.option(_validation_engine.default.synchronizeValidationOptions(args, this.option()));\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _getValidationRules: function() {\r\n        var _this2 = this;\r\n        if (!this._validationRules) {\r\n            this._validationRules = (0, _iterator.map)(this.option(\"validationRules\"), function(rule, index) {\r\n                return (0, _extend.extend)({}, rule, {\r\n                    validator: _this2,\r\n                    index: index\r\n                })\r\n            })\r\n        }\r\n        return this._validationRules\r\n    },\r\n    _findGroup: function() {\r\n        var $element = this.$element();\r\n        return this.option(\"validationGroup\") || _validation_engine.default.findGroup($element, this._modelByElement($element))\r\n    },\r\n    _resetValidationRules: function() {\r\n        delete this._validationRules\r\n    },\r\n    validate: function(args) {\r\n        var _this3 = this;\r\n        var adapter = this.option(\"adapter\");\r\n        var name = this.option(\"name\");\r\n        var bypass = adapter.bypass && adapter.bypass();\r\n        var value = args && void 0 !== args.value ? args.value : adapter.getValue();\r\n        var currentError = adapter.getCurrentValidationError && adapter.getCurrentValidationError();\r\n        var rules = this._getValidationRules();\r\n        var currentResult = this._validationInfo && this._validationInfo.result;\r\n        if (currentResult && currentResult.status === VALIDATION_STATUS_PENDING && currentResult.value === value) {\r\n            return (0, _extend.extend)({}, currentResult)\r\n        }\r\n        var result;\r\n        if (bypass) {\r\n            result = {\r\n                isValid: true,\r\n                status: VALIDATION_STATUS_VALID\r\n            }\r\n        } else {\r\n            if (currentError && currentError.editorSpecific) {\r\n                currentError.validator = this;\r\n                result = {\r\n                    isValid: false,\r\n                    status: VALIDATION_STATUS_INVALID,\r\n                    brokenRule: currentError,\r\n                    brokenRules: [currentError]\r\n                }\r\n            } else {\r\n                result = _validation_engine.default.validate(value, rules, name)\r\n            }\r\n        }\r\n        result.id = (new _guid.default).toString();\r\n        this._applyValidationResult(result, adapter);\r\n        result.complete && result.complete.then(function(res) {\r\n            if (res.id === _this3._validationInfo.result.id) {\r\n                _this3._applyValidationResult(res, adapter)\r\n            }\r\n        });\r\n        return (0, _extend.extend)({}, this._validationInfo.result)\r\n    },\r\n    reset: function() {\r\n        var adapter = this.option(\"adapter\");\r\n        var result = {\r\n            id: null,\r\n            isValid: true,\r\n            brokenRule: null,\r\n            brokenRules: null,\r\n            pendingRules: null,\r\n            status: VALIDATION_STATUS_VALID,\r\n            complete: null\r\n        };\r\n        this._validationInfo.skipValidation = true;\r\n        adapter.reset();\r\n        this._validationInfo.skipValidation = false;\r\n        this._resetValidationRules();\r\n        this._applyValidationResult(result, adapter)\r\n    },\r\n    _updateValidationResult: function(result) {\r\n        if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) {\r\n            var complete = this._validationInfo.deferred && this._validationInfo.result.complete;\r\n            this._validationInfo.result = (0, _extend.extend)({}, result, {\r\n                complete: complete\r\n            })\r\n        } else {\r\n            for (var prop in result) {\r\n                if (\"id\" !== prop && \"complete\" !== prop) {\r\n                    this._validationInfo.result[prop] = result[prop]\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _applyValidationResult: function(result, adapter) {\r\n        var validatedAction = this._createActionByOption(\"onValidated\", {\r\n            excludeValidators: [\"readOnly\"]\r\n        });\r\n        result.validator = this;\r\n        this._updateValidationResult(result);\r\n        adapter.applyValidationResults && adapter.applyValidationResults(this._validationInfo.result);\r\n        this.option({\r\n            validationStatus: this._validationInfo.result.status\r\n        });\r\n        if (this._validationInfo.result.status === VALIDATION_STATUS_PENDING) {\r\n            if (!this._validationInfo.deferred) {\r\n                this._validationInfo.deferred = new _deferred.Deferred;\r\n                this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n            }\r\n            this._eventsStrategy.fireEvent(\"validating\", [this._validationInfo.result]);\r\n            return\r\n        }\r\n        if (this._validationInfo.result.status !== VALIDATION_STATUS_PENDING) {\r\n            validatedAction(result);\r\n            if (this._validationInfo.deferred) {\r\n                this._validationInfo.deferred.resolve(result);\r\n                this._validationInfo.deferred = null\r\n            }\r\n        }\r\n    },\r\n    focus: function() {\r\n        var adapter = this.option(\"adapter\");\r\n        adapter && adapter.focus && adapter.focus()\r\n    },\r\n    _useTemplates: function() {\r\n        return false\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxValidator\", Validator);\r\nvar _default = Validator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/series/area_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _line_series = require(\"./line_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar chartLineSeries = _line_series.chart.line;\r\nvar polarLineSeries = _line_series.polar.line;\r\nvar _extend = _extend2.extend;\r\nvar calculateBezierPoints = _line_series.chart.spline._calculateBezierPoints;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nvar baseAreaMethods = {\r\n    _createBorderElement: chartLineSeries._createMainElement,\r\n    _createLegendState: function(styleOptions, defaultColor) {\r\n        return {\r\n            fill: styleOptions.color || defaultColor,\r\n            opacity: styleOptions.opacity,\r\n            hatching: styleOptions.hatching\r\n        }\r\n    },\r\n    getValueRangeInitialValue: function() {\r\n        if (\"logarithmic\" !== this.valueAxisType && \"datetime\" !== this.valueType && false !== this.showZero) {\r\n            return 0\r\n        } else {\r\n            return _scatter_series.chart.getValueRangeInitialValue.call(this)\r\n        }\r\n    },\r\n    _getDefaultSegment: function(segment) {\r\n        var defaultSegment = chartLineSeries._getDefaultSegment(segment);\r\n        defaultSegment.area = defaultSegment.line.concat(defaultSegment.line.slice().reverse());\r\n        return defaultSegment\r\n    },\r\n    _updateElement: function(element, segment, animate, complete) {\r\n        var lineParams = {\r\n            points: segment.line\r\n        };\r\n        var areaParams = {\r\n            points: segment.area\r\n        };\r\n        var borderElement = element.line;\r\n        if (animate) {\r\n            borderElement && borderElement.animate(lineParams);\r\n            element.area.animate(areaParams, {}, complete)\r\n        } else {\r\n            borderElement && borderElement.attr(lineParams);\r\n            element.area.attr(areaParams)\r\n        }\r\n    },\r\n    _removeElement: function(element) {\r\n        element.line && element.line.remove();\r\n        element.area.remove()\r\n    },\r\n    _drawElement: function(segment) {\r\n        return {\r\n            line: this._bordersGroup && this._createBorderElement(segment.line, {\r\n                \"stroke-width\": this._styles.normal.border[\"stroke-width\"]\r\n            }).append(this._bordersGroup),\r\n            area: this._createMainElement(segment.area).append(this._elementsGroup)\r\n        }\r\n    },\r\n    _applyStyle: function(style) {\r\n        var that = this;\r\n        that._elementsGroup && that._elementsGroup.smartAttr(style.elements);\r\n        that._bordersGroup && that._bordersGroup.attr(style.border);\r\n        (that._graphics || []).forEach(function(graphic) {\r\n            graphic.line && graphic.line.attr({\r\n                \"stroke-width\": style.border[\"stroke-width\"]\r\n            }).sharp()\r\n        })\r\n    },\r\n    _parseStyle: function(options, defaultColor, defaultBorderColor) {\r\n        var borderOptions = options.border || {};\r\n        var borderStyle = chartLineSeries._parseLineOptions(borderOptions, defaultBorderColor);\r\n        borderStyle.stroke = borderOptions.visible && borderStyle[\"stroke-width\"] ? borderStyle.stroke : \"none\";\r\n        borderStyle[\"stroke-width\"] = borderStyle[\"stroke-width\"] || 1;\r\n        return {\r\n            border: borderStyle,\r\n            elements: {\r\n                stroke: \"none\",\r\n                fill: options.color || defaultColor,\r\n                hatching: options.hatching,\r\n                opacity: options.opacity\r\n            }\r\n        }\r\n    },\r\n    _areBordersVisible: function() {\r\n        var options = this._options;\r\n        return options.border.visible || options.hoverStyle.border.visible || options.selectionStyle.border.visible\r\n    },\r\n    _createMainElement: function(points, settings) {\r\n        return this._renderer.path(points, \"area\").attr(settings)\r\n    },\r\n    _getTrackerSettings: function(segment) {\r\n        return {\r\n            \"stroke-width\": segment.singlePointSegment ? this._defaultTrackerWidth : 0\r\n        }\r\n    },\r\n    _getMainPointsFromSegment: function(segment) {\r\n        return segment.area\r\n    }\r\n};\r\n\r\nfunction createAreaPoints(points) {\r\n    return (0, _utils.map)(points, function(pt) {\r\n        return pt.getCoords()\r\n    }).concat((0, _utils.map)(points.slice().reverse(), function(pt) {\r\n        return pt.getCoords(true)\r\n    }))\r\n}\r\nvar areaSeries = chart.area = _extend({}, chartLineSeries, baseAreaMethods, {\r\n    _prepareSegment: function(points, rotated) {\r\n        var that = this;\r\n        var processedPoints = that._processSinglePointsAreaSegment(points, rotated);\r\n        var areaPoints = createAreaPoints(processedPoints);\r\n        var argAxis = that.getArgumentAxis();\r\n        if (argAxis.getAxisPosition) {\r\n            var argAxisPosition = argAxis.getAxisPosition();\r\n            var axisOptions = argAxis.getOptions();\r\n            var edgeOffset = (!rotated ? -1 : 1) * Math.round(axisOptions.width / 2);\r\n            if (axisOptions.visible) {\r\n                areaPoints.forEach(function(p, i) {\r\n                    if (p) {\r\n                        var index = 1 === points.length ? 0 : i < points.length ? i : areaPoints.length - 1 - i;\r\n                        rotated && p.x === points[index].defaultX && p.x === argAxisPosition - argAxis.getAxisShift() && (p.x += edgeOffset);\r\n                        !rotated && p.y === points[index].defaultY && p.y === argAxisPosition - argAxis.getAxisShift() && (p.y += edgeOffset)\r\n                    }\r\n                })\r\n            }\r\n        }\r\n        return {\r\n            line: processedPoints,\r\n            area: areaPoints,\r\n            singlePointSegment: processedPoints !== points\r\n        }\r\n    },\r\n    _processSinglePointsAreaSegment: function(points, rotated) {\r\n        if (points && 1 === points.length) {\r\n            var p = points[0];\r\n            var p1 = (0, _object.clone)(p);\r\n            p1[rotated ? \"y\" : \"x\"] += 1;\r\n            p1.argument = null;\r\n            return [p, p1]\r\n        }\r\n        return points\r\n    }\r\n});\r\npolar.area = _extend({}, polarLineSeries, baseAreaMethods, {\r\n    _prepareSegment: function(points, rotated, lastSegment) {\r\n        lastSegment && polarLineSeries._closeSegment.call(this, points);\r\n        return areaSeries._prepareSegment.call(this, points)\r\n    },\r\n    _processSinglePointsAreaSegment: function(points) {\r\n        return _line_series.polar.line._prepareSegment.call(this, points).line\r\n    }\r\n});\r\nchart.steparea = _extend({}, areaSeries, {\r\n    _prepareSegment: function(points, rotated) {\r\n        var stepLineSeries = _line_series.chart.stepline;\r\n        points = areaSeries._processSinglePointsAreaSegment(points, rotated);\r\n        return areaSeries._prepareSegment.call(this, stepLineSeries._calculateStepLinePoints.call(this, points), rotated)\r\n    },\r\n    getSeriesPairCoord: _line_series.chart.stepline.getSeriesPairCoord\r\n});\r\nchart.splinearea = _extend({}, areaSeries, {\r\n    _areaPointsToSplineAreaPoints: function(areaPoints) {\r\n        var previousMiddlePoint = areaPoints[areaPoints.length / 2 - 1];\r\n        var middlePoint = areaPoints[areaPoints.length / 2];\r\n        areaPoints.splice(areaPoints.length / 2, 0, {\r\n            x: previousMiddlePoint.x,\r\n            y: previousMiddlePoint.y\r\n        }, {\r\n            x: middlePoint.x,\r\n            y: middlePoint.y\r\n        })\r\n    },\r\n    _prepareSegment: function(points, rotated) {\r\n        var processedPoints = areaSeries._processSinglePointsAreaSegment(points, rotated);\r\n        var areaSegment = areaSeries._prepareSegment.call(this, calculateBezierPoints(processedPoints, rotated));\r\n        this._areaPointsToSplineAreaPoints(areaSegment.area);\r\n        areaSegment.singlePointSegment = processedPoints !== points;\r\n        return areaSegment\r\n    },\r\n    _getDefaultSegment: function(segment) {\r\n        var areaDefaultSegment = areaSeries._getDefaultSegment(segment);\r\n        this._areaPointsToSplineAreaPoints(areaDefaultSegment.area);\r\n        return areaDefaultSegment\r\n    },\r\n    _createMainElement: function(points, settings) {\r\n        return this._renderer.path(points, \"bezierarea\").attr(settings)\r\n    },\r\n    _createBorderElement: _line_series.chart.spline._createMainElement,\r\n    getSeriesPairCoord: _line_series.chart.spline.getSeriesPairCoord,\r\n    _getNearestPoints: _line_series.chart.spline._getNearestPoints,\r\n    _getBezierPoints: _line_series.chart.spline._getBezierPoints,\r\n    obtainCubicBezierTCoef: _line_series.chart.spline.obtainCubicBezierTCoef\r\n});\r\n","/**\r\n * DevExtreme (viz/chart_components/shutter_zoom.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _drag = require(\"../../events/drag\");\r\nvar SHUTTER_EVENTS_NS = \".shutter-zoom\";\r\nvar DRAG_START_EVENT_NAME = _drag.start + SHUTTER_EVENTS_NS;\r\nvar DRAG_UPDATE_EVENT_NAME = _drag.move + SHUTTER_EVENTS_NS;\r\nvar DRAG_END_EVENT_NAME = _drag.end + SHUTTER_EVENTS_NS;\r\n\r\nfunction getPointerCoord(rootOffset, canvas, rotated, e) {\r\n    var coord = Math.floor(rotated ? e.pageY - rootOffset.top : e.pageX - rootOffset.left);\r\n    var min = rotated ? canvas.y1 : canvas.x1;\r\n    var max = rotated ? canvas.y2 : canvas.x2;\r\n    if (coord < min) {\r\n        coord = min\r\n    } else {\r\n        if (coord > max) {\r\n            coord = max\r\n        }\r\n    }\r\n    return coord\r\n}\r\n\r\nfunction checkCoords(rootOffset, canvas, e) {\r\n    var x = e.pageX - rootOffset.left;\r\n    var y = e.pageY - rootOffset.top;\r\n    return x >= canvas.x1 && x <= canvas.x2 && y >= canvas.y1 && y <= canvas.y2\r\n}\r\n\r\nfunction dragStartHandler(ctx) {\r\n    return function(e) {\r\n        var offset = ctx.getRootOffset();\r\n        var canvas = ctx.getCanvas();\r\n        if (!checkCoords(offset, canvas, e)) {\r\n            e.cancel = true;\r\n            return\r\n        }\r\n        ctx.rootOffset = offset;\r\n        ctx.canvas = canvas;\r\n        ctx.startCoord = getPointerCoord(offset, canvas, ctx.rotated, e);\r\n        ctx.triggerStart();\r\n        ctx.rect.attr({\r\n            x: canvas.x1,\r\n            y: canvas.y1,\r\n            width: canvas.width,\r\n            height: canvas.height\r\n        }).append(ctx.root)\r\n    }\r\n}\r\n\r\nfunction dragHandler(ctx) {\r\n    return function(e) {\r\n        var curCoord = getPointerCoord(ctx.rootOffset, ctx.canvas, ctx.rotated, e);\r\n        var attr = {};\r\n        ctx.curCoord = curCoord;\r\n        attr[ctx.rotated ? \"y\" : \"x\"] = Math.min(ctx.startCoord, curCoord);\r\n        attr[ctx.rotated ? \"height\" : \"width\"] = Math.abs(ctx.startCoord - curCoord);\r\n        ctx.rect.attr(attr)\r\n    }\r\n}\r\n\r\nfunction dragEndHandler(ctx) {\r\n    return function(e) {\r\n        ctx.triggerEnd();\r\n        ctx.rect.remove()\r\n    }\r\n}\r\n\r\nfunction shutterZoom(options) {\r\n    var chart = options.chart;\r\n    var renderer = options.renderer;\r\n    var rotated = options.rotated;\r\n    var rect = renderer.rect(0, 0, 0, 0).attr(options.shutterOptions);\r\n    var shutter = {\r\n        rect: rect,\r\n        root: renderer.root,\r\n        rotated: rotated,\r\n        triggerStart: function() {\r\n            chart._eventTrigger(\"zoomStart\")\r\n        },\r\n        triggerEnd: function() {\r\n            var tr = chart._argumentAxes[0].getTranslator();\r\n            var rangeStart = Math.min(this.startCoord, this.curCoord);\r\n            var rangeEnd = Math.max(this.startCoord, this.curCoord);\r\n            chart._eventTrigger(\"zoomEnd\", {\r\n                rangeStart: tr.from(rangeStart),\r\n                rangeEnd: tr.from(rangeEnd)\r\n            })\r\n        },\r\n        dispose: function() {\r\n            renderer.root.off(SHUTTER_EVENTS_NS);\r\n            rect.dispose()\r\n        },\r\n        getRootOffset: function() {\r\n            return renderer.getRootOffset()\r\n        },\r\n        getCanvas: function() {\r\n            var canvas = chart._canvas;\r\n            var panes = chart.panes;\r\n            var firstPane = panes[0].canvas;\r\n            var lastPane = panes[panes.length - 1].canvas;\r\n            return {\r\n                x1: firstPane.left,\r\n                y1: firstPane.top,\r\n                x2: canvas.width - lastPane.right,\r\n                y2: canvas.height - lastPane.bottom,\r\n                width: canvas.width - firstPane.left - lastPane.right,\r\n                height: canvas.height - firstPane.top - lastPane.bottom\r\n            }\r\n        }\r\n    };\r\n    renderer.root.off(SHUTTER_EVENTS_NS).on(DRAG_START_EVENT_NAME, {\r\n        direction: rotated ? \"vertical\" : \"horizontal\",\r\n        immediate: true\r\n    }, dragStartHandler(shutter)).on(DRAG_UPDATE_EVENT_NAME, dragHandler(shutter)).on(DRAG_END_EVENT_NAME, dragEndHandler(shutter));\r\n    return shutter\r\n}\r\nvar _default = {\r\n    name: \"shutter_zoom\",\r\n    init: function() {\r\n        var options = this.option(\"shutterZoom\") || {};\r\n        if (!options.enabled) {\r\n            return\r\n        }\r\n        this._shutterZoom = shutterZoom({\r\n            chart: this,\r\n            renderer: this._renderer,\r\n            rotated: this.option(\"rotated\"),\r\n            shutterOptions: options\r\n        })\r\n    },\r\n    dispose: function() {\r\n        this._shutterZoom && this._shutterZoom.dispose()\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/matchers/wordLists.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\n\r\nfunction getListType(matches) {\r\n    var prefix = matches[1];\r\n    return prefix.match(/\\S+\\./) ? \"ordered\" : \"bullet\"\r\n}\r\n\r\nfunction getIndent(node) {\r\n    var style = node.getAttribute(\"style\");\r\n    if (style) {\r\n        var level = style.replace(/\\n+/g, \"\").match(/level(\\d+)/);\r\n        return level ? level[1] - 1 : 0\r\n    } else {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction removeNewLineChar(operations) {\r\n    var newLineOperation = operations[operations.length - 1];\r\n    newLineOperation.insert = newLineOperation.insert.trim()\r\n}\r\nvar getMatcher = function(quill) {\r\n    var Delta = quill.import(\"delta\");\r\n    return function(node, delta) {\r\n        var ops = delta.ops.slice();\r\n        var insertOperation = ops[0];\r\n        insertOperation.insert = insertOperation.insert.replace(/^\\s+/, \"\");\r\n        var listDecoratorMatches = insertOperation.insert.match(/^(\\S+)\\s+/);\r\n        var indent = listDecoratorMatches && getIndent(node);\r\n        if (!listDecoratorMatches || false === indent) {\r\n            return delta\r\n        }\r\n        insertOperation.insert = insertOperation.insert.substring(listDecoratorMatches[0].length, insertOperation.insert.length);\r\n        removeNewLineChar(ops);\r\n        ops.push({\r\n            insert: \"\\n\",\r\n            attributes: {\r\n                list: getListType(listDecoratorMatches),\r\n                indent: indent\r\n            }\r\n        });\r\n        return new Delta(ops)\r\n    }\r\n};\r\nvar _default = getMatcher;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/collection/ui.collection_widget.live_update.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./ui.collection_widget.edit\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _array_compare = require(\"../../core/utils/array_compare\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar PRIVATE_KEY_FIELD = \"__dx_key__\";\r\nvar _default = _uiCollection_widget.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            repaintChangesOnly: false\r\n        })\r\n    },\r\n    ctor: function() {\r\n        var _this = this;\r\n        this.callBase.apply(this, arguments);\r\n        this._customizeStoreLoadOptions = function(e) {\r\n            var dataSource = _this._dataSource;\r\n            if (dataSource && !dataSource.isLoaded()) {\r\n                _this._correctionIndex = 0\r\n            }\r\n            if (_this._correctionIndex && e.storeLoadOptions) {\r\n                e.storeLoadOptions.skip += _this._correctionIndex\r\n            }\r\n        }, this._dataSource && this._dataSource.on(\"customizeStoreLoadOptions\", this._customizeStoreLoadOptions)\r\n    },\r\n    reload: function() {\r\n        this._correctionIndex = 0\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._refreshItemsCache();\r\n        this._correctionIndex = 0\r\n    },\r\n    _findItemElementByKey: function(key) {\r\n        var _this2 = this;\r\n        var result = (0, _renderer.default)();\r\n        var keyExpr = this.key();\r\n        this.itemElements().each(function(_, item) {\r\n            var $item = (0, _renderer.default)(item);\r\n            var itemData = _this2._getItemData($item);\r\n            if (keyExpr ? _utils.default.keysEqual(keyExpr, _this2.keyOf(itemData), key) : _this2._isItemEquals(itemData, key)) {\r\n                result = $item;\r\n                return false\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _dataSourceChangedHandler: function(newItems, e) {\r\n        e && e.changes ? this._modifyByChanges(e.changes) : this.callBase(newItems, e)\r\n    },\r\n    _isItemEquals: function(item1, item2) {\r\n        if (item1 && item1[PRIVATE_KEY_FIELD]) {\r\n            item1 = item1.data\r\n        }\r\n        try {\r\n            return JSON.stringify(item1) === JSON.stringify(item2)\r\n        } catch (e) {\r\n            return item1 === item2\r\n        }\r\n    },\r\n    _isItemStrictEquals: function(item1, item2) {\r\n        return this._isItemEquals(item1, item2)\r\n    },\r\n    _partialRefresh: function() {\r\n        var _this3 = this;\r\n        if (this.option(\"repaintChangesOnly\")) {\r\n            var keyOf = function(data) {\r\n                if (data && void 0 !== data[PRIVATE_KEY_FIELD]) {\r\n                    return data[PRIVATE_KEY_FIELD]\r\n                }\r\n                return _this3.keyOf(data)\r\n            };\r\n            var result = (0, _array_compare.findChanges)(this._itemsCache, this._editStrategy.itemsGetter(), keyOf, this._isItemStrictEquals.bind(this));\r\n            if (result && this._itemsCache.length) {\r\n                this._modifyByChanges(result, true);\r\n                this._renderEmptyMessage();\r\n                return true\r\n            } else {\r\n                this._refreshItemsCache()\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _refreshItemsCache: function() {\r\n        if (this.option(\"repaintChangesOnly\")) {\r\n            var items = this._editStrategy.itemsGetter();\r\n            try {\r\n                this._itemsCache = (0, _extend.extend)(true, [], items);\r\n                if (!this.key()) {\r\n                    this._itemsCache = this._itemsCache.map(function(itemCache, index) {\r\n                        var _ref;\r\n                        return _ref = {}, _defineProperty(_ref, PRIVATE_KEY_FIELD, items[index]), _defineProperty(_ref, \"data\", itemCache), _ref\r\n                    })\r\n                }\r\n            } catch (e) {\r\n                this._itemsCache = (0, _extend.extend)([], items)\r\n            }\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        this._dataSource && this._dataSource.off(\"customizeStoreLoadOptions\", this._customizeStoreLoadOptions);\r\n        this.callBase()\r\n    },\r\n    _updateByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n        var _this4 = this;\r\n        if (isPartialRefresh) {\r\n            this._renderItem(change.index, change.data, null, this._findItemElementByKey(change.key))\r\n        } else {\r\n            var changedItem = items[(0, _array_utils.indexByKey)(keyInfo, items, change.key)];\r\n            if (changedItem) {\r\n                (0, _array_utils.update)(keyInfo, items, change.key, change.data).done(function() {\r\n                    _this4._renderItem(items.indexOf(changedItem), changedItem, null, _this4._findItemElementByKey(change.key))\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _insertByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n        var _this5 = this;\r\n        (0, _deferred.when)(isPartialRefresh || (0, _array_utils.insert)(keyInfo, items, change.data, change.index)).done(function() {\r\n            _this5._beforeItemElementInserted(change);\r\n            _this5._renderItem((0, _type.isDefined)(change.index) ? change.index : items.length, change.data);\r\n            _this5._afterItemElementInserted();\r\n            _this5._correctionIndex++\r\n        })\r\n    },\r\n    _updateSelectionAfterRemoveByChange: function(removeIndex) {\r\n        var selectedIndex = this.option(\"selectedIndex\");\r\n        if (selectedIndex > removeIndex) {\r\n            this.option(\"selectedIndex\", selectedIndex - 1)\r\n        } else {\r\n            if (selectedIndex === removeIndex && 1 === this.option(\"selectedItems\").length) {\r\n                this.option(\"selectedItems\", [])\r\n            } else {\r\n                this._normalizeSelectedItems()\r\n            }\r\n        }\r\n    },\r\n    _beforeItemElementInserted: function(change) {\r\n        var selectedIndex = this.option(\"selectedIndex\");\r\n        if (change.index <= selectedIndex) {\r\n            this.option(\"selectedIndex\", selectedIndex + 1)\r\n        }\r\n    },\r\n    _afterItemElementInserted: _common.noop,\r\n    _removeByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n        var _this6 = this;\r\n        var index = isPartialRefresh ? change.index : (0, _array_utils.indexByKey)(keyInfo, items, change.key);\r\n        var removedItem = isPartialRefresh ? change.oldItem : items[index];\r\n        if (removedItem) {\r\n            var $removedItemElement = this._findItemElementByKey(change.key);\r\n            var deletedActionArgs = this._extendActionArgs($removedItemElement);\r\n            this._waitDeletingPrepare($removedItemElement).done(function() {\r\n                if (isPartialRefresh) {\r\n                    _this6._updateIndicesAfterIndex(index - 1);\r\n                    _this6._afterItemElementDeleted($removedItemElement, deletedActionArgs);\r\n                    _this6._updateSelectionAfterRemoveByChange(index)\r\n                } else {\r\n                    _this6._deleteItemElementByIndex(index);\r\n                    _this6._afterItemElementDeleted($removedItemElement, deletedActionArgs)\r\n                }\r\n            });\r\n            this._correctionIndex--\r\n        }\r\n    },\r\n    _modifyByChanges: function(changes, isPartialRefresh) {\r\n        var _this7 = this;\r\n        var items = this._editStrategy.itemsGetter();\r\n        var keyInfo = {\r\n            key: this.key.bind(this),\r\n            keyOf: this.keyOf.bind(this)\r\n        };\r\n        var dataSource = this._dataSource;\r\n        var paginate = dataSource && dataSource.paginate();\r\n        var group = dataSource && dataSource.group();\r\n        if (paginate || group) {\r\n            changes = changes.filter(function(item) {\r\n                return \"insert\" !== item.type || void 0 !== item.index\r\n            })\r\n        }\r\n        changes.forEach(function(change) {\r\n            return _this7[\"_\".concat(change.type, \"ByChange\")](keyInfo, items, change, isPartialRefresh)\r\n        });\r\n        this._renderedItemsCount = items.length;\r\n        this._refreshItemsCache();\r\n        this._fireContentReadyAction()\r\n    },\r\n    _appendItemToContainer: function($container, $itemFrame, index) {\r\n        var nextSiblingElement = $container.children(this._itemSelector()).get(index);\r\n        _dom_adapter.default.insertElement($container.get(0), $itemFrame.get(0), nextSiblingElement)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"items\":\r\n                var isItemsUpdated = this._partialRefresh(args.value);\r\n                if (!isItemsUpdated) {\r\n                    this.callBase(args)\r\n                }\r\n                break;\r\n            case \"dataSource\":\r\n                if (!this.option(\"repaintChangesOnly\") || !args.value) {\r\n                    this.option(\"items\", [])\r\n                }\r\n                this.callBase(args);\r\n                break;\r\n            case \"repaintChangesOnly\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/polar_chart.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../core/utils/common\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _utils = require(\"./core/utils\");\r\nvar _advanced_chart = require(\"./chart_components/advanced_chart\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _annotations = require(\"./core/annotations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_PANE_NAME = \"default\";\r\nvar DOUBLE_PI_ANGLE = 360;\r\nvar dxPolarChart = _advanced_chart.AdvancedChart.inherit({\r\n    _themeSection: \"polar\",\r\n    _createPanes: function() {\r\n        this.callBase();\r\n        return [{\r\n            name: DEFAULT_PANE_NAME\r\n        }]\r\n    },\r\n    _checkPaneName: function() {\r\n        return true\r\n    },\r\n    _getAxisRenderingOptions: function(typeSelector) {\r\n        var isArgumentAxis = \"argumentAxis\" === typeSelector;\r\n        var type = isArgumentAxis ? \"circular\" : \"linear\";\r\n        var useSpiderWeb = this.option(\"useSpiderWeb\");\r\n        if (useSpiderWeb) {\r\n            type += \"Spider\"\r\n        }\r\n        return {\r\n            axisType: \"polarAxes\",\r\n            drawingType: type\r\n        }\r\n    },\r\n    _prepareAxisOptions: function(typeSelector, axisOptions) {\r\n        var isArgumentAxis = \"argumentAxis\" === typeSelector;\r\n        var themeManager = this._themeManager;\r\n        var axisUserOptions = this.option(\"argumentAxis\");\r\n        var argumentAxisOptions = themeManager.getOptions(\"argumentAxis\", axisUserOptions) || {};\r\n        var startAngle = isFinite(argumentAxisOptions.startAngle) ? (0, _utils.normalizeAngle)(argumentAxisOptions.startAngle) : 0;\r\n        return {\r\n            type: this.option(\"useSpiderWeb\") && isArgumentAxis ? \"discrete\" : axisOptions.type,\r\n            isHorizontal: true,\r\n            showCustomBoundaryTicks: isArgumentAxis,\r\n            startAngle: startAngle,\r\n            endAngle: startAngle + 360\r\n        }\r\n    },\r\n    _optionChangesMap: {\r\n        useSpiderWeb: \"AXES_AND_PANES\"\r\n    },\r\n    _getExtraOptions: function() {\r\n        return {\r\n            spiderWidget: this.option(\"useSpiderWeb\")\r\n        }\r\n    },\r\n    _prepareToRender: function() {\r\n        this._appendAxesGroups();\r\n        return {}\r\n    },\r\n    _calcCanvas: function() {\r\n        var canvas = (0, _extend.extend)({}, this._canvas);\r\n        var argumentAxis = this.getArgumentAxis();\r\n        var margins = argumentAxis.getMargins();\r\n        Object.keys(margins).forEach(function(margin) {\r\n            return canvas[margin] = canvas[\"original\".concat(margin[0].toUpperCase()).concat(margin.slice(1))] + margins[margin]\r\n        });\r\n        return canvas\r\n    },\r\n    _renderAxes: function(drawOptions) {\r\n        var that = this;\r\n        var valueAxis = that._getValueAxis();\r\n        var argumentAxis = that.getArgumentAxis();\r\n        argumentAxis.draw(that._canvas);\r\n        valueAxis.setSpiderTicks(argumentAxis.getSpiderTicks());\r\n        var canvas = that._calcCanvas();\r\n        argumentAxis.updateSize(canvas);\r\n        valueAxis.draw(canvas);\r\n        return canvas\r\n    },\r\n    _getValueAxis: function() {\r\n        return this._valueAxes[0]\r\n    },\r\n    _shrinkAxes: function(sizeStorage) {\r\n        var valueAxis = this._getValueAxis();\r\n        var argumentAxis = this.getArgumentAxis();\r\n        if (sizeStorage && (sizeStorage.width || sizeStorage.height)) {\r\n            argumentAxis.hideOuterElements();\r\n            var canvas = this._calcCanvas();\r\n            argumentAxis.updateSize(canvas);\r\n            valueAxis.updateSize(canvas)\r\n        }\r\n    },\r\n    checkForMoreSpaceForPanesCanvas: function() {\r\n        return this.layoutManager.needMoreSpaceForPanesCanvas([{\r\n            canvas: this.getArgumentAxis().getCanvas()\r\n        }], this._isRotated())\r\n    },\r\n    _getLayoutTargets: function() {\r\n        return [{\r\n            canvas: this._canvas\r\n        }]\r\n    },\r\n    _getSeriesForPane: function() {\r\n        return this.series\r\n    },\r\n    _applyClipRects: function() {\r\n        var canvasClipRectID = this._getCanvasClipRectID();\r\n        this._createClipPathForPane();\r\n        this.getArgumentAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID);\r\n        this._getValueAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID)\r\n    },\r\n    _createClipPathForPane: function() {\r\n        var that = this;\r\n        var valueAxis = that._getValueAxis();\r\n        var center = valueAxis.getCenter();\r\n        var radius = valueAxis.getRadius();\r\n        var panesClipRects = that._panesClipRects;\r\n        center = {\r\n            x: Math.round(center.x),\r\n            y: Math.round(center.y)\r\n        };\r\n        that._createClipCircle(panesClipRects.fixed, center.x, center.y, radius);\r\n        that._createClipCircle(panesClipRects.base, center.x, center.y, radius);\r\n        if (that.series.some(function(s) {\r\n                return s.areErrorBarsVisible()\r\n            })) {\r\n            that._createClipCircle(panesClipRects.wide, center.x, center.y, radius)\r\n        } else {\r\n            panesClipRects.wide[0] = null\r\n        }\r\n    },\r\n    _createClipCircle: function(clipArray, left, top, radius) {\r\n        var that = this;\r\n        var clipCircle = clipArray[0];\r\n        if (!clipCircle) {\r\n            clipCircle = that._renderer.clipCircle(left, top, radius);\r\n            clipArray[0] = clipCircle\r\n        } else {\r\n            clipCircle.attr({\r\n                cx: left,\r\n                cy: top,\r\n                r: radius\r\n            })\r\n        }\r\n    },\r\n    _applyExtraSettings: function(series) {\r\n        var wideClipRect = this._panesClipRects.wide[0];\r\n        series.setClippingParams(this._panesClipRects.base[0].id, wideClipRect && wideClipRect.id, false, false)\r\n    },\r\n    getActualAngle: function(angle) {\r\n        return this.getArgumentAxis().getOptions().inverted ? DOUBLE_PI_ANGLE - angle : angle\r\n    },\r\n    getXYFromPolar: function(angle, radius, argument, value) {\r\n        var layoutInfo = {\r\n            angle: void 0,\r\n            radius: void 0,\r\n            x: void 0,\r\n            y: void 0\r\n        };\r\n        if (!(0, _type.isDefined)(angle) && !(0, _type.isDefined)(radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(value)) {\r\n            return layoutInfo\r\n        }\r\n        var argAxis = this.getArgumentAxis();\r\n        var startAngle = argAxis.getAngles()[0];\r\n        var argAngle;\r\n        var translatedRadius;\r\n        if ((0, _type.isDefined)(argument)) {\r\n            argAngle = argAxis.getTranslator().translate(argument)\r\n        } else {\r\n            if (isFinite(angle)) {\r\n                argAngle = this.getActualAngle(angle)\r\n            } else {\r\n                if (!(0, _type.isDefined)(angle)) {\r\n                    argAngle = 0\r\n                }\r\n            }\r\n        }\r\n        if ((0, _type.isDefined)(value)) {\r\n            translatedRadius = this.getValueAxis().getTranslator().translate(value)\r\n        } else {\r\n            if (isFinite(radius)) {\r\n                translatedRadius = radius\r\n            } else {\r\n                if (!(0, _type.isDefined)(radius)) {\r\n                    translatedRadius = argAxis.getRadius()\r\n                }\r\n            }\r\n        }\r\n        if ((0, _type.isDefined)(argAngle) && (0, _type.isDefined)(translatedRadius)) {\r\n            var coords = (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, argAngle, translatedRadius);\r\n            (0, _extend.extend)(layoutInfo, coords, {\r\n                angle: argAxis.getTranslatedAngle(argAngle),\r\n                radius: translatedRadius\r\n            })\r\n        }\r\n        return layoutInfo\r\n    },\r\n    _applyPointMarkersAutoHiding: _common.noop,\r\n    _createScrollBar: _common.noop,\r\n    _isRotated: _common.noop,\r\n    _getCrosshairOptions: _common.noop,\r\n    _isLegendInside: _common.noop\r\n});\r\ndxPolarChart.addPlugin(_annotations.plugins.core);\r\ndxPolarChart.addPlugin(_annotations.plugins.polarChart);\r\n(0, _component_registrator.default)(\"dxPolarChart\", dxPolarChart);\r\nvar _default = dxPolarChart;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/cache.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.cache = exports.Cache = void 0;\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar Cache = function() {\r\n    function Cache() {\r\n        _classCallCheck(this, Cache);\r\n        this._init()\r\n    }\r\n    _createClass(Cache, [{\r\n        key: \"_init\",\r\n        value: function() {\r\n            this._cache = new Map\r\n        }\r\n    }, {\r\n        key: \"clear\",\r\n        value: function() {\r\n            this._init()\r\n        }\r\n    }, {\r\n        key: \"get\",\r\n        value: function(name, callback) {\r\n            if (!this._cache.has(name) && callback) {\r\n                this.set(name, callback())\r\n            }\r\n            return this._cache.get(name)\r\n        }\r\n    }, {\r\n        key: \"set\",\r\n        value: function(name, value) {\r\n            (0, _type.isDefined)(value) && this._cache.set(name, value)\r\n        }\r\n    }, {\r\n        key: \"size\",\r\n        get: function() {\r\n            return this._cache.size\r\n        }\r\n    }]);\r\n    return Cache\r\n}();\r\nexports.Cache = Cache;\r\nvar cache = new Cache;\r\nexports.cache = cache;\r\n","/**\r\n * DevExtreme (viz/core/series_family.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.SeriesFamily = SeriesFamily;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"./utils\");\r\nvar round = Math.round,\r\n    abs = Math.abs,\r\n    pow = Math.pow,\r\n    sqrt = Math.sqrt;\r\nvar _min = Math.min;\r\nvar DEFAULT_BAR_GROUP_PADDING = .3;\r\n\r\nfunction validateBarPadding(barPadding) {\r\n    return barPadding < 0 || barPadding > 1 ? void 0 : barPadding\r\n}\r\n\r\nfunction validateBarGroupPadding(barGroupPadding) {\r\n    return barGroupPadding < 0 || barGroupPadding > 1 ? DEFAULT_BAR_GROUP_PADDING : barGroupPadding\r\n}\r\n\r\nfunction isStackExist(series, arg) {\r\n    return series.some(function(s) {\r\n        return !s.getOptions().ignoreEmptyPoints || s.getPointsByArg(arg, true).some(function(point) {\r\n            return point.hasValue()\r\n        })\r\n    })\r\n}\r\n\r\nfunction correctStackCoordinates(series, currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback) {\r\n    series.forEach(function(series) {\r\n        var stackIndex = seriesStackIndexCallback(currentStacks.indexOf(stack), currentStacks.length);\r\n        var points = series.getPointsByArg(arg, true);\r\n        var barPadding = validateBarPadding(series.getOptions().barPadding);\r\n        var barWidth = series.getOptions().barWidth;\r\n        var offset = getOffset(stackIndex, parameters);\r\n        var width = parameters.width;\r\n        var extraParameters;\r\n        if (stackIndex === -1) {\r\n            return\r\n        }\r\n        if ((0, _type.isDefined)(barPadding) || (0, _type.isDefined)(barWidth)) {\r\n            extraParameters = calculateParams(barsArea, currentStacks.length, 1 - barPadding, barWidth);\r\n            width = extraParameters.width;\r\n            offset = getOffset(stackIndex, extraParameters)\r\n        }\r\n        correctPointCoordinates(points, width, offset)\r\n    })\r\n}\r\n\r\nfunction adjustBarSeriesDimensionsCore(series, options, seriesStackIndexCallback) {\r\n    var commonStacks = [];\r\n    var allArguments = [];\r\n    var seriesInStacks = {};\r\n    var barGroupWidth = options.barGroupWidth;\r\n    var interval = series[0] && series[0].getArgumentAxis().getTranslator().getInterval();\r\n    var barsArea = barGroupWidth ? interval > barGroupWidth ? barGroupWidth : interval : interval * (1 - validateBarGroupPadding(options.barGroupPadding));\r\n    series.forEach(function(s, i) {\r\n        var stackName = s.getStackName() || s.getBarOverlapGroup() || i.toString();\r\n        var argument;\r\n        for (argument in s.pointsByArgument) {\r\n            if (allArguments.indexOf(argument.valueOf()) === -1) {\r\n                allArguments.push(argument.valueOf())\r\n            }\r\n        }\r\n        if (commonStacks.indexOf(stackName) === -1) {\r\n            commonStacks.push(stackName);\r\n            seriesInStacks[stackName] = []\r\n        }\r\n        seriesInStacks[stackName].push(s)\r\n    });\r\n    allArguments.forEach(function(arg) {\r\n        var currentStacks = commonStacks.reduce(function(stacks, stack) {\r\n            if (isStackExist(seriesInStacks[stack], arg)) {\r\n                stacks.push(stack)\r\n            }\r\n            return stacks\r\n        }, []);\r\n        var parameters = calculateParams(barsArea, currentStacks.length);\r\n        commonStacks.forEach(function(stack) {\r\n            correctStackCoordinates(seriesInStacks[stack], currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback)\r\n        })\r\n    })\r\n}\r\n\r\nfunction calculateParams(barsArea, count, percentWidth, fixedBarWidth) {\r\n    var spacing;\r\n    var width;\r\n    if (fixedBarWidth) {\r\n        width = _min(fixedBarWidth, round(barsArea / count));\r\n        spacing = count > 1 ? round((barsArea - width * count) / (count - 1)) : 0\r\n    } else {\r\n        if ((0, _type.isDefined)(percentWidth)) {\r\n            width = round(barsArea * percentWidth / count);\r\n            spacing = round(count > 1 ? (barsArea - barsArea * percentWidth) / (count - 1) : 0)\r\n        } else {\r\n            spacing = round(barsArea / count * .2);\r\n            width = round((barsArea - spacing * (count - 1)) / count)\r\n        }\r\n    }\r\n    return {\r\n        width: width > 1 ? width : 1,\r\n        spacing: spacing,\r\n        middleIndex: count / 2\r\n    }\r\n}\r\n\r\nfunction getOffset(stackIndex, parameters) {\r\n    return (stackIndex - parameters.middleIndex + .5) * parameters.width - (parameters.middleIndex - stackIndex - .5) * parameters.spacing\r\n}\r\n\r\nfunction correctPointCoordinates(points, width, offset) {\r\n    (0, _iterator.each)(points, function(_, point) {\r\n        point.correctCoordinates({\r\n            width: width,\r\n            offset: offset\r\n        })\r\n    })\r\n}\r\n\r\nfunction getValueType(value) {\r\n    return value >= 0 ? \"positive\" : \"negative\"\r\n}\r\n\r\nfunction getVisibleSeries(that) {\r\n    return that.series.filter(function(s) {\r\n        return s.isVisible()\r\n    })\r\n}\r\n\r\nfunction getAbsStackSumByArg(stackKeepers, stackName, argument) {\r\n    var positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;\r\n    var negativeStackValue = -(stackKeepers.negative[stackName] || {})[argument] || 0;\r\n    return positiveStackValue + negativeStackValue\r\n}\r\n\r\nfunction getStackSumByArg(stackKeepers, stackName, argument) {\r\n    var positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;\r\n    var negativeStackValue = (stackKeepers.negative[stackName] || {})[argument] || 0;\r\n    return positiveStackValue + negativeStackValue\r\n}\r\n\r\nfunction getSeriesStackIndexCallback(inverted) {\r\n    if (!inverted) {\r\n        return function(index) {\r\n            return index\r\n        }\r\n    } else {\r\n        return function(index, stackCount) {\r\n            return stackCount - index - 1\r\n        }\r\n    }\r\n}\r\n\r\nfunction isInverted(series) {\r\n    return series[0] && series[0].getArgumentAxis().getTranslator().isInverted()\r\n}\r\n\r\nfunction adjustBarSeriesDimensions() {\r\n    var series = getVisibleSeries(this);\r\n    adjustBarSeriesDimensionsCore(series, this._options, getSeriesStackIndexCallback(isInverted(series)))\r\n}\r\n\r\nfunction getFirstValueSign(series) {\r\n    var points = series.getPoints();\r\n    var value;\r\n    for (var i = 0; i < points.length; i++) {\r\n        var point = points[i];\r\n        value = point.initialValue && point.initialValue.valueOf();\r\n        if (abs(value) > 0) {\r\n            break\r\n        }\r\n    }\r\n    return (0, _math.sign)(value)\r\n}\r\n\r\nfunction adjustStackedSeriesValues() {\r\n    var that = this;\r\n    var negativesAsZeroes = that._options.negativesAsZeroes;\r\n    var series = getVisibleSeries(that);\r\n    var stackKeepers = {\r\n        positive: {},\r\n        negative: {}\r\n    };\r\n    var holesStack = {\r\n        left: {},\r\n        right: {}\r\n    };\r\n    var lastSeriesInPositiveStack = {};\r\n    var lastSeriesInNegativeStack = {};\r\n    series.forEach(function(singleSeries) {\r\n        var stackName = singleSeries.getStackName() || singleSeries.getBarOverlapGroup();\r\n        var hole = false;\r\n        var stack = getFirstValueSign(singleSeries) < 0 ? lastSeriesInNegativeStack : lastSeriesInPositiveStack;\r\n        singleSeries._prevSeries = stack[stackName];\r\n        stack[stackName] = singleSeries;\r\n        singleSeries.holes = (0, _extend.extend)(true, {}, holesStack);\r\n        singleSeries.getPoints().forEach(function(point, index, points) {\r\n            var value = point.initialValue && point.initialValue.valueOf();\r\n            var argument = point.argument.valueOf();\r\n            var stacks = value >= 0 ? stackKeepers.positive : stackKeepers.negative;\r\n            var isNotBarSeries = \"bar\" !== singleSeries.type;\r\n            if (negativesAsZeroes && value < 0) {\r\n                stacks = stackKeepers.positive;\r\n                value = 0;\r\n                point.resetValue()\r\n            }\r\n            stacks[stackName] = stacks[stackName] || {};\r\n            var currentStack = stacks[stackName];\r\n            if (currentStack[argument]) {\r\n                if (isNotBarSeries) {\r\n                    point.correctValue(currentStack[argument])\r\n                }\r\n                currentStack[argument] += value\r\n            } else {\r\n                currentStack[argument] = value;\r\n                if (isNotBarSeries) {\r\n                    point.resetCorrection()\r\n                }\r\n            }\r\n            if (!point.hasValue()) {\r\n                var prevPoint = points[index - 1];\r\n                if (!hole && prevPoint && prevPoint.hasValue()) {\r\n                    argument = prevPoint.argument.valueOf();\r\n                    prevPoint._skipSetRightHole = true;\r\n                    holesStack.right[argument] = (holesStack.right[argument] || 0) + (prevPoint.value.valueOf() - (isFinite(prevPoint.minValue) ? prevPoint.minValue.valueOf() : 0))\r\n                }\r\n                hole = true\r\n            } else {\r\n                if (hole) {\r\n                    hole = false;\r\n                    holesStack.left[argument] = (holesStack.left[argument] || 0) + (point.value.valueOf() - (isFinite(point.minValue) ? point.minValue.valueOf() : 0));\r\n                    point._skipSetLeftHole = true\r\n                }\r\n            }\r\n        })\r\n    });\r\n    series.forEach(function(singleSeries) {\r\n        var holes = singleSeries.holes;\r\n        singleSeries.getPoints().forEach(function(point) {\r\n            var argument = point.argument.valueOf();\r\n            point.resetHoles();\r\n            !point._skipSetLeftHole && point.setHole(holes.left[argument] || holesStack.left[argument] && 0, \"left\");\r\n            !point._skipSetRightHole && point.setHole(holes.right[argument] || holesStack.right[argument] && 0, \"right\");\r\n            point._skipSetLeftHole = null;\r\n            point._skipSetRightHole = null\r\n        })\r\n    });\r\n    that._stackKeepers = stackKeepers;\r\n    series.forEach(function(singleSeries) {\r\n        singleSeries.getPoints().forEach(function(point) {\r\n            var argument = point.argument.valueOf();\r\n            var stackName = singleSeries.getStackName() || singleSeries.getBarOverlapGroup();\r\n            var absTotal = getAbsStackSumByArg(stackKeepers, stackName, argument);\r\n            var total = getStackSumByArg(stackKeepers, stackName, argument);\r\n            point.setPercentValue(absTotal, total, holesStack.left[argument], holesStack.right[argument])\r\n        })\r\n    })\r\n}\r\n\r\nfunction updateStackedSeriesValues() {\r\n    var that = this;\r\n    var series = getVisibleSeries(that);\r\n    var stack = that._stackKeepers;\r\n    var stackKeepers = {\r\n        positive: {},\r\n        negative: {}\r\n    };\r\n    (0, _iterator.each)(series, function(_, singleSeries) {\r\n        var minBarSize = singleSeries.getOptions().minBarSize;\r\n        var valueAxisTranslator = singleSeries.getValueAxis().getTranslator();\r\n        var minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);\r\n        var stackName = singleSeries.getStackName();\r\n        (0, _iterator.each)(singleSeries.getPoints(), function(index, point) {\r\n            if (!point.hasValue()) {\r\n                return\r\n            }\r\n            var value = point.initialValue && point.initialValue.valueOf();\r\n            var argument = point.argument.valueOf();\r\n            if (that.fullStacked) {\r\n                value = value / getAbsStackSumByArg(stack, stackName, argument) || 0\r\n            }\r\n            var updateValue = valueAxisTranslator.checkMinBarSize(value, minShownBusinessValue, point.value);\r\n            var valueType = getValueType(updateValue);\r\n            var currentStack = stackKeepers[valueType][stackName] = stackKeepers[valueType][stackName] || {};\r\n            if (currentStack[argument]) {\r\n                point.minValue = currentStack[argument];\r\n                currentStack[argument] += updateValue\r\n            } else {\r\n                currentStack[argument] = updateValue\r\n            }\r\n            point.value = currentStack[argument]\r\n        })\r\n    });\r\n    if (that.fullStacked) {\r\n        updateFullStackedSeriesValues(series, stackKeepers)\r\n    }\r\n}\r\n\r\nfunction updateFullStackedSeriesValues(series, stackKeepers) {\r\n    (0, _iterator.each)(series, function(_, singleSeries) {\r\n        var stackName = singleSeries.getStackName ? singleSeries.getStackName() : \"default\";\r\n        (0, _iterator.each)(singleSeries.getPoints(), function(index, point) {\r\n            var stackSum = getAbsStackSumByArg(stackKeepers, stackName, point.argument.valueOf());\r\n            if (0 !== stackSum) {\r\n                point.value = point.value / stackSum;\r\n                if ((0, _type.isNumeric)(point.minValue)) {\r\n                    point.minValue = point.minValue / stackSum\r\n                }\r\n            }\r\n        })\r\n    })\r\n}\r\n\r\nfunction updateBarSeriesValues() {\r\n    (0, _iterator.each)(this.series, function(_, singleSeries) {\r\n        var minBarSize = singleSeries.getOptions().minBarSize;\r\n        var valueAxisTranslator = singleSeries.getValueAxis().getTranslator();\r\n        var minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);\r\n        if (minShownBusinessValue) {\r\n            (0, _iterator.each)(singleSeries.getPoints(), function(index, point) {\r\n                if (point.hasValue()) {\r\n                    point.value = valueAxisTranslator.checkMinBarSize(point.initialValue, minShownBusinessValue)\r\n                }\r\n            })\r\n        }\r\n    })\r\n}\r\n\r\nfunction adjustCandlestickSeriesDimensions() {\r\n    var series = getVisibleSeries(this);\r\n    adjustBarSeriesDimensionsCore(series, {\r\n        barGroupPadding: .3\r\n    }, getSeriesStackIndexCallback(isInverted(series)))\r\n}\r\n\r\nfunction adjustBubbleSeriesDimensions() {\r\n    var series = getVisibleSeries(this);\r\n    if (!series.length) {\r\n        return\r\n    }\r\n    var options = this._options;\r\n    var visibleAreaX = series[0].getArgumentAxis().getVisibleArea();\r\n    var visibleAreaY = series[0].getValueAxis().getVisibleArea();\r\n    var min = _min(visibleAreaX[1] - visibleAreaX[0], visibleAreaY[1] - visibleAreaY[0]);\r\n    var minBubbleArea = pow(options.minBubbleSize, 2);\r\n    var maxBubbleArea = pow(min * options.maxBubbleSize, 2);\r\n    var equalBubbleSize = (min * options.maxBubbleSize + options.minBubbleSize) / 2;\r\n    var minPointSize = 1 / 0;\r\n    var maxPointSize = -(1 / 0);\r\n    var pointSize;\r\n    var bubbleArea;\r\n    var sizeProportion;\r\n    (0, _iterator.each)(series, function(_, seriesItem) {\r\n        (0, _iterator.each)(seriesItem.getPoints(), function(_, point) {\r\n            maxPointSize = maxPointSize > point.size ? maxPointSize : point.size;\r\n            minPointSize = minPointSize < point.size ? minPointSize : point.size\r\n        })\r\n    });\r\n    var sizeDispersion = maxPointSize - minPointSize;\r\n    var areaDispersion = abs(maxBubbleArea - minBubbleArea);\r\n    (0, _iterator.each)(series, function(_, seriesItem) {\r\n        (0, _iterator.each)(seriesItem.getPoints(), function(_, point) {\r\n            if (maxPointSize === minPointSize) {\r\n                pointSize = round(equalBubbleSize)\r\n            } else {\r\n                sizeProportion = abs(point.size - minPointSize) / sizeDispersion;\r\n                bubbleArea = areaDispersion * sizeProportion + minBubbleArea;\r\n                pointSize = round(sqrt(bubbleArea))\r\n            }\r\n            point.correctCoordinates(pointSize)\r\n        })\r\n    })\r\n}\r\n\r\nfunction SeriesFamily(options) {\r\n    var that = this;\r\n    that.type = (0, _utils.normalizeEnum)(options.type);\r\n    that.pane = options.pane;\r\n    that.series = [];\r\n    that.updateOptions(options);\r\n    switch (that.type) {\r\n        case \"bar\":\r\n            that.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n            that.updateSeriesValues = updateBarSeriesValues;\r\n            that.adjustSeriesValues = adjustStackedSeriesValues;\r\n            break;\r\n        case \"rangebar\":\r\n            that.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n            break;\r\n        case \"fullstackedbar\":\r\n            that.fullStacked = true;\r\n            that.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n            that.adjustSeriesValues = adjustStackedSeriesValues;\r\n            that.updateSeriesValues = updateStackedSeriesValues;\r\n            break;\r\n        case \"stackedbar\":\r\n            that.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n            that.adjustSeriesValues = adjustStackedSeriesValues;\r\n            that.updateSeriesValues = updateStackedSeriesValues;\r\n            break;\r\n        case \"fullstackedarea\":\r\n        case \"fullstackedline\":\r\n        case \"fullstackedspline\":\r\n        case \"fullstackedsplinearea\":\r\n            that.fullStacked = true;\r\n            that.adjustSeriesValues = adjustStackedSeriesValues;\r\n            break;\r\n        case \"stackedarea\":\r\n        case \"stackedsplinearea\":\r\n        case \"stackedline\":\r\n        case \"stackedspline\":\r\n            that.adjustSeriesValues = adjustStackedSeriesValues;\r\n            break;\r\n        case \"candlestick\":\r\n        case \"stock\":\r\n            that.adjustSeriesDimensions = adjustCandlestickSeriesDimensions;\r\n            break;\r\n        case \"bubble\":\r\n            that.adjustSeriesDimensions = adjustBubbleSeriesDimensions\r\n    }\r\n}\r\nSeriesFamily.prototype = {\r\n    constructor: SeriesFamily,\r\n    adjustSeriesDimensions: _common.noop,\r\n    adjustSeriesValues: _common.noop,\r\n    updateSeriesValues: _common.noop,\r\n    updateOptions: function(options) {\r\n        this._options = options\r\n    },\r\n    dispose: function() {\r\n        this.series = null\r\n    },\r\n    add: function(series) {\r\n        var type = this.type;\r\n        this.series = (0, _utils.map)(series, function(singleSeries) {\r\n            return singleSeries.type === type ? singleSeries : null\r\n        })\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (viz/vector_map/vector_map.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _projection = require(\"./projection.main\");\r\nvar _control_bar = require(\"./control_bar\");\r\nvar _gesture_handler = require(\"./gesture_handler\");\r\nvar _tracker = require(\"./tracker\");\r\nvar _data_exchanger = require(\"./data_exchanger\");\r\nvar _legend = require(\"./legend\");\r\nvar _layout = require(\"./layout\");\r\nvar _map_layer = require(\"./map_layer\");\r\nvar _tooltip_viewer = require(\"./tooltip_viewer\");\r\nvar _vector_map = require(\"./vector_map.utils\");\r\nrequire(\"./projection\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _export = require(\"../core/export\");\r\nvar _title = require(\"../core/title\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _loading_indicator = require(\"../core/loading_indicator\");\r\nvar _annotations = require(\"../core/annotations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_WIDTH = 800;\r\nvar DEFAULT_HEIGHT = 400;\r\nvar RE_STARTS_LAYERS = /^layers/;\r\nvar RE_ENDS_DATA_SOURCE = /\\.dataSource$/;\r\n\r\nfunction mergeBounds(sumBounds, dataBounds) {\r\n    return dataBounds ? [Math.min(dataBounds[0], dataBounds[2], sumBounds[0]), Math.min(dataBounds[1], dataBounds[3], sumBounds[3]), Math.max(dataBounds[0], dataBounds[2], sumBounds[2]), Math.max(dataBounds[1], dataBounds[3], sumBounds[1])] : sumBounds\r\n}\r\nvar dxVectorMap = _base_widget.default.inherit({\r\n    _eventsMap: {\r\n        onClick: {\r\n            name: \"click\"\r\n        },\r\n        onCenterChanged: {\r\n            name: \"centerChanged\"\r\n        },\r\n        onZoomFactorChanged: {\r\n            name: \"zoomFactorChanged\"\r\n        },\r\n        onHoverChanged: {\r\n            name: \"hoverChanged\"\r\n        },\r\n        onSelectionChanged: {\r\n            name: \"selectionChanged\"\r\n        }\r\n    },\r\n    _rootClassPrefix: \"dxm\",\r\n    _rootClass: \"dxm-vector-map\",\r\n    _themeSection: \"map\",\r\n    _fontFields: [\"layer:area.label.font\", \"layer:marker:dot.label.font\", \"layer:marker:bubble.label.font\", \"layer:marker:pie.label.font\", \"layer:marker:image.label.font\", \"legend.font\", \"legend.title.font\", \"legend.title.subtitle.font\"],\r\n    _initLayerCollection: function(dataKey) {\r\n        var that = this;\r\n        that._layerCollection = new _map_layer.MapLayerCollection({\r\n            renderer: that._renderer,\r\n            projection: that._projection,\r\n            themeManager: that._themeManager,\r\n            tracker: that._tracker,\r\n            dataKey: dataKey,\r\n            eventTrigger: that._eventTrigger,\r\n            dataExchanger: that._dataExchanger,\r\n            tooltip: that._tooltip,\r\n            notifyDirty: that._notifyDirty,\r\n            notifyReady: that._notifyReady,\r\n            dataReady: function() {\r\n                var bounds;\r\n                if (that.option(\"getBoundsFromData\") && !that.option(\"bounds\")) {\r\n                    that._preventProjectionEvents();\r\n                    bounds = that._getBoundsFromData();\r\n                    that._projection.setBounds(bounds);\r\n                    that._allowProjectionEvents()\r\n                }\r\n                if (!that.option(\"projection\")) {\r\n                    bounds = bounds || that._getBoundsFromData();\r\n                    if (Math.ceil(bounds[0]) < -180 || Math.ceil(bounds[3]) < -90 || Math.floor(bounds[2]) > 180 || Math.floor(bounds[1]) > 90) {\r\n                        var longitudeLength = bounds[2] - bounds[0];\r\n                        var latitudeLength = bounds[1] - bounds[3];\r\n                        that._projection.setEngine({\r\n                            to: function(coordinates) {\r\n                                return [2 * (coordinates[0] - bounds[0]) / longitudeLength - 1, 2 * (coordinates[1] - bounds[3]) / latitudeLength - 1]\r\n                            },\r\n                            from: function(coordinates) {\r\n                                return [(coordinates[0] + 1) * longitudeLength / 2 + bounds[0], (coordinates[1] + 1) * latitudeLength / 2 + bounds[3]]\r\n                            }\r\n                        })\r\n                    }\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _getBoundsFromData: function() {\r\n        var bounds = this._getBoundingBoxFromDataSource();\r\n        if (!bounds) {\r\n            var boundsByData = (0, _map_layer.getMaxBound)(this.getLayers().map(function(l) {\r\n                return l.getBounds()\r\n            }));\r\n            if (boundsByData) {\r\n                bounds = boundsByData\r\n            }\r\n        }\r\n        bounds = bounds || [];\r\n        bounds = [bounds[0], bounds[3], bounds[2], bounds[1]];\r\n        return bounds\r\n    },\r\n    _initLegendsControl: function() {\r\n        var that = this;\r\n        that._legendsControl = new _legend.LegendsControl({\r\n            renderer: that._renderer,\r\n            container: that._root,\r\n            widget: that,\r\n            layoutControl: that._layoutControl,\r\n            themeManager: that._themeManager,\r\n            dataExchanger: that._dataExchanger,\r\n            notifyDirty: that._notifyDirty,\r\n            notifyReady: that._notifyReady\r\n        })\r\n    },\r\n    _initControlBar: function(dataKey) {\r\n        var that = this;\r\n        that._controlBar = new _control_bar.ControlBar({\r\n            renderer: that._renderer,\r\n            container: that._root,\r\n            layoutControl: that._layoutControl,\r\n            projection: that._projection,\r\n            tracker: that._tracker,\r\n            dataKey: dataKey\r\n        })\r\n    },\r\n    _initElements: function() {\r\n        var that = this;\r\n        var dataKey = (0, _vector_map.generateDataKey)();\r\n        var notifyCounter = 0;\r\n        var preventProjectionEvents;\r\n        that._preventProjectionEvents = function() {\r\n            preventProjectionEvents = true\r\n        };\r\n        that._allowProjectionEvents = function() {\r\n            preventProjectionEvents = false\r\n        };\r\n        that._notifyDirty = function() {\r\n            that._resetIsReady();\r\n            ++notifyCounter\r\n        };\r\n        that._notifyReady = function() {\r\n            that._allowProjectionEvents();\r\n            if (0 === --notifyCounter) {\r\n                that._drawn()\r\n            }\r\n        };\r\n        that._preventProjectionEvents();\r\n        that._dataExchanger = new _data_exchanger.DataExchanger;\r\n        that._projection = new _projection.Projection({\r\n            centerChanged: function(value) {\r\n                if (!preventProjectionEvents) {\r\n                    that._eventTrigger(\"centerChanged\", {\r\n                        center: value\r\n                    })\r\n                }\r\n            },\r\n            zoomChanged: function(value) {\r\n                if (!preventProjectionEvents) {\r\n                    that._eventTrigger(\"zoomFactorChanged\", {\r\n                        zoomFactor: value\r\n                    })\r\n                }\r\n            }\r\n        });\r\n        that._tracker = new _tracker.Tracker({\r\n            root: that._root,\r\n            projection: that._projection,\r\n            dataKey: dataKey\r\n        });\r\n        that._gestureHandler = new _gesture_handler.GestureHandler({\r\n            projection: that._projection,\r\n            renderer: that._renderer,\r\n            tracker: that._tracker\r\n        });\r\n        that._layoutControl = new _layout.LayoutControl(that);\r\n        that._layoutControl.suspend();\r\n        that._initLayerCollection(dataKey);\r\n        that._createHtmlStructure();\r\n        that._initControlBar(dataKey);\r\n        that._initLegendsControl();\r\n        that._prepareExtraElements();\r\n        that._tooltipViewer = new _tooltip_viewer.TooltipViewer({\r\n            tracker: that._tracker,\r\n            tooltip: that._tooltip,\r\n            layerCollection: that._layerCollection\r\n        })\r\n    },\r\n    _change_RESUME_LAYOUT: function() {\r\n        this._layoutControl.resume()\r\n    },\r\n    _initialChanges: [\"PROJECTION\", \"RESUME_LAYOUT\", \"LAYOUT_INIT\", \"BOUNDS\", \"MAX_ZOOM_FACTOR\", \"ZOOM_FACTOR\", \"CENTER\"],\r\n    _layoutChangesOrder: [\"RESUME_LAYOUT\", \"LAYERS\"],\r\n    _customChangesOrder: [\"EXTRA_ELEMENTS\"],\r\n    _initCore: function() {\r\n        this._root = this._renderer.root.attr({\r\n            align: \"center\",\r\n            cursor: \"default\"\r\n        });\r\n        this._initElements()\r\n    },\r\n    _disposeCore: function() {\r\n        var that = this;\r\n        that._controlBar.dispose();\r\n        that._gestureHandler.dispose();\r\n        that._tracker.dispose();\r\n        that._legendsControl.dispose();\r\n        that._layerCollection.dispose();\r\n        that._layoutControl.dispose();\r\n        that._tooltipViewer.dispose();\r\n        that._dataExchanger.dispose();\r\n        that._projection.dispose();\r\n        that._dataExchanger = that._gestureHandler = that._projection = that._tracker = that._layoutControl = that._root = that._layerCollection = that._controlBar = that._legendsControl = null\r\n    },\r\n    _setupInteraction: function() {\r\n        var options = {\r\n            centeringEnabled: !!(0, _utils.parseScalar)(this._getOption(\"panningEnabled\", true), true),\r\n            zoomingEnabled: !!(0, _utils.parseScalar)(this._getOption(\"zoomingEnabled\", true), true)\r\n        };\r\n        this._gestureHandler.setInteraction(options);\r\n        this._controlBar.setInteraction(options)\r\n    },\r\n    _getDefaultSize: function() {\r\n        return {\r\n            width: DEFAULT_WIDTH,\r\n            height: DEFAULT_HEIGHT\r\n        }\r\n    },\r\n    _applySize: function(rect) {\r\n        var layout = {\r\n            left: rect[0],\r\n            top: rect[1],\r\n            width: rect[2] - rect[0],\r\n            height: rect[3] - rect[1],\r\n            right: 0,\r\n            bottom: 0\r\n        };\r\n        this._projection.setSize(layout);\r\n        this._layoutControl.setSize(layout);\r\n        this._layerCollection.setRect([layout.left, layout.top, layout.width, layout.height]);\r\n        this._requestChange([\"EXTRA_ELEMENTS\"])\r\n    },\r\n    _optionChanging: function(name, currentValue, nextValue) {\r\n        if (currentValue && nextValue) {\r\n            if (RE_STARTS_LAYERS.test(name)) {\r\n                if (currentValue.dataSource && nextValue.dataSource && currentValue !== nextValue) {\r\n                    currentValue.dataSource = null\r\n                } else {\r\n                    if (RE_ENDS_DATA_SOURCE.test(name)) {\r\n                        this.option(name, null)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _applyChanges: function() {\r\n        this._notifyDirty();\r\n        this.callBase.apply(this, arguments);\r\n        this._notifyReady()\r\n    },\r\n    _optionChangesMap: {\r\n        background: \"BACKGROUND\",\r\n        layers: \"LAYERS\",\r\n        extraElements: \"EXTRA_ELEMENTS\",\r\n        controlBar: \"CONTROL_BAR\",\r\n        legends: \"LEGENDS\",\r\n        touchEnabled: \"TRACKER\",\r\n        wheelEnabled: \"TRACKER\",\r\n        panningEnabled: \"INTERACTION\",\r\n        zoomingEnabled: \"INTERACTION\",\r\n        projection: \"PROJECTION\",\r\n        bounds: \"BOUNDS\",\r\n        maxZoomFactor: \"MAX_ZOOM_FACTOR\",\r\n        zoomFactor: \"ZOOM_FACTOR\",\r\n        center: \"CENTER\"\r\n    },\r\n    _optionChangesOrder: [\"PROJECTION\", \"BOUNDS\", \"MAX_ZOOM_FACTOR\", \"ZOOM_FACTOR\", \"CENTER\", \"BACKGROUND\", \"CONTROL_BAR\", \"LEGENDS\", \"TRACKER\", \"INTERACTION\"],\r\n    _change_PROJECTION: function() {\r\n        this._setProjection()\r\n    },\r\n    _change_BOUNDS: function() {\r\n        this._setBounds()\r\n    },\r\n    _change_MAX_ZOOM_FACTOR: function() {\r\n        this._setMaxZoom()\r\n    },\r\n    _change_ZOOM_FACTOR: function() {\r\n        this._setZoom()\r\n    },\r\n    _change_CENTER: function() {\r\n        this._setCenter()\r\n    },\r\n    _change_BACKGROUND: function() {\r\n        this._setBackgroundOptions()\r\n    },\r\n    _change_LAYERS: function() {\r\n        this._setLayerCollectionOptions()\r\n    },\r\n    _change_CONTROL_BAR: function() {\r\n        this._setControlBarOptions()\r\n    },\r\n    _change_EXTRA_ELEMENTS: function() {\r\n        this._renderExtraElements()\r\n    },\r\n    _change_LEGENDS: function() {\r\n        this._setLegendsOptions()\r\n    },\r\n    _change_TRACKER: function() {\r\n        this._setTrackerOptions()\r\n    },\r\n    _change_INTERACTION: function() {\r\n        this._setupInteraction()\r\n    },\r\n    _themeDependentChanges: [\"BACKGROUND\", \"LAYERS\", \"CONTROL_BAR\", \"LEGENDS\", \"TRACKER\", \"INTERACTION\"],\r\n    _setProjection: function() {\r\n        this._projection.setEngine(this.option(\"projection\"))\r\n    },\r\n    _setBounds: function() {\r\n        this._projection.setBounds(this.option(\"bounds\"))\r\n    },\r\n    _setMaxZoom: function() {\r\n        this._projection.setMaxZoom(this.option(\"maxZoomFactor\"))\r\n    },\r\n    _setZoom: function() {\r\n        this._projection.setZoom(this.option(\"zoomFactor\"))\r\n    },\r\n    _setCenter: function() {\r\n        this._projection.setCenter(this.option(\"center\"))\r\n    },\r\n    _setBackgroundOptions: function() {\r\n        this._layerCollection.setBackgroundOptions(this._getOption(\"background\"))\r\n    },\r\n    _setLayerCollectionOptions: function() {\r\n        this._layerCollection.setOptions(this.option(\"layers\"))\r\n    },\r\n    _getBoundingBoxFromDataSource: function() {\r\n        var that = this;\r\n        var layers = that._layerCollection.items();\r\n        var infinityBounds = [1 / 0, -(1 / 0), -(1 / 0), 1 / 0];\r\n        var resultBBox = layers && layers.length ? layers.reduce(function(sumBBox, l) {\r\n            var layerData = l.getData();\r\n            var itemCount = layerData.count();\r\n            if (itemCount > 0) {\r\n                var rootBBox = layerData.getBBox();\r\n                if (rootBBox) {\r\n                    sumBBox = mergeBounds(sumBBox, rootBBox)\r\n                } else {\r\n                    for (var i = 0; i < itemCount; i++) {\r\n                        sumBBox = mergeBounds(sumBBox, layerData.getBBox(i))\r\n                    }\r\n                }\r\n            }\r\n            return sumBBox\r\n        }, infinityBounds) : void 0;\r\n        return resultBBox === infinityBounds ? void 0 : resultBBox\r\n    },\r\n    _setControlBarOptions: function() {\r\n        this._controlBar.setOptions(this._getOption(\"controlBar\"))\r\n    },\r\n    _setLegendsOptions: function() {\r\n        this._legendsControl.setOptions(this.option(\"legends\"))\r\n    },\r\n    _setTrackerOptions: function() {\r\n        this._tracker.setOptions({\r\n            touchEnabled: this._getOption(\"touchEnabled\", true),\r\n            wheelEnabled: this._getOption(\"wheelEnabled\", true)\r\n        })\r\n    },\r\n    getLayers: function() {\r\n        return this._layerCollection.items().map(function(l) {\r\n            return l.proxy\r\n        })\r\n    },\r\n    getLayerByIndex: function(index) {\r\n        var layer = this._layerCollection.byIndex(index);\r\n        return layer ? layer.proxy : null\r\n    },\r\n    getLayerByName: function(name) {\r\n        var layer = this._layerCollection.byName(name);\r\n        return layer ? layer.proxy : null\r\n    },\r\n    clearSelection: function(_noEvent) {\r\n        var layers = this._layerCollection.items();\r\n        var i;\r\n        var ii = layers.length;\r\n        for (i = 0; i < ii; ++i) {\r\n            layers[i].clearSelection(_noEvent)\r\n        }\r\n        return this\r\n    },\r\n    center: function(value) {\r\n        var that = this;\r\n        if (void 0 === value) {\r\n            return that._projection.getCenter()\r\n        } else {\r\n            that._projection.setCenter(value);\r\n            return that\r\n        }\r\n    },\r\n    zoomFactor: function(value) {\r\n        var that = this;\r\n        if (void 0 === value) {\r\n            return that._projection.getZoom()\r\n        } else {\r\n            that._projection.setZoom(value);\r\n            return that\r\n        }\r\n    },\r\n    viewport: function(value) {\r\n        var that = this;\r\n        if (void 0 === value) {\r\n            return that._projection.getViewport()\r\n        } else {\r\n            that._projection.setViewport(value);\r\n            return that\r\n        }\r\n    },\r\n    convertCoordinates: function(coordinates) {\r\n        coordinates = coordinates && coordinates.length ? coordinates : [arguments[0], arguments[1]];\r\n        return this.convertToGeo(coordinates[0], coordinates[1])\r\n    },\r\n    convertToGeo: function(x, y) {\r\n        return this._projection.fromScreenPoint([x, y])\r\n    },\r\n    convertToXY: function(longitude, latitude) {\r\n        return this._projection.toScreenPoint([longitude, latitude])\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxVectorMap\", dxVectorMap);\r\nvar _default = dxVectorMap;\r\nexports.default = _default;\r\ndxVectorMap.addPlugin(_export.plugin);\r\ndxVectorMap.addPlugin(_title.plugin);\r\ndxVectorMap.addPlugin(_tooltip.plugin);\r\ndxVectorMap.addPlugin(_loading_indicator.plugin);\r\ndxVectorMap.addPlugin(_annotations.plugins.core);\r\ndxVectorMap.addPlugin(_annotations.plugins.vectorMap);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/axes/xy_axes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _range = require(\"../translators/range\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _datetime_breaks = require(\"./datetime_breaks\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _axes_constants = _interopRequireDefault(require(\"./axes_constants\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getNextDateUnit = _date.default.getNextDateUnit;\r\nvar correctDateWithUnitBeginning = _date.default.correctDateWithUnitBeginning;\r\nvar _math = Math;\r\nvar _max = _math.max;\r\nvar TOP = _axes_constants.default.top;\r\nvar BOTTOM = _axes_constants.default.bottom;\r\nvar LEFT = _axes_constants.default.left;\r\nvar RIGHT = _axes_constants.default.right;\r\nvar CENTER = _axes_constants.default.center;\r\nvar SCALE_BREAK_OFFSET = 3;\r\nvar RANGE_RATIO = .3;\r\nvar WAVED_LINE_CENTER = 2;\r\nvar WAVED_LINE_TOP = 0;\r\nvar WAVED_LINE_BOTTOM = 4;\r\nvar WAVED_LINE_LENGTH = 24;\r\nvar TICKS_CORRECTIONS = {\r\n    left: -1,\r\n    top: -1,\r\n    right: 0,\r\n    bottom: 0,\r\n    center: -.5\r\n};\r\n\r\nfunction prepareDatesDifferences(datesDifferences, tickInterval) {\r\n    var dateUnitInterval;\r\n    var i;\r\n    if (\"week\" === tickInterval) {\r\n        tickInterval = \"day\"\r\n    }\r\n    if (\"quarter\" === tickInterval) {\r\n        tickInterval = \"month\"\r\n    }\r\n    if (datesDifferences[tickInterval]) {\r\n        for (i = 0; i < _date.default.dateUnitIntervals.length; i++) {\r\n            dateUnitInterval = _date.default.dateUnitIntervals[i];\r\n            if (datesDifferences[dateUnitInterval]) {\r\n                datesDifferences[dateUnitInterval] = false;\r\n                datesDifferences.count--\r\n            }\r\n            if (dateUnitInterval === tickInterval) {\r\n                break\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction sortingBreaks(breaks) {\r\n    return breaks.sort(function(a, b) {\r\n        return a.from - b.from\r\n    })\r\n}\r\n\r\nfunction getMarkerDates(min, max, markerInterval) {\r\n    var origMin = min;\r\n    var dates;\r\n    min = correctDateWithUnitBeginning(min, markerInterval);\r\n    max = correctDateWithUnitBeginning(max, markerInterval);\r\n    dates = _date.default.getSequenceByInterval(min, max, markerInterval);\r\n    if (dates.length && origMin > dates[0]) {\r\n        dates = dates.slice(1)\r\n    }\r\n    return dates\r\n}\r\n\r\nfunction getStripHorizontalAlignmentPosition(alignment) {\r\n    var position = \"start\";\r\n    if (\"center\" === alignment) {\r\n        position = \"center\"\r\n    }\r\n    if (\"right\" === alignment) {\r\n        position = \"end\"\r\n    }\r\n    return position\r\n}\r\n\r\nfunction getStripVerticalAlignmentPosition(alignment) {\r\n    var position = \"start\";\r\n    if (\"center\" === alignment) {\r\n        position = \"center\"\r\n    }\r\n    if (\"bottom\" === alignment) {\r\n        position = \"end\"\r\n    }\r\n    return position\r\n}\r\n\r\nfunction getMarkerInterval(tickInterval) {\r\n    var markerInterval = getNextDateUnit(tickInterval);\r\n    if (\"quarter\" === markerInterval) {\r\n        markerInterval = getNextDateUnit(markerInterval)\r\n    }\r\n    return markerInterval\r\n}\r\n\r\nfunction getMarkerFormat(curDate, prevDate, tickInterval, markerInterval) {\r\n    var format = markerInterval;\r\n    var datesDifferences = prevDate && _date.default.getDatesDifferences(prevDate, curDate);\r\n    if (prevDate && \"year\" !== tickInterval) {\r\n        prepareDatesDifferences(datesDifferences, tickInterval);\r\n        format = _format_helper.default.getDateFormatByDifferences(datesDifferences)\r\n    }\r\n    return format\r\n}\r\n\r\nfunction getMaxSide(act, boxes) {\r\n    return boxes.reduce(function(prevValue, box) {\r\n        return _max(prevValue, act(box))\r\n    }, 0)\r\n}\r\n\r\nfunction getDistanceByAngle(bBox, rotationAngle) {\r\n    rotationAngle = _math.abs(rotationAngle);\r\n    rotationAngle = rotationAngle % 180 >= 90 ? 90 - rotationAngle % 90 : rotationAngle % 90;\r\n    var a = rotationAngle * (_math.PI / 180);\r\n    if (a >= _math.atan(bBox.height / bBox.width)) {\r\n        return bBox.height / _math.abs(_math.sin(a))\r\n    } else {\r\n        return bBox.width\r\n    }\r\n}\r\n\r\nfunction getMaxConstantLinePadding(constantLines) {\r\n    return constantLines.reduce(function(padding, options) {\r\n        return _max(padding, options.paddingTopBottom)\r\n    }, 0)\r\n}\r\n\r\nfunction getConstantLineLabelMarginForVerticalAlignment(constantLines, alignment, labelHeight) {\r\n    return constantLines.some(function(options) {\r\n        return options.label.verticalAlignment === alignment\r\n    }) && labelHeight || 0\r\n}\r\n\r\nfunction getLeftMargin(bBox) {\r\n    return _math.abs(bBox.x) || 0\r\n}\r\n\r\nfunction getRightMargin(bBox) {\r\n    return _math.abs(bBox.width - _math.abs(bBox.x)) || 0\r\n}\r\n\r\nfunction generateRangesOnPoints(points, edgePoints, getRange) {\r\n    var i;\r\n    var length;\r\n    var maxRange = null;\r\n    var ranges = [];\r\n    var curValue;\r\n    var prevValue;\r\n    var curRange;\r\n    for (i = 1, length = points.length; i < length; i++) {\r\n        curValue = points[i];\r\n        prevValue = points[i - 1];\r\n        curRange = getRange(curValue, prevValue);\r\n        if (edgePoints.indexOf(curValue) >= 0) {\r\n            if (!maxRange || curRange > maxRange.length) {\r\n                maxRange = {\r\n                    start: curValue,\r\n                    end: prevValue,\r\n                    length: curRange\r\n                }\r\n            }\r\n        } else {\r\n            if (maxRange && curRange < maxRange.length) {\r\n                ranges.push(maxRange)\r\n            } else {\r\n                ranges.push({\r\n                    start: curValue,\r\n                    end: prevValue,\r\n                    length: curRange\r\n                })\r\n            }\r\n            maxRange = null\r\n        }\r\n    }\r\n    if (maxRange) {\r\n        ranges.push(maxRange)\r\n    }\r\n    return ranges\r\n}\r\n\r\nfunction generateAutoBreaks(_ref, series, _ref2) {\r\n    var logarithmBase = _ref.logarithmBase,\r\n        type = _ref.type,\r\n        maxAutoBreakCount = _ref.maxAutoBreakCount;\r\n    var minVisible = _ref2.minVisible,\r\n        maxVisible = _ref2.maxVisible;\r\n    var breaks = [];\r\n    var getRange = \"logarithmic\" === type ? function(min, max) {\r\n        return (0, _utils.getLog)(max / min, logarithmBase)\r\n    } : function(min, max) {\r\n        return max - min\r\n    };\r\n    var visibleRange = getRange(minVisible, maxVisible);\r\n    var points = series.reduce(function(result, s) {\r\n        var points = s.getPointsInViewPort();\r\n        result[0] = result[0].concat(points[0]);\r\n        result[1] = result[1].concat(points[1]);\r\n        return result\r\n    }, [\r\n        [],\r\n        []\r\n    ]);\r\n    var sortedAllPoints = points[0].concat(points[1]).sort(function(a, b) {\r\n        return b - a\r\n    });\r\n    var edgePoints = points[1].filter(function(p) {\r\n        return points[0].indexOf(p) < 0\r\n    });\r\n    var minDiff = RANGE_RATIO * visibleRange;\r\n    var ranges = generateRangesOnPoints(sortedAllPoints, edgePoints, getRange).sort(function(a, b) {\r\n        return b.length - a.length\r\n    });\r\n    var epsilon = _math.min.apply(null, ranges.map(function(r) {\r\n        return r.length\r\n    })) / 1e3;\r\n    var _maxAutoBreakCount = (0, _type.isDefined)(maxAutoBreakCount) ? _math.min(maxAutoBreakCount, ranges.length) : ranges.length;\r\n    for (var i = 0; i < _maxAutoBreakCount; i++) {\r\n        if (ranges[i].length >= minDiff) {\r\n            if (visibleRange <= ranges[i].length) {\r\n                break\r\n            }\r\n            visibleRange -= ranges[i].length;\r\n            if (visibleRange > epsilon || visibleRange < -epsilon) {\r\n                breaks.push({\r\n                    from: ranges[i].start,\r\n                    to: ranges[i].end\r\n                });\r\n                minDiff = RANGE_RATIO * visibleRange\r\n            }\r\n        } else {\r\n            break\r\n        }\r\n    }\r\n    sortingBreaks(breaks);\r\n    return breaks\r\n}\r\nvar _default = {\r\n    linear: {\r\n        _getStep: function(boxes, rotationAngle) {\r\n            var spacing = this._options.label.minSpacing;\r\n            var func = this._isHorizontal ? function(box) {\r\n                return box.width + spacing\r\n            } : function(box) {\r\n                return box.height\r\n            };\r\n            var maxLabelLength = getMaxSide(func, boxes);\r\n            if (rotationAngle) {\r\n                maxLabelLength = getDistanceByAngle({\r\n                    width: maxLabelLength,\r\n                    height: this._getMaxLabelHeight(boxes, 0)\r\n                }, rotationAngle)\r\n            }\r\n            return _axes_constants.default.getTicksCountInRange(this._majorTicks, this._isHorizontal ? \"x\" : \"y\", maxLabelLength)\r\n        },\r\n        _getMaxLabelHeight: function(boxes, spacing) {\r\n            return getMaxSide(function(box) {\r\n                return box.height\r\n            }, boxes) + spacing\r\n        },\r\n        _validateOverlappingMode: function(mode, displayMode) {\r\n            if (this._isHorizontal && (\"rotate\" === displayMode || \"stagger\" === displayMode) || !this._isHorizontal) {\r\n                return _axes_constants.default.validateOverlappingMode(mode)\r\n            }\r\n            return mode\r\n        },\r\n        _validateDisplayMode: function(mode) {\r\n            return this._isHorizontal ? mode : \"standard\"\r\n        },\r\n        getMarkerTrackers: function() {\r\n            return this._markerTrackers\r\n        },\r\n        _getSharpParam: function(opposite) {\r\n            return this._isHorizontal ^ opposite ? \"h\" : \"v\"\r\n        },\r\n        _createAxisElement: function() {\r\n            return this._renderer.path([], \"line\")\r\n        },\r\n        _updateAxisElementPosition: function() {\r\n            var axisCoord = this._axisPosition;\r\n            var canvas = this._getCanvasStartEnd();\r\n            this._axisElement.attr({\r\n                points: this._isHorizontal ? [canvas.start, axisCoord, canvas.end, axisCoord] : [axisCoord, canvas.start, axisCoord, canvas.end]\r\n            })\r\n        },\r\n        _getTranslatedCoord: function(value, offset) {\r\n            return this._translator.translate(value, offset)\r\n        },\r\n        _initAxisPositions: function() {\r\n            var that = this;\r\n            if (that.customPositionIsAvailable() && !(0, _type.isDefined)(that._customBoundaryPosition)) {\r\n                that._customBoundaryPosition = that.getCustomBoundaryPosition()\r\n            }\r\n            if (!that.customPositionIsAvailable() || that.customPositionIsBoundary()) {\r\n                that._axisPosition = that.getPredefinedPosition(that.getResolvedBoundaryPosition())\r\n            } else {\r\n                that._axisPosition = that.getCustomPosition()\r\n            }\r\n        },\r\n        _getTickMarkPoints: function(coords, length, tickOptions) {\r\n            var isHorizontal = this._isHorizontal;\r\n            var tickOrientation = this._options.tickOrientation;\r\n            var labelPosition = this._options.label.position;\r\n            var tickStartCoord;\r\n            if ((0, _type.isDefined)(tickOrientation)) {\r\n                tickStartCoord = TICKS_CORRECTIONS[tickOrientation] * length\r\n            } else {\r\n                var shift = tickOptions.shift || 0;\r\n                if (!isHorizontal && labelPosition === LEFT || isHorizontal && labelPosition !== BOTTOM) {\r\n                    shift = -shift\r\n                }\r\n                tickStartCoord = shift + this.getTickStartPositionShift(length)\r\n            }\r\n            return [coords.x + (isHorizontal ? 0 : tickStartCoord), coords.y + (isHorizontal ? tickStartCoord : 0), coords.x + (isHorizontal ? 0 : tickStartCoord + length), coords.y + (isHorizontal ? tickStartCoord + length : 0)]\r\n        },\r\n        getTickStartPositionShift: function(length) {\r\n            var width = this._options.width;\r\n            var position = this.getResolvedBoundaryPosition();\r\n            return length % 2 === 1 ? width % 2 === 0 && (position === LEFT || position === TOP) || width % 2 === 1 && (position === RIGHT || position === BOTTOM) && !this.hasCustomPosition() ? Math.floor(-length / 2) : -Math.floor(length / 2) : -length / 2 + (width % 2 === 0 ? 0 : position === BOTTOM || position === RIGHT ? -1 : 1)\r\n        },\r\n        _getTitleCoords: function() {\r\n            var that = this;\r\n            var horizontal = that._isHorizontal;\r\n            var x = that._axisPosition;\r\n            var y = that._axisPosition;\r\n            var align = that._options.title.alignment;\r\n            var canvas = that._getCanvasStartEnd();\r\n            var fromStartToEnd = horizontal || that._options.position === LEFT;\r\n            var canvasStart = fromStartToEnd ? canvas.start : canvas.end;\r\n            var canvasEnd = fromStartToEnd ? canvas.end : canvas.start;\r\n            var coord = align === LEFT ? canvasStart : align === RIGHT ? canvasEnd : canvas.start + (canvas.end - canvas.start) / 2;\r\n            if (horizontal) {\r\n                x = coord\r\n            } else {\r\n                y = coord\r\n            }\r\n            return {\r\n                x: x,\r\n                y: y\r\n            }\r\n        },\r\n        _drawTitleText: function(group, coords) {\r\n            var options = this._options;\r\n            var titleOptions = options.title;\r\n            var attrs = {\r\n                opacity: titleOptions.opacity,\r\n                align: titleOptions.alignment,\r\n                \"class\": titleOptions.cssClass\r\n            };\r\n            if (!titleOptions.text || !group) {\r\n                return\r\n            }\r\n            coords = coords || this._getTitleCoords();\r\n            if (!this._isHorizontal) {\r\n                attrs.rotate = options.position === LEFT ? 270 : 90\r\n            }\r\n            var text = this._renderer.text(titleOptions.text, coords.x, coords.y).css((0, _utils.patchFontOptions)(titleOptions.font)).attr(attrs).append(group);\r\n            this._checkTitleOverflow(text);\r\n            return text\r\n        },\r\n        _updateTitleCoords: function() {\r\n            this._title && this._title.element.attr(this._getTitleCoords())\r\n        },\r\n        _drawTitle: function() {\r\n            var title = this._drawTitleText(this._axisTitleGroup);\r\n            if (title) {\r\n                this._title = {\r\n                    element: title\r\n                }\r\n            }\r\n        },\r\n        _measureTitle: function() {\r\n            if (this._title) {\r\n                if (this._title.bBox && !this._title.originalSize) {\r\n                    this._title.originalSize = this._title.bBox\r\n                }\r\n                this._title.bBox = this._title.element.getBBox()\r\n            }\r\n        },\r\n        _drawDateMarker: function(date, options, range) {\r\n            var that = this;\r\n            var markerOptions = that._options.marker;\r\n            var invert = that._translator.getBusinessRange().invert;\r\n            var textIndent = markerOptions.width + markerOptions.textLeftIndent;\r\n            var pathElement;\r\n            if (null === options.x) {\r\n                return\r\n            }\r\n            if (!options.withoutStick) {\r\n                pathElement = that._renderer.path([options.x, options.y, options.x, options.y + markerOptions.separatorHeight], \"line\").attr({\r\n                    \"stroke-width\": markerOptions.width,\r\n                    stroke: markerOptions.color,\r\n                    \"stroke-opacity\": markerOptions.opacity,\r\n                    sharp: \"h\"\r\n                }).append(that._axisElementsGroup)\r\n            }\r\n            var text = String(that.formatLabel(date, options.labelOptions, range));\r\n            return {\r\n                date: date,\r\n                x: options.x,\r\n                y: options.y,\r\n                cropped: options.withoutStick,\r\n                label: that._renderer.text(text, options.x, options.y).css((0, _utils.patchFontOptions)(markerOptions.label.font)).append(that._axisElementsGroup),\r\n                line: pathElement,\r\n                getContentContainer: function() {\r\n                    return this.label\r\n                },\r\n                getEnd: function() {\r\n                    return this.x + (invert ? -1 : 1) * (textIndent + this.labelBBox.width)\r\n                },\r\n                setTitle: function() {\r\n                    this.title = text\r\n                },\r\n                hideLabel: function() {\r\n                    this.label.dispose();\r\n                    this.label = null;\r\n                    this.title = text\r\n                },\r\n                hide: function() {\r\n                    if (pathElement) {\r\n                        pathElement.dispose();\r\n                        pathElement = null\r\n                    }\r\n                    this.label.dispose();\r\n                    this.label = null;\r\n                    this.hidden = true\r\n                }\r\n            }\r\n        },\r\n        _drawDateMarkers: function() {\r\n            var that = this;\r\n            var options = that._options;\r\n            var translator = that._translator;\r\n            var viewport = that._getViewportRange();\r\n            var minBound = viewport.minVisible;\r\n            var dateMarkers = [];\r\n            var dateMarker;\r\n\r\n            function draw(markerDate, format, withoutStick) {\r\n                return that._drawDateMarker(markerDate, {\r\n                    x: translator.translate(markerDate),\r\n                    y: markersAreaTop,\r\n                    labelOptions: that._getLabelFormatOptions(format),\r\n                    withoutStick: withoutStick\r\n                }, viewport)\r\n            }\r\n            if (viewport.isEmpty() || !options.marker.visible || \"datetime\" !== options.argumentType || \"discrete\" === options.type || that._majorTicks.length <= 1) {\r\n                return []\r\n            }\r\n            var markersAreaTop = that._axisPosition + options.marker.topIndent;\r\n            var tickInterval = _date.default.getDateUnitInterval(this._tickInterval);\r\n            var markerInterval = getMarkerInterval(tickInterval);\r\n            var markerDates = getMarkerDates(minBound, viewport.maxVisible, markerInterval);\r\n            if (markerDates.length > 1 || 1 === markerDates.length && minBound < markerDates[0]) {\r\n                dateMarkers = markerDates.reduce(function(markers, curDate, i, dates) {\r\n                    var marker = draw(curDate, getMarkerFormat(curDate, dates[i - 1] || minBound < curDate && minBound, tickInterval, markerInterval));\r\n                    marker && markers.push(marker);\r\n                    return markers\r\n                }, []);\r\n                if (minBound < markerDates[0]) {\r\n                    dateMarker = draw(minBound, getMarkerFormat(minBound, markerDates[0], tickInterval, markerInterval), true);\r\n                    dateMarker && dateMarkers.unshift(dateMarker)\r\n                }\r\n            }\r\n            return dateMarkers\r\n        },\r\n        _adjustDateMarkers: function(offset) {\r\n            offset = offset || 0;\r\n            var that = this;\r\n            var markerOptions = this._options.marker;\r\n            var textIndent = markerOptions.width + markerOptions.textLeftIndent;\r\n            var invert = this._translator.getBusinessRange().invert;\r\n            var canvas = that._getCanvasStartEnd();\r\n            var dateMarkers = this._dateMarkers;\r\n            if (!dateMarkers.length) {\r\n                return offset\r\n            }\r\n            if (dateMarkers[0].cropped) {\r\n                if (!this._checkMarkersPosition(invert, dateMarkers[1], dateMarkers[0])) {\r\n                    dateMarkers[0].hideLabel()\r\n                }\r\n            }\r\n            var prevDateMarker;\r\n            dateMarkers.forEach(function(marker, i, markers) {\r\n                if (marker.cropped) {\r\n                    return\r\n                }\r\n                if (invert ? marker.getEnd() < canvas.end : marker.getEnd() > canvas.end) {\r\n                    marker.hideLabel()\r\n                } else {\r\n                    if (that._checkMarkersPosition(invert, marker, prevDateMarker)) {\r\n                        prevDateMarker = marker\r\n                    } else {\r\n                        marker.hide()\r\n                    }\r\n                }\r\n            });\r\n            this._dateMarkers.forEach(function(marker) {\r\n                if (marker.label) {\r\n                    var labelBBox = marker.labelBBox;\r\n                    var dy = marker.y + markerOptions.textTopIndent - labelBBox.y;\r\n                    marker.label.attr({\r\n                        translateX: invert ? marker.x - textIndent - labelBBox.x - labelBBox.width : marker.x + textIndent - labelBBox.x,\r\n                        translateY: dy + offset\r\n                    })\r\n                }\r\n                if (marker.line) {\r\n                    marker.line.attr({\r\n                        translateY: offset\r\n                    })\r\n                }\r\n            });\r\n            that._initializeMarkersTrackers(offset);\r\n            return offset + markerOptions.topIndent + markerOptions.separatorHeight\r\n        },\r\n        _checkMarkersPosition: function(invert, dateMarker, prevDateMarker) {\r\n            if (void 0 === prevDateMarker) {\r\n                return true\r\n            }\r\n            return invert ? dateMarker.x < prevDateMarker.getEnd() : dateMarker.x > prevDateMarker.getEnd()\r\n        },\r\n        _initializeMarkersTrackers: function(offset) {\r\n            var that = this;\r\n            var separatorHeight = that._options.marker.separatorHeight;\r\n            var renderer = that._renderer;\r\n            var businessRange = this._translator.getBusinessRange();\r\n            var canvas = that._getCanvasStartEnd();\r\n            var group = that._axisElementsGroup;\r\n            that._markerTrackers = this._dateMarkers.filter(function(marker) {\r\n                return !marker.hidden\r\n            }).map(function(marker, i, markers) {\r\n                var nextMarker = markers[i + 1] || {\r\n                    x: canvas.end,\r\n                    date: businessRange.max\r\n                };\r\n                var x = marker.x;\r\n                var y = marker.y + offset;\r\n                var markerTracker = renderer.path([x, y, x, y + separatorHeight, nextMarker.x, y + separatorHeight, nextMarker.x, y, x, y], \"area\").attr({\r\n                    \"stroke-width\": 1,\r\n                    stroke: \"grey\",\r\n                    fill: \"grey\",\r\n                    opacity: 1e-4\r\n                }).append(group);\r\n                markerTracker.data(\"range\", {\r\n                    startValue: marker.date,\r\n                    endValue: nextMarker.date\r\n                });\r\n                if (marker.title) {\r\n                    markerTracker.setTitle(marker.title)\r\n                }\r\n                return markerTracker\r\n            })\r\n        },\r\n        _getLabelFormatOptions: function(formatString) {\r\n            var that = this;\r\n            var markerLabelOptions = that._markerLabelOptions;\r\n            if (!markerLabelOptions) {\r\n                that._markerLabelOptions = markerLabelOptions = (0, _extend.extend)(true, {}, that._options.marker.label)\r\n            }\r\n            if (!(0, _type.isDefined)(that._options.marker.label.format)) {\r\n                markerLabelOptions.format = formatString\r\n            }\r\n            return markerLabelOptions\r\n        },\r\n        _adjustConstantLineLabels: function(constantLines) {\r\n            var that = this;\r\n            var axisPosition = that._options.position;\r\n            var canvas = that.getCanvas();\r\n            var canvasLeft = canvas.left;\r\n            var canvasRight = canvas.width - canvas.right;\r\n            var canvasTop = canvas.top;\r\n            var canvasBottom = canvas.height - canvas.bottom;\r\n            var verticalCenter = canvasTop + (canvasBottom - canvasTop) / 2;\r\n            var horizontalCenter = canvasLeft + (canvasRight - canvasLeft) / 2;\r\n            var maxLabel = 0;\r\n            constantLines.forEach(function(item) {\r\n                var isHorizontal = that._isHorizontal;\r\n                var linesOptions = item.options;\r\n                var paddingTopBottom = linesOptions.paddingTopBottom;\r\n                var paddingLeftRight = linesOptions.paddingLeftRight;\r\n                var labelOptions = linesOptions.label;\r\n                var labelVerticalAlignment = labelOptions.verticalAlignment;\r\n                var labelHorizontalAlignment = labelOptions.horizontalAlignment;\r\n                var labelIsInside = \"inside\" === labelOptions.position;\r\n                var label = item.label;\r\n                var box = item.labelBBox;\r\n                var translateX;\r\n                var translateY;\r\n                if (null === label || box.isEmpty) {\r\n                    return\r\n                }\r\n                if (isHorizontal) {\r\n                    if (labelIsInside) {\r\n                        if (labelHorizontalAlignment === LEFT) {\r\n                            translateX = item.coord - paddingLeftRight - box.x - box.width\r\n                        } else {\r\n                            translateX = item.coord + paddingLeftRight - box.x\r\n                        }\r\n                        switch (labelVerticalAlignment) {\r\n                            case CENTER:\r\n                                translateY = verticalCenter - box.y - box.height / 2;\r\n                                break;\r\n                            case BOTTOM:\r\n                                translateY = canvasBottom - paddingTopBottom - box.y - box.height;\r\n                                break;\r\n                            default:\r\n                                translateY = canvasTop + paddingTopBottom - box.y\r\n                        }\r\n                    } else {\r\n                        if (axisPosition === labelVerticalAlignment) {\r\n                            maxLabel = _max(maxLabel, box.height + paddingTopBottom)\r\n                        }\r\n                        translateX = item.coord - box.x - box.width / 2;\r\n                        if (labelVerticalAlignment === BOTTOM) {\r\n                            translateY = canvasBottom + paddingTopBottom - box.y\r\n                        } else {\r\n                            translateY = canvasTop - paddingTopBottom - box.y - box.height\r\n                        }\r\n                    }\r\n                } else {\r\n                    if (labelIsInside) {\r\n                        if (labelVerticalAlignment === BOTTOM) {\r\n                            translateY = item.coord + paddingTopBottom - box.y\r\n                        } else {\r\n                            translateY = item.coord - paddingTopBottom - box.y - box.height\r\n                        }\r\n                        switch (labelHorizontalAlignment) {\r\n                            case CENTER:\r\n                                translateX = horizontalCenter - box.x - box.width / 2;\r\n                                break;\r\n                            case RIGHT:\r\n                                translateX = canvasRight - paddingLeftRight - box.x - box.width;\r\n                                break;\r\n                            default:\r\n                                translateX = canvasLeft + paddingLeftRight - box.x\r\n                        }\r\n                    } else {\r\n                        if (axisPosition === labelHorizontalAlignment) {\r\n                            maxLabel = _max(maxLabel, box.width + paddingLeftRight)\r\n                        }\r\n                        translateY = item.coord - box.y - box.height / 2;\r\n                        if (labelHorizontalAlignment === RIGHT) {\r\n                            translateX = canvasRight + paddingLeftRight - box.x\r\n                        } else {\r\n                            translateX = canvasLeft - paddingLeftRight - box.x - box.width\r\n                        }\r\n                    }\r\n                }\r\n                label.attr({\r\n                    translateX: translateX,\r\n                    translateY: translateY\r\n                })\r\n            });\r\n            return maxLabel\r\n        },\r\n        _drawConstantLinesForEstimating: function(constantLines) {\r\n            var that = this;\r\n            var renderer = this._renderer;\r\n            var group = renderer.g();\r\n            constantLines.forEach(function(options) {\r\n                that._drawConstantLineLabelText(options.label.text, 0, 0, options.label, group).attr({\r\n                    align: \"center\"\r\n                })\r\n            });\r\n            return group.append(renderer.root)\r\n        },\r\n        _estimateLabelHeight: function(bBox, labelOptions) {\r\n            var height = bBox.height;\r\n            var drawingType = labelOptions.drawingType;\r\n            if (\"stagger\" === this._validateDisplayMode(drawingType) || \"stagger\" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {\r\n                height = 2 * height + labelOptions.staggeringSpacing\r\n            }\r\n            if (\"rotate\" === this._validateDisplayMode(drawingType) || \"rotate\" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {\r\n                var sinCos = (0, _utils.getCosAndSin)(labelOptions.rotationAngle);\r\n                height = height * sinCos.cos + bBox.width * sinCos.sin\r\n            }\r\n            return height && (height + labelOptions.indentFromAxis || 0) || 0\r\n        },\r\n        estimateMargins: function(canvas) {\r\n            this.updateCanvas(canvas);\r\n            var that = this;\r\n            var range = that._getViewportRange();\r\n            var ticksData = this._createTicksAndLabelFormat(range);\r\n            var ticks = ticksData.ticks;\r\n            var tickInterval = ticksData.tickInterval;\r\n            var options = this._options;\r\n            var constantLineOptions = that._outsideConstantLines.filter(function(l) {\r\n                return l.labelOptions.visible\r\n            }).map(function(l) {\r\n                return l.options\r\n            });\r\n            var rootElement = that._renderer.root;\r\n            var labelIsVisible = options.label.visible && !range.isEmpty() && ticks.length;\r\n            var labelValue = labelIsVisible && that.formatLabel(ticks[ticks.length - 1], options.label, void 0, void 0, tickInterval, ticks);\r\n            var labelElement = labelIsVisible && that._renderer.text(labelValue, 0, 0).css(that._textFontStyles).attr(that._textOptions).append(rootElement);\r\n            var titleElement = that._drawTitleText(rootElement, {\r\n                x: 0,\r\n                y: 0\r\n            });\r\n            var constantLinesLabelsElement = that._drawConstantLinesForEstimating(constantLineOptions);\r\n            var labelBox = !options.label.template && labelElement && labelElement.getBBox() || {\r\n                x: 0,\r\n                y: 0,\r\n                width: 0,\r\n                height: 0\r\n            };\r\n            var titleBox = titleElement && titleElement.getBBox() || {\r\n                x: 0,\r\n                y: 0,\r\n                width: 0,\r\n                height: 0\r\n            };\r\n            var constantLinesBox = constantLinesLabelsElement.getBBox();\r\n            var titleHeight = titleBox.height ? titleBox.height + options.title.margin : 0;\r\n            var labelHeight = that._estimateLabelHeight(labelBox, options.label);\r\n            var constantLinesHeight = constantLinesBox.height ? constantLinesBox.height + getMaxConstantLinePadding(constantLineOptions) : 0;\r\n            var height = labelHeight + titleHeight;\r\n            var margins = {\r\n                left: _max(getLeftMargin(labelBox), getLeftMargin(constantLinesBox)),\r\n                right: _max(getRightMargin(labelBox), getRightMargin(constantLinesBox)),\r\n                top: (\"top\" === options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, \"top\", constantLinesHeight),\r\n                bottom: (\"top\" !== options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, \"bottom\", constantLinesHeight)\r\n            };\r\n            labelElement && labelElement.remove();\r\n            titleElement && titleElement.remove();\r\n            constantLinesLabelsElement && constantLinesLabelsElement.remove();\r\n            return margins\r\n        },\r\n        _checkAlignmentConstantLineLabels: function(labelOptions) {\r\n            var position = labelOptions.position;\r\n            var verticalAlignment = (labelOptions.verticalAlignment || \"\").toLowerCase();\r\n            var horizontalAlignment = (labelOptions.horizontalAlignment || \"\").toLowerCase();\r\n            if (this._isHorizontal) {\r\n                if (\"outside\" === position) {\r\n                    verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n                    horizontalAlignment = CENTER\r\n                } else {\r\n                    verticalAlignment = verticalAlignment === CENTER ? CENTER : verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n                    horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT\r\n                }\r\n            } else {\r\n                if (\"outside\" === position) {\r\n                    verticalAlignment = CENTER;\r\n                    horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT\r\n                } else {\r\n                    verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n                    horizontalAlignment = horizontalAlignment === RIGHT ? RIGHT : horizontalAlignment === CENTER ? CENTER : LEFT\r\n                }\r\n            }\r\n            labelOptions.verticalAlignment = verticalAlignment;\r\n            labelOptions.horizontalAlignment = horizontalAlignment\r\n        },\r\n        _getConstantLineLabelsCoords: function(value, lineLabelOptions) {\r\n            var that = this;\r\n            var x = value;\r\n            var y = value;\r\n            if (that._isHorizontal) {\r\n                y = that._orthogonalPositions[\"top\" === lineLabelOptions.verticalAlignment ? \"start\" : \"end\"]\r\n            } else {\r\n                x = that._orthogonalPositions[\"right\" === lineLabelOptions.horizontalAlignment ? \"end\" : \"start\"]\r\n            }\r\n            return {\r\n                x: x,\r\n                y: y\r\n            }\r\n        },\r\n        _getAdjustedStripLabelCoords: function(strip) {\r\n            var stripOptions = strip.options;\r\n            var paddingTopBottom = stripOptions.paddingTopBottom;\r\n            var paddingLeftRight = stripOptions.paddingLeftRight;\r\n            var horizontalAlignment = stripOptions.label.horizontalAlignment;\r\n            var verticalAlignment = stripOptions.label.verticalAlignment;\r\n            var box = strip.labelBBox;\r\n            var labelHeight = box.height;\r\n            var labelWidth = box.width;\r\n            var labelCoords = strip.labelCoords;\r\n            var y = labelCoords.y - box.y;\r\n            var x = labelCoords.x - box.x;\r\n            if (verticalAlignment === TOP) {\r\n                y += paddingTopBottom\r\n            } else {\r\n                if (verticalAlignment === CENTER) {\r\n                    y -= labelHeight / 2\r\n                } else {\r\n                    if (verticalAlignment === BOTTOM) {\r\n                        y -= paddingTopBottom + labelHeight\r\n                    }\r\n                }\r\n            }\r\n            if (horizontalAlignment === LEFT) {\r\n                x += paddingLeftRight\r\n            } else {\r\n                if (horizontalAlignment === CENTER) {\r\n                    x -= labelWidth / 2\r\n                } else {\r\n                    if (horizontalAlignment === RIGHT) {\r\n                        x -= paddingLeftRight + labelWidth\r\n                    }\r\n                }\r\n            }\r\n            return {\r\n                translateX: x,\r\n                translateY: y\r\n            }\r\n        },\r\n        _adjustTitle: function(offset) {\r\n            offset = offset || 0;\r\n            if (!this._title) {\r\n                return\r\n            }\r\n            var that = this;\r\n            var options = that._options;\r\n            var position = options.position;\r\n            var margin = options.title.margin;\r\n            var title = that._title;\r\n            var boxTitle = title.bBox;\r\n            var x = boxTitle.x;\r\n            var y = boxTitle.y;\r\n            var width = boxTitle.width;\r\n            var height = boxTitle.height;\r\n            var axisPosition = that._axisPosition;\r\n            var loCoord = axisPosition - margin - offset;\r\n            var hiCoord = axisPosition + margin + offset;\r\n            var params = {};\r\n            if (that._isHorizontal) {\r\n                if (position === TOP) {\r\n                    params.translateY = loCoord - (y + height)\r\n                } else {\r\n                    params.translateY = hiCoord - y\r\n                }\r\n            } else {\r\n                if (position === LEFT) {\r\n                    params.translateX = loCoord - (x + width)\r\n                } else {\r\n                    params.translateX = hiCoord - x\r\n                }\r\n            }\r\n            title.element.attr(params)\r\n        },\r\n        _checkTitleOverflow: function(titleElement) {\r\n            if (!this._title && !titleElement) {\r\n                return\r\n            }\r\n            var canvasLength = this._getScreenDelta();\r\n            var title = titleElement ? {\r\n                bBox: titleElement.getBBox(),\r\n                element: titleElement\r\n            } : this._title;\r\n            var titleOptions = this._options.title;\r\n            var boxTitle = title.bBox;\r\n            if ((this._isHorizontal ? boxTitle.width : boxTitle.height) > canvasLength) {\r\n                title.element.setMaxSize(canvasLength, void 0, {\r\n                    wordWrap: titleOptions.wordWrap || \"none\",\r\n                    textOverflow: titleOptions.textOverflow || \"ellipsis\"\r\n                });\r\n                this._wrapped = titleOptions.wordWrap && \"none\" !== titleOptions.wordWrap\r\n            } else {\r\n                var moreThanOriginalSize = title.originalSize && canvasLength > (this._isHorizontal ? title.originalSize.width : title.originalSize.height);\r\n                !this._wrapped && moreThanOriginalSize && title.element.restoreText()\r\n            }\r\n        },\r\n        coordsIn: function(x, y) {\r\n            var canvas = this.getCanvas();\r\n            var isHorizontal = this._options.isHorizontal;\r\n            var position = this._options.position;\r\n            var coord = isHorizontal ? y : x;\r\n            if (isHorizontal && (x < canvas.left || x > canvas.width - canvas.right) || !isHorizontal && (y < canvas.top || y > canvas.height - canvas.bottom)) {\r\n                return false\r\n            }\r\n            if (isHorizontal && position === _axes_constants.default.top || !isHorizontal && position === _axes_constants.default.left) {\r\n                return coord < canvas[position]\r\n            }\r\n            return coord > canvas[isHorizontal ? \"height\" : \"width\"] - canvas[position]\r\n        },\r\n        _boundaryTicksVisibility: {\r\n            min: true,\r\n            max: true\r\n        },\r\n        adjust: function(alignToBounds) {\r\n            var that = this;\r\n            var seriesData = that._seriesData;\r\n            var viewport = {\r\n                min: seriesData.min,\r\n                max: seriesData.max\r\n            };\r\n            if (!alignToBounds) {\r\n                viewport = that._series.filter(function(s) {\r\n                    return s.isVisible()\r\n                }).reduce(function(range, s) {\r\n                    var seriesRange = s.getViewport();\r\n                    range.min = (0, _type.isDefined)(seriesRange.min) ? range.min < seriesRange.min ? range.min : seriesRange.min : range.min;\r\n                    range.max = (0, _type.isDefined)(seriesRange.max) ? range.max > seriesRange.max ? range.max : seriesRange.max : range.max;\r\n                    if (s.showZero) {\r\n                        range = new _range.Range(range);\r\n                        range.correctValueZeroLevel()\r\n                    }\r\n                    return range\r\n                }, {})\r\n            }\r\n            if ((0, _type.isDefined)(viewport.min) && (0, _type.isDefined)(viewport.max)) {\r\n                seriesData.minVisible = viewport.min;\r\n                seriesData.maxVisible = viewport.max\r\n            }\r\n            seriesData.userBreaks = that._getScaleBreaks(that._options, {\r\n                minVisible: seriesData.minVisible,\r\n                maxVisible: seriesData.maxVisible\r\n            }, that._series, that.isArgumentAxis);\r\n            that._translator.updateBusinessRange(that._getViewportRange())\r\n        },\r\n        hasWrap: function() {\r\n            return this._wrapped\r\n        },\r\n        getAxisPosition: function() {\r\n            return this._axisPosition\r\n        },\r\n        _getStick: function() {\r\n            return !this._options.valueMarginsEnabled\r\n        },\r\n        _getStripLabelCoords: function(from, to, stripLabelOptions) {\r\n            var that = this;\r\n            var orthogonalPositions = that._orthogonalPositions;\r\n            var isHorizontal = that._isHorizontal;\r\n            var horizontalAlignment = stripLabelOptions.horizontalAlignment;\r\n            var verticalAlignment = stripLabelOptions.verticalAlignment;\r\n            var x;\r\n            var y;\r\n            if (isHorizontal) {\r\n                if (horizontalAlignment === CENTER) {\r\n                    x = from + (to - from) / 2\r\n                } else {\r\n                    if (horizontalAlignment === LEFT) {\r\n                        x = from\r\n                    } else {\r\n                        if (horizontalAlignment === RIGHT) {\r\n                            x = to\r\n                        }\r\n                    }\r\n                }\r\n                y = orthogonalPositions[getStripVerticalAlignmentPosition(verticalAlignment)]\r\n            } else {\r\n                x = orthogonalPositions[getStripHorizontalAlignmentPosition(horizontalAlignment)];\r\n                if (verticalAlignment === TOP) {\r\n                    y = from\r\n                } else {\r\n                    if (verticalAlignment === CENTER) {\r\n                        y = to + (from - to) / 2\r\n                    } else {\r\n                        if (verticalAlignment === BOTTOM) {\r\n                            y = to\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return {\r\n                x: x,\r\n                y: y\r\n            }\r\n        },\r\n        _getTranslatedValue: function(value, offset) {\r\n            var pos1 = this._translator.translate(value, offset, \"semidiscrete\" === this._options.type && this._options.tickInterval);\r\n            var pos2 = this._axisPosition;\r\n            var isHorizontal = this._isHorizontal;\r\n            return {\r\n                x: isHorizontal ? pos1 : pos2,\r\n                y: isHorizontal ? pos2 : pos1\r\n            }\r\n        },\r\n        areCoordsOutsideAxis: function(coords) {\r\n            var coord = this._isHorizontal ? coords.x : coords.y;\r\n            var visibleArea = this.getVisibleArea();\r\n            if (coord < visibleArea[0] || coord > visibleArea[1]) {\r\n                return true\r\n            }\r\n            return false\r\n        },\r\n        _getSkippedCategory: function(ticks) {\r\n            var skippedCategory;\r\n            if (this._options.type === _axes_constants.default.discrete && this._tickOffset && 0 !== ticks.length) {\r\n                skippedCategory = ticks[ticks.length - 1]\r\n            }\r\n            return skippedCategory\r\n        },\r\n        _filterBreaks: function(breaks, viewport, breakStyle) {\r\n            var minVisible = viewport.minVisible;\r\n            var maxVisible = viewport.maxVisible;\r\n            var breakSize = breakStyle ? breakStyle.width : 0;\r\n            return breaks.reduce(function(result, currentBreak) {\r\n                var from = currentBreak.from;\r\n                var to = currentBreak.to;\r\n                var lastResult = result[result.length - 1];\r\n                var newBreak;\r\n                if (!(0, _type.isDefined)(from) || !(0, _type.isDefined)(to)) {\r\n                    return result\r\n                }\r\n                if (from > to) {\r\n                    to = [from, from = to][0]\r\n                }\r\n                if (result.length && from < lastResult.to) {\r\n                    if (to > lastResult.to) {\r\n                        lastResult.to = to > maxVisible ? maxVisible : to;\r\n                        if (lastResult.gapSize) {\r\n                            lastResult.gapSize = void 0;\r\n                            lastResult.cumulativeWidth += breakSize\r\n                        }\r\n                    }\r\n                } else {\r\n                    if (from >= minVisible && from < maxVisible || to <= maxVisible && to > minVisible) {\r\n                        from = from >= minVisible ? from : minVisible;\r\n                        to = to <= maxVisible ? to : maxVisible;\r\n                        if (to - from < maxVisible - minVisible) {\r\n                            var _lastResult$cumulativ;\r\n                            newBreak = {\r\n                                from: from,\r\n                                to: to,\r\n                                cumulativeWidth: (null !== (_lastResult$cumulativ = null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) && void 0 !== _lastResult$cumulativ ? _lastResult$cumulativ : 0) + breakSize\r\n                            };\r\n                            if (currentBreak.gapSize) {\r\n                                var _lastResult$cumulativ2;\r\n                                newBreak.gapSize = _date.default.convertMillisecondsToDateUnits(to - from);\r\n                                newBreak.cumulativeWidth = null !== (_lastResult$cumulativ2 = null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) && void 0 !== _lastResult$cumulativ2 ? _lastResult$cumulativ2 : 0\r\n                            }\r\n                            result.push(newBreak)\r\n                        }\r\n                    }\r\n                }\r\n                return result\r\n            }, [])\r\n        },\r\n        _getScaleBreaks: function(axisOptions, viewport, series, isArgumentAxis) {\r\n            var that = this;\r\n            var breaks = (axisOptions.breaks || []).map(function(b) {\r\n                return {\r\n                    from: that.parser(b.startValue),\r\n                    to: that.parser(b.endValue)\r\n                }\r\n            });\r\n            if (\"discrete\" !== axisOptions.type && \"datetime\" === axisOptions.dataType && axisOptions.workdaysOnly) {\r\n                breaks = breaks.concat((0, _datetime_breaks.generateDateBreaks)(viewport.minVisible, viewport.maxVisible, axisOptions.workWeek, axisOptions.singleWorkdays, axisOptions.holidays))\r\n            }\r\n            if (!isArgumentAxis && \"discrete\" !== axisOptions.type && \"datetime\" !== axisOptions.dataType && axisOptions.autoBreaksEnabled && 0 !== axisOptions.maxAutoBreakCount) {\r\n                breaks = breaks.concat(generateAutoBreaks(axisOptions, series, viewport))\r\n            }\r\n            return sortingBreaks(breaks)\r\n        },\r\n        _drawBreak: function(translatedEnd, positionFrom, positionTo, width, options, group) {\r\n            var that = this;\r\n            var breakStart = translatedEnd - (!that._translator.isInverted() ? width + 1 : 0);\r\n            var attr = {\r\n                \"stroke-width\": 1,\r\n                stroke: options.borderColor,\r\n                sharp: !options.isWaved ? options.isHorizontal ? \"h\" : \"v\" : void 0\r\n            };\r\n            var spaceAttr = {\r\n                stroke: options.color,\r\n                \"stroke-width\": width\r\n            };\r\n            var getPoints = that._isHorizontal ? rotateLine : function(p) {\r\n                return p\r\n            };\r\n            var drawer = getLineDrawer(that._renderer, group, getPoints, positionFrom, breakStart, positionTo, options.isWaved);\r\n            drawer(width / 2, spaceAttr);\r\n            drawer(0, attr);\r\n            drawer(width, attr)\r\n        },\r\n        _createBreakClipRect: function(from, to) {\r\n            var that = this;\r\n            var canvas = that._canvas;\r\n            var clipWidth = to - from;\r\n            var clipRect;\r\n            if (that._isHorizontal) {\r\n                clipRect = that._renderer.clipRect(canvas.left, from, canvas.width, clipWidth)\r\n            } else {\r\n                clipRect = that._renderer.clipRect(from, canvas.top, clipWidth, canvas.height)\r\n            }\r\n            that._breaksElements = that._breaksElements || [];\r\n            that._breaksElements.push(clipRect);\r\n            return clipRect.id\r\n        },\r\n        _createBreaksGroup: function(clipFrom, clipTo) {\r\n            var that = this;\r\n            var group = that._renderer.g().attr({\r\n                \"class\": that._axisCssPrefix + \"breaks\",\r\n                \"clip-path\": that._createBreakClipRect(clipFrom, clipTo)\r\n            }).append(that._scaleBreaksGroup);\r\n            that._breaksElements = that._breaksElements || [];\r\n            that._breaksElements.push(group);\r\n            return group\r\n        },\r\n        _disposeBreaksGroup: function() {\r\n            (this._breaksElements || []).forEach(function(clipRect) {\r\n                clipRect.dispose()\r\n            });\r\n            this._breaksElements = null\r\n        },\r\n        drawScaleBreaks: function(customCanvas) {\r\n            var that = this;\r\n            var options = that._options;\r\n            var breakStyle = options.breakStyle;\r\n            var position = options.position;\r\n            var positionFrom;\r\n            var positionTo;\r\n            var breaks = that._translator.getBusinessRange().breaks || [];\r\n            var additionGroup;\r\n            var additionBreakFrom;\r\n            var additionBreakTo;\r\n            that._disposeBreaksGroup();\r\n            if (!(breaks && breaks.length)) {\r\n                return\r\n            }\r\n            var breakOptions = {\r\n                color: that._options.containerColor,\r\n                borderColor: breakStyle.color,\r\n                isHorizontal: that._isHorizontal,\r\n                isWaved: \"straight\" !== breakStyle.line.toLowerCase()\r\n            };\r\n            if (customCanvas) {\r\n                positionFrom = customCanvas.start;\r\n                positionTo = customCanvas.end\r\n            } else {\r\n                positionFrom = that._orthogonalPositions.start - (options.visible && !that._axisShift && (position === LEFT || position === TOP) ? SCALE_BREAK_OFFSET : 0);\r\n                positionTo = that._orthogonalPositions.end + (options.visible && (position === RIGHT || position === BOTTOM) ? SCALE_BREAK_OFFSET : 0)\r\n            }\r\n            var mainGroup = that._createBreaksGroup(positionFrom, positionTo);\r\n            if (that._axisShift && options.visible) {\r\n                additionBreakFrom = that._axisPosition - that._axisShift - SCALE_BREAK_OFFSET;\r\n                additionBreakTo = additionBreakFrom + 2 * SCALE_BREAK_OFFSET;\r\n                additionGroup = that._createBreaksGroup(additionBreakFrom, additionBreakTo)\r\n            }\r\n            breaks.forEach(function(br) {\r\n                if (!br.gapSize) {\r\n                    var breakCoord = that._getTranslatedCoord(br.to);\r\n                    that._drawBreak(breakCoord, positionFrom, positionTo, breakStyle.width, breakOptions, mainGroup);\r\n                    if (that._axisShift && options.visible) {\r\n                        that._drawBreak(breakCoord, additionBreakFrom, additionBreakTo, breakStyle.width, breakOptions, additionGroup)\r\n                    }\r\n                }\r\n            })\r\n        },\r\n        _getSpiderCategoryOption: _common.noop,\r\n        shift: function(margins) {\r\n            var that = this;\r\n            var options = that._options;\r\n            var isHorizontal = options.isHorizontal;\r\n            var axesSpacing = that.getMultipleAxesSpacing();\r\n            var constantLinesGroups = that._axisConstantLineGroups;\r\n\r\n            function shiftGroup(side, group) {\r\n                var attr = {\r\n                    translateX: 0,\r\n                    translateY: 0\r\n                };\r\n                var shift = margins[side] ? margins[side] + axesSpacing : 0;\r\n                attr[isHorizontal ? \"translateY\" : \"translateX\"] = (side === LEFT || side === TOP ? -1 : 1) * shift;\r\n                (group[side] || group).attr(attr);\r\n                return shift\r\n            }\r\n            that._axisShift = shiftGroup(options.position, that._axisGroup);\r\n            (isHorizontal ? [TOP, BOTTOM] : [LEFT, RIGHT]).forEach(function(side) {\r\n                shiftGroup(side, constantLinesGroups.above);\r\n                shiftGroup(side, constantLinesGroups.under)\r\n            })\r\n        },\r\n        getCustomPosition: function(position) {\r\n            var that = this;\r\n            var orthogonalAxis = that.getOrthogonalAxis();\r\n            var resolvedPosition = null !== position && void 0 !== position ? position : that.getResolvedPositionOption();\r\n            var offset = that.getOptions().offset;\r\n            var orthogonalTranslator = orthogonalAxis.getTranslator();\r\n            var orthogonalAxisType = orthogonalAxis.getOptions().type;\r\n            var validPosition = orthogonalAxis.validateUnit(resolvedPosition);\r\n            var currentPosition;\r\n            if (\"discrete\" === orthogonalAxisType && (!orthogonalTranslator._categories || orthogonalTranslator._categories.indexOf(validPosition) < 0)) {\r\n                validPosition = void 0\r\n            }\r\n            if (that.positionIsBoundary(resolvedPosition)) {\r\n                currentPosition = that.getPredefinedPosition(resolvedPosition)\r\n            } else {\r\n                if (!(0, _type.isDefined)(validPosition)) {\r\n                    currentPosition = that.getPredefinedPosition(that.getOptions().position)\r\n                } else {\r\n                    currentPosition = orthogonalTranslator.to(validPosition, -1)\r\n                }\r\n            }\r\n            if (isFinite(currentPosition) && isFinite(offset)) {\r\n                currentPosition += offset\r\n            }\r\n            return currentPosition\r\n        },\r\n        getCustomBoundaryPosition: function(position) {\r\n            var that = this;\r\n            var orthogonalAxis = that.getOrthogonalAxis();\r\n            var resolvedPosition = null !== position && void 0 !== position ? position : that.getResolvedPositionOption();\r\n            var orthogonalTranslator = orthogonalAxis.getTranslator();\r\n            var visibleArea = orthogonalTranslator.getCanvasVisibleArea();\r\n            if (!(0, _type.isDefined)(orthogonalAxis._orthogonalPositions) || 0 === orthogonalTranslator.canvasLength) {\r\n                return\r\n            }\r\n            var currentPosition = that.getCustomPosition(resolvedPosition);\r\n            if (!(0, _type.isDefined)(currentPosition)) {\r\n                return that.getResolvedBoundaryPosition()\r\n            } else {\r\n                if (currentPosition <= visibleArea.min) {\r\n                    return that._isHorizontal ? TOP : LEFT\r\n                } else {\r\n                    if (currentPosition >= visibleArea.max) {\r\n                        return that._isHorizontal ? BOTTOM : RIGHT\r\n                    }\r\n                }\r\n            }\r\n            return currentPosition\r\n        },\r\n        getResolvedPositionOption: function() {\r\n            var _options$customPositi;\r\n            var options = this.getOptions();\r\n            return null !== (_options$customPositi = options.customPosition) && void 0 !== _options$customPositi ? _options$customPositi : options.position\r\n        },\r\n        customPositionIsAvailable: function() {\r\n            var options = this.getOptions();\r\n            return (0, _type.isDefined)(this.getOrthogonalAxis()) && ((0, _type.isDefined)(options.customPosition) || isFinite(options.offset))\r\n        },\r\n        hasCustomPosition: function() {\r\n            return this.customPositionIsAvailable() && !this.customPositionIsBoundary()\r\n        },\r\n        getResolvedBoundaryPosition: function() {\r\n            return this.customPositionIsBoundary() ? this._customBoundaryPosition : this.getOptions().position\r\n        },\r\n        customPositionEqualsToPredefined: function() {\r\n            return this.customPositionIsBoundary() && this._customBoundaryPosition === this.getOptions().position\r\n        },\r\n        customPositionIsBoundary: function() {\r\n            return this.positionIsBoundary(this._customBoundaryPosition)\r\n        },\r\n        positionIsBoundary: function(position) {\r\n            return [TOP, LEFT, BOTTOM, RIGHT].indexOf(position) >= 0\r\n        },\r\n        getPredefinedPosition: function(position) {\r\n            var _this$_orthogonalPosi;\r\n            return null === (_this$_orthogonalPosi = this._orthogonalPositions) || void 0 === _this$_orthogonalPosi ? void 0 : _this$_orthogonalPosi[position === TOP || position === LEFT ? \"start\" : \"end\"]\r\n        },\r\n        resolveOverlappingForCustomPositioning: function(oppositeAxes) {\r\n            var that = this;\r\n            if (!that.hasCustomPosition() && !that.customPositionIsBoundary() && !oppositeAxes.some(function(a) {\r\n                    return a.hasCustomPosition()\r\n                })) {\r\n                return\r\n            }\r\n            var overlappingObj = {\r\n                axes: [],\r\n                ticks: []\r\n            };\r\n            oppositeAxes.filter(function(orthogonalAxis) {\r\n                return orthogonalAxis.pane === that.pane\r\n            }).forEach(function(orthogonalAxis) {\r\n                for (var i = 0; i < that._majorTicks.length; i++) {\r\n                    var tick = that._majorTicks[i];\r\n                    var label = tick.label;\r\n                    if (label) {\r\n                        if (overlappingObj.axes.indexOf(orthogonalAxis) < 0 && that._detectElementsOverlapping(label, orthogonalAxis._axisElement)) {\r\n                            overlappingObj.axes.push(orthogonalAxis);\r\n                            that._shiftThroughOrthogonalAxisOverlappedTick(label, orthogonalAxis)\r\n                        }\r\n                        for (var j = 0; j < orthogonalAxis._majorTicks.length; j++) {\r\n                            var oppositeTick = orthogonalAxis._majorTicks[j];\r\n                            var oppositeLabel = oppositeTick.label;\r\n                            if (oppositeLabel && that._detectElementsOverlapping(label, oppositeLabel)) {\r\n                                overlappingObj.ticks.push(tick);\r\n                                that._shiftThroughAxisOverlappedTick(tick);\r\n                                i = that._majorTicks.length;\r\n                                break\r\n                            }\r\n                        }\r\n                    }\r\n                    if (tick.mark && overlappingObj.ticks.indexOf(tick) < 0) {\r\n                        if (that._isHorizontal && tick.mark.attr(\"translateY\")) {\r\n                            tick.mark.attr({\r\n                                translateY: 0\r\n                            })\r\n                        } else {\r\n                            if (!that._isHorizontal && tick.mark.attr(\"translateX\")) {\r\n                                tick.mark.attr({\r\n                                    translateX: 0\r\n                                })\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            })\r\n        },\r\n        _shiftThroughOrthogonalAxisOverlappedTick: function(label, orthogonalAxis) {\r\n            var that = this;\r\n            var labelBBox = label.getBBox();\r\n            var orthogonalAxisPosition = orthogonalAxis.getAxisPosition();\r\n            var orthogonalAxisLabelOptions = orthogonalAxis.getOptions().label;\r\n            var orthogonalAxisLabelPosition = orthogonalAxisLabelOptions.position;\r\n            var orthogonalAxisLabelIndent = orthogonalAxisLabelOptions.indentFromAxis / 2;\r\n            var translateCoordName = that._isHorizontal ? \"translateX\" : \"translateY\";\r\n            var defaultOrthogonalAxisLabelPosition = that._isHorizontal ? LEFT : TOP;\r\n            var translate = label.attr(translateCoordName);\r\n            var labelCoord = (that._isHorizontal ? labelBBox.x : labelBBox.y) + translate;\r\n            var labelSize = that._isHorizontal ? labelBBox.width : labelBBox.height;\r\n            var outsidePart = orthogonalAxisPosition - labelCoord;\r\n            var insidePart = labelCoord + labelSize - orthogonalAxisPosition;\r\n            var attr = {};\r\n            attr[translateCoordName] = translate;\r\n            if (outsidePart > 0 && insidePart > 0) {\r\n                if (insidePart - outsidePart > 1) {\r\n                    attr[translateCoordName] += outsidePart + orthogonalAxisLabelIndent\r\n                } else {\r\n                    if (outsidePart - insidePart > 1) {\r\n                        attr[translateCoordName] -= insidePart + orthogonalAxisLabelIndent\r\n                    } else {\r\n                        attr[translateCoordName] += orthogonalAxisLabelPosition === defaultOrthogonalAxisLabelPosition ? outsidePart + orthogonalAxisLabelIndent : -(insidePart + orthogonalAxisLabelIndent)\r\n                    }\r\n                }\r\n                label.attr(attr)\r\n            }\r\n        },\r\n        _shiftThroughAxisOverlappedTick: function(tick) {\r\n            var _tick$mark;\r\n            var that = this;\r\n            var label = tick.label;\r\n            if (!label) {\r\n                return\r\n            }\r\n            var labelBBox = label.getBBox();\r\n            var tickMarkBBox = null === (_tick$mark = tick.mark) || void 0 === _tick$mark ? void 0 : _tick$mark.getBBox();\r\n            var axisPosition = that.getAxisPosition();\r\n            var labelOptions = that.getOptions().label;\r\n            var labelIndent = labelOptions.indentFromAxis;\r\n            var labelPosition = labelOptions.position;\r\n            var defaultLabelPosition = that._isHorizontal ? TOP : LEFT;\r\n            var translateCoordName = that._isHorizontal ? \"translateY\" : \"translateX\";\r\n            var translate = label.attr(translateCoordName);\r\n            var labelCoord = (that._isHorizontal ? labelBBox.y : labelBBox.x) + translate;\r\n            var labelSize = that._isHorizontal ? labelBBox.height : labelBBox.width;\r\n            var attr = {};\r\n            attr[translateCoordName] = translate + (labelPosition === defaultLabelPosition ? axisPosition - labelCoord + labelIndent : -(labelCoord - axisPosition + labelSize + labelIndent));\r\n            label.attr(attr);\r\n            if (tick.mark) {\r\n                var markerCoord = that._isHorizontal ? tickMarkBBox.y : tickMarkBBox.x;\r\n                var markerSize = that._isHorizontal ? tickMarkBBox.height : tickMarkBBox.width;\r\n                attr[translateCoordName] = 2 * (axisPosition - markerCoord) - markerSize + 1;\r\n                tick.mark.attr(attr)\r\n            }\r\n        },\r\n        _detectElementsOverlapping: function(element1, element2) {\r\n            if (!element1 || !element2) {\r\n                return false\r\n            }\r\n            var bBox1 = element1.getBBox();\r\n            var x1 = bBox1.x + element1.attr(\"translateX\");\r\n            var y1 = bBox1.y + element1.attr(\"translateY\");\r\n            var bBox2 = element2.getBBox();\r\n            var x2 = bBox2.x + element2.attr(\"translateX\");\r\n            var y2 = bBox2.y + element2.attr(\"translateY\");\r\n            return (x2 >= x1 && x2 <= x1 + bBox1.width || x1 >= x2 && x1 <= x2 + bBox2.width) && (y2 >= y1 && y2 <= y1 + bBox1.height || y1 >= y2 && y1 <= y2 + bBox2.height)\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\n\r\nfunction getLineDrawer(renderer, root, rotatePoints, positionFrom, breakStart, positionTo, isWaved) {\r\n    var elementType = isWaved ? \"bezier\" : \"line\";\r\n    var group = renderer.g().append(root);\r\n    return function(offset, attr) {\r\n        renderer.path(rotatePoints(getPoints(positionFrom, breakStart, positionTo, offset, isWaved)), elementType).attr(attr).append(group)\r\n    }\r\n}\r\n\r\nfunction getPoints(positionFrom, breakStart, positionTo, offset, isWaved) {\r\n    if (!isWaved) {\r\n        return [positionFrom, breakStart + offset, positionTo, breakStart + offset]\r\n    }\r\n    breakStart += offset;\r\n    var currentPosition;\r\n    var topPoint = breakStart + WAVED_LINE_TOP;\r\n    var centerPoint = breakStart + WAVED_LINE_CENTER;\r\n    var bottomPoint = breakStart + WAVED_LINE_BOTTOM;\r\n    var points = [\r\n        [positionFrom, centerPoint]\r\n    ];\r\n    for (currentPosition = positionFrom; currentPosition < positionTo + WAVED_LINE_LENGTH; currentPosition += WAVED_LINE_LENGTH) {\r\n        points.push([currentPosition + 6, topPoint, currentPosition + 6, topPoint, currentPosition + 12, centerPoint, currentPosition + 18, bottomPoint, currentPosition + 18, bottomPoint, currentPosition + 24, centerPoint])\r\n    }\r\n    return [].concat.apply([], points)\r\n}\r\n\r\nfunction rotateLine(lineCoords) {\r\n    var points = [];\r\n    var i;\r\n    for (i = 0; i < lineCoords.length; i += 2) {\r\n        points.push(lineCoords[i + 1]);\r\n        points.push(lineCoords[i])\r\n    }\r\n    return points\r\n}\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/text_box/texteditor_button_collection/button.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar TextEditorButton = function() {\r\n    function TextEditorButton(name, editor, options) {\r\n        _classCallCheck(this, TextEditorButton);\r\n        this.instance = null;\r\n        this.$container = null;\r\n        this.$placeMarker = null;\r\n        this.editor = editor;\r\n        this.name = name;\r\n        this.options = options || {}\r\n    }\r\n    _createClass(TextEditorButton, [{\r\n        key: \"_addPlaceMarker\",\r\n        value: function($container) {\r\n            this.$placeMarker = (0, _renderer.default)(\"<div>\").appendTo($container)\r\n        }\r\n    }, {\r\n        key: \"_addToContainer\",\r\n        value: function($element) {\r\n            var $placeMarker = this.$placeMarker,\r\n                $container = this.$container;\r\n            $placeMarker ? $placeMarker.replaceWith($element) : $element.appendTo($container)\r\n        }\r\n    }, {\r\n        key: \"_attachEvents\",\r\n        value: function() {\r\n            throw \"Not implemented\"\r\n        }\r\n    }, {\r\n        key: \"_create\",\r\n        value: function() {\r\n            throw \"Not implemented\"\r\n        }\r\n    }, {\r\n        key: \"_isRendered\",\r\n        value: function() {\r\n            return !!this.instance\r\n        }\r\n    }, {\r\n        key: \"_isVisible\",\r\n        value: function() {\r\n            var editor = this.editor,\r\n                options = this.options;\r\n            return options.visible || !editor.option(\"readOnly\")\r\n        }\r\n    }, {\r\n        key: \"_isDisabled\",\r\n        value: function() {\r\n            throw \"Not implemented\"\r\n        }\r\n    }, {\r\n        key: \"_shouldRender\",\r\n        value: function() {\r\n            return this._isVisible() && !this._isRendered()\r\n        }\r\n    }, {\r\n        key: \"dispose\",\r\n        value: function() {\r\n            var instance = this.instance,\r\n                $placeMarker = this.$placeMarker;\r\n            if (instance) {\r\n                instance.dispose ? instance.dispose() : instance.remove();\r\n                this.instance = null\r\n            }\r\n            $placeMarker && $placeMarker.remove()\r\n        }\r\n    }, {\r\n        key: \"render\",\r\n        value: function() {\r\n            var $container = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.$container;\r\n            this.$container = $container;\r\n            if (this._isVisible()) {\r\n                var _this$_create = this._create(),\r\n                    instance = _this$_create.instance,\r\n                    $element = _this$_create.$element;\r\n                this.instance = instance;\r\n                this._attachEvents(instance, $element)\r\n            } else {\r\n                this._addPlaceMarker($container)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"update\",\r\n        value: function() {\r\n            if (this._shouldRender()) {\r\n                this.render()\r\n            }\r\n            return !!this.instance\r\n        }\r\n    }]);\r\n    return TextEditorButton\r\n}();\r\nexports.default = TextEditorButton;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiSchedulerAppointmentsPositioningStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointmentsPositioning.strategy.base\"));\r\nvar _uiSchedulerAppointmentsPositioningStrategy2 = _interopRequireDefault(require(\"./ui.scheduler.appointmentsPositioning.strategy.adaptive\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _themes = require(\"../../themes\");\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar APPOINTMENT_MIN_SIZE = 2;\r\nvar APPOINTMENT_DEFAULT_HEIGHT = 20;\r\nvar COMPACT_THEME_APPOINTMENT_DEFAULT_HEIGHT = 18;\r\nvar DROP_DOWN_BUTTON_ADAPTIVE_SIZE = 28;\r\nvar BaseRenderingStrategy = function() {\r\n    function BaseRenderingStrategy(instance) {\r\n        _classCallCheck(this, BaseRenderingStrategy);\r\n        this.instance = instance;\r\n        this._initPositioningStrategy()\r\n    }\r\n    _createClass(BaseRenderingStrategy, [{\r\n        key: \"_isAdaptive\",\r\n        value: function() {\r\n            return this.instance.fire(\"isAdaptive\")\r\n        }\r\n    }, {\r\n        key: \"_correctCollectorCoordinatesInAdaptive\",\r\n        value: function(coordinates, isAllDay) {\r\n            coordinates.top = coordinates.top + this.getCollectorTopOffset(isAllDay);\r\n            coordinates.left = coordinates.left + this.getCollectorLeftOffset()\r\n        }\r\n    }, {\r\n        key: \"_initPositioningStrategy\",\r\n        value: function() {\r\n            this._positioningStrategy = this._isAdaptive() ? new _uiSchedulerAppointmentsPositioningStrategy2.default(this) : new _uiSchedulerAppointmentsPositioningStrategy.default(this)\r\n        }\r\n    }, {\r\n        key: \"getPositioningStrategy\",\r\n        value: function() {\r\n            return this._positioningStrategy\r\n        }\r\n    }, {\r\n        key: \"getAppointmentMinSize\",\r\n        value: function() {\r\n            return APPOINTMENT_MIN_SIZE\r\n        }\r\n    }, {\r\n        key: \"keepAppointmentSettings\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"getDeltaTime\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"getAppointmentGeometry\",\r\n        value: function(coordinates) {\r\n            return coordinates\r\n        }\r\n    }, {\r\n        key: \"needCorrectAppointmentDates\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"getDirection\",\r\n        value: function() {\r\n            return \"horizontal\"\r\n        }\r\n    }, {\r\n        key: \"createTaskPositionMap\",\r\n        value: function(items) {\r\n            delete this._maxAppointmentCountPerCell;\r\n            var length = items && items.length;\r\n            if (!length) {\r\n                return\r\n            }\r\n            this._defaultWidth = this.instance.fire(\"getCellWidth\");\r\n            this._defaultHeight = this.instance.fire(\"getCellHeight\");\r\n            this._allDayHeight = this.instance._allDayCellHeight;\r\n            var map = [];\r\n            for (var i = 0; i < length; i++) {\r\n                var coordinates = this._getItemPosition(items[i]);\r\n                if (this._isRtl()) {\r\n                    coordinates = this._correctRtlCoordinates(coordinates)\r\n                }\r\n                map.push(coordinates)\r\n            }\r\n            var positionArray = this._getSortedPositions(map);\r\n            var resultPositions = this._getResultPositions(positionArray);\r\n            return this._getExtendedPositionMap(map, resultPositions)\r\n        }\r\n    }, {\r\n        key: \"_getDeltaWidth\",\r\n        value: function(args, initialSize) {\r\n            var intervalWidth = this.instance.fire(\"getResizableStep\") || this.getAppointmentMinSize();\r\n            var initialWidth = initialSize.width;\r\n            return Math.round((args.width - initialWidth) / intervalWidth)\r\n        }\r\n    }, {\r\n        key: \"_correctRtlCoordinates\",\r\n        value: function(coordinates) {\r\n            var width = coordinates[0].width || this._getAppointmentMaxWidth();\r\n            coordinates.forEach(function(coordinate) {\r\n                if (!coordinate.appointmentReduced) {\r\n                    coordinate.left -= width\r\n                }\r\n            });\r\n            return coordinates\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentMaxWidth\",\r\n        value: function() {\r\n            return this.getDefaultCellWidth()\r\n        }\r\n    }, {\r\n        key: \"_getItemPosition\",\r\n        value: function(appointment) {\r\n            var adapter = this.instance.createAppointmentAdapter(appointment);\r\n            var position = this._getAppointmentCoordinates(appointment);\r\n            var allDay = this.isAllDay(appointment);\r\n            var startDate = new Date(adapter.startDate);\r\n            var result = [];\r\n            for (var j = 0; j < position.length; j++) {\r\n                var height = this.calculateAppointmentHeight(appointment, position[j]);\r\n                var width = this.calculateAppointmentWidth(appointment, position[j]);\r\n                var resultWidth = width;\r\n                var appointmentReduced = null;\r\n                var multiWeekAppointmentParts = [];\r\n                var initialRowIndex = position[j].rowIndex;\r\n                var initialCellIndex = position[j].cellIndex;\r\n                if (this._needVerifyItemSize() || allDay) {\r\n                    var currentMaxAllowedPosition = position[j].hMax;\r\n                    if (this.isAppointmentGreaterThan(currentMaxAllowedPosition, {\r\n                            left: position[j].left,\r\n                            width: width\r\n                        })) {\r\n                        appointmentReduced = \"head\";\r\n                        initialRowIndex = position[j].rowIndex;\r\n                        initialCellIndex = position[j].cellIndex;\r\n                        resultWidth = this._reduceMultiWeekAppointment(width, {\r\n                            left: position[j].left,\r\n                            right: currentMaxAllowedPosition\r\n                        });\r\n                        multiWeekAppointmentParts = this._getAppointmentParts({\r\n                            sourceAppointmentWidth: width,\r\n                            reducedWidth: resultWidth,\r\n                            height: height\r\n                        }, position[j], startDate);\r\n                        if (this._isRtl()) {\r\n                            position[j].left = currentMaxAllowedPosition\r\n                        }\r\n                    }\r\n                }(0, _extend.extend)(position[j], {\r\n                    height: height,\r\n                    width: resultWidth,\r\n                    allDay: allDay,\r\n                    rowIndex: initialRowIndex,\r\n                    cellIndex: initialCellIndex,\r\n                    appointmentReduced: appointmentReduced\r\n                });\r\n                result = this._getAppointmentPartsPosition(multiWeekAppointmentParts, position[j], result)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentPartsPosition\",\r\n        value: function(appointmentParts, position, result) {\r\n            if (appointmentParts.length) {\r\n                appointmentParts.unshift(position);\r\n                result = result.concat(appointmentParts)\r\n            } else {\r\n                result.push(position)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentCoordinates\",\r\n        value: function(appointment) {\r\n            return this.instance.fire(\"createAppointmentSettings\", appointment)\r\n        }\r\n    }, {\r\n        key: \"_isRtl\",\r\n        value: function() {\r\n            return this.instance.option(\"rtlEnabled\")\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentParts\",\r\n        value: function() {\r\n            return []\r\n        }\r\n    }, {\r\n        key: \"_getCompactAppointmentParts\",\r\n        value: function(appointmentWidth) {\r\n            var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n            return Math.round(appointmentWidth / cellWidth)\r\n        }\r\n    }, {\r\n        key: \"_reduceMultiWeekAppointment\",\r\n        value: function(sourceAppointmentWidth, bound) {\r\n            if (this._isRtl()) {\r\n                sourceAppointmentWidth = Math.floor(bound.left - bound.right)\r\n            } else {\r\n                sourceAppointmentWidth = bound.right - Math.floor(bound.left)\r\n            }\r\n            return sourceAppointmentWidth\r\n        }\r\n    }, {\r\n        key: \"calculateAppointmentHeight\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"calculateAppointmentWidth\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"isAppointmentGreaterThan\",\r\n        value: function(etalon, comparisonParameters) {\r\n            var result = comparisonParameters.left + comparisonParameters.width - etalon;\r\n            if (this._isRtl()) {\r\n                result = etalon + comparisonParameters.width - comparisonParameters.left\r\n            }\r\n            return result > this.getDefaultCellWidth() / 2\r\n        }\r\n    }, {\r\n        key: \"isAllDay\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"cropAppointmentWidth\",\r\n        value: function(width, cellWidth) {\r\n            if (this.instance.fire(\"isGroupedByDate\")) {\r\n                width = cellWidth\r\n            }\r\n            return width\r\n        }\r\n    }, {\r\n        key: \"_getSortedPositions\",\r\n        value: function(positionList) {\r\n            var _this = this;\r\n            var result = [];\r\n            var round = function(value) {\r\n                return Math.round(100 * value) / 100\r\n            };\r\n            var createItem = function(rowIndex, cellIndex, top, left, bottom, right, position, allDay) {\r\n                return {\r\n                    i: rowIndex,\r\n                    j: cellIndex,\r\n                    top: round(top),\r\n                    left: round(left),\r\n                    bottom: round(bottom),\r\n                    right: round(right),\r\n                    cellPosition: position,\r\n                    allDay: allDay\r\n                }\r\n            };\r\n            for (var rowIndex = 0, rowCount = positionList.length; rowIndex < rowCount; rowIndex++) {\r\n                for (var cellIndex = 0, cellCount = positionList[rowIndex].length; cellIndex < cellCount; cellIndex++) {\r\n                    var _positionList$rowInde = positionList[rowIndex][cellIndex],\r\n                        top = _positionList$rowInde.top,\r\n                        left = _positionList$rowInde.left,\r\n                        height = _positionList$rowInde.height,\r\n                        width = _positionList$rowInde.width,\r\n                        cellPosition = _positionList$rowInde.cellPosition,\r\n                        allDay = _positionList$rowInde.allDay;\r\n                    result.push(createItem(rowIndex, cellIndex, top, left, top + height, left + width, cellPosition, allDay))\r\n                }\r\n            }\r\n            return result.sort(function(a, b) {\r\n                return _this._sortCondition(a, b)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_sortCondition\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_getConditions\",\r\n        value: function(a, b) {\r\n            var isSomeEdge = this._isSomeEdge(a, b);\r\n            return {\r\n                columnCondition: isSomeEdge || this._normalizeCondition(a.left, b.left),\r\n                rowCondition: isSomeEdge || this._normalizeCondition(a.top, b.top),\r\n                cellPositionCondition: isSomeEdge || this._normalizeCondition(a.cellPosition, b.cellPosition)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_rowCondition\",\r\n        value: function(a, b) {\r\n            var conditions = this._getConditions(a, b);\r\n            return conditions.columnCondition || conditions.rowCondition\r\n        }\r\n    }, {\r\n        key: \"_columnCondition\",\r\n        value: function(a, b) {\r\n            var conditions = this._getConditions(a, b);\r\n            return conditions.rowCondition || conditions.columnCondition\r\n        }\r\n    }, {\r\n        key: \"_isSomeEdge\",\r\n        value: function(a, b) {\r\n            return a.i === b.i && a.j === b.j\r\n        }\r\n    }, {\r\n        key: \"_normalizeCondition\",\r\n        value: function(first, second) {\r\n            var result = first - second;\r\n            return Math.abs(result) > 1 ? result : 0\r\n        }\r\n    }, {\r\n        key: \"_isItemsCross\",\r\n        value: function(firstItem, secondItem) {\r\n            var areItemsInTheSameTable = !!firstItem.allDay === !!secondItem.allDay;\r\n            var areItemsAllDay = firstItem.allDay && secondItem.allDay;\r\n            if (areItemsInTheSameTable) {\r\n                var orientation = this._getOrientation(areItemsAllDay);\r\n                return this._checkItemsCrossing(firstItem, secondItem, orientation)\r\n            } else {\r\n                return false\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_checkItemsCrossing\",\r\n        value: function(firstItem, secondItem, orientation) {\r\n            var firstItemSide_1 = Math.floor(firstItem[orientation[0]]);\r\n            var firstItemSide_2 = Math.floor(firstItem[orientation[1]]);\r\n            var secondItemSide_1 = Math.ceil(secondItem[orientation[0]]);\r\n            var secondItemSide_2 = Math.ceil(secondItem[orientation[1]]);\r\n            var isItemCross = Math.abs(firstItem[orientation[2]] - secondItem[orientation[2]]) <= 1;\r\n            return isItemCross && (firstItemSide_1 <= secondItemSide_1 && firstItemSide_2 > secondItemSide_1 || firstItemSide_1 < secondItemSide_2 && firstItemSide_2 >= secondItemSide_2 || firstItemSide_1 === secondItemSide_1 && firstItemSide_2 === secondItemSide_2)\r\n        }\r\n    }, {\r\n        key: \"_getOrientation\",\r\n        value: function(isAllDay) {\r\n            return isAllDay ? [\"left\", \"right\", \"top\"] : [\"top\", \"bottom\", \"left\"]\r\n        }\r\n    }, {\r\n        key: \"_getResultPositions\",\r\n        value: function(sortedArray) {\r\n            var _this2 = this;\r\n            var result = [];\r\n            var i;\r\n            var sortedIndex = 0;\r\n            var currentItem;\r\n            var indexes;\r\n            var itemIndex;\r\n            var maxIndexInStack = 0;\r\n            var stack = {};\r\n            var findFreeIndex = function findFreeIndex(indexes, index) {\r\n                var isFind = indexes.some(function(item) {\r\n                    return item === index\r\n                });\r\n                if (isFind) {\r\n                    return findFreeIndex(indexes, ++index)\r\n                } else {\r\n                    return index\r\n                }\r\n            };\r\n            var createItem = function(currentItem, index) {\r\n                var currentIndex = index || 0;\r\n                return {\r\n                    index: currentIndex,\r\n                    i: currentItem.i,\r\n                    j: currentItem.j,\r\n                    left: currentItem.left,\r\n                    right: currentItem.right,\r\n                    top: currentItem.top,\r\n                    bottom: currentItem.bottom,\r\n                    allDay: currentItem.allDay,\r\n                    sortedIndex: _this2._skipSortedIndex(currentIndex) ? null : sortedIndex++\r\n                }\r\n            };\r\n            var startNewStack = function(currentItem) {\r\n                stack.items = [createItem(currentItem)];\r\n                stack.left = currentItem.left;\r\n                stack.right = currentItem.right;\r\n                stack.top = currentItem.top;\r\n                stack.bottom = currentItem.bottom;\r\n                stack.allDay = currentItem.allDay\r\n            };\r\n            var pushItemsInResult = function(items) {\r\n                items.forEach(function(item) {\r\n                    result.push({\r\n                        index: item.index,\r\n                        count: maxIndexInStack + 1,\r\n                        i: item.i,\r\n                        j: item.j,\r\n                        sortedIndex: item.sortedIndex\r\n                    })\r\n                })\r\n            };\r\n            for (i = 0; i < sortedArray.length; i++) {\r\n                currentItem = sortedArray[i];\r\n                indexes = [];\r\n                if (!stack.items) {\r\n                    startNewStack(currentItem)\r\n                } else {\r\n                    if (this._isItemsCross(stack, currentItem)) {\r\n                        stack.items.forEach(function(item, index) {\r\n                            if (_this2._isItemsCross(item, currentItem)) {\r\n                                indexes.push(item.index)\r\n                            }\r\n                        });\r\n                        itemIndex = indexes.length ? findFreeIndex(indexes, 0) : 0;\r\n                        stack.items.push(createItem(currentItem, itemIndex));\r\n                        maxIndexInStack = Math.max(itemIndex, maxIndexInStack);\r\n                        stack.left = Math.min(stack.left, currentItem.left);\r\n                        stack.right = Math.max(stack.right, currentItem.right);\r\n                        stack.top = Math.min(stack.top, currentItem.top);\r\n                        stack.bottom = Math.max(stack.bottom, currentItem.bottom);\r\n                        stack.allDay = currentItem.allDay\r\n                    } else {\r\n                        pushItemsInResult(stack.items);\r\n                        stack = {};\r\n                        startNewStack(currentItem);\r\n                        maxIndexInStack = 0\r\n                    }\r\n                }\r\n            }\r\n            if (stack.items) {\r\n                pushItemsInResult(stack.items)\r\n            }\r\n            return result.sort(function(a, b) {\r\n                var columnCondition = a.j - b.j;\r\n                var rowCondition = a.i - b.i;\r\n                return rowCondition ? rowCondition : columnCondition\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_skipSortedIndex\",\r\n        value: function(index) {\r\n            return index > this._getMaxAppointmentCountPerCell() - 1\r\n        }\r\n    }, {\r\n        key: \"_findIndexByKey\",\r\n        value: function(arr, iKey, jKey, iValue, jValue) {\r\n            var result = 0;\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                if (arr[i][iKey] === iValue && arr[i][jKey] === jValue) {\r\n                    result = i;\r\n                    break\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getExtendedPositionMap\",\r\n        value: function(map, positions) {\r\n            var positionCounter = 0;\r\n            var result = [];\r\n            for (var i = 0, mapLength = map.length; i < mapLength; i++) {\r\n                var resultString = [];\r\n                for (var j = 0, itemLength = map[i].length; j < itemLength; j++) {\r\n                    map[i][j].index = positions[positionCounter].index;\r\n                    map[i][j].sortedIndex = positions[positionCounter].sortedIndex;\r\n                    map[i][j].count = positions[positionCounter++].count;\r\n                    resultString.push(map[i][j]);\r\n                    this._checkLongCompactAppointment(map[i][j], resultString)\r\n                }\r\n                result.push(resultString)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_checkLongCompactAppointment\",\r\n        value: function(item, result) {\r\n            this._splitLongCompactAppointment(item, result);\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_splitLongCompactAppointment\",\r\n        value: function(item, result) {\r\n            var appointmentCountPerCell = this._getMaxAppointmentCountPerCellByType(item.allDay);\r\n            var compactCount = 0;\r\n            if (void 0 !== appointmentCountPerCell && item.index > appointmentCountPerCell - 1) {\r\n                item.isCompact = true;\r\n                compactCount = this._getCompactAppointmentParts(item.width);\r\n                for (var k = 1; k < compactCount; k++) {\r\n                    var compactPart = (0, _extend.extend)(true, {}, item);\r\n                    compactPart.left = this._getCompactLeftCoordinate(item.left, k);\r\n                    compactPart.cellIndex = compactPart.cellIndex + k;\r\n                    compactPart.sortedIndex = null;\r\n                    result.push(compactPart)\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"normalizeEndDateByViewEnd\",\r\n        value: function(appointment, endDate) {\r\n            var result = new Date(endDate.getTime());\r\n            if (!this.isAllDay(appointment)) {\r\n                var viewEndDate = _date.default.roundToHour(this.instance.fire(\"getEndViewDate\"));\r\n                if (result > viewEndDate) {\r\n                    result = viewEndDate\r\n                }\r\n            }\r\n            var endDayHour = this.instance._getCurrentViewOption(\"endDayHour\");\r\n            var allDay = this.instance.fire(\"getField\", \"allDay\", appointment);\r\n            var currentViewEndTime = new Date(new Date(endDate.getTime()).setHours(endDayHour, 0, 0, 0));\r\n            if (result.getTime() > currentViewEndTime.getTime() || allDay && result.getHours() < endDayHour) {\r\n                result = currentViewEndTime\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_adjustDurationByDaylightDiff\",\r\n        value: function(duration, startDate, endDate) {\r\n            var daylightDiff = _utils.default.getDaylightOffset(startDate, endDate);\r\n            return this._needAdjustDuration(daylightDiff) ? this._calculateDurationByDaylightDiff(duration, daylightDiff) : duration\r\n        }\r\n    }, {\r\n        key: \"_needAdjustDuration\",\r\n        value: function(diff) {\r\n            return 0 !== diff\r\n        }\r\n    }, {\r\n        key: \"_calculateDurationByDaylightDiff\",\r\n        value: function(duration, diff) {\r\n            return duration + diff * toMs(\"minute\")\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDurationInMs\",\r\n        value: function(startDate, endDate, allDay) {\r\n            return this.instance.fire(\"getAppointmentDurationInMs\", {\r\n                startDate: startDate,\r\n                endDate: endDate,\r\n                allDay: allDay\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_markAppointmentAsVirtual\",\r\n        value: function(coordinates, isAllDay) {\r\n            var countFullWidthAppointmentInCell = this._getMaxAppointmentCountPerCellByType(isAllDay);\r\n            if (coordinates.count - countFullWidthAppointmentInCell > 0) {\r\n                coordinates.virtual = {\r\n                    top: coordinates.top,\r\n                    left: coordinates.left,\r\n                    index: \"tail\" === coordinates.appointmentReduced ? coordinates.groupIndex + \"-\" + coordinates.rowIndex + \"-\" + coordinates.cellIndex : coordinates.groupIndex + \"-\" + coordinates.rowIndex + \"-\" + coordinates.cellIndex + \"-tail\",\r\n                    isAllDay: isAllDay\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getMaxAppointmentCountPerCellByType\",\r\n        value: function(isAllDay) {\r\n            var appointmentCountPerCell = this._getMaxAppointmentCountPerCell();\r\n            if ((0, _type.isObject)(appointmentCountPerCell)) {\r\n                return isAllDay ? this._getMaxAppointmentCountPerCell().allDay : this._getMaxAppointmentCountPerCell().simple\r\n            } else {\r\n                return appointmentCountPerCell\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getDropDownAppointmentWidth\",\r\n        value: function(intervalCount, isAllDay) {\r\n            return this.getPositioningStrategy().getDropDownAppointmentWidth(intervalCount, isAllDay)\r\n        }\r\n    }, {\r\n        key: \"getDropDownAppointmentHeight\",\r\n        value: function() {\r\n            return this.getPositioningStrategy().getDropDownAppointmentHeight()\r\n        }\r\n    }, {\r\n        key: \"getDropDownButtonAdaptiveSize\",\r\n        value: function() {\r\n            return DROP_DOWN_BUTTON_ADAPTIVE_SIZE\r\n        }\r\n    }, {\r\n        key: \"getDefaultCellWidth\",\r\n        value: function() {\r\n            return this._defaultWidth\r\n        }\r\n    }, {\r\n        key: \"getDefaultCellHeight\",\r\n        value: function() {\r\n            return this._defaultHeight\r\n        }\r\n    }, {\r\n        key: \"getDefaultAllDayCellHeight\",\r\n        value: function() {\r\n            return this._allDayHeight\r\n        }\r\n    }, {\r\n        key: \"getCollectorTopOffset\",\r\n        value: function(allDay) {\r\n            return this.getPositioningStrategy().getCollectorTopOffset(allDay)\r\n        }\r\n    }, {\r\n        key: \"getCollectorLeftOffset\",\r\n        value: function() {\r\n            return this.getPositioningStrategy().getCollectorLeftOffset()\r\n        }\r\n    }, {\r\n        key: \"getAppointmentDataCalculator\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_customizeCoordinates\",\r\n        value: function(coordinates, height, appointmentCountPerCell, topOffset, isAllDay) {\r\n            var index = coordinates.index;\r\n            var appointmentHeight = height / appointmentCountPerCell;\r\n            var appointmentTop = coordinates.top + index * appointmentHeight;\r\n            var top = appointmentTop + topOffset;\r\n            var width = coordinates.width;\r\n            var left = coordinates.left;\r\n            if (coordinates.isCompact) {\r\n                this._isAdaptive() && this._correctCollectorCoordinatesInAdaptive(coordinates, isAllDay);\r\n                this._markAppointmentAsVirtual(coordinates, isAllDay)\r\n            }\r\n            return {\r\n                height: appointmentHeight,\r\n                width: width,\r\n                top: top,\r\n                left: left,\r\n                empty: this._isAppointmentEmpty(height, width)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isAppointmentEmpty\",\r\n        value: function(height, width) {\r\n            return height < this._getAppointmentMinHeight() || width < this._getAppointmentMinWidth()\r\n        }\r\n    }, {\r\n        key: \"_calculateGeometryConfig\",\r\n        value: function(coordinates) {\r\n            var overlappingMode = this.instance.fire(\"getMaxAppointmentsPerCell\");\r\n            var offsets = this._getOffsets();\r\n            var appointmentDefaultOffset = this._getAppointmentDefaultOffset();\r\n            var appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates);\r\n            var ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell);\r\n            var maxHeight = this._getMaxHeight();\r\n            if (!(0, _type.isNumeric)(appointmentCountPerCell)) {\r\n                appointmentCountPerCell = coordinates.count;\r\n                ratio = (maxHeight - offsets.unlimited) / maxHeight\r\n            }\r\n            var topOffset = (1 - ratio) * maxHeight;\r\n            if (\"auto\" === overlappingMode || (0, _type.isNumeric)(overlappingMode)) {\r\n                ratio = 1;\r\n                maxHeight -= appointmentDefaultOffset;\r\n                topOffset = appointmentDefaultOffset\r\n            }\r\n            return {\r\n                height: ratio * maxHeight,\r\n                appointmentCountPerCell: appointmentCountPerCell,\r\n                offset: topOffset\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentCount\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_getDefaultRatio\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_getOffsets\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_getMaxHeight\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_needVerifyItemSize\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"needSeparateAppointment\",\r\n        value: function(allDay) {\r\n            return this.instance.fire(\"isGroupedByDate\") && allDay\r\n        }\r\n    }, {\r\n        key: \"_getMaxAppointmentCountPerCell\",\r\n        value: function() {\r\n            if (!this._maxAppointmentCountPerCell) {\r\n                var overlappingMode = this.instance.fire(\"getMaxAppointmentsPerCell\");\r\n                var appointmentCountPerCell;\r\n                if ((0, _type.isNumeric)(overlappingMode)) {\r\n                    appointmentCountPerCell = overlappingMode\r\n                }\r\n                if (\"auto\" === overlappingMode) {\r\n                    appointmentCountPerCell = this._getDynamicAppointmentCountPerCell()\r\n                }\r\n                if (\"unlimited\" === overlappingMode) {\r\n                    appointmentCountPerCell = void 0\r\n                }\r\n                this._maxAppointmentCountPerCell = appointmentCountPerCell\r\n            }\r\n            return this._maxAppointmentCountPerCell\r\n        }\r\n    }, {\r\n        key: \"_getDynamicAppointmentCountPerCell\",\r\n        value: function() {\r\n            return this.getPositioningStrategy().getDynamicAppointmentCountPerCell()\r\n        }\r\n    }, {\r\n        key: \"hasAllDayAppointments\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_isCompactTheme\",\r\n        value: function() {\r\n            return \"compact\" === ((0, _themes.current)() || \"\").split(\".\").pop()\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDefaultOffset\",\r\n        value: function() {\r\n            return this.getPositioningStrategy().getAppointmentDefaultOffset()\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDefaultHeight\",\r\n        value: function() {\r\n            return this._getAppointmentHeightByTheme()\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentMinHeight\",\r\n        value: function() {\r\n            return this._getAppointmentDefaultHeight()\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentHeightByTheme\",\r\n        value: function() {\r\n            return this._isCompactTheme() ? COMPACT_THEME_APPOINTMENT_DEFAULT_HEIGHT : APPOINTMENT_DEFAULT_HEIGHT\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDefaultWidth\",\r\n        value: function() {\r\n            return this.getPositioningStrategy()._getAppointmentDefaultWidth()\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentMinWidth\",\r\n        value: function() {\r\n            return this._getAppointmentDefaultWidth()\r\n        }\r\n    }, {\r\n        key: \"_needVerticalGroupBounds\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_needHorizontalGroupBounds\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }]);\r\n    return BaseRenderingStrategy\r\n}();\r\nvar _default = BaseRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/recurrence.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getRecurrenceProcessor = getRecurrenceProcessor;\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _rrule = require(\"rrule\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _utilsTimeZone = _interopRequireDefault(require(\"./utils.timeZone.js\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar ruleNames = [\"freq\", \"interval\", \"byday\", \"byweekno\", \"byyearday\", \"bymonth\", \"bymonthday\", \"count\", \"until\", \"byhour\", \"byminute\", \"bysecond\", \"bysetpos\", \"wkst\"];\r\nvar freqNames = [\"DAILY\", \"WEEKLY\", \"MONTHLY\", \"YEARLY\", \"SECONDLY\", \"MINUTELY\", \"HOURLY\"];\r\nvar days = {\r\n    SU: 0,\r\n    MO: 1,\r\n    TU: 2,\r\n    WE: 3,\r\n    TH: 4,\r\n    FR: 5,\r\n    SA: 6\r\n};\r\nvar loggedWarnings = [];\r\nvar recurrence = null;\r\n\r\nfunction getRecurrenceProcessor() {\r\n    if (!recurrence) {\r\n        recurrence = new RecurrenceProcessor\r\n    }\r\n    return recurrence\r\n}\r\nvar RecurrenceProcessor = function() {\r\n    function RecurrenceProcessor() {\r\n        _classCallCheck(this, RecurrenceProcessor);\r\n        this.rRule = null;\r\n        this.rRuleSet = null;\r\n        this.validator = new RecurrenceValidator\r\n    }\r\n    _createClass(RecurrenceProcessor, [{\r\n        key: \"generateDates\",\r\n        value: function(options) {\r\n            var result = [];\r\n            var recurrenceRule = this.evalRecurrenceRule(options.rule);\r\n            var rule = recurrenceRule.rule;\r\n            if (!recurrenceRule.isValid || !rule.freq) {\r\n                return result\r\n            }\r\n            var startDateUtc = _utilsTimeZone.default.createUTCDateWithLocalOffset(options.start);\r\n            var endDateUtc = _utilsTimeZone.default.createUTCDateWithLocalOffset(options.end);\r\n            var minDateUtc = _utilsTimeZone.default.createUTCDateWithLocalOffset(options.min);\r\n            var maxDateUtc = _utilsTimeZone.default.createUTCDateWithLocalOffset(options.max);\r\n            var duration = endDateUtc ? endDateUtc.getTime() - startDateUtc.getTime() : 0;\r\n            this._initializeRRule(options, startDateUtc);\r\n            var minTime = minDateUtc.getTime();\r\n            var leftBorder = this._getLeftBorder(options, minDateUtc, duration);\r\n            this.rRuleSet.between(leftBorder, maxDateUtc, true).forEach(function(date) {\r\n                var endAppointmentTime = date.getTime() + duration;\r\n                if (endAppointmentTime >= minTime) {\r\n                    var correctDate = _utilsTimeZone.default.createDateFromUTCWithLocalOffset(date);\r\n                    result.push(correctDate)\r\n                }\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"hasRecurrence\",\r\n        value: function(options) {\r\n            return !!this.generateDates(options).length\r\n        }\r\n    }, {\r\n        key: \"evalRecurrenceRule\",\r\n        value: function(rule) {\r\n            var result = {\r\n                rule: {},\r\n                isValid: false\r\n            };\r\n            if (rule) {\r\n                result.rule = this._parseRecurrenceRule(rule);\r\n                result.isValid = this.validator.validateRRule(result.rule, rule)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"isValidRecurrenceRule\",\r\n        value: function(rule) {\r\n            return this.evalRecurrenceRule(rule).isValid\r\n        }\r\n    }, {\r\n        key: \"daysFromByDayRule\",\r\n        value: function(rule) {\r\n            var result = [];\r\n            if (rule.byday) {\r\n                if (Array.isArray(rule.byday)) {\r\n                    result = rule.byday\r\n                } else {\r\n                    result = rule.byday.split(\",\")\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getAsciiStringByDate\",\r\n        value: function(date) {\r\n            var currentOffset = this._getTimeZoneOffset() * toMs(\"minute\");\r\n            var offsetDate = new Date(date.getTime() + currentOffset);\r\n            return offsetDate.getFullYear() + (\"0\" + (offsetDate.getMonth() + 1)).slice(-2) + (\"0\" + offsetDate.getDate()).slice(-2) + \"T\" + (\"0\" + offsetDate.getHours()).slice(-2) + (\"0\" + offsetDate.getMinutes()).slice(-2) + (\"0\" + offsetDate.getSeconds()).slice(-2) + \"Z\"\r\n        }\r\n    }, {\r\n        key: \"getRecurrenceString\",\r\n        value: function(object) {\r\n            if (!object || !object.freq) {\r\n                return\r\n            }\r\n            var result = \"\";\r\n            for (var field in object) {\r\n                var value = object[field];\r\n                if (\"interval\" === field && value < 2) {\r\n                    continue\r\n                }\r\n                if (\"until\" === field) {\r\n                    value = this.getAsciiStringByDate(value)\r\n                }\r\n                result += field + \"=\" + value + \";\"\r\n            }\r\n            result = result.substring(0, result.length - 1);\r\n            return result.toUpperCase()\r\n        }\r\n    }, {\r\n        key: \"getDateByAsciiString\",\r\n        value: function(string, initialDate) {\r\n            if (\"string\" !== typeof string) {\r\n                return string\r\n            }\r\n            var arrayDate = string.match(/(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2}))?(Z)?/);\r\n            if (!arrayDate) {\r\n                return null\r\n            }\r\n            var isUTCString = void 0 !== arrayDate[8];\r\n            var currentOffset = initialDate ? initialDate.getTimezoneOffset() : this._getTimeZoneOffset();\r\n            var date = new(Function.prototype.bind.apply(Date, this._prepareDateArrayToParse(arrayDate)));\r\n            currentOffset *= toMs(\"minute\");\r\n            if (isUTCString) {\r\n                date = new Date(date.getTime() - currentOffset)\r\n            }\r\n            return date\r\n        }\r\n    }, {\r\n        key: \"_dispose\",\r\n        value: function() {\r\n            if (this.rRuleSet) {\r\n                delete this.rRuleSet;\r\n                this.rRuleSet = null\r\n            }\r\n            if (this.rRule) {\r\n                delete this.rRule;\r\n                this.rRule = null\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getTimeZoneOffset\",\r\n        value: function() {\r\n            return (new Date).getTimezoneOffset()\r\n        }\r\n    }, {\r\n        key: \"_initializeRRule\",\r\n        value: function(options, startDateUtc) {\r\n            var _this = this;\r\n            var ruleOptions = _rrule.RRule.parseString(options.rule);\r\n            var firstDayOfWeek = options.firstDayOfWeek;\r\n            ruleOptions.dtstart = startDateUtc;\r\n            if (!ruleOptions.wkst && firstDayOfWeek) {\r\n                var weekDayNumbers = [6, 0, 1, 2, 3, 4, 5];\r\n                ruleOptions.wkst = weekDayNumbers[firstDayOfWeek]\r\n            }\r\n            this._createRRule(ruleOptions);\r\n            if (options.exception) {\r\n                var splitDates = options.exception.split(\",\");\r\n                var exceptDates = this._getDatesByRecurrenceException(splitDates, startDateUtc);\r\n                exceptDates.forEach(function(date) {\r\n                    var utcDate = _utilsTimeZone.default.createUTCDateWithLocalOffset(date);\r\n                    _this.rRuleSet.exdate(utcDate)\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createRRule\",\r\n        value: function(ruleOptions) {\r\n            this._dispose();\r\n            var rRuleSet = new _rrule.RRuleSet;\r\n            this.rRuleSet = rRuleSet;\r\n            this.rRule = new _rrule.RRule(ruleOptions);\r\n            this.rRuleSet.rrule(this.rRule)\r\n        }\r\n    }, {\r\n        key: \"_getLeftBorder\",\r\n        value: function(options, minDateUtc, appointmentDuration) {\r\n            if (options.end && !_utilsTimeZone.default.isSameAppointmentDates(options.start, options.end)) {\r\n                return new Date(minDateUtc.getTime() - appointmentDuration)\r\n            }\r\n            return minDateUtc\r\n        }\r\n    }, {\r\n        key: \"_getDatesByRecurrenceException\",\r\n        value: function(ruleValues, date) {\r\n            var _this2 = this;\r\n            var result = [];\r\n            ruleValues.forEach(function(rule) {\r\n                return result.push(_this2.getDateByAsciiString(rule, date))\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_parseRecurrenceRule\",\r\n        value: function(recurrence) {\r\n            var ruleObject = {};\r\n            var ruleParts = recurrence.split(\";\");\r\n            for (var i = 0, len = ruleParts.length; i < len; i++) {\r\n                var rule = ruleParts[i].split(\"=\");\r\n                var ruleName = rule[0].toLowerCase();\r\n                var ruleValue = rule[1];\r\n                ruleObject[ruleName] = ruleValue\r\n            }\r\n            var count = parseInt(ruleObject.count);\r\n            if (!isNaN(count)) {\r\n                ruleObject.count = count\r\n            }\r\n            if (ruleObject.interval) {\r\n                var interval = parseInt(ruleObject.interval);\r\n                if (!isNaN(interval)) {\r\n                    ruleObject.interval = interval\r\n                }\r\n            } else {\r\n                ruleObject.interval = 1\r\n            }\r\n            if (ruleObject.freq && ruleObject.until) {\r\n                ruleObject.until = this.getDateByAsciiString(ruleObject.until)\r\n            }\r\n            return ruleObject\r\n        }\r\n    }, {\r\n        key: \"_prepareDateArrayToParse\",\r\n        value: function(arrayDate) {\r\n            arrayDate.shift();\r\n            if (void 0 === arrayDate[3]) {\r\n                arrayDate.splice(3)\r\n            } else {\r\n                arrayDate.splice(3, 1);\r\n                arrayDate.splice(6)\r\n            }\r\n            arrayDate[1]--;\r\n            arrayDate.unshift(null);\r\n            return arrayDate\r\n        }\r\n    }]);\r\n    return RecurrenceProcessor\r\n}();\r\nvar RecurrenceValidator = function() {\r\n    function RecurrenceValidator() {\r\n        _classCallCheck(this, RecurrenceValidator)\r\n    }\r\n    _createClass(RecurrenceValidator, [{\r\n        key: \"validateRRule\",\r\n        value: function(rule, recurrence) {\r\n            if (this._brokenRuleNameExists(rule) || (0, _array.inArray)(rule.freq, freqNames) === -1 || this._wrongCountRule(rule) || this._wrongIntervalRule(rule) || this._wrongDayOfWeek(rule) || this._wrongByMonthDayRule(rule) || this._wrongByMonth(rule) || this._wrongUntilRule(rule)) {\r\n                this._logBrokenRule(recurrence);\r\n                return false\r\n            }\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_wrongUntilRule\",\r\n        value: function(rule) {\r\n            var wrongUntil = false;\r\n            var until = rule.until;\r\n            if (void 0 !== until && !(until instanceof Date)) {\r\n                wrongUntil = true\r\n            }\r\n            return wrongUntil\r\n        }\r\n    }, {\r\n        key: \"_wrongCountRule\",\r\n        value: function(rule) {\r\n            var wrongCount = false;\r\n            var count = rule.count;\r\n            if (count && \"string\" === typeof count) {\r\n                wrongCount = true\r\n            }\r\n            return wrongCount\r\n        }\r\n    }, {\r\n        key: \"_wrongByMonthDayRule\",\r\n        value: function(rule) {\r\n            var wrongByMonthDay = false;\r\n            var byMonthDay = rule.bymonthday;\r\n            if (byMonthDay && isNaN(parseInt(byMonthDay))) {\r\n                wrongByMonthDay = true\r\n            }\r\n            return wrongByMonthDay\r\n        }\r\n    }, {\r\n        key: \"_wrongByMonth\",\r\n        value: function(rule) {\r\n            var wrongByMonth = false;\r\n            var byMonth = rule.bymonth;\r\n            if (byMonth && isNaN(parseInt(byMonth))) {\r\n                wrongByMonth = true\r\n            }\r\n            return wrongByMonth\r\n        }\r\n    }, {\r\n        key: \"_wrongIntervalRule\",\r\n        value: function(rule) {\r\n            var wrongInterval = false;\r\n            var interval = rule.interval;\r\n            if (interval && \"string\" === typeof interval) {\r\n                wrongInterval = true\r\n            }\r\n            return wrongInterval\r\n        }\r\n    }, {\r\n        key: \"_wrongDayOfWeek\",\r\n        value: function(rule) {\r\n            var byDay = rule.byday;\r\n            var daysByRule = getRecurrenceProcessor().daysFromByDayRule(rule);\r\n            var brokenDaysExist = false;\r\n            if (\"\" === byDay) {\r\n                brokenDaysExist = true\r\n            }(0, _iterator.each)(daysByRule, function(_, day) {\r\n                if (!Object.prototype.hasOwnProperty.call(days, day)) {\r\n                    brokenDaysExist = true;\r\n                    return false\r\n                }\r\n            });\r\n            return brokenDaysExist\r\n        }\r\n    }, {\r\n        key: \"_brokenRuleNameExists\",\r\n        value: function(rule) {\r\n            var brokenRuleExists = false;\r\n            (0, _iterator.each)(rule, function(ruleName) {\r\n                if ((0, _array.inArray)(ruleName, ruleNames) === -1) {\r\n                    brokenRuleExists = true;\r\n                    return false\r\n                }\r\n            });\r\n            return brokenRuleExists\r\n        }\r\n    }, {\r\n        key: \"_logBrokenRule\",\r\n        value: function(recurrence) {\r\n            if ((0, _array.inArray)(recurrence, loggedWarnings) === -1) {\r\n                _errors.default.log(\"W0006\", recurrence);\r\n                loggedWarnings.push(recurrence)\r\n            }\r\n        }\r\n    }]);\r\n    return RecurrenceValidator\r\n}();\r\n","/**\r\n * DevExtreme (ui/tabs/item.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _item = _interopRequireDefault(require(\"../collection/item\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TABS_ITEM_BADGE_CLASS = \"dx-tabs-item-badge\";\r\nvar BADGE_CLASS = \"dx-badge\";\r\nvar TabsItem = _item.default.inherit({\r\n    _renderWatchers: function() {\r\n        this.callBase();\r\n        this._startWatcher(\"badge\", this._renderBadge.bind(this))\r\n    },\r\n    _renderBadge: function(badge) {\r\n        this._$element.children(\".\" + BADGE_CLASS).remove();\r\n        if (!badge) {\r\n            return\r\n        }\r\n        var $badge = (0, _renderer.default)(\"<div>\").addClass(TABS_ITEM_BADGE_CLASS).addClass(BADGE_CLASS).text(badge);\r\n        this._$element.append($badge)\r\n    }\r\n});\r\nvar _default = TabsItem;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.sendRequest = sendRequest;\r\nexports.findField = findField;\r\nexports.formatValue = formatValue;\r\nexports.getCompareFunction = getCompareFunction;\r\nexports.createPath = createPath;\r\nexports.foreachDataLevel = foreachDataLevel;\r\nexports.mergeArraysByMaxValue = mergeArraysByMaxValue;\r\nexports.getExpandedLevel = getExpandedLevel;\r\nexports.discoverObjectFields = discoverObjectFields;\r\nexports.getFieldsDataType = getFieldsDataType;\r\nexports.setDefaultFieldValueFormatting = setDefaultFieldValueFormatting;\r\nexports.getFiltersByPath = getFiltersByPath;\r\nexports.capitalizeFirstLetter = capitalizeFirstLetter;\r\nexports.storeDrillDownMixin = exports.foreachTreeAsync = exports.foreachTree = exports.setFieldProperty = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _ajax = _interopRequireDefault(require(\"../../core/utils/ajax\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar setFieldProperty = function(field, property, value, isInitialization) {\r\n    var initProperties = field._initProperties = field._initProperties || {};\r\n    var initValue = isInitialization ? value : field[property];\r\n    if (!Object.prototype.hasOwnProperty.call(initProperties, property) || isInitialization) {\r\n        initProperties[property] = initValue\r\n    }\r\n    field[property] = value\r\n};\r\nexports.setFieldProperty = setFieldProperty;\r\n\r\nfunction sendRequest(options) {\r\n    return _ajax.default.sendRequest(options)\r\n}\r\nvar foreachTreeAsyncDate = new Date;\r\n\r\nfunction createForeachTreeFunc(isAsync) {\r\n    var foreachTreeFunc = function foreachTreeFunc(items, callback, parentAtFirst, members, index, isChildrenProcessing) {\r\n        members = members || [];\r\n        items = items || [];\r\n        var i;\r\n        var deferred;\r\n        index = index || 0;\r\n\r\n        function createForeachTreeAsyncHandler(deferred, i, isChildrenProcessing) {\r\n            (0, _deferred.when)(foreachTreeFunc(items, callback, parentAtFirst, members, i, isChildrenProcessing)).done(deferred.resolve)\r\n        }\r\n        for (i = index; i < items.length; i++) {\r\n            if (isAsync && i > index && i % 1e4 === 0 && new Date - foreachTreeAsyncDate >= 300) {\r\n                foreachTreeAsyncDate = new Date;\r\n                deferred = new _deferred.Deferred;\r\n                setTimeout(createForeachTreeAsyncHandler(deferred, i, false), 0);\r\n                return deferred\r\n            }\r\n            var item = items[i];\r\n            if (!isChildrenProcessing) {\r\n                members.unshift(item);\r\n                if (parentAtFirst && false === callback(members, i)) {\r\n                    return\r\n                }\r\n                if (item.children) {\r\n                    var childrenDeferred = foreachTreeFunc(item.children, callback, parentAtFirst, members);\r\n                    if (isAsync && childrenDeferred) {\r\n                        deferred = new _deferred.Deferred;\r\n                        childrenDeferred.done(createForeachTreeAsyncHandler(deferred, i, true));\r\n                        return deferred\r\n                    }\r\n                }\r\n            }\r\n            isChildrenProcessing = false;\r\n            if (!parentAtFirst && false === callback(members, i)) {\r\n                return\r\n            }\r\n            members.shift();\r\n            if (items[i] !== item) {\r\n                i--\r\n            }\r\n        }\r\n    };\r\n    return foreachTreeFunc\r\n}\r\nvar foreachTree = createForeachTreeFunc(false);\r\nexports.foreachTree = foreachTree;\r\nvar foreachTreeAsync = createForeachTreeFunc(true);\r\nexports.foreachTreeAsync = foreachTreeAsync;\r\n\r\nfunction findField(fields, id) {\r\n    if (fields && (0, _type.isDefined)(id)) {\r\n        for (var i = 0; i < fields.length; i++) {\r\n            var field = fields[i];\r\n            if (field.name === id || field.caption === id || field.dataField === id || field.index === id) {\r\n                return i\r\n            }\r\n        }\r\n    }\r\n    return -1\r\n}\r\n\r\nfunction formatValue(value, options) {\r\n    var valueText = value === value && _format_helper.default.format(value, options.format);\r\n    var formatObject = {\r\n        value: value,\r\n        valueText: valueText || \"\"\r\n    };\r\n    return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText\r\n}\r\n\r\nfunction getCompareFunction(valueSelector) {\r\n    return function(a, b) {\r\n        var result = 0;\r\n        var valueA = valueSelector(a);\r\n        var valueB = valueSelector(b);\r\n        var aIsDefined = (0, _type.isDefined)(valueA);\r\n        var bIsDefined = (0, _type.isDefined)(valueB);\r\n        if (aIsDefined && bIsDefined) {\r\n            if (valueA > valueB) {\r\n                result = 1\r\n            } else {\r\n                if (valueA < valueB) {\r\n                    result = -1\r\n                }\r\n            }\r\n        }\r\n        if (aIsDefined && !bIsDefined) {\r\n            result = 1\r\n        }\r\n        if (!aIsDefined && bIsDefined) {\r\n            result = -1\r\n        }\r\n        return result\r\n    }\r\n}\r\n\r\nfunction createPath(items) {\r\n    var result = [];\r\n    for (var i = items.length - 1; i >= 0; i--) {\r\n        result.push(items[i].key || items[i].value)\r\n    }\r\n    return result\r\n}\r\n\r\nfunction foreachDataLevel(data, callback, index, childrenField) {\r\n    index = index || 0;\r\n    childrenField = childrenField || \"children\";\r\n    if (data.length) {\r\n        callback(data, index)\r\n    }\r\n    for (var i = 0; i < data.length; i++) {\r\n        var item = data[i];\r\n        if (item[childrenField] && item[childrenField].length) {\r\n            foreachDataLevel(item[childrenField], callback, index + 1, childrenField)\r\n        }\r\n    }\r\n}\r\n\r\nfunction mergeArraysByMaxValue(values1, values2) {\r\n    var result = [];\r\n    for (var i = 0; i < values1.length; i++) {\r\n        result.push(Math.max(values1[i] || 0, values2[i] || 0))\r\n    }\r\n    return result\r\n}\r\n\r\nfunction getExpandedLevel(options, axisName) {\r\n    var dimensions = options[axisName];\r\n    var expandLevel = 0;\r\n    var expandedPaths = (\"columns\" === axisName ? options.columnExpandedPaths : options.rowExpandedPaths) || [];\r\n    if (options.headerName === axisName) {\r\n        expandLevel = options.path.length\r\n    } else {\r\n        if (options.headerName && options.headerName !== axisName && options.oppositePath) {\r\n            expandLevel = options.oppositePath.length\r\n        } else {\r\n            (0, _iterator.each)(expandedPaths, function(_, path) {\r\n                expandLevel = Math.max(expandLevel, path.length)\r\n            })\r\n        }\r\n    }\r\n    while (dimensions[expandLevel + 1] && dimensions[expandLevel].expanded) {\r\n        expandLevel++\r\n    }\r\n    return expandLevel\r\n}\r\n\r\nfunction createGroupFields(item) {\r\n    return (0, _iterator.map)([\"year\", \"quarter\", \"month\"], function(value, index) {\r\n        return (0, _extend.extend)({}, item, {\r\n            groupInterval: value,\r\n            groupIndex: index\r\n        })\r\n    })\r\n}\r\n\r\nfunction parseFields(dataSource, fieldsList, path, fieldsDataType) {\r\n    var result = [];\r\n    Object.keys(fieldsList || []).forEach(function(field) {\r\n        if (field && 0 === field.indexOf(\"__\")) {\r\n            return\r\n        }\r\n        var dataIndex = 1;\r\n        var currentPath = path.length ? path + \".\" + field : field;\r\n        var dataType = fieldsDataType[currentPath];\r\n        var getter = (0, _data.compileGetter)(currentPath);\r\n        var value = fieldsList[field];\r\n        var items;\r\n        while (!(0, _type.isDefined)(value) && dataSource[dataIndex]) {\r\n            value = getter(dataSource[dataIndex]);\r\n            dataIndex++\r\n        }\r\n        if (!dataType && (0, _type.isDefined)(value)) {\r\n            dataType = (0, _type.type)(value)\r\n        }\r\n        items = [{\r\n            dataField: currentPath,\r\n            dataType: dataType,\r\n            groupName: \"date\" === dataType ? field : void 0,\r\n            groupInterval: void 0,\r\n            displayFolder: path\r\n        }];\r\n        if (\"date\" === dataType) {\r\n            items = items.concat(createGroupFields(items[0]))\r\n        } else {\r\n            if (\"object\" === dataType) {\r\n                items = parseFields(dataSource, value, currentPath, fieldsDataType)\r\n            }\r\n        }\r\n        result.push.apply(result, items)\r\n    });\r\n    return result\r\n}\r\n\r\nfunction discoverObjectFields(items, fields) {\r\n    var fieldsDataType = getFieldsDataType(fields);\r\n    return parseFields(items, items[0], \"\", fieldsDataType)\r\n}\r\n\r\nfunction getFieldsDataType(fields) {\r\n    var result = {};\r\n    (0, _iterator.each)(fields, function(_, field) {\r\n        result[field.dataField] = result[field.dataField] || field.dataType\r\n    });\r\n    return result\r\n}\r\nvar DATE_INTERVAL_FORMATS = {\r\n    month: function(value) {\r\n        return _date.default.getMonthNames()[value - 1]\r\n    },\r\n    quarter: function(value) {\r\n        return _date.default.format(new Date(2e3, 3 * value - 1), \"quarter\")\r\n    },\r\n    dayOfWeek: function(value) {\r\n        return _date.default.getDayNames()[value]\r\n    }\r\n};\r\n\r\nfunction setDefaultFieldValueFormatting(field) {\r\n    if (\"date\" === field.dataType) {\r\n        if (!field.format) {\r\n            setFieldProperty(field, \"format\", DATE_INTERVAL_FORMATS[field.groupInterval])\r\n        }\r\n    } else {\r\n        if (\"number\" === field.dataType) {\r\n            var groupInterval = (0, _type.isNumeric)(field.groupInterval) && field.groupInterval > 0 && field.groupInterval;\r\n            if (groupInterval && !field.customizeText) {\r\n                setFieldProperty(field, \"customizeText\", function(formatObject) {\r\n                    var secondValue = formatObject.value + groupInterval;\r\n                    var secondValueText = _format_helper.default.format(secondValue, field.format);\r\n                    return formatObject.valueText && secondValueText ? formatObject.valueText + \" - \" + secondValueText : \"\"\r\n                })\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction getFiltersByPath(fields, path) {\r\n    var result = [];\r\n    path = path || [];\r\n    for (var i = 0; i < path.length; i++) {\r\n        result.push((0, _extend.extend)({}, fields[i], {\r\n            groupIndex: null,\r\n            groupName: null,\r\n            filterType: \"include\",\r\n            filterValues: [path[i]]\r\n        }))\r\n    }\r\n    return result\r\n}\r\nvar storeDrillDownMixin = {\r\n    createDrillDownDataSource: function(descriptions, params) {\r\n        var items = this.getDrillDownItems(descriptions, params);\r\n        var arrayStore;\r\n\r\n        function createCustomStoreMethod(methodName) {\r\n            return function(options) {\r\n                var d;\r\n                if (arrayStore) {\r\n                    d = arrayStore[methodName](options)\r\n                } else {\r\n                    d = new _deferred.Deferred;\r\n                    (0, _deferred.when)(items).done(function(data) {\r\n                        var arrayStore = new _array_store.default(data);\r\n                        arrayStore[methodName](options).done(d.resolve).fail(d.reject)\r\n                    }).fail(d.reject)\r\n                }\r\n                return d\r\n            }\r\n        }\r\n        var dataSource = new _data_source.DataSource({\r\n            load: createCustomStoreMethod(\"load\"),\r\n            totalCount: createCustomStoreMethod(\"totalCount\"),\r\n            key: this.key()\r\n        });\r\n        return dataSource\r\n    }\r\n};\r\nexports.storeDrillDownMixin = storeDrillDownMixin;\r\n\r\nfunction capitalizeFirstLetter(string) {\r\n    return string.charAt(0).toUpperCase() + string.slice(1)\r\n}\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.error_handling.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ERROR_ROW_CLASS = \"dx-error-row\";\r\nvar ERROR_MESSAGE_CLASS = \"dx-error-message\";\r\nvar ERROR_CLOSEBUTTON_CLASS = \"dx-closebutton\";\r\nvar ACTION_CLASS = \"action\";\r\nvar ErrorHandlingController = _uiGrid_core.default.ViewController.inherit({\r\n    init: function() {\r\n        var that = this;\r\n        that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n        that._rowsView = that.getView(\"rowsView\")\r\n    },\r\n    _createErrorRow: function(error, $tableElements) {\r\n        var that = this;\r\n        var $errorRow;\r\n        var $closeButton;\r\n        var $errorMessage = this._renderErrorMessage(error);\r\n        if ($tableElements) {\r\n            $errorRow = (0, _renderer.default)(\"<tr>\").addClass(ERROR_ROW_CLASS);\r\n            $closeButton = (0, _renderer.default)(\"<div>\").addClass(ERROR_CLOSEBUTTON_CLASS).addClass(that.addWidgetPrefix(ACTION_CLASS));\r\n            _events_engine.default.on($closeButton, _click.name, that.createAction(function(args) {\r\n                var e = args.event;\r\n                var $errorRow;\r\n                var errorRowIndex = (0, _renderer.default)(e.currentTarget).closest(\".\" + ERROR_ROW_CLASS).index();\r\n                e.stopPropagation();\r\n                (0, _iterator.each)($tableElements, function(_, tableElement) {\r\n                    $errorRow = (0, _renderer.default)(tableElement).children(\"tbody\").children(\"tr\").eq(errorRowIndex);\r\n                    that.removeErrorRow($errorRow)\r\n                });\r\n                that.getController(\"resizing\") && that.getController(\"resizing\").fireContentReadyAction()\r\n            }));\r\n            (0, _renderer.default)(\"<td>\").attr({\r\n                colSpan: that.getController(\"columns\").getVisibleColumns().length,\r\n                role: \"presentation\"\r\n            }).prepend($closeButton).append($errorMessage).appendTo($errorRow);\r\n            return $errorRow\r\n        }\r\n        return $errorMessage\r\n    },\r\n    _renderErrorMessage: function(error) {\r\n        var message = error.url ? error.message.replace(error.url, \"\") : error.message || error;\r\n        var $message = (0, _renderer.default)(\"<div>\").addClass(ERROR_MESSAGE_CLASS).text(message);\r\n        if (error.url) {\r\n            (0, _renderer.default)(\"<a>\").attr(\"href\", error.url).text(error.url).appendTo($message)\r\n        }\r\n        return $message\r\n    },\r\n    renderErrorRow: function(error, rowIndex, $popupContent) {\r\n        var that = this;\r\n        var $errorMessageElement;\r\n        var $firstErrorRow;\r\n        if ($popupContent) {\r\n            $popupContent.find(\".\" + ERROR_MESSAGE_CLASS).remove();\r\n            $errorMessageElement = that._createErrorRow(error);\r\n            $popupContent.prepend($errorMessageElement);\r\n            return $errorMessageElement\r\n        }\r\n        var viewElement = rowIndex >= 0 || !that._columnHeadersView.isVisible() ? that._rowsView : that._columnHeadersView;\r\n        var $tableElements = $popupContent || viewElement.getTableElements();\r\n        (0, _iterator.each)($tableElements, function(_, tableElement) {\r\n            $errorMessageElement = that._createErrorRow(error, $tableElements);\r\n            $firstErrorRow = $firstErrorRow || $errorMessageElement;\r\n            if (rowIndex >= 0) {\r\n                var $row = viewElement._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex);\r\n                that.removeErrorRow($row.next());\r\n                $errorMessageElement.insertAfter($row)\r\n            } else {\r\n                var $tbody = (0, _renderer.default)(tableElement).children(\"tbody\");\r\n                var rowElements = $tbody.children(\"tr\");\r\n                if (that._columnHeadersView.isVisible()) {\r\n                    that.removeErrorRow(rowElements.last());\r\n                    (0, _renderer.default)(tableElement).append($errorMessageElement)\r\n                } else {\r\n                    that.removeErrorRow(rowElements.first());\r\n                    $tbody.first().prepend($errorMessageElement)\r\n                }\r\n            }\r\n        });\r\n        if (!$popupContent) {\r\n            var resizingController = that.getController(\"resizing\");\r\n            resizingController && resizingController.fireContentReadyAction()\r\n        }\r\n        return $firstErrorRow\r\n    },\r\n    removeErrorRow: function($row) {\r\n        if (!$row) {\r\n            var $columnHeaders = this._columnHeadersView && this._columnHeadersView.element();\r\n            $row = $columnHeaders && $columnHeaders.find(\".\" + ERROR_ROW_CLASS);\r\n            if (!$row || !$row.length) {\r\n                var $rowsViewElement = this._rowsView.element();\r\n                $row = $rowsViewElement && $rowsViewElement.find(\".\" + ERROR_ROW_CLASS)\r\n            }\r\n        }\r\n        $row && $row.hasClass(ERROR_ROW_CLASS) && $row.remove()\r\n    },\r\n    optionChanged: function(args) {\r\n        var that = this;\r\n        switch (args.name) {\r\n            case \"errorRowEnabled\":\r\n                args.handled = true;\r\n                break;\r\n            default:\r\n                that.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            errorRowEnabled: true\r\n        }\r\n    },\r\n    controllers: {\r\n        errorHandling: ErrorHandlingController\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                init: function() {\r\n                    var that = this;\r\n                    var errorHandlingController = that.getController(\"errorHandling\");\r\n                    that.callBase();\r\n                    that.dataErrorOccurred.add(function(error, $popupContent) {\r\n                        if (that.option(\"errorRowEnabled\")) {\r\n                            errorHandlingController.renderErrorRow(error, void 0, $popupContent)\r\n                        }\r\n                    });\r\n                    that.changed.add(function(e) {\r\n                        if (e && \"loadError\" === e.changeType) {\r\n                            return\r\n                        }\r\n                        var errorHandlingController = that.getController(\"errorHandling\");\r\n                        var editingController = that.getController(\"editing\");\r\n                        if (editingController && !editingController.hasChanges()) {\r\n                            errorHandlingController && errorHandlingController.removeErrorRow()\r\n                        }\r\n                    })\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/templates/bindable_template.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.BindableTemplate = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../renderer\"));\r\nvar _template_base = require(\"./template_base\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _remove_event = _interopRequireDefault(require(\"../remove_event\"));\r\nvar _type = require(\"../utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar watchChanges = function() {\r\n    var globalWatch = function(data, watchMethod, callback) {\r\n        return watchMethod(function() {\r\n            return data\r\n        }, callback)\r\n    };\r\n    var fieldsWatch = function(data, watchMethod, fields, fieldsMap, callback) {\r\n        var resolvedData = {};\r\n        var missedFields = fields.slice();\r\n        var watchHandlers = fields.map(function(name) {\r\n            var fieldGetter = fieldsMap[name];\r\n            return watchMethod(fieldGetter ? function() {\r\n                return fieldGetter(data)\r\n            } : function() {\r\n                return data[name]\r\n            }, function(value) {\r\n                resolvedData[name] = value;\r\n                if (missedFields.length) {\r\n                    var index = missedFields.indexOf(name);\r\n                    if (index >= 0) {\r\n                        missedFields.splice(index, 1)\r\n                    }\r\n                }\r\n                if (!missedFields.length) {\r\n                    callback(resolvedData)\r\n                }\r\n            })\r\n        });\r\n        return function() {\r\n            watchHandlers.forEach(function(dispose) {\r\n                return dispose()\r\n            })\r\n        }\r\n    };\r\n    return function(rawData, watchMethod, fields, fieldsMap, callback) {\r\n        var fieldsDispose;\r\n        var globalDispose = globalWatch(rawData, watchMethod, function(dataWithRawFields) {\r\n            fieldsDispose && fieldsDispose();\r\n            if ((0, _type.isPrimitive)(dataWithRawFields)) {\r\n                callback(dataWithRawFields);\r\n                return\r\n            }\r\n            fieldsDispose = fieldsWatch(dataWithRawFields, watchMethod, fields, fieldsMap, callback)\r\n        });\r\n        return function() {\r\n            fieldsDispose && fieldsDispose();\r\n            globalDispose && globalDispose()\r\n        }\r\n    }\r\n}();\r\nvar BindableTemplate = function(_TemplateBase) {\r\n    _inherits(BindableTemplate, _TemplateBase);\r\n    var _super = _createSuper(BindableTemplate);\r\n\r\n    function BindableTemplate(render, fields, watchMethod, fieldsMap) {\r\n        var _this;\r\n        _classCallCheck(this, BindableTemplate);\r\n        _this = _super.call(this);\r\n        _this._render = render;\r\n        _this._fields = fields;\r\n        _this._fieldsMap = fieldsMap || {};\r\n        _this._watchMethod = watchMethod;\r\n        return _this\r\n    }\r\n    _createClass(BindableTemplate, [{\r\n        key: \"_renderCore\",\r\n        value: function(options) {\r\n            var _this2 = this;\r\n            var $container = (0, _renderer.default)(options.container);\r\n            var dispose = watchChanges(options.model, this._watchMethod, this._fields, this._fieldsMap, function(data) {\r\n                $container.empty();\r\n                _this2._render($container, data, options.model)\r\n            });\r\n            _events_engine.default.on($container, _remove_event.default, dispose);\r\n            return $container.contents()\r\n        }\r\n    }]);\r\n    return BindableTemplate\r\n}(_template_base.TemplateBase);\r\nexports.BindableTemplate = BindableTemplate;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_day.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-day\";\r\nvar SchedulerTimelineDay = function(_SchedulerTimeline) {\r\n    _inherits(SchedulerTimelineDay, _SchedulerTimeline);\r\n    var _super = _createSuper(SchedulerTimelineDay);\r\n\r\n    function SchedulerTimelineDay() {\r\n        _classCallCheck(this, SchedulerTimelineDay);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerTimelineDay, [{\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return TIMELINE_CLASS\r\n        }\r\n    }, {\r\n        key: \"_setFirstViewDate\",\r\n        value: function() {\r\n            this._firstViewDate = this.option(\"currentDate\");\r\n            this._setStartDayHour(this._firstViewDate)\r\n        }\r\n    }, {\r\n        key: \"_needRenderWeekHeader\",\r\n        value: function() {\r\n            return this._isWorkSpaceWithCount()\r\n        }\r\n    }]);\r\n    return SchedulerTimelineDay\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineDay\", SchedulerTimelineDay);\r\nvar _default = SchedulerTimelineDay;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollable.simulated.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.SimulatedStrategy = exports.Scroller = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _animator = _interopRequireDefault(require(\"./animator\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.scrollbar\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar realDevice = _devices.default.real;\r\nvar isSluggishPlatform = \"android\" === realDevice.platform;\r\nvar SCROLLABLE_SIMULATED = \"dxSimulatedScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_SIMULATED_CURSOR = SCROLLABLE_SIMULATED + \"Cursor\";\r\nvar SCROLLABLE_SIMULATED_KEYBOARD = SCROLLABLE_SIMULATED + \"Keyboard\";\r\nvar SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nvar SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar ACCELERATION = isSluggishPlatform ? .95 : .92;\r\nvar OUT_BOUNDS_ACCELERATION = .5;\r\nvar MIN_VELOCITY_LIMIT = 1;\r\nvar FRAME_DURATION = Math.round(1e3 / 60);\r\nvar SCROLL_LINE_HEIGHT = 40;\r\nvar VALIDATE_WHEEL_TIMEOUT = 500;\r\nvar BOUNCE_MIN_VELOCITY_LIMIT = MIN_VELOCITY_LIMIT / 5;\r\nvar BOUNCE_DURATION = isSluggishPlatform ? 300 : 400;\r\nvar BOUNCE_FRAMES = BOUNCE_DURATION / FRAME_DURATION;\r\nvar BOUNCE_ACCELERATION_SUM = (1 - Math.pow(ACCELERATION, BOUNCE_FRAMES)) / (1 - ACCELERATION);\r\nvar KEY_CODES = {\r\n    PAGE_UP: \"pageUp\",\r\n    PAGE_DOWN: \"pageDown\",\r\n    END: \"end\",\r\n    HOME: \"home\",\r\n    LEFT: \"leftArrow\",\r\n    UP: \"upArrow\",\r\n    RIGHT: \"rightArrow\",\r\n    DOWN: \"downArrow\",\r\n    TAB: \"tab\"\r\n};\r\nvar InertiaAnimator = _animator.default.inherit({\r\n    ctor: function(scroller) {\r\n        this.callBase();\r\n        this.scroller = scroller\r\n    },\r\n    VELOCITY_LIMIT: MIN_VELOCITY_LIMIT,\r\n    _isFinished: function() {\r\n        return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT\r\n    },\r\n    _step: function() {\r\n        this.scroller._scrollStep(this.scroller._velocity);\r\n        this.scroller._velocity *= this._acceleration()\r\n    },\r\n    _acceleration: function() {\r\n        return this.scroller._inBounds() ? ACCELERATION : OUT_BOUNDS_ACCELERATION\r\n    },\r\n    _complete: function() {\r\n        this.scroller._scrollComplete()\r\n    },\r\n    _stop: function() {\r\n        this.scroller._stopComplete()\r\n    }\r\n});\r\nvar BounceAnimator = InertiaAnimator.inherit({\r\n    VELOCITY_LIMIT: BOUNCE_MIN_VELOCITY_LIMIT,\r\n    _isFinished: function() {\r\n        return this.scroller._crossBoundOnNextStep() || this.callBase()\r\n    },\r\n    _acceleration: function() {\r\n        return ACCELERATION\r\n    },\r\n    _complete: function() {\r\n        this.scroller._move(this.scroller._bounceLocation);\r\n        this.callBase()\r\n    }\r\n});\r\nvar Scroller = _class.default.inherit({\r\n    ctor: function(options) {\r\n        this._initOptions(options);\r\n        this._initAnimators();\r\n        this._initScrollbar()\r\n    },\r\n    _initOptions: function(options) {\r\n        var _this = this;\r\n        this._location = 0;\r\n        this._topReached = false;\r\n        this._bottomReached = false;\r\n        this._axis = options.direction === HORIZONTAL ? \"x\" : \"y\";\r\n        this._prop = options.direction === HORIZONTAL ? \"left\" : \"top\";\r\n        this._dimension = options.direction === HORIZONTAL ? \"width\" : \"height\";\r\n        this._scrollProp = options.direction === HORIZONTAL ? \"scrollLeft\" : \"scrollTop\";\r\n        (0, _iterator.each)(options, function(optionName, optionValue) {\r\n            _this[\"_\" + optionName] = optionValue\r\n        })\r\n    },\r\n    _initAnimators: function() {\r\n        this._inertiaAnimator = new InertiaAnimator(this);\r\n        this._bounceAnimator = new BounceAnimator(this)\r\n    },\r\n    _initScrollbar: function() {\r\n        this._scrollbar = new _ui.default((0, _renderer.default)(\"<div>\").appendTo(this._$container), {\r\n            direction: this._direction,\r\n            visible: this._scrollByThumb,\r\n            visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible),\r\n            expandable: this._scrollByThumb\r\n        });\r\n        this._$scrollbar = this._scrollbar.$element()\r\n    },\r\n    _visibilityModeNormalize: function(mode) {\r\n        return true === mode ? \"onScroll\" : false === mode ? \"never\" : mode\r\n    },\r\n    _scrollStep: function(delta) {\r\n        var prevLocation = this._location;\r\n        this._location += delta;\r\n        this._suppressBounce();\r\n        this._move();\r\n        if (Math.abs(prevLocation - this._location) < 1) {\r\n            return\r\n        }\r\n        _events_engine.default.triggerHandler(this._$container, {\r\n            type: \"scroll\"\r\n        })\r\n    },\r\n    _suppressBounce: function() {\r\n        if (this._bounceEnabled || this._inBounds(this._location)) {\r\n            return\r\n        }\r\n        this._velocity = 0;\r\n        this._location = this._boundLocation()\r\n    },\r\n    _boundLocation: function(location) {\r\n        location = void 0 !== location ? location : this._location;\r\n        return Math.max(Math.min(location, this._maxOffset), this._minOffset)\r\n    },\r\n    _move: function(location) {\r\n        this._location = void 0 !== location ? location * this._getScaleRatio() : this._location;\r\n        this._moveContent();\r\n        this._moveScrollbar()\r\n    },\r\n    _moveContent: function() {\r\n        var location = this._location;\r\n        this._$container[this._scrollProp](-location / this._getScaleRatio());\r\n        this._moveContentByTranslator(location)\r\n    },\r\n    _getScaleRatio: function() {\r\n        if ((0, _window.hasWindow)() && !this._scaleRatio) {\r\n            var element = this._$element.get(0);\r\n            var realDimension = this._getRealDimension(element, this._dimension);\r\n            var baseDimension = this._getBaseDimension(element, this._dimension);\r\n            this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100\r\n        }\r\n        return this._scaleRatio || 1\r\n    },\r\n    _getRealDimension: function(element, dimension) {\r\n        return Math.round((0, _position.getBoundingRect)(element)[dimension])\r\n    },\r\n    _getBaseDimension: function(element, dimension) {\r\n        var dimensionName = \"offset\" + (0, _inflector.titleize)(dimension);\r\n        return element[dimensionName]\r\n    },\r\n    _moveContentByTranslator: function(location) {\r\n        var translateOffset;\r\n        var minOffset = -this._maxScrollPropValue;\r\n        if (location > 0) {\r\n            translateOffset = location\r\n        } else {\r\n            if (location <= minOffset) {\r\n                translateOffset = location - minOffset\r\n            } else {\r\n                translateOffset = location % 1\r\n            }\r\n        }\r\n        if (this._translateOffset === translateOffset) {\r\n            return\r\n        }\r\n        var targetLocation = {};\r\n        targetLocation[this._prop] = translateOffset;\r\n        this._translateOffset = translateOffset;\r\n        if (0 === translateOffset) {\r\n            (0, _translator.resetPosition)(this._$content);\r\n            return\r\n        }(0, _translator.move)(this._$content, targetLocation)\r\n    },\r\n    _moveScrollbar: function() {\r\n        this._scrollbar.moveTo(this._location)\r\n    },\r\n    _scrollComplete: function() {\r\n        if (this._inBounds()) {\r\n            this._hideScrollbar();\r\n            if (this._completeDeferred) {\r\n                this._completeDeferred.resolve()\r\n            }\r\n        }\r\n        this._scrollToBounds()\r\n    },\r\n    _scrollToBounds: function() {\r\n        if (this._inBounds()) {\r\n            return\r\n        }\r\n        this._bounceAction();\r\n        this._setupBounce();\r\n        this._bounceAnimator.start()\r\n    },\r\n    _setupBounce: function() {\r\n        var boundLocation = this._bounceLocation = this._boundLocation();\r\n        var bounceDistance = boundLocation - this._location;\r\n        this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM\r\n    },\r\n    _inBounds: function(location) {\r\n        location = void 0 !== location ? location : this._location;\r\n        return this._boundLocation(location) === location\r\n    },\r\n    _crossBoundOnNextStep: function() {\r\n        var location = this._location;\r\n        var nextLocation = location + this._velocity;\r\n        return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset\r\n    },\r\n    _initHandler: function(e) {\r\n        this._stopDeferred = new _deferred.Deferred;\r\n        this._stopScrolling();\r\n        this._prepareThumbScrolling(e);\r\n        return this._stopDeferred.promise()\r\n    },\r\n    _stopScrolling: (0, _common.deferRenderer)(function() {\r\n        this._hideScrollbar();\r\n        this._inertiaAnimator.stop();\r\n        this._bounceAnimator.stop()\r\n    }),\r\n    _prepareThumbScrolling: function(e) {\r\n        if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) {\r\n            return\r\n        }\r\n        var $target = (0, _renderer.default)(e.originalEvent.target);\r\n        var scrollbarClicked = this._isScrollbar($target);\r\n        if (scrollbarClicked) {\r\n            this._moveToMouseLocation(e)\r\n        }\r\n        this._thumbScrolling = scrollbarClicked || this._isThumb($target);\r\n        this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target);\r\n        if (this._thumbScrolling) {\r\n            this._scrollbar.feedbackOn()\r\n        }\r\n    },\r\n    _isThumbScrollingHandler: function($target) {\r\n        return this._isThumb($target)\r\n    },\r\n    _moveToMouseLocation: function(e) {\r\n        var mouseLocation = e[\"page\" + this._axis.toUpperCase()] - this._$element.offset()[this._prop];\r\n        var location = this._location + mouseLocation / this._containerToContentRatio() - this._$container.height() / 2;\r\n        this._scrollStep(-Math.round(location))\r\n    },\r\n    _stopComplete: function() {\r\n        if (this._stopDeferred) {\r\n            this._stopDeferred.resolve()\r\n        }\r\n    },\r\n    _startHandler: function() {\r\n        this._showScrollbar()\r\n    },\r\n    _moveHandler: function(delta) {\r\n        if (this._crossThumbScrolling) {\r\n            return\r\n        }\r\n        if (this._thumbScrolling) {\r\n            delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio())\r\n        }\r\n        this._scrollBy(delta)\r\n    },\r\n    _scrollBy: function(delta) {\r\n        delta = delta[this._axis];\r\n        if (!this._inBounds()) {\r\n            delta *= OUT_BOUNDS_ACCELERATION\r\n        }\r\n        this._scrollStep(delta)\r\n    },\r\n    _scrollByHandler: function(delta) {\r\n        this._scrollBy(delta);\r\n        this._scrollComplete()\r\n    },\r\n    _containerToContentRatio: function() {\r\n        return this._scrollbar.containerToContentRatio()\r\n    },\r\n    _endHandler: function(velocity) {\r\n        this._completeDeferred = new _deferred.Deferred;\r\n        this._velocity = velocity[this._axis];\r\n        this._inertiaHandler();\r\n        this._resetThumbScrolling();\r\n        return this._completeDeferred.promise()\r\n    },\r\n    _inertiaHandler: function() {\r\n        this._suppressInertia();\r\n        this._inertiaAnimator.start()\r\n    },\r\n    _suppressInertia: function() {\r\n        if (!this._inertiaEnabled || this._thumbScrolling) {\r\n            this._velocity = 0\r\n        }\r\n    },\r\n    _resetThumbScrolling: function() {\r\n        this._thumbScrolling = false;\r\n        this._crossThumbScrolling = false\r\n    },\r\n    _stopHandler: function() {\r\n        if (this._thumbScrolling) {\r\n            this._scrollComplete()\r\n        }\r\n        this._resetThumbScrolling();\r\n        this._scrollToBounds()\r\n    },\r\n    _disposeHandler: function() {\r\n        this._stopScrolling();\r\n        this._$scrollbar.remove()\r\n    },\r\n    _updateHandler: function() {\r\n        this._update();\r\n        this._moveToBounds()\r\n    },\r\n    _update: function() {\r\n        var _this2 = this;\r\n        this._stopScrolling();\r\n        return (0, _common.deferUpdate)(function() {\r\n            _this2._resetScaleRatio();\r\n            _this2._updateLocation();\r\n            _this2._updateBounds();\r\n            _this2._updateScrollbar();\r\n            (0, _common.deferRender)(function() {\r\n                _this2._moveScrollbar();\r\n                _this2._scrollbar.update()\r\n            })\r\n        })\r\n    },\r\n    _resetScaleRatio: function() {\r\n        this._scaleRatio = null\r\n    },\r\n    _updateLocation: function() {\r\n        this._location = ((0, _translator.locate)(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio()\r\n    },\r\n    _updateBounds: function() {\r\n        this._maxOffset = Math.round(this._getMaxOffset());\r\n        this._minOffset = Math.round(this._getMinOffset())\r\n    },\r\n    _getMaxOffset: function() {\r\n        return 0\r\n    },\r\n    _getMinOffset: function() {\r\n        this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0);\r\n        return -this._maxScrollPropValue\r\n    },\r\n    _updateScrollbar: (0, _common.deferUpdater)(function() {\r\n        var _this3 = this;\r\n        var containerSize = this._containerSize();\r\n        var contentSize = this._contentSize();\r\n        var baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension);\r\n        var baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension);\r\n        (0, _common.deferRender)(function() {\r\n            _this3._scrollbar.option({\r\n                containerSize: containerSize,\r\n                contentSize: contentSize,\r\n                baseContainerSize: baseContainerSize,\r\n                baseContentSize: baseContentSize,\r\n                scaleRatio: _this3._getScaleRatio()\r\n            })\r\n        })\r\n    }),\r\n    _moveToBounds: (0, _common.deferRenderer)((0, _common.deferUpdater)((0, _common.deferRenderer)(function() {\r\n        var location = this._boundLocation();\r\n        var locationChanged = location !== this._location;\r\n        this._location = location;\r\n        this._move();\r\n        if (locationChanged) {\r\n            this._scrollAction()\r\n        }\r\n    }))),\r\n    _createActionsHandler: function(actions) {\r\n        this._scrollAction = actions.scroll;\r\n        this._bounceAction = actions.bounce\r\n    },\r\n    _showScrollbar: function() {\r\n        this._scrollbar.option(\"visible\", true)\r\n    },\r\n    _hideScrollbar: function() {\r\n        this._scrollbar.option(\"visible\", false)\r\n    },\r\n    _containerSize: function() {\r\n        return this._getRealDimension(this._$container.get(0), this._dimension)\r\n    },\r\n    _contentSize: function() {\r\n        var isOverflowHidden = \"hidden\" === this._$content.css(\"overflow\" + this._axis.toUpperCase());\r\n        var contentSize = this._getRealDimension(this._$content.get(0), this._dimension);\r\n        if (!isOverflowHidden) {\r\n            var containerScrollSize = this._$content[0][\"scroll\" + (0, _inflector.titleize)(this._dimension)] * this._getScaleRatio();\r\n            contentSize = Math.max(containerScrollSize, contentSize)\r\n        }\r\n        return contentSize\r\n    },\r\n    _validateEvent: function(e) {\r\n        var $target = (0, _renderer.default)(e.originalEvent.target);\r\n        return this._isThumb($target) || this._isScrollbar($target) || this._isContent($target)\r\n    },\r\n    _isThumb: function($element) {\r\n        return this._scrollByThumb && this._scrollbar.isThumb($element)\r\n    },\r\n    _isScrollbar: function($element) {\r\n        return this._scrollByThumb && $element && $element.is(this._$scrollbar)\r\n    },\r\n    _isContent: function($element) {\r\n        return this._scrollByContent && !!$element.closest(this._$element).length\r\n    },\r\n    _reachedMin: function() {\r\n        return this._location <= this._minOffset\r\n    },\r\n    _reachedMax: function() {\r\n        return this._location >= this._maxOffset\r\n    },\r\n    _cursorEnterHandler: function() {\r\n        this._resetScaleRatio();\r\n        this._updateScrollbar();\r\n        this._scrollbar.cursorEnter()\r\n    },\r\n    _cursorLeaveHandler: function() {\r\n        this._scrollbar.cursorLeave()\r\n    },\r\n    dispose: _common.noop\r\n});\r\nexports.Scroller = Scroller;\r\nvar hoveredScrollable;\r\nvar activeScrollable;\r\nvar SimulatedStrategy = _class.default.inherit({\r\n    ctor: function(scrollable) {\r\n        this._init(scrollable)\r\n    },\r\n    _init: function(scrollable) {\r\n        this._component = scrollable;\r\n        this._$element = scrollable.$element();\r\n        this._$container = scrollable._$container;\r\n        this._$wrapper = scrollable._$wrapper;\r\n        this._$content = scrollable._$content;\r\n        this.option = scrollable.option.bind(scrollable);\r\n        this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n        this._isLocked = scrollable._isLocked.bind(scrollable);\r\n        this._isDirection = scrollable._isDirection.bind(scrollable);\r\n        this._allowedDirection = scrollable._allowedDirection.bind(scrollable)\r\n    },\r\n    render: function() {\r\n        this._$element.addClass(SCROLLABLE_SIMULATED_CLASS);\r\n        this._createScrollers();\r\n        if (this.option(\"useKeyboard\")) {\r\n            this._$container.prop(\"tabIndex\", 0)\r\n        }\r\n        this._attachKeyboardHandler();\r\n        this._attachCursorHandlers()\r\n    },\r\n    _createScrollers: function() {\r\n        this._scrollers = {};\r\n        if (this._isDirection(HORIZONTAL)) {\r\n            this._createScroller(HORIZONTAL)\r\n        }\r\n        if (this._isDirection(VERTICAL)) {\r\n            this._createScroller(VERTICAL)\r\n        }\r\n        this._$element.toggleClass(SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE, \"always\" === this.option(\"showScrollbar\"));\r\n        this._$element.toggleClass(SCROLLABLE_SCROLLBARS_HIDDEN, !this.option(\"showScrollbar\"))\r\n    },\r\n    _createScroller: function(direction) {\r\n        this._scrollers[direction] = new Scroller(this._scrollerOptions(direction))\r\n    },\r\n    _scrollerOptions: function(direction) {\r\n        return {\r\n            direction: direction,\r\n            $content: this._$content,\r\n            $container: this._$container,\r\n            $wrapper: this._$wrapper,\r\n            $element: this._$element,\r\n            scrollByContent: this.option(\"scrollByContent\"),\r\n            scrollByThumb: this.option(\"scrollByThumb\"),\r\n            scrollbarVisible: this.option(\"showScrollbar\"),\r\n            bounceEnabled: this.option(\"bounceEnabled\"),\r\n            inertiaEnabled: this.option(\"inertiaEnabled\"),\r\n            isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this)\r\n        }\r\n    },\r\n    _applyScaleRatio: function(targetLocation) {\r\n        for (var direction in this._scrollers) {\r\n            var prop = this._getPropByDirection(direction);\r\n            if ((0, _type.isDefined)(targetLocation[prop])) {\r\n                var scroller = this._scrollers[direction];\r\n                targetLocation[prop] *= scroller._getScaleRatio()\r\n            }\r\n        }\r\n        return targetLocation\r\n    },\r\n    _isAnyThumbScrolling: function($target) {\r\n        var result = false;\r\n        this._eventHandler(\"isThumbScrolling\", $target).done(function(isThumbScrollingVertical, isThumbScrollingHorizontal) {\r\n            result = isThumbScrollingVertical || isThumbScrollingHorizontal\r\n        });\r\n        return result\r\n    },\r\n    handleInit: function(e) {\r\n        this._suppressDirections(e);\r\n        this._eventForUserAction = e;\r\n        this._eventHandler(\"init\", e).done(this._stopAction)\r\n    },\r\n    _suppressDirections: function(e) {\r\n        if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) {\r\n            this._prepareDirections(true);\r\n            return\r\n        }\r\n        this._prepareDirections();\r\n        this._eachScroller(function(scroller, direction) {\r\n            var isValid = scroller._validateEvent(e);\r\n            this._validDirections[direction] = isValid\r\n        })\r\n    },\r\n    _prepareDirections: function(value) {\r\n        value = value || false;\r\n        this._validDirections = {};\r\n        this._validDirections[HORIZONTAL] = value;\r\n        this._validDirections[VERTICAL] = value\r\n    },\r\n    _eachScroller: function(callback) {\r\n        callback = callback.bind(this);\r\n        (0, _iterator.each)(this._scrollers, function(direction, scroller) {\r\n            callback(scroller, direction)\r\n        })\r\n    },\r\n    handleStart: function(e) {\r\n        this._eventForUserAction = e;\r\n        this._eventHandler(\"start\").done(this._startAction)\r\n    },\r\n    _saveActive: function() {\r\n        activeScrollable = this\r\n    },\r\n    _resetActive: function() {\r\n        if (activeScrollable === this) {\r\n            activeScrollable = null\r\n        }\r\n    },\r\n    handleMove: function(e) {\r\n        if (this._isLocked()) {\r\n            e.cancel = true;\r\n            this._resetActive();\r\n            return\r\n        }\r\n        this._saveActive();\r\n        e.preventDefault && e.preventDefault();\r\n        this._adjustDistance(e, e.delta);\r\n        this._eventForUserAction = e;\r\n        this._eventHandler(\"move\", e.delta)\r\n    },\r\n    _adjustDistance: function(e, distance) {\r\n        distance.x *= this._validDirections[HORIZONTAL];\r\n        distance.y *= this._validDirections[VERTICAL];\r\n        var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n        if (devicePixelRatio && (0, _index.isDxMouseWheelEvent)(e.originalEvent)) {\r\n            distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100;\r\n            distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100\r\n        }\r\n    },\r\n    _tryGetDevicePixelRatio: function() {\r\n        if ((0, _window.hasWindow)()) {\r\n            return (0, _window.getWindow)().devicePixelRatio\r\n        }\r\n    },\r\n    handleEnd: function(e) {\r\n        this._resetActive();\r\n        this._refreshCursorState(e.originalEvent && e.originalEvent.target);\r\n        this._adjustDistance(e, e.velocity);\r\n        this._eventForUserAction = e;\r\n        return this._eventHandler(\"end\", e.velocity).done(this._endAction)\r\n    },\r\n    handleCancel: function(e) {\r\n        this._resetActive();\r\n        this._eventForUserAction = e;\r\n        return this._eventHandler(\"end\", {\r\n            x: 0,\r\n            y: 0\r\n        })\r\n    },\r\n    handleStop: function() {\r\n        this._resetActive();\r\n        this._eventHandler(\"stop\")\r\n    },\r\n    handleScroll: function() {\r\n        this._component._updateRtlConfig();\r\n        this._scrollAction()\r\n    },\r\n    _attachKeyboardHandler: function() {\r\n        _events_engine.default.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD));\r\n        if (!this.option(\"disabled\") && this.option(\"useKeyboard\")) {\r\n            _events_engine.default.on(this._$element, (0, _index.addNamespace)(\"keydown\", SCROLLABLE_SIMULATED_KEYBOARD), this._keyDownHandler.bind(this))\r\n        }\r\n    },\r\n    _keyDownHandler: function(e) {\r\n        var _this4 = this;\r\n        clearTimeout(this._updateHandlerTimeout);\r\n        this._updateHandlerTimeout = setTimeout(function() {\r\n            if ((0, _index.normalizeKeyName)(e) === KEY_CODES.TAB) {\r\n                _this4._eachScroller(function(scroller) {\r\n                    scroller._updateHandler()\r\n                })\r\n            }\r\n        });\r\n        if (!this._$container.is(_dom_adapter.default.getActiveElement())) {\r\n            return\r\n        }\r\n        var handled = true;\r\n        switch ((0, _index.normalizeKeyName)(e)) {\r\n            case KEY_CODES.DOWN:\r\n                this._scrollByLine({\r\n                    y: 1\r\n                });\r\n                break;\r\n            case KEY_CODES.UP:\r\n                this._scrollByLine({\r\n                    y: -1\r\n                });\r\n                break;\r\n            case KEY_CODES.RIGHT:\r\n                this._scrollByLine({\r\n                    x: 1\r\n                });\r\n                break;\r\n            case KEY_CODES.LEFT:\r\n                this._scrollByLine({\r\n                    x: -1\r\n                });\r\n                break;\r\n            case KEY_CODES.PAGE_DOWN:\r\n                this._scrollByPage(1);\r\n                break;\r\n            case KEY_CODES.PAGE_UP:\r\n                this._scrollByPage(-1);\r\n                break;\r\n            case KEY_CODES.HOME:\r\n                this._scrollToHome();\r\n                break;\r\n            case KEY_CODES.END:\r\n                this._scrollToEnd();\r\n                break;\r\n            default:\r\n                handled = false\r\n        }\r\n        if (handled) {\r\n            e.stopPropagation();\r\n            e.preventDefault()\r\n        }\r\n    },\r\n    _scrollByLine: function(lines) {\r\n        var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n        var scrollOffset = SCROLL_LINE_HEIGHT;\r\n        if (devicePixelRatio) {\r\n            scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100\r\n        }\r\n        this.scrollBy({\r\n            top: (lines.y || 0) * -scrollOffset,\r\n            left: (lines.x || 0) * -scrollOffset\r\n        })\r\n    },\r\n    _scrollByPage: function(page) {\r\n        var prop = this._wheelProp();\r\n        var dimension = this._dimensionByProp(prop);\r\n        var distance = {};\r\n        distance[prop] = page * -this._$container[dimension]();\r\n        this.scrollBy(distance)\r\n    },\r\n    _dimensionByProp: function(prop) {\r\n        return \"left\" === prop ? \"width\" : \"height\"\r\n    },\r\n    _getPropByDirection: function(direction) {\r\n        return direction === HORIZONTAL ? \"left\" : \"top\"\r\n    },\r\n    _scrollToHome: function() {\r\n        var prop = this._wheelProp();\r\n        var distance = {};\r\n        distance[prop] = 0;\r\n        this._component.scrollTo(distance)\r\n    },\r\n    _scrollToEnd: function() {\r\n        var prop = this._wheelProp();\r\n        var dimension = this._dimensionByProp(prop);\r\n        var distance = {};\r\n        distance[prop] = this._$content[dimension]() - this._$container[dimension]();\r\n        this._component.scrollTo(distance)\r\n    },\r\n    createActions: function() {\r\n        this._startAction = this._createActionHandler(\"onStart\");\r\n        this._stopAction = this._createActionHandler(\"onStop\");\r\n        this._endAction = this._createActionHandler(\"onEnd\");\r\n        this._updateAction = this._createActionHandler(\"onUpdated\");\r\n        this._createScrollerActions()\r\n    },\r\n    _createScrollerActions: function() {\r\n        this._scrollAction = this._createActionHandler(\"onScroll\");\r\n        this._bounceAction = this._createActionHandler(\"onBounce\");\r\n        this._eventHandler(\"createActions\", {\r\n            scroll: this._scrollAction,\r\n            bounce: this._bounceAction\r\n        })\r\n    },\r\n    _createActionHandler: function(optionName) {\r\n        var _arguments = arguments,\r\n            _this5 = this;\r\n        var actionHandler = this._createActionByOption(optionName);\r\n        return function() {\r\n            actionHandler((0, _extend.extend)(_this5._createActionArgs(), _arguments))\r\n        }\r\n    },\r\n    _createActionArgs: function() {\r\n        var scrollerX = this._scrollers[HORIZONTAL];\r\n        var scrollerY = this._scrollers[VERTICAL];\r\n        var location = this.location();\r\n        this._scrollOffset = {\r\n            top: scrollerY && -location.top,\r\n            left: scrollerX && -location.left\r\n        };\r\n        return {\r\n            event: this._eventForUserAction,\r\n            scrollOffset: this._scrollOffset,\r\n            reachedLeft: scrollerX && scrollerX._reachedMax(),\r\n            reachedRight: scrollerX && scrollerX._reachedMin(),\r\n            reachedTop: scrollerY && scrollerY._reachedMax(),\r\n            reachedBottom: scrollerY && scrollerY._reachedMin()\r\n        }\r\n    },\r\n    _eventHandler: function(eventName) {\r\n        var args = [].slice.call(arguments).slice(1);\r\n        var deferreds = (0, _iterator.map)(this._scrollers, function(scroller) {\r\n            return scroller[\"_\" + eventName + \"Handler\"].apply(scroller, args)\r\n        });\r\n        return _deferred.when.apply(_renderer.default, deferreds).promise()\r\n    },\r\n    location: function location() {\r\n        var location = (0, _translator.locate)(this._$content);\r\n        location.top -= this._$container.scrollTop();\r\n        location.left -= this._$container.scrollLeft();\r\n        return location\r\n    },\r\n    disabledChanged: function() {\r\n        this._attachCursorHandlers()\r\n    },\r\n    _attachCursorHandlers: function() {\r\n        _events_engine.default.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n        if (!this.option(\"disabled\") && this._isHoverMode()) {\r\n            _events_engine.default.on(this._$element, (0, _index.addNamespace)(\"mouseenter\", SCROLLABLE_SIMULATED_CURSOR), this._cursorEnterHandler.bind(this));\r\n            _events_engine.default.on(this._$element, (0, _index.addNamespace)(\"mouseleave\", SCROLLABLE_SIMULATED_CURSOR), this._cursorLeaveHandler.bind(this))\r\n        }\r\n    },\r\n    _isHoverMode: function() {\r\n        return \"onHover\" === this.option(\"showScrollbar\")\r\n    },\r\n    _cursorEnterHandler: function(e) {\r\n        e = e || {};\r\n        e.originalEvent = e.originalEvent || {};\r\n        if (activeScrollable || e.originalEvent._hoverHandled) {\r\n            return\r\n        }\r\n        if (hoveredScrollable) {\r\n            hoveredScrollable._cursorLeaveHandler()\r\n        }\r\n        hoveredScrollable = this;\r\n        this._eventHandler(\"cursorEnter\");\r\n        e.originalEvent._hoverHandled = true\r\n    },\r\n    _cursorLeaveHandler: function(e) {\r\n        if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) {\r\n            return\r\n        }\r\n        this._eventHandler(\"cursorLeave\");\r\n        hoveredScrollable = null;\r\n        this._refreshCursorState(e && e.relatedTarget)\r\n    },\r\n    _refreshCursorState: function(target) {\r\n        if (!this._isHoverMode() && (!target || activeScrollable)) {\r\n            return\r\n        }\r\n        var $target = (0, _renderer.default)(target);\r\n        var $scrollable = $target.closest(\".\".concat(SCROLLABLE_SIMULATED_CLASS, \":not(.dx-state-disabled)\"));\r\n        var targetScrollable = $scrollable.length && $scrollable.data(SCROLLABLE_STRATEGY);\r\n        if (hoveredScrollable && hoveredScrollable !== targetScrollable) {\r\n            hoveredScrollable._cursorLeaveHandler()\r\n        }\r\n        if (targetScrollable) {\r\n            targetScrollable._cursorEnterHandler()\r\n        }\r\n    },\r\n    update: function() {\r\n        var _this6 = this;\r\n        var result = this._eventHandler(\"update\").done(this._updateAction);\r\n        return (0, _deferred.when)(result, (0, _common.deferUpdate)(function() {\r\n            var allowedDirections = _this6._allowedDirections();\r\n            (0, _common.deferRender)(function() {\r\n                var touchDirection = allowedDirections.vertical ? \"pan-x\" : \"\";\r\n                touchDirection = allowedDirections.horizontal ? \"pan-y\" : touchDirection;\r\n                touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? \"none\" : touchDirection;\r\n                _this6._$container.css(\"touchAction\", touchDirection)\r\n            });\r\n            return (0, _deferred.when)().promise()\r\n        }))\r\n    },\r\n    _allowedDirections: function() {\r\n        var bounceEnabled = this.option(\"bounceEnabled\");\r\n        var verticalScroller = this._scrollers[VERTICAL];\r\n        var horizontalScroller = this._scrollers[HORIZONTAL];\r\n        return {\r\n            vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled),\r\n            horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled)\r\n        }\r\n    },\r\n    updateBounds: function() {\r\n        this._scrollers[HORIZONTAL] && this._scrollers[HORIZONTAL]._updateBounds()\r\n    },\r\n    scrollBy: function(distance) {\r\n        var verticalScroller = this._scrollers[VERTICAL];\r\n        var horizontalScroller = this._scrollers[HORIZONTAL];\r\n        if (verticalScroller) {\r\n            distance.top = verticalScroller._boundLocation(distance.top + verticalScroller._location) - verticalScroller._location\r\n        }\r\n        if (horizontalScroller) {\r\n            distance.left = horizontalScroller._boundLocation(distance.left + horizontalScroller._location) - horizontalScroller._location\r\n        }\r\n        this._prepareDirections(true);\r\n        this._startAction();\r\n        this._eventHandler(\"scrollBy\", {\r\n            x: distance.left,\r\n            y: distance.top\r\n        });\r\n        this._endAction()\r\n    },\r\n    validate: function(e) {\r\n        if (this.option(\"disabled\")) {\r\n            return false\r\n        }\r\n        if (this.option(\"bounceEnabled\")) {\r\n            return true\r\n        }\r\n        return (0, _index.isDxMouseWheelEvent)(e) ? this._validateWheel(e) : this._validateMove(e)\r\n    },\r\n    _validateWheel: function(e) {\r\n        var _this7 = this;\r\n        var scroller = this._scrollers[this._wheelDirection(e)];\r\n        var reachedMin = scroller._reachedMin();\r\n        var reachedMax = scroller._reachedMax();\r\n        var contentGreaterThanContainer = !reachedMin || !reachedMax;\r\n        var locatedNotAtBound = !reachedMin && !reachedMax;\r\n        var scrollFromMin = reachedMin && e.delta > 0;\r\n        var scrollFromMax = reachedMax && e.delta < 0;\r\n        var validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax);\r\n        validated = validated || void 0 !== this._validateWheelTimer;\r\n        if (validated) {\r\n            clearTimeout(this._validateWheelTimer);\r\n            this._validateWheelTimer = setTimeout(function() {\r\n                _this7._validateWheelTimer = void 0\r\n            }, VALIDATE_WHEEL_TIMEOUT)\r\n        }\r\n        return validated\r\n    },\r\n    _validateMove: function(e) {\r\n        if (!this.option(\"scrollByContent\") && !(0, _renderer.default)(e.target).closest(\".\".concat(SCROLLABLE_SCROLLBAR_CLASS)).length) {\r\n            return false\r\n        }\r\n        return this._allowedDirection()\r\n    },\r\n    getDirection: function(e) {\r\n        return (0, _index.isDxMouseWheelEvent)(e) ? this._wheelDirection(e) : this._allowedDirection()\r\n    },\r\n    _wheelProp: function() {\r\n        return this._wheelDirection() === HORIZONTAL ? \"left\" : \"top\"\r\n    },\r\n    _wheelDirection: function(e) {\r\n        switch (this.option(\"direction\")) {\r\n            case HORIZONTAL:\r\n                return HORIZONTAL;\r\n            case VERTICAL:\r\n                return VERTICAL;\r\n            default:\r\n                return e && e.shiftKey ? HORIZONTAL : VERTICAL\r\n        }\r\n    },\r\n    verticalOffset: function() {\r\n        return 0\r\n    },\r\n    dispose: function() {\r\n        this._resetActive();\r\n        if (hoveredScrollable === this) {\r\n            hoveredScrollable = null\r\n        }\r\n        this._eventHandler(\"dispose\");\r\n        this._detachEventHandlers();\r\n        this._$element.removeClass(SCROLLABLE_SIMULATED_CLASS);\r\n        this._eventForUserAction = null;\r\n        clearTimeout(this._validateWheelTimer);\r\n        clearTimeout(this._updateHandlerTimeout)\r\n    },\r\n    _detachEventHandlers: function() {\r\n        _events_engine.default.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n        _events_engine.default.off(this._$container, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD))\r\n    }\r\n});\r\nexports.SimulatedStrategy = SimulatedStrategy;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.state_storing_core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.StateStoringController = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _storage = require(\"../../core/utils/storage\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATE_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/;\r\nvar parseDates = function parseDates(state) {\r\n    if (!state) {\r\n        return\r\n    }(0, _iterator.each)(state, function(key, value) {\r\n        if ((0, _type.isPlainObject)(value) || Array.isArray(value)) {\r\n            parseDates(value)\r\n        } else {\r\n            if (\"string\" === typeof value) {\r\n                var date = DATE_REGEX.exec(value);\r\n                if (date) {\r\n                    state[key] = new Date(Date.UTC(+date[1], +date[2] - 1, +date[3], +date[4], +date[5], +date[6]))\r\n                }\r\n            }\r\n        }\r\n    })\r\n};\r\nvar StateStoringController = _uiGrid_core.default.ViewController.inherit(function() {\r\n    var getStorage = function(options) {\r\n        var storage = \"sessionStorage\" === options.type ? (0, _storage.sessionStorage)() : (0, _window.getWindow)().localStorage;\r\n        if (!storage) {\r\n            if (\"file:\" === (0, _window.getWindow)().location.protocol && _browser.default.msie) {\r\n                throw new Error(\"E1038\")\r\n            } else {\r\n                throw new Error(\"E1007\")\r\n            }\r\n        }\r\n        return storage\r\n    };\r\n    var getUniqueStorageKey = function(options) {\r\n        return (0, _type.isDefined)(options.storageKey) ? options.storageKey : \"storage\"\r\n    };\r\n    return {\r\n        _loadState: function() {\r\n            var options = this.option(\"stateStoring\");\r\n            if (\"custom\" === options.type) {\r\n                return options.customLoad && options.customLoad()\r\n            }\r\n            try {\r\n                return JSON.parse(getStorage(options).getItem(getUniqueStorageKey(options)))\r\n            } catch (e) {\r\n                _ui.default.log(e.message)\r\n            }\r\n        },\r\n        _saveState: function(state) {\r\n            var options = this.option(\"stateStoring\");\r\n            if (\"custom\" === options.type) {\r\n                options.customSave && options.customSave(state);\r\n                return\r\n            }\r\n            try {\r\n                getStorage(options).setItem(getUniqueStorageKey(options), JSON.stringify(state))\r\n            } catch (e) {\r\n                _ui.default.log(e.message)\r\n            }\r\n        },\r\n        publicMethods: function() {\r\n            return [\"state\"]\r\n        },\r\n        isEnabled: function() {\r\n            return this.option(\"stateStoring.enabled\")\r\n        },\r\n        init: function() {\r\n            var that = this;\r\n            that._state = {};\r\n            that._isLoaded = false;\r\n            that._isLoading = false;\r\n            that._windowUnloadHandler = function() {\r\n                if (void 0 !== that._savingTimeoutID) {\r\n                    that._saveState(that.state())\r\n                }\r\n            };\r\n            _events_engine.default.on((0, _window.getWindow)(), \"unload\", that._windowUnloadHandler);\r\n            return that\r\n        },\r\n        isLoaded: function() {\r\n            return this._isLoaded\r\n        },\r\n        isLoading: function() {\r\n            return this._isLoading\r\n        },\r\n        load: function() {\r\n            var _this = this;\r\n            this._isLoading = true;\r\n            var loadResult = (0, _deferred.fromPromise)(this._loadState());\r\n            loadResult.always(function() {\r\n                _this._isLoaded = true;\r\n                _this._isLoading = false\r\n            }).done(function(state) {\r\n                _this.state(state)\r\n            });\r\n            return loadResult\r\n        },\r\n        state: function(_state) {\r\n            var that = this;\r\n            if (!arguments.length) {\r\n                return (0, _extend.extend)(true, {}, that._state)\r\n            } else {\r\n                that._state = (0, _extend.extend)({}, _state);\r\n                parseDates(that._state)\r\n            }\r\n        },\r\n        save: function() {\r\n            var that = this;\r\n            clearTimeout(that._savingTimeoutID);\r\n            that._savingTimeoutID = setTimeout(function() {\r\n                that._saveState(that.state());\r\n                that._savingTimeoutID = void 0\r\n            }, that.option(\"stateStoring.savingTimeout\"))\r\n        },\r\n        optionChanged: function(args) {\r\n            var that = this;\r\n            switch (args.name) {\r\n                case \"stateStoring\":\r\n                    if (that.isEnabled() && !that.isLoading()) {\r\n                        that.load()\r\n                    }\r\n                    args.handled = true;\r\n                    break;\r\n                default:\r\n                    that.callBase(args)\r\n            }\r\n        },\r\n        dispose: function() {\r\n            clearTimeout(this._savingTimeoutID);\r\n            _events_engine.default.off((0, _window.getWindow)(), \"unload\", this._windowUnloadHandler)\r\n        }\r\n    }\r\n}());\r\nexports.StateStoringController = StateStoringController;\r\n","/**\r\n * DevExtreme (ui/box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _style = require(\"../core/utils/style\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../core/utils/browser\"));\r\nvar _item = _interopRequireDefault(require(\"./collection/item\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar BOX_CLASS = \"dx-box\";\r\nvar BOX_SELECTOR = \".dx-box\";\r\nvar BOX_ITEM_CLASS = \"dx-box-item\";\r\nvar BOX_ITEM_DATA_KEY = \"dxBoxItemData\";\r\nvar MINSIZE_MAP = {\r\n    row: \"minWidth\",\r\n    col: \"minHeight\"\r\n};\r\nvar MAXSIZE_MAP = {\r\n    row: \"maxWidth\",\r\n    col: \"maxHeight\"\r\n};\r\nvar SHRINK = 1;\r\nvar FLEX_JUSTIFY_CONTENT_MAP = {\r\n    start: \"flex-start\",\r\n    end: \"flex-end\",\r\n    center: \"center\",\r\n    \"space-between\": \"space-between\",\r\n    \"space-around\": \"space-around\"\r\n};\r\nvar FLEX_ALIGN_ITEMS_MAP = {\r\n    start: \"flex-start\",\r\n    end: \"flex-end\",\r\n    center: \"center\",\r\n    stretch: \"stretch\"\r\n};\r\nvar FLEX_DIRECTION_MAP = {\r\n    row: \"row\",\r\n    col: \"column\"\r\n};\r\nvar setFlexProp = function(element, prop, value) {\r\n    value = (0, _style.normalizeStyleProp)(prop, value);\r\n    element.style[(0, _style.styleProp)(prop)] = value;\r\n    if (!(0, _window.hasWindow)()) {\r\n        if (\"\" === value || !(0, _type.isDefined)(value)) {\r\n            return\r\n        }\r\n        var cssName = (0, _inflector.dasherize)(prop);\r\n        var styleExpr = cssName + \": \" + value + \";\";\r\n        if (!element.attributes.style) {\r\n            element.setAttribute(\"style\", styleExpr)\r\n        } else {\r\n            if (element.attributes.style.value.indexOf(styleExpr) < 0) {\r\n                element.attributes.style.value += \" \" + styleExpr\r\n            }\r\n        }\r\n    }\r\n};\r\nvar BOX_EVENTNAMESPACE = \"dxBox\";\r\nvar UPDATE_EVENT = \"dxupdate.\" + BOX_EVENTNAMESPACE;\r\nvar FALLBACK_BOX_ITEM = \"dx-box-fallback-item\";\r\nvar FALLBACK_WRAP_MAP = {\r\n    row: \"nowrap\",\r\n    col: \"normal\"\r\n};\r\nvar FALLBACK_MAIN_SIZE_MAP = {\r\n    row: \"width\",\r\n    col: \"height\"\r\n};\r\nvar FALLBACK_CROSS_SIZE_MAP = {\r\n    row: \"height\",\r\n    col: \"width\"\r\n};\r\nvar FALLBACK_PRE_MARGIN_MAP = {\r\n    row: \"marginLeft\",\r\n    col: \"marginTop\"\r\n};\r\nvar FALLBACK_POST_MARGIN_MAP = {\r\n    row: \"marginRight\",\r\n    col: \"marginBottom\"\r\n};\r\nvar FALLBACK_CROSS_PRE_MARGIN_MAP = {\r\n    row: \"marginTop\",\r\n    col: \"marginLeft\"\r\n};\r\nvar FALLBACK_CROSS_POST_MARGIN_MAP = {\r\n    row: \"marginBottom\",\r\n    col: \"marginRight\"\r\n};\r\nvar MARGINS_RTL_FLIP_MAP = {\r\n    marginLeft: \"marginRight\",\r\n    marginRight: \"marginLeft\"\r\n};\r\nvar BoxItem = function(_CollectionWidgetItem) {\r\n    _inherits(BoxItem, _CollectionWidgetItem);\r\n    var _super = _createSuper(BoxItem);\r\n\r\n    function BoxItem() {\r\n        _classCallCheck(this, BoxItem);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(BoxItem, [{\r\n        key: \"_renderVisible\",\r\n        value: function(value, oldValue) {\r\n            _get(_getPrototypeOf(BoxItem.prototype), \"_renderVisible\", this).call(this, value);\r\n            if ((0, _type.isDefined)(oldValue)) {\r\n                this._options.fireItemStateChangedAction({\r\n                    name: \"visible\",\r\n                    state: value,\r\n                    oldState: oldValue\r\n                })\r\n            }\r\n        }\r\n    }]);\r\n    return BoxItem\r\n}(_item.default);\r\nvar FlexLayoutStrategy = function() {\r\n    function FlexLayoutStrategy($element, option) {\r\n        _classCallCheck(this, FlexLayoutStrategy);\r\n        this._$element = $element;\r\n        this._option = option;\r\n        this.initSize = _common.noop;\r\n        this.update = _common.noop\r\n    }\r\n    _createClass(FlexLayoutStrategy, [{\r\n        key: \"renderBox\",\r\n        value: function() {\r\n            this._$element.css({\r\n                display: (0, _style.stylePropPrefix)(\"flexDirection\") + \"flex\"\r\n            });\r\n            setFlexProp(this._$element.get(0), \"flexDirection\", FLEX_DIRECTION_MAP[this._option(\"direction\")])\r\n        }\r\n    }, {\r\n        key: \"renderAlign\",\r\n        value: function() {\r\n            this._$element.css({\r\n                justifyContent: this._normalizedAlign()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_normalizedAlign\",\r\n        value: function() {\r\n            var align = this._option(\"align\");\r\n            return align in FLEX_JUSTIFY_CONTENT_MAP ? FLEX_JUSTIFY_CONTENT_MAP[align] : align\r\n        }\r\n    }, {\r\n        key: \"renderCrossAlign\",\r\n        value: function() {\r\n            this._$element.css({\r\n                alignItems: this._normalizedCrossAlign()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_normalizedCrossAlign\",\r\n        value: function() {\r\n            var crossAlign = this._option(\"crossAlign\");\r\n            return crossAlign in FLEX_ALIGN_ITEMS_MAP ? FLEX_ALIGN_ITEMS_MAP[crossAlign] : crossAlign\r\n        }\r\n    }, {\r\n        key: \"renderItems\",\r\n        value: function($items) {\r\n            var flexPropPrefix = (0, _style.stylePropPrefix)(\"flexDirection\");\r\n            var direction = this._option(\"direction\");\r\n            (0, _iterator.each)($items, function() {\r\n                var $item = (0, _renderer.default)(this);\r\n                var item = $item.data(BOX_ITEM_DATA_KEY);\r\n                $item.css({\r\n                    display: flexPropPrefix + \"flex\"\r\n                }).css(MAXSIZE_MAP[direction], item.maxSize || \"none\").css(MINSIZE_MAP[direction], item.minSize || \"0\");\r\n                setFlexProp($item.get(0), \"flexBasis\", item.baseSize || 0);\r\n                setFlexProp($item.get(0), \"flexGrow\", item.ratio);\r\n                setFlexProp($item.get(0), \"flexShrink\", (0, _type.isDefined)(item.shrink) ? item.shrink : SHRINK);\r\n                $item.children().each(function(_, itemContent) {\r\n                    (0, _renderer.default)(itemContent).css({\r\n                        width: \"auto\",\r\n                        height: \"auto\",\r\n                        display: (0, _style.stylePropPrefix)(\"flexDirection\") + \"flex\",\r\n                        flexBasis: 0\r\n                    });\r\n                    setFlexProp(itemContent, \"flexGrow\", 1);\r\n                    setFlexProp(itemContent, \"flexDirection\", (0, _renderer.default)(itemContent)[0].style.flexDirection || \"column\")\r\n                })\r\n            })\r\n        }\r\n    }]);\r\n    return FlexLayoutStrategy\r\n}();\r\nvar FallbackLayoutStrategy = function() {\r\n    function FallbackLayoutStrategy($element, option) {\r\n        _classCallCheck(this, FallbackLayoutStrategy);\r\n        this._$element = $element;\r\n        this._option = option\r\n    }\r\n    _createClass(FallbackLayoutStrategy, [{\r\n        key: \"renderBox\",\r\n        value: function() {\r\n            this._$element.css({\r\n                fontSize: 0,\r\n                whiteSpace: FALLBACK_WRAP_MAP[this._option(\"direction\")],\r\n                verticalAlign: \"top\"\r\n            });\r\n            _events_engine.default.off(this._$element, UPDATE_EVENT);\r\n            _events_engine.default.on(this._$element, UPDATE_EVENT, this.update.bind(this))\r\n        }\r\n    }, {\r\n        key: \"renderAlign\",\r\n        value: function() {\r\n            var $items = this._$items;\r\n            if (!$items) {\r\n                return\r\n            }\r\n            var align = this._option(\"align\");\r\n            var totalItemSize = this.totalItemSize;\r\n            var direction = this._option(\"direction\");\r\n            var boxSize = this._$element[FALLBACK_MAIN_SIZE_MAP[direction]]();\r\n            var freeSpace = boxSize - totalItemSize;\r\n            var shift = 0;\r\n            this._setItemsMargins($items, direction, 0);\r\n            switch (align) {\r\n                case \"start\":\r\n                    break;\r\n                case \"end\":\r\n                    shift = freeSpace;\r\n                    $items.first().css(this._chooseMarginSide(FALLBACK_PRE_MARGIN_MAP[direction]), shift);\r\n                    break;\r\n                case \"center\":\r\n                    shift = .5 * freeSpace;\r\n                    $items.first().css(this._chooseMarginSide(FALLBACK_PRE_MARGIN_MAP[direction]), shift);\r\n                    $items.last().css(this._chooseMarginSide(FALLBACK_POST_MARGIN_MAP[direction]), shift);\r\n                    break;\r\n                case \"space-between\":\r\n                    shift = .5 * freeSpace / ($items.length - 1);\r\n                    this._setItemsMargins($items, direction, shift);\r\n                    $items.first().css(this._chooseMarginSide(FALLBACK_PRE_MARGIN_MAP[direction]), 0);\r\n                    $items.last().css(this._chooseMarginSide(FALLBACK_POST_MARGIN_MAP[direction]), 0);\r\n                    break;\r\n                case \"space-around\":\r\n                    shift = .5 * freeSpace / $items.length;\r\n                    this._setItemsMargins($items, direction, shift)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_setItemsMargins\",\r\n        value: function($items, direction, shift) {\r\n            $items.css(this._chooseMarginSide(FALLBACK_PRE_MARGIN_MAP[direction]), shift).css(this._chooseMarginSide(FALLBACK_POST_MARGIN_MAP[direction]), shift)\r\n        }\r\n    }, {\r\n        key: \"renderCrossAlign\",\r\n        value: function() {\r\n            var $items = this._$items;\r\n            if (!$items) {\r\n                return\r\n            }\r\n            var crossAlign = this._option(\"crossAlign\");\r\n            var direction = this._option(\"direction\");\r\n            var size = this._$element[FALLBACK_CROSS_SIZE_MAP[direction]]();\r\n            var that = this;\r\n            switch (crossAlign) {\r\n                case \"start\":\r\n                    break;\r\n                case \"end\":\r\n                    (0, _iterator.each)($items, function() {\r\n                        var $item = (0, _renderer.default)(this);\r\n                        var itemSize = $item[FALLBACK_CROSS_SIZE_MAP[direction]]();\r\n                        var shift = size - itemSize;\r\n                        $item.css(that._chooseMarginSide(FALLBACK_CROSS_PRE_MARGIN_MAP[direction]), shift)\r\n                    });\r\n                    break;\r\n                case \"center\":\r\n                    (0, _iterator.each)($items, function() {\r\n                        var $item = (0, _renderer.default)(this);\r\n                        var itemSize = $item[FALLBACK_CROSS_SIZE_MAP[direction]]();\r\n                        var shift = .5 * (size - itemSize);\r\n                        $item.css(that._chooseMarginSide(FALLBACK_CROSS_PRE_MARGIN_MAP[direction]), shift).css(that._chooseMarginSide(FALLBACK_CROSS_POST_MARGIN_MAP[direction]), shift)\r\n                    });\r\n                    break;\r\n                case \"stretch\":\r\n                    $items.css(that._chooseMarginSide(FALLBACK_CROSS_PRE_MARGIN_MAP[direction]), 0).css(that._chooseMarginSide(FALLBACK_CROSS_POST_MARGIN_MAP[direction]), 0).css(FALLBACK_CROSS_SIZE_MAP[direction], \"100%\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_chooseMarginSide\",\r\n        value: function(value) {\r\n            if (!this._option(\"rtlEnabled\")) {\r\n                return value\r\n            }\r\n            return MARGINS_RTL_FLIP_MAP[value] || value\r\n        }\r\n    }, {\r\n        key: \"renderItems\",\r\n        value: function($items) {\r\n            var _this = this;\r\n            this._$items = $items;\r\n            var direction = this._option(\"direction\");\r\n            var totalRatio = 0;\r\n            var totalWeightedShrink = 0;\r\n            var totalBaseSize = 0;\r\n            (0, _iterator.each)($items, function(_, item) {\r\n                var $item = (0, _renderer.default)(item);\r\n                $item.css({\r\n                    display: \"inline-block\",\r\n                    verticalAlign: \"top\"\r\n                });\r\n                $item[FALLBACK_MAIN_SIZE_MAP[direction]](\"auto\");\r\n                $item.removeClass(FALLBACK_BOX_ITEM);\r\n                var itemData = $item.data(BOX_ITEM_DATA_KEY);\r\n                var ratio = itemData.ratio || 0;\r\n                var size = _this._baseSize($item);\r\n                var shrink = (0, _type.isDefined)(itemData.shrink) ? itemData.shrink : SHRINK;\r\n                totalRatio += ratio;\r\n                totalWeightedShrink += shrink * size;\r\n                totalBaseSize += size\r\n            });\r\n            var freeSpaceSize = this._boxSize() - totalBaseSize;\r\n            var itemSize = function($item) {\r\n                var itemData = $item.data(BOX_ITEM_DATA_KEY);\r\n                var size = _this._baseSize($item);\r\n                var factor = freeSpaceSize >= 0 ? itemData.ratio || 0 : ((0, _type.isDefined)(itemData.shrink) ? itemData.shrink : SHRINK) * size;\r\n                var totalFactor = freeSpaceSize >= 0 ? totalRatio : totalWeightedShrink;\r\n                var shift = totalFactor ? Math.round(freeSpaceSize * factor / totalFactor) : 0;\r\n                return size + shift\r\n            };\r\n            var totalItemSize = 0;\r\n            (0, _iterator.each)($items, function(_, item) {\r\n                var $item = (0, _renderer.default)(item);\r\n                var itemData = (0, _renderer.default)(item).data(BOX_ITEM_DATA_KEY);\r\n                var size = itemSize($item);\r\n                totalItemSize += size;\r\n                $item.css(MAXSIZE_MAP[direction], itemData.maxSize || \"none\").css(MINSIZE_MAP[direction], itemData.minSize || \"0\").css(FALLBACK_MAIN_SIZE_MAP[direction], size);\r\n                $item.addClass(FALLBACK_BOX_ITEM)\r\n            });\r\n            this.totalItemSize = totalItemSize\r\n        }\r\n    }, {\r\n        key: \"_baseSize\",\r\n        value: function(item) {\r\n            var itemData = (0, _renderer.default)(item).data(BOX_ITEM_DATA_KEY);\r\n            return null == itemData.baseSize ? 0 : \"auto\" === itemData.baseSize ? this._contentSize(item) : this._parseSize(itemData.baseSize)\r\n        }\r\n    }, {\r\n        key: \"_contentSize\",\r\n        value: function(item) {\r\n            return (0, _renderer.default)(item)[FALLBACK_MAIN_SIZE_MAP[this._option(\"direction\")]]()\r\n        }\r\n    }, {\r\n        key: \"_parseSize\",\r\n        value: function(size) {\r\n            return String(size).match(/.+%$/) ? .01 * parseFloat(size) * this._boxSizeValue : size\r\n        }\r\n    }, {\r\n        key: \"_boxSize\",\r\n        value: function(value) {\r\n            if (!arguments.length) {\r\n                this._boxSizeValue = this._boxSizeValue || this._totalBaseSize();\r\n                return this._boxSizeValue\r\n            }\r\n            this._boxSizeValue = value\r\n        }\r\n    }, {\r\n        key: \"_totalBaseSize\",\r\n        value: function() {\r\n            var _this2 = this;\r\n            var result = 0;\r\n            (0, _iterator.each)(this._$items, function(_, item) {\r\n                result += _this2._baseSize(item)\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"initSize\",\r\n        value: function() {\r\n            this._boxSize(this._$element[FALLBACK_MAIN_SIZE_MAP[this._option(\"direction\")]]())\r\n        }\r\n    }, {\r\n        key: \"update\",\r\n        value: function() {\r\n            if (!this._$items || this._$element.is(\":hidden\")) {\r\n                return\r\n            }\r\n            this._$items.detach();\r\n            this.initSize();\r\n            this._$element.append(this._$items);\r\n            this.renderItems(this._$items);\r\n            this.renderAlign();\r\n            this.renderCrossAlign();\r\n            var element = this._$element.get(0);\r\n            this._$items.find(BOX_SELECTOR).each(function() {\r\n                if (element === (0, _renderer.default)(this).parent().closest(BOX_SELECTOR).get(0)) {\r\n                    _events_engine.default.triggerHandler(this, UPDATE_EVENT)\r\n                }\r\n            })\r\n        }\r\n    }]);\r\n    return FallbackLayoutStrategy\r\n}();\r\nvar Box = function(_CollectionWidget) {\r\n    _inherits(Box, _CollectionWidget);\r\n    var _super2 = _createSuper(Box);\r\n\r\n    function Box() {\r\n        _classCallCheck(this, Box);\r\n        return _super2.apply(this, arguments)\r\n    }\r\n    _createClass(Box, [{\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(Box.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                direction: \"row\",\r\n                align: \"start\",\r\n                crossAlign: \"stretch\",\r\n                activeStateEnabled: false,\r\n                focusStateEnabled: false,\r\n                onItemStateChanged: void 0,\r\n                _layoutStrategy: \"flex\",\r\n                _queue: void 0\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_defaultOptionsRules\",\r\n        value: function() {\r\n            return _get(_getPrototypeOf(Box.prototype), \"_defaultOptionsRules\", this).call(this).concat([{\r\n                device: function() {\r\n                    return _browser.default.msie\r\n                },\r\n                options: {\r\n                    _layoutStrategy: \"fallback\"\r\n                }\r\n            }])\r\n        }\r\n    }, {\r\n        key: \"_itemClass\",\r\n        value: function() {\r\n            return BOX_ITEM_CLASS\r\n        }\r\n    }, {\r\n        key: \"_itemDataKey\",\r\n        value: function() {\r\n            return BOX_ITEM_DATA_KEY\r\n        }\r\n    }, {\r\n        key: \"_itemElements\",\r\n        value: function() {\r\n            return this._itemContainer().children(this._itemSelector())\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(Box.prototype), \"_init\", this).call(this);\r\n            this.$element().addClass(\"\".concat(BOX_CLASS, \"-\").concat(this.option(\"_layoutStrategy\")));\r\n            this._initLayout();\r\n            this._initBoxQueue()\r\n        }\r\n    }, {\r\n        key: \"_initLayout\",\r\n        value: function() {\r\n            this._layout = \"fallback\" === this.option(\"_layoutStrategy\") ? new FallbackLayoutStrategy(this.$element(), this.option.bind(this)) : new FlexLayoutStrategy(this.$element(), this.option.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_initBoxQueue\",\r\n        value: function() {\r\n            this._queue = this.option(\"_queue\") || []\r\n        }\r\n    }, {\r\n        key: \"_queueIsNotEmpty\",\r\n        value: function() {\r\n            return this.option(\"_queue\") ? false : !!this._queue.length\r\n        }\r\n    }, {\r\n        key: \"_pushItemToQueue\",\r\n        value: function($item, config) {\r\n            this._queue.push({\r\n                $item: $item,\r\n                config: config\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_shiftItemFromQueue\",\r\n        value: function() {\r\n            return this._queue.shift()\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            this.$element().addClass(BOX_CLASS);\r\n            this._layout.renderBox();\r\n            _get(_getPrototypeOf(Box.prototype), \"_initMarkup\", this).call(this);\r\n            this._renderAlign();\r\n            this._renderActions()\r\n        }\r\n    }, {\r\n        key: \"_renderActions\",\r\n        value: function() {\r\n            this._onItemStateChanged = this._createActionByOption(\"onItemStateChanged\")\r\n        }\r\n    }, {\r\n        key: \"_renderAlign\",\r\n        value: function() {\r\n            this._layout.renderAlign();\r\n            this._layout.renderCrossAlign()\r\n        }\r\n    }, {\r\n        key: \"_renderItems\",\r\n        value: function(items) {\r\n            var _this3 = this;\r\n            this._layout.initSize();\r\n            _get(_getPrototypeOf(Box.prototype), \"_renderItems\", this).call(this, items);\r\n            while (this._queueIsNotEmpty()) {\r\n                var item = this._shiftItemFromQueue();\r\n                this._createComponent(item.$item, Box, (0, _extend.extend)({\r\n                    _layoutStrategy: this.option(\"_layoutStrategy\"),\r\n                    itemTemplate: this.option(\"itemTemplate\"),\r\n                    itemHoldTimeout: this.option(\"itemHoldTimeout\"),\r\n                    onItemHold: this.option(\"onItemHold\"),\r\n                    onItemClick: this.option(\"onItemClick\"),\r\n                    onItemContextMenu: this.option(\"onItemContextMenu\"),\r\n                    onItemRendered: this.option(\"onItemRendered\"),\r\n                    _queue: this._queue\r\n                }, item.config))\r\n            }\r\n            this._layout.renderItems(this._itemElements());\r\n            clearTimeout(this._updateTimer);\r\n            this._updateTimer = setTimeout(function() {\r\n                if (!_this3._isUpdated) {\r\n                    _this3._layout.update()\r\n                }\r\n                _this3._isUpdated = false;\r\n                _this3._updateTimer = null\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_renderItemContent\",\r\n        value: function(args) {\r\n            var $itemNode = args.itemData && args.itemData.node;\r\n            if ($itemNode) {\r\n                return this._renderItemContentByNode(args, $itemNode)\r\n            }\r\n            return _get(_getPrototypeOf(Box.prototype), \"_renderItemContent\", this).call(this, args)\r\n        }\r\n    }, {\r\n        key: \"_postprocessRenderItem\",\r\n        value: function(args) {\r\n            var boxConfig = args.itemData.box;\r\n            if (!boxConfig) {\r\n                return\r\n            }\r\n            this._pushItemToQueue(args.itemContent, boxConfig)\r\n        }\r\n    }, {\r\n        key: \"_createItemByTemplate\",\r\n        value: function(itemTemplate, args) {\r\n            if (args.itemData.box) {\r\n                return itemTemplate.source ? itemTemplate.source() : (0, _renderer.default)()\r\n            }\r\n            return _get(_getPrototypeOf(Box.prototype), \"_createItemByTemplate\", this).call(this, itemTemplate, args)\r\n        }\r\n    }, {\r\n        key: \"_visibilityChanged\",\r\n        value: function(visible) {\r\n            if (visible) {\r\n                this._dimensionChanged()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_dimensionChanged\",\r\n        value: function() {\r\n            if (this._updateTimer) {\r\n                return\r\n            }\r\n            this._isUpdated = true;\r\n            this._layout.update()\r\n        }\r\n    }, {\r\n        key: \"_dispose\",\r\n        value: function() {\r\n            clearTimeout(this._updateTimer);\r\n            _get(_getPrototypeOf(Box.prototype), \"_dispose\", this).apply(this, arguments)\r\n        }\r\n    }, {\r\n        key: \"_itemOptionChanged\",\r\n        value: function(item, property, value, oldValue) {\r\n            if (\"visible\" === property) {\r\n                this._onItemStateChanged({\r\n                    name: property,\r\n                    state: value,\r\n                    oldState: false !== oldValue\r\n                })\r\n            }\r\n            _get(_getPrototypeOf(Box.prototype), \"_itemOptionChanged\", this).call(this, item, property, value)\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            switch (args.name) {\r\n                case \"_layoutStrategy\":\r\n                case \"_queue\":\r\n                case \"direction\":\r\n                    this._invalidate();\r\n                    break;\r\n                case \"align\":\r\n                    this._layout.renderAlign();\r\n                    break;\r\n                case \"crossAlign\":\r\n                    this._layout.renderCrossAlign();\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(Box.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_itemOptions\",\r\n        value: function() {\r\n            var _this4 = this;\r\n            var options = _get(_getPrototypeOf(Box.prototype), \"_itemOptions\", this).call(this);\r\n            options.fireItemStateChangedAction = function(e) {\r\n                _this4._onItemStateChanged(e)\r\n            };\r\n            return options\r\n        }\r\n    }, {\r\n        key: \"repaint\",\r\n        value: function() {\r\n            this._dimensionChanged()\r\n        }\r\n    }]);\r\n    return Box\r\n}(_uiCollection_widget.default);\r\nBox.ItemClass = BoxItem;\r\n(0, _component_registrator.default)(\"dxBox\", Box);\r\nvar _default = Box;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/axes/tick_generator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.tickGenerator = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _slicedToArray(arr, i) {\r\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n    if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n        return\r\n    }\r\n    var _arr = [];\r\n    var _n = true;\r\n    var _d = false;\r\n    var _e = void 0;\r\n    try {\r\n        for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n            _arr.push(_s.value);\r\n            if (i && _arr.length === i) {\r\n                break\r\n            }\r\n        }\r\n    } catch (err) {\r\n        _d = true;\r\n        _e = err\r\n    } finally {\r\n        try {\r\n            if (!_n && null != _i.return) {\r\n                _i.return()\r\n            }\r\n        } finally {\r\n            if (_d) {\r\n                throw _e\r\n            }\r\n        }\r\n    }\r\n    return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return arr\r\n    }\r\n}\r\nvar convertDateUnitToMilliseconds = _date.default.convertDateUnitToMilliseconds;\r\nvar dateToMilliseconds = _date.default.dateToMilliseconds;\r\nvar math = Math;\r\nvar mathAbs = math.abs;\r\nvar mathFloor = math.floor;\r\nvar mathCeil = math.ceil;\r\nvar mathPow = math.pow;\r\nvar NUMBER_MULTIPLIERS = [1, 2, 2.5, 5];\r\nvar LOGARITHMIC_MULTIPLIERS = [1, 2, 3, 5];\r\nvar DATETIME_MULTIPLIERS = {\r\n    millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],\r\n    second: [1, 2, 3, 5, 10, 15, 20, 30],\r\n    minute: [1, 2, 3, 5, 10, 15, 20, 30],\r\n    hour: [1, 2, 3, 4, 6, 8, 12],\r\n    day: [1, 2],\r\n    week: [1, 2],\r\n    month: [1, 2, 3, 6]\r\n};\r\nvar DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND = (0, _extend.extend)({}, DATETIME_MULTIPLIERS, {\r\n    day: [1]\r\n});\r\nvar DATETIME_MINOR_MULTIPLIERS = {\r\n    millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],\r\n    second: [1, 2, 3, 5, 10, 15, 20, 30],\r\n    minute: [1, 2, 3, 5, 10, 15, 20, 30],\r\n    hour: [1, 2, 3, 4, 6, 8, 12],\r\n    day: [1, 2, 3, 7, 14],\r\n    month: [1, 2, 3, 6]\r\n};\r\nvar MINOR_DELIMITERS = [2, 4, 5, 8, 10];\r\nvar VISIBILITY_DELIMITER = 3;\r\nvar MINUTE = 6e4;\r\n\r\nfunction dummyGenerator(options) {\r\n    return function(data, screenDelta, tickInterval, forceTickInterval) {\r\n        var count = mathFloor(screenDelta / options.axisDivisionFactor);\r\n        count = count < 1 ? 1 : count;\r\n        var interval = screenDelta / count;\r\n        return {\r\n            ticks: interval > 0 ? Array.apply(null, new Array(count + 1)).map(function(_, i) {\r\n                return interval * i\r\n            }) : [],\r\n            tickInterval: interval\r\n        }\r\n    }\r\n}\r\n\r\nfunction discreteGenerator(options) {\r\n    return function(data, screenDelta, tickInterval, forceTickInterval) {\r\n        var categories = (0, _utils.getCategoriesInfo)(data.categories, data.min, data.max).categories;\r\n        return {\r\n            ticks: categories,\r\n            tickInterval: mathCeil(categories.length * options.axisDivisionFactor / screenDelta)\r\n        }\r\n    }\r\n}\r\nvar getValue = function(value) {\r\n    return value\r\n};\r\nvar getLogValue = function(base, allowNegatives, linearThreshold) {\r\n    return function(value) {\r\n        return (0, _utils.getLogExt)(value, base, allowNegatives, linearThreshold)\r\n    }\r\n};\r\nvar raiseTo = function(base, allowNegatives, linearThreshold) {\r\n    return function(value) {\r\n        return (0, _utils.raiseToExt)(value, base, allowNegatives, linearThreshold)\r\n    }\r\n};\r\nvar mathRaiseTo = function(base) {\r\n    return function(value) {\r\n        return (0, _utils.raiseTo)(value, base)\r\n    }\r\n};\r\nvar logAbsValue = function(base) {\r\n    return function(value) {\r\n        return 0 === value ? 0 : (0, _utils.getLog)(mathAbs(value), base)\r\n    }\r\n};\r\nvar correctValueByInterval = function(post, round, getValue) {\r\n    return function(value, interval) {\r\n        return (0, _math.adjust)(post(round((0, _math.adjust)(getValue(value) / interval)) * interval))\r\n    }\r\n};\r\n\r\nfunction correctMinValueByEndOnTick(floorFunc, ceilFunc, resolveEndOnTick, endOnTick) {\r\n    if ((0, _type.isDefined)(endOnTick)) {\r\n        return endOnTick ? floorFunc : ceilFunc\r\n    }\r\n    return function(value, interval, businessViewInfo, forceEndOnTick) {\r\n        var floorTickValue = floorFunc(value, interval);\r\n        if (value - floorTickValue === 0 || !(0, _type.isDefined)(businessViewInfo) || resolveEndOnTick(value, floorTickValue, interval, businessViewInfo) || forceEndOnTick) {\r\n            return floorTickValue\r\n        }\r\n        return ceilFunc(value, interval)\r\n    }\r\n}\r\n\r\nfunction resolveEndOnTick(curValue, tickValue, interval, businessViewInfo) {\r\n    var prevTickDataDiff = interval - mathAbs(tickValue - curValue);\r\n    var intervalCount = math.max(mathCeil(businessViewInfo.businessDelta / interval), 2);\r\n    var businessRatio = businessViewInfo.screenDelta / (intervalCount * interval);\r\n    var potentialTickScreenDiff = math.round(businessRatio * prevTickDataDiff);\r\n    var delimiterFactor = (0, _utils.getLogExt)(businessRatio * interval / businessViewInfo.axisDivisionFactor, 2) + 1;\r\n    var delimiterMultiplier = (businessViewInfo.isSpacedMargin ? 2 : 1) * delimiterFactor;\r\n    var screenDelimiter = math.round(VISIBILITY_DELIMITER * delimiterMultiplier);\r\n    return businessViewInfo.businessDelta > businessViewInfo.interval && potentialTickScreenDiff >= screenDelimiter\r\n}\r\n\r\nfunction resolveEndOnTickLog(base) {\r\n    return function(curValue, tickValue, interval, businessViewInfo) {\r\n        return resolveEndOnTick((0, _utils.getLogExt)(curValue, base), (0, _utils.getLogExt)(tickValue, base), interval, businessViewInfo)\r\n    }\r\n}\r\n\r\nfunction resolveEndOnTickDate(curValue, tickValue, interval, businessViewInfo) {\r\n    return resolveEndOnTick(curValue.valueOf(), tickValue.valueOf(), dateToMilliseconds(interval), businessViewInfo)\r\n}\r\n\r\nfunction getBusinessDelta(data, breaks) {\r\n    var spacing = 0;\r\n    if (breaks) {\r\n        spacing = breaks.reduce(function(prev, item) {\r\n            return prev + (item.to - item.from)\r\n        }, 0)\r\n    }\r\n    return mathAbs(data.max - data.min - spacing)\r\n}\r\n\r\nfunction getBusinessDeltaLog(base, allowNegatives, linearThreshold) {\r\n    var getLog = getLogValue(base, allowNegatives, linearThreshold);\r\n    return function(data, breaks) {\r\n        var spacing = 0;\r\n        if (breaks) {\r\n            spacing = breaks.reduce(function(prev, item) {\r\n                return prev + mathAbs(getLog(item.to / item.from))\r\n            }, 0)\r\n        }\r\n        return mathCeil(mathAbs(getLog(data.max) - getLog(data.min)) - spacing)\r\n    }\r\n}\r\n\r\nfunction getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount) {\r\n    var count = screenDelta / axisDivisionFactor - (addTickCount || 0);\r\n    count = count < 1 ? 1 : count;\r\n    return businessDelta / count\r\n}\r\n\r\nfunction getMultiplierFactor(interval, factorDelta) {\r\n    return mathPow(10, mathFloor((0, _utils.getLogExt)(interval, 10)) + (factorDelta || 0))\r\n}\r\n\r\nfunction calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, _, minTickInterval) {\r\n    var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount);\r\n    var result = 1;\r\n    var onlyIntegers = false === allowDecimals;\r\n    if (!forceTickInterval || !tickInterval) {\r\n        if (interval >= 1 || !onlyIntegers && interval > 0) {\r\n            result = adjustInterval(interval, multipliers, onlyIntegers)\r\n        }\r\n        if (!tickInterval || !forceTickInterval && tickInterval < result) {\r\n            tickInterval = result\r\n        }\r\n    }\r\n    if (!forceTickInterval && minTickInterval) {\r\n        minTickInterval = adjustInterval(minTickInterval, multipliers, onlyIntegers);\r\n        if (minTickInterval > tickInterval) {\r\n            tickInterval = minTickInterval\r\n        }\r\n    }\r\n    return tickInterval\r\n}\r\n\r\nfunction adjustInterval(interval, multipliers, onlyIntegers) {\r\n    var factor = getMultiplierFactor(interval, -1);\r\n    var result = 1;\r\n    multipliers = multipliers || NUMBER_MULTIPLIERS;\r\n    if (interval > 0) {\r\n        interval /= factor;\r\n        result = multipliers.concat(10 * multipliers[0]).map(function(m) {\r\n            return 10 * m\r\n        }).reduce(function(r, m) {\r\n            if (.1 === factor && onlyIntegers && 25 === m) {\r\n                return r\r\n            }\r\n            return r < interval ? m : r\r\n        }, 0);\r\n        result = (0, _math.adjust)(result * factor, factor)\r\n    }\r\n    return result\r\n}\r\n\r\nfunction calculateMinorTickInterval(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {\r\n    var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);\r\n    return tickInterval || MINOR_DELIMITERS.reduce(function(r, d) {\r\n        var cur = businessDelta / d;\r\n        return cur >= interval ? cur : r\r\n    }, 0)\r\n}\r\n\r\nfunction getCalculateTickIntervalLog(skipCalculationLimits) {\r\n    return function(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, _, __, minTickInterval) {\r\n        var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);\r\n        var result = 0;\r\n        var adjustInterval = getAdjustIntervalLog(skipCalculationLimits);\r\n        if (!forceTickInterval || !tickInterval) {\r\n            if (interval > 0) {\r\n                result = adjustInterval(interval, multipliers)\r\n            }\r\n            if (!tickInterval || !forceTickInterval && tickInterval < result) {\r\n                tickInterval = result\r\n            }\r\n        }\r\n        if (!forceTickInterval && minTickInterval) {\r\n            minTickInterval = adjustInterval(minTickInterval, multipliers);\r\n            if (minTickInterval > tickInterval) {\r\n                tickInterval = minTickInterval\r\n            }\r\n        }\r\n        return tickInterval\r\n    }\r\n}\r\n\r\nfunction getAdjustIntervalLog(skipCalculationLimits) {\r\n    return function(interval, multipliers) {\r\n        var factor = getMultiplierFactor(interval);\r\n        multipliers = multipliers || LOGARITHMIC_MULTIPLIERS;\r\n        if (!skipCalculationLimits && factor < 1) {\r\n            factor = 1\r\n        }\r\n        return multipliers.concat(10 * multipliers[0]).reduce(function(r, m) {\r\n            return r < interval ? m * factor : r\r\n        }, 0)\r\n    }\r\n}\r\n\r\nfunction getDataTimeMultipliers(gapSize) {\r\n    if (gapSize && gapSize > 2) {\r\n        return DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND\r\n    } else {\r\n        return DATETIME_MULTIPLIERS\r\n    }\r\n}\r\n\r\nfunction numbersReducer(interval, key) {\r\n    return function(r, m) {\r\n        if (!r && interval <= convertDateUnitToMilliseconds(key, m)) {\r\n            r = {};\r\n            r[key + \"s\"] = m\r\n        }\r\n        return r\r\n    }\r\n}\r\n\r\nfunction yearsReducer(interval, factor) {\r\n    return function(r, m) {\r\n        var years = factor * m;\r\n        if (!r && interval <= convertDateUnitToMilliseconds(\"year\", years) && 2.5 !== years) {\r\n            r = {\r\n                years: years\r\n            }\r\n        }\r\n        return r\r\n    }\r\n}\r\n\r\nfunction calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, gapSize, minTickInterval) {\r\n    if (!forceTickInterval || !tickInterval) {\r\n        var result = adjustIntervalDateTime(getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor), multipliers, null, gapSize);\r\n        if (!tickInterval || !forceTickInterval && dateToMilliseconds(tickInterval) <= dateToMilliseconds(result)) {\r\n            tickInterval = result\r\n        }\r\n    }\r\n    if (!forceTickInterval && minTickInterval) {\r\n        minTickInterval = adjustIntervalDateTime(minTickInterval, multipliers, null, gapSize);\r\n        if (dateToMilliseconds(minTickInterval) > dateToMilliseconds(tickInterval)) {\r\n            tickInterval = minTickInterval\r\n        }\r\n    }\r\n    return tickInterval\r\n}\r\n\r\nfunction adjustIntervalDateTime(interval, multipliers, _, gapSize) {\r\n    var result;\r\n    multipliers = multipliers || getDataTimeMultipliers(gapSize);\r\n    for (var key in multipliers) {\r\n        result = multipliers[key].reduce(numbersReducer(interval, key), result);\r\n        if (result) {\r\n            break\r\n        }\r\n    }\r\n    if (!result) {\r\n        for (var factor = 1;; factor *= 10) {\r\n            result = NUMBER_MULTIPLIERS.reduce(yearsReducer(interval, factor), result);\r\n            if (result) {\r\n                break\r\n            }\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction calculateMinorTickIntervalDateTime(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {\r\n    return calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, true, axisDivisionFactor, DATETIME_MINOR_MULTIPLIERS)\r\n}\r\n\r\nfunction getTickIntervalByCustomTicks(getValue, postProcess) {\r\n    return function(ticks) {\r\n        return ticks ? postProcess(mathAbs((0, _math.adjust)(getValue(ticks[1]) - getValue(ticks[0])))) || void 0 : void 0\r\n    }\r\n}\r\n\r\nfunction addInterval(value, interval, isNegative) {\r\n    return _date.default.addInterval(value, interval, isNegative)\r\n}\r\n\r\nfunction addIntervalLog(log, raise) {\r\n    return function(value, interval, isNegative) {\r\n        return raise(addInterval(log(value), interval, isNegative))\r\n    }\r\n}\r\n\r\nfunction addIntervalDate(value, interval, isNegative) {\r\n    return addInterval(value, interval, isNegative)\r\n}\r\n\r\nfunction addIntervalWithBreaks(addInterval, breaks, correctValue) {\r\n    breaks = breaks.filter(function(b) {\r\n        return !b.gapSize\r\n    });\r\n    return function(value, interval, isNegative) {\r\n        var breakSize;\r\n        value = addInterval(value, interval, isNegative);\r\n        if (!breaks.every(function(item) {\r\n                if (value >= addInterval(item.from, interval) && addInterval(value, interval) < item.to) {\r\n                    breakSize = item.to - item.from - 2 * (addInterval(item.from, interval) - item.from)\r\n                }\r\n                return !breakSize\r\n            })) {\r\n            value = correctValue(addInterval(value, breakSize), interval)\r\n        }\r\n        return value\r\n    }\r\n}\r\n\r\nfunction calculateTicks(addInterval, correctMinValue, adjustInterval, resolveEndOnTick) {\r\n    return function(data, tickInterval, endOnTick, gaps, breaks, businessDelta, screenDelta, axisDivisionFactor, generateExtraTick) {\r\n        var correctTickValue = correctTickValueOnGapSize(addInterval, gaps);\r\n        var min = data.min;\r\n        var max = data.max;\r\n        var businessViewInfo = {\r\n            screenDelta: screenDelta,\r\n            businessDelta: businessDelta,\r\n            axisDivisionFactor: axisDivisionFactor,\r\n            isSpacedMargin: data.isSpacedMargin,\r\n            interval: tickInterval\r\n        };\r\n        var cur = correctMinValue(min, tickInterval, businessViewInfo);\r\n        var ticks = [];\r\n        if (null !== breaks && void 0 !== breaks && breaks.length) {\r\n            addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)\r\n        }\r\n        if (cur > max) {\r\n            cur = correctMinValue(min, adjustInterval(businessDelta / 2), businessViewInfo);\r\n            if (cur > max) {\r\n                endOnTick = true;\r\n                cur = correctMinValue(min, tickInterval, businessViewInfo, endOnTick)\r\n            }\r\n        }\r\n        cur = correctTickValue(cur);\r\n        var prev;\r\n        while (cur < max && cur !== prev || generateExtraTick && cur <= max) {\r\n            ticks.push(cur);\r\n            prev = cur;\r\n            cur = correctTickValue(addInterval(cur, tickInterval))\r\n        }\r\n        if (endOnTick || cur - max === 0 || !(0, _type.isDefined)(endOnTick) && resolveEndOnTick(max, cur, tickInterval, businessViewInfo)) {\r\n            ticks.push(cur)\r\n        }\r\n        return ticks\r\n    }\r\n}\r\n\r\nfunction calculateMinorTicks(updateTickInterval, addInterval, correctMinValue, correctTickValue, ceil) {\r\n    return function(min, max, majorTicks, minorTickInterval, tickInterval, breaks, maxCount) {\r\n        var factor = tickInterval / minorTickInterval;\r\n        var lastMajor = majorTicks[majorTicks.length - 1];\r\n        var firstMajor = majorTicks[0];\r\n        var tickBalance = maxCount - 1;\r\n        if (null !== breaks && void 0 !== breaks && breaks.length) {\r\n            addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)\r\n        }\r\n        minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, firstMajor, factor);\r\n        if (0 === minorTickInterval) {\r\n            return []\r\n        }\r\n        var cur = correctTickValue(correctMinValue(min, tickInterval, min), minorTickInterval);\r\n        minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, cur, factor);\r\n        var ticks = [];\r\n        while (cur < firstMajor && (!tickBalance || tickBalance > 0)) {\r\n            cur >= min && ticks.push(cur);\r\n            tickBalance--;\r\n            cur = addInterval(cur, minorTickInterval)\r\n        }\r\n        var middleTicks = majorTicks.reduce(function(r, tick) {\r\n            tickBalance = maxCount - 1;\r\n            if (null === r.prevTick) {\r\n                r.prevTick = tick;\r\n                return r\r\n            }\r\n            minorTickInterval = updateTickInterval(minorTickInterval, tick, r.prevTick, factor);\r\n            var cur = correctTickValue(r.prevTick, minorTickInterval);\r\n            while (cur < tick && (!tickBalance || tickBalance > 0)) {\r\n                cur !== r.prevTick && r.minors.push(cur);\r\n                tickBalance--;\r\n                cur = addInterval(cur, minorTickInterval)\r\n            }\r\n            r.prevTick = tick;\r\n            return r\r\n        }, {\r\n            prevTick: null,\r\n            minors: []\r\n        });\r\n        ticks = ticks.concat(middleTicks.minors);\r\n        var maxValue = ceil(max, tickInterval, min);\r\n        minorTickInterval = updateTickInterval(minorTickInterval, maxValue, maxValue, factor);\r\n        cur = correctTickValue(lastMajor, minorTickInterval);\r\n        var prev;\r\n        while (cur < max && cur !== prev) {\r\n            ticks.push(cur);\r\n            prev = cur;\r\n            cur = addInterval(cur, minorTickInterval)\r\n        }\r\n        if (lastMajor - max !== 0 && cur - max === 0) {\r\n            ticks.push(cur)\r\n        }\r\n        return ticks\r\n    }\r\n}\r\n\r\nfunction filterTicks(ticks, breaks) {\r\n    if (breaks.length) {\r\n        var result = breaks.reduce(function(result, b) {\r\n            var tmpTicks = [];\r\n            var i;\r\n            for (i = result[1]; i < ticks.length; i++) {\r\n                var tickValue = ticks[i];\r\n                if (tickValue < b.from) {\r\n                    tmpTicks.push(tickValue)\r\n                }\r\n                if (tickValue >= b.to) {\r\n                    break\r\n                }\r\n            }\r\n            return [result[0].concat(tmpTicks), i]\r\n        }, [\r\n            [], 0\r\n        ]);\r\n        return result[0].concat(ticks.slice(result[1]))\r\n    }\r\n    return ticks\r\n}\r\n\r\nfunction correctTickValueOnGapSize(addInterval, breaks) {\r\n    return function(value) {\r\n        var gapSize;\r\n        if (!breaks.every(function(item) {\r\n                if (value >= item.from && value < item.to) {\r\n                    gapSize = item.gapSize\r\n                }\r\n                return !gapSize\r\n            })) {\r\n            value = addInterval(value, gapSize)\r\n        }\r\n        return value\r\n    }\r\n}\r\n\r\nfunction generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, getMajorTickIntervalByCustomTicks, getMinorTickIntervalByCustomTicks, convertTickInterval, calculateTicks, calculateMinorTicks, processScaleBreaks) {\r\n    function processCustomTicks(customTicks) {\r\n        return {\r\n            tickInterval: getMajorTickIntervalByCustomTicks(customTicks.majors),\r\n            ticks: customTicks.majors || [],\r\n            minorTickInterval: getMinorTickIntervalByCustomTicks(customTicks.minors),\r\n            minorTicks: customTicks.minors || []\r\n        }\r\n    }\r\n\r\n    function correctUserTickInterval(tickInterval, businessDelta, limit) {\r\n        if (tickInterval && businessDelta / convertTickInterval(tickInterval) >= limit + 1) {\r\n            options.incidentOccurred(\"W2003\");\r\n            tickInterval = void 0\r\n        }\r\n        return tickInterval\r\n    }\r\n\r\n    function generateMajorTicks(ticks, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks) {\r\n        if (customTicks.majors) {\r\n            ticks.breaks = breaks;\r\n            return ticks\r\n        }\r\n        var gaps = breaks.filter(function(b) {\r\n            return b.gapSize\r\n        });\r\n        var majorTicks;\r\n        tickInterval = options.skipCalculationLimits ? tickInterval : correctUserTickInterval(tickInterval, businessDelta, screenDelta);\r\n        tickInterval = calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, options.axisDivisionFactor, options.numberMultipliers, options.allowDecimals, breaks.length, gaps[0] && gaps[0].gapSize.days, options.minTickInterval);\r\n        if (!options.skipTickGeneration) {\r\n            majorTicks = calculateTicks(data, tickInterval, options.endOnTick, gaps, breaks, businessDelta, screenDelta, options.axisDivisionFactor, options.generateExtraTick);\r\n            breaks = processScaleBreaks(breaks, majorTicks, tickInterval);\r\n            majorTicks = filterTicks(majorTicks, breaks);\r\n            ticks.breaks = breaks;\r\n            ticks.ticks = ticks.ticks.concat(majorTicks)\r\n        }\r\n        ticks.tickInterval = tickInterval;\r\n        return ticks\r\n    }\r\n\r\n    function generateMinorTicks(ticks, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks) {\r\n        if (!options.calculateMinors) {\r\n            return ticks\r\n        }\r\n        if (customTicks.minors) {\r\n            return ticks\r\n        }\r\n        var minorBusinessDelta = convertTickInterval(ticks.tickInterval);\r\n        var minorScreenDelta = screenDelta * minorBusinessDelta / businessDelta;\r\n        var breaks = ticks.breaks;\r\n        if (!minorTickInterval && minorTickCount) {\r\n            minorTickInterval = getMinorTickIntervalByCustomTicks([minorBusinessDelta / (minorTickCount + 1), minorBusinessDelta / (minorTickCount + 1) * 2])\r\n        } else {\r\n            minorTickCount = void 0\r\n        }\r\n        minorTickInterval = correctUserTickInterval(minorTickInterval, minorBusinessDelta, minorScreenDelta);\r\n        minorTickInterval = calculateMinorTickInterval(minorBusinessDelta, minorScreenDelta, minorTickInterval, options.minorAxisDivisionFactor);\r\n        ticks.minorTicks = filterTicks(ticks.minorTicks.concat(calculateMinorTicks(data.min, data.max, ticks.ticks, minorTickInterval, ticks.tickInterval, breaks, minorTickCount)), breaks);\r\n        ticks.minorTickInterval = minorTickInterval;\r\n        return ticks\r\n    }\r\n    return function(data, screenDelta, tickInterval, forceTickInterval, customTicks, minorTickInterval, minorTickCount, breaks) {\r\n        customTicks = customTicks || {};\r\n        var businessDelta = getBusinessDelta(data, breaks);\r\n        var result = processCustomTicks(customTicks);\r\n        if (!isNaN(businessDelta)) {\r\n            if (0 === businessDelta && !customTicks.majors) {\r\n                result.ticks = [data.min]\r\n            } else {\r\n                result = generateMajorTicks(result, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks || []);\r\n                if (!options.skipTickGeneration && businessDelta > 0) {\r\n                    result = generateMinorTicks(result, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks)\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    }\r\n}\r\n\r\nfunction getBaseTick(breakValue, _ref, interval, getValue) {\r\n    var _ref2 = _slicedToArray(_ref, 2),\r\n        tick = _ref2[0],\r\n        insideTick = _ref2[1];\r\n    if (!(0, _type.isDefined)(tick) || mathAbs(getValue(breakValue) - getValue(tick)) / interval > .25) {\r\n        if ((0, _type.isDefined)(insideTick)) {\r\n            tick = insideTick\r\n        } else {\r\n            if (!(0, _type.isDefined)(tick)) {\r\n                tick = breakValue\r\n            }\r\n        }\r\n    }\r\n    return tick\r\n}\r\n\r\nfunction getScaleBreaksProcessor(convertTickInterval, getValue, addCorrection) {\r\n    return function(breaks, ticks, tickInterval) {\r\n        var interval = convertTickInterval(tickInterval);\r\n        var correction = .5 * interval;\r\n        return breaks.reduce(function(result, b) {\r\n            var breakTicks = ticks.filter(function(tick) {\r\n                return tick <= b.from\r\n            });\r\n            var from = addCorrection(getBaseTick(b.from, [].concat(breakTicks[breakTicks.length - 1], ticks[breakTicks.length]), interval, getValue), correction);\r\n            breakTicks = ticks.filter(function(tick) {\r\n                return tick >= b.to\r\n            });\r\n            var to = addCorrection(getBaseTick(b.to, [].concat(breakTicks[0], ticks[ticks.length - breakTicks.length - 1]), interval, getValue), -correction);\r\n            if (getValue(to) - getValue(from) < interval && !b.gapSize) {\r\n                return result\r\n            }\r\n            if (b.gapSize) {\r\n                return result.concat([b])\r\n            }\r\n            return result.concat([{\r\n                from: from,\r\n                to: to,\r\n                cumulativeWidth: b.cumulativeWidth\r\n            }])\r\n        }, [])\r\n    }\r\n}\r\n\r\nfunction numericGenerator(options) {\r\n    var floor = correctValueByInterval(getValue, mathFloor, getValue);\r\n    var ceil = correctValueByInterval(getValue, mathCeil, getValue);\r\n    var calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, getValue);\r\n    return generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, getValue, calculateTicks(addInterval, correctMinValueByEndOnTick(floor, ceil, resolveEndOnTick, options.endOnTick), adjustInterval, resolveEndOnTick), calculateMinorTicks(getValue, addInterval, floor, addInterval, getValue), getScaleBreaksProcessor(getValue, getValue, function(value, correction) {\r\n        return value + correction\r\n    }))\r\n}\r\nvar correctValueByIntervalLog = function(post, getRound, getValue) {\r\n    return function(value, interval) {\r\n        return (0, _math.sign)(value) * (0, _math.adjust)(post(getRound(value)((0, _math.adjust)(getValue(value) / interval)) * interval))\r\n    }\r\n};\r\n\r\nfunction logarithmicGenerator(options) {\r\n    var base = options.logBase;\r\n    var raise = raiseTo(base, options.allowNegatives, options.linearThreshold);\r\n    var log = getLogValue(base, options.allowNegatives, options.linearThreshold);\r\n    var absLog = logAbsValue(base);\r\n    var absRaise = mathRaiseTo(base);\r\n    var absFloor = function(value) {\r\n        return value < 0 ? mathCeil : mathFloor\r\n    };\r\n    var absCeil = function(value) {\r\n        return value < 0 ? mathFloor : mathCeil\r\n    };\r\n    var floor = correctValueByIntervalLog(absRaise, absFloor, absLog);\r\n    var ceil = correctValueByIntervalLog(absRaise, absCeil, absLog);\r\n    var ceilNumber = correctValueByInterval(getValue, mathCeil, getValue);\r\n    return generator(options, getBusinessDeltaLog(base, options.allowNegatives, options.linearThreshold), getCalculateTickIntervalLog(options.skipCalculationLimits), calculateMinorTickInterval, getTickIntervalByCustomTicks(log, getValue), getTickIntervalByCustomTicks(getValue, getValue), getValue, calculateTicks(addIntervalLog(log, raise), correctMinValueByEndOnTick(floor, ceil, resolveEndOnTickLog(base), options.endOnTick), getAdjustIntervalLog(options.skipCalculationLimits), resolveEndOnTickLog(base)), calculateMinorTicks(function(_, tick, prevTick, factor) {\r\n        return Math.max(Math.abs(tick), Math.abs(prevTick)) / factor\r\n    }, addInterval, floor, ceilNumber, ceil), getScaleBreaksProcessor(getValue, log, function(value, correction) {\r\n        return raise(log(value) + correction)\r\n    }))\r\n}\r\n\r\nfunction dateGenerator(options) {\r\n    function floor(value, interval) {\r\n        var floorNumber = correctValueByInterval(getValue, mathFloor, getValue);\r\n        var intervalObject = (0, _type.isString)(interval) ? _date.default.getDateIntervalByString(interval.toLowerCase()) : interval;\r\n        var divider = dateToMilliseconds(interval);\r\n        if (intervalObject.days % 7 === 0 || interval.quarters) {\r\n            intervalObject = adjustIntervalDateTime(divider)\r\n        }\r\n        var correctDateWithUnitBeginning = function(v) {\r\n            return _date.default.correctDateWithUnitBeginning(v, intervalObject, null, options.firstDayOfWeek)\r\n        };\r\n        var floorAtStartDate = function(v) {\r\n            return new Date(mathFloor((v.getTime() - v.getTimezoneOffset() * MINUTE) / divider) * divider + v.getTimezoneOffset() * MINUTE)\r\n        };\r\n        value = correctDateWithUnitBeginning(value);\r\n        if (\"years\" in intervalObject) {\r\n            value.setFullYear(floorNumber(value.getFullYear(), intervalObject.years, 0))\r\n        } else {\r\n            if (\"quarters\" in intervalObject) {\r\n                value = correctDateWithUnitBeginning(floorAtStartDate(value))\r\n            } else {\r\n                if (\"months\" in intervalObject) {\r\n                    value.setMonth(floorNumber(value.getMonth(), intervalObject.months, 0))\r\n                } else {\r\n                    if (\"weeks\" in intervalObject || \"days\" in intervalObject) {\r\n                        value = correctDateWithUnitBeginning(floorAtStartDate(value))\r\n                    } else {\r\n                        if (\"hours\" in intervalObject) {\r\n                            value.setHours(floorNumber(value.getHours(), intervalObject.hours, 0))\r\n                        } else {\r\n                            if (\"minutes\" in intervalObject) {\r\n                                value.setMinutes(floorNumber(value.getMinutes(), intervalObject.minutes, 0))\r\n                            } else {\r\n                                if (\"seconds\" in intervalObject) {\r\n                                    value.setSeconds(floorNumber(value.getSeconds(), intervalObject.seconds, 0))\r\n                                } else {\r\n                                    if (\"milliseconds\" in intervalObject) {\r\n                                        value = floorAtStartDate(value)\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return value\r\n    }\r\n\r\n    function ceil(value, interval) {\r\n        var newValue = floor(value, interval);\r\n        while (value - newValue > 0) {\r\n            newValue = addIntervalDate(newValue, interval)\r\n        }\r\n        return newValue\r\n    }\r\n    var calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, _date.default.convertMillisecondsToDateUnits);\r\n    return generator(options, getBusinessDelta, calculateTickIntervalDateTime, calculateMinorTickIntervalDateTime, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, dateToMilliseconds, calculateTicks(addIntervalDate, correctMinValueByEndOnTick(floor, ceil, resolveEndOnTickDate, options.endOnTick), adjustIntervalDateTime, resolveEndOnTickDate), calculateMinorTicks(getValue, addIntervalDate, floor, addIntervalDate, getValue), getScaleBreaksProcessor(dateToMilliseconds, getValue, function(value, correction) {\r\n        return new Date(value.getTime() + correction)\r\n    }))\r\n}\r\nvar tickGenerator = function(options) {\r\n    var result;\r\n    if (options.rangeIsEmpty) {\r\n        result = dummyGenerator(options)\r\n    } else {\r\n        if (\"discrete\" === options.axisType) {\r\n            result = discreteGenerator(options)\r\n        } else {\r\n            if (\"logarithmic\" === options.axisType) {\r\n                result = logarithmicGenerator(options)\r\n            } else {\r\n                if (\"datetime\" === options.dataType) {\r\n                    result = dateGenerator(options)\r\n                } else {\r\n                    result = numericGenerator(options)\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return result\r\n};\r\nexports.tickGenerator = tickGenerator;\r\n","/**\r\n * DevExtreme (viz/sparklines/bullet.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base_sparkline = _interopRequireDefault(require(\"./base_sparkline\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TARGET_MIN_Y = .02;\r\nvar TARGET_MAX_Y = .98;\r\nvar BAR_VALUE_MIN_Y = .1;\r\nvar BAR_VALUE_MAX_Y = .9;\r\nvar DEFAULT_CANVAS_WIDTH = 300;\r\nvar DEFAULT_CANVAS_HEIGHT = 30;\r\nvar DEFAULT_HORIZONTAL_MARGIN = 1;\r\nvar DEFAULT_VERTICAL_MARGIN = 2;\r\nvar _Number = Number;\r\nvar _isFinite = isFinite;\r\nvar dxBullet = _base_sparkline.default.inherit({\r\n    _rootClassPrefix: \"dxb\",\r\n    _rootClass: \"dxb-bullet\",\r\n    _themeSection: \"bullet\",\r\n    _defaultSize: {\r\n        width: DEFAULT_CANVAS_WIDTH,\r\n        height: DEFAULT_CANVAS_HEIGHT,\r\n        left: DEFAULT_HORIZONTAL_MARGIN,\r\n        right: DEFAULT_HORIZONTAL_MARGIN,\r\n        top: DEFAULT_VERTICAL_MARGIN,\r\n        bottom: DEFAULT_VERTICAL_MARGIN\r\n    },\r\n    _disposeWidgetElements: function() {\r\n        delete this._zeroLevelPath;\r\n        delete this._targetPath;\r\n        delete this._barValuePath\r\n    },\r\n    _cleanWidgetElements: function() {\r\n        this._zeroLevelPath.remove();\r\n        this._targetPath.remove();\r\n        this._barValuePath.remove()\r\n    },\r\n    _drawWidgetElements: function() {\r\n        this._drawBullet();\r\n        this._drawn()\r\n    },\r\n    _createHtmlElements: function() {\r\n        var renderer = this._renderer;\r\n        this._zeroLevelPath = renderer.path(void 0, \"line\").attr({\r\n            \"class\": \"dxb-zero-level\",\r\n            \"stroke-linecap\": \"square\"\r\n        });\r\n        this._targetPath = renderer.path(void 0, \"line\").attr({\r\n            \"class\": \"dxb-target\",\r\n            \"stroke-linecap\": \"square\"\r\n        });\r\n        this._barValuePath = renderer.path(void 0, \"line\").attr({\r\n            \"class\": \"dxb-bar-value\",\r\n            \"stroke-linecap\": \"square\"\r\n        })\r\n    },\r\n    _prepareOptions: function() {\r\n        var that = this;\r\n        var options;\r\n        var startScaleValue;\r\n        var endScaleValue;\r\n        var level;\r\n        var value;\r\n        var target;\r\n        that._allOptions = options = that.callBase();\r\n        var isValueUndefined = void 0 === that._allOptions.value;\r\n        var isTargetUndefined = void 0 === that._allOptions.target;\r\n        that._tooltipEnabled = !(isValueUndefined && isTargetUndefined);\r\n        if (isValueUndefined) {\r\n            that._allOptions.value = 0\r\n        }\r\n        if (isTargetUndefined) {\r\n            that._allOptions.target = 0\r\n        }\r\n        options.value = value = _Number(options.value);\r\n        options.target = target = _Number(options.target);\r\n        if (void 0 === that._allOptions.startScaleValue) {\r\n            that._allOptions.startScaleValue = target < value ? target : value;\r\n            that._allOptions.startScaleValue = that._allOptions.startScaleValue < 0 ? that._allOptions.startScaleValue : 0\r\n        }\r\n        if (void 0 === that._allOptions.endScaleValue) {\r\n            that._allOptions.endScaleValue = target > value ? target : value\r\n        }\r\n        options.startScaleValue = startScaleValue = _Number(options.startScaleValue);\r\n        options.endScaleValue = endScaleValue = _Number(options.endScaleValue);\r\n        if (endScaleValue < startScaleValue) {\r\n            level = endScaleValue;\r\n            that._allOptions.endScaleValue = startScaleValue;\r\n            that._allOptions.startScaleValue = level;\r\n            that._allOptions.inverted = true\r\n        }\r\n    },\r\n    _updateRange: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        that._ranges = {\r\n            arg: {\r\n                invert: options.rtlEnabled ? !options.inverted : options.inverted,\r\n                min: options.startScaleValue,\r\n                max: options.endScaleValue,\r\n                axisType: \"continuous\",\r\n                dataType: \"numeric\"\r\n            },\r\n            val: {\r\n                min: 0,\r\n                max: 1,\r\n                axisType: \"continuous\",\r\n                dataType: \"numeric\"\r\n            }\r\n        }\r\n    },\r\n    _drawBullet: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var isValidBounds = options.startScaleValue !== options.endScaleValue;\r\n        var isValidMin = _isFinite(options.startScaleValue);\r\n        var isValidMax = _isFinite(options.endScaleValue);\r\n        var isValidValue = _isFinite(options.value);\r\n        var isValidTarget = _isFinite(options.target);\r\n        if (isValidBounds && isValidMax && isValidMin && isValidTarget && isValidValue) {\r\n            this._drawBarValue();\r\n            this._drawTarget();\r\n            this._drawZeroLevel()\r\n        }\r\n    },\r\n    _getTargetParams: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var translatorY = that._valueAxis.getTranslator();\r\n        var x = that._argumentAxis.getTranslator().translate(options.target);\r\n        return {\r\n            points: [x, translatorY.translate(TARGET_MIN_Y), x, translatorY.translate(TARGET_MAX_Y)],\r\n            stroke: options.targetColor,\r\n            \"stroke-width\": options.targetWidth\r\n        }\r\n    },\r\n    _getBarValueParams: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var translatorX = that._argumentAxis.getTranslator();\r\n        var translatorY = that._valueAxis.getTranslator();\r\n        var startLevel = options.startScaleValue;\r\n        var endLevel = options.endScaleValue;\r\n        var value = options.value;\r\n        var y2 = translatorY.translate(BAR_VALUE_MIN_Y);\r\n        var y1 = translatorY.translate(BAR_VALUE_MAX_Y);\r\n        var x1;\r\n        var x2;\r\n        if (value > 0) {\r\n            x1 = startLevel <= 0 ? 0 : startLevel;\r\n            x2 = value >= endLevel ? endLevel : value < x1 ? x1 : value\r\n        } else {\r\n            x1 = endLevel >= 0 ? 0 : endLevel;\r\n            x2 = value < startLevel ? startLevel : value > x1 ? x1 : value\r\n        }\r\n        x1 = translatorX.translate(x1);\r\n        x2 = translatorX.translate(x2);\r\n        return {\r\n            points: [x1, y1, x2, y1, x2, y2, x1, y2],\r\n            fill: options.color\r\n        }\r\n    },\r\n    _getCorrectCanvas: function() {\r\n        return this._canvas\r\n    },\r\n    _getZeroLevelParams: function() {\r\n        var that = this;\r\n        var translatorY = that._valueAxis.getTranslator();\r\n        var x = that._argumentAxis.getTranslator().translate(0);\r\n        return {\r\n            points: [x, translatorY.translate(TARGET_MIN_Y), x, translatorY.translate(TARGET_MAX_Y)],\r\n            stroke: that._allOptions.targetColor,\r\n            \"stroke-width\": 1\r\n        }\r\n    },\r\n    _drawZeroLevel: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        if (0 > options.endScaleValue || 0 < options.startScaleValue || !options.showZeroLevel) {\r\n            return\r\n        }\r\n        that._zeroLevelPath.attr(that._getZeroLevelParams()).sharp().append(that._renderer.root)\r\n    },\r\n    _drawTarget: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var target = options.target;\r\n        if (target > options.endScaleValue || target < options.startScaleValue || !options.showTarget) {\r\n            return\r\n        }\r\n        that._targetPath.attr(that._getTargetParams()).sharp().append(that._renderer.root)\r\n    },\r\n    _drawBarValue: function() {\r\n        this._barValuePath.attr(this._getBarValueParams()).append(this._renderer.root)\r\n    },\r\n    _getTooltipCoords: function() {\r\n        var canvas = this._canvas;\r\n        var rootOffset = this._renderer.getRootOffset();\r\n        var bBox = this._barValuePath.getBBox();\r\n        return {\r\n            x: bBox.x + bBox.width / 2 + rootOffset.left,\r\n            y: canvas.height / 2 + rootOffset.top\r\n        }\r\n    },\r\n    _getTooltipData: function() {\r\n        var that = this;\r\n        var tooltip = that._tooltip;\r\n        var options = that._allOptions;\r\n        var value = options.value;\r\n        var target = options.target;\r\n        var valueText = tooltip.formatValue(value);\r\n        var targetText = tooltip.formatValue(target);\r\n        return {\r\n            originalValue: value,\r\n            originalTarget: target,\r\n            value: valueText,\r\n            target: targetText,\r\n            valueText: [\"Actual Value:\", valueText, \"Target Value:\", targetText]\r\n        }\r\n    },\r\n    _isTooltipEnabled: function() {\r\n        return this._tooltipEnabled\r\n    }\r\n});\r\n(0, _iterator.each)([\"color\", \"targetColor\", \"targetWidth\", \"showTarget\", \"showZeroLevel\", \"value\", \"target\", \"startScaleValue\", \"endScaleValue\"], function(_, name) {\r\n    dxBullet.prototype._optionChangesMap[name] = \"OPTIONS\"\r\n});\r\n(0, _component_registrator.default)(\"dxBullet\", dxBullet);\r\nvar _default = dxBullet;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.selection.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.selection\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TREELIST_SELECT_ALL_CLASS = \"dx-treelist-select-all\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-select-checkbox\";\r\nvar originalRowClick = _uiGrid_core.default.extenders.views.rowsView._rowClick;\r\nvar originalHandleDataChanged = _uiGrid_core.default.extenders.controllers.data._handleDataChanged;\r\nvar nodeExists = function(array, currentKey) {\r\n    return !!array.filter(function(key) {\r\n        return key === currentKey\r\n    }).length\r\n};\r\n_uiTree_list.default.registerModule(\"selection\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n    defaultOptions: function() {\r\n        return (0, _extend.extend)(true, _uiGrid_core.default.defaultOptions(), {\r\n            selection: {\r\n                showCheckBoxesMode: \"always\",\r\n                recursive: false\r\n            }\r\n        })\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                _handleDataChanged: function(e) {\r\n                    var selectionController = this.getController(\"selection\");\r\n                    var isRecursiveSelection = selectionController.isRecursiveSelection();\r\n                    if (isRecursiveSelection && (!e || \"updateSelectionState\" !== e.changeType)) {\r\n                        selectionController.updateSelectionState({\r\n                            selectedItemKeys: this.option(\"selectedRowKeys\")\r\n                        })\r\n                    }\r\n                    originalHandleDataChanged.apply(this, arguments)\r\n                },\r\n                loadDescendants: function() {\r\n                    var that = this;\r\n                    var d = that.callBase.apply(that, arguments);\r\n                    var selectionController = that.getController(\"selection\");\r\n                    var isRecursiveSelection = selectionController.isRecursiveSelection();\r\n                    if (isRecursiveSelection) {\r\n                        d.done(function() {\r\n                            selectionController.updateSelectionState({\r\n                                selectedItemKeys: that.option(\"selectedRowKeys\")\r\n                            })\r\n                        })\r\n                    }\r\n                    return d\r\n                }\r\n            },\r\n            selection: {\r\n                init: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    this._selectionStateByKey = {}\r\n                },\r\n                _getSelectionConfig: function() {\r\n                    var _arguments = arguments,\r\n                        _this = this;\r\n                    var config = this.callBase.apply(this, arguments);\r\n                    var plainItems = config.plainItems;\r\n                    config.plainItems = function(all) {\r\n                        if (all) {\r\n                            return _this._dataController.getCachedStoreData() || []\r\n                        }\r\n                        return plainItems.apply(_this, _arguments).map(function(item) {\r\n                            return item.data\r\n                        })\r\n                    };\r\n                    config.isItemSelected = function(item) {\r\n                        var key = _this._dataController.keyOf(item);\r\n                        return _this.isRowSelected(key)\r\n                    };\r\n                    config.isSelectableItem = function() {\r\n                        return true\r\n                    };\r\n                    config.getItemData = function(item) {\r\n                        return item\r\n                    };\r\n                    return config\r\n                },\r\n                renderSelectCheckBoxContainer: function($container, model) {\r\n                    var that = this;\r\n                    var rowsView = that.component.getView(\"rowsView\");\r\n                    $container.addClass(CELL_FOCUS_DISABLED_CLASS);\r\n                    var $checkbox = rowsView._renderSelectCheckBox($container, {\r\n                        value: model.row.isSelected,\r\n                        row: model.row,\r\n                        column: model.column\r\n                    });\r\n                    rowsView._attachCheckBoxClickEvent($checkbox)\r\n                },\r\n                _updateSelectColumn: _common.noop,\r\n                _getSelectAllNodeKeys: function() {\r\n                    var component = this.component;\r\n                    var root = component.getRootNode();\r\n                    var cache = {};\r\n                    var keys = [];\r\n                    var isRecursiveSelection = this.isRecursiveSelection();\r\n                    root && _uiTree_list.default.foreachNodes(root.children, function(node) {\r\n                        if (void 0 !== node.key && (node.visible || isRecursiveSelection)) {\r\n                            keys.push(node.key)\r\n                        }\r\n                        if (!node.visible) {\r\n                            return true\r\n                        }\r\n                        return isRecursiveSelection ? false : component.isRowExpanded(node.key, cache)\r\n                    });\r\n                    return keys\r\n                },\r\n                isSelectAll: function() {\r\n                    var component = this.component;\r\n                    var visibleKeys = this._getSelectAllNodeKeys();\r\n                    var selectedVisibleKeys = visibleKeys.filter(function(key) {\r\n                        return component.isRowSelected(key)\r\n                    });\r\n                    if (!selectedVisibleKeys.length) {\r\n                        var hasIndeterminateState = visibleKeys.some(function(key) {\r\n                            return void 0 === component.isRowSelected(key)\r\n                        });\r\n                        return hasIndeterminateState ? void 0 : false\r\n                    } else {\r\n                        if (selectedVisibleKeys.length === visibleKeys.length) {\r\n                            return true\r\n                        }\r\n                    }\r\n                },\r\n                selectAll: function() {\r\n                    var that = this;\r\n                    var visibleKeys = that._getSelectAllNodeKeys().filter(function(key) {\r\n                        return !that.isRowSelected(key)\r\n                    });\r\n                    return that.selectRows(visibleKeys, true)\r\n                },\r\n                deselectAll: function() {\r\n                    var visibleKeys = this._getSelectAllNodeKeys();\r\n                    return this.deselectRows(visibleKeys)\r\n                },\r\n                selectedItemKeys: function(value, preserve, isDeselect, isSelectAll) {\r\n                    var that = this;\r\n                    var selectedRowKeys = that.option(\"selectedRowKeys\");\r\n                    var isRecursiveSelection = this.isRecursiveSelection();\r\n                    var normalizedArgs = isRecursiveSelection && that._normalizeSelectionArgs({\r\n                        keys: (0, _type.isDefined)(value) ? value : []\r\n                    }, !isDeselect);\r\n                    if (normalizedArgs && !(0, _common.equalByValue)(normalizedArgs.selectedRowKeys, selectedRowKeys)) {\r\n                        that._isSelectionNormalizing = true;\r\n                        return this.callBase(normalizedArgs.selectedRowKeys, false, false, false).always(function() {\r\n                            that._isSelectionNormalizing = false\r\n                        }).done(function(items) {\r\n                            normalizedArgs.selectedRowsData = items;\r\n                            that._fireSelectionChanged(normalizedArgs)\r\n                        })\r\n                    }\r\n                    return this.callBase(value, preserve, isDeselect, isSelectAll)\r\n                },\r\n                changeItemSelection: function(itemIndex, keyboardKeys) {\r\n                    var isRecursiveSelection = this.isRecursiveSelection();\r\n                    if (isRecursiveSelection && !keyboardKeys.shift) {\r\n                        var key = this._dataController.getKeyByRowIndex(itemIndex);\r\n                        return this.selectedItemKeys(key, true, this.isRowSelected(key))\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _updateParentSelectionState: function(node, isSelected) {\r\n                    var that = this;\r\n                    var state = isSelected;\r\n                    var parentNode = node.parent;\r\n                    if (parentNode) {\r\n                        if (parentNode.children.length > 1) {\r\n                            if (false === isSelected) {\r\n                                var hasSelectedState = parentNode.children.some(function(childNode, index, children) {\r\n                                    return that._selectionStateByKey[childNode.key]\r\n                                });\r\n                                state = hasSelectedState ? void 0 : false\r\n                            } else {\r\n                                if (true === isSelected) {\r\n                                    var hasNonSelectedState = parentNode.children.some(function(childNode) {\r\n                                        return !that._selectionStateByKey[childNode.key]\r\n                                    });\r\n                                    state = hasNonSelectedState ? void 0 : true\r\n                                }\r\n                            }\r\n                        }\r\n                        this._selectionStateByKey[parentNode.key] = state;\r\n                        if (parentNode.parent && parentNode.parent.level >= 0) {\r\n                            this._updateParentSelectionState(parentNode, state)\r\n                        }\r\n                    }\r\n                },\r\n                _updateChildrenSelectionState: function(node, isSelected) {\r\n                    var that = this;\r\n                    var children = node.children;\r\n                    children && children.forEach(function(childNode) {\r\n                        that._selectionStateByKey[childNode.key] = isSelected;\r\n                        if (childNode.children.length > 0) {\r\n                            that._updateChildrenSelectionState(childNode, isSelected)\r\n                        }\r\n                    })\r\n                },\r\n                _updateSelectionStateCore: function(keys, isSelected) {\r\n                    var dataController = this._dataController;\r\n                    for (var i = 0; i < keys.length; i++) {\r\n                        this._selectionStateByKey[keys[i]] = isSelected;\r\n                        var node = dataController.getNodeByKey(keys[i]);\r\n                        if (node) {\r\n                            this._updateParentSelectionState(node, isSelected);\r\n                            this._updateChildrenSelectionState(node, isSelected)\r\n                        }\r\n                    }\r\n                },\r\n                _getSelectedParentKeys: function(key, selectedItemKeys, useCash) {\r\n                    var selectedParentNode;\r\n                    var node = this._dataController.getNodeByKey(key);\r\n                    var parentNode = node && node.parent;\r\n                    var result = [];\r\n                    while (parentNode && parentNode.level >= 0) {\r\n                        result.unshift(parentNode.key);\r\n                        var isSelected = useCash ? !nodeExists(selectedItemKeys, parentNode.key) && this.isRowSelected(parentNode.key) : selectedItemKeys.indexOf(parentNode.key) >= 0;\r\n                        if (isSelected) {\r\n                            selectedParentNode = parentNode;\r\n                            result = this._getSelectedParentKeys(selectedParentNode.key, selectedItemKeys, useCash).concat(result);\r\n                            break\r\n                        } else {\r\n                            if (useCash) {\r\n                                break\r\n                            }\r\n                        }\r\n                        parentNode = parentNode.parent\r\n                    }\r\n                    return selectedParentNode && result || []\r\n                },\r\n                _getSelectedChildKeys: function(node, keysToIgnore) {\r\n                    var that = this;\r\n                    var childKeys = [];\r\n                    node && _uiTree_list.default.foreachNodes(node.children, function(childNode) {\r\n                        var ignoreKeyIndex = keysToIgnore.indexOf(childNode.key);\r\n                        if (ignoreKeyIndex < 0) {\r\n                            childKeys.push(childNode.key)\r\n                        }\r\n                        return ignoreKeyIndex > 0 || ignoreKeyIndex < 0 && void 0 === that._selectionStateByKey[childNode.key]\r\n                    });\r\n                    return childKeys\r\n                },\r\n                _normalizeParentKeys: function(key, args) {\r\n                    var that = this;\r\n                    var keysToIgnore = [key];\r\n                    var parentNodeKeys = that._getSelectedParentKeys(key, args.selectedRowKeys);\r\n                    if (parentNodeKeys.length) {\r\n                        keysToIgnore = keysToIgnore.concat(parentNodeKeys);\r\n                        keysToIgnore.forEach(function(key) {\r\n                            var index = args.selectedRowKeys.indexOf(key);\r\n                            if (index >= 0) {\r\n                                args.selectedRowKeys.splice(index, 1)\r\n                            }\r\n                        });\r\n                        var parentNode = that._dataController.getNodeByKey(parentNodeKeys[0]);\r\n                        var childKeys = that._getSelectedChildKeys(parentNode, keysToIgnore);\r\n                        args.selectedRowKeys = args.selectedRowKeys.concat(childKeys)\r\n                    }\r\n                },\r\n                _normalizeChildrenKeys: function(key, args) {\r\n                    var that = this;\r\n                    var node = that._dataController.getNodeByKey(key);\r\n                    node && node.children.forEach(function(childNode) {\r\n                        var index = args.selectedRowKeys.indexOf(childNode.key);\r\n                        if (index >= 0) {\r\n                            args.selectedRowKeys.splice(index, 1)\r\n                        }\r\n                        that._normalizeChildrenKeys(childNode.key, args)\r\n                    })\r\n                },\r\n                _normalizeSelectedRowKeysCore: function(keys, args, isSelect) {\r\n                    var that = this;\r\n                    keys.forEach(function(key) {\r\n                        if (that.isRowSelected(key) === isSelect) {\r\n                            return\r\n                        }\r\n                        that._normalizeChildrenKeys(key, args);\r\n                        var index = args.selectedRowKeys.indexOf(key);\r\n                        if (isSelect) {\r\n                            if (index < 0) {\r\n                                args.selectedRowKeys.push(key)\r\n                            }\r\n                            args.currentSelectedRowKeys.push(key)\r\n                        } else {\r\n                            if (index >= 0) {\r\n                                args.selectedRowKeys.splice(index, 1)\r\n                            }\r\n                            args.currentDeselectedRowKeys.push(key);\r\n                            that._normalizeParentKeys(key, args)\r\n                        }\r\n                    })\r\n                },\r\n                _normalizeSelectionArgs: function(args, isSelect) {\r\n                    var result;\r\n                    var keys = Array.isArray(args.keys) ? args.keys : [args.keys];\r\n                    var selectedRowKeys = this.option(\"selectedRowKeys\") || [];\r\n                    if (keys.length) {\r\n                        result = {\r\n                            currentSelectedRowKeys: [],\r\n                            currentDeselectedRowKeys: [],\r\n                            selectedRowKeys: selectedRowKeys.slice(0)\r\n                        };\r\n                        this._normalizeSelectedRowKeysCore(keys, result, isSelect)\r\n                    }\r\n                    return result\r\n                },\r\n                _updateSelectedItems: function(args) {\r\n                    this.updateSelectionState(args);\r\n                    this.callBase(args)\r\n                },\r\n                _fireSelectionChanged: function() {\r\n                    if (!this._isSelectionNormalizing) {\r\n                        this.callBase.apply(this, arguments)\r\n                    }\r\n                },\r\n                _isModeLeavesOnly: function(mode) {\r\n                    return \"leavesOnly\" === mode\r\n                },\r\n                _getAllSelectedRowKeys: function(parentKeys) {\r\n                    var that = this;\r\n                    var result = [];\r\n                    parentKeys.forEach(function(key) {\r\n                        var insertIndex = result.length;\r\n                        var parentKeys = that._getSelectedParentKeys(key, result, true);\r\n                        var childKeys = that._dataController.getChildNodeKeys(key);\r\n                        result.splice.apply(result, [insertIndex, 0].concat(parentKeys));\r\n                        result.push(key);\r\n                        result = result.concat(childKeys)\r\n                    });\r\n                    return result\r\n                },\r\n                _getParentSelectedRowKeys: function(keys) {\r\n                    var that = this;\r\n                    var result = [];\r\n                    keys.forEach(function(key) {\r\n                        var parentKeys = that._getSelectedParentKeys(key, keys);\r\n                        !parentKeys.length && result.push(key)\r\n                    });\r\n                    return result\r\n                },\r\n                _getLeafSelectedRowKeys: function(keys) {\r\n                    var that = this;\r\n                    var result = [];\r\n                    var dataController = that._dataController;\r\n                    keys.forEach(function(key) {\r\n                        var node = dataController.getNodeByKey(key);\r\n                        node && !node.hasChildren && result.push(key)\r\n                    });\r\n                    return result\r\n                },\r\n                isRecursiveSelection: function() {\r\n                    var selectionMode = this.option(\"selection.mode\");\r\n                    var isRecursive = this.option(\"selection.recursive\");\r\n                    return \"multiple\" === selectionMode && isRecursive\r\n                },\r\n                updateSelectionState: function(options) {\r\n                    var removedItemKeys = options.removedItemKeys || [];\r\n                    var selectedItemKeys = options.selectedItemKeys || [];\r\n                    this._updateSelectionStateCore(removedItemKeys, false);\r\n                    this._updateSelectionStateCore(selectedItemKeys, true)\r\n                },\r\n                isRowSelected: function(key) {\r\n                    var result = this.callBase.apply(this, arguments);\r\n                    var isRecursiveSelection = this.isRecursiveSelection();\r\n                    if (!result && isRecursiveSelection) {\r\n                        if (key in this._selectionStateByKey) {\r\n                            return this._selectionStateByKey[key]\r\n                        }\r\n                        return false\r\n                    }\r\n                    return result\r\n                },\r\n                getSelectedRowKeys: function(mode) {\r\n                    var that = this;\r\n                    if (!that._dataController) {\r\n                        return []\r\n                    }\r\n                    var selectedRowKeys = that.callBase.apply(that, arguments);\r\n                    if (mode) {\r\n                        if (this.isRecursiveSelection()) {\r\n                            selectedRowKeys = this._getAllSelectedRowKeys(selectedRowKeys)\r\n                        }\r\n                        if (\"all\" !== mode) {\r\n                            if (\"excludeRecursive\" === mode) {\r\n                                selectedRowKeys = that._getParentSelectedRowKeys(selectedRowKeys)\r\n                            } else {\r\n                                if (that._isModeLeavesOnly(mode)) {\r\n                                    selectedRowKeys = that._getLeafSelectedRowKeys(selectedRowKeys)\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    return selectedRowKeys\r\n                },\r\n                getSelectedRowsData: function(mode) {\r\n                    var that = this;\r\n                    var dataController = that._dataController;\r\n                    var selectedKeys = this.getSelectedRowKeys(mode) || [];\r\n                    var selectedRowsData = [];\r\n                    selectedKeys.forEach(function(key) {\r\n                        var node = dataController.getNodeByKey(key);\r\n                        node && selectedRowsData.push(node.data)\r\n                    });\r\n                    return selectedRowsData\r\n                },\r\n                refresh: function() {\r\n                    this._selectionStateByKey = {};\r\n                    return this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            columnHeadersView: {\r\n                _processTemplate: function(template, options) {\r\n                    var that = this;\r\n                    var resultTemplate;\r\n                    var renderingTemplate = this.callBase(template, options);\r\n                    var firstDataColumnIndex = that._columnsController.getFirstDataColumnIndex();\r\n                    if (renderingTemplate && \"header\" === options.rowType && options.column.index === firstDataColumnIndex) {\r\n                        resultTemplate = {\r\n                            render: function(options) {\r\n                                if (\"multiple\" === that.option(\"selection.mode\")) {\r\n                                    that.renderSelectAll(options.container, options.model)\r\n                                }\r\n                                renderingTemplate.render(options)\r\n                            }\r\n                        }\r\n                    } else {\r\n                        resultTemplate = renderingTemplate\r\n                    }\r\n                    return resultTemplate\r\n                },\r\n                renderSelectAll: function($cell, options) {\r\n                    $cell.addClass(TREELIST_SELECT_ALL_CLASS);\r\n                    this._renderSelectAllCheckBox($cell)\r\n                },\r\n                _isSortableElement: function($target) {\r\n                    return this.callBase($target) && !$target.closest(\".\" + SELECT_CHECKBOX_CLASS).length\r\n                }\r\n            },\r\n            rowsView: {\r\n                _renderIcons: function($iconContainer, options) {\r\n                    this.callBase.apply(this, arguments);\r\n                    if (\"multiple\" === this.option(\"selection.mode\")) {\r\n                        this.getController(\"selection\").renderSelectCheckBoxContainer($iconContainer, options)\r\n                    }\r\n                    return $iconContainer\r\n                },\r\n                _rowClick: function(e) {\r\n                    var $targetElement = (0, _renderer.default)(e.event.target);\r\n                    if (this.isExpandIcon($targetElement)) {\r\n                        this.callBase.apply(this, arguments)\r\n                    } else {\r\n                        originalRowClick.apply(this, arguments)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.mask.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _number_box = require(\"./number_box.caret\");\r\nvar _number2 = require(\"../../localization/ldml/number\");\r\nvar _number_box2 = _interopRequireDefault(require(\"./number_box.base\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar NUMBER_FORMATTER_NAMESPACE = \"dxNumberFormatter\";\r\nvar MOVE_FORWARD = 1;\r\nvar MOVE_BACKWARD = -1;\r\nvar MINUS = \"-\";\r\nvar MINUS_KEY = \"minus\";\r\nvar NUMPUD_MINUS_KEY_IE = \"Subtract\";\r\nvar INPUT_EVENT = \"input\";\r\nvar CARET_TIMEOUT_DURATION = _browser.default.msie ? 300 : 0;\r\nvar NumberBoxMask = _number_box2.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            useMaskBehavior: true,\r\n            format: null\r\n        })\r\n    },\r\n    _isDeleteKey: function(key) {\r\n        return \"del\" === key\r\n    },\r\n    _supportedKeys: function() {\r\n        if (!this._useMaskBehavior()) {\r\n            return this.callBase()\r\n        }\r\n        var that = this;\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            minus: that._revertSign.bind(that),\r\n            del: that._removeHandler.bind(that),\r\n            backspace: that._removeHandler.bind(that),\r\n            leftArrow: that._arrowHandler.bind(that, MOVE_BACKWARD),\r\n            rightArrow: that._arrowHandler.bind(that, MOVE_FORWARD),\r\n            home: that._moveCaretToBoundaryEventHandler.bind(that, MOVE_FORWARD),\r\n            enter: that._updateFormattedValue.bind(that),\r\n            end: that._moveCaretToBoundaryEventHandler.bind(that, MOVE_BACKWARD)\r\n        })\r\n    },\r\n    _focusInHandler: function(e) {\r\n        if (!this._preventNestedFocusEvent(e)) {\r\n            this.clearCaretTimeout();\r\n            this._caretTimeout = setTimeout(function() {\r\n                this._caretTimeout = null;\r\n                var caret = this._caret();\r\n                if (caret.start === caret.end && this._useMaskBehavior()) {\r\n                    var text = this._getInputVal();\r\n                    var decimalSeparator = _number.default.getDecimalSeparator();\r\n                    var decimalSeparatorIndex = text.indexOf(decimalSeparator);\r\n                    if (decimalSeparatorIndex >= 0) {\r\n                        this._caret({\r\n                            start: decimalSeparatorIndex,\r\n                            end: decimalSeparatorIndex\r\n                        })\r\n                    } else {\r\n                        this._moveCaretToBoundaryEventHandler(MOVE_BACKWARD, e)\r\n                    }\r\n                }\r\n            }.bind(this), CARET_TIMEOUT_DURATION)\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    _focusOutHandler: function(e) {\r\n        var shouldHandleEvent = !this._preventNestedFocusEvent(e);\r\n        if (shouldHandleEvent) {\r\n            this._focusOutOccurs = true;\r\n            if (this._useMaskBehavior()) {\r\n                this._updateFormattedValue()\r\n            }\r\n        }\r\n        this.callBase(e);\r\n        if (shouldHandleEvent) {\r\n            this._focusOutOccurs = false\r\n        }\r\n    },\r\n    _hasValueBeenChanged: function(inputValue) {\r\n        var format = this._getFormatPattern();\r\n        var value = this.option(\"value\");\r\n        var formatted = this._format(value, format) || \"\";\r\n        return formatted !== inputValue\r\n    },\r\n    _updateFormattedValue: function() {\r\n        var inputValue = this._getInputVal();\r\n        if (this._hasValueBeenChanged(inputValue)) {\r\n            this._updateParsedValue();\r\n            this._adjustParsedValue();\r\n            this._setTextByParsedValue();\r\n            if (this._parsedValue !== this.option(\"value\")) {\r\n                _events_engine.default.trigger(this._input(), \"change\")\r\n            }\r\n        }\r\n    },\r\n    _arrowHandler: function(step, e) {\r\n        if (!this._useMaskBehavior()) {\r\n            return\r\n        }\r\n        var text = this._getInputVal();\r\n        var format = this._getFormatPattern();\r\n        var nextCaret = (0, _number_box.getCaretWithOffset)(this._caret(), step);\r\n        if (!(0, _number_box.isCaretInBoundaries)(nextCaret, text, format)) {\r\n            nextCaret = step === MOVE_FORWARD ? nextCaret.end : nextCaret.start;\r\n            e.preventDefault();\r\n            this._caret((0, _number_box.getCaretInBoundaries)(nextCaret, text, format))\r\n        }\r\n    },\r\n    _moveCaretToBoundary: function(direction) {\r\n        var boundaries = (0, _number_box.getCaretBoundaries)(this._getInputVal(), this._getFormatPattern());\r\n        var newCaret = (0, _number_box.getCaretWithOffset)(direction === MOVE_FORWARD ? boundaries.start : boundaries.end, 0);\r\n        this._caret(newCaret)\r\n    },\r\n    _moveCaretToBoundaryEventHandler: function(direction, e) {\r\n        if (!this._useMaskBehavior() || e && e.shiftKey) {\r\n            return\r\n        }\r\n        this._moveCaretToBoundary(direction);\r\n        e && e.preventDefault()\r\n    },\r\n    _shouldMoveCaret: function(text, caret) {\r\n        var decimalSeparator = _number.default.getDecimalSeparator();\r\n        var isDecimalSeparatorNext = text.charAt(caret.end) === decimalSeparator;\r\n        var isZeroNext = \"0\" === text.charAt(caret.end);\r\n        var moveToFloat = (this._lastKey === decimalSeparator || \".\" === this._lastKey) && isDecimalSeparatorNext;\r\n        var zeroToZeroReplace = \"0\" === this._lastKey && isZeroNext;\r\n        return moveToFloat || zeroToZeroReplace\r\n    },\r\n    _getInputVal: function() {\r\n        return _number.default.convertDigits(this._input().val(), true)\r\n    },\r\n    _keyboardHandler: function(e) {\r\n        this.clearCaretTimeout();\r\n        this._lastKey = _number.default.convertDigits((0, _index.getChar)(e), true);\r\n        this._lastKeyName = (0, _index.normalizeKeyName)(e);\r\n        if (!this._shouldHandleKey(e.originalEvent)) {\r\n            return this.callBase(e)\r\n        }\r\n        var normalizedText = this._getInputVal();\r\n        var caret = this._caret();\r\n        var enteredChar = this._lastKeyName === MINUS_KEY ? \"\" : this._lastKey;\r\n        var newValue = this._tryParse(normalizedText, caret, enteredChar);\r\n        if (this._shouldMoveCaret(normalizedText, caret)) {\r\n            this._moveCaret(1);\r\n            e.originalEvent.preventDefault()\r\n        }\r\n        if (void 0 === newValue) {\r\n            if (this._lastKeyName !== MINUS_KEY) {\r\n                e.originalEvent.preventDefault()\r\n            }\r\n        } else {\r\n            this._parsedValue = newValue\r\n        }\r\n        return this.callBase(e)\r\n    },\r\n    _keyPressHandler: function(e) {\r\n        if (!this._useMaskBehavior()) {\r\n            this.callBase(e)\r\n        }\r\n    },\r\n    _removeHandler: function(e) {\r\n        var caret = this._caret();\r\n        var text = this._getInputVal();\r\n        var start = caret.start;\r\n        var end = caret.end;\r\n        this._lastKey = (0, _index.getChar)(e);\r\n        this._lastKeyName = (0, _index.normalizeKeyName)(e);\r\n        var isDeleteKey = this._isDeleteKey(this._lastKeyName);\r\n        var isBackspaceKey = !isDeleteKey;\r\n        if (start === end) {\r\n            var caretPosition = start;\r\n            var canDelete = isBackspaceKey && caretPosition > 0 || isDeleteKey && caretPosition < text.length;\r\n            if (canDelete) {\r\n                isDeleteKey && end++;\r\n                isBackspaceKey && start--\r\n            } else {\r\n                e.preventDefault();\r\n                return\r\n            }\r\n        }\r\n        var char = text.slice(start, end);\r\n        if (this._isStub(char)) {\r\n            this._moveCaret(isDeleteKey ? 1 : -1);\r\n            if (this._parsedValue < 0 || 1 / this._parsedValue === -(1 / 0)) {\r\n                this._revertSign(e);\r\n                this._setTextByParsedValue()\r\n            }\r\n            e.preventDefault();\r\n            return\r\n        }\r\n        var decimalSeparator = _number.default.getDecimalSeparator();\r\n        if (char === decimalSeparator) {\r\n            var decimalSeparatorIndex = text.indexOf(decimalSeparator);\r\n            if (this._isNonStubAfter(decimalSeparatorIndex + 1)) {\r\n                this._moveCaret(isDeleteKey ? 1 : -1);\r\n                e.preventDefault()\r\n            }\r\n            return\r\n        }\r\n        if (end - start < text.length) {\r\n            var editedText = this._replaceSelectedText(text, {\r\n                start: start,\r\n                end: end\r\n            }, \"\");\r\n            var noDigits = editedText.search(/[0-9]/) < 0;\r\n            if (noDigits && this._isValueInRange(0)) {\r\n                this._parsedValue = this._parsedValue < 0 || 1 / this._parsedValue === -(1 / 0) ? -0 : 0;\r\n                return\r\n            }\r\n        }\r\n        var valueAfterRemoving = this._tryParse(text, {\r\n            start: start,\r\n            end: end\r\n        }, \"\");\r\n        if (void 0 === valueAfterRemoving) {\r\n            e.preventDefault()\r\n        } else {\r\n            this._parsedValue = valueAfterRemoving\r\n        }\r\n    },\r\n    _isPercentFormat: function() {\r\n        var format = this._getFormatPattern();\r\n        var noEscapedFormat = format.replace(/'[^']+'/g, \"\");\r\n        return noEscapedFormat.indexOf(\"%\") !== -1\r\n    },\r\n    _parse: function(text, format) {\r\n        var formatOption = this.option(\"format\");\r\n        var isCustomParser = (0, _type.isFunction)(formatOption.parser);\r\n        var parser = isCustomParser ? formatOption.parser : _number.default.parse;\r\n        if (!isCustomParser) {\r\n            var formatPointIndex = format.indexOf(\".\");\r\n            var textPointIndex = text.indexOf(_number.default.getDecimalSeparator());\r\n            var formatIntegerPartLength = formatPointIndex !== -1 ? formatPointIndex : format.length;\r\n            var textIntegerPartLength = textPointIndex !== -1 ? textPointIndex : text.length;\r\n            if (textIntegerPartLength > formatIntegerPartLength && format.indexOf(\"#\") === -1) {\r\n                text = text.substr(textIntegerPartLength - formatIntegerPartLength)\r\n            }\r\n        }\r\n        return parser(text, format)\r\n    },\r\n    _format: function(value, format) {\r\n        var formatOption = this.option(\"format\");\r\n        var isCustomFormatter = (0, _type.isFunction)(null === formatOption || void 0 === formatOption ? void 0 : formatOption.formatter);\r\n        var formatter = isCustomFormatter ? formatOption.formatter : _number.default.format;\r\n        return formatter(value, format)\r\n    },\r\n    _getFormatPattern: function() {\r\n        if (!this._currentFormat) {\r\n            this._updateFormat()\r\n        }\r\n        return this._currentFormat\r\n    },\r\n    _updateFormat: function() {\r\n        var _this = this;\r\n        var format = this.option(\"format\");\r\n        var isCustomParser = (0, _type.isFunction)(null === format || void 0 === format ? void 0 : format.parser);\r\n        var isLDMLPattern = (0, _type.isString)(format) && (format.indexOf(\"0\") >= 0 || format.indexOf(\"#\") >= 0);\r\n        this._currentFormat = isCustomParser || isLDMLPattern ? format : (0, _number2.getFormat)(function(value) {\r\n            var text = _this._format(value, format);\r\n            return _number.default.convertDigits(text, true)\r\n        })\r\n    },\r\n    _getFormatForSign: function(text) {\r\n        var format = this._getFormatPattern();\r\n        if ((0, _type.isString)(format)) {\r\n            var signParts = format.split(\";\");\r\n            var sign = _number.default.getSign(text, format);\r\n            signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n            return sign < 0 ? signParts[1] : signParts[0]\r\n        } else {\r\n            var _sign = _number.default.getSign(text);\r\n            return _sign < 0 ? \"-\" : \"\"\r\n        }\r\n    },\r\n    _removeStubs: function(text, excludeComma) {\r\n        var format = this._getFormatForSign(text);\r\n        var thousandsSeparator = _number.default.getThousandsSeparator();\r\n        var stubs = this._getStubs(format);\r\n        var result = text;\r\n        if (stubs.length) {\r\n            var prefixStubs = stubs[0];\r\n            var postfixRegex = new RegExp(\"(\" + (0, _common.escapeRegExp)(stubs[1] || \"\") + \")$\", \"g\");\r\n            var decoratorsRegex = new RegExp(\"[-\" + (0, _common.escapeRegExp)(excludeComma ? \"\" : thousandsSeparator) + \"]\", \"g\");\r\n            result = result.replace(prefixStubs, \"\").replace(postfixRegex, \"\").replace(decoratorsRegex, \"\")\r\n        }\r\n        return result\r\n    },\r\n    _getStubs: function(format) {\r\n        var regExpResult = /[^']([#0.,]+)/g.exec(format);\r\n        var pattern = regExpResult && regExpResult[0].trim();\r\n        return format.split(pattern).map(function(stub) {\r\n            return stub.replace(/'/g, \"\")\r\n        })\r\n    },\r\n    _truncateToPrecision: function(value, maxPrecision) {\r\n        if ((0, _type.isDefined)(value)) {\r\n            var strValue = value.toString();\r\n            var decimalSeparatorIndex = strValue.indexOf(\".\");\r\n            if (strValue && decimalSeparatorIndex > -1) {\r\n                var parsedValue = parseFloat(strValue.substr(0, decimalSeparatorIndex + maxPrecision + 1));\r\n                return isNaN(parsedValue) ? value : parsedValue\r\n            }\r\n        }\r\n        return value\r\n    },\r\n    _tryParse: function(text, selection, char) {\r\n        var editedText = this._replaceSelectedText(text, selection, char);\r\n        var format = this._getFormatPattern();\r\n        var isTextSelected = selection.start !== selection.end;\r\n        var parsedValue = this._getParsedValue(editedText, format);\r\n        var maxPrecision = !format.parser && this._getPrecisionLimits(editedText).max;\r\n        var isValueChanged = parsedValue !== this._parsedValue;\r\n        var decimalSeparator = _number.default.getDecimalSeparator();\r\n        var isDecimalPointRestricted = char === decimalSeparator && 0 === maxPrecision;\r\n        var isUselessCharRestricted = !isTextSelected && !isValueChanged && char !== MINUS && !this._isValueIncomplete(editedText) && this._isStub(char);\r\n        if (isDecimalPointRestricted || isUselessCharRestricted) {\r\n            return\r\n        }\r\n        if (\"\" === this._removeStubs(editedText)) {\r\n            parsedValue = Math.abs(0 * this._parsedValue)\r\n        }\r\n        if (isNaN(parsedValue)) {\r\n            return\r\n        }\r\n        var value = null === parsedValue ? this._parsedValue : parsedValue;\r\n        parsedValue = maxPrecision ? this._truncateToPrecision(value, maxPrecision) : parsedValue;\r\n        return !format.parser && this._isPercentFormat() ? parsedValue && parsedValue / 100 : parsedValue\r\n    },\r\n    _getParsedValue: function(text, format) {\r\n        var sign = _number.default.getSign(text, (null === format || void 0 === format ? void 0 : format.formatter) || format);\r\n        var textWithoutStubs = this._removeStubs(text, true);\r\n        var parsedValue = this._parse(textWithoutStubs, format);\r\n        var parsedValueSign = parsedValue < 0 ? -1 : 1;\r\n        var parsedValueWithSign = (0, _type.isNumeric)(parsedValue) && sign !== parsedValueSign ? sign * parsedValue : parsedValue;\r\n        return parsedValueWithSign\r\n    },\r\n    _isValueIncomplete: function(text) {\r\n        if (!this._useMaskBehavior()) {\r\n            return this.callBase(text)\r\n        }\r\n        var caret = this._caret();\r\n        var point = _number.default.getDecimalSeparator();\r\n        var pointIndex = text.indexOf(point);\r\n        var isCaretOnFloat = pointIndex >= 0 && pointIndex < caret.start;\r\n        var textParts = this._removeStubs(text, true).split(point);\r\n        if (!isCaretOnFloat || 2 !== textParts.length) {\r\n            return false\r\n        }\r\n        var floatLength = textParts[1].length;\r\n        var format = this._getFormatPattern();\r\n        var isCustomParser = !!format.parser;\r\n        var precision = !isCustomParser && this._getPrecisionLimits(this._getFormatPattern(), text);\r\n        var isPrecisionInRange = isCustomParser ? true : (0, _math.inRange)(floatLength, precision.min, precision.max);\r\n        var endsWithZero = \"0\" === textParts[1].charAt(floatLength - 1);\r\n        return isPrecisionInRange && (endsWithZero || !floatLength)\r\n    },\r\n    _isValueInRange: function(value) {\r\n        var min = (0, _common.ensureDefined)(this.option(\"min\"), -(1 / 0));\r\n        var max = (0, _common.ensureDefined)(this.option(\"max\"), 1 / 0);\r\n        return (0, _math.inRange)(value, min, max)\r\n    },\r\n    _setInputText: function(text) {\r\n        var normalizedText = _number.default.convertDigits(text, true);\r\n        var newCaret = (0, _number_box.getCaretAfterFormat)(this._getInputVal(), normalizedText, this._caret(), this._getFormatPattern());\r\n        this._input().val(text);\r\n        this._toggleEmptinessEventHandler();\r\n        this._formattedValue = text;\r\n        if (!this._focusOutOccurs) {\r\n            this._caret(newCaret)\r\n        }\r\n    },\r\n    _useMaskBehavior: function() {\r\n        return !!this.option(\"format\") && this.option(\"useMaskBehavior\")\r\n    },\r\n    _renderInputType: function() {\r\n        var isNumberType = \"number\" === this.option(\"mode\");\r\n        var isDesktop = \"desktop\" === _devices.default.real().deviceType;\r\n        if (this._useMaskBehavior() && isNumberType) {\r\n            this._setInputType(isDesktop || this._isSupportInputMode() ? \"text\" : \"tel\")\r\n        } else {\r\n            this.callBase()\r\n        }\r\n    },\r\n    _isChar: function(str) {\r\n        return (0, _type.isString)(str) && 1 === str.length\r\n    },\r\n    _moveCaret: function(offset) {\r\n        if (!offset) {\r\n            return\r\n        }\r\n        var newCaret = (0, _number_box.getCaretWithOffset)(this._caret(), offset);\r\n        var adjustedCaret = (0, _number_box.getCaretInBoundaries)(newCaret, this._getInputVal(), this._getFormatPattern());\r\n        this._caret(adjustedCaret)\r\n    },\r\n    _shouldHandleKey: function(e) {\r\n        var keyName = (0, _index.normalizeKeyName)(e);\r\n        var isSpecialChar = e.ctrlKey || e.shiftKey || e.altKey || !this._isChar(keyName);\r\n        var isMinusKey = keyName === MINUS_KEY;\r\n        var useMaskBehavior = this._useMaskBehavior();\r\n        return useMaskBehavior && !isSpecialChar && !isMinusKey\r\n    },\r\n    _renderInput: function() {\r\n        this.callBase();\r\n        this._renderFormatter()\r\n    },\r\n    _renderFormatter: function() {\r\n        this._clearCache();\r\n        this._detachFormatterEvents();\r\n        if (this._useMaskBehavior()) {\r\n            this._attachFormatterEvents()\r\n        }\r\n    },\r\n    _detachFormatterEvents: function() {\r\n        _events_engine.default.off(this._input(), \".\" + NUMBER_FORMATTER_NAMESPACE)\r\n    },\r\n    _isInputFromPaste: function(e) {\r\n        var inputType = e.originalEvent && e.originalEvent.inputType;\r\n        if ((0, _type.isDefined)(inputType)) {\r\n            return \"insertFromPaste\" === inputType\r\n        } else {\r\n            return this._isValuePasted\r\n        }\r\n    },\r\n    _attachFormatterEvents: function() {\r\n        var $input = this._input();\r\n        _events_engine.default.on($input, (0, _index.addNamespace)(INPUT_EVENT, NUMBER_FORMATTER_NAMESPACE), function(e) {\r\n            this._formatValue(e);\r\n            this._isValuePasted = false\r\n        }.bind(this));\r\n        if (_browser.default.msie && _browser.default.version < 12) {\r\n            _events_engine.default.on($input, (0, _index.addNamespace)(\"paste\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n                this._isValuePasted = true\r\n            }.bind(this))\r\n        }\r\n        _events_engine.default.on($input, (0, _index.addNamespace)(\"dxclick\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n            if (!this._caretTimeout) {\r\n                this._caretTimeout = setTimeout(function() {\r\n                    this._caret((0, _number_box.getCaretInBoundaries)(this._caret(), this._getInputVal(), this._getFormatPattern()))\r\n                }.bind(this), CARET_TIMEOUT_DURATION)\r\n            }\r\n        }.bind(this));\r\n        _events_engine.default.on($input, \"dxdblclick\", function() {\r\n            this.clearCaretTimeout()\r\n        }.bind(this))\r\n    },\r\n    clearCaretTimeout: function() {\r\n        clearTimeout(this._caretTimeout);\r\n        this._caretTimeout = null\r\n    },\r\n    _forceRefreshInputValue: function() {\r\n        if (!this._useMaskBehavior()) {\r\n            return this.callBase()\r\n        }\r\n    },\r\n    _isNonStubAfter: function(index, text) {\r\n        text = (text || this._getInputVal()).slice(index);\r\n        return text && !this._isStub(text, true)\r\n    },\r\n    _isStub: function(str, isString) {\r\n        var escapedDecimalSeparator = (0, _common.escapeRegExp)(_number.default.getDecimalSeparator());\r\n        var regExpString = \"^[^0-9\" + escapedDecimalSeparator + \"]+$\";\r\n        var stubRegExp = new RegExp(regExpString, \"g\");\r\n        return stubRegExp.test(str) && (isString || this._isChar(str))\r\n    },\r\n    _parseValue: function(text) {\r\n        if (!this._useMaskBehavior()) {\r\n            return this.callBase(text)\r\n        }\r\n        return this._parsedValue\r\n    },\r\n    _getPrecisionLimits: function(text) {\r\n        var currentFormat = this._getFormatForSign(text);\r\n        var floatPart = (currentFormat.split(\".\")[1] || \"\").replace(/[^#0]/g, \"\");\r\n        var minPrecision = floatPart.replace(/^(0*)#*/, \"$1\").length;\r\n        var maxPrecision = floatPart.length;\r\n        return {\r\n            min: minPrecision,\r\n            max: maxPrecision\r\n        }\r\n    },\r\n    _revertSign: function(e) {\r\n        if (!this._useMaskBehavior()) {\r\n            return\r\n        }\r\n        var caret = this._caret();\r\n        if (caret.start !== caret.end) {\r\n            if ((0, _index.normalizeKeyName)(e) === MINUS_KEY) {\r\n                this._applyRevertedSign(e, caret, true);\r\n                return\r\n            } else {\r\n                this._caret((0, _number_box.getCaretInBoundaries)(0, this._getInputVal(), this._getFormatPattern()))\r\n            }\r\n        }\r\n        this._applyRevertedSign(e, caret)\r\n    },\r\n    _applyRevertedSign: function(e, caret, preserveSelectedText) {\r\n        var newValue = -1 * (0, _common.ensureDefined)(this._parsedValue, null);\r\n        if (this._isValueInRange(newValue)) {\r\n            this._parsedValue = newValue;\r\n            if (preserveSelectedText) {\r\n                var format = this._getFormatPattern();\r\n                var previousText = this._getInputVal();\r\n                this._setTextByParsedValue();\r\n                e.preventDefault();\r\n                var currentText = this._getInputVal();\r\n                var offset = (0, _number_box.getCaretOffset)(previousText, currentText, format);\r\n                caret = (0, _number_box.getCaretWithOffset)(caret, offset);\r\n                var caretInBoundaries = (0, _number_box.getCaretInBoundaries)(caret, currentText, format);\r\n                if (_browser.default.msie) {\r\n                    clearTimeout(this._caretTimeout);\r\n                    this._caretTimeout = setTimeout(this._caret.bind(this, caretInBoundaries))\r\n                } else {\r\n                    this._caret(caretInBoundaries)\r\n                }\r\n            }\r\n            if (e.key === NUMPUD_MINUS_KEY_IE) {\r\n                _events_engine.default.trigger(this._input(), INPUT_EVENT)\r\n            }\r\n        }\r\n    },\r\n    _removeMinusFromText: function(text, caret) {\r\n        var isMinusPressed = this._lastKeyName === MINUS_KEY && text.charAt(caret.start - 1) === MINUS;\r\n        return isMinusPressed ? this._replaceSelectedText(text, {\r\n            start: caret.start - 1,\r\n            end: caret.start\r\n        }, \"\") : text\r\n    },\r\n    _setTextByParsedValue: function() {\r\n        var format = this._getFormatPattern();\r\n        var parsed = this._parseValue();\r\n        var formatted = this._format(parsed, format) || \"\";\r\n        this._setInputText(formatted)\r\n    },\r\n    _formatValue: function(e) {\r\n        var normalizedText = this._getInputVal();\r\n        var caret = this._caret();\r\n        var textWithoutMinus = this._removeMinusFromText(normalizedText, caret);\r\n        var wasMinusRemoved = textWithoutMinus !== normalizedText;\r\n        normalizedText = textWithoutMinus;\r\n        if (!this._isInputFromPaste(e) && this._isValueIncomplete(textWithoutMinus)) {\r\n            this._formattedValue = normalizedText;\r\n            if (wasMinusRemoved) {\r\n                this._setTextByParsedValue()\r\n            }\r\n            return\r\n        }\r\n        var textWasChanged = _number.default.convertDigits(this._formattedValue, true) !== normalizedText;\r\n        if (textWasChanged) {\r\n            var value = this._tryParse(normalizedText, caret, \"\");\r\n            if ((0, _type.isDefined)(value)) {\r\n                this._parsedValue = value\r\n            }\r\n        }\r\n        this._setTextByParsedValue()\r\n    },\r\n    _renderDisplayText: function() {\r\n        if (this._useMaskBehavior()) {\r\n            this._toggleEmptinessEventHandler()\r\n        } else {\r\n            this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    _renderValue: function() {\r\n        if (this._useMaskBehavior()) {\r\n            this._parsedValue = this.option(\"value\");\r\n            this._setTextByParsedValue()\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _updateParsedValue: function() {\r\n        var inputValue = this._getInputVal();\r\n        this._parsedValue = this._tryParse(inputValue, this._caret())\r\n    },\r\n    _adjustParsedValue: function() {\r\n        if (!this._useMaskBehavior()) {\r\n            return\r\n        }\r\n        var clearedText = this._removeStubs(this._getInputVal());\r\n        var parsedValue = clearedText ? this._parseValue() : null;\r\n        if (!(0, _type.isNumeric)(parsedValue)) {\r\n            this._parsedValue = parsedValue;\r\n            return\r\n        }\r\n        this._parsedValue = (0, _math.fitIntoRange)(parsedValue, this.option(\"min\"), this.option(\"max\"))\r\n    },\r\n    _valueChangeEventHandler: function(e) {\r\n        if (!this._useMaskBehavior()) {\r\n            return this.callBase(e)\r\n        }\r\n        var caret = this._caret();\r\n        this._saveValueChangeEvent(e);\r\n        this._lastKey = null;\r\n        this._lastKeyName = null;\r\n        this._updateParsedValue();\r\n        this._adjustParsedValue();\r\n        this.option(\"value\", this._parsedValue);\r\n        if (caret) {\r\n            this._caret(caret)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"format\":\r\n            case \"useMaskBehavior\":\r\n                this._updateFormat();\r\n                this._renderFormatter();\r\n                this._renderValue();\r\n                break;\r\n            case \"min\":\r\n            case \"max\":\r\n                this._adjustParsedValue();\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clearCache: function() {\r\n        delete this._formattedValue;\r\n        delete this._lastKey;\r\n        delete this._lastKeyName;\r\n        delete this._parsedValue;\r\n        delete this._focusOutOccurs;\r\n        clearTimeout(this._caretTimeout);\r\n        delete this._caretTimeout\r\n    },\r\n    _clean: function() {\r\n        this._clearCache();\r\n        this.callBase()\r\n    }\r\n});\r\nvar _default = NumberBoxMask;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../../core/element_data\");\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _element = require(\"../../../core/element\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _message = _interopRequireDefault(require(\"../../../localization/message\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _index = require(\"../../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../../events/pointer\"));\r\nvar _ui = _interopRequireDefault(require(\"../../widget/ui.errors\"));\r\nvar _click = require(\"../../../events/click\");\r\nvar _contextmenu = require(\"../../../events/contextmenu\");\r\nvar _drag = require(\"../../../events/drag\");\r\nvar _ui2 = _interopRequireDefault(require(\"../../scroll_view/ui.scrollable\"));\r\nvar _uiSchedulerWork_spaceGroupedStrategy = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy.horizontal\"));\r\nvar _uiSchedulerWork_spaceGroupedStrategy2 = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy.vertical\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"../ui.scheduler.table_creator\"));\r\nvar _uiSchedulerCurrent_time_shader = _interopRequireDefault(require(\"../shaders/ui.scheduler.current_time_shader.vertical\"));\r\nvar _appointmentDragBehavior = _interopRequireDefault(require(\"../appointmentDragBehavior\"));\r\nvar _constants = require(\"../constants\");\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\nvar _widgetObserver = _interopRequireDefault(require(\"../base/widgetObserver\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.virtual_scrolling\"));\r\nvar _view_data_provider = _interopRequireDefault(require(\"./view_data_provider\"));\r\nvar _layout = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.j\"));\r\nvar _title = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j\"));\r\nvar _layout2 = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/time_panel/layout.j\"));\r\nvar _virtual_selection_state = _interopRequireDefault(require(\"./virtual_selection_state\"));\r\nvar _cache = require(\"./cache\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar tableCreator = _uiScheduler.default.tableCreator;\r\nvar abstract = _widgetObserver.default.abstract;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar COMPONENT_CLASS = \"dx-scheduler-work-space\";\r\nvar GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-grouped\";\r\nvar VERTICAL_GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-vertical-grouped\";\r\nvar WORKSPACE_VERTICAL_GROUP_TABLE_CLASS = \"dx-scheduler-work-space-vertical-group-table\";\r\nvar WORKSPACE_WITH_BOTH_SCROLLS_CLASS = \"dx-scheduler-work-space-both-scrollbar\";\r\nvar WORKSPACE_WITH_COUNT_CLASS = \"dx-scheduler-work-space-count\";\r\nvar WORKSPACE_WITH_GROUP_BY_DATE_CLASS = \"dx-scheduler-work-space-group-by-date\";\r\nvar WORKSPACE_WITH_ODD_CELLS_CLASS = \"dx-scheduler-work-space-odd-cells\";\r\nvar TIME_PANEL_CLASS = \"dx-scheduler-time-panel\";\r\nvar TIME_PANEL_CELL_CLASS = \"dx-scheduler-time-panel-cell\";\r\nvar TIME_PANEL_ROW_CLASS = \"dx-scheduler-time-panel-row\";\r\nvar ALL_DAY_PANEL_CLASS = \"dx-scheduler-all-day-panel\";\r\nvar ALL_DAY_TABLE_CLASS = \"dx-scheduler-all-day-table\";\r\nvar ALL_DAY_CONTAINER_CLASS = \"dx-scheduler-all-day-appointments\";\r\nvar ALL_DAY_TITLE_CLASS = \"dx-scheduler-all-day-title\";\r\nvar ALL_DAY_TITLE_HIDDEN_CLASS = \"dx-scheduler-all-day-title-hidden\";\r\nvar ALL_DAY_TABLE_CELL_CLASS = \"dx-scheduler-all-day-table-cell\";\r\nvar ALL_DAY_TABLE_ROW_CLASS = \"dx-scheduler-all-day-table-row\";\r\nvar WORKSPACE_WITH_ALL_DAY_CLASS = \"dx-scheduler-work-space-all-day\";\r\nvar WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS = \"dx-scheduler-work-space-all-day-collapsed\";\r\nvar WORKSPACE_WITH_MOUSE_SELECTION_CLASS = \"dx-scheduler-work-space-mouse-selection\";\r\nvar HORIZONTAL_SIZES_CLASS = \"dx-scheduler-cell-sizes-horizontal\";\r\nvar VERTICAL_SIZES_CLASS = \"dx-scheduler-cell-sizes-vertical\";\r\nvar HEADER_PANEL_CLASS = \"dx-scheduler-header-panel\";\r\nvar HEADER_PANEL_CELL_CLASS = \"dx-scheduler-header-panel-cell\";\r\nvar HEADER_ROW_CLASS = \"dx-scheduler-header-row\";\r\nvar GROUP_ROW_CLASS = \"dx-scheduler-group-row\";\r\nvar GROUP_HEADER_CLASS = \"dx-scheduler-group-header\";\r\nvar GROUP_HEADER_CONTENT_CLASS = \"dx-scheduler-group-header-content\";\r\nvar DATE_TABLE_CLASS = \"dx-scheduler-date-table\";\r\nvar DATE_TABLE_CELL_CLASS = \"dx-scheduler-date-table-cell\";\r\nvar DATE_TABLE_ROW_CLASS = \"dx-scheduler-date-table-row\";\r\nvar DATE_TABLE_FOCUSED_CELL_CLASS = \"dx-scheduler-focused-cell\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-scheduler-virtual-row\";\r\nvar DATE_TABLE_DROPPABLE_CELL_CLASS = \"dx-scheduler-date-table-droppable-cell\";\r\nvar SCHEDULER_HEADER_SCROLLABLE_CLASS = \"dx-scheduler-header-scrollable\";\r\nvar SCHEDULER_SIDEBAR_SCROLLABLE_CLASS = \"dx-scheduler-sidebar-scrollable\";\r\nvar SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS = \"dx-scheduler-date-table-scrollable\";\r\nvar SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, \"dxSchedulerWorkSpace\");\r\nvar SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME = (0, _index.addNamespace)(_drag.enter, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXDROP_EVENT_NAME = (0, _index.addNamespace)(_drag.drop, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME = (0, _index.addNamespace)(_drag.leave, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXCLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.move, \"dxSchedulerDateTable\");\r\nvar CELL_DATA = \"dxCellData\";\r\nvar DATE_TABLE_CELL_BORDER = 1;\r\nvar DATE_TABLE_MIN_CELL_WIDTH = 75;\r\nvar DAY_MS = toMs(\"day\");\r\nvar HOUR_MS = toMs(\"hour\");\r\nvar SCHEDULER_DRAG_AND_DROP_SELECTOR = \".\".concat(DATE_TABLE_CLASS, \" td, .\").concat(ALL_DAY_TABLE_CLASS, \" td\");\r\nvar CELL_SELECTOR = \".\".concat(DATE_TABLE_CELL_CLASS, \", .\").concat(ALL_DAY_TABLE_CELL_CLASS);\r\nvar ScrollSemaphore = function() {\r\n    function ScrollSemaphore() {\r\n        _classCallCheck(this, ScrollSemaphore);\r\n        this.counter = 0\r\n    }\r\n    _createClass(ScrollSemaphore, [{\r\n        key: \"isFree\",\r\n        value: function() {\r\n            return 0 === this.counter\r\n        }\r\n    }, {\r\n        key: \"take\",\r\n        value: function() {\r\n            this.counter++\r\n        }\r\n    }, {\r\n        key: \"release\",\r\n        value: function() {\r\n            this.counter--;\r\n            if (this.counter < 0) {\r\n                this.counter = 0\r\n            }\r\n        }\r\n    }]);\r\n    return ScrollSemaphore\r\n}();\r\nvar formatWeekday = function(date) {\r\n    return _date2.default.getDayNames(\"abbreviated\")[date.getDay()]\r\n};\r\nvar SchedulerWorkSpace = function(_WidgetObserver) {\r\n    _inherits(SchedulerWorkSpace, _WidgetObserver);\r\n    var _super = _createSuper(SchedulerWorkSpace);\r\n\r\n    function SchedulerWorkSpace() {\r\n        _classCallCheck(this, SchedulerWorkSpace);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerWorkSpace, [{\r\n        key: \"_supportedKeys\",\r\n        value: function() {\r\n            var clickHandler = function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (this._selectedCells && this._selectedCells.length) {\r\n                    var $itemElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n                    var $cellElement = (0, _renderer.default)($itemElement.length ? $itemElement : this._selectedCells);\r\n                    e.target = this._selectedCells;\r\n                    this._showPopup = true;\r\n                    this._cellClickAction({\r\n                        event: e,\r\n                        cellElement: (0, _renderer.default)(this._selectedCells),\r\n                        cellData: this.getCellData($cellElement)\r\n                    })\r\n                }\r\n            };\r\n            var arrowPressHandler = function(e, cell) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                this._moveToCell(cell, e.shiftKey)\r\n            };\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_supportedKeys\", this).call(this), {\r\n                enter: clickHandler,\r\n                space: clickHandler,\r\n                downArrow: function(e) {\r\n                    var $cell = this._getCellFromNextRow(\"next\", e.shiftKey);\r\n                    arrowPressHandler.call(this, e, $cell)\r\n                },\r\n                upArrow: function(e) {\r\n                    var $cell = this._getCellFromNextRow(\"prev\", e.shiftKey);\r\n                    arrowPressHandler.call(this, e, $cell)\r\n                },\r\n                rightArrow: function(e) {\r\n                    var $rightCell = this._getCellFromNextColumn(\"next\", e.shiftKey);\r\n                    arrowPressHandler.call(this, e, $rightCell)\r\n                },\r\n                leftArrow: function(e) {\r\n                    var $leftCell = this._getCellFromNextColumn(\"prev\", e.shiftKey);\r\n                    arrowPressHandler.call(this, e, $leftCell)\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_dispose\",\r\n        value: function() {\r\n            var _this$virtualScrollin;\r\n            _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_dispose\", this).call(this);\r\n            null === (_this$virtualScrollin = this.virtualScrollingDispatcher) || void 0 === _this$virtualScrollin ? void 0 : _this$virtualScrollin.dispose();\r\n            this._disposeRenovatedComponents()\r\n        }\r\n    }, {\r\n        key: \"_isRTL\",\r\n        value: function() {\r\n            return this.option(\"rtlEnabled\")\r\n        }\r\n    }, {\r\n        key: \"_getFocusedCell\",\r\n        value: function() {\r\n            return this._$focusedCell || this._$dateTable.find(\".\" + DATE_TABLE_CELL_CLASS).eq(0)\r\n        }\r\n    }, {\r\n        key: \"_getAllFocusedCells\",\r\n        value: function() {\r\n            return this._selectedCells || this._$dateTable.find(\".\" + DATE_TABLE_CELL_CLASS).eq(0)\r\n        }\r\n    }, {\r\n        key: \"_getCellFromNextRow\",\r\n        value: function(direction) {\r\n            var $currentCell = this._$focusedCell;\r\n            if ((0, _type.isDefined)($currentCell)) {\r\n                var cellIndex = $currentCell.index();\r\n                var $row = $currentCell.parent();\r\n                var $cell = $row[direction]().children().eq(cellIndex);\r\n                $cell = this._checkForViewBounds($cell);\r\n                return $cell\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_checkForViewBounds\",\r\n        value: function($item) {\r\n            if (!$item.length) {\r\n                $item = this._$focusedCell\r\n            }\r\n            return $item\r\n        }\r\n    }, {\r\n        key: \"_getCellFromNextColumn\",\r\n        value: function(direction, isMultiSelection) {\r\n            var $focusedCell = this._$focusedCell;\r\n            if (!(0, _type.isDefined)($focusedCell)) {\r\n                return\r\n            }\r\n            var $nextCell;\r\n            var $row = $focusedCell.parent();\r\n            var nextColumnDirection = direction;\r\n            var isDirectionNext = \"next\" === direction;\r\n            var previousColumnDirection = isDirectionNext ? \"prev\" : \"next\";\r\n            var isRTL = this._isRTL();\r\n            var groupCount = this._getGroupCount();\r\n            var isHorizontalGrouping = this._isHorizontalGroupedWorkSpace();\r\n            var isGroupedByDate = this.isGroupedByDate();\r\n            var totalCellCount = this._getTotalCellCount(groupCount);\r\n            var rowCellCount = isMultiSelection && !isGroupedByDate ? this._getCellCount() : totalCellCount;\r\n            var lastIndexInRow = rowCellCount - 1;\r\n            var currentIndex = $focusedCell.index();\r\n            var step = isGroupedByDate && isMultiSelection ? groupCount : 1;\r\n            var isEdgeCell = this._isEdgeCell(isHorizontalGrouping ? totalCellCount - 1 : lastIndexInRow, currentIndex, step, direction);\r\n            var sign = isRTL ? 1 : -1;\r\n            var directionSign = isDirectionNext ? 1 : -1;\r\n            var resultingSign = sign * directionSign;\r\n            if (isEdgeCell || isMultiSelection && this._isGroupEndCell($focusedCell, direction)) {\r\n                var nextIndex = currentIndex - resultingSign * step + resultingSign * rowCellCount;\r\n                var rowDirection = isRTL ? previousColumnDirection : nextColumnDirection;\r\n                $nextCell = $row[rowDirection]().children().eq(nextIndex);\r\n                $nextCell = this._checkForViewBounds($nextCell)\r\n            } else {\r\n                $nextCell = $row.children().eq(currentIndex - resultingSign * step)\r\n            }\r\n            return $nextCell\r\n        }\r\n    }, {\r\n        key: \"_isEdgeCell\",\r\n        value: function(lastIndexInRow, cellIndex, step, direction) {\r\n            var isRTL = this._isRTL();\r\n            var isDirectionNext = \"next\" === direction;\r\n            var rightEdgeCellIndex = isRTL ? 0 : lastIndexInRow;\r\n            var leftEdgeCellIndex = isRTL ? lastIndexInRow : 0;\r\n            var edgeCellIndex = isDirectionNext ? rightEdgeCellIndex : leftEdgeCellIndex;\r\n            var isNextCellGreaterThanEdge = cellIndex + step > edgeCellIndex;\r\n            var isNextCellLessThanEdge = cellIndex - step < edgeCellIndex;\r\n            var isRightEdgeCell = isRTL ? isNextCellLessThanEdge : isNextCellGreaterThanEdge;\r\n            var isLeftEdgeCell = isRTL ? isNextCellGreaterThanEdge : isNextCellLessThanEdge;\r\n            return isDirectionNext ? isRightEdgeCell : isLeftEdgeCell\r\n        }\r\n    }, {\r\n        key: \"_isGroupEndCell\",\r\n        value: function($cell, direction) {\r\n            if (this.isGroupedByDate()) {\r\n                return false\r\n            }\r\n            var isDirectionNext = \"next\" === direction;\r\n            var cellsInRow = this._getCellCount();\r\n            var currentCellIndex = $cell.index();\r\n            var result = currentCellIndex % cellsInRow;\r\n            var endCell = isDirectionNext ? cellsInRow - 1 : 0;\r\n            var startCell = isDirectionNext ? 0 : cellsInRow - 1;\r\n            return this._isRTL() ? result === startCell : result === endCell\r\n        }\r\n    }, {\r\n        key: \"_moveToCell\",\r\n        value: function($cell, isMultiSelection) {\r\n            isMultiSelection = isMultiSelection && this.option(\"allowMultipleCellSelection\");\r\n            this._setSelectedAndFocusedCells($cell, isMultiSelection);\r\n            this._dateTableScrollable.scrollToElement($cell)\r\n        }\r\n    }, {\r\n        key: \"_setSelectedAndFocusedCells\",\r\n        value: function($cell, isMultiSelection) {\r\n            if (!(0, _type.isDefined)($cell) || !$cell.length) {\r\n                return\r\n            }\r\n            var updateViewData = this.isVirtualScrolling();\r\n            var $correctedCell = $cell;\r\n            if (isMultiSelection) {\r\n                $correctedCell = this._correctCellForGroup($cell)\r\n            }\r\n            if ($correctedCell.hasClass(DATE_TABLE_FOCUSED_CELL_CLASS)) {\r\n                return\r\n            }\r\n            this._setSelectedCells($correctedCell, isMultiSelection);\r\n            this._setFocusedCell($correctedCell, updateViewData)\r\n        }\r\n    }, {\r\n        key: \"_setFocusedCell\",\r\n        value: function($cell) {\r\n            var updateViewData = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n            this._releaseFocusedCell();\r\n            var $correctedCell = $cell;\r\n            if (updateViewData) {\r\n                var _this$_getCoordinates = this._getCoordinatesByCell($cell),\r\n                    rowIndex = _this$_getCoordinates.rowIndex,\r\n                    columnIndex = _this$_getCoordinates.columnIndex;\r\n                var isAllDayCell = this._hasAllDayClass($cell);\r\n                this.virtualSelectionState.setFocusedCell(rowIndex, columnIndex, isAllDayCell);\r\n                var focusedCell = this.virtualSelectionState.getFocusedCell(this._isVerticalGroupedWorkSpace());\r\n                var cellData = focusedCell.cellData,\r\n                    coordinates = focusedCell.coordinates;\r\n                var allDay = cellData.allDay;\r\n                $correctedCell = allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(coordinates.cellIndex) : this._dom_getDateCell(coordinates)\r\n            }\r\n            this._toggleFocusedCellClass(true, $correctedCell);\r\n            this._$focusedCell = $correctedCell\r\n        }\r\n    }, {\r\n        key: \"_setSelectedCells\",\r\n        value: function($firstCell, isMultiSelection) {\r\n            this._releaseSelectedCells();\r\n            this._selectedCells = [];\r\n            if (this.isVirtualScrolling()) {\r\n                this._setSelectedCellsInVirtualMode($firstCell, isMultiSelection)\r\n            } else {\r\n                this._setSelectedCellsInStandardMode($firstCell, isMultiSelection)\r\n            }\r\n            var $selectedCells = (0, _renderer.default)(this._selectedCells);\r\n            this._toggleFocusClass(true, $selectedCells);\r\n            this.setAria(\"label\", \"Add appointment\", $selectedCells);\r\n            var selectedCellData = this.getSelectedCellData().map(function(_ref) {\r\n                var startDate = _ref.startDate,\r\n                    endDate = _ref.endDate,\r\n                    allDay = _ref.allDay,\r\n                    groups = _ref.groups,\r\n                    groupIndex = _ref.groupIndex;\r\n                return {\r\n                    startDate: startDate,\r\n                    endDate: endDate,\r\n                    allDay: allDay,\r\n                    groups: groups,\r\n                    groupIndex: groupIndex || 0\r\n                }\r\n            });\r\n            this.option(\"selectedCellData\", selectedCellData);\r\n            this._selectionChangedAction({\r\n                selectedCellData: selectedCellData\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_setSelectedCellsInStandardMode\",\r\n        value: function($firstCell, isMultiSelection) {\r\n            if (isMultiSelection) {\r\n                var $previousCell = this._$prevCell;\r\n                var orientation = \"day\" === this.option(\"type\") && (!this.option(\"groups\").length || \"vertical\" === this.option(\"groupOrientation\")) ? \"vertical\" : \"horizontal\";\r\n                var $targetCells = this._getCellsBetween($firstCell, $previousCell, orientation);\r\n                this._selectedCells = $targetCells.toArray()\r\n            } else {\r\n                this._selectedCells = [$firstCell.get(0)];\r\n                this._$prevCell = $firstCell\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_setSelectedCellsInVirtualMode\",\r\n        value: function($firstCell, isMultiSelection) {\r\n            if (isMultiSelection) {\r\n                var _this$_getCoordinates2 = this._getCoordinatesByCell($firstCell),\r\n                    firstRow = _this$_getCoordinates2.rowIndex,\r\n                    firstColumn = _this$_getCoordinates2.columnIndex;\r\n                var isFirstAllDay = this._hasAllDayClass($firstCell);\r\n                var firstCell = {\r\n                    rowIndex: firstRow,\r\n                    columnIndex: firstColumn,\r\n                    allDay: isFirstAllDay\r\n                };\r\n                this.virtualSelectionState.setSelectedCells(firstCell)\r\n            } else {\r\n                this._selectedCells = [$firstCell.get(0)];\r\n                this._$prevCell = $firstCell;\r\n                var _this$_getCoordinates3 = this._getCoordinatesByCell($firstCell),\r\n                    rowIndex = _this$_getCoordinates3.rowIndex,\r\n                    columnIndex = _this$_getCoordinates3.columnIndex;\r\n                var isAllDayCell = this._hasAllDayClass($firstCell);\r\n                var _firstCell = {\r\n                    rowIndex: rowIndex,\r\n                    columnIndex: columnIndex,\r\n                    allDay: isAllDayCell\r\n                };\r\n                this.virtualSelectionState.setSelectedCells(_firstCell, _firstCell)\r\n            }\r\n            this._setSelectedCellsByCellData(this.virtualSelectionState.getSelectedCells())\r\n        }\r\n    }, {\r\n        key: \"_correctCellForGroup\",\r\n        value: function($cell) {\r\n            if (this.isVirtualScrolling()) {\r\n                var cellData = this.getCellData($cell);\r\n                var isValidFocusedCell = this.virtualSelectionState.isValidFocusedCell(cellData);\r\n                return isValidFocusedCell ? $cell : this._$focusedCell\r\n            }\r\n            var $focusedCell = this._$focusedCell;\r\n            var cellGroupIndex = this._getGroupIndexByCell($cell);\r\n            var focusedCellGroupIndex = this._getGroupIndexByCell($focusedCell);\r\n            var isDifferentTables = this._hasAllDayClass($cell) !== this._hasAllDayClass($focusedCell);\r\n            return focusedCellGroupIndex !== cellGroupIndex || isDifferentTables ? $focusedCell : $cell\r\n        }\r\n    }, {\r\n        key: \"_getCellsBetween\",\r\n        value: function($first, $last, direction) {\r\n            var isAllDayTable = this._hasAllDayClass($last);\r\n            var $cells = this._getCells(isAllDayTable, direction);\r\n            var firstIndex = $cells.index($first);\r\n            var lastIndex = $cells.index($last);\r\n            if (firstIndex > lastIndex) {\r\n                var buffer = firstIndex;\r\n                firstIndex = lastIndex;\r\n                lastIndex = buffer\r\n            }\r\n            $cells = $cells.slice(firstIndex, lastIndex + 1);\r\n            if (this._getGroupCount() > 1) {\r\n                var result = [];\r\n                var focusedGroupIndex = this._getGroupIndexByCell($first);\r\n                (0, _iterator.each)($cells, function(_, cell) {\r\n                    var groupIndex = this._getGroupIndexByCell((0, _renderer.default)(cell));\r\n                    if (focusedGroupIndex === groupIndex) {\r\n                        result.push(cell)\r\n                    }\r\n                }.bind(this));\r\n                $cells = (0, _renderer.default)(result)\r\n            }\r\n            return $cells\r\n        }\r\n    }, {\r\n        key: \"_hasAllDayClass\",\r\n        value: function($cell) {\r\n            return $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getGroupIndexByCell\",\r\n        value: function($cell) {\r\n            if (this.isVirtualScrolling()) {\r\n                var _this$_getCoordinates4 = this._getCoordinatesByCell($cell),\r\n                    rowIndex = _this$_getCoordinates4.rowIndex,\r\n                    columnIndex = _this$_getCoordinates4.columnIndex;\r\n                var isAllDayCell = $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS);\r\n                return this.viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell).groupIndex\r\n            }\r\n            return this._groupedStrategy.getGroupIndexByCell($cell)\r\n        }\r\n    }, {\r\n        key: \"_toggleFocusedCellClass\",\r\n        value: function(isFocused, $element) {\r\n            var $focusTarget = $element && $element.length ? $element : this._focusTarget();\r\n            $focusTarget.toggleClass(DATE_TABLE_FOCUSED_CELL_CLASS, isFocused)\r\n        }\r\n    }, {\r\n        key: \"_releaseSelectedAndFocusedCells\",\r\n        value: function() {\r\n            this._releaseFocusedCell();\r\n            this._releaseSelectedCells();\r\n            this.option(\"selectedCellData\", [])\r\n        }\r\n    }, {\r\n        key: \"_releaseFocusedCell\",\r\n        value: function() {\r\n            var $cell = this._$focusedCell;\r\n            if ((0, _type.isDefined)($cell) && $cell.length) {\r\n                this._toggleFocusedCellClass(false, $cell);\r\n                this.setAria(\"label\", void 0, $cell)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_releaseSelectedCells\",\r\n        value: function() {\r\n            var $cells = (0, _renderer.default)(this._selectedCells);\r\n            if ((0, _type.isDefined)($cells) && $cells.length) {\r\n                this._toggleFocusClass(false, $cells);\r\n                this.setAria(\"label\", void 0, $cells)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_focusInHandler\",\r\n        value: function(e) {\r\n            if ((0, _renderer.default)(e.target).is(this._focusTarget()) && false !== this._isCellClick) {\r\n                delete this._isCellClick;\r\n                delete this._contextMenuHandled;\r\n                _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_focusInHandler\", this).apply(this, arguments);\r\n                var $cell = this._getFocusedCell();\r\n                this._setSelectedAndFocusedCells($cell)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_focusOutHandler\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_focusOutHandler\", this).apply(this, arguments);\r\n            if (!this._contextMenuHandled) {\r\n                var _this$virtualSelectio;\r\n                this._releaseSelectedAndFocusedCells();\r\n                null === (_this$virtualSelectio = this.virtualSelectionState) || void 0 === _this$virtualSelectio ? void 0 : _this$virtualSelectio.releaseSelectedAndFocusedCells()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_focusTarget\",\r\n        value: function() {\r\n            return this.$element()\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                currentDate: new Date,\r\n                intervalCount: 1,\r\n                startDate: null,\r\n                firstDayOfWeek: void 0,\r\n                startDayHour: 0,\r\n                endDayHour: 24,\r\n                hoursInterval: .5,\r\n                activeStateEnabled: true,\r\n                hoverStateEnabled: true,\r\n                groups: [],\r\n                showAllDayPanel: true,\r\n                allDayExpanded: false,\r\n                onCellClick: null,\r\n                crossScrollingEnabled: false,\r\n                dataCellTemplate: null,\r\n                timeCellTemplate: null,\r\n                resourceCellTemplate: null,\r\n                dateCellTemplate: null,\r\n                allowMultipleCellSelection: true,\r\n                indicatorTime: new Date,\r\n                indicatorUpdateInterval: 5 * toMs(\"minute\"),\r\n                shadeUntilCurrentTime: true,\r\n                groupOrientation: \"horizontal\",\r\n                selectedCellData: [],\r\n                groupByDate: false,\r\n                scrolling: {\r\n                    mode: \"standard\"\r\n                },\r\n                renovateRender: false,\r\n                height: void 0\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            switch (args.name) {\r\n                case \"startDayHour\":\r\n                case \"endDayHour\":\r\n                    this.invoke(\"validateDayHours\");\r\n                    this._cleanWorkSpace();\r\n                    break;\r\n                case \"dateCellTemplate\":\r\n                case \"resourceCellTemplate\":\r\n                case \"dataCellTemplate\":\r\n                case \"timeCellTemplate\":\r\n                case \"hoursInterval\":\r\n                case \"firstDayOfWeek\":\r\n                case \"currentDate\":\r\n                case \"startDate\":\r\n                    this._cleanWorkSpace();\r\n                    break;\r\n                case \"groups\":\r\n                    this._cleanView();\r\n                    this._disposeRenovatedComponents();\r\n                    this._removeAllDayElements();\r\n                    this._initGrouping();\r\n                    this.repaint();\r\n                    break;\r\n                case \"groupOrientation\":\r\n                    this._initGroupedStrategy();\r\n                    this._createAllDayPanelElements();\r\n                    this._removeAllDayElements();\r\n                    this._cleanWorkSpace();\r\n                    this._toggleGroupByDateClass();\r\n                    break;\r\n                case \"showAllDayPanel\":\r\n                    if (this._isVerticalGroupedWorkSpace()) {\r\n                        this._cleanView();\r\n                        this._disposeRenovatedComponents();\r\n                        this._removeAllDayElements();\r\n                        this._initGrouping();\r\n                        this.repaint()\r\n                    } else {\r\n                        this._toggleAllDayVisibility()\r\n                    }\r\n                    break;\r\n                case \"allDayExpanded\":\r\n                    this._changeAllDayVisibility();\r\n                    this._attachTablesEvents();\r\n                    this.headerPanelOffsetRecalculate();\r\n                    this._updateScrollable();\r\n                    break;\r\n                case \"onSelectionChanged\":\r\n                    this._createSelectionChangedAction();\r\n                    break;\r\n                case \"onCellClick\":\r\n                    this._createCellClickAction();\r\n                    break;\r\n                case \"onCellContextMenu\":\r\n                    this._attachContextMenuEvent();\r\n                    break;\r\n                case \"intervalCount\":\r\n                    this._cleanWorkSpace();\r\n                    this._toggleWorkSpaceCountClass();\r\n                    this._toggleFixedScrollableClass();\r\n                    break;\r\n                case \"groupByDate\":\r\n                    this._cleanWorkSpace();\r\n                    this._toggleGroupByDateClass();\r\n                    break;\r\n                case \"crossScrollingEnabled\":\r\n                    this._toggleHorizontalScrollClass();\r\n                    this._dateTableScrollable.option(this._dateTableScrollableConfig());\r\n                    break;\r\n                case \"width\":\r\n                    _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_optionChanged\", this).call(this, args);\r\n                    this._dimensionChanged();\r\n                    break;\r\n                case \"allowMultipleCellSelection\":\r\n                    break;\r\n                case \"selectedCellData\":\r\n                    break;\r\n                case \"scrolling\":\r\n                    this.option(\"renovateRender\", this._isVirtualModeOn());\r\n                    break;\r\n                case \"renovateRender\":\r\n                    this._disposeRenovatedComponents();\r\n                    this.repaint();\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_cleanWorkSpace\",\r\n        value: function() {\r\n            this._cleanView();\r\n            this._toggleGroupedClass();\r\n            this._toggleWorkSpaceWithOddCells();\r\n            this._renderView()\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            this._headerSemaphore = new ScrollSemaphore;\r\n            this._sideBarSemaphore = new ScrollSemaphore;\r\n            this._dataTableSemaphore = new ScrollSemaphore;\r\n            this._viewDataProvider = null;\r\n            this._virtualSelectionState = null;\r\n            this._activeStateUnit = CELL_SELECTOR;\r\n            this._maxAllowedVerticalPosition = [];\r\n            this._maxAllowedPosition = [];\r\n            _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_init\", this).call(this);\r\n            this._initGrouping();\r\n            this._toggleHorizontalScrollClass();\r\n            this._toggleWorkSpaceCountClass();\r\n            this._toggleGroupByDateClass();\r\n            this._toggleWorkSpaceWithOddCells();\r\n            this.$element().addClass(COMPONENT_CLASS).addClass(this._getElementClass())\r\n        }\r\n    }, {\r\n        key: \"_initGrouping\",\r\n        value: function() {\r\n            this._initGroupedStrategy();\r\n            this._toggleGroupingDirectionClass();\r\n            this._toggleGroupByDateClass()\r\n        }\r\n    }, {\r\n        key: \"_initGroupedStrategy\",\r\n        value: function() {\r\n            var strategyName = this.option(\"groups\").length ? this.option(\"groupOrientation\") : this._getDefaultGroupStrategy();\r\n            var Strategy = \"vertical\" === strategyName ? _uiSchedulerWork_spaceGroupedStrategy2.default : _uiSchedulerWork_spaceGroupedStrategy.default;\r\n            this._groupedStrategy = new Strategy(this)\r\n        }\r\n    }, {\r\n        key: \"_getDefaultGroupStrategy\",\r\n        value: function() {\r\n            return \"horizontal\"\r\n        }\r\n    }, {\r\n        key: \"_isVerticalGroupedWorkSpace\",\r\n        value: function() {\r\n            return !!this.option(\"groups\").length && \"vertical\" === this.option(\"groupOrientation\")\r\n        }\r\n    }, {\r\n        key: \"_isHorizontalGroupedWorkSpace\",\r\n        value: function() {\r\n            return !!this.option(\"groups\").length && \"horizontal\" === this.option(\"groupOrientation\")\r\n        }\r\n    }, {\r\n        key: \"_toggleHorizontalScrollClass\",\r\n        value: function() {\r\n            this.$element().toggleClass(WORKSPACE_WITH_BOTH_SCROLLS_CLASS, this.option(\"crossScrollingEnabled\"))\r\n        }\r\n    }, {\r\n        key: \"_toggleGroupByDateClass\",\r\n        value: function() {\r\n            this.$element().toggleClass(WORKSPACE_WITH_GROUP_BY_DATE_CLASS, this.isGroupedByDate())\r\n        }\r\n    }, {\r\n        key: \"_toggleWorkSpaceCountClass\",\r\n        value: function() {\r\n            this.$element().toggleClass(WORKSPACE_WITH_COUNT_CLASS, this._isWorkSpaceWithCount())\r\n        }\r\n    }, {\r\n        key: \"_isWorkSpaceWithCount\",\r\n        value: function() {\r\n            return this.option(\"intervalCount\") > 1\r\n        }\r\n    }, {\r\n        key: \"_toggleWorkSpaceWithOddCells\",\r\n        value: function() {\r\n            this.$element().toggleClass(WORKSPACE_WITH_ODD_CELLS_CLASS, this._isWorkspaceWithOddCells())\r\n        }\r\n    }, {\r\n        key: \"_isWorkspaceWithOddCells\",\r\n        value: function() {\r\n            return .5 === this.option(\"hoursInterval\") && !this.isVirtualScrolling()\r\n        }\r\n    }, {\r\n        key: \"_toggleGroupingDirectionClass\",\r\n        value: function() {\r\n            this.$element().toggleClass(VERTICAL_GROUPED_WORKSPACE_CLASS, this._isVerticalGroupedWorkSpace())\r\n        }\r\n    }, {\r\n        key: \"_getRealGroupOrientation\",\r\n        value: function() {\r\n            return this._isVerticalGroupedWorkSpace() ? \"vertical\" : \"horizontal\"\r\n        }\r\n    }, {\r\n        key: \"_getTimePanelClass\",\r\n        value: function() {\r\n            return TIME_PANEL_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getDateTableClass\",\r\n        value: function() {\r\n            return DATE_TABLE_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getDateTableRowClass\",\r\n        value: function() {\r\n            return DATE_TABLE_ROW_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getDateTableCellClass\",\r\n        value: function(i, j) {\r\n            var cellClass = DATE_TABLE_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS + \" \" + VERTICAL_SIZES_CLASS;\r\n            return this._needApplyLastGroupCellClass() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1, i, j) : cellClass\r\n        }\r\n    }, {\r\n        key: \"_needApplyLastGroupCellClass\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_getGroupRowClass\",\r\n        value: function() {\r\n            return GROUP_ROW_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getGroupHeaderClass\",\r\n        value: function(i) {\r\n            var cellClass = GROUP_HEADER_CLASS;\r\n            return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1)\r\n        }\r\n    }, {\r\n        key: \"_getGroupHeaderContentClass\",\r\n        value: function() {\r\n            return GROUP_HEADER_CONTENT_CLASS\r\n        }\r\n    }, {\r\n        key: \"_initWorkSpaceUnits\",\r\n        value: function() {\r\n            this._$headerPanel = (0, _renderer.default)(\"<table>\");\r\n            this._$thead = (0, _renderer.default)(\"<thead>\").appendTo(this._$headerPanel);\r\n            this._$fixedContainer = (0, _renderer.default)(\"<div>\").addClass(_constants.FIXED_CONTAINER_CLASS);\r\n            this._$allDayContainer = (0, _renderer.default)(\"<div>\").addClass(ALL_DAY_CONTAINER_CLASS);\r\n            this._initAllDayPanelElements();\r\n            if (this.isRenovatedRender()) {\r\n                this.createRAllDayPanelElements()\r\n            } else {\r\n                this._createAllDayPanelElements()\r\n            }\r\n            this._$timePanel = (0, _renderer.default)(\"<table>\").addClass(this._getTimePanelClass());\r\n            this._$dateTable = (0, _renderer.default)(\"<table>\");\r\n            this._$groupTable = (0, _renderer.default)(\"<div>\").addClass(WORKSPACE_VERTICAL_GROUP_TABLE_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_initAllDayPanelElements\",\r\n        value: function() {\r\n            this._allDayTitles = [];\r\n            this._allDayTables = [];\r\n            this._allDayPanels = []\r\n        }\r\n    }, {\r\n        key: \"createRAllDayPanelElements\",\r\n        value: function() {\r\n            this._$allDayPanel = (0, _renderer.default)(\"<div>\");\r\n            this._$allDayTitle = (0, _renderer.default)(\"<div>\").appendTo(this.$element())\r\n        }\r\n    }, {\r\n        key: \"_createAllDayPanelElements\",\r\n        value: function() {\r\n            var groupCount = this._getGroupCount();\r\n            if (this._isVerticalGroupedWorkSpace() && 0 !== groupCount) {\r\n                for (var i = 0; i < groupCount; i++) {\r\n                    var $allDayTitle = (0, _renderer.default)(\"<div>\").addClass(ALL_DAY_TITLE_CLASS).text(_message.default.format(\"dxScheduler-allDay\"));\r\n                    this._allDayTitles.push($allDayTitle);\r\n                    this._$allDayTable = (0, _renderer.default)(\"<table>\");\r\n                    this._allDayTables.push(this._$allDayTable);\r\n                    this._$allDayPanel = (0, _renderer.default)(\"<div>\").addClass(ALL_DAY_PANEL_CLASS).append(this._$allDayTable);\r\n                    this._allDayPanels.push(this._$allDayPanel)\r\n                }\r\n            } else {\r\n                this._$allDayTitle = (0, _renderer.default)(\"<div>\").addClass(ALL_DAY_TITLE_CLASS).text(_message.default.format(\"dxScheduler-allDay\")).appendTo(this.$element());\r\n                this._$allDayTable = (0, _renderer.default)(\"<table>\");\r\n                this._$allDayPanel = (0, _renderer.default)(\"<div>\").addClass(ALL_DAY_PANEL_CLASS).append(this._$allDayTable)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_initDateTableScrollable\",\r\n        value: function() {\r\n            var $dateTableScrollable = (0, _renderer.default)(\"<div>\").addClass(SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS);\r\n            this._dateTableScrollable = this._createComponent($dateTableScrollable, _ui2.default, this._dateTableScrollableConfig())\r\n        }\r\n    }, {\r\n        key: \"_dateTableScrollableConfig\",\r\n        value: function() {\r\n            var config = {\r\n                useKeyboard: false,\r\n                bounceEnabled: false,\r\n                updateManually: true,\r\n                pushBackValue: 0\r\n            };\r\n            if (this._needCreateCrossScrolling()) {\r\n                config = (0, _extend.extend)(config, this._createCrossScrollingConfig())\r\n            }\r\n            return config\r\n        }\r\n    }, {\r\n        key: \"_createCrossScrollingConfig\",\r\n        value: function() {\r\n            var _this = this;\r\n            var config = {};\r\n            config.direction = \"both\";\r\n            config.onScroll = function(e) {\r\n                _this._dataTableSemaphore.take();\r\n                _this._sideBarSemaphore.isFree() && _this._sidebarScrollable && _this._sidebarScrollable.scrollTo({\r\n                    top: e.scrollOffset.top\r\n                });\r\n                _this._headerSemaphore.isFree() && _this._headerScrollable && _this._headerScrollable.scrollTo({\r\n                    left: e.scrollOffset.left\r\n                });\r\n                _this._dataTableSemaphore.release()\r\n            };\r\n            config.onEnd = function() {\r\n                _this.notifyObserver(\"updateResizableArea\", {})\r\n            };\r\n            return config\r\n        }\r\n    }, {\r\n        key: \"_createWorkSpaceElements\",\r\n        value: function() {\r\n            if (this.option(\"crossScrollingEnabled\")) {\r\n                this._createWorkSpaceScrollableElements()\r\n            } else {\r\n                this._createWorkSpaceStaticElements()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createWorkSpaceStaticElements\",\r\n        value: function() {\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                this._dateTableScrollable.$content().append(this._$allDayContainer, this._$groupTable, this._$timePanel, this._$dateTable);\r\n                this.$element().append(this._$fixedContainer, this._$headerPanel, this._dateTableScrollable.$element())\r\n            } else {\r\n                this._dateTableScrollable.$content().append(this._$timePanel, this._$dateTable);\r\n                this.$element().append(this._$fixedContainer, this._$headerPanel, this._$allDayContainer, this._$allDayPanel, this._dateTableScrollable.$element())\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createWorkSpaceScrollableElements\",\r\n        value: function() {\r\n            this.$element().append(this._$fixedContainer);\r\n            this._createHeaderScrollable();\r\n            this._createSidebarScrollable();\r\n            this.$element().append(this._dateTableScrollable.$element());\r\n            this._headerScrollable.$content().append(this._$headerPanel);\r\n            this._dateTableScrollable.$content().append(this._$dateTable);\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                this._dateTableScrollable.$content().prepend(this._$allDayContainer);\r\n                this._sidebarScrollable.$content().append(this._$groupTable, this._$timePanel)\r\n            } else {\r\n                this._headerScrollable.$content().append(this._$allDayContainer, this._$allDayPanel)\r\n            }\r\n            this._sidebarScrollable.$content().append(this._$timePanel)\r\n        }\r\n    }, {\r\n        key: \"_createHeaderScrollable\",\r\n        value: function() {\r\n            var $headerScrollable = (0, _renderer.default)(\"<div>\").addClass(SCHEDULER_HEADER_SCROLLABLE_CLASS).appendTo(this.$element());\r\n            this._headerScrollable = this._createComponent($headerScrollable, _ui2.default, this._headerScrollableConfig())\r\n        }\r\n    }, {\r\n        key: \"_headerScrollableConfig\",\r\n        value: function() {\r\n            var _this2 = this;\r\n            var config = {\r\n                useKeyboard: false,\r\n                showScrollbar: false,\r\n                direction: \"horizontal\",\r\n                useNative: false,\r\n                updateManually: true,\r\n                bounceEnabled: false,\r\n                pushBackValue: 0,\r\n                onScroll: function(e) {\r\n                    _this2._headerSemaphore.take();\r\n                    _this2._dataTableSemaphore.isFree() && _this2._dateTableScrollable.scrollTo({\r\n                        left: e.scrollOffset.left\r\n                    });\r\n                    _this2._headerSemaphore.release()\r\n                }\r\n            };\r\n            return config\r\n        }\r\n    }, {\r\n        key: \"_createSidebarScrollable\",\r\n        value: function() {\r\n            var _this3 = this;\r\n            var $timePanelScrollable = (0, _renderer.default)(\"<div>\").addClass(SCHEDULER_SIDEBAR_SCROLLABLE_CLASS).appendTo(this.$element());\r\n            this._sidebarScrollable = this._createComponent($timePanelScrollable, _ui2.default, {\r\n                useKeyboard: false,\r\n                showScrollbar: false,\r\n                direction: \"vertical\",\r\n                useNative: false,\r\n                updateManually: true,\r\n                bounceEnabled: false,\r\n                pushBackValue: 0,\r\n                onScroll: function(e) {\r\n                    _this3._sideBarSemaphore.take();\r\n                    _this3._dataTableSemaphore.isFree() && _this3._dateTableScrollable.scrollTo({\r\n                        top: e.scrollOffset.top\r\n                    });\r\n                    _this3._sideBarSemaphore.release()\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_visibilityChanged\",\r\n        value: function(visible) {\r\n            this.cache.clear();\r\n            if (visible && this._isVerticalGroupedWorkSpace()) {\r\n                this._setHorizontalGroupHeaderCellsHeight()\r\n            }\r\n            if (visible && this._needCreateCrossScrolling()) {\r\n                this._setTableSizes()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_attachTableClasses\",\r\n        value: function() {\r\n            this._addTableClass(this._$dateTable, this._getDateTableClass());\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                var groupCount = this._getGroupCount();\r\n                for (var i = 0; i < groupCount; i++) {\r\n                    this._addTableClass(this._allDayTables[i], ALL_DAY_TABLE_CLASS)\r\n                }\r\n            } else {\r\n                this._addTableClass(this._$allDayTable, ALL_DAY_TABLE_CLASS)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_attachHeaderTableClasses\",\r\n        value: function() {\r\n            this._addTableClass(this._$headerPanel, HEADER_PANEL_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_addTableClass\",\r\n        value: function($el, className) {\r\n            $el && !$el.hasClass(className) && $el.addClass(className)\r\n        }\r\n    }, {\r\n        key: \"_setTableSizes\",\r\n        value: function() {\r\n            this._attachTableClasses();\r\n            var cellWidth = this.getCellWidth();\r\n            if (cellWidth < this.getCellMinWidth()) {\r\n                cellWidth = this.getCellMinWidth()\r\n            }\r\n            var minWidth = this.getWorkSpaceMinWidth();\r\n            var $headerCells = this._$headerPanel.find(\"tr\").last().find(\"th\");\r\n            var width = cellWidth * $headerCells.length;\r\n            if (width < minWidth) {\r\n                width = minWidth\r\n            }\r\n            this._$headerPanel.width(width);\r\n            this._$dateTable.width(width);\r\n            this._$allDayTable && this._$allDayTable.width(width);\r\n            this._attachHeaderTableClasses();\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                this._setHorizontalGroupHeaderCellsHeight()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceMinWidth\",\r\n        value: function() {\r\n            return this._groupedStrategy.getWorkSpaceMinWidth()\r\n        }\r\n    }, {\r\n        key: \"_dimensionChanged\",\r\n        value: function() {\r\n            if (this.option(\"crossScrollingEnabled\")) {\r\n                this._setTableSizes()\r\n            }\r\n            this.headerPanelOffsetRecalculate();\r\n            this.cache.clear();\r\n            this._cleanAllowedPositions()\r\n        }\r\n    }, {\r\n        key: \"_needCreateCrossScrolling\",\r\n        value: function() {\r\n            return this.option(\"crossScrollingEnabled\")\r\n        }\r\n    }, {\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_getRowCount\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_getRowCountWithAllDayRows\",\r\n        value: function() {\r\n            var allDayRowCount = this._isShowAllDayPanel() ? 1 : 0;\r\n            return this._getRowCount() + allDayRowCount\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            this.cache.clear();\r\n            this._initWorkSpaceUnits();\r\n            this._initDateTableScrollable();\r\n            this._createWorkSpaceElements();\r\n            this._initVirtualScrolling();\r\n            _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_initMarkup\", this).call(this);\r\n            if (!this.option(\"crossScrollingEnabled\")) {\r\n                this._attachTableClasses();\r\n                this._attachHeaderTableClasses()\r\n            }\r\n            this._toggleGroupedClass();\r\n            this._toggleFixedScrollableClass();\r\n            this._renderView();\r\n            this._attachEvents();\r\n            this._setFocusOnCellByOption(this.option(\"selectedCellData\"))\r\n        }\r\n    }, {\r\n        key: \"isRenovatedRender\",\r\n        value: function() {\r\n            return this.renovatedRenderSupported() && this.option(\"renovateRender\")\r\n        }\r\n    }, {\r\n        key: \"_isVirtualModeOn\",\r\n        value: function() {\r\n            return \"virtual\" === this.option(\"scrolling.mode\")\r\n        }\r\n    }, {\r\n        key: \"isVirtualScrolling\",\r\n        value: function() {\r\n            return this.isRenovatedRender() && this._isVirtualModeOn()\r\n        }\r\n    }, {\r\n        key: \"_initVirtualScrolling\",\r\n        value: function() {\r\n            if (this.virtualScrollingDispatcher) {\r\n                this.virtualScrollingDispatcher.dispose();\r\n                this.virtualScrollingDispatcher = null\r\n            }\r\n            if (this.isVirtualScrolling()) {\r\n                this.virtualScrollingDispatcher = new _uiScheduler2.default(this)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_render\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_render\", this).call(this);\r\n            this._renderDateTimeIndication();\r\n            this._setIndicationUpdateInterval()\r\n        }\r\n    }, {\r\n        key: \"_toggleGroupedClass\",\r\n        value: function() {\r\n            this.$element().toggleClass(GROUPED_WORKSPACE_CLASS, this._getGroupCount() > 0)\r\n        }\r\n    }, {\r\n        key: \"_toggleFixedScrollableClass\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_renderView\",\r\n        value: function() {\r\n            this._setFirstViewDate();\r\n            this._applyCellTemplates(this._renderGroupHeader());\r\n            this._renderDateHeader();\r\n            if (this.isRenovatedRender()) {\r\n                this.renderRWorkspace()\r\n            } else {\r\n                this._renderTimePanel();\r\n                this._renderGroupAllDayPanel();\r\n                this._renderDateTable();\r\n                this._renderAllDayPanel()\r\n            }\r\n            this._updateGroupTableHeight();\r\n            this._shader = new _uiSchedulerCurrent_time_shader.default(this)\r\n        }\r\n    }, {\r\n        key: \"isGroupedAllDayPanel\",\r\n        value: function() {\r\n            return this._isShowAllDayPanel() && this._isVerticalGroupedWorkSpace()\r\n        }\r\n    }, {\r\n        key: \"generateRenderOptions\",\r\n        value: function() {\r\n            var groupCount = this._getGroupCount();\r\n            var verticalGroupCount = !this._isVerticalGroupedWorkSpace() ? 1 : groupCount;\r\n            var horizontalGroupCount = this._isVerticalGroupedWorkSpace() ? 1 : groupCount;\r\n            var allDayElements = this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0;\r\n            var rowCountInGroup = this._getRowCount();\r\n            var options = {\r\n                horizontalGroupCount: horizontalGroupCount,\r\n                verticalGroupCount: verticalGroupCount,\r\n                rowCountInGroup: rowCountInGroup,\r\n                cellCount: this._getTotalCellCount(groupCount),\r\n                cellCountInGroupRow: this._getCellCount(),\r\n                cellDataGetters: [this._getCellData.bind(this)],\r\n                allDayElements: allDayElements,\r\n                startRowIndex: 0,\r\n                groupOrientation: this.option(\"groupOrientation\"),\r\n                nonVirtualRowCount: this._getRowCount(),\r\n                groupCount: groupCount\r\n            };\r\n            if (this.isVirtualScrolling()) {\r\n                var virtualScrollingState = this.virtualScrollingDispatcher.getState();\r\n                (0, _extend.extend)(options, {\r\n                    topVirtualRowHeight: virtualScrollingState.topVirtualRowHeight,\r\n                    bottomVirtualRowHeight: virtualScrollingState.bottomVirtualRowHeight,\r\n                    startRowIndex: virtualScrollingState.startIndex,\r\n                    rowCount: virtualScrollingState.rowCount\r\n                })\r\n            } else {\r\n                options.rowCount = this._getTotalRowCount(groupCount, this._isVerticalGroupedWorkSpace())\r\n            }\r\n            return options\r\n        }\r\n    }, {\r\n        key: \"renovatedRenderSupported\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"renderRWorkspace\",\r\n        value: function() {\r\n            var _this$virtualScrollin2;\r\n            var isGenerateNewViewData = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n            this._cleanAllowedPositions();\r\n            this.viewDataProvider.update(isGenerateNewViewData);\r\n            this.renderRAllDayPanel();\r\n            this.renderRTimeTable();\r\n            this.renderRDateTable();\r\n            this.updateRSelection();\r\n            null === (_this$virtualScrollin2 = this.virtualScrollingDispatcher) || void 0 === _this$virtualScrollin2 ? void 0 : _this$virtualScrollin2.updateDimensions()\r\n        }\r\n    }, {\r\n        key: \"renderRAllDayPanel\",\r\n        value: function() {\r\n            var visible = this._isShowAllDayPanel() && !this.isGroupedAllDayPanel();\r\n            if (visible) {\r\n                var options = {\r\n                    viewData: this.viewDataProvider.viewData,\r\n                    visible: visible,\r\n                    dataCellTemplate: this.option(\"dataCellTemplate\")\r\n                };\r\n                this.renderRComponent(this._$allDayPanel, _layout.default, \"renovatedAllDayPanel\", options);\r\n                this.renderRComponent(this._$allDayTitle, _title.default, \"renovatedAllDayPanelTitle\", {\r\n                    visible: visible\r\n                });\r\n                this._$allDayTable = this.renovatedAllDayPanel.$element().find(\".\".concat(ALL_DAY_TABLE_CLASS))\r\n            }\r\n            this._toggleAllDayVisibility()\r\n        }\r\n    }, {\r\n        key: \"renderRTimeTable\",\r\n        value: function() {\r\n            this.renderRComponent(this._$timePanel, _layout2.default, \"renovatedTimePanel\", {\r\n                viewData: this.viewDataProvider.viewData,\r\n                timeCellTemplate: this.option(\"timeCellTemplate\")\r\n            })\r\n        }\r\n    }, {\r\n        key: \"renderRDateTable\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"renderRComponent\",\r\n        value: function(parentElement, componentClass, componentName, viewModel) {\r\n            var component = this[componentName];\r\n            if (!component) {\r\n                var container = (0, _element.getPublicElement)(parentElement);\r\n                component = this._createComponent(container, componentClass, _objectSpread(_objectSpread({}, viewModel), {}, {\r\n                    groupOrientation: this.option(\"groupOrientation\")\r\n                }));\r\n                this[componentName] = component\r\n            } else {\r\n                Object.getOwnPropertyNames(viewModel).forEach(function(optionName) {\r\n                    component.option(optionName, viewModel[optionName])\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"updateRSelection\",\r\n        value: function() {\r\n            var isVerticalGrouping = this._isVerticalGroupedWorkSpace();\r\n            var focusedCell = this.virtualSelectionState.getFocusedCell(isVerticalGrouping);\r\n            var selectedCells = this.virtualSelectionState.getSelectedCells();\r\n            if (focusedCell) {\r\n                var coordinates = focusedCell.coordinates,\r\n                    cellData = focusedCell.cellData;\r\n                var $cell = !isVerticalGrouping && cellData.allDay ? this._dom_getAllDayPanelCell(coordinates.cellIndex) : this._dom_getDateCell(coordinates);\r\n                $cell && this._setFocusedCell($cell)\r\n            }\r\n            selectedCells && this._setSelectedCellsByCellData(selectedCells)\r\n        }\r\n    }, {\r\n        key: \"_updateGroupTableHeight\",\r\n        value: function() {\r\n            if (this._isVerticalGroupedWorkSpace() && (0, _window.hasWindow)()) {\r\n                this._setHorizontalGroupHeaderCellsHeight()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderDateTimeIndication\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_setIndicationUpdateInterval\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_refreshDateTimeIndication\",\r\n        value: function() {\r\n            return (0, _common.noop)()\r\n        }\r\n    }, {\r\n        key: \"_setFocusOnCellByOption\",\r\n        value: function(data) {\r\n            this._releaseSelectedAndFocusedCells();\r\n            this._setSelectedCellsByCellData(data)\r\n        }\r\n    }, {\r\n        key: \"_setSelectedCellsByCellData\",\r\n        value: function(data) {\r\n            var _data$, _this4 = this;\r\n            var cells = [];\r\n            var $cells = this._getAllCells(null === data || void 0 === data ? void 0 : null === (_data$ = data[0]) || void 0 === _data$ ? void 0 : _data$.allDay);\r\n            var cellsInRow = this._getTotalCellCount(this._getGroupCount());\r\n            data.forEach(function(cellData) {\r\n                var groups = cellData.groups,\r\n                    startDate = cellData.startDate,\r\n                    allDay = cellData.allDay;\r\n                var groupIndex = cellData.groupIndex;\r\n                if (!groupIndex) {\r\n                    groupIndex = _this4._isGroupsSpecified(groups) ? _this4._getGroupIndexByResourceId(groups) : 0\r\n                }\r\n                var coordinates = _this4.isVirtualScrolling() ? _this4.viewDataProvider.findCellPositionInMap(groupIndex, startDate, allDay) : _this4.getCoordinatesByDate(startDate, groupIndex, allDay);\r\n                if (coordinates) {\r\n                    var rowIndex = coordinates.rowIndex,\r\n                        cellIndex = coordinates.cellIndex;\r\n                    var index = rowIndex * cellsInRow + cellIndex;\r\n                    var $cell = $cells[index];\r\n                    if ((0, _type.isDefined)($cell)) {\r\n                        _this4._toggleFocusClass(true, (0, _renderer.default)($cell));\r\n                        cells.push($cell)\r\n                    }\r\n                }\r\n            });\r\n            this._selectedCells = cells\r\n        }\r\n    }, {\r\n        key: \"_isGroupsSpecified\",\r\n        value: function(resources) {\r\n            return this.option(\"groups\").length && resources\r\n        }\r\n    }, {\r\n        key: \"_getGroupIndexByResourceId\",\r\n        value: function(id) {\r\n            var groups = this.option(\"groups\");\r\n            var resourceTree = this.invoke(\"createResourcesTree\", groups);\r\n            if (!resourceTree.length) {\r\n                return 0\r\n            }\r\n            return this._getGroupIndexRecursively(resourceTree, id)\r\n        }\r\n    }, {\r\n        key: \"_getGroupIndexRecursively\",\r\n        value: function(resourceTree, id) {\r\n            var _this5 = this;\r\n            var currentKey = resourceTree[0].name;\r\n            var currentValue = id[currentKey];\r\n            return resourceTree.reduce(function(prevIndex, _ref2) {\r\n                var leafIndex = _ref2.leafIndex,\r\n                    value = _ref2.value,\r\n                    children = _ref2.children;\r\n                var areValuesEqual = currentValue === value;\r\n                if (areValuesEqual && void 0 !== leafIndex) {\r\n                    return leafIndex\r\n                }\r\n                if (areValuesEqual) {\r\n                    return _this5._getGroupIndexRecursively(children, id)\r\n                }\r\n                return prevIndex\r\n            }, 0)\r\n        }\r\n    }, {\r\n        key: \"_setFirstViewDate\",\r\n        value: function() {\r\n            var firstDayOfWeek = (0, _type.isDefined)(this._firstDayOfWeek()) ? this._firstDayOfWeek() : _date2.default.firstDayOfWeekIndex();\r\n            this._firstViewDate = _date.default.getFirstWeekDate(this._getViewStartByOptions(), firstDayOfWeek);\r\n            this._setStartDayHour(this._firstViewDate)\r\n        }\r\n    }, {\r\n        key: \"_getViewStartByOptions\",\r\n        value: function() {\r\n            if (!this.option(\"startDate\")) {\r\n                return this.option(\"currentDate\")\r\n            } else {\r\n                var startDate = _date.default.trimTime(this._getStartViewDate());\r\n                var currentDate = this.option(\"currentDate\");\r\n                var diff = startDate.getTime() <= currentDate.getTime() ? 1 : -1;\r\n                var endDate = new Date(startDate.getTime() + this._getIntervalDuration() * diff);\r\n                while (!this._dateInRange(currentDate, startDate, endDate, diff)) {\r\n                    startDate = endDate;\r\n                    endDate = new Date(startDate.getTime() + this._getIntervalDuration() * diff)\r\n                }\r\n                return diff > 0 ? startDate : endDate\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getHeaderDate\",\r\n        value: function() {\r\n            return this.getStartViewDate()\r\n        }\r\n    }, {\r\n        key: \"_getStartViewDate\",\r\n        value: function() {\r\n            return this.option(\"startDate\")\r\n        }\r\n    }, {\r\n        key: \"_dateInRange\",\r\n        value: function(date, startDate, endDate, diff) {\r\n            return diff > 0 ? _date.default.dateInRange(date, startDate, new Date(endDate.getTime() - 1)) : _date.default.dateInRange(date, endDate, startDate, \"date\")\r\n        }\r\n    }, {\r\n        key: \"_getIntervalDuration\",\r\n        value: function() {\r\n            return toMs(\"day\") * this.option(\"intervalCount\")\r\n        }\r\n    }, {\r\n        key: \"_setStartDayHour\",\r\n        value: function(date) {\r\n            var startDayHour = this.option(\"startDayHour\");\r\n            if ((0, _type.isDefined)(startDayHour)) {\r\n                date.setHours(startDayHour, startDayHour % 1 * 60, 0, 0)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_firstDayOfWeek\",\r\n        value: function() {\r\n            return this.option(\"firstDayOfWeek\")\r\n        }\r\n    }, {\r\n        key: \"_attachEvents\",\r\n        value: function() {\r\n            this._createSelectionChangedAction();\r\n            this._attachClickEvent();\r\n            this._attachContextMenuEvent()\r\n        }\r\n    }, {\r\n        key: \"_attachClickEvent\",\r\n        value: function() {\r\n            var that = this;\r\n            var pointerDownAction = this._createAction(function(e) {\r\n                that._pointerDownHandler(e.event)\r\n            });\r\n            this._createCellClickAction();\r\n            var cellSelector = \".\" + DATE_TABLE_CELL_CLASS + \",.\" + ALL_DAY_TABLE_CELL_CLASS;\r\n            var $element = this.$element();\r\n            _events_engine.default.off($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME);\r\n            _events_engine.default.off($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME);\r\n            _events_engine.default.on($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME, function(e) {\r\n                if ((0, _index.isMouseEvent)(e) && e.which > 1) {\r\n                    e.preventDefault();\r\n                    return\r\n                }\r\n                pointerDownAction({\r\n                    event: e\r\n                })\r\n            });\r\n            _events_engine.default.on($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME, cellSelector, function(e) {\r\n                var $cell = (0, _renderer.default)(e.target);\r\n                that._cellClickAction({\r\n                    event: e,\r\n                    cellElement: (0, _element.getPublicElement)($cell),\r\n                    cellData: that.getCellData($cell)\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createCellClickAction\",\r\n        value: function() {\r\n            var _this6 = this;\r\n            this._cellClickAction = this._createActionByOption(\"onCellClick\", {\r\n                afterExecute: function(e) {\r\n                    return _this6._cellClickHandler(e.args[0].event)\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createSelectionChangedAction\",\r\n        value: function() {\r\n            this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\")\r\n        }\r\n    }, {\r\n        key: \"_cellClickHandler\",\r\n        value: function(e) {\r\n            var $target = (0, _renderer.default)(e.target);\r\n            if (this._showPopup && this._hasFocusClass($target)) {\r\n                delete this._showPopup;\r\n                this._showAddAppointmentPopup($target)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_pointerDownHandler\",\r\n        value: function(e) {\r\n            var $target = (0, _renderer.default)(e.target);\r\n            if (!$target.hasClass(DATE_TABLE_CELL_CLASS) && !$target.hasClass(ALL_DAY_TABLE_CELL_CLASS)) {\r\n                this._isCellClick = false;\r\n                return\r\n            }\r\n            this._isCellClick = true;\r\n            if ($target.hasClass(DATE_TABLE_FOCUSED_CELL_CLASS)) {\r\n                this._showPopup = true\r\n            } else {\r\n                this._setSelectedAndFocusedCells($target)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_showAddAppointmentPopup\",\r\n        value: function($cell) {\r\n            var firstCellData = this.getCellData($cell.first());\r\n            var lastCellData = this.getCellData($cell.last());\r\n            if (this.isVirtualScrolling()) {\r\n                var selectedCells = this.virtualSelectionState.getSelectedCells();\r\n                firstCellData = selectedCells[0];\r\n                lastCellData = selectedCells[selectedCells.length - 1]\r\n            }\r\n            var result = {\r\n                startDate: firstCellData.startDate,\r\n                endDate: lastCellData.endDate\r\n            };\r\n            if (void 0 !== lastCellData.allDay) {\r\n                result.allDay = lastCellData.allDay\r\n            }\r\n            this.invoke(\"showAddAppointmentPopup\", result, lastCellData.groups)\r\n        }\r\n    }, {\r\n        key: \"_attachContextMenuEvent\",\r\n        value: function() {\r\n            this._createContextMenuAction();\r\n            var cellSelector = \".\" + DATE_TABLE_CELL_CLASS + \",.\" + ALL_DAY_TABLE_CELL_CLASS;\r\n            var $element = this.$element();\r\n            var eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME);\r\n            _events_engine.default.off($element, eventName, cellSelector);\r\n            _events_engine.default.on($element, eventName, cellSelector, this._contextMenuHandler.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_contextMenuHandler\",\r\n        value: function(e) {\r\n            var $cell = (0, _renderer.default)(e.target);\r\n            this._contextMenuAction({\r\n                event: e,\r\n                cellElement: (0, _element.getPublicElement)($cell),\r\n                cellData: this.getCellData($cell)\r\n            });\r\n            this._contextMenuHandled = true\r\n        }\r\n    }, {\r\n        key: \"_createContextMenuAction\",\r\n        value: function() {\r\n            this._contextMenuAction = this._createActionByOption(\"onCellContextMenu\")\r\n        }\r\n    }, {\r\n        key: \"_getGroupHeaderContainer\",\r\n        value: function() {\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                return this._$groupTable\r\n            }\r\n            return this._$thead\r\n        }\r\n    }, {\r\n        key: \"_getDateHeaderContainer\",\r\n        value: function() {\r\n            return this._$thead\r\n        }\r\n    }, {\r\n        key: \"_renderGroupHeader\",\r\n        value: function() {\r\n            var $container = this._getGroupHeaderContainer();\r\n            var groupCount = this._getGroupCount();\r\n            var cellTemplates = [];\r\n            if (groupCount) {\r\n                var groupRows = this._makeGroupRows(this.option(\"groups\"), this.option(\"groupByDate\"));\r\n                this._attachGroupCountAttr(groupCount, groupRows);\r\n                $container.append(groupRows.elements);\r\n                cellTemplates = groupRows.cellTemplates\r\n            } else {\r\n                this._detachGroupCountAttr()\r\n            }\r\n            return cellTemplates\r\n        }\r\n    }, {\r\n        key: \"_applyCellTemplates\",\r\n        value: function(templates) {\r\n            templates.forEach(function(template) {\r\n                template()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_detachGroupCountAttr\",\r\n        value: function() {\r\n            var groupedAttr = this._groupedStrategy.getGroupCountAttr();\r\n            this.$element().removeAttr(groupedAttr.attr)\r\n        }\r\n    }, {\r\n        key: \"_attachGroupCountAttr\",\r\n        value: function(groupRowCount, groupRows) {\r\n            var groupedAttr = this._groupedStrategy.getGroupCountAttr(groupRowCount, groupRows);\r\n            this.$element().attr(groupedAttr.attr, groupedAttr.count)\r\n        }\r\n    }, {\r\n        key: \"headerPanelOffsetRecalculate\",\r\n        value: function() {\r\n            if (!this.option(\"resourceCellTemplate\") && !this.option(\"dateCellTemplate\")) {\r\n                return\r\n            }\r\n            var headerPanelHeight = this.getHeaderPanelHeight();\r\n            var headerHeight = this.invoke(\"getHeaderHeight\");\r\n            var allDayPanelHeight = this.supportAllDayRow() && this._isShowAllDayPanel() ? this._groupedStrategy.getAllDayTableHeight() : 0;\r\n            headerPanelHeight && this._headerScrollable && this._headerScrollable.$element().height(headerPanelHeight + allDayPanelHeight);\r\n            headerPanelHeight && this._dateTableScrollable.$element().css({\r\n                paddingBottom: allDayPanelHeight + headerPanelHeight + \"px\",\r\n                marginBottom: -1 * (parseInt(headerPanelHeight, 10) + allDayPanelHeight) + \"px\"\r\n            });\r\n            headerPanelHeight && this._sidebarScrollable && this._sidebarScrollable.$element().css({\r\n                paddingBottom: allDayPanelHeight + headerPanelHeight + \"px\",\r\n                marginBottom: -1 * (parseInt(headerPanelHeight, 10) + allDayPanelHeight) + \"px\"\r\n            });\r\n            this._$allDayTitle && this._$allDayTitle.css(\"top\", headerHeight + headerPanelHeight + \"px\")\r\n        }\r\n    }, {\r\n        key: \"_makeGroupRows\",\r\n        value: function(groups, groupByDate) {\r\n            var tableCreatorStrategy = this._isVerticalGroupedWorkSpace() ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;\r\n            return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {\r\n                groupHeaderRowClass: this._getGroupRowClass(),\r\n                groupRowClass: this._getGroupRowClass(),\r\n                groupHeaderClass: this._getGroupHeaderClass.bind(this),\r\n                groupHeaderContentClass: this._getGroupHeaderContentClass()\r\n            }, this._getCellCount() || 1, this.option(\"resourceCellTemplate\"), this._getGroupCount(), groupByDate)\r\n        }\r\n    }, {\r\n        key: \"_getDateHeaderTemplate\",\r\n        value: function() {\r\n            return this.option(\"dateCellTemplate\")\r\n        }\r\n    }, {\r\n        key: \"_renderDateHeader\",\r\n        value: function() {\r\n            var container = this._getDateHeaderContainer();\r\n            var $headerRow = (0, _renderer.default)(\"<tr>\").addClass(HEADER_ROW_CLASS);\r\n            var count = this._getCellCount();\r\n            var cellTemplate = this._getDateHeaderTemplate();\r\n            var repeatCount = this._getCalculateHeaderCellRepeatCount();\r\n            var templateCallbacks = [];\r\n            var groupByDate = this.isGroupedByDate();\r\n            if (!groupByDate) {\r\n                for (var rowIndex = 0; rowIndex < repeatCount; rowIndex++) {\r\n                    for (var cellIndex = 0; cellIndex < count; cellIndex++) {\r\n                        var templateIndex = rowIndex * repeatCount + cellIndex;\r\n                        this._renderDateHeaderTemplate($headerRow, cellIndex, templateIndex, cellTemplate, templateCallbacks)\r\n                    }\r\n                }\r\n                container.append($headerRow)\r\n            } else {\r\n                var colSpan = groupByDate ? this._getGroupCount() : 1;\r\n                for (var _cellIndex = 0; _cellIndex < count; _cellIndex++) {\r\n                    var _templateIndex = _cellIndex * repeatCount;\r\n                    var cellElement = this._renderDateHeaderTemplate($headerRow, _cellIndex, _templateIndex, cellTemplate, templateCallbacks);\r\n                    cellElement.attr(\"colSpan\", colSpan)\r\n                }\r\n                container.prepend($headerRow)\r\n            }\r\n            this._applyCellTemplates(templateCallbacks);\r\n            return $headerRow\r\n        }\r\n    }, {\r\n        key: \"_renderDateHeaderTemplate\",\r\n        value: function(container, panelCellIndex, templateIndex, cellTemplate, templateCallbacks) {\r\n            var text = this._getHeaderText(panelCellIndex);\r\n            var $cell = (0, _renderer.default)(\"<th>\").addClass(this._getHeaderPanelCellClass(panelCellIndex)).attr(\"title\", text);\r\n            if (null !== cellTemplate && void 0 !== cellTemplate && cellTemplate.render) {\r\n                templateCallbacks.push(cellTemplate.render.bind(cellTemplate, {\r\n                    model: {\r\n                        text: text,\r\n                        date: this._getDateByIndex(panelCellIndex)\r\n                    },\r\n                    index: templateIndex,\r\n                    container: (0, _element.getPublicElement)($cell)\r\n                }))\r\n            } else {\r\n                $cell.text(text)\r\n            }\r\n            container.append($cell);\r\n            return $cell\r\n        }\r\n    }, {\r\n        key: \"_getHeaderPanelCellClass\",\r\n        value: function(i) {\r\n            var cellClass = HEADER_PANEL_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS;\r\n            return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1, void 0, void 0, this.isGroupedByDate())\r\n        }\r\n    }, {\r\n        key: \"_getCalculateHeaderCellRepeatCount\",\r\n        value: function() {\r\n            return this._groupedStrategy.calculateHeaderCellRepeatCount()\r\n        }\r\n    }, {\r\n        key: \"_renderAllDayPanel\",\r\n        value: function(index) {\r\n            var cellCount = this._getCellCount();\r\n            if (!this._isVerticalGroupedWorkSpace()) {\r\n                cellCount *= this._getGroupCount() || 1\r\n            }\r\n            var cellTemplates = this._renderTableBody({\r\n                container: this._allDayPanels.length ? (0, _element.getPublicElement)(this._allDayTables[index]) : (0, _element.getPublicElement)(this._$allDayTable),\r\n                rowCount: 1,\r\n                cellCount: cellCount,\r\n                cellClass: this._getAllDayPanelCellClass.bind(this),\r\n                rowClass: ALL_DAY_TABLE_ROW_CLASS,\r\n                cellTemplate: this.option(\"dataCellTemplate\"),\r\n                getCellData: this._getAllDayCellData.bind(this),\r\n                groupIndex: index\r\n            }, true);\r\n            this._toggleAllDayVisibility();\r\n            this._applyCellTemplates(cellTemplates)\r\n        }\r\n    }, {\r\n        key: \"_renderGroupAllDayPanel\",\r\n        value: function() {\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                var groupCount = this._getGroupCount();\r\n                for (var i = 0; i < groupCount; i++) {\r\n                    this._renderAllDayPanel(i)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getAllDayPanelCellClass\",\r\n        value: function(i, j) {\r\n            var cellClass = ALL_DAY_TABLE_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS;\r\n            return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1)\r\n        }\r\n    }, {\r\n        key: \"_getAllDayCellData\",\r\n        value: function(cell, rowIndex, cellIndex, groupIndex) {\r\n            var startDate = this._getDateByCellIndexes(rowIndex, cellIndex);\r\n            var cellGroupIndex = groupIndex || this._getGroupIndex(rowIndex, cellIndex);\r\n            startDate = _date.default.trimTime(startDate);\r\n            var data = {\r\n                startDate: startDate,\r\n                endDate: startDate,\r\n                allDay: true,\r\n                groupIndex: cellGroupIndex\r\n            };\r\n            var groups = this._getCellGroups(cellGroupIndex);\r\n            if (groups.length) {\r\n                data.groups = {}\r\n            }\r\n            for (var i = 0; i < groups.length; i++) {\r\n                data.groups[groups[i].name] = groups[i].id\r\n            }\r\n            return {\r\n                key: CELL_DATA,\r\n                value: data\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_toggleAllDayVisibility\",\r\n        value: function() {\r\n            var showAllDayPanel = this._isShowAllDayPanel();\r\n            this._$allDayPanel.toggle(showAllDayPanel);\r\n            this._$allDayTitle && this._$allDayTitle.toggleClass(ALL_DAY_TITLE_HIDDEN_CLASS, !showAllDayPanel);\r\n            this.$element().toggleClass(WORKSPACE_WITH_ALL_DAY_CLASS, showAllDayPanel);\r\n            this._changeAllDayVisibility();\r\n            this._updateScrollable()\r\n        }\r\n    }, {\r\n        key: \"_changeAllDayVisibility\",\r\n        value: function() {\r\n            this.$element().toggleClass(WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS, !this.option(\"allDayExpanded\") && this._isShowAllDayPanel())\r\n        }\r\n    }, {\r\n        key: \"_updateScrollable\",\r\n        value: function() {\r\n            this._dateTableScrollable.update();\r\n            this._headerScrollable && this._headerScrollable.update();\r\n            this._sidebarScrollable && this._sidebarScrollable.update()\r\n        }\r\n    }, {\r\n        key: \"_renderTimePanel\",\r\n        value: function() {\r\n            var _this7 = this;\r\n            var repeatCount = this._groupedStrategy.calculateTimeCellRepeatCount();\r\n            var startViewDate = _utils.default.getDateWithoutTimezoneChange(this.getStartViewDate());\r\n            var _getTimeText = function(i) {\r\n                var index = i % _this7._getRowCount();\r\n                if (index % 2 === 0) {\r\n                    return _date2.default.format(_this7._getTimeCellDateCore(startViewDate, i), \"shorttime\")\r\n                }\r\n                return \"\"\r\n            };\r\n            this._renderTableBody({\r\n                container: (0, _element.getPublicElement)(this._$timePanel),\r\n                rowCount: this._getTimePanelRowCount() * repeatCount,\r\n                cellCount: 1,\r\n                cellClass: this._getTimeCellClass.bind(this),\r\n                rowClass: TIME_PANEL_ROW_CLASS,\r\n                cellTemplate: this.option(\"timeCellTemplate\"),\r\n                getCellText: _getTimeText.bind(this),\r\n                getCellDate: this._getTimeCellDate.bind(this),\r\n                groupCount: this._getGroupCount(),\r\n                allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getTimePanelRowCount\",\r\n        value: function() {\r\n            return this._getCellCountInDay()\r\n        }\r\n    }, {\r\n        key: \"_getCellCountInDay\",\r\n        value: function(skipRound) {\r\n            var result = this._calculateDayDuration() / this.option(\"hoursInterval\");\r\n            return skipRound ? result : Math.ceil(result)\r\n        }\r\n    }, {\r\n        key: \"_calculateDayDuration\",\r\n        value: function() {\r\n            return this.option(\"endDayHour\") - this.option(\"startDayHour\")\r\n        }\r\n    }, {\r\n        key: \"_getTimeCellClass\",\r\n        value: function(i) {\r\n            var cellClass = TIME_PANEL_CELL_CLASS + \" \" + VERTICAL_SIZES_CLASS;\r\n            return this._isVerticalGroupedWorkSpace() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i, i) : cellClass\r\n        }\r\n    }, {\r\n        key: \"_getTimeCellDate\",\r\n        value: function(i) {\r\n            return this._getTimeCellDateCore(this.getStartViewDate(), i)\r\n        }\r\n    }, {\r\n        key: \"_getTimeCellDateCore\",\r\n        value: function(startViewDate, i) {\r\n            var result = new Date(startViewDate);\r\n            var timeCellDuration = Math.round(this.getCellDuration());\r\n            var cellCountInDay = this._getCellCountInDay(true);\r\n            result.setMilliseconds(result.getMilliseconds() + timeCellDuration * (i % cellCountInDay));\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_renderDateTable\",\r\n        value: function() {\r\n            var groupCount = this._getGroupCount();\r\n            this._renderTableBody({\r\n                container: (0, _element.getPublicElement)(this._$dateTable),\r\n                rowCount: this._getTotalRowCount(groupCount),\r\n                cellCount: this._getTotalCellCount(groupCount),\r\n                cellClass: this._getDateTableCellClass.bind(this),\r\n                rowClass: this._getDateTableRowClass(),\r\n                cellTemplate: this.option(\"dataCellTemplate\"),\r\n                getCellData: this._getCellData.bind(this),\r\n                allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayPanels : void 0,\r\n                groupCount: groupCount,\r\n                groupByDate: this.option(\"groupByDate\")\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_insertAllDayRowsIntoDateTable\",\r\n        value: function() {\r\n            return this._groupedStrategy.insertAllDayRowsIntoDateTable()\r\n        }\r\n    }, {\r\n        key: \"_getTotalCellCount\",\r\n        value: function(groupCount) {\r\n            return this._groupedStrategy.getTotalCellCount(groupCount)\r\n        }\r\n    }, {\r\n        key: \"_getTotalRowCount\",\r\n        value: function(groupCount, includeAllDayPanelRows) {\r\n            var result = this._groupedStrategy.getTotalRowCount(groupCount);\r\n            if (includeAllDayPanelRows && groupCount > 1 && this._isShowAllDayPanel()) {\r\n                result += groupCount\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getCellData\",\r\n        value: function(cell, rowIndex, cellIndex) {\r\n            var data = this._prepareCellData(rowIndex, cellIndex, cell);\r\n            return {\r\n                key: CELL_DATA,\r\n                value: data\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_prepareCellData\",\r\n        value: function(rowIndex, cellIndex) {\r\n            var startDate = this._getDateByCellIndexes(rowIndex, cellIndex);\r\n            var endDate = this.calculateEndDate(startDate);\r\n            var groupIndex = this._getGroupIndex(rowIndex, cellIndex);\r\n            var data = {\r\n                startDate: startDate,\r\n                endDate: endDate,\r\n                allDay: this._getTableAllDay(),\r\n                groupIndex: groupIndex\r\n            };\r\n            var groups = this._getCellGroups(groupIndex);\r\n            if (groups.length) {\r\n                data.groups = {}\r\n            }\r\n            for (var i = 0; i < groups.length; i++) {\r\n                data.groups[groups[i].name] = groups[i].id\r\n            }\r\n            return data\r\n        }\r\n    }, {\r\n        key: \"_getGroupIndex\",\r\n        value: function(rowIndex, cellIndex) {\r\n            return this._groupedStrategy.getGroupIndex(rowIndex, cellIndex)\r\n        }\r\n    }, {\r\n        key: \"_getTableAllDay\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"calculateEndDate\",\r\n        value: function(startDate) {\r\n            var result = new Date(startDate);\r\n            result.setMilliseconds(result.getMilliseconds() + Math.round(this._getInterval()));\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getGroupCount\",\r\n        value: function() {\r\n            var groups = this.option(\"groups\");\r\n            var result = 0;\r\n            for (var i = 0, len = groups.length; i < len; i++) {\r\n                if (!i) {\r\n                    result = groups[i].items.length\r\n                } else {\r\n                    result *= groups[i].items.length\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getPathToLeaf\",\r\n        value: function(leafIndex) {\r\n            var tree = this.invoke(\"createResourcesTree\", this.option(\"groups\"));\r\n\r\n            function findLeafByIndex(data, index) {\r\n                for (var i = 0; i < data.length; i++) {\r\n                    if (data[i].leafIndex === index) {\r\n                        return data[i]\r\n                    } else {\r\n                        var _leaf = findLeafByIndex(data[i].children, index);\r\n                        if (_leaf) {\r\n                            return _leaf\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            function makeBranch(leaf, result) {\r\n                result = result || [];\r\n                result.push(leaf.value);\r\n                if (leaf.parent) {\r\n                    makeBranch(leaf.parent, result)\r\n                }\r\n                return result\r\n            }\r\n            var leaf = findLeafByIndex(tree, leafIndex);\r\n            return makeBranch(leaf).reverse()\r\n        }\r\n    }, {\r\n        key: \"_getCellGroups\",\r\n        value: function(groupIndex) {\r\n            var result = [];\r\n            if (this._getGroupCount()) {\r\n                var groups = this.option(\"groups\");\r\n                if (groupIndex < 0) {\r\n                    return\r\n                }\r\n                var path = this._getPathToLeaf(groupIndex);\r\n                for (var i = 0; i < groups.length; i++) {\r\n                    result.push({\r\n                        name: groups[i].name,\r\n                        id: path[i]\r\n                    })\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_attachTablesEvents\",\r\n        value: function() {\r\n            var _this8 = this;\r\n            var that = this;\r\n            var isPointerDown = false;\r\n            var cellHeight;\r\n            var cellWidth;\r\n            var $element = this.$element();\r\n            _events_engine.default.off($element, SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME);\r\n            _events_engine.default.off($element, SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME);\r\n            _events_engine.default.off($element, SCHEDULER_CELL_DXDROP_EVENT_NAME);\r\n            _events_engine.default.off($element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME);\r\n            _events_engine.default.off($element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME);\r\n            _events_engine.default.on($element, SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, {\r\n                itemSizeFunc: function($element) {\r\n                    if (!cellHeight) {\r\n                        cellHeight = (0, _position.getBoundingRect)($element.get(0)).height\r\n                    }\r\n                    if (!cellWidth) {\r\n                        cellWidth = (0, _position.getBoundingRect)($element.get(0)).width\r\n                    }\r\n                    return {\r\n                        width: cellWidth,\r\n                        height: cellHeight\r\n                    }\r\n                },\r\n                checkDropTarget: function(target, event) {\r\n                    return !_this8._isOutsideScrollable(target, event)\r\n                }\r\n            }, function(e) {\r\n                if (that._$currentTableTarget) {\r\n                    that.removeDroppableCellClass(that._$currentTableTarget)\r\n                }\r\n                that._$currentTableTarget = (0, _renderer.default)(e.target);\r\n                that._$currentTableTarget.addClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n            });\r\n            _events_engine.default.on($element, SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME, function(e) {\r\n                if (!$element.find((0, _renderer.default)(e.draggingElement)).length) {\r\n                    that.removeDroppableCellClass()\r\n                }\r\n            });\r\n            _events_engine.default.on($element, SCHEDULER_CELL_DXDROP_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n                that.removeDroppableCellClass((0, _renderer.default)(e.target));\r\n                cellHeight = 0;\r\n                cellWidth = 0\r\n            });\r\n            _events_engine.default.on($element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n                if ((0, _index.isMouseEvent)(e) && 1 === e.which) {\r\n                    isPointerDown = true;\r\n                    that.$element().addClass(WORKSPACE_WITH_MOUSE_SELECTION_CLASS);\r\n                    _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);\r\n                    _events_engine.default.on(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME, function() {\r\n                        isPointerDown = false;\r\n                        that.$element().removeClass(WORKSPACE_WITH_MOUSE_SELECTION_CLASS);\r\n                    })\r\n                }\r\n            });\r\n            _events_engine.default.on($element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n                if (isPointerDown && that._dateTableScrollable && !that._dateTableScrollable.option(\"scrollByContent\")) {\r\n                    e.preventDefault();\r\n                    e.stopPropagation();\r\n                    that._moveToCell((0, _renderer.default)(e.target), true)\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getDateTables\",\r\n        value: function() {\r\n            return this._$dateTable.add(this._$allDayTable)\r\n        }\r\n    }, {\r\n        key: \"_getDateTable\",\r\n        value: function() {\r\n            return this._$dateTable\r\n        }\r\n    }, {\r\n        key: \"_getAllDayTable\",\r\n        value: function() {\r\n            return this._$allDayTable\r\n        }\r\n    }, {\r\n        key: \"_getInterval\",\r\n        value: function() {\r\n            if (void 0 === this._interval) {\r\n                this._interval = this.option(\"hoursInterval\") * HOUR_MS\r\n            }\r\n            return this._interval\r\n        }\r\n    }, {\r\n        key: \"_getHeaderText\",\r\n        value: function(headerIndex) {\r\n            return _date2.default.format(this._getDateForHeaderText(headerIndex), this._getFormat())\r\n        }\r\n    }, {\r\n        key: \"_getDateForHeaderText\",\r\n        value: function(index) {\r\n            return this._getDateByIndex(index)\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndex\",\r\n        value: function() {\r\n            return abstract()\r\n        }\r\n    }, {\r\n        key: \"_getFormat\",\r\n        value: function() {\r\n            return abstract()\r\n        }\r\n    }, {\r\n        key: \"_calculateCellIndex\",\r\n        value: function(rowIndex, cellIndex) {\r\n            return this._groupedStrategy.calculateCellIndex(rowIndex, cellIndex)\r\n        }\r\n    }, {\r\n        key: \"_renderTableBody\",\r\n        value: function(options, delayCellTemplateRendering) {\r\n            var result = [];\r\n            if (!delayCellTemplateRendering) {\r\n                this._applyCellTemplates(tableCreator.makeTable(options))\r\n            } else {\r\n                result = tableCreator.makeTable(options)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_removeAllDayElements\",\r\n        value: function() {\r\n            this._$allDayTable && this._$allDayTable.remove();\r\n            this._$allDayTitle && this._$allDayTitle.remove()\r\n        }\r\n    }, {\r\n        key: \"_cleanView\",\r\n        value: function() {\r\n            var _this$virtualSelectio2;\r\n            this.cache.clear();\r\n            this._cleanAllowedPositions();\r\n            null === (_this$virtualSelectio2 = this.virtualSelectionState) || void 0 === _this$virtualSelectio2 ? void 0 : _this$virtualSelectio2.releaseSelectedAndFocusedCells();\r\n            this._$thead.empty();\r\n            this._$dateTable.empty();\r\n            this._shader && this._shader.clean();\r\n            this._$timePanel.empty();\r\n            this._$allDayTable && this._$allDayTable.empty();\r\n            this._$groupTable.empty();\r\n            delete this._hiddenInterval;\r\n            delete this._interval\r\n        }\r\n    }, {\r\n        key: \"_clean\",\r\n        value: function() {\r\n            _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);\r\n            _get(_getPrototypeOf(SchedulerWorkSpace.prototype), \"_clean\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_disposeRenovatedComponents\",\r\n        value: function() {\r\n            var _this$renovatedAllDay, _this$renovatedDateTa, _this$renovatedTimePa;\r\n            null === (_this$renovatedAllDay = this.renovatedAllDayPanel) || void 0 === _this$renovatedAllDay ? void 0 : _this$renovatedAllDay.dispose();\r\n            this.renovatedAllDayPanel = void 0;\r\n            null === (_this$renovatedDateTa = this.renovatedDateTable) || void 0 === _this$renovatedDateTa ? void 0 : _this$renovatedDateTa.dispose();\r\n            this.renovatedDateTable = void 0;\r\n            null === (_this$renovatedTimePa = this.renovatedTimePanel) || void 0 === _this$renovatedTimePa ? void 0 : _this$renovatedTimePa.dispose();\r\n            this.renovatedTimePanel = void 0\r\n        }\r\n    }, {\r\n        key: \"getWorkArea\",\r\n        value: function() {\r\n            return this._dateTableScrollable.$content()\r\n        }\r\n    }, {\r\n        key: \"getScrollable\",\r\n        value: function() {\r\n            return this._dateTableScrollable\r\n        }\r\n    }, {\r\n        key: \"getScrollableScrollTop\",\r\n        value: function() {\r\n            return this._dateTableScrollable.scrollTop()\r\n        }\r\n    }, {\r\n        key: \"getGroupedScrollableScrollTop\",\r\n        value: function(allDay) {\r\n            return this._groupedStrategy.getScrollableScrollTop(allDay)\r\n        }\r\n    }, {\r\n        key: \"getScrollableScrollLeft\",\r\n        value: function() {\r\n            return this._dateTableScrollable.scrollLeft()\r\n        }\r\n    }, {\r\n        key: \"getScrollableOuterWidth\",\r\n        value: function() {\r\n            return this._dateTableScrollable.scrollWidth()\r\n        }\r\n    }, {\r\n        key: \"getScrollableContainer\",\r\n        value: function() {\r\n            return this._dateTableScrollable._container()\r\n        }\r\n    }, {\r\n        key: \"getHeaderPanelHeight\",\r\n        value: function() {\r\n            return this._$headerPanel && this._$headerPanel.outerHeight(true)\r\n        }\r\n    }, {\r\n        key: \"getTimePanelWidth\",\r\n        value: function() {\r\n            return this._$timePanel && (0, _position.getBoundingRect)(this._$timePanel.get(0)).width\r\n        }\r\n    }, {\r\n        key: \"getGroupTableWidth\",\r\n        value: function() {\r\n            return this._$groupTable ? this._$groupTable.outerWidth() : 0\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceLeftOffset\",\r\n        value: function() {\r\n            return this._groupedStrategy.getLeftOffset()\r\n        }\r\n    }, {\r\n        key: \"getGroupedStrategy\",\r\n        value: function() {\r\n            return this._groupedStrategy\r\n        }\r\n    }, {\r\n        key: \"_getCellCoordinatesByIndex\",\r\n        value: function(index) {\r\n            var cellIndex = Math.floor(index / this._getRowCount());\r\n            var rowIndex = index - this._getRowCount() * cellIndex;\r\n            return {\r\n                cellIndex: cellIndex,\r\n                rowIndex: rowIndex\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getDateByCellIndexes\",\r\n        value: function(rowIndex, cellIndex, patchedIndexes) {\r\n            cellIndex = !patchedIndexes ? this._patchCellIndex(cellIndex) : cellIndex;\r\n            var firstViewDate = this.getStartViewDate();\r\n            var currentDate = new Date(firstViewDate.getTime() + this._getMillisecondsOffset(rowIndex, cellIndex) + this._getOffsetByCount(cellIndex));\r\n            currentDate.setTime(currentDate.getTime() + _date.default.getTimezonesDifference(firstViewDate, currentDate));\r\n            return currentDate\r\n        }\r\n    }, {\r\n        key: \"_patchCellIndex\",\r\n        value: function(cellIndex) {\r\n            if (this.isGroupedByDate()) {\r\n                cellIndex = Math.floor(cellIndex / this._getGroupCount())\r\n            }\r\n            return cellIndex\r\n        }\r\n    }, {\r\n        key: \"_getOffsetByCount\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"_getMillisecondsOffset\",\r\n        value: function(rowIndex, cellIndex) {\r\n            return this._getInterval() * this._calculateCellIndex(rowIndex, cellIndex) + this._calculateHiddenInterval(rowIndex, cellIndex)\r\n        }\r\n    }, {\r\n        key: \"_calculateHiddenInterval\",\r\n        value: function(rowIndex, cellIndex) {\r\n            var dayCount = cellIndex % this._getCellCount();\r\n            return dayCount * this._getHiddenInterval()\r\n        }\r\n    }, {\r\n        key: \"_getHiddenInterval\",\r\n        value: function() {\r\n            if (void 0 === this._hiddenInterval) {\r\n                this._hiddenInterval = DAY_MS - this.getVisibleDayDuration()\r\n            }\r\n            return this._hiddenInterval\r\n        }\r\n    }, {\r\n        key: \"_getIntervalBetween\",\r\n        value: function(currentDate, allDay) {\r\n            var firstViewDate = this.getStartViewDate();\r\n            var startDayTime = this.option(\"startDayHour\") * HOUR_MS;\r\n            var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n            var fullInterval = currentDate.getTime() - firstViewDate.getTime() - timeZoneOffset;\r\n            var days = this._getDaysOfInterval(fullInterval, startDayTime);\r\n            var weekendsCount = this._getWeekendsCount(days);\r\n            var result = (days - weekendsCount) * DAY_MS;\r\n            if (!allDay) {\r\n                result = fullInterval - days * this._getHiddenInterval() - weekendsCount * this.getVisibleDayDuration()\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getWeekendsCount\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"_getDaysOfInterval\",\r\n        value: function(fullInterval, startDayTime) {\r\n            return Math.floor((fullInterval + startDayTime) / DAY_MS)\r\n        }\r\n    }, {\r\n        key: \"_getGroupIndexes\",\r\n        value: function(appointmentResources) {\r\n            var result = [];\r\n            if (this._isGroupsSpecified(appointmentResources)) {\r\n                var tree = this.invoke(\"createResourcesTree\", this.option(\"groups\"));\r\n                result = this.invoke(\"getResourceTreeLeaves\", tree, appointmentResources)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_updateIndex\",\r\n        value: function(index) {\r\n            return index * this._getRowCount()\r\n        }\r\n    }, {\r\n        key: \"_getDroppableCell\",\r\n        value: function() {\r\n            return this._getDateTables().find(\".\" + DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getWorkSpaceWidth\",\r\n        value: function() {\r\n            var _this9 = this;\r\n            return this.cache.get(\"workspaceWidth\", function() {\r\n                if (_this9._needCreateCrossScrolling()) {\r\n                    return (0, _position.getBoundingRect)(_this9._$dateTable.get(0)).width\r\n                }\r\n                return (0, _position.getBoundingRect)(_this9.$element().get(0)).width - _this9.getTimePanelWidth()\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getCellPositionByIndex\",\r\n        value: function(index, groupIndex, inAllDayRow) {\r\n            var cellCoordinates = this._getCellCoordinatesByIndex(index);\r\n            var $cell = this._getCellByCoordinates(cellCoordinates, groupIndex, inAllDayRow);\r\n            return this._getCellPositionWithCache($cell, cellCoordinates, groupIndex)\r\n        }\r\n    }, {\r\n        key: \"_getCellPositionWithCache\",\r\n        value: function($cell, cellCoordinates, groupIndex) {\r\n            var result = this._getCellPosition($cell);\r\n            this.setCellDataCache(cellCoordinates, groupIndex, $cell);\r\n            if (result) {\r\n                result.rowIndex = cellCoordinates.rowIndex;\r\n                result.cellIndex = cellCoordinates.cellIndex\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getCellPosition\",\r\n        value: function($cell) {\r\n            var position = $cell.position();\r\n            if (this.option(\"rtlEnabled\")) {\r\n                position.left += (0, _position.getBoundingRect)($cell.get(0)).width\r\n            }\r\n            return position\r\n        }\r\n    }, {\r\n        key: \"_getCellByCoordinates\",\r\n        value: function(cellCoordinates, groupIndex, inAllDayRow) {\r\n            var indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex, inAllDayRow);\r\n            return this._dom_getDateCell(indexes)\r\n        }\r\n    }, {\r\n        key: \"_dom_getDateCell\",\r\n        value: function(position) {\r\n            return this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).eq(position.rowIndex).find(\"td\").eq(position.cellIndex)\r\n        }\r\n    }, {\r\n        key: \"_dom_getAllDayPanelCell\",\r\n        value: function(cellIndex) {\r\n            return this._$allDayPanel.find(\"tr\").eq(0).find(\"td\").eq(cellIndex)\r\n        }\r\n    }, {\r\n        key: \"_getCells\",\r\n        value: function(allDay, direction) {\r\n            var cellClass = allDay ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;\r\n            if (\"vertical\" === direction) {\r\n                var result = [];\r\n                for (var i = 1;; i++) {\r\n                    var cells = this.$element().find(\"tr .\".concat(cellClass, \":nth-child(\").concat(i, \")\"));\r\n                    if (!cells.length) {\r\n                        break\r\n                    }\r\n                    result = result.concat(cells.toArray())\r\n                }\r\n                return (0, _renderer.default)(result)\r\n            } else {\r\n                return this.$element().find(\".\" + cellClass)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getAllCells\",\r\n        value: function(allDay) {\r\n            if (this._isVerticalGroupedWorkSpace()) {\r\n                return this._$dateTable.find(\"td\")\r\n            }\r\n            var cellClass = allDay && this.supportAllDayRow() ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;\r\n            return this.$element().find(\".\" + cellClass)\r\n        }\r\n    }, {\r\n        key: \"_setHorizontalGroupHeaderCellsHeight\",\r\n        value: function() {\r\n            var height = (0, _position.getBoundingRect)(this._$dateTable.get(0)).height;\r\n            this._$groupTable.outerHeight(height)\r\n        }\r\n    }, {\r\n        key: \"_getDateTableBorder\",\r\n        value: function() {\r\n            return DATE_TABLE_CELL_BORDER\r\n        }\r\n    }, {\r\n        key: \"_getDateTableBorderOffset\",\r\n        value: function() {\r\n            return 2 * this._getDateTableBorder()\r\n        }\r\n    }, {\r\n        key: \"_getGroupHeaderCellsContent\",\r\n        value: function() {\r\n            return this.$element().find(\".\" + GROUP_HEADER_CONTENT_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getGroupHeaderCells\",\r\n        value: function() {\r\n            return this.$element().find(\".\" + GROUP_HEADER_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getScrollCoordinates\",\r\n        value: function(hours, minutes, date, groupIndex, allDay) {\r\n            var currentDate = date || new Date(this.option(\"currentDate\"));\r\n            var startDayHour = this.option(\"startDayHour\");\r\n            var endDayHour = this.option(\"endDayHour\");\r\n            if (hours < startDayHour) {\r\n                hours = startDayHour\r\n            }\r\n            if (hours >= endDayHour) {\r\n                hours = endDayHour - 1\r\n            }\r\n            currentDate.setHours(hours, minutes, 0, 0);\r\n            if (!this.isVirtualScrolling()) {\r\n                return this.getCoordinatesByDate(currentDate, groupIndex, allDay)\r\n            }\r\n            var cell = this.viewDataProvider.findGlobalCellPosition(currentDate, groupIndex, allDay);\r\n            var position = cell.position,\r\n                cellData = cell.cellData;\r\n            return this.virtualScrollingDispatcher.calculateCoordinatesByDataAndPosition(cellData, position, currentDate)\r\n        }\r\n    }, {\r\n        key: \"_isOutsideScrollable\",\r\n        value: function(target, event) {\r\n            var $dateTableScrollableElement = this._dateTableScrollable.$element();\r\n            var scrollableSize = (0, _position.getBoundingRect)($dateTableScrollableElement.get(0));\r\n            var window = (0, _window.getWindow)();\r\n            var isTargetInAllDayPanel = !(0, _renderer.default)(target).closest($dateTableScrollableElement).length;\r\n            var isOutsideHorizontalScrollable = event.pageX < scrollableSize.left || event.pageX > scrollableSize.left + scrollableSize.width + (window.scrollX || 0);\r\n            var isOutsideVerticalScrollable = event.pageY < scrollableSize.top || event.pageY > scrollableSize.top + scrollableSize.height + (window.scrollY || 0);\r\n            if (isTargetInAllDayPanel && !isOutsideHorizontalScrollable) {\r\n                return false\r\n            }\r\n            return isOutsideVerticalScrollable || isOutsideHorizontalScrollable\r\n        }\r\n    }, {\r\n        key: \"setCellDataCache\",\r\n        value: function(cellCoordinates, groupIndex, $cell) {\r\n            var key = JSON.stringify({\r\n                rowIndex: cellCoordinates.rowIndex,\r\n                cellIndex: cellCoordinates.cellIndex,\r\n                groupIndex: groupIndex\r\n            });\r\n            this.cache.set(key, this.getCellData($cell))\r\n        }\r\n    }, {\r\n        key: \"setCellDataCacheAlias\",\r\n        value: function(appointment, geometry) {\r\n            var key = JSON.stringify({\r\n                rowIndex: appointment.rowIndex,\r\n                cellIndex: appointment.cellIndex,\r\n                groupIndex: appointment.groupIndex\r\n            });\r\n            var aliasKey = JSON.stringify({\r\n                top: geometry.top,\r\n                left: geometry.left\r\n            });\r\n            this.cache.set(aliasKey, this.cache.get(key))\r\n        }\r\n    }, {\r\n        key: \"_cleanAllowedPositions\",\r\n        value: function() {\r\n            this._maxAllowedVerticalPosition = [];\r\n            this._maxAllowedPosition = []\r\n        }\r\n    }, {\r\n        key: \"supportAllDayRow\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"keepOriginalHours\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"getSelectedCellData\",\r\n        value: function() {\r\n            if (this.isVirtualScrolling()) {\r\n                return this.virtualSelectionState.getSelectedCells()\r\n            }\r\n            var $focusedCells = this._getAllFocusedCells();\r\n            var result = [];\r\n            if ($focusedCells.length > 1) {\r\n                result = this._getMultipleCellsData($focusedCells)\r\n            } else {\r\n                var data = this.getCellData((0, _renderer.default)($focusedCells[0]));\r\n                data && result.push(data)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getMultipleCellsData\",\r\n        value: function($cells) {\r\n            var data = [];\r\n            for (var i = 0; i < $cells.length; i++) {\r\n                data.push(this.getCellData((0, _renderer.default)($cells[i])))\r\n            }\r\n            return data\r\n        }\r\n    }, {\r\n        key: \"getCellData\",\r\n        value: function($cell) {\r\n            var data;\r\n            var currentCell = $cell[0];\r\n            if (currentCell) {\r\n                if (this.isRenovatedRender()) {\r\n                    data = this._getCellDataInRenovatedView($cell)\r\n                } else {\r\n                    data = (0, _element_data.data)(currentCell, CELL_DATA)\r\n                }\r\n            }\r\n            return (0, _extend.extend)(true, {}, data)\r\n        }\r\n    }, {\r\n        key: \"_getVirtualRowOffset\",\r\n        value: function() {\r\n            return this.isVirtualScrolling() ? this.virtualScrollingDispatcher.getState().topVirtualRowHeight : 0\r\n        }\r\n    }, {\r\n        key: \"_getCellDataInRenovatedView\",\r\n        value: function($cell) {\r\n            var rowIndex = $cell.parent().index();\r\n            this.isVirtualScrolling() && --rowIndex;\r\n            var columnIndex = $cell.index();\r\n            var viewDataProvider = this.viewDataProvider;\r\n            var isAllDayCell = this._hasAllDayClass($cell);\r\n            var cellData = viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell);\r\n            return cellData ? {\r\n                startDate: cellData.startDate,\r\n                endDate: cellData.endDate,\r\n                groups: cellData.groups,\r\n                groupIndex: cellData.groupIndex,\r\n                allDay: cellData.allDay,\r\n                text: cellData.text\r\n            } : void 0\r\n        }\r\n    }, {\r\n        key: \"_getHorizontalMax\",\r\n        value: function(groupIndex) {\r\n            groupIndex = this.isGroupedByDate() ? this._getGroupCount() - 1 : groupIndex;\r\n            return this._groupedStrategy.getHorizontalMax(groupIndex)\r\n        }\r\n    }, {\r\n        key: \"getCoordinatesByDate\",\r\n        value: function(date, groupIndex, inAllDayRow) {\r\n            groupIndex = groupIndex || 0;\r\n            var position;\r\n            var shouldFindPositionByViewData = this.isVirtualScrolling() && (!inAllDayRow || this._isVerticalGroupedWorkSpace());\r\n            if (shouldFindPositionByViewData) {\r\n                var positionByMap = this.viewDataProvider.findCellPositionInMap(groupIndex, date, inAllDayRow);\r\n                if (!positionByMap) {\r\n                    return\r\n                }\r\n                var $cell = this._dom_getDateCell(positionByMap);\r\n                position = this._getCellPositionWithCache($cell, positionByMap, groupIndex)\r\n            } else {\r\n                position = this.calculateCellPositionByView(date, groupIndex, inAllDayRow)\r\n            }\r\n            var shift = this.getPositionShift(inAllDayRow ? 0 : this.getTimeShift(date), inAllDayRow);\r\n            var horizontalHMax = this._getHorizontalMax(groupIndex, date);\r\n            if (!position) {\r\n                throw _ui.default.Error(\"E1039\")\r\n            }\r\n            return {\r\n                cellPosition: position.left + shift.cellPosition,\r\n                top: position.top + shift.top,\r\n                left: position.left + shift.left,\r\n                rowIndex: position.rowIndex,\r\n                cellIndex: position.cellIndex,\r\n                hMax: horizontalHMax,\r\n                vMax: this.getVerticalMax(groupIndex),\r\n                groupIndex: groupIndex\r\n            }\r\n        }\r\n    }, {\r\n        key: \"calculateCellPositionByView\",\r\n        value: function(date, groupIndex, inAllDayRow) {\r\n            var index = this.getCellIndexByDate(date, inAllDayRow);\r\n            var position = this._getCellPositionByIndex(index, groupIndex, inAllDayRow);\r\n            if (position) {\r\n                position.top -= this._getVirtualRowOffset()\r\n            }\r\n            return position\r\n        }\r\n    }, {\r\n        key: \"getVerticalMax\",\r\n        value: function(groupIndex) {\r\n            return this._groupedStrategy.getVerticalMax(groupIndex)\r\n        }\r\n    }, {\r\n        key: \"_getOffsetByAllDayPanel\",\r\n        value: function(groupIndex) {\r\n            return this._groupedStrategy._getOffsetByAllDayPanel(groupIndex)\r\n        }\r\n    }, {\r\n        key: \"_getGroupTop\",\r\n        value: function(groupIndex) {\r\n            return this._groupedStrategy._getGroupTop(groupIndex)\r\n        }\r\n    }, {\r\n        key: \"isGroupedByDate\",\r\n        value: function() {\r\n            return this.option(\"groupByDate\") && this._isHorizontalGroupedWorkSpace() && this._getGroupCount() > 0\r\n        }\r\n    }, {\r\n        key: \"getCellIndexByDate\",\r\n        value: function(date, inAllDayRow) {\r\n            var timeInterval = inAllDayRow ? 864e5 : this._getInterval();\r\n            var dateTimeStamp = this._getIntervalBetween(date, inAllDayRow);\r\n            var index = Math.floor(dateTimeStamp / timeInterval);\r\n            if (inAllDayRow) {\r\n                index = this._updateIndex(index)\r\n            }\r\n            if (index < 0) {\r\n                index = 0\r\n            }\r\n            return index\r\n        }\r\n    }, {\r\n        key: \"getPositionShift\",\r\n        value: function(timeShift, isAllDay) {\r\n            return {\r\n                top: timeShift * this.getCellHeight(),\r\n                left: 0,\r\n                cellPosition: 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getTimeShift\",\r\n        value: function(date) {\r\n            var currentDayStart = new Date(date);\r\n            var cellDuration = this.getCellDuration();\r\n            var currentDayEndHour = new Date(new Date(date).setHours(this.option(\"endDayHour\"), 0, 0));\r\n            if (date.getTime() <= currentDayEndHour.getTime()) {\r\n                currentDayStart.setHours(this.option(\"startDayHour\"), 0, 0, 0)\r\n            }\r\n            var currentDateTime = date.getTime();\r\n            var currentDayStartTime = currentDayStart.getTime();\r\n            var minTime = this._firstViewDate.getTime();\r\n            return currentDateTime > minTime ? (currentDateTime - currentDayStartTime) % cellDuration / cellDuration : 0\r\n        }\r\n    }, {\r\n        key: \"_isSkippedData\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"getCoordinatesByDateInGroup\",\r\n        value: function(startDate, appointmentResources, inAllDayRow) {\r\n            var _this10 = this;\r\n            var result = [];\r\n            if (this._isSkippedData(startDate)) {\r\n                return result\r\n            }\r\n            var groupIndices = this._getGroupCount() ? this._getGroupIndexes(appointmentResources) : [0];\r\n            groupIndices.forEach(function(groupIndex) {\r\n                var coordinates = _this10.getCoordinatesByDate(startDate, groupIndex, inAllDayRow);\r\n                coordinates && result.push(coordinates)\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getDroppableCellIndex\",\r\n        value: function() {\r\n            var $droppableCell = this._getDroppableCell();\r\n            var $row = $droppableCell.parent();\r\n            var rowIndex = $row.index();\r\n            return rowIndex * $row.find(\"td\").length + $droppableCell.index()\r\n        }\r\n    }, {\r\n        key: \"getDataByDroppableCell\",\r\n        value: function() {\r\n            var cellData = this.getCellData((0, _renderer.default)(this._getDroppableCell()));\r\n            var allDay = cellData.allDay;\r\n            var startDate = cellData.startDate;\r\n            var endDate = startDate && this.invoke(\"calculateAppointmentEndDate\", allDay, startDate);\r\n            return {\r\n                startDate: startDate,\r\n                endDate: endDate,\r\n                allDay: allDay,\r\n                groups: cellData.groups\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getDateRange\",\r\n        value: function() {\r\n            return [this.getStartViewDate(), this.getEndViewDateByEndDayHour()]\r\n        }\r\n    }, {\r\n        key: \"getCellWidth\",\r\n        value: function() {\r\n            var _this11 = this;\r\n            return this.cache.get(\"cellWidth\", function() {\r\n                var cell = _this11._getCells().first().get(0);\r\n                return cell && (0, _position.getBoundingRect)(cell).width\r\n            })\r\n        }\r\n    }, {\r\n        key: \"getCellMinWidth\",\r\n        value: function() {\r\n            return DATE_TABLE_MIN_CELL_WIDTH\r\n        }\r\n    }, {\r\n        key: \"getRoundedCellWidth\",\r\n        value: function(groupIndex, startIndex, cellCount) {\r\n            if (groupIndex < 0) {\r\n                return 0\r\n            }\r\n            var $row = this.$element().find(\".\" + this._getDateTableRowClass()).eq(0);\r\n            var width = 0;\r\n            var $cells = $row.find(\".\" + DATE_TABLE_CELL_CLASS);\r\n            var totalCellCount = this._getCellCount() * groupIndex;\r\n            cellCount = cellCount || this._getCellCount();\r\n            if (!(0, _type.isDefined)(startIndex)) {\r\n                startIndex = totalCellCount\r\n            }\r\n            for (var i = startIndex; i < totalCellCount + cellCount; i++) {\r\n                width += (0, _position.getBoundingRect)((0, _renderer.default)($cells).eq(i).get(0)).width\r\n            }\r\n            return width / (totalCellCount + cellCount - startIndex)\r\n        }\r\n    }, {\r\n        key: \"getCellHeight\",\r\n        value: function() {\r\n            var _this12 = this;\r\n            var useCache = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n            var callbackResult = function() {\r\n                var cell = _this12._getCells().first().get(0);\r\n                return cell && (0, _position.getBoundingRect)(cell).height\r\n            };\r\n            return useCache ? this.cache.get(\"cellHeight\", callbackResult) : callbackResult()\r\n        }\r\n    }, {\r\n        key: \"getAllDayHeight\",\r\n        value: function() {\r\n            var cell = this._getCells(true).first().get(0);\r\n            return this._isShowAllDayPanel() ? cell && (0, _position.getBoundingRect)(cell).height || 0 : 0\r\n        }\r\n    }, {\r\n        key: \"getAllDayOffset\",\r\n        value: function() {\r\n            return this._groupedStrategy.getAllDayOffset()\r\n        }\r\n    }, {\r\n        key: \"getMaxAllowedPosition\",\r\n        value: function() {\r\n            if (0 === this._maxAllowedPosition.length) {\r\n                var isRtl = this.option(\"rtlEnabled\");\r\n                this._maxAllowedPosition = [];\r\n                this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).first().find(\"td:nth-child(\".concat(this._getCellCount(), \"n)\")).each(function(_, cell) {\r\n                    var maxPosition = (0, _renderer.default)(cell).position().left;\r\n                    if (!isRtl) {\r\n                        maxPosition += (0, _position.getBoundingRect)(cell).width\r\n                    }\r\n                    this._maxAllowedPosition.push(Math.round(maxPosition))\r\n                }.bind(this))\r\n            }\r\n            return this._maxAllowedPosition\r\n        }\r\n    }, {\r\n        key: \"getMaxAllowedVerticalPosition\",\r\n        value: function(groupIndex) {\r\n            if (this.isVirtualScrolling()) {\r\n                return this.getMaxAllowedVerticalPositionVirtual(groupIndex)\r\n            }\r\n            return this.getMaxAllowedVerticalPositionStandard(groupIndex)\r\n        }\r\n    }, {\r\n        key: \"getMaxAllowedVerticalPositionStandard\",\r\n        value: function(groupIndex) {\r\n            var _this13 = this;\r\n            if (0 === this._maxAllowedVerticalPosition.length) {\r\n                var rowCount = this._getRowCount();\r\n                this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \"):nth-child(\").concat(rowCount, \"n)\")).each(function(_, row) {\r\n                    var maxPosition = (0, _renderer.default)(row).position().top + (0, _position.getBoundingRect)(row).height;\r\n                    _this13._maxAllowedVerticalPosition.push(Math.round(maxPosition))\r\n                })\r\n            }\r\n            return this._maxAllowedVerticalPosition[groupIndex]\r\n        }\r\n    }, {\r\n        key: \"getMaxAllowedVerticalPositionVirtual\",\r\n        value: function(groupIndex) {\r\n            var _this14 = this;\r\n            var getMaxPosition = function(rowIndex) {\r\n                var row = _this14._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).get(rowIndex);\r\n                var maxPosition = (0, _renderer.default)(row).position().top + (0, _position.getBoundingRect)(row).height;\r\n                if (_this14.isGroupedAllDayPanel()) {\r\n                    maxPosition -= (groupIndex + 1) * _this14.getAllDayHeight()\r\n                }\r\n                _this14._maxAllowedVerticalPosition[groupIndex] = Math.round(maxPosition)\r\n            };\r\n            if (!this._maxAllowedVerticalPosition[groupIndex]) {\r\n                var _this$viewDataProvide = this.viewDataProvider.getLasGroupCellPosition(groupIndex),\r\n                    rowIndex = _this$viewDataProvide.rowIndex;\r\n                getMaxPosition(rowIndex)\r\n            }\r\n            return this._maxAllowedVerticalPosition[groupIndex]\r\n        }\r\n    }, {\r\n        key: \"getFixedContainer\",\r\n        value: function() {\r\n            return this._$fixedContainer\r\n        }\r\n    }, {\r\n        key: \"getAllDayContainer\",\r\n        value: function() {\r\n            return this._$allDayContainer\r\n        }\r\n    }, {\r\n        key: \"getCellIndexByCoordinates\",\r\n        value: function(coordinates, allDay) {\r\n            var cellCount = this._getTotalCellCount(this._getGroupCount());\r\n            var cellWidth = Math.floor(this._getWorkSpaceWidth() / cellCount);\r\n            var cellHeight = allDay ? this.getAllDayHeight() : this.getCellHeight();\r\n            var leftOffset = this._isRTL() || this.option(\"crossScrollingEnabled\") ? 0 : this.getWorkSpaceLeftOffset();\r\n            var topIndex = Math.floor(Math.floor(coordinates.top) / Math.floor(cellHeight));\r\n            var leftIndex = Math.floor((coordinates.left + 5 - leftOffset) / cellWidth);\r\n            if (this._isRTL()) {\r\n                leftIndex = cellCount - leftIndex - 1\r\n            }\r\n            return cellCount * topIndex + leftIndex\r\n        }\r\n    }, {\r\n        key: \"getStartViewDate\",\r\n        value: function() {\r\n            return this._firstViewDate\r\n        }\r\n    }, {\r\n        key: \"getEndViewDate\",\r\n        value: function() {\r\n            var dateOfLastViewCell = this.getDateOfLastViewCell();\r\n            var endDateOfLastViewCell = this.calculateEndViewDate(dateOfLastViewCell);\r\n            return this._adjustEndViewDateByDaylightDiff(dateOfLastViewCell, endDateOfLastViewCell)\r\n        }\r\n    }, {\r\n        key: \"getEndViewDateByEndDayHour\",\r\n        value: function() {\r\n            var dateOfLastViewCell = this.getDateOfLastViewCell();\r\n            var endTime = _date.default.dateTimeFromDecimal(this.option(\"endDayHour\"));\r\n            var endDateOfLastViewCell = new Date(dateOfLastViewCell.setHours(endTime.hours, endTime.minutes));\r\n            return this._adjustEndViewDateByDaylightDiff(dateOfLastViewCell, endDateOfLastViewCell)\r\n        }\r\n    }, {\r\n        key: \"calculateEndViewDate\",\r\n        value: function(dateOfLastViewCell) {\r\n            return new Date(dateOfLastViewCell.getTime() + this.getCellDuration())\r\n        }\r\n    }, {\r\n        key: \"_adjustEndViewDateByDaylightDiff\",\r\n        value: function(startDate, endDate) {\r\n            var daylightDiff = _utils.default.getDaylightOffsetInMs(startDate, endDate);\r\n            var endDateOfLastViewCell = new Date(endDate.getTime() - daylightDiff);\r\n            return new Date(endDateOfLastViewCell.getTime() - toMs(\"minute\"))\r\n        }\r\n    }, {\r\n        key: \"getDateOfLastViewCell\",\r\n        value: function() {\r\n            var rowIndex = this._getRowCount() - 1;\r\n            var cellIndex = this._getCellCount();\r\n            if (this.isGroupedByDate()) {\r\n                cellIndex = cellIndex * this._getGroupCount() - 1\r\n            } else {\r\n                cellIndex -= 1\r\n            }\r\n            return this._getDateByCellIndexes(rowIndex, cellIndex, true)\r\n        }\r\n    }, {\r\n        key: \"getCellDuration\",\r\n        value: function() {\r\n            return 36e5 * this.option(\"hoursInterval\")\r\n        }\r\n    }, {\r\n        key: \"getIntervalDuration\",\r\n        value: function(allDay) {\r\n            return allDay ? toMs(\"day\") : this.getCellDuration()\r\n        }\r\n    }, {\r\n        key: \"getVisibleDayDuration\",\r\n        value: function() {\r\n            return this.option(\"hoursInterval\") * this._getCellCountInDay() * HOUR_MS\r\n        }\r\n    }, {\r\n        key: \"getGroupBounds\",\r\n        value: function(coordinates) {\r\n            var cellCount = this._getCellCount();\r\n            var $cells = this._getCells();\r\n            var cellWidth = this.getCellWidth();\r\n            var result = this._groupedStrategy.getGroupBoundsOffset(cellCount, $cells, cellWidth, coordinates);\r\n            if (this._isRTL()) {\r\n                var startOffset = result.left;\r\n                result.left = result.right - 2 * cellWidth;\r\n                result.right = startOffset + 2 * cellWidth\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"needRecalculateResizableArea\",\r\n        value: function() {\r\n            return this._isVerticalGroupedWorkSpace() && 0 !== this.getScrollable().scrollTop()\r\n        }\r\n    }, {\r\n        key: \"getCellDataByCoordinates\",\r\n        value: function(coordinates, allDay) {\r\n            var _this15 = this;\r\n            var key = JSON.stringify({\r\n                top: coordinates.top,\r\n                left: coordinates.left\r\n            });\r\n            return this.cache.get(key, function() {\r\n                var $cells = _this15._getCells(allDay);\r\n                var cellIndex = _this15.getCellIndexByCoordinates(coordinates, allDay);\r\n                var $cell = $cells.eq(cellIndex);\r\n                return _this15.getCellData($cell)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"getVisibleBounds\",\r\n        value: function() {\r\n            var result = {};\r\n            var $scrollable = this.getScrollable().$element();\r\n            var cellHeight = this.getCellHeight();\r\n            var scrolledCellCount = this.getScrollableScrollTop() / cellHeight;\r\n            var totalCellCount = scrolledCellCount + $scrollable.height() / cellHeight;\r\n            result.top = {\r\n                hours: Math.floor(scrolledCellCount * this.option(\"hoursInterval\")) + this.option(\"startDayHour\"),\r\n                minutes: scrolledCellCount % 2 ? 30 : 0\r\n            };\r\n            result.bottom = {\r\n                hours: Math.floor(totalCellCount * this.option(\"hoursInterval\")) + this.option(\"startDayHour\"),\r\n                minutes: Math.floor(totalCellCount) % 2 ? 30 : 0\r\n            };\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"updateScrollPosition\",\r\n        value: function(date, groups) {\r\n            var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n            var scheduler = this.option(\"observer\");\r\n            var newDate = scheduler.timeZoneCalculator.createDate(date, {\r\n                path: \"toGrid\"\r\n            });\r\n            var inAllDayRow = allDay && this.supportAllDayRow() && this._isShowAllDayPanel();\r\n            if (this.needUpdateScrollPosition(newDate, groups, inAllDayRow)) {\r\n                this.scrollTo(newDate, groups, inAllDayRow, false)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"needUpdateScrollPosition\",\r\n        value: function(date, groups, inAllDayRow) {\r\n            var _this16 = this;\r\n            var cells = this._getCellsInViewport(inAllDayRow);\r\n            var groupIndex = this._isGroupsSpecified(groups) ? this._getGroupIndexByResourceId(groups) : 0;\r\n            var time = date.getTime();\r\n            var trimmedTime = _date.default.trimTime(date).getTime();\r\n            return cells.reduce(function(currentResult, cell) {\r\n                var _this16$getCellData = _this16.getCellData(cell),\r\n                    cellStartDate = _this16$getCellData.startDate,\r\n                    cellEndDate = _this16$getCellData.endDate,\r\n                    cellGroupIndex = _this16$getCellData.groupIndex;\r\n                var cellStartTime = cellStartDate.getTime();\r\n                var cellEndTime = cellEndDate.getTime();\r\n                if ((!inAllDayRow && cellStartTime <= time && time < cellEndTime || inAllDayRow && trimmedTime === cellStartTime) && groupIndex === cellGroupIndex) {\r\n                    return false\r\n                }\r\n                return currentResult\r\n            }, true)\r\n        }\r\n    }, {\r\n        key: \"_getCellsInViewport\",\r\n        value: function(inAllDayRow) {\r\n            var $scrollable = this.getScrollable().$element();\r\n            var cellHeight = this.getCellHeight();\r\n            var cellWidth = this.getCellWidth();\r\n            var totalColumnCount = this._getTotalCellCount(this._getGroupCount());\r\n            var scrollableScrollTop = this.getScrollableScrollTop();\r\n            var scrollableScrollLeft = this.getScrollableScrollLeft();\r\n            var fullScrolledRowCount = scrollableScrollTop / cellHeight;\r\n            if (this.isVirtualScrolling()) {\r\n                var virtualScrollingState = this.virtualScrollingDispatcher.getState();\r\n                fullScrolledRowCount -= virtualScrollingState.topVirtualRowCount\r\n            }\r\n            var scrolledRowCount = Math.floor(fullScrolledRowCount);\r\n            if (scrollableScrollTop % cellHeight !== 0) {\r\n                scrolledRowCount += 1\r\n            }\r\n            var fullScrolledColumnCount = scrollableScrollLeft / cellWidth;\r\n            var scrolledColumnCount = Math.floor(fullScrolledColumnCount);\r\n            if (scrollableScrollLeft % cellWidth !== 0) {\r\n                scrolledColumnCount += 1\r\n            }\r\n            var rowCount = Math.floor(fullScrolledRowCount + $scrollable.height() / cellHeight);\r\n            var columnCount = Math.floor(fullScrolledColumnCount + $scrollable.width() / cellWidth);\r\n            var $cells = this._getAllCells(inAllDayRow);\r\n            var result = [];\r\n            $cells.each(function(index) {\r\n                var $cell = (0, _renderer.default)(this);\r\n                var columnIndex = index % totalColumnCount;\r\n                var rowIndex = index / totalColumnCount;\r\n                if (scrolledColumnCount <= columnIndex && columnIndex < columnCount && scrolledRowCount <= rowIndex && rowIndex < rowCount) {\r\n                    result.push($cell)\r\n                }\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getGroupWidth\",\r\n        value: function(groupIndex) {\r\n            var result = this._getCellCount() * this.getCellWidth();\r\n            var position = this.getMaxAllowedPosition();\r\n            var currentPosition = position[groupIndex];\r\n            if (position.length && currentPosition) {\r\n                if (this._isRTL()) {\r\n                    result = currentPosition - position[groupIndex + 1]\r\n                } else {\r\n                    if (0 === groupIndex) {\r\n                        result = currentPosition\r\n                    } else {\r\n                        result = currentPosition - position[groupIndex - 1]\r\n                    }\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"scrollToTime\",\r\n        value: function(hours, minutes, date) {\r\n            if (!this._isValidScrollDate(date)) {\r\n                return\r\n            }\r\n            var coordinates = this._getScrollCoordinates(hours, minutes, date);\r\n            var scrollable = this.getScrollable();\r\n            scrollable.scrollBy({\r\n                top: coordinates.top - scrollable.scrollTop(),\r\n                left: 0\r\n            })\r\n        }\r\n    }, {\r\n        key: \"scrollTo\",\r\n        value: function(date, groups) {\r\n            var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n            var throwWarning = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n            if (!this._isValidScrollDate(date, throwWarning)) {\r\n                return\r\n            }\r\n            var groupIndex = this._getGroupCount() && groups ? this._getGroupIndexByResourceId(groups) : 0;\r\n            var isScrollToAllDay = allDay && this.supportAllDayRow() && this._isShowAllDayPanel();\r\n            var coordinates = this._getScrollCoordinates(date.getHours(), date.getMinutes(), date, groupIndex, isScrollToAllDay);\r\n            var scrollable = this.getScrollable();\r\n            var $scrollable = scrollable.$element();\r\n            var offset = this.option(\"rtlEnabled\") ? this.getCellWidth() : 0;\r\n            var scrollableHeight = $scrollable.height();\r\n            var scrollableWidth = $scrollable.width();\r\n            var cellWidth = this.getCellWidth();\r\n            var cellHeight = this.getCellHeight();\r\n            var xShift = (scrollableWidth - cellWidth) / 2;\r\n            var yShift = (scrollableHeight - cellHeight) / 2;\r\n            var left = coordinates.left - scrollable.scrollLeft() - xShift - offset;\r\n            var top = coordinates.top - scrollable.scrollTop() - yShift;\r\n            if (isScrollToAllDay && !this._isVerticalGroupedWorkSpace()) {\r\n                top = 0\r\n            }\r\n            if (this.option(\"templatesRenderAsynchronously\")) {\r\n                setTimeout(function() {\r\n                    scrollable.scrollBy({\r\n                        left: left,\r\n                        top: top\r\n                    })\r\n                })\r\n            } else {\r\n                scrollable.scrollBy({\r\n                    left: left,\r\n                    top: top\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isValidScrollDate\",\r\n        value: function(date) {\r\n            var throwWarning = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;\r\n            var min = this.getStartViewDate();\r\n            var max = this.getEndViewDate();\r\n            if (date < min || date > max) {\r\n                throwWarning && _ui.default.log(\"W1008\", date);\r\n                return false\r\n            }\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"getDistanceBetweenCells\",\r\n        value: function(startIndex, endIndex) {\r\n            var result = 0;\r\n            this.$element().find(\".\" + this._getDateTableRowClass()).first().find(\".\" + DATE_TABLE_CELL_CLASS).each(function(index) {\r\n                if (index < startIndex || index > endIndex) {\r\n                    return true\r\n                }\r\n                result += (0, _position.getBoundingRect)(this).width\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"needApplyCollectorOffset\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"initDragBehavior\",\r\n        value: function(scheduler) {\r\n            if (!this.dragBehavior && scheduler) {\r\n                this.dragBehavior = new _appointmentDragBehavior.default(scheduler);\r\n                this.dragBehavior.addTo(this.getWorkArea());\r\n                this.dragBehavior.addTo(this.getAllDayContainer());\r\n                this.dragBehavior.addTo(this._$allDayPanel)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isApplyCompactAppointmentOffset\",\r\n        value: function() {\r\n            return this._supportCompactDropDownAppointments()\r\n        }\r\n    }, {\r\n        key: \"_supportCompactDropDownAppointments\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_formatWeekday\",\r\n        value: function(date) {\r\n            return formatWeekday(date)\r\n        }\r\n    }, {\r\n        key: \"_formatWeekdayAndDay\",\r\n        value: function(date) {\r\n            return formatWeekday(date) + \" \" + _date2.default.format(date, \"day\")\r\n        }\r\n    }, {\r\n        key: \"removeDroppableCellClass\",\r\n        value: function($cellElement) {\r\n            ($cellElement || this._getDroppableCell()).removeClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getCoordinatesByCell\",\r\n        value: function($cell) {\r\n            var columnIndex = $cell.index();\r\n            var rowIndex = $cell.parent().index();\r\n            var isAllDayCell = this._hasAllDayClass($cell);\r\n            var isVerticalGrouping = this._isVerticalGroupedWorkSpace();\r\n            if (this.isVirtualScrolling() && !(isAllDayCell && !isVerticalGrouping)) {\r\n                rowIndex -= 1\r\n            }\r\n            return {\r\n                rowIndex: rowIndex,\r\n                columnIndex: columnIndex\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isShowAllDayPanel\",\r\n        value: function() {\r\n            return this.option(\"showAllDayPanel\")\r\n        }\r\n    }, {\r\n        key: \"viewDataProvider\",\r\n        get: function() {\r\n            if (!this._viewDataProvider) {\r\n                this._viewDataProvider = new _view_data_provider.default(this)\r\n            }\r\n            return this._viewDataProvider\r\n        }\r\n    }, {\r\n        key: \"cache\",\r\n        get: function() {\r\n            return _cache.cache\r\n        }\r\n    }, {\r\n        key: \"virtualSelectionState\",\r\n        get: function() {\r\n            if (!this._virtualSelectionState) {\r\n                this._virtualSelectionState = new _virtual_selection_state.default(this.viewDataProvider)\r\n            }\r\n            return this._virtualSelectionState\r\n        }\r\n    }]);\r\n    return SchedulerWorkSpace\r\n}(_widgetObserver.default);\r\nvar _default = SchedulerWorkSpace;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/size.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.parseHeight = exports.getVisibleHeight = exports.getVerticalOffsets = exports.addOffsetToMinHeight = exports.addOffsetToMaxHeight = exports.getElementBoxParams = exports.getSize = void 0;\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _type = require(\"../utils/type\");\r\nvar window = (0, _window.getWindow)();\r\nvar SPECIAL_HEIGHT_VALUES = [\"auto\", \"none\", \"inherit\", \"initial\"];\r\nvar getSizeByStyles = function(elementStyles, styles) {\r\n    var result = 0;\r\n    styles.forEach(function(style) {\r\n        result += parseFloat(elementStyles[style]) || 0\r\n    });\r\n    return result\r\n};\r\nvar getElementBoxParams = function(name, elementStyles) {\r\n    var beforeName = \"width\" === name ? \"Left\" : \"Top\";\r\n    var afterName = \"width\" === name ? \"Right\" : \"Bottom\";\r\n    return {\r\n        padding: getSizeByStyles(elementStyles, [\"padding\" + beforeName, \"padding\" + afterName]),\r\n        border: getSizeByStyles(elementStyles, [\"border\" + beforeName + \"Width\", \"border\" + afterName + \"Width\"]),\r\n        margin: getSizeByStyles(elementStyles, [\"margin\" + beforeName, \"margin\" + afterName])\r\n    }\r\n};\r\nexports.getElementBoxParams = getElementBoxParams;\r\nvar getBoxSizingOffset = function(name, elementStyles, boxParams) {\r\n    var size = elementStyles[name];\r\n    if (\"border-box\" === elementStyles.boxSizing && size.length && \"%\" !== size[size.length - 1]) {\r\n        return boxParams.border + boxParams.padding\r\n    }\r\n    return 0\r\n};\r\nvar getSize = function(element, name, include) {\r\n    var elementStyles = window.getComputedStyle(element);\r\n    var boxParams = getElementBoxParams(name, elementStyles);\r\n    var clientRect = element.getClientRects().length;\r\n    var boundingClientRect = element.getBoundingClientRect()[name];\r\n    var result = clientRect ? boundingClientRect : 0;\r\n    if (result <= 0) {\r\n        result = parseFloat(elementStyles[name] || element.style[name]) || 0;\r\n        result -= getBoxSizingOffset(name, elementStyles, boxParams)\r\n    } else {\r\n        result -= boxParams.padding + boxParams.border\r\n    }\r\n    if (include.paddings) {\r\n        result += boxParams.padding\r\n    }\r\n    if (include.borders) {\r\n        result += boxParams.border\r\n    }\r\n    if (include.margins) {\r\n        result += boxParams.margin\r\n    }\r\n    return result\r\n};\r\nexports.getSize = getSize;\r\nvar getContainerHeight = function(container) {\r\n    return (0, _type.isWindow)(container) ? container.innerHeight : container.offsetHeight\r\n};\r\nvar parseHeight = function(value, container) {\r\n    if (value.indexOf(\"px\") > 0) {\r\n        value = parseInt(value.replace(\"px\", \"\"))\r\n    } else {\r\n        if (value.indexOf(\"%\") > 0) {\r\n            value = parseInt(value.replace(\"%\", \"\")) * getContainerHeight(container) / 100\r\n        } else {\r\n            if (!isNaN(value)) {\r\n                value = parseInt(value)\r\n            }\r\n        }\r\n    }\r\n    return value\r\n};\r\nexports.parseHeight = parseHeight;\r\nvar getHeightWithOffset = function(value, offset, container) {\r\n    if (!value) {\r\n        return null\r\n    }\r\n    if (SPECIAL_HEIGHT_VALUES.indexOf(value) > -1) {\r\n        return offset ? null : value\r\n    }\r\n    if ((0, _type.isString)(value)) {\r\n        value = parseHeight(value, container)\r\n    }\r\n    if ((0, _type.isNumeric)(value)) {\r\n        return Math.max(0, value + offset)\r\n    }\r\n    var operationString = offset < 0 ? \" - \" : \" \";\r\n    return \"calc(\" + value + operationString + Math.abs(offset) + \"px)\"\r\n};\r\nvar addOffsetToMaxHeight = function(value, offset, container) {\r\n    var maxHeight = getHeightWithOffset(value, offset, container);\r\n    return null !== maxHeight ? maxHeight : \"none\"\r\n};\r\nexports.addOffsetToMaxHeight = addOffsetToMaxHeight;\r\nvar addOffsetToMinHeight = function(value, offset, container) {\r\n    var minHeight = getHeightWithOffset(value, offset, container);\r\n    return null !== minHeight ? minHeight : 0\r\n};\r\nexports.addOffsetToMinHeight = addOffsetToMinHeight;\r\nvar getVerticalOffsets = function(element, withMargins) {\r\n    if (!element) {\r\n        return 0\r\n    }\r\n    var boxParams = getElementBoxParams(\"height\", window.getComputedStyle(element));\r\n    return boxParams.padding + boxParams.border + (withMargins ? boxParams.margin : 0)\r\n};\r\nexports.getVerticalOffsets = getVerticalOffsets;\r\nvar getVisibleHeight = function(element) {\r\n    if (element) {\r\n        var boundingClientRect = element.getBoundingClientRect();\r\n        if (boundingClientRect.height) {\r\n            return boundingClientRect.height\r\n        }\r\n    }\r\n    return 0\r\n};\r\nexports.getVisibleHeight = getVisibleHeight;\r\n","/**\r\n * DevExtreme (ui/map/provider.dynamic.bing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _provider = _interopRequireDefault(require(\"./provider.dynamic\"));\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\nvar _ajax = _interopRequireDefault(require(\"../../core/utils/ajax\"));\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar BING_MAP_READY = \"_bingScriptReady\";\r\nvar BING_URL_V8 = \"https://www.bing.com/api/maps/mapcontrol?callback=\" + BING_MAP_READY;\r\nvar INFOBOX_V_OFFSET_V8 = 13;\r\nvar BING_CREDENTIALS = \"AhuxC0dQ1DBTNo8L-H9ToVMQStmizZzBJdraTSgCzDSWPsA1Qd8uIvFSflzxdaLH\";\r\nvar MIN_LOCATION_RECT_LENGTH = 1e-16;\r\nvar msMapsLoaded = function() {\r\n    return window.Microsoft && window.Microsoft.Maps\r\n};\r\nvar msMapsLoader;\r\nvar BingProvider = _provider.default.inherit({\r\n    _mapType: function(type) {\r\n        var mapTypes = {\r\n            roadmap: Microsoft.Maps.MapTypeId.road,\r\n            hybrid: Microsoft.Maps.MapTypeId.aerial,\r\n            satellite: Microsoft.Maps.MapTypeId.aerial\r\n        };\r\n        return mapTypes[type] || mapTypes.road\r\n    },\r\n    _movementMode: function(type) {\r\n        var movementTypes = {\r\n            driving: Microsoft.Maps.Directions.RouteMode.driving,\r\n            walking: Microsoft.Maps.Directions.RouteMode.walking\r\n        };\r\n        return movementTypes[type] || movementTypes.driving\r\n    },\r\n    _resolveLocation: function(location) {\r\n        return new _promise.default(function(resolve) {\r\n            var latLng = this._getLatLng(location);\r\n            if (latLng) {\r\n                resolve(new Microsoft.Maps.Location(latLng.lat, latLng.lng))\r\n            } else {\r\n                this._geocodeLocation(location).then(function(geocodedLocation) {\r\n                    resolve(geocodedLocation)\r\n                })\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _geocodedLocations: {},\r\n    _geocodeLocationImpl: function(location) {\r\n        return new _promise.default(function(resolve) {\r\n            if (!(0, _type.isDefined)(location)) {\r\n                resolve(new Microsoft.Maps.Location(0, 0));\r\n                return\r\n            }\r\n            var searchManager = new Microsoft.Maps.Search.SearchManager(this._map);\r\n            var searchRequest = {\r\n                where: location,\r\n                count: 1,\r\n                callback: function(searchResponse) {\r\n                    var result = searchResponse.results[0];\r\n                    if (result) {\r\n                        var boundsBox = searchResponse.results[0].location;\r\n                        resolve(new Microsoft.Maps.Location(boundsBox.latitude, boundsBox.longitude))\r\n                    } else {\r\n                        resolve(new Microsoft.Maps.Location(0, 0))\r\n                    }\r\n                }\r\n            };\r\n            searchManager.geocode(searchRequest)\r\n        }.bind(this))\r\n    },\r\n    _normalizeLocation: function(location) {\r\n        return {\r\n            lat: location.latitude,\r\n            lng: location.longitude\r\n        }\r\n    },\r\n    _normalizeLocationRect: function(locationRect) {\r\n        var northWest = this._normalizeLocation(locationRect.getNorthwest());\r\n        var southEast = this._normalizeLocation(locationRect.getSoutheast());\r\n        return {\r\n            northEast: {\r\n                lat: northWest.lat,\r\n                lng: southEast.lng\r\n            },\r\n            southWest: {\r\n                lat: southEast.lat,\r\n                lng: northWest.lng\r\n            }\r\n        }\r\n    },\r\n    _loadImpl: function() {\r\n        return new _promise.default(function(resolve) {\r\n            if (msMapsLoaded()) {\r\n                resolve()\r\n            } else {\r\n                if (!msMapsLoader) {\r\n                    msMapsLoader = this._loadMapScript()\r\n                }\r\n                msMapsLoader.then(function() {\r\n                    if (msMapsLoaded()) {\r\n                        resolve();\r\n                        return\r\n                    }\r\n                    this._loadMapScript().then(resolve)\r\n                }.bind(this))\r\n            }\r\n        }.bind(this)).then(function() {\r\n            return _promise.default.all([new _promise.default(function(resolve) {\r\n                Microsoft.Maps.loadModule(\"Microsoft.Maps.Search\", {\r\n                    callback: resolve\r\n                })\r\n            }), new _promise.default(function(resolve) {\r\n                Microsoft.Maps.loadModule(\"Microsoft.Maps.Directions\", {\r\n                    callback: resolve\r\n                })\r\n            })])\r\n        })\r\n    },\r\n    _loadMapScript: function() {\r\n        return new _promise.default(function(resolve) {\r\n            window[BING_MAP_READY] = resolve;\r\n            _ajax.default.sendRequest({\r\n                url: BING_URL_V8,\r\n                dataType: \"script\"\r\n            })\r\n        }).then(function() {\r\n            try {\r\n                delete window[BING_MAP_READY]\r\n            } catch (e) {\r\n                window[BING_MAP_READY] = void 0\r\n            }\r\n        })\r\n    },\r\n    _init: function() {\r\n        this._createMap();\r\n        return _promise.default.resolve()\r\n    },\r\n    _createMap: function() {\r\n        var controls = this._option(\"controls\");\r\n        this._map = new Microsoft.Maps.Map(this._$container[0], {\r\n            credentials: this._keyOption(\"bing\") || BING_CREDENTIALS,\r\n            zoom: this._option(\"zoom\"),\r\n            showDashboard: controls,\r\n            showMapTypeSelector: controls,\r\n            showScalebar: controls\r\n        })\r\n    },\r\n    _attachHandlers: function() {\r\n        this._providerViewChangeHandler = Microsoft.Maps.Events.addHandler(this._map, \"viewchange\", this._viewChangeHandler.bind(this));\r\n        this._providerClickHandler = Microsoft.Maps.Events.addHandler(this._map, \"click\", this._clickActionHandler.bind(this))\r\n    },\r\n    _viewChangeHandler: function() {\r\n        var bounds = this._map.getBounds();\r\n        this._option(\"bounds\", this._normalizeLocationRect(bounds));\r\n        var center = this._map.getCenter();\r\n        this._option(\"center\", this._normalizeLocation(center));\r\n        if (!this._preventZoomChangeEvent) {\r\n            this._option(\"zoom\", this._map.getZoom())\r\n        }\r\n    },\r\n    _clickActionHandler: function(e) {\r\n        if (\"map\" === e.targetType) {\r\n            this._fireClickAction({\r\n                location: this._normalizeLocation(e.location)\r\n            })\r\n        }\r\n    },\r\n    updateDimensions: function() {\r\n        var $container = this._$container;\r\n        this._map.setOptions({\r\n            width: $container.width(),\r\n            height: $container.height()\r\n        });\r\n        return _promise.default.resolve()\r\n    },\r\n    updateMapType: function() {\r\n        var type = this._option(\"type\");\r\n        var labelOverlay = Microsoft.Maps.LabelOverlay;\r\n        this._map.setView({\r\n            animate: false,\r\n            mapTypeId: this._mapType(type),\r\n            labelOverlay: \"satellite\" === type ? labelOverlay.hidden : labelOverlay.visible\r\n        });\r\n        return _promise.default.resolve()\r\n    },\r\n    updateBounds: function() {\r\n        return _promise.default.all([this._resolveLocation(this._option(\"bounds.northEast\")), this._resolveLocation(this._option(\"bounds.southWest\"))]).then(function(result) {\r\n            var bounds = new Microsoft.Maps.LocationRect.fromLocations(result[0], result[1]);\r\n            this._map.setView({\r\n                animate: false,\r\n                bounds: bounds\r\n            })\r\n        }.bind(this))\r\n    },\r\n    updateCenter: function() {\r\n        return this._resolveLocation(this._option(\"center\")).then(function(center) {\r\n            this._map.setView({\r\n                animate: false,\r\n                center: center\r\n            })\r\n        }.bind(this))\r\n    },\r\n    updateZoom: function() {\r\n        this._map.setView({\r\n            animate: false,\r\n            zoom: this._option(\"zoom\")\r\n        });\r\n        return _promise.default.resolve()\r\n    },\r\n    updateControls: function() {\r\n        this.clean();\r\n        return this.render.apply(this, arguments)\r\n    },\r\n    _renderMarker: function(options) {\r\n        return this._resolveLocation(options.location).then(function(location) {\r\n            var pushpinOptions = {\r\n                icon: options.iconSrc || this._option(\"markerIconSrc\")\r\n            };\r\n            if (options.html) {\r\n                (0, _extend.extend)(pushpinOptions, {\r\n                    htmlContent: options.html,\r\n                    width: null,\r\n                    height: null\r\n                });\r\n                var htmlOffset = options.htmlOffset;\r\n                if (htmlOffset) {\r\n                    pushpinOptions.anchor = new Microsoft.Maps.Point((-htmlOffset.left), (-htmlOffset.top))\r\n                }\r\n            }\r\n            var pushpin = new Microsoft.Maps.Pushpin(location, pushpinOptions);\r\n            this._map.entities.push(pushpin);\r\n            var infobox = this._renderTooltip(location, options.tooltip);\r\n            var handler;\r\n            if (options.onClick || options.tooltip) {\r\n                var markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop);\r\n                var markerNormalizedLocation = this._normalizeLocation(location);\r\n                handler = Microsoft.Maps.Events.addHandler(pushpin, \"click\", function() {\r\n                    markerClickAction({\r\n                        location: markerNormalizedLocation\r\n                    });\r\n                    if (infobox) {\r\n                        infobox.setOptions({\r\n                            visible: true\r\n                        })\r\n                    }\r\n                })\r\n            }\r\n            return {\r\n                location: location,\r\n                marker: pushpin,\r\n                infobox: infobox,\r\n                handler: handler\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _renderTooltip: function(location, options) {\r\n        if (!options) {\r\n            return\r\n        }\r\n        options = this._parseTooltipOptions(options);\r\n        var infobox = new Microsoft.Maps.Infobox(location, {\r\n            description: options.text,\r\n            offset: new Microsoft.Maps.Point(0, INFOBOX_V_OFFSET_V8),\r\n            visible: options.visible\r\n        });\r\n        infobox.setMap(this._map);\r\n        return infobox\r\n    },\r\n    _destroyMarker: function(marker) {\r\n        this._map.entities.remove(marker.marker);\r\n        if (marker.infobox) {\r\n            marker.infobox.setMap(null)\r\n        }\r\n        if (marker.handler) {\r\n            Microsoft.Maps.Events.removeHandler(marker.handler)\r\n        }\r\n    },\r\n    _renderRoute: function(options) {\r\n        return _promise.default.all((0, _iterator.map)(options.locations, function(point) {\r\n            return this._resolveLocation(point)\r\n        }.bind(this))).then(function(locations) {\r\n            return new _promise.default(function(resolve) {\r\n                var direction = new Microsoft.Maps.Directions.DirectionsManager(this._map);\r\n                var color = new _color.default(options.color || this._defaultRouteColor()).toHex();\r\n                var routeColor = new Microsoft.Maps.Color.fromHex(color);\r\n                routeColor.a = 255 * (options.opacity || this._defaultRouteOpacity());\r\n                direction.setRenderOptions({\r\n                    autoUpdateMapView: false,\r\n                    displayRouteSelector: false,\r\n                    waypointPushpinOptions: {\r\n                        visible: false\r\n                    },\r\n                    drivingPolylineOptions: {\r\n                        strokeColor: routeColor,\r\n                        strokeThickness: options.weight || this._defaultRouteWeight()\r\n                    },\r\n                    walkingPolylineOptions: {\r\n                        strokeColor: routeColor,\r\n                        strokeThickness: options.weight || this._defaultRouteWeight()\r\n                    }\r\n                });\r\n                direction.setRequestOptions({\r\n                    routeMode: this._movementMode(options.mode),\r\n                    routeDraggable: false\r\n                });\r\n                (0, _iterator.each)(locations, function(_, location) {\r\n                    var waypoint = new Microsoft.Maps.Directions.Waypoint({\r\n                        location: location\r\n                    });\r\n                    direction.addWaypoint(waypoint)\r\n                });\r\n                var directionHandlers = [];\r\n                directionHandlers.push(Microsoft.Maps.Events.addHandler(direction, \"directionsUpdated\", function(args) {\r\n                    while (directionHandlers.length) {\r\n                        Microsoft.Maps.Events.removeHandler(directionHandlers.pop())\r\n                    }\r\n                    var routeSummary = args.routeSummary[0];\r\n                    resolve({\r\n                        instance: direction,\r\n                        northEast: routeSummary.northEast,\r\n                        southWest: routeSummary.southWest\r\n                    })\r\n                }));\r\n                directionHandlers.push(Microsoft.Maps.Events.addHandler(direction, \"directionsError\", function(args) {\r\n                    while (directionHandlers.length) {\r\n                        Microsoft.Maps.Events.removeHandler(directionHandlers.pop())\r\n                    }\r\n                    var status = \"RouteResponseCode: \" + args.responseCode + \" - \" + args.message;\r\n                    _ui.default.log(\"W1006\", status);\r\n                    resolve({\r\n                        instance: direction\r\n                    })\r\n                }));\r\n                direction.calculateDirections()\r\n            }.bind(this))\r\n        }.bind(this))\r\n    },\r\n    _destroyRoute: function(routeObject) {\r\n        routeObject.instance.dispose()\r\n    },\r\n    _fitBounds: function() {\r\n        this._updateBounds();\r\n        if (this._bounds && this._option(\"autoAdjust\")) {\r\n            var zoomBeforeFitting = this._map.getZoom();\r\n            this._preventZoomChangeEvent = true;\r\n            var bounds = this._bounds.clone();\r\n            bounds.height = 1.1 * bounds.height;\r\n            bounds.width = 1.1 * bounds.width;\r\n            this._map.setView({\r\n                animate: false,\r\n                bounds: bounds,\r\n                zoom: zoomBeforeFitting\r\n            });\r\n            var zoomAfterFitting = this._map.getZoom();\r\n            if (zoomBeforeFitting < zoomAfterFitting) {\r\n                this._map.setView({\r\n                    animate: false,\r\n                    zoom: zoomBeforeFitting\r\n                })\r\n            } else {\r\n                this._option(\"zoom\", zoomAfterFitting)\r\n            }\r\n            delete this._preventZoomChangeEvent\r\n        }\r\n        return _promise.default.resolve()\r\n    },\r\n    _extendBounds: function(location) {\r\n        if (this._bounds) {\r\n            this._bounds = new Microsoft.Maps.LocationRect.fromLocations(this._bounds.getNorthwest(), this._bounds.getSoutheast(), location)\r\n        } else {\r\n            this._bounds = new Microsoft.Maps.LocationRect(location, MIN_LOCATION_RECT_LENGTH, MIN_LOCATION_RECT_LENGTH)\r\n        }\r\n    },\r\n    clean: function() {\r\n        if (this._map) {\r\n            Microsoft.Maps.Events.removeHandler(this._providerViewChangeHandler);\r\n            Microsoft.Maps.Events.removeHandler(this._providerClickHandler);\r\n            this._clearMarkers();\r\n            this._clearRoutes();\r\n            this._map.dispose()\r\n        }\r\n        return _promise.default.resolve()\r\n    }\r\n});\r\nvar _default = BingProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/time_panel/cell.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.TimePanelCell = TimePanelCell;\r\nexports.TimePanelCellProps = exports.viewFunction = void 0;\r\nvar _cell = require(\"../cell\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_cell.CellBase, _extends({}, viewModel.restAttributes, {\r\n        isFirstGroupCell: viewModel.props.isFirstGroupCell,\r\n        isLastGroupCell: viewModel.props.isLastGroupCell,\r\n        contentTemplate: viewModel.props.timeCellTemplate,\r\n        contentTemplateProps: viewModel.timeCellTemplateProps,\r\n        className: \"dx-scheduler-time-panel-cell dx-scheduler-cell-sizes-vertical \".concat(viewModel.props.className)\r\n    }), Preact.h(\"div\", null, viewModel.props.text))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar TimePanelCellProps = _objectSpread({}, _cell.CellBaseProps);\r\nexports.TimePanelCellProps = TimePanelCellProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction TimePanelCell(props) {\r\n    var __timeCellTemplateProps = (0, _hooks.useCallback)(function() {\r\n        var groupIndex = props.groupIndex,\r\n            groups = props.groups,\r\n            index = props.index,\r\n            startDate = props.startDate,\r\n            text = props.text;\r\n        return {\r\n            data: {\r\n                date: startDate,\r\n                groups: groups,\r\n                groupIndex: groupIndex,\r\n                text: text\r\n            },\r\n            index: index\r\n        }\r\n    }, [props.groupIndex, props.groups, props.index, props.startDate, props.text]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.allDay, props.children, props.className, props.contentTemplate, props.contentTemplateProps, props.endDate, props.groupIndex, props.groups, props.index, props.isFirstGroupCell, props.isLastGroupCell, props.startDate, props.text, props.timeCellTemplate, _objectWithoutProperties(props, [\"allDay\", \"children\", \"className\", \"contentTemplate\", \"contentTemplateProps\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\", \"timeCellTemplate\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            timeCellTemplate: getTemplate(props.timeCellTemplate),\r\n            contentTemplate: getTemplate(props.contentTemplate)\r\n        }),\r\n        timeCellTemplateProps: __timeCellTemplateProps(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nTimePanelCell.defaultProps = _objectSpread({}, TimePanelCellProps);\r\n","/**\r\n * DevExtreme (ui/validation_engine.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _events_strategy = require(\"../core/events_strategy\");\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _number = _interopRequireDefault(require(\"../localization/number\"));\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _promise = _interopRequireDefault(require(\"../core/polyfills/promise\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar STATUS = {\r\n    valid: \"valid\",\r\n    invalid: \"invalid\",\r\n    pending: \"pending\"\r\n};\r\nvar BaseRuleValidator = function() {\r\n    function BaseRuleValidator() {\r\n        _classCallCheck(this, BaseRuleValidator);\r\n        this.NAME = \"base\"\r\n    }\r\n    _createClass(BaseRuleValidator, [{\r\n        key: \"defaultMessage\",\r\n        value: function(value) {\r\n            return _message.default.getFormatter(\"validation-\".concat(this.NAME))(value)\r\n        }\r\n    }, {\r\n        key: \"defaultFormattedMessage\",\r\n        value: function(value) {\r\n            return _message.default.getFormatter(\"validation-\".concat(this.NAME, \"-formatted\"))(value)\r\n        }\r\n    }, {\r\n        key: \"_isValueEmpty\",\r\n        value: function(value) {\r\n            return !rulesValidators.required.validate(value, {})\r\n        }\r\n    }, {\r\n        key: \"validate\",\r\n        value: function(value, rule) {\r\n            var _this = this;\r\n            var valueArray = Array.isArray(value) ? value : [value];\r\n            var result = true;\r\n            if (valueArray.length) {\r\n                valueArray.every(function(itemValue) {\r\n                    result = _this._validate(itemValue, rule);\r\n                    return result\r\n                })\r\n            } else {\r\n                result = this._validate(null, rule)\r\n            }\r\n            return result\r\n        }\r\n    }]);\r\n    return BaseRuleValidator\r\n}();\r\nvar RequiredRuleValidator = function(_BaseRuleValidator) {\r\n    _inherits(RequiredRuleValidator, _BaseRuleValidator);\r\n    var _super = _createSuper(RequiredRuleValidator);\r\n\r\n    function RequiredRuleValidator() {\r\n        var _this2;\r\n        _classCallCheck(this, RequiredRuleValidator);\r\n        _this2 = _super.call(this);\r\n        _this2.NAME = \"required\";\r\n        return _this2\r\n    }\r\n    _createClass(RequiredRuleValidator, [{\r\n        key: \"_validate\",\r\n        value: function(value, rule) {\r\n            if (!(0, _type.isDefined)(value)) {\r\n                return false\r\n            }\r\n            if (false === value) {\r\n                return false\r\n            }\r\n            value = String(value);\r\n            if (rule.trim || !(0, _type.isDefined)(rule.trim)) {\r\n                value = value.trim()\r\n            }\r\n            return \"\" !== value\r\n        }\r\n    }]);\r\n    return RequiredRuleValidator\r\n}(BaseRuleValidator);\r\nvar NumericRuleValidator = function(_BaseRuleValidator2) {\r\n    _inherits(NumericRuleValidator, _BaseRuleValidator2);\r\n    var _super2 = _createSuper(NumericRuleValidator);\r\n\r\n    function NumericRuleValidator() {\r\n        var _this3;\r\n        _classCallCheck(this, NumericRuleValidator);\r\n        _this3 = _super2.call(this);\r\n        _this3.NAME = \"numeric\";\r\n        return _this3\r\n    }\r\n    _createClass(NumericRuleValidator, [{\r\n        key: \"_validate\",\r\n        value: function(value, rule) {\r\n            if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n                return true\r\n            }\r\n            if (rule.useCultureSettings && (0, _type.isString)(value)) {\r\n                return !isNaN(_number.default.parse(value))\r\n            } else {\r\n                return (0, _type.isNumeric)(value)\r\n            }\r\n        }\r\n    }]);\r\n    return NumericRuleValidator\r\n}(BaseRuleValidator);\r\nvar RangeRuleValidator = function(_BaseRuleValidator3) {\r\n    _inherits(RangeRuleValidator, _BaseRuleValidator3);\r\n    var _super3 = _createSuper(RangeRuleValidator);\r\n\r\n    function RangeRuleValidator() {\r\n        var _this4;\r\n        _classCallCheck(this, RangeRuleValidator);\r\n        _this4 = _super3.call(this);\r\n        _this4.NAME = \"range\";\r\n        return _this4\r\n    }\r\n    _createClass(RangeRuleValidator, [{\r\n        key: \"_validate\",\r\n        value: function(value, rule) {\r\n            if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n                return true\r\n            }\r\n            var validNumber = rulesValidators.numeric.validate(value, rule);\r\n            var validValue = (0, _type.isDefined)(value) && \"\" !== value;\r\n            var number = validNumber ? parseFloat(value) : validValue && value.valueOf();\r\n            var min = rule.min;\r\n            var max = rule.max;\r\n            if (!(validNumber || (0, _type.isDate)(value)) && !validValue) {\r\n                return false\r\n            }\r\n            if ((0, _type.isDefined)(min)) {\r\n                if ((0, _type.isDefined)(max)) {\r\n                    return number >= min && number <= max\r\n                }\r\n                return number >= min\r\n            } else {\r\n                if ((0, _type.isDefined)(max)) {\r\n                    return number <= max\r\n                } else {\r\n                    throw _errors.default.Error(\"E0101\")\r\n                }\r\n            }\r\n        }\r\n    }]);\r\n    return RangeRuleValidator\r\n}(BaseRuleValidator);\r\nvar StringLengthRuleValidator = function(_BaseRuleValidator4) {\r\n    _inherits(StringLengthRuleValidator, _BaseRuleValidator4);\r\n    var _super4 = _createSuper(StringLengthRuleValidator);\r\n\r\n    function StringLengthRuleValidator() {\r\n        var _this5;\r\n        _classCallCheck(this, StringLengthRuleValidator);\r\n        _this5 = _super4.call(this);\r\n        _this5.NAME = \"stringLength\";\r\n        return _this5\r\n    }\r\n    _createClass(StringLengthRuleValidator, [{\r\n        key: \"_validate\",\r\n        value: function(value, rule) {\r\n            value = (0, _type.isDefined)(value) ? String(value) : \"\";\r\n            if (rule.trim || !(0, _type.isDefined)(rule.trim)) {\r\n                value = value.trim()\r\n            }\r\n            if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n                return true\r\n            }\r\n            return rulesValidators.range.validate(value.length, (0, _extend.extend)({}, rule))\r\n        }\r\n    }]);\r\n    return StringLengthRuleValidator\r\n}(BaseRuleValidator);\r\nvar CustomRuleValidator = function(_BaseRuleValidator5) {\r\n    _inherits(CustomRuleValidator, _BaseRuleValidator5);\r\n    var _super5 = _createSuper(CustomRuleValidator);\r\n\r\n    function CustomRuleValidator() {\r\n        var _this6;\r\n        _classCallCheck(this, CustomRuleValidator);\r\n        _this6 = _super5.call(this);\r\n        _this6.NAME = \"custom\";\r\n        return _this6\r\n    }\r\n    _createClass(CustomRuleValidator, [{\r\n        key: \"validate\",\r\n        value: function(value, rule) {\r\n            if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n                return true\r\n            }\r\n            var validator = rule.validator;\r\n            var dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option(\"dataGetter\");\r\n            var extraParams = (0, _type.isFunction)(dataGetter) && dataGetter();\r\n            var params = {\r\n                value: value,\r\n                validator: validator,\r\n                rule: rule\r\n            };\r\n            if (extraParams) {\r\n                (0, _extend.extend)(params, extraParams)\r\n            }\r\n            return rule.validationCallback(params)\r\n        }\r\n    }]);\r\n    return CustomRuleValidator\r\n}(BaseRuleValidator);\r\nvar AsyncRuleValidator = function(_CustomRuleValidator) {\r\n    _inherits(AsyncRuleValidator, _CustomRuleValidator);\r\n    var _super6 = _createSuper(AsyncRuleValidator);\r\n\r\n    function AsyncRuleValidator() {\r\n        var _this7;\r\n        _classCallCheck(this, AsyncRuleValidator);\r\n        _this7 = _super6.call(this);\r\n        _this7.NAME = \"async\";\r\n        return _this7\r\n    }\r\n    _createClass(AsyncRuleValidator, [{\r\n        key: \"validate\",\r\n        value: function(value, rule) {\r\n            if (!(0, _type.isDefined)(rule.reevaluate)) {\r\n                (0, _extend.extend)(rule, {\r\n                    reevaluate: true\r\n                })\r\n            }\r\n            if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n                return true\r\n            }\r\n            var validator = rule.validator;\r\n            var dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option(\"dataGetter\");\r\n            var extraParams = (0, _type.isFunction)(dataGetter) && dataGetter();\r\n            var params = {\r\n                value: value,\r\n                validator: validator,\r\n                rule: rule\r\n            };\r\n            if (extraParams) {\r\n                (0, _extend.extend)(params, extraParams)\r\n            }\r\n            var callbackResult = rule.validationCallback(params);\r\n            if (!(0, _type.isPromise)(callbackResult)) {\r\n                throw _errors.default.Error(\"E0103\")\r\n            }\r\n            return this._getWrappedPromise((0, _deferred.fromPromise)(callbackResult).promise())\r\n        }\r\n    }, {\r\n        key: \"_getWrappedPromise\",\r\n        value: function(promise) {\r\n            var deferred = new _deferred.Deferred;\r\n            promise.then(function(res) {\r\n                deferred.resolve(res)\r\n            }, function(err) {\r\n                var res = {\r\n                    isValid: false\r\n                };\r\n                if ((0, _type.isDefined)(err)) {\r\n                    if ((0, _type.isString)(err)) {\r\n                        res.message = err\r\n                    } else {\r\n                        if ((0, _type.isObject)(err) && (0, _type.isDefined)(err.message) && (0, _type.isString)(err.message)) {\r\n                            res.message = err.message\r\n                        }\r\n                    }\r\n                }\r\n                deferred.resolve(res)\r\n            });\r\n            return deferred.promise()\r\n        }\r\n    }]);\r\n    return AsyncRuleValidator\r\n}(CustomRuleValidator);\r\nvar CompareRuleValidator = function(_BaseRuleValidator6) {\r\n    _inherits(CompareRuleValidator, _BaseRuleValidator6);\r\n    var _super7 = _createSuper(CompareRuleValidator);\r\n\r\n    function CompareRuleValidator() {\r\n        var _this8;\r\n        _classCallCheck(this, CompareRuleValidator);\r\n        _this8 = _super7.call(this);\r\n        _this8.NAME = \"compare\";\r\n        return _this8\r\n    }\r\n    _createClass(CompareRuleValidator, [{\r\n        key: \"_validate\",\r\n        value: function(value, rule) {\r\n            if (!rule.comparisonTarget) {\r\n                throw _errors.default.Error(\"E0102\")\r\n            }\r\n            if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n                return true\r\n            }(0, _extend.extend)(rule, {\r\n                reevaluate: true\r\n            });\r\n            var otherValue = rule.comparisonTarget();\r\n            var type = rule.comparisonType || \"==\";\r\n            switch (type) {\r\n                case \"==\":\r\n                    return value == otherValue;\r\n                case \"!=\":\r\n                    return value != otherValue;\r\n                case \"===\":\r\n                    return value === otherValue;\r\n                case \"!==\":\r\n                    return value !== otherValue;\r\n                case \">\":\r\n                    return value > otherValue;\r\n                case \">=\":\r\n                    return value >= otherValue;\r\n                case \"<\":\r\n                    return value < otherValue;\r\n                case \"<=\":\r\n                    return value <= otherValue\r\n            }\r\n        }\r\n    }]);\r\n    return CompareRuleValidator\r\n}(BaseRuleValidator);\r\nvar PatternRuleValidator = function(_BaseRuleValidator7) {\r\n    _inherits(PatternRuleValidator, _BaseRuleValidator7);\r\n    var _super8 = _createSuper(PatternRuleValidator);\r\n\r\n    function PatternRuleValidator() {\r\n        var _this9;\r\n        _classCallCheck(this, PatternRuleValidator);\r\n        _this9 = _super8.call(this);\r\n        _this9.NAME = \"pattern\";\r\n        return _this9\r\n    }\r\n    _createClass(PatternRuleValidator, [{\r\n        key: \"_validate\",\r\n        value: function(value, rule) {\r\n            if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n                return true\r\n            }\r\n            var pattern = rule.pattern;\r\n            if ((0, _type.isString)(pattern)) {\r\n                pattern = new RegExp(pattern)\r\n            }\r\n            return pattern.test(value)\r\n        }\r\n    }]);\r\n    return PatternRuleValidator\r\n}(BaseRuleValidator);\r\nvar EmailRuleValidator = function(_BaseRuleValidator8) {\r\n    _inherits(EmailRuleValidator, _BaseRuleValidator8);\r\n    var _super9 = _createSuper(EmailRuleValidator);\r\n\r\n    function EmailRuleValidator() {\r\n        var _this10;\r\n        _classCallCheck(this, EmailRuleValidator);\r\n        _this10 = _super9.call(this);\r\n        _this10.NAME = \"email\";\r\n        return _this10\r\n    }\r\n    _createClass(EmailRuleValidator, [{\r\n        key: \"_validate\",\r\n        value: function(value, rule) {\r\n            if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n                return true\r\n            }\r\n            return rulesValidators.pattern.validate(value, (0, _extend.extend)({}, rule, {\r\n                pattern: /^[\\d\\w._-]+@([\\d\\w._-]+\\.)+[\\w]+$/i\r\n            }))\r\n        }\r\n    }]);\r\n    return EmailRuleValidator\r\n}(BaseRuleValidator);\r\nvar rulesValidators = {\r\n    required: new RequiredRuleValidator,\r\n    numeric: new NumericRuleValidator,\r\n    range: new RangeRuleValidator,\r\n    stringLength: new StringLengthRuleValidator,\r\n    custom: new CustomRuleValidator,\r\n    async: new AsyncRuleValidator,\r\n    compare: new CompareRuleValidator,\r\n    pattern: new PatternRuleValidator,\r\n    email: new EmailRuleValidator\r\n};\r\nvar GroupConfig = _class.default.inherit({\r\n    ctor: function(group) {\r\n        this.group = group;\r\n        this.validators = [];\r\n        this._pendingValidators = [];\r\n        this._onValidatorStatusChanged = this._onValidatorStatusChanged.bind(this);\r\n        this._resetValidationInfo();\r\n        this._eventsStrategy = new _events_strategy.EventsStrategy(this)\r\n    },\r\n    validate: function() {\r\n        var _this11 = this;\r\n        var result = {\r\n            isValid: true,\r\n            brokenRules: [],\r\n            validators: [],\r\n            status: STATUS.valid,\r\n            complete: null\r\n        };\r\n        this._unsubscribeFromAllChangeEvents();\r\n        this._pendingValidators = [];\r\n        this._resetValidationInfo();\r\n        (0, _iterator.each)(this.validators, function(_, validator) {\r\n            var validatorResult = validator.validate();\r\n            result.isValid = result.isValid && validatorResult.isValid;\r\n            if (validatorResult.brokenRules) {\r\n                result.brokenRules = result.brokenRules.concat(validatorResult.brokenRules)\r\n            }\r\n            result.validators.push(validator);\r\n            if (validatorResult.status === STATUS.pending) {\r\n                _this11._addPendingValidator(validator)\r\n            }\r\n            _this11._subscribeToChangeEvents(validator)\r\n        });\r\n        if (this._pendingValidators.length) {\r\n            result.status = STATUS.pending\r\n        } else {\r\n            result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n            this._unsubscribeFromAllChangeEvents();\r\n            this._raiseValidatedEvent(result)\r\n        }\r\n        this._updateValidationInfo(result);\r\n        return (0, _extend.extend)({}, this._validationInfo.result)\r\n    },\r\n    _subscribeToChangeEvents: function(validator) {\r\n        validator.on(\"validating\", this._onValidatorStatusChanged);\r\n        validator.on(\"validated\", this._onValidatorStatusChanged)\r\n    },\r\n    _unsubscribeFromChangeEvents: function(validator) {\r\n        validator.off(\"validating\", this._onValidatorStatusChanged);\r\n        validator.off(\"validated\", this._onValidatorStatusChanged)\r\n    },\r\n    _unsubscribeFromAllChangeEvents: function() {\r\n        var _this12 = this;\r\n        (0, _iterator.each)(this.validators, function(_, validator) {\r\n            _this12._unsubscribeFromChangeEvents(validator)\r\n        })\r\n    },\r\n    _updateValidationInfo: function(result) {\r\n        this._validationInfo.result = result;\r\n        if (result.status !== STATUS.pending) {\r\n            return\r\n        }\r\n        if (!this._validationInfo.deferred) {\r\n            this._validationInfo.deferred = new _deferred.Deferred;\r\n            this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n        }\r\n    },\r\n    _addPendingValidator: function(validator) {\r\n        var foundValidator = (0, _common.grep)(this._pendingValidators, function(val) {\r\n            return val === validator\r\n        })[0];\r\n        if (!foundValidator) {\r\n            this._pendingValidators.push(validator)\r\n        }\r\n    },\r\n    _removePendingValidator: function(validator) {\r\n        var index = (0, _array.inArray)(validator, this._pendingValidators);\r\n        if (index >= 0) {\r\n            this._pendingValidators.splice(index, 1)\r\n        }\r\n    },\r\n    _orderBrokenRules: function(brokenRules) {\r\n        var orderedRules = [];\r\n        (0, _iterator.each)(this.validators, function(_, validator) {\r\n            var foundRules = (0, _common.grep)(brokenRules, function(rule) {\r\n                return rule.validator === validator\r\n            });\r\n            if (foundRules.length) {\r\n                orderedRules = orderedRules.concat(foundRules)\r\n            }\r\n        });\r\n        return orderedRules\r\n    },\r\n    _updateBrokenRules: function(result) {\r\n        if (!this._validationInfo.result) {\r\n            return\r\n        }\r\n        var brokenRules = this._validationInfo.result.brokenRules;\r\n        var rules = (0, _common.grep)(brokenRules, function(rule) {\r\n            return rule.validator !== result.validator\r\n        });\r\n        if (result.brokenRules) {\r\n            brokenRules = rules.concat(result.brokenRules)\r\n        }\r\n        this._validationInfo.result.brokenRules = this._orderBrokenRules(brokenRules)\r\n    },\r\n    _onValidatorStatusChanged: function(result) {\r\n        if (result.status === STATUS.pending) {\r\n            this._addPendingValidator(result.validator);\r\n            return\r\n        }\r\n        this._resolveIfComplete(result)\r\n    },\r\n    _resolveIfComplete: function(result) {\r\n        this._removePendingValidator(result.validator);\r\n        this._updateBrokenRules(result);\r\n        if (!this._pendingValidators.length) {\r\n            this._unsubscribeFromAllChangeEvents();\r\n            if (!this._validationInfo.result) {\r\n                return\r\n            }\r\n            this._validationInfo.result.status = 0 === this._validationInfo.result.brokenRules.length ? STATUS.valid : STATUS.invalid;\r\n            this._validationInfo.result.isValid = this._validationInfo.result.status === STATUS.valid;\r\n            var res = (0, _extend.extend)({}, this._validationInfo.result, {\r\n                complete: null\r\n            });\r\n            var deferred = this._validationInfo.deferred;\r\n            this._resetValidationInfo();\r\n            this._raiseValidatedEvent(res);\r\n            deferred && setTimeout(function() {\r\n                deferred.resolve(res)\r\n            })\r\n        }\r\n    },\r\n    _raiseValidatedEvent: function(result) {\r\n        this._eventsStrategy.fireEvent(\"validated\", [result])\r\n    },\r\n    _resetValidationInfo: function() {\r\n        this._validationInfo = {\r\n            result: null,\r\n            deferred: null\r\n        }\r\n    },\r\n    _synchronizeValidationInfo: function() {\r\n        if (this._validationInfo.result) {\r\n            this._validationInfo.result.validators = this.validators\r\n        }\r\n    },\r\n    removeRegisteredValidator: function(validator) {\r\n        var index = (0, _array.inArray)(validator, this.validators);\r\n        if (index > -1) {\r\n            this.validators.splice(index, 1);\r\n            this._synchronizeValidationInfo();\r\n            this._resolveIfComplete({\r\n                validator: validator\r\n            })\r\n        }\r\n    },\r\n    registerValidator: function(validator) {\r\n        if ((0, _array.inArray)(validator, this.validators) < 0) {\r\n            this.validators.push(validator);\r\n            this._synchronizeValidationInfo()\r\n        }\r\n    },\r\n    reset: function() {\r\n        (0, _iterator.each)(this.validators, function(_, validator) {\r\n            validator.reset()\r\n        });\r\n        this._pendingValidators = [];\r\n        this._resetValidationInfo()\r\n    },\r\n    on: function(eventName, eventHandler) {\r\n        this._eventsStrategy.on(eventName, eventHandler);\r\n        return this\r\n    },\r\n    off: function(eventName, eventHandler) {\r\n        this._eventsStrategy.off(eventName, eventHandler);\r\n        return this\r\n    }\r\n});\r\nvar ValidationEngine = {\r\n    groups: [],\r\n    getGroupConfig: function(group) {\r\n        var result = (0, _common.grep)(this.groups, function(config) {\r\n            return config.group === group\r\n        });\r\n        if (result.length) {\r\n            return result[0]\r\n        }\r\n    },\r\n    findGroup: function($element, model) {\r\n        var $dxGroup = $element.parents(\".dx-validationgroup\").first();\r\n        if ($dxGroup.length) {\r\n            return $dxGroup.dxValidationGroup(\"instance\")\r\n        }\r\n        return model\r\n    },\r\n    initGroups: function() {\r\n        this.groups = [];\r\n        this.addGroup()\r\n    },\r\n    addGroup: function(group) {\r\n        var config = this.getGroupConfig(group);\r\n        if (!config) {\r\n            config = new GroupConfig(group);\r\n            this.groups.push(config)\r\n        }\r\n        return config\r\n    },\r\n    removeGroup: function(group) {\r\n        var config = this.getGroupConfig(group);\r\n        var index = (0, _array.inArray)(config, this.groups);\r\n        if (index > -1) {\r\n            this.groups.splice(index, 1)\r\n        }\r\n        return config\r\n    },\r\n    _setDefaultMessage: function(info) {\r\n        var rule = info.rule,\r\n            validator = info.validator,\r\n            name = info.name;\r\n        if (!(0, _type.isDefined)(rule.message)) {\r\n            if (validator.defaultFormattedMessage && (0, _type.isDefined)(name)) {\r\n                rule.message = validator.defaultFormattedMessage(name)\r\n            } else {\r\n                rule.message = validator.defaultMessage()\r\n            }\r\n        }\r\n    },\r\n    _addBrokenRule: function(info) {\r\n        var result = info.result,\r\n            rule = info.rule;\r\n        if (!result.brokenRule) {\r\n            result.brokenRule = rule\r\n        }\r\n        if (!result.brokenRules) {\r\n            result.brokenRules = []\r\n        }\r\n        result.brokenRules.push(rule)\r\n    },\r\n    validate: function(value, rules, name) {\r\n        var _this13 = this;\r\n        var result = {\r\n            name: name,\r\n            value: value,\r\n            brokenRule: null,\r\n            brokenRules: null,\r\n            isValid: true,\r\n            validationRules: rules,\r\n            pendingRules: null,\r\n            status: STATUS.valid,\r\n            complete: null\r\n        };\r\n        var asyncRuleItems = [];\r\n        (0, _iterator.each)(rules || [], function(_, rule) {\r\n            var ruleValidator = rulesValidators[rule.type];\r\n            var ruleValidationResult;\r\n            if (ruleValidator) {\r\n                if ((0, _type.isDefined)(rule.isValid) && rule.value === value && !rule.reevaluate) {\r\n                    if (!rule.isValid) {\r\n                        result.isValid = false;\r\n                        _this13._addBrokenRule({\r\n                            result: result,\r\n                            rule: rule\r\n                        });\r\n                        return false\r\n                    }\r\n                    return true\r\n                }\r\n                rule.value = value;\r\n                if (\"async\" === rule.type) {\r\n                    asyncRuleItems.push({\r\n                        rule: rule,\r\n                        ruleValidator: ruleValidator\r\n                    });\r\n                    return true\r\n                }\r\n                ruleValidationResult = ruleValidator.validate(value, rule);\r\n                rule.isValid = ruleValidationResult;\r\n                if (!ruleValidationResult) {\r\n                    result.isValid = false;\r\n                    _this13._setDefaultMessage({\r\n                        rule: rule,\r\n                        validator: ruleValidator,\r\n                        name: name\r\n                    });\r\n                    _this13._addBrokenRule({\r\n                        result: result,\r\n                        rule: rule\r\n                    })\r\n                }\r\n                if (!rule.isValid) {\r\n                    return false\r\n                }\r\n            } else {\r\n                throw _errors.default.Error(\"E0100\")\r\n            }\r\n        });\r\n        if (result.isValid && !result.brokenRules && asyncRuleItems.length) {\r\n            result = this._validateAsyncRules({\r\n                value: value,\r\n                items: asyncRuleItems,\r\n                result: result,\r\n                name: name\r\n            })\r\n        }\r\n        result.status = result.pendingRules ? STATUS.pending : result.isValid ? STATUS.valid : STATUS.invalid;\r\n        return result\r\n    },\r\n    _validateAsyncRules: function(_ref) {\r\n        var _this14 = this;\r\n        var result = _ref.result,\r\n            value = _ref.value,\r\n            items = _ref.items,\r\n            name = _ref.name;\r\n        var asyncResults = [];\r\n        (0, _iterator.each)(items, function(_, item) {\r\n            var validateResult = item.ruleValidator.validate(value, item.rule);\r\n            if (!(0, _type.isPromise)(validateResult)) {\r\n                _this14._updateRuleConfig({\r\n                    rule: item.rule,\r\n                    ruleResult: _this14._getPatchedRuleResult(validateResult),\r\n                    validator: item.ruleValidator,\r\n                    name: name\r\n                })\r\n            } else {\r\n                if (!result.pendingRules) {\r\n                    result.pendingRules = []\r\n                }\r\n                result.pendingRules.push(item.rule);\r\n                var asyncResult = validateResult.then(function(res) {\r\n                    var ruleResult = _this14._getPatchedRuleResult(res);\r\n                    _this14._updateRuleConfig({\r\n                        rule: item.rule,\r\n                        ruleResult: ruleResult,\r\n                        validator: item.ruleValidator,\r\n                        name: name\r\n                    });\r\n                    return ruleResult\r\n                });\r\n                asyncResults.push(asyncResult)\r\n            }\r\n        });\r\n        if (asyncResults.length) {\r\n            result.complete = _promise.default.all(asyncResults).then(function(values) {\r\n                return _this14._getAsyncRulesResult({\r\n                    result: result,\r\n                    values: values\r\n                })\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    _updateRuleConfig: function(_ref2) {\r\n        var rule = _ref2.rule,\r\n            ruleResult = _ref2.ruleResult,\r\n            validator = _ref2.validator,\r\n            name = _ref2.name;\r\n        rule.isValid = ruleResult.isValid;\r\n        if (!ruleResult.isValid) {\r\n            if ((0, _type.isDefined)(ruleResult.message) && (0, _type.isString)(ruleResult.message) && ruleResult.message.length) {\r\n                rule.message = ruleResult.message\r\n            } else {\r\n                this._setDefaultMessage({\r\n                    rule: rule,\r\n                    validator: validator,\r\n                    name: name\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _getPatchedRuleResult: function(ruleResult) {\r\n        var result;\r\n        var isValid = true;\r\n        if ((0, _type.isObject)(ruleResult)) {\r\n            result = (0, _extend.extend)({}, ruleResult);\r\n            if (!(0, _type.isDefined)(result.isValid)) {\r\n                result.isValid = isValid\r\n            }\r\n        } else {\r\n            result = {\r\n                isValid: (0, _type.isBoolean)(ruleResult) ? ruleResult : isValid\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _getAsyncRulesResult: function(_ref3) {\r\n        var _this15 = this;\r\n        var values = _ref3.values,\r\n            result = _ref3.result;\r\n        (0, _iterator.each)(values, function(index, val) {\r\n            if (false === val.isValid) {\r\n                result.isValid = val.isValid;\r\n                var rule = result.pendingRules[index];\r\n                _this15._addBrokenRule({\r\n                    result: result,\r\n                    rule: rule\r\n                })\r\n            }\r\n        });\r\n        result.pendingRules = null;\r\n        result.complete = null;\r\n        result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n        return result\r\n    },\r\n    registerValidatorInGroup: function(group, validator) {\r\n        var groupConfig = ValidationEngine.addGroup(group);\r\n        groupConfig.registerValidator.call(groupConfig, validator)\r\n    },\r\n    _shouldRemoveGroup: function(group, validatorsInGroup) {\r\n        var isDefaultGroup = void 0 === group;\r\n        var isValidationGroupInstance = group && \"dxValidationGroup\" === group.NAME;\r\n        return !isDefaultGroup && !isValidationGroupInstance && !validatorsInGroup.length\r\n    },\r\n    removeRegisteredValidator: function(group, validator) {\r\n        var config = ValidationEngine.getGroupConfig(group);\r\n        if (config) {\r\n            config.removeRegisteredValidator.call(config, validator);\r\n            var validatorsInGroup = config.validators;\r\n            if (this._shouldRemoveGroup(group, validatorsInGroup)) {\r\n                this.removeGroup(group)\r\n            }\r\n        }\r\n    },\r\n    initValidationOptions: function(options) {\r\n        var _this16 = this;\r\n        var initedOptions = {};\r\n        if (options) {\r\n            var syncOptions = [\"isValid\", \"validationStatus\", \"validationError\", \"validationErrors\"];\r\n            syncOptions.forEach(function(prop) {\r\n                if (prop in options) {\r\n                    (0, _extend.extend)(initedOptions, _this16.synchronizeValidationOptions({\r\n                        name: prop,\r\n                        value: options[prop]\r\n                    }, options))\r\n                }\r\n            })\r\n        }\r\n        return initedOptions\r\n    },\r\n    synchronizeValidationOptions: function(_ref4, options) {\r\n        var name = _ref4.name,\r\n            value = _ref4.value;\r\n        switch (name) {\r\n            case \"validationStatus\":\r\n                var isValid = value === STATUS.valid || value === STATUS.pending;\r\n                return options.isValid !== isValid ? {\r\n                    isValid: isValid\r\n                } : {};\r\n            case \"isValid\":\r\n                var validationStatus = options.validationStatus;\r\n                var newStatus = validationStatus;\r\n                if (value && validationStatus === STATUS.invalid) {\r\n                    newStatus = STATUS.valid\r\n                } else {\r\n                    if (!value && validationStatus !== STATUS.invalid) {\r\n                        newStatus = STATUS.invalid\r\n                    }\r\n                }\r\n                return newStatus !== validationStatus ? {\r\n                    validationStatus: newStatus\r\n                } : {};\r\n            case \"validationErrors\":\r\n                var validationError = !value || !value.length ? null : value[0];\r\n                return options.validationError !== validationError ? {\r\n                    validationError: validationError\r\n                } : {};\r\n            case \"validationError\":\r\n                var validationErrors = options.validationErrors;\r\n                if (!value && validationErrors) {\r\n                    return {\r\n                        validationErrors: null\r\n                    }\r\n                } else {\r\n                    if (value && !validationErrors) {\r\n                        return {\r\n                            validationErrors: [value]\r\n                        }\r\n                    } else {\r\n                        if (value && validationErrors && value !== validationErrors[0]) {\r\n                            validationErrors[0] = value;\r\n                            return {\r\n                                validationErrors: validationErrors.slice()\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n        }\r\n        return {}\r\n    },\r\n    validateGroup: function(group) {\r\n        var groupConfig = ValidationEngine.getGroupConfig(group);\r\n        if (!groupConfig) {\r\n            throw _errors.default.Error(\"E0110\")\r\n        }\r\n        return groupConfig.validate()\r\n    },\r\n    resetGroup: function(group) {\r\n        var groupConfig = ValidationEngine.getGroupConfig(group);\r\n        if (!groupConfig) {\r\n            throw _errors.default.Error(\"E0110\")\r\n        }\r\n        return groupConfig.reset()\r\n    }\r\n};\r\nValidationEngine.initGroups();\r\nvar _default = ValidationEngine;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/utils/window.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getNavigator = exports.getCurrentScreenFactor = exports.defaultScreenFactorFunc = exports.hasProperty = exports.getWindow = exports.hasWindow = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar hasWindow = function() {\r\n    return \"undefined\" !== typeof window\r\n};\r\nexports.hasWindow = hasWindow;\r\nvar windowObject = hasWindow() && window;\r\nif (!windowObject) {\r\n    windowObject = {};\r\n    windowObject.window = windowObject\r\n}\r\nvar getWindow = function() {\r\n    return windowObject\r\n};\r\nexports.getWindow = getWindow;\r\nvar hasProperty = function(prop) {\r\n    return hasWindow() && prop in windowObject\r\n};\r\nexports.hasProperty = hasProperty;\r\nvar defaultScreenFactorFunc = function(width) {\r\n    if (width < 768) {\r\n        return \"xs\"\r\n    } else {\r\n        if (width < 992) {\r\n            return \"sm\"\r\n        } else {\r\n            if (width < 1200) {\r\n                return \"md\"\r\n            } else {\r\n                return \"lg\"\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.defaultScreenFactorFunc = defaultScreenFactorFunc;\r\nvar getCurrentScreenFactor = function(screenFactorCallback) {\r\n    var screenFactorFunc = screenFactorCallback || defaultScreenFactorFunc;\r\n    var windowWidth = _dom_adapter.default.getDocumentElement().clientWidth;\r\n    return screenFactorFunc(windowWidth)\r\n};\r\nexports.getCurrentScreenFactor = getCurrentScreenFactor;\r\nvar getNavigator = function() {\r\n    return hasWindow() ? windowObject.navigator : {\r\n        userAgent: \"\"\r\n    }\r\n};\r\nexports.getNavigator = getNavigator;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.strategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar TOOLBAR_MENU_CONTAINER_CLASS = \"dx-toolbar-menu-container\";\r\nvar TOOLBAR_MENU_BUTTON_CLASS = \"dx-toolbar-menu-button\";\r\nvar ToolbarStrategy = _class.default.inherit({\r\n    ctor: function(toolbar) {\r\n        this._toolbar = toolbar\r\n    },\r\n    render: function() {\r\n        this._renderMenuButton();\r\n        this._renderWidget()\r\n    },\r\n    _widgetOptions: function() {\r\n        var itemClickAction = this._toolbar._createActionByOption(\"onItemClick\");\r\n        return {\r\n            itemTemplate: this._getMenuItemTemplate.bind(this),\r\n            onItemClick: function(e) {\r\n                this._toggleMenu(false, true);\r\n                itemClickAction(e)\r\n            }.bind(this)\r\n        }\r\n    },\r\n    _getMenuItemTemplate: function() {\r\n        return this._toolbar._getTemplateByOption(\"menuItemTemplate\")\r\n    },\r\n    _renderWidget: function() {\r\n        var $menu = (0, _renderer.default)(\"<div>\").appendTo(this._menuContainer());\r\n        this._menu = this._toolbar._createComponent($menu, this._menuWidgetClass(), this._widgetOptions());\r\n        this.renderMenuItems()\r\n    },\r\n    _menuContainer: abstract,\r\n    _menuWidgetClass: abstract,\r\n    _hasVisibleMenuItems: function(items) {\r\n        var menuItems = items || this._toolbar.option(\"items\");\r\n        var result = false;\r\n        var optionGetter = (0, _data.compileGetter)(\"visible\");\r\n        var overflowGetter = (0, _data.compileGetter)(\"locateInMenu\");\r\n        (0, _iterator.each)(menuItems, function(index, item) {\r\n            var itemVisible = optionGetter(item, {\r\n                functionsAsIs: true\r\n            });\r\n            var itemOverflow = overflowGetter(item, {\r\n                functionsAsIs: true\r\n            });\r\n            if (false !== itemVisible && (\"auto\" === itemOverflow || \"always\" === itemOverflow) || \"menu\" === item.location) {\r\n                result = true\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _getMenuItems: function() {\r\n        return this._toolbar._getMenuItems()\r\n    },\r\n    _updateMenuVisibility: _common.noop,\r\n    _renderMenuButton: function() {\r\n        var buttonOptions = this._menuButtonOptions();\r\n        this._renderMenuButtonContainer();\r\n        this._$button = (0, _renderer.default)(\"<div>\").appendTo(this._$menuButtonContainer).addClass(TOOLBAR_MENU_BUTTON_CLASS);\r\n        this._toolbar._createComponent(this._$button, _button.default, buttonOptions)\r\n    },\r\n    _menuButtonOptions: function() {\r\n        return {\r\n            onClick: this._menuButtonClickHandler.bind(this)\r\n        }\r\n    },\r\n    _menuButtonClickHandler: function() {\r\n        this._toggleMenu(!this._menuShown, true)\r\n    },\r\n    _renderMenuButtonContainer: function() {\r\n        var $afterSection = this._toolbar._$afterSection;\r\n        this._$menuButtonContainer = (0, _renderer.default)(\"<div>\").appendTo($afterSection).addClass(this._toolbar._buttonClass()).addClass(TOOLBAR_MENU_CONTAINER_CLASS)\r\n    },\r\n    renderMenuItems: function() {\r\n        this._menu && this._menu.option(\"items\", this._getMenuItems())\r\n    },\r\n    toggleMenuVisibility: function(visible, animate) {\r\n        this._menu && this._toggleMenu(visible, animate)\r\n    },\r\n    _toggleMenu: function(visible) {\r\n        this._menuShown = visible\r\n    },\r\n    getMenuWidget: function() {\r\n        return this._menu\r\n    },\r\n    widgetOption: function(name, value) {\r\n        this._menu && this._menu.option(name, value)\r\n    },\r\n    handleToolbarVisibilityChange: _common.noop\r\n});\r\nvar _default = ToolbarStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.editing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _dialog = require(\"../dialog\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar iconUtils = _interopRequireWildcard(require(\"../../core/utils/icon\"));\r\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar EDIT_FORM_CLASS = \"edit-form\";\r\nvar EDIT_FORM_ITEM_CLASS = \"edit-form-item\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar READONLY_CLASS = \"readonly\";\r\nvar EDIT_POPUP_CLASS = \"edit-popup\";\r\nvar FORM_BUTTONS_CONTAINER_CLASS = \"form-buttons-container\";\r\nvar ADD_ROW_BUTTON_CLASS = \"addrow-button\";\r\nvar DROPDOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar LINK_CLASS = \"dx-link\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar ROW_SELECTED = \"dx-selection\";\r\nvar EDIT_ROW = \"dx-edit-row\";\r\nvar EDIT_BUTTON_CLASS = \"dx-edit-button\";\r\nvar COMMAND_EDIT_CLASS = \"dx-command-edit\";\r\nvar COMMAND_EDIT_WITH_ICONS_CLASS = COMMAND_EDIT_CLASS + \"-with-icons\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar BUTTON_CLASS = \"dx-button\";\r\nvar INSERT_INDEX = \"__DX_INSERT_INDEX__\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar ROW_REMOVED = \"dx-row-removed\";\r\nvar ROW_INSERTED = \"dx-row-inserted\";\r\nvar ROW_MODIFIED = \"dx-row-modified\";\r\nvar CELL_MODIFIED = \"dx-cell-modified\";\r\nvar EDITING_NAMESPACE = \"dxDataGridEditing\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar FOCUSABLE_ELEMENT_SELECTOR = \"[tabindex], \" + EDITORS_INPUT_SELECTOR;\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar DATA_EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar DATA_EDIT_DATA_UPDATE_TYPE = \"update\";\r\nvar DATA_EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nvar DEFAULT_START_EDIT_ACTION = \"click\";\r\nvar EDIT_MODES = [EDIT_MODE_BATCH, EDIT_MODE_ROW, EDIT_MODE_CELL, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar ROW_BASED_MODES = [EDIT_MODE_ROW, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar CELL_BASED_MODES = [EDIT_MODE_BATCH, EDIT_MODE_CELL];\r\nvar FORM_BASED_MODES = [EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar MODES_WITH_DELAYED_FOCUS = [EDIT_MODE_ROW, EDIT_MODE_FORM];\r\nvar TARGET_COMPONENT_NAME = \"targetComponent\";\r\nvar EDIT_LINK_CLASS = {\r\n    save: \"dx-link-save\",\r\n    cancel: \"dx-link-cancel\",\r\n    edit: \"dx-link-edit\",\r\n    undelete: \"dx-link-undelete\",\r\n    \"delete\": \"dx-link-delete\",\r\n    add: \"dx-link-add\"\r\n};\r\nvar EDIT_ICON_CLASS = {\r\n    save: \"save\",\r\n    cancel: \"revert\",\r\n    edit: \"edit\",\r\n    undelete: \"revert\",\r\n    \"delete\": \"trash\",\r\n    add: \"add\"\r\n};\r\nvar METHOD_NAMES = {\r\n    edit: \"editRow\",\r\n    \"delete\": \"deleteRow\",\r\n    undelete: \"undeleteRow\",\r\n    save: \"saveEditData\",\r\n    cancel: \"cancelEditData\",\r\n    add: \"addRowByRowIndex\"\r\n};\r\nvar ACTION_OPTION_NAMES = {\r\n    add: \"allowAdding\",\r\n    edit: \"allowUpdating\",\r\n    \"delete\": \"allowDeleting\"\r\n};\r\nvar BUTTON_NAMES = [\"edit\", \"save\", \"cancel\", \"delete\", \"undelete\"];\r\nvar EDITING_POPUP_OPTION_NAME = \"editing.popup\";\r\nvar EDITING_CHANGES_OPTION_NAME = \"editing.changes\";\r\nvar EDITING_EDITROWKEY_OPTION_NAME = \"editing.editRowKey\";\r\nvar EDITING_EDITCOLUMNNAME_OPTION_NAME = \"editing.editColumnName\";\r\nvar createFailureHandler = function(deferred) {\r\n    return function(arg) {\r\n        var error = arg instanceof Error ? arg : new Error(arg && String(arg) || \"Unknown error\");\r\n        deferred.reject(error)\r\n    }\r\n};\r\nvar _getEditMode = function(that) {\r\n    var editMode = that.option(\"editing.mode\");\r\n    if (EDIT_MODES.indexOf(editMode) !== -1) {\r\n        return editMode\r\n    }\r\n    return EDIT_MODE_ROW\r\n};\r\nvar _isRowEditMode = function(that) {\r\n    var editMode = _getEditMode(that);\r\n    return ROW_BASED_MODES.indexOf(editMode) !== -1\r\n};\r\nvar isEditingCell = function(isEditRow, cellOptions) {\r\n    return cellOptions.isEditing || isEditRow && cellOptions.column.allowEditing\r\n};\r\nvar isEditingOrShowEditorAlwaysDataCell = function(isEditRow, cellOptions) {\r\n    var isCommandCell = !!cellOptions.column.command;\r\n    var isEditing = isEditingCell(isEditRow, cellOptions);\r\n    var isEditorCell = !isCommandCell && (isEditing || cellOptions.column.showEditorAlways);\r\n    return \"data\" === cellOptions.rowType && isEditorCell\r\n};\r\nvar EditingController = _uiGrid_core.default.ViewController.inherit(function() {\r\n    var getDefaultEditorTemplate = function(that) {\r\n        return function(container, options) {\r\n            var $editor = (0, _renderer.default)(\"<div>\").appendTo(container);\r\n            that.getController(\"editorFactory\").createEditor($editor, (0, _extend.extend)({}, options.column, {\r\n                value: options.value,\r\n                setValue: options.setValue,\r\n                row: options.row,\r\n                parentType: \"dataRow\",\r\n                width: null,\r\n                readOnly: !options.setValue,\r\n                isOnForm: options.isOnForm,\r\n                id: options.id\r\n            }))\r\n        }\r\n    };\r\n    var getEditingTexts = function(options) {\r\n        var editingTexts = options.component.option(\"editing.texts\") || {};\r\n        return {\r\n            save: editingTexts.saveRowChanges,\r\n            cancel: editingTexts.cancelRowChanges,\r\n            edit: editingTexts.editRow,\r\n            undelete: editingTexts.undeleteRow,\r\n            \"delete\": editingTexts.deleteRow,\r\n            add: editingTexts.addRowToNode\r\n        }\r\n    };\r\n    var getButtonIndex = function(buttons, name) {\r\n        var result = -1;\r\n        buttons.some(function(button, index) {\r\n            if (getButtonName(button) === name) {\r\n                result = index;\r\n                return true\r\n            }\r\n        });\r\n        return result\r\n    };\r\n\r\n    function getButtonName(button) {\r\n        return (0, _type.isObject)(button) ? button.name : button\r\n    }\r\n    var getEditorType = function(item) {\r\n        var column = item.column;\r\n        return item.isCustomEditorType ? item.editorType : column.formItem && column.formItem.editorType\r\n    };\r\n    var forEachFormItems = function forEachFormItems(items, callBack) {\r\n        items.forEach(function(item) {\r\n            if (item.items || item.tabs) {\r\n                forEachFormItems(item.items || item.tabs, callBack)\r\n            } else {\r\n                callBack(item)\r\n            }\r\n        })\r\n    };\r\n    return {\r\n        init: function() {\r\n            var that = this;\r\n            that._columnsController = that.getController(\"columns\");\r\n            that._dataController = that.getController(\"data\");\r\n            that._rowsView = that.getView(\"rowsView\");\r\n            that._editForm = null;\r\n            that._updateEditFormDeferred = null;\r\n            that._lastOperation = null;\r\n            if (that._deferreds) {\r\n                that._deferreds.forEach(function(d) {\r\n                    return d.reject(\"cancel\")\r\n                })\r\n            }\r\n            that._deferreds = [];\r\n            if (!that._dataChangedHandler) {\r\n                that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n                that._dataController.changed.add(that._dataChangedHandler)\r\n            }\r\n            if (!that._saveEditorHandler) {\r\n                that.createAction(\"onInitNewRow\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onRowInserting\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onRowInserted\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onEditingStart\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onRowUpdating\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onRowUpdated\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onRowRemoving\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onRowRemoved\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onSaved\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onSaving\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onEditCanceling\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                that.createAction(\"onEditCanceled\", {\r\n                    excludeValidators: [\"disabled\", \"readOnly\"]\r\n                });\r\n                var $pointerDownTarget;\r\n                var isResizing;\r\n                that._pointerUpEditorHandler = function() {\r\n                    var _that$getController;\r\n                    isResizing = null === (_that$getController = that.getController(\"columnsResizer\")) || void 0 === _that$getController ? void 0 : _that$getController.isResizing()\r\n                };\r\n                that._pointerDownEditorHandler = function(e) {\r\n                    return $pointerDownTarget = (0, _renderer.default)(e.target)\r\n                };\r\n                that._saveEditorHandler = that.createAction(function(e) {\r\n                    var event = e.event;\r\n                    var $target = (0, _renderer.default)(event.target);\r\n                    var targetComponent = event[TARGET_COMPONENT_NAME];\r\n                    if ($pointerDownTarget && $pointerDownTarget.is(\"input\") && !$pointerDownTarget.is($target)) {\r\n                        return\r\n                    }\r\n\r\n                    function checkEditorPopup($element) {\r\n                        return $element && !!$element.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length\r\n                    }\r\n                    if (!_isRowEditMode(that) && !that._editCellInProgress) {\r\n                        var isEditorPopup = checkEditorPopup($target) || checkEditorPopup(null === targetComponent || void 0 === targetComponent ? void 0 : targetComponent.$element());\r\n                        var isDomElement = !!$target.closest((0, _window.getWindow)().document).length;\r\n                        var isAnotherComponent = targetComponent && !targetComponent._disposed && targetComponent !== that.component;\r\n                        var isAddRowButton = !!$target.closest(\".\".concat(that.addWidgetPrefix(ADD_ROW_BUTTON_CLASS))).length;\r\n                        var isFocusOverlay = $target.hasClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n                        var isCellEditMode = _getEditMode(that) === EDIT_MODE_CELL;\r\n                        if (!isResizing && !isEditorPopup && !isFocusOverlay && !(isAddRowButton && isCellEditMode && that.isEditing()) && (isDomElement || isAnotherComponent)) {\r\n                            that._closeEditItem.bind(that)($target)\r\n                        }\r\n                    }\r\n                });\r\n                _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.up, that._pointerUpEditorHandler);\r\n                _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.down, that._pointerDownEditorHandler);\r\n                _events_engine.default.on(_dom_adapter.default.getDocument(), _click.name, that._saveEditorHandler)\r\n            }\r\n            that._updateEditColumn();\r\n            that._updateEditButtons();\r\n            if (!this._internalState) {\r\n                this._internalState = []\r\n            }\r\n            this.component._optionsByReference[EDITING_EDITROWKEY_OPTION_NAME] = true;\r\n            this.component._optionsByReference[EDITING_CHANGES_OPTION_NAME] = true\r\n        },\r\n        getChanges: function() {\r\n            return this.option(EDITING_CHANGES_OPTION_NAME)\r\n        },\r\n        resetChanges: function() {\r\n            var changes = this.getChanges();\r\n            var needReset = null === changes || void 0 === changes ? void 0 : changes.length;\r\n            if (needReset) {\r\n                this._silentOption(EDITING_CHANGES_OPTION_NAME, [])\r\n            }\r\n        },\r\n        _getInternalData: function(key) {\r\n            return this._internalState.filter(function(item) {\r\n                return item.key === key\r\n            })[0]\r\n        },\r\n        _addInternalData: function(params) {\r\n            var internalData = this._getInternalData(params.key);\r\n            if (internalData) {\r\n                return (0, _extend.extend)(internalData, params)\r\n            }\r\n            this._internalState.push(params);\r\n            return params\r\n        },\r\n        _getOldData: function(key) {\r\n            var _this$_getInternalDat;\r\n            return null === (_this$_getInternalDat = this._getInternalData(key)) || void 0 === _this$_getInternalDat ? void 0 : _this$_getInternalDat.oldData\r\n        },\r\n        getUpdatedData: function(data) {\r\n            var key = this._dataController.keyOf(data);\r\n            var changes = this.getChanges();\r\n            var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n            if (changes[editIndex]) {\r\n                return (0, _array_utils.createObjectWithChanges)(data, changes[editIndex].data)\r\n            }\r\n            return data\r\n        },\r\n        getInsertedData: function() {\r\n            return this.getChanges().filter(function(change) {\r\n                return change.data && change.type === DATA_EDIT_DATA_INSERT_TYPE\r\n            }).map(function(change) {\r\n                return change.data\r\n            })\r\n        },\r\n        getRemovedData: function() {\r\n            var _this = this;\r\n            return this.getChanges().filter(function(change) {\r\n                return _this._getOldData(change.key) && change.type === DATA_EDIT_DATA_REMOVE_TYPE\r\n            }).map(function(change) {\r\n                return _this._getOldData(change.key)\r\n            })\r\n        },\r\n        _fireDataErrorOccurred: function(arg) {\r\n            if (\"cancel\" === arg) {\r\n                return\r\n            }\r\n            var $popupContent = this.getPopupContent();\r\n            this._dataController.dataErrorOccurred.fire(arg, $popupContent)\r\n        },\r\n        _needToCloseEditableCell: function($targetElement) {\r\n            var $element = this.component.$element();\r\n            var result = this.isEditing();\r\n            var isCurrentComponentElement = !$element || !!$targetElement.closest($element).length;\r\n            if (isCurrentComponentElement) {\r\n                var isDataRow = $targetElement.closest(\".\" + DATA_ROW_CLASS).length;\r\n                if (isDataRow) {\r\n                    var rowsView = this.getView(\"rowsView\");\r\n                    var $targetCell = $targetElement.closest(\".\" + ROW_CLASS + \"> td\");\r\n                    var rowIndex = rowsView.getRowIndex($targetCell.parent());\r\n                    var columnIndex = rowsView.getCellElements(rowIndex).index($targetCell);\r\n                    var visibleColumns = this._columnsController.getVisibleColumns();\r\n                    var allowEditing = visibleColumns[columnIndex] && visibleColumns[columnIndex].allowEditing;\r\n                    result = result && !allowEditing && !this.isEditCell(rowIndex, columnIndex)\r\n                }\r\n            }\r\n            return result\r\n        },\r\n        _closeEditItem: function($targetElement) {\r\n            if (this._needToCloseEditableCell($targetElement)) {\r\n                this.closeEditCell()\r\n            }\r\n        },\r\n        _handleDataChanged: function(args) {\r\n            var editForm = this._editForm;\r\n            if (\"refresh\" === args.changeType && _getEditMode(this) === EDIT_MODE_POPUP && editForm && editForm.option(\"visible\")) {\r\n                this._repaintEditPopup()\r\n            }\r\n        },\r\n        _isDefaultButtonVisible: function(button, options) {\r\n            var result = true;\r\n            var isRowMode = _isRowEditMode(this);\r\n            var isBatchMode = _getEditMode(this) === EDIT_MODE_BATCH;\r\n            var isEditRow = options.row && options.row.rowIndex === this._getVisibleEditRowIndex() && isRowMode;\r\n            switch (button.name) {\r\n                case \"edit\":\r\n                    result = !isEditRow && this.allowUpdating(options) && isRowMode;\r\n                    break;\r\n                case \"save\":\r\n                case \"cancel\":\r\n                    result = isEditRow;\r\n                    break;\r\n                case \"delete\":\r\n                    result = !isEditRow && this.allowDeleting(options) && (!isBatchMode || !options.row.removed);\r\n                    break;\r\n                case \"undelete\":\r\n                    result = isBatchMode && this.allowDeleting(options) && options.row.removed\r\n            }\r\n            return result\r\n        },\r\n        _isButtonVisible: function(button, options) {\r\n            var visible = button.visible;\r\n            if (!(0, _type.isDefined)(visible)) {\r\n                return this._isDefaultButtonVisible(button, options)\r\n            }\r\n            return (0, _type.isFunction)(visible) ? visible.call(button, {\r\n                component: options.component,\r\n                row: options.row,\r\n                column: options.column\r\n            }) : visible\r\n        },\r\n        _getButtonConfig: function(button, options) {\r\n            var _this2 = this;\r\n            var config = (0, _type.isObject)(button) ? button : {};\r\n            var buttonName = getButtonName(button);\r\n            var editingTexts = getEditingTexts(options);\r\n            var methodName = METHOD_NAMES[buttonName];\r\n            var editingOptions = this.option(\"editing\");\r\n            var actionName = ACTION_OPTION_NAMES[buttonName];\r\n            var allowAction = actionName ? editingOptions[actionName] : true;\r\n            return (0, _extend.extend)({\r\n                name: buttonName,\r\n                text: editingTexts[buttonName],\r\n                cssClass: EDIT_LINK_CLASS[buttonName],\r\n                onClick: function(e) {\r\n                    var event = e.event;\r\n                    event.stopPropagation();\r\n                    event.preventDefault();\r\n                    setTimeout(function() {\r\n                        options.row && allowAction && _this2[methodName] && _this2[methodName](options.row.rowIndex)\r\n                    })\r\n                }\r\n            }, config)\r\n        },\r\n        _getEditingButtons: function(options) {\r\n            var _this3 = this;\r\n            var buttonIndex;\r\n            var haveCustomButtons = !!options.column.buttons;\r\n            var buttons = (options.column.buttons || []).slice();\r\n            if (haveCustomButtons) {\r\n                buttonIndex = getButtonIndex(buttons, \"edit\");\r\n                if (buttonIndex >= 0) {\r\n                    if (getButtonIndex(buttons, \"save\") < 0) {\r\n                        buttons.splice(buttonIndex + 1, 0, \"save\")\r\n                    }\r\n                    if (getButtonIndex(buttons, \"cancel\") < 0) {\r\n                        buttons.splice(getButtonIndex(buttons, \"save\") + 1, 0, \"cancel\")\r\n                    }\r\n                }\r\n                buttonIndex = getButtonIndex(buttons, \"delete\");\r\n                if (buttonIndex >= 0 && getButtonIndex(buttons, \"undelete\") < 0) {\r\n                    buttons.splice(buttonIndex + 1, 0, \"undelete\")\r\n                }\r\n            } else {\r\n                buttons = BUTTON_NAMES.slice()\r\n            }\r\n            return buttons.map(function(button) {\r\n                return _this3._getButtonConfig(button, options)\r\n            })\r\n        },\r\n        _renderEditingButtons: function($container, buttons, options) {\r\n            var _this4 = this;\r\n            buttons.forEach(function(button) {\r\n                if (_this4._isButtonVisible(button, options)) {\r\n                    _this4._createButton($container, button, options)\r\n                }\r\n            })\r\n        },\r\n        _getEditCommandCellTemplate: function() {\r\n            var _this5 = this;\r\n            return function(container, options) {\r\n                var $container = (0, _renderer.default)(container);\r\n                if (\"data\" === options.rowType) {\r\n                    var buttons = _this5._getEditingButtons(options);\r\n                    _this5._renderEditingButtons($container, buttons, options);\r\n                    options.watch && options.watch(function() {\r\n                        return buttons.map(function(button) {\r\n                            return _this5._isButtonVisible(button, options)\r\n                        })\r\n                    }, function() {\r\n                        $container.empty();\r\n                        _this5._renderEditingButtons($container, buttons, options)\r\n                    })\r\n                } else {\r\n                    _uiGrid_core2.default.setEmptyText($container)\r\n                }\r\n            }\r\n        },\r\n        isRowEditMode: function() {\r\n            return _isRowEditMode(this)\r\n        },\r\n        isFormEditMode: function() {\r\n            var editMode = _getEditMode(this);\r\n            return FORM_BASED_MODES.indexOf(editMode) !== -1\r\n        },\r\n        isCellOrBatchEditMode: function() {\r\n            var editMode = this.getEditMode();\r\n            return CELL_BASED_MODES.indexOf(editMode) !== -1\r\n        },\r\n        getEditMode: function() {\r\n            return _getEditMode(this)\r\n        },\r\n        getFirstEditableColumnIndex: function() {\r\n            var columnsController = this.getController(\"columns\");\r\n            var firstFormItem = this._firstFormItem;\r\n            var columnIndex;\r\n            if (_getEditMode(this) === EDIT_MODE_FORM && firstFormItem) {\r\n                var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n                var editRowIndex = this._dataController.getRowIndexByKey(editRowKey);\r\n                var $editFormElements = this._rowsView.getCellElements(editRowIndex);\r\n                columnIndex = this._rowsView._getEditFormEditorVisibleIndex($editFormElements, firstFormItem.column)\r\n            } else {\r\n                var visibleColumns = columnsController.getVisibleColumns();\r\n                (0, _iterator.each)(visibleColumns, function(index, column) {\r\n                    if (column.allowEditing) {\r\n                        columnIndex = index;\r\n                        return false\r\n                    }\r\n                })\r\n            }\r\n            return columnIndex\r\n        },\r\n        getFirstEditableCellInRow: function(rowIndex) {\r\n            var rowsView = this.getView(\"rowsView\");\r\n            return rowsView && rowsView._getCellElement(rowIndex ? rowIndex : 0, this.getFirstEditableColumnIndex())\r\n        },\r\n        getFocusedCellInRow: function(rowIndex) {\r\n            return this.getFirstEditableCellInRow(rowIndex)\r\n        },\r\n        getIndexByKey: function(key, items) {\r\n            return _uiGrid_core2.default.getIndexByKey(key, items)\r\n        },\r\n        hasChanges: function(rowIndex) {\r\n            var changes = this.getChanges();\r\n            var result = false;\r\n            for (var i = 0; i < (null === changes || void 0 === changes ? void 0 : changes.length); i++) {\r\n                if (changes[i].type && (!(0, _type.isDefined)(rowIndex) || this._dataController.getRowIndexByKey(changes[i].key) === rowIndex)) {\r\n                    result = true;\r\n                    break\r\n                }\r\n            }\r\n            return result\r\n        },\r\n        dispose: function() {\r\n            this.callBase();\r\n            clearTimeout(this._inputFocusTimeoutID);\r\n            _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.up, this._pointerUpEditorHandler);\r\n            _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.down, this._pointerDownEditorHandler);\r\n            _events_engine.default.off(_dom_adapter.default.getDocument(), _click.name, this._saveEditorHandler)\r\n        },\r\n        optionChanged: function(args) {\r\n            if (\"editing\" === args.name) {\r\n                var fullName = args.fullName;\r\n                var editPopup = this._editPopup;\r\n                if (fullName && 0 === fullName.indexOf(EDITING_POPUP_OPTION_NAME)) {\r\n                    if (editPopup) {\r\n                        var popupOptionName = fullName.slice(EDITING_POPUP_OPTION_NAME.length + 1);\r\n                        if (popupOptionName) {\r\n                            editPopup.option(popupOptionName, args.value)\r\n                        } else {\r\n                            editPopup.option(args.value)\r\n                        }\r\n                    }\r\n                } else {\r\n                    if (editPopup && editPopup.option(\"visible\") && 0 === fullName.indexOf(\"editing.form\")) {\r\n                        this._repaintEditPopup()\r\n                    } else {\r\n                        if (fullName === EDITING_EDITROWKEY_OPTION_NAME) {\r\n                            this._handleEditRowKeyChange(args)\r\n                        } else {\r\n                            if (fullName === EDITING_EDITCOLUMNNAME_OPTION_NAME) {\r\n                                this._handleEditColumnNameChange(args)\r\n                            } else {\r\n                                if (fullName === EDITING_CHANGES_OPTION_NAME) {\r\n                                    this._handleChangesChange(args)\r\n                                } else {\r\n                                    this.init();\r\n                                    this.resetChanges();\r\n                                    this._resetEditColumnName();\r\n                                    this._resetEditRowKey()\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                args.handled = true\r\n            } else {\r\n                this.callBase(args)\r\n            }\r\n        },\r\n        _handleEditRowKeyChange: function(args) {\r\n            var rowIndex = this._dataController.getRowIndexByKey(args.value);\r\n            var oldRowIndexCorrection = this._getEditRowIndexCorrection();\r\n            var oldRowIndex = this._dataController.getRowIndexByKey(args.previousValue) + oldRowIndexCorrection;\r\n            var columnIndex = this._getVisibleEditColumnIndex();\r\n            if (!this.isCellOrBatchEditMode()) {\r\n                if ((0, _type.isDefined)(args.value)) {\r\n                    if (args.value !== args.previousValue) {\r\n                        this._editRowFromOptionChanged(rowIndex, oldRowIndex)\r\n                    }\r\n                } else {\r\n                    this.cancelEditData()\r\n                }\r\n            } else {\r\n                if ((0, _type.isDefined)(args.value) && args.value !== args.previousValue) {\r\n                    this._editCellFromOptionChanged(columnIndex, columnIndex, oldRowIndex)\r\n                }\r\n            }\r\n        },\r\n        _handleEditColumnNameChange: function(args) {\r\n            var oldRowIndex = this._getVisibleEditRowIndex(args.previousValue);\r\n            if (this.isCellOrBatchEditMode() && oldRowIndex !== -1 && (0, _type.isDefined)(args.value) && args.value !== args.previousValue) {\r\n                var columnIndex = this._columnsController.getVisibleColumnIndex(args.value);\r\n                var oldColumnIndex = this._columnsController.getVisibleColumnIndex(args.previousValue);\r\n                this._editCellFromOptionChanged(columnIndex, oldColumnIndex, oldRowIndex)\r\n            }\r\n        },\r\n        _handleChangesChange: function(args) {\r\n            var dataController = this._dataController;\r\n            if (!args.value.length && !args.previousValue.length) {\r\n                return\r\n            }\r\n            dataController.updateItems({\r\n                repaintChangesOnly: true\r\n            })\r\n        },\r\n        _editCellFromOptionChanged: function(columnIndex, oldColumnIndex, oldRowIndex) {\r\n            var _this6 = this;\r\n            var columns = this._columnsController.getVisibleColumns();\r\n            if (columnIndex > -1) {\r\n                (0, _common.deferRender)(function() {\r\n                    _this6._repaintEditCell(columns[columnIndex], columns[oldColumnIndex], oldRowIndex)\r\n                })\r\n            }\r\n        },\r\n        publicMethods: function() {\r\n            return [\"addRow\", \"deleteRow\", \"undeleteRow\", \"editRow\", \"editCell\", \"closeEditCell\", \"saveEditData\", \"cancelEditData\", \"hasEditData\"]\r\n        },\r\n        refresh: function(isPageChanged) {\r\n            var editMode = _getEditMode(this);\r\n            var needResetIndexes = editMode === EDIT_MODE_BATCH || isPageChanged && \"virtual\" !== this.option(\"scrolling.mode\");\r\n            if (!(0, _type.isDefined)(this._pageIndex)) {\r\n                return\r\n            }\r\n            if (!this.isCellOrBatchEditMode()) {\r\n                this.resetChanges();\r\n                this.init();\r\n                if ((0, _type.isDefined)(this.option(EDITING_EDITROWKEY_OPTION_NAME))) {\r\n                    this._resetEditRowKey()\r\n                }\r\n            } else {\r\n                if (needResetIndexes) {\r\n                    this._resetEditColumnName();\r\n                    this._resetEditRowKey()\r\n                }\r\n            }\r\n        },\r\n        isEditing: function() {\r\n            var isEditRowKeyDefined = (0, _type.isDefined)(this.option(EDITING_EDITROWKEY_OPTION_NAME));\r\n            var isEditColumnNameDefined = (0, _type.isDefined)(this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME));\r\n            if (this.isCellOrBatchEditMode()) {\r\n                return isEditRowKeyDefined && isEditColumnNameDefined\r\n            }\r\n            return isEditRowKeyDefined\r\n        },\r\n        isEditRow: function(rowIndex) {\r\n            var editMode = _getEditMode(this);\r\n            return this._getVisibleEditRowIndex() === rowIndex && ROW_BASED_MODES.indexOf(editMode) !== -1\r\n        },\r\n        _setEditRowKey: function(value, silent) {\r\n            if (silent) {\r\n                this._silentOption(EDITING_EDITROWKEY_OPTION_NAME, value)\r\n            } else {\r\n                this.option(EDITING_EDITROWKEY_OPTION_NAME, value)\r\n            }\r\n        },\r\n        _setEditRowKeyByIndex: function(rowIndex, silent) {\r\n            var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n            if (void 0 === key) {\r\n                this._dataController.fireError(\"E1043\");\r\n                return\r\n            }\r\n            this._setEditRowKey(key, silent)\r\n        },\r\n        getEditRowIndex: function() {\r\n            return this._getVisibleEditRowIndex()\r\n        },\r\n        getEditFormRowIndex: function() {\r\n            var editMode = _getEditMode(this);\r\n            return editMode === EDIT_MODE_FORM || editMode === EDIT_MODE_POPUP ? this._getVisibleEditRowIndex() : -1\r\n        },\r\n        isEditCell: function(visibleRowIndex, columnIndex) {\r\n            return this._getVisibleEditRowIndex() === visibleRowIndex && this._getVisibleEditColumnIndex() === columnIndex\r\n        },\r\n        getPopupContent: function() {\r\n            var editMode = _getEditMode(this);\r\n            var popupVisible = this._editPopup && this._editPopup.option(\"visible\");\r\n            if (editMode === EDIT_MODE_POPUP && popupVisible) {\r\n                return this._$popupContent\r\n            }\r\n        },\r\n        getEditForm: function() {\r\n            return this._editForm\r\n        },\r\n        _needInsertItem: function(change, changeType) {\r\n            var that = this;\r\n            var dataSource = that._dataController.dataSource();\r\n            var scrollingMode = that.option(\"scrolling.mode\");\r\n            var pageIndex = dataSource.pageIndex();\r\n            var beginPageIndex = dataSource.beginPageIndex ? dataSource.beginPageIndex() : pageIndex;\r\n            var endPageIndex = dataSource.endPageIndex ? dataSource.endPageIndex() : pageIndex;\r\n            if (\"standard\" !== scrollingMode) {\r\n                switch (changeType) {\r\n                    case \"append\":\r\n                        return change.key.pageIndex === endPageIndex;\r\n                    case \"prepend\":\r\n                        return change.key.pageIndex === beginPageIndex;\r\n                    case \"refresh\":\r\n                        change.key.rowIndex = 0;\r\n                        change.key.dataRowIndex = 0;\r\n                        change.key.pageIndex = 0;\r\n                        break;\r\n                    default:\r\n                        return change.key.pageIndex >= beginPageIndex && change.key.pageIndex <= endPageIndex\r\n                }\r\n            }\r\n            return change.key.pageIndex === pageIndex\r\n        },\r\n        _generateNewItem: function(key) {\r\n            var item = {\r\n                key: key\r\n            };\r\n            if (key && key[INSERT_INDEX]) {\r\n                item[INSERT_INDEX] = key[INSERT_INDEX]\r\n            }\r\n            return item\r\n        },\r\n        _getLoadedRowIndexByInsertKey: function(items, change, key) {\r\n            var dataController = this._dataController;\r\n            var loadedRowIndexOffset = dataController.getRowIndexOffset(true);\r\n            var loadedRowIndex = key.dataRowIndex - loadedRowIndexOffset;\r\n            if (\"append\" === change.changeType) {\r\n                loadedRowIndex -= dataController.items(true).length;\r\n                if (change.removeCount) {\r\n                    loadedRowIndex += change.removeCount\r\n                }\r\n            }\r\n            for (var i = 0; i < loadedRowIndex; i++) {\r\n                if (items[i] && items[i][INSERT_INDEX]) {\r\n                    loadedRowIndex++\r\n                }\r\n            }\r\n            return loadedRowIndex\r\n        },\r\n        processItems: function(items, e) {\r\n            var _this7 = this;\r\n            var changeType = e.changeType;\r\n            this.update(changeType);\r\n            var changes = this.getChanges();\r\n            changes.forEach(function(change) {\r\n                var key = change.key;\r\n                if ((0, _type.isDefined)(key) && change.type === DATA_EDIT_DATA_INSERT_TYPE) {\r\n                    var loadedRowIndex = _this7._getLoadedRowIndexByInsertKey(items, e, key);\r\n                    var item = _this7._generateNewItem(key);\r\n                    if (loadedRowIndex >= 0 && _this7._needInsertItem(change, changeType, items, item)) {\r\n                        items.splice(key.dataRowIndex ? loadedRowIndex : 0, 0, item)\r\n                    }\r\n                }\r\n            });\r\n            return items\r\n        },\r\n        processDataItem: function(item, options, generateDataValues) {\r\n            var columns = options.visibleColumns;\r\n            var key = item.data[INSERT_INDEX] ? item.data.key : item.key;\r\n            var changes = this.getChanges();\r\n            var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n            item.isEditing = false;\r\n            if (editIndex >= 0) {\r\n                var editMode = _getEditMode(this);\r\n                var _changes$editIndex = changes[editIndex],\r\n                    data = _changes$editIndex.data,\r\n                    type = _changes$editIndex.type;\r\n                switch (type) {\r\n                    case DATA_EDIT_DATA_INSERT_TYPE:\r\n                        if (editMode === EDIT_MODE_POPUP) {\r\n                            item.visible = false\r\n                        }\r\n                        item.isNewRow = true;\r\n                        item.key = key;\r\n                        item.data = data;\r\n                        break;\r\n                    case DATA_EDIT_DATA_UPDATE_TYPE:\r\n                        item.modified = true;\r\n                        item.oldData = item.data;\r\n                        item.data = (0, _array_utils.createObjectWithChanges)(item.data, data);\r\n                        item.modifiedValues = generateDataValues(data, columns, true);\r\n                        break;\r\n                    case DATA_EDIT_DATA_REMOVE_TYPE:\r\n                        if (editMode === EDIT_MODE_BATCH) {\r\n                            item.data = (0, _array_utils.createObjectWithChanges)(item.data, data)\r\n                        }\r\n                        item.removed = true\r\n                }\r\n            }\r\n        },\r\n        _initNewRow: function(options) {\r\n            var _this8 = this;\r\n            this.executeAction(\"onInitNewRow\", options);\r\n            if (options.promise) {\r\n                var deferred = new _deferred.Deferred;\r\n                (0, _deferred.when)((0, _deferred.fromPromise)(options.promise)).done(deferred.resolve).fail(createFailureHandler(deferred)).fail(function(arg) {\r\n                    return _this8._fireDataErrorOccurred(arg)\r\n                });\r\n                return deferred\r\n            }\r\n        },\r\n        _getInsertKey: function(parentKey) {\r\n            var that = this;\r\n            var dataController = that._dataController;\r\n            var rows = dataController.items();\r\n            var editMode = _getEditMode(that);\r\n            var insertKey = {\r\n                parentKey: parentKey,\r\n                pageIndex: dataController.pageIndex(),\r\n                rowIndex: that._getInsertRowIndex(parentKey)\r\n            };\r\n            var row = rows[insertKey.rowIndex];\r\n            if (row && (!row.isEditing && \"detail\" === row.rowType || \"detailAdaptive\" === row.rowType)) {\r\n                insertKey.rowIndex++\r\n            }\r\n            insertKey.dataRowIndex = dataController.getRowIndexOffset() + rows.filter(function(row, index) {\r\n                return index < insertKey.rowIndex && (\"data\" === row.rowType && !row.isNewRow || \"group\" === row.rowType)\r\n            }).length;\r\n            if (editMode !== EDIT_MODE_BATCH) {\r\n                this._setEditRowKey(insertKey, true)\r\n            }\r\n            insertKey[INSERT_INDEX] = that._getInsertIndex();\r\n            return insertKey\r\n        },\r\n        _getInsertRowIndex: function(parentKey) {\r\n            var that = this;\r\n            var rowsView = that.getView(\"rowsView\");\r\n            var parentRowIndex = that._dataController.getRowIndexByKey(parentKey);\r\n            if (parentRowIndex >= 0) {\r\n                return parentRowIndex + 1\r\n            }\r\n            if (rowsView) {\r\n                return rowsView.getTopVisibleItemIndex(true)\r\n            }\r\n            return 0\r\n        },\r\n        _getInsertIndex: function() {\r\n            var maxInsertIndex = 0;\r\n            this.getChanges().forEach(function(editItem) {\r\n                if (editItem.type === DATA_EDIT_DATA_INSERT_TYPE && editItem.key[INSERT_INDEX] > maxInsertIndex) {\r\n                    maxInsertIndex = editItem.key[INSERT_INDEX]\r\n                }\r\n            });\r\n            return maxInsertIndex + 1\r\n        },\r\n        addRow: function(parentKey) {\r\n            var that = this;\r\n            var dataController = that._dataController;\r\n            var store = dataController.store();\r\n            var key = store && store.key();\r\n            var param = {\r\n                data: {}\r\n            };\r\n            var editMode = _getEditMode(that);\r\n            var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n            var deferred = new _deferred.Deferred;\r\n            if (!store) {\r\n                dataController.fireError(\"E1052\", this.component.NAME);\r\n                return deferred.reject()\r\n            }\r\n            if (editMode === EDIT_MODE_CELL && that.hasChanges()) {\r\n                that.saveEditData().done(function() {\r\n                    if (!that.hasChanges()) {\r\n                        that.addRow(parentKey).done(deferred.resolve).fail(deferred.reject)\r\n                    } else {\r\n                        deferred.reject(\"cancel\")\r\n                    }\r\n                });\r\n                return deferred.promise()\r\n            }\r\n            that.refresh();\r\n            if (!that._allowRowAdding()) {\r\n                return deferred.reject(\"cancel\")\r\n            }\r\n            if (!key) {\r\n                param.data.__KEY__ = String(new _guid.default)\r\n            }(0, _deferred.when)(that._initNewRow(param, parentKey)).done(function() {\r\n                if (that._allowRowAdding()) {\r\n                    that._addRowCore(param.data, parentKey, oldEditRowIndex);\r\n                    deferred.resolve()\r\n                } else {\r\n                    deferred.reject(\"cancel\")\r\n                }\r\n            }).fail(deferred.reject);\r\n            return deferred.promise()\r\n        },\r\n        _allowRowAdding: function() {\r\n            var that = this;\r\n            var editMode = _getEditMode(that);\r\n            var insertIndex = that._getInsertIndex();\r\n            if (editMode !== EDIT_MODE_BATCH && insertIndex > 1) {\r\n                return false\r\n            }\r\n            return true\r\n        },\r\n        _addRowCore: function(data, parentKey, initialOldEditRowIndex) {\r\n            var that = this;\r\n            var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n            var insertKey = that._getInsertKey(parentKey);\r\n            var editMode = _getEditMode(that);\r\n            that._addChange({\r\n                key: insertKey,\r\n                data: data,\r\n                type: DATA_EDIT_DATA_INSERT_TYPE\r\n            });\r\n            that._dataController.updateItems({\r\n                changeType: \"update\",\r\n                rowIndices: [initialOldEditRowIndex, oldEditRowIndex, insertKey.rowIndex]\r\n            });\r\n            if (editMode === EDIT_MODE_POPUP) {\r\n                that._showEditPopup(insertKey.rowIndex)\r\n            } else {\r\n                that._focusFirstEditableCellInRow(insertKey.rowIndex)\r\n            }\r\n            that._afterInsertRow({\r\n                key: insertKey,\r\n                data: data\r\n            })\r\n        },\r\n        _focusFirstEditableCellInRow: function(rowIndex) {\r\n            var that = this;\r\n            var $firstCell = that.getFirstEditableCellInRow(rowIndex);\r\n            that._editCellInProgress = true;\r\n            that._delayedInputFocus($firstCell, function() {\r\n                that._editCellInProgress = false;\r\n                var $cell = that.getFirstEditableCellInRow(rowIndex);\r\n                var eventToTrigger = \"dblClick\" === that.option(\"editing.startEditAction\") ? _double_click.name : _click.name;\r\n                $cell && _events_engine.default.trigger($cell, eventToTrigger)\r\n            })\r\n        },\r\n        _isEditingStart: function(options) {\r\n            this.executeAction(\"onEditingStart\", options);\r\n            return options.cancel\r\n        },\r\n        _beforeEditCell: function(rowIndex, columnIndex, item) {\r\n            var that = this;\r\n            if (_getEditMode(that) === EDIT_MODE_CELL && !item.isNewRow && that.hasChanges()) {\r\n                var d = new _deferred.Deferred;\r\n                that.saveEditData().always(function() {\r\n                    d.resolve(that.hasChanges())\r\n                });\r\n                return d\r\n            }\r\n        },\r\n        _beforeUpdateItems: function() {},\r\n        _getVisibleEditColumnIndex: function() {\r\n            var editColumnName = this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME);\r\n            if (!(0, _type.isDefined)(editColumnName)) {\r\n                return -1\r\n            }\r\n            return this._columnsController.getVisibleColumnIndex(editColumnName)\r\n        },\r\n        _setEditColumnNameByIndex: function(index, silent) {\r\n            var _visibleColumns$index;\r\n            var visibleColumns = this._columnsController.getVisibleColumns();\r\n            this._setEditColumnName(null === (_visibleColumns$index = visibleColumns[index]) || void 0 === _visibleColumns$index ? void 0 : _visibleColumns$index.name, silent)\r\n        },\r\n        _setEditColumnName: function(name, silent) {\r\n            if (silent) {\r\n                this._silentOption(EDITING_EDITCOLUMNNAME_OPTION_NAME, name)\r\n            } else {\r\n                this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME, name)\r\n            }\r\n        },\r\n        _resetEditColumnName: function() {\r\n            this._setEditColumnName(null, true)\r\n        },\r\n        _getEditColumn: function() {\r\n            var editColumnName = this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME);\r\n            return this._getColumnByName(editColumnName)\r\n        },\r\n        _getColumnByName: function(name) {\r\n            var visibleColumns = this._columnsController.getVisibleColumns();\r\n            var editColumn;\r\n            (0, _type.isDefined)(name) && visibleColumns.some(function(column) {\r\n                if (column.name === name) {\r\n                    editColumn = column;\r\n                    return true\r\n                }\r\n            });\r\n            return editColumn\r\n        },\r\n        _getVisibleEditRowIndex: function(columnName) {\r\n            var dataController = this._dataController;\r\n            var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n            var rowIndex = dataController.getRowIndexByKey(editRowKey);\r\n            if (rowIndex === -1) {\r\n                return rowIndex\r\n            }\r\n            return rowIndex + this._getEditRowIndexCorrection(columnName)\r\n        },\r\n        _getEditRowIndexCorrection: function(columnName) {\r\n            var editColumn = columnName ? this._getColumnByName(columnName) : this._getEditColumn();\r\n            var isColumnHidden = \"adaptiveHidden\" === (null === editColumn || void 0 === editColumn ? void 0 : editColumn.visibleWidth);\r\n            return isColumnHidden ? 1 : 0\r\n        },\r\n        _resetEditRowKey: function() {\r\n            this._setEditRowKey(null, true)\r\n        },\r\n        _resetEditIndices: function() {\r\n            this._resetEditColumnName();\r\n            this._resetEditRowKey()\r\n        },\r\n        editRow: function(rowIndex) {\r\n            var dataController = this._dataController;\r\n            var items = dataController.items();\r\n            var item = items[rowIndex];\r\n            var params = {\r\n                data: item && item.data,\r\n                cancel: false\r\n            };\r\n            var oldRowIndex = this._getVisibleEditRowIndex();\r\n            if (!item) {\r\n                return\r\n            }\r\n            if (rowIndex === oldRowIndex) {\r\n                return true\r\n            }\r\n            if (void 0 === item.key) {\r\n                this._dataController.fireError(\"E1043\");\r\n                return\r\n            }\r\n            if (!item.isNewRow) {\r\n                params.key = item.key\r\n            }\r\n            if (this._isEditingStart(params)) {\r\n                return\r\n            }\r\n            this.resetChanges();\r\n            this.init();\r\n            this._resetEditColumnName();\r\n            this._pageIndex = dataController.pageIndex();\r\n            this._addInternalData({\r\n                key: item.key,\r\n                oldData: item.data\r\n            });\r\n            this._setEditRowKey(item.key)\r\n        },\r\n        _editRowFromOptionChanged: function(rowIndex, oldRowIndex) {\r\n            var rowIndices = [oldRowIndex, rowIndex];\r\n            var editMode = _getEditMode(this);\r\n            this._beforeUpdateItems(rowIndices, rowIndex, oldRowIndex);\r\n            if (editMode === EDIT_MODE_POPUP) {\r\n                this._showEditPopup(rowIndex)\r\n            } else {\r\n                this._needFocusEditor = true;\r\n                this._dataController.updateItems({\r\n                    changeType: \"update\",\r\n                    rowIndices: rowIndices\r\n                })\r\n            }\r\n        },\r\n        _focusEditorIfNeed: function() {\r\n            var _this9 = this;\r\n            var editMode = _getEditMode(this);\r\n            if (this._needFocusEditor) {\r\n                if (MODES_WITH_DELAYED_FOCUS.indexOf(editMode) !== -1) {\r\n                    var $editingCell = this.getFocusedCellInRow(this._getVisibleEditRowIndex());\r\n                    this._delayedInputFocus($editingCell, function() {\r\n                        $editingCell && _this9.component.focus($editingCell)\r\n                    })\r\n                } else {\r\n                    if (CELL_BASED_MODES.indexOf(editMode) !== -1) {\r\n                        var _this$_rowsView;\r\n                        var editColumnIndex = this._getVisibleEditColumnIndex();\r\n                        var $cell = null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView ? void 0 : _this$_rowsView._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex);\r\n                        if ($cell && !$cell.find(\":focus\").length) {\r\n                            this._focusEditingCell(function() {\r\n                                _this9._editCellInProgress = false\r\n                            }, $cell, true)\r\n                        } else {\r\n                            this._editCellInProgress = false\r\n                        }\r\n                    }\r\n                }\r\n                this._needFocusEditor = false\r\n            }\r\n        },\r\n        _showEditPopup: function(rowIndex, repaintForm) {\r\n            var that = this;\r\n            var isMobileDevice = \"desktop\" !== _devices.default.current().deviceType;\r\n            var popupOptions = (0, _extend.extend)({\r\n                showTitle: false,\r\n                fullScreen: isMobileDevice,\r\n                toolbarItems: [{\r\n                    toolbar: \"bottom\",\r\n                    location: \"after\",\r\n                    widget: \"dxButton\",\r\n                    options: that._getSaveButtonConfig()\r\n                }, {\r\n                    toolbar: \"bottom\",\r\n                    location: \"after\",\r\n                    widget: \"dxButton\",\r\n                    options: that._getCancelButtonConfig()\r\n                }],\r\n                contentTemplate: that._getPopupEditFormTemplate(rowIndex)\r\n            }, that.option(EDITING_POPUP_OPTION_NAME));\r\n            if (!that._editPopup) {\r\n                var $popupContainer = (0, _renderer.default)(\"<div>\").appendTo(that.component.$element()).addClass(that.addWidgetPrefix(EDIT_POPUP_CLASS));\r\n                that._editPopup = that._createComponent($popupContainer, _popup.default, {});\r\n                that._editPopup.on(\"hiding\", that._getEditPopupHiddenHandler());\r\n                that._editPopup.on(\"shown\", function(e) {\r\n                    _events_engine.default.trigger(e.component.$content().find(FOCUSABLE_ELEMENT_SELECTOR).not(\".\" + SCROLLABLE_CONTAINER_CLASS).first(), \"focus\");\r\n                    if (repaintForm) {\r\n                        that._editForm && that._editForm.repaint()\r\n                    }\r\n                })\r\n            }\r\n            that._editPopup.option(popupOptions);\r\n            that._editPopup.show()\r\n        },\r\n        _repaintEditPopup: function() {\r\n            var rowIndex = this._getVisibleEditRowIndex();\r\n            if (this._editPopup && this._editPopup.option(\"visible\") && rowIndex >= 0) {\r\n                var defaultAnimation = this._editPopup.option(\"animation\");\r\n                this._editPopup.option(\"animation\", null);\r\n                this._showEditPopup(rowIndex, true);\r\n                this._editPopup.option(\"animation\", defaultAnimation)\r\n            }\r\n        },\r\n        _getEditPopupHiddenHandler: function() {\r\n            var that = this;\r\n            return function(e) {\r\n                if (that.isEditing()) {\r\n                    that.cancelEditData()\r\n                }\r\n            }\r\n        },\r\n        _getPopupEditFormTemplate: function(rowIndex) {\r\n            var that = this;\r\n            var row = that.component.getVisibleRows()[rowIndex];\r\n            var templateOptions = {\r\n                row: row,\r\n                rowType: row.rowType,\r\n                key: row.key\r\n            };\r\n            return function(container) {\r\n                var formTemplate = that.getEditFormTemplate();\r\n                var scrollable = that._createComponent((0, _renderer.default)(\"<div>\").appendTo(container), _ui.default);\r\n                that._$popupContent = scrollable.$content();\r\n                formTemplate(that._$popupContent, templateOptions, true)\r\n            }\r\n        },\r\n        _getSaveButtonConfig: function() {\r\n            return {\r\n                text: this.option(\"editing.texts.saveRowChanges\"),\r\n                onClick: this.saveEditData.bind(this)\r\n            }\r\n        },\r\n        _getCancelButtonConfig: function() {\r\n            return {\r\n                text: this.option(\"editing.texts.cancelRowChanges\"),\r\n                onClick: this.cancelEditData.bind(this)\r\n            }\r\n        },\r\n        _removeInternalData: function(key) {\r\n            var internalData = this._getInternalData(key);\r\n            var index = this._internalState.indexOf(internalData);\r\n            if (index > -1) {\r\n                this._internalState.splice(index, 1)\r\n            }\r\n        },\r\n        _removeChange: function(index) {\r\n            if (index >= 0) {\r\n                var changes = _toConsumableArray(this.getChanges());\r\n                this._removeInternalData(changes[index].key);\r\n                changes.splice(index, 1);\r\n                this._silentOption(EDITING_CHANGES_OPTION_NAME, changes)\r\n            }\r\n        },\r\n        executeOperation: function(deferred, func) {\r\n            var _this10 = this;\r\n            this._lastOperation && this._lastOperation.reject();\r\n            this._lastOperation = deferred;\r\n            this.waitForDeferredOperations().done(function() {\r\n                if (\"rejected\" === deferred.state()) {\r\n                    return\r\n                }\r\n                func();\r\n                _this10._lastOperation = null\r\n            }).fail(function() {\r\n                deferred.reject();\r\n                _this10._lastOperation = null\r\n            })\r\n        },\r\n        waitForDeferredOperations: function() {\r\n            return _deferred.when.apply(void 0, _toConsumableArray(this._deferreds))\r\n        },\r\n        editCell: function(rowIndex, columnIndex) {\r\n            return this._editCell({\r\n                rowIndex: rowIndex,\r\n                columnIndex: columnIndex\r\n            })\r\n        },\r\n        _editCell: function(options) {\r\n            var _this11 = this;\r\n            var d = new _deferred.Deferred;\r\n            var coreResult;\r\n            this.executeOperation(d, function() {\r\n                coreResult = _this11._editCellCore(options);\r\n                (0, _deferred.when)(coreResult).done(d.resolve).fail(d.reject)\r\n            });\r\n            return void 0 !== coreResult ? coreResult : d.promise()\r\n        },\r\n        _getNormalizedEditCellOptions: function(_ref) {\r\n            var oldColumnIndex = _ref.oldColumnIndex,\r\n                oldRowIndex = _ref.oldRowIndex,\r\n                columnIndex = _ref.columnIndex,\r\n                rowIndex = _ref.rowIndex;\r\n            var columnsController = this._columnsController;\r\n            var visibleColumns = columnsController.getVisibleColumns();\r\n            var items = this._dataController.items();\r\n            var item = items[rowIndex];\r\n            var oldColumn;\r\n            if ((0, _type.isDefined)(oldColumnIndex)) {\r\n                oldColumn = visibleColumns[oldColumnIndex]\r\n            } else {\r\n                oldColumn = this._getEditColumn()\r\n            }\r\n            if (!(0, _type.isDefined)(oldRowIndex)) {\r\n                oldRowIndex = this._getVisibleEditRowIndex()\r\n            }\r\n            if ((0, _type.isString)(columnIndex)) {\r\n                columnIndex = columnsController.columnOption(columnIndex, \"index\");\r\n                columnIndex = columnsController.getVisibleIndex(columnIndex)\r\n            }\r\n            var column = visibleColumns[columnIndex];\r\n            return {\r\n                oldColumn: oldColumn,\r\n                columnIndex: columnIndex,\r\n                oldRowIndex: oldRowIndex,\r\n                rowIndex: rowIndex,\r\n                column: column,\r\n                item: item\r\n            }\r\n        },\r\n        _editCellCore: function(options) {\r\n            var _this12 = this;\r\n            var dataController = this._dataController;\r\n            var isEditByOptionChanged = (0, _type.isDefined)(options.oldColumnIndex) || (0, _type.isDefined)(options.oldRowIndex);\r\n            var _this$_getNormalizedE = this._getNormalizedEditCellOptions(options),\r\n                columnIndex = _this$_getNormalizedE.columnIndex,\r\n                rowIndex = _this$_getNormalizedE.rowIndex,\r\n                column = _this$_getNormalizedE.column,\r\n                item = _this$_getNormalizedE.item;\r\n            var params = {\r\n                data: null === item || void 0 === item ? void 0 : item.data,\r\n                cancel: false,\r\n                column: column\r\n            };\r\n            if (void 0 === item.key) {\r\n                this._dataController.fireError(\"E1043\");\r\n                return\r\n            }\r\n            if (column && item && (\"data\" === item.rowType || \"detailAdaptive\" === item.rowType) && !item.removed && !_isRowEditMode(this)) {\r\n                if (!isEditByOptionChanged && this.isEditCell(rowIndex, columnIndex)) {\r\n                    return true\r\n                }\r\n                var editRowIndex = rowIndex + dataController.getRowIndexOffset();\r\n                return (0, _deferred.when)(this._beforeEditCell(rowIndex, columnIndex, item)).done(function(cancel) {\r\n                    if (cancel) {\r\n                        return\r\n                    }\r\n                    if (!_this12._prepareEditCell(params, item, columnIndex, editRowIndex)) {\r\n                        _this12._processCanceledEditingCell()\r\n                    }\r\n                })\r\n            }\r\n            return false\r\n        },\r\n        _processCanceledEditingCell: function() {},\r\n        _prepareEditCell: function(params, item, editColumnIndex, editRowIndex) {\r\n            if (!item.isNewRow) {\r\n                params.key = item.key\r\n            }\r\n            if (this._isEditingStart(params)) {\r\n                return false\r\n            }\r\n            this._pageIndex = this._dataController.pageIndex();\r\n            this._setEditRowKey(item.key);\r\n            this._setEditColumnNameByIndex(editColumnIndex);\r\n            if (!params.column.showEditorAlways) {\r\n                this._addInternalData({\r\n                    key: item.key,\r\n                    oldData: item.data\r\n                })\r\n            }\r\n            return true\r\n        },\r\n        _repaintEditCell: function(column, oldColumn, oldEditRowIndex) {\r\n            var that = this;\r\n            this._needFocusEditor = true;\r\n            if (!column || !column.showEditorAlways || oldColumn && !oldColumn.showEditorAlways) {\r\n                that._editCellInProgress = true;\r\n                that.getController(\"editorFactory\").loseFocus();\r\n                that._dataController.updateItems({\r\n                    changeType: \"update\",\r\n                    rowIndices: [oldEditRowIndex, that._getVisibleEditRowIndex()]\r\n                })\r\n            } else {\r\n                that._dataController.updateItems({\r\n                    changeType: \"update\",\r\n                    rowIndices: []\r\n                })\r\n            }\r\n        },\r\n        _delayedInputFocus: function($cell, beforeFocusCallback, callBeforeFocusCallbackAlways) {\r\n            var that = this;\r\n\r\n            function inputFocus() {\r\n                if (beforeFocusCallback) {\r\n                    beforeFocusCallback()\r\n                }\r\n                if ($cell) {\r\n                    var $focusableElement = $cell.find(FOCUSABLE_ELEMENT_SELECTOR).first();\r\n                    _uiGrid_core2.default.focusAndSelectElement(that, $focusableElement)\r\n                }\r\n                that._beforeFocusCallback = null\r\n            }\r\n            if (_devices.default.real().ios || _devices.default.real().android) {\r\n                inputFocus()\r\n            } else {\r\n                if (that._beforeFocusCallback) {\r\n                    that._beforeFocusCallback()\r\n                }\r\n                clearTimeout(that._inputFocusTimeoutID);\r\n                if (callBeforeFocusCallbackAlways) {\r\n                    that._beforeFocusCallback = beforeFocusCallback\r\n                }\r\n                that._inputFocusTimeoutID = setTimeout(inputFocus)\r\n            }\r\n        },\r\n        _focusEditingCell: function(beforeFocusCallback, $editCell, callBeforeFocusCallbackAlways) {\r\n            var that = this;\r\n            var rowsView = that.getView(\"rowsView\");\r\n            var editColumnIndex = this._getVisibleEditColumnIndex();\r\n            $editCell = $editCell || rowsView && rowsView._getCellElement(that._getVisibleEditRowIndex(), editColumnIndex);\r\n            that._delayedInputFocus($editCell, beforeFocusCallback, callBeforeFocusCallbackAlways)\r\n        },\r\n        deleteRow: function(rowIndex) {\r\n            var _this13 = this;\r\n            if (\"cell\" === this.option(\"editing.mode\") && this.isEditing()) {\r\n                var isNewRow = this._dataController.items()[rowIndex].isNewRow;\r\n                this.closeEditCell(null, isNewRow).always(function() {\r\n                    _this13._checkAndDeleteRow(rowIndex)\r\n                })\r\n            } else {\r\n                this._checkAndDeleteRow(rowIndex)\r\n            }\r\n        },\r\n        _checkAndDeleteRow: function(rowIndex) {\r\n            var that = this;\r\n            var editingOptions = that.option(\"editing\");\r\n            var editingTexts = editingOptions && editingOptions.texts;\r\n            var isBatchMode = editingOptions && editingOptions.mode === EDIT_MODE_BATCH;\r\n            var confirmDelete = editingOptions && editingOptions.confirmDelete;\r\n            var confirmDeleteMessage = editingTexts && editingTexts.confirmDeleteMessage;\r\n            var item = that._dataController.items()[rowIndex];\r\n            var allowDeleting = isBatchMode || !that.isEditing() || item.isNewRow;\r\n            if (item && allowDeleting) {\r\n                if (isBatchMode || !confirmDelete || !confirmDeleteMessage) {\r\n                    that._deleteRowCore(rowIndex)\r\n                } else {\r\n                    var confirmDeleteTitle = editingTexts && editingTexts.confirmDeleteTitle;\r\n                    var showDialogTitle = (0, _type.isDefined)(confirmDeleteTitle) && confirmDeleteTitle.length > 0;\r\n                    (0, _dialog.confirm)(confirmDeleteMessage, confirmDeleteTitle, showDialogTitle).done(function(confirmResult) {\r\n                        if (confirmResult) {\r\n                            that._deleteRowCore(rowIndex)\r\n                        }\r\n                    })\r\n                }\r\n            }\r\n        },\r\n        _deleteRowCore: function(rowIndex) {\r\n            var dataController = this._dataController;\r\n            var item = dataController.items()[rowIndex];\r\n            var key = item && item.key;\r\n            var oldEditRowIndex = this._getVisibleEditRowIndex();\r\n            var isBatchMode = this.option(\"editing.mode\") === EDIT_MODE_BATCH;\r\n            this.refresh();\r\n            var changes = this.getChanges();\r\n            var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n            if (editIndex >= 0) {\r\n                if (changes[editIndex].type === DATA_EDIT_DATA_INSERT_TYPE) {\r\n                    this._removeChange(editIndex)\r\n                } else {\r\n                    this._addChange({\r\n                        key: key,\r\n                        type: DATA_EDIT_DATA_REMOVE_TYPE\r\n                    })\r\n                }\r\n            } else {\r\n                this._addChange({\r\n                    key: key,\r\n                    oldData: item.data,\r\n                    type: DATA_EDIT_DATA_REMOVE_TYPE\r\n                })\r\n            }\r\n            if (isBatchMode) {\r\n                dataController.updateItems({\r\n                    changeType: \"update\",\r\n                    rowIndices: [oldEditRowIndex, rowIndex]\r\n                })\r\n            } else {\r\n                this.saveEditData()\r\n            }\r\n        },\r\n        undeleteRow: function(rowIndex) {\r\n            var that = this;\r\n            var dataController = that._dataController;\r\n            var item = dataController.items()[rowIndex];\r\n            var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n            var key = item && item.key;\r\n            var changes = this.getChanges();\r\n            if (item) {\r\n                var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n                if (editIndex >= 0) {\r\n                    var data = changes[editIndex].data;\r\n                    if ((0, _type.isEmptyObject)(data)) {\r\n                        that._removeChange(editIndex)\r\n                    } else {\r\n                        that._addChange({\r\n                            key: key,\r\n                            type: DATA_EDIT_DATA_UPDATE_TYPE\r\n                        })\r\n                    }\r\n                    dataController.updateItems({\r\n                        changeType: \"update\",\r\n                        rowIndices: [oldEditRowIndex, rowIndex]\r\n                    })\r\n                }\r\n            }\r\n        },\r\n        _fireOnSaving: function() {\r\n            var _this14 = this;\r\n            var onSavingParams = {\r\n                cancel: false,\r\n                promise: null,\r\n                changes: _toConsumableArray(this.getChanges())\r\n            };\r\n            this.executeAction(\"onSaving\", onSavingParams);\r\n            var d = new _deferred.Deferred;\r\n            (0, _deferred.when)((0, _deferred.fromPromise)(onSavingParams.promise)).done(function() {\r\n                d.resolve(onSavingParams)\r\n            }).fail(function(arg) {\r\n                createFailureHandler(d);\r\n                _this14._fireDataErrorOccurred(arg);\r\n                d.resolve({\r\n                    cancel: true\r\n                })\r\n            });\r\n            return d\r\n        },\r\n        _executeEditingAction: function(actionName, params, func) {\r\n            if (this.component._disposed) {\r\n                return null\r\n            }\r\n            var deferred = new _deferred.Deferred;\r\n            this.executeAction(actionName, params);\r\n            (0, _deferred.when)((0, _deferred.fromPromise)(params.cancel)).done(function(cancel) {\r\n                if (cancel) {\r\n                    setTimeout(function() {\r\n                        deferred.resolve(\"cancel\")\r\n                    })\r\n                } else {\r\n                    func(params).done(deferred.resolve).fail(createFailureHandler(deferred))\r\n                }\r\n            }).fail(createFailureHandler(deferred));\r\n            return deferred\r\n        },\r\n        _processChanges: function(deferreds, results, dataChanges, changes) {\r\n            var _this15 = this;\r\n            var store = this._dataController.store();\r\n            (0, _iterator.each)(changes, function(index, change) {\r\n                var oldData = _this15._getOldData(change.key);\r\n                var data = change.data,\r\n                    type = change.type;\r\n                var changeCopy = _objectSpread({}, change);\r\n                var deferred;\r\n                var params;\r\n                if (_this15._beforeSaveEditData(change, index)) {\r\n                    return\r\n                }\r\n                switch (type) {\r\n                    case DATA_EDIT_DATA_REMOVE_TYPE:\r\n                        params = {\r\n                            data: oldData,\r\n                            key: change.key,\r\n                            cancel: false\r\n                        };\r\n                        deferred = _this15._executeEditingAction(\"onRowRemoving\", params, function() {\r\n                            return store.remove(change.key).done(function(key) {\r\n                                dataChanges.push({\r\n                                    type: \"remove\",\r\n                                    key: key\r\n                                })\r\n                            })\r\n                        });\r\n                        break;\r\n                    case DATA_EDIT_DATA_INSERT_TYPE:\r\n                        params = {\r\n                            data: data,\r\n                            cancel: false\r\n                        };\r\n                        deferred = _this15._executeEditingAction(\"onRowInserting\", params, function() {\r\n                            return store.insert(params.data).done(function(data, key) {\r\n                                if ((0, _type.isDefined)(key)) {\r\n                                    changeCopy.key = key\r\n                                }\r\n                                if (data && (0, _type.isObject)(data) && data !== params.data) {\r\n                                    changeCopy.data = data\r\n                                }\r\n                                dataChanges.push({\r\n                                    type: \"insert\",\r\n                                    data: data,\r\n                                    index: 0\r\n                                })\r\n                            })\r\n                        });\r\n                        break;\r\n                    case DATA_EDIT_DATA_UPDATE_TYPE:\r\n                        params = {\r\n                            newData: data,\r\n                            oldData: oldData,\r\n                            key: change.key,\r\n                            cancel: false\r\n                        };\r\n                        deferred = _this15._executeEditingAction(\"onRowUpdating\", params, function() {\r\n                            return store.update(change.key, params.newData).done(function(data, key) {\r\n                                if (data && (0, _type.isObject)(data) && data !== params.newData) {\r\n                                    changeCopy.data = data\r\n                                }\r\n                                dataChanges.push({\r\n                                    type: \"update\",\r\n                                    key: key,\r\n                                    data: data\r\n                                })\r\n                            })\r\n                        })\r\n                }\r\n                changes[index] = changeCopy;\r\n                if (deferred) {\r\n                    var doneDeferred = new _deferred.Deferred;\r\n                    deferred.always(function(data) {\r\n                        results.push({\r\n                            key: change.key,\r\n                            result: data\r\n                        })\r\n                    }).always(doneDeferred.resolve);\r\n                    deferreds.push(doneDeferred.promise())\r\n                }\r\n            })\r\n        },\r\n        _processSaveEditDataResult: function(results) {\r\n            var that = this;\r\n            var hasSavedData = false;\r\n            var editMode = _getEditMode(that);\r\n            var changes = _toConsumableArray(this.getChanges());\r\n            var changesLength = changes.length;\r\n            for (var i = 0; i < results.length; i++) {\r\n                var arg = results[i].result;\r\n                var cancel = \"cancel\" === arg;\r\n                var editIndex = _uiGrid_core2.default.getIndexByKey(results[i].key, changes);\r\n                var change = changes[editIndex];\r\n                var isError = arg && arg instanceof Error;\r\n                if (isError) {\r\n                    if (change) {\r\n                        this._addInternalData({\r\n                            key: change.key,\r\n                            error: arg\r\n                        })\r\n                    }\r\n                    that._fireDataErrorOccurred(arg);\r\n                    if (editMode !== EDIT_MODE_BATCH) {\r\n                        if ((null === change || void 0 === change ? void 0 : change.type) === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n                            if (editIndex >= 0) {\r\n                                changes.splice(editIndex, 1)\r\n                            }\r\n                        }\r\n                        break\r\n                    }\r\n                } else {\r\n                    if (!cancel || !change || editMode !== EDIT_MODE_BATCH && change.type === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n                        if (editIndex >= 0) {\r\n                            changes.splice(editIndex, 1)\r\n                        }\r\n                        hasSavedData = !cancel\r\n                    }\r\n                }\r\n            }\r\n            if (changes.length < changesLength) {\r\n                this._silentOption(EDITING_CHANGES_OPTION_NAME, changes)\r\n            }\r\n            return hasSavedData\r\n        },\r\n        _fireSaveEditDataEvents: function(changes) {\r\n            var that = this;\r\n            (0, _iterator.each)(changes, function(_, _ref2) {\r\n                var data = _ref2.data,\r\n                    key = _ref2.key,\r\n                    type = _ref2.type;\r\n                var internalData = that._addInternalData({\r\n                    key: key\r\n                });\r\n                var params = {\r\n                    key: key,\r\n                    data: data\r\n                };\r\n                if (internalData.error) {\r\n                    params.error = internalData.error\r\n                }\r\n                switch (type) {\r\n                    case DATA_EDIT_DATA_REMOVE_TYPE:\r\n                        that.executeAction(\"onRowRemoved\", (0, _extend.extend)({}, params, {\r\n                            data: internalData.oldData\r\n                        }));\r\n                        break;\r\n                    case DATA_EDIT_DATA_INSERT_TYPE:\r\n                        that.executeAction(\"onRowInserted\", params);\r\n                        break;\r\n                    case DATA_EDIT_DATA_UPDATE_TYPE:\r\n                        that.executeAction(\"onRowUpdated\", params)\r\n                }\r\n            });\r\n            this.executeAction(\"onSaved\", {\r\n                changes: changes\r\n            })\r\n        },\r\n        saveEditData: function() {\r\n            var _this16 = this;\r\n            var deferred = new _deferred.Deferred;\r\n            this.waitForDeferredOperations().done(function() {\r\n                if (_this16.isSaving()) {\r\n                    _this16._resolveAfterSave(deferred);\r\n                    return\r\n                }(0, _deferred.when)(_this16._beforeSaveEditData()).done(function(cancel) {\r\n                    if (cancel) {\r\n                        _this16._resolveAfterSave(deferred, {\r\n                            cancel: cancel\r\n                        });\r\n                        return\r\n                    }\r\n                    _this16._saving = true;\r\n                    _this16._saveEditDataInner().done(deferred.resolve).fail(deferred.reject).always(function() {\r\n                        _this16._saving = false\r\n                    })\r\n                }).fail(deferred.reject)\r\n            }).fail(deferred.reject);\r\n            return deferred.promise()\r\n        },\r\n        _resolveAfterSave: function(deferred) {\r\n            var _ref3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\r\n                cancel = _ref3.cancel,\r\n                error = _ref3.error;\r\n            (0, _deferred.when)(this._afterSaveEditData(cancel)).done(function() {\r\n                deferred.resolve(error)\r\n            }).fail(deferred.reject)\r\n        },\r\n        _saveEditDataInner: function() {\r\n            var _this17 = this;\r\n            var results = [];\r\n            var deferreds = [];\r\n            var dataChanges = [];\r\n            var dataController = this._dataController;\r\n            var dataSource = dataController.dataSource();\r\n            var result = new _deferred.Deferred;\r\n            (0, _deferred.when)(this._fireOnSaving()).done(function(_ref4) {\r\n                var cancel = _ref4.cancel,\r\n                    changes = _ref4.changes;\r\n                if (cancel) {\r\n                    return result.resolve().promise()\r\n                }\r\n                _this17._processChanges(deferreds, results, dataChanges, changes);\r\n                if (deferreds.length) {\r\n                    null === dataSource || void 0 === dataSource ? void 0 : dataSource.beginLoading();\r\n                    _deferred.when.apply(void 0, deferreds).done(function() {\r\n                        if (_this17._processSaveEditDataResult(results)) {\r\n                            _this17._endSaving(dataChanges, changes, result)\r\n                        } else {\r\n                            null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n                            result.resolve()\r\n                        }\r\n                    }).fail(function(error) {\r\n                        null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n                        result.resolve(error)\r\n                    });\r\n                    return result.always(function() {\r\n                        _this17._focusEditingCell()\r\n                    }).promise()\r\n                }\r\n                _this17._cancelSaving(result)\r\n            }).fail(result.reject);\r\n            return result.promise()\r\n        },\r\n        _resetModifiedClassCells: function(changes) {\r\n            var _this18 = this;\r\n            var editMode = _getEditMode(this);\r\n            if (editMode === EDIT_MODE_BATCH) {\r\n                var columnsCount = this._columnsController.getVisibleColumns().length;\r\n                changes.forEach(function(_ref5) {\r\n                    var key = _ref5.key;\r\n                    var rowIndex = _this18._dataController.getRowIndexByKey(key);\r\n                    if (rowIndex !== -1) {\r\n                        for (var columnIndex = 0; columnIndex < columnsCount; columnIndex++) {\r\n                            _this18._rowsView._getCellElement(rowIndex, columnIndex).removeClass(CELL_MODIFIED)\r\n                        }\r\n                    }\r\n                })\r\n            }\r\n        },\r\n        _endSaving: function(dataChanges, changes, deferred) {\r\n            var _changes$;\r\n            var editMode = _getEditMode(this);\r\n            var dataSource = this._dataController.dataSource();\r\n            if (editMode !== EDIT_MODE_CELL) {\r\n                this._resetModifiedClassCells(changes);\r\n                this._resetEditIndices()\r\n            } else {\r\n                if (\"update\" !== (null === (_changes$ = changes[0]) || void 0 === _changes$ ? void 0 : _changes$.type)) {\r\n                    this._resetEditIndices()\r\n                }\r\n            }\r\n            if (editMode === EDIT_MODE_POPUP && this._editPopup) {\r\n                this._editPopup.hide()\r\n            }\r\n            null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n            this._refreshDataAfterSave(dataChanges, changes, deferred)\r\n        },\r\n        _cancelSaving: function(result) {\r\n            var editMode = _getEditMode(this);\r\n            var dataController = this._dataController;\r\n            if (_isRowEditMode(this)) {\r\n                if (!this.hasChanges()) {\r\n                    this._cancelEditDataCore()\r\n                }\r\n            } else {\r\n                if (this.isCellOrBatchEditMode()) {\r\n                    if (editMode !== EDIT_MODE_CELL) {\r\n                        this._resetEditIndices()\r\n                    }\r\n                    dataController.updateItems()\r\n                } else {\r\n                    this._focusEditingCell()\r\n                }\r\n            }\r\n            this.executeAction(\"onSaved\", {\r\n                changes: []\r\n            });\r\n            this._resolveAfterSave(result)\r\n        },\r\n        _refreshDataAfterSave: function(dataChanges, changes, deferred) {\r\n            var _this19 = this;\r\n            var dataController = this._dataController;\r\n            var refreshMode = this.option(\"editing.refreshMode\");\r\n            var isFullRefresh = \"reshape\" !== refreshMode && \"repaint\" !== refreshMode;\r\n            if (!isFullRefresh) {\r\n                dataController.push(dataChanges)\r\n            }(0, _deferred.when)(dataController.refresh({\r\n                selection: isFullRefresh,\r\n                reload: isFullRefresh,\r\n                load: \"reshape\" === refreshMode,\r\n                changesOnly: this.option(\"repaintChangesOnly\")\r\n            })).always(function() {\r\n                _this19._fireSaveEditDataEvents(changes)\r\n            }).done(function() {\r\n                _this19._resolveAfterSave(deferred)\r\n            }).fail(function(error) {\r\n                _this19._resolveAfterSave(deferred, {\r\n                    error: error\r\n                })\r\n            })\r\n        },\r\n        isSaving: function() {\r\n            return this._saving\r\n        },\r\n        _updateEditColumn: function() {\r\n            var that = this;\r\n            var isEditColumnVisible = that._isEditColumnVisible();\r\n            var useIcons = that.option(\"editing.useIcons\");\r\n            var cssClass = COMMAND_EDIT_CLASS + (useIcons ? \" \" + COMMAND_EDIT_WITH_ICONS_CLASS : \"\");\r\n            that._columnsController.addCommandColumn({\r\n                type: \"buttons\",\r\n                command: \"edit\",\r\n                visible: isEditColumnVisible,\r\n                cssClass: cssClass,\r\n                width: \"auto\",\r\n                alignment: \"center\",\r\n                cellTemplate: that._getEditCommandCellTemplate(),\r\n                fixedPosition: \"right\"\r\n            });\r\n            that._columnsController.columnOption(\"command:edit\", {\r\n                visible: isEditColumnVisible,\r\n                cssClass: cssClass\r\n            })\r\n        },\r\n        _isEditColumnVisible: function() {\r\n            var that = this;\r\n            var editingOptions = that.option(\"editing\");\r\n            if (editingOptions) {\r\n                var editMode = _getEditMode(that);\r\n                var isVisibleWithCurrentEditMode = false;\r\n                switch (editMode) {\r\n                    case EDIT_MODE_ROW:\r\n                        isVisibleWithCurrentEditMode = editingOptions.allowUpdating || editingOptions.allowAdding;\r\n                        break;\r\n                    case EDIT_MODE_FORM:\r\n                    case EDIT_MODE_POPUP:\r\n                        isVisibleWithCurrentEditMode = editingOptions.allowUpdating\r\n                }\r\n                return editingOptions.allowDeleting || isVisibleWithCurrentEditMode\r\n            }\r\n        },\r\n        _updateEditButtons: function() {\r\n            var that = this;\r\n            var headerPanel = that.getView(\"headerPanel\");\r\n            var hasChanges = that.hasChanges();\r\n            if (headerPanel) {\r\n                headerPanel.setToolbarItemDisabled(\"saveButton\", !hasChanges);\r\n                headerPanel.setToolbarItemDisabled(\"revertButton\", !hasChanges)\r\n            }\r\n        },\r\n        _applyModified: function($element) {\r\n            $element && $element.addClass(CELL_MODIFIED)\r\n        },\r\n        _beforeCloseEditCellInBatchMode: function() {},\r\n        cancelEditData: function() {\r\n            var changes = this.getChanges();\r\n            var params = {\r\n                cancel: false,\r\n                changes: changes\r\n            };\r\n            this.executeAction(\"onEditCanceling\", params);\r\n            if (!params.cancel) {\r\n                this._cancelEditDataCore();\r\n                this.executeAction(\"onEditCanceled\", {\r\n                    changes: changes\r\n                })\r\n            }\r\n        },\r\n        _cancelEditDataCore: function() {\r\n            var editMode = _getEditMode(this);\r\n            var rowIndex = this._getVisibleEditRowIndex();\r\n            var dataController = this._dataController;\r\n            this._beforeCancelEditData();\r\n            this.init();\r\n            this.resetChanges();\r\n            this._resetEditColumnName();\r\n            this._resetEditRowKey();\r\n            if (ROW_BASED_MODES.indexOf(editMode) !== -1 && rowIndex >= 0) {\r\n                dataController.updateItems({\r\n                    changeType: \"update\",\r\n                    rowIndices: [rowIndex, rowIndex + 1]\r\n                })\r\n            } else {\r\n                dataController.updateItems({\r\n                    repaintChangesOnly: this.option(\"repaintChangesOnly\")\r\n                })\r\n            }\r\n            if (editMode === EDIT_MODE_POPUP) {\r\n                this._hideEditPopup()\r\n            }\r\n        },\r\n        _hideEditPopup: function() {\r\n            this._editPopup && this._editPopup.option(\"visible\", false)\r\n        },\r\n        hasEditData: function() {\r\n            return this.hasChanges()\r\n        },\r\n        closeEditCell: function(isError, withoutSaveEditData) {\r\n            var _this20 = this;\r\n            var that = this;\r\n            var result = (0, _deferred.when)();\r\n            var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n            if (!_isRowEditMode(that)) {\r\n                result = (0, _deferred.Deferred)();\r\n                this.executeOperation(result, function() {\r\n                    _this20._closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData);\r\n                    result.resolve()\r\n                })\r\n            }\r\n            return result.promise()\r\n        },\r\n        _closeEditCellCore: function(isError, oldEditRowIndex, withoutSaveEditData) {\r\n            var that = this;\r\n            var editMode = _getEditMode(that);\r\n            var dataController = that._dataController;\r\n            if (editMode === EDIT_MODE_CELL && that.hasChanges()) {\r\n                if (!withoutSaveEditData) {\r\n                    that.saveEditData().done(function(error) {\r\n                        if (!that.hasChanges()) {\r\n                            that.closeEditCell(!!error)\r\n                        }\r\n                    })\r\n                }\r\n            } else {\r\n                if (oldEditRowIndex >= 0) {\r\n                    var rowIndices = [oldEditRowIndex];\r\n                    this._resetEditRowKey();\r\n                    that._resetEditColumnName();\r\n                    that._beforeCloseEditCellInBatchMode(rowIndices);\r\n                    if (!isError) {\r\n                        dataController.updateItems({\r\n                            changeType: \"update\",\r\n                            rowIndices: rowIndices\r\n                        })\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        update: function(changeType) {\r\n            var that = this;\r\n            var dataController = that._dataController;\r\n            if (dataController && that._pageIndex !== dataController.pageIndex()) {\r\n                if (\"refresh\" === changeType) {\r\n                    that.refresh(true)\r\n                }\r\n                that._pageIndex = dataController.pageIndex()\r\n            }\r\n            that._updateEditButtons()\r\n        },\r\n        _getRowIndicesForCascadeUpdating: function(row, skipCurrentRow) {\r\n            return skipCurrentRow ? [] : [row.rowIndex]\r\n        },\r\n        addDeferred: function(deferred) {\r\n            var _this21 = this;\r\n            if (this._deferreds.indexOf(deferred) < 0) {\r\n                this._deferreds.push(deferred);\r\n                deferred.always(function() {\r\n                    var index = _this21._deferreds.indexOf(deferred);\r\n                    if (index >= 0) {\r\n                        _this21._deferreds.splice(index, 1)\r\n                    }\r\n                })\r\n            }\r\n        },\r\n        _prepareChange: function(options, value, text) {\r\n            var _options$row;\r\n            var that = this;\r\n            var newData = {};\r\n            var oldData = null === (_options$row = options.row) || void 0 === _options$row ? void 0 : _options$row.data;\r\n            var rowKey = options.key;\r\n            var $cellElement = (0, _renderer.default)(options.cellElement);\r\n            var editMode = _getEditMode(that);\r\n            var deferred = new _deferred.Deferred;\r\n            if (void 0 !== rowKey) {\r\n                if (editMode === EDIT_MODE_BATCH) {\r\n                    that._applyModified($cellElement, options)\r\n                }\r\n                options.value = value;\r\n                var setCellValueResult = (0, _deferred.fromPromise)(options.column.setCellValue(newData, value, (0, _extend.extend)(true, {}, oldData), text));\r\n                setCellValueResult.done(function() {\r\n                    deferred.resolve({\r\n                        data: newData,\r\n                        key: rowKey,\r\n                        oldData: oldData,\r\n                        type: DATA_EDIT_DATA_UPDATE_TYPE\r\n                    })\r\n                }).fail(createFailureHandler(deferred)).fail(function(arg) {\r\n                    return that._fireDataErrorOccurred(arg)\r\n                });\r\n                if ((0, _type.isDefined)(text) && options.column.displayValueMap) {\r\n                    options.column.displayValueMap[value] = text\r\n                }\r\n                that._updateRowValues(options);\r\n                that.addDeferred(deferred)\r\n            }\r\n            return deferred\r\n        },\r\n        _updateRowValues: function(options) {\r\n            if (options.values) {\r\n                var dataController = this._dataController;\r\n                var rowIndex = dataController.getRowIndexByKey(options.key);\r\n                var row = dataController.getVisibleRows()[rowIndex];\r\n                if (row) {\r\n                    options.values = row.values\r\n                }\r\n                options.values[options.columnIndex] = options.value\r\n            }\r\n        },\r\n        updateFieldValue: function(options, value, text, forceUpdateRow) {\r\n            var _this22 = this;\r\n            var rowKey = options.key;\r\n            var deferred = new _deferred.Deferred;\r\n            if (void 0 === rowKey) {\r\n                this._dataController.fireError(\"E1043\")\r\n            }\r\n            if (options.column.setCellValue) {\r\n                this._prepareChange(options, value, text).done(function(params) {\r\n                    (0, _deferred.when)(_this22._applyChange(options, params, forceUpdateRow)).always(function() {\r\n                        deferred.resolve()\r\n                    })\r\n                })\r\n            } else {\r\n                deferred.resolve()\r\n            }\r\n            return deferred.promise()\r\n        },\r\n        _focusPreviousEditingCellIfNeed: function(options) {\r\n            var that = this;\r\n            if (that.hasEditData() && !that.isEditCell(options.rowIndex, options.columnIndex)) {\r\n                that._focusEditingCell();\r\n                that._updateEditRow(options.row, true);\r\n                return true\r\n            }\r\n        },\r\n        _needUpdateRow: function(column) {\r\n            var visibleColumns = this._columnsController.getVisibleColumns();\r\n            if (!column) {\r\n                column = this._getEditColumn()\r\n            }\r\n            var isCustomSetCellValue = column && column.setCellValue !== column.defaultSetCellValue;\r\n            var isCustomCalculateCellValue = visibleColumns.some(function(visibleColumn) {\r\n                return visibleColumn.calculateCellValue !== visibleColumn.defaultCalculateCellValue\r\n            });\r\n            return isCustomSetCellValue || isCustomCalculateCellValue\r\n        },\r\n        _applyChange: function(options, params, forceUpdateRow) {\r\n            var that = this;\r\n            var editMode = _getEditMode(that);\r\n            var isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue;\r\n            var showEditorAlways = options.column.showEditorAlways;\r\n            var isUpdateInCellMode = editMode === EDIT_MODE_CELL && options.row && !options.row.isNewRow;\r\n            var focusPreviousEditingCell = showEditorAlways && !forceUpdateRow && isUpdateInCellMode && that.hasEditData() && !that.isEditCell(options.rowIndex, options.columnIndex);\r\n            if (focusPreviousEditingCell) {\r\n                that._focusEditingCell();\r\n                that._updateEditRow(options.row, true, isCustomSetCellValue);\r\n                return\r\n            }\r\n            that._addChange(params, options.row);\r\n            that._updateEditButtons();\r\n            if (showEditorAlways && !forceUpdateRow) {\r\n                if (isUpdateInCellMode) {\r\n                    that._setEditRowKey(options.row.key, true);\r\n                    that._setEditColumnNameByIndex(options.columnIndex, true);\r\n                    return that.saveEditData()\r\n                } else {\r\n                    if (editMode === EDIT_MODE_BATCH) {\r\n                        forceUpdateRow = that._needUpdateRow(options.column)\r\n                    }\r\n                }\r\n            }\r\n            var row = options.row;\r\n            if (row) {\r\n                if (forceUpdateRow || isCustomSetCellValue) {\r\n                    that._updateEditRow(row, forceUpdateRow, isCustomSetCellValue)\r\n                } else {\r\n                    if (row.update) {\r\n                        row.update()\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n            var that = this;\r\n            var editForm = that._editForm;\r\n            var editMode = _getEditMode(that);\r\n            if (editMode === EDIT_MODE_POPUP) {\r\n                if (that.option(\"repaintChangesOnly\")) {\r\n                    row.update && row.update(row)\r\n                } else {\r\n                    if (editForm) {\r\n                        that._updateEditFormDeferred = (new _deferred.Deferred).done(function() {\r\n                            return editForm.repaint()\r\n                        });\r\n                        if (!that._updateLockCount) {\r\n                            that._updateEditFormDeferred.resolve()\r\n                        }\r\n                    }\r\n                }\r\n            } else {\r\n                that._dataController.updateItems({\r\n                    changeType: \"update\",\r\n                    rowIndices: that._getRowIndicesForCascadeUpdating(row, skipCurrentRow)\r\n                })\r\n            }\r\n        },\r\n        _endUpdateCore: function() {\r\n            this._updateEditFormDeferred && this._updateEditFormDeferred.resolve()\r\n        },\r\n        _updateEditRow: function(row, forceUpdateRow, isCustomSetCellValue) {\r\n            var that = this;\r\n            if (forceUpdateRow || !_isRowEditMode(that)) {\r\n                that._updateEditRowCore(row, !forceUpdateRow, isCustomSetCellValue);\r\n                if (!forceUpdateRow) {\r\n                    that._focusEditingCell()\r\n                }\r\n            } else {\r\n                var deferred = new _deferred.Deferred;\r\n                that.addDeferred(deferred);\r\n                setTimeout(function() {\r\n                    var $focusedElement = (0, _renderer.default)(_dom_adapter.default.getActiveElement());\r\n                    var columnIndex = that._rowsView.getCellIndex($focusedElement, row.rowIndex);\r\n                    var focusedElement = $focusedElement.get(0);\r\n                    var selectionRange = _uiGrid_core2.default.getSelectionRange(focusedElement);\r\n                    that._updateEditRowCore(row, false, isCustomSetCellValue);\r\n                    if (columnIndex >= 0) {\r\n                        var $focusedItem = that._rowsView._getCellElement(row.rowIndex, columnIndex);\r\n                        that._delayedInputFocus($focusedItem, function() {\r\n                            setTimeout(function() {\r\n                                focusedElement = _dom_adapter.default.getActiveElement();\r\n                                if (selectionRange.selectionStart >= 0) {\r\n                                    _uiGrid_core2.default.setSelectionRange(focusedElement, selectionRange)\r\n                                }\r\n                            })\r\n                        })\r\n                    }\r\n                    deferred.resolve()\r\n                })\r\n            }\r\n        },\r\n        _addChange: function(options, row) {\r\n            var changes = _toConsumableArray(this.getChanges());\r\n            var index = _uiGrid_core2.default.getIndexByKey(options.key, changes);\r\n            if (index < 0) {\r\n                index = changes.length;\r\n                this._addInternalData({\r\n                    key: options.key,\r\n                    oldData: options.oldData\r\n                });\r\n                delete options.oldData;\r\n                changes.push(options)\r\n            }\r\n            var change = _objectSpread({}, changes[index]);\r\n            if (change) {\r\n                if (options.data) {\r\n                    change.data = (0, _array_utils.createObjectWithChanges)(change.data, options.data)\r\n                }\r\n                if ((!change.type || !options.data) && options.type) {\r\n                    change.type = options.type\r\n                }\r\n                if (row) {\r\n                    row.oldData = this._getOldData(row.key);\r\n                    row.data = (0, _array_utils.createObjectWithChanges)(row.data, options.data)\r\n                }\r\n            }\r\n            changes[index] = change;\r\n            this._silentOption(EDITING_CHANGES_OPTION_NAME, changes);\r\n            return index\r\n        },\r\n        _getFormEditItemTemplate: function(cellOptions, column) {\r\n            return column.editCellTemplate || getDefaultEditorTemplate(this)\r\n        },\r\n        renderFormEditTemplate: function(detailCellOptions, item, form, container, isReadOnly) {\r\n            var that = this;\r\n            var $container = (0,\r\n                _renderer.default)(container);\r\n            var column = item.column;\r\n            var editorType = getEditorType(item);\r\n            var rowData = null === detailCellOptions || void 0 === detailCellOptions ? void 0 : detailCellOptions.row.data;\r\n            var cellOptions = (0, _extend.extend)({}, detailCellOptions, {\r\n                data: rowData,\r\n                cellElement: null,\r\n                isOnForm: true,\r\n                item: item,\r\n                column: (0, _extend.extend)({}, column, {\r\n                    editorType: editorType,\r\n                    editorOptions: item.editorOptions\r\n                }),\r\n                id: form.getItemID(item.name || item.dataField),\r\n                columnIndex: column.index,\r\n                setValue: !isReadOnly && column.allowEditing && function(value) {\r\n                    that.updateFieldValue(cellOptions, value)\r\n                }\r\n            });\r\n            cellOptions.value = column.calculateCellValue(rowData);\r\n            var template = that._getFormEditItemTemplate.bind(that)(cellOptions, column);\r\n            that._rowsView.renderTemplate($container, template, cellOptions, !!$container.closest((0, _window.getWindow)().document).length).done(function() {\r\n                that._rowsView._updateCell($container, cellOptions)\r\n            });\r\n            return cellOptions\r\n        },\r\n        getFormEditorTemplate: function(cellOptions, item) {\r\n            var that = this;\r\n            var column = this.component.columnOption(item.dataField);\r\n            return function(options, container) {\r\n                var $container = (0, _renderer.default)(container);\r\n                cellOptions.row.watch && cellOptions.row.watch(function() {\r\n                    return column.selector(cellOptions.row.data)\r\n                }, function() {\r\n                    var _validator;\r\n                    var $editorElement = $container.find(\".dx-widget\").first();\r\n                    var validator = $editorElement.data(\"dxValidator\");\r\n                    var validatorOptions = null === (_validator = validator) || void 0 === _validator ? void 0 : _validator.option();\r\n                    $container.contents().remove();\r\n                    cellOptions = that.renderFormEditTemplate.bind(that)(cellOptions, item, options.component, $container);\r\n                    $editorElement = $container.find(\".dx-widget\").first();\r\n                    validator = $editorElement.data(\"dxValidator\");\r\n                    if (validatorOptions && !validator) {\r\n                        $editorElement.dxValidator({\r\n                            validationRules: validatorOptions.validationRules,\r\n                            validationGroup: validatorOptions.validationGroup,\r\n                            dataGetter: validatorOptions.dataGetter\r\n                        })\r\n                    }\r\n                });\r\n                cellOptions = that.renderFormEditTemplate.bind(that)(cellOptions, item, options.component, $container)\r\n            }\r\n        },\r\n        getEditFormOptions: function(detailOptions) {\r\n            var userCustomizeItem = this.option(\"editing.form.customizeItem\");\r\n            var editFormItemClass = this.addWidgetPrefix(EDIT_FORM_ITEM_CLASS);\r\n            var items = this.option(\"editing.form.items\");\r\n            var isCustomEditorType = {};\r\n            var that = this;\r\n            if (!items) {\r\n                var columns = this.getController(\"columns\").getColumns();\r\n                items = [];\r\n                (0, _iterator.each)(columns, function(_, column) {\r\n                    if (!column.isBand && !column.type) {\r\n                        items.push({\r\n                            column: column,\r\n                            name: column.name,\r\n                            dataField: column.dataField\r\n                        })\r\n                    }\r\n                })\r\n            } else {\r\n                forEachFormItems(items, function(item) {\r\n                    var itemId = (null === item || void 0 === item ? void 0 : item.name) || (null === item || void 0 === item ? void 0 : item.dataField);\r\n                    if (itemId) {\r\n                        isCustomEditorType[itemId] = !!item.editorType\r\n                    }\r\n                })\r\n            }\r\n            return {\r\n                items: items,\r\n                formID: \"dx-\" + new _guid.default,\r\n                customizeItem: function(item) {\r\n                    var column;\r\n                    var itemId = item.name || item.dataField;\r\n                    if (item.column || itemId) {\r\n                        column = item.column || that._columnsController.columnOption(item.name ? \"name:\" + item.name : \"dataField:\" + item.dataField)\r\n                    }\r\n                    if (column) {\r\n                        item.label = item.label || {};\r\n                        item.label.text = item.label.text || column.caption;\r\n                        item.template = item.template || that.getFormEditorTemplate(detailOptions, item);\r\n                        item.column = column;\r\n                        item.isCustomEditorType = isCustomEditorType[itemId];\r\n                        if (column.formItem) {\r\n                            (0, _extend.extend)(item, column.formItem)\r\n                        }\r\n                        if (void 0 === item.isRequired && column.validationRules) {\r\n                            item.isRequired = column.validationRules.some(function(rule) {\r\n                                return \"required\" === rule.type\r\n                            });\r\n                            item.validationRules = []\r\n                        }\r\n                        var itemVisible = (0, _type.isDefined)(item.visible) ? item.visible : true;\r\n                        if (!that._firstFormItem && itemVisible) {\r\n                            that._firstFormItem = item\r\n                        }\r\n                    }\r\n                    userCustomizeItem && userCustomizeItem.call(this, item);\r\n                    item.cssClass = (0, _type.isString)(item.cssClass) ? item.cssClass + \" \" + editFormItemClass : editFormItemClass\r\n                }\r\n            }\r\n        },\r\n        getEditFormTemplate: function() {\r\n            var that = this;\r\n            return function($container, detailOptions, renderFormOnly) {\r\n                var editFormOptions = that.option(\"editing.form\");\r\n                var baseEditFormOptions = that.getEditFormOptions(detailOptions);\r\n                that._firstFormItem = void 0;\r\n                that._editForm = that._createComponent((0, _renderer.default)(\"<div>\").appendTo($container), _form.default, (0, _extend.extend)({}, editFormOptions, baseEditFormOptions));\r\n                if (!renderFormOnly) {\r\n                    var $buttonsContainer = (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(FORM_BUTTONS_CONTAINER_CLASS)).appendTo($container);\r\n                    that._createComponent((0, _renderer.default)(\"<div>\").appendTo($buttonsContainer), _button.default, that._getSaveButtonConfig());\r\n                    that._createComponent((0, _renderer.default)(\"<div>\").appendTo($buttonsContainer), _button.default, that._getCancelButtonConfig())\r\n                }\r\n                that._editForm.on(\"contentReady\", function() {\r\n                    that._editPopup && that._editPopup.repaint()\r\n                })\r\n            }\r\n        },\r\n        getColumnTemplate: function(options) {\r\n            var that = this;\r\n            var column = options.column;\r\n            var rowIndex = options.row && options.row.rowIndex;\r\n            var template;\r\n            var isRowMode = _isRowEditMode(that);\r\n            var isRowEditing = that.isEditRow(rowIndex);\r\n            var isCellEditing = that.isEditCell(rowIndex, options.columnIndex);\r\n            var editingStartOptions;\r\n            if ((column.showEditorAlways || column.setCellValue && (isRowEditing && column.allowEditing || isCellEditing)) && (\"data\" === options.rowType || \"detailAdaptive\" === options.rowType) && !column.command) {\r\n                var allowUpdating = that.allowUpdating(options);\r\n                if (((allowUpdating || isRowEditing) && column.allowEditing || isCellEditing) && (isRowMode && isRowEditing || !isRowMode)) {\r\n                    if (column.showEditorAlways && !isRowMode) {\r\n                        editingStartOptions = {\r\n                            cancel: false,\r\n                            key: options.row.isNewRow ? void 0 : options.row.key,\r\n                            data: options.row.data,\r\n                            column: column\r\n                        };\r\n                        that._isEditingStart(editingStartOptions)\r\n                    }\r\n                    if (!editingStartOptions || !editingStartOptions.cancel) {\r\n                        options.setValue = function(value, text) {\r\n                            that.updateFieldValue(options, value, text)\r\n                        }\r\n                    }\r\n                }\r\n                template = column.editCellTemplate || getDefaultEditorTemplate(that)\r\n            } else {\r\n                if (\"detail\" === column.command && \"detail\" === options.rowType && isRowEditing) {\r\n                    template = that.getEditFormTemplate(options)\r\n                }\r\n            }\r\n            return template\r\n        },\r\n        _createButton: function($container, button, options) {\r\n            var that = this;\r\n            var icon = EDIT_ICON_CLASS[button.name];\r\n            var useIcons = that.option(\"editing.useIcons\");\r\n            var $button = (0, _renderer.default)(\"<a>\").attr(\"href\", \"#\").addClass(LINK_CLASS).addClass(button.cssClass);\r\n            if (button.template) {\r\n                that._rowsView.renderTemplate($container, button.template, options, true)\r\n            } else {\r\n                if (useIcons && icon || button.icon) {\r\n                    icon = button.icon || icon;\r\n                    var iconType = iconUtils.getImageSourceType(icon);\r\n                    if (\"image\" === iconType || \"svg\" === iconType) {\r\n                        $button = iconUtils.getImageContainer(icon).addClass(button.cssClass)\r\n                    } else {\r\n                        $button.addClass(\"dx-icon\" + (\"dxIcon\" === iconType ? \"-\" : \" \") + icon).attr(\"title\", button.text)\r\n                    }\r\n                    $button.addClass(\"dx-link-icon\");\r\n                    $container.addClass(COMMAND_EDIT_WITH_ICONS_CLASS);\r\n                    var localizationName = this.getButtonLocalizationNames()[button.name];\r\n                    localizationName && $button.attr(\"aria-label\", _message.default.format(localizationName))\r\n                } else {\r\n                    $button.text(button.text)\r\n                }\r\n                if ((0, _type.isDefined)(button.hint)) {\r\n                    $button.attr(\"title\", button.hint)\r\n                }\r\n                _events_engine.default.on($button, (0, _index.addNamespace)(\"click\", EDITING_NAMESPACE), that.createAction(function(e) {\r\n                    button.onClick.call(button, (0, _extend.extend)({}, e, {\r\n                        row: options.row,\r\n                        column: options.column\r\n                    }));\r\n                    e.event.preventDefault();\r\n                    e.event.stopPropagation()\r\n                }));\r\n                $container.append($button, \"&nbsp;\")\r\n            }\r\n        },\r\n        getButtonLocalizationNames: function() {\r\n            return {\r\n                edit: \"dxDataGrid-editingEditRow\",\r\n                save: \"dxDataGrid-editingSaveRowChanges\",\r\n                \"delete\": \"dxDataGrid-editingDeleteRow\",\r\n                undelete: \"dxDataGrid-editingUndeleteRow\",\r\n                cancel: \"dxDataGrid-editingCancelRowChanges\"\r\n            }\r\n        },\r\n        prepareEditButtons: function(headerPanel) {\r\n            var that = this;\r\n            var editingOptions = that.option(\"editing\") || {};\r\n            var editingTexts = that.option(\"editing.texts\") || {};\r\n            var titleButtonTextByClassNames = {\r\n                revert: editingTexts.cancelAllChanges,\r\n                save: editingTexts.saveAllChanges,\r\n                addRow: editingTexts.addRow\r\n            };\r\n            var classNameButtonByNames = {\r\n                revert: \"cancel\",\r\n                save: \"save\",\r\n                addRow: \"addrow\"\r\n            };\r\n            var buttonItems = [];\r\n            var prepareButtonItem = function(name, methodName, sortIndex) {\r\n                var className = classNameButtonByNames[name];\r\n                var onInitialized = function(e) {\r\n                    (0, _renderer.default)(e.element).addClass(headerPanel._getToolbarButtonClass(EDIT_BUTTON_CLASS + \" \" + that.addWidgetPrefix(className) + \"-button\"))\r\n                };\r\n                var hintText = titleButtonTextByClassNames[name];\r\n                var isButtonDisabled = (\"save\" === className || \"cancel\" === className) && !that.hasChanges();\r\n                return {\r\n                    widget: \"dxButton\",\r\n                    options: {\r\n                        onInitialized: onInitialized,\r\n                        icon: \"edit-button-\" + className,\r\n                        disabled: isButtonDisabled,\r\n                        onClick: function() {\r\n                            setTimeout(function() {\r\n                                that[methodName]()\r\n                            })\r\n                        },\r\n                        text: hintText,\r\n                        hint: hintText\r\n                    },\r\n                    showText: \"inMenu\",\r\n                    name: name + \"Button\",\r\n                    location: \"after\",\r\n                    locateInMenu: \"auto\",\r\n                    sortIndex: sortIndex\r\n                }\r\n            };\r\n            if (editingOptions.allowAdding) {\r\n                buttonItems.push(prepareButtonItem(\"addRow\", \"addRow\", 20))\r\n            }\r\n            if ((editingOptions.allowUpdating || editingOptions.allowAdding || editingOptions.allowDeleting) && _getEditMode(that) === EDIT_MODE_BATCH) {\r\n                buttonItems.push(prepareButtonItem(\"save\", \"saveEditData\", 21));\r\n                buttonItems.push(prepareButtonItem(\"revert\", \"cancelEditData\", 22))\r\n            }\r\n            return buttonItems\r\n        },\r\n        highlightDataCell: function($cell, parameters) {\r\n            var cellModified = this.isCellModified(parameters);\r\n            cellModified && parameters.column.setCellValue && $cell.addClass(CELL_MODIFIED)\r\n        },\r\n        _afterInsertRow: function() {},\r\n        _beforeSaveEditData: function(change) {\r\n            if (change && !(0, _type.isDefined)(change.key) && (0, _type.isDefined)(change.type)) {\r\n                return true\r\n            }\r\n        },\r\n        _afterSaveEditData: function() {},\r\n        _beforeCancelEditData: function() {},\r\n        _allowEditAction: function(actionName, options) {\r\n            var allowEditAction = this.option(\"editing.\" + actionName);\r\n            if ((0, _type.isFunction)(allowEditAction)) {\r\n                allowEditAction = allowEditAction({\r\n                    component: this.component,\r\n                    row: options.row\r\n                })\r\n            }\r\n            return allowEditAction\r\n        },\r\n        allowUpdating: function(options, eventName) {\r\n            var startEditAction = this.option(\"editing.startEditAction\") || DEFAULT_START_EDIT_ACTION;\r\n            var needCallback = arguments.length > 1 ? startEditAction === eventName || \"down\" === eventName : true;\r\n            return needCallback && this._allowEditAction(\"allowUpdating\", options)\r\n        },\r\n        allowDeleting: function(options) {\r\n            return this._allowEditAction(\"allowDeleting\", options)\r\n        },\r\n        isCellModified: function(parameters) {\r\n            var columnIndex = parameters.columnIndex;\r\n            var modifiedValues = parameters.row && (parameters.row.isNewRow ? parameters.row.values : parameters.row.modifiedValues);\r\n            return !!modifiedValues && void 0 !== modifiedValues[columnIndex]\r\n        }\r\n    }\r\n}());\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            editing: {\r\n                mode: \"row\",\r\n                refreshMode: \"full\",\r\n                allowAdding: false,\r\n                allowUpdating: false,\r\n                allowDeleting: false,\r\n                useIcons: false,\r\n                selectTextOnEditStart: false,\r\n                confirmDelete: true,\r\n                texts: {\r\n                    editRow: _message.default.format(\"dxDataGrid-editingEditRow\"),\r\n                    saveAllChanges: _message.default.format(\"dxDataGrid-editingSaveAllChanges\"),\r\n                    saveRowChanges: _message.default.format(\"dxDataGrid-editingSaveRowChanges\"),\r\n                    cancelAllChanges: _message.default.format(\"dxDataGrid-editingCancelAllChanges\"),\r\n                    cancelRowChanges: _message.default.format(\"dxDataGrid-editingCancelRowChanges\"),\r\n                    addRow: _message.default.format(\"dxDataGrid-editingAddRow\"),\r\n                    deleteRow: _message.default.format(\"dxDataGrid-editingDeleteRow\"),\r\n                    undeleteRow: _message.default.format(\"dxDataGrid-editingUndeleteRow\"),\r\n                    confirmDeleteMessage: _message.default.format(\"dxDataGrid-editingConfirmDeleteMessage\"),\r\n                    confirmDeleteTitle: \"\"\r\n                },\r\n                form: {\r\n                    colCount: 2\r\n                },\r\n                popup: {},\r\n                startEditAction: \"click\",\r\n                editRowKey: null,\r\n                editColumnName: null,\r\n                changes: []\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        editing: EditingController\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                init: function() {\r\n                    this._editingController = this.getController(\"editing\");\r\n                    this.callBase()\r\n                },\r\n                reload: function(full, repaintChangesOnly) {\r\n                    !repaintChangesOnly && this._editingController.refresh();\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                repaintRows: function() {\r\n                    if (this.getController(\"editing\").isSaving()) {\r\n                        return\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _updateEditRow: function(items) {\r\n                    var editingController = this._editingController;\r\n                    var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n                    var editRowIndex = _uiGrid_core2.default.getIndexByKey(editRowKey, items);\r\n                    var editItem = items[editRowIndex];\r\n                    if (editItem) {\r\n                        editItem.isEditing = true;\r\n                        if (editingController.getEditMode() === EDIT_MODE_FORM) {\r\n                            editItem.rowType = \"detail\"\r\n                        }\r\n                    }\r\n                },\r\n                _updateItemsCore: function(change) {\r\n                    this.callBase(change);\r\n                    this._updateEditRow(this.items())\r\n                },\r\n                _applyChangeUpdate: function(change) {\r\n                    this._updateEditRow(change.items);\r\n                    this.callBase(change)\r\n                },\r\n                _applyChangesOnly: function(change) {\r\n                    this._updateEditRow(change.items);\r\n                    this.callBase(change)\r\n                },\r\n                _processItems: function(items, change) {\r\n                    items = this._editingController.processItems(items, change);\r\n                    return this.callBase(items, change)\r\n                },\r\n                _processDataItem: function(dataItem, options) {\r\n                    this._editingController.processDataItem(dataItem, options, this.generateDataValues);\r\n                    return this.callBase(dataItem, options)\r\n                },\r\n                _processItem: function(item, options) {\r\n                    item = this.callBase(item, options);\r\n                    if (item.isNewRow) {\r\n                        options.dataIndex--;\r\n                        delete item.dataIndex\r\n                    }\r\n                    return item\r\n                },\r\n                _getChangedColumnIndices: function(oldItem, newItem, rowIndex, isLiveUpdate) {\r\n                    var editingController = this.getController(\"editing\");\r\n                    var isRowEditMode = editingController.isRowEditMode();\r\n                    if (oldItem.isNewRow !== newItem.isNewRow || oldItem.removed !== newItem.removed || isRowEditMode && oldItem.isEditing !== newItem.isEditing) {\r\n                        return\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n                    var editingController = this.getController(\"editing\");\r\n                    var cell = oldRow.cells && oldRow.cells[columnIndex];\r\n                    var isEditing = editingController && editingController.isEditCell(visibleRowIndex, columnIndex);\r\n                    if (isLiveUpdate && isEditing) {\r\n                        return false\r\n                    }\r\n                    if (cell && cell.column && !cell.column.showEditorAlways && cell.isEditing !== isEditing) {\r\n                        return true\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            rowsView: {\r\n                init: function() {\r\n                    this.callBase();\r\n                    this._editingController = this.getController(\"editing\")\r\n                },\r\n                getCellElements: function(rowIndex) {\r\n                    var $cellElements = this.callBase(rowIndex);\r\n                    var editingController = this._editingController;\r\n                    var editForm = editingController.getEditForm();\r\n                    var editFormRowIndex = editingController.getEditFormRowIndex();\r\n                    if (editFormRowIndex === rowIndex && $cellElements && editForm) {\r\n                        return editForm.$element().find(\".\" + this.addWidgetPrefix(EDIT_FORM_ITEM_CLASS) + \", .\" + BUTTON_CLASS)\r\n                    }\r\n                    return $cellElements\r\n                },\r\n                getCellIndex: function($cell, rowIndex) {\r\n                    if (!$cell.is(\"td\") && rowIndex >= 0) {\r\n                        var $cellElements = this.getCellElements(rowIndex);\r\n                        var cellIndex = -1;\r\n                        (0, _iterator.each)($cellElements, function(index, cellElement) {\r\n                            if ((0, _renderer.default)(cellElement).find($cell).length) {\r\n                                cellIndex = index\r\n                            }\r\n                        });\r\n                        return cellIndex\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n                    var editFormRowIndex = this._editingController.getEditFormRowIndex();\r\n                    if (editFormRowIndex === rowIndex && (0, _type.isString)(columnIdentifier)) {\r\n                        var column = this._columnsController.columnOption(columnIdentifier);\r\n                        return this._getEditFormEditorVisibleIndex($cells, column)\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _getEditFormEditorVisibleIndex: function($cells, column) {\r\n                    var visibleIndex = -1;\r\n                    (0, _iterator.each)($cells, function(index, cellElement) {\r\n                        var item = (0, _renderer.default)(cellElement).find(\".dx-field-item-content\").data(\"dx-form-item\");\r\n                        if (item && item.column && column && item.column.index === column.index) {\r\n                            visibleIndex = index;\r\n                            return false\r\n                        }\r\n                    });\r\n                    return visibleIndex\r\n                },\r\n                publicMethods: function() {\r\n                    return this.callBase().concat([\"cellValue\"])\r\n                },\r\n                _getCellTemplate: function(options) {\r\n                    var that = this;\r\n                    var template = that._editingController.getColumnTemplate(options);\r\n                    return template || that.callBase(options)\r\n                },\r\n                _isNativeClick: function() {\r\n                    return (_devices.default.real().ios || _devices.default.real().android) && this.option(\"editing.allowUpdating\")\r\n                },\r\n                _createTable: function() {\r\n                    var that = this;\r\n                    var $table = that.callBase.apply(that, arguments);\r\n                    if (!_isRowEditMode(that) && that.option(\"editing.allowUpdating\")) {\r\n                        _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, \"dxDataGridRowsView\"), \"td:not(.\" + EDITOR_CELL_CLASS + \")\", that.createAction(function() {\r\n                            var editingController = that._editingController;\r\n                            if (editingController.isEditing()) {\r\n                                editingController.closeEditCell()\r\n                            }\r\n                        }))\r\n                    }\r\n                    return $table\r\n                },\r\n                _createRow: function(row) {\r\n                    var $row = this.callBase(row);\r\n                    if (row) {\r\n                        var editingController = this._editingController;\r\n                        var isEditRow = editingController.isEditRow(row.rowIndex);\r\n                        var isRowRemoved = !!row.removed;\r\n                        var isRowInserted = !!row.isNewRow;\r\n                        var isRowModified = !!row.modified;\r\n                        if (_getEditMode(this) === EDIT_MODE_BATCH) {\r\n                            isRowRemoved && $row.addClass(ROW_REMOVED)\r\n                        } else {\r\n                            isEditRow && $row.addClass(EDIT_ROW)\r\n                        }\r\n                        isRowInserted && $row.addClass(ROW_INSERTED);\r\n                        isRowModified && $row.addClass(ROW_MODIFIED);\r\n                        if (isEditRow || isRowInserted || isRowRemoved) {\r\n                            $row.removeClass(ROW_SELECTED)\r\n                        }\r\n                        if (isEditRow && \"detail\" === row.rowType) {\r\n                            $row.addClass(this.addWidgetPrefix(EDIT_FORM_CLASS))\r\n                        }\r\n                    }\r\n                    return $row\r\n                },\r\n                _getColumnIndexByElement: function($element) {\r\n                    var $tableElement = $element.closest(\"table\");\r\n                    var $tableElements = this.getTableElements();\r\n                    while ($tableElement.length && !$tableElements.filter($tableElement).length) {\r\n                        $element = $tableElement.closest(\"td\");\r\n                        $tableElement = $element.closest(\"table\")\r\n                    }\r\n                    return this._getColumnIndexByElementCore($element)\r\n                },\r\n                _getColumnIndexByElementCore: function($element) {\r\n                    var $targetElement = $element.closest(\".\" + ROW_CLASS + \"> td:not(.dx-master-detail-cell)\");\r\n                    return this.getCellIndex($targetElement)\r\n                },\r\n                _editCellByClick: function(e, eventName) {\r\n                    var that = this;\r\n                    var editingController = that._editingController;\r\n                    var $targetElement = (0, _renderer.default)(e.event.target);\r\n                    var columnIndex = that._getColumnIndexByElement($targetElement);\r\n                    var row = that._dataController.items()[e.rowIndex];\r\n                    var allowUpdating = editingController.allowUpdating({\r\n                        row: row\r\n                    }, eventName) || row && row.isNewRow;\r\n                    var column = that._columnsController.getVisibleColumns()[columnIndex];\r\n                    var allowEditing = allowUpdating && column && (column.allowEditing || editingController.isEditCell(e.rowIndex, columnIndex));\r\n                    var startEditAction = that.option(\"editing.startEditAction\") || \"click\";\r\n                    if (\"down\" === eventName) {\r\n                        return column && column.showEditorAlways && allowEditing && editingController.editCell(e.rowIndex, columnIndex)\r\n                    }\r\n                    if (\"click\" === eventName && \"dblClick\" === startEditAction && !editingController.isEditCell(e.rowIndex, columnIndex)) {\r\n                        editingController.closeEditCell()\r\n                    }\r\n                    if (allowEditing && eventName === startEditAction) {\r\n                        return editingController.editCell(e.rowIndex, columnIndex) || editingController.isEditRow(e.rowIndex)\r\n                    }\r\n                },\r\n                _rowPointerDown: function(e) {\r\n                    var _this23 = this;\r\n                    this._pointerDownTimeout = setTimeout(function() {\r\n                        _this23._editCellByClick(e, \"down\")\r\n                    })\r\n                },\r\n                _rowClick: function(e) {\r\n                    var isEditForm = (0, _renderer.default)(e.rowElement).hasClass(this.addWidgetPrefix(EDIT_FORM_CLASS));\r\n                    e.event[TARGET_COMPONENT_NAME] = this.component;\r\n                    if (!this._editCellByClick(e, \"click\") && !isEditForm) {\r\n                        this.callBase.apply(this, arguments)\r\n                    }\r\n                },\r\n                _rowDblClick: function(e) {\r\n                    if (!this._editCellByClick(e, \"dblClick\")) {\r\n                        this.callBase.apply(this, arguments)\r\n                    }\r\n                },\r\n                _cellPrepared: function($cell, parameters) {\r\n                    var editingController = this._editingController;\r\n                    var isCommandCell = !!parameters.column.command;\r\n                    var isEditableCell = parameters.setValue;\r\n                    var isEditRow = editingController.isEditRow(parameters.rowIndex);\r\n                    var isEditing = isEditingCell(isEditRow, parameters);\r\n                    if (isEditingOrShowEditorAlwaysDataCell(isEditRow, parameters)) {\r\n                        var alignment = parameters.column.alignment;\r\n                        $cell.toggleClass(this.addWidgetPrefix(READONLY_CLASS), !isEditableCell).toggleClass(CELL_FOCUS_DISABLED_CLASS, !isEditableCell);\r\n                        if (alignment) {\r\n                            $cell.find(EDITORS_INPUT_SELECTOR).first().css(\"textAlign\", alignment)\r\n                        }\r\n                    }\r\n                    if (isEditing) {\r\n                        this._editCellPrepared($cell)\r\n                    }\r\n                    if (parameters.column && !isCommandCell) {\r\n                        editingController.highlightDataCell($cell, parameters)\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                _editCellPrepared: function($cell) {},\r\n                _formItemPrepared: function() {},\r\n                _isFormItem: function(parameters) {\r\n                    var isDetailRow = \"detail\" === parameters.rowType || \"detailAdaptive\" === parameters.rowType;\r\n                    var isPopupEditing = \"data\" === parameters.rowType && \"popup\" === _getEditMode(this);\r\n                    return (isDetailRow || isPopupEditing) && parameters.item\r\n                },\r\n                _updateCell: function($cell, parameters) {\r\n                    if (this._isFormItem(parameters)) {\r\n                        this._formItemPrepared(parameters, $cell)\r\n                    } else {\r\n                        this.callBase($cell, parameters)\r\n                    }\r\n                },\r\n                _update: function(change) {\r\n                    this.callBase(change);\r\n                    if (\"updateSelection\" === change.changeType) {\r\n                        this.getTableElements().children(\"tbody\").children(\".\" + EDIT_ROW).removeClass(ROW_SELECTED)\r\n                    }\r\n                },\r\n                _getCellOptions: function(options) {\r\n                    var cellOptions = this.callBase(options);\r\n                    cellOptions.isEditing = this._editingController.isEditCell(cellOptions.rowIndex, cellOptions.columnIndex);\r\n                    return cellOptions\r\n                },\r\n                _createCell: function(options) {\r\n                    var $cell = this.callBase(options);\r\n                    var isEditRow = this._editingController.isEditRow(options.rowIndex);\r\n                    isEditingOrShowEditorAlwaysDataCell(isEditRow, options) && $cell.addClass(EDITOR_CELL_CLASS);\r\n                    return $cell\r\n                },\r\n                _renderCellContent: function($cell, options) {\r\n                    if (\"data\" === options.rowType && _getEditMode(this) === EDIT_MODE_POPUP && false === options.row.visible) {\r\n                        return\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                cellValue: function(rowIndex, columnIdentifier, value, text) {\r\n                    var cellOptions = this.getCellOptions(rowIndex, columnIdentifier);\r\n                    if (cellOptions) {\r\n                        if (void 0 === value) {\r\n                            return cellOptions.value\r\n                        } else {\r\n                            this._editingController.updateFieldValue(cellOptions, value, text, true)\r\n                        }\r\n                    }\r\n                },\r\n                dispose: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    clearTimeout(this._pointerDownTimeout)\r\n                },\r\n                _renderCore: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    this._editingController._focusEditorIfNeed()\r\n                }\r\n            },\r\n            headerPanel: {\r\n                _getToolbarItems: function() {\r\n                    var items = this.callBase();\r\n                    var editButtonItems = this.getController(\"editing\").prepareEditButtons(this);\r\n                    return editButtonItems.concat(items)\r\n                },\r\n                optionChanged: function(args) {\r\n                    var fullName = args.fullName;\r\n                    switch (args.name) {\r\n                        case \"editing\":\r\n                            var excludedOptions = [EDITING_POPUP_OPTION_NAME, EDITING_CHANGES_OPTION_NAME, EDITING_EDITCOLUMNNAME_OPTION_NAME, EDITING_EDITROWKEY_OPTION_NAME];\r\n                            var shouldInvalidate = fullName && !excludedOptions.some(function(optionName) {\r\n                                return optionName === fullName\r\n                            });\r\n                            shouldInvalidate && this._invalidate();\r\n                            this.callBase(args);\r\n                            break;\r\n                        default:\r\n                            this.callBase(args)\r\n                    }\r\n                },\r\n                isVisible: function() {\r\n                    var that = this;\r\n                    var editingOptions = that.getController(\"editing\").option(\"editing\");\r\n                    return that.callBase() || editingOptions && (editingOptions.allowAdding || (editingOptions.allowUpdating || editingOptions.allowDeleting) && editingOptions.mode === EDIT_MODE_BATCH)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/intl/date.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _core = _interopRequireDefault(require(\"../core\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar SYMBOLS_TO_REMOVE_REGEX = /[\\u200E\\u200F]/g;\r\nvar getIntlFormatter = function(format) {\r\n    return function(date) {\r\n        if (!format.timeZoneName) {\r\n            var year = date.getFullYear();\r\n            var recognizableAsTwentyCentury = String(year).length < 3;\r\n            var safeYearShift = 400;\r\n            var temporaryYearValue = recognizableAsTwentyCentury ? year + safeYearShift : year;\r\n            var utcDate = new Date(Date.UTC(temporaryYearValue, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));\r\n            if (recognizableAsTwentyCentury) {\r\n                utcDate.setFullYear(year)\r\n            }\r\n            var utcFormat = (0, _extend.extend)({\r\n                timeZone: \"UTC\"\r\n            }, format);\r\n            return formatDateTime(utcDate, utcFormat)\r\n        }\r\n        return formatDateTime(date, format)\r\n    }\r\n};\r\nvar formattersCache = {};\r\nvar getFormatter = function(format) {\r\n    var key = _core.default.locale() + \"/\" + JSON.stringify(format);\r\n    if (!formattersCache[key]) {\r\n        formattersCache[key] = new Intl.DateTimeFormat(_core.default.locale(), format).format\r\n    }\r\n    return formattersCache[key]\r\n};\r\n\r\nfunction formatDateTime(date, format) {\r\n    return getFormatter(format)(date).replace(SYMBOLS_TO_REMOVE_REGEX, \"\")\r\n}\r\nvar formatNumber = function(number) {\r\n    return new Intl.NumberFormat(_core.default.locale()).format(number)\r\n};\r\nvar getAlternativeNumeralsMap = function() {\r\n    var numeralsMapCache = {};\r\n    return function(locale) {\r\n        if (!(locale in numeralsMapCache)) {\r\n            if (\"0\" === formatNumber(0)) {\r\n                numeralsMapCache[locale] = false;\r\n                return false\r\n            }\r\n            numeralsMapCache[locale] = {};\r\n            for (var i = 0; i < 10; ++i) {\r\n                numeralsMapCache[locale][formatNumber(i)] = i\r\n            }\r\n        }\r\n        return numeralsMapCache[locale]\r\n    }\r\n}();\r\nvar normalizeNumerals = function(dateString) {\r\n    var alternativeNumeralsMap = getAlternativeNumeralsMap(_core.default.locale());\r\n    if (!alternativeNumeralsMap) {\r\n        return dateString\r\n    }\r\n    return dateString.split(\"\").map(function(sign) {\r\n        return sign in alternativeNumeralsMap ? String(alternativeNumeralsMap[sign]) : sign\r\n    }).join(\"\")\r\n};\r\nvar removeLeadingZeroes = function(str) {\r\n    return str.replace(/(\\D)0+(\\d)/g, \"$1$2\")\r\n};\r\nvar dateStringEquals = function(actual, expected) {\r\n    return removeLeadingZeroes(actual) === removeLeadingZeroes(expected)\r\n};\r\nvar normalizeMonth = function(text) {\r\n    return text.replace(\"d\\u2019\", \"de \")\r\n};\r\nvar intlFormats = {\r\n    day: {\r\n        day: \"numeric\"\r\n    },\r\n    dayofweek: {\r\n        weekday: \"long\"\r\n    },\r\n    longdate: {\r\n        weekday: \"long\",\r\n        year: \"numeric\",\r\n        month: \"long\",\r\n        day: \"numeric\"\r\n    },\r\n    longdatelongtime: {\r\n        weekday: \"long\",\r\n        year: \"numeric\",\r\n        month: \"long\",\r\n        day: \"numeric\",\r\n        hour: \"numeric\",\r\n        minute: \"numeric\",\r\n        second: \"numeric\"\r\n    },\r\n    longtime: {\r\n        hour: \"numeric\",\r\n        minute: \"numeric\",\r\n        second: \"numeric\"\r\n    },\r\n    month: {\r\n        month: \"long\"\r\n    },\r\n    monthandday: {\r\n        month: \"long\",\r\n        day: \"numeric\"\r\n    },\r\n    monthandyear: {\r\n        year: \"numeric\",\r\n        month: \"long\"\r\n    },\r\n    shortdate: {},\r\n    shorttime: {\r\n        hour: \"numeric\",\r\n        minute: \"numeric\"\r\n    },\r\n    shortyear: {\r\n        year: \"2-digit\"\r\n    },\r\n    year: {\r\n        year: \"numeric\"\r\n    }\r\n};\r\nObject.defineProperty(intlFormats, \"shortdateshorttime\", {\r\n    get: function() {\r\n        var defaultOptions = Intl.DateTimeFormat(_core.default.locale()).resolvedOptions();\r\n        return {\r\n            year: defaultOptions.year,\r\n            month: defaultOptions.month,\r\n            day: defaultOptions.day,\r\n            hour: \"numeric\",\r\n            minute: \"numeric\"\r\n        }\r\n    }\r\n});\r\nvar getIntlFormat = function(format) {\r\n    return \"string\" === typeof format && intlFormats[format.toLowerCase()]\r\n};\r\nvar monthNameStrategies = {\r\n    standalone: function(monthIndex, monthFormat) {\r\n        var date = new Date(1999, monthIndex, 13, 1);\r\n        var dateString = getIntlFormatter({\r\n            month: monthFormat\r\n        })(date);\r\n        return dateString\r\n    },\r\n    format: function(monthIndex, monthFormat) {\r\n        var date = new Date(0, monthIndex, 13, 1);\r\n        var dateString = normalizeMonth(getIntlFormatter({\r\n            day: \"numeric\",\r\n            month: monthFormat\r\n        })(date));\r\n        var parts = dateString.split(\" \").filter(function(part) {\r\n            return part.indexOf(\"13\") < 0\r\n        });\r\n        if (1 === parts.length) {\r\n            return parts[0]\r\n        } else {\r\n            if (2 === parts.length) {\r\n                return parts[0].length > parts[1].length ? parts[0] : parts[1]\r\n            }\r\n        }\r\n        return monthNameStrategies.standalone(monthIndex, monthFormat)\r\n    }\r\n};\r\nvar _default = {\r\n    engine: function() {\r\n        return \"intl\"\r\n    },\r\n    getMonthNames: function(format, type) {\r\n        var intlFormats = {\r\n            wide: \"long\",\r\n            abbreviated: \"short\",\r\n            narrow: \"narrow\"\r\n        };\r\n        var monthFormat = intlFormats[format || \"wide\"];\r\n        type = \"format\" === type ? type : \"standalone\";\r\n        return Array.apply(null, new Array(12)).map(function(_, monthIndex) {\r\n            return monthNameStrategies[type](monthIndex, monthFormat)\r\n        })\r\n    },\r\n    getDayNames: function(format) {\r\n        var intlFormats = {\r\n            wide: \"long\",\r\n            abbreviated: \"short\",\r\n            \"short\": \"narrow\",\r\n            narrow: \"narrow\"\r\n        };\r\n        var getIntlDayNames = function(format) {\r\n            return Array.apply(null, new Array(7)).map(function(_, dayIndex) {\r\n                return getIntlFormatter({\r\n                    weekday: format\r\n                })(new Date(0, 0, dayIndex))\r\n            })\r\n        };\r\n        var result = getIntlDayNames(intlFormats[format || \"wide\"]);\r\n        return result\r\n    },\r\n    getPeriodNames: function() {\r\n        var hour12Formatter = getIntlFormatter({\r\n            hour: \"numeric\",\r\n            hour12: true\r\n        });\r\n        return [1, 13].map(function(hours) {\r\n            var hourNumberText = formatNumber(1);\r\n            var timeParts = hour12Formatter(new Date(0, 0, 1, hours)).split(hourNumberText);\r\n            if (2 !== timeParts.length) {\r\n                return \"\"\r\n            }\r\n            var biggerPart = timeParts[0].length > timeParts[1].length ? timeParts[0] : timeParts[1];\r\n            return biggerPart.trim()\r\n        })\r\n    },\r\n    format: function(date, _format) {\r\n        if (!date) {\r\n            return\r\n        }\r\n        if (!_format) {\r\n            return date\r\n        }\r\n        if (\"function\" !== typeof _format && !_format.formatter) {\r\n            _format = _format.type || _format\r\n        }\r\n        var intlFormat = getIntlFormat(_format);\r\n        if (intlFormat) {\r\n            return getIntlFormatter(intlFormat)(date)\r\n        }\r\n        var formatType = _typeof(_format);\r\n        if (_format.formatter || \"function\" === formatType || \"string\" === formatType) {\r\n            return this.callBase.apply(this, arguments)\r\n        }\r\n        return getIntlFormatter(_format)(date)\r\n    },\r\n    parse: function(dateString, format) {\r\n        var _this = this;\r\n        var formatter;\r\n        if (format && !format.parser && \"string\" === typeof dateString) {\r\n            dateString = normalizeMonth(dateString);\r\n            formatter = function(date) {\r\n                return normalizeMonth(_this.format(date, format))\r\n            }\r\n        }\r\n        return this.callBase(dateString, formatter || format)\r\n    },\r\n    _parseDateBySimpleFormat: function(dateString, format) {\r\n        var _this2 = this;\r\n        dateString = normalizeNumerals(dateString);\r\n        var formatParts = this.getFormatParts(format);\r\n        var dateParts = dateString.split(/\\D+/).filter(function(part) {\r\n            return part.length > 0\r\n        });\r\n        if (formatParts.length !== dateParts.length) {\r\n            return\r\n        }\r\n        var dateArgs = this._generateDateArgs(formatParts, dateParts);\r\n        var constructDate = function(dateArgs, ampmShift) {\r\n            var hoursShift = ampmShift ? 12 : 0;\r\n            return new Date(dateArgs.year, dateArgs.month, dateArgs.day, (dateArgs.hours + hoursShift) % 24, dateArgs.minutes, dateArgs.seconds)\r\n        };\r\n        var constructValidDate = function(ampmShift) {\r\n            var parsedDate = constructDate(dateArgs, ampmShift);\r\n            if (dateStringEquals(normalizeNumerals(_this2.format(parsedDate, format)), dateString)) {\r\n                return parsedDate\r\n            }\r\n        };\r\n        return constructValidDate(false) || constructValidDate(true)\r\n    },\r\n    _generateDateArgs: function(formatParts, dateParts) {\r\n        var currentDate = new Date;\r\n        var dateArgs = {\r\n            year: currentDate.getFullYear(),\r\n            month: currentDate.getMonth(),\r\n            day: currentDate.getDate(),\r\n            hours: 0,\r\n            minutes: 0,\r\n            seconds: 0\r\n        };\r\n        formatParts.forEach(function(formatPart, index) {\r\n            var datePart = dateParts[index];\r\n            var parsed = parseInt(datePart, 10);\r\n            if (\"month\" === formatPart) {\r\n                parsed -= 1\r\n            }\r\n            dateArgs[formatPart] = parsed\r\n        });\r\n        return dateArgs\r\n    },\r\n    formatUsesMonthName: function(format) {\r\n        if (\"object\" === _typeof(format) && !(format.type || format.format)) {\r\n            return \"long\" === format.month\r\n        }\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    formatUsesDayName: function(format) {\r\n        if (\"object\" === _typeof(format) && !(format.type || format.format)) {\r\n            return \"long\" === format.weekday\r\n        }\r\n        return this.callBase.apply(this, arguments)\r\n    },\r\n    getFormatParts: function(format) {\r\n        if (\"string\" === typeof format) {\r\n            return this.callBase(format)\r\n        }\r\n        var intlFormat = (0, _extend.extend)({}, intlFormats[format.toLowerCase()]);\r\n        var date = new Date(2001, 2, 4, 5, 6, 7);\r\n        var formattedDate = getIntlFormatter(intlFormat)(date);\r\n        formattedDate = normalizeNumerals(formattedDate);\r\n        var formatParts = [{\r\n            name: \"year\",\r\n            value: 1\r\n        }, {\r\n            name: \"month\",\r\n            value: 3\r\n        }, {\r\n            name: \"day\",\r\n            value: 4\r\n        }, {\r\n            name: \"hours\",\r\n            value: 5\r\n        }, {\r\n            name: \"minutes\",\r\n            value: 6\r\n        }, {\r\n            name: \"seconds\",\r\n            value: 7\r\n        }];\r\n        return formatParts.map(function(part) {\r\n            return {\r\n                name: part.name,\r\n                index: formattedDate.indexOf(part.value)\r\n            }\r\n        }).filter(function(part) {\r\n            return part.index > -1\r\n        }).sort(function(a, b) {\r\n            return a.index - b.index\r\n        }).map(function(part) {\r\n            return part.name\r\n        })\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/callbacks.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar Callback = function(options) {\r\n    this._options = options || {};\r\n    this._list = [];\r\n    this._queue = [];\r\n    this._firing = false;\r\n    this._fired = false;\r\n    this._firingIndexes = []\r\n};\r\nCallback.prototype._fireCore = function(context, args) {\r\n    var firingIndexes = this._firingIndexes;\r\n    var list = this._list;\r\n    var stopOnFalse = this._options.stopOnFalse;\r\n    var step = firingIndexes.length;\r\n    for (firingIndexes[step] = 0; firingIndexes[step] < list.length; firingIndexes[step]++) {\r\n        var result = list[firingIndexes[step]].apply(context, args);\r\n        if (false === result && stopOnFalse) {\r\n            break\r\n        }\r\n    }\r\n    firingIndexes.pop()\r\n};\r\nCallback.prototype.add = function(fn) {\r\n    if (\"function\" === typeof fn && (!this._options.unique || !this.has(fn))) {\r\n        this._list.push(fn)\r\n    }\r\n    return this\r\n};\r\nCallback.prototype.remove = function(fn) {\r\n    var list = this._list;\r\n    var firingIndexes = this._firingIndexes;\r\n    var index = list.indexOf(fn);\r\n    if (index > -1) {\r\n        list.splice(index, 1);\r\n        if (this._firing && firingIndexes.length) {\r\n            for (var step = 0; step < firingIndexes.length; step++) {\r\n                if (index <= firingIndexes[step]) {\r\n                    firingIndexes[step]--\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return this\r\n};\r\nCallback.prototype.has = function(fn) {\r\n    var list = this._list;\r\n    return fn ? list.indexOf(fn) > -1 : !!list.length\r\n};\r\nCallback.prototype.empty = function(fn) {\r\n    this._list = [];\r\n    return this\r\n};\r\nCallback.prototype.fireWith = function(context, args) {\r\n    var queue = this._queue;\r\n    args = args || [];\r\n    args = args.slice ? args.slice() : args;\r\n    if (this._options.syncStrategy) {\r\n        this._firing = true;\r\n        this._fireCore(context, args)\r\n    } else {\r\n        queue.push([context, args]);\r\n        if (this._firing) {\r\n            return\r\n        }\r\n        this._firing = true;\r\n        while (queue.length) {\r\n            var memory = queue.shift();\r\n            this._fireCore(memory[0], memory[1])\r\n        }\r\n    }\r\n    this._firing = false;\r\n    this._fired = true;\r\n    return this\r\n};\r\nCallback.prototype.fire = function() {\r\n    this.fireWith(this, arguments)\r\n};\r\nCallback.prototype.fired = function() {\r\n    return this._fired\r\n};\r\nvar Callbacks = function(options) {\r\n    return new Callback(options)\r\n};\r\nvar _default = Callbacks;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _number_box = _interopRequireDefault(require(\"./number_box/number_box\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _number_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/utils/console.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.debug = exports.logger = void 0;\r\nvar _type = require(\"./type\");\r\nvar noop = function() {};\r\nvar getConsoleMethod = function(method) {\r\n    if (\"undefined\" === typeof console || !(0, _type.isFunction)(console[method])) {\r\n        return noop\r\n    }\r\n    return console[method].bind(console)\r\n};\r\nvar logger = {\r\n    info: getConsoleMethod(\"info\"),\r\n    warn: getConsoleMethod(\"warn\"),\r\n    error: getConsoleMethod(\"error\")\r\n};\r\nexports.logger = logger;\r\nvar debug = function() {\r\n    function assert(condition, message) {\r\n        if (!condition) {\r\n            throw new Error(message)\r\n        }\r\n    }\r\n\r\n    function assertParam(parameter, message) {\r\n        assert(null !== parameter && void 0 !== parameter, message)\r\n    }\r\n    return {\r\n        assert: assert,\r\n        assertParam: assertParam\r\n    }\r\n}();\r\nexports.debug = debug;\r\n","/**\r\n * DevExtreme (ui/collection/ui.collection_widget.edit.strategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar EditStrategy = _class.default.inherit({\r\n    ctor: function(collectionWidget) {\r\n        this._collectionWidget = collectionWidget\r\n    },\r\n    getIndexByItemData: abstract,\r\n    getItemDataByIndex: abstract,\r\n    getKeysByItems: abstract,\r\n    getItemsByKeys: abstract,\r\n    itemsGetter: abstract,\r\n    getKeyByIndex: function(index) {\r\n        var resultIndex = this._denormalizeItemIndex(index);\r\n        return this.getKeysByItems([this.getItemDataByIndex(resultIndex)])[0]\r\n    },\r\n    _equalKeys: function(key1, key2) {\r\n        if (this._collectionWidget._isKeySpecified()) {\r\n            return (0, _common.equalByValue)(key1, key2)\r\n        } else {\r\n            return key1 === key2\r\n        }\r\n    },\r\n    beginCache: function() {\r\n        this._cache = {}\r\n    },\r\n    endCache: function() {\r\n        this._cache = null\r\n    },\r\n    getIndexByKey: abstract,\r\n    getNormalizedIndex: function(value) {\r\n        if (this._isNormalizedItemIndex(value)) {\r\n            return value\r\n        }\r\n        if (this._isItemIndex(value)) {\r\n            return this._normalizeItemIndex(value)\r\n        }\r\n        if (this._isDOMNode(value)) {\r\n            return this._getNormalizedItemIndex(value)\r\n        }\r\n        return this._normalizeItemIndex(this.getIndexByItemData(value))\r\n    },\r\n    getIndex: function(value) {\r\n        if (this._isNormalizedItemIndex(value)) {\r\n            return this._denormalizeItemIndex(value)\r\n        }\r\n        if (this._isItemIndex(value)) {\r\n            return value\r\n        }\r\n        if (this._isDOMNode(value)) {\r\n            return this._denormalizeItemIndex(this._getNormalizedItemIndex(value))\r\n        }\r\n        return this.getIndexByItemData(value)\r\n    },\r\n    getItemElement: function(value) {\r\n        if (this._isNormalizedItemIndex(value)) {\r\n            return this._getItemByNormalizedIndex(value)\r\n        }\r\n        if (this._isItemIndex(value)) {\r\n            return this._getItemByNormalizedIndex(this._normalizeItemIndex(value))\r\n        }\r\n        if (this._isDOMNode(value)) {\r\n            return (0, _renderer.default)(value)\r\n        }\r\n        var normalizedItemIndex = this._normalizeItemIndex(this.getIndexByItemData(value));\r\n        return this._getItemByNormalizedIndex(normalizedItemIndex)\r\n    },\r\n    deleteItemAtIndex: abstract,\r\n    itemPlacementFunc: function(movingIndex, destinationIndex) {\r\n        return this._itemsFromSameParent(movingIndex, destinationIndex) && movingIndex < destinationIndex ? \"after\" : \"before\"\r\n    },\r\n    moveItemAtIndexToIndex: abstract,\r\n    _isNormalizedItemIndex: function(index) {\r\n        return \"number\" === typeof index && Math.round(index) === index\r\n    },\r\n    _isDOMNode: function(value) {\r\n        var $value;\r\n        try {\r\n            $value = (0, _renderer.default)(value)\r\n        } catch (error) {\r\n            return false\r\n        }\r\n        return $value && $value.length && $value.get(0).nodeType\r\n    },\r\n    _isItemIndex: abstract,\r\n    _getNormalizedItemIndex: abstract,\r\n    _normalizeItemIndex: abstract,\r\n    _denormalizeItemIndex: abstract,\r\n    _getItemByNormalizedIndex: abstract,\r\n    _itemsFromSameParent: abstract\r\n});\r\nvar _default = EditStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/support.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"stylePropPrefix\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _style.stylePropPrefix\r\n    }\r\n});\r\nObject.defineProperty(exports, \"styleProp\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _style.styleProp\r\n    }\r\n});\r\nexports.nativeScrolling = exports.animation = exports.transitionEndEventName = exports.transition = exports.touch = exports.inputType = exports.supportProp = exports.pointerEvents = exports.touchEvents = void 0;\r\nvar _array = require(\"./array\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\nvar _common = require(\"./common\");\r\nvar _call_once = _interopRequireDefault(require(\"./call_once\"));\r\nvar _window = require(\"./window\");\r\nvar _devices = _interopRequireDefault(require(\"../devices\"));\r\nvar _style = require(\"./style\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _getNavigator = (0, _window.getNavigator)(),\r\n    maxTouchPoints = _getNavigator.maxTouchPoints,\r\n    msMaxTouchPoints = _getNavigator.msMaxTouchPoints,\r\n    pointerEnabled = _getNavigator.pointerEnabled;\r\nvar transitionEndEventNames = {\r\n    webkitTransition: \"webkitTransitionEnd\",\r\n    MozTransition: \"transitionend\",\r\n    OTransition: \"oTransitionEnd\",\r\n    msTransition: \"MsTransitionEnd\",\r\n    transition: \"transitionend\"\r\n};\r\nvar supportProp = function(prop) {\r\n    return !!(0, _style.styleProp)(prop)\r\n};\r\nexports.supportProp = supportProp;\r\nvar isNativeScrollingSupported = function() {\r\n    var _devices$real = _devices.default.real(),\r\n        platform = _devices$real.platform,\r\n        version = _devices$real.version,\r\n        isMac = _devices$real.mac;\r\n    var isObsoleteAndroid = version && version[0] < 4 && \"android\" === platform;\r\n    var isNativeScrollDevice = !isObsoleteAndroid && (0, _array.inArray)(platform, [\"ios\", \"android\"]) > -1 || isMac;\r\n    return isNativeScrollDevice\r\n};\r\nvar inputType = function(type) {\r\n    if (\"text\" === type) {\r\n        return true\r\n    }\r\n    var input = _dom_adapter.default.createElement(\"input\");\r\n    try {\r\n        input.setAttribute(\"type\", type);\r\n        input.value = \"wrongValue\";\r\n        return !input.value\r\n    } catch (e) {\r\n        return false\r\n    }\r\n};\r\nexports.inputType = inputType;\r\nvar detectTouchEvents = function(hasWindowProperty, maxTouchPoints) {\r\n    return (hasWindowProperty(\"ontouchstart\") || !!maxTouchPoints) && !hasWindowProperty(\"callPhantom\")\r\n};\r\nvar detectPointerEvent = function(hasWindowProperty, pointerEnabled) {\r\n    var isPointerEnabled = (0, _common.ensureDefined)(pointerEnabled, true);\r\n    var canUsePointerEvent = (0, _common.ensureDefined)(pointerEnabled, false);\r\n    return hasWindowProperty(\"PointerEvent\") && isPointerEnabled || canUsePointerEvent\r\n};\r\nvar touchEvents = detectTouchEvents(_window.hasProperty, maxTouchPoints);\r\nexports.touchEvents = touchEvents;\r\nvar pointerEvents = detectPointerEvent(_window.hasProperty, pointerEnabled);\r\nexports.pointerEvents = pointerEvents;\r\nvar touchPointersPresent = !!maxTouchPoints || !!msMaxTouchPoints;\r\nvar touch = touchEvents || pointerEvents && touchPointersPresent;\r\nexports.touch = touch;\r\nvar transition = (0, _call_once.default)(function() {\r\n    return supportProp(\"transition\")\r\n});\r\nexports.transition = transition;\r\nvar transitionEndEventName = (0, _call_once.default)(function() {\r\n    return transitionEndEventNames[(0, _style.styleProp)(\"transition\")]\r\n});\r\nexports.transitionEndEventName = transitionEndEventName;\r\nvar animation = (0, _call_once.default)(function() {\r\n    return supportProp(\"animation\")\r\n});\r\nexports.animation = animation;\r\nvar nativeScrolling = isNativeScrollingSupported();\r\nexports.nativeScrolling = nativeScrolling;\r\n","/**\r\n * DevExtreme (ui/filter_builder.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _filter_builder = _interopRequireDefault(require(\"./filter_builder/filter_builder\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _filter_builder.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.export_mixin.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _default = {\r\n    _getEmptyCell: function() {\r\n        return {\r\n            text: \"\",\r\n            value: void 0,\r\n            colspan: 1,\r\n            rowspan: 1\r\n        }\r\n    },\r\n    _defaultSetter: function(value) {\r\n        return !value ? 1 : value\r\n    },\r\n    _cloneItem: function(item) {\r\n        return (0, _extend.extend)({}, item, this._getEmptyCell())\r\n    },\r\n    _prepareItems: function(items) {\r\n        var that = this;\r\n        var resultItems = [];\r\n        var cols = (items[0] || []).reduce(function(sum, item) {\r\n            return sum + that._defaultSetter(item.colspan)\r\n        }, 0);\r\n        var getItem = function(items) {\r\n            var rowIndex = 0;\r\n            var cellIndex = 0;\r\n            return function() {\r\n                var row = items[rowIndex] || [];\r\n                var item = row[cellIndex++];\r\n                if (cellIndex >= row.length) {\r\n                    rowIndex++;\r\n                    cellIndex = 0\r\n                }\r\n                if (item) {\r\n                    item.colspan = that._defaultSetter(item.colspan);\r\n                    item.rowspan = that._defaultSetter(item.rowspan)\r\n                }\r\n                return item\r\n            }\r\n        }(items);\r\n\r\n        function addItem(rowIndex, cellIndex, item) {\r\n            var row = resultItems[rowIndex] = resultItems[rowIndex] || [];\r\n            row[cellIndex] = item;\r\n            if (item.colspan > 1 || item.rowspan > 1) {\r\n                var clone = that._cloneItem(item);\r\n                for (var c = 1; c < item.colspan; c++) {\r\n                    addItem(rowIndex, cellIndex + c, clone)\r\n                }\r\n                for (var r = 1; r < item.rowspan; r++) {\r\n                    for (var _c = 0; _c < item.colspan; _c++) {\r\n                        addItem(rowIndex + r, cellIndex + _c, clone)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        var item = getItem();\r\n        var rowIndex = 0;\r\n        while (item) {\r\n            for (var cellIndex = 0; cellIndex < cols; cellIndex++) {\r\n                if (!item) {\r\n                    break\r\n                }\r\n                if (resultItems[rowIndex] && resultItems[rowIndex][cellIndex]) {\r\n                    continue\r\n                }\r\n                addItem(rowIndex, cellIndex, item);\r\n                cellIndex += item.colspan - 1;\r\n                item = getItem()\r\n            }\r\n            rowIndex++\r\n        }\r\n        return resultItems\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/themes/generic.softblue.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar ACCENT_COLOR = \"#7ab8eb\";\r\nvar BACKGROUND_COLOR = \"#fff\";\r\nvar TITLE_COLOR = \"#333\";\r\nvar SUBTITLE_COLOR = \"#99a1a8\";\r\nvar TEXT_COLOR = \"#707070\";\r\nvar BORDER_COLOR = \"#e8eaeb\";\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.softblue\",\r\n    defaultPalette: \"Soft Blue\",\r\n    backgroundColor: BACKGROUND_COLOR,\r\n    primaryTitleColor: TITLE_COLOR,\r\n    secondaryTitleColor: SUBTITLE_COLOR,\r\n    gridColor: BORDER_COLOR,\r\n    axisColor: TEXT_COLOR,\r\n    \"export\": {\r\n        backgroundColor: BACKGROUND_COLOR,\r\n        font: {\r\n            color: TITLE_COLOR\r\n        },\r\n        button: {\r\n            \"default\": {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#c9d0d4\",\r\n                backgroundColor: BACKGROUND_COLOR\r\n            },\r\n            hover: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#a7b2b9\",\r\n                backgroundColor: \"#e6e6e6\"\r\n            },\r\n            focus: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#82929b\",\r\n                backgroundColor: \"#e6e6e6\"\r\n            },\r\n            active: {\r\n                color: TITLE_COLOR,\r\n                borderColor: \"#82929b\",\r\n                backgroundColor: \"#d4d4d4\"\r\n            }\r\n        }\r\n    },\r\n    legend: {\r\n        font: {\r\n            color: TEXT_COLOR\r\n        }\r\n    },\r\n    tooltip: {\r\n        color: BACKGROUND_COLOR,\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        font: {\r\n            color: TITLE_COLOR\r\n        }\r\n    },\r\n    \"chart:common\": {\r\n        commonSeriesSettings: {\r\n            label: {\r\n                border: {\r\n                    color: BORDER_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        color: BACKGROUND_COLOR,\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        font: {\r\n            color: TITLE_COLOR\r\n        }\r\n    },\r\n    chart: {\r\n        commonPaneSettings: {\r\n            border: {\r\n                color: BORDER_COLOR\r\n            }\r\n        },\r\n        commonAxisSettings: {\r\n            breakStyle: {\r\n                color: \"#cfd2d3\"\r\n            }\r\n        }\r\n    },\r\n    rangeSelector: {\r\n        scale: {\r\n            breakStyle: {\r\n                color: \"#cfd2d3\"\r\n            },\r\n            tick: {\r\n                opacity: .12\r\n            }\r\n        },\r\n        selectedRangeColor: ACCENT_COLOR,\r\n        sliderMarker: {\r\n            color: ACCENT_COLOR\r\n        },\r\n        sliderHandle: {\r\n            color: ACCENT_COLOR,\r\n            opacity: .5\r\n        }\r\n    },\r\n    sparkline: {\r\n        pointColor: BACKGROUND_COLOR,\r\n        minColor: \"#f0ad4e\",\r\n        maxColor: \"#d9534f\"\r\n    },\r\n    treeMap: {\r\n        group: {\r\n            color: BORDER_COLOR,\r\n            label: {\r\n                font: {\r\n                    color: SUBTITLE_COLOR\r\n                }\r\n            }\r\n        }\r\n    },\r\n    bullet: {\r\n        color: ACCENT_COLOR\r\n    },\r\n    gauge: {\r\n        valueIndicators: {\r\n            rangebar: {\r\n                color: ACCENT_COLOR\r\n            },\r\n            textcloud: {\r\n                color: ACCENT_COLOR\r\n            }\r\n        }\r\n    }\r\n}, \"generic.light\");\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.softblue.compact\"\r\n}, \"generic.softblue\");\r\n","/**\r\n * DevExtreme (ui/drop_down_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./drop_down_editor/ui.drop_down_editor\"));\r\nvar _ui2 = _interopRequireDefault(require(\"./editor/ui.data_expression\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _selectors = require(\"./widget/selectors\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _utils = require(\"../ui/overlay/utils\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _short = require(\"../events/short\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _element = require(\"../core/element\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getActiveElement = _dom_adapter.default.getActiveElement;\r\nvar DROP_DOWN_BOX_CLASS = \"dx-dropdownbox\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar realDevice = _devices.default.real();\r\nvar DropDownBox = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        return (0, _extend.extend)({}, this.callBase(), {\r\n            tab: function(e) {\r\n                if (!this.option(\"opened\")) {\r\n                    return\r\n                }\r\n                var $tabbableElements = this._getTabbableElements();\r\n                var $focusableElement = e.shiftKey ? $tabbableElements.last() : $tabbableElements.first();\r\n                $focusableElement && _events_engine.default.trigger($focusableElement, \"focus\");\r\n                e.preventDefault()\r\n            }\r\n        })\r\n    },\r\n    _getTabbableElements: function() {\r\n        return this._getElements().filter(_selectors.tabbable)\r\n    },\r\n    _getElements: function() {\r\n        return (0, _renderer.default)(this.content()).find(\"*\")\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            acceptCustomValue: false,\r\n            contentTemplate: ANONYMOUS_TEMPLATE_NAME,\r\n            openOnFieldClick: true,\r\n            displayValueFormatter: function(value) {\r\n                return Array.isArray(value) ? value.join(\", \") : value\r\n            },\r\n            useHiddenSubmitElement: true\r\n        })\r\n    },\r\n    _getAnonymousTemplateName: function() {\r\n        return ANONYMOUS_TEMPLATE_NAME\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase()\r\n    },\r\n    _initMarkup: function() {\r\n        this._initDataExpressions();\r\n        this.$element().addClass(DROP_DOWN_BOX_CLASS);\r\n        this.callBase()\r\n    },\r\n    _setSubmitValue: function() {\r\n        var value = this.option(\"value\");\r\n        var submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value;\r\n        this._getSubmitElement().val(submitValue)\r\n    },\r\n    _shouldUseDisplayValue: function(value) {\r\n        return \"this\" === this.option(\"valueExpr\") && (0, _type.isObject)(value)\r\n    },\r\n    _renderInputValue: function() {\r\n        var callBase = this.callBase.bind(this);\r\n        var values = [];\r\n        if (!this._dataSource) {\r\n            callBase(values);\r\n            return (new _deferred.Deferred).resolve()\r\n        }\r\n        var currentValue = this._getCurrentValue();\r\n        var keys = (0, _common.ensureDefined)(currentValue, []);\r\n        keys = Array.isArray(keys) ? keys : [keys];\r\n        var itemLoadDeferreds = (0, _iterator.map)(keys, function(key) {\r\n            return this._loadItem(key).always(function(item) {\r\n                var displayValue = this._displayGetter(item);\r\n                values.push((0, _common.ensureDefined)(displayValue, key))\r\n            }.bind(this))\r\n        }.bind(this));\r\n        return _deferred.when.apply(this, itemLoadDeferreds).always(function() {\r\n            this.option(\"displayValue\", values);\r\n            callBase(values.length && values)\r\n        }.bind(this))\r\n    },\r\n    _loadItem: function(value) {\r\n        var deferred = new _deferred.Deferred;\r\n        var that = this;\r\n        var selectedItem = (0, _common.grep)(this.option(\"items\") || [], function(item) {\r\n            return this._isValueEquals(this._valueGetter(item), value)\r\n        }.bind(this))[0];\r\n        if (void 0 !== selectedItem) {\r\n            deferred.resolve(selectedItem)\r\n        } else {\r\n            this._loadValue(value).done(function(item) {\r\n                deferred.resolve(item)\r\n            }).fail(function(args) {\r\n                if (that.option(\"acceptCustomValue\")) {\r\n                    deferred.resolve(value)\r\n                } else {\r\n                    deferred.reject()\r\n                }\r\n            })\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    _popupElementTabHandler: function(e) {\r\n        if (\"tab\" !== (0, _index.normalizeKeyName)(e)) {\r\n            return\r\n        }\r\n        var $firstTabbable = this._getTabbableElements().first().get(0);\r\n        var $lastTabbable = this._getTabbableElements().last().get(0);\r\n        var $target = e.originalEvent.target;\r\n        var moveBackward = !!($target === $firstTabbable && e.shift);\r\n        var moveForward = !!($target === $lastTabbable && !e.shift);\r\n        if (moveBackward || moveForward) {\r\n            this.close();\r\n            _events_engine.default.trigger(this._input(), \"focus\");\r\n            if (moveBackward) {\r\n                e.originalEvent.preventDefault()\r\n            }\r\n        }\r\n    },\r\n    _renderPopup: function(e) {\r\n        var _this = this;\r\n        this.callBase();\r\n        if (this.option(\"focusStateEnabled\")) {\r\n            _short.keyboard.on(this.content(), null, function(e) {\r\n                return _this._popupElementTabHandler(e)\r\n            })\r\n        }\r\n    },\r\n    _renderPopupContent: function() {\r\n        if (this.option(\"contentTemplate\") === ANONYMOUS_TEMPLATE_NAME) {\r\n            return\r\n        }\r\n        var contentTemplate = this._getTemplateByOption(\"contentTemplate\");\r\n        if (!(contentTemplate && this.option(\"contentTemplate\"))) {\r\n            return\r\n        }\r\n        var $popupContent = this._popup.$content();\r\n        var templateData = {\r\n            value: this._fieldRenderData(),\r\n            component: this\r\n        };\r\n        $popupContent.empty();\r\n        contentTemplate.render({\r\n            container: (0, _element.getPublicElement)($popupContent),\r\n            model: templateData\r\n        })\r\n    },\r\n    _canShowVirtualKeyboard: function() {\r\n        return realDevice.mac\r\n    },\r\n    _isNestedElementActive: function() {\r\n        var activeElement = getActiveElement();\r\n        return activeElement && this._popup.$content().get(0).contains(activeElement)\r\n    },\r\n    _shouldCloseOnTargetScroll: function() {\r\n        return \"desktop\" === realDevice.deviceType && this._canShowVirtualKeyboard() && this._isNestedElementActive()\r\n    },\r\n    _popupHiddenHandler: function() {\r\n        this.callBase();\r\n        this._popupPosition = void 0\r\n    },\r\n    _popupPositionedHandler: function(e) {\r\n        this.callBase(e);\r\n        this._popupPosition = e.position\r\n    },\r\n    _getDefaultPopupPosition: function(isRtlEnabled) {\r\n        var _this$callBase = this.callBase(isRtlEnabled),\r\n            my = _this$callBase.my,\r\n            at = _this$callBase.at;\r\n        return {\r\n            my: my,\r\n            at: at,\r\n            offset: {\r\n                v: -1\r\n            },\r\n            collision: \"flipfit\"\r\n        }\r\n    },\r\n    _popupConfig: function() {\r\n        var _this2 = this;\r\n        var _this$option = this.option(),\r\n            focusStateEnabled = _this$option.focusStateEnabled;\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            tabIndex: -1,\r\n            dragEnabled: false,\r\n            focusStateEnabled: focusStateEnabled,\r\n            contentTemplate: ANONYMOUS_TEMPLATE_NAME,\r\n            closeOnTargetScroll: this._shouldCloseOnTargetScroll.bind(this),\r\n            position: (0, _extend.extend)(this.option(\"popupPosition\"), {\r\n                of: this.$element()\r\n            }),\r\n            onKeyboardHandled: function(opts) {\r\n                return _this2.option(\"focusStateEnabled\") && _this2._popupElementTabHandler(opts)\r\n            },\r\n            maxHeight: function() {\r\n                var _this$_popupPosition;\r\n                var popupLocation = null === (_this$_popupPosition = this._popupPosition) || void 0 === _this$_popupPosition ? void 0 : _this$_popupPosition.v.location;\r\n                return (0, _utils.getElementMaxHeightByWindow)(this.$element(), popupLocation)\r\n            }.bind(this)\r\n        })\r\n    },\r\n    _popupShownHandler: function() {\r\n        this.callBase();\r\n        var $firstElement = this._getTabbableElements().first();\r\n        _events_engine.default.trigger($firstElement, \"focus\")\r\n    },\r\n    _setCollectionWidgetOption: _common.noop,\r\n    _optionChanged: function(args) {\r\n        this._dataExpressionOptionChanged(args);\r\n        switch (args.name) {\r\n            case \"dataSource\":\r\n                this._renderInputValue();\r\n                break;\r\n            case \"displayValue\":\r\n                this.option(\"text\", args.value);\r\n                break;\r\n            case \"displayExpr\":\r\n                this._renderValue();\r\n                break;\r\n            case \"contentTemplate\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n}).include(_ui2.default);\r\n(0, _component_registrator.default)(\"dxDropDownBox\", DropDownBox);\r\nvar _default = DropDownBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/const.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DefaultSizes = void 0;\r\nvar DefaultSizes = {\r\n    allDayPanelHeight: 25\r\n};\r\nexports.DefaultSizes = DefaultSizes;\r\n","/**\r\n * DevExtreme (animation/frame.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.requestAnimationFrame = requestAnimationFrame;\r\nexports.cancelAnimationFrame = cancelAnimationFrame;\r\nvar _window = require(\"../core/utils/window\");\r\nvar _call_once = _interopRequireDefault(require(\"../core/utils/call_once\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.hasWindow)() ? (0, _window.getWindow)() : {};\r\nvar FRAME_ANIMATION_STEP_TIME = 1e3 / 60;\r\nvar request = function(callback) {\r\n    return setTimeout(callback, FRAME_ANIMATION_STEP_TIME)\r\n};\r\nvar cancel = function(requestID) {\r\n    clearTimeout(requestID)\r\n};\r\nvar setAnimationFrameMethods = (0, _call_once.default)(function() {\r\n    var nativeRequest = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame;\r\n    var nativeCancel = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame;\r\n    if (nativeRequest && nativeCancel) {\r\n        request = nativeRequest;\r\n        cancel = nativeCancel\r\n    }\r\n    if (nativeRequest && !nativeCancel) {\r\n        var canceledRequests = {};\r\n        request = function(callback) {\r\n            var requestId = nativeRequest.call(window, function() {\r\n                try {\r\n                    if (requestId in canceledRequests) {\r\n                        return\r\n                    }\r\n                    callback.apply(this, arguments)\r\n                } finally {\r\n                    delete canceledRequests[requestId]\r\n                }\r\n            });\r\n            return requestId\r\n        };\r\n        cancel = function(requestId) {\r\n            canceledRequests[requestId] = true\r\n        }\r\n    }\r\n});\r\n\r\nfunction requestAnimationFrame() {\r\n    setAnimationFrameMethods();\r\n    return request.apply(window, arguments)\r\n}\r\n\r\nfunction cancelAnimationFrame() {\r\n    setAnimationFrameMethods();\r\n    cancel.apply(window, arguments)\r\n}\r\n","/**\r\n * DevExtreme (ui/menu/ui.submenu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _element = require(\"../../core/element\");\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar Submenu = function(_ContextMenu) {\r\n    _inherits(Submenu, _ContextMenu);\r\n    var _super = _createSuper(Submenu);\r\n\r\n    function Submenu() {\r\n        _classCallCheck(this, Submenu);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(Submenu, [{\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(Submenu.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                orientation: \"horizontal\",\r\n                tabIndex: null,\r\n                onHoverStart: _common.noop\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_initDataAdapter\",\r\n        value: function() {\r\n            this._dataAdapter = this.option(\"_dataAdapter\");\r\n            if (!this._dataAdapter) {\r\n                _get(_getPrototypeOf(Submenu.prototype), \"_initDataAdapter\", this).call(this)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderContentImpl\",\r\n        value: function() {\r\n            this._renderContextMenuOverlay();\r\n            _get(_getPrototypeOf(Submenu.prototype), \"_renderContentImpl\", this).call(this);\r\n            var node = this._dataAdapter.getNodeByKey(this.option(\"_parentKey\"));\r\n            node && this._renderItems(this._getChildNodes(node));\r\n            this._renderDelimiter()\r\n        }\r\n    }, {\r\n        key: \"_renderDelimiter\",\r\n        value: function() {\r\n            this.$contentDelimiter = (0, _renderer.default)(\"<div>\").appendTo(this._itemContainer()).addClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getOverlayOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(Submenu.prototype), \"_getOverlayOptions\", this).call(this), {\r\n                onPositioned: this._overlayPositionedActionHandler.bind(this)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_overlayPositionedActionHandler\",\r\n        value: function(arg) {\r\n            this._showDelimiter(arg)\r\n        }\r\n    }, {\r\n        key: \"_hoverEndHandler\",\r\n        value: function(e) {\r\n            _get(_getPrototypeOf(Submenu.prototype), \"_hoverEndHandler\", this).call(this, e);\r\n            this._toggleFocusClass(false, e.currentTarget)\r\n        }\r\n    }, {\r\n        key: \"_isMenuHorizontal\",\r\n        value: function() {\r\n            return \"horizontal\" === this.option(\"orientation\")\r\n        }\r\n    }, {\r\n        key: \"_hoverStartHandler\",\r\n        value: function(e) {\r\n            var hoverStartAction = this.option(\"onHoverStart\");\r\n            hoverStartAction(e);\r\n            _get(_getPrototypeOf(Submenu.prototype), \"_hoverStartHandler\", this).call(this, e);\r\n            this._toggleFocusClass(true, e.currentTarget)\r\n        }\r\n    }, {\r\n        key: \"_drawSubmenu\",\r\n        value: function($rootItem) {\r\n            this._actions.onShowing({\r\n                rootItem: (0, _element.getPublicElement)($rootItem),\r\n                submenu: this\r\n            });\r\n            _get(_getPrototypeOf(Submenu.prototype), \"_drawSubmenu\", this).call(this, $rootItem);\r\n            this._actions.onShown({\r\n                rootItem: (0, _element.getPublicElement)($rootItem),\r\n                submenu: this\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_hideSubmenu\",\r\n        value: function($rootItem) {\r\n            this._actions.onHiding({\r\n                cancel: true,\r\n                rootItem: (0, _element.getPublicElement)($rootItem),\r\n                submenu: this\r\n            });\r\n            _get(_getPrototypeOf(Submenu.prototype), \"_hideSubmenu\", this).call(this, $rootItem);\r\n            this._actions.onHidden({\r\n                rootItem: (0, _element.getPublicElement)($rootItem),\r\n                submenu: this\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_showDelimiter\",\r\n        value: function(arg) {\r\n            if (!this.$contentDelimiter) {\r\n                return\r\n            }\r\n            var $submenu = this._itemContainer().children(\".\".concat(DX_SUBMENU_CLASS)).eq(0);\r\n            var $rootItem = this.option(\"position\").of;\r\n            var position = {\r\n                of: $submenu\r\n            };\r\n            var containerOffset = arg.position;\r\n            var vLocation = containerOffset.v.location;\r\n            var hLocation = containerOffset.h.location;\r\n            var rootOffset = $rootItem.offset();\r\n            var offsetLeft = Math.round(rootOffset.left);\r\n            var offsetTop = Math.round(rootOffset.top);\r\n            var rootWidth = $rootItem.width();\r\n            var rootHeight = $rootItem.height();\r\n            var submenuWidth = $submenu.width();\r\n            var submenuHeight = $submenu.height();\r\n            this.$contentDelimiter.css(\"display\", \"block\");\r\n            this.$contentDelimiter.width(this._isMenuHorizontal() ? rootWidth < submenuWidth ? rootWidth - 2 : submenuWidth : 2);\r\n            this.$contentDelimiter.height(this._isMenuHorizontal() ? 2 : rootHeight < submenuHeight ? rootHeight - 2 : submenuHeight);\r\n            if (this._isMenuHorizontal()) {\r\n                if (vLocation > offsetTop) {\r\n                    if (Math.round(hLocation) === offsetLeft) {\r\n                        position.offset = \"1 -1\";\r\n                        position.at = position.my = \"left top\"\r\n                    } else {\r\n                        position.offset = \"-1 -1\";\r\n                        position.at = position.my = \"right top\"\r\n                    }\r\n                } else {\r\n                    this.$contentDelimiter.height(5);\r\n                    if (Math.round(hLocation) === offsetLeft) {\r\n                        position.offset = \"1 4\";\r\n                        position.at = position.my = \"left bottom\"\r\n                    } else {\r\n                        position.offset = \"-1 2\";\r\n                        position.at = position.my = \"right bottom\"\r\n                    }\r\n                }\r\n            } else {\r\n                if (hLocation > offsetLeft) {\r\n                    if (Math.round(vLocation) === offsetTop) {\r\n                        position.offset = \"-1 1\";\r\n                        position.at = position.my = \"left top\"\r\n                    } else {\r\n                        position.offset = \"-1 -1\";\r\n                        position.at = position.my = \"left bottom\"\r\n                    }\r\n                } else {\r\n                    if (Math.round(vLocation) === offsetTop) {\r\n                        position.offset = \"1 1\";\r\n                        position.at = position.my = \"right top\"\r\n                    } else {\r\n                        position.offset = \"1 -1\";\r\n                        position.at = position.my = \"right bottom\"\r\n                    }\r\n                }\r\n            }\r\n            _position.default.setup(this.$contentDelimiter, position)\r\n        }\r\n    }, {\r\n        key: \"_getContextMenuPosition\",\r\n        value: function() {\r\n            return this.option(\"position\")\r\n        }\r\n    }, {\r\n        key: \"isOverlayVisible\",\r\n        value: function() {\r\n            return this._overlay.option(\"visible\")\r\n        }\r\n    }, {\r\n        key: \"getOverlayContent\",\r\n        value: function() {\r\n            return this._overlay.$content()\r\n        }\r\n    }]);\r\n    return Submenu\r\n}(_context_menu.default);\r\nvar _default = Submenu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/bubble_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar MIN_BUBBLE_HEIGHT = 20;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n    correctCoordinates: function(diameter) {\r\n        this.bubbleSize = diameter / 2\r\n    },\r\n    _drawMarker: function(renderer, group, animationEnabled) {\r\n        var that = this;\r\n        var attr = _extend({\r\n            translateX: that.x,\r\n            translateY: that.y\r\n        }, that._getStyle());\r\n        that.graphic = renderer.circle(0, 0, animationEnabled ? 0 : that.bubbleSize).smartAttr(attr).data({\r\n            \"chart-data-point\": that\r\n        }).append(group)\r\n    },\r\n    getTooltipParams: function(location) {\r\n        var that = this;\r\n        var graphic = that.graphic;\r\n        if (!graphic) {\r\n            return\r\n        }\r\n        var height = graphic.getBBox().height;\r\n        return {\r\n            x: that.x,\r\n            y: that.y,\r\n            offset: height < MIN_BUBBLE_HEIGHT || \"edge\" === location ? height / 2 : 0\r\n        }\r\n    },\r\n    _getLabelFormatObject: function() {\r\n        var formatObject = _symbol_point.default._getLabelFormatObject.call(this);\r\n        formatObject.size = this.initialSize;\r\n        return formatObject\r\n    },\r\n    _updateData: function(data) {\r\n        _symbol_point.default._updateData.call(this, data);\r\n        this.size = this.initialSize = data.size\r\n    },\r\n    _getGraphicBBox: function() {\r\n        var that = this;\r\n        return that._getSymbolBBox(that.x, that.y, that.bubbleSize)\r\n    },\r\n    _updateMarker: function(animationEnabled, style) {\r\n        var that = this;\r\n        if (!animationEnabled) {\r\n            style = _extend({\r\n                r: that.bubbleSize,\r\n                translateX: that.x,\r\n                translateY: that.y\r\n            }, style)\r\n        }\r\n        that.graphic.smartAttr(style)\r\n    },\r\n    _getFormatObject: function(tooltip) {\r\n        var formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);\r\n        formatObject.sizeText = tooltip.formatValue(this.initialSize);\r\n        return formatObject\r\n    },\r\n    _storeTrackerR: function() {\r\n        return this.bubbleSize\r\n    },\r\n    _getLabelCoords: function(label) {\r\n        var coords;\r\n        if (\"inside\" === label.getLayoutOptions().position) {\r\n            coords = this._getLabelCoordOfPosition(label, \"inside\")\r\n        } else {\r\n            coords = _symbol_point.default._getLabelCoords.call(this, label)\r\n        }\r\n        return coords\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/validation_message.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _overlay = _interopRequireDefault(require(\"./overlay\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _string = require(\"../core/utils/string\");\r\nvar _position = require(\"../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar INVALID_MESSAGE = \"dx-invalid-message\";\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar INVALID_MESSAGE_ALWAYS = \"dx-invalid-message-always\";\r\nvar INVALID_MESSAGE_CONTENT = \"dx-invalid-message-content\";\r\nvar VALIDATION_MESSAGE_MIN_WIDTH = 100;\r\nvar ValidationMessage = _overlay.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            integrationOptions: {},\r\n            templatesRenderAsynchronously: false,\r\n            shading: false,\r\n            width: \"auto\",\r\n            height: \"auto\",\r\n            closeOnOutsideClick: false,\r\n            closeOnTargetScroll: false,\r\n            animation: null,\r\n            visible: true,\r\n            propagateOutsideClick: true,\r\n            _checkParentVisibility: false,\r\n            rtlEnabled: false,\r\n            contentTemplate: this._renderInnerHtml,\r\n            maxWidth: \"100%\",\r\n            mode: \"auto\",\r\n            validationErrors: void 0,\r\n            positionRequest: void 0,\r\n            boundary: void 0,\r\n            offset: {\r\n                h: 0,\r\n                v: 0\r\n            }\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.updateMaxWidth();\r\n        this._updatePosition()\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this.$element().addClass(INVALID_MESSAGE);\r\n        this._wrapper().addClass(INVALID_MESSAGE);\r\n        this._toggleModeClass();\r\n        this._updateContentId()\r\n    },\r\n    _updateContentId: function() {\r\n        var contentId = (0, _renderer.default)(this.option(\"container\")).attr(\"aria-describedby\");\r\n        this.$content().addClass(INVALID_MESSAGE_CONTENT).attr(\"id\", contentId)\r\n    },\r\n    _renderInnerHtml: function(element) {\r\n        var $element = element && (0, _renderer.default)(element);\r\n        var validationErrors = this.option(\"validationErrors\") || [];\r\n        var validationErrorMessage = \"\";\r\n        validationErrors.forEach(function(err) {\r\n            var separator = validationErrorMessage ? \"<br />\" : \"\";\r\n            validationErrorMessage += separator + (0, _string.encodeHtml)((null === err || void 0 === err ? void 0 : err.message) || \"\")\r\n        });\r\n        null === $element || void 0 === $element ? void 0 : $element.html(validationErrorMessage)\r\n    },\r\n    _toggleModeClass: function() {\r\n        var mode = this.option(\"mode\");\r\n        this._wrapper().toggleClass(INVALID_MESSAGE_AUTO, \"auto\" === mode).toggleClass(INVALID_MESSAGE_ALWAYS, \"always\" === mode)\r\n    },\r\n    updateMaxWidth: function() {\r\n        var _target$outerWidth;\r\n        var target = this.option(\"target\");\r\n        var targetWidth = (null === target || void 0 === target ? void 0 : null === (_target$outerWidth = target.outerWidth) || void 0 === _target$outerWidth ? void 0 : _target$outerWidth.call(target)) || (0, _renderer.default)(target).outerWidth();\r\n        var maxWidth = \"100%\";\r\n        if (targetWidth) {\r\n            maxWidth = Math.max(targetWidth, VALIDATION_MESSAGE_MIN_WIDTH)\r\n        }\r\n        this.option({\r\n            maxWidth: maxWidth\r\n        })\r\n    },\r\n    _updatePosition: function() {\r\n        var _this$option = this.option(),\r\n            positionRequest = _this$option.positionRequest,\r\n            rtlEnabled = _this$option.rtlEnabled,\r\n            offset = _this$option.offset,\r\n            boundary = _this$option.boundary;\r\n        var positionSide = (0, _position.getDefaultAlignment)(rtlEnabled);\r\n        var verticalPositions = \"below\" === positionRequest ? [\" top\", \" bottom\"] : [\" bottom\", \" top\"];\r\n        if (rtlEnabled) {\r\n            offset.h = -offset.h\r\n        }\r\n        if (\"below\" !== positionRequest) {\r\n            offset.v = -offset.v\r\n        }\r\n        this.option(\"position\", {\r\n            offset: offset,\r\n            boundary: boundary,\r\n            my: positionSide + verticalPositions[0],\r\n            at: positionSide + verticalPositions[1],\r\n            collision: \"none flip\"\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name,\r\n            value = args.value;\r\n        switch (name) {\r\n            case \"target\":\r\n                this.updateMaxWidth();\r\n                this.callBase(args);\r\n                break;\r\n            case \"boundary\":\r\n                this.option(\"position.boundary\", value);\r\n                break;\r\n            case \"mode\":\r\n                this._toggleModeClass(value);\r\n                break;\r\n            case \"rtlEnabled\":\r\n            case \"offset\":\r\n            case \"positionRequest\":\r\n                this._updatePosition();\r\n                break;\r\n            case \"validationErrors\":\r\n                this._renderInnerHtml(this.$content());\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxValidationMessage\", ValidationMessage);\r\nvar _default = ValidationMessage;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/date.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dependency_injector = _interopRequireDefault(require(\"../core/utils/dependency_injector\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\nvar _date = require(\"./ldml/date.formatter\");\r\nvar _date2 = require(\"./ldml/date.format\");\r\nvar _date3 = require(\"./ldml/date.parser\");\r\nvar _default_date_names = _interopRequireDefault(require(\"./default_date_names\"));\r\nvar _first_day_of_week_data = _interopRequireDefault(require(\"./cldr-data/first_day_of_week_data\"));\r\nvar _core = _interopRequireDefault(require(\"./core\"));\r\nvar _number = _interopRequireDefault(require(\"./number\"));\r\nvar _date4 = _interopRequireDefault(require(\"./intl/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_DAY_OF_WEEK_INDEX = 0;\r\nvar hasIntl = \"undefined\" !== typeof Intl;\r\nvar FORMATS_TO_PATTERN_MAP = {\r\n    shortdate: \"M/d/y\",\r\n    shorttime: \"h:mm a\",\r\n    longdate: \"EEEE, MMMM d, y\",\r\n    longtime: \"h:mm:ss a\",\r\n    monthandday: \"MMMM d\",\r\n    monthandyear: \"MMMM y\",\r\n    quarterandyear: \"QQQ y\",\r\n    day: \"d\",\r\n    year: \"y\",\r\n    shortdateshorttime: \"M/d/y, h:mm a\",\r\n    longdatelongtime: \"EEEE, MMMM d, y, h:mm:ss a\",\r\n    month: \"LLLL\",\r\n    shortyear: \"yy\",\r\n    dayofweek: \"EEEE\",\r\n    quarter: \"QQQ\",\r\n    hour: \"HH\",\r\n    minute: \"mm\",\r\n    second: \"ss\",\r\n    millisecond: \"SSS\",\r\n    \"datetime-local\": \"yyyy-MM-ddTHH':'mm':'ss\"\r\n};\r\nvar possiblePartPatterns = {\r\n    year: [\"y\", \"yy\", \"yyyy\"],\r\n    day: [\"d\", \"dd\"],\r\n    month: [\"M\", \"MM\", \"MMM\", \"MMMM\"],\r\n    hours: [\"H\", \"HH\", \"h\", \"hh\", \"ah\"],\r\n    minutes: [\"m\", \"mm\"],\r\n    seconds: [\"s\", \"ss\"],\r\n    milliseconds: [\"S\", \"SS\", \"SSS\"]\r\n};\r\nvar dateLocalization = (0, _dependency_injector.default)({\r\n    engine: function() {\r\n        return \"base\"\r\n    },\r\n    _getPatternByFormat: function(format) {\r\n        return FORMATS_TO_PATTERN_MAP[format.toLowerCase()]\r\n    },\r\n    _expandPattern: function(pattern) {\r\n        return this._getPatternByFormat(pattern) || pattern\r\n    },\r\n    formatUsesMonthName: function(format) {\r\n        return this._expandPattern(format).indexOf(\"MMMM\") !== -1\r\n    },\r\n    formatUsesDayName: function(format) {\r\n        return this._expandPattern(format).indexOf(\"EEEE\") !== -1\r\n    },\r\n    getFormatParts: function(format) {\r\n        var pattern = this._getPatternByFormat(format) || format;\r\n        var result = [];\r\n        (0, _iterator.each)(pattern.split(/\\W+/), function(_, formatPart) {\r\n            (0, _iterator.each)(possiblePartPatterns, function(partName, possiblePatterns) {\r\n                if ((0, _array.inArray)(formatPart, possiblePatterns) > -1) {\r\n                    result.push(partName)\r\n                }\r\n            })\r\n        });\r\n        return result\r\n    },\r\n    getMonthNames: function(format) {\r\n        return _default_date_names.default.getMonthNames(format)\r\n    },\r\n    getDayNames: function(format) {\r\n        return _default_date_names.default.getDayNames(format)\r\n    },\r\n    getQuarterNames: function(format) {\r\n        return _default_date_names.default.getQuarterNames(format)\r\n    },\r\n    getPeriodNames: function(format) {\r\n        return _default_date_names.default.getPeriodNames(format)\r\n    },\r\n    getTimeSeparator: function() {\r\n        return \":\"\r\n    },\r\n    is24HourFormat: function(format) {\r\n        var amTime = new Date(2017, 0, 20, 11, 0, 0, 0);\r\n        var pmTime = new Date(2017, 0, 20, 23, 0, 0, 0);\r\n        var amTimeFormatted = this.format(amTime, format);\r\n        var pmTimeFormatted = this.format(pmTime, format);\r\n        for (var i = 0; i < amTimeFormatted.length; i++) {\r\n            if (amTimeFormatted[i] !== pmTimeFormatted[i]) {\r\n                return !isNaN(parseInt(amTimeFormatted[i]))\r\n            }\r\n        }\r\n    },\r\n    format: function(date, _format) {\r\n        if (!date) {\r\n            return\r\n        }\r\n        if (!_format) {\r\n            return date\r\n        }\r\n        var formatter;\r\n        if (\"function\" === typeof _format) {\r\n            formatter = _format\r\n        } else {\r\n            if (_format.formatter) {\r\n                formatter = _format.formatter\r\n            } else {\r\n                _format = _format.type || _format;\r\n                if ((0, _type.isString)(_format)) {\r\n                    _format = FORMATS_TO_PATTERN_MAP[_format.toLowerCase()] || _format;\r\n                    return _number.default.convertDigits((0, _date.getFormatter)(_format, this)(date))\r\n                }\r\n            }\r\n        }\r\n        if (!formatter) {\r\n            return\r\n        }\r\n        return formatter(date)\r\n    },\r\n    parse: function(text, format) {\r\n        var that = this;\r\n        var ldmlFormat;\r\n        var formatter;\r\n        if (!text) {\r\n            return\r\n        }\r\n        if (!format) {\r\n            return this.parse(text, \"shortdate\")\r\n        }\r\n        if (format.parser) {\r\n            return format.parser(text)\r\n        }\r\n        if (\"string\" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) {\r\n            ldmlFormat = format\r\n        } else {\r\n            formatter = function(value) {\r\n                var text = that.format(value, format);\r\n                return _number.default.convertDigits(text, true)\r\n            };\r\n            try {\r\n                ldmlFormat = (0, _date2.getFormat)(formatter)\r\n            } catch (e) {}\r\n        }\r\n        if (ldmlFormat) {\r\n            text = _number.default.convertDigits(text, true);\r\n            return (0, _date3.getParser)(ldmlFormat, this)(text)\r\n        }\r\n        _errors.default.log(\"W0012\");\r\n        var result = new Date(text);\r\n        if (!result || isNaN(result.getTime())) {\r\n            return\r\n        }\r\n        return result\r\n    },\r\n    firstDayOfWeekIndex: function() {\r\n        var index = _core.default.getValueByClosestLocale(function(locale) {\r\n            return _first_day_of_week_data.default[locale]\r\n        });\r\n        return void 0 === index ? DEFAULT_DAY_OF_WEEK_INDEX : index\r\n    }\r\n});\r\nif (hasIntl) {\r\n    dateLocalization.inject(_date4.default)\r\n}\r\nvar _default = dateLocalization;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/renderers/animation.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.AnimationController = AnimationController;\r\nexports.animationSvgStep = exports.easingFunctions = void 0;\r\nvar _frame = require(\"../../../animation/frame\");\r\nvar noop = function() {};\r\nvar easingFunctions = {\r\n    easeOutCubic: function(pos, start, end) {\r\n        return 1 === pos ? end : (1 - Math.pow(1 - pos, 3)) * (end - start) + +start\r\n    },\r\n    linear: function(pos, start, end) {\r\n        return 1 === pos ? end : pos * (end - start) + +start\r\n    }\r\n};\r\nexports.easingFunctions = easingFunctions;\r\nvar animationSvgStep = {\r\n    segments: function segments(elem, params, progress, easing, currentParams) {\r\n        var from = params.from;\r\n        var to = params.to;\r\n        var curSeg;\r\n        var seg;\r\n        var i;\r\n        var j;\r\n        var segments = [];\r\n        for (i = 0; i < from.length; i++) {\r\n            curSeg = from[i];\r\n            seg = [curSeg[0]];\r\n            if (curSeg.length > 1) {\r\n                for (j = 1; j < curSeg.length; j++) {\r\n                    seg.push(easing(progress, curSeg[j], to[i][j]))\r\n                }\r\n            }\r\n            segments.push(seg)\r\n        }\r\n        currentParams.segments = params.end && 1 === progress ? params.end : segments;\r\n        elem.attr({\r\n            segments: segments\r\n        })\r\n    },\r\n    arc: function(elem, params, progress, easing) {\r\n        var from = params.from;\r\n        var to = params.to;\r\n        var current = {};\r\n        for (var i in from) {\r\n            current[i] = easing(progress, from[i], to[i])\r\n        }\r\n        elem.attr(current)\r\n    },\r\n    transform: function(elem, params, progress, easing, currentParams) {\r\n        var from = params.from;\r\n        var to = params.to;\r\n        var current = {};\r\n        for (var i in from) {\r\n            current[i] = currentParams[i] = easing(progress, from[i], to[i])\r\n        }\r\n        elem.attr(current)\r\n    },\r\n    base: function(elem, params, progress, easing, currentParams, attributeName) {\r\n        var obj = {};\r\n        obj[attributeName] = currentParams[attributeName] = easing(progress, params.from, params.to);\r\n        elem.attr(obj)\r\n    },\r\n    _: noop,\r\n    complete: function(element, currentSettings) {\r\n        element.attr(currentSettings)\r\n    }\r\n};\r\nexports.animationSvgStep = animationSvgStep;\r\n\r\nfunction step(now) {\r\n    var that = this;\r\n    var animateStep = that._animateStep;\r\n    var attrName;\r\n    that._progress = that._calcProgress(now);\r\n    for (attrName in that.params) {\r\n        var anim = animateStep[attrName] || animateStep.base;\r\n        anim(that.element, that.params[attrName], that._progress, that._easing, that._currentParams, attrName)\r\n    }\r\n    that.options.step && that.options.step(that._easing(that._progress, 0, 1), that._progress);\r\n    if (1 === that._progress) {\r\n        return that.stop()\r\n    }\r\n    return true\r\n}\r\n\r\nfunction delayTick(now) {\r\n    if (now - this._startTime >= this.delay) {\r\n        this.tick = step\r\n    }\r\n    return true\r\n}\r\n\r\nfunction start(now) {\r\n    this._startTime = now;\r\n    this.tick = this.delay ? delayTick : step;\r\n    return true\r\n}\r\n\r\nfunction Animation(element, params, options) {\r\n    var that = this;\r\n    that._progress = 0;\r\n    that.element = element;\r\n    that.params = params;\r\n    that.options = options;\r\n    that.duration = options.partitionDuration ? options.duration * options.partitionDuration : options.duration;\r\n    that.delay = options.delay && options.duration * options.delay || 0;\r\n    that._animateStep = options.animateStep || animationSvgStep;\r\n    that._easing = easingFunctions[options.easing] || easingFunctions.easeOutCubic;\r\n    that._currentParams = {};\r\n    that.tick = start\r\n}\r\nAnimation.prototype = {\r\n    _calcProgress: function(now) {\r\n        return Math.min(1, (now - this.delay - this._startTime) / this.duration)\r\n    },\r\n    stop: function(disableComplete) {\r\n        var that = this;\r\n        var options = that.options;\r\n        var animateStep = that._animateStep;\r\n        that.stop = that.tick = noop;\r\n        animateStep.complete && animateStep.complete(that.element, that._currentParams);\r\n        options.complete && !disableComplete && options.complete()\r\n    }\r\n};\r\n\r\nfunction AnimationController(element) {\r\n    var that = this;\r\n    that._animationCount = 0;\r\n    that._timerId = null;\r\n    that._animations = {};\r\n    that.element = element\r\n}\r\nAnimationController.prototype = {\r\n    _loop: function() {\r\n        var that = this;\r\n        var animations = that._animations;\r\n        var activeAnimation = 0;\r\n        var now = (new Date).getTime();\r\n        var an;\r\n        var endAnimation = that._endAnimation;\r\n        for (an in animations) {\r\n            if (!animations[an].tick(now)) {\r\n                delete animations[an]\r\n            }\r\n            activeAnimation++\r\n        }\r\n        if (0 === activeAnimation) {\r\n            that.stop();\r\n            that._endAnimationTimer = endAnimation && setTimeout(function() {\r\n                if (0 === that._animationCount) {\r\n                    endAnimation();\r\n                    that._endAnimation = null\r\n                }\r\n            });\r\n            return\r\n        }\r\n        that._timerId = _frame.requestAnimationFrame.call(null, function() {\r\n            that._loop()\r\n        }, that.element)\r\n    },\r\n    addAnimation: function(animation) {\r\n        var that = this;\r\n        that._animations[that._animationCount++] = animation;\r\n        clearTimeout(that._endAnimationTimer);\r\n        if (!that._timerId) {\r\n            clearTimeout(that._startDelay);\r\n            that._startDelay = setTimeout(function() {\r\n                that._timerId = 1;\r\n                that._loop()\r\n            }, 0)\r\n        }\r\n    },\r\n    animateElement: function(elem, params, options) {\r\n        if (elem && params && options) {\r\n            elem.animation && elem.animation.stop();\r\n            this.addAnimation(elem.animation = new Animation(elem, params, options))\r\n        }\r\n    },\r\n    onEndAnimation: function(endAnimation) {\r\n        this._animationCount ? this._endAnimation = endAnimation : endAnimation()\r\n    },\r\n    dispose: function() {\r\n        this.stop();\r\n        this.element = null\r\n    },\r\n    stop: function() {\r\n        var that = this;\r\n        that._animations = {};\r\n        that._animationCount = 0;\r\n        (0, _frame.cancelAnimationFrame)(that._timerId);\r\n        clearTimeout(that._startDelay);\r\n        clearTimeout(that._endAnimationTimer);\r\n        that._timerId = null\r\n    },\r\n    lock: function() {\r\n        var an;\r\n        var animations = this._animations;\r\n        var unstoppable;\r\n        var hasUnstoppableInAnimations;\r\n        for (an in animations) {\r\n            unstoppable = animations[an].options.unstoppable;\r\n            hasUnstoppableInAnimations = hasUnstoppableInAnimations || unstoppable;\r\n            if (!unstoppable) {\r\n                animations[an].stop(true);\r\n                delete animations[an]\r\n            }\r\n        }!hasUnstoppableInAnimations && this.stop()\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (core/utils/template_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.acquireTemplate = exports.acquireIntegrationTemplate = exports.defaultCreateElement = exports.templateKey = exports.validateTemplateSource = exports.getNormalizedTemplateArgs = exports.addOneRenderedCall = exports.suitableTemplatesByName = exports.findTemplates = void 0;\r\nvar _config = _interopRequireDefault(require(\"../config\"));\r\nvar _devices = _interopRequireDefault(require(\"../devices\"));\r\nvar _errors = _interopRequireDefault(require(\"../errors\"));\r\nvar _renderer = _interopRequireDefault(require(\"../renderer\"));\r\nvar _child_default_template = require(\"../templates/child_default_template\");\r\nvar _empty_template = require(\"../templates/empty_template\");\r\nvar _template = require(\"../templates/template\");\r\nvar _template_base = require(\"../templates/template_base\");\r\nvar _array = require(\"./array\");\r\nvar _common = require(\"./common\");\r\nvar _dom = require(\"./dom\");\r\nvar _extend = require(\"./extend\");\r\nvar _type = require(\"./type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar findTemplates = function(element, name) {\r\n    var optionsAttributeName = \"data-options\";\r\n    var templates = (0, _renderer.default)(element).contents().filter(\"[\".concat(optionsAttributeName, '*=\"').concat(name, '\"]'));\r\n    return [].slice.call(templates).map(function(element) {\r\n        var optionsString = (0, _renderer.default)(element).attr(optionsAttributeName) || \"\";\r\n        return {\r\n            element: element,\r\n            options: (0, _config.default)().optionsParser(optionsString)[name]\r\n        }\r\n    }).filter(function(template) {\r\n        return !!template.options\r\n    })\r\n};\r\nexports.findTemplates = findTemplates;\r\nvar suitableTemplatesByName = function(rawTemplates) {\r\n    var templatesMap = (0, _array.groupBy)(rawTemplates, function(template) {\r\n        return template.options.name\r\n    });\r\n    if (templatesMap[void 0]) {\r\n        throw _errors.default.Error(\"E0023\")\r\n    }\r\n    var result = {};\r\n    Object.keys(templatesMap).forEach(function(name) {\r\n        var _findBestMatches$;\r\n        var suitableTemplate = null === (_findBestMatches$ = (0, _common.findBestMatches)(_devices.default.current(), templatesMap[name], function(template) {\r\n            return template.options\r\n        })[0]) || void 0 === _findBestMatches$ ? void 0 : _findBestMatches$.element;\r\n        if (suitableTemplate) {\r\n            result[name] = suitableTemplate\r\n        }\r\n    });\r\n    return result\r\n};\r\nexports.suitableTemplatesByName = suitableTemplatesByName;\r\nvar addOneRenderedCall = function(template) {\r\n    var _render = template.render.bind(template);\r\n    return (0, _extend.extend)({}, template, {\r\n        render: function(options) {\r\n            var templateResult = _render(options);\r\n            options && options.onRendered && options.onRendered();\r\n            return templateResult\r\n        }\r\n    })\r\n};\r\nexports.addOneRenderedCall = addOneRenderedCall;\r\nvar getNormalizedTemplateArgs = function(options) {\r\n    var args = [];\r\n    if (\"model\" in options) {\r\n        args.push(options.model)\r\n    }\r\n    if (\"index\" in options) {\r\n        args.push(options.index)\r\n    }\r\n    args.push(options.container);\r\n    return args\r\n};\r\nexports.getNormalizedTemplateArgs = getNormalizedTemplateArgs;\r\nvar validateTemplateSource = function(templateSource) {\r\n    return \"string\" === typeof templateSource ? (0, _dom.normalizeTemplateElement)(templateSource) : templateSource\r\n};\r\nexports.validateTemplateSource = validateTemplateSource;\r\nvar templateKey = function(templateSource) {\r\n    return (0, _type.isRenderer)(templateSource) && templateSource[0] || templateSource\r\n};\r\nexports.templateKey = templateKey;\r\nvar defaultCreateElement = function(element) {\r\n    return new _template.Template(element)\r\n};\r\nexports.defaultCreateElement = defaultCreateElement;\r\nvar acquireIntegrationTemplate = function(templateSource, templates, isAsyncTemplate, skipTemplates) {\r\n    var integrationTemplate = null;\r\n    if (!skipTemplates || skipTemplates.indexOf(templateSource) === -1) {\r\n        integrationTemplate = templates[templateSource];\r\n        if (integrationTemplate && !(integrationTemplate instanceof _template_base.TemplateBase) && !isAsyncTemplate) {\r\n            integrationTemplate = addOneRenderedCall(integrationTemplate)\r\n        }\r\n    }\r\n    return integrationTemplate\r\n};\r\nexports.acquireIntegrationTemplate = acquireIntegrationTemplate;\r\nvar acquireTemplate = function(templateSource, createTemplate, templates, isAsyncTemplate, skipTemplates, defaultTemplates) {\r\n    if (null == templateSource) {\r\n        return new _empty_template.EmptyTemplate\r\n    }\r\n    if (templateSource instanceof _child_default_template.ChildDefaultTemplate) {\r\n        return defaultTemplates[templateSource.name]\r\n    }\r\n    if (templateSource instanceof _template_base.TemplateBase) {\r\n        return templateSource\r\n    }\r\n    if ((0, _type.isFunction)(templateSource.render) && !(0, _type.isRenderer)(templateSource)) {\r\n        return isAsyncTemplate ? templateSource : addOneRenderedCall(templateSource)\r\n    }\r\n    if (templateSource.nodeType || (0, _type.isRenderer)(templateSource)) {\r\n        return createTemplate((0, _renderer.default)(templateSource))\r\n    }\r\n    return acquireIntegrationTemplate(templateSource, templates, isAsyncTemplate, skipTemplates) || defaultTemplates[templateSource] || createTemplate(templateSource)\r\n};\r\nexports.acquireTemplate = acquireTemplate;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.grid_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar accessibility = _interopRequireWildcard(require(\"../shared/accessibility\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TABLE_CLASS = \"table\";\r\nvar BORDERS_CLASS = \"borders\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar IMPORTANT_MARGIN_CLASS = \"important-margin\";\r\nvar TEXT_CONTENT_CLASS = \"text-content\";\r\nvar HIDDEN_CLASS = \"dx-hidden\";\r\nvar GRIDBASE_CONTAINER_CLASS = \"dx-gridbase-container\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar VIEW_NAMES = [\"columnsSeparatorView\", \"blockSeparatorView\", \"trackerView\", \"headerPanel\", \"columnHeadersView\", \"rowsView\", \"footerView\", \"columnChooserView\", \"filterPanelView\", \"pagerView\", \"draggingHeaderView\", \"contextMenuView\", \"errorView\", \"headerFilterView\", \"filterBuilderView\"];\r\nvar isPercentWidth = function(width) {\r\n    return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n};\r\nvar isPixelWidth = function(width) {\r\n    return (0, _type.isString)(width) && \"px\" === width.slice(-2)\r\n};\r\nvar mergeArraysByMaxValue = function(values1, values2) {\r\n    var result = [];\r\n    if (values1 && values2 && values1.length && values1.length === values2.length) {\r\n        for (var i = 0; i < values1.length; i++) {\r\n            result.push(values1[i] > values2[i] ? values1[i] : values2[i])\r\n        }\r\n    } else {\r\n        if (values1 && values1.length) {\r\n            result = values1\r\n        } else {\r\n            if (values2) {\r\n                result = values2\r\n            }\r\n        }\r\n    }\r\n    return result\r\n};\r\nvar getContainerHeight = function($container) {\r\n    var clientHeight = $container.get(0).clientHeight;\r\n    var paddingTop = parseFloat($container.css(\"paddingTop\"));\r\n    var paddingBottom = parseFloat($container.css(\"paddingBottom\"));\r\n    return clientHeight - paddingTop - paddingBottom\r\n};\r\nvar calculateFreeWidth = function(that, widths) {\r\n    var contentWidth = that._rowsView.contentWidth();\r\n    var totalWidth = that._getTotalWidth(widths, contentWidth);\r\n    return contentWidth - totalWidth\r\n};\r\nvar calculateFreeWidthWithCurrentMinWidth = function(that, columnIndex, currentMinWidth, widths) {\r\n    return calculateFreeWidth(that, widths.map(function(width, index) {\r\n        return index === columnIndex ? currentMinWidth : width\r\n    }))\r\n};\r\nvar restoreFocus = function(focusedElement, selectionRange) {\r\n    accessibility.hiddenFocus(focusedElement);\r\n    _uiGrid_core2.default.setSelectionRange(focusedElement, selectionRange)\r\n};\r\nvar ResizingController = _uiGrid_core.default.ViewController.inherit({\r\n    _initPostRenderHandlers: function() {\r\n        var that = this;\r\n        var dataController = that._dataController;\r\n        if (!that._refreshSizesHandler) {\r\n            that._refreshSizesHandler = function(e) {\r\n                dataController.changed.remove(that._refreshSizesHandler);\r\n                var resizeDeferred;\r\n                var changeType = e && e.changeType;\r\n                var isDelayed = e && e.isDelayed;\r\n                var items = dataController.items();\r\n                if (!e || \"refresh\" === changeType || \"prepend\" === changeType || \"append\" === changeType) {\r\n                    if (!isDelayed) {\r\n                        resizeDeferred = that.resize()\r\n                    }\r\n                } else {\r\n                    if (\"update\" === changeType && e.changeTypes) {\r\n                        if ((items.length > 1 || \"insert\" !== e.changeTypes[0]) && !(0 === items.length && \"remove\" === e.changeTypes[0]) && !e.needUpdateDimensions) {\r\n                            (0, _common.deferUpdate)(function() {\r\n                                that._rowsView.resize()\r\n                            })\r\n                        } else {\r\n                            resizeDeferred = that.resize()\r\n                        }\r\n                    }\r\n                }\r\n                if (changeType && \"updateSelection\" !== changeType && \"updateFocusedRow\" !== changeType && !isDelayed) {\r\n                    (0, _deferred.when)(resizeDeferred).done(function() {\r\n                        that._setAriaRowColCount();\r\n                        that.fireContentReadyAction()\r\n                    })\r\n                }\r\n            };\r\n            that._dataController.changed.add(function() {\r\n                that._dataController.changed.add(that._refreshSizesHandler)\r\n            })\r\n        }\r\n    },\r\n    fireContentReadyAction: function() {\r\n        this.component._fireContentReadyAction()\r\n    },\r\n    _setAriaRowColCount: function() {\r\n        var component = this.component;\r\n        component.setAria({\r\n            rowCount: this._dataController.totalItemsCount(),\r\n            colCount: component.columnCount()\r\n        }, component.$element().children(\".\" + GRIDBASE_CONTAINER_CLASS))\r\n    },\r\n    _getBestFitWidths: function() {\r\n        if (!this.option(\"legacyRendering\")) {\r\n            return this._rowsView.getColumnWidths()\r\n        }\r\n        var rowsColumnWidths = this._rowsView.getColumnWidths();\r\n        var headerColumnWidths = this._columnHeadersView && this._columnHeadersView.getColumnWidths();\r\n        var footerColumnWidths = this._footerView && this._footerView.getColumnWidths();\r\n        var resultWidths = mergeArraysByMaxValue(rowsColumnWidths, headerColumnWidths);\r\n        resultWidths = mergeArraysByMaxValue(resultWidths, footerColumnWidths);\r\n        return resultWidths\r\n    },\r\n    _setVisibleWidths: function(visibleColumns, widths) {\r\n        var columnsController = this._columnsController;\r\n        columnsController.beginUpdate();\r\n        (0, _iterator.each)(visibleColumns, function(index, column) {\r\n            var columnId = columnsController.getColumnId(column);\r\n            columnsController.columnOption(columnId, \"visibleWidth\", widths[index])\r\n        });\r\n        columnsController.endUpdate()\r\n    },\r\n    _toggleBestFitModeForView: function(view, className, isBestFit) {\r\n        var _this = this;\r\n        if (!view || !view.isVisible()) {\r\n            return\r\n        }\r\n        var $rowsTables = this._rowsView.getTableElements();\r\n        var $viewTables = view.getTableElements();\r\n        (0, _iterator.each)($rowsTables, function(index, tableElement) {\r\n            var $tableBody;\r\n            var $rowsTable = (0, _renderer.default)(tableElement);\r\n            var $viewTable = $viewTables.eq(index);\r\n            if ($viewTable && $viewTable.length) {\r\n                if (isBestFit) {\r\n                    $tableBody = $viewTable.children(\"tbody\").appendTo($rowsTable)\r\n                } else {\r\n                    $tableBody = $rowsTable.children(\".\" + className).appendTo($viewTable)\r\n                }\r\n                $tableBody.toggleClass(className, isBestFit);\r\n                $tableBody.toggleClass(_this.addWidgetPrefix(\"best-fit\"), isBestFit)\r\n            }\r\n        })\r\n    },\r\n    _toggleBestFitMode: function(isBestFit) {\r\n        var $element = this.component.$element();\r\n        var that = this;\r\n        if (!that.option(\"legacyRendering\")) {\r\n            var $rowsTable = that._rowsView._getTableElement();\r\n            var $rowsFixedTable = that._rowsView.getTableElements().eq(1);\r\n            if (!$rowsTable) {\r\n                return\r\n            }\r\n            $rowsTable.css(\"tableLayout\", isBestFit ? \"auto\" : \"fixed\");\r\n            $rowsTable.children(\"colgroup\").css(\"display\", isBestFit ? \"none\" : \"\");\r\n            $rowsFixedTable.toggleClass(this.addWidgetPrefix(TABLE_FIXED_CLASS), !isBestFit);\r\n            that._toggleBestFitModeForView(that._columnHeadersView, \"dx-header\", isBestFit);\r\n            that._toggleBestFitModeForView(that._footerView, \"dx-footer\", isBestFit);\r\n            if (that._needStretch()) {\r\n                $rowsTable.get(0).style.width = isBestFit ? \"auto\" : \"\"\r\n            }\r\n            if (_browser.default.msie && 11 === parseInt(_browser.default.version)) {\r\n                $rowsTable.find(\".\" + this.addWidgetPrefix(TABLE_FIXED_CLASS)).each(function() {\r\n                    this.style.width = isBestFit ? \"10px\" : \"\"\r\n                })\r\n            }\r\n        } else {\r\n            $element.find(\".\" + this.addWidgetPrefix(TABLE_CLASS)).toggleClass(this.addWidgetPrefix(TABLE_FIXED_CLASS), !isBestFit);\r\n            $element.find(EDITORS_INPUT_SELECTOR).toggleClass(HIDDEN_CLASS, isBestFit);\r\n            $element.find(\".dx-group-cell\").toggleClass(HIDDEN_CLASS, isBestFit);\r\n            $element.find(\".dx-header-row .\" + this.addWidgetPrefix(TEXT_CONTENT_CLASS)).css(\"maxWidth\", \"\")\r\n        }\r\n    },\r\n    _synchronizeColumns: function() {\r\n        var that = this;\r\n        var columnsController = that._columnsController;\r\n        var visibleColumns = columnsController.getVisibleColumns();\r\n        var columnAutoWidth = that.option(\"columnAutoWidth\");\r\n        var legacyRendering = that.option(\"legacyRendering\");\r\n        var needBestFit = that._needBestFit();\r\n        var hasMinWidth = false;\r\n        var resetBestFitMode;\r\n        var isColumnWidthsCorrected = false;\r\n        var resultWidths = [];\r\n        var focusedElement;\r\n        var selectionRange;\r\n        var normalizeWidthsByExpandColumns = function() {\r\n            var expandColumnWidth;\r\n            (0, _iterator.each)(visibleColumns, function(index, column) {\r\n                if (\"groupExpand\" === column.type) {\r\n                    expandColumnWidth = resultWidths[index]\r\n                }\r\n            });\r\n            (0, _iterator.each)(visibleColumns, function(index, column) {\r\n                if (\"groupExpand\" === column.type && expandColumnWidth) {\r\n                    resultWidths[index] = expandColumnWidth\r\n                }\r\n            })\r\n        };\r\n        !needBestFit && (0, _iterator.each)(visibleColumns, function(index, column) {\r\n            if (\"auto\" === column.width || legacyRendering && column.fixed) {\r\n                needBestFit = true;\r\n                return false\r\n            }\r\n        });\r\n        (0, _iterator.each)(visibleColumns, function(index, column) {\r\n            if (column.minWidth) {\r\n                hasMinWidth = true;\r\n                return false\r\n            }\r\n        });\r\n        that._setVisibleWidths(visibleColumns, []);\r\n        if (needBestFit) {\r\n            focusedElement = _dom_adapter.default.getActiveElement();\r\n            selectionRange = _uiGrid_core2.default.getSelectionRange(focusedElement);\r\n            that._toggleBestFitMode(true);\r\n            resetBestFitMode = true\r\n        }(0, _common.deferUpdate)(function() {\r\n            if (needBestFit) {\r\n                resultWidths = that._getBestFitWidths();\r\n                (0, _iterator.each)(visibleColumns, function(index, column) {\r\n                    var columnId = columnsController.getColumnId(column);\r\n                    columnsController.columnOption(columnId, \"bestFitWidth\", resultWidths[index], true)\r\n                })\r\n            } else {\r\n                if (hasMinWidth) {\r\n                    resultWidths = that._getBestFitWidths()\r\n                }\r\n            }(0, _iterator.each)(visibleColumns, function(index) {\r\n                var width = this.width;\r\n                if (\"auto\" !== width) {\r\n                    if ((0, _type.isDefined)(width)) {\r\n                        resultWidths[index] = (0, _type.isNumeric)(width) || isPixelWidth(width) ? parseFloat(width) : width\r\n                    } else {\r\n                        if (!columnAutoWidth) {\r\n                            resultWidths[index] = void 0\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n            if (resetBestFitMode) {\r\n                that._toggleBestFitMode(false);\r\n                resetBestFitMode = false;\r\n                if (focusedElement && focusedElement !== _dom_adapter.default.getActiveElement()) {\r\n                    var isFocusOutsideWindow = (0, _position.getBoundingRect)(focusedElement).bottom < 0;\r\n                    if (!isFocusOutsideWindow) {\r\n                        if (_browser.default.msie) {\r\n                            setTimeout(function() {\r\n                                restoreFocus(focusedElement, selectionRange)\r\n                            })\r\n                        } else {\r\n                            restoreFocus(focusedElement, selectionRange)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            isColumnWidthsCorrected = that._correctColumnWidths(resultWidths, visibleColumns);\r\n            if (columnAutoWidth) {\r\n                normalizeWidthsByExpandColumns();\r\n                if (that._needStretch()) {\r\n                    that._processStretch(resultWidths, visibleColumns)\r\n                }\r\n            }(0, _common.deferRender)(function() {\r\n                if (needBestFit || isColumnWidthsCorrected) {\r\n                    that._setVisibleWidths(visibleColumns, resultWidths)\r\n                }\r\n            })\r\n        })\r\n    },\r\n    _needBestFit: function() {\r\n        return this.option(\"columnAutoWidth\")\r\n    },\r\n    _needStretch: function() {\r\n        return this.option(\"legacyRendering\") || this._columnsController.getVisibleColumns().some(function(c) {\r\n            return \"auto\" === c.width && !c.command\r\n        })\r\n    },\r\n    _getAverageColumnsWidth: function(resultWidths) {\r\n        var freeWidth = calculateFreeWidth(this, resultWidths);\r\n        var columnCountWithoutWidth = resultWidths.filter(function(width) {\r\n            return void 0 === width\r\n        }).length;\r\n        return freeWidth / columnCountWithoutWidth\r\n    },\r\n    _correctColumnWidths: function(resultWidths, visibleColumns) {\r\n        var that = this;\r\n        var i;\r\n        var hasPercentWidth = false;\r\n        var hasAutoWidth = false;\r\n        var isColumnWidthsCorrected = false;\r\n        var $element = that.component.$element();\r\n        var hasWidth = that._hasWidth;\r\n        for (i = 0; i < visibleColumns.length; i++) {\r\n            var index = i;\r\n            var column = visibleColumns[index];\r\n            var isHiddenColumn = resultWidths[index] === HIDDEN_COLUMNS_WIDTH;\r\n            var width = resultWidths[index];\r\n            var minWidth = column.minWidth;\r\n            if (minWidth) {\r\n                if (void 0 === width) {\r\n                    var averageColumnsWidth = that._getAverageColumnsWidth(resultWidths);\r\n                    width = averageColumnsWidth\r\n                } else {\r\n                    if (isPercentWidth(width)) {\r\n                        var freeWidth = calculateFreeWidthWithCurrentMinWidth(that, index, minWidth, resultWidths);\r\n                        if (freeWidth < 0) {\r\n                            width = -1\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (minWidth && that._getRealColumnWidth(width) < minWidth && !isHiddenColumn) {\r\n                resultWidths[index] = minWidth;\r\n                isColumnWidthsCorrected = true;\r\n                i = -1\r\n            }\r\n            if (!(0, _type.isDefined)(column.width)) {\r\n                hasAutoWidth = true\r\n            }\r\n            if (isPercentWidth(column.width)) {\r\n                hasPercentWidth = true\r\n            }\r\n        }\r\n        if ($element && that._maxWidth) {\r\n            delete that._maxWidth;\r\n            $element.css(\"maxWidth\", \"\")\r\n        }\r\n        if (!hasAutoWidth && resultWidths.length) {\r\n            var contentWidth = that._rowsView.contentWidth();\r\n            var scrollbarWidth = that._rowsView.getScrollbarWidth();\r\n            var totalWidth = that._getTotalWidth(resultWidths, contentWidth);\r\n            if (totalWidth < contentWidth) {\r\n                var lastColumnIndex = _uiGrid_core2.default.getLastResizableColumnIndex(visibleColumns, resultWidths);\r\n                if (lastColumnIndex >= 0) {\r\n                    resultWidths[lastColumnIndex] = \"auto\";\r\n                    isColumnWidthsCorrected = true;\r\n                    if (false === hasWidth && !hasPercentWidth) {\r\n                        that._maxWidth = totalWidth + scrollbarWidth + (that.option(\"showBorders\") ? 2 : 0);\r\n                        $element.css(\"maxWidth\", that._maxWidth)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return isColumnWidthsCorrected\r\n    },\r\n    _processStretch: function(resultSizes, visibleColumns) {\r\n        var groupSize = this._rowsView.contentWidth();\r\n        var tableSize = this._getTotalWidth(resultSizes, groupSize);\r\n        var unusedIndexes = {\r\n            length: 0\r\n        };\r\n        if (!resultSizes.length) {\r\n            return\r\n        }(0, _iterator.each)(visibleColumns, function(index) {\r\n            if (this.width || resultSizes[index] === HIDDEN_COLUMNS_WIDTH) {\r\n                unusedIndexes[index] = true;\r\n                unusedIndexes.length++\r\n            }\r\n        });\r\n        var diff = groupSize - tableSize;\r\n        var diffElement = Math.floor(diff / (resultSizes.length - unusedIndexes.length));\r\n        var onePixelElementsCount = diff - diffElement * (resultSizes.length - unusedIndexes.length);\r\n        if (diff >= 0) {\r\n            for (var i = 0; i < resultSizes.length; i++) {\r\n                if (unusedIndexes[i]) {\r\n                    continue\r\n                }\r\n                resultSizes[i] += diffElement;\r\n                if (onePixelElementsCount > 0) {\r\n                    if (onePixelElementsCount < 1) {\r\n                        resultSizes[i] += onePixelElementsCount;\r\n                        onePixelElementsCount = 0\r\n                    } else {\r\n                        resultSizes[i]++;\r\n                        onePixelElementsCount--\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _getRealColumnWidth: function(width, groupWidth) {\r\n        if (!isPercentWidth(width)) {\r\n            return parseFloat(width)\r\n        }\r\n        groupWidth = groupWidth || this._rowsView.contentWidth();\r\n        return parseFloat(width) * groupWidth / 100\r\n    },\r\n    _getTotalWidth: function(widths, groupWidth) {\r\n        var result = 0;\r\n        for (var i = 0; i < widths.length; i++) {\r\n            var width = widths[i];\r\n            if (width && width !== HIDDEN_COLUMNS_WIDTH) {\r\n                result += this._getRealColumnWidth(width, groupWidth)\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    updateSize: function($rootElement) {\r\n        var that = this;\r\n        var $groupElement;\r\n        var width;\r\n        var importantMarginClass = that.addWidgetPrefix(IMPORTANT_MARGIN_CLASS);\r\n        if (void 0 === that._hasHeight && $rootElement && $rootElement.is(\":visible\") && $rootElement.width()) {\r\n            $groupElement = $rootElement.children(\".\" + that.getWidgetContainerClass());\r\n            if ($groupElement.length) {\r\n                $groupElement.detach()\r\n            }\r\n            that._hasHeight = !!getContainerHeight($rootElement);\r\n            width = $rootElement.width();\r\n            $rootElement.addClass(importantMarginClass);\r\n            that._hasWidth = $rootElement.width() === width;\r\n            $rootElement.removeClass(importantMarginClass);\r\n            if ($groupElement.length) {\r\n                $groupElement.appendTo($rootElement)\r\n            }\r\n        }\r\n    },\r\n    publicMethods: function() {\r\n        return [\"resize\", \"updateDimensions\"]\r\n    },\r\n    resize: function() {\r\n        return !this.component._requireResize && this.updateDimensions()\r\n    },\r\n    updateDimensions: function(checkSize) {\r\n        var that = this;\r\n        that._initPostRenderHandlers();\r\n        if (!that._checkSize(checkSize)) {\r\n            return\r\n        }\r\n        var prevResult = that._resizeDeferred;\r\n        var result = that._resizeDeferred = new _deferred.Deferred;\r\n        (0, _deferred.when)(prevResult).always(function() {\r\n            (0, _common.deferRender)(function() {\r\n                if (that._dataController.isLoaded()) {\r\n                    that._synchronizeColumns()\r\n                }\r\n                that._resetGroupElementHeight();\r\n                (0, _common.deferUpdate)(function() {\r\n                    (0, _common.deferRender)(function() {\r\n                        (0, _common.deferUpdate)(function() {\r\n                            that._updateDimensionsCore()\r\n                        })\r\n                    })\r\n                })\r\n            }).done(result.resolve).fail(result.reject)\r\n        });\r\n        return result.promise()\r\n    },\r\n    _resetGroupElementHeight: function() {\r\n        var groupElement = this.component.$element().children().get(0);\r\n        var scrollable = this._rowsView.getScrollable();\r\n        if (groupElement && groupElement.style.height && (!scrollable || !scrollable.scrollTop())) {\r\n            groupElement.style.height = \"\"\r\n        }\r\n    },\r\n    _checkSize: function(checkSize) {\r\n        var $rootElement = this.component.$element();\r\n        if (checkSize && (this._lastWidth === $rootElement.width() && this._lastHeight === $rootElement.height() || !$rootElement.is(\":visible\"))) {\r\n            return false\r\n        }\r\n        return true\r\n    },\r\n    _setScrollerSpacingCore: function(hasHeight) {\r\n        var that = this;\r\n        var vScrollbarWidth = hasHeight ? that._rowsView.getScrollbarWidth() : 0;\r\n        var hScrollbarWidth = that._rowsView.getScrollbarWidth(true);\r\n        (0, _common.deferRender)(function() {\r\n            that._columnHeadersView && that._columnHeadersView.setScrollerSpacing(vScrollbarWidth);\r\n            that._footerView && that._footerView.setScrollerSpacing(vScrollbarWidth);\r\n            that._rowsView.setScrollerSpacing(vScrollbarWidth, hScrollbarWidth)\r\n        })\r\n    },\r\n    _setScrollerSpacing: function(hasHeight) {\r\n        var _this2 = this;\r\n        if (true === this.option(\"scrolling.useNative\")) {\r\n            (0, _common.deferRender)(function() {\r\n                (0, _common.deferUpdate)(function() {\r\n                    _this2._setScrollerSpacingCore(hasHeight)\r\n                })\r\n            })\r\n        } else {\r\n            this._setScrollerSpacingCore(hasHeight)\r\n        }\r\n    },\r\n    _updateDimensionsCore: function() {\r\n        var that = this;\r\n        var dataController = that._dataController;\r\n        var rowsView = that._rowsView;\r\n        var $rootElement = that.component.$element();\r\n        var groupElement = $rootElement.children().get(0);\r\n        var rootElementHeight = $rootElement && ($rootElement.get(0).clientHeight || $rootElement.height());\r\n        var maxHeight = parseInt($rootElement.css(\"maxHeight\"));\r\n        var maxHeightHappened = maxHeight && rootElementHeight >= maxHeight;\r\n        var height = that.option(\"height\") || $rootElement.get(0).style.height;\r\n        var editorFactory = that.getController(\"editorFactory\");\r\n        var isMaxHeightApplied = maxHeightHappened && groupElement.scrollHeight === groupElement.offsetHeight;\r\n        var $testDiv;\r\n        that.updateSize($rootElement);\r\n        var hasHeight = that._hasHeight || maxHeightHappened;\r\n        if (height && that._hasHeight ^ \"auto\" !== height) {\r\n            $testDiv = (0, _renderer.default)(\"<div>\").height(height).appendTo($rootElement);\r\n            that._hasHeight = !!$testDiv.height();\r\n            $testDiv.remove()\r\n        }(0, _common.deferRender)(function() {\r\n            rowsView.height(null, hasHeight);\r\n            if (maxHeightHappened && !isMaxHeightApplied) {\r\n                (0, _renderer.default)(groupElement).css(\"height\", maxHeight)\r\n            }\r\n            if (!dataController.isLoaded()) {\r\n                rowsView.setLoading(dataController.isLoading());\r\n                return\r\n            }(0, _common.deferUpdate)(function() {\r\n                that._updateLastSizes($rootElement);\r\n                that._setScrollerSpacing(hasHeight);\r\n                (0, _iterator.each)(VIEW_NAMES, function(index, viewName) {\r\n                    var view = that.getView(viewName);\r\n                    if (view) {\r\n                        view.resize()\r\n                    }\r\n                });\r\n                editorFactory && editorFactory.resize()\r\n            })\r\n        })\r\n    },\r\n    _updateLastSizes: function($rootElement) {\r\n        this._lastWidth = $rootElement.width();\r\n        this._lastHeight = $rootElement.height()\r\n    },\r\n    optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"width\":\r\n            case \"height\":\r\n                this.component._renderDimensions();\r\n                this.resize();\r\n            case \"legacyRendering\":\r\n            case \"renderAsync\":\r\n                args.handled = true;\r\n                return;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    init: function() {\r\n        var that = this;\r\n        that._dataController = that.getController(\"data\");\r\n        that._columnsController = that.getController(\"columns\");\r\n        that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n        that._footerView = that.getView(\"footerView\");\r\n        that._rowsView = that.getView(\"rowsView\")\r\n    }\r\n});\r\nvar SynchronizeScrollingController = _uiGrid_core.default.ViewController.inherit({\r\n    _scrollChangedHandler: function(views, pos, viewName) {\r\n        for (var j = 0; j < views.length; j++) {\r\n            if (views[j] && views[j].name !== viewName) {\r\n                views[j].scrollTo({\r\n                    left: pos.left,\r\n                    top: pos.top\r\n                })\r\n            }\r\n        }\r\n    },\r\n    init: function() {\r\n        var views = [this.getView(\"columnHeadersView\"), this.getView(\"footerView\"), this.getView(\"rowsView\")];\r\n        for (var i = 0; i < views.length; i++) {\r\n            var view = views[i];\r\n            if (view) {\r\n                view.scrollChanged.add(this._scrollChangedHandler.bind(this, views))\r\n            }\r\n        }\r\n    }\r\n});\r\nvar GridView = _uiGrid_core.default.View.inherit({\r\n    _endUpdateCore: function() {\r\n        if (this.component._requireResize) {\r\n            this.component._requireResize = false;\r\n            this._resizingController.resize()\r\n        }\r\n    },\r\n    _getWidgetAriaLabel: function() {\r\n        return \"dxDataGrid-ariaDataGrid\"\r\n    },\r\n    init: function() {\r\n        var that = this;\r\n        that._resizingController = that.getController(\"resizing\");\r\n        that._dataController = that.getController(\"data\")\r\n    },\r\n    getView: function(name) {\r\n        return this.component._views[name]\r\n    },\r\n    element: function() {\r\n        return this._groupElement\r\n    },\r\n    optionChanged: function(args) {\r\n        var that = this;\r\n        if ((0, _type.isDefined)(that._groupElement) && \"showBorders\" === args.name) {\r\n            that._groupElement.toggleClass(that.addWidgetPrefix(BORDERS_CLASS), !!args.value);\r\n            args.handled = true\r\n        } else {\r\n            that.callBase(args)\r\n        }\r\n    },\r\n    _renderViews: function($groupElement) {\r\n        var that = this;\r\n        (0, _iterator.each)(VIEW_NAMES, function(index, viewName) {\r\n            var view = that.getView(viewName);\r\n            if (view) {\r\n                view.render($groupElement)\r\n            }\r\n        })\r\n    },\r\n    _getTableRoleName: function() {\r\n        return \"grid\"\r\n    },\r\n    render: function($rootElement) {\r\n        var that = this;\r\n        var isFirstRender = !that._groupElement;\r\n        var $groupElement = that._groupElement || (0, _renderer.default)(\"<div>\").addClass(that.getWidgetContainerClass());\r\n        $groupElement.addClass(GRIDBASE_CONTAINER_CLASS);\r\n        $groupElement.toggleClass(that.addWidgetPrefix(BORDERS_CLASS), !!that.option(\"showBorders\"));\r\n        that.setAria(\"role\", \"presentation\", $rootElement);\r\n        that.component.setAria({\r\n            role: this._getTableRoleName(),\r\n            label: _message.default.format(that._getWidgetAriaLabel())\r\n        }, $groupElement);\r\n        that._rootElement = $rootElement || that._rootElement;\r\n        if (isFirstRender) {\r\n            that._groupElement = $groupElement;\r\n            (0, _window.hasWindow)() && that.getController(\"resizing\").updateSize($rootElement);\r\n            $groupElement.appendTo($rootElement)\r\n        }\r\n        that._renderViews($groupElement)\r\n    },\r\n    update: function() {\r\n        var that = this;\r\n        var $rootElement = that._rootElement;\r\n        var $groupElement = that._groupElement;\r\n        var resizingController = that.getController(\"resizing\");\r\n        if ($rootElement && $groupElement) {\r\n            resizingController.resize();\r\n            if (that._dataController.isLoaded()) {\r\n                that._resizingController.fireContentReadyAction()\r\n            }\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            showBorders: false,\r\n            renderAsync: false,\r\n            legacyRendering: false\r\n        }\r\n    },\r\n    controllers: {\r\n        resizing: ResizingController,\r\n        synchronizeScrolling: SynchronizeScrollingController\r\n    },\r\n    views: {\r\n        gridView: GridView\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointments.strategy.base\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DEFAULT_APPOINTMENT_HEIGHT = 60;\r\nvar MIN_APPOINTMENT_HEIGHT = 35;\r\nvar DROP_DOWN_BUTTON_OFFSET = 2;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar HorizontalRenderingStrategy = function(_BaseAppointmentsStra) {\r\n    _inherits(HorizontalRenderingStrategy, _BaseAppointmentsStra);\r\n    var _super = _createSuper(HorizontalRenderingStrategy);\r\n\r\n    function HorizontalRenderingStrategy() {\r\n        _classCallCheck(this, HorizontalRenderingStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(HorizontalRenderingStrategy, [{\r\n        key: \"_needVerifyItemSize\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"calculateAppointmentWidth\",\r\n        value: function(appointment, position) {\r\n            var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n            var allDay = this.instance.fire(\"getField\", \"allDay\", appointment);\r\n            var startDate = position.info.appointment.startDate;\r\n            var endDate = this.normalizeEndDateByViewEnd(appointment, position.info.appointment.endDate);\r\n            var appointmentDuration = this._getAppointmentDurationInMs(startDate, endDate, allDay);\r\n            appointmentDuration = this._adjustDurationByDaylightDiff(appointmentDuration, startDate, endDate);\r\n            var cellDuration = this.instance.getAppointmentDurationInMinutes() * toMs(\"minute\");\r\n            var durationInCells = appointmentDuration / cellDuration;\r\n            var width = this.cropAppointmentWidth(durationInCells * cellWidth, cellWidth);\r\n            return width\r\n        }\r\n    }, {\r\n        key: \"_needAdjustDuration\",\r\n        value: function(diff) {\r\n            return diff < 0\r\n        }\r\n    }, {\r\n        key: \"getAppointmentGeometry\",\r\n        value: function(coordinates) {\r\n            var result = this._customizeAppointmentGeometry(coordinates);\r\n            return _get(_getPrototypeOf(HorizontalRenderingStrategy.prototype), \"getAppointmentGeometry\", this).call(this, result)\r\n        }\r\n    }, {\r\n        key: \"_customizeAppointmentGeometry\",\r\n        value: function(coordinates) {\r\n            var config = this._calculateGeometryConfig(coordinates);\r\n            return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset)\r\n        }\r\n    }, {\r\n        key: \"_getOffsets\",\r\n        value: function() {\r\n            return {\r\n                unlimited: 0,\r\n                auto: 0\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getCompactLeftCoordinate\",\r\n        value: function(itemLeft, index) {\r\n            var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n            return itemLeft + cellWidth * index\r\n        }\r\n    }, {\r\n        key: \"_getMaxHeight\",\r\n        value: function() {\r\n            return this.getDefaultCellHeight() || this.getAppointmentMinSize()\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentCount\",\r\n        value: function(overlappingMode, coordinates) {\r\n            return this._getMaxAppointmentCountPerCellByType(false)\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentDefaultHeight\",\r\n        value: function() {\r\n            return DEFAULT_APPOINTMENT_HEIGHT\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentMinHeight\",\r\n        value: function() {\r\n            return MIN_APPOINTMENT_HEIGHT\r\n        }\r\n    }, {\r\n        key: \"_sortCondition\",\r\n        value: function(a, b) {\r\n            return this._columnCondition(a, b)\r\n        }\r\n    }, {\r\n        key: \"_getOrientation\",\r\n        value: function() {\r\n            return [\"left\", \"right\", \"top\"]\r\n        }\r\n    }, {\r\n        key: \"_getMaxAppointmentWidth\",\r\n        value: function(startDate) {\r\n            return this.instance.fire(\"getMaxAppointmentWidth\", {\r\n                date: startDate\r\n            })\r\n        }\r\n    }, {\r\n        key: \"getDropDownAppointmentWidth\",\r\n        value: function() {\r\n            return this.getDefaultCellWidth() - 2 * DROP_DOWN_BUTTON_OFFSET\r\n        }\r\n    }, {\r\n        key: \"getDeltaTime\",\r\n        value: function(args, initialSize) {\r\n            var deltaTime = 0;\r\n            var deltaWidth = args.width - initialSize.width;\r\n            deltaTime = toMs(\"minute\") * Math.round(deltaWidth / this.getDefaultCellWidth() * this.instance.getAppointmentDurationInMinutes());\r\n            return deltaTime\r\n        }\r\n    }, {\r\n        key: \"isAllDay\",\r\n        value: function(appointmentData) {\r\n            return this.instance.fire(\"getField\", \"allDay\", appointmentData)\r\n        }\r\n    }, {\r\n        key: \"needSeparateAppointment\",\r\n        value: function() {\r\n            return this.instance.fire(\"isGroupedByDate\")\r\n        }\r\n    }]);\r\n    return HorizontalRenderingStrategy\r\n}(_uiSchedulerAppointmentsStrategy.default);\r\nvar _default = HorizontalRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/layout.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.LayoutControl = LayoutControl;\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _round = Math.round;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _each = _iterator.each;\r\nvar _inArray = _array.inArray;\r\nvar horizontalAlignmentMap = {\r\n    left: 0,\r\n    center: 1,\r\n    right: 2\r\n};\r\nvar verticalAlignmentMap = {\r\n    top: 0,\r\n    bottom: 1\r\n};\r\n\r\nfunction getCellIndex(options) {\r\n    return 3 * verticalAlignmentMap[options.verticalAlignment] + horizontalAlignmentMap[options.horizontalAlignment]\r\n}\r\n\r\nfunction createCells(canvas, items) {\r\n    var hStep = (canvas.right - canvas.left) / 3;\r\n    var vStep = (canvas.bottom - canvas.top) / 2;\r\n    var h1 = canvas.left;\r\n    var h2 = _round(h1 + hStep);\r\n    var h3 = _round(h1 + hStep + hStep);\r\n    var h4 = canvas.right;\r\n    var v1 = canvas.top;\r\n    var v2 = _round(v1 + vStep);\r\n    var v3 = canvas.bottom;\r\n    var cells = [{\r\n        rect: [h1, v1, h2, v2]\r\n    }, {\r\n        rect: [h2, v1, h3, v2],\r\n        center: true\r\n    }, {\r\n        rect: [h3, v1, h4, v2],\r\n        horInversion: true\r\n    }, {\r\n        rect: [h1, v2, h2, v3],\r\n        verInversion: true\r\n    }, {\r\n        rect: [h2, v2, h3, v3],\r\n        center: true,\r\n        verInversion: true\r\n    }, {\r\n        rect: [h3, v2, h4, v3],\r\n        horInversion: true,\r\n        verInversion: true\r\n    }];\r\n    var itemsList = [\r\n        [],\r\n        [],\r\n        [],\r\n        [],\r\n        [],\r\n        []\r\n    ];\r\n    _each(items, function(_, item) {\r\n        var options = item.getLayoutOptions();\r\n        if (options) {\r\n            itemsList[getCellIndex(options)].push({\r\n                item: item,\r\n                width: options.width,\r\n                height: options.height\r\n            })\r\n        }\r\n    });\r\n    _each(cells, function(i, cell) {\r\n        if (itemsList[i].length) {\r\n            cell.items = itemsList[i]\r\n        } else {\r\n            if (cell.center) {\r\n                cell.rect[0] = cell.rect[2] = (cell.rect[0] + cell.rect[2]) / 2\r\n            } else {\r\n                cell.rect[cell.horInversion ? 0 : 2] = cell.rect[cell.horInversion ? 2 : 0]\r\n            }\r\n            cell.rect[cell.verInversion ? 1 : 3] = cell.rect[cell.verInversion ? 3 : 1]\r\n        }\r\n    });\r\n    return cells\r\n}\r\n\r\nfunction adjustCellSizes(cells) {\r\n    _each([0, 1, 2, 3, 4, 5], function(_, index) {\r\n        var cell = cells[index];\r\n        var otherCell = cells[(index + 3) % 6];\r\n        if (cell.items) {\r\n            if (!otherCell.items) {\r\n                cell.rect[1] = _min(cell.rect[1], otherCell.rect[3]);\r\n                cell.rect[3] = _max(cell.rect[3], otherCell.rect[1])\r\n            }\r\n        }\r\n    });\r\n    _each([1, 4], function(_, index) {\r\n        var cell = cells[index];\r\n        var otherCell1 = cells[index - 1];\r\n        var otherCell2 = cells[index + 1];\r\n        var size1;\r\n        var size2;\r\n        if (cell.items) {\r\n            if (!otherCell1.items && !otherCell2.items) {\r\n                size1 = cell.rect[0] - otherCell1.rect[2];\r\n                size2 = otherCell2.rect[0] - cell.rect[2];\r\n                if (size1 > size2) {\r\n                    if (size1 / size2 >= 2) {\r\n                        cell.rect[0] -= size1;\r\n                        cell.right = true\r\n                    } else {\r\n                        cell.rect[0] -= size2;\r\n                        cell.rect[2] += size2\r\n                    }\r\n                } else {\r\n                    if (size2 / size1 >= 2) {\r\n                        cell.rect[2] += size2;\r\n                        cell.center = null\r\n                    } else {\r\n                        cell.rect[0] -= size1;\r\n                        cell.rect[2] += size1\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            if (otherCell1.items) {\r\n                otherCell1.rect[2] = (cell.rect[0] + cell.rect[2]) / 2\r\n            }\r\n            if (otherCell2.items) {\r\n                otherCell2.rect[0] = (cell.rect[0] + cell.rect[2]) / 2\r\n            }\r\n        }\r\n    })\r\n}\r\n\r\nfunction adjustCellsAndApplyLayout(cells, forceMode) {\r\n    var hasHiddenItems = false;\r\n    adjustCellSizes(cells);\r\n    _each(cells, function(_, cell) {\r\n        if (cell.items) {\r\n            hasHiddenItems = applyCellLayout(cell, forceMode) || hasHiddenItems\r\n        }\r\n    });\r\n    return hasHiddenItems\r\n}\r\n\r\nfunction applyCellLayout(cell, forceMode) {\r\n    var cellRect = cell.rect;\r\n    var cellWidth = cellRect[2] - cellRect[0];\r\n    var cellHeight = cellRect[3] - cellRect[1];\r\n    var xOffset = 0;\r\n    var yOffset = 0;\r\n    var currentHeight = 0;\r\n    var totalL = cellRect[2];\r\n    var totalT = cellRect[3];\r\n    var totalR = cellRect[0];\r\n    var totalB = cellRect[1];\r\n    var moves = [];\r\n    var hasHiddenItems = false;\r\n    _each(cell.items, function(_, item) {\r\n        if (item.width > cellWidth || item.height > cellHeight) {\r\n            moves.push(null);\r\n            hasHiddenItems = true;\r\n            return forceMode || false\r\n        }\r\n        if (xOffset + item.width > cellWidth) {\r\n            yOffset += currentHeight;\r\n            xOffset = currentHeight = 0\r\n        }\r\n        if (yOffset + item.height > cellHeight) {\r\n            moves.push(null);\r\n            hasHiddenItems = true;\r\n            return forceMode || false\r\n        }\r\n        currentHeight = _max(currentHeight, item.height);\r\n        var dx = cell.horInversion ? cellRect[2] - item.width - xOffset : cellRect[0] + xOffset;\r\n        var dy = cell.verInversion ? cellRect[3] - item.height - yOffset : cellRect[1] + yOffset;\r\n        xOffset += item.width;\r\n        totalL = _min(totalL, dx);\r\n        totalT = _min(totalT, dy);\r\n        totalR = _max(totalR, dx + item.width);\r\n        totalB = _max(totalB, dy + item.height);\r\n        moves.push([dx, dy])\r\n    });\r\n    if (forceMode || !hasHiddenItems) {\r\n        xOffset = 0;\r\n        if (cell.right) {\r\n            xOffset = cellRect[2] - cellRect[0] - totalR + totalL\r\n        } else {\r\n            if (cell.center) {\r\n                xOffset = _round((cellRect[2] - cellRect[0] - totalR + totalL) / 2)\r\n            }\r\n        }\r\n        _each(cell.items, function(i, item) {\r\n            var move = moves[i];\r\n            if (move) {\r\n                item.item.locate(move[0] + xOffset, move[1])\r\n            } else {\r\n                item.item.resize(null)\r\n            }\r\n        });\r\n        cell.rect = [totalL, totalT, totalR, totalB];\r\n        cell.items = null\r\n    }\r\n    return hasHiddenItems\r\n}\r\n\r\nfunction applyLayout(canvas, items) {\r\n    var cells = createCells(canvas, items);\r\n    if (adjustCellsAndApplyLayout(cells)) {\r\n        adjustCellsAndApplyLayout(cells, true)\r\n    }\r\n}\r\n\r\nfunction LayoutControl(widget) {\r\n    var that = this;\r\n    that._items = [];\r\n    that._suspended = 0;\r\n    that._widget = widget;\r\n    that._updateLayout = function() {\r\n        that._update()\r\n    }\r\n}\r\nLayoutControl.prototype = {\r\n    constructor: LayoutControl,\r\n    dispose: function() {\r\n        this._items = this._updateLayout = null\r\n    },\r\n    setSize: function(canvas) {\r\n        this._canvas = canvas;\r\n        this._update()\r\n    },\r\n    suspend: function() {\r\n        ++this._suspended\r\n    },\r\n    resume: function() {\r\n        if (0 === --this._suspended) {\r\n            this._update()\r\n        }\r\n    },\r\n    addItem: function(item) {\r\n        this._items.push(item);\r\n        item.updateLayout = this._updateLayout\r\n    },\r\n    removeItem: function(item) {\r\n        this._items.splice(_inArray(item, this._items), 1);\r\n        item.updateLayout = null\r\n    },\r\n    _update: function() {\r\n        var canvas;\r\n        if (0 === this._suspended) {\r\n            canvas = this._canvas;\r\n            _each(this._items, function(_, item) {\r\n                item.resize(canvas)\r\n            });\r\n            this._widget.resolveItemsDeferred(this._items.filter(function(el) {\r\n                return el.getTemplatesGroups && el.getTemplatesDef\r\n            }));\r\n            applyLayout({\r\n                left: canvas.left,\r\n                top: canvas.top,\r\n                right: canvas.width + canvas.left,\r\n                bottom: canvas.height + canvas.top\r\n            }, this._items)\r\n        }\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (events/gesture/swipeable.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _swipe = require(\"../swipe\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _index = require(\"../utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _public_component = require(\"../../core/utils/public_component\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DX_SWIPEABLE = \"dxSwipeable\";\r\nvar SWIPEABLE_CLASS = \"dx-swipeable\";\r\nvar ACTION_TO_EVENT_MAP = {\r\n    onStart: _swipe.start,\r\n    onUpdated: _swipe.swipe,\r\n    onEnd: _swipe.end,\r\n    onCancel: \"dxswipecancel\"\r\n};\r\nvar Swipeable = _dom_component.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            elastic: true,\r\n            immediate: false,\r\n            direction: \"horizontal\",\r\n            itemSizeFunc: null,\r\n            onStart: null,\r\n            onUpdated: null,\r\n            onEnd: null,\r\n            onCancel: null\r\n        })\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this.$element().addClass(SWIPEABLE_CLASS);\r\n        this._attachEventHandlers()\r\n    },\r\n    _attachEventHandlers: function() {\r\n        this._detachEventHandlers();\r\n        if (this.option(\"disabled\")) {\r\n            return\r\n        }\r\n        var NAME = this.NAME;\r\n        this._createEventData();\r\n        (0, _iterator.each)(ACTION_TO_EVENT_MAP, function(actionName, eventName) {\r\n            var action = this._createActionByOption(actionName, {\r\n                context: this\r\n            });\r\n            eventName = (0, _index.addNamespace)(eventName, NAME);\r\n            _events_engine.default.on(this.$element(), eventName, this._eventData, function(e) {\r\n                return action({\r\n                    event: e\r\n                })\r\n            })\r\n        }.bind(this))\r\n    },\r\n    _createEventData: function() {\r\n        this._eventData = {\r\n            elastic: this.option(\"elastic\"),\r\n            itemSizeFunc: this.option(\"itemSizeFunc\"),\r\n            direction: this.option(\"direction\"),\r\n            immediate: this.option(\"immediate\")\r\n        }\r\n    },\r\n    _detachEventHandlers: function() {\r\n        _events_engine.default.off(this.$element(), \".\" + DX_SWIPEABLE)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"disabled\":\r\n            case \"onStart\":\r\n            case \"onUpdated\":\r\n            case \"onEnd\":\r\n            case \"onCancel\":\r\n            case \"elastic\":\r\n            case \"immediate\":\r\n            case \"itemSizeFunc\":\r\n            case \"direction\":\r\n                this._detachEventHandlers();\r\n                this._attachEventHandlers();\r\n                break;\r\n            case \"rtlEnabled\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _useTemplates: function() {\r\n        return false\r\n    }\r\n});\r\n(0, _public_component.name)(Swipeable, DX_SWIPEABLE);\r\nvar _default = Swipeable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/label.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Label = Label;\r\nvar _format_helper = _interopRequireDefault(require(\"../../../format_helper\"));\r\nvar _utils = require(\"../../core/utils\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _format = _format_helper.default.format;\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _abs = _math.abs;\r\nvar CONNECTOR_LENGTH = 12;\r\nvar LABEL_BACKGROUND_PADDING_X = 8;\r\nvar LABEL_BACKGROUND_PADDING_Y = 4;\r\n\r\nfunction getClosestCoord(point, coords) {\r\n    var closestDistance = 1 / 0;\r\n    var closestCoord;\r\n    (0, _iterator.each)(coords, function(_, coord) {\r\n        var x = point[0] - coord[0];\r\n        var y = point[1] - coord[1];\r\n        var distance = x * x + y * y;\r\n        if (distance < closestDistance) {\r\n            closestDistance = distance;\r\n            closestCoord = coord\r\n        }\r\n    });\r\n    return [_floor(closestCoord[0]), _floor(closestCoord[1])]\r\n}\r\n\r\nfunction getCrossCoord(rect, coord, indexOffset) {\r\n    return (coord - rect[0 + indexOffset]) / (rect[2 + indexOffset] - rect[0 + indexOffset]) * (rect[3 - indexOffset] - rect[1 - indexOffset]) + rect[1 - indexOffset]\r\n}\r\nvar barPointStrategy = {\r\n    isLabelInside: function(labelPoint, figure) {\r\n        var xc = labelPoint.x + labelPoint.width / 2;\r\n        var yc = labelPoint.y + labelPoint.height / 2;\r\n        return figure.x <= xc && xc <= figure.x + figure.width && figure.y <= yc && yc <= figure.y + figure.height\r\n    },\r\n    prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle, figureCenter) {\r\n        var x1 = rotatedBBox.x;\r\n        var xc = x1 + rotatedBBox.width / 2;\r\n        var x2 = x1 + rotatedBBox.width - 1;\r\n        var y1 = rotatedBBox.y;\r\n        var yc = y1 + rotatedBBox.height / 2;\r\n        var y2 = y1 + rotatedBBox.height - 1;\r\n        var labelPoints;\r\n        var isRectangular = _abs(angle) % 90 === 0;\r\n        if (figureCenter[0] > x1 && figureCenter[0] < x2) {\r\n            if (isRectangular) {\r\n                labelPoints = [\r\n                    [figureCenter[0], _abs(figureCenter[1] - y1) < _abs(figureCenter[1] - y2) ? y1 : y2]\r\n                ]\r\n            } else {\r\n                labelPoints = [\r\n                    [figureCenter[0], getCrossCoord([x1, y1, x2, y2], figureCenter[0], 0)]\r\n                ]\r\n            }\r\n        } else {\r\n            if (figureCenter[1] > y1 && figureCenter[1] < y2) {\r\n                if (isRectangular) {\r\n                    labelPoints = [\r\n                        [_abs(figureCenter[0] - x1) < _abs(figureCenter[0] - x2) ? x1 : x2, figureCenter[1]]\r\n                    ]\r\n                } else {\r\n                    labelPoints = [\r\n                        [getCrossCoord([x1, y1, x2, y2], figureCenter[1], 1), figureCenter[1]]\r\n                    ]\r\n                }\r\n            } else {\r\n                if (isRectangular) {\r\n                    labelPoints = [\r\n                        [x1, y1],\r\n                        [isHorizontal ? x1 : xc, isHorizontal ? yc : y1],\r\n                        [x2, y1],\r\n                        [x1, y2],\r\n                        [isHorizontal ? x2 : xc, isHorizontal ? yc : y2],\r\n                        [x2, y2]\r\n                    ]\r\n                } else {\r\n                    labelPoints = [\r\n                        [xc, yc]\r\n                    ]\r\n                }\r\n            }\r\n        }\r\n        return labelPoints\r\n    },\r\n    isHorizontal: function(bBox, figure) {\r\n        return bBox.x > figure.x + figure.width || bBox.x + bBox.width < figure.x\r\n    },\r\n    getFigureCenter: function(figure) {\r\n        return [_floor(figure.x + figure.width / 2), _floor(figure.y + figure.height / 2)]\r\n    },\r\n    findFigurePoint: function(figure, labelPoint) {\r\n        var figureCenter = barPointStrategy.getFigureCenter(figure);\r\n        var point = getClosestCoord(labelPoint, [\r\n            [figure.x, figureCenter[1]],\r\n            [figureCenter[0], figure.y + figure.height],\r\n            [figure.x + figure.width, figureCenter[1]],\r\n            [figureCenter[0], figure.y]\r\n        ]);\r\n        return point\r\n    },\r\n    adjustPoints: function(points) {\r\n        var lineIsVertical = _abs(points[1] - points[3]) <= 1;\r\n        var lineIsHorizontal = _abs(points[0] - points[2]) <= 1;\r\n        if (lineIsHorizontal) {\r\n            points[0] = points[2]\r\n        }\r\n        if (lineIsVertical) {\r\n            points[1] = points[3]\r\n        }\r\n        return points\r\n    }\r\n};\r\nvar symbolPointStrategy = {\r\n    isLabelInside: function() {\r\n        return false\r\n    },\r\n    prepareLabelPoints: barPointStrategy.prepareLabelPoints,\r\n    isHorizontal: function(bBox, figure) {\r\n        return bBox.x > figure.x + figure.r || bBox.x + bBox.width < figure.x - figure.r\r\n    },\r\n    getFigureCenter: function(figure) {\r\n        return [figure.x, figure.y]\r\n    },\r\n    findFigurePoint: function(figure, labelPoint) {\r\n        var angle = Math.atan2(figure.y - labelPoint[1], labelPoint[0] - figure.x);\r\n        return [_round(figure.x + figure.r * Math.cos(angle)), _round(figure.y - figure.r * Math.sin(angle))]\r\n    },\r\n    adjustPoints: barPointStrategy.adjustPoints\r\n};\r\nvar piePointStrategy = {\r\n    isLabelInside: function(_0, _1, isOutside) {\r\n        return !isOutside\r\n    },\r\n    prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle) {\r\n        var xl = bBox.x;\r\n        var xr = xl + bBox.width;\r\n        var xc = xl + _round(bBox.width / 2);\r\n        var yt = bBox.y;\r\n        var yb = yt + bBox.height;\r\n        var yc = yt + _round(bBox.height / 2);\r\n        var points = [\r\n            [\r\n                [xl, yt],\r\n                [xr, yt]\r\n            ],\r\n            [\r\n                [xr, yt],\r\n                [xr, yb]\r\n            ],\r\n            [\r\n                [xr, yb],\r\n                [xl, yb]\r\n            ],\r\n            [\r\n                [xl, yb],\r\n                [xl, yt]\r\n            ]\r\n        ];\r\n        var cosSin = (0, _utils.getCosAndSin)(angle);\r\n        if (0 === angle) {\r\n            points = isHorizontal ? [\r\n                [xl, yc],\r\n                [xr, yc]\r\n            ] : [\r\n                [xc, yt],\r\n                [xc, yb]\r\n            ]\r\n        } else {\r\n            points = points.map(function(pair) {\r\n                return pair.map(function(point) {\r\n                    return [_round((point[0] - xc) * cosSin.cos + (point[1] - yc) * cosSin.sin + xc), _round(-(point[0] - xc) * cosSin.sin + (point[1] - yc) * cosSin.cos + yc)]\r\n                })\r\n            }).reduce(function(r, pair) {\r\n                var point1x = pair[0][0];\r\n                var point1y = pair[0][1];\r\n                var point2x = pair[1][0];\r\n                var point2y = pair[1][1];\r\n                if (isHorizontal) {\r\n                    if (point1y >= yc && yc >= point2y || point1y <= yc && yc <= point2y) {\r\n                        r.push([(yc - point1y) * (point2x - point1x) / (point2y - point1y) + point1x, yc])\r\n                    }\r\n                } else {\r\n                    if (point1x >= xc && xc >= point2x || point1x <= xc && xc <= point2x) {\r\n                        r.push([xc, (xc - point1x) * (point2y - point1y) / (point2x - point1x) + point1y])\r\n                    }\r\n                }\r\n                return r\r\n            }, [])\r\n        }\r\n        return points\r\n    },\r\n    isHorizontal: function(bBox, figure) {\r\n        return bBox.x > figure.x || figure.x > bBox.x + bBox.width\r\n    },\r\n    getFigureCenter: symbolPointStrategy.getFigureCenter,\r\n    findFigurePoint: function(figure, labelPoint, isHorizontal) {\r\n        if (!isHorizontal) {\r\n            return [figure.x, figure.y]\r\n        }\r\n        var labelX = labelPoint[0];\r\n        var x = _round(figure.x + (figure.y - labelPoint[1]) / Math.tan((0, _utils.degreesToRadians)(figure.angle)));\r\n        var points = [figure.x, figure.y, x, labelPoint[1]];\r\n        if (!(figure.x <= x && x <= labelX) && !(labelX <= x && x <= figure.x)) {\r\n            if (_abs(figure.x - labelX) < CONNECTOR_LENGTH) {\r\n                points = [figure.x, figure.y]\r\n            } else {\r\n                if (figure.x <= labelX) {\r\n                    points[2] = figure.x + CONNECTOR_LENGTH\r\n                } else {\r\n                    points[2] = figure.x - CONNECTOR_LENGTH\r\n                }\r\n            }\r\n        }\r\n        return points\r\n    },\r\n    adjustPoints: function(points) {\r\n        return points\r\n    }\r\n};\r\n\r\nfunction selectStrategy(figure) {\r\n    return void 0 !== figure.angle && piePointStrategy || void 0 !== figure.r && symbolPointStrategy || barPointStrategy\r\n}\r\n\r\nfunction disposeItem(obj, field) {\r\n    obj[field] && obj[field].dispose();\r\n    obj[field] = null\r\n}\r\n\r\nfunction checkBackground(background) {\r\n    return background && (background.fill && \"none\" !== background.fill || background[\"stroke-width\"] > 0 && background.stroke && \"none\" !== background.stroke)\r\n}\r\n\r\nfunction checkConnector(connector) {\r\n    return connector && connector[\"stroke-width\"] > 0 && connector.stroke && \"none\" !== connector.stroke\r\n}\r\n\r\nfunction formatText(data, options) {\r\n    var format = options.format;\r\n    data.valueText = _format(data.value, format);\r\n    data.argumentText = _format(data.argument, options.argumentFormat);\r\n    if (void 0 !== data.percent) {\r\n        data.percentText = _format(data.percent, {\r\n            type: \"percent\",\r\n            precision: format && format.percentPrecision\r\n        })\r\n    }\r\n    if (void 0 !== data.total) {\r\n        data.totalText = _format(data.total, format)\r\n    }\r\n    if (void 0 !== data.openValue) {\r\n        data.openValueText = _format(data.openValue, format)\r\n    }\r\n    if (void 0 !== data.closeValue) {\r\n        data.closeValueText = _format(data.closeValue, format)\r\n    }\r\n    if (void 0 !== data.lowValue) {\r\n        data.lowValueText = _format(data.lowValue, format)\r\n    }\r\n    if (void 0 !== data.highValue) {\r\n        data.highValueText = _format(data.highValue, format)\r\n    }\r\n    if (void 0 !== data.reductionValue) {\r\n        data.reductionValueText = _format(data.reductionValue, format)\r\n    }\r\n    return options.customizeText ? options.customizeText.call(data, data) : data.valueText\r\n}\r\n\r\nfunction Label(renderSettings) {\r\n    this._renderer = renderSettings.renderer;\r\n    this._container = renderSettings.labelsGroup;\r\n    this._point = renderSettings.point;\r\n    this._strategy = renderSettings.strategy;\r\n    this._rowCount = 1\r\n}\r\nLabel.prototype = {\r\n    constructor: Label,\r\n    setColor: function(color) {\r\n        this._color = color\r\n    },\r\n    setOptions: function(options) {\r\n        this._options = options\r\n    },\r\n    setData: function(data) {\r\n        this._data = data\r\n    },\r\n    setDataField: function(fieldName, fieldValue) {\r\n        this._data = this._data || {};\r\n        this._data[fieldName] = fieldValue\r\n    },\r\n    getData: function() {\r\n        return this._data\r\n    },\r\n    setFigureToDrawConnector: function(figure) {\r\n        this._figure = figure\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        disposeItem(that, \"_group\");\r\n        that._data = that._options = that._textContent = that._visible = that._insideGroup = that._text = that._background = that._connector = that._figure = null\r\n    },\r\n    _setVisibility: function(value, state) {\r\n        this._group && this._group.attr({\r\n            visibility: value\r\n        });\r\n        this._visible = state\r\n    },\r\n    isVisible: function() {\r\n        return this._visible\r\n    },\r\n    hide: function(holdInvisible) {\r\n        this._holdVisibility = !!holdInvisible;\r\n        this._hide()\r\n    },\r\n    _hide: function() {\r\n        this._setVisibility(\"hidden\", false)\r\n    },\r\n    show: function(holdVisible) {\r\n        var correctPosition = !this._drawn;\r\n        if (this._point.hasValue()) {\r\n            this._holdVisibility = !!holdVisible;\r\n            this._show();\r\n            correctPosition && this._point.correctLabelPosition(this)\r\n        }\r\n    },\r\n    _show: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var container = that._container;\r\n        var options = that._options || {};\r\n        var text = that._textContent = formatText(that._data, that._options) || null;\r\n        if (text) {\r\n            if (!that._group) {\r\n                that._group = renderer.g().append(container);\r\n                that._insideGroup = renderer.g().append(that._group);\r\n                that._text = renderer.text(\"\", 0, 0).append(that._insideGroup)\r\n            }\r\n            that._text.css(options.attributes ? (0, _utils.patchFontOptions)(options.attributes.font) : {});\r\n            if (checkBackground(options.background)) {\r\n                that._background = that._background || renderer.rect().append(that._insideGroup).toBackground();\r\n                that._background.attr(options.background);\r\n                that._color && that._background.attr({\r\n                    fill: that._color\r\n                })\r\n            } else {\r\n                disposeItem(that, \"_background\")\r\n            }\r\n            if (checkConnector(options.connector)) {\r\n                that._connector = that._connector || renderer.path([], \"line\").sharp().append(that._group).toBackground();\r\n                that._connector.attr(options.connector);\r\n                that._color && that._connector.attr({\r\n                    stroke: that._color\r\n                })\r\n            } else {\r\n                disposeItem(that, \"_connector\")\r\n            }\r\n            that._text.attr({\r\n                text: text,\r\n                align: options.textAlignment,\r\n                \"class\": options.cssClass\r\n            });\r\n            that._updateBackground(that._text.getBBox());\r\n            that._setVisibility(\"visible\", true);\r\n            that._drawn = true\r\n        } else {\r\n            that._hide()\r\n        }\r\n    },\r\n    _getLabelVisibility: function(isVisible) {\r\n        return this._holdVisibility ? this.isVisible() : isVisible\r\n    },\r\n    draw: function(isVisible) {\r\n        if (this._getLabelVisibility(isVisible)) {\r\n            this._show();\r\n            this._point && this._point.correctLabelPosition(this)\r\n        } else {\r\n            this._drawn = false;\r\n            this._hide()\r\n        }\r\n        return this\r\n    },\r\n    _updateBackground: function(bBox) {\r\n        var that = this;\r\n        if (that._background) {\r\n            bBox.x -= LABEL_BACKGROUND_PADDING_X;\r\n            bBox.y -= LABEL_BACKGROUND_PADDING_Y;\r\n            bBox.width += 2 * LABEL_BACKGROUND_PADDING_X;\r\n            bBox.height += 2 * LABEL_BACKGROUND_PADDING_Y;\r\n            that._background.attr(bBox)\r\n        }\r\n        that._bBoxWithoutRotation = (0, _extend.extend)({}, bBox);\r\n        var rotationAngle = that._options.rotationAngle || 0;\r\n        that._insideGroup.rotate(rotationAngle, bBox.x + bBox.width / 2, bBox.y + bBox.height / 2);\r\n        bBox = (0, _utils.rotateBBox)(bBox, [bBox.x + bBox.width / 2, bBox.y + bBox.height / 2], -rotationAngle);\r\n        that._bBox = bBox\r\n    },\r\n    getFigureCenter: function() {\r\n        var figure = this._figure;\r\n        var strategy = this._strategy || selectStrategy(figure);\r\n        return strategy.getFigureCenter(figure)\r\n    },\r\n    _getConnectorPoints: function() {\r\n        var that = this;\r\n        var figure = that._figure;\r\n        var options = that._options;\r\n        var strategy = that._strategy || selectStrategy(figure);\r\n        var bBox = that._shiftBBox(that._bBoxWithoutRotation);\r\n        var rotatedBBox = that.getBoundingRect();\r\n        var labelPoint;\r\n        var points = [];\r\n        var isHorizontal;\r\n        if (!strategy.isLabelInside(bBox, figure, \"inside\" !== options.position)) {\r\n            isHorizontal = strategy.isHorizontal(bBox, figure);\r\n            var figureCenter = that.getFigureCenter();\r\n            points = strategy.prepareLabelPoints(bBox, rotatedBBox, isHorizontal, -options.rotationAngle || 0, figureCenter);\r\n            labelPoint = getClosestCoord(figureCenter, points);\r\n            points = strategy.findFigurePoint(figure, labelPoint, isHorizontal);\r\n            points = points.concat(labelPoint)\r\n        }\r\n        return strategy.adjustPoints(points)\r\n    },\r\n    fit: function(maxWidth) {\r\n        var padding = this._background ? 2 * LABEL_BACKGROUND_PADDING_X : 0;\r\n        var rowCountChanged = false;\r\n        if (this._text) {\r\n            var result = this._text.setMaxSize(maxWidth - padding, void 0, this._options);\r\n            var rowCount = result.rowCount;\r\n            if (0 === rowCount) {\r\n                rowCount = 1\r\n            }\r\n            if (rowCount !== this._rowCount) {\r\n                rowCountChanged = true;\r\n                this._rowCount = rowCount\r\n            }\r\n            result.textIsEmpty && disposeItem(this, \"_background\")\r\n        }\r\n        this._updateBackground(this._text.getBBox());\r\n        return rowCountChanged\r\n    },\r\n    resetEllipsis: function() {\r\n        this._text && this._text.restoreText();\r\n        this._updateBackground(this._text.getBBox())\r\n    },\r\n    setTrackerData: function(point) {\r\n        this._text.data({\r\n            \"chart-data-point\": point\r\n        });\r\n        this._background && this._background.data({\r\n            \"chart-data-point\": point\r\n        })\r\n    },\r\n    hideInsideLabel: function(coords) {\r\n        return this._point.hideInsideLabel(this, coords)\r\n    },\r\n    getPoint: function() {\r\n        return this._point\r\n    },\r\n    shift: function(x, y) {\r\n        var that = this;\r\n        if (that._textContent) {\r\n            that._insideGroup.attr({\r\n                translateX: that._x = _round(x - that._bBox.x),\r\n                translateY: that._y = _round(y - that._bBox.y)\r\n            });\r\n            if (that._connector) {\r\n                that._connector.attr({\r\n                    points: that._getConnectorPoints()\r\n                })\r\n            }\r\n        }\r\n        return that\r\n    },\r\n    getBoundingRect: function() {\r\n        return this._shiftBBox(this._bBox)\r\n    },\r\n    _shiftBBox: function(bBox) {\r\n        return this._textContent ? {\r\n            x: bBox.x + this._x,\r\n            y: bBox.y + this._y,\r\n            width: bBox.width,\r\n            height: bBox.height\r\n        } : {}\r\n    },\r\n    getLayoutOptions: function() {\r\n        var options = this._options;\r\n        return {\r\n            alignment: options.alignment,\r\n            background: checkBackground(options.background),\r\n            horizontalOffset: options.horizontalOffset,\r\n            verticalOffset: options.verticalOffset,\r\n            radialOffset: options.radialOffset,\r\n            position: options.position,\r\n            connectorOffset: (checkConnector(options.connector) ? CONNECTOR_LENGTH : 0) + (checkBackground(options.background) ? LABEL_BACKGROUND_PADDING_X : 0)\r\n        }\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/editor/ui.data_expression.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar DataExpressionMixin = (0, _extend.extend)({}, _data_helper.default, {\r\n    _dataExpressionDefaultOptions: function() {\r\n        return {\r\n            items: [],\r\n            dataSource: null,\r\n            itemTemplate: \"item\",\r\n            value: null,\r\n            valueExpr: \"this\",\r\n            displayExpr: void 0\r\n        }\r\n    },\r\n    _initDataExpressions: function() {\r\n        this._compileValueGetter();\r\n        this._compileDisplayGetter();\r\n        this._initDynamicTemplates();\r\n        this._initDataSource();\r\n        this._itemsToDataSource()\r\n    },\r\n    _itemsToDataSource: function() {\r\n        if (!this.option(\"dataSource\")) {\r\n            this._dataSource = new _data_source.DataSource({\r\n                store: new _array_store.default(this.option(\"items\")),\r\n                pageSize: 0\r\n            })\r\n        }\r\n    },\r\n    _compileDisplayGetter: function() {\r\n        this._displayGetter = (0, _data.compileGetter)(this._displayGetterExpr())\r\n    },\r\n    _displayGetterExpr: function() {\r\n        return this.option(\"displayExpr\")\r\n    },\r\n    _compileValueGetter: function() {\r\n        this._valueGetter = (0, _data.compileGetter)(this._valueGetterExpr())\r\n    },\r\n    _valueGetterExpr: function() {\r\n        return this.option(\"valueExpr\") || \"this\"\r\n    },\r\n    _loadValue: function(value) {\r\n        var deferred = new _deferred.Deferred;\r\n        value = this._unwrappedValue(value);\r\n        if (!(0, _type.isDefined)(value)) {\r\n            return deferred.reject().promise()\r\n        }\r\n        this._loadSingle(this._valueGetterExpr(), value).done(function(item) {\r\n            this._isValueEquals(this._valueGetter(item), value) ? deferred.resolve(item) : deferred.reject()\r\n        }.bind(this)).fail(function() {\r\n            deferred.reject()\r\n        });\r\n        return deferred.promise()\r\n    },\r\n    _getCurrentValue: function() {\r\n        return this.option(\"value\")\r\n    },\r\n    _unwrappedValue: function(value) {\r\n        value = (0, _type.isDefined)(value) ? value : this._getCurrentValue();\r\n        if (value && this._dataSource && \"this\" === this._valueGetterExpr()) {\r\n            value = this._getItemKey(value)\r\n        }\r\n        return _variable_wrapper.default.unwrap(value)\r\n    },\r\n    _getItemKey: function(value) {\r\n        var key = this._dataSource.key();\r\n        if (Array.isArray(key)) {\r\n            var result = {};\r\n            for (var i = 0, n = key.length; i < n; i++) {\r\n                result[key[i]] = value[key[i]]\r\n            }\r\n            return result\r\n        }\r\n        if (key && \"object\" === _typeof(value)) {\r\n            value = value[key]\r\n        }\r\n        return value\r\n    },\r\n    _isValueEquals: function(value1, value2) {\r\n        var dataSourceKey = this._dataSource && this._dataSource.key();\r\n        var result = this._compareValues(value1, value2);\r\n        if (!result && dataSourceKey && (0, _type.isDefined)(value1) && (0, _type.isDefined)(value2)) {\r\n            if (Array.isArray(dataSourceKey)) {\r\n                result = this._compareByCompositeKey(value1, value2, dataSourceKey)\r\n            } else {\r\n                result = this._compareByKey(value1, value2, dataSourceKey)\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _compareByCompositeKey: function(value1, value2, key) {\r\n        var isObject = _type.isObject;\r\n        if (!isObject(value1) || !isObject(value2)) {\r\n            return false\r\n        }\r\n        for (var i = 0, n = key.length; i < n; i++) {\r\n            if (value1[key[i]] !== value2[key[i]]) {\r\n                return false\r\n            }\r\n        }\r\n        return true\r\n    },\r\n    _compareByKey: function(value1, value2, key) {\r\n        var unwrapObservable = _variable_wrapper.default.unwrap;\r\n        var valueKey1 = (0, _common.ensureDefined)(unwrapObservable(value1[key]), value1);\r\n        var valueKey2 = (0, _common.ensureDefined)(unwrapObservable(value2[key]), value2);\r\n        return this._compareValues(valueKey1, valueKey2)\r\n    },\r\n    _compareValues: function(value1, value2) {\r\n        return (0, _data.toComparable)(value1, true) === (0, _data.toComparable)(value2, true)\r\n    },\r\n    _initDynamicTemplates: _common.noop,\r\n    _setCollectionWidgetItemTemplate: function() {\r\n        this._initDynamicTemplates();\r\n        this._setCollectionWidgetOption(\"itemTemplate\", this.option(\"itemTemplate\"))\r\n    },\r\n    _getCollectionKeyExpr: function() {\r\n        var valueExpr = this.option(\"valueExpr\");\r\n        var isValueExprField = (0, _type.isString)(valueExpr) && \"this\" !== valueExpr || (0, _type.isFunction)(valueExpr);\r\n        return isValueExprField ? valueExpr : null\r\n    },\r\n    _dataExpressionOptionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"items\":\r\n                this._itemsToDataSource();\r\n                this._setCollectionWidgetOption(\"items\");\r\n                break;\r\n            case \"dataSource\":\r\n                this._initDataSource();\r\n                break;\r\n            case \"itemTemplate\":\r\n                this._setCollectionWidgetItemTemplate();\r\n                break;\r\n            case \"valueExpr\":\r\n                this._compileValueGetter();\r\n                break;\r\n            case \"displayExpr\":\r\n                this._compileDisplayGetter();\r\n                this._initDynamicTemplates();\r\n                this._setCollectionWidgetOption(\"displayExpr\")\r\n        }\r\n    }\r\n});\r\nvar _default = DataExpressionMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/queue.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.create = createQueue;\r\nexports.enqueue = void 0;\r\nvar _errors = _interopRequireDefault(require(\"../errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction createQueue(discardPendingTasks) {\r\n    var _tasks = [];\r\n    var _busy = false;\r\n\r\n    function exec() {\r\n        while (_tasks.length) {\r\n            _busy = true;\r\n            var task = _tasks.shift();\r\n            var result = task();\r\n            if (void 0 === result) {\r\n                continue\r\n            }\r\n            if (result.then) {\r\n                (0, _deferred.when)(result).always(exec);\r\n                return\r\n            }\r\n            throw _errors.default.Error(\"E0015\")\r\n        }\r\n        _busy = false\r\n    }\r\n\r\n    function add(task, removeTaskCallback) {\r\n        if (!discardPendingTasks) {\r\n            _tasks.push(task)\r\n        } else {\r\n            if (_tasks[0] && removeTaskCallback) {\r\n                removeTaskCallback(_tasks[0])\r\n            }\r\n            _tasks = [task]\r\n        }\r\n        if (!_busy) {\r\n            exec()\r\n        }\r\n    }\r\n\r\n    function busy() {\r\n        return _busy\r\n    }\r\n    return {\r\n        add: add,\r\n        busy: busy\r\n    }\r\n}\r\nvar enqueue = createQueue().add;\r\nexports.enqueue = enqueue;\r\n","/**\r\n * DevExtreme (core/templates/function_template.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.FunctionTemplate = void 0;\r\nvar _template_base = require(\"./template_base\");\r\nvar _dom = require(\"../utils/dom\");\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar FunctionTemplate = function(_TemplateBase) {\r\n    _inherits(FunctionTemplate, _TemplateBase);\r\n    var _super = _createSuper(FunctionTemplate);\r\n\r\n    function FunctionTemplate(render) {\r\n        var _this;\r\n        _classCallCheck(this, FunctionTemplate);\r\n        _this = _super.call(this);\r\n        _this._render = render;\r\n        return _this\r\n    }\r\n    _createClass(FunctionTemplate, [{\r\n        key: \"_renderCore\",\r\n        value: function(options) {\r\n            return (0, _dom.normalizeTemplateElement)(this._render(options))\r\n        }\r\n    }]);\r\n    return FunctionTemplate\r\n}(_template_base.TemplateBase);\r\nexports.FunctionTemplate = FunctionTemplate;\r\n","/**\r\n * DevExtreme (ui/slider.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./slider/ui.slider\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/utils/dependency_injector.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = _default;\r\nvar _extend = require(\"./extend\");\r\nvar _type = require(\"./type\");\r\nvar _iterator = require(\"./iterator\");\r\nvar _class = _interopRequireDefault(require(\"../class\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _default(object) {\r\n    var BaseClass = _class.default.inherit(object);\r\n    var InjectedClass = BaseClass;\r\n    var instance = new InjectedClass(object);\r\n    var initialFields = {};\r\n    var injectFields = function(injectionObject, initial) {\r\n        (0, _iterator.each)(injectionObject, function(key) {\r\n            if ((0, _type.isFunction)(instance[key])) {\r\n                if (initial || !object[key]) {\r\n                    object[key] = function() {\r\n                        return instance[key].apply(object, arguments)\r\n                    }\r\n                }\r\n            } else {\r\n                if (initial) {\r\n                    initialFields[key] = object[key]\r\n                }\r\n                object[key] = instance[key]\r\n            }\r\n        })\r\n    };\r\n    injectFields(object, true);\r\n    object.inject = function(injectionObject) {\r\n        InjectedClass = InjectedClass.inherit(injectionObject);\r\n        instance = new InjectedClass;\r\n        injectFields(injectionObject)\r\n    };\r\n    object.resetInjection = function() {\r\n        (0, _extend.extend)(object, initialFields);\r\n        InjectedClass = BaseClass;\r\n        instance = new BaseClass\r\n    };\r\n    return object\r\n}\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/color_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _color_box = _interopRequireDefault(require(\"./color_box/color_box\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _color_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/scheduler/shaders/ui.scheduler.current_time_shader.vertical.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"../shaders/ui.scheduler.current_time_shader\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DATE_TIME_SHADER_ALL_DAY_CLASS = \"dx-scheduler-date-time-shader-all-day\";\r\nvar DATE_TIME_SHADER_TOP_CLASS = \"dx-scheduler-date-time-shader-top\";\r\nvar DATE_TIME_SHADER_BOTTOM_CLASS = \"dx-scheduler-date-time-shader-bottom\";\r\nvar VerticalCurrentTimeShader = function(_CurrentTimeShader) {\r\n    _inherits(VerticalCurrentTimeShader, _CurrentTimeShader);\r\n    var _super = _createSuper(VerticalCurrentTimeShader);\r\n\r\n    function VerticalCurrentTimeShader() {\r\n        _classCallCheck(this, VerticalCurrentTimeShader);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(VerticalCurrentTimeShader, [{\r\n        key: \"renderShader\",\r\n        value: function() {\r\n            var shaderHeight = this._getShaderHeight();\r\n            var maxHeight = this._getShaderMaxHeight();\r\n            var isSolidShader = shaderHeight > maxHeight;\r\n            if (shaderHeight > maxHeight) {\r\n                shaderHeight = maxHeight\r\n            }\r\n            this._$shader.height(shaderHeight);\r\n            var groupCount = this._workSpace._getGroupCount() || 1;\r\n            if (this._workSpace.isGroupedByDate()) {\r\n                this._renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader)\r\n            } else {\r\n                this._renderShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderShaderParts\",\r\n        value: function(groupCount, shaderHeight, maxHeight, isSolidShader) {\r\n            for (var i = 0; i < groupCount; i++) {\r\n                var shaderWidth = this._getShaderWidth(i);\r\n                this._renderTopShader(this._$shader, shaderHeight, shaderWidth, i);\r\n                !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, shaderWidth, i);\r\n                this._renderAllDayShader(shaderWidth, i)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderGroupedByDateShaderParts\",\r\n        value: function(groupCount, shaderHeight, maxHeight, isSolidShader) {\r\n            var shaderWidth = this._getShaderWidth(0);\r\n            var bottomShaderWidth = shaderWidth - this._workSpace.getCellWidth();\r\n            if (shaderHeight < 0) {\r\n                shaderHeight = 0;\r\n                bottomShaderWidth = shaderWidth\r\n            }\r\n            this._renderTopShader(this._$shader, shaderHeight, shaderWidth * groupCount, 0);\r\n            !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, bottomShaderWidth * groupCount + this._workSpace.getCellWidth(), 0);\r\n            this._renderAllDayShader(shaderWidth * groupCount, 0)\r\n        }\r\n    }, {\r\n        key: \"_renderTopShader\",\r\n        value: function($shader, height, width, i) {\r\n            this._$topShader = (0, _renderer.default)(\"<div>\").addClass(DATE_TIME_SHADER_TOP_CLASS);\r\n            width && this._$topShader.width(width) && this._$topShader.height(height);\r\n            this._$topShader.css(\"marginTop\", this._getShaderTopOffset(i));\r\n            this._$topShader.css(\"left\", this._getShaderOffset(i, width));\r\n            $shader.append(this._$topShader)\r\n        }\r\n    }, {\r\n        key: \"_renderBottomShader\",\r\n        value: function($shader, maxHeight, height, width, i) {\r\n            this._$bottomShader = (0, _renderer.default)(\"<div>\").addClass(DATE_TIME_SHADER_BOTTOM_CLASS);\r\n            var shaderWidth = height < 0 ? width : width - this._workSpace.getCellWidth();\r\n            var shaderHeight = height < 0 ? maxHeight : maxHeight - height;\r\n            this._$bottomShader.width(shaderWidth) && this._$bottomShader.height(shaderHeight);\r\n            this._$bottomShader.css(\"left\", this._getShaderOffset(i, width - this._workSpace.getCellWidth()));\r\n            $shader.append(this._$bottomShader)\r\n        }\r\n    }, {\r\n        key: \"_renderAllDayShader\",\r\n        value: function(shaderWidth, i) {\r\n            if (this._workSpace.option(\"showAllDayPanel\")) {\r\n                this._$allDayIndicator = (0, _renderer.default)(\"<div>\").addClass(DATE_TIME_SHADER_ALL_DAY_CLASS);\r\n                this._$allDayIndicator.height(this._workSpace.getAllDayHeight());\r\n                this._$allDayIndicator.width(shaderWidth);\r\n                this._$allDayIndicator.css(\"left\", this._getShaderOffset(i, shaderWidth));\r\n                this._workSpace._$allDayPanel.prepend(this._$allDayIndicator)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getShaderOffset\",\r\n        value: function(i, width) {\r\n            return this._workSpace.getGroupedStrategy().getShaderOffset(i, width)\r\n        }\r\n    }, {\r\n        key: \"_getShaderTopOffset\",\r\n        value: function(i) {\r\n            return this._workSpace.getGroupedStrategy().getShaderTopOffset(i)\r\n        }\r\n    }, {\r\n        key: \"_getShaderHeight\",\r\n        value: function(i, width) {\r\n            return this._workSpace.getGroupedStrategy().getShaderHeight()\r\n        }\r\n    }, {\r\n        key: \"_getShaderMaxHeight\",\r\n        value: function(i, width) {\r\n            return this._workSpace.getGroupedStrategy().getShaderMaxHeight()\r\n        }\r\n    }, {\r\n        key: \"_getShaderWidth\",\r\n        value: function(i) {\r\n            return this._workSpace.getGroupedStrategy().getShaderWidth(i)\r\n        }\r\n    }, {\r\n        key: \"clean\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(VerticalCurrentTimeShader.prototype), \"clean\", this).call(this);\r\n            this._workSpace && this._workSpace._$allDayPanel && this._workSpace._$allDayPanel.find(\".\" + DATE_TIME_SHADER_ALL_DAY_CLASS).remove()\r\n        }\r\n    }]);\r\n    return VerticalCurrentTimeShader\r\n}(_uiScheduler.default);\r\nvar _default = VerticalCurrentTimeShader;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (bundles/modules/ui.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nrequire(\"./core\");\r\nmodule.exports = DevExpress.ui = {};\r\n","/**\r\n * DevExtreme (viz/series/range_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.chart = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _area_series = require(\"./area_series\");\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar _extend = _extend2.extend;\r\nvar barSeries = _bar_series.chart.bar;\r\nvar areaSeries = _area_series.chart.area;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar baseRangeSeries = {\r\n    areErrorBarsVisible: _common.noop,\r\n    _createErrorBarGroup: _common.noop,\r\n    _checkData: function(data, skippedFields) {\r\n        var valueFields = this.getValueFields();\r\n        return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n            minValue: valueFields[0],\r\n            value: valueFields[1]\r\n        }) && data.minValue === data.minValue\r\n    },\r\n    getValueRangeInitialValue: _scatter_series.chart.getValueRangeInitialValue,\r\n    _getPointDataSelector: function(data) {\r\n        var _this = this;\r\n        var valueFields = this.getValueFields();\r\n        var val1Field = valueFields[0];\r\n        var val2Field = valueFields[1];\r\n        var tagField = this.getTagField();\r\n        var argumentField = this.getArgumentField();\r\n        return function(data) {\r\n            return {\r\n                tag: data[tagField],\r\n                minValue: _this._processEmptyValue(data[val1Field]),\r\n                value: _this._processEmptyValue(data[val2Field]),\r\n                argument: data[argumentField],\r\n                data: data\r\n            }\r\n        }\r\n    },\r\n    _defaultAggregator: \"range\",\r\n    _aggregators: {\r\n        range: function(_ref, series) {\r\n            var _data$reduce;\r\n            var intervalStart = _ref.intervalStart,\r\n                data = _ref.data;\r\n            if (!data.length) {\r\n                return\r\n            }\r\n            var valueFields = series.getValueFields();\r\n            var val1Field = valueFields[0];\r\n            var val2Field = valueFields[1];\r\n            var result = data.reduce(function(result, item) {\r\n                var val1 = item[val1Field];\r\n                var val2 = item[val2Field];\r\n                if (!(0, _type.isDefined)(val1) || !(0, _type.isDefined)(val2)) {\r\n                    return result\r\n                }\r\n                result[val1Field] = Math.min(result[val1Field], Math.min(val1, val2));\r\n                result[val2Field] = Math.max(result[val2Field], Math.max(val1, val2));\r\n                return result\r\n            }, (_data$reduce = {}, _defineProperty(_data$reduce, val1Field, 1 / 0), _defineProperty(_data$reduce, val2Field, -(1 / 0)), _defineProperty(_data$reduce, series.getArgumentField(), intervalStart), _data$reduce));\r\n            if (!isFinite(result[val1Field]) || !isFinite(result[val2Field])) {\r\n                if (data.filter(function(i) {\r\n                        return null === i[val1Field] && null === i[val2Field]\r\n                    }).length === data.length) {\r\n                    result[val1Field] = result[val2Field] = null\r\n                } else {\r\n                    return\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    },\r\n    getValueFields: function() {\r\n        return [this._options.rangeValue1Field || \"val1\", this._options.rangeValue2Field || \"val2\"]\r\n    },\r\n    getSeriesPairCoord: function(coord, isArgument) {\r\n        var oppositeCoord = null;\r\n        var rotated = this._options.rotated;\r\n        var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n        var coordName = isOpposite ? \"vy\" : \"vx\";\r\n        var minCoordName = rotated ? \"minX\" : \"minY\";\r\n        var oppositeCoordName = isOpposite ? \"vx\" : \"vy\";\r\n        var points = this.getPoints();\r\n        for (var i = 0; i < points.length; i++) {\r\n            var p = points[i];\r\n            var tmpCoord = void 0;\r\n            if (isArgument) {\r\n                tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0\r\n            } else {\r\n                var coords = [Math.min(p[coordName], p[minCoordName]), Math.max(p[coordName], p[minCoordName])];\r\n                tmpCoord = coord >= coords[0] && coord <= coords[1] ? p[oppositeCoordName] : void 0\r\n            }\r\n            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n                oppositeCoord = tmpCoord;\r\n                break\r\n            }\r\n        }\r\n        return oppositeCoord\r\n    }\r\n};\r\nchart.rangebar = _extend({}, barSeries, baseRangeSeries);\r\nchart.rangearea = _extend({}, areaSeries, {\r\n    _drawPoint: function(options) {\r\n        var point = options.point;\r\n        if (point.isInVisibleArea()) {\r\n            point.clearVisibility();\r\n            point.draw(this._renderer, options.groups);\r\n            this._drawnPoints.push(point);\r\n            if (!point.visibleTopMarker) {\r\n                point.hideMarker(\"top\")\r\n            }\r\n            if (!point.visibleBottomMarker) {\r\n                point.hideMarker(\"bottom\")\r\n            }\r\n        } else {\r\n            point.setInvisibility()\r\n        }\r\n    },\r\n    _prepareSegment: function(points, rotated) {\r\n        var processedPoints = this._processSinglePointsAreaSegment(points, rotated);\r\n        var processedMinPointsCoords = (0, _utils.map)(processedPoints, function(pt) {\r\n            return pt.getCoords(true)\r\n        });\r\n        return {\r\n            line: processedPoints,\r\n            bottomLine: processedMinPointsCoords,\r\n            area: (0, _utils.map)(processedPoints, function(pt) {\r\n                return pt.getCoords()\r\n            }).concat(processedMinPointsCoords.slice().reverse()),\r\n            singlePointSegment: processedPoints !== points\r\n        }\r\n    },\r\n    _getDefaultSegment: function(segment) {\r\n        var defaultSegment = areaSeries._getDefaultSegment.call(this, segment);\r\n        defaultSegment.bottomLine = defaultSegment.line;\r\n        return defaultSegment\r\n    },\r\n    _removeElement: function(element) {\r\n        areaSeries._removeElement.call(this, element);\r\n        element.bottomLine && element.bottomLine.remove()\r\n    },\r\n    _drawElement: function(segment, group) {\r\n        var that = this;\r\n        var drawnElement = areaSeries._drawElement.call(that, segment, group);\r\n        drawnElement.bottomLine = that._bordersGroup && that._createBorderElement(segment.bottomLine, {\r\n            \"stroke-width\": that._styles.normal.border[\"stroke-width\"]\r\n        }).append(that._bordersGroup);\r\n        return drawnElement\r\n    },\r\n    _applyStyle: function(style) {\r\n        var that = this;\r\n        var elementsGroup = that._elementsGroup;\r\n        var bordersGroup = that._bordersGroup;\r\n        elementsGroup && elementsGroup.smartAttr(style.elements);\r\n        bordersGroup && bordersGroup.attr(style.border);\r\n        (that._graphics || []).forEach(function(graphic) {\r\n            graphic.line && graphic.line.attr({\r\n                \"stroke-width\": style.border[\"stroke-width\"]\r\n            });\r\n            graphic.bottomLine && graphic.bottomLine.attr({\r\n                \"stroke-width\": style.border[\"stroke-width\"]\r\n            })\r\n        })\r\n    },\r\n    _updateElement: function(element, segment, animate, complete) {\r\n        var bottomLineParams = {\r\n            points: segment.bottomLine\r\n        };\r\n        var bottomBorderElement = element.bottomLine;\r\n        areaSeries._updateElement.apply(this, arguments);\r\n        if (bottomBorderElement) {\r\n            animate ? bottomBorderElement.animate(bottomLineParams) : bottomBorderElement.attr(bottomLineParams)\r\n        }\r\n    }\r\n}, baseRangeSeries);\r\n","/**\r\n * DevExtreme (viz/chart_components/tracker.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.PieTracker = exports.ChartTracker = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _consts = _interopRequireDefault(require(\"../components/consts\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _floor = Math.floor;\r\nvar eventsConsts = _consts.default.events;\r\nvar statesConsts = _consts.default.states;\r\nvar HOVER_STATE = statesConsts.hoverMark;\r\nvar NORMAL_STATE = statesConsts.normalMark;\r\nvar EVENT_NS = \"dxChartTracker\";\r\nvar DOT_EVENT_NS = \".\" + EVENT_NS;\r\nvar POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);\r\nvar LEGEND_CLICK = \"legendClick\";\r\nvar SERIES_CLICK = \"seriesClick\";\r\nvar POINT_CLICK = \"pointClick\";\r\nvar POINT_DATA = \"chart-data-point\";\r\nvar SERIES_DATA = \"chart-data-series\";\r\nvar ARG_DATA = \"chart-data-argument\";\r\nvar DELAY = 100;\r\nvar HOLD_TIMEOUT = 300;\r\nvar NONE_MODE = \"none\";\r\nvar ALL_ARGUMENT_POINTS_MODE = \"allargumentpoints\";\r\nvar INCLUDE_POINTS_MODE = \"includepoints\";\r\nvar EXLUDE_POINTS_MODE = \"excludepoints\";\r\nvar LEGEND_HOVER_MODES = [INCLUDE_POINTS_MODE, EXLUDE_POINTS_MODE, NONE_MODE];\r\n\r\nfunction getData(event, dataKey, tryCheckParent) {\r\n    var target = event.target;\r\n    if (\"tspan\" === target.tagName) {\r\n        return target.parentNode[dataKey]\r\n    }\r\n    var data = target[dataKey];\r\n    if (tryCheckParent && !(0, _type.isDefined)(data)) {\r\n        var getParentData = function getParentData(node) {\r\n            if (node.parentNode) {\r\n                if ((0, _type.isDefined)(node.parentNode[dataKey])) {\r\n                    return node.parentNode[dataKey]\r\n                } else {\r\n                    return getParentData(node.parentNode)\r\n                }\r\n            }\r\n            return\r\n        };\r\n        return getParentData(target)\r\n    }\r\n    return data\r\n}\r\n\r\nfunction eventCanceled(event, target) {\r\n    return event.cancel || !target.getOptions()\r\n}\r\n\r\nfunction correctLegendHoverMode(mode) {\r\n    if (LEGEND_HOVER_MODES.indexOf(mode) > -1) {\r\n        return mode\r\n    } else {\r\n        return INCLUDE_POINTS_MODE\r\n    }\r\n}\r\n\r\nfunction correctHoverMode(target) {\r\n    var mode = target.getOptions().hoverMode;\r\n    return mode === NONE_MODE ? mode : ALL_ARGUMENT_POINTS_MODE\r\n}\r\nvar baseTrackerPrototype = {\r\n    ctor: function(options) {\r\n        var that = this;\r\n        var data = {\r\n            tracker: that\r\n        };\r\n        that._renderer = options.renderer;\r\n        that._legend = options.legend;\r\n        that._tooltip = options.tooltip;\r\n        that._eventTrigger = options.eventTrigger;\r\n        that._seriesGroup = options.seriesGroup;\r\n        options.seriesGroup.off(DOT_EVENT_NS).on((0, _index.addNamespace)(eventsConsts.showPointTooltip, EVENT_NS), data, that._showPointTooltip).on((0, _index.addNamespace)(eventsConsts.hidePointTooltip, EVENT_NS), data, that._hidePointTooltip);\r\n        that._renderer.root.off(DOT_EVENT_NS).on(POINTER_ACTION, data, that._pointerHandler).on((0, _index.addNamespace)(_pointer.default.up, EVENT_NS), function() {\r\n            return clearTimeout(that._holdTimer)\r\n        }).on((0, _index.addNamespace)(_click.name, EVENT_NS), data, that._clickHandler)\r\n    },\r\n    update: function(options) {\r\n        this._chart = options.chart\r\n    },\r\n    updateSeries: function(series, resetDecorations) {\r\n        var that = this;\r\n        var noHoveredSeries = !(null !== series && void 0 !== series && series.some(function(s) {\r\n            return s === that.hoveredSeries\r\n        }) || that._hoveredPoint && that._hoveredPoint.series);\r\n        if (that._storedSeries !== series) {\r\n            that._storedSeries = series || []\r\n        }\r\n        if (noHoveredSeries) {\r\n            that._clean();\r\n            that._renderer.initHatching()\r\n        }\r\n        if (resetDecorations) {\r\n            that.clearSelection();\r\n            if (!noHoveredSeries) {\r\n                that._hideTooltip(that.pointAtShownTooltip);\r\n                that.clearHover()\r\n            }\r\n        }\r\n    },\r\n    setCanvases: function(mainCanvas, paneCanvases) {\r\n        this._mainCanvas = mainCanvas;\r\n        this._canvases = paneCanvases\r\n    },\r\n    repairTooltip: function() {\r\n        var point = this.pointAtShownTooltip;\r\n        if (!point || !point.series || !point.isVisible()) {\r\n            this._hideTooltip(point, true)\r\n        } else {\r\n            this._showTooltip(point)\r\n        }\r\n    },\r\n    _setHoveredPoint: function(point) {\r\n        if (point === this._hoveredPoint) {\r\n            return\r\n        }\r\n        this._releaseHoveredPoint();\r\n        point.hover();\r\n        this._hoveredPoint = point\r\n    },\r\n    _releaseHoveredPoint: function() {\r\n        if (this._hoveredPoint && this._hoveredPoint.getOptions()) {\r\n            this._hoveredPoint.clearHover();\r\n            this._hoveredPoint = null;\r\n            if (this._tooltip.isEnabled()) {\r\n                this._hideTooltip(this._hoveredPoint)\r\n            }\r\n        }\r\n    },\r\n    _setHoveredSeries: function(series, mode) {\r\n        this._releaseHoveredSeries();\r\n        this._releaseHoveredPoint();\r\n        series.hover(mode);\r\n        this.hoveredSeries = series\r\n    },\r\n    _releaseHoveredSeries: function() {\r\n        if (this.hoveredSeries) {\r\n            this.hoveredSeries.clearHover();\r\n            this.hoveredSeries = null\r\n        }\r\n    },\r\n    clearSelection: function() {\r\n        this._storedSeries.forEach(function(series) {\r\n            if (series) {\r\n                series.clearSelection();\r\n                series.getPoints().forEach(function(point) {\r\n                    return point.clearSelection()\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _clean: function() {\r\n        var that = this;\r\n        that.hoveredPoint = that.hoveredSeries = that._hoveredArgumentPoints = null;\r\n        that._hideTooltip(that.pointAtShownTooltip)\r\n    },\r\n    clearHover: function() {\r\n        this._resetHoveredArgument();\r\n        this._releaseHoveredSeries();\r\n        this._releaseHoveredPoint()\r\n    },\r\n    _hideTooltip: function(point, silent) {\r\n        var that = this;\r\n        if (!that._tooltip || point && that.pointAtShownTooltip !== point) {\r\n            return\r\n        }\r\n        if (!silent && that.pointAtShownTooltip) {\r\n            that.pointAtShownTooltip = null\r\n        }\r\n        that._tooltip.hide()\r\n    },\r\n    _showTooltip: function(point) {\r\n        var that = this;\r\n        var tooltipFormatObject;\r\n        var eventData = {\r\n            target: point\r\n        };\r\n        if (null !== point && void 0 !== point && point.getOptions()) {\r\n            tooltipFormatObject = point.getTooltipFormatObject(that._tooltip, that._tooltip.isShared() && that._chart.getStackedPoints(point));\r\n            if (!(0, _type.isDefined)(tooltipFormatObject.valueText) && !tooltipFormatObject.points || !point.isVisible()) {\r\n                return\r\n            }\r\n            var coords = point.getTooltipParams(that._tooltip.getLocation());\r\n            var rootOffset = that._renderer.getRootOffset();\r\n            coords.x += rootOffset.left;\r\n            coords.y += rootOffset.top;\r\n            var callback = function(result) {\r\n                result && (that.pointAtShownTooltip = point)\r\n            };\r\n            callback(that._tooltip.show(tooltipFormatObject, coords, eventData, void 0, callback))\r\n        }\r\n    },\r\n    _showPointTooltip: function(event, point) {\r\n        var that = event.data.tracker;\r\n        var pointWithTooltip = that.pointAtShownTooltip;\r\n        if (pointWithTooltip && pointWithTooltip !== point) {\r\n            that._hideTooltip(pointWithTooltip)\r\n        }\r\n        that._showTooltip(point)\r\n    },\r\n    _hidePointTooltip: function(event, point) {\r\n        event.data.tracker._hideTooltip(point)\r\n    },\r\n    _enableOutHandler: function() {\r\n        if (this._outHandler) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var handler = function(e) {\r\n            var rootOffset = that._renderer.getRootOffset();\r\n            var x = _floor(e.pageX - rootOffset.left);\r\n            var y = _floor(e.pageY - rootOffset.top);\r\n            if (!(0, _utils.pointInCanvas)(that._mainCanvas, x, y) && !that._tooltip.isCursorOnTooltip(e.pageX, e.pageY)) {\r\n                that._pointerOut();\r\n                that._disableOutHandler()\r\n            }\r\n        };\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), POINTER_ACTION, handler);\r\n        this._outHandler = handler\r\n    },\r\n    _disableOutHandler: function() {\r\n        this._outHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), POINTER_ACTION, this._outHandler);\r\n        this._outHandler = null\r\n    },\r\n    stopCurrentHandling: function() {\r\n        this._pointerOut(true)\r\n    },\r\n    _pointerOut: function(force) {\r\n        this.clearHover();\r\n        (force || this._tooltip.isEnabled()) && this._hideTooltip(this.pointAtShownTooltip)\r\n    },\r\n    _triggerLegendClick: function(eventArgs, elementClick) {\r\n        var eventTrigger = this._eventTrigger;\r\n        eventTrigger(LEGEND_CLICK, eventArgs, function() {\r\n            !eventCanceled(eventArgs.event, eventArgs.target) && eventTrigger(elementClick, eventArgs)\r\n        })\r\n    },\r\n    _hoverLegendItem: function(x, y) {\r\n        var that = this;\r\n        var item = that._legend.getItemByCoord(x, y);\r\n        var series;\r\n        var legendHoverMode = correctLegendHoverMode(that._legend.getOptions().hoverMode);\r\n        if (item) {\r\n            series = that._storedSeries[item.id];\r\n            if (!series.isHovered() || series.lastHoverMode !== legendHoverMode) {\r\n                that._setHoveredSeries(series, legendHoverMode)\r\n            }\r\n            that._tooltip.isEnabled() && that._hideTooltip(that.pointAtShownTooltip)\r\n        } else {\r\n            that.clearHover()\r\n        }\r\n    },\r\n    _hoverArgument: function(argument, argumentIndex) {\r\n        var that = this;\r\n        var hoverMode = that._getArgumentHoverMode();\r\n        if ((0, _type.isDefined)(argument)) {\r\n            that._releaseHoveredPoint();\r\n            that._hoveredArgument = argument;\r\n            that._argumentIndex = argumentIndex;\r\n            that._notifySeries({\r\n                action: \"pointHover\",\r\n                notifyLegend: that._notifyLegendOnHoverArgument,\r\n                target: {\r\n                    argument: argument,\r\n                    fullState: HOVER_STATE,\r\n                    argumentIndex: argumentIndex,\r\n                    getOptions: function() {\r\n                        return {\r\n                            hoverMode: hoverMode\r\n                        }\r\n                    }\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _resetHoveredArgument: function() {\r\n        var that = this;\r\n        var hoverMode;\r\n        if ((0, _type.isDefined)(that._hoveredArgument)) {\r\n            hoverMode = that._getArgumentHoverMode();\r\n            that._notifySeries({\r\n                action: \"clearPointHover\",\r\n                notifyLegend: that._notifyLegendOnHoverArgument,\r\n                target: {\r\n                    fullState: NORMAL_STATE,\r\n                    argumentIndex: that._argumentIndex,\r\n                    argument: that._hoveredArgument,\r\n                    getOptions: function() {\r\n                        return {\r\n                            hoverMode: hoverMode\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n            that._hoveredArgument = null\r\n        }\r\n    },\r\n    _notifySeries: function(data) {\r\n        this._storedSeries.forEach(function(series) {\r\n            series.notify(data)\r\n        })\r\n    },\r\n    _pointerHandler: function(e) {\r\n        var _series;\r\n        var that = e.data.tracker;\r\n        var rootOffset = that._renderer.getRootOffset();\r\n        var x = _floor(e.pageX - rootOffset.left);\r\n        var y = _floor(e.pageY - rootOffset.top);\r\n        var canvas = that._getCanvas(x, y);\r\n        var series = getData(e, SERIES_DATA);\r\n        var point = getData(e, POINT_DATA) || (null === (_series = series) || void 0 === _series ? void 0 : _series.getPointByCoord(x, y));\r\n        that._isHolding = false;\r\n        clearTimeout(that._holdTimer);\r\n        if (e.type === _pointer.default.down) {\r\n            that._holdTimer = setTimeout(function() {\r\n                return that._isHolding = true\r\n            }, HOLD_TIMEOUT)\r\n        }\r\n        if (point && !point.getMarkerVisibility()) {\r\n            point = void 0\r\n        }\r\n        that._enableOutHandler();\r\n        if (that._legend.coordsIn(x, y)) {\r\n            that._hoverLegendItem(x, y);\r\n            return\r\n        }\r\n        if (that.hoveredSeries && that.hoveredSeries !== that._stuckSeries) {\r\n            that._releaseHoveredSeries()\r\n        }\r\n        if (that._hoverArgumentAxis(x, y, e)) {\r\n            return\r\n        }\r\n        if (that._isPointerOut(canvas, point)) {\r\n            that._pointerOut()\r\n        }\r\n        if (!canvas && !point) {\r\n            return\r\n        }\r\n        if (series && !point) {\r\n            point = series.getNeighborPoint(x, y);\r\n            if (!that._stickyHovering && point && !point.coordsIn(x, y)) {\r\n                point = null\r\n            }\r\n            if (series !== that.hoveredSeries) {\r\n                that._setTimeout(function() {\r\n                    that._setHoveredSeries(series);\r\n                    that._setStuckSeries(e, series, x, y);\r\n                    that._pointerComplete(point, x, y)\r\n                }, series);\r\n                return\r\n            }\r\n        } else {\r\n            if (point) {\r\n                if (e.type !== _pointer.default.move && \"touch\" !== e.pointerType) {\r\n                    return\r\n                }\r\n                if (that.hoveredSeries) {\r\n                    that._setTimeout(function() {\r\n                        return that._pointerOnPoint(point, x, y, e)\r\n                    }, point)\r\n                } else {\r\n                    that._pointerOnPoint(point, x, y, e)\r\n                }\r\n                return\r\n            } else {\r\n                if (that._setStuckSeries(e, void 0, x, y) && that._stickyHovering) {\r\n                    var _point;\r\n                    series = that._stuckSeries;\r\n                    point = series.getNeighborPoint(x, y);\r\n                    that._releaseHoveredSeries();\r\n                    (null === (_point = point) || void 0 === _point ? void 0 : _point.getMarkerVisibility()) && that._setHoveredPoint(point)\r\n                } else {\r\n                    if (!that._stickyHovering) {\r\n                        that._pointerOut()\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        that._pointerComplete(point, x, y)\r\n    },\r\n    _pointerOnPoint: function(point, x, y) {\r\n        this._resetHoveredArgument();\r\n        this._setHoveredPoint(point);\r\n        this._pointerComplete(point, x, y)\r\n    },\r\n    _pointerComplete: function(point) {\r\n        this.pointAtShownTooltip !== point && this._tooltip.isEnabled() && this._showTooltip(point)\r\n    },\r\n    _clickHandler: function(e) {\r\n        var _point2;\r\n        var that = e.data.tracker;\r\n        if (that._isHolding) {\r\n            return\r\n        }\r\n        var rootOffset = that._renderer.getRootOffset();\r\n        var x = _floor(e.pageX - rootOffset.left);\r\n        var y = _floor(e.pageY - rootOffset.top);\r\n        var point = getData(e, POINT_DATA);\r\n        var series = that._stuckSeries || getData(e, SERIES_DATA) || (null === (_point2 = point) || void 0 === _point2 ? void 0 : _point2.series);\r\n        var axis = that._argumentAxis;\r\n        if (that._legend.coordsIn(x, y)) {\r\n            var item = that._legend.getItemByCoord(x, y);\r\n            if (item) {\r\n                that._legendClick(item, e)\r\n            }\r\n        } else {\r\n            if (null !== axis && void 0 !== axis && axis.coordsIn(x, y)) {\r\n                var argument = getData(e, ARG_DATA, true);\r\n                if ((0, _type.isDefined)(argument)) {\r\n                    that._eventTrigger(\"argumentAxisClick\", {\r\n                        argument: argument,\r\n                        event: e\r\n                    })\r\n                }\r\n            } else {\r\n                if (series) {\r\n                    var _point3;\r\n                    point = point || series.getPointByCoord(x, y);\r\n                    if (null !== (_point3 = point) && void 0 !== _point3 && _point3.getMarkerVisibility()) {\r\n                        that._pointClick(point, e)\r\n                    } else {\r\n                        getData(e, SERIES_DATA) && that._eventTrigger(SERIES_CLICK, {\r\n                            target: series,\r\n                            event: e\r\n                        })\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        that._disableOutHandler();\r\n        that._renderer.root.off(DOT_EVENT_NS);\r\n        that._seriesGroup.off(DOT_EVENT_NS)\r\n    }\r\n};\r\nvar ChartTracker = function(options) {\r\n    this.ctor(options)\r\n};\r\nexports.ChartTracker = ChartTracker;\r\n(0, _extend.extend)(ChartTracker.prototype, baseTrackerPrototype, {\r\n    _pointClick: function(point, event) {\r\n        var that = this;\r\n        var eventTrigger = that._eventTrigger;\r\n        var series = point.series;\r\n        eventTrigger(POINT_CLICK, {\r\n            target: point,\r\n            event: event\r\n        }, function() {\r\n            !eventCanceled(event, series) && eventTrigger(SERIES_CLICK, {\r\n                target: series,\r\n                event: event\r\n            })\r\n        })\r\n    },\r\n    update: function(options) {\r\n        var that = this;\r\n        baseTrackerPrototype.update.call(this, options);\r\n        that._argumentAxis = options.argumentAxis || {};\r\n        that._axisHoverEnabled = that._argumentAxis && (0, _utils.normalizeEnum)(that._argumentAxis.getOptions().hoverMode) === ALL_ARGUMENT_POINTS_MODE;\r\n        that._rotated = options.rotated;\r\n        that._crosshair = options.crosshair;\r\n        that._stickyHovering = options.stickyHovering\r\n    },\r\n    _getCanvas: function(x, y) {\r\n        var that = this;\r\n        var canvases = that._canvases || [];\r\n        for (var i = 0; i < canvases.length; i++) {\r\n            var c = canvases[i];\r\n            if ((0, _utils.pointInCanvas)(c, x, y)) {\r\n                return c\r\n            }\r\n        }\r\n        return null\r\n    },\r\n    _isPointerOut: function(canvas) {\r\n        return !canvas && this._stuckSeries\r\n    },\r\n    _hideCrosshair: function() {\r\n        var _this$_crosshair;\r\n        null === (_this$_crosshair = this._crosshair) || void 0 === _this$_crosshair ? void 0 : _this$_crosshair.hide()\r\n    },\r\n    _moveCrosshair: function(point, x, y) {\r\n        if (this._crosshair && null !== point && void 0 !== point && point.isVisible()) {\r\n            this._crosshair.show({\r\n                point: point,\r\n                x: x,\r\n                y: y\r\n            })\r\n        }\r\n    },\r\n    _clean: function() {\r\n        var that = this;\r\n        baseTrackerPrototype._clean.call(that);\r\n        that._resetTimer();\r\n        that._stuckSeries = null\r\n    },\r\n    _getSeriesForShared: function(x, y) {\r\n        var _point4;\r\n        var that = this;\r\n        var points = [];\r\n        var point = null;\r\n        var distance = 1 / 0;\r\n        if (that._tooltip.isShared() && !that.hoveredSeries) {\r\n            (0, _iterator.each)(that._storedSeries, function(_, series) {\r\n                var point = series.getNeighborPoint(x, y);\r\n                point && points.push(point)\r\n            });\r\n            (0, _iterator.each)(points, function(_, p) {\r\n                var coords = p.getCrosshairData(x, y);\r\n                var d = (0, _utils.getDistance)(x, y, coords.x, coords.y);\r\n                if (d < distance) {\r\n                    point = p;\r\n                    distance = d\r\n                }\r\n            })\r\n        }\r\n        return null === (_point4 = point) || void 0 === _point4 ? void 0 : _point4.series\r\n    },\r\n    _setTimeout: function(callback, keeper) {\r\n        var that = this;\r\n        if (that._timeoutKeeper !== keeper) {\r\n            that._resetTimer();\r\n            that._hoverTimeout = setTimeout(function() {\r\n                callback();\r\n                that._timeoutKeeper = null\r\n            }, DELAY);\r\n            that._timeoutKeeper = keeper\r\n        }\r\n    },\r\n    _resetTimer: function() {\r\n        clearTimeout(this._hoverTimeout);\r\n        this._timeoutKeeper = this._hoverTimeout = null\r\n    },\r\n    _stopEvent: function(e) {\r\n        if (!(0, _type.isDefined)(e.cancelable) || e.cancelable) {\r\n            e.preventDefault();\r\n            e.stopPropagation()\r\n        }\r\n    },\r\n    _setStuckSeries: function(e, series, x, y) {\r\n        if (\"mouse\" !== e.pointerType) {\r\n            this._stuckSeries = null\r\n        } else {\r\n            this._stuckSeries = series || this._stuckSeries || this._getSeriesForShared(x, y)\r\n        }\r\n        return !!this._stuckSeries\r\n    },\r\n    _pointerOut: function() {\r\n        var that = this;\r\n        that._stuckSeries = null;\r\n        that._hideCrosshair();\r\n        that._resetTimer();\r\n        baseTrackerPrototype._pointerOut.apply(that, arguments)\r\n    },\r\n    _hoverArgumentAxis: function(x, y, e) {\r\n        var that = this;\r\n        that._resetHoveredArgument();\r\n        if (that._axisHoverEnabled && that._argumentAxis.coordsIn(x, y)) {\r\n            that._hoverArgument(getData(e, ARG_DATA, true));\r\n            return true\r\n        }\r\n    },\r\n    _pointerComplete: function(point, x, y) {\r\n        var that = this;\r\n        that.hoveredSeries && that.hoveredSeries.updateHover(x, y);\r\n        that._resetTimer();\r\n        that._moveCrosshair(point, x, y);\r\n        baseTrackerPrototype._pointerComplete.call(that, point)\r\n    },\r\n    _legendClick: function(item, e) {\r\n        var series = this._storedSeries[item.id];\r\n        this._triggerLegendClick({\r\n            target: series,\r\n            event: e\r\n        }, SERIES_CLICK)\r\n    },\r\n    _hoverLegendItem: function(x, y) {\r\n        this._stuckSeries = null;\r\n        this._hideCrosshair();\r\n        baseTrackerPrototype._hoverLegendItem.call(this, x, y)\r\n    },\r\n    _pointerOnPoint: function(point, x, y, e) {\r\n        this._setStuckSeries(e, point.series, x, y);\r\n        this._releaseHoveredSeries();\r\n        baseTrackerPrototype._pointerOnPoint.call(this, point, x, y, e)\r\n    },\r\n    _notifyLegendOnHoverArgument: false,\r\n    _getArgumentHoverMode: function() {\r\n        return correctHoverMode(this._argumentAxis)\r\n    },\r\n    dispose: function() {\r\n        this._resetTimer();\r\n        baseTrackerPrototype.dispose.call(this)\r\n    }\r\n});\r\nvar PieTracker = function(options) {\r\n    this.ctor(options)\r\n};\r\nexports.PieTracker = PieTracker;\r\n(0, _extend.extend)(PieTracker.prototype, baseTrackerPrototype, {\r\n    _isPointerOut: function(_, point) {\r\n        return !point\r\n    },\r\n    _legendClick: function(item, e) {\r\n        var that = this;\r\n        var points = [];\r\n        that._storedSeries.forEach(function(s) {\r\n            return points.push.apply(points, s.getPointsByKeys(item.argument, item.argumentIndex))\r\n        });\r\n        that._eventTrigger(LEGEND_CLICK, {\r\n            target: item.argument,\r\n            points: points,\r\n            event: e\r\n        })\r\n    },\r\n    _pointClick: function(point, e) {\r\n        this._eventTrigger(POINT_CLICK, {\r\n            target: point,\r\n            event: e\r\n        })\r\n    },\r\n    _hoverLegendItem: function(x, y) {\r\n        var that = this;\r\n        var item = that._legend.getItemByCoord(x, y);\r\n        if (item && that._hoveredArgument !== item.argument) {\r\n            that._resetHoveredArgument();\r\n            that._hoverArgument(item.argument, item.argumentIndex)\r\n        } else {\r\n            if (!item) {\r\n                that.clearHover()\r\n            }\r\n        }\r\n    },\r\n    _getArgumentHoverMode: function() {\r\n        return correctHoverMode(this._legend)\r\n    },\r\n    _hoverArgumentAxis: _common.noop,\r\n    _setStuckSeries: _common.noop,\r\n    _getCanvas: _common.noop,\r\n    _notifyLegendOnHoverArgument: true\r\n});\r\n","/**\r\n * DevExtreme (ui/html_editor/modules/variables.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _popup = _interopRequireDefault(require(\"./popup\"));\r\nvar _variable = _interopRequireDefault(require(\"../formats/variable\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar VariableModule = {};\r\nif (_devextremeQuill.default) {\r\n    var VARIABLE_FORMAT_CLASS = \"dx-variable-format\";\r\n    var ACTIVE_FORMAT_CLASS = \"dx-format-active\";\r\n    _devextremeQuill.default.register({\r\n        \"formats/variable\": _variable.default\r\n    }, true);\r\n    VariableModule = function(_PopupModule) {\r\n        _inherits(VariableModule, _PopupModule);\r\n        var _super = _createSuper(VariableModule);\r\n        _createClass(VariableModule, [{\r\n            key: \"_getDefaultOptions\",\r\n            value: function() {\r\n                var baseConfig = _get(_getPrototypeOf(VariableModule.prototype), \"_getDefaultOptions\", this).call(this);\r\n                return (0, _extend.extend)(baseConfig, {\r\n                    escapeChar: \"\"\r\n                })\r\n            }\r\n        }]);\r\n\r\n        function VariableModule(quill, options) {\r\n            var _this;\r\n            _classCallCheck(this, VariableModule);\r\n            _this = _super.call(this, quill, options);\r\n            var toolbar = quill.getModule(\"toolbar\");\r\n            if (toolbar) {\r\n                toolbar.addClickHandler(\"variable\", _this.showPopup.bind(_assertThisInitialized(_this)))\r\n            }\r\n            quill.keyboard.addBinding({\r\n                key: \"P\",\r\n                altKey: true\r\n            }, _this.showPopup.bind(_assertThisInitialized(_this)));\r\n            _this._popup.on(\"shown\", function(e) {\r\n                var $ofElement = (0, _renderer.default)(e.component.option(\"position\").of);\r\n                if ($ofElement.hasClass(VARIABLE_FORMAT_CLASS)) {\r\n                    $ofElement.addClass(ACTIVE_FORMAT_CLASS)\r\n                }\r\n            });\r\n            return _this\r\n        }\r\n        _createClass(VariableModule, [{\r\n            key: \"showPopup\",\r\n            value: function(event) {\r\n                var selection = this.quill.getSelection();\r\n                var position = selection ? selection.index : this.quill.getLength();\r\n                this.savePosition(position);\r\n                this._resetPopupPosition(event, position);\r\n                _get(_getPrototypeOf(VariableModule.prototype), \"showPopup\", this).call(this)\r\n            }\r\n        }, {\r\n            key: \"_resetPopupPosition\",\r\n            value: function(event, position) {\r\n                if (event && event.element) {\r\n                    this._popup.option(\"position\", {\r\n                        of: event.element,\r\n                        offset: {\r\n                            h: 0,\r\n                            v: 0\r\n                        },\r\n                        my: \"top center\",\r\n                        at: \"bottom center\",\r\n                        collision: \"fit\"\r\n                    })\r\n                } else {\r\n                    var mentionBounds = this.quill.getBounds(position);\r\n                    var rootRect = (0, _position.getBoundingRect)(this.quill.root);\r\n                    this._popup.option(\"position\", {\r\n                        of: this.quill.root,\r\n                        offset: {\r\n                            h: mentionBounds.left,\r\n                            v: mentionBounds.bottom - rootRect.height\r\n                        },\r\n                        my: \"top center\",\r\n                        at: \"bottom left\",\r\n                        collision: \"fit flip\"\r\n                    })\r\n                }\r\n            }\r\n        }, {\r\n            key: \"insertEmbedContent\",\r\n            value: function(selectionChangedEvent) {\r\n                var caretPosition = this.getPosition();\r\n                var selectedItem = selectionChangedEvent.component.option(\"selectedItem\");\r\n                var variableData = (0, _extend.extend)({}, {\r\n                    value: selectedItem,\r\n                    escapeChar: this.options.escapeChar\r\n                });\r\n                setTimeout(function() {\r\n                    this.quill.insertEmbed(caretPosition, \"variable\", variableData);\r\n                    this.quill.setSelection(caretPosition + 1)\r\n                }.bind(this))\r\n            }\r\n        }]);\r\n        return VariableModule\r\n    }(_popup.default)\r\n}\r\nvar _default = VariableModule;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tooltip/tooltip.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _popover = _interopRequireDefault(require(\"../popover\"));\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TOOLTIP_CLASS = \"dx-tooltip\";\r\nvar TOOLTIP_WRAPPER_CLASS = \"dx-tooltip-wrapper\";\r\nvar Tooltip = _popover.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            toolbarItems: [],\r\n            showCloseButton: false,\r\n            showTitle: false,\r\n            title: null,\r\n            titleTemplate: null,\r\n            onTitleRendered: null,\r\n            bottomTemplate: null,\r\n            propagateOutsideClick: true\r\n        })\r\n    },\r\n    _render: function() {\r\n        this.$element().addClass(TOOLTIP_CLASS);\r\n        this._wrapper().addClass(TOOLTIP_WRAPPER_CLASS);\r\n        this.callBase()\r\n    },\r\n    _renderContent: function() {\r\n        this.callBase();\r\n        this._contentId = \"dx-\" + new _guid.default;\r\n        this._$content.attr({\r\n            id: this._contentId,\r\n            role: \"tooltip\"\r\n        });\r\n        this._toggleAriaDescription(true)\r\n    },\r\n    _toggleAriaDescription: function(showing) {\r\n        var $target = (0, _renderer.default)(this.option(\"target\"));\r\n        var label = showing ? this._contentId : void 0;\r\n        if (!(0, _type.isWindow)($target.get(0))) {\r\n            this.setAria(\"describedby\", label, $target)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxTooltip\", Tooltip);\r\nvar _default = Tooltip;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/slider.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"./common\");\r\nvar _slider_marker = _interopRequireDefault(require(\"./slider_marker\"));\r\nvar _support = require(\"../../core/utils/support\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar animationSettings = _common.utils.animationSettings;\r\nvar SPLITTER_WIDTH = 8;\r\nvar TOUCH_SPLITTER_WIDTH = 20;\r\n\r\nfunction getSliderTrackerWidth(sliderHandleWidth) {\r\n    return _support.touchEvents || _support.pointerEvents ? TOUCH_SPLITTER_WIDTH : SPLITTER_WIDTH < sliderHandleWidth ? sliderHandleWidth : SPLITTER_WIDTH\r\n}\r\n\r\nfunction Slider(params, index) {\r\n    var that = this;\r\n    that._translator = params.translator;\r\n    that._sliderGroup = params.renderer.g().attr({\r\n        \"class\": \"slider\"\r\n    }).append(params.root);\r\n    that._line = params.renderer.path(null, \"line\").append(that._sliderGroup);\r\n    that._marker = new _slider_marker.default(params.renderer, that._sliderGroup, 1 === index);\r\n    that._tracker = params.renderer.rect().attr({\r\n        \"class\": \"slider-tracker\",\r\n        fill: \"#000000\",\r\n        opacity: 1e-4\r\n    }).css({\r\n        cursor: \"w-resize\"\r\n    }).append(params.trackersGroup)\r\n}\r\nSlider.prototype = {\r\n    constructor: Slider,\r\n    cancelAnimation: function() {\r\n        this._sliderGroup.stopAnimation();\r\n        this._tracker.stopAnimation()\r\n    },\r\n    applyPosition: function(isAnimated) {\r\n        var that = this;\r\n        var slider = that._sliderGroup;\r\n        var tracker = that._tracker;\r\n        var attrs = {\r\n            translateX: that._position\r\n        };\r\n        that._marker.setPosition(that._position);\r\n        if (isAnimated) {\r\n            slider.animate(attrs, animationSettings);\r\n            tracker.animate(attrs, animationSettings)\r\n        } else {\r\n            slider.attr(attrs);\r\n            tracker.attr(attrs)\r\n        }\r\n    },\r\n    _setValid: function(isValid) {\r\n        this._marker.setValid(isValid);\r\n        this._line.attr({\r\n            stroke: this._colors[Number(isValid)]\r\n        })\r\n    },\r\n    _setText: function(text) {\r\n        this._marker.setText(text)\r\n    },\r\n    update: function(verticalRange, sliderHandleOptions, sliderMarkerOptions) {\r\n        var that = this;\r\n        that._formatOptions = {\r\n            format: sliderMarkerOptions.format,\r\n            customizeText: sliderMarkerOptions.customizeText\r\n        };\r\n        that._marker.applyOptions(sliderMarkerOptions, that._translator.getScreenRange());\r\n        that._colors = [sliderMarkerOptions.invalidRangeColor, sliderHandleOptions.color];\r\n        that._sliderGroup.attr({\r\n            translateY: verticalRange[0]\r\n        });\r\n        that._line.attr({\r\n            \"stroke-width\": sliderHandleOptions.width,\r\n            stroke: sliderHandleOptions.color,\r\n            \"stroke-opacity\": sliderHandleOptions.opacity,\r\n            sharp: \"h\",\r\n            points: [0, 0, 0, verticalRange[1] - verticalRange[0]]\r\n        });\r\n        var trackerWidth = getSliderTrackerWidth(sliderHandleOptions.width);\r\n        that._tracker.attr({\r\n            x: -trackerWidth / 2,\r\n            y: 0,\r\n            width: trackerWidth,\r\n            height: verticalRange[1] - verticalRange[0],\r\n            translateY: verticalRange[0]\r\n        })\r\n    },\r\n    toForeground: function() {\r\n        this._sliderGroup.toForeground()\r\n    },\r\n    getSliderTracker: function() {\r\n        return this._tracker\r\n    },\r\n    getPosition: function() {\r\n        return this._position\r\n    },\r\n    setDisplayValue: function(value) {\r\n        this._value = value;\r\n        this._setText((0, _common.formatValue)(value, this._formatOptions))\r\n    },\r\n    setOverlapped: function(isOverlapped) {\r\n        this._marker.setOverlapped(isOverlapped)\r\n    },\r\n    getValue: function() {\r\n        return this._value\r\n    },\r\n    on: function(event, handler) {\r\n        this._tracker.on(event, handler);\r\n        this._marker.getTracker().on(event, handler)\r\n    },\r\n    getCloudBorder: function() {\r\n        return this._marker.getBorderPosition()\r\n    },\r\n    dispose: function() {\r\n        this._marker.dispose()\r\n    }\r\n};\r\nvar _default = Slider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator_menu_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar EditDecoratorMenuHelperMixin = {\r\n    _menuEnabled: function() {\r\n        return !!this._menuItems().length\r\n    },\r\n    _menuItems: function() {\r\n        return this._list.option(\"menuItems\")\r\n    },\r\n    _deleteEnabled: function() {\r\n        return this._list.option(\"allowItemDeleting\")\r\n    },\r\n    _fireMenuAction: function($itemElement, action) {\r\n        this._list._itemEventHandlerByHandler($itemElement, action, {}, {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    }\r\n};\r\nvar _default = EditDecoratorMenuHelperMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.search.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SEARCH_PANEL_CLASS = \"search-panel\";\r\nvar SEARCH_TEXT_CLASS = \"search-text\";\r\nvar HEADER_PANEL_CLASS = \"header-panel\";\r\nvar FILTERING_TIMEOUT = 700;\r\n\r\nfunction allowSearch(column) {\r\n    return (0, _type.isDefined)(column.allowSearch) ? column.allowSearch : column.allowFiltering\r\n}\r\n\r\nfunction parseValue(column, text) {\r\n    var lookup = column.lookup;\r\n    if (!column.parseValue) {\r\n        return text\r\n    }\r\n    if (lookup) {\r\n        return column.parseValue.call(lookup, text)\r\n    }\r\n    return column.parseValue(text)\r\n}\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            searchPanel: {\r\n                visible: false,\r\n                width: 160,\r\n                placeholder: _message.default.format(\"dxDataGrid-searchPanelPlaceholder\"),\r\n                highlightSearchText: true,\r\n                highlightCaseSensitive: false,\r\n                text: \"\",\r\n                searchVisibleColumnsOnly: false\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: function() {\r\n                var calculateSearchFilter = function(that, text) {\r\n                    var i;\r\n                    var column;\r\n                    var columns = that._columnsController.getColumns();\r\n                    var searchVisibleColumnsOnly = that.option(\"searchPanel.searchVisibleColumnsOnly\");\r\n                    var lookup;\r\n                    var filters = [];\r\n                    if (!text) {\r\n                        return null\r\n                    }\r\n\r\n                    function onQueryDone(items) {\r\n                        var valueGetter = (0, _data.compileGetter)(lookup.valueExpr);\r\n                        for (var _i = 0; _i < items.length; _i++) {\r\n                            var value = valueGetter(items[_i]);\r\n                            filters.push(column.createFilterExpression(value, null, \"search\"))\r\n                        }\r\n                    }\r\n                    for (i = 0; i < columns.length; i++) {\r\n                        column = columns[i];\r\n                        if (searchVisibleColumnsOnly && !column.visible) {\r\n                            continue\r\n                        }\r\n                        if (allowSearch(column) && column.calculateFilterExpression) {\r\n                            lookup = column.lookup;\r\n                            var filterValue = parseValue(column, text);\r\n                            if (lookup && lookup.items) {\r\n                                (0, _query.default)(lookup.items).filter(column.createFilterExpression.call({\r\n                                    dataField: lookup.displayExpr,\r\n                                    dataType: lookup.dataType,\r\n                                    calculateFilterExpression: column.calculateFilterExpression\r\n                                }, filterValue, null, \"search\")).enumerate().done(onQueryDone)\r\n                            } else {\r\n                                if (void 0 !== filterValue) {\r\n                                    filters.push(column.createFilterExpression(filterValue, null, \"search\"))\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    return _uiGrid_core.default.combineFilters(filters, \"or\")\r\n                };\r\n                return {\r\n                    publicMethods: function() {\r\n                        return this.callBase().concat([\"searchByText\"])\r\n                    },\r\n                    _calculateAdditionalFilter: function() {\r\n                        var that = this;\r\n                        var filter = that.callBase();\r\n                        var searchFilter = calculateSearchFilter(that, that.option(\"searchPanel.text\"));\r\n                        return _uiGrid_core.default.combineFilters([filter, searchFilter])\r\n                    },\r\n                    searchByText: function(text) {\r\n                        this.option(\"searchPanel.text\", text)\r\n                    },\r\n                    optionChanged: function(args) {\r\n                        var that = this;\r\n                        switch (args.fullName) {\r\n                            case \"searchPanel.text\":\r\n                            case \"searchPanel\":\r\n                                that._applyFilter();\r\n                                args.handled = true;\r\n                                break;\r\n                            default:\r\n                                that.callBase(args)\r\n                        }\r\n                    }\r\n                }\r\n            }()\r\n        },\r\n        views: {\r\n            headerPanel: function() {\r\n                var getSearchPanelOptions = function(that) {\r\n                    return that.option(\"searchPanel\")\r\n                };\r\n                return {\r\n                    _getToolbarItems: function() {\r\n                        var items = this.callBase();\r\n                        return this._prepareSearchItem(items)\r\n                    },\r\n                    _prepareSearchItem: function(items) {\r\n                        var that = this;\r\n                        var dataController = that.getController(\"data\");\r\n                        var searchPanelOptions = getSearchPanelOptions(that);\r\n                        if (searchPanelOptions && searchPanelOptions.visible) {\r\n                            var toolbarItem = {\r\n                                template: function(data, index, container) {\r\n                                    var $search = (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(SEARCH_PANEL_CLASS)).appendTo(container);\r\n                                    that.getController(\"editorFactory\").createEditor($search, {\r\n                                        width: searchPanelOptions.width,\r\n                                        placeholder: searchPanelOptions.placeholder,\r\n                                        parentType: \"searchPanel\",\r\n                                        value: that.option(\"searchPanel.text\"),\r\n                                        updateValueTimeout: FILTERING_TIMEOUT,\r\n                                        setValue: function(value) {\r\n                                            dataController.searchByText(value)\r\n                                        },\r\n                                        editorOptions: {\r\n                                            inputAttr: {\r\n                                                \"aria-label\": _message.default.format(\"dxDataGrid-ariaSearchInGrid\")\r\n                                            }\r\n                                        }\r\n                                    });\r\n                                    that.resize()\r\n                                },\r\n                                name: \"searchPanel\",\r\n                                location: \"after\",\r\n                                locateInMenu: \"never\",\r\n                                sortIndex: 40\r\n                            };\r\n                            items.push(toolbarItem)\r\n                        }\r\n                        return items\r\n                    },\r\n                    getSearchTextEditor: function() {\r\n                        var that = this;\r\n                        var $element = that.element();\r\n                        var $searchPanel = $element.find(\".\" + that.addWidgetPrefix(SEARCH_PANEL_CLASS)).filter(function() {\r\n                            return (0, _renderer.default)(this).closest(\".\" + that.addWidgetPrefix(HEADER_PANEL_CLASS)).is($element)\r\n                        });\r\n                        if ($searchPanel.length) {\r\n                            return $searchPanel.dxTextBox(\"instance\")\r\n                        }\r\n                        return null\r\n                    },\r\n                    isVisible: function() {\r\n                        var searchPanelOptions = getSearchPanelOptions(this);\r\n                        return this.callBase() || searchPanelOptions && searchPanelOptions.visible\r\n                    },\r\n                    optionChanged: function(args) {\r\n                        if (\"searchPanel\" === args.name) {\r\n                            if (\"searchPanel.text\" === args.fullName) {\r\n                                var editor = this.getSearchTextEditor();\r\n                                if (editor) {\r\n                                    editor.option(\"value\", args.value)\r\n                                }\r\n                            } else {\r\n                                this._invalidate()\r\n                            }\r\n                            args.handled = true\r\n                        } else {\r\n                            this.callBase(args)\r\n                        }\r\n                    }\r\n                }\r\n            }(),\r\n            rowsView: {\r\n                init: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    this._searchParams = []\r\n                },\r\n                _getFormattedSearchText: function(column, searchText) {\r\n                    var value = parseValue(column, searchText);\r\n                    var formatOptions = _uiGrid_core.default.getFormatOptionsByColumn(column, \"search\");\r\n                    return _uiGrid_core.default.formatValue(value, formatOptions)\r\n                },\r\n                _getStringNormalizer: function() {\r\n                    var isCaseSensitive = this.option(\"searchPanel.highlightCaseSensitive\");\r\n                    return function(str) {\r\n                        return isCaseSensitive ? str : str.toLowerCase()\r\n                    }\r\n                },\r\n                _findHighlightingTextNodes: function(column, cellElement, searchText) {\r\n                    var that = this;\r\n                    var $parent = cellElement.parent();\r\n                    var $items;\r\n                    var stringNormalizer = this._getStringNormalizer();\r\n                    var normalizedSearchText = stringNormalizer(searchText);\r\n                    if (!$parent.length) {\r\n                        $parent = (0, _renderer.default)(\"<div>\").append(cellElement)\r\n                    } else {\r\n                        if (column) {\r\n                            if (column.groupIndex >= 0 && !column.showWhenGrouped) {\r\n                                $items = cellElement\r\n                            } else {\r\n                                var columnIndex = that._columnsController.getVisibleIndex(column.index);\r\n                                $items = $parent.children(\"td\").eq(columnIndex).find(\"*\")\r\n                            }\r\n                        }\r\n                    }\r\n                    $items = $items && $items.length ? $items : $parent.find(\"*\");\r\n                    $items = $items.filter(function(_, element) {\r\n                        var $contents = (0, _renderer.default)(element).contents();\r\n                        for (var i = 0; i < $contents.length; i++) {\r\n                            var node = $contents.get(i);\r\n                            if (3 === node.nodeType) {\r\n                                return stringNormalizer(node.textContent || node.nodeValue).indexOf(normalizedSearchText) > -1\r\n                            }\r\n                            return false\r\n                        }\r\n                    });\r\n                    return $items\r\n                },\r\n                _highlightSearchTextCore: function($textNode, searchText) {\r\n                    var that = this;\r\n                    var $searchTextSpan = (0, _renderer.default)(\"<span>\").addClass(that.addWidgetPrefix(SEARCH_TEXT_CLASS));\r\n                    var text = $textNode.text();\r\n                    var firstContentElement = $textNode[0];\r\n                    var stringNormalizer = this._getStringNormalizer();\r\n                    var index = stringNormalizer(text).indexOf(stringNormalizer(searchText));\r\n                    if (index >= 0) {\r\n                        if (firstContentElement.textContent) {\r\n                            firstContentElement.textContent = text.substr(0, index)\r\n                        } else {\r\n                            firstContentElement.nodeValue = text.substr(0, index)\r\n                        }\r\n                        $textNode.after($searchTextSpan.text(text.substr(index, searchText.length)));\r\n                        $textNode = (0, _renderer.default)(_dom_adapter.default.createTextNode(text.substr(index + searchText.length))).insertAfter($searchTextSpan);\r\n                        return that._highlightSearchTextCore($textNode, searchText)\r\n                    }\r\n                },\r\n                _highlightSearchText: function(cellElement, isEquals, column) {\r\n                    var that = this;\r\n                    var stringNormalizer = this._getStringNormalizer();\r\n                    var searchText = that.option(\"searchPanel.text\");\r\n                    if (isEquals && column) {\r\n                        searchText = searchText && that._getFormattedSearchText(column, searchText)\r\n                    }\r\n                    if (searchText && that.option(\"searchPanel.highlightSearchText\")) {\r\n                        var textNodes = that._findHighlightingTextNodes(column, cellElement, searchText);\r\n                        (0, _iterator.each)(textNodes, function(_, element) {\r\n                            (0, _iterator.each)((0, _renderer.default)(element).contents(), function(_, textNode) {\r\n                                if (isEquals) {\r\n                                    if (stringNormalizer((0, _renderer.default)(textNode).text()) === stringNormalizer(searchText)) {\r\n                                        (0, _renderer.default)(this).replaceWith((0, _renderer.default)(\"<span>\").addClass(that.addWidgetPrefix(SEARCH_TEXT_CLASS)).text((0, _renderer.default)(textNode).text()))\r\n                                    }\r\n                                } else {\r\n                                    that._highlightSearchTextCore((0, _renderer.default)(textNode), searchText)\r\n                                }\r\n                            })\r\n                        })\r\n                    }\r\n                },\r\n                _renderCore: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    if (this.option(\"rowTemplate\")) {\r\n                        if (this.option(\"templatesRenderAsynchronously\")) {\r\n                            clearTimeout(this._highlightTimer);\r\n                            this._highlightTimer = setTimeout(function() {\r\n                                this._highlightSearchText(this._getTableElement())\r\n                            }.bind(this))\r\n                        } else {\r\n                            this._highlightSearchText(this._getTableElement())\r\n                        }\r\n                    }\r\n                },\r\n                _updateCell: function($cell, parameters) {\r\n                    var column = parameters.column;\r\n                    var dataType = column.lookup && column.lookup.dataType || column.dataType;\r\n                    var isEquals = \"string\" !== dataType;\r\n                    if (allowSearch(column)) {\r\n                        if (this.option(\"templatesRenderAsynchronously\")) {\r\n                            if (!this._searchParams.length) {\r\n                                clearTimeout(this._highlightTimer);\r\n                                this._highlightTimer = setTimeout(function() {\r\n                                    this._searchParams.forEach(function(params) {\r\n                                        this._highlightSearchText.apply(this, params)\r\n                                    }.bind(this));\r\n                                    this._searchParams = []\r\n                                }.bind(this))\r\n                            }\r\n                            this._searchParams.push([$cell, isEquals, column])\r\n                        } else {\r\n                            this._highlightSearchText($cell, isEquals, column)\r\n                        }\r\n                    }\r\n                    this.callBase($cell, parameters)\r\n                },\r\n                dispose: function() {\r\n                    clearTimeout(this._highlightTimer);\r\n                    this.callBase()\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/remove_event.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"./renderer\"));\r\nvar _element_data = require(\"./element_data\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _event_registrator = _interopRequireDefault(require(\"../events/core/event_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar eventName = \"dxremove\";\r\nvar eventPropName = \"dxRemoveEvent\";\r\n(0, _element_data.beforeCleanData)(function(elements) {\r\n    elements = [].slice.call(elements);\r\n    for (var i = 0; i < elements.length; i++) {\r\n        var $element = (0, _renderer.default)(elements[i]);\r\n        if ($element.prop(eventPropName)) {\r\n            $element[0][eventPropName] = null;\r\n            _events_engine.default.triggerHandler($element, eventName)\r\n        }\r\n    }\r\n});\r\n(0, _event_registrator.default)(eventName, {\r\n    noBubble: true,\r\n    setup: function(element) {\r\n        (0, _renderer.default)(element).prop(eventPropName, true)\r\n    }\r\n});\r\nvar _default = eventName;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.state_storing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.state_storing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"stateStoring\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/text_box/ui.text_editor.mask.strategy.input_events.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _uiText_editorMaskStrategy = _interopRequireDefault(require(\"./ui.text_editor.mask.strategy.base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DELETE_INPUT_TYPE = \"deleteContentBackward\";\r\nvar InputEventsMaskStrategy = function(_BaseMaskStrategy) {\r\n    _inherits(InputEventsMaskStrategy, _BaseMaskStrategy);\r\n    var _super = _createSuper(InputEventsMaskStrategy);\r\n\r\n    function InputEventsMaskStrategy() {\r\n        _classCallCheck(this, InputEventsMaskStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(InputEventsMaskStrategy, [{\r\n        key: \"_getStrategyName\",\r\n        value: function() {\r\n            return \"inputEvents\"\r\n        }\r\n    }, {\r\n        key: \"getHandleEventNames\",\r\n        value: function() {\r\n            return [].concat(_toConsumableArray(_get(_getPrototypeOf(InputEventsMaskStrategy.prototype), \"getHandleEventNames\", this).call(this)), [\"beforeInput\"])\r\n        }\r\n    }, {\r\n        key: \"_beforeInputHandler\",\r\n        value: function() {\r\n            this._prevCaret = this.editorCaret()\r\n        }\r\n    }, {\r\n        key: \"_inputHandler\",\r\n        value: function(_ref) {\r\n            var originalEvent = _ref.originalEvent;\r\n            if (!originalEvent) {\r\n                return\r\n            }\r\n            var inputType = originalEvent.inputType,\r\n                data = originalEvent.data;\r\n            var currentCaret = this.editorCaret();\r\n            if (inputType === DELETE_INPUT_TYPE) {\r\n                var length = this._prevCaret.end - this._prevCaret.start || 1;\r\n                this.editor.setBackwardDirection();\r\n                this._updateEditorMask({\r\n                    start: currentCaret.start,\r\n                    length: length,\r\n                    text: this._getEmptyString(length)\r\n                })\r\n            } else {\r\n                if (!currentCaret.end) {\r\n                    return\r\n                }\r\n                this._autoFillHandler(originalEvent);\r\n                this.editorCaret(currentCaret);\r\n                var _length = this._prevCaret.end - this._prevCaret.start;\r\n                var newData = data + (_length ? this._getEmptyString(_length - data.length) : \"\");\r\n                this.editor.setForwardDirection();\r\n                var hasValidChars = this._updateEditorMask({\r\n                    start: this._prevCaret.start,\r\n                    length: _length || newData.length,\r\n                    text: newData\r\n                });\r\n                if (!hasValidChars) {\r\n                    this.editorCaret(this._prevCaret)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getEmptyString\",\r\n        value: function(length) {\r\n            return Array(length + 1).join(\" \")\r\n        }\r\n    }, {\r\n        key: \"_updateEditorMask\",\r\n        value: function(args) {\r\n            var textLength = args.text.length;\r\n            var updatedCharsCount = this.editor._handleChain(args);\r\n            if (this.editor.isForwardDirection()) {\r\n                var _this$editorCaret = this.editorCaret(),\r\n                    start = _this$editorCaret.start,\r\n                    end = _this$editorCaret.end;\r\n                var correction = updatedCharsCount - textLength;\r\n                if (start <= updatedCharsCount && updatedCharsCount > 1) {\r\n                    this.editorCaret({\r\n                        start: start + correction,\r\n                        end: end + correction\r\n                    })\r\n                }\r\n                this.editor.isForwardDirection() && this.editor._adjustCaret()\r\n            }\r\n            this.editor._displayMask();\r\n            return !!updatedCharsCount\r\n        }\r\n    }]);\r\n    return InputEventsMaskStrategy\r\n}(_uiText_editorMaskStrategy.default);\r\nvar _default = InputEventsMaskStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.native.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.strategy\"));\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar NativeStrategy = _uiDate_box.default.inherit({\r\n    NAME: \"Native\",\r\n    popupConfig: function(_popupConfig) {\r\n        return (0, _extend.extend)({}, _popupConfig, {\r\n            width: \"auto\"\r\n        })\r\n    },\r\n    getParsedText: function(text, format) {\r\n        if (!text) {\r\n            return null\r\n        }\r\n        if (\"datetime\" === this.dateBox.option(\"type\")) {\r\n            return new Date(text.replace(/-/g, \"/\").replace(\"T\", \" \").split(\".\")[0])\r\n        }\r\n        if (this._isTextInput()) {\r\n            return this.callBase(text, format)\r\n        } else {\r\n            return _ui.default.fromStandardDateFormat(text)\r\n        }\r\n    },\r\n    _isTextInput: function() {\r\n        return \"text\" === this.dateBox._input().prop(\"type\")\r\n    },\r\n    renderPopupContent: _common.noop,\r\n    _getWidgetName: _common.noop,\r\n    _getWidgetOptions: _common.noop,\r\n    _getDateBoxType: function() {\r\n        var type = this.dateBox.option(\"type\");\r\n        if ((0, _array.inArray)(type, _ui.default.SUPPORTED_FORMATS) === -1) {\r\n            type = \"date\"\r\n        } else {\r\n            if (\"datetime\" === type && !(0, _support.inputType)(type)) {\r\n                type = \"datetime-local\"\r\n            }\r\n        }\r\n        return type\r\n    },\r\n    customizeButtons: function() {\r\n        var dropDownButton = this.dateBox.getButton(\"dropDown\");\r\n        if (dropDownButton) {\r\n            dropDownButton.on(\"click\", function() {\r\n                this.dateBox._input().get(0).click()\r\n            }.bind(this))\r\n        }\r\n    },\r\n    getDefaultOptions: function() {\r\n        return {\r\n            mode: this._getDateBoxType()\r\n        }\r\n    },\r\n    getDisplayFormat: function(displayFormat) {\r\n        var type = this._getDateBoxType();\r\n        return displayFormat || _ui.default.FORMATS_MAP[type]\r\n    },\r\n    renderInputMinMax: function($input) {\r\n        $input.attr({\r\n            min: _date_serialization.default.serializeDate(this.dateBox.dateOption(\"min\"), \"yyyy-MM-dd\"),\r\n            max: _date_serialization.default.serializeDate(this.dateBox.dateOption(\"max\"), \"yyyy-MM-dd\")\r\n        })\r\n    }\r\n});\r\nvar _default = NativeStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createGroupFilter = createGroupFilter;\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction createGroupFilter(path, storeLoadOptions) {\r\n    var groups = _utils.default.normalizeSortingInfo(storeLoadOptions.group);\r\n    var filter = [];\r\n    for (var i = 0; i < path.length; i++) {\r\n        filter.push([groups[i].selector, \"=\", path[i]])\r\n    }\r\n    if (storeLoadOptions.filter) {\r\n        filter.push(storeLoadOptions.filter)\r\n    }\r\n    return _uiGrid_core.default.combineFilters(filter)\r\n}\r\n","/**\r\n * DevExtreme (ui/menu/ui.menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _element = require(\"../../core/element\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../overlay/utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _hover = require(\"../../events/hover\");\r\nvar _ui = _interopRequireDefault(require(\"../context_menu/ui.menu_base\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.submenu\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_VERTICAL_CLASS = DX_MENU_CLASS + \"-vertical\";\r\nvar DX_MENU_HORIZONTAL_CLASS = DX_MENU_CLASS + \"-horizontal\";\r\nvar DX_MENU_ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = DX_MENU_ITEM_CLASS + \"-expanded\";\r\nvar DX_CONTEXT_MENU_CLASS = \"dx-context-menu\";\r\nvar DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS = DX_CONTEXT_MENU_CLASS + \"-container-border\";\r\nvar DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar DX_STATE_DISABLED_CLASS = \"dx-state-disabled\";\r\nvar DX_STATE_HOVER_CLASS = \"dx-state-hover\";\r\nvar DX_STATE_ACTIVE_CLASS = \"dx-state-active\";\r\nvar DX_ADAPTIVE_MODE_CLASS = DX_MENU_CLASS + \"-adaptive-mode\";\r\nvar DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS = DX_MENU_CLASS + \"-hamburger-button\";\r\nvar DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS = DX_ADAPTIVE_MODE_CLASS + \"-overlay-wrapper\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar SHOW_SUBMENU_OPERATION = \"showSubmenu\";\r\nvar NEXTITEM_OPERATION = \"nextItem\";\r\nvar PREVITEM_OPERATION = \"prevItem\";\r\nvar DEFAULT_DELAY = {\r\n    show: 50,\r\n    hide: 300\r\n};\r\nvar ACTIONS = [\"onSubmenuShowing\", \"onSubmenuShown\", \"onSubmenuHiding\", \"onSubmenuHidden\", \"onItemContextMenu\", \"onItemClick\", \"onSelectionChanged\", \"onItemRendered\"];\r\nvar Menu = function(_MenuBase) {\r\n    _inherits(Menu, _MenuBase);\r\n    var _super = _createSuper(Menu);\r\n\r\n    function Menu() {\r\n        _classCallCheck(this, Menu);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(Menu, [{\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(Menu.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                orientation: \"horizontal\",\r\n                submenuDirection: \"auto\",\r\n                showFirstSubmenuMode: {\r\n                    name: \"onClick\",\r\n                    delay: {\r\n                        show: 50,\r\n                        hide: 300\r\n                    }\r\n                },\r\n                hideSubmenuOnMouseLeave: false,\r\n                onSubmenuShowing: null,\r\n                onSubmenuShown: null,\r\n                onSubmenuHiding: null,\r\n                onSubmenuHidden: null,\r\n                adaptivityEnabled: false\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_setOptionsByReference\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(Menu.prototype), \"_setOptionsByReference\", this).call(this);\r\n            (0, _extend.extend)(this._optionsByReference, {\r\n                animation: true,\r\n                selectedItem: true\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_itemElements\",\r\n        value: function() {\r\n            var rootMenuElements = _get(_getPrototypeOf(Menu.prototype), \"_itemElements\", this).call(this);\r\n            var submenuElements = this._submenuItemElements();\r\n            return rootMenuElements.add(submenuElements)\r\n        }\r\n    }, {\r\n        key: \"_submenuItemElements\",\r\n        value: function() {\r\n            var elements = [];\r\n            var itemSelector = \".\".concat(DX_MENU_ITEM_CLASS);\r\n            var currentSubmenu = this._submenus.length && this._submenus[0];\r\n            if (currentSubmenu && currentSubmenu.itemsContainer()) {\r\n                elements = currentSubmenu.itemsContainer().find(itemSelector)\r\n            }\r\n            return elements\r\n        }\r\n    }, {\r\n        key: \"_focusTarget\",\r\n        value: function() {\r\n            return this.$element()\r\n        }\r\n    }, {\r\n        key: \"_isMenuHorizontal\",\r\n        value: function() {\r\n            return \"horizontal\" === this.option(\"orientation\")\r\n        }\r\n    }, {\r\n        key: \"_moveFocus\",\r\n        value: function(location) {\r\n            var $items = this._getAvailableItems();\r\n            var isMenuHorizontal = this._isMenuHorizontal();\r\n            var $activeItem = this._getActiveItem(true);\r\n            var argument;\r\n            var operation;\r\n            var navigationAction;\r\n            var $newTarget;\r\n            switch (location) {\r\n                case FOCUS_UP:\r\n                    operation = isMenuHorizontal ? SHOW_SUBMENU_OPERATION : this._getItemsNavigationOperation(PREVITEM_OPERATION);\r\n                    argument = isMenuHorizontal ? $activeItem : $items;\r\n                    navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n                    $newTarget = navigationAction();\r\n                    break;\r\n                case FOCUS_DOWN:\r\n                    operation = isMenuHorizontal ? SHOW_SUBMENU_OPERATION : this._getItemsNavigationOperation(NEXTITEM_OPERATION);\r\n                    argument = isMenuHorizontal ? $activeItem : $items;\r\n                    navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n                    $newTarget = navigationAction();\r\n                    break;\r\n                case FOCUS_RIGHT:\r\n                    operation = isMenuHorizontal ? this._getItemsNavigationOperation(NEXTITEM_OPERATION) : SHOW_SUBMENU_OPERATION;\r\n                    argument = isMenuHorizontal ? $items : $activeItem;\r\n                    navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n                    $newTarget = navigationAction();\r\n                    break;\r\n                case FOCUS_LEFT:\r\n                    operation = isMenuHorizontal ? this._getItemsNavigationOperation(PREVITEM_OPERATION) : SHOW_SUBMENU_OPERATION;\r\n                    argument = isMenuHorizontal ? $items : $activeItem;\r\n                    navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n                    $newTarget = navigationAction();\r\n                    break;\r\n                default:\r\n                    return _get(_getPrototypeOf(Menu.prototype), \"_moveFocus\", this).call(this, location)\r\n            }\r\n            if ($newTarget && 0 !== $newTarget.length) {\r\n                this.option(\"focusedElement\", (0, _element.getPublicElement)($newTarget))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getItemsNavigationOperation\",\r\n        value: function(operation) {\r\n            var navOperation = operation;\r\n            if (this.option(\"rtlEnabled\")) {\r\n                navOperation = operation === PREVITEM_OPERATION ? NEXTITEM_OPERATION : PREVITEM_OPERATION\r\n            }\r\n            return navOperation\r\n        }\r\n    }, {\r\n        key: \"_getKeyboardNavigationAction\",\r\n        value: function(operation, argument) {\r\n            var action = _common.noop;\r\n            switch (operation) {\r\n                case SHOW_SUBMENU_OPERATION:\r\n                    if (!argument.hasClass(DX_STATE_DISABLED_CLASS)) {\r\n                        action = this._showSubmenu.bind(this, argument)\r\n                    }\r\n                    break;\r\n                case NEXTITEM_OPERATION:\r\n                    action = this._nextItem.bind(this, argument);\r\n                    break;\r\n                case PREVITEM_OPERATION:\r\n                    action = this._prevItem.bind(this, argument)\r\n            }\r\n            return action\r\n        }\r\n    }, {\r\n        key: \"_clean\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(Menu.prototype), \"_clean\", this).call(this);\r\n            this.option(\"templatesRenderAsynchronously\") && clearTimeout(this._resizeEventTimer)\r\n        }\r\n    }, {\r\n        key: \"_visibilityChanged\",\r\n        value: function(visible) {\r\n            if (visible) {\r\n                if (!this._menuItemsWidth) {\r\n                    this._updateItemsWidthCache()\r\n                }\r\n                this._dimensionChanged()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isAdaptivityEnabled\",\r\n        value: function() {\r\n            return this.option(\"adaptivityEnabled\") && \"horizontal\" === this.option(\"orientation\")\r\n        }\r\n    }, {\r\n        key: \"_updateItemsWidthCache\",\r\n        value: function() {\r\n            var $menuItems = this.$element().find(\"ul\").first().children(\"li\").children(\".\".concat(DX_MENU_ITEM_CLASS));\r\n            this._menuItemsWidth = this._getSummaryItemsWidth($menuItems, true)\r\n        }\r\n    }, {\r\n        key: \"_dimensionChanged\",\r\n        value: function() {\r\n            if (!this._isAdaptivityEnabled()) {\r\n                return\r\n            }\r\n            var containerWidth = this.$element().outerWidth();\r\n            this._toggleAdaptiveMode(this._menuItemsWidth > containerWidth)\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(Menu.prototype), \"_init\", this).call(this);\r\n            this._submenus = []\r\n        }\r\n    }, {\r\n        key: \"_initActions\",\r\n        value: function() {\r\n            var _this = this;\r\n            this._actions = {};\r\n            (0, _iterator.each)(ACTIONS, function(index, action) {\r\n                _this._actions[action] = _this._createActionByOption(action)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            this._visibleSubmenu = null;\r\n            this.$element().addClass(DX_MENU_CLASS);\r\n            _get(_getPrototypeOf(Menu.prototype), \"_initMarkup\", this).call(this);\r\n            this.setAria(\"role\", \"menubar\")\r\n        }\r\n    }, {\r\n        key: \"_render\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(Menu.prototype), \"_render\", this).call(this);\r\n            this._initAdaptivity()\r\n        }\r\n    }, {\r\n        key: \"_renderHamburgerButton\",\r\n        value: function() {\r\n            this._hamburger = new _button.default((0, _renderer.default)(\"<div>\").addClass(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS), {\r\n                icon: \"menu\",\r\n                activeStateEnabled: false,\r\n                onClick: this._toggleTreeView.bind(this)\r\n            });\r\n            return this._hamburger.$element()\r\n        }\r\n    }, {\r\n        key: \"_toggleTreeView\",\r\n        value: function(state) {\r\n            if ((0, _type.isPlainObject)(state)) {\r\n                state = !this._overlay.option(\"visible\")\r\n            }\r\n            this._overlay.option(\"visible\", state);\r\n            this._toggleHamburgerActiveState(state)\r\n        }\r\n    }, {\r\n        key: \"_toggleHamburgerActiveState\",\r\n        value: function(state) {\r\n            this._hamburger && this._hamburger.$element().toggleClass(DX_STATE_ACTIVE_CLASS, state)\r\n        }\r\n    }, {\r\n        key: \"_toggleAdaptiveMode\",\r\n        value: function(state) {\r\n            var $menuItemsContainer = this.$element().find(\".\".concat(DX_MENU_HORIZONTAL_CLASS));\r\n            var $adaptiveElements = this.$element().find(\".\".concat(DX_ADAPTIVE_MODE_CLASS));\r\n            if (state) {\r\n                this._hideVisibleSubmenu()\r\n            } else {\r\n                this._treeView && this._treeView.collapseAll();\r\n                this._overlay && this._toggleTreeView(state)\r\n            }\r\n            $menuItemsContainer.toggle(!state);\r\n            $adaptiveElements.toggle(state)\r\n        }\r\n    }, {\r\n        key: \"_removeAdaptivity\",\r\n        value: function() {\r\n            if (!this._$adaptiveContainer) {\r\n                return\r\n            }\r\n            this._toggleAdaptiveMode(false);\r\n            this._$adaptiveContainer.remove();\r\n            this._$adaptiveContainer = null;\r\n            this._treeView = null;\r\n            this._hamburger = null;\r\n            this._overlay = null\r\n        }\r\n    }, {\r\n        key: \"_treeviewItemClickHandler\",\r\n        value: function(e) {\r\n            this._actions.onItemClick(e);\r\n            if (!e.node.children.length) {\r\n                this._toggleTreeView(false)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getAdaptiveOverlayOptions\",\r\n        value: function() {\r\n            var _this2 = this;\r\n            var rtl = this.option(\"rtlEnabled\");\r\n            var position = rtl ? \"right\" : \"left\";\r\n            return {\r\n                maxHeight: function() {\r\n                    return (0, _utils.getElementMaxHeightByWindow)(_this2.$element())\r\n                },\r\n                deferRendering: false,\r\n                shading: false,\r\n                animation: false,\r\n                closeOnTargetScroll: true,\r\n                onHidden: function() {\r\n                    _this2._toggleHamburgerActiveState(false)\r\n                },\r\n                height: \"auto\",\r\n                closeOnOutsideClick: function(e) {\r\n                    return !(0, _renderer.default)(e.target).closest(\".\".concat(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS)).length\r\n                },\r\n                position: {\r\n                    collision: \"flipfit\",\r\n                    at: \"bottom \" + position,\r\n                    my: \"top \" + position,\r\n                    of: this._hamburger.$element()\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getTreeViewOptions\",\r\n        value: function() {\r\n            var _this3 = this;\r\n            var menuOptions = {};\r\n            var optionsToTransfer = [\"rtlEnabled\", \"width\", \"accessKey\", \"activeStateEnabled\", \"animation\", \"dataSource\", \"disabled\", \"displayExpr\", \"displayExpr\", \"focusStateEnabled\", \"hint\", \"hoverStateEnabled\", \"itemsExpr\", \"items\", \"itemTemplate\", \"selectedExpr\", \"selectionMode\", \"tabIndex\", \"visible\"];\r\n            var actionsToTransfer = [\"onItemContextMenu\", \"onSelectionChanged\"];\r\n            (0, _iterator.each)(optionsToTransfer, function(_, option) {\r\n                menuOptions[option] = _this3.option(option)\r\n            });\r\n            (0, _iterator.each)(actionsToTransfer, function(_, actionName) {\r\n                menuOptions[actionName] = function(e) {\r\n                    _this3._actions[actionName](e)\r\n                }\r\n            });\r\n            return (0, _extend.extend)(menuOptions, {\r\n                dataSource: this.getDataSource(),\r\n                animationEnabled: !!this.option(\"animation\"),\r\n                onItemClick: this._treeviewItemClickHandler.bind(this),\r\n                onItemExpanded: function(e) {\r\n                    _this3._overlay.repaint();\r\n                    _this3._actions.onSubmenuShown(e)\r\n                },\r\n                onItemCollapsed: function(e) {\r\n                    _this3._overlay.repaint();\r\n                    _this3._actions.onSubmenuHidden(e)\r\n                },\r\n                selectNodesRecursive: false,\r\n                selectByClick: this.option(\"selectByClick\"),\r\n                expandEvent: \"click\"\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_initAdaptivity\",\r\n        value: function() {\r\n            if (!this._isAdaptivityEnabled()) {\r\n                return\r\n            }\r\n            this._$adaptiveContainer = (0, _renderer.default)(\"<div>\").addClass(DX_ADAPTIVE_MODE_CLASS);\r\n            var $hamburger = this._renderHamburgerButton();\r\n            this._treeView = this._createComponent((0, _renderer.default)(\"<div>\"), _tree_view.default, this._getTreeViewOptions());\r\n            this._overlay = this._createComponent((0, _renderer.default)(\"<div>\"), _overlay.default, this._getAdaptiveOverlayOptions());\r\n            this._overlay.$content().append(this._treeView.$element()).addClass(DX_ADAPTIVE_MODE_CLASS).addClass(this.option(\"cssClass\"));\r\n            this._overlay._wrapper().addClass(DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS);\r\n            this._$adaptiveContainer.append($hamburger);\r\n            this._$adaptiveContainer.append(this._overlay.$element());\r\n            this.$element().append(this._$adaptiveContainer);\r\n            this._updateItemsWidthCache();\r\n            this._dimensionChanged()\r\n        }\r\n    }, {\r\n        key: \"_getDelay\",\r\n        value: function(delayType) {\r\n            var delay = this.option(\"showFirstSubmenuMode\").delay;\r\n            if (!(0, _type.isDefined)(delay)) {\r\n                return DEFAULT_DELAY[delayType]\r\n            } else {\r\n                return (0, _type.isObject)(delay) ? delay[delayType] : delay\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_keyboardHandler\",\r\n        value: function(e) {\r\n            return _get(_getPrototypeOf(Menu.prototype), \"_keyboardHandler\", this).call(this, e, !!this._visibleSubmenu)\r\n        }\r\n    }, {\r\n        key: \"_renderContainer\",\r\n        value: function() {\r\n            var $wrapper = (0, _renderer.default)(\"<div>\");\r\n            $wrapper.appendTo(this.$element()).addClass(this._isMenuHorizontal() ? DX_MENU_HORIZONTAL_CLASS : DX_MENU_VERTICAL_CLASS);\r\n            return _get(_getPrototypeOf(Menu.prototype), \"_renderContainer\", this).call(this, $wrapper)\r\n        }\r\n    }, {\r\n        key: \"_renderSubmenuItems\",\r\n        value: function(node, $itemFrame) {\r\n            var submenu = this._createSubmenu(node, $itemFrame);\r\n            this._submenus.push(submenu);\r\n            this._renderBorderElement($itemFrame);\r\n            return submenu\r\n        }\r\n    }, {\r\n        key: \"_getKeyboardListeners\",\r\n        value: function() {\r\n            return _get(_getPrototypeOf(Menu.prototype), \"_getKeyboardListeners\", this).call(this).concat(this._visibleSubmenu)\r\n        }\r\n    }, {\r\n        key: \"_createSubmenu\",\r\n        value: function(node, $rootItem) {\r\n            var $submenuContainer = (0, _renderer.default)(\"<div>\").addClass(DX_CONTEXT_MENU_CLASS).appendTo($rootItem);\r\n            var items = this._getChildNodes(node);\r\n            var result = this._createComponent($submenuContainer, _ui2.default, (0, _extend.extend)(this._getSubmenuOptions(), {\r\n                _dataAdapter: this._dataAdapter,\r\n                _parentKey: node.internalFields.key,\r\n                items: items,\r\n                onHoverStart: this._clearTimeouts.bind(this),\r\n                position: this.getSubmenuPosition($rootItem)\r\n            }));\r\n            this._attachSubmenuHandlers($rootItem, result);\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getSubmenuOptions\",\r\n        value: function() {\r\n            var _this4 = this;\r\n            var $submenuTarget = (0, _renderer.default)(\"<div>\");\r\n            var isMenuHorizontal = this._isMenuHorizontal();\r\n            return {\r\n                itemTemplate: this.option(\"itemTemplate\"),\r\n                target: $submenuTarget,\r\n                orientation: this.option(\"orientation\"),\r\n                selectionMode: this.option(\"selectionMode\"),\r\n                cssClass: this.option(\"cssClass\"),\r\n                selectByClick: this.option(\"selectByClick\"),\r\n                hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n                activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n                focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n                animation: this.option(\"animation\"),\r\n                showSubmenuMode: this.option(\"showSubmenuMode\"),\r\n                displayExpr: this.option(\"displayExpr\"),\r\n                disabledExpr: this.option(\"disabledExpr\"),\r\n                selectedExpr: this.option(\"selectedExpr\"),\r\n                itemsExpr: this.option(\"itemsExpr\"),\r\n                onFocusedItemChanged: function(e) {\r\n                    if (!e.component.option(\"visible\")) {\r\n                        return\r\n                    }\r\n                    _this4.option(\"focusedElement\", e.component.option(\"focusedElement\"))\r\n                },\r\n                onSelectionChanged: this._nestedItemOnSelectionChangedHandler.bind(this),\r\n                onItemClick: this._nestedItemOnItemClickHandler.bind(this),\r\n                onItemRendered: this._nestedItemOnItemRenderedHandler.bind(this),\r\n                onLeftFirstItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, PREVITEM_OPERATION),\r\n                onLeftLastItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, NEXTITEM_OPERATION),\r\n                onCloseRootSubmenu: this._moveMainMenuFocus.bind(this, isMenuHorizontal ? PREVITEM_OPERATION : null),\r\n                onExpandLastSubmenu: isMenuHorizontal ? this._moveMainMenuFocus.bind(this, NEXTITEM_OPERATION) : null\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getShowFirstSubmenuMode\",\r\n        value: function() {\r\n            if (!this._isDesktopDevice()) {\r\n                return \"onClick\"\r\n            }\r\n            var optionValue = this.option(\"showFirstSubmenuMode\");\r\n            return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue\r\n        }\r\n    }, {\r\n        key: \"_moveMainMenuFocus\",\r\n        value: function(direction) {\r\n            var $items = this._getAvailableItems();\r\n            var itemCount = $items.length;\r\n            var $currentItem = $items.filter(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS)).eq(0);\r\n            var itemIndex = $items.index($currentItem);\r\n            this._hideSubmenu(this._visibleSubmenu);\r\n            itemIndex += direction === PREVITEM_OPERATION ? -1 : 1;\r\n            if (itemIndex >= itemCount) {\r\n                itemIndex = 0\r\n            } else {\r\n                if (itemIndex < 0) {\r\n                    itemIndex = itemCount - 1\r\n                }\r\n            }\r\n            var $newItem = $items.eq(itemIndex);\r\n            this.option(\"focusedElement\", (0, _element.getPublicElement)($newItem))\r\n        }\r\n    }, {\r\n        key: \"_nestedItemOnSelectionChangedHandler\",\r\n        value: function(args) {\r\n            var selectedItem = args.addedItems.length && args.addedItems[0];\r\n            var submenu = _ui2.default.getInstance(args.element);\r\n            var onSelectionChanged = this._actions.onSelectionChanged;\r\n            onSelectionChanged(args);\r\n            selectedItem && this._clearSelectionInSubmenus(selectedItem[0], submenu);\r\n            this._clearRootSelection();\r\n            this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem)\r\n        }\r\n    }, {\r\n        key: \"_clearSelectionInSubmenus\",\r\n        value: function(item, targetSubmenu) {\r\n            var _this5 = this;\r\n            var cleanAllSubmenus = !arguments.length;\r\n            (0, _iterator.each)(this._submenus, function(index, submenu) {\r\n                var $submenu = submenu._itemContainer();\r\n                var isOtherItem = !$submenu.is(targetSubmenu && targetSubmenu._itemContainer());\r\n                var $selectedItem = $submenu.find(\".\".concat(_this5._selectedItemClass()));\r\n                if (isOtherItem && $selectedItem.length || cleanAllSubmenus) {\r\n                    $selectedItem.removeClass(_this5._selectedItemClass());\r\n                    var selectedItemData = _this5._getItemData($selectedItem);\r\n                    if (selectedItemData) {\r\n                        selectedItemData.selected = false\r\n                    }\r\n                    submenu._clearSelectedItems()\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_clearRootSelection\",\r\n        value: function() {\r\n            var $prevSelectedItem = this.$element().find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS)).first().children().children().filter(\".\".concat(this._selectedItemClass()));\r\n            if ($prevSelectedItem.length) {\r\n                var prevSelectedItemData = this._getItemData($prevSelectedItem);\r\n                prevSelectedItemData.selected = false;\r\n                $prevSelectedItem.removeClass(this._selectedItemClass())\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_nestedItemOnItemClickHandler\",\r\n        value: function(e) {\r\n            this._actions.onItemClick(e)\r\n        }\r\n    }, {\r\n        key: \"_nestedItemOnItemRenderedHandler\",\r\n        value: function(e) {\r\n            this._actions.onItemRendered(e)\r\n        }\r\n    }, {\r\n        key: \"_attachSubmenuHandlers\",\r\n        value: function($rootItem, submenu) {\r\n            var _this6 = this;\r\n            var $submenuOverlayContent = submenu.getOverlayContent();\r\n            var submenus = $submenuOverlayContent.find(\".\".concat(DX_SUBMENU_CLASS));\r\n            var submenuMouseLeaveName = (0, _index.addNamespace)(_hover.end, this.NAME + \"_submenu\");\r\n            submenu.option({\r\n                onShowing: this._submenuOnShowingHandler.bind(this, $rootItem, submenu),\r\n                onShown: this._submenuOnShownHandler.bind(this, $rootItem, submenu),\r\n                onHiding: this._submenuOnHidingHandler.bind(this, $rootItem, submenu),\r\n                onHidden: this._submenuOnHiddenHandler.bind(this, $rootItem, submenu)\r\n            });\r\n            (0, _iterator.each)(submenus, function(index, submenu) {\r\n                _events_engine.default.off(submenu, submenuMouseLeaveName);\r\n                _events_engine.default.on(submenu, submenuMouseLeaveName, null, _this6._submenuMouseLeaveHandler.bind(_this6, $rootItem))\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_submenuOnShowingHandler\",\r\n        value: function($rootItem, submenu) {\r\n            var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n            this._actions.onSubmenuShowing({\r\n                rootItem: (0, _element.getPublicElement)($rootItem),\r\n                submenu: submenu\r\n            });\r\n            $border.show();\r\n            $rootItem.addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_submenuOnShownHandler\",\r\n        value: function($rootItem, submenu) {\r\n            this._actions.onSubmenuShown({\r\n                rootItem: (0, _element.getPublicElement)($rootItem),\r\n                submenu: submenu\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_submenuOnHidingHandler\",\r\n        value: function($rootItem, submenu, eventArgs) {\r\n            var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n            var args = eventArgs;\r\n            args.rootItem = (0, _element.getPublicElement)($rootItem);\r\n            args.submenu = submenu;\r\n            this._actions.onSubmenuHiding(args);\r\n            eventArgs = args;\r\n            if (!eventArgs.cancel) {\r\n                if (this._visibleSubmenu === submenu) {\r\n                    this._visibleSubmenu = null\r\n                }\r\n                $border.hide();\r\n                $rootItem.removeClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_submenuOnHiddenHandler\",\r\n        value: function($rootItem, submenu) {\r\n            this._actions.onSubmenuHidden({\r\n                rootItem: (0, _element.getPublicElement)($rootItem),\r\n                submenu: submenu\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_submenuMouseLeaveHandler\",\r\n        value: function($rootItem, eventArgs) {\r\n            var target = (0, _renderer.default)(eventArgs.relatedTarget).parents(\".\".concat(DX_CONTEXT_MENU_CLASS))[0];\r\n            var contextMenu = this._getSubmenuByRootElement($rootItem).getOverlayContent()[0];\r\n            if (this.option(\"hideSubmenuOnMouseLeave\") && target !== contextMenu) {\r\n                this._clearTimeouts();\r\n                setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay(\"hide\"))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hideSubmenuAfterTimeout\",\r\n        value: function() {\r\n            if (!this._visibleSubmenu) {\r\n                return\r\n            }\r\n            var isRootItemHovered = (0, _renderer.default)(this._visibleSubmenu.$element().context).hasClass(DX_STATE_HOVER_CLASS);\r\n            var isSubmenuItemHovered = this._visibleSubmenu.getOverlayContent().find(\".\".concat(DX_STATE_HOVER_CLASS)).length;\r\n            var hoveredElementFromSubMenu = this._visibleSubmenu.getOverlayContent().get(0).querySelector(\":hover\");\r\n            if (!hoveredElementFromSubMenu && !isSubmenuItemHovered && !isRootItemHovered) {\r\n                this._visibleSubmenu.hide()\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getSubmenuByRootElement\",\r\n        value: function($rootItem) {\r\n            if (!$rootItem) {\r\n                return false\r\n            }\r\n            var $submenu = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CLASS));\r\n            return $submenu.length && _ui2.default.getInstance($submenu)\r\n        }\r\n    }, {\r\n        key: \"getSubmenuPosition\",\r\n        value: function($rootItem) {\r\n            var isHorizontalMenu = this._isMenuHorizontal();\r\n            var submenuDirection = this.option(\"submenuDirection\").toLowerCase();\r\n            var rtlEnabled = this.option(\"rtlEnabled\");\r\n            var submenuPosition = {\r\n                collision: \"flip\",\r\n                of: $rootItem\r\n            };\r\n            switch (submenuDirection) {\r\n                case \"leftortop\":\r\n                    submenuPosition.at = \"left top\";\r\n                    submenuPosition.my = isHorizontalMenu ? \"left bottom\" : \"right top\";\r\n                    break;\r\n                case \"rightorbottom\":\r\n                    submenuPosition.at = isHorizontalMenu ? \"left bottom\" : \"right top\";\r\n                    submenuPosition.my = \"left top\";\r\n                    break;\r\n                default:\r\n                    if (isHorizontalMenu) {\r\n                        submenuPosition.at = rtlEnabled ? \"right bottom\" : \"left bottom\";\r\n                        submenuPosition.my = rtlEnabled ? \"right top\" : \"left top\"\r\n                    } else {\r\n                        submenuPosition.at = rtlEnabled ? \"left top\" : \"right top\";\r\n                        submenuPosition.my = rtlEnabled ? \"right top\" : \"left top\"\r\n                    }\r\n            }\r\n            return submenuPosition\r\n        }\r\n    }, {\r\n        key: \"_renderBorderElement\",\r\n        value: function($item) {\r\n            (0, _renderer.default)(\"<div>\").appendTo($item).addClass(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS).hide()\r\n        }\r\n    }, {\r\n        key: \"_itemPointerDownHandler\",\r\n        value: function(e) {\r\n            var $target = (0, _renderer.default)(e.target);\r\n            var $closestItem = $target.closest(this._itemElements());\r\n            if ($closestItem.hasClass(\"dx-menu-item-has-submenu\")) {\r\n                this.option(\"focusedElement\", null);\r\n                return\r\n            }\r\n            _get(_getPrototypeOf(Menu.prototype), \"_itemPointerDownHandler\", this).call(this, e)\r\n        }\r\n    }, {\r\n        key: \"_hoverStartHandler\",\r\n        value: function(e) {\r\n            var mouseMoveEventName = (0, _index.addNamespace)(_pointer.default.move, this.NAME);\r\n            var $item = this._getItemElementByEventArgs(e);\r\n            var node = this._dataAdapter.getNodeByItem(this._getItemData($item));\r\n            var isSelectionActive = (0, _type.isDefined)(e.buttons) && 1 === e.buttons || !(0, _type.isDefined)(e.buttons) && 1 === e.which;\r\n            if (this._isItemDisabled($item)) {\r\n                return\r\n            }\r\n            _events_engine.default.off($item, mouseMoveEventName);\r\n            if (!this._hasChildren(node)) {\r\n                this._showSubmenuTimer = setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay(\"hide\"));\r\n                return\r\n            }\r\n            if (\"onHover\" === this._getShowFirstSubmenuMode() && !isSelectionActive) {\r\n                var submenu = this._getSubmenuByElement($item);\r\n                this._clearTimeouts();\r\n                if (!submenu.isOverlayVisible()) {\r\n                    _events_engine.default.on($item, mouseMoveEventName, this._itemMouseMoveHandler.bind(this));\r\n                    this._showSubmenuTimer = this._getDelay(\"hide\")\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hoverEndHandler\",\r\n        value: function(eventArg) {\r\n            var _this7 = this;\r\n            var $item = this._getItemElementByEventArgs(eventArg);\r\n            var relatedTarget = (0, _renderer.default)(eventArg.relatedTarget);\r\n            _get(_getPrototypeOf(Menu.prototype), \"_hoverEndHandler\", this).call(this, eventArg);\r\n            this._clearTimeouts();\r\n            if (this._isItemDisabled($item)) {\r\n                return\r\n            }\r\n            if (relatedTarget.hasClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)) {\r\n                return\r\n            }\r\n            if (this.option(\"hideSubmenuOnMouseLeave\") && !relatedTarget.hasClass(DX_MENU_ITEMS_CONTAINER_CLASS)) {\r\n                this._hideSubmenuTimer = setTimeout(function() {\r\n                    _this7._hideSubmenuAfterTimeout()\r\n                }, this._getDelay(\"hide\"))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_hideVisibleSubmenu\",\r\n        value: function() {\r\n            if (!this._visibleSubmenu) {\r\n                return false\r\n            }\r\n            this._hideSubmenu(this._visibleSubmenu);\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_showSubmenu\",\r\n        value: function($itemElement) {\r\n            var submenu = this._getSubmenuByElement($itemElement);\r\n            if (this._visibleSubmenu !== submenu) {\r\n                this._hideVisibleSubmenu()\r\n            }\r\n            if (submenu) {\r\n                this._clearTimeouts();\r\n                submenu.show();\r\n                this.option(\"focusedElement\", submenu.option(\"focusedElement\"))\r\n            }\r\n            this._visibleSubmenu = submenu;\r\n            this._hoveredRootItem = $itemElement\r\n        }\r\n    }, {\r\n        key: \"_hideSubmenu\",\r\n        value: function(submenu) {\r\n            submenu && submenu.hide();\r\n            if (this._visibleSubmenu === submenu) {\r\n                this._visibleSubmenu = null\r\n            }\r\n            this._hoveredRootItem = null\r\n        }\r\n    }, {\r\n        key: \"_itemMouseMoveHandler\",\r\n        value: function(e) {\r\n            var _this8 = this;\r\n            if (e.pointers && e.pointers.length) {\r\n                return\r\n            }\r\n            var $item = (0, _renderer.default)(e.currentTarget);\r\n            if (!(0, _type.isDefined)(this._showSubmenuTimer)) {\r\n                return\r\n            }\r\n            this._clearTimeouts();\r\n            this._showSubmenuTimer = setTimeout(function() {\r\n                var submenu = _this8._getSubmenuByElement($item);\r\n                if (submenu && !submenu.isOverlayVisible()) {\r\n                    _this8._showSubmenu($item)\r\n                }\r\n            }, this._getDelay(\"show\"))\r\n        }\r\n    }, {\r\n        key: \"_clearTimeouts\",\r\n        value: function() {\r\n            clearTimeout(this._hideSubmenuTimer);\r\n            clearTimeout(this._showSubmenuTimer)\r\n        }\r\n    }, {\r\n        key: \"_getSubmenuByElement\",\r\n        value: function($itemElement, itemData) {\r\n            var submenu = this._getSubmenuByRootElement($itemElement);\r\n            if (submenu) {\r\n                return submenu\r\n            } else {\r\n                itemData = itemData || this._getItemData($itemElement);\r\n                var node = this._dataAdapter.getNodeByItem(itemData);\r\n                return this._hasChildren(node) && this._renderSubmenuItems(node, $itemElement)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_updateSubmenuVisibilityOnClick\",\r\n        value: function(actionArgs) {\r\n            var args = actionArgs.args.length && actionArgs.args[0];\r\n            if (!args || this._disabledGetter(args.itemData)) {\r\n                return\r\n            }\r\n            var $itemElement = (0, _renderer.default)(args.itemElement);\r\n            var currentSubmenu = this._getSubmenuByElement($itemElement, args.itemData);\r\n            this._updateSelectedItemOnClick(actionArgs);\r\n            if (this._visibleSubmenu) {\r\n                if (this._visibleSubmenu === currentSubmenu) {\r\n                    if (\"onClick\" === this.option(\"showFirstSubmenuMode\")) {\r\n                        this._hideSubmenu(this._visibleSubmenu)\r\n                    }\r\n                    return\r\n                } else {\r\n                    this._hideSubmenu(this._visibleSubmenu)\r\n                }\r\n            }\r\n            if (!currentSubmenu) {\r\n                return\r\n            }\r\n            if (!currentSubmenu.isOverlayVisible()) {\r\n                this._showSubmenu($itemElement);\r\n                return\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            switch (args.name) {\r\n                case \"orientation\":\r\n                case \"submenuDirection\":\r\n                    this._invalidate();\r\n                    break;\r\n                case \"showFirstSubmenuMode\":\r\n                case \"hideSubmenuOnMouseLeave\":\r\n                    break;\r\n                case \"showSubmenuMode\":\r\n                    this._changeSubmenusOption(args.name, args.value);\r\n                    break;\r\n                case \"onSubmenuShowing\":\r\n                case \"onSubmenuShown\":\r\n                case \"onSubmenuHiding\":\r\n                case \"onSubmenuHidden\":\r\n                    this._initActions();\r\n                    break;\r\n                case \"adaptivityEnabled\":\r\n                    args.value ? this._initAdaptivity() : this._removeAdaptivity();\r\n                    break;\r\n                case \"width\":\r\n                    if (this._isAdaptivityEnabled()) {\r\n                        this._treeView.option(args.name, args.value);\r\n                        this._overlay.option(args.name, args.value)\r\n                    }\r\n                    _get(_getPrototypeOf(Menu.prototype), \"_optionChanged\", this).call(this, args);\r\n                    this._dimensionChanged();\r\n                    break;\r\n                case \"animation\":\r\n                    if (this._isAdaptivityEnabled()) {\r\n                        this._treeView.option(\"animationEnabled\", !!args.value)\r\n                    }\r\n                    _get(_getPrototypeOf(Menu.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                default:\r\n                    if (this._isAdaptivityEnabled()) {\r\n                        this._treeView.option(args.name, args.value)\r\n                    }\r\n                    _get(_getPrototypeOf(Menu.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_changeSubmenusOption\",\r\n        value: function(name, value) {\r\n            (0, _iterator.each)(this._submenus, function(index, submenu) {\r\n                submenu.option(name, value)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"selectItem\",\r\n        value: function(itemElement) {\r\n            this._hideSubmenu(this._visibleSubmenu);\r\n            _get(_getPrototypeOf(Menu.prototype), \"selectItem\", this).call(this, itemElement)\r\n        }\r\n    }, {\r\n        key: \"unselectItem\",\r\n        value: function(itemElement) {\r\n            this._hideSubmenu(this._visibleSubmenu);\r\n            _get(_getPrototypeOf(Menu.prototype), \"selectItem\", this).call(this, itemElement)\r\n        }\r\n    }]);\r\n    return Menu\r\n}(_ui.default);\r\n(0, _component_registrator.default)(\"dxMenu\", Menu);\r\nvar _default = Menu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.row_dragging.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.row_dragging\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"rowDragging\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/text_box/text_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.text_editor\"));\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar navigator = (0, _window.getNavigator)();\r\nvar ua = navigator.userAgent;\r\nvar ignoreKeys = [\"backspace\", \"tab\", \"enter\", \"pageUp\", \"pageDown\", \"end\", \"home\", \"leftArrow\", \"rightArrow\", \"downArrow\", \"upArrow\", \"del\"];\r\nvar TEXTBOX_CLASS = \"dx-textbox\";\r\nvar SEARCHBOX_CLASS = \"dx-searchbox\";\r\nvar ICON_CLASS = \"dx-icon\";\r\nvar SEARCH_ICON_CLASS = \"dx-icon-search\";\r\nvar TextBox = _ui.default.inherit({\r\n    ctor: function(element, options) {\r\n        if (options) {\r\n            this._showClearButton = options.showClearButton\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: \"\",\r\n            mode: \"text\",\r\n            maxLength: null\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(TEXTBOX_CLASS);\r\n        this.callBase();\r\n        this.setAria(\"role\", \"textbox\")\r\n    },\r\n    _renderContentImpl: function() {\r\n        this._renderMaxLengthHandlers();\r\n        this.callBase()\r\n    },\r\n    _renderInputType: function() {\r\n        this.callBase();\r\n        this._renderSearchMode()\r\n    },\r\n    _renderMaxLengthHandlers: function() {\r\n        if (this._isAndroidOrIE()) {\r\n            _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"keydown\", this.NAME), this._onKeyDownCutOffHandler.bind(this));\r\n            _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"change\", this.NAME), this._onChangeCutOffHandler.bind(this))\r\n        }\r\n    },\r\n    _renderProps: function() {\r\n        this.callBase();\r\n        this._toggleMaxLengthProp()\r\n    },\r\n    _toggleMaxLengthProp: function() {\r\n        var maxLength = this._getMaxLength();\r\n        if (maxLength && maxLength > 0) {\r\n            this._input().attr(\"maxLength\", maxLength)\r\n        } else {\r\n            this._input().removeAttr(\"maxLength\")\r\n        }\r\n    },\r\n    _renderSearchMode: function() {\r\n        var $element = this._$element;\r\n        if (\"search\" === this.option(\"mode\")) {\r\n            $element.addClass(SEARCHBOX_CLASS);\r\n            this._renderSearchIcon();\r\n            if (void 0 === this._showClearButton) {\r\n                this._showClearButton = this.option(\"showClearButton\");\r\n                this.option(\"showClearButton\", true)\r\n            }\r\n        } else {\r\n            $element.removeClass(SEARCHBOX_CLASS);\r\n            this._$searchIcon && this._$searchIcon.remove();\r\n            this.option(\"showClearButton\", void 0 === this._showClearButton ? this.option(\"showClearButton\") : this._showClearButton);\r\n            delete this._showClearButton\r\n        }\r\n    },\r\n    _renderSearchIcon: function() {\r\n        var $searchIcon = (0, _renderer.default)(\"<div>\").addClass(ICON_CLASS).addClass(SEARCH_ICON_CLASS);\r\n        $searchIcon.prependTo(this._input().parent());\r\n        this._$searchIcon = $searchIcon\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"maxLength\":\r\n                this._toggleMaxLengthProp();\r\n                this._renderMaxLengthHandlers();\r\n                break;\r\n            case \"mask\":\r\n                this.callBase(args);\r\n                this._toggleMaxLengthProp();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _onKeyDownCutOffHandler: function(e) {\r\n        var actualMaxLength = this._getMaxLength();\r\n        if (actualMaxLength && !e.ctrlKey) {\r\n            var $input = (0, _renderer.default)(e.target);\r\n            var key = (0, _index.normalizeKeyName)(e);\r\n            this._cutOffExtraChar($input);\r\n            return $input.val().length < actualMaxLength || (0, _array.inArray)(key, ignoreKeys) !== -1 || \"\" !== window.getSelection().toString()\r\n        } else {\r\n            return true\r\n        }\r\n    },\r\n    _onChangeCutOffHandler: function(e) {\r\n        var $input = (0, _renderer.default)(e.target);\r\n        if (this.option(\"maxLength\")) {\r\n            this._cutOffExtraChar($input)\r\n        }\r\n    },\r\n    _cutOffExtraChar: function($input) {\r\n        var actualMaxLength = this._getMaxLength();\r\n        var textInput = $input.val();\r\n        if (actualMaxLength && textInput.length > actualMaxLength) {\r\n            $input.val(textInput.substr(0, actualMaxLength))\r\n        }\r\n    },\r\n    _getMaxLength: function() {\r\n        var isMaskSpecified = !!this.option(\"mask\");\r\n        return isMaskSpecified ? null : this.option(\"maxLength\")\r\n    },\r\n    _isAndroidOrIE: function() {\r\n        var realDevice = _devices.default.real();\r\n        var version = realDevice.version.join(\".\");\r\n        return _browser.default.msie || \"android\" === realDevice.platform && version && /^(2\\.|4\\.1)/.test(version) && !/chrome/i.test(ua)\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxTextBox\", TextBox);\r\nvar _default = TextBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_day.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space_vertical\"));\r\nvar _layout = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/day/date_table/layout.j\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DAY_CLASS = \"dx-scheduler-work-space-day\";\r\nvar SchedulerWorkSpaceDay = function(_SchedulerWorkSpaceVe) {\r\n    _inherits(SchedulerWorkSpaceDay, _SchedulerWorkSpaceVe);\r\n    var _super = _createSuper(SchedulerWorkSpaceDay);\r\n\r\n    function SchedulerWorkSpaceDay() {\r\n        _classCallCheck(this, SchedulerWorkSpaceDay);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerWorkSpaceDay, [{\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return DAY_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getRowCount\",\r\n        value: function() {\r\n            return this._getCellCountInDay()\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            return this.option(\"intervalCount\")\r\n        }\r\n    }, {\r\n        key: \"_setFirstViewDate\",\r\n        value: function() {\r\n            this._firstViewDate = this._getViewStartByOptions();\r\n            this._setStartDayHour(this._firstViewDate)\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndex\",\r\n        value: function(headerIndex) {\r\n            if (1 === this.option(\"intervalCount\")) {\r\n                return this._firstViewDate\r\n            }\r\n            var resultDate = new Date(this._firstViewDate);\r\n            resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n            return resultDate\r\n        }\r\n    }, {\r\n        key: \"_renderDateHeader\",\r\n        value: function() {\r\n            return 1 === this.option(\"intervalCount\") ? null : _get(_getPrototypeOf(SchedulerWorkSpaceDay.prototype), \"_renderDateHeader\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"renderRDateTable\",\r\n        value: function() {\r\n            this.renderRComponent(this._$dateTable, _layout.default, \"renovatedDateTable\", {\r\n                viewData: this.viewDataProvider.viewData,\r\n                dataCellTemplate: this.option(\"dataCellTemplate\")\r\n            })\r\n        }\r\n    }]);\r\n    return SchedulerWorkSpaceDay\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceDay\", SchedulerWorkSpaceDay);\r\nvar _default = SchedulerWorkSpaceDay;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/text_box/ui.text_editor.clear.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _button = _interopRequireDefault(require(\"./texteditor_button_collection/button\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _click = require(\"../../events/click\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar pointerDown = _pointer.default.down;\r\nvar STATE_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar TEXTEDITOR_CLEAR_BUTTON_CLASS = \"dx-clear-button-area\";\r\nvar TEXTEDITOR_CLEAR_ICON_CLASS = \"dx-icon-clear\";\r\nvar TEXTEDITOR_ICON_CLASS = \"dx-icon\";\r\nvar TEXTEDITOR_SHOW_CLEAR_BUTTON_CLASS = \"dx-show-clear-button\";\r\nvar ClearButton = function(_TextEditorButton) {\r\n    _inherits(ClearButton, _TextEditorButton);\r\n    var _super = _createSuper(ClearButton);\r\n\r\n    function ClearButton() {\r\n        _classCallCheck(this, ClearButton);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(ClearButton, [{\r\n        key: \"_create\",\r\n        value: function() {\r\n            var $element = (0, _renderer.default)(\"<span>\").addClass(TEXTEDITOR_CLEAR_BUTTON_CLASS).append((0, _renderer.default)(\"<span>\").addClass(TEXTEDITOR_ICON_CLASS).addClass(TEXTEDITOR_CLEAR_ICON_CLASS));\r\n            this._addToContainer($element);\r\n            this.update(true);\r\n            return {\r\n                instance: $element,\r\n                $element: $element\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isVisible\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            return editor._isClearButtonVisible()\r\n        }\r\n    }, {\r\n        key: \"_attachEvents\",\r\n        value: function(instance, $button) {\r\n            var editor = this.editor;\r\n            var editorName = editor.NAME;\r\n            _events_engine.default.on($button, (0, _index.addNamespace)(pointerDown, editorName), function(e) {\r\n                \"mouse\" === e.pointerType ? e.preventDefault() : editor._clearValueHandler(e)\r\n            });\r\n            _events_engine.default.on($button, (0, _index.addNamespace)(_click.name, editorName), function(e) {\r\n                return editor._clearValueHandler(e)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_legacyRender\",\r\n        value: function($editor, isVisible) {\r\n            $editor.toggleClass(TEXTEDITOR_SHOW_CLEAR_BUTTON_CLASS, isVisible)\r\n        }\r\n    }, {\r\n        key: \"update\",\r\n        value: function() {\r\n            var rendered = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n            !rendered && _get(_getPrototypeOf(ClearButton.prototype), \"update\", this).call(this);\r\n            var editor = this.editor,\r\n                instance = this.instance;\r\n            var $editor = editor.$element();\r\n            var isVisible = this._isVisible();\r\n            instance && instance.toggleClass(STATE_INVISIBLE_CLASS, !isVisible);\r\n            this._legacyRender($editor, isVisible)\r\n        }\r\n    }]);\r\n    return ClearButton\r\n}(_button.default);\r\nexports.default = ClearButton;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (mobile/hide_callback.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.hideCallback = void 0;\r\nvar _array = require(\"../core/utils/array\");\r\nvar hideCallback = function() {\r\n    var callbacks = [];\r\n    return {\r\n        add: function(callback) {\r\n            var indexOfCallback = (0, _array.inArray)(callback, callbacks);\r\n            if (indexOfCallback === -1) {\r\n                callbacks.push(callback)\r\n            }\r\n        },\r\n        remove: function(callback) {\r\n            var indexOfCallback = (0, _array.inArray)(callback, callbacks);\r\n            if (indexOfCallback !== -1) {\r\n                callbacks.splice(indexOfCallback, 1)\r\n            }\r\n        },\r\n        fire: function() {\r\n            var callback = callbacks.pop();\r\n            var result = !!callback;\r\n            if (result) {\r\n                callback()\r\n            }\r\n            return result\r\n        },\r\n        hasCallback: function() {\r\n            return callbacks.length > 0\r\n        }\r\n    }\r\n}();\r\nexports.hideCallback = hideCallback;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.column_chooser.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_chooser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"columnChooser\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/text_box/ui.text_editor.mask.strategy.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar MASK_EVENT_NAMESPACE = \"dxMask\";\r\nvar BLUR_EVENT = \"blur beforedeactivate\";\r\nvar EMPTY_CHAR = \" \";\r\nvar BaseMaskStrategy = function() {\r\n    function BaseMaskStrategy(editor) {\r\n        _classCallCheck(this, BaseMaskStrategy);\r\n        this.editor = editor;\r\n        this.DIRECTION = {\r\n            FORWARD: \"forward\",\r\n            BACKWARD: \"backward\"\r\n        };\r\n        this.NAME = this._getStrategyName()\r\n    }\r\n    _createClass(BaseMaskStrategy, [{\r\n        key: \"_getStrategyName\",\r\n        value: function() {\r\n            return \"base\"\r\n        }\r\n    }, {\r\n        key: \"editorOption\",\r\n        value: function() {\r\n            var _this$editor;\r\n            return (_this$editor = this.editor).option.apply(_this$editor, arguments)\r\n        }\r\n    }, {\r\n        key: \"editorInput\",\r\n        value: function() {\r\n            return this.editor._input()\r\n        }\r\n    }, {\r\n        key: \"editorCaret\",\r\n        value: function(newCaret) {\r\n            if (!newCaret) {\r\n                return this.editor._caret()\r\n            }\r\n            this.editor._caret(newCaret)\r\n        }\r\n    }, {\r\n        key: \"getHandler\",\r\n        value: function(handlerName) {\r\n            var handler = this[\"_\".concat(handlerName, \"Handler\")] || function() {};\r\n            return handler.bind(this)\r\n        }\r\n    }, {\r\n        key: \"attachEvents\",\r\n        value: function() {\r\n            var _this = this;\r\n            var $input = this.editorInput();\r\n            this.getHandleEventNames().forEach(function(eventName) {\r\n                var subscriptionName = (0, _index.addNamespace)(eventName.toLowerCase(), MASK_EVENT_NAMESPACE);\r\n                _events_engine.default.on($input, subscriptionName, _this.getEventHandler(eventName))\r\n            });\r\n            this._attachChangeEventHandlers()\r\n        }\r\n    }, {\r\n        key: \"getHandleEventNames\",\r\n        value: function() {\r\n            return [\"focusIn\", \"focusOut\", \"keyDown\", \"input\", \"paste\", \"cut\", \"drop\"]\r\n        }\r\n    }, {\r\n        key: \"getEventHandler\",\r\n        value: function(eventName) {\r\n            return this[\"_\".concat(eventName, \"Handler\")].bind(this)\r\n        }\r\n    }, {\r\n        key: \"detachEvents\",\r\n        value: function() {\r\n            _events_engine.default.off(this.editorInput(), \".\".concat(MASK_EVENT_NAMESPACE))\r\n        }\r\n    }, {\r\n        key: \"_attachChangeEventHandlers\",\r\n        value: function() {\r\n            if ((0, _array.inArray)(\"change\", this.editorOption(\"valueChangeEvent\").split(\" \")) === -1) {\r\n                return\r\n            }\r\n            _events_engine.default.on(this.editorInput(), (0, _index.addNamespace)(BLUR_EVENT, MASK_EVENT_NAMESPACE), function(e) {\r\n                this._suppressCaretChanging(this._changeHandler, [e]);\r\n                this._changeHandler(e)\r\n            }.bind(this.editor))\r\n        }\r\n    }, {\r\n        key: \"_focusInHandler\",\r\n        value: function() {\r\n            this.editor._showMaskPlaceholder();\r\n            this.editor._direction(this.DIRECTION.FORWARD);\r\n            if (!this.editor._isValueEmpty() && this.editorOption(\"isValid\")) {\r\n                this.editor._adjustCaret()\r\n            } else {\r\n                var caret = this.editor._maskRulesChain.first();\r\n                this._caretTimeout = setTimeout(function() {\r\n                    this._caret({\r\n                        start: caret,\r\n                        end: caret\r\n                    })\r\n                }.bind(this.editor), 0)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_focusOutHandler\",\r\n        value: function(event) {\r\n            this.editor._changeHandler(event);\r\n            if (\"onFocus\" === this.editorOption(\"showMaskMode\") && this.editor._isValueEmpty()) {\r\n                this.editorOption(\"text\", \"\");\r\n                this.editor._renderDisplayText(\"\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_cutHandler\",\r\n        value: function(event) {\r\n            var caret = this.editorCaret();\r\n            var selectedText = this.editorInput().val().substring(caret.start, caret.end);\r\n            this.editor._maskKeyHandler(event, function() {\r\n                return (0, _dom.clipboardText)(event, selectedText)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_dropHandler\",\r\n        value: function() {\r\n            this._clearDragTimer();\r\n            this._dragTimer = setTimeout(function() {\r\n                this.option(\"value\", this._convertToValue(this._input().val()))\r\n            }.bind(this.editor))\r\n        }\r\n    }, {\r\n        key: \"_clearDragTimer\",\r\n        value: function() {\r\n            clearTimeout(this._dragTimer)\r\n        }\r\n    }, {\r\n        key: \"_keyDownHandler\",\r\n        value: function() {\r\n            this._keyPressHandled = false\r\n        }\r\n    }, {\r\n        key: \"_pasteHandler\",\r\n        value: function(event) {\r\n            var editor = this.editor;\r\n            this._keyPressHandled = true;\r\n            var caret = this.editorCaret();\r\n            editor._maskKeyHandler(event, function() {\r\n                var pastedText = (0, _dom.clipboardText)(event);\r\n                var restText = editor._maskRulesChain.text().substring(caret.end);\r\n                var accepted = editor._handleChain({\r\n                    text: pastedText,\r\n                    start: caret.start,\r\n                    length: pastedText.length\r\n                });\r\n                var newCaret = caret.start + accepted;\r\n                editor._handleChain({\r\n                    text: restText,\r\n                    start: newCaret,\r\n                    length: restText.length\r\n                });\r\n                editor._caret({\r\n                    start: newCaret,\r\n                    end: newCaret\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_autoFillHandler\",\r\n        value: function(event) {\r\n            var _this2 = this;\r\n            var editor = this.editor;\r\n            var inputVal = this.editorInput().val();\r\n            this._inputHandlerTimer = setTimeout(function() {\r\n                _this2._keyPressHandled = true;\r\n                if (_this2._isAutoFill()) {\r\n                    _this2._keyPressHandled = true;\r\n                    editor._maskKeyHandler(event, function() {\r\n                        editor._handleChain({\r\n                            text: inputVal,\r\n                            start: 0,\r\n                            length: inputVal.length\r\n                        })\r\n                    });\r\n                    editor._validateMask()\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_isAutoFill\",\r\n        value: function() {\r\n            var $input = this.editor._input();\r\n            var result = false;\r\n            if (_browser.default.msie && _browser.default.version > 11) {\r\n                result = $input.hasClass(\"edge-autofilled\")\r\n            } else {\r\n                if (_browser.default.webkit) {\r\n                    var input = $input.get(0);\r\n                    result = input && input.matches(\":-webkit-autofill\")\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"runWithoutEventProcessing\",\r\n        value: function(action) {\r\n            var keyPressHandled = this._keyPressHandled;\r\n            this._keyPressHandled = true;\r\n            action();\r\n            this._keyPressHandled = keyPressHandled\r\n        }\r\n    }, {\r\n        key: \"_backspaceHandler\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_delHandler\",\r\n        value: function(event) {\r\n            var editor = this.editor;\r\n            this._keyPressHandled = true;\r\n            editor._maskKeyHandler(event, function() {\r\n                return !editor._hasSelection() && editor._handleKey(EMPTY_CHAR)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"clean\",\r\n        value: function() {\r\n            this._clearDragTimer();\r\n            clearTimeout(this._backspaceHandlerTimeout);\r\n            clearTimeout(this._caretTimeout);\r\n            clearTimeout(this._inputHandlerTimer)\r\n        }\r\n    }]);\r\n    return BaseMaskStrategy\r\n}();\r\nexports.default = BaseMaskStrategy;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/week/date_table/layout.j.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../../../../core/component_registrator\"));\r\nvar _component = _interopRequireDefault(require(\"../../../../../preact_wrapper/component\"));\r\nvar _layout = require(\"./layout\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar WeekTableLayout = function(_BaseComponent) {\r\n    _inherits(WeekTableLayout, _BaseComponent);\r\n    var _super = _createSuper(WeekTableLayout);\r\n\r\n    function WeekTableLayout() {\r\n        _classCallCheck(this, WeekTableLayout);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(WeekTableLayout, [{\r\n        key: \"getProps\",\r\n        value: function() {\r\n            var props = _get(_getPrototypeOf(WeekTableLayout.prototype), \"getProps\", this).call(this);\r\n            props.dataCellTemplate = this._createTemplateComponent(props, props.dataCellTemplate);\r\n            return props\r\n        }\r\n    }, {\r\n        key: \"_propsInfo\",\r\n        get: function() {\r\n            return {\r\n                twoWay: [],\r\n                allowNull: [],\r\n                elements: []\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_viewComponent\",\r\n        get: function() {\r\n            return _layout.WeekTableLayout\r\n        }\r\n    }]);\r\n    return WeekTableLayout\r\n}(_component.default);\r\nexports.default = WeekTableLayout;\r\n(0, _component_registrator.default)(\"dxWeekTableLayout\", WeekTableLayout);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/widget/selectors.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.focused = exports.tabbable = exports.focusable = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar focusableFn = function(element, tabIndex) {\r\n    if (!visible(element)) {\r\n        return false\r\n    }\r\n    var nodeName = element.nodeName.toLowerCase();\r\n    var isTabIndexNotNaN = !isNaN(tabIndex);\r\n    var isDisabled = element.disabled;\r\n    var isDefaultFocus = /^(input|select|textarea|button|object|iframe)$/.test(nodeName);\r\n    var isHyperlink = \"a\" === nodeName;\r\n    var isFocusable = true;\r\n    var isContentEditable = element.isContentEditable;\r\n    if (isDefaultFocus || isContentEditable) {\r\n        isFocusable = !isDisabled\r\n    } else {\r\n        if (isHyperlink) {\r\n            isFocusable = element.href || isTabIndexNotNaN\r\n        } else {\r\n            isFocusable = isTabIndexNotNaN\r\n        }\r\n    }\r\n    return isFocusable\r\n};\r\n\r\nfunction visible(element) {\r\n    var $element = (0, _renderer.default)(element);\r\n    return $element.is(\":visible\") && \"hidden\" !== $element.css(\"visibility\") && \"hidden\" !== $element.parents().css(\"visibility\")\r\n}\r\nvar focusable = function(index, element) {\r\n    return focusableFn(element, (0, _renderer.default)(element).attr(\"tabIndex\"))\r\n};\r\nexports.focusable = focusable;\r\nvar tabbable = function(index, element) {\r\n    var tabIndex = (0, _renderer.default)(element).attr(\"tabIndex\");\r\n    return (isNaN(tabIndex) || tabIndex >= 0) && focusableFn(element, tabIndex)\r\n};\r\nexports.tabbable = tabbable;\r\nvar focused = function($element) {\r\n    var element = (0, _renderer.default)($element).get(0);\r\n    return _dom_adapter.default.getActiveElement() === element\r\n};\r\nexports.focused = focused;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.date_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_view\"));\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.strategy\"));\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DateViewStrategy = _uiDate_box.default.inherit({\r\n    NAME: \"DateView\",\r\n    getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            openOnFieldClick: true,\r\n            applyButtonText: _message.default.format(\"OK\"),\r\n            \"dropDownOptions.showTitle\": true\r\n        })\r\n    },\r\n    getDisplayFormat: function(displayFormat) {\r\n        return displayFormat || _ui2.default.FORMATS_MAP[this.dateBox.option(\"type\")]\r\n    },\r\n    popupConfig: function(config) {\r\n        return {\r\n            toolbarItems: this.dateBox._popupToolbarItemsConfig(),\r\n            onInitialized: config.onInitialized,\r\n            defaultOptionsRules: [{\r\n                device: {\r\n                    platform: \"android\"\r\n                },\r\n                options: {\r\n                    width: 333,\r\n                    height: 331\r\n                }\r\n            }, {\r\n                device: function(_device) {\r\n                    var platform = _device.platform;\r\n                    return \"generic\" === platform || \"ios\" === platform\r\n                },\r\n                options: {\r\n                    width: \"auto\",\r\n                    height: \"auto\"\r\n                }\r\n            }, {\r\n                device: function(_device2) {\r\n                    var platform = _device2.platform;\r\n                    var phone = _device2.phone;\r\n                    return \"generic\" === platform && phone\r\n                },\r\n                options: {\r\n                    width: 333,\r\n                    maxWidth: \"100%\",\r\n                    maxHeight: \"100%\",\r\n                    height: \"auto\",\r\n                    position: {\r\n                        collision: \"flipfit flip\"\r\n                    }\r\n                }\r\n            }, {\r\n                device: {\r\n                    platform: \"ios\",\r\n                    phone: true\r\n                },\r\n                options: {\r\n                    width: \"100%\",\r\n                    position: {\r\n                        my: \"bottom\",\r\n                        at: \"bottom\",\r\n                        of: window\r\n                    }\r\n                }\r\n            }]\r\n        }\r\n    },\r\n    _renderWidget: function() {\r\n        if ((0, _support.inputType)(this.dateBox.option(\"mode\")) && this.dateBox._isNativeType() || this.dateBox.option(\"readOnly\")) {\r\n            if (this._widget) {\r\n                this._widget.$element().remove();\r\n                this._widget = null\r\n            }\r\n            return\r\n        }\r\n        var popup = this._getPopup();\r\n        if (this._widget) {\r\n            this._widget.option(this._getWidgetOptions())\r\n        } else {\r\n            var element = (0, _renderer.default)(\"<div>\").appendTo(popup.$content());\r\n            this._widget = this._createWidget(element)\r\n        }\r\n        this._widget.$element().appendTo(this._getWidgetContainer())\r\n    },\r\n    _getWidgetName: function() {\r\n        return _ui.default\r\n    },\r\n    renderOpenedState: function() {\r\n        this.callBase();\r\n        if (this._widget) {\r\n            this._widget.option(\"value\", this._widget._getCurrentDate())\r\n        }\r\n    },\r\n    _getWidgetOptions: function() {\r\n        return {\r\n            value: this.dateBoxValue() || new Date,\r\n            type: this.dateBox.option(\"type\"),\r\n            minDate: this.dateBox.dateOption(\"min\") || new Date(1900, 0, 1),\r\n            maxDate: this.dateBox.dateOption(\"max\") || new Date(Date.now() + 50 * _ui2.default.ONE_YEAR),\r\n            onDisposing: function() {\r\n                this._widget = null\r\n            }.bind(this)\r\n        }\r\n    }\r\n});\r\nvar _default = DateViewStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (animation/presets/presets.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.PresetCollection = exports.presets = void 0;\r\nvar _component = _interopRequireDefault(require(\"../../core/component\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _fx = _interopRequireDefault(require(\"../fx\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar directionPostfixes = {\r\n    forward: \" dx-forward\",\r\n    backward: \" dx-backward\",\r\n    none: \" dx-no-direction\",\r\n    undefined: \" dx-no-direction\"\r\n};\r\nvar optionPrefix = \"preset_\";\r\nvar AnimationPresetCollection = _component.default.inherit({\r\n    ctor: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._registeredPresets = [];\r\n        this.resetToDefaults()\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            defaultAnimationDuration: 400,\r\n            defaultAnimationDelay: 0,\r\n            defaultStaggerAnimationDuration: 300,\r\n            defaultStaggerAnimationDelay: 40,\r\n            defaultStaggerAnimationStartDelay: 500\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function(_device) {\r\n                return _device.phone\r\n            },\r\n            options: {\r\n                defaultStaggerAnimationDuration: 350,\r\n                defaultStaggerAnimationDelay: 50,\r\n                defaultStaggerAnimationStartDelay: 0\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return _devices.default.current().android || _devices.default.real.android\r\n            },\r\n            options: {\r\n                defaultAnimationDelay: 100\r\n            }\r\n        }])\r\n    },\r\n    _getPresetOptionName: function(animationName) {\r\n        return optionPrefix + animationName\r\n    },\r\n    _createAndroidSlideAnimationConfig: function(throughOpacity, widthMultiplier) {\r\n        var that = this;\r\n        var createBaseConfig = function(configModifier) {\r\n            return {\r\n                type: \"slide\",\r\n                delay: void 0 === configModifier.delay ? that.option(\"defaultAnimationDelay\") : configModifier.delay,\r\n                duration: void 0 === configModifier.duration ? that.option(\"defaultAnimationDuration\") : configModifier.duration\r\n            }\r\n        };\r\n        return {\r\n            enter: function($element, configModifier) {\r\n                var width = $element.parent().width() * widthMultiplier;\r\n                var direction = configModifier.direction;\r\n                var config = createBaseConfig(configModifier);\r\n                config.to = {\r\n                    left: 0,\r\n                    opacity: 1\r\n                };\r\n                if (\"forward\" === direction) {\r\n                    config.from = {\r\n                        left: width,\r\n                        opacity: throughOpacity\r\n                    }\r\n                } else {\r\n                    if (\"backward\" === direction) {\r\n                        config.from = {\r\n                            left: -width,\r\n                            opacity: throughOpacity\r\n                        }\r\n                    } else {\r\n                        config.from = {\r\n                            left: 0,\r\n                            opacity: 0\r\n                        }\r\n                    }\r\n                }\r\n                return _fx.default.createAnimation($element, config)\r\n            },\r\n            leave: function($element, configModifier) {\r\n                var width = $element.parent().width() * widthMultiplier;\r\n                var direction = configModifier.direction;\r\n                var config = createBaseConfig(configModifier);\r\n                config.from = {\r\n                    left: 0,\r\n                    opacity: 1\r\n                };\r\n                if (\"forward\" === direction) {\r\n                    config.to = {\r\n                        left: -width,\r\n                        opacity: throughOpacity\r\n                    }\r\n                } else {\r\n                    if (\"backward\" === direction) {\r\n                        config.to = {\r\n                            left: width,\r\n                            opacity: throughOpacity\r\n                        }\r\n                    } else {\r\n                        config.to = {\r\n                            left: 0,\r\n                            opacity: 0\r\n                        }\r\n                    }\r\n                }\r\n                return _fx.default.createAnimation($element, config)\r\n            }\r\n        }\r\n    },\r\n    _createOpenDoorConfig: function() {\r\n        var that = this;\r\n        var createBaseConfig = function(configModifier) {\r\n            return {\r\n                type: \"css\",\r\n                extraCssClasses: \"dx-opendoor-animation\",\r\n                delay: void 0 === configModifier.delay ? that.option(\"defaultAnimationDelay\") : configModifier.delay,\r\n                duration: void 0 === configModifier.duration ? that.option(\"defaultAnimationDuration\") : configModifier.duration\r\n            }\r\n        };\r\n        return {\r\n            enter: function($element, configModifier) {\r\n                var direction = configModifier.direction;\r\n                var config = createBaseConfig(configModifier);\r\n                config.delay = \"none\" === direction ? config.delay : config.duration;\r\n                config.from = \"dx-enter dx-opendoor-animation\" + directionPostfixes[direction];\r\n                config.to = \"dx-enter-active\";\r\n                return _fx.default.createAnimation($element, config)\r\n            },\r\n            leave: function($element, configModifier) {\r\n                var direction = configModifier.direction;\r\n                var config = createBaseConfig(configModifier);\r\n                config.from = \"dx-leave dx-opendoor-animation\" + directionPostfixes[direction];\r\n                config.to = \"dx-leave-active\";\r\n                return _fx.default.createAnimation($element, config)\r\n            }\r\n        }\r\n    },\r\n    _createWinPopConfig: function() {\r\n        var that = this;\r\n        var baseConfig = {\r\n            type: \"css\",\r\n            extraCssClasses: \"dx-win-pop-animation\",\r\n            duration: that.option(\"defaultAnimationDuration\")\r\n        };\r\n        return {\r\n            enter: function($element, configModifier) {\r\n                var config = baseConfig;\r\n                var direction = configModifier.direction;\r\n                config.delay = \"none\" === direction ? that.option(\"defaultAnimationDelay\") : that.option(\"defaultAnimationDuration\") / 2;\r\n                config.from = \"dx-enter dx-win-pop-animation\" + directionPostfixes[direction];\r\n                config.to = \"dx-enter-active\";\r\n                return _fx.default.createAnimation($element, config)\r\n            },\r\n            leave: function($element, configModifier) {\r\n                var config = baseConfig;\r\n                var direction = configModifier.direction;\r\n                config.delay = that.option(\"defaultAnimationDelay\");\r\n                config.from = \"dx-leave dx-win-pop-animation\" + directionPostfixes[direction];\r\n                config.to = \"dx-leave-active\";\r\n                return _fx.default.createAnimation($element, config)\r\n            }\r\n        }\r\n    },\r\n    resetToDefaults: function() {\r\n        this.clear();\r\n        this.registerDefaultPresets();\r\n        this.applyChanges()\r\n    },\r\n    clear: function(name) {\r\n        var that = this;\r\n        var newRegisteredPresets = [];\r\n        (0, _iterator.each)(this._registeredPresets, function(index, preset) {\r\n            if (!name || name === preset.name) {\r\n                that.option(that._getPresetOptionName(preset.name), void 0)\r\n            } else {\r\n                newRegisteredPresets.push(preset)\r\n            }\r\n        });\r\n        this._registeredPresets = newRegisteredPresets;\r\n        this.applyChanges()\r\n    },\r\n    registerPreset: function(name, config) {\r\n        this._registeredPresets.push({\r\n            name: name,\r\n            config: config\r\n        })\r\n    },\r\n    applyChanges: function() {\r\n        var that = this;\r\n        var customRules = [];\r\n        (0, _iterator.each)(this._registeredPresets, function(index, preset) {\r\n            var rule = {\r\n                device: preset.config.device,\r\n                options: {}\r\n            };\r\n            rule.options[that._getPresetOptionName(preset.name)] = preset.config.animation;\r\n            customRules.push(rule)\r\n        });\r\n        this._setOptionsByDevice(customRules)\r\n    },\r\n    getPreset: function(name) {\r\n        var result = name;\r\n        while (\"string\" === typeof result) {\r\n            result = this.option(this._getPresetOptionName(result))\r\n        }\r\n        return result\r\n    },\r\n    registerDefaultPresets: function() {\r\n        this.registerPreset(\"pop\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-android-pop-animation\",\r\n                delay: this.option(\"defaultAnimationDelay\"),\r\n                duration: this.option(\"defaultAnimationDuration\")\r\n            }\r\n        });\r\n        this.registerPreset(\"openDoor\", {\r\n            animation: this._createOpenDoorConfig()\r\n        });\r\n        this.registerPreset(\"win-pop\", {\r\n            animation: this._createWinPopConfig()\r\n        });\r\n        this.registerPreset(\"fade\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-fade-animation\",\r\n                delay: this.option(\"defaultAnimationDelay\"),\r\n                duration: this.option(\"defaultAnimationDuration\")\r\n            }\r\n        });\r\n        this.registerPreset(\"slide\", {\r\n            device: function() {\r\n                return _devices.default.current().android || _devices.default.real.android\r\n            },\r\n            animation: this._createAndroidSlideAnimationConfig(1, 1)\r\n        });\r\n        this.registerPreset(\"slide\", {\r\n            device: function() {\r\n                return !_devices.default.current().android && !_devices.default.real.android\r\n            },\r\n            animation: {\r\n                extraCssClasses: \"dx-slide-animation\",\r\n                delay: this.option(\"defaultAnimationDelay\"),\r\n                duration: this.option(\"defaultAnimationDuration\")\r\n            }\r\n        });\r\n        this.registerPreset(\"ios7-slide\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-ios7-slide-animation\",\r\n                delay: this.option(\"defaultAnimationDelay\"),\r\n                duration: this.option(\"defaultAnimationDuration\")\r\n            }\r\n        });\r\n        this.registerPreset(\"overflow\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-overflow-animation\",\r\n                delay: this.option(\"defaultAnimationDelay\"),\r\n                duration: this.option(\"defaultAnimationDuration\")\r\n            }\r\n        });\r\n        this.registerPreset(\"ios7-toolbar\", {\r\n            device: function() {\r\n                return !_devices.default.current().android && !_devices.default.real.android\r\n            },\r\n            animation: {\r\n                extraCssClasses: \"dx-ios7-toolbar-animation\",\r\n                delay: this.option(\"defaultAnimationDelay\"),\r\n                duration: this.option(\"defaultAnimationDuration\")\r\n            }\r\n        });\r\n        this.registerPreset(\"ios7-toolbar\", {\r\n            device: function() {\r\n                return _devices.default.current().android || _devices.default.real.android\r\n            },\r\n            animation: this._createAndroidSlideAnimationConfig(0, .4)\r\n        });\r\n        this.registerPreset(\"stagger-fade\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-fade-animation\",\r\n                staggerDelay: this.option(\"defaultStaggerAnimationDelay\"),\r\n                duration: this.option(\"defaultStaggerAnimationDuration\"),\r\n                delay: this.option(\"defaultStaggerAnimationStartDelay\")\r\n            }\r\n        });\r\n        this.registerPreset(\"stagger-slide\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-slide-animation\",\r\n                staggerDelay: this.option(\"defaultStaggerAnimationDelay\"),\r\n                duration: this.option(\"defaultStaggerAnimationDuration\"),\r\n                delay: this.option(\"defaultStaggerAnimationStartDelay\")\r\n            }\r\n        });\r\n        this.registerPreset(\"stagger-fade-slide\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-fade-slide-animation\",\r\n                staggerDelay: this.option(\"defaultStaggerAnimationDelay\"),\r\n                duration: this.option(\"defaultStaggerAnimationDuration\"),\r\n                delay: this.option(\"defaultStaggerAnimationStartDelay\")\r\n            }\r\n        });\r\n        this.registerPreset(\"stagger-drop\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-drop-animation\",\r\n                staggerDelay: this.option(\"defaultStaggerAnimationDelay\"),\r\n                duration: this.option(\"defaultStaggerAnimationDuration\"),\r\n                delay: this.option(\"defaultStaggerAnimationStartDelay\")\r\n            }\r\n        });\r\n        this.registerPreset(\"stagger-fade-drop\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-fade-drop-animation\",\r\n                staggerDelay: this.option(\"defaultStaggerAnimationDelay\"),\r\n                duration: this.option(\"defaultStaggerAnimationDuration\"),\r\n                delay: this.option(\"defaultStaggerAnimationStartDelay\")\r\n            }\r\n        });\r\n        this.registerPreset(\"stagger-fade-rise\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-fade-rise-animation\",\r\n                staggerDelay: this.option(\"defaultStaggerAnimationDelay\"),\r\n                duration: this.option(\"defaultStaggerAnimationDuration\"),\r\n                delay: this.option(\"defaultStaggerAnimationStartDelay\")\r\n            }\r\n        });\r\n        this.registerPreset(\"stagger-3d-drop\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-3d-drop-animation\",\r\n                staggerDelay: this.option(\"defaultStaggerAnimationDelay\"),\r\n                duration: this.option(\"defaultStaggerAnimationDuration\"),\r\n                delay: this.option(\"defaultStaggerAnimationStartDelay\")\r\n            }\r\n        });\r\n        this.registerPreset(\"stagger-fade-zoom\", {\r\n            animation: {\r\n                extraCssClasses: \"dx-fade-zoom-animation\",\r\n                staggerDelay: this.option(\"defaultStaggerAnimationDelay\"),\r\n                duration: this.option(\"defaultStaggerAnimationDuration\"),\r\n                delay: this.option(\"defaultStaggerAnimationStartDelay\")\r\n            }\r\n        })\r\n    }\r\n});\r\nexports.PresetCollection = AnimationPresetCollection;\r\nvar animationPresets = new AnimationPresetCollection;\r\nexports.presets = animationPresets;\r\n","/**\r\n * DevExtreme (viz/funnel/funnel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _tiling = require(\"./tiling\");\r\nvar _tiling2 = _interopRequireDefault(require(\"./tiling.funnel\"));\r\nvar _tiling3 = _interopRequireDefault(require(\"./tiling.pyramid\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _item = _interopRequireDefault(require(\"./item\"));\r\nvar _data_source = require(\"../core/data_source\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar NODES_CREATE_CHANGE = \"NODES_CREATE\";\r\n(0, _tiling.addAlgorithm)(\"dynamicslope\", _tiling2.default, true);\r\n(0, _tiling.addAlgorithm)(\"dynamicheight\", _tiling3.default);\r\n\r\nfunction invertFigure(figure) {\r\n    return figure.map(function(coord, index) {\r\n        return index % 2 ? 1 - coord : coord\r\n    })\r\n}\r\n\r\nfunction getLegendItemState(itemState) {\r\n    return {\r\n        fill: itemState.fill,\r\n        hatching: itemState.hatching\r\n    }\r\n}\r\nvar dxFunnel = _base_widget.default.inherit({\r\n    _rootClass: \"dxf-funnel\",\r\n    _rootClassPrefix: \"dxf\",\r\n    _proxyData: [],\r\n    _optionChangesMap: {\r\n        dataSource: \"DATA_SOURCE\",\r\n        neckWidth: NODES_CREATE_CHANGE,\r\n        neckHeight: NODES_CREATE_CHANGE,\r\n        inverted: NODES_CREATE_CHANGE,\r\n        algorithm: NODES_CREATE_CHANGE,\r\n        item: NODES_CREATE_CHANGE,\r\n        valueField: NODES_CREATE_CHANGE,\r\n        argumentField: NODES_CREATE_CHANGE,\r\n        colorField: NODES_CREATE_CHANGE,\r\n        palette: NODES_CREATE_CHANGE,\r\n        paletteExtensionMode: NODES_CREATE_CHANGE,\r\n        sortData: NODES_CREATE_CHANGE\r\n    },\r\n    _themeDependentChanges: [NODES_CREATE_CHANGE],\r\n    _getDefaultSize: function() {\r\n        return {\r\n            width: 400,\r\n            height: 400\r\n        }\r\n    },\r\n    _themeSection: \"funnel\",\r\n    _fontFields: [\"legend.title.font\", \"legend.title.subtitle.font\", \"legend.font\"],\r\n    _optionChangesOrder: [\"DATA_SOURCE\"],\r\n    _initialChanges: [\"DATA_SOURCE\"],\r\n    _initCore: function() {\r\n        this._group = this._renderer.g().append(this._renderer.root);\r\n        this._items = []\r\n    },\r\n    _eventsMap: {\r\n        onHoverChanged: {\r\n            name: \"hoverChanged\"\r\n        },\r\n        onSelectionChanged: {\r\n            name: \"selectionChanged\"\r\n        }\r\n    },\r\n    _disposeCore: _common.noop,\r\n    _applySize: function(rect) {\r\n        this._rect = rect.slice();\r\n        this._change([\"TILING\"]);\r\n        return this._rect\r\n    },\r\n    _getAlignmentRect: function() {\r\n        return this._rect\r\n    },\r\n    _change_TILING: function() {\r\n        var that = this;\r\n        var items = that._items;\r\n        var rect = that._rect;\r\n        var convertCoord = function(coord, index) {\r\n            var offset = index % 2;\r\n            return rect[0 + offset] + (rect[2 + offset] - rect[0 + offset]) * coord\r\n        };\r\n        this._group.clear();\r\n        items.forEach(function(item, index) {\r\n            var coords = item.figure.map(convertCoord);\r\n            var element = that._renderer.path([], \"area\").attr({\r\n                points: coords\r\n            }).append(that._group);\r\n            item.coords = coords;\r\n            item.element = element\r\n        });\r\n        this._requestChange([\"TILES\"])\r\n    },\r\n    _customChangesOrder: [NODES_CREATE_CHANGE, \"LAYOUT\", \"TILING\", \"TILES\", \"DRAWN\"],\r\n    _dataSourceChangedHandler: function() {\r\n        this._requestChange([NODES_CREATE_CHANGE])\r\n    },\r\n    _change_DRAWN: function() {\r\n        this._drawn()\r\n    },\r\n    _change_DATA_SOURCE: function() {\r\n        this._change([\"DRAWN\"]);\r\n        this._updateDataSource()\r\n    },\r\n    _change_NODES_CREATE: function() {\r\n        this._buildNodes()\r\n    },\r\n    _change_TILES: function() {\r\n        this._applyTilesAppearance()\r\n    },\r\n    _suspend: function() {\r\n        if (!this._applyingChanges) {\r\n            this._suspendChanges()\r\n        }\r\n    },\r\n    _resume: function() {\r\n        if (!this._applyingChanges) {\r\n            this._resumeChanges()\r\n        }\r\n    },\r\n    _applyTilesAppearance: function() {\r\n        this._items.forEach(function(item) {\r\n            var state = item.getState();\r\n            item.element.smartAttr(item.states[state])\r\n        })\r\n    },\r\n    _hitTestTargets: function(x, y) {\r\n        var that = this;\r\n        var data;\r\n        this._proxyData.some(function(callback) {\r\n            data = callback.call(that, x, y);\r\n            if (data) {\r\n                return true\r\n            }\r\n        });\r\n        return data\r\n    },\r\n    clearHover: function() {\r\n        this._suspend();\r\n        this._items.forEach(function(item) {\r\n            item.isHovered() && item.hover(false)\r\n        });\r\n        this._resume()\r\n    },\r\n    clearSelection: function() {\r\n        this._suspend();\r\n        this._items.forEach(function(item) {\r\n            item.isSelected() && item.select(false)\r\n        });\r\n        this._resume()\r\n    },\r\n    _getData: function() {\r\n        var that = this;\r\n        var data = that._dataSourceItems() || [];\r\n        var valueField = that._getOption(\"valueField\", true);\r\n        var argumentField = that._getOption(\"argumentField\", true);\r\n        var colorField = that._getOption(\"colorField\", true);\r\n        var processedData = data.reduce(function(d, item) {\r\n            var value = Number(item[valueField]);\r\n            if (value >= 0) {\r\n                d[0].push({\r\n                    value: value,\r\n                    color: item[colorField],\r\n                    argument: item[argumentField],\r\n                    dataItem: item\r\n                });\r\n                d[1] += value\r\n            }\r\n            return d\r\n        }, [\r\n            [], 0\r\n        ]);\r\n        var items = processedData[0];\r\n        if (!processedData[1]) {\r\n            items = items.map(function(item) {\r\n                item.value += 1;\r\n                return item\r\n            })\r\n        }\r\n        if (data.length > 0 && 0 === items.length) {\r\n            that._incidentOccurred(\"E2005\", valueField)\r\n        }\r\n        if (that._getOption(\"sortData\", true)) {\r\n            items.sort(function(a, b) {\r\n                return b.value - a.value\r\n            })\r\n        }\r\n        return items\r\n    },\r\n    _buildNodes: function() {\r\n        var that = this;\r\n        var data = that._getData();\r\n        var algorithm = (0, _tiling.getAlgorithm)(that._getOption(\"algorithm\", true));\r\n        var percents = algorithm.normalizeValues(data);\r\n        var itemOptions = that._getOption(\"item\");\r\n        var figures = algorithm.getFigures(percents, that._getOption(\"neckWidth\", true), that._getOption(\"neckHeight\", true));\r\n        var palette = that._themeManager.createPalette(that._getOption(\"palette\", true), {\r\n            useHighlight: true,\r\n            extensionMode: that._getOption(\"paletteExtensionMode\", true),\r\n            count: figures.length\r\n        });\r\n        that._items = figures.map(function(figure, index) {\r\n            var curData = data[index];\r\n            var node = new _item.default(that, {\r\n                figure: figure,\r\n                data: curData,\r\n                percent: percents[index],\r\n                id: index,\r\n                color: curData.color || palette.getNextColor(),\r\n                itemOptions: itemOptions\r\n            });\r\n            return node\r\n        });\r\n        if (that._getOption(\"inverted\", true)) {\r\n            that._items.forEach(function(item) {\r\n                item.figure = invertFigure(item.figure)\r\n            })\r\n        }\r\n        that._renderer.initHatching();\r\n        that._change([\"TILING\", \"DRAWN\"])\r\n    },\r\n    _showTooltip: _common.noop,\r\n    hideTooltip: _common.noop,\r\n    getAllItems: function() {\r\n        return this._items.slice()\r\n    },\r\n    _getLegendData: function() {\r\n        return this._items.map(function(item) {\r\n            var states = item.states;\r\n            return {\r\n                id: item.id,\r\n                visible: true,\r\n                text: item.argument,\r\n                item: item,\r\n                states: {\r\n                    normal: getLegendItemState(states.normal),\r\n                    hover: getLegendItemState(states.hover),\r\n                    selection: getLegendItemState(states.selection)\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _getMinSize: function() {\r\n        var adaptiveLayout = this._getOption(\"adaptiveLayout\");\r\n        return [adaptiveLayout.width, adaptiveLayout.height]\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxFunnel\", dxFunnel);\r\nvar _default = dxFunnel;\r\nexports.default = _default;\r\ndxFunnel.addPlugin(_data_source.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.modules\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n    modules: [],\r\n    foreachNodes: function(nodes, callBack) {\r\n        for (var i = 0; i < nodes.length; i++) {\r\n            if (false !== callBack(nodes[i]) && nodes[i].hasChildren && nodes[i].children.length) {\r\n                this.foreachNodes(nodes[i].children, callBack)\r\n            }\r\n        }\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/text_area.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _uiEventsEmitterGesture = _interopRequireDefault(require(\"../ui/scroll_view/ui.events.emitter.gesture.scroll\"));\r\nvar _size = require(\"../core/utils/size\");\r\nvar _utils = require(\"./text_box/utils.scroll\");\r\nvar _text_box = _interopRequireDefault(require(\"./text_box\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TEXTAREA_CLASS = \"dx-textarea\";\r\nvar TEXTEDITOR_INPUT_CLASS = \"dx-texteditor-input\";\r\nvar TEXTEDITOR_INPUT_CLASS_AUTO_RESIZE = \"dx-texteditor-input-auto-resize\";\r\nvar TextArea = _text_box.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            spellcheck: true,\r\n            minHeight: void 0,\r\n            maxHeight: void 0,\r\n            autoResizeEnabled: false\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(TEXTAREA_CLASS);\r\n        this.callBase();\r\n        this.setAria(\"multiline\", \"true\")\r\n    },\r\n    _renderContentImpl: function() {\r\n        this._updateInputHeight();\r\n        this.callBase()\r\n    },\r\n    _renderInput: function() {\r\n        this.callBase();\r\n        this._renderScrollHandler()\r\n    },\r\n    _createInput: function() {\r\n        var $input = (0, _renderer.default)(\"<textarea>\");\r\n        this._applyInputAttributes($input, this.option(\"inputAttr\"));\r\n        this._updateInputAutoResizeAppearance($input);\r\n        return $input\r\n    },\r\n    _applyInputAttributes: function($input, customAttributes) {\r\n        $input.attr(customAttributes).addClass(TEXTEDITOR_INPUT_CLASS)\r\n    },\r\n    _renderScrollHandler: function() {\r\n        this._eventY = 0;\r\n        var $input = this._input();\r\n        var initScrollData = (0, _utils.prepareScrollData)($input, true);\r\n        _events_engine.default.on($input, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.init, this.NAME), initScrollData, _common.noop);\r\n        _events_engine.default.on($input, (0, _index.addNamespace)(_pointer.default.down, this.NAME), this._pointerDownHandler.bind(this));\r\n        _events_engine.default.on($input, (0, _index.addNamespace)(_pointer.default.move, this.NAME), this._pointerMoveHandler.bind(this))\r\n    },\r\n    _pointerDownHandler: function(e) {\r\n        this._eventY = (0, _index.eventData)(e).y\r\n    },\r\n    _pointerMoveHandler: function(e) {\r\n        var currentEventY = (0, _index.eventData)(e).y;\r\n        var delta = this._eventY - currentEventY;\r\n        if ((0, _utils.allowScroll)(this._input(), delta)) {\r\n            e.isScrollingEvent = true;\r\n            e.stopPropagation()\r\n        }\r\n        this._eventY = currentEventY\r\n    },\r\n    _renderDimensions: function() {\r\n        var $element = this.$element();\r\n        var element = $element.get(0);\r\n        var width = this._getOptionValue(\"width\", element);\r\n        var height = this._getOptionValue(\"height\", element);\r\n        var minHeight = this.option(\"minHeight\");\r\n        var maxHeight = this.option(\"maxHeight\");\r\n        $element.css({\r\n            minHeight: void 0 !== minHeight ? minHeight : \"\",\r\n            maxHeight: void 0 !== maxHeight ? maxHeight : \"\",\r\n            width: width,\r\n            height: height\r\n        })\r\n    },\r\n    _resetDimensions: function() {\r\n        this.$element().css({\r\n            height: \"\",\r\n            minHeight: \"\",\r\n            maxHeight: \"\"\r\n        })\r\n    },\r\n    _renderEvents: function() {\r\n        if (this.option(\"autoResizeEnabled\")) {\r\n            _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"input paste\", this.NAME), this._updateInputHeight.bind(this))\r\n        }\r\n        this.callBase()\r\n    },\r\n    _refreshEvents: function() {\r\n        _events_engine.default.off(this._input(), (0, _index.addNamespace)(\"input paste\", this.NAME));\r\n        this.callBase()\r\n    },\r\n    _getHeightDifference: function($input) {\r\n        return (0, _size.getVerticalOffsets)(this._$element.get(0), false) + (0, _size.getVerticalOffsets)(this._$textEditorContainer.get(0), false) + (0, _size.getVerticalOffsets)(this._$textEditorInputContainer.get(0), false) + (0, _size.getElementBoxParams)(\"height\", (0, _window.getWindow)().getComputedStyle($input.get(0))).margin\r\n    },\r\n    _updateInputHeight: function() {\r\n        var $input = this._input();\r\n        var autoHeightResizing = void 0 === this.option(\"height\") && this.option(\"autoResizeEnabled\");\r\n        if (!autoHeightResizing) {\r\n            $input.css(\"height\", \"\");\r\n            return\r\n        } else {\r\n            this._resetDimensions();\r\n            this._$element.css(\"height\", this._$element.outerHeight())\r\n        }\r\n        $input.css(\"height\", 0);\r\n        var heightDifference = this._getHeightDifference($input);\r\n        this._renderDimensions();\r\n        var minHeight = this._getBoundaryHeight(\"minHeight\");\r\n        var maxHeight = this._getBoundaryHeight(\"maxHeight\");\r\n        var inputHeight = $input[0].scrollHeight;\r\n        if (void 0 !== minHeight) {\r\n            inputHeight = Math.max(inputHeight, minHeight - heightDifference)\r\n        }\r\n        if (void 0 !== maxHeight) {\r\n            var adjustedMaxHeight = maxHeight - heightDifference;\r\n            var needScroll = inputHeight > adjustedMaxHeight;\r\n            inputHeight = Math.min(inputHeight, adjustedMaxHeight);\r\n            this._updateInputAutoResizeAppearance($input, !needScroll)\r\n        }\r\n        $input.css(\"height\", inputHeight);\r\n        if (autoHeightResizing) {\r\n            this._$element.css(\"height\", \"auto\")\r\n        }\r\n    },\r\n    _getBoundaryHeight: function(optionName) {\r\n        var boundaryValue = this.option(optionName);\r\n        if ((0, _type.isDefined)(boundaryValue)) {\r\n            return \"number\" === typeof boundaryValue ? boundaryValue : (0, _size.parseHeight)(boundaryValue, this._$textEditorContainer.get(0))\r\n        }\r\n    },\r\n    _renderInputType: _common.noop,\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._updateInputHeight()\r\n        }\r\n    },\r\n    _updateInputAutoResizeAppearance: function($input, isAutoResizeEnabled) {\r\n        if ($input) {\r\n            var autoResizeEnabled = (0, _common.ensureDefined)(isAutoResizeEnabled, this.option(\"autoResizeEnabled\"));\r\n            $input.toggleClass(TEXTEDITOR_INPUT_CLASS_AUTO_RESIZE, autoResizeEnabled)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"autoResizeEnabled\":\r\n                this._updateInputAutoResizeAppearance(this._input(), args.value);\r\n                this._refreshEvents();\r\n                this._updateInputHeight();\r\n                break;\r\n            case \"value\":\r\n            case \"height\":\r\n                this.callBase(args);\r\n                this._updateInputHeight();\r\n                break;\r\n            case \"minHeight\":\r\n            case \"maxHeight\":\r\n                this._renderDimensions();\r\n                this._updateInputHeight();\r\n                break;\r\n            case \"visible\":\r\n                this.callBase(args);\r\n                args.value && this._updateInputHeight();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxTextArea\", TextArea);\r\nvar _default = TextArea;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (events/core/emitter.feedback.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.inactive = exports.active = exports.lock = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _index = require(\"../utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../pointer\"));\r\nvar _emitter = _interopRequireDefault(require(\"./emitter\"));\r\nvar _emitter_registrator = _interopRequireDefault(require(\"./emitter_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ACTIVE_EVENT_NAME = \"dxactive\";\r\nexports.active = ACTIVE_EVENT_NAME;\r\nvar INACTIVE_EVENT_NAME = \"dxinactive\";\r\nexports.inactive = INACTIVE_EVENT_NAME;\r\nvar ACTIVE_TIMEOUT = 30;\r\nvar INACTIVE_TIMEOUT = 400;\r\nvar FeedbackEvent = _class.default.inherit({\r\n    ctor: function(timeout, fire) {\r\n        this._timeout = timeout;\r\n        this._fire = fire\r\n    },\r\n    start: function() {\r\n        var that = this;\r\n        this._schedule(function() {\r\n            that.force()\r\n        })\r\n    },\r\n    _schedule: function(fn) {\r\n        this.stop();\r\n        this._timer = setTimeout(fn, this._timeout)\r\n    },\r\n    stop: function() {\r\n        clearTimeout(this._timer)\r\n    },\r\n    force: function() {\r\n        if (this._fired) {\r\n            return\r\n        }\r\n        this.stop();\r\n        this._fire();\r\n        this._fired = true\r\n    },\r\n    fired: function() {\r\n        return this._fired\r\n    }\r\n});\r\nvar activeFeedback;\r\nvar FeedbackEmitter = _emitter.default.inherit({\r\n    ctor: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._active = new FeedbackEvent(0, _common.noop);\r\n        this._inactive = new FeedbackEvent(0, _common.noop)\r\n    },\r\n    configure: function(data, eventName) {\r\n        switch (eventName) {\r\n            case ACTIVE_EVENT_NAME:\r\n                data.activeTimeout = data.timeout;\r\n                break;\r\n            case INACTIVE_EVENT_NAME:\r\n                data.inactiveTimeout = data.timeout\r\n        }\r\n        this.callBase(data)\r\n    },\r\n    start: function(e) {\r\n        if (activeFeedback) {\r\n            var activeChildExists = (0, _dom.contains)(this.getElement().get(0), activeFeedback.getElement().get(0));\r\n            var childJustActivated = !activeFeedback._active.fired();\r\n            if (activeChildExists && childJustActivated) {\r\n                this._cancel();\r\n                return\r\n            }\r\n            activeFeedback._inactive.force()\r\n        }\r\n        activeFeedback = this;\r\n        this._initEvents(e);\r\n        this._active.start()\r\n    },\r\n    _initEvents: function(e) {\r\n        var that = this;\r\n        var eventTarget = this._getEmitterTarget(e);\r\n        var mouseEvent = (0, _index.isMouseEvent)(e);\r\n        var isSimulator = _devices.default.isSimulator();\r\n        var deferFeedback = isSimulator || !mouseEvent;\r\n        var activeTimeout = (0, _common.ensureDefined)(this.activeTimeout, ACTIVE_TIMEOUT);\r\n        var inactiveTimeout = (0, _common.ensureDefined)(this.inactiveTimeout, INACTIVE_TIMEOUT);\r\n        this._active = new FeedbackEvent(deferFeedback ? activeTimeout : 0, function() {\r\n            that._fireEvent(ACTIVE_EVENT_NAME, e, {\r\n                target: eventTarget\r\n            })\r\n        });\r\n        this._inactive = new FeedbackEvent(deferFeedback ? inactiveTimeout : 0, function() {\r\n            that._fireEvent(INACTIVE_EVENT_NAME, e, {\r\n                target: eventTarget\r\n            });\r\n            activeFeedback = null\r\n        })\r\n    },\r\n    cancel: function(e) {\r\n        this.end(e)\r\n    },\r\n    end: function(e) {\r\n        var skipTimers = e.type !== _pointer.default.up;\r\n        if (skipTimers) {\r\n            this._active.stop()\r\n        } else {\r\n            this._active.force()\r\n        }\r\n        this._inactive.start();\r\n        if (skipTimers) {\r\n            this._inactive.force()\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._active.stop();\r\n        this._inactive.stop();\r\n        if (activeFeedback === this) {\r\n            activeFeedback = null\r\n        }\r\n        this.callBase()\r\n    },\r\n    lockInactive: function() {\r\n        this._active.force();\r\n        this._inactive.stop();\r\n        activeFeedback = null;\r\n        this._cancel();\r\n        return this._inactive.force.bind(this._inactive)\r\n    }\r\n});\r\nFeedbackEmitter.lock = function(deferred) {\r\n    var lockInactive = activeFeedback ? activeFeedback.lockInactive() : _common.noop;\r\n    deferred.done(lockInactive)\r\n};\r\n(0, _emitter_registrator.default)({\r\n    emitter: FeedbackEmitter,\r\n    events: [ACTIVE_EVENT_NAME, INACTIVE_EVENT_NAME]\r\n});\r\nvar lock = FeedbackEmitter.lock;\r\nexports.lock = lock;\r\n","/**\r\n * DevExtreme (animation/fx.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\nvar _element = require(\"../core/element\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _translator = require(\"./translator\");\r\nvar _easing = require(\"./easing\");\r\nvar _frame = require(\"./frame\");\r\nvar _support = require(\"../core/utils/support\");\r\nvar _position = _interopRequireDefault(require(\"./position\"));\r\nvar _remove_event = _interopRequireDefault(require(\"../core/remove_event\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _common = require(\"../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar removeEventName = (0, _index.addNamespace)(_remove_event.default, \"dxFX\");\r\nvar RELATIVE_VALUE_REGEX = /^([+-])=(.*)/i;\r\nvar ANIM_DATA_KEY = \"dxAnimData\";\r\nvar ANIM_QUEUE_KEY = \"dxAnimQueue\";\r\nvar TRANSFORM_PROP = \"transform\";\r\nvar TransitionAnimationStrategy = {\r\n    initAnimation: function($element, config) {\r\n        $element.css({\r\n            transitionProperty: \"none\"\r\n        });\r\n        if (\"string\" === typeof config.from) {\r\n            $element.addClass(config.from)\r\n        } else {\r\n            setProps($element, config.from)\r\n        }\r\n        var that = this;\r\n        var deferred = new _deferred.Deferred;\r\n        var cleanupWhen = config.cleanupWhen;\r\n        config.transitionAnimation = {\r\n            deferred: deferred,\r\n            finish: function() {\r\n                that._finishTransition($element);\r\n                if (cleanupWhen) {\r\n                    (0, _deferred.when)(deferred, cleanupWhen).always(function() {\r\n                        that._cleanup($element, config)\r\n                    })\r\n                } else {\r\n                    that._cleanup($element, config)\r\n                }\r\n                deferred.resolveWith($element, [config, $element])\r\n            }\r\n        };\r\n        this._completeAnimationCallback($element, config).done(function() {\r\n            config.transitionAnimation.finish()\r\n        }).fail(function() {\r\n            deferred.rejectWith($element, [config, $element])\r\n        });\r\n        if (!config.duration) {\r\n            config.transitionAnimation.finish()\r\n        }\r\n        $element.css(\"transform\")\r\n    },\r\n    animate: function($element, config) {\r\n        this._startAnimation($element, config);\r\n        return config.transitionAnimation.deferred.promise()\r\n    },\r\n    _completeAnimationCallback: function($element, config) {\r\n        var that = this;\r\n        var startTime = Date.now() + config.delay;\r\n        var deferred = new _deferred.Deferred;\r\n        var transitionEndFired = new _deferred.Deferred;\r\n        var simulatedTransitionEndFired = new _deferred.Deferred;\r\n        var simulatedEndEventTimer;\r\n        var transitionEndEventFullName = (0, _support.transitionEndEventName)() + \".dxFX\";\r\n        config.transitionAnimation.cleanup = function() {\r\n            clearTimeout(simulatedEndEventTimer);\r\n            clearTimeout(waitForJSCompleteTimer);\r\n            _events_engine.default.off($element, transitionEndEventFullName);\r\n            _events_engine.default.off($element, removeEventName)\r\n        };\r\n        _events_engine.default.one($element, transitionEndEventFullName, function() {\r\n            if (Date.now() - startTime >= config.duration) {\r\n                transitionEndFired.reject()\r\n            }\r\n        });\r\n        _events_engine.default.off($element, removeEventName);\r\n        _events_engine.default.on($element, removeEventName, function() {\r\n            that.stop($element, config);\r\n            deferred.reject()\r\n        });\r\n        var waitForJSCompleteTimer = setTimeout(function() {\r\n            simulatedEndEventTimer = setTimeout(function() {\r\n                simulatedTransitionEndFired.reject()\r\n            }, config.duration + config.delay + fx._simulatedTransitionEndDelay);\r\n            (0, _deferred.when)(transitionEndFired, simulatedTransitionEndFired).fail(function() {\r\n                deferred.resolve()\r\n            }.bind(this))\r\n        });\r\n        return deferred.promise()\r\n    },\r\n    _startAnimation: function($element, config) {\r\n        $element.css({\r\n            transitionProperty: \"all\",\r\n            transitionDelay: config.delay + \"ms\",\r\n            transitionDuration: config.duration + \"ms\",\r\n            transitionTimingFunction: config.easing\r\n        });\r\n        if (\"string\" === typeof config.to) {\r\n            $element[0].className += \" \" + config.to\r\n        } else {\r\n            if (config.to) {\r\n                setProps($element, config.to)\r\n            }\r\n        }\r\n    },\r\n    _finishTransition: function($element) {\r\n        $element.css(\"transition\", \"none\")\r\n    },\r\n    _cleanup: function($element, config) {\r\n        config.transitionAnimation.cleanup();\r\n        if (\"string\" === typeof config.from) {\r\n            $element.removeClass(config.from);\r\n            $element.removeClass(config.to)\r\n        }\r\n    },\r\n    stop: function($element, config, jumpToEnd) {\r\n        if (!config) {\r\n            return\r\n        }\r\n        if (jumpToEnd) {\r\n            config.transitionAnimation.finish()\r\n        } else {\r\n            if ((0, _type.isPlainObject)(config.to)) {\r\n                (0, _iterator.each)(config.to, function(key) {\r\n                    $element.css(key, $element.css(key))\r\n                })\r\n            }\r\n            this._finishTransition($element);\r\n            this._cleanup($element, config)\r\n        }\r\n    }\r\n};\r\nvar FrameAnimationStrategy = {\r\n    initAnimation: function($element, config) {\r\n        setProps($element, config.from)\r\n    },\r\n    animate: function($element, config) {\r\n        var deferred = new _deferred.Deferred;\r\n        var that = this;\r\n        if (!config) {\r\n            return deferred.reject().promise()\r\n        }(0, _iterator.each)(config.to, function(prop) {\r\n            if (void 0 === config.from[prop]) {\r\n                config.from[prop] = that._normalizeValue($element.css(prop))\r\n            }\r\n        });\r\n        if (config.to[TRANSFORM_PROP]) {\r\n            config.from[TRANSFORM_PROP] = that._parseTransform(config.from[TRANSFORM_PROP]);\r\n            config.to[TRANSFORM_PROP] = that._parseTransform(config.to[TRANSFORM_PROP])\r\n        }\r\n        config.frameAnimation = {\r\n            to: config.to,\r\n            from: config.from,\r\n            currentValue: config.from,\r\n            easing: (0, _easing.convertTransitionTimingFuncToEasing)(config.easing),\r\n            duration: config.duration,\r\n            startTime: (new Date).valueOf(),\r\n            finish: function() {\r\n                this.currentValue = this.to;\r\n                this.draw();\r\n                (0, _frame.cancelAnimationFrame)(config.frameAnimation.animationFrameId);\r\n                deferred.resolve()\r\n            },\r\n            draw: function() {\r\n                if (config.draw) {\r\n                    config.draw(this.currentValue);\r\n                    return\r\n                }\r\n                var currentValue = (0, _extend.extend)({}, this.currentValue);\r\n                if (currentValue[TRANSFORM_PROP]) {\r\n                    currentValue[TRANSFORM_PROP] = (0, _iterator.map)(currentValue[TRANSFORM_PROP], function(value, prop) {\r\n                        if (\"translate\" === prop) {\r\n                            return (0, _translator.getTranslateCss)(value)\r\n                        } else {\r\n                            if (\"scale\" === prop) {\r\n                                return \"scale(\" + value + \")\"\r\n                            } else {\r\n                                if (\"rotate\" === prop.substr(0, prop.length - 1)) {\r\n                                    return prop + \"(\" + value + \"deg)\"\r\n                                }\r\n                            }\r\n                        }\r\n                    }).join(\" \")\r\n                }\r\n                $element.css(currentValue)\r\n            }\r\n        };\r\n        if (config.delay) {\r\n            config.frameAnimation.startTime += config.delay;\r\n            config.frameAnimation.delayTimeout = setTimeout(function() {\r\n                that._startAnimation($element, config)\r\n            }, config.delay)\r\n        } else {\r\n            that._startAnimation($element, config)\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    _startAnimation: function($element, config) {\r\n        _events_engine.default.off($element, removeEventName);\r\n        _events_engine.default.on($element, removeEventName, function() {\r\n            if (config.frameAnimation) {\r\n                (0, _frame.cancelAnimationFrame)(config.frameAnimation.animationFrameId)\r\n            }\r\n        });\r\n        this._animationStep($element, config)\r\n    },\r\n    _parseTransform: function(transformString) {\r\n        var result = {};\r\n        (0, _iterator.each)(transformString.match(/(\\w|\\d)+\\([^)]*\\)\\s*/g), function(i, part) {\r\n            var translateData = (0, _translator.parseTranslate)(part);\r\n            var scaleData = part.match(/scale\\((.+?)\\)/);\r\n            var rotateData = part.match(/(rotate.)\\((.+)deg\\)/);\r\n            if (translateData) {\r\n                result.translate = translateData\r\n            }\r\n            if (scaleData && scaleData[1]) {\r\n                result.scale = parseFloat(scaleData[1])\r\n            }\r\n            if (rotateData && rotateData[1]) {\r\n                result[rotateData[1]] = parseFloat(rotateData[2])\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    stop: function($element, config, jumpToEnd) {\r\n        var frameAnimation = config && config.frameAnimation;\r\n        if (!frameAnimation) {\r\n            return\r\n        }(0, _frame.cancelAnimationFrame)(frameAnimation.animationFrameId);\r\n        clearTimeout(frameAnimation.delayTimeout);\r\n        if (jumpToEnd) {\r\n            frameAnimation.finish()\r\n        }\r\n        delete config.frameAnimation\r\n    },\r\n    _animationStep: function($element, config) {\r\n        var frameAnimation = config && config.frameAnimation;\r\n        if (!frameAnimation) {\r\n            return\r\n        }\r\n        var now = (new Date).valueOf();\r\n        if (now >= frameAnimation.startTime + frameAnimation.duration) {\r\n            frameAnimation.finish();\r\n            return\r\n        }\r\n        frameAnimation.currentValue = this._calcStepValue(frameAnimation, now - frameAnimation.startTime);\r\n        frameAnimation.draw();\r\n        var that = this;\r\n        frameAnimation.animationFrameId = (0, _frame.requestAnimationFrame)(function() {\r\n            that._animationStep($element, config)\r\n        })\r\n    },\r\n    _calcStepValue: function(frameAnimation, currentDuration) {\r\n        var calcValueRecursively = function calcValueRecursively(from, to) {\r\n            var result = Array.isArray(to) ? [] : {};\r\n            var calcEasedValue = function(propName) {\r\n                var x = currentDuration / frameAnimation.duration;\r\n                var t = currentDuration;\r\n                var b = 1 * from[propName];\r\n                var c = to[propName] - from[propName];\r\n                var d = frameAnimation.duration;\r\n                return (0, _easing.getEasing)(frameAnimation.easing)(x, t, b, c, d)\r\n            };\r\n            (0, _iterator.each)(to, function(propName, endPropValue) {\r\n                if (\"string\" === typeof endPropValue && false === parseFloat(endPropValue, 10)) {\r\n                    return true\r\n                }\r\n                result[propName] = \"object\" === _typeof(endPropValue) ? calcValueRecursively(from[propName], endPropValue) : calcEasedValue(propName)\r\n            });\r\n            return result\r\n        };\r\n        return calcValueRecursively(frameAnimation.from, frameAnimation.to)\r\n    },\r\n    _normalizeValue: function(value) {\r\n        var numericValue = parseFloat(value, 10);\r\n        if (false === numericValue) {\r\n            return value\r\n        }\r\n        return numericValue\r\n    }\r\n};\r\nvar FallbackToNoAnimationStrategy = {\r\n    initAnimation: function() {},\r\n    animate: function() {\r\n        return (new _deferred.Deferred).resolve().promise()\r\n    },\r\n    stop: _common.noop,\r\n    isSynchronous: true\r\n};\r\nvar getAnimationStrategy = function(config) {\r\n    config = config || {};\r\n    var animationStrategies = {\r\n        transition: (0, _support.transition)() ? TransitionAnimationStrategy : FrameAnimationStrategy,\r\n        frame: FrameAnimationStrategy,\r\n        noAnimation: FallbackToNoAnimationStrategy\r\n    };\r\n    var strategy = config.strategy || \"transition\";\r\n    if (\"css\" === config.type && !(0, _support.transition)()) {\r\n        strategy = \"noAnimation\"\r\n    }\r\n    return animationStrategies[strategy]\r\n};\r\nvar baseConfigValidator = function(config, animationType, validate, typeMessage) {\r\n    (0, _iterator.each)([\"from\", \"to\"], function() {\r\n        if (!validate(config[this])) {\r\n            throw _errors.default.Error(\"E0010\", animationType, this, typeMessage)\r\n        }\r\n    })\r\n};\r\nvar isObjectConfigValidator = function(config, animationType) {\r\n    return baseConfigValidator(config, animationType, function(target) {\r\n        return (0, _type.isPlainObject)(target)\r\n    }, \"a plain object\")\r\n};\r\nvar isStringConfigValidator = function(config, animationType) {\r\n    return baseConfigValidator(config, animationType, function(target) {\r\n        return \"string\" === typeof target\r\n    }, \"a string\")\r\n};\r\nvar CustomAnimationConfigurator = {\r\n    setup: function() {}\r\n};\r\nvar CssAnimationConfigurator = {\r\n    validateConfig: function(config) {\r\n        isStringConfigValidator(config, \"css\")\r\n    },\r\n    setup: function() {}\r\n};\r\nvar positionAliases = {\r\n    top: {\r\n        my: \"bottom center\",\r\n        at: \"top center\"\r\n    },\r\n    bottom: {\r\n        my: \"top center\",\r\n        at: \"bottom center\"\r\n    },\r\n    right: {\r\n        my: \"left center\",\r\n        at: \"right center\"\r\n    },\r\n    left: {\r\n        my: \"right center\",\r\n        at: \"left center\"\r\n    }\r\n};\r\nvar SlideAnimationConfigurator = {\r\n    validateConfig: function(config) {\r\n        isObjectConfigValidator(config, \"slide\")\r\n    },\r\n    setup: function($element, config) {\r\n        var location = (0, _translator.locate)($element);\r\n        if (\"slide\" !== config.type) {\r\n            var positioningConfig = \"slideIn\" === config.type ? config.from : config.to;\r\n            positioningConfig.position = (0, _extend.extend)({\r\n                of: window\r\n            }, positionAliases[config.direction]);\r\n            setupPosition($element, positioningConfig)\r\n        }\r\n        this._setUpConfig(location, config.from);\r\n        this._setUpConfig(location, config.to);\r\n        (0, _translator.clearCache)($element)\r\n    },\r\n    _setUpConfig: function(location, config) {\r\n        config.left = \"left\" in config ? config.left : \"+=0\";\r\n        config.top = \"top\" in config ? config.top : \"+=0\";\r\n        this._initNewPosition(location, config)\r\n    },\r\n    _initNewPosition: function(location, config) {\r\n        var position = {\r\n            left: config.left,\r\n            top: config.top\r\n        };\r\n        delete config.left;\r\n        delete config.top;\r\n        var relativeValue = this._getRelativeValue(position.left);\r\n        if (void 0 !== relativeValue) {\r\n            position.left = relativeValue + location.left\r\n        } else {\r\n            config.left = 0\r\n        }\r\n        relativeValue = this._getRelativeValue(position.top);\r\n        if (void 0 !== relativeValue) {\r\n            position.top = relativeValue + location.top\r\n        } else {\r\n            config.top = 0\r\n        }\r\n        config[TRANSFORM_PROP] = (0, _translator.getTranslateCss)({\r\n            x: position.left,\r\n            y: position.top\r\n        })\r\n    },\r\n    _getRelativeValue: function(value) {\r\n        var relativeValue;\r\n        if (\"string\" === typeof value && (relativeValue = RELATIVE_VALUE_REGEX.exec(value))) {\r\n            return parseInt(relativeValue[1] + \"1\") * relativeValue[2]\r\n        }\r\n    }\r\n};\r\nvar FadeAnimationConfigurator = {\r\n    setup: function($element, config) {\r\n        var from = config.from;\r\n        var fromOpacity = (0, _type.isPlainObject)(from) ? config.skipElementInitialStyles ? 0 : $element.css(\"opacity\") : String(from);\r\n        var toOpacity;\r\n        switch (config.type) {\r\n            case \"fadeIn\":\r\n                toOpacity = 1;\r\n                break;\r\n            case \"fadeOut\":\r\n                toOpacity = 0;\r\n                break;\r\n            default:\r\n                toOpacity = String(config.to)\r\n        }\r\n        config.from = {\r\n            visibility: \"visible\",\r\n            opacity: fromOpacity\r\n        };\r\n        config.to = {\r\n            opacity: toOpacity\r\n        }\r\n    }\r\n};\r\nvar PopAnimationConfigurator = {\r\n    validateConfig: function(config) {\r\n        isObjectConfigValidator(config, \"pop\")\r\n    },\r\n    setup: function($element, config) {\r\n        var from = config.from;\r\n        var to = config.to;\r\n        var fromOpacity = \"opacity\" in from ? from.opacity : $element.css(\"opacity\");\r\n        var toOpacity = \"opacity\" in to ? to.opacity : 1;\r\n        var fromScale = \"scale\" in from ? from.scale : 0;\r\n        var toScale = \"scale\" in to ? to.scale : 1;\r\n        config.from = {\r\n            opacity: fromOpacity\r\n        };\r\n        var translate = (0, _translator.getTranslate)($element);\r\n        config.from[TRANSFORM_PROP] = this._getCssTransform(translate, fromScale);\r\n        config.to = {\r\n            opacity: toOpacity\r\n        };\r\n        config.to[TRANSFORM_PROP] = this._getCssTransform(translate, toScale)\r\n    },\r\n    _getCssTransform: function(translate, scale) {\r\n        return (0, _translator.getTranslateCss)(translate) + \"scale(\" + scale + \")\"\r\n    }\r\n};\r\nvar animationConfigurators = {\r\n    custom: CustomAnimationConfigurator,\r\n    slide: SlideAnimationConfigurator,\r\n    slideIn: SlideAnimationConfigurator,\r\n    slideOut: SlideAnimationConfigurator,\r\n    fade: FadeAnimationConfigurator,\r\n    fadeIn: FadeAnimationConfigurator,\r\n    fadeOut: FadeAnimationConfigurator,\r\n    pop: PopAnimationConfigurator,\r\n    css: CssAnimationConfigurator\r\n};\r\nvar getAnimationConfigurator = function(config) {\r\n    var result = animationConfigurators[config.type];\r\n    if (!result) {\r\n        throw _errors.default.Error(\"E0011\", config.type)\r\n    }\r\n    return result\r\n};\r\nvar defaultJSConfig = {\r\n    type: \"custom\",\r\n    from: {},\r\n    to: {},\r\n    duration: 400,\r\n    start: _common.noop,\r\n    complete: _common.noop,\r\n    easing: \"ease\",\r\n    delay: 0\r\n};\r\nvar defaultCssConfig = {\r\n    duration: 400,\r\n    easing: \"ease\",\r\n    delay: 0\r\n};\r\n\r\nfunction setupAnimationOnElement() {\r\n    var animation = this;\r\n    var $element = animation.element;\r\n    var config = animation.config;\r\n    setupPosition($element, config.from);\r\n    setupPosition($element, config.to);\r\n    animation.configurator.setup($element, config);\r\n    $element.data(ANIM_DATA_KEY, animation);\r\n    if (fx.off) {\r\n        config.duration = 0;\r\n        config.delay = 0\r\n    }\r\n    animation.strategy.initAnimation($element, config);\r\n    if (config.start) {\r\n        var element = (0, _element.getPublicElement)($element);\r\n        config.start.apply(this, [element, config])\r\n    }\r\n}\r\nvar onElementAnimationComplete = function(animation) {\r\n    var $element = animation.element;\r\n    var config = animation.config;\r\n    $element.removeData(ANIM_DATA_KEY);\r\n    if (config.complete) {\r\n        var element = (0, _element.getPublicElement)($element);\r\n        config.complete.apply(this, [element, config])\r\n    }\r\n    animation.deferred.resolveWith(this, [$element, config])\r\n};\r\nvar startAnimationOnElement = function() {\r\n    var animation = this;\r\n    var $element = animation.element;\r\n    var config = animation.config;\r\n    animation.isStarted = true;\r\n    return animation.strategy.animate($element, config).done(function() {\r\n        onElementAnimationComplete(animation)\r\n    }).fail(function() {\r\n        animation.deferred.rejectWith(this, [$element, config])\r\n    })\r\n};\r\nvar stopAnimationOnElement = function(jumpToEnd) {\r\n    var animation = this;\r\n    var $element = animation.element;\r\n    var config = animation.config;\r\n    clearTimeout(animation.startTimeout);\r\n    if (!animation.isStarted) {\r\n        animation.start()\r\n    }\r\n    animation.strategy.stop($element, config, jumpToEnd)\r\n};\r\nvar scopedRemoveEvent = (0, _index.addNamespace)(_remove_event.default, \"dxFXStartAnimation\");\r\nvar subscribeToRemoveEvent = function(animation) {\r\n    _events_engine.default.off(animation.element, scopedRemoveEvent);\r\n    _events_engine.default.on(animation.element, scopedRemoveEvent, function() {\r\n        fx.stop(animation.element)\r\n    });\r\n    animation.deferred.always(function() {\r\n        _events_engine.default.off(animation.element, scopedRemoveEvent)\r\n    })\r\n};\r\nvar createAnimation = function(element, initialConfig) {\r\n    var defaultConfig = \"css\" === initialConfig.type ? defaultCssConfig : defaultJSConfig;\r\n    var config = (0, _extend.extend)(true, {}, defaultConfig, initialConfig);\r\n    var configurator = getAnimationConfigurator(config);\r\n    var strategy = getAnimationStrategy(config);\r\n    var animation = {\r\n        element: (0, _renderer.default)(element),\r\n        config: config,\r\n        configurator: configurator,\r\n        strategy: strategy,\r\n        isSynchronous: strategy.isSynchronous,\r\n        setup: setupAnimationOnElement,\r\n        start: startAnimationOnElement,\r\n        stop: stopAnimationOnElement,\r\n        deferred: new _deferred.Deferred\r\n    };\r\n    if ((0, _type.isFunction)(configurator.validateConfig)) {\r\n        configurator.validateConfig(config)\r\n    }\r\n    subscribeToRemoveEvent(animation);\r\n    return animation\r\n};\r\nvar animate = function(element, config) {\r\n    var $element = (0, _renderer.default)(element);\r\n    if (!$element.length) {\r\n        return (new _deferred.Deferred).resolve().promise()\r\n    }\r\n    var animation = createAnimation($element, config);\r\n    pushInAnimationQueue($element, animation);\r\n    return animation.deferred.promise()\r\n};\r\n\r\nfunction pushInAnimationQueue($element, animation) {\r\n    var queueData = getAnimQueueData($element);\r\n    writeAnimQueueData($element, queueData);\r\n    queueData.push(animation);\r\n    if (!isAnimating($element)) {\r\n        shiftFromAnimationQueue($element, queueData)\r\n    }\r\n}\r\n\r\nfunction getAnimQueueData($element) {\r\n    return $element.data(ANIM_QUEUE_KEY) || []\r\n}\r\n\r\nfunction writeAnimQueueData($element, queueData) {\r\n    $element.data(ANIM_QUEUE_KEY, queueData)\r\n}\r\nvar destroyAnimQueueData = function($element) {\r\n    $element.removeData(ANIM_QUEUE_KEY)\r\n};\r\n\r\nfunction isAnimating($element) {\r\n    return !!$element.data(ANIM_DATA_KEY)\r\n}\r\n\r\nfunction shiftFromAnimationQueue($element, queueData) {\r\n    queueData = getAnimQueueData($element);\r\n    if (!queueData.length) {\r\n        return\r\n    }\r\n    var animation = queueData.shift();\r\n    if (0 === queueData.length) {\r\n        destroyAnimQueueData($element)\r\n    }\r\n    executeAnimation(animation).done(function() {\r\n        if (!isAnimating($element)) {\r\n            shiftFromAnimationQueue($element)\r\n        }\r\n    })\r\n}\r\n\r\nfunction executeAnimation(animation) {\r\n    animation.setup();\r\n    if (fx.off || animation.isSynchronous) {\r\n        animation.start()\r\n    } else {\r\n        animation.startTimeout = setTimeout(function() {\r\n            animation.start()\r\n        })\r\n    }\r\n    return animation.deferred.promise()\r\n}\r\n\r\nfunction setupPosition($element, config) {\r\n    if (!config || !config.position) {\r\n        return\r\n    }\r\n    var win = (0, _renderer.default)(window);\r\n    var left = 0;\r\n    var top = 0;\r\n    var position = _position.default.calculate($element, config.position);\r\n    var offset = $element.offset();\r\n    var currentPosition = $element.position();\r\n    if (currentPosition.top > offset.top) {\r\n        top = win.scrollTop()\r\n    }\r\n    if (currentPosition.left > offset.left) {\r\n        left = win.scrollLeft()\r\n    }(0, _extend.extend)(config, {\r\n        left: position.h.location - offset.left + currentPosition.left - left,\r\n        top: position.v.location - offset.top + currentPosition.top - top\r\n    });\r\n    delete config.position\r\n}\r\n\r\nfunction setProps($element, props) {\r\n    (0, _iterator.each)(props, function(key, value) {\r\n        try {\r\n            $element.css(key, (0, _type.isFunction)(value) ? value() : value)\r\n        } catch (e) {}\r\n    })\r\n}\r\nvar stop = function(element, jumpToEnd) {\r\n    var $element = (0, _renderer.default)(element);\r\n    var queueData = getAnimQueueData($element);\r\n    (0, _iterator.each)(queueData, function(_, animation) {\r\n        animation.config.delay = 0;\r\n        animation.config.duration = 0;\r\n        animation.isSynchronous = true\r\n    });\r\n    if (!isAnimating($element)) {\r\n        shiftFromAnimationQueue($element, queueData)\r\n    }\r\n    var animation = $element.data(ANIM_DATA_KEY);\r\n    if (animation) {\r\n        animation.stop(jumpToEnd)\r\n    }\r\n    $element.removeData(ANIM_DATA_KEY);\r\n    destroyAnimQueueData($element)\r\n};\r\nvar fx = {\r\n    off: false,\r\n    animationTypes: animationConfigurators,\r\n    animate: animate,\r\n    createAnimation: createAnimation,\r\n    isAnimating: isAnimating,\r\n    stop: stop,\r\n    _simulatedTransitionEndDelay: 100\r\n};\r\nvar _default = fx;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/translators/category_translator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar round = Math.round;\r\n\r\nfunction getValue(value) {\r\n    return value\r\n}\r\nvar _default = {\r\n    translate: function(category, directionOffset) {\r\n        var that = this;\r\n        var canvasOptions = that._canvasOptions;\r\n        var categoryIndex = that._categoriesToPoints[category.valueOf()];\r\n        var specialValue = that.translateSpecialCase(category);\r\n        var startPointIndex = canvasOptions.startPointIndex || 0;\r\n        var stickInterval = that._options.stick ? 0 : .5;\r\n        if ((0, _type.isDefined)(specialValue)) {\r\n            return round(specialValue)\r\n        }\r\n        if (!categoryIndex && 0 !== categoryIndex) {\r\n            return null\r\n        }\r\n        directionOffset = directionOffset || 0;\r\n        var stickDelta = categoryIndex + stickInterval - startPointIndex + .5 * directionOffset;\r\n        return round(that._calculateProjection(canvasOptions.interval * stickDelta))\r\n    },\r\n    getInterval: function() {\r\n        return this._canvasOptions.interval\r\n    },\r\n    getEventScale: function(zoomEvent) {\r\n        var scale = zoomEvent.deltaScale || 1;\r\n        return 1 - (1 - scale) / (.75 + this.visibleCategories.length / this._categories.length)\r\n    },\r\n    zoom: function(translate, scale) {\r\n        var that = this;\r\n        var categories = that._categories;\r\n        var canvasOptions = that._canvasOptions;\r\n        var stick = that._options.stick;\r\n        var invert = canvasOptions.invert;\r\n        var interval = canvasOptions.interval * scale;\r\n        var translateCategories = translate / interval;\r\n        var visibleCount = (that.visibleCategories || []).length;\r\n        var startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + translateCategories + .5);\r\n        var categoriesLength = parseInt((0, _math.adjust)(canvasOptions.canvasLength / interval) + (stick ? 1 : 0)) || 1;\r\n        var endCategoryIndex;\r\n        if (invert) {\r\n            startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + visibleCount - translateCategories + .5) - categoriesLength\r\n        }\r\n        if (startCategoryIndex < 0) {\r\n            startCategoryIndex = 0\r\n        }\r\n        endCategoryIndex = startCategoryIndex + categoriesLength;\r\n        if (endCategoryIndex > categories.length) {\r\n            endCategoryIndex = categories.length;\r\n            startCategoryIndex = endCategoryIndex - categoriesLength;\r\n            if (startCategoryIndex < 0) {\r\n                startCategoryIndex = 0\r\n            }\r\n        }\r\n        var newVisibleCategories = categories.slice(parseInt(startCategoryIndex), parseInt(endCategoryIndex));\r\n        var newInterval = that._getDiscreteInterval(newVisibleCategories.length, canvasOptions);\r\n        scale = newInterval / canvasOptions.interval;\r\n        translate = that.translate(!invert ? newVisibleCategories[0] : newVisibleCategories[newVisibleCategories.length - 1]) * scale - (canvasOptions.startPoint + (stick ? 0 : newInterval / 2));\r\n        return {\r\n            min: newVisibleCategories[0],\r\n            max: newVisibleCategories[newVisibleCategories.length - 1],\r\n            translate: translate,\r\n            scale: scale\r\n        }\r\n    },\r\n    getMinScale: function(zoom) {\r\n        var that = this;\r\n        var canvasOptions = that._canvasOptions;\r\n        var categoriesLength = (that.visibleCategories || that._categories).length;\r\n        categoriesLength += (parseInt(.1 * categoriesLength) || 1) * (zoom ? -2 : 2);\r\n        return canvasOptions.canvasLength / (Math.max(categoriesLength, 1) * canvasOptions.interval)\r\n    },\r\n    getScale: function(min, max) {\r\n        var that = this;\r\n        var canvasOptions = that._canvasOptions;\r\n        var visibleArea = that.getCanvasVisibleArea();\r\n        var stickOffset = !that._options.stick && 1;\r\n        var minPoint = (0, _type.isDefined)(min) ? that.translate(min, -stickOffset) : null;\r\n        var maxPoint = (0, _type.isDefined)(max) ? that.translate(max, +stickOffset) : null;\r\n        if (null === minPoint) {\r\n            minPoint = canvasOptions.invert ? visibleArea.max : visibleArea.min\r\n        }\r\n        if (null === maxPoint) {\r\n            maxPoint = canvasOptions.invert ? visibleArea.min : visibleArea.max\r\n        }\r\n        return that.canvasLength / Math.abs(maxPoint - minPoint)\r\n    },\r\n    isValid: function(value) {\r\n        return (0, _type.isDefined)(value) ? this._categoriesToPoints[value.valueOf()] >= 0 : false\r\n    },\r\n    getCorrectValue: getValue,\r\n    to: function(value, direction) {\r\n        var canvasOptions = this._canvasOptions;\r\n        var categoryIndex = this._categoriesToPoints[value.valueOf()];\r\n        var startPointIndex = canvasOptions.startPointIndex || 0;\r\n        var stickDelta = categoryIndex + (this._options.stick ? 0 : .5) - startPointIndex + (this._businessRange.invert ? -1 : 1) * direction * .5;\r\n        return round(this._calculateProjection(canvasOptions.interval * stickDelta))\r\n    },\r\n    from: function(position) {\r\n        var direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n        var canvasOptions = this._canvasOptions;\r\n        var startPoint = canvasOptions.startPoint;\r\n        var categories = this.visibleCategories || this._categories;\r\n        var categoriesLength = categories.length;\r\n        var stickInterval = this._options.stick ? .5 : 0;\r\n        var result = round((position - startPoint) / canvasOptions.interval + stickInterval - .5 - .5 * direction);\r\n        if (result >= categoriesLength) {\r\n            result = categoriesLength - 1\r\n        }\r\n        if (result < 0) {\r\n            result = 0\r\n        }\r\n        if (canvasOptions.invert) {\r\n            result = categoriesLength - result - 1\r\n        }\r\n        return categories[result]\r\n    },\r\n    _add: function() {\r\n        return NaN\r\n    },\r\n    _toValue: getValue,\r\n    isValueProlonged: true,\r\n    getRangeByMinZoomValue: function(minZoom, visualRange) {\r\n        var categories = this._categories;\r\n        var minVisibleIndex = categories.indexOf(visualRange.minVisible);\r\n        var maxVisibleIndex = categories.indexOf(visualRange.maxVisible);\r\n        var startIndex = minVisibleIndex + minZoom - 1;\r\n        var endIndex = maxVisibleIndex - minZoom + 1;\r\n        if (categories[startIndex]) {\r\n            return [visualRange.minVisible, categories[startIndex]]\r\n        } else {\r\n            return [categories[endIndex], visualRange.maxVisible]\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.cell_alignment_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar cellAlignmentHelper = {\r\n    tryCreateTag: function(sourceObj) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(sourceObj)) {\r\n            result = {\r\n                vertical: sourceObj.vertical,\r\n                wrapText: sourceObj.wrapText,\r\n                horizontal: sourceObj.horizontal\r\n            };\r\n            if (cellAlignmentHelper.isEmpty(result)) {\r\n                result = null\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    copy: function(source) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(source)) {\r\n            result = {};\r\n            if (void 0 !== source.horizontal) {\r\n                result.horizontal = source.horizontal\r\n            }\r\n            if (void 0 !== source.vertical) {\r\n                result.vertical = source.vertical\r\n            }\r\n            if (void 0 !== source.wrapText) {\r\n                result.wrapText = source.wrapText\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    areEqual: function(leftTag, rightTag) {\r\n        return cellAlignmentHelper.isEmpty(leftTag) && cellAlignmentHelper.isEmpty(rightTag) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.vertical === rightTag.vertical && leftTag.wrapText === rightTag.wrapText && leftTag.horizontal === rightTag.horizontal\r\n    },\r\n    isEmpty: function(tag) {\r\n        return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.vertical) && !(0, _type.isDefined)(tag.wrapText) && !(0, _type.isDefined)(tag.horizontal)\r\n    },\r\n    toXml: function(tag) {\r\n        return _excel.default.toXml(\"alignment\", {\r\n            vertical: tag.vertical,\r\n            wrapText: (0, _type.isDefined)(tag.wrapText) ? Number(tag.wrapText) : void 0,\r\n            horizontal: tag.horizontal\r\n        })\r\n    }\r\n};\r\nvar _default = cellAlignmentHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/data_source.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar postCtor = _data_helper.default.postCtor;\r\nvar name;\r\nvar members = {\r\n    _dataSourceLoadErrorHandler: function() {\r\n        this._dataSourceChangedHandler()\r\n    },\r\n    _dataSourceOptions: function() {\r\n        return {\r\n            paginate: false\r\n        }\r\n    },\r\n    _updateDataSource: function() {\r\n        this._refreshDataSource();\r\n        if (!this.option(\"dataSource\")) {\r\n            this._dataSourceChangedHandler()\r\n        }\r\n    },\r\n    _dataIsLoaded: function() {\r\n        return !this._dataSource || this._dataSource.isLoaded()\r\n    },\r\n    _dataSourceItems: function() {\r\n        return this._dataSource && this._dataSource.items()\r\n    }\r\n};\r\nfor (name in _data_helper.default) {\r\n    if (\"postCtor\" === name) {\r\n        continue\r\n    }\r\n    members[name] = _data_helper.default[name]\r\n}\r\nvar plugin = {\r\n    name: \"data_source\",\r\n    init: function() {\r\n        postCtor.call(this)\r\n    },\r\n    dispose: _common.noop,\r\n    members: members\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (viz/gauges/base_indicators.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.BaseRangeBar = exports.BaseTextCloudMarker = exports.BaseIndicator = exports.BaseElement = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base_gauge = require(\"./base_gauge\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _isFinite = isFinite;\r\nvar _Number = Number;\r\nvar _round = Math.round;\r\nvar _formatValue = _base_gauge.formatValue;\r\nvar _getSampleText = _base_gauge.getSampleText;\r\nvar BaseElement = _class.default.inherit({\r\n    ctor: function(parameters) {\r\n        var that = this;\r\n        (0, _iterator.each)(parameters, function(name, value) {\r\n            that[\"_\" + name] = value\r\n        });\r\n        that._init()\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        that._dispose();\r\n        (0, _iterator.each)(that, function(name) {\r\n            that[name] = null\r\n        });\r\n        return that\r\n    },\r\n    getOffset: function() {\r\n        return _Number(this._options.offset) || 0\r\n    }\r\n});\r\nexports.BaseElement = BaseElement;\r\nvar BaseIndicator = BaseElement.inherit({\r\n    _init: function() {\r\n        var that = this;\r\n        that._rootElement = that._createRoot().linkOn(that._owner, {\r\n            name: \"value-indicator\",\r\n            after: \"core\"\r\n        });\r\n        that._trackerElement = that._createTracker()\r\n    },\r\n    _dispose: function() {\r\n        this._rootElement.linkOff()\r\n    },\r\n    _setupAnimation: function() {\r\n        var that = this;\r\n        if (that._options.animation) {\r\n            that._animation = {\r\n                step: function(pos) {\r\n                    that._actualValue = that._animation.start + that._animation.delta * pos;\r\n                    that._actualPosition = that._translator.translate(that._actualValue);\r\n                    that._move()\r\n                },\r\n                duration: that._options.animation.duration > 0 ? _Number(that._options.animation.duration) : 0,\r\n                easing: that._options.animation.easing\r\n            }\r\n        }\r\n    },\r\n    _runAnimation: function(value) {\r\n        var that = this;\r\n        var animation = that._animation;\r\n        animation.start = that._actualValue;\r\n        animation.delta = value - that._actualValue;\r\n        that._rootElement.animate({\r\n            _: 0\r\n        }, {\r\n            step: animation.step,\r\n            duration: animation.duration,\r\n            easing: animation.easing\r\n        })\r\n    },\r\n    _createRoot: function() {\r\n        return this._renderer.g().attr({\r\n            \"class\": this._className\r\n        })\r\n    },\r\n    _createTracker: function() {\r\n        return this._renderer.path([], \"area\")\r\n    },\r\n    _getTrackerSettings: _common.noop,\r\n    clean: function() {\r\n        var that = this;\r\n        that._animation && that._rootElement.stopAnimation();\r\n        that._rootElement.linkRemove().clear();\r\n        that._clear();\r\n        that._tracker.detach(that._trackerElement);\r\n        that._options = that.enabled = that._animation = null;\r\n        return that\r\n    },\r\n    render: function(options) {\r\n        var that = this;\r\n        that.type = options.type;\r\n        that._options = options;\r\n        that._actualValue = that._currentValue = that._translator.adjust(that._options.currentValue);\r\n        that.enabled = that._isEnabled();\r\n        if (that.enabled) {\r\n            that._setupAnimation();\r\n            that._rootElement.attr({\r\n                fill: that._options.color\r\n            }).linkAppend();\r\n            that._tracker.attach(that._trackerElement, that, that._trackerInfo)\r\n        }\r\n        return that\r\n    },\r\n    resize: function(layout) {\r\n        var that = this;\r\n        that._rootElement.clear();\r\n        that._clear();\r\n        that.visible = that._isVisible(layout);\r\n        if (that.visible) {\r\n            (0, _extend.extend)(that._options, layout);\r\n            that._actualPosition = that._translator.translate(that._actualValue);\r\n            that._render();\r\n            that._trackerElement.attr(that._getTrackerSettings());\r\n            that._move()\r\n        }\r\n        return that\r\n    },\r\n    value: function(arg, _noAnimation) {\r\n        var that = this;\r\n        var val;\r\n        var rootElement = this._rootElement;\r\n        var visibility = null;\r\n        if (void 0 === arg) {\r\n            return that._currentValue\r\n        }\r\n        if (null === arg) {\r\n            visibility = \"hidden\";\r\n            that._currentValue = arg\r\n        } else {\r\n            val = that._translator.adjust(arg);\r\n            if (that._currentValue !== val && _isFinite(val)) {\r\n                that._currentValue = val;\r\n                if (that.visible) {\r\n                    if (that._animation && !_noAnimation) {\r\n                        that._runAnimation(val)\r\n                    } else {\r\n                        that._actualValue = val;\r\n                        that._actualPosition = that._translator.translate(val);\r\n                        that._move()\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        rootElement.attr({\r\n            visibility: visibility\r\n        });\r\n        return that\r\n    },\r\n    _isEnabled: null,\r\n    _isVisible: null,\r\n    _render: null,\r\n    _clear: null,\r\n    _move: null\r\n});\r\nexports.BaseIndicator = BaseIndicator;\r\nvar COEFFICIENTS_MAP = {};\r\nCOEFFICIENTS_MAP[\"right-bottom\"] = COEFFICIENTS_MAP.rb = [0, -1, -1, 0, 0, 1, 1, 0];\r\nCOEFFICIENTS_MAP[\"bottom-right\"] = COEFFICIENTS_MAP.br = [-1, 0, 0, -1, 1, 0, 0, 1];\r\nCOEFFICIENTS_MAP[\"left-bottom\"] = COEFFICIENTS_MAP.lb = [0, -1, 1, 0, 0, 1, -1, 0];\r\nCOEFFICIENTS_MAP[\"bottom-left\"] = COEFFICIENTS_MAP.bl = [1, 0, 0, -1, -1, 0, 0, 1];\r\nCOEFFICIENTS_MAP[\"left-top\"] = COEFFICIENTS_MAP.lt = [0, 1, 1, 0, 0, -1, -1, 0];\r\nCOEFFICIENTS_MAP[\"top-left\"] = COEFFICIENTS_MAP.tl = [1, 0, 0, 1, -1, 0, 0, -1];\r\nCOEFFICIENTS_MAP[\"right-top\"] = COEFFICIENTS_MAP.rt = [0, 1, -1, 0, 0, -1, 1, 0];\r\nCOEFFICIENTS_MAP[\"top-right\"] = COEFFICIENTS_MAP.tr = [-1, 0, 0, 1, 1, 0, 0, -1];\r\n\r\nfunction getTextCloudInfo(options) {\r\n    var x = options.x;\r\n    var y = options.y;\r\n    var type = COEFFICIENTS_MAP[options.type];\r\n    var cloudWidth = options.textWidth + 2 * options.horMargin;\r\n    var cloudHeight = options.textHeight + 2 * options.verMargin;\r\n    var tailWidth;\r\n    var tailHeight;\r\n    var cx = x;\r\n    var cy = y;\r\n    tailWidth = tailHeight = options.tailLength;\r\n    if (1 & type[0]) {\r\n        tailHeight = Math.min(tailHeight, cloudHeight / 3)\r\n    } else {\r\n        tailWidth = Math.min(tailWidth, cloudWidth / 3)\r\n    }\r\n    return {\r\n        cx: _round(cx + type[0] * tailWidth + (type[0] + type[2]) * cloudWidth / 2),\r\n        cy: _round(cy + type[1] * tailHeight + (type[1] + type[3]) * cloudHeight / 2),\r\n        points: [_round(x), _round(y), _round(x += type[0] * (cloudWidth + tailWidth)), _round(y += type[1] * (cloudHeight + tailHeight)), _round(x += type[2] * cloudWidth), _round(y += type[3] * cloudHeight), _round(x += type[4] * cloudWidth), _round(y += type[5] * cloudHeight), _round(x += type[6] * (cloudWidth - tailWidth)), _round(y += type[7] * (cloudHeight - tailHeight))]\r\n    }\r\n}\r\nvar BaseTextCloudMarker = BaseIndicator.inherit({\r\n    _move: function() {\r\n        var that = this;\r\n        var textCloudOptions = that._getTextCloudOptions();\r\n        var text = _formatValue(that._actualValue, that._options.text);\r\n        that._text.attr({\r\n            text: text\r\n        });\r\n        var bBox = that._text.getBBox();\r\n        var info = getTextCloudInfo({\r\n            x: textCloudOptions.x,\r\n            y: textCloudOptions.y,\r\n            textWidth: bBox.width || text.length * that._textUnitWidth,\r\n            textHeight: bBox.height || that._textHeight,\r\n            horMargin: that._options.horizontalOffset,\r\n            verMargin: that._options.verticalOffset,\r\n            tailLength: that._options.arrowLength,\r\n            type: textCloudOptions.type\r\n        });\r\n        that._text.attr({\r\n            x: info.cx,\r\n            y: info.cy + that._textVerticalOffset\r\n        });\r\n        that._cloud.attr({\r\n            points: info.points\r\n        });\r\n        that._trackerElement && that._trackerElement.attr({\r\n            points: info.points\r\n        })\r\n    },\r\n    _measureText: function() {\r\n        var that = this;\r\n        var root;\r\n        var text;\r\n        var bBox;\r\n        var sampleText;\r\n        if (!that._textVerticalOffset) {\r\n            root = that._createRoot().append(that._owner);\r\n            sampleText = _getSampleText(that._translator, that._options.text);\r\n            text = that._renderer.text(sampleText, 0, 0).attr({\r\n                align: \"center\"\r\n            }).css((0, _utils.patchFontOptions)(that._options.text.font)).append(root);\r\n            bBox = text.getBBox();\r\n            root.remove();\r\n            that._textVerticalOffset = -bBox.y - bBox.height / 2;\r\n            that._textWidth = bBox.width;\r\n            that._textHeight = bBox.height;\r\n            that._textUnitWidth = that._textWidth / sampleText.length;\r\n            that._textFullWidth = that._textWidth + 2 * that._options.horizontalOffset;\r\n            that._textFullHeight = that._textHeight + 2 * that._options.verticalOffset\r\n        }\r\n    },\r\n    _render: function() {\r\n        var that = this;\r\n        that._measureText();\r\n        that._cloud = that._cloud || that._renderer.path([], \"area\").append(that._rootElement);\r\n        that._text = that._text || that._renderer.text().append(that._rootElement);\r\n        that._text.attr({\r\n            align: \"center\"\r\n        }).css((0, _utils.patchFontOptions)(that._options.text.font))\r\n    },\r\n    _clear: function() {\r\n        delete this._cloud;\r\n        delete this._text\r\n    },\r\n    getTooltipParameters: function() {\r\n        var position = this._getTextCloudOptions();\r\n        return {\r\n            x: position.x,\r\n            y: position.y,\r\n            value: this._currentValue,\r\n            color: this._options.color\r\n        }\r\n    }\r\n});\r\nexports.BaseTextCloudMarker = BaseTextCloudMarker;\r\nvar BaseRangeBar = BaseIndicator.inherit({\r\n    _measureText: function() {\r\n        var that = this;\r\n        var root;\r\n        var text;\r\n        var bBox;\r\n        that._hasText = that._isTextVisible();\r\n        if (that._hasText && !that._textVerticalOffset) {\r\n            root = that._createRoot().append(that._owner);\r\n            text = that._renderer.text(_getSampleText(that._translator, that._options.text), 0, 0).attr({\r\n                \"class\": \"dxg-text\",\r\n                align: \"center\"\r\n            }).css((0, _utils.patchFontOptions)(that._options.text.font)).append(root);\r\n            bBox = text.getBBox();\r\n            root.remove();\r\n            that._textVerticalOffset = -bBox.y - bBox.height / 2;\r\n            that._textWidth = bBox.width;\r\n            that._textHeight = bBox.height\r\n        }\r\n    },\r\n    _move: function() {\r\n        var that = this;\r\n        that._updateBarItemsPositions();\r\n        if (that._hasText) {\r\n            that._text.attr({\r\n                text: _formatValue(that._actualValue, that._options.text)\r\n            });\r\n            that._updateTextPosition();\r\n            that._updateLinePosition()\r\n        }\r\n    },\r\n    _updateBarItems: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var spaceColor;\r\n        var translator = that._translator;\r\n        that._setBarSides();\r\n        that._startPosition = translator.translate(translator.getDomainStart());\r\n        that._endPosition = translator.translate(translator.getDomainEnd());\r\n        that._basePosition = translator.translate(options.baseValue);\r\n        that._space = that._getSpace();\r\n        var backgroundColor = options.backgroundColor || \"none\";\r\n        if (\"none\" !== backgroundColor && that._space > 0) {\r\n            spaceColor = options.containerBackgroundColor || \"none\"\r\n        } else {\r\n            that._space = 0;\r\n            spaceColor = \"none\"\r\n        }\r\n        that._backItem1.attr({\r\n            fill: backgroundColor\r\n        });\r\n        that._backItem2.attr({\r\n            fill: backgroundColor\r\n        });\r\n        that._spaceItem1.attr({\r\n            fill: spaceColor\r\n        });\r\n        that._spaceItem2.attr({\r\n            fill: spaceColor\r\n        })\r\n    },\r\n    _getSpace: function() {\r\n        return 0\r\n    },\r\n    _updateTextItems: function() {\r\n        var that = this;\r\n        if (that._hasText) {\r\n            that._line = that._line || that._renderer.path([], \"line\").attr({\r\n                \"class\": \"dxg-main-bar\",\r\n                \"stroke-linecap\": \"square\"\r\n            }).append(that._rootElement);\r\n            that._text = that._text || that._renderer.text(\"\", 0, 0).attr({\r\n                \"class\": \"dxg-text\"\r\n            }).append(that._rootElement);\r\n            that._text.attr({\r\n                align: that._getTextAlign()\r\n            }).css(that._getFontOptions());\r\n            that._setTextItemsSides()\r\n        } else {\r\n            if (that._line) {\r\n                that._line.remove();\r\n                delete that._line\r\n            }\r\n            if (that._text) {\r\n                that._text.remove();\r\n                delete that._text\r\n            }\r\n        }\r\n    },\r\n    _isTextVisible: function() {\r\n        return false\r\n    },\r\n    _getTextAlign: function() {\r\n        return \"center\"\r\n    },\r\n    _getFontOptions: function() {\r\n        var options = this._options;\r\n        var font = options.text.font;\r\n        if (!font || !font.color) {\r\n            font = (0, _extend.extend)({}, font, {\r\n                color: options.color\r\n            })\r\n        }\r\n        return (0, _utils.patchFontOptions)(font)\r\n    },\r\n    _updateBarItemsPositions: function() {\r\n        var that = this;\r\n        var positions = that._getPositions();\r\n        that._backItem1.attr(that._buildItemSettings(positions.start, positions.back1));\r\n        that._backItem2.attr(that._buildItemSettings(positions.back2, positions.end));\r\n        that._spaceItem1.attr(that._buildItemSettings(positions.back1, positions.main1));\r\n        that._spaceItem2.attr(that._buildItemSettings(positions.main2, positions.back2));\r\n        that._mainItem.attr(that._buildItemSettings(positions.main1, positions.main2));\r\n        that._trackerElement && that._trackerElement.attr(that._buildItemSettings(positions.main1, positions.main2))\r\n    },\r\n    _render: function() {\r\n        var that = this;\r\n        that._measureText();\r\n        if (!that._backItem1) {\r\n            that._backItem1 = that._createBarItem();\r\n            that._backItem1.attr({\r\n                \"class\": \"dxg-back-bar\"\r\n            })\r\n        }\r\n        if (!that._backItem2) {\r\n            that._backItem2 = that._createBarItem();\r\n            that._backItem2.attr({\r\n                \"class\": \"dxg-back-bar\"\r\n            })\r\n        }\r\n        if (!that._spaceItem1) {\r\n            that._spaceItem1 = that._createBarItem();\r\n            that._spaceItem1.attr({\r\n                \"class\": \"dxg-space-bar\"\r\n            })\r\n        }\r\n        if (!that._spaceItem2) {\r\n            that._spaceItem2 = that._createBarItem();\r\n            that._spaceItem2.attr({\r\n                \"class\": \"dxg-space-bar\"\r\n            })\r\n        }\r\n        if (!that._mainItem) {\r\n            that._mainItem = that._createBarItem();\r\n            that._mainItem.attr({\r\n                \"class\": \"dxg-main-bar\"\r\n            })\r\n        }\r\n        that._updateBarItems();\r\n        that._updateTextItems()\r\n    },\r\n    _clear: function() {\r\n        var that = this;\r\n        delete that._backItem1;\r\n        delete that._backItem2;\r\n        delete that._spaceItem1;\r\n        delete that._spaceItem2;\r\n        delete that._mainItem;\r\n        delete that._hasText;\r\n        delete that._line;\r\n        delete that._text\r\n    },\r\n    getTooltipParameters: function() {\r\n        var position = this._getTooltipPosition();\r\n        return {\r\n            x: position.x,\r\n            y: position.y,\r\n            value: this._currentValue,\r\n            color: this._options.color,\r\n            offset: 0\r\n        }\r\n    }\r\n});\r\nexports.BaseRangeBar = BaseRangeBar;\r\n","/**\r\n * DevExtreme (core/utils/call_once.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar callOnce = function(handler) {\r\n    var result;\r\n    var _wrappedHandler = function() {\r\n        result = handler.apply(this, arguments);\r\n        _wrappedHandler = function() {\r\n            return result\r\n        };\r\n        return result\r\n    };\r\n    return function() {\r\n        return _wrappedHandler.apply(this, arguments)\r\n    }\r\n};\r\nvar _default = callOnce;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.strategy.drop_down_menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiToolbar = _interopRequireDefault(require(\"./ui.toolbar.strategy\"));\r\nvar _uiToolbar2 = _interopRequireDefault(require(\"./ui.toolbar.menu\"));\r\nvar _drop_down_menu = _interopRequireDefault(require(\"../drop_down_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar MENU_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar DropDownMenuStrategy = _uiToolbar.default.inherit({\r\n    NAME: \"dropDownMenu\",\r\n    render: function() {\r\n        if (!this._hasVisibleMenuItems()) {\r\n            return\r\n        }\r\n        this._renderMenuButtonContainer();\r\n        this._renderWidget()\r\n    },\r\n    renderMenuItems: function() {\r\n        if (!this._menu) {\r\n            this.render()\r\n        }\r\n        this.callBase();\r\n        if (this._menu && !this._menu.option(\"items\").length) {\r\n            this._menu.close()\r\n        }\r\n    },\r\n    _menuWidgetClass: function() {\r\n        return _drop_down_menu.default\r\n    },\r\n    _widgetOptions: function() {\r\n        var that = this;\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            deferRendering: true,\r\n            container: that._toolbar.option(\"menuContainer\"),\r\n            menuWidget: _uiToolbar2.default,\r\n            onOptionChanged: function(e) {\r\n                if (\"items\" === e.name) {\r\n                    that._updateMenuVisibility(e.value)\r\n                }\r\n            },\r\n            popupPosition: {\r\n                at: \"bottom right\",\r\n                my: \"top right\"\r\n            }\r\n        })\r\n    },\r\n    _updateMenuVisibility: function(menuItems) {\r\n        var items = menuItems || this._getMenuItems();\r\n        var isMenuVisible = items.length && this._hasVisibleMenuItems(items);\r\n        this._toggleMenuVisibility(isMenuVisible)\r\n    },\r\n    _toggleMenuVisibility: function(value) {\r\n        if (!this._menuContainer()) {\r\n            return\r\n        }\r\n        this._menuContainer().toggleClass(MENU_INVISIBLE_CLASS, !value)\r\n    },\r\n    _menuContainer: function() {\r\n        return this._$menuButtonContainer\r\n    }\r\n});\r\nvar _default = DropDownMenuStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _themes = require(\"../themes\");\r\nrequire(\"./ui.tree_list.column_headers\");\r\nrequire(\"./ui.tree_list.columns_controller\");\r\nrequire(\"./ui.tree_list.data_controller\");\r\nrequire(\"./ui.tree_list.sorting\");\r\nrequire(\"./ui.tree_list.rows\");\r\nrequire(\"./ui.tree_list.context_menu\");\r\nrequire(\"./ui.tree_list.error_handling\");\r\nrequire(\"./ui.tree_list.grid_view\");\r\nrequire(\"./ui.tree_list.header_panel\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar callModuleItemsMethod = _uiTree_list.default.callModuleItemsMethod;\r\nvar DATAGRID_ROW_SELECTOR = \".dx-row\";\r\nvar TREELIST_CLASS = \"dx-treelist\";\r\n_uiTree_list.default.registerModulesOrder([\"stateStoring\", \"columns\", \"selection\", \"editorFactory\", \"columnChooser\", \"editing\", \"grouping\", \"masterDetail\", \"validating\", \"adaptivity\", \"data\", \"virtualScrolling\", \"columnHeaders\", \"filterRow\", \"headerPanel\", \"headerFilter\", \"sorting\", \"search\", \"rows\", \"pager\", \"columnsResizingReordering\", \"contextMenu\", \"keyboardNavigation\", \"errorHandling\", \"summary\", \"columnFixing\", \"export\", \"gridView\"]);\r\nvar TreeList = _ui.default.inherit({\r\n    _activeStateUnit: DATAGRID_ROW_SELECTOR,\r\n    _getDefaultOptions: function() {\r\n        var that = this;\r\n        var result = that.callBase();\r\n        (0, _iterator.each)(_uiTree_list.default.modules, function() {\r\n            if ((0, _type.isFunction)(this.defaultOptions)) {\r\n                (0, _extend.extend)(true, result, this.defaultOptions())\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                showRowLines: true,\r\n                showColumnLines: false,\r\n                headerFilter: {\r\n                    height: 315\r\n                },\r\n                editing: {\r\n                    useIcons: true\r\n                }\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        _uiTree_list.default.processModules(that, _uiTree_list.default);\r\n        callModuleItemsMethod(that, \"init\")\r\n    },\r\n    _clean: _common.noop,\r\n    _optionChanged: function(args) {\r\n        var that = this;\r\n        callModuleItemsMethod(that, \"optionChanged\", [args]);\r\n        if (!args.handled) {\r\n            that.callBase(args)\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        this.updateDimensions(true)\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this.updateDimensions()\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this.$element().addClass(TREELIST_CLASS);\r\n        this.getView(\"gridView\").render(this.$element())\r\n    },\r\n    _renderContentImpl: function() {\r\n        this.getView(\"gridView\").update()\r\n    },\r\n    _renderContent: function() {\r\n        var that = this;\r\n        (0, _common.deferRender)(function() {\r\n            that._renderContentImpl()\r\n        })\r\n    },\r\n    _dispose: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        callModuleItemsMethod(that, \"dispose\")\r\n    },\r\n    isReady: function() {\r\n        return this.getController(\"data\").isReady()\r\n    },\r\n    beginUpdate: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        callModuleItemsMethod(that, \"beginUpdate\")\r\n    },\r\n    endUpdate: function() {\r\n        var that = this;\r\n        callModuleItemsMethod(that, \"endUpdate\");\r\n        that.callBase()\r\n    },\r\n    getController: function(name) {\r\n        return this._controllers[name]\r\n    },\r\n    getView: function(name) {\r\n        return this._views[name]\r\n    },\r\n    focus: function(element) {\r\n        this.callBase();\r\n        if ((0, _type.isDefined)(element)) {\r\n            this.getController(\"keyboardNavigation\").focus(element)\r\n        }\r\n    }\r\n});\r\nTreeList.registerModule = _uiTree_list.default.registerModule.bind(_uiTree_list.default);\r\n(0, _component_registrator.default)(\"dxTreeList\", TreeList);\r\nvar _default = TreeList;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/animator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _frame = require(\"../../animation/frame\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar Animator = _class.default.inherit({\r\n    ctor: function() {\r\n        this._finished = true;\r\n        this._stopped = false;\r\n        this._proxiedStepCore = this._stepCore.bind(this)\r\n    },\r\n    start: function() {\r\n        this._stopped = false;\r\n        this._finished = false;\r\n        this._stepCore()\r\n    },\r\n    stop: function() {\r\n        this._stopped = true;\r\n        (0, _frame.cancelAnimationFrame)(this._stepAnimationFrame)\r\n    },\r\n    _stepCore: function() {\r\n        if (this._isStopped()) {\r\n            this._stop();\r\n            return\r\n        }\r\n        if (this._isFinished()) {\r\n            this._finished = true;\r\n            this._complete();\r\n            return\r\n        }\r\n        this._step();\r\n        this._stepAnimationFrame = (0, _frame.requestAnimationFrame)(this._proxiedStepCore)\r\n    },\r\n    _step: abstract,\r\n    _isFinished: _common.noop,\r\n    _stop: _common.noop,\r\n    _complete: _common.noop,\r\n    _isStopped: function() {\r\n        return this._stopped\r\n    },\r\n    inProgress: function() {\r\n        return !(this._stopped || this._finished)\r\n    }\r\n});\r\nvar _default = Animator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_controller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _abstract_store = _interopRequireDefault(require(\"../../data/abstract_store\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar USER_STATE_FIELD_NAMES_15_1 = [\"filterValues\", \"filterType\", \"fixed\", \"fixedPosition\"];\r\nvar USER_STATE_FIELD_NAMES = [\"visibleIndex\", \"dataField\", \"name\", \"dataType\", \"width\", \"visible\", \"sortOrder\", \"lastSortOrder\", \"sortIndex\", \"groupIndex\", \"filterValue\", \"selectedFilterOperation\", \"added\"].concat(USER_STATE_FIELD_NAMES_15_1);\r\nvar IGNORE_COLUMN_OPTION_NAMES = {\r\n    visibleWidth: true,\r\n    bestFitWidth: true,\r\n    bufferedFilterValue: true\r\n};\r\nvar COMMAND_EXPAND_CLASS = \"dx-command-expand\";\r\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\nvar GROUP_COMMAND_COLUMN_NAME = \"groupExpand\";\r\nvar regExp = /columns\\[(\\d+)\\]\\.?/gi;\r\nvar globalColumnId = 1;\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            commonColumnSettings: {\r\n                allowFiltering: true,\r\n                allowHiding: true,\r\n                allowSorting: true,\r\n                allowEditing: true,\r\n                encodeHtml: true,\r\n                trueText: _message.default.format(\"dxDataGrid-trueText\"),\r\n                falseText: _message.default.format(\"dxDataGrid-falseText\")\r\n            },\r\n            allowColumnReordering: false,\r\n            allowColumnResizing: false,\r\n            columnResizingMode: \"nextColumn\",\r\n            columnMinWidth: void 0,\r\n            columnWidth: void 0,\r\n            adaptColumnWidthByRatio: true,\r\n            columns: void 0,\r\n            regenerateColumnsByVisibleItems: false,\r\n            customizeColumns: null,\r\n            dateSerializationFormat: void 0\r\n        }\r\n    },\r\n    controllers: {\r\n        columns: _uiGrid_core.default.Controller.inherit(function() {\r\n            var DEFAULT_COLUMN_OPTIONS = {\r\n                visible: true,\r\n                showInColumnChooser: true\r\n            };\r\n            var DATATYPE_OPERATIONS = {\r\n                number: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n                string: [\"contains\", \"notcontains\", \"startswith\", \"endswith\", \"=\", \"<>\"],\r\n                date: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n                datetime: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"]\r\n            };\r\n            var COLUMN_INDEX_OPTIONS = {\r\n                visibleIndex: true,\r\n                groupIndex: true,\r\n                grouped: true,\r\n                sortIndex: true,\r\n                sortOrder: true\r\n            };\r\n            var GROUP_LOCATION = \"group\";\r\n            var COLUMN_CHOOSER_LOCATION = \"columnChooser\";\r\n            var setFilterOperationsAsDefaultValues = function(column) {\r\n                column.filterOperations = column.defaultFilterOperations\r\n            };\r\n            var createColumn = function(that, columnOptions, userStateColumnOptions, bandColumn) {\r\n                var commonColumnOptions = {};\r\n                if (columnOptions) {\r\n                    if ((0, _type.isString)(columnOptions)) {\r\n                        columnOptions = {\r\n                            dataField: columnOptions\r\n                        }\r\n                    }\r\n                    that.setName(columnOptions);\r\n                    var result = {};\r\n                    if (columnOptions.command) {\r\n                        result = (0, _object.deepExtendArraySafe)(commonColumnOptions, columnOptions)\r\n                    } else {\r\n                        commonColumnOptions = that.getCommonSettings(columnOptions);\r\n                        if (userStateColumnOptions && userStateColumnOptions.name && userStateColumnOptions.dataField) {\r\n                            columnOptions = (0, _extend.extend)({}, columnOptions, {\r\n                                dataField: userStateColumnOptions.dataField\r\n                            })\r\n                        }\r\n                        var calculatedColumnOptions = that._createCalculatedColumnOptions(columnOptions, bandColumn);\r\n                        if (!columnOptions.type) {\r\n                            result = {\r\n                                headerId: \"dx-col-\".concat(globalColumnId++)\r\n                            }\r\n                        }\r\n                        result = (0, _object.deepExtendArraySafe)(result, DEFAULT_COLUMN_OPTIONS);\r\n                        (0, _object.deepExtendArraySafe)(result, commonColumnOptions);\r\n                        (0, _object.deepExtendArraySafe)(result, calculatedColumnOptions);\r\n                        (0, _object.deepExtendArraySafe)(result, columnOptions);\r\n                        (0, _object.deepExtendArraySafe)(result, {\r\n                            selector: null\r\n                        })\r\n                    }\r\n                    if (columnOptions.filterOperations === columnOptions.defaultFilterOperations) {\r\n                        setFilterOperationsAsDefaultValues(result)\r\n                    }\r\n                    return result\r\n                }\r\n            };\r\n            var createColumnsFromOptions = function createColumnsFromOptions(that, columnsOptions, bandColumn) {\r\n                var result = [];\r\n                if (columnsOptions) {\r\n                    (0, _iterator.each)(columnsOptions, function(index, columnOptions) {\r\n                        var userStateColumnOptions = that._columnsUserState && checkUserStateColumn(columnOptions, that._columnsUserState[index]) && that._columnsUserState[index];\r\n                        var column = createColumn(that, columnOptions, userStateColumnOptions, bandColumn);\r\n                        if (column) {\r\n                            if (bandColumn) {\r\n                                column.ownerBand = bandColumn\r\n                            }\r\n                            result.push(column);\r\n                            if (column.columns) {\r\n                                result = result.concat(createColumnsFromOptions(that, column.columns, column));\r\n                                delete column.columns;\r\n                                column.hasColumns = true\r\n                            }\r\n                        }\r\n                    })\r\n                }\r\n                return result\r\n            };\r\n            var getParentBandColumns = function(columnIndex, columnParentByIndex) {\r\n                var result = [];\r\n                var parent = columnParentByIndex[columnIndex];\r\n                while (parent) {\r\n                    result.unshift(parent);\r\n                    columnIndex = parent.index;\r\n                    parent = columnParentByIndex[columnIndex]\r\n                }\r\n                return result\r\n            };\r\n            var _getChildrenByBandColumn = function(columnIndex, columnChildrenByIndex, recursive) {\r\n                var result = [];\r\n                var children = columnChildrenByIndex[columnIndex];\r\n                if (children) {\r\n                    for (var i = 0; i < children.length; i++) {\r\n                        var column = children[i];\r\n                        if (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped) {\r\n                            result.push(column);\r\n                            if (recursive && column.isBand) {\r\n                                result = result.concat(_getChildrenByBandColumn(column.index, columnChildrenByIndex, recursive))\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return result\r\n            };\r\n            var getColumnByIndexes = function(that, columnIndexes) {\r\n                var result;\r\n                var columns;\r\n                var bandColumnsCache = that.getBandColumnsCache();\r\n                var callbackFilter = function(column) {\r\n                    var ownerBand = result ? result.index : void 0;\r\n                    return column.ownerBand === ownerBand\r\n                };\r\n                if (bandColumnsCache.isPlain) {\r\n                    result = that._columns[columnIndexes[0]]\r\n                } else {\r\n                    columns = that._columns.filter(callbackFilter);\r\n                    for (var i = 0; i < columnIndexes.length; i++) {\r\n                        result = columns[columnIndexes[i]];\r\n                        if (result) {\r\n                            columns = that._columns.filter(callbackFilter)\r\n                        }\r\n                    }\r\n                }\r\n                return result\r\n            };\r\n            var getColumnFullPath = function(that, column) {\r\n                var result = [];\r\n                var columns;\r\n                var bandColumnsCache = that.getBandColumnsCache();\r\n                var callbackFilter = function(item) {\r\n                    return item.ownerBand === column.ownerBand\r\n                };\r\n                if (bandColumnsCache.isPlain) {\r\n                    var columnIndex = that._columns.indexOf(column);\r\n                    if (columnIndex >= 0) {\r\n                        result = [\"columns[\".concat(columnIndex, \"]\")]\r\n                    }\r\n                } else {\r\n                    columns = that._columns.filter(callbackFilter);\r\n                    while (columns.length && columns.indexOf(column) !== -1) {\r\n                        result.unshift(\"columns[\".concat(columns.indexOf(column), \"]\"));\r\n                        column = bandColumnsCache.columnParentByIndex[column.index];\r\n                        columns = column ? that._columns.filter(callbackFilter) : []\r\n                    }\r\n                }\r\n                return result.join(\".\")\r\n            };\r\n            var calculateColspan = function calculateColspan(that, columnID) {\r\n                var colspan = 0;\r\n                var columns = that.getChildrenByBandColumn(columnID, true);\r\n                (0, _iterator.each)(columns, function(_, column) {\r\n                    if (column.isBand) {\r\n                        column.colspan = column.colspan || calculateColspan(that, column.index);\r\n                        colspan += column.colspan || 1\r\n                    } else {\r\n                        colspan += 1\r\n                    }\r\n                });\r\n                return colspan\r\n            };\r\n            var processBandColumns = function(that, columns, bandColumnsCache) {\r\n                var rowspan;\r\n                for (var i = 0; i < columns.length; i++) {\r\n                    var column = columns[i];\r\n                    if (column.visible || column.command) {\r\n                        if (column.isBand) {\r\n                            column.colspan = column.colspan || calculateColspan(that, column.index)\r\n                        }\r\n                        if (!column.isBand || !column.colspan) {\r\n                            rowspan = that.getRowCount();\r\n                            if (!column.command && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {\r\n                                rowspan -= getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex).length\r\n                            }\r\n                            if (rowspan > 1) {\r\n                                column.rowspan = rowspan\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            };\r\n            var getValueDataType = function(value) {\r\n                var dataType = (0, _type.type)(value);\r\n                if (\"string\" !== dataType && \"boolean\" !== dataType && \"number\" !== dataType && \"date\" !== dataType && \"object\" !== dataType) {\r\n                    dataType = void 0\r\n                }\r\n                return dataType\r\n            };\r\n            var getSerializationFormat = function(dataType, value) {\r\n                switch (dataType) {\r\n                    case \"date\":\r\n                    case \"datetime\":\r\n                        return _date_serialization.default.getDateSerializationFormat(value);\r\n                    case \"number\":\r\n                        if ((0, _type.isString)(value)) {\r\n                            return \"string\"\r\n                        }\r\n                        if ((0, _type.isNumeric)(value)) {\r\n                            return null\r\n                        }\r\n                }\r\n            };\r\n            var updateSerializers = function(options, dataType) {\r\n                if (!options.deserializeValue) {\r\n                    if (_uiGrid_core2.default.isDateType(dataType)) {\r\n                        options.deserializeValue = function(value) {\r\n                            return _date_serialization.default.deserializeDate(value)\r\n                        };\r\n                        options.serializeValue = function(value) {\r\n                            return (0, _type.isString)(value) ? value : _date_serialization.default.serializeDate(value, this.serializationFormat)\r\n                        }\r\n                    }\r\n                    if (\"number\" === dataType) {\r\n                        options.deserializeValue = function(value) {\r\n                            var parsedValue = parseFloat(value);\r\n                            return isNaN(parsedValue) ? value : parsedValue\r\n                        };\r\n                        options.serializeValue = function(value, target) {\r\n                            if (\"filter\" === target) {\r\n                                return value\r\n                            }\r\n                            return (0, _type.isDefined)(value) && \"string\" === this.serializationFormat ? value.toString() : value\r\n                        }\r\n                    }\r\n                }\r\n            };\r\n            var getAlignmentByDataType = function(dataType, isRTL) {\r\n                switch (dataType) {\r\n                    case \"number\":\r\n                        return \"right\";\r\n                    case \"boolean\":\r\n                        return \"center\";\r\n                    default:\r\n                        return (0, _position.getDefaultAlignment)(isRTL)\r\n                }\r\n            };\r\n            var customizeTextForBooleanDataType = function(e) {\r\n                if (true === e.value) {\r\n                    return this.trueText || \"true\"\r\n                } else {\r\n                    if (false === e.value) {\r\n                        return this.falseText || \"false\"\r\n                    } else {\r\n                        return e.valueText || \"\"\r\n                    }\r\n                }\r\n            };\r\n            var getCustomizeTextByDataType = function(dataType) {\r\n                if (\"boolean\" === dataType) {\r\n                    return customizeTextForBooleanDataType\r\n                }\r\n            };\r\n            var createColumnsFromDataSource = function(that, dataSource) {\r\n                var firstItems = that._getFirstItems(dataSource);\r\n                var fieldName;\r\n                var processedFields = {};\r\n                var result = [];\r\n                for (var i = 0; i < firstItems.length; i++) {\r\n                    if (firstItems[i]) {\r\n                        for (fieldName in firstItems[i]) {\r\n                            if (!(0, _type.isFunction)(firstItems[i][fieldName]) || _variable_wrapper.default.isWrapped(firstItems[i][fieldName])) {\r\n                                processedFields[fieldName] = true\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                for (fieldName in processedFields) {\r\n                    if (0 !== fieldName.indexOf(\"__\")) {\r\n                        var column = createColumn(that, fieldName);\r\n                        result.push(column)\r\n                    }\r\n                }\r\n                return result\r\n            };\r\n            var updateColumnIndexes = function(that) {\r\n                (0, _iterator.each)(that._columns, function(index, column) {\r\n                    column.index = index\r\n                });\r\n                (0, _iterator.each)(that._columns, function(index, column) {\r\n                    if ((0, _type.isObject)(column.ownerBand)) {\r\n                        column.ownerBand = column.ownerBand.index\r\n                    }\r\n                });\r\n                (0, _iterator.each)(that._commandColumns, function(index, column) {\r\n                    column.index = -(index + 1)\r\n                })\r\n            };\r\n            var updateColumnGroupIndexes = function(that, currentColumn) {\r\n                (0, _array.normalizeIndexes)(that._columns, \"groupIndex\", currentColumn, function(column) {\r\n                    var grouped = column.grouped;\r\n                    delete column.grouped;\r\n                    return grouped\r\n                })\r\n            };\r\n            var updateColumnSortIndexes = function(that, currentColumn) {\r\n                (0, _iterator.each)(that._columns, function(index, column) {\r\n                    if ((0, _type.isDefined)(column.sortIndex) && !isSortOrderValid(column.sortOrder)) {\r\n                        delete column.sortIndex\r\n                    }\r\n                });\r\n                (0, _array.normalizeIndexes)(that._columns, \"sortIndex\", currentColumn, function(column) {\r\n                    return !(0, _type.isDefined)(column.groupIndex) && isSortOrderValid(column.sortOrder)\r\n                })\r\n            };\r\n            var updateColumnVisibleIndexes = function(that, currentColumn) {\r\n                var key;\r\n                var column;\r\n                var bandColumns = {};\r\n                var result = [];\r\n                var bandColumnsCache = that.getBandColumnsCache();\r\n                var columns = that._columns.filter(function(column) {\r\n                    return !column.command\r\n                });\r\n                for (var i = 0; i < columns.length; i++) {\r\n                    column = columns[i];\r\n                    var parentBandColumns = getParentBandColumns(i, bandColumnsCache.columnParentByIndex);\r\n                    if (parentBandColumns.length) {\r\n                        var bandColumnIndex = parentBandColumns[parentBandColumns.length - 1].index;\r\n                        bandColumns[bandColumnIndex] = bandColumns[bandColumnIndex] || [];\r\n                        bandColumns[bandColumnIndex].push(column)\r\n                    } else {\r\n                        result.push(column)\r\n                    }\r\n                }\r\n                for (key in bandColumns) {\r\n                    (0, _array.normalizeIndexes)(bandColumns[key], \"visibleIndex\", currentColumn)\r\n                }(0, _array.normalizeIndexes)(result, \"visibleIndex\", currentColumn)\r\n            };\r\n            var getColumnIndexByVisibleIndex = function(that, visibleIndex, location) {\r\n                var rowIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.rowIndex : null;\r\n                var columns = location === GROUP_LOCATION ? that.getGroupColumns() : location === COLUMN_CHOOSER_LOCATION ? that.getChooserColumns() : that.getVisibleColumns(rowIndex);\r\n                var column;\r\n                visibleIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.columnIndex : visibleIndex;\r\n                column = columns[visibleIndex];\r\n                if (column && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n                    column = that._columns.filter(function(col) {\r\n                        return column.type === col.type\r\n                    })[0] || column\r\n                }\r\n                return column && (0, _type.isDefined)(column.index) ? column.index : -1\r\n            };\r\n            var moveColumnToGroup = function(that, column, groupIndex) {\r\n                var groupColumns = that.getGroupColumns();\r\n                var i;\r\n                if (groupIndex >= 0) {\r\n                    for (i = 0; i < groupColumns.length; i++) {\r\n                        if (groupColumns[i].groupIndex >= groupIndex) {\r\n                            groupColumns[i].groupIndex++\r\n                        }\r\n                    }\r\n                } else {\r\n                    groupIndex = 0;\r\n                    for (i = 0; i < groupColumns.length; i++) {\r\n                        groupIndex = Math.max(groupIndex, groupColumns[i].groupIndex + 1)\r\n                    }\r\n                }\r\n                return groupIndex\r\n            };\r\n\r\n            function checkUserStateColumn(column, userStateColumn) {\r\n                return column && userStateColumn && (userStateColumn.name === column.name || !column.name) && (userStateColumn.dataField === column.dataField || column.name)\r\n            }\r\n            var applyUserState = function(that) {\r\n                var columnsUserState = that._columnsUserState;\r\n                var ignoreColumnOptionNames = that._ignoreColumnOptionNames || [];\r\n                var columns = that._columns;\r\n                var columnCountById = {};\r\n                var resultColumns = [];\r\n                var allColumnsHaveState = true;\r\n                var userStateColumnIndexes = [];\r\n                var column;\r\n                var userStateColumnIndex;\r\n                var i;\r\n\r\n                function applyFieldsState(column, userStateColumn) {\r\n                    if (!userStateColumn) {\r\n                        return\r\n                    }\r\n                    for (var index = 0; index < USER_STATE_FIELD_NAMES.length; index++) {\r\n                        var fieldName = USER_STATE_FIELD_NAMES[index];\r\n                        if ((0, _array.inArray)(fieldName, ignoreColumnOptionNames) >= 0) {\r\n                            continue\r\n                        }\r\n                        if (\"dataType\" === fieldName) {\r\n                            column[fieldName] = column[fieldName] || userStateColumn[fieldName]\r\n                        } else {\r\n                            if ((0, _array.inArray)(fieldName, USER_STATE_FIELD_NAMES_15_1) >= 0) {\r\n                                if (fieldName in userStateColumn) {\r\n                                    column[fieldName] = userStateColumn[fieldName]\r\n                                }\r\n                            } else {\r\n                                if (\"selectedFilterOperation\" === fieldName && userStateColumn[fieldName]) {\r\n                                    column.defaultSelectedFilterOperation = column[fieldName] || null\r\n                                }\r\n                                column[fieldName] = userStateColumn[fieldName]\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                function findUserStateColumn(columnsUserState, column) {\r\n                    var id = column.name || column.dataField;\r\n                    var count = columnCountById[id] || 0;\r\n                    for (var j = 0; j < columnsUserState.length; j++) {\r\n                        if (checkUserStateColumn(column, columnsUserState[j])) {\r\n                            if (count) {\r\n                                count--\r\n                            } else {\r\n                                columnCountById[id] = columnCountById[id] || 0;\r\n                                columnCountById[id]++;\r\n                                return j\r\n                            }\r\n                        }\r\n                    }\r\n                    return -1\r\n                }\r\n                if (columnsUserState) {\r\n                    for (i = 0; i < columns.length; i++) {\r\n                        userStateColumnIndex = findUserStateColumn(columnsUserState, columns[i]);\r\n                        allColumnsHaveState = allColumnsHaveState && userStateColumnIndex >= 0;\r\n                        userStateColumnIndexes.push(userStateColumnIndex)\r\n                    }\r\n                    for (i = 0; i < columns.length; i++) {\r\n                        column = columns[i];\r\n                        userStateColumnIndex = userStateColumnIndexes[i];\r\n                        if (that._hasUserState || allColumnsHaveState) {\r\n                            applyFieldsState(column, columnsUserState[userStateColumnIndex])\r\n                        }\r\n                        if (userStateColumnIndex >= 0 && (0, _type.isDefined)(columnsUserState[userStateColumnIndex].initialIndex)) {\r\n                            resultColumns[userStateColumnIndex] = column\r\n                        } else {\r\n                            resultColumns.push(column)\r\n                        }\r\n                    }\r\n                    var hasAddedBands = false;\r\n                    for (i = 0; i < columnsUserState.length; i++) {\r\n                        var columnUserState = columnsUserState[i];\r\n                        if (columnUserState.added && findUserStateColumn(columns, columnUserState) < 0) {\r\n                            column = createColumn(that, columnUserState.added);\r\n                            applyFieldsState(column, columnUserState);\r\n                            resultColumns.push(column);\r\n                            if (columnUserState.added.columns) {\r\n                                hasAddedBands = true\r\n                            }\r\n                        }\r\n                    }\r\n                    if (hasAddedBands) {\r\n                        updateColumnIndexes(that);\r\n                        resultColumns = createColumnsFromOptions(that, resultColumns)\r\n                    }\r\n                    assignColumns(that, resultColumns)\r\n                }\r\n            };\r\n            var updateIndexes = function(that, column) {\r\n                updateColumnIndexes(that);\r\n                updateColumnGroupIndexes(that, column);\r\n                updateColumnSortIndexes(that, column);\r\n                resetBandColumnsCache(that);\r\n                updateColumnVisibleIndexes(that, column)\r\n            };\r\n            var resetColumnsCache = function(that) {\r\n                that.resetColumnsCache()\r\n            };\r\n\r\n            function assignColumns(that, columns) {\r\n                that._columns = columns;\r\n                resetColumnsCache(that);\r\n                that.updateColumnDataTypes()\r\n            }\r\n            var updateColumnChanges = function(that, changeType, optionName, columnIndex) {\r\n                var columnChanges = that._columnChanges || {\r\n                    optionNames: {\r\n                        length: 0\r\n                    },\r\n                    changeTypes: {\r\n                        length: 0\r\n                    },\r\n                    columnIndex: columnIndex\r\n                };\r\n                optionName = optionName || \"all\";\r\n                optionName = optionName.split(\".\")[0];\r\n                var changeTypes = columnChanges.changeTypes;\r\n                if (changeType && !changeTypes[changeType]) {\r\n                    changeTypes[changeType] = true;\r\n                    changeTypes.length++\r\n                }\r\n                var optionNames = columnChanges.optionNames;\r\n                if (optionName && !optionNames[optionName]) {\r\n                    optionNames[optionName] = true;\r\n                    optionNames.length++\r\n                }\r\n                if (void 0 === columnIndex || columnIndex !== columnChanges.columnIndex) {\r\n                    delete columnChanges.columnIndex\r\n                }\r\n                that._columnChanges = columnChanges;\r\n                resetColumnsCache(that)\r\n            };\r\n            var fireColumnsChanged = function(that) {\r\n                var onColumnsChanging = that.option(\"onColumnsChanging\");\r\n                var columnChanges = that._columnChanges;\r\n                var reinitOptionNames = [\"dataField\", \"lookup\", \"dataType\", \"columns\"];\r\n                var needReinit = function(options) {\r\n                    return options && reinitOptionNames.some(function(name) {\r\n                        return options[name]\r\n                    })\r\n                };\r\n                if (that.isInitialized() && !that._updateLockCount && columnChanges) {\r\n                    if (onColumnsChanging) {\r\n                        that._updateLockCount++;\r\n                        onColumnsChanging((0, _extend.extend)({\r\n                            component: that.component\r\n                        }, columnChanges));\r\n                        that._updateLockCount--\r\n                    }\r\n                    that._columnChanges = void 0;\r\n                    if (needReinit(columnChanges.optionNames)) {\r\n                        that.reinit()\r\n                    } else {\r\n                        that.columnsChanged.fire(columnChanges)\r\n                    }\r\n                }\r\n            };\r\n            var updateSortOrderWhenGrouping = function(that, column, groupIndex, prevGroupIndex) {\r\n                var columnWasGrouped = prevGroupIndex >= 0;\r\n                if (groupIndex >= 0) {\r\n                    if (!columnWasGrouped) {\r\n                        column.lastSortOrder = column.sortOrder\r\n                    }\r\n                } else {\r\n                    var sortMode = that.option(\"sorting.mode\");\r\n                    var sortOrder = column.lastSortOrder;\r\n                    if (\"single\" === sortMode) {\r\n                        var sortedByAnotherColumn = that._columns.some(function(col) {\r\n                            return col !== column && (0, _type.isDefined)(col.sortIndex)\r\n                        });\r\n                        if (sortedByAnotherColumn) {\r\n                            sortOrder = void 0\r\n                        }\r\n                    }\r\n                    column.sortOrder = sortOrder\r\n                }\r\n            };\r\n            var fireOptionChanged = function(that, options) {\r\n                var value = options.value;\r\n                var optionName = options.optionName;\r\n                var prevValue = options.prevValue;\r\n                var fullOptionName = options.fullOptionName;\r\n                var fullOptionPath = \"\".concat(fullOptionName, \".\").concat(optionName);\r\n                if (!IGNORE_COLUMN_OPTION_NAMES[optionName] && that._skipProcessingColumnsChange !== fullOptionPath) {\r\n                    that._skipProcessingColumnsChange = fullOptionPath;\r\n                    that.component._notifyOptionChanged(fullOptionPath, value, prevValue);\r\n                    that._skipProcessingColumnsChange = false\r\n                }\r\n            };\r\n            var columnOptionCore = function(that, column, optionName, value, notFireEvent) {\r\n                var optionGetter = (0, _data.compileGetter)(optionName);\r\n                var columnIndex = column.index;\r\n                var columns;\r\n                var changeType;\r\n                var initialColumn;\r\n                if (3 === arguments.length) {\r\n                    return optionGetter(column, {\r\n                        functionsAsIs: true\r\n                    })\r\n                }\r\n                var prevValue = optionGetter(column, {\r\n                    functionsAsIs: true\r\n                });\r\n                if (prevValue !== value) {\r\n                    if (\"groupIndex\" === optionName || \"calculateGroupValue\" === optionName) {\r\n                        changeType = \"grouping\";\r\n                        updateSortOrderWhenGrouping(that, column, value, prevValue)\r\n                    } else {\r\n                        if (\"sortIndex\" === optionName || \"sortOrder\" === optionName || \"calculateSortValue\" === optionName) {\r\n                            changeType = \"sorting\"\r\n                        } else {\r\n                            changeType = \"columns\"\r\n                        }\r\n                    }\r\n                    var optionSetter = (0, _data.compileSetter)(optionName);\r\n                    optionSetter(column, value, {\r\n                        functionsAsIs: true\r\n                    });\r\n                    var fullOptionName = getColumnFullPath(that, column);\r\n                    if (COLUMN_INDEX_OPTIONS[optionName]) {\r\n                        updateIndexes(that, column);\r\n                        value = optionGetter(column)\r\n                    }\r\n                    if (\"name\" === optionName || \"allowEditing\" === optionName) {\r\n                        that._checkColumns()\r\n                    }\r\n                    fullOptionName && fireOptionChanged(that, {\r\n                        fullOptionName: fullOptionName,\r\n                        optionName: optionName,\r\n                        value: value,\r\n                        prevValue: prevValue\r\n                    });\r\n                    if (!(0, _type.isDefined)(prevValue) && !(0, _type.isDefined)(value) && 0 !== optionName.indexOf(\"buffer\")) {\r\n                        notFireEvent = true\r\n                    }\r\n                    if (!notFireEvent) {\r\n                        if ((0, _array.inArray)(optionName, USER_STATE_FIELD_NAMES) < 0 && \"visibleWidth\" !== optionName) {\r\n                            columns = that.option(\"columns\");\r\n                            initialColumn = that.getColumnByPath(fullOptionName, columns);\r\n                            if ((0, _type.isString)(initialColumn)) {\r\n                                initialColumn = columns[columnIndex] = {\r\n                                    dataField: initialColumn\r\n                                }\r\n                            }\r\n                            if (initialColumn && checkUserStateColumn(initialColumn, column)) {\r\n                                optionSetter(initialColumn, value, {\r\n                                    functionsAsIs: true\r\n                                })\r\n                            }\r\n                        }\r\n                        updateColumnChanges(that, changeType, optionName, columnIndex)\r\n                    } else {\r\n                        resetColumnsCache(that)\r\n                    }\r\n                }\r\n            };\r\n\r\n            function isSortOrderValid(sortOrder) {\r\n                return \"asc\" === sortOrder || \"desc\" === sortOrder\r\n            }\r\n            var addExpandColumn = function(that) {\r\n                var options = that._getExpandColumnOptions();\r\n                that.addCommandColumn(options)\r\n            };\r\n            var defaultSetCellValue = function(data, value) {\r\n                var path = this.dataField.split(\".\");\r\n                var dotCount = path.length - 1;\r\n                if (this.serializeValue) {\r\n                    value = this.serializeValue(value)\r\n                }\r\n                for (var i = 0; i < dotCount; i++) {\r\n                    var name = path[i];\r\n                    data = data[name] = data[name] || {}\r\n                }\r\n                data[path[dotCount]] = value\r\n            };\r\n            var getDataColumns = function getDataColumns(columns, rowIndex, bandColumnID) {\r\n                var result = [];\r\n                rowIndex = rowIndex || 0;\r\n                columns[rowIndex] && (0, _iterator.each)(columns[rowIndex], function(_, column) {\r\n                    if (column.ownerBand === bandColumnID || column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n                        if (!column.isBand || !column.colspan) {\r\n                            if (!column.command || rowIndex < 1) {\r\n                                result.push(column)\r\n                            }\r\n                        } else {\r\n                            result.push.apply(result, getDataColumns(columns, rowIndex + 1, column.index))\r\n                        }\r\n                    }\r\n                });\r\n                return result\r\n            };\r\n            var _getRowCount = function(that) {\r\n                var rowCount = 1;\r\n                var bandColumnsCache = that.getBandColumnsCache();\r\n                var columnParentByIndex = bandColumnsCache.columnParentByIndex;\r\n                that._columns.forEach(function(column) {\r\n                    var parents = getParentBandColumns(column.index, columnParentByIndex);\r\n                    var invisibleParents = parents.filter(function(column) {\r\n                        return !column.visible\r\n                    });\r\n                    if (column.visible && !invisibleParents.length) {\r\n                        rowCount = Math.max(rowCount, parents.length + 1)\r\n                    }\r\n                });\r\n                return rowCount\r\n            };\r\n            var isCustomCommandColumn = function(that, commandColumn) {\r\n                return !!that._columns.filter(function(column) {\r\n                    return column.type === commandColumn.type\r\n                }).length\r\n            };\r\n            var getFixedPosition = function(that, column) {\r\n                var rtlEnabled = that.option(\"rtlEnabled\");\r\n                if (column.command && !isCustomCommandColumn(that, column) || !column.fixedPosition) {\r\n                    return rtlEnabled ? \"right\" : \"left\"\r\n                }\r\n                return column.fixedPosition\r\n            };\r\n            var processExpandColumns = function(columns, expandColumns, type, columnIndex) {\r\n                var customColumnIndex;\r\n                var rowCount = this.getRowCount();\r\n                var rowspan = columns[columnIndex] && columns[columnIndex].rowspan;\r\n                var expandColumnsByType = expandColumns.filter(function(column) {\r\n                    return column.type === type\r\n                });\r\n                columns.forEach(function(column, index) {\r\n                    if (column.type === type) {\r\n                        customColumnIndex = index;\r\n                        rowspan = columns[index + 1] ? columns[index + 1].rowspan : rowCount\r\n                    }\r\n                });\r\n                if (rowspan > 1) {\r\n                    expandColumnsByType = (0, _iterator.map)(expandColumnsByType, function(expandColumn) {\r\n                        return (0, _extend.extend)({}, expandColumn, {\r\n                            rowspan: rowspan\r\n                        })\r\n                    })\r\n                }\r\n                expandColumnsByType.unshift.apply(expandColumnsByType, (0, _type.isDefined)(customColumnIndex) ? [customColumnIndex, 1] : [columnIndex, 0]);\r\n                columns.splice.apply(columns, expandColumnsByType);\r\n                return rowspan || 1\r\n            };\r\n            var digitsCount = function(number) {\r\n                var i;\r\n                for (i = 0; number > 1; i++) {\r\n                    number /= 10\r\n                }\r\n                return i\r\n            };\r\n            var numberToString = function(number, digitsCount) {\r\n                var str = number ? number.toString() : \"0\";\r\n                while (str.length < digitsCount) {\r\n                    str = \"0\" + str\r\n                }\r\n                return str\r\n            };\r\n            var mergeColumns = function(that, columns, commandColumns, needToExtend) {\r\n                var column;\r\n                var commandColumnIndex;\r\n                var result = columns.slice().map(function(column) {\r\n                    return (0, _extend.extend)({}, column)\r\n                });\r\n                var isColumnFixing = that._isColumnFixing();\r\n                var defaultCommandColumns = commandColumns.slice().map(function(column) {\r\n                    return (0, _extend.extend)({\r\n                        fixed: isColumnFixing\r\n                    }, column)\r\n                });\r\n                var getCommandColumnIndex = function(column) {\r\n                    return commandColumns.reduce(function(result, commandColumn, index) {\r\n                        var columnType = needToExtend && column.type === GROUP_COMMAND_COLUMN_NAME ? \"expand\" : column.type;\r\n                        return commandColumn.type === columnType || commandColumn.command === column.command ? index : result\r\n                    }, -1)\r\n                };\r\n                var callbackFilter = function(commandColumn) {\r\n                    return commandColumn.command !== commandColumns[commandColumnIndex].command\r\n                };\r\n                for (var i = 0; i < columns.length; i++) {\r\n                    column = columns[i];\r\n                    commandColumnIndex = column && (column.type || column.command) ? getCommandColumnIndex(column) : -1;\r\n                    if (commandColumnIndex >= 0) {\r\n                        if (needToExtend) {\r\n                            result[i] = (0, _extend.extend)({\r\n                                fixed: isColumnFixing\r\n                            }, commandColumns[commandColumnIndex], column);\r\n                            if (column.type !== GROUP_COMMAND_COLUMN_NAME) {\r\n                                defaultCommandColumns = defaultCommandColumns.filter(callbackFilter)\r\n                            }\r\n                        } else {\r\n                            var columnOptions = {\r\n                                visibleIndex: column.visibleIndex,\r\n                                index: column.index,\r\n                                headerId: column.headerId,\r\n                                allowFixing: 0 === column.groupIndex,\r\n                                allowReordering: 0 === column.groupIndex,\r\n                                groupIndex: column.groupIndex\r\n                            };\r\n                            result[i] = (0, _extend.extend)({}, column, commandColumns[commandColumnIndex], column.type === GROUP_COMMAND_COLUMN_NAME && columnOptions)\r\n                        }\r\n                    }\r\n                }\r\n                if (columns.length && needToExtend && defaultCommandColumns.length) {\r\n                    result = result.concat(defaultCommandColumns)\r\n                }\r\n                return result\r\n            };\r\n            var isColumnFixed = function(that, column) {\r\n                return (0, _type.isDefined)(column.fixed) || !column.type ? column.fixed : that._isColumnFixing()\r\n            };\r\n            var convertOwnerBandToColumnReference = function(columns) {\r\n                columns.forEach(function(column) {\r\n                    if ((0, _type.isDefined)(column.ownerBand)) {\r\n                        column.ownerBand = columns[column.ownerBand]\r\n                    }\r\n                })\r\n            };\r\n            var resetBandColumnsCache = function(that) {\r\n                that._bandColumnsCache = void 0\r\n            };\r\n            var findColumn = function(columns, identifier) {\r\n                var identifierOptionName = (0, _type.isString)(identifier) && identifier.substr(0, identifier.indexOf(\":\"));\r\n                var column;\r\n                if (void 0 === identifier) {\r\n                    return\r\n                }\r\n                if (identifierOptionName) {\r\n                    identifier = identifier.substr(identifierOptionName.length + 1)\r\n                }\r\n                if (identifierOptionName) {\r\n                    column = columns.filter(function(column) {\r\n                        return \"\" + column[identifierOptionName] === identifier\r\n                    })[0]\r\n                } else {\r\n                    [\"index\", \"name\", \"dataField\", \"caption\"].some(function(optionName) {\r\n                        column = columns.filter(function(column) {\r\n                            return column[optionName] === identifier\r\n                        })[0];\r\n                        return !!column\r\n                    })\r\n                }\r\n                return column\r\n            };\r\n            return {\r\n                _getExpandColumnOptions: function() {\r\n                    return {\r\n                        type: \"expand\",\r\n                        command: \"expand\",\r\n                        width: \"auto\",\r\n                        cssClass: COMMAND_EXPAND_CLASS,\r\n                        allowEditing: false,\r\n                        allowGrouping: false,\r\n                        allowSorting: false,\r\n                        allowResizing: false,\r\n                        allowReordering: false,\r\n                        allowHiding: false\r\n                    }\r\n                },\r\n                _getFirstItems: function(dataSource) {\r\n                    var groupsCount;\r\n                    var items = [];\r\n                    var getFirstItemsCore = function getFirstItemsCore(items, groupsCount) {\r\n                        if (!items || !groupsCount) {\r\n                            return items\r\n                        }\r\n                        for (var i = 0; i < items.length; i++) {\r\n                            var childItems = getFirstItemsCore(items[i].items || items[i].collapsedItems, groupsCount - 1);\r\n                            if (childItems && childItems.length) {\r\n                                return childItems\r\n                            }\r\n                        }\r\n                    };\r\n                    if (dataSource && dataSource.items().length > 0) {\r\n                        groupsCount = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group()).length;\r\n                        items = getFirstItemsCore(dataSource.items(), groupsCount) || []\r\n                    }\r\n                    return items\r\n                },\r\n                _endUpdateCore: function() {\r\n                    !this._skipProcessingColumnsChange && fireColumnsChanged(this)\r\n                },\r\n                init: function() {\r\n                    var that = this;\r\n                    var columns = that.option(\"columns\");\r\n                    that._commandColumns = that._commandColumns || [];\r\n                    that._columns = that._columns || [];\r\n                    that._isColumnsFromOptions = !!columns;\r\n                    if (that._isColumnsFromOptions) {\r\n                        assignColumns(that, columns ? createColumnsFromOptions(that, columns) : []);\r\n                        applyUserState(that)\r\n                    } else {\r\n                        assignColumns(that, that._columnsUserState ? createColumnsFromOptions(that, that._columnsUserState) : that._columns)\r\n                    }\r\n                    addExpandColumn(that);\r\n                    if (that._dataSourceApplied) {\r\n                        that.applyDataSource(that._dataSource, true)\r\n                    } else {\r\n                        updateIndexes(that)\r\n                    }\r\n                    that._checkColumns()\r\n                },\r\n                callbackNames: function() {\r\n                    return [\"columnsChanged\"]\r\n                },\r\n                getColumnByPath: function(path, columns) {\r\n                    var that = this;\r\n                    var column;\r\n                    var columnIndexes = [];\r\n                    path.replace(regExp, function(_, columnIndex) {\r\n                        columnIndexes.push(parseInt(columnIndex));\r\n                        return \"\"\r\n                    });\r\n                    if (columnIndexes.length) {\r\n                        if (columns) {\r\n                            column = columnIndexes.reduce(function(column, index) {\r\n                                return column && column.columns && column.columns[index]\r\n                            }, {\r\n                                columns: columns\r\n                            })\r\n                        } else {\r\n                            column = getColumnByIndexes(that, columnIndexes)\r\n                        }\r\n                    }\r\n                    return column\r\n                },\r\n                optionChanged: function(args) {\r\n                    var needUpdateRequireResize;\r\n                    switch (args.name) {\r\n                        case \"adaptColumnWidthByRatio\":\r\n                            args.handled = true;\r\n                            break;\r\n                        case \"dataSource\":\r\n                            if (args.value !== args.previousValue && !this.option(\"columns\") && (!Array.isArray(args.value) || !Array.isArray(args.previousValue))) {\r\n                                this._columns = []\r\n                            }\r\n                            break;\r\n                        case \"columns\":\r\n                            needUpdateRequireResize = this._skipProcessingColumnsChange;\r\n                            args.handled = true;\r\n                            if (!this._skipProcessingColumnsChange) {\r\n                                if (args.name === args.fullName) {\r\n                                    this._columnsUserState = null;\r\n                                    this._ignoreColumnOptionNames = null;\r\n                                    this.init()\r\n                                } else {\r\n                                    this._columnOptionChanged(args);\r\n                                    needUpdateRequireResize = true\r\n                                }\r\n                            }\r\n                            if (needUpdateRequireResize) {\r\n                                this._updateRequireResize(args)\r\n                            }\r\n                            break;\r\n                        case \"commonColumnSettings\":\r\n                        case \"columnAutoWidth\":\r\n                        case \"allowColumnResizing\":\r\n                        case \"allowColumnReordering\":\r\n                        case \"columnFixing\":\r\n                        case \"grouping\":\r\n                        case \"groupPanel\":\r\n                        case \"regenerateColumnsByVisibleItems\":\r\n                        case \"customizeColumns\":\r\n                        case \"editing\":\r\n                        case \"columnHidingEnabled\":\r\n                        case \"dateSerializationFormat\":\r\n                        case \"columnResizingMode\":\r\n                        case \"columnMinWidth\":\r\n                        case \"columnWidth\":\r\n                            var _args$fullName, _args$fullName2, _args$fullName3, _args$fullName4, _args$fullName5;\r\n                            args.handled = true;\r\n                            var ignoreColumnOptionNames = \"columnWidth\" === args.fullName && [\"width\"];\r\n                            var isEditingPopup = 0 === (null === (_args$fullName = args.fullName) || void 0 === _args$fullName ? void 0 : _args$fullName.indexOf(\"editing.popup\"));\r\n                            var isEditingForm = 0 === (null === (_args$fullName2 = args.fullName) || void 0 === _args$fullName2 ? void 0 : _args$fullName2.indexOf(\"editing.form\"));\r\n                            var isEditRowKey = 0 === (null === (_args$fullName3 = args.fullName) || void 0 === _args$fullName3 ? void 0 : _args$fullName3.indexOf(\"editing.editRowKey\"));\r\n                            var isEditColumnName = 0 === (null === (_args$fullName4 = args.fullName) || void 0 === _args$fullName4 ? void 0 : _args$fullName4.indexOf(\"editing.editColumnName\"));\r\n                            var isChanges = 0 === (null === (_args$fullName5 = args.fullName) || void 0 === _args$fullName5 ? void 0 : _args$fullName5.indexOf(\"editing.changes\"));\r\n                            var needReinit = !isEditingPopup && !isEditingForm && !isEditRowKey && !isChanges && !isEditColumnName;\r\n                            if (needReinit) {\r\n                                this.reinit(ignoreColumnOptionNames)\r\n                            }\r\n                            break;\r\n                        case \"rtlEnabled\":\r\n                            this.reinit();\r\n                            break;\r\n                        default:\r\n                            this.callBase(args)\r\n                    }\r\n                },\r\n                _columnOptionChanged: function(args) {\r\n                    var columnOptionValue = {};\r\n                    var column = this.getColumnByPath(args.fullName);\r\n                    var columnOptionName = args.fullName.replace(regExp, \"\");\r\n                    if (column) {\r\n                        if (columnOptionName) {\r\n                            columnOptionValue[columnOptionName] = args.value\r\n                        } else {\r\n                            columnOptionValue = args.value\r\n                        }\r\n                        this._skipProcessingColumnsChange = args.fullName;\r\n                        this.columnOption(column.index, columnOptionValue);\r\n                        this._skipProcessingColumnsChange = false\r\n                    }\r\n                },\r\n                _updateRequireResize: function(args) {\r\n                    var component = this.component;\r\n                    if (\"width\" === args.fullName.replace(regExp, \"\") && component._updateLockCount) {\r\n                        component._requireResize = true\r\n                    }\r\n                },\r\n                publicMethods: function() {\r\n                    return [\"addColumn\", \"deleteColumn\", \"columnOption\", \"columnCount\", \"clearSorting\", \"clearGrouping\", \"getVisibleColumns\", \"getVisibleColumnIndex\"]\r\n                },\r\n                applyDataSource: function(dataSource, forceApplying) {\r\n                    var that = this;\r\n                    var isDataSourceLoaded = dataSource && dataSource.isLoaded();\r\n                    that._dataSource = dataSource;\r\n                    if (!that._dataSourceApplied || 0 === that._dataSourceColumnsCount || forceApplying || that.option(\"regenerateColumnsByVisibleItems\")) {\r\n                        if (isDataSourceLoaded) {\r\n                            if (!that._isColumnsFromOptions) {\r\n                                var columnsFromDataSource = createColumnsFromDataSource(that, dataSource);\r\n                                if (columnsFromDataSource.length) {\r\n                                    assignColumns(that, columnsFromDataSource);\r\n                                    that._dataSourceColumnsCount = that._columns.length;\r\n                                    applyUserState(that)\r\n                                }\r\n                            }\r\n                            return that.updateColumns(dataSource, forceApplying)\r\n                        } else {\r\n                            that._dataSourceApplied = false\r\n                        }\r\n                    } else {\r\n                        if (isDataSourceLoaded && !that.isAllDataTypesDefined(true) && that.updateColumnDataTypes(dataSource)) {\r\n                            updateColumnChanges(that, \"columns\");\r\n                            fireColumnsChanged(that);\r\n                            return (new _deferred.Deferred).reject().promise()\r\n                        }\r\n                    }\r\n                },\r\n                reset: function() {\r\n                    this._dataSourceApplied = false;\r\n                    this._dataSourceColumnsCount = void 0;\r\n                    this.reinit()\r\n                },\r\n                resetColumnsCache: function() {\r\n                    var that = this;\r\n                    that._visibleColumns = void 0;\r\n                    that._fixedColumns = void 0;\r\n                    that._rowCount = void 0;\r\n                    resetBandColumnsCache(that)\r\n                },\r\n                reinit: function(ignoreColumnOptionNames) {\r\n                    this._columnsUserState = this.getUserState();\r\n                    this._ignoreColumnOptionNames = ignoreColumnOptionNames || null;\r\n                    this.init();\r\n                    if (ignoreColumnOptionNames) {\r\n                        this._ignoreColumnOptionNames = null\r\n                    }\r\n                },\r\n                isInitialized: function() {\r\n                    return !!this._columns.length || !!this.option(\"columns\")\r\n                },\r\n                isDataSourceApplied: function() {\r\n                    return this._dataSourceApplied\r\n                },\r\n                getCommonSettings: function(column) {\r\n                    var commonColumnSettings = (!column || !column.type) && this.option(\"commonColumnSettings\") || {};\r\n                    var groupingOptions = this.option(\"grouping\") || {};\r\n                    var groupPanelOptions = this.option(\"groupPanel\") || {};\r\n                    return (0, _extend.extend)({\r\n                        allowFixing: this.option(\"columnFixing.enabled\"),\r\n                        allowResizing: this.option(\"allowColumnResizing\") || void 0,\r\n                        allowReordering: this.option(\"allowColumnReordering\"),\r\n                        minWidth: this.option(\"columnMinWidth\"),\r\n                        width: this.option(\"columnWidth\"),\r\n                        autoExpandGroup: groupingOptions.autoExpandAll,\r\n                        allowCollapsing: groupingOptions.allowCollapsing,\r\n                        allowGrouping: groupPanelOptions.allowColumnDragging && groupPanelOptions.visible || groupingOptions.contextMenuEnabled\r\n                    }, commonColumnSettings)\r\n                },\r\n                isColumnOptionUsed: function(optionName) {\r\n                    for (var i = 0; i < this._columns.length; i++) {\r\n                        if (this._columns[i][optionName]) {\r\n                            return true\r\n                        }\r\n                    }\r\n                },\r\n                isAllDataTypesDefined: function(checkSerializers) {\r\n                    var columns = this._columns;\r\n                    if (!columns.length) {\r\n                        return false\r\n                    }\r\n                    for (var i = 0; i < columns.length; i++) {\r\n                        if (!columns[i].dataField && columns[i].calculateCellValue === columns[i].defaultCalculateCellValue) {\r\n                            continue\r\n                        }\r\n                        if (!columns[i].dataType || checkSerializers && columns[i].deserializeValue && void 0 === columns[i].serializationFormat) {\r\n                            return false\r\n                        }\r\n                    }\r\n                    return true\r\n                },\r\n                getColumns: function() {\r\n                    return this._columns\r\n                },\r\n                isBandColumnsUsed: function() {\r\n                    return this.getColumns().some(function(column) {\r\n                        return column.isBand\r\n                    })\r\n                },\r\n                getGroupColumns: function() {\r\n                    var result = [];\r\n                    (0, _iterator.each)(this._columns, function() {\r\n                        var column = this;\r\n                        if ((0, _type.isDefined)(column.groupIndex)) {\r\n                            result[column.groupIndex] = column\r\n                        }\r\n                    });\r\n                    return result\r\n                },\r\n                getVisibleColumns: function(rowIndex) {\r\n                    this._visibleColumns = this._visibleColumns || this._getVisibleColumnsCore();\r\n                    rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._visibleColumns.length - 1;\r\n                    return this._visibleColumns[rowIndex] || []\r\n                },\r\n                getFixedColumns: function(rowIndex) {\r\n                    this._fixedColumns = this._fixedColumns || this._getFixedColumnsCore();\r\n                    rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._fixedColumns.length - 1;\r\n                    return this._fixedColumns[rowIndex] || []\r\n                },\r\n                getFilteringColumns: function() {\r\n                    return this.getColumns().filter(function(item) {\r\n                        return (item.dataField || item.name) && (item.allowFiltering || item.allowHeaderFiltering)\r\n                    }).map(function(item) {\r\n                        var field = (0, _extend.extend)(true, {}, item);\r\n                        if (!(0, _type.isDefined)(field.dataField)) {\r\n                            field.dataField = field.name\r\n                        }\r\n                        field.filterOperations = item.filterOperations !== item.defaultFilterOperations ? field.filterOperations : null;\r\n                        return field\r\n                    })\r\n                },\r\n                getColumnIndexOffset: function() {\r\n                    return 0\r\n                },\r\n                _getFixedColumnsCore: function() {\r\n                    var that = this;\r\n                    var result = [];\r\n                    var rowCount = that.getRowCount();\r\n                    var isColumnFixing = that._isColumnFixing();\r\n                    var transparentColumn = {\r\n                        command: \"transparent\"\r\n                    };\r\n                    var transparentColspan = 0;\r\n                    var notFixedColumnCount;\r\n                    var transparentColumnIndex;\r\n                    var lastFixedPosition;\r\n                    if (isColumnFixing) {\r\n                        for (var i = 0; i <= rowCount; i++) {\r\n                            notFixedColumnCount = 0;\r\n                            lastFixedPosition = null;\r\n                            transparentColumnIndex = null;\r\n                            var visibleColumns = that.getVisibleColumns(i, true);\r\n                            for (var j = 0; j < visibleColumns.length; j++) {\r\n                                var prevColumn = visibleColumns[j - 1];\r\n                                var column = visibleColumns[j];\r\n                                if (!column.fixed) {\r\n                                    if (0 === i) {\r\n                                        if (column.isBand && column.colspan) {\r\n                                            transparentColspan += column.colspan\r\n                                        } else {\r\n                                            transparentColspan++\r\n                                        }\r\n                                    }\r\n                                    notFixedColumnCount++;\r\n                                    if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n                                        transparentColumnIndex = j\r\n                                    }\r\n                                } else {\r\n                                    if (prevColumn && prevColumn.fixed && getFixedPosition(that, prevColumn) !== getFixedPosition(that, column)) {\r\n                                        if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n                                            transparentColumnIndex = j\r\n                                        }\r\n                                    } else {\r\n                                        lastFixedPosition = column.fixedPosition\r\n                                    }\r\n                                }\r\n                            }\r\n                            if (0 === i && (0 === notFixedColumnCount || notFixedColumnCount >= visibleColumns.length)) {\r\n                                return []\r\n                            }\r\n                            if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n                                transparentColumnIndex = \"right\" === lastFixedPosition ? 0 : visibleColumns.length\r\n                            }\r\n                            result[i] = visibleColumns.slice(0);\r\n                            if (!transparentColumn.colspan) {\r\n                                transparentColumn.colspan = transparentColspan\r\n                            }\r\n                            result[i].splice(transparentColumnIndex, notFixedColumnCount, transparentColumn)\r\n                        }\r\n                    }\r\n                    return result.map(function(columns) {\r\n                        return columns.map(function(column) {\r\n                            var newColumn = _objectSpread({}, column);\r\n                            if (newColumn.headerId) {\r\n                                newColumn.headerId += \"-fixed\"\r\n                            }\r\n                            return newColumn\r\n                        })\r\n                    })\r\n                },\r\n                _isColumnFixing: function() {\r\n                    var isColumnFixing = this.option(\"columnFixing.enabled\");\r\n                    !isColumnFixing && (0, _iterator.each)(this._columns, function(_, column) {\r\n                        if (column.fixed) {\r\n                            isColumnFixing = true;\r\n                            return false\r\n                        }\r\n                    });\r\n                    return isColumnFixing\r\n                },\r\n                _getExpandColumnsCore: function() {\r\n                    return this.getGroupColumns()\r\n                },\r\n                getExpandColumns: function() {\r\n                    var expandColumns = this._getExpandColumnsCore();\r\n                    var expandColumn;\r\n                    var firstGroupColumn = expandColumns.filter(function(column) {\r\n                        return 0 === column.groupIndex\r\n                    })[0];\r\n                    var isFixedFirstGroupColumn = firstGroupColumn && firstGroupColumn.fixed;\r\n                    var isColumnFixing = this._isColumnFixing();\r\n                    if (expandColumns.length) {\r\n                        expandColumn = this.columnOption(\"command:expand\")\r\n                    }\r\n                    expandColumns = (0, _iterator.map)(expandColumns, function(column) {\r\n                        return (0, _extend.extend)({}, column, {\r\n                            visibleWidth: null,\r\n                            minWidth: null,\r\n                            cellTemplate: !(0, _type.isDefined)(column.groupIndex) ? column.cellTemplate : null,\r\n                            headerCellTemplate: null,\r\n                            fixed: !(0, _type.isDefined)(column.groupIndex) || !isFixedFirstGroupColumn ? isColumnFixing : true\r\n                        }, expandColumn, {\r\n                            index: column.index,\r\n                            type: column.type || GROUP_COMMAND_COLUMN_NAME\r\n                        })\r\n                    });\r\n                    return expandColumns\r\n                },\r\n                getBandColumnsCache: function() {\r\n                    if (!this._bandColumnsCache) {\r\n                        var columns = this._columns;\r\n                        var columnChildrenByIndex = {};\r\n                        var columnParentByIndex = {};\r\n                        var isPlain = true;\r\n                        columns.forEach(function(column) {\r\n                            var parentIndex = column.ownerBand;\r\n                            var parent = columns[parentIndex];\r\n                            if (column.hasColumns) {\r\n                                isPlain = false\r\n                            }\r\n                            if (column.colspan) {\r\n                                column.colspan = void 0\r\n                            }\r\n                            if (column.rowspan) {\r\n                                column.rowspan = void 0\r\n                            }\r\n                            if (parent) {\r\n                                columnParentByIndex[column.index] = parent\r\n                            } else {\r\n                                parentIndex = -1\r\n                            }\r\n                            columnChildrenByIndex[parentIndex] = columnChildrenByIndex[parentIndex] || [];\r\n                            columnChildrenByIndex[parentIndex].push(column)\r\n                        });\r\n                        this._bandColumnsCache = {\r\n                            isPlain: isPlain,\r\n                            columnChildrenByIndex: columnChildrenByIndex,\r\n                            columnParentByIndex: columnParentByIndex\r\n                        }\r\n                    }\r\n                    return this._bandColumnsCache\r\n                },\r\n                _isColumnVisible: function(column) {\r\n                    return column.visible && this.isParentColumnVisible(column.index)\r\n                },\r\n                _getVisibleColumnsCore: function() {\r\n                    var that = this;\r\n                    var i;\r\n                    var result = [];\r\n                    var rowspanGroupColumns = 0;\r\n                    var rowspanExpandColumns = 0;\r\n                    var rowCount = that.getRowCount();\r\n                    var positiveIndexedColumns = [];\r\n                    var negativeIndexedColumns = [];\r\n                    var notGroupedColumnsCount = 0;\r\n                    var isFixedToEnd;\r\n                    var rtlEnabled = that.option(\"rtlEnabled\");\r\n                    var bandColumnsCache = that.getBandColumnsCache();\r\n                    var expandColumns = mergeColumns(that, that.getExpandColumns(), that._columns);\r\n                    var columns = mergeColumns(that, that._columns, that._commandColumns, true);\r\n                    var columnDigitsCount = digitsCount(columns.length);\r\n                    processBandColumns(that, columns, bandColumnsCache);\r\n                    for (i = 0; i < rowCount; i++) {\r\n                        result[i] = [];\r\n                        negativeIndexedColumns[i] = [{}];\r\n                        positiveIndexedColumns[i] = [{}, {}, {}]\r\n                    }(0, _iterator.each)(columns, function() {\r\n                        var column = this;\r\n                        var visibleIndex = column.visibleIndex;\r\n                        var indexedColumns;\r\n                        var parentBandColumns = getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex);\r\n                        var visible = that._isColumnVisible(column);\r\n                        if (visible && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {\r\n                            var rowIndex = parentBandColumns.length;\r\n                            if (visibleIndex < 0) {\r\n                                visibleIndex = -visibleIndex;\r\n                                indexedColumns = negativeIndexedColumns[rowIndex]\r\n                            } else {\r\n                                column.fixed = parentBandColumns.length ? parentBandColumns[0].fixed : column.fixed;\r\n                                column.fixedPosition = parentBandColumns.length ? parentBandColumns[0].fixedPosition : column.fixedPosition;\r\n                                if (column.fixed) {\r\n                                    isFixedToEnd = \"right\" === column.fixedPosition;\r\n                                    if (rtlEnabled && (!column.command || isCustomCommandColumn(that, column))) {\r\n                                        isFixedToEnd = !isFixedToEnd\r\n                                    }\r\n                                    if (isFixedToEnd) {\r\n                                        indexedColumns = positiveIndexedColumns[rowIndex][2]\r\n                                    } else {\r\n                                        indexedColumns = positiveIndexedColumns[rowIndex][0]\r\n                                    }\r\n                                } else {\r\n                                    indexedColumns = positiveIndexedColumns[rowIndex][1]\r\n                                }\r\n                            }\r\n                            if (parentBandColumns.length) {\r\n                                visibleIndex = numberToString(visibleIndex, columnDigitsCount);\r\n                                for (i = parentBandColumns.length - 1; i >= 0; i--) {\r\n                                    visibleIndex = numberToString(parentBandColumns[i].visibleIndex, columnDigitsCount) + visibleIndex\r\n                                }\r\n                            }\r\n                            indexedColumns[visibleIndex] = indexedColumns[visibleIndex] || [];\r\n                            indexedColumns[visibleIndex].push(column);\r\n                            notGroupedColumnsCount++\r\n                        }\r\n                    });\r\n                    (0, _iterator.each)(result, function(rowIndex) {\r\n                        (0, _object.orderEach)(negativeIndexedColumns[rowIndex], function(_, columns) {\r\n                            result[rowIndex].unshift.apply(result[rowIndex], columns)\r\n                        });\r\n                        var firstPositiveIndexColumn = result[rowIndex].length;\r\n                        (0, _iterator.each)(positiveIndexedColumns[rowIndex], function(index, columnsByFixing) {\r\n                            (0, _object.orderEach)(columnsByFixing, function(_, columnsByVisibleIndex) {\r\n                                result[rowIndex].push.apply(result[rowIndex], columnsByVisibleIndex)\r\n                            })\r\n                        });\r\n                        if (rowspanExpandColumns < rowIndex + 1) {\r\n                            rowspanExpandColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, \"detailExpand\", firstPositiveIndexColumn)\r\n                        }\r\n                        if (rowspanGroupColumns < rowIndex + 1) {\r\n                            rowspanGroupColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, GROUP_COMMAND_COLUMN_NAME, firstPositiveIndexColumn)\r\n                        }\r\n                    });\r\n                    result.push(getDataColumns(result));\r\n                    if (!notGroupedColumnsCount && that._columns.length) {\r\n                        result[rowCount].push({\r\n                            command: \"empty\"\r\n                        })\r\n                    }\r\n                    return result\r\n                },\r\n                getInvisibleColumns: function(columns, bandColumnIndex) {\r\n                    var that = this;\r\n                    var result = [];\r\n                    var hiddenColumnsByBand;\r\n                    columns = columns || that._columns;\r\n                    (0, _iterator.each)(columns, function(_, column) {\r\n                        if (column.ownerBand !== bandColumnIndex) {\r\n                            return\r\n                        }\r\n                        if (column.isBand) {\r\n                            if (!column.visible) {\r\n                                hiddenColumnsByBand = that.getChildrenByBandColumn(column.index)\r\n                            } else {\r\n                                hiddenColumnsByBand = that.getInvisibleColumns(that.getChildrenByBandColumn(column.index), column.index)\r\n                            }\r\n                            if (hiddenColumnsByBand.length) {\r\n                                result.push(column);\r\n                                result = result.concat(hiddenColumnsByBand)\r\n                            }\r\n                            return\r\n                        }\r\n                        if (!column.visible) {\r\n                            result.push(column)\r\n                        }\r\n                    });\r\n                    return result\r\n                },\r\n                getChooserColumns: function(getAllColumns) {\r\n                    var columns = getAllColumns ? this.getColumns() : this.getInvisibleColumns();\r\n                    return (0, _common.grep)(columns, function(column) {\r\n                        return column.showInColumnChooser\r\n                    })\r\n                },\r\n                allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n                    var that = this;\r\n                    var columnIndex = getColumnIndexByVisibleIndex(that, fromVisibleIndex, sourceLocation);\r\n                    var sourceColumn = that._columns[columnIndex];\r\n                    if (sourceColumn && (sourceColumn.allowReordering || sourceColumn.allowGrouping || sourceColumn.allowHiding)) {\r\n                        if (sourceLocation === targetLocation) {\r\n                            if (sourceLocation === COLUMN_CHOOSER_LOCATION) {\r\n                                return false\r\n                            }\r\n                            fromVisibleIndex = (0, _type.isObject)(fromVisibleIndex) ? fromVisibleIndex.columnIndex : fromVisibleIndex;\r\n                            toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n                            return fromVisibleIndex !== toVisibleIndex && fromVisibleIndex + 1 !== toVisibleIndex\r\n                        } else {\r\n                            if (sourceLocation === GROUP_LOCATION && targetLocation !== COLUMN_CHOOSER_LOCATION || targetLocation === GROUP_LOCATION) {\r\n                                return sourceColumn && sourceColumn.allowGrouping\r\n                            } else {\r\n                                if (sourceLocation === COLUMN_CHOOSER_LOCATION || targetLocation === COLUMN_CHOOSER_LOCATION) {\r\n                                    return sourceColumn && sourceColumn.allowHiding\r\n                                }\r\n                            }\r\n                        }\r\n                        return true\r\n                    }\r\n                    return false\r\n                },\r\n                moveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n                    var that = this;\r\n                    var options = {};\r\n                    var prevGroupIndex;\r\n                    var fromIndex = getColumnIndexByVisibleIndex(that, fromVisibleIndex, sourceLocation);\r\n                    var toIndex = getColumnIndexByVisibleIndex(that, toVisibleIndex, targetLocation);\r\n                    var targetGroupIndex;\r\n                    if (fromIndex >= 0) {\r\n                        var column = that._columns[fromIndex];\r\n                        toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n                        targetGroupIndex = toIndex >= 0 ? that._columns[toIndex].groupIndex : -1;\r\n                        if ((0, _type.isDefined)(column.groupIndex) && sourceLocation === GROUP_LOCATION) {\r\n                            if (targetGroupIndex > column.groupIndex) {\r\n                                targetGroupIndex--\r\n                            }\r\n                            if (targetLocation !== GROUP_LOCATION) {\r\n                                options.groupIndex = void 0\r\n                            } else {\r\n                                prevGroupIndex = column.groupIndex;\r\n                                delete column.groupIndex;\r\n                                updateColumnGroupIndexes(that)\r\n                            }\r\n                        }\r\n                        if (targetLocation === GROUP_LOCATION) {\r\n                            options.groupIndex = moveColumnToGroup(that, column, targetGroupIndex);\r\n                            column.groupIndex = prevGroupIndex\r\n                        } else {\r\n                            if (toVisibleIndex >= 0) {\r\n                                var targetColumn = that._columns[toIndex];\r\n                                if (!targetColumn || column.ownerBand !== targetColumn.ownerBand) {\r\n                                    options.visibleIndex = MAX_SAFE_INTEGER\r\n                                } else {\r\n                                    if (isColumnFixed(that, column) ^ isColumnFixed(that, targetColumn)) {\r\n                                        options.visibleIndex = MAX_SAFE_INTEGER\r\n                                    } else {\r\n                                        options.visibleIndex = targetColumn.visibleIndex\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        var isVisible = targetLocation !== COLUMN_CHOOSER_LOCATION;\r\n                        if (column.visible !== isVisible) {\r\n                            options.visible = isVisible\r\n                        }\r\n                        that.columnOption(column.index, options)\r\n                    }\r\n                },\r\n                changeSortOrder: function(columnIndex, sortOrder) {\r\n                    var that = this;\r\n                    var options = {};\r\n                    var sortingOptions = that.option(\"sorting\");\r\n                    var sortingMode = sortingOptions && sortingOptions.mode;\r\n                    var needResetSorting = \"single\" === sortingMode || !sortOrder;\r\n                    var allowSorting = \"single\" === sortingMode || \"multiple\" === sortingMode;\r\n                    var column = that._columns[columnIndex];\r\n                    var nextSortOrder = function(column) {\r\n                        if (\"ctrl\" === sortOrder) {\r\n                            if (!(\"sortOrder\" in column && \"sortIndex\" in column)) {\r\n                                return false\r\n                            }\r\n                            options.sortOrder = void 0;\r\n                            options.sortIndex = void 0\r\n                        } else {\r\n                            if ((0, _type.isDefined)(column.groupIndex) || (0, _type.isDefined)(column.sortIndex)) {\r\n                                options.sortOrder = \"desc\" === column.sortOrder ? \"asc\" : \"desc\"\r\n                            } else {\r\n                                options.sortOrder = \"asc\"\r\n                            }\r\n                        }\r\n                        return true\r\n                    };\r\n                    if (allowSorting && column && column.allowSorting) {\r\n                        if (needResetSorting && !(0, _type.isDefined)(column.groupIndex)) {\r\n                            (0, _iterator.each)(that._columns, function(index) {\r\n                                if (index !== columnIndex && this.sortOrder) {\r\n                                    if (!(0, _type.isDefined)(this.groupIndex)) {\r\n                                        delete this.sortOrder\r\n                                    }\r\n                                    delete this.sortIndex\r\n                                }\r\n                            })\r\n                        }\r\n                        if (isSortOrderValid(sortOrder)) {\r\n                            if (column.sortOrder !== sortOrder) {\r\n                                options.sortOrder = sortOrder\r\n                            }\r\n                        } else {\r\n                            if (\"none\" === sortOrder) {\r\n                                if (column.sortOrder) {\r\n                                    options.sortIndex = void 0;\r\n                                    options.sortOrder = void 0\r\n                                }\r\n                            } else {\r\n                                nextSortOrder(column)\r\n                            }\r\n                        }\r\n                    }\r\n                    that.columnOption(column.index, options)\r\n                },\r\n                getSortDataSourceParameters: function(useLocalSelector) {\r\n                    var that = this;\r\n                    var sortColumns = [];\r\n                    var sort = [];\r\n                    (0, _iterator.each)(that._columns, function() {\r\n                        if ((this.dataField || this.selector || this.calculateCellValue) && (0, _type.isDefined)(this.sortIndex) && !(0, _type.isDefined)(this.groupIndex)) {\r\n                            sortColumns[this.sortIndex] = this\r\n                        }\r\n                    });\r\n                    (0, _iterator.each)(sortColumns, function() {\r\n                        var sortOrder = this && this.sortOrder;\r\n                        if (isSortOrderValid(sortOrder)) {\r\n                            var sortItem = {\r\n                                selector: this.calculateSortValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue,\r\n                                desc: \"desc\" === this.sortOrder\r\n                            };\r\n                            if (this.sortingMethod) {\r\n                                sortItem.compare = this.sortingMethod.bind(this)\r\n                            }\r\n                            sort.push(sortItem)\r\n                        }\r\n                    });\r\n                    return sort.length > 0 ? sort : null\r\n                },\r\n                getGroupDataSourceParameters: function(useLocalSelector) {\r\n                    var group = [];\r\n                    (0, _iterator.each)(this.getGroupColumns(), function() {\r\n                        var selector = this.calculateGroupValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue;\r\n                        if (selector) {\r\n                            var groupItem = {\r\n                                selector: selector,\r\n                                desc: \"desc\" === this.sortOrder,\r\n                                isExpanded: !!this.autoExpandGroup\r\n                            };\r\n                            if (this.sortingMethod) {\r\n                                groupItem.compare = this.sortingMethod.bind(this)\r\n                            }\r\n                            group.push(groupItem)\r\n                        }\r\n                    });\r\n                    return group.length > 0 ? group : null\r\n                },\r\n                refresh: function(updateNewLookupsOnly) {\r\n                    var deferreds = [];\r\n                    (0, _iterator.each)(this._columns, function() {\r\n                        var lookup = this.lookup;\r\n                        if (lookup && !this.calculateDisplayValue) {\r\n                            if (updateNewLookupsOnly && lookup.valueMap) {\r\n                                return\r\n                            }\r\n                            if (lookup.update) {\r\n                                deferreds.push(lookup.update())\r\n                            }\r\n                        }\r\n                    });\r\n                    return _deferred.when.apply(_renderer.default, deferreds).done(resetColumnsCache.bind(null, this))\r\n                },\r\n                _updateColumnOptions: function(column, columnIndex) {\r\n                    column.selector = column.selector || function(data) {\r\n                        return column.calculateCellValue(data)\r\n                    };\r\n                    (0, _iterator.each)([\"calculateSortValue\", \"calculateGroupValue\", \"calculateDisplayValue\"], function(_, calculateCallbackName) {\r\n                        var calculateCallback = column[calculateCallbackName];\r\n                        if ((0, _type.isFunction)(calculateCallback) && !calculateCallback.originalCallback) {\r\n                            column[calculateCallbackName] = function(data) {\r\n                                return calculateCallback.call(column, data)\r\n                            };\r\n                            column[calculateCallbackName].originalCallback = calculateCallback;\r\n                            column[calculateCallbackName].columnIndex = columnIndex\r\n                        }\r\n                    });\r\n                    if ((0, _type.isString)(column.calculateDisplayValue)) {\r\n                        column.displayField = column.calculateDisplayValue;\r\n                        column.calculateDisplayValue = (0, _data.compileGetter)(column.displayField)\r\n                    }\r\n                    if (column.calculateDisplayValue) {\r\n                        column.displayValueMap = column.displayValueMap || {}\r\n                    }\r\n                    updateSerializers(column, column.dataType);\r\n                    var lookup = column.lookup;\r\n                    if (lookup) {\r\n                        updateSerializers(lookup, lookup.dataType)\r\n                    }\r\n                    var dataType = lookup ? lookup.dataType : column.dataType;\r\n                    if (dataType) {\r\n                        column.alignment = column.alignment || getAlignmentByDataType(dataType, this.option(\"rtlEnabled\"));\r\n                        column.format = column.format || _uiGrid_core2.default.getFormatByDataType(dataType);\r\n                        column.customizeText = column.customizeText || getCustomizeTextByDataType(dataType);\r\n                        column.defaultFilterOperations = column.defaultFilterOperations || !lookup && DATATYPE_OPERATIONS[dataType] || [];\r\n                        if (!(0, _type.isDefined)(column.filterOperations)) {\r\n                            setFilterOperationsAsDefaultValues(column)\r\n                        }\r\n                        column.defaultFilterOperation = column.filterOperations && column.filterOperations[0] || \"=\";\r\n                        column.showEditorAlways = (0, _type.isDefined)(column.showEditorAlways) ? column.showEditorAlways : \"boolean\" === dataType && !column.cellTemplate\r\n                    }\r\n                },\r\n                updateColumnDataTypes: function(dataSource) {\r\n                    var that = this;\r\n                    var dateSerializationFormat = that.option(\"dateSerializationFormat\");\r\n                    var firstItems = that._getFirstItems(dataSource);\r\n                    var isColumnDataTypesUpdated = false;\r\n                    (0, _iterator.each)(that._columns, function(index, column) {\r\n                        var i;\r\n                        var value;\r\n                        var dataType;\r\n                        var lookupDataType;\r\n                        var valueDataType;\r\n                        var lookup = column.lookup;\r\n                        if (_uiGrid_core2.default.isDateType(column.dataType) && void 0 === column.serializationFormat) {\r\n                            column.serializationFormat = dateSerializationFormat\r\n                        }\r\n                        if (lookup && _uiGrid_core2.default.isDateType(lookup.dataType) && void 0 === column.serializationFormat) {\r\n                            lookup.serializationFormat = dateSerializationFormat\r\n                        }\r\n                        if (column.calculateCellValue && firstItems.length) {\r\n                            if (!column.dataType || lookup && !lookup.dataType) {\r\n                                for (i = 0; i < firstItems.length; i++) {\r\n                                    value = column.calculateCellValue(firstItems[i]);\r\n                                    if (!column.dataType) {\r\n                                        valueDataType = getValueDataType(value);\r\n                                        dataType = dataType || valueDataType;\r\n                                        if (dataType && valueDataType && dataType !== valueDataType) {\r\n                                            dataType = \"string\"\r\n                                        }\r\n                                    }\r\n                                    if (lookup && !lookup.dataType) {\r\n                                        valueDataType = getValueDataType(_uiGrid_core2.default.getDisplayValue(column, value, firstItems[i]));\r\n                                        lookupDataType = lookupDataType || valueDataType;\r\n                                        if (lookupDataType && valueDataType && lookupDataType !== valueDataType) {\r\n                                            lookupDataType = \"string\"\r\n                                        }\r\n                                    }\r\n                                }\r\n                                if (dataType || lookupDataType) {\r\n                                    if (dataType) {\r\n                                        column.dataType = dataType\r\n                                    }\r\n                                    if (lookup && lookupDataType) {\r\n                                        lookup.dataType = lookupDataType\r\n                                    }\r\n                                    isColumnDataTypesUpdated = true\r\n                                }\r\n                            }\r\n                            if (void 0 === column.serializationFormat || lookup && void 0 === lookup.serializationFormat) {\r\n                                for (i = 0; i < firstItems.length; i++) {\r\n                                    value = column.calculateCellValue(firstItems[i], true);\r\n                                    if (void 0 === column.serializationFormat) {\r\n                                        column.serializationFormat = getSerializationFormat(column.dataType, value)\r\n                                    }\r\n                                    if (lookup && void 0 === lookup.serializationFormat) {\r\n                                        lookup.serializationFormat = getSerializationFormat(lookup.dataType, lookup.calculateCellValue(value, true))\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        that._updateColumnOptions(column, index)\r\n                    });\r\n                    return isColumnDataTypesUpdated\r\n                },\r\n                _customizeColumns: function(columns) {\r\n                    var that = this;\r\n                    var customizeColumns = that.option(\"customizeColumns\");\r\n                    if (customizeColumns) {\r\n                        var hasOwnerBand = columns.some(function(column) {\r\n                            return (0, _type.isObject)(column.ownerBand)\r\n                        });\r\n                        if (hasOwnerBand) {\r\n                            updateIndexes(that)\r\n                        }\r\n                        customizeColumns(columns);\r\n                        assignColumns(that, createColumnsFromOptions(that, columns))\r\n                    }\r\n                },\r\n                updateColumns: function(dataSource, forceApplying) {\r\n                    var _this = this;\r\n                    if (!forceApplying) {\r\n                        this.updateSortingGrouping(dataSource)\r\n                    }\r\n                    if (!dataSource || dataSource.isLoaded()) {\r\n                        var sortParameters = dataSource ? dataSource.sort() || [] : this.getSortDataSourceParameters();\r\n                        var groupParameters = dataSource ? dataSource.group() || [] : this.getGroupDataSourceParameters();\r\n                        var filterParameters = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().filter;\r\n                        this._customizeColumns(this._columns);\r\n                        updateIndexes(this);\r\n                        var columns = this._columns;\r\n                        return (0, _deferred.when)(this.refresh(true)).always(function() {\r\n                            if (_this._columns !== columns) {\r\n                                return\r\n                            }\r\n                            _this._updateChanges(dataSource, {\r\n                                sorting: sortParameters,\r\n                                grouping: groupParameters,\r\n                                filtering: filterParameters\r\n                            });\r\n                            fireColumnsChanged(_this)\r\n                        })\r\n                    }\r\n                },\r\n                _updateChanges: function(dataSource, parameters) {\r\n                    if (dataSource) {\r\n                        this.updateColumnDataTypes(dataSource);\r\n                        this._dataSourceApplied = true\r\n                    }\r\n                    if (!_uiGrid_core2.default.equalSortParameters(parameters.sorting, this.getSortDataSourceParameters())) {\r\n                        updateColumnChanges(this, \"sorting\")\r\n                    }\r\n                    if (!_uiGrid_core2.default.equalSortParameters(parameters.grouping, this.getGroupDataSourceParameters())) {\r\n                        updateColumnChanges(this, \"grouping\")\r\n                    }\r\n                    var dataController = this.getController(\"data\");\r\n                    if (dataController && !_uiGrid_core2.default.equalFilterParameters(parameters.filtering, dataController.getCombinedFilter())) {\r\n                        updateColumnChanges(this, \"filtering\")\r\n                    }\r\n                    updateColumnChanges(this, \"columns\")\r\n                },\r\n                updateSortingGrouping: function(dataSource, fromDataSource) {\r\n                    var that = this;\r\n                    var sortParameters;\r\n                    var isColumnsChanged;\r\n                    var updateSortGroupParameterIndexes = function(columns, sortParameters, indexParameterName) {\r\n                        (0, _iterator.each)(columns, function(index, column) {\r\n                            delete column[indexParameterName];\r\n                            if (sortParameters) {\r\n                                for (var i = 0; i < sortParameters.length; i++) {\r\n                                    var selector = sortParameters[i].selector;\r\n                                    var isExpanded = sortParameters[i].isExpanded;\r\n                                    if (selector === column.dataField || selector === column.name || selector === column.selector || selector === column.calculateCellValue || selector === column.calculateGroupValue || selector === column.calculateDisplayValue) {\r\n                                        column.sortOrder = column.sortOrder || (sortParameters[i].desc ? \"desc\" : \"asc\");\r\n                                        if (void 0 !== isExpanded) {\r\n                                            column.autoExpandGroup = isExpanded\r\n                                        }\r\n                                        column[indexParameterName] = i;\r\n                                        break\r\n                                    }\r\n                                }\r\n                            }\r\n                        })\r\n                    };\r\n                    if (dataSource) {\r\n                        sortParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.sort());\r\n                        var groupParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group());\r\n                        var columnsGroupParameters = that.getGroupDataSourceParameters();\r\n                        var columnsSortParameters = that.getSortDataSourceParameters();\r\n                        if (!that._columns.length) {\r\n                            (0, _iterator.each)(groupParameters, function(index, group) {\r\n                                that._columns.push(group.selector)\r\n                            });\r\n                            (0, _iterator.each)(sortParameters, function(index, sort) {\r\n                                that._columns.push(sort.selector)\r\n                            });\r\n                            assignColumns(that, createColumnsFromOptions(that, that._columns))\r\n                        }\r\n                        if ((fromDataSource || !columnsGroupParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(groupParameters, columnsGroupParameters)) {\r\n                            updateSortGroupParameterIndexes(that._columns, groupParameters, \"groupIndex\");\r\n                            if (fromDataSource) {\r\n                                updateColumnChanges(that, \"grouping\");\r\n                                isColumnsChanged = true\r\n                            }\r\n                        }\r\n                        if ((fromDataSource || !columnsSortParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(sortParameters, columnsSortParameters)) {\r\n                            updateSortGroupParameterIndexes(that._columns, sortParameters, \"sortIndex\");\r\n                            if (fromDataSource) {\r\n                                updateColumnChanges(that, \"sorting\");\r\n                                isColumnsChanged = true\r\n                            }\r\n                        }\r\n                        if (isColumnsChanged) {\r\n                            fireColumnsChanged(that)\r\n                        }\r\n                    }\r\n                },\r\n                updateFilter: function(filter, remoteFiltering, columnIndex, filterValue) {\r\n                    var that = this;\r\n                    if (!Array.isArray(filter)) {\r\n                        return filter\r\n                    }\r\n                    filter = (0, _extend.extend)([], filter);\r\n                    columnIndex = void 0 !== filter.columnIndex ? filter.columnIndex : columnIndex;\r\n                    filterValue = void 0 !== filter.filterValue ? filter.filterValue : filterValue;\r\n                    if ((0, _type.isString)(filter[0]) && \"!\" !== filter[0]) {\r\n                        var column = that.columnOption(filter[0]);\r\n                        if (remoteFiltering) {\r\n                            if ((0, _config.default)().forceIsoDateParsing && column && column.serializeValue && filter.length > 1) {\r\n                                filter[filter.length - 1] = column.serializeValue(filter[filter.length - 1], \"filter\")\r\n                            }\r\n                        } else {\r\n                            if (column && column.selector) {\r\n                                filter[0] = column.selector;\r\n                                filter[0].columnIndex = column.index\r\n                            }\r\n                        }\r\n                    } else {\r\n                        if ((0, _type.isFunction)(filter[0])) {\r\n                            filter[0].columnIndex = columnIndex;\r\n                            filter[0].filterValue = filterValue\r\n                        }\r\n                    }\r\n                    for (var i = 0; i < filter.length; i++) {\r\n                        filter[i] = that.updateFilter(filter[i], remoteFiltering, columnIndex, filterValue)\r\n                    }\r\n                    return filter\r\n                },\r\n                columnCount: function() {\r\n                    return this._columns ? this._columns.length : 0\r\n                },\r\n                columnOption: function(identifier, option, value, notFireEvent) {\r\n                    var that = this;\r\n                    var columns = that._columns.concat(that._commandColumns);\r\n                    var column = findColumn(columns, identifier);\r\n                    if (column) {\r\n                        if (1 === arguments.length) {\r\n                            return (0, _extend.extend)({}, column)\r\n                        }\r\n                        if ((0, _type.isString)(option)) {\r\n                            if (2 === arguments.length) {\r\n                                return columnOptionCore(that, column, option)\r\n                            } else {\r\n                                columnOptionCore(that, column, option, value, notFireEvent)\r\n                            }\r\n                        } else {\r\n                            if ((0, _type.isObject)(option)) {\r\n                                (0, _iterator.each)(option, function(optionName, value) {\r\n                                    columnOptionCore(that, column, optionName, value, notFireEvent)\r\n                                })\r\n                            }\r\n                        }\r\n                        fireColumnsChanged(that)\r\n                    }\r\n                },\r\n                clearSorting: function() {\r\n                    var that = this;\r\n                    var columnCount = this.columnCount();\r\n                    that.beginUpdate();\r\n                    for (var i = 0; i < columnCount; i++) {\r\n                        that.columnOption(i, \"sortOrder\", void 0)\r\n                    }\r\n                    that.endUpdate()\r\n                },\r\n                clearGrouping: function() {\r\n                    var that = this;\r\n                    var columnCount = this.columnCount();\r\n                    that.beginUpdate();\r\n                    for (var i = 0; i < columnCount; i++) {\r\n                        that.columnOption(i, \"groupIndex\", void 0)\r\n                    }\r\n                    that.endUpdate()\r\n                },\r\n                getVisibleIndex: function(index, rowIndex) {\r\n                    var columns = this.getVisibleColumns(rowIndex);\r\n                    for (var i = columns.length - 1; i >= 0; i--) {\r\n                        if (columns[i].index === index) {\r\n                            return i\r\n                        }\r\n                    }\r\n                    return -1\r\n                },\r\n                getVisibleColumnIndex: function(id, rowIndex) {\r\n                    var index = this.columnOption(id, \"index\");\r\n                    return this.getVisibleIndex(index, rowIndex)\r\n                },\r\n                addColumn: function(options) {\r\n                    var that = this;\r\n                    var column = createColumn(that, options);\r\n                    var index = that._columns.length;\r\n                    that._columns.push(column);\r\n                    if (column.isBand) {\r\n                        that._columns = createColumnsFromOptions(that, that._columns);\r\n                        column = that._columns[index]\r\n                    }\r\n                    column.added = options;\r\n                    updateIndexes(that, column);\r\n                    that.updateColumns(that._dataSource);\r\n                    that._checkColumns()\r\n                },\r\n                deleteColumn: function(id) {\r\n                    var that = this;\r\n                    var column = that.columnOption(id);\r\n                    if (column && column.index >= 0) {\r\n                        convertOwnerBandToColumnReference(that._columns);\r\n                        that._columns.splice(column.index, 1);\r\n                        if (column.isBand) {\r\n                            var childIndexes = that.getChildrenByBandColumn(column.index).map(function(column) {\r\n                                return column.index\r\n                            });\r\n                            that._columns = that._columns.filter(function(column) {\r\n                                return childIndexes.indexOf(column.index) < 0\r\n                            })\r\n                        }\r\n                        updateIndexes(that);\r\n                        that.updateColumns(that._dataSource)\r\n                    }\r\n                },\r\n                addCommandColumn: function(options) {\r\n                    var commandColumn = this._commandColumns.filter(function(column) {\r\n                        return column.command === options.command\r\n                    })[0];\r\n                    if (!commandColumn) {\r\n                        commandColumn = options;\r\n                        this._commandColumns.push(commandColumn)\r\n                    }\r\n                },\r\n                getUserState: function() {\r\n                    var columns = this._columns;\r\n                    var result = [];\r\n                    var i;\r\n\r\n                    function handleStateField(index, value) {\r\n                        if (void 0 !== columns[i][value]) {\r\n                            result[i][value] = columns[i][value]\r\n                        }\r\n                    }\r\n                    for (i = 0; i < columns.length; i++) {\r\n                        result[i] = {};\r\n                        (0, _iterator.each)(USER_STATE_FIELD_NAMES, handleStateField)\r\n                    }\r\n                    return result\r\n                },\r\n                setName: function(column) {\r\n                    var dataField = column.dataField;\r\n                    if (!(0, _type.isDefined)(column.name) && (0, _type.isDefined)(dataField)) {\r\n                        column.name = dataField\r\n                    }\r\n                },\r\n                setUserState: function(state) {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var ignoreColumnOptionNames = that.option(\"stateStoring.ignoreColumnOptionNames\");\r\n                    null === state || void 0 === state ? void 0 : state.forEach(this.setName);\r\n                    if (!ignoreColumnOptionNames) {\r\n                        ignoreColumnOptionNames = [];\r\n                        var commonColumnSettings = that.getCommonSettings();\r\n                        if (!that.option(\"columnChooser.enabled\")) {\r\n                            ignoreColumnOptionNames.push(\"visible\")\r\n                        }\r\n                        if (\"none\" === that.option(\"sorting.mode\")) {\r\n                            ignoreColumnOptionNames.push(\"sortIndex\", \"sortOrder\")\r\n                        }\r\n                        if (!commonColumnSettings.allowGrouping) {\r\n                            ignoreColumnOptionNames.push(\"groupIndex\")\r\n                        }\r\n                        if (!commonColumnSettings.allowFixing) {\r\n                            ignoreColumnOptionNames.push(\"fixed\", \"fixedPosition\")\r\n                        }\r\n                        if (!commonColumnSettings.allowResizing) {\r\n                            ignoreColumnOptionNames.push(\"width\", \"visibleWidth\")\r\n                        }\r\n                        var isFilterPanelHidden = !that.option(\"filterPanel.visible\");\r\n                        if (!that.option(\"filterRow.visible\") && isFilterPanelHidden) {\r\n                            ignoreColumnOptionNames.push(\"filterValue\", \"selectedFilterOperation\")\r\n                        }\r\n                        if (!that.option(\"headerFilter.visible\") && isFilterPanelHidden) {\r\n                            ignoreColumnOptionNames.push(\"filterValues\", \"filterType\")\r\n                        }\r\n                    }\r\n                    that._columnsUserState = state;\r\n                    that._ignoreColumnOptionNames = ignoreColumnOptionNames;\r\n                    that._hasUserState = !!state;\r\n                    updateColumnChanges(that, \"filtering\");\r\n                    that.init();\r\n                    if (dataSource) {\r\n                        dataSource.sort(that.getSortDataSourceParameters());\r\n                        dataSource.group(that.getGroupDataSourceParameters())\r\n                    }\r\n                },\r\n                _checkColumns: function() {\r\n                    var usedNames = {};\r\n                    var hasEditableColumnWithoutName = false;\r\n                    var duplicatedNames = [];\r\n                    this._columns.forEach(function(column) {\r\n                        var _column$columns;\r\n                        var name = column.name;\r\n                        var isBand = null === (_column$columns = column.columns) || void 0 === _column$columns ? void 0 : _column$columns.length;\r\n                        var isEditable = column.allowEditing && (column.dataField || column.setCellValue) && !isBand;\r\n                        if (name) {\r\n                            if (usedNames[name]) {\r\n                                duplicatedNames.push('\"'.concat(name, '\"'))\r\n                            }\r\n                            usedNames[name] = true\r\n                        } else {\r\n                            if (isEditable) {\r\n                                hasEditableColumnWithoutName = true\r\n                            }\r\n                        }\r\n                    });\r\n                    if (duplicatedNames.length) {\r\n                        _ui.default.log(\"E1059\", duplicatedNames.join(\", \"))\r\n                    }\r\n                    if (hasEditableColumnWithoutName) {\r\n                        _ui.default.log(\"E1060\")\r\n                    }\r\n                },\r\n                _createCalculatedColumnOptions: function(columnOptions, bandColumn) {\r\n                    var calculatedColumnOptions = {};\r\n                    var dataField = columnOptions.dataField;\r\n                    if (Array.isArray(columnOptions.columns) && columnOptions.columns.length || columnOptions.isBand) {\r\n                        calculatedColumnOptions.isBand = true;\r\n                        dataField = null\r\n                    }\r\n                    if (dataField) {\r\n                        if ((0, _type.isString)(dataField)) {\r\n                            var getter = (0, _data.compileGetter)(dataField);\r\n                            calculatedColumnOptions = {\r\n                                caption: (0, _inflector.captionize)(dataField),\r\n                                calculateCellValue: function(data, skipDeserialization) {\r\n                                    var value = getter(data);\r\n                                    return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n                                },\r\n                                setCellValue: defaultSetCellValue,\r\n                                parseValue: function(text) {\r\n                                    var column = this;\r\n                                    var result;\r\n                                    var parsedValue;\r\n                                    if (\"number\" === column.dataType) {\r\n                                        if ((0, _type.isString)(text) && column.format) {\r\n                                            parsedValue = _number.default.parse(text);\r\n                                            if ((0, _type.isNumeric)(parsedValue)) {\r\n                                                result = parsedValue\r\n                                            }\r\n                                        } else {\r\n                                            if ((0, _type.isDefined)(text) && (0, _type.isNumeric)(text)) {\r\n                                                result = Number(text)\r\n                                            }\r\n                                        }\r\n                                    } else {\r\n                                        if (\"boolean\" === column.dataType) {\r\n                                            if (text === column.trueText) {\r\n                                                result = true\r\n                                            } else {\r\n                                                if (text === column.falseText) {\r\n                                                    result = false\r\n                                                }\r\n                                            }\r\n                                        } else {\r\n                                            if (_uiGrid_core2.default.isDateType(column.dataType)) {\r\n                                                parsedValue = _date.default.parse(text, column.format);\r\n                                                if (parsedValue) {\r\n                                                    result = parsedValue\r\n                                                }\r\n                                            } else {\r\n                                                result = text\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                    return result\r\n                                }\r\n                            }\r\n                        }\r\n                        calculatedColumnOptions.allowFiltering = true\r\n                    } else {\r\n                        calculatedColumnOptions.allowFiltering = !!columnOptions.calculateFilterExpression\r\n                    }\r\n                    calculatedColumnOptions.calculateFilterExpression = function() {\r\n                        return _filtering.default.defaultCalculateFilterExpression.apply(this, arguments)\r\n                    };\r\n                    calculatedColumnOptions.createFilterExpression = function(filterValue) {\r\n                        var result;\r\n                        if (this.calculateFilterExpression) {\r\n                            result = this.calculateFilterExpression.apply(this, arguments)\r\n                        }\r\n                        if ((0, _type.isFunction)(result)) {\r\n                            result = [result, \"=\", true]\r\n                        }\r\n                        if (result) {\r\n                            result.columnIndex = this.index;\r\n                            result.filterValue = filterValue\r\n                        }\r\n                        return result\r\n                    };\r\n                    if (!dataField || !(0, _type.isString)(dataField)) {\r\n                        (0, _extend.extend)(true, calculatedColumnOptions, {\r\n                            allowSorting: false,\r\n                            allowGrouping: false,\r\n                            calculateCellValue: function() {\r\n                                return null\r\n                            }\r\n                        })\r\n                    }\r\n                    if (bandColumn) {\r\n                        calculatedColumnOptions.allowFixing = false\r\n                    }\r\n                    if (columnOptions.dataType) {\r\n                        calculatedColumnOptions.userDataType = columnOptions.dataType\r\n                    }\r\n                    if (columnOptions.selectedFilterOperation && !(\"defaultSelectedFilterOperation\" in calculatedColumnOptions)) {\r\n                        calculatedColumnOptions.defaultSelectedFilterOperation = columnOptions.selectedFilterOperation\r\n                    }\r\n                    if (columnOptions.lookup) {\r\n                        calculatedColumnOptions.lookup = {\r\n                            calculateCellValue: function(value, skipDeserialization) {\r\n                                if (this.valueExpr) {\r\n                                    value = this.valueMap && this.valueMap[value]\r\n                                }\r\n                                return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n                            },\r\n                            updateValueMap: function() {\r\n                                this.valueMap = {};\r\n                                if (this.items) {\r\n                                    var calculateValue = (0, _data.compileGetter)(this.valueExpr);\r\n                                    var calculateDisplayValue = (0, _data.compileGetter)(this.displayExpr);\r\n                                    for (var i = 0; i < this.items.length; i++) {\r\n                                        var item = this.items[i];\r\n                                        var displayValue = calculateDisplayValue(item);\r\n                                        this.valueMap[calculateValue(item)] = displayValue;\r\n                                        this.dataType = this.dataType || getValueDataType(displayValue)\r\n                                    }\r\n                                }\r\n                            },\r\n                            update: function() {\r\n                                var that = this;\r\n                                var dataSource = that.dataSource;\r\n                                if (dataSource) {\r\n                                    if ((0, _type.isFunction)(dataSource) && !_variable_wrapper.default.isWrapped(dataSource)) {\r\n                                        dataSource = dataSource({})\r\n                                    }\r\n                                    if ((0, _type.isPlainObject)(dataSource) || dataSource instanceof _abstract_store.default || Array.isArray(dataSource)) {\r\n                                        if (that.valueExpr) {\r\n                                            var dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSource);\r\n                                            dataSourceOptions.paginate = false;\r\n                                            dataSource = new _data_source.DataSource(dataSourceOptions);\r\n                                            return dataSource.load().done(function(data) {\r\n                                                that.items = data;\r\n                                                that.updateValueMap && that.updateValueMap()\r\n                                            })\r\n                                        }\r\n                                    } else {\r\n                                        _ui.default.log(\"E1016\")\r\n                                    }\r\n                                } else {\r\n                                    that.updateValueMap && that.updateValueMap()\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    calculatedColumnOptions.resizedCallbacks = (0, _callbacks.default)();\r\n                    if (columnOptions.resized) {\r\n                        calculatedColumnOptions.resizedCallbacks.add(columnOptions.resized.bind(columnOptions))\r\n                    }(0, _iterator.each)(calculatedColumnOptions, function(optionName) {\r\n                        if ((0, _type.isFunction)(calculatedColumnOptions[optionName]) && 0 !== optionName.indexOf(\"default\")) {\r\n                            var defaultOptionName = \"default\" + optionName.charAt(0).toUpperCase() + optionName.substr(1);\r\n                            calculatedColumnOptions[defaultOptionName] = calculatedColumnOptions[optionName]\r\n                        }\r\n                    });\r\n                    return calculatedColumnOptions\r\n                },\r\n                getRowCount: function() {\r\n                    this._rowCount = this._rowCount || _getRowCount(this);\r\n                    return this._rowCount\r\n                },\r\n                getRowIndex: function(columnIndex, alwaysGetRowIndex) {\r\n                    var column = this._columns[columnIndex];\r\n                    var bandColumnsCache = this.getBandColumnsCache();\r\n                    return column && (alwaysGetRowIndex || column.visible && !(column.command || (0, _type.isDefined)(column.groupIndex))) ? getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex).length : 0\r\n                },\r\n                getChildrenByBandColumn: function(bandColumnIndex, onlyVisibleDirectChildren) {\r\n                    var that = this;\r\n                    var bandColumnsCache = that.getBandColumnsCache();\r\n                    var result = _getChildrenByBandColumn(bandColumnIndex, bandColumnsCache.columnChildrenByIndex, !onlyVisibleDirectChildren);\r\n                    if (onlyVisibleDirectChildren) {\r\n                        return result.filter(function(column) {\r\n                            return column.visible && !column.command\r\n                        }).sort(function(column1, column2) {\r\n                            return column1.visibleIndex - column2.visibleIndex\r\n                        })\r\n                    }\r\n                    return result\r\n                },\r\n                isParentBandColumn: function(columnIndex, bandColumnIndex) {\r\n                    var result = false;\r\n                    var column = this._columns[columnIndex];\r\n                    var bandColumnsCache = this.getBandColumnsCache();\r\n                    var parentBandColumns = column && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n                    if (parentBandColumns) {\r\n                        (0, _iterator.each)(parentBandColumns, function(_, bandColumn) {\r\n                            if (bandColumn.index === bandColumnIndex) {\r\n                                result = true;\r\n                                return false\r\n                            }\r\n                        })\r\n                    }\r\n                    return result\r\n                },\r\n                isParentColumnVisible: function(columnIndex) {\r\n                    var result = true;\r\n                    var bandColumnsCache = this.getBandColumnsCache();\r\n                    var bandColumns = columnIndex >= 0 && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n                    bandColumns && (0, _iterator.each)(bandColumns, function(_, bandColumn) {\r\n                        result = result && bandColumn.visible;\r\n                        return result\r\n                    });\r\n                    return result\r\n                },\r\n                getColumnId: function(column) {\r\n                    if (column.command && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n                        if (isCustomCommandColumn(this, column)) {\r\n                            return \"type:\" + column.type\r\n                        }\r\n                        return \"command:\" + column.command\r\n                    }\r\n                    return column.index\r\n                },\r\n                getCustomizeTextByDataType: getCustomizeTextByDataType,\r\n                getHeaderContentAlignment: function(columnAlignment) {\r\n                    var rtlEnabled = this.option(\"rtlEnabled\");\r\n                    if (rtlEnabled) {\r\n                        return \"left\" === columnAlignment ? \"right\" : \"left\"\r\n                    }\r\n                    return columnAlignment\r\n                }\r\n            }\r\n        }())\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/cell.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.CellBase = CellBase;\r\nexports.CellBaseProps = exports.viewFunction = void 0;\r\nvar _utils = require(\"../utils\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    var ContentTemplate = viewModel.props.contentTemplate;\r\n    return Preact.h(\"td\", _extends({}, viewModel.restAttributes, {\r\n        className: viewModel.classes\r\n    }), !viewModel.props.contentTemplate && viewModel.props.children, viewModel.props.contentTemplate && ContentTemplate(_objectSpread({}, viewModel.props.contentTemplateProps)))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar CellBaseProps = {\r\n    className: \"\",\r\n    isFirstGroupCell: false,\r\n    isLastGroupCell: false,\r\n    startDate: new Date,\r\n    endDate: new Date,\r\n    allDay: false,\r\n    text: \"\",\r\n    index: 0\r\n};\r\nexports.CellBaseProps = CellBaseProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction CellBase(props) {\r\n    var __classes = (0, _hooks.useCallback)(function() {\r\n        var className = props.className,\r\n            isFirstGroupCell = props.isFirstGroupCell,\r\n            isLastGroupCell = props.isLastGroupCell;\r\n        return (0, _utils.getGroupCellClasses)(isFirstGroupCell, isLastGroupCell, className)\r\n    }, [props.className, props.isFirstGroupCell, props.isLastGroupCell]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.allDay, props.children, props.className, props.contentTemplate, props.contentTemplateProps, props.endDate, props.groupIndex, props.groups, props.index, props.isFirstGroupCell, props.isLastGroupCell, props.startDate, props.text, _objectWithoutProperties(props, [\"allDay\", \"children\", \"className\", \"contentTemplate\", \"contentTemplateProps\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            contentTemplate: getTemplate(props.contentTemplate)\r\n        }),\r\n        classes: __classes(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nCellBase.defaultProps = _objectSpread({}, CellBaseProps);\r\n","/**\r\n * DevExtreme (localization/cldr-data/accounting_formats.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = {\r\n    af: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"af-NA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    agq: \"#,##0.00\\xa4\",\r\n    ak: \"\\xa4#,##0.00\",\r\n    am: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    ar: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-AE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-BH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-DJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-DZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-EG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-EH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-ER\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-IL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-IQ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-JO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-KM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-KW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-LB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-LY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-MA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-MR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-OM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-PS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-QA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-SA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-SD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-SO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-SS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-SY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-TD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-TN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ar-YE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    as: \"\\xa4\\xa0#,##,##0.00\",\r\n    asa: \"#,##0.00\\xa0\\xa4\",\r\n    ast: \"#,##0.00\\xa0\\xa4\",\r\n    az: \"#,##0.00\\xa0\\xa4\",\r\n    \"az-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n    \"az-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n    bas: \"#,##0.00\\xa0\\xa4\",\r\n    be: \"#,##0.00\\xa0\\xa4\",\r\n    bem: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    bez: \"#,##0.00\\xa4\",\r\n    bg: \"0.00\\xa0\\xa4;(0.00\\xa0\\xa4)\",\r\n    bm: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    bn: \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n    \"bn-IN\": \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n    bo: \"\\xa4\\xa0#,##0.00\",\r\n    \"bo-IN\": \"\\xa4\\xa0#,##0.00\",\r\n    br: \"#,##0.00\\xa0\\xa4\",\r\n    brx: \"\\xa4\\xa0#,##,##0.00\",\r\n    bs: \"#,##0.00\\xa0\\xa4\",\r\n    \"bs-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n    \"bs-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n    ca: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"ca-AD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"ca-ES-VALENCIA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"ca-FR\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"ca-IT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    ccp: \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n    \"ccp-IN\": \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n    ce: \"#,##0.00\\xa0\\xa4\",\r\n    ceb: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    cgg: \"\\xa4#,##0.00\",\r\n    chr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    ckb: \"\\xa4\\xa0#,##0.00\",\r\n    \"ckb-IR\": \"\\xa4\\xa0#,##0.00\",\r\n    cs: \"#,##0.00\\xa0\\xa4\",\r\n    cu: \"\\xa4\\xa0#,##0.00\",\r\n    cy: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    da: \"#,##0.00\\xa0\\xa4\",\r\n    \"da-GL\": \"#,##0.00\\xa0\\xa4\",\r\n    dav: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    de: \"#,##0.00\\xa0\\xa4\",\r\n    \"de-AT\": \"#,##0.00\\xa0\\xa4\",\r\n    \"de-BE\": \"#,##0.00\\xa0\\xa4\",\r\n    \"de-CH\": \"#,##0.00\\xa0\\xa4\",\r\n    \"de-IT\": \"#,##0.00\\xa0\\xa4\",\r\n    \"de-LI\": \"#,##0.00\\xa0\\xa4\",\r\n    \"de-LU\": \"#,##0.00\\xa0\\xa4\",\r\n    dje: \"#,##0.00\\xa4\",\r\n    dsb: \"#,##0.00\\xa0\\xa4\",\r\n    dua: \"#,##0.00\\xa0\\xa4\",\r\n    dyo: \"#,##0.00\\xa0\\xa4\",\r\n    dz: \"\\xa4#,##,##0.00\",\r\n    ebu: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    ee: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ee-TG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    el: \"#,##0.00\\xa0\\xa4\",\r\n    \"el-CY\": \"#,##0.00\\xa0\\xa4\",\r\n    en: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-001\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-150\": \"#,##0.00\\xa0\\xa4\",\r\n    \"en-AE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-AG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-AI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-AS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-AT\": \"\\xa4\\xa0#,##0.00\",\r\n    \"en-AU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-BB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-BE\": \"#,##0.00\\xa0\\xa4\",\r\n    \"en-BI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-BM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-BS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-BW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-BZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-CA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-CC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-CH\": \"\\xa4\\xa0#,##0.00;\\xa4-#,##0.00\",\r\n    \"en-CK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-CM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-CX\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-CY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-DE\": \"#,##0.00\\xa0\\xa4\",\r\n    \"en-DG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-DK\": \"#,##0.00\\xa0\\xa4\",\r\n    \"en-DM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-ER\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-FI\": \"#,##0.00\\xa0\\xa4\",\r\n    \"en-FJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-FK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-FM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-GB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-GD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-GG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-GH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-GI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-GM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-GU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-GY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-IE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-IL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-IM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-IN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-IO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-JE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-JM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-KI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-KN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-KY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-LC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-LR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-LS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MP\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MT\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-MY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-NA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-NF\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-NG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-NL\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"en-NR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-NU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-NZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-PG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-PH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-PK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-PN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-PR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-PW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-RW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SE\": \"#,##0.00\\xa0\\xa4\",\r\n    \"en-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"en-SL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SX\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-SZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-TC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-TK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-TO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-TT\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-TV\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-TZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-UG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-UM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-US-POSIX\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-VC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-VG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-VI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-VU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-WS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-ZA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-ZM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"en-ZW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    eo: \"\\xa4\\xa0#,##0.00\",\r\n    es: \"#,##0.00\\xa0\\xa4\",\r\n    \"es-419\": \"\\xa4#,##0.00\",\r\n    \"es-AR\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"es-BO\": \"\\xa4#,##0.00\",\r\n    \"es-BR\": \"\\xa4#,##0.00\",\r\n    \"es-BZ\": \"\\xa4#,##0.00\",\r\n    \"es-CL\": \"\\xa4#,##0.00\",\r\n    \"es-CO\": \"\\xa4#,##0.00\",\r\n    \"es-CR\": \"\\xa4#,##0.00\",\r\n    \"es-CU\": \"\\xa4#,##0.00\",\r\n    \"es-DO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"es-EA\": \"#,##0.00\\xa0\\xa4\",\r\n    \"es-EC\": \"\\xa4#,##0.00\",\r\n    \"es-GQ\": \"#,##0.00\\xa0\\xa4\",\r\n    \"es-GT\": \"\\xa4#,##0.00\",\r\n    \"es-HN\": \"\\xa4#,##0.00\",\r\n    \"es-IC\": \"#,##0.00\\xa0\\xa4\",\r\n    \"es-MX\": \"\\xa4#,##0.00\",\r\n    \"es-NI\": \"\\xa4#,##0.00\",\r\n    \"es-PA\": \"\\xa4#,##0.00\",\r\n    \"es-PE\": \"\\xa4#,##0.00\",\r\n    \"es-PH\": \"#,##0.00\\xa0\\xa4\",\r\n    \"es-PR\": \"\\xa4#,##0.00\",\r\n    \"es-PY\": \"\\xa4#,##0.00\",\r\n    \"es-SV\": \"\\xa4#,##0.00\",\r\n    \"es-US\": \"\\xa4#,##0.00\",\r\n    \"es-UY\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"es-VE\": \"\\xa4#,##0.00\",\r\n    et: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    eu: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    ewo: \"#,##0.00\\xa0\\xa4\",\r\n    fa: \"\\u200e\\xa4\\xa0#,##0.00;\\u200e(\\xa4\\xa0#,##0.00)\",\r\n    \"fa-AF\": \"\\xa4\\xa0#,##0.00;\\u200e(\\xa4\\xa0#,##0.00)\",\r\n    ff: \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-BF\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-CM\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-GH\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-GM\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-GN\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-GW\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-LR\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-MR\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-NE\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-NG\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ff-Latn-SL\": \"#,##0.00\\xa0\\xa4\",\r\n    fi: \"#,##0.00\\xa0\\xa4\",\r\n    fil: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    fo: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fo-DK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    fr: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-BE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-BF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-BI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-BJ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-BL\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-CA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-CD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-CF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-CG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-CH\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-CI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-CM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-DJ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-DZ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-GA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-GF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-GN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-GP\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-GQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-HT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-KM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-LU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-MA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-MC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-MF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-MG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-ML\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-MQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-MR\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-MU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-NC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-NE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-PF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-PM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-RE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-RW\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-SC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-SN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-SY\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-TD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-TG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-TN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-VU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-WF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"fr-YT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    fur: \"\\xa4\\xa0#,##0.00\",\r\n    fy: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    ga: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ga-GB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    gd: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    gl: \"#,##0.00\\xa0\\xa4\",\r\n    gsw: \"#,##0.00\\xa0\\xa4\",\r\n    \"gsw-FR\": \"#,##0.00\\xa0\\xa4\",\r\n    \"gsw-LI\": \"#,##0.00\\xa0\\xa4\",\r\n    gu: \"\\xa4#,##,##0.00;(\\xa4#,##,##0.00)\",\r\n    guz: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    gv: \"\\xa4#,##0.00\",\r\n    ha: \"\\xa4\\xa0#,##0.00\",\r\n    \"ha-GH\": \"\\xa4\\xa0#,##0.00\",\r\n    \"ha-NE\": \"\\xa4\\xa0#,##0.00\",\r\n    haw: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    he: \"#,##0.00\\xa0\\xa4\",\r\n    hi: \"\\xa4#,##,##0.00\",\r\n    hr: \"#,##0.00\\xa0\\xa4\",\r\n    \"hr-BA\": \"#,##0.00\\xa0\\xa4\",\r\n    hsb: \"#,##0.00\\xa0\\xa4\",\r\n    hu: \"#,##0.00\\xa0\\xa4\",\r\n    hy: \"#,##0.00\\xa0\\xa4\",\r\n    ia: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    id: \"\\xa4#,##0.00\",\r\n    ig: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    ii: \"\\xa4\\xa0#,##0.00\",\r\n    is: \"#,##0.00\\xa0\\xa4\",\r\n    it: \"#,##0.00\\xa0\\xa4\",\r\n    \"it-CH\": \"#,##0.00\\xa0\\xa4\",\r\n    \"it-SM\": \"#,##0.00\\xa0\\xa4\",\r\n    \"it-VA\": \"#,##0.00\\xa0\\xa4\",\r\n    ja: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    jgo: \"\\xa4\\xa0#,##0.00\",\r\n    jmc: \"\\xa4#,##0.00\",\r\n    jv: \"\\xa4\\xa0#,##0.00\",\r\n    ka: \"#,##0.00\\xa0\\xa4\",\r\n    kab: \"#,##0.00\\xa4\",\r\n    kam: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    kde: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    kea: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    khq: \"#,##0.00\\xa4\",\r\n    ki: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    kk: \"#,##0.00\\xa0\\xa4\",\r\n    kkj: \"\\xa4\\xa0#,##0.00\",\r\n    kl: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n    kln: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    km: \"#,##0.00\\xa4;(#,##0.00\\xa4)\",\r\n    kn: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    ko: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ko-KP\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    kok: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    ks: \"\\xa4\\xa0#,##,##0.00\",\r\n    ksb: \"#,##0.00\\xa4\",\r\n    ksf: \"#,##0.00\\xa0\\xa4\",\r\n    ksh: \"#,##0.00\\xa0\\xa4\",\r\n    ku: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    kw: \"\\xa4#,##0.00\",\r\n    ky: \"#,##0.00\\xa0\\xa4\",\r\n    lag: \"\\xa4\\xa0#,##0.00\",\r\n    lb: \"#,##0.00\\xa0\\xa4\",\r\n    lg: \"#,##0.00\\xa4\",\r\n    lkt: \"\\xa4\\xa0#,##0.00\",\r\n    ln: \"#,##0.00\\xa0\\xa4\",\r\n    \"ln-AO\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ln-CF\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ln-CG\": \"#,##0.00\\xa0\\xa4\",\r\n    lo: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n    lrc: \"\\xa4\\xa0#,##0.00\",\r\n    \"lrc-IQ\": \"\\xa4\\xa0#,##0.00\",\r\n    lt: \"#,##0.00\\xa0\\xa4\",\r\n    lu: \"#,##0.00\\xa4\",\r\n    luo: \"#,##0.00\\xa4\",\r\n    luy: \"\\xa4#,##0.00;\\xa4-\\xa0#,##0.00\",\r\n    lv: \"#,##0.00\\xa0\\xa4\",\r\n    mas: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"mas-TZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    mer: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    mfe: \"\\xa4\\xa0#,##0.00\",\r\n    mg: \"\\xa4#,##0.00\",\r\n    mgh: \"\\xa4\\xa0#,##0.00\",\r\n    mgo: \"\\xa4\\xa0#,##0.00\",\r\n    mi: \"\\xa4\\xa0#,##0.00\",\r\n    mk: \"#,##0.00\\xa0\\xa4\",\r\n    ml: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    mn: \"\\xa4\\xa0#,##0.00\",\r\n    mr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    ms: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ms-BN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ms-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    mt: \"\\xa4#,##0.00\",\r\n    mua: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    my: \"\\xa4\\xa0#,##0.00\",\r\n    mzn: \"\\xa4\\xa0#,##0.00\",\r\n    naq: \"\\xa4#,##0.00\",\r\n    nb: \"\\xa4\\xa0#,##0.00\",\r\n    \"nb-SJ\": \"\\xa4\\xa0#,##0.00\",\r\n    nd: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    nds: \"\\xa4\\xa0#,##0.00\",\r\n    \"nds-NL\": \"\\xa4\\xa0#,##0.00\",\r\n    ne: \"\\xa4\\xa0#,##,##0.00\",\r\n    \"ne-IN\": \"\\xa4\\xa0#,##,##0.00\",\r\n    nl: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"nl-AW\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"nl-BE\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"nl-BQ\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"nl-CW\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"nl-SR\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    \"nl-SX\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n    nmg: \"#,##0.00\\xa0\\xa4\",\r\n    nn: \"#,##0.00\\xa0\\xa4\",\r\n    nnh: \"\\xa4\\xa0#,##0.00\",\r\n    nus: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    nyn: \"\\xa4#,##0.00\",\r\n    om: \"\\xa4#,##0.00\",\r\n    \"om-KE\": \"\\xa4#,##0.00\",\r\n    or: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    os: \"\\xa4\\xa0#,##0.00\",\r\n    \"os-RU\": \"\\xa4\\xa0#,##0.00\",\r\n    pa: \"\\xa4\\xa0#,##0.00\",\r\n    \"pa-Arab\": \"\\xa4\\xa0#,##0.00\",\r\n    \"pa-Guru\": \"\\xa4\\xa0#,##0.00\",\r\n    pl: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    prg: \"\\xa4\\xa0#,##0.00\",\r\n    ps: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ps-PK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    pt: \"\\xa4\\xa0#,##0.00\",\r\n    \"pt-AO\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-CH\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-CV\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-GQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-GW\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-LU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-MO\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-MZ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-PT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-ST\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"pt-TL\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    qu: \"\\xa4\\xa0#,##0.00\",\r\n    \"qu-BO\": \"\\xa4\\xa0#,##0.00\",\r\n    \"qu-EC\": \"\\xa4\\xa0#,##0.00\",\r\n    rm: \"#,##0.00\\xa0\\xa4\",\r\n    rn: \"#,##0.00\\xa4\",\r\n    ro: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"ro-MD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    rof: \"\\xa4#,##0.00\",\r\n    root: \"\\xa4\\xa0#,##0.00\",\r\n    ru: \"#,##0.00\\xa0\\xa4\",\r\n    \"ru-BY\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ru-KG\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ru-KZ\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ru-MD\": \"#,##0.00\\xa0\\xa4\",\r\n    \"ru-UA\": \"#,##0.00\\xa0\\xa4\",\r\n    rw: \"\\xa4\\xa0#,##0.00\",\r\n    rwk: \"#,##0.00\\xa4\",\r\n    sah: \"#,##0.00\\xa0\\xa4\",\r\n    saq: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    sbp: \"#,##0.00\\xa4\",\r\n    sd: \"\\xa4\\xa0#,##0.00\",\r\n    se: \"#,##0.00\\xa0\\xa4\",\r\n    \"se-FI\": \"#,##0.00\\xa0\\xa4\",\r\n    \"se-SE\": \"#,##0.00\\xa0\\xa4\",\r\n    seh: \"#,##0.00\\xa4\",\r\n    ses: \"#,##0.00\\xa4\",\r\n    sg: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n    shi: \"#,##0.00\\xa4\",\r\n    \"shi-Latn\": \"#,##0.00\\xa4\",\r\n    \"shi-Tfng\": \"#,##0.00\\xa4\",\r\n    si: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    sk: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    sl: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    smn: \"#,##0.00\\xa0\\xa4\",\r\n    sn: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    so: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"so-DJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"so-ET\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"so-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    sq: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sq-MK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sq-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    sr: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sr-Cyrl\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sr-Cyrl-BA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sr-Cyrl-ME\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sr-Cyrl-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sr-Latn\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sr-Latn-BA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sr-Latn-ME\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    \"sr-Latn-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    sv: \"#,##0.00\\xa0\\xa4\",\r\n    \"sv-AX\": \"#,##0.00\\xa0\\xa4\",\r\n    \"sv-FI\": \"#,##0.00\\xa0\\xa4\",\r\n    sw: \"\\xa4\\xa0#,##0.00\",\r\n    \"sw-CD\": \"\\xa4\\xa0#,##0.00\",\r\n    \"sw-KE\": \"\\xa4\\xa0#,##0.00\",\r\n    \"sw-UG\": \"\\xa4\\xa0#,##0.00\",\r\n    ta: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ta-LK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ta-MY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ta-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    te: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    teo: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"teo-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    tg: \"#,##0.00\\xa0\\xa4\",\r\n    th: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    ti: \"\\xa4#,##0.00\",\r\n    \"ti-ER\": \"\\xa4#,##0.00\",\r\n    tk: \"#,##0.00\\xa0\\xa4\",\r\n    to: \"\\xa4\\xa0#,##0.00\",\r\n    tr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"tr-CY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    tt: \"#,##0.00\\xa0\\xa4\",\r\n    twq: \"#,##0.00\\xa4\",\r\n    tzm: \"#,##0.00\\xa0\\xa4\",\r\n    ug: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    uk: \"#,##0.00\\xa0\\xa4\",\r\n    ur: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"ur-IN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    uz: \"#,##0.00\\xa0\\xa4\",\r\n    \"uz-Arab\": \"\\xa4\\xa0#,##0.00\",\r\n    \"uz-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n    \"uz-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n    vai: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"vai-Latn\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"vai-Vaii\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    vi: \"#,##0.00\\xa0\\xa4\",\r\n    vo: \"\\xa4\\xa0#,##0.00\",\r\n    vun: \"\\xa4#,##0.00\",\r\n    wae: \"\\xa4\\xa0#,##0.00\",\r\n    wo: \"\\xa4\\xa0#,##0.00\",\r\n    xh: \"\\xa4#,##0.00\",\r\n    xog: \"#,##0.00\\xa0\\xa4\",\r\n    yav: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n    yi: \"\\xa4\\xa0#,##0.00\",\r\n    yo: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"yo-BJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    yue: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"yue-Hans\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"yue-Hant\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    zgh: \"#,##0.00\\xa4\",\r\n    zh: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"zh-Hans\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"zh-Hans-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"zh-Hans-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"zh-Hans-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"zh-Hant\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"zh-Hant-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    \"zh-Hant-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n    zu: \"\\xa4#,##0.00;(\\xa4#,##0.00)\"\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_vertical.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _uiSchedulerWork_space = _interopRequireDefault(require(\"./ui.scheduler.work_space.indicator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar SchedulerWorkspaceVertical = function(_SchedulerWorkSpaceIn) {\r\n    _inherits(SchedulerWorkspaceVertical, _SchedulerWorkSpaceIn);\r\n    var _super = _createSuper(SchedulerWorkspaceVertical);\r\n\r\n    function SchedulerWorkspaceVertical() {\r\n        _classCallCheck(this, SchedulerWorkspaceVertical);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerWorkspaceVertical, [{\r\n        key: \"_getCellsBetween\",\r\n        value: function($first, $last) {\r\n            if (this._hasAllDayClass($last)) {\r\n                return _get(_getPrototypeOf(SchedulerWorkspaceVertical.prototype), \"_getCellsBetween\", this).call(this, $first, $last)\r\n            }\r\n            var $cells = this._getCells();\r\n            var firstColumn = $first.index();\r\n            var firstRow = $first.parent().index();\r\n            var lastColumn = $last.index();\r\n            var lastRow = $last.parent().index();\r\n            var groupCount = this._getGroupCount();\r\n            var cellCount = groupCount > 0 ? this._getTotalCellCount(groupCount) : this._getCellCount();\r\n            var rowCount = this._getTotalRowCount(groupCount);\r\n            var result = [];\r\n            for (var i = 0; i < cellCount; i++) {\r\n                for (var j = 0; j < rowCount; j++) {\r\n                    var cell = $cells.get(cellCount * j + i);\r\n                    result.push(cell)\r\n                }\r\n            }\r\n            var lastCellGroup = this.getCellData($last).groups;\r\n            var indexesDifference = this.option(\"showAllDayPanel\") && this._isVerticalGroupedWorkSpace() ? this._getGroupIndexByResourceId(lastCellGroup) + 1 : 0;\r\n            var newFirstIndex = rowCount * firstColumn + firstRow - indexesDifference;\r\n            var newLastIndex = rowCount * lastColumn + lastRow - indexesDifference;\r\n            if (newFirstIndex > newLastIndex) {\r\n                var buffer = newFirstIndex;\r\n                newFirstIndex = newLastIndex;\r\n                newLastIndex = buffer\r\n            }\r\n            $cells = (0, _renderer.default)(result).slice(newFirstIndex, newLastIndex + 1);\r\n            if (this._getGroupCount()) {\r\n                var arr = [];\r\n                var focusedGroupIndex = this._getGroupIndexByCell($first);\r\n                (0, _iterator.each)($cells, function(_, cell) {\r\n                    var groupIndex = this._getGroupIndexByCell((0, _renderer.default)(cell));\r\n                    if (focusedGroupIndex === groupIndex) {\r\n                        arr.push(cell)\r\n                    }\r\n                }.bind(this));\r\n                $cells = (0, _renderer.default)(arr)\r\n            }\r\n            return $cells\r\n        }\r\n    }, {\r\n        key: \"_getCellFromNextColumn\",\r\n        value: function(direction, isMultiSelection) {\r\n            var $nextCell = _get(_getPrototypeOf(SchedulerWorkspaceVertical.prototype), \"_getCellFromNextColumn\", this).call(this, direction, isMultiSelection);\r\n            var $focusedCell = this._$focusedCell;\r\n            if ($focusedCell.parent().index() !== $nextCell.parent().index() && isMultiSelection) {\r\n                $nextCell = $focusedCell\r\n            }\r\n            return $nextCell\r\n        }\r\n    }, {\r\n        key: \"_getFormat\",\r\n        value: function() {\r\n            return this._formatWeekdayAndDay\r\n        }\r\n    }, {\r\n        key: \"renovatedRenderSupported\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"generateRenderOptions\",\r\n        value: function() {\r\n            var _this = this;\r\n            var startViewDate = _utils.default.getDateWithoutTimezoneChange(this.getStartViewDate());\r\n            var _getTimeText = function(row, column) {\r\n                var index = row % _this._getRowCount();\r\n                if (index % 2 === 0 && 0 === column) {\r\n                    return _date.default.format(_this._getTimeCellDateCore(startViewDate, row), \"shorttime\")\r\n                }\r\n                return \"\"\r\n            };\r\n            var options = _get(_getPrototypeOf(SchedulerWorkspaceVertical.prototype), \"generateRenderOptions\", this).call(this);\r\n            options.cellDataGetters.push(function(_, rowIndex, cellIndex) {\r\n                return {\r\n                    value: {\r\n                        text: _getTimeText(rowIndex, cellIndex)\r\n                    }\r\n                }\r\n            });\r\n            return options\r\n        }\r\n    }]);\r\n    return SchedulerWorkspaceVertical\r\n}(_uiSchedulerWork_space.default);\r\nvar _default = SchedulerWorkspaceVertical;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/layout.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.DateTableLayoutBase = DateTableLayoutBase;\r\nexports.DateTableLayoutBaseProps = exports.viewFunction = void 0;\r\nvar _table = require(\"../table\");\r\nvar _table_body = require(\"./table_body\");\r\nvar _layout_props = require(\"../layout_props\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_table.Table, _extends({}, viewModel.restAttributes, {\r\n        isVirtual: viewModel.isVirtual,\r\n        topVirtualRowHeight: viewModel.topVirtualRowHeight,\r\n        bottomVirtualRowHeight: viewModel.bottomVirtualRowHeight,\r\n        className: viewModel.classes\r\n    }), Preact.h(_table_body.DateTableBody, {\r\n        viewType: viewModel.props.viewType,\r\n        viewData: viewModel.props.viewData,\r\n        dataCellTemplate: viewModel.props.dataCellTemplate\r\n    }))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar DateTableLayoutBaseProps = _objectSpread({}, _layout_props.LayoutProps);\r\nexports.DateTableLayoutBaseProps = DateTableLayoutBaseProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction DateTableLayoutBase(props) {\r\n    var __classes = (0, _hooks.useCallback)(function() {\r\n        return \"dx-scheduler-date-table \".concat(props.className)\r\n    }, [props.className]);\r\n    var __isVirtual = (0, _hooks.useCallback)(function() {\r\n        var viewData = props.viewData;\r\n        return !!viewData.isVirtual\r\n    }, [props.viewData]);\r\n    var __topVirtualRowHeight = (0, _hooks.useCallback)(function() {\r\n        return props.viewData.topVirtualRowHeight || 0\r\n    }, [props.viewData]);\r\n    var __bottomVirtualRowHeight = (0, _hooks.useCallback)(function() {\r\n        return props.viewData.bottomVirtualRowHeight || 0\r\n    }, [props.viewData]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.className, props.dataCellTemplate, props.groupOrientation, props.viewData, props.viewType, _objectWithoutProperties(props, [\"className\", \"dataCellTemplate\", \"groupOrientation\", \"viewData\", \"viewType\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n        }),\r\n        classes: __classes(),\r\n        isVirtual: __isVirtual(),\r\n        topVirtualRowHeight: __topVirtualRowHeight(),\r\n        bottomVirtualRowHeight: __bottomVirtualRowHeight(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nDateTableLayoutBase.defaultProps = _objectSpread({}, DateTableLayoutBaseProps);\r\n","/**\r\n * DevExtreme (ui/text_box/texteditor_button_collection/index.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _custom = _interopRequireDefault(require(\"./custom\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _array = require(\"../../../core/utils/array\");\r\nvar _ui = _interopRequireDefault(require(\"../../widget/ui.errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar TEXTEDITOR_BUTTONS_CONTAINER_CLASS = \"dx-texteditor-buttons-container\";\r\n\r\nfunction checkButtonInfo(buttonInfo) {\r\n    var checkButtonType = function() {\r\n        if (!buttonInfo || \"object\" !== _typeof(buttonInfo) || Array.isArray(buttonInfo)) {\r\n            throw _ui.default.Error(\"E1053\")\r\n        }\r\n    };\r\n    var checkLocation = function() {\r\n        var location = buttonInfo.location;\r\n        if (\"location\" in buttonInfo && \"after\" !== location && \"before\" !== location) {\r\n            buttonInfo.location = \"after\"\r\n        }\r\n    };\r\n    var checkNameIsDefined = function() {\r\n        if (!(\"name\" in buttonInfo)) {\r\n            throw _ui.default.Error(\"E1054\")\r\n        }\r\n    };\r\n    var checkNameIsString = function() {\r\n        var name = buttonInfo.name;\r\n        if (\"string\" !== typeof name) {\r\n            throw _ui.default.Error(\"E1055\")\r\n        }\r\n    };\r\n    checkButtonType();\r\n    checkNameIsDefined();\r\n    checkNameIsString();\r\n    checkLocation()\r\n}\r\n\r\nfunction checkNamesUniqueness(existingNames, newName) {\r\n    if (existingNames.indexOf(newName) !== -1) {\r\n        throw _ui.default.Error(\"E1055\", newName)\r\n    }\r\n    existingNames.push(newName)\r\n}\r\n\r\nfunction isPredefinedButtonName(name, predefinedButtonsInfo) {\r\n    return !!(0, _array.find)(predefinedButtonsInfo, function(info) {\r\n        return info.name === name\r\n    })\r\n}\r\nvar TextEditorButtonCollection = function() {\r\n    function TextEditorButtonCollection(editor, defaultButtonsInfo) {\r\n        _classCallCheck(this, TextEditorButtonCollection);\r\n        this.buttons = [];\r\n        this.defaultButtonsInfo = defaultButtonsInfo;\r\n        this.editor = editor\r\n    }\r\n    _createClass(TextEditorButtonCollection, [{\r\n        key: \"_compileButtonInfo\",\r\n        value: function(buttons) {\r\n            var _this = this;\r\n            var names = [];\r\n            return buttons.map(function(button) {\r\n                var isStringButton = \"string\" === typeof button;\r\n                if (!isStringButton) {\r\n                    checkButtonInfo(button)\r\n                }\r\n                var isDefaultButton = isStringButton || isPredefinedButtonName(button.name, _this.defaultButtonsInfo);\r\n                if (isDefaultButton) {\r\n                    var defaultButtonInfo = (0, _array.find)(_this.defaultButtonsInfo, function(_ref) {\r\n                        var name = _ref.name;\r\n                        return name === button || name === button.name\r\n                    });\r\n                    if (!defaultButtonInfo) {\r\n                        throw _ui.default.Error(\"E1056\", _this.editor.NAME, button)\r\n                    }\r\n                    checkNamesUniqueness(names, button);\r\n                    return defaultButtonInfo\r\n                } else {\r\n                    var name = button.name;\r\n                    checkNamesUniqueness(names, name);\r\n                    return (0, _extend.extend)(button, {\r\n                        Ctor: _custom.default\r\n                    })\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createButton\",\r\n        value: function(buttonsInfo) {\r\n            var Ctor = buttonsInfo.Ctor,\r\n                options = buttonsInfo.options,\r\n                name = buttonsInfo.name;\r\n            var button = new Ctor(name, this.editor, options);\r\n            this.buttons.push(button);\r\n            return button\r\n        }\r\n    }, {\r\n        key: \"_renderButtons\",\r\n        value: function(buttons, $container, targetLocation) {\r\n            var _this2 = this;\r\n            var $buttonsContainer = null;\r\n            var buttonsInfo = buttons ? this._compileButtonInfo(buttons) : this.defaultButtonsInfo;\r\n            var getButtonsContainer = function() {\r\n                $buttonsContainer = $buttonsContainer || (0, _renderer.default)(\"<div>\").addClass(TEXTEDITOR_BUTTONS_CONTAINER_CLASS);\r\n                \"before\" === targetLocation ? $container.prepend($buttonsContainer) : $container.append($buttonsContainer);\r\n                return $buttonsContainer\r\n            };\r\n            buttonsInfo.forEach(function(buttonsInfo) {\r\n                var _buttonsInfo$location = buttonsInfo.location,\r\n                    location = void 0 === _buttonsInfo$location ? \"after\" : _buttonsInfo$location;\r\n                if (location === targetLocation) {\r\n                    _this2._createButton(buttonsInfo).render(getButtonsContainer())\r\n                }\r\n            });\r\n            return $buttonsContainer\r\n        }\r\n    }, {\r\n        key: \"clean\",\r\n        value: function() {\r\n            this.buttons.forEach(function(button) {\r\n                return button.dispose()\r\n            });\r\n            this.buttons = []\r\n        }\r\n    }, {\r\n        key: \"getButton\",\r\n        value: function(buttonName) {\r\n            var button = (0, _array.find)(this.buttons, function(_ref2) {\r\n                var name = _ref2.name;\r\n                return name === buttonName\r\n            });\r\n            return button && button.instance\r\n        }\r\n    }, {\r\n        key: \"renderAfterButtons\",\r\n        value: function(buttons, $container) {\r\n            return this._renderButtons(buttons, $container, \"after\")\r\n        }\r\n    }, {\r\n        key: \"renderBeforeButtons\",\r\n        value: function(buttons, $container) {\r\n            return this._renderButtons(buttons, $container, \"before\")\r\n        }\r\n    }, {\r\n        key: \"updateButtons\",\r\n        value: function(names) {\r\n            this.buttons.forEach(function(button) {\r\n                if (!names || names.indexOf(button.name) !== -1) {\r\n                    button.update()\r\n                }\r\n            })\r\n        }\r\n    }]);\r\n    return TextEditorButtonCollection\r\n}();\r\nexports.default = TextEditorButtonCollection;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/context_menu/ui.menu_base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../widget/utils.ink_ripple\");\r\nvar _ui = _interopRequireDefault(require(\"../hierarchical_collection/ui.hierarchical_collection_widget\"));\r\nvar _uiMenu_baseEdit = _interopRequireDefault(require(\"./ui.menu_base.edit.strategy\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _item = _interopRequireDefault(require(\"../collection/item\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_NO_ICONS_CLASS = DX_MENU_CLASS + \"-no-icons\";\r\nvar DX_MENU_BASE_CLASS = \"dx-menu-base\";\r\nvar ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_ITEM_CONTENT_CLASS = ITEM_CLASS + \"-content\";\r\nvar DX_MENU_SELECTED_ITEM_CLASS = ITEM_CLASS + \"-selected\";\r\nvar DX_MENU_ITEM_WRAPPER_CLASS = ITEM_CLASS + \"-wrapper\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = ITEM_CLASS + \"-expanded\";\r\nvar DX_MENU_SEPARATOR_CLASS = DX_MENU_CLASS + \"-separator\";\r\nvar DX_MENU_ITEM_LAST_GROUP_ITEM = DX_MENU_CLASS + \"-last-group-item\";\r\nvar DX_ITEM_HAS_TEXT = ITEM_CLASS + \"-has-text\";\r\nvar DX_ITEM_HAS_ICON = ITEM_CLASS + \"-has-icon\";\r\nvar DX_ITEM_HAS_SUBMENU = ITEM_CLASS + \"-has-submenu\";\r\nvar DX_MENU_ITEM_POPOUT_CLASS = ITEM_CLASS + \"-popout\";\r\nvar DX_MENU_ITEM_POPOUT_CONTAINER_CLASS = DX_MENU_ITEM_POPOUT_CLASS + \"-container\";\r\nvar DX_MENU_ITEM_CAPTION_CLASS = ITEM_CLASS + \"-text\";\r\nvar SINGLE_SELECTION_MODE = \"single\";\r\nvar DEFAULT_DELAY = {\r\n    show: 50,\r\n    hide: 300\r\n};\r\nvar MenuBase = function(_HierarchicalCollecti) {\r\n    _inherits(MenuBase, _HierarchicalCollecti);\r\n    var _super = _createSuper(MenuBase);\r\n\r\n    function MenuBase() {\r\n        _classCallCheck(this, MenuBase);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(MenuBase, [{\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(MenuBase.prototype), \"_getDefaultOptions\", this).call(this), {\r\n                items: [],\r\n                cssClass: \"\",\r\n                activeStateEnabled: true,\r\n                showSubmenuMode: {\r\n                    name: \"onHover\",\r\n                    delay: {\r\n                        show: 50,\r\n                        hide: 300\r\n                    }\r\n                },\r\n                animation: {\r\n                    show: {\r\n                        type: \"fade\",\r\n                        from: 0,\r\n                        to: 1,\r\n                        duration: 100\r\n                    },\r\n                    hide: {\r\n                        type: \"fade\",\r\n                        from: 1,\r\n                        to: 0,\r\n                        duration: 100\r\n                    }\r\n                },\r\n                selectByClick: false,\r\n                focusOnSelectedItem: false,\r\n                keyExpr: null,\r\n                _itemAttributes: {\r\n                    role: \"menuitem\"\r\n                },\r\n                useInkRipple: false\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_itemDataKey\",\r\n        value: function() {\r\n            return \"dxMenuItemDataKey\"\r\n        }\r\n    }, {\r\n        key: \"_itemClass\",\r\n        value: function() {\r\n            return ITEM_CLASS\r\n        }\r\n    }, {\r\n        key: \"_setAriaSelected\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_selectedItemClass\",\r\n        value: function() {\r\n            return DX_MENU_SELECTED_ITEM_CLASS\r\n        }\r\n    }, {\r\n        key: \"_widgetClass\",\r\n        value: function() {\r\n            return DX_MENU_BASE_CLASS\r\n        }\r\n    }, {\r\n        key: \"_focusTarget\",\r\n        value: function() {\r\n            return this._itemContainer()\r\n        }\r\n    }, {\r\n        key: \"_clean\",\r\n        value: function() {\r\n            this.option(\"focusedElement\", null);\r\n            _get(_getPrototypeOf(MenuBase.prototype), \"_clean\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_supportedKeys\",\r\n        value: function() {\r\n            var _this = this;\r\n            var selectItem = function() {\r\n                var $item = (0, _renderer.default)(_this.option(\"focusedElement\"));\r\n                if (!$item.length || !_this._isSelectionEnabled()) {\r\n                    return\r\n                }\r\n                _this.selectItem($item[0])\r\n            };\r\n            return (0, _extend.extend)(_get(_getPrototypeOf(MenuBase.prototype), \"_supportedKeys\", this).call(this), {\r\n                space: selectItem,\r\n                pageUp: _common.noop,\r\n                pageDown: _common.noop\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_isSelectionEnabled\",\r\n        value: function() {\r\n            return this.option(\"selectionMode\") === SINGLE_SELECTION_MODE\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            this._activeStateUnit = \".\".concat(ITEM_CLASS);\r\n            _get(_getPrototypeOf(MenuBase.prototype), \"_init\", this).call(this);\r\n            this._renderSelectedItem();\r\n            this._initActions()\r\n        }\r\n    }, {\r\n        key: \"_getTextContainer\",\r\n        value: function(itemData) {\r\n            var itemText = itemData.text;\r\n            var $itemContainer = (0, _renderer.default)(\"<span>\").addClass(DX_MENU_ITEM_CAPTION_CLASS);\r\n            var itemContent = (0, _type.isPlainObject)(itemData) ? itemText : String(itemData);\r\n            return itemText && $itemContainer.text(itemContent)\r\n        }\r\n    }, {\r\n        key: \"_getPopoutContainer\",\r\n        value: function(itemData) {\r\n            var items = itemData.items;\r\n            var $popOutContainer;\r\n            if (items && items.length) {\r\n                var $popOutImage = (0, _renderer.default)(\"<div>\").addClass(DX_MENU_ITEM_POPOUT_CLASS);\r\n                $popOutContainer = (0, _renderer.default)(\"<span>\").addClass(DX_MENU_ITEM_POPOUT_CONTAINER_CLASS).append($popOutImage)\r\n            }\r\n            return $popOutContainer\r\n        }\r\n    }, {\r\n        key: \"_getDataAdapterOptions\",\r\n        value: function() {\r\n            return {\r\n                rootValue: 0,\r\n                multipleSelection: false,\r\n                recursiveSelection: false,\r\n                recursiveExpansion: false,\r\n                searchValue: \"\"\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_selectByItem\",\r\n        value: function(selectedItem) {\r\n            if (!selectedItem) {\r\n                return\r\n            }\r\n            var nodeToSelect = this._dataAdapter.getNodeByItem(selectedItem);\r\n            this._dataAdapter.toggleSelection(nodeToSelect.internalFields.key, true)\r\n        }\r\n    }, {\r\n        key: \"_renderSelectedItem\",\r\n        value: function() {\r\n            var selectedKeys = this._dataAdapter.getSelectedNodesKeys();\r\n            var selectedKey = selectedKeys.length && selectedKeys[0];\r\n            var selectedItem = this.option(\"selectedItem\");\r\n            if (!selectedKey) {\r\n                this._selectByItem(selectedItem);\r\n                return\r\n            }\r\n            var node = this._dataAdapter.getNodeByKey(selectedKey);\r\n            if (false === node.selectable) {\r\n                return\r\n            }\r\n            if (!selectedItem) {\r\n                this.option(\"selectedItem\", node.internalFields.item);\r\n                return\r\n            }\r\n            if (selectedItem !== node.internalFields.item) {\r\n                this._dataAdapter.toggleSelection(selectedKey, false);\r\n                this._selectByItem(selectedItem)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_initActions\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(MenuBase.prototype), \"_initMarkup\", this).call(this);\r\n            this._addCustomCssClass(this.$element());\r\n            this.option(\"useInkRipple\") && this._renderInkRipple()\r\n        }\r\n    }, {\r\n        key: \"_renderInkRipple\",\r\n        value: function() {\r\n            this._inkRipple = (0, _utils.render)()\r\n        }\r\n    }, {\r\n        key: \"_toggleActiveState\",\r\n        value: function($element, value, e) {\r\n            _get(_getPrototypeOf(MenuBase.prototype), \"_toggleActiveState\", this).apply(this, arguments);\r\n            if (!this._inkRipple) {\r\n                return\r\n            }\r\n            var config = {\r\n                element: $element,\r\n                event: e\r\n            };\r\n            if (value) {\r\n                this._inkRipple.showWave(config)\r\n            } else {\r\n                this._inkRipple.hideWave(config)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getShowSubmenuMode\",\r\n        value: function() {\r\n            var defaultValue = \"onClick\";\r\n            var optionValue = this.option(\"showSubmenuMode\");\r\n            optionValue = (0, _type.isObject)(optionValue) ? optionValue.name : optionValue;\r\n            return this._isDesktopDevice() ? optionValue : defaultValue\r\n        }\r\n    }, {\r\n        key: \"_initSelectedItems\",\r\n        value: function() {}\r\n    }, {\r\n        key: \"_isDesktopDevice\",\r\n        value: function() {\r\n            return \"desktop\" === _devices.default.real().deviceType\r\n        }\r\n    }, {\r\n        key: \"_initEditStrategy\",\r\n        value: function() {\r\n            var Strategy = _uiMenu_baseEdit.default;\r\n            this._editStrategy = new Strategy(this)\r\n        }\r\n    }, {\r\n        key: \"_addCustomCssClass\",\r\n        value: function($element) {\r\n            $element.addClass(this.option(\"cssClass\"))\r\n        }\r\n    }, {\r\n        key: \"_itemWrapperSelector\",\r\n        value: function() {\r\n            return \".\".concat(DX_MENU_ITEM_WRAPPER_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_hoverStartHandler\",\r\n        value: function(e) {\r\n            var $itemElement = this._getItemElementByEventArgs(e);\r\n            if (!$itemElement || this._isItemDisabled($itemElement)) {\r\n                return\r\n            }\r\n            e.stopPropagation();\r\n            if (\"onHover\" === this._getShowSubmenuMode()) {\r\n                clearTimeout(this._showSubmenusTimeout);\r\n                this._showSubmenusTimeout = setTimeout(this._showSubmenu.bind(this, $itemElement), this._getSubmenuDelay(\"show\"))\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getAvailableItems\",\r\n        value: function($itemElements) {\r\n            return _get(_getPrototypeOf(MenuBase.prototype), \"_getAvailableItems\", this).call(this, $itemElements).filter(function() {\r\n                return \"hidden\" !== (0, _renderer.default)(this).css(\"visibility\")\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_isItemDisabled\",\r\n        value: function($item) {\r\n            return this._disabledGetter($item.data(this._itemDataKey()))\r\n        }\r\n    }, {\r\n        key: \"_showSubmenu\",\r\n        value: function($itemElement) {\r\n            this._addExpandedClass($itemElement)\r\n        }\r\n    }, {\r\n        key: \"_addExpandedClass\",\r\n        value: function(itemElement) {\r\n            (0, _renderer.default)(itemElement).addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_getSubmenuDelay\",\r\n        value: function(action) {\r\n            var _this$option = this.option(\"showSubmenuMode\"),\r\n                delay = _this$option.delay;\r\n            if (!(0, _type.isDefined)(delay)) {\r\n                return DEFAULT_DELAY[action]\r\n            }\r\n            return (0, _type.isObject)(delay) ? delay[action] : delay\r\n        }\r\n    }, {\r\n        key: \"_getItemElementByEventArgs\",\r\n        value: function(eventArgs) {\r\n            var $target = (0, _renderer.default)(eventArgs.target);\r\n            if ($target.hasClass(this._itemClass()) || $target.get(0) === eventArgs.currentTarget) {\r\n                return $target\r\n            }\r\n            while (!$target.hasClass(this._itemClass())) {\r\n                $target = $target.parent();\r\n                if ($target.hasClass(\"dx-submenu\")) {\r\n                    return null\r\n                }\r\n            }\r\n            return $target\r\n        }\r\n    }, {\r\n        key: \"_hoverEndHandler\",\r\n        value: function() {\r\n            clearTimeout(this._showSubmenusTimeout)\r\n        }\r\n    }, {\r\n        key: \"_hasSubmenu\",\r\n        value: function(node) {\r\n            return node && node.internalFields.childrenKeys.length\r\n        }\r\n    }, {\r\n        key: \"_renderContentImpl\",\r\n        value: function() {\r\n            this._renderItems(this._dataAdapter.getRootNodes())\r\n        }\r\n    }, {\r\n        key: \"_renderItems\",\r\n        value: function(nodes, submenuContainer) {\r\n            var _this2 = this;\r\n            if (nodes.length) {\r\n                this.hasIcons = false;\r\n                var $nodeContainer = this._renderContainer(this.$element(), submenuContainer);\r\n                var firstVisibleIndex = -1;\r\n                var nextGroupFirstIndex = -1;\r\n                (0, _iterator.each)(nodes, function(index, node) {\r\n                    var isVisibleNode = false !== node.visible;\r\n                    if (isVisibleNode && firstVisibleIndex < 0) {\r\n                        firstVisibleIndex = index\r\n                    }\r\n                    var isBeginGroup = firstVisibleIndex < index && (node.beginGroup || index === nextGroupFirstIndex);\r\n                    if (isBeginGroup) {\r\n                        nextGroupFirstIndex = isVisibleNode ? index : index + 1\r\n                    }\r\n                    if (index === nextGroupFirstIndex && firstVisibleIndex < index) {\r\n                        _this2._renderSeparator($nodeContainer)\r\n                    }\r\n                    _this2._renderItem(index, node, $nodeContainer)\r\n                });\r\n                if (!this.hasIcons) {\r\n                    $nodeContainer.addClass(DX_MENU_NO_ICONS_CLASS)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderContainer\",\r\n        value: function($wrapper) {\r\n            var $container = (0, _renderer.default)(\"<ul>\");\r\n            this.setAria(\"role\", \"none\", $container);\r\n            return $container.appendTo($wrapper).addClass(DX_MENU_ITEMS_CONTAINER_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_createDOMElement\",\r\n        value: function($nodeContainer) {\r\n            var $node = (0, _renderer.default)(\"<li>\");\r\n            this.setAria(\"role\", \"none\", $node);\r\n            return $node.appendTo($nodeContainer).addClass(DX_MENU_ITEM_WRAPPER_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_renderItem\",\r\n        value: function(index, node, $nodeContainer, $nodeElement) {\r\n            var items = this.option(\"items\");\r\n            var $node = $nodeElement || this._createDOMElement($nodeContainer);\r\n            if (items[index + 1] && items[index + 1].beginGroup) {\r\n                $node.addClass(DX_MENU_ITEM_LAST_GROUP_ITEM)\r\n            }\r\n            var $itemFrame = _get(_getPrototypeOf(MenuBase.prototype), \"_renderItem\", this).call(this, index, node.internalFields.item, $node);\r\n            if (node.internalFields.item === this.option(\"selectedItem\")) {\r\n                $itemFrame.addClass(DX_MENU_SELECTED_ITEM_CLASS)\r\n            }\r\n            $itemFrame.attr(\"tabIndex\", -1);\r\n            if (this._hasSubmenu(node)) {\r\n                this.setAria(\"haspopup\", \"true\", $itemFrame)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_renderItemFrame\",\r\n        value: function(index, itemData, $itemContainer) {\r\n            var $itemFrame = $itemContainer.children(\".\".concat(ITEM_CLASS));\r\n            return $itemFrame.length ? $itemFrame : _get(_getPrototypeOf(MenuBase.prototype), \"_renderItemFrame\", this).apply(this, arguments)\r\n        }\r\n    }, {\r\n        key: \"_refreshItem\",\r\n        value: function($item, item) {\r\n            var node = this._dataAdapter.getNodeByItem(item);\r\n            var index = $item.data(this._itemIndexKey());\r\n            var $nodeContainer = $item.closest(\"ul\");\r\n            var $nodeElement = $item.closest(\"li\");\r\n            this._renderItem(index, node, $nodeContainer, $nodeElement)\r\n        }\r\n    }, {\r\n        key: \"_addContentClasses\",\r\n        value: function(itemData, $itemFrame) {\r\n            var hasText = itemData.text ? !!itemData.text.length : false;\r\n            var hasIcon = !!itemData.icon;\r\n            var hasSubmenu = itemData.items ? !!itemData.items.length : false;\r\n            $itemFrame.toggleClass(DX_ITEM_HAS_TEXT, hasText);\r\n            $itemFrame.toggleClass(DX_ITEM_HAS_ICON, hasIcon);\r\n            if (!this.hasIcons) {\r\n                this.hasIcons = hasIcon\r\n            }\r\n            $itemFrame.toggleClass(DX_ITEM_HAS_SUBMENU, hasSubmenu)\r\n        }\r\n    }, {\r\n        key: \"_getItemContent\",\r\n        value: function($itemFrame) {\r\n            var $itemContent = _get(_getPrototypeOf(MenuBase.prototype), \"_getItemContent\", this).call(this, $itemFrame);\r\n            if (!$itemContent.length) {\r\n                $itemContent = $itemFrame.children(\".\".concat(DX_ITEM_CONTENT_CLASS))\r\n            }\r\n            return $itemContent\r\n        }\r\n    }, {\r\n        key: \"_postprocessRenderItem\",\r\n        value: function(args) {\r\n            var $itemElement = (0, _renderer.default)(args.itemElement);\r\n            var selectedIndex = this._dataAdapter.getSelectedNodesKeys();\r\n            if (!selectedIndex.length || !this._selectedGetter(args.itemData) || !this._isItemSelectable(args.itemData)) {\r\n                this._setAriaSelected($itemElement, \"false\");\r\n                return\r\n            }\r\n            var node = this._dataAdapter.getNodeByItem(args.itemData);\r\n            if (node.internalFields.key === selectedIndex[0]) {\r\n                $itemElement.addClass(this._selectedItemClass());\r\n                this._setAriaSelected($itemElement, \"true\")\r\n            } else {\r\n                this._setAriaSelected($itemElement, \"false\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isItemSelectable\",\r\n        value: function(item) {\r\n            return false !== item.selectable\r\n        }\r\n    }, {\r\n        key: \"_renderSeparator\",\r\n        value: function($itemsContainer) {\r\n            (0, _renderer.default)(\"<li>\").appendTo($itemsContainer).addClass(DX_MENU_SEPARATOR_CLASS)\r\n        }\r\n    }, {\r\n        key: \"_itemClickHandler\",\r\n        value: function(e) {\r\n            if (e._skipHandling) {\r\n                return\r\n            }\r\n            var itemClickActionHandler = this._createAction(this._updateSubmenuVisibilityOnClick.bind(this));\r\n            this._itemDXEventHandler(e, \"onItemClick\", {}, {\r\n                afterExecute: itemClickActionHandler.bind(this)\r\n            });\r\n            e._skipHandling = true\r\n        }\r\n    }, {\r\n        key: \"_updateSubmenuVisibilityOnClick\",\r\n        value: function(actionArgs) {\r\n            this._updateSelectedItemOnClick(actionArgs);\r\n            if (\"onClick\" === this._getShowSubmenuMode()) {\r\n                this._addExpandedClass(actionArgs.args[0].itemElement)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_updateSelectedItemOnClick\",\r\n        value: function(actionArgs) {\r\n            var args = actionArgs.args ? actionArgs.args[0] : actionArgs;\r\n            if (!this._isItemSelectionAllowed(args.itemData)) {\r\n                return\r\n            }\r\n            var selectedItemKey = this._dataAdapter.getSelectedNodesKeys();\r\n            var selectedNode = selectedItemKey.length && this._dataAdapter.getNodeByKey(selectedItemKey[0]);\r\n            if (selectedNode) {\r\n                this._toggleItemSelection(selectedNode, false)\r\n            }\r\n            if (!selectedNode || selectedNode.internalFields.item !== args.itemData) {\r\n                this.selectItem(args.itemData)\r\n            } else {\r\n                this._fireSelectionChangeEvent(null, this.option(\"selectedItem\"));\r\n                this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isItemSelectionAllowed\",\r\n        value: function(item) {\r\n            var isSelectionByClickEnabled = this._isSelectionEnabled() && this.option(\"selectByClick\");\r\n            return !this._isContainerEmpty() && isSelectionByClickEnabled && this._isItemSelectable(item) && !this._itemsGetter(item)\r\n        }\r\n    }, {\r\n        key: \"_isContainerEmpty\",\r\n        value: function() {\r\n            return this._itemContainer().is(\":empty\")\r\n        }\r\n    }, {\r\n        key: \"_syncSelectionOptions\",\r\n        value: function() {\r\n            return (0, _common.asyncNoop)()\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            switch (args.name) {\r\n                case \"showSubmenuMode\":\r\n                    break;\r\n                case \"selectedItem\":\r\n                    var node = this._dataAdapter.getNodeByItem(args.value);\r\n                    var selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];\r\n                    if (node && node.internalFields.key !== selectedKey) {\r\n                        if (false === node.selectable) {\r\n                            break\r\n                        }\r\n                        if (selectedKey) {\r\n                            this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false)\r\n                        }\r\n                        this._toggleItemSelection(node, true);\r\n                        this._updateSelectedItems()\r\n                    }\r\n                    break;\r\n                case \"cssClass\":\r\n                case \"position\":\r\n                case \"selectByClick\":\r\n                case \"animation\":\r\n                case \"useInkRipple\":\r\n                    this._invalidate();\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(MenuBase.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_toggleItemSelection\",\r\n        value: function(node, value) {\r\n            var itemElement = this._getElementByItem(node.internalFields.item);\r\n            itemElement && (0, _renderer.default)(itemElement).toggleClass(DX_MENU_SELECTED_ITEM_CLASS);\r\n            this._dataAdapter.toggleSelection(node.internalFields.key, value)\r\n        }\r\n    }, {\r\n        key: \"_getElementByItem\",\r\n        value: function(itemData) {\r\n            var _this3 = this;\r\n            var result;\r\n            (0, _iterator.each)(this._itemElements(), function(_, itemElement) {\r\n                if ((0, _renderer.default)(itemElement).data(_this3._itemDataKey()) !== itemData) {\r\n                    return true\r\n                }\r\n                result = itemElement;\r\n                return false\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_updateSelectedItems\",\r\n        value: function(oldSelection, newSelection) {\r\n            if (oldSelection || newSelection) {\r\n                this._fireSelectionChangeEvent(newSelection, oldSelection)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_fireSelectionChangeEvent\",\r\n        value: function(addedSelection, removedSelection) {\r\n            this._createActionByOption(\"onSelectionChanged\", {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            })({\r\n                addedItems: [addedSelection],\r\n                removedItems: [removedSelection]\r\n            })\r\n        }\r\n    }, {\r\n        key: \"selectItem\",\r\n        value: function(itemElement) {\r\n            var itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;\r\n            var selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];\r\n            var selectedItem = this.option(\"selectedItem\");\r\n            var node = this._dataAdapter.getNodeByItem(itemData);\r\n            if (node.internalFields.key !== selectedKey) {\r\n                if (selectedKey) {\r\n                    this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false)\r\n                }\r\n                this._toggleItemSelection(node, true);\r\n                this._updateSelectedItems(selectedItem, itemData);\r\n                this._setOptionWithoutOptionChange(\"selectedItem\", itemData)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"unselectItem\",\r\n        value: function(itemElement) {\r\n            var itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;\r\n            var node = this._dataAdapter.getNodeByItem(itemData);\r\n            var selectedItem = this.option(\"selectedItem\");\r\n            if (node.internalFields.selected) {\r\n                this._toggleItemSelection(node, false);\r\n                this._updateSelectedItems(selectedItem, null);\r\n                this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n            }\r\n        }\r\n    }]);\r\n    return MenuBase\r\n}(_ui.default);\r\nMenuBase.ItemClass = _item.default;\r\nvar _default = MenuBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.header_filter_core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.updateHeaderFilterItemSelectionState = updateHeaderFilterItemSelectionState;\r\nexports.headerFilterMixin = exports.allowHeaderFiltering = exports.HeaderFilterView = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _list = _interopRequireDefault(require(\"../list\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar HEADER_FILTER_CLASS = \"dx-header-filter\";\r\nvar HEADER_FILTER_MENU_CLASS = \"dx-header-filter-menu\";\r\nvar DEFAULT_SEARCH_EXPRESSION = \"text\";\r\n\r\nfunction resetChildrenItemSelection(items) {\r\n    items = items || [];\r\n    for (var i = 0; i < items.length; i++) {\r\n        items[i].selected = false;\r\n        resetChildrenItemSelection(items[i].items)\r\n    }\r\n}\r\n\r\nfunction updateSelectAllState(e, filterValues) {\r\n    if (e.component.option(\"searchValue\")) {\r\n        return\r\n    }\r\n    var selectAllCheckBox = (0, _renderer.default)(e.element).find(\".dx-list-select-all-checkbox\").data(\"dxCheckBox\");\r\n    if (selectAllCheckBox && filterValues && filterValues.length) {\r\n        selectAllCheckBox.option(\"value\", void 0)\r\n    }\r\n}\r\n\r\nfunction isSearchEnabled(that, options) {\r\n    var headerFilter = options.headerFilter;\r\n    if (headerFilter && (0, _type.isDefined)(headerFilter.allowSearch)) {\r\n        return headerFilter.allowSearch\r\n    }\r\n    return that.option(\"headerFilter.allowSearch\")\r\n}\r\n\r\nfunction updateHeaderFilterItemSelectionState(item, filterValuesMatch, isExcludeFilter) {\r\n    if (filterValuesMatch ^ isExcludeFilter) {\r\n        item.selected = true;\r\n        if (isExcludeFilter && item.items) {\r\n            for (var j = 0; j < item.items.length; j++) {\r\n                if (!item.items[j].selected) {\r\n                    item.selected = void 0;\r\n                    break\r\n                }\r\n            }\r\n        }\r\n    } else {\r\n        if (isExcludeFilter || item.selected) {\r\n            item.selected = false;\r\n            resetChildrenItemSelection(item.items)\r\n        }\r\n    }\r\n}\r\nvar HeaderFilterView = _uiGrid_core.default.View.inherit({\r\n    getPopupContainer: function() {\r\n        return this._popupContainer\r\n    },\r\n    getListContainer: function() {\r\n        return this._listContainer\r\n    },\r\n    applyHeaderFilter: function(options) {\r\n        var that = this;\r\n        var list = that.getListContainer();\r\n        var searchValue = list.option(\"searchValue\");\r\n        var isSelectAll = !searchValue && !options.isFilterBuilder && list.$element().find(\".dx-checkbox\").eq(0).hasClass(\"dx-checkbox-checked\");\r\n        var filterValues = [];\r\n        var fillSelectedItemKeys = function fillSelectedItemKeys(filterValues, items, isExclude) {\r\n            (0, _iterator.each)(items, function(_, item) {\r\n                if (void 0 !== item.selected && !!item.selected ^ isExclude) {\r\n                    var node = list._getNode(item);\r\n                    var hasChildren = list._hasChildren(node);\r\n                    var hasChildrenWithSelection = hasChildren && item.items && item.items.some(function(item) {\r\n                        return item.selected\r\n                    });\r\n                    if (!searchValue || !hasChildrenWithSelection) {\r\n                        filterValues.push(item.value);\r\n                        return\r\n                    }\r\n                }\r\n                if (item.items && item.items.length) {\r\n                    fillSelectedItemKeys(filterValues, item.items, isExclude)\r\n                }\r\n            })\r\n        };\r\n        if (!isSelectAll) {\r\n            if (\"tree\" === options.type) {\r\n                if (options.filterType) {\r\n                    options.filterType = \"include\"\r\n                }\r\n                fillSelectedItemKeys(filterValues, list.option(\"items\"), false);\r\n                options.filterValues = filterValues\r\n            }\r\n        } else {\r\n            if (\"tree\" === options.type) {\r\n                options.filterType = \"exclude\"\r\n            }\r\n            if (Array.isArray(options.filterValues)) {\r\n                options.filterValues = []\r\n            }\r\n        }\r\n        if (options.filterValues && !options.filterValues.length) {\r\n            options.filterValues = null\r\n        }\r\n        options.apply();\r\n        that.hideHeaderFilterMenu()\r\n    },\r\n    showHeaderFilterMenu: function($columnElement, options) {\r\n        var that = this;\r\n        if (options) {\r\n            that._initializePopupContainer(options);\r\n            var popupContainer = that.getPopupContainer();\r\n            that.hideHeaderFilterMenu();\r\n            that.updatePopup($columnElement, options);\r\n            popupContainer.show()\r\n        }\r\n    },\r\n    hideHeaderFilterMenu: function() {\r\n        var headerFilterMenu = this.getPopupContainer();\r\n        headerFilterMenu && headerFilterMenu.hide()\r\n    },\r\n    updatePopup: function($element, options) {\r\n        var that = this;\r\n        var alignment = \"right\" === options.alignment ? \"left\" : \"right\";\r\n        if (that._popupContainer) {\r\n            that._cleanPopupContent();\r\n            that._popupContainer.option(\"position\", {\r\n                my: alignment + \" top\",\r\n                at: alignment + \" bottom\",\r\n                of: $element,\r\n                collision: \"flip fit\"\r\n            })\r\n        }\r\n    },\r\n    _getSearchExpr: function(options) {\r\n        var lookup = options.lookup;\r\n        var useDefaultSearchExpr = options.useDefaultSearchExpr;\r\n        var headerFilterDataSource = options.headerFilter && options.headerFilter.dataSource;\r\n        if (useDefaultSearchExpr || (0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) {\r\n            return DEFAULT_SEARCH_EXPRESSION\r\n        }\r\n        if (lookup) {\r\n            return lookup.displayExpr || \"this\"\r\n        }\r\n        if (options.dataSource) {\r\n            var group = options.dataSource.group;\r\n            if (Array.isArray(group) && group.length > 0) {\r\n                return group[0].selector\r\n            } else {\r\n                if ((0, _type.isFunction)(group) && !options.remoteFiltering) {\r\n                    return group\r\n                }\r\n            }\r\n        }\r\n        return options.dataField || options.selector\r\n    },\r\n    _cleanPopupContent: function() {\r\n        this._popupContainer && this._popupContainer.$content().empty()\r\n    },\r\n    _initializePopupContainer: function(options) {\r\n        var that = this;\r\n        var $element = that.element();\r\n        var headerFilterOptions = that.option(\"headerFilter\");\r\n        var width = options.headerFilter && options.headerFilter.width || headerFilterOptions && headerFilterOptions.width;\r\n        var height = options.headerFilter && options.headerFilter.height || headerFilterOptions && headerFilterOptions.height;\r\n        var dxPopupOptions = {\r\n            width: width,\r\n            height: height,\r\n            visible: false,\r\n            shading: false,\r\n            showTitle: false,\r\n            showCloseButton: false,\r\n            closeOnTargetScroll: false,\r\n            dragEnabled: false,\r\n            closeOnOutsideClick: true,\r\n            focusStateEnabled: false,\r\n            toolbarItems: [{\r\n                toolbar: \"bottom\",\r\n                location: \"after\",\r\n                widget: \"dxButton\",\r\n                options: {\r\n                    text: headerFilterOptions.texts.ok,\r\n                    onClick: function() {\r\n                        that.applyHeaderFilter(options)\r\n                    }\r\n                }\r\n            }, {\r\n                toolbar: \"bottom\",\r\n                location: \"after\",\r\n                widget: \"dxButton\",\r\n                options: {\r\n                    text: headerFilterOptions.texts.cancel,\r\n                    onClick: function() {\r\n                        that.hideHeaderFilterMenu()\r\n                    }\r\n                }\r\n            }],\r\n            resizeEnabled: true,\r\n            onShowing: function(e) {\r\n                e.component.$content().parent().addClass(\"dx-dropdowneditor-overlay\");\r\n                that._initializeListContainer(options);\r\n                options.onShowing && options.onShowing(e)\r\n            },\r\n            onShown: function() {\r\n                that.getListContainer().focus()\r\n            },\r\n            onHidden: options.onHidden,\r\n            onInitialized: function(e) {\r\n                var component = e.component;\r\n                component.option(\"animation\", component._getDefaultOptions().animation)\r\n            }\r\n        };\r\n        if (!(0, _type.isDefined)(that._popupContainer)) {\r\n            that._popupContainer = that._createComponent($element, _popup.default, dxPopupOptions)\r\n        } else {\r\n            that._popupContainer.option(dxPopupOptions)\r\n        }\r\n    },\r\n    _initializeListContainer: function(options) {\r\n        var that = this;\r\n        var $content = that._popupContainer.$content();\r\n        var widgetOptions = {\r\n            searchEnabled: isSearchEnabled(that, options),\r\n            searchTimeout: that.option(\"headerFilter.searchTimeout\"),\r\n            searchMode: options.headerFilter && options.headerFilter.searchMode || \"\",\r\n            dataSource: options.dataSource,\r\n            onContentReady: function() {\r\n                that.renderCompleted.fire()\r\n            },\r\n            itemTemplate: function(data, _, element) {\r\n                var $element = (0, _renderer.default)(element);\r\n                if (options.encodeHtml) {\r\n                    return $element.text(data.text)\r\n                }\r\n                return $element.html(data.text)\r\n            }\r\n        };\r\n\r\n        function onOptionChanged(e) {\r\n            if (\"searchValue\" === e.fullName && !options.isFilterBuilder && false !== that.option(\"headerFilter.hideSelectAllOnSearch\")) {\r\n                if (\"tree\" === options.type) {\r\n                    e.component.option(\"showCheckBoxesMode\", e.value ? \"normal\" : \"selectAll\")\r\n                } else {\r\n                    e.component.option(\"selectionMode\", e.value ? \"multiple\" : \"all\")\r\n                }\r\n            }\r\n        }\r\n        if (\"tree\" === options.type) {\r\n            that._listContainer = that._createComponent((0, _renderer.default)(\"<div>\").appendTo($content), _tree_view.default, (0, _extend.extend)(widgetOptions, {\r\n                showCheckBoxesMode: options.isFilterBuilder ? \"normal\" : \"selectAll\",\r\n                onOptionChanged: onOptionChanged,\r\n                keyExpr: \"id\"\r\n            }))\r\n        } else {\r\n            that._listContainer = that._createComponent((0, _renderer.default)(\"<div>\").appendTo($content), _list.default, (0, _extend.extend)(widgetOptions, {\r\n                searchExpr: that._getSearchExpr(options),\r\n                pageLoadMode: \"scrollBottom\",\r\n                showSelectionControls: true,\r\n                selectionMode: options.isFilterBuilder ? \"multiple\" : \"all\",\r\n                onOptionChanged: onOptionChanged,\r\n                onSelectionChanged: function(e) {\r\n                    var items = e.component.option(\"items\");\r\n                    var selectedItems = e.component.option(\"selectedItems\");\r\n                    if (!e.component._selectedItemsUpdating && !e.component.option(\"searchValue\") && !options.isFilterBuilder) {\r\n                        var filterValues = options.filterValues || [];\r\n                        var isExclude = \"exclude\" === options.filterType;\r\n                        if (0 === selectedItems.length && items.length && (filterValues.length <= 1 || isExclude && filterValues.length === items.length - 1)) {\r\n                            options.filterType = \"include\";\r\n                            options.filterValues = []\r\n                        } else {\r\n                            if (selectedItems.length === items.length) {\r\n                                options.filterType = \"exclude\";\r\n                                options.filterValues = []\r\n                            }\r\n                        }\r\n                    }(0, _iterator.each)(items, function(index, item) {\r\n                        var selected = _uiGrid_core2.default.getIndexByKey(item, selectedItems, null) >= 0;\r\n                        var oldSelected = !!item.selected;\r\n                        if (oldSelected !== selected) {\r\n                            item.selected = selected;\r\n                            options.filterValues = options.filterValues || [];\r\n                            var filterValueIndex = _uiGrid_core2.default.getIndexByKey(item.value, options.filterValues, null);\r\n                            if (filterValueIndex >= 0) {\r\n                                options.filterValues.splice(filterValueIndex, 1)\r\n                            }\r\n                            if (selected ^ \"exclude\" === options.filterType) {\r\n                                options.filterValues.push(item.value)\r\n                            }\r\n                        }\r\n                    });\r\n                    updateSelectAllState(e, options.filterValues)\r\n                },\r\n                onContentReady: function(e) {\r\n                    var component = e.component;\r\n                    var items = component.option(\"items\");\r\n                    var selectedItems = [];\r\n                    (0, _iterator.each)(items, function() {\r\n                        if (this.selected) {\r\n                            selectedItems.push(this)\r\n                        }\r\n                    });\r\n                    component._selectedItemsUpdating = true;\r\n                    component.option(\"selectedItems\", selectedItems);\r\n                    component._selectedItemsUpdating = false;\r\n                    updateSelectAllState(e, options.filterValues)\r\n                }\r\n            }))\r\n        }\r\n    },\r\n    _renderCore: function() {\r\n        this.element().addClass(HEADER_FILTER_MENU_CLASS)\r\n    }\r\n});\r\nexports.HeaderFilterView = HeaderFilterView;\r\nvar allowHeaderFiltering = function(column) {\r\n    return (0, _type.isDefined)(column.allowHeaderFiltering) ? column.allowHeaderFiltering : column.allowFiltering\r\n};\r\nexports.allowHeaderFiltering = allowHeaderFiltering;\r\nvar headerFilterMixin = {\r\n    _applyColumnState: function(options) {\r\n        var $headerFilterIndicator;\r\n        var rootElement = options.rootElement;\r\n        var column = options.column;\r\n        if (\"headerFilter\" === options.name) {\r\n            rootElement.find(\".\" + HEADER_FILTER_CLASS).remove();\r\n            if (allowHeaderFiltering(column)) {\r\n                $headerFilterIndicator = this.callBase(options).toggleClass(\"dx-header-filter-empty\", this._isHeaderFilterEmpty(column));\r\n                if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n                    $headerFilterIndicator.attr(\"tabindex\", this.option(\"tabindex\") || 0)\r\n                }\r\n            }\r\n            return $headerFilterIndicator\r\n        }\r\n        return this.callBase(options)\r\n    },\r\n    _isHeaderFilterEmpty: function(column) {\r\n        return !column.filterValues || !column.filterValues.length\r\n    },\r\n    _getIndicatorClassName: function(name) {\r\n        if (\"headerFilter\" === name) {\r\n            return HEADER_FILTER_CLASS\r\n        }\r\n        return this.callBase(name)\r\n    },\r\n    _renderIndicator: function(options) {\r\n        var $container = options.container;\r\n        var $indicator = options.indicator;\r\n        if (\"headerFilter\" === options.name) {\r\n            var rtlEnabled = this.option(\"rtlEnabled\");\r\n            if ($container.children().length && (!rtlEnabled && \"right\" === options.columnAlignment || rtlEnabled && \"left\" === options.columnAlignment)) {\r\n                $container.prepend($indicator);\r\n                return\r\n            }\r\n        }\r\n        this.callBase(options)\r\n    },\r\n    optionChanged: function(args) {\r\n        if (\"headerFilter\" === args.name) {\r\n            var requireReady = \"columnHeadersView\" === this.name;\r\n            this._invalidate(requireReady, requireReady);\r\n            args.handled = true\r\n        } else {\r\n            this.callBase(args)\r\n        }\r\n    }\r\n};\r\nexports.headerFilterMixin = headerFilterMixin;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiListEditStrategy = _interopRequireDefault(require(\"./ui.list.edit.strategy.grouped\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiListEdit = _interopRequireDefault(require(\"./ui.list.edit.provider\"));\r\nvar _uiList = require(\"./ui.list.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar LIST_ITEM_SELECTED_CLASS = \"dx-list-item-selected\";\r\nvar LIST_ITEM_RESPONSE_WAIT_CLASS = \"dx-list-item-response-wait\";\r\nvar ListEdit = _uiList.ListBase.inherit({\r\n    _supportedKeys: function() {\r\n        var _this = this;\r\n        var that = this;\r\n        var parent = this.callBase();\r\n        var deleteFocusedItem = function(e) {\r\n            if (that.option(\"allowItemDeleting\")) {\r\n                e.preventDefault();\r\n                that.deleteItem(that.option(\"focusedElement\"))\r\n            }\r\n        };\r\n        var moveFocusedItem = function(e, moveUp) {\r\n            var editStrategy = _this._editStrategy;\r\n            var focusedElement = _this.option(\"focusedElement\");\r\n            var focusedItemIndex = editStrategy.getNormalizedIndex(focusedElement);\r\n            var isLastIndexFocused = focusedItemIndex === _this._getLastItemIndex();\r\n            if (isLastIndexFocused && _this._isDataSourceLoading()) {\r\n                return\r\n            }\r\n            if (e.shiftKey && that.option(\"itemDragging.allowReordering\")) {\r\n                var nextItemIndex = focusedItemIndex + (moveUp ? -1 : 1);\r\n                var $nextItem = editStrategy.getItemElement(nextItemIndex);\r\n                _this.reorderItem(focusedElement, $nextItem);\r\n                _this.scrollToItem(focusedElement);\r\n                e.preventDefault()\r\n            } else {\r\n                var editProvider = _this._editProvider;\r\n                var isInternalMoving = editProvider.handleKeyboardEvents(focusedItemIndex, moveUp);\r\n                if (!isInternalMoving) {\r\n                    moveUp ? parent.upArrow(e) : parent.downArrow(e)\r\n                }\r\n            }\r\n        };\r\n        var enter = function(e) {\r\n            if (!this._editProvider.handleEnterPressing()) {\r\n                parent.enter.apply(this, arguments)\r\n            }\r\n        };\r\n        var space = function(e) {\r\n            if (!this._editProvider.handleEnterPressing()) {\r\n                parent.space.apply(this, arguments)\r\n            }\r\n        };\r\n        return (0, _extend.extend)({}, parent, {\r\n            del: deleteFocusedItem,\r\n            upArrow: function(e) {\r\n                return moveFocusedItem(e, true)\r\n            },\r\n            downArrow: function(e) {\r\n                return moveFocusedItem(e)\r\n            },\r\n            enter: enter,\r\n            space: space\r\n        })\r\n    },\r\n    _updateSelection: function() {\r\n        this._editProvider.afterItemsRendered();\r\n        this.callBase()\r\n    },\r\n    _getLastItemIndex: function() {\r\n        return this._itemElements().length - 1\r\n    },\r\n    _refreshItemElements: function() {\r\n        this.callBase();\r\n        var excludedSelectors = this._editProvider.getExcludedItemSelectors();\r\n        if (excludedSelectors.length) {\r\n            this._itemElementsCache = this._itemElementsCache.not(excludedSelectors)\r\n        }\r\n    },\r\n    _isItemStrictEquals: function(item1, item2) {\r\n        var privateKey = item1 && item1.__dx_key__;\r\n        if (privateKey && !this.key() && this._selection.isItemSelected(privateKey)) {\r\n            return false\r\n        }\r\n        return this.callBase(item1, item2)\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            showSelectionControls: false,\r\n            selectionMode: \"none\",\r\n            selectAllMode: \"page\",\r\n            onSelectAllValueChanged: null,\r\n            selectAllText: _message.default.format(\"dxList-selectAll\"),\r\n            menuItems: [],\r\n            menuMode: \"context\",\r\n            allowItemDeleting: false,\r\n            itemDeleteMode: \"static\",\r\n            itemDragging: {}\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function(_device) {\r\n                return \"ios\" === _device.platform\r\n            },\r\n            options: {\r\n                menuMode: \"slide\",\r\n                itemDeleteMode: \"slideItem\"\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"android\"\r\n            },\r\n            options: {\r\n                itemDeleteMode: \"swipe\"\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initEditProvider()\r\n    },\r\n    _initDataSource: function() {\r\n        this.callBase();\r\n        if (!this._isPageSelectAll()) {\r\n            this._dataSource && this._dataSource.requireTotalCount(true)\r\n        }\r\n    },\r\n    _isPageSelectAll: function() {\r\n        return \"page\" === this.option(\"selectAllMode\")\r\n    },\r\n    _initEditProvider: function() {\r\n        this._editProvider = new _uiListEdit.default(this)\r\n    },\r\n    _disposeEditProvider: function() {\r\n        if (this._editProvider) {\r\n            this._editProvider.dispose()\r\n        }\r\n    },\r\n    _refreshEditProvider: function() {\r\n        this._disposeEditProvider();\r\n        this._initEditProvider()\r\n    },\r\n    _initEditStrategy: function() {\r\n        if (this.option(\"grouped\")) {\r\n            this._editStrategy = new _uiListEditStrategy.default(this)\r\n        } else {\r\n            this.callBase()\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this._refreshEditProvider();\r\n        this.callBase()\r\n    },\r\n    _renderItems: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._editProvider.afterItemsRendered()\r\n    },\r\n    _selectedItemClass: function() {\r\n        return LIST_ITEM_SELECTED_CLASS\r\n    },\r\n    _itemResponseWaitClass: function() {\r\n        return LIST_ITEM_RESPONSE_WAIT_CLASS\r\n    },\r\n    _itemClickHandler: function(e) {\r\n        var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n        if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            return\r\n        }\r\n        var handledByEditProvider = this._editProvider.handleClick($itemElement, e);\r\n        if (handledByEditProvider) {\r\n            return\r\n        }\r\n        this._saveSelectionChangeEvent(e);\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _shouldFireContextMenuEvent: function() {\r\n        return this.callBase.apply(this, arguments) || this._editProvider.contextMenuHandlerExists()\r\n    },\r\n    _itemHoldHandler: function(e) {\r\n        var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n        if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            return\r\n        }\r\n        var handledByEditProvider = (0, _index.isTouchEvent)(e) && this._editProvider.handleContextMenu($itemElement, e);\r\n        if (handledByEditProvider) {\r\n            e.handledByEditProvider = true;\r\n            return\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _itemContextMenuHandler: function(e) {\r\n        var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n        if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n            return\r\n        }\r\n        var handledByEditProvider = !e.handledByEditProvider && this._editProvider.handleContextMenu($itemElement, e);\r\n        if (handledByEditProvider) {\r\n            e.preventDefault();\r\n            return\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _postprocessRenderItem: function(args) {\r\n        this.callBase.apply(this, arguments);\r\n        this._editProvider.modifyItemElement(args)\r\n    },\r\n    _clean: function() {\r\n        this._disposeEditProvider();\r\n        this.callBase()\r\n    },\r\n    focusListItem: function(index) {\r\n        var $item = this._editStrategy.getItemElement(index);\r\n        this.option(\"focusedElement\", $item);\r\n        this.focus();\r\n        this.scrollToItem(this.option(\"focusedElement\"))\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"selectAllMode\":\r\n                this._initDataSource();\r\n                this._dataSource.pageIndex(0);\r\n                this._dataSource.load();\r\n                break;\r\n            case \"grouped\":\r\n                this._clearSelectedItems();\r\n                delete this._renderingGroupIndex;\r\n                this._initEditStrategy();\r\n                this.callBase(args);\r\n                break;\r\n            case \"showSelectionControls\":\r\n            case \"menuItems\":\r\n            case \"menuMode\":\r\n            case \"allowItemDeleting\":\r\n            case \"itemDeleteMode\":\r\n            case \"itemDragging\":\r\n            case \"selectAllText\":\r\n                this._invalidate();\r\n                break;\r\n            case \"onSelectAllValueChanged\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    selectAll: function() {\r\n        return this._selection.selectAll(this._isPageSelectAll())\r\n    },\r\n    unselectAll: function() {\r\n        return this._selection.deselectAll(this._isPageSelectAll())\r\n    },\r\n    isSelectAll: function() {\r\n        return this._selection.getSelectAllState(this._isPageSelectAll())\r\n    },\r\n    getFlatIndexByItemElement: function(itemElement) {\r\n        return this._itemElements().index(itemElement)\r\n    },\r\n    getItemElementByFlatIndex: function(flatIndex) {\r\n        var $itemElements = this._itemElements();\r\n        if (flatIndex < 0 || flatIndex >= $itemElements.length) {\r\n            return (0, _renderer.default)()\r\n        }\r\n        return $itemElements.eq(flatIndex)\r\n    },\r\n    getItemByIndex: function(index) {\r\n        return this._editStrategy.getItemDataByIndex(index)\r\n    }\r\n});\r\nvar _default = ListEdit;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.base\"));\r\nrequire(\"./ui.tree_list.state_storing\");\r\nrequire(\"./ui.tree_list.column_chooser\");\r\nrequire(\"./ui.tree_list.master_detail\");\r\nrequire(\"./ui.tree_list.editing\");\r\nrequire(\"./ui.tree_list.validating\");\r\nrequire(\"./ui.tree_list.virtual_scrolling\");\r\nrequire(\"./ui.tree_list.filter_row\");\r\nrequire(\"./ui.tree_list.header_filter\");\r\nrequire(\"./ui.tree_list.filter_sync\");\r\nrequire(\"./ui.tree_list.filter_builder\");\r\nrequire(\"./ui.tree_list.filter_panel\");\r\nrequire(\"./ui.tree_list.pager\");\r\nrequire(\"./ui.tree_list.columns_resizing_reordering\");\r\nrequire(\"./ui.tree_list.column_fixing\");\r\nrequire(\"./ui.tree_list.adaptivity\");\r\nrequire(\"./ui.tree_list.selection\");\r\nrequire(\"./ui.tree_list.search\");\r\nrequire(\"./ui.tree_list.keyboard_navigation\");\r\nrequire(\"./ui.tree_list.virtual_columns\");\r\nrequire(\"./ui.tree_list.focus\");\r\nrequire(\"./ui.tree_list.row_dragging\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _uiTree_list.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/message.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _dependency_injector = _interopRequireDefault(require(\"../core/utils/dependency_injector\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _string = require(\"../core/utils/string\");\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _core = _interopRequireDefault(require(\"./core\"));\r\nvar _default_messages = _interopRequireDefault(require(\"./default_messages\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar baseDictionary = (0, _extend.extend)(true, {}, _default_messages.default);\r\nvar getDataByLocale = function(localeData, locale) {\r\n    return localeData[locale] || {}\r\n};\r\nvar newMessages = {};\r\nvar messageLocalization = (0, _dependency_injector.default)({\r\n    engine: function() {\r\n        return \"base\"\r\n    },\r\n    _dictionary: baseDictionary,\r\n    load: function(messages) {\r\n        (0, _extend.extend)(true, this._dictionary, messages)\r\n    },\r\n    _localizablePrefix: \"@\",\r\n    setup: function(localizablePrefix) {\r\n        this._localizablePrefix = localizablePrefix\r\n    },\r\n    localizeString: function(text) {\r\n        var that = this;\r\n        var regex = new RegExp(\"(^|[^a-zA-Z_0-9\" + that._localizablePrefix + \"-]+)(\" + that._localizablePrefix + \"{1,2})([a-zA-Z_0-9-]+)\", \"g\");\r\n        var escapeString = that._localizablePrefix + that._localizablePrefix;\r\n        return text.replace(regex, function(str, prefix, escape, localizationKey) {\r\n            var defaultResult = that._localizablePrefix + localizationKey;\r\n            var result;\r\n            if (escape !== escapeString) {\r\n                result = that.format(localizationKey)\r\n            }\r\n            if (!result) {\r\n                newMessages[localizationKey] = (0, _inflector.humanize)(localizationKey)\r\n            }\r\n            return prefix + (result || defaultResult)\r\n        })\r\n    },\r\n    localizeNode: function(node) {\r\n        var that = this;\r\n        (0, _renderer.default)(node).each(function(index, nodeItem) {\r\n            if (!nodeItem.nodeType) {\r\n                return\r\n            }\r\n            if (3 === nodeItem.nodeType) {\r\n                nodeItem.nodeValue = that.localizeString(nodeItem.nodeValue)\r\n            } else {\r\n                if (!(0, _renderer.default)(nodeItem).is(\"iframe\")) {\r\n                    (0, _iterator.each)(nodeItem.attributes || [], function(index, attr) {\r\n                        if (\"string\" === typeof attr.value) {\r\n                            var localizedValue = that.localizeString(attr.value);\r\n                            if (attr.value !== localizedValue) {\r\n                                attr.value = localizedValue\r\n                            }\r\n                        }\r\n                    });\r\n                    (0, _renderer.default)(nodeItem).contents().each(function(index, node) {\r\n                        that.localizeNode(node)\r\n                    })\r\n                }\r\n            }\r\n        })\r\n    },\r\n    getMessagesByLocales: function() {\r\n        return this._dictionary\r\n    },\r\n    getDictionary: function(onlyNew) {\r\n        if (onlyNew) {\r\n            return newMessages\r\n        }\r\n        return (0, _extend.extend)({}, newMessages, this.getMessagesByLocales()[_core.default.locale()])\r\n    },\r\n    getFormatter: function(key) {\r\n        return this._getFormatterBase(key) || this._getFormatterBase(key, \"en\")\r\n    },\r\n    _getFormatterBase: function(key, locale) {\r\n        var _this = this;\r\n        var message = _core.default.getValueByClosestLocale(function(locale) {\r\n            return getDataByLocale(_this._dictionary, locale)[key]\r\n        });\r\n        if (message) {\r\n            return function() {\r\n                var args = 1 === arguments.length && Array.isArray(arguments[0]) ? arguments[0].slice(0) : Array.prototype.slice.call(arguments, 0);\r\n                args.unshift(message);\r\n                return _string.format.apply(this, args)\r\n            }\r\n        }\r\n    },\r\n    format: function(key) {\r\n        var formatter = this.getFormatter(key);\r\n        var values = Array.prototype.slice.call(arguments, 1);\r\n        return formatter && formatter.apply(this, values) || \"\"\r\n    }\r\n});\r\nvar _default = messageLocalization;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/formats/image.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar ExtImage = {};\r\nif (_devextremeQuill.default) {\r\n    var Image = _devextremeQuill.default.import(\"formats/image\");\r\n    ExtImage = function(_Image) {\r\n        _inherits(ExtImage, _Image);\r\n        var _super = _createSuper(ExtImage);\r\n\r\n        function ExtImage() {\r\n            _classCallCheck(this, ExtImage);\r\n            return _super.apply(this, arguments)\r\n        }\r\n        _createClass(ExtImage, [{\r\n            key: \"formats\",\r\n            value: function formats() {\r\n                var formats = _get(_getPrototypeOf(ExtImage.prototype), \"formats\", this).call(this);\r\n                var floatValue = this.domNode.style.float;\r\n                if (floatValue) {\r\n                    formats.float = floatValue\r\n                }\r\n                return formats\r\n            }\r\n        }, {\r\n            key: \"format\",\r\n            value: function(name, value) {\r\n                if (\"float\" === name) {\r\n                    this.domNode.style[name] = value\r\n                } else {\r\n                    _get(_getPrototypeOf(ExtImage.prototype), \"format\", this).call(this, name, value)\r\n                }\r\n            }\r\n        }], [{\r\n            key: \"create\",\r\n            value: function(data) {\r\n                var SRC = data && data.src || data;\r\n                var node = _get(_getPrototypeOf(ExtImage), \"create\", this).call(this, SRC);\r\n                if ((0, _type.isObject)(data)) {\r\n                    var setAttribute = function(attr, value) {\r\n                        data[attr] && node.setAttribute(attr, value)\r\n                    };\r\n                    setAttribute(\"alt\", data.alt);\r\n                    setAttribute(\"width\", data.width);\r\n                    setAttribute(\"height\", data.height)\r\n                }\r\n                return node\r\n            }\r\n        }, {\r\n            key: \"formats\",\r\n            value: function formats(domNode) {\r\n                var formats = _get(_getPrototypeOf(ExtImage), \"formats\", this).call(this, domNode);\r\n                formats.imageSrc = domNode.getAttribute(\"src\");\r\n                return formats\r\n            }\r\n        }, {\r\n            key: \"value\",\r\n            value: function(domNode) {\r\n                return {\r\n                    src: domNode.getAttribute(\"src\"),\r\n                    width: domNode.getAttribute(\"width\"),\r\n                    height: domNode.getAttribute(\"height\"),\r\n                    alt: domNode.getAttribute(\"alt\")\r\n                }\r\n            }\r\n        }]);\r\n        return ExtImage\r\n    }(Image);\r\n    ExtImage.blotName = \"extendedImage\"\r\n}\r\nvar _default = ExtImage;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/funnel/tooltip.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\n\r\nfunction getCoords(figureCoords, renderer) {\r\n    var offset = renderer.getRootOffset();\r\n    return [(figureCoords[0] + figureCoords[2]) / 2 + offset.left, (figureCoords[1] + figureCoords[5]) / 2 + offset.top]\r\n}\r\nvar plugin = {\r\n    name: \"funnel-tooltip\",\r\n    init: _common.noop,\r\n    dispose: _common.noop,\r\n    extenders: {\r\n        _buildNodes: function() {\r\n            this.hideTooltip()\r\n        },\r\n        _change_TILING: function() {\r\n            if (this._tooltipIndex >= 0) {\r\n                this._moveTooltip(this._items[this._tooltipIndex])\r\n            }\r\n        }\r\n    },\r\n    members: {\r\n        hideTooltip: function() {\r\n            if (this._tooltipIndex >= 0) {\r\n                this._tooltipIndex = -1;\r\n                this._tooltip.hide()\r\n            }\r\n        },\r\n        _moveTooltip: function(item, coords) {\r\n            var xy = coords || item.coords && getCoords(item.coords, this._renderer) || [-1e3, -1e3];\r\n            this._tooltip.move(xy[0], xy[1], 0)\r\n        },\r\n        _showTooltip: function(index, coords) {\r\n            var that = this;\r\n            var tooltip = that._tooltip;\r\n            var item = that._items[index];\r\n            if (that._tooltipIndex === index) {\r\n                that._moveTooltip(item, coords);\r\n                return\r\n            }\r\n            var callback = function(result) {\r\n                if (result) {\r\n                    that._moveTooltip(item, coords)\r\n                } else {\r\n                    tooltip.hide()\r\n                }\r\n                that._tooltipIndex = result ? index : -1\r\n            };\r\n            callback(tooltip.show({\r\n                value: item.value,\r\n                valueText: tooltip.formatValue(item.value),\r\n                percentText: tooltip.formatValue(item.percent, \"percent\"),\r\n                percent: item.percent,\r\n                item: item\r\n            }, {\r\n                x: 0,\r\n                y: 0,\r\n                offset: 0\r\n            }, {\r\n                item: item\r\n            }, void 0, callback))\r\n        }\r\n    },\r\n    customize: function(constructor) {\r\n        constructor.addPlugin(_tooltip.plugin)\r\n    }\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.editing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nrequire(\"./ui.data_grid.editor_factory\");\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.editing\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid2.default.registerModule(\"editing\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                _changeRowExpandCore: function(key) {\r\n                    var editingController = this._editingController;\r\n                    if (Array.isArray(key)) {\r\n                        editingController && editingController.refresh()\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        }\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.filter_sync.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_sync\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"filterSync\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (data/proxy_url_formatter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _call_once = _interopRequireDefault(require(\"../core/utils/call_once\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DXPROXY_HOST = \"dxproxy.devexpress.com:8000\";\r\nvar urlMapping = {};\r\nvar getUrlParser = (0, _call_once.default)(function() {\r\n    var a = _dom_adapter.default.createElement(\"a\");\r\n    var props = [\"protocol\", \"hostname\", \"port\", \"pathname\", \"search\", \"hash\"];\r\n    var normalizePath = function(value) {\r\n        if (\"/\" !== value.charAt(0)) {\r\n            value = \"/\" + value\r\n        }\r\n        return value\r\n    };\r\n    return function(url) {\r\n        a.href = url;\r\n        var result = {};\r\n        (0, _iterator.each)(props, function() {\r\n            result[this] = a[this]\r\n        });\r\n        result.pathname = normalizePath(result.pathname);\r\n        return result\r\n    }\r\n});\r\nvar parseUrl = function(url) {\r\n    var urlParser = getUrlParser();\r\n    return urlParser(url)\r\n};\r\nvar extractProxyAppId = function() {\r\n    return window.location.pathname.split(\"/\")[1]\r\n};\r\nvar _default = {\r\n    parseUrl: parseUrl,\r\n    isProxyUsed: function() {\r\n        return window.location.host === DXPROXY_HOST\r\n    },\r\n    formatProxyUrl: function(localUrl) {\r\n        var urlData = parseUrl(localUrl);\r\n        if (!/^(localhost$|127\\.)/i.test(urlData.hostname)) {\r\n            return localUrl\r\n        }\r\n        var proxyUrlPart = DXPROXY_HOST + \"/\" + extractProxyAppId() + \"_\" + urlData.port;\r\n        urlMapping[proxyUrlPart] = urlData.hostname + \":\" + urlData.port;\r\n        var resultUrl = \"http://\" + proxyUrlPart + urlData.pathname + urlData.search;\r\n        return resultUrl\r\n    },\r\n    formatLocalUrl: function(proxyUrl) {\r\n        if (proxyUrl.indexOf(DXPROXY_HOST) < 0) {\r\n            return proxyUrl\r\n        }\r\n        var resultUrl = proxyUrl;\r\n        for (var proxyUrlPart in urlMapping) {\r\n            if (Object.prototype.hasOwnProperty.call(urlMapping, proxyUrlPart)) {\r\n                if (proxyUrl.indexOf(proxyUrlPart) >= 0) {\r\n                    resultUrl = proxyUrl.replace(proxyUrlPart, urlMapping[proxyUrlPart]);\r\n                    break\r\n                }\r\n            }\r\n        }\r\n        return resultUrl\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.sorting.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"sorting\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/scheduler.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./scheduler/ui.scheduler\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.headers_area.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.VerticalHeadersArea = exports.HorizontalHeadersArea = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.area_item\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PIVOTGRID_AREA_CLASS = \"dx-pivotgrid-area\";\r\nvar PIVOTGRID_AREA_COLUMN_CLASS = \"dx-pivotgrid-horizontal-headers\";\r\nvar PIVOTGRID_AREA_ROW_CLASS = \"dx-pivotgrid-vertical-headers\";\r\nvar PIVOTGRID_TOTAL_CLASS = \"dx-total\";\r\nvar PIVOTGRID_GRAND_TOTAL_CLASS = \"dx-grandtotal\";\r\nvar PIVOTGRID_ROW_TOTAL_CLASS = \"dx-row-total\";\r\nvar PIVOTGRID_EXPANDED_CLASS = \"dx-pivotgrid-expanded\";\r\nvar PIVOTGRID_COLLAPSED_CLASS = \"dx-pivotgrid-collapsed\";\r\nvar PIVOTGRID_LAST_CELL_CLASS = \"dx-last-cell\";\r\nvar PIVOTGRID_VERTICAL_SCROLL_CLASS = \"dx-vertical-scroll\";\r\nvar PIVOTGRID_EXPAND_BORDER = \"dx-expand-border\";\r\n\r\nfunction getCellPath(tableElement, cell) {\r\n    if (cell) {\r\n        var data = tableElement.data().data;\r\n        var rowIndex = cell.parentNode.rowIndex;\r\n        var cellIndex = cell.cellIndex;\r\n        return data[rowIndex] && data[rowIndex][cellIndex] && data[rowIndex][cellIndex].path\r\n    }\r\n}\r\nvar HorizontalHeadersArea = _uiPivot_grid.AreaItem.inherit({\r\n    _getAreaName: function() {\r\n        return \"column\"\r\n    },\r\n    _getAreaClassName: function() {\r\n        return PIVOTGRID_AREA_COLUMN_CLASS\r\n    },\r\n    _createGroupElement: function() {\r\n        return (0, _renderer.default)(\"<div>\").addClass(this._getAreaClassName()).addClass(PIVOTGRID_AREA_CLASS)\r\n    },\r\n    _applyCustomStyles: function(options) {\r\n        var cssArray = options.cssArray;\r\n        var cell = options.cell;\r\n        var rowsCount = options.rowsCount;\r\n        var classArray = options.classArray;\r\n        if (options.cellIndex === options.cellsCount - 1) {\r\n            cssArray.push((options.rtlEnabled ? \"border-left:\" : \"border-right:\") + \"0px\")\r\n        }\r\n        if (cell.rowspan === rowsCount - options.rowIndex || options.rowIndex + 1 === rowsCount) {\r\n            cssArray.push(\"border-bottom-width:0px\")\r\n        }\r\n        if (\"T\" === cell.type || \"GT\" === cell.type) {\r\n            classArray.push(PIVOTGRID_ROW_TOTAL_CLASS)\r\n        }\r\n        if (\"T\" === options.cell.type) {\r\n            classArray.push(PIVOTGRID_TOTAL_CLASS)\r\n        }\r\n        if (\"GT\" === options.cell.type) {\r\n            classArray.push(PIVOTGRID_GRAND_TOTAL_CLASS)\r\n        }\r\n        if ((0, _type.isDefined)(cell.expanded)) {\r\n            classArray.push(cell.expanded ? PIVOTGRID_EXPANDED_CLASS : PIVOTGRID_COLLAPSED_CLASS)\r\n        }\r\n        this.callBase(options)\r\n    },\r\n    _getMainElementMarkup: function() {\r\n        return \"<thead class='\" + this._getAreaClassName() + \"'>\"\r\n    },\r\n    _getCloseMainElementMarkup: function() {\r\n        return \"</thead>\"\r\n    },\r\n    setVirtualContentParams: function(params) {\r\n        this.callBase(params);\r\n        this._setTableCss({\r\n            left: params.left,\r\n            top: 0\r\n        });\r\n        this._virtualContentWidth = params.width\r\n    },\r\n    hasScroll: function() {\r\n        var tableWidth = this._virtualContent ? this._virtualContentWidth : this._tableWidth;\r\n        if (this._groupWidth && tableWidth) {\r\n            return tableWidth - this._groupWidth >= 1\r\n        }\r\n        return false\r\n    },\r\n    processScroll: function() {\r\n        if (!this._getScrollable()) {\r\n            this._groupElement.dxScrollable({\r\n                useNative: false,\r\n                useSimulatedScrollbar: false,\r\n                showScrollbar: false,\r\n                bounceEnabled: false,\r\n                direction: \"horizontal\",\r\n                updateManually: true\r\n            })\r\n        }\r\n    },\r\n    processScrollBarSpacing: function(scrollBarWidth) {\r\n        var that = this;\r\n        var groupAlignment = that.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n        if (that._groupWidth) {\r\n            that.groupWidth(that._groupWidth - scrollBarWidth)\r\n        }\r\n        if (that._scrollBarWidth) {\r\n            that._groupElement.next().remove()\r\n        }\r\n        that._groupElement.toggleClass(PIVOTGRID_VERTICAL_SCROLL_CLASS, scrollBarWidth > 0);\r\n        that._groupElement.css(\"float\", groupAlignment).width(that._groupHeight);\r\n        that._scrollBarWidth = scrollBarWidth\r\n    },\r\n    ctor: function(component) {\r\n        this.callBase(component);\r\n        this._scrollBarWidth = 0\r\n    },\r\n    getScrollPath: function(offset) {\r\n        var tableElement = this.tableElement();\r\n        var cell;\r\n        offset -= parseInt(tableElement[0].style.left, 10) || 0;\r\n        (0, _iterator.each)(tableElement.find(\"td\"), function(_, td) {\r\n            if (1 === td.colSpan && td.offsetLeft <= offset && td.offsetWidth + td.offsetLeft > offset) {\r\n                cell = td;\r\n                return false\r\n            }\r\n        });\r\n        return getCellPath(tableElement, cell)\r\n    },\r\n    _moveFakeTable: function(scrollPos) {\r\n        this._moveFakeTableHorizontally(scrollPos);\r\n        this.callBase()\r\n    }\r\n});\r\nexports.HorizontalHeadersArea = HorizontalHeadersArea;\r\nvar VerticalHeadersArea = HorizontalHeadersArea.inherit({\r\n    _getAreaClassName: function() {\r\n        return PIVOTGRID_AREA_ROW_CLASS\r\n    },\r\n    _applyCustomStyles: function(options) {\r\n        this.callBase(options);\r\n        if (options.cellIndex === options.cellsCount - 1) {\r\n            options.classArray.push(PIVOTGRID_LAST_CELL_CLASS)\r\n        }\r\n        if (options.rowIndex === options.rowsCount - 1) {\r\n            options.cssArray.push(\"border-bottom: 0px\")\r\n        }\r\n        if (options.cell.isWhiteSpace) {\r\n            options.classArray.push(\"dx-white-space-column\")\r\n        }\r\n    },\r\n    _getAreaName: function() {\r\n        return \"row\"\r\n    },\r\n    setVirtualContentParams: function(params) {\r\n        this.callBase(params);\r\n        this._setTableCss({\r\n            top: params.top,\r\n            left: 0\r\n        });\r\n        this._virtualContentHeight = params.height\r\n    },\r\n    hasScroll: function() {\r\n        var tableHeight = this._virtualContent ? this._virtualContentHeight : this._tableHeight;\r\n        if (this._groupHeight && tableHeight) {\r\n            return tableHeight - this._groupHeight >= 1\r\n        }\r\n        return false\r\n    },\r\n    processScroll: function() {\r\n        if (!this._getScrollable()) {\r\n            this._groupElement.dxScrollable({\r\n                useNative: false,\r\n                useSimulatedScrollbar: false,\r\n                showScrollbar: false,\r\n                bounceEnabled: false,\r\n                direction: \"vertical\",\r\n                updateManually: true\r\n            })\r\n        }\r\n    },\r\n    processScrollBarSpacing: function(scrollBarWidth) {\r\n        var that = this;\r\n        if (that._groupHeight) {\r\n            that.groupHeight(that._groupHeight - scrollBarWidth)\r\n        }\r\n        if (that._scrollBarWidth) {\r\n            that._groupElement.next().remove()\r\n        }\r\n        if (scrollBarWidth) {\r\n            that._groupElement.after((0, _renderer.default)(\"<div>\").width(\"100%\").height(scrollBarWidth - 1))\r\n        }\r\n        that._scrollBarWidth = scrollBarWidth\r\n    },\r\n    getScrollPath: function(offset) {\r\n        var tableElement = this.tableElement();\r\n        var cell;\r\n        offset -= parseInt(tableElement[0].style.top, 10) || 0;\r\n        (0, _iterator.each)(tableElement.find(\"tr\"), function(_, tr) {\r\n            var td = tr.childNodes[tr.childNodes.length - 1];\r\n            if (td && 1 === td.rowSpan && td.offsetTop <= offset && td.offsetHeight + td.offsetTop > offset) {\r\n                cell = td;\r\n                return false\r\n            }\r\n        });\r\n        return getCellPath(tableElement, cell)\r\n    },\r\n    _moveFakeTable: function(scrollPos) {\r\n        this._moveFakeTableTop(scrollPos);\r\n        this.callBase()\r\n    },\r\n    _getRowClassNames: function(rowIndex, cell, rowClassNames) {\r\n        if (0 !== rowIndex & cell.expanded && (0, _array.inArray)(PIVOTGRID_EXPAND_BORDER, rowClassNames) === -1) {\r\n            rowClassNames.push(PIVOTGRID_EXPAND_BORDER)\r\n        }\r\n    },\r\n    _getMainElementMarkup: function() {\r\n        return \"<tbody class='\" + this._getAreaClassName() + \"'>\"\r\n    },\r\n    _getCloseMainElementMarkup: function() {\r\n        return \"</tbody>\"\r\n    },\r\n    updateColspans: function(columnCount) {\r\n        var rows = this.tableElement()[0].rows;\r\n        var columnOffset = 0;\r\n        var columnOffsetResetIndexes = [];\r\n        if (this.getColumnsCount() - columnCount > 0) {\r\n            return\r\n        }\r\n        for (var i = 0; i < rows.length; i++) {\r\n            for (var j = 0; j < rows[i].cells.length; j++) {\r\n                var cell = rows[i].cells[j];\r\n                var rowSpan = cell.rowSpan;\r\n                if (columnOffsetResetIndexes[i]) {\r\n                    columnOffset -= columnOffsetResetIndexes[i];\r\n                    columnOffsetResetIndexes[i] = 0\r\n                }\r\n                var diff = columnCount - (columnOffset + cell.colSpan);\r\n                if (j === rows[i].cells.length - 1 && diff > 0) {\r\n                    cell.colSpan = cell.colSpan + diff\r\n                }\r\n                columnOffsetResetIndexes[i + rowSpan] = (columnOffsetResetIndexes[i + rowSpan] || 0) + cell.colSpan;\r\n                columnOffset += cell.colSpan\r\n            }\r\n        }\r\n    }\r\n});\r\nexports.VerticalHeadersArea = VerticalHeadersArea;\r\n","/**\r\n * DevExtreme (events/core/events_engine.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _event_registrator_callbacks = _interopRequireDefault(require(\"./event_registrator_callbacks\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _dependency_injector = _interopRequireDefault(require(\"../../core/utils/dependency_injector\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\nvar _weak_map = _interopRequireDefault(require(\"../../core/polyfills/weak_map\"));\r\nvar _hook_touch_props = _interopRequireDefault(require(\"../../events/core/hook_touch_props\"));\r\nvar _call_once = _interopRequireDefault(require(\"../../core/utils/call_once\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar EMPTY_EVENT_NAME = \"dxEmptyEventType\";\r\nvar NATIVE_EVENTS_TO_SUBSCRIBE = {\r\n    mouseenter: \"mouseover\",\r\n    mouseleave: \"mouseout\",\r\n    pointerenter: \"pointerover\",\r\n    pointerleave: \"pointerout\"\r\n};\r\nvar NATIVE_EVENTS_TO_TRIGGER = {\r\n    focusin: \"focus\",\r\n    focusout: \"blur\"\r\n};\r\nvar NO_BUBBLE_EVENTS = [\"blur\", \"focus\", \"load\"];\r\nvar forcePassiveFalseEventNames = [\"touchmove\", \"wheel\", \"mousewheel\", \"touchstart\"];\r\n\r\nfunction matchesSafe(target, selector) {\r\n    return !(0, _type.isWindow)(target) && \"#document\" !== target.nodeName && _dom_adapter.default.elementMatches(target, selector)\r\n}\r\nvar elementDataMap = new _weak_map.default;\r\nvar guid = 0;\r\nvar skipEvent;\r\nvar special = function() {\r\n    var specialData = {};\r\n    _event_registrator_callbacks.default.add(function(eventName, eventObject) {\r\n        specialData[eventName] = eventObject\r\n    });\r\n    return {\r\n        getField: function(eventName, field) {\r\n            return specialData[eventName] && specialData[eventName][field]\r\n        },\r\n        callMethod: function(eventName, methodName, context, args) {\r\n            return specialData[eventName] && specialData[eventName][methodName] && specialData[eventName][methodName].apply(context, args)\r\n        }\r\n    }\r\n}();\r\nvar eventsEngine = (0, _dependency_injector.default)({\r\n    on: getHandler(normalizeOnArguments(iterate(function(element, eventName, selector, data, handler) {\r\n        var handlersController = getHandlersController(element, eventName);\r\n        handlersController.addHandler(handler, selector, data)\r\n    }))),\r\n    one: getHandler(normalizeOnArguments(function(element, eventName, selector, data, handler) {\r\n        var oneTimeHandler = function oneTimeHandler() {\r\n            eventsEngine.off(element, eventName, selector, oneTimeHandler);\r\n            handler.apply(this, arguments)\r\n        };\r\n        eventsEngine.on(element, eventName, selector, data, oneTimeHandler)\r\n    })),\r\n    off: getHandler(normalizeOffArguments(iterate(function(element, eventName, selector, handler) {\r\n        var handlersController = getHandlersController(element, eventName);\r\n        handlersController.removeHandler(handler, selector)\r\n    }))),\r\n    trigger: getHandler(normalizeTriggerArguments(function(element, event, extraParameters) {\r\n        var eventName = event.type;\r\n        var handlersController = getHandlersController(element, event.type);\r\n        special.callMethod(eventName, \"trigger\", element, [event, extraParameters]);\r\n        handlersController.callHandlers(event, extraParameters);\r\n        var noBubble = special.getField(eventName, \"noBubble\") || event.isPropagationStopped() || NO_BUBBLE_EVENTS.indexOf(eventName) !== -1;\r\n        if (!noBubble) {\r\n            var parents = [];\r\n            var getParents = function getParents(element) {\r\n                var parent = element.parentNode;\r\n                if (parent) {\r\n                    parents.push(parent);\r\n                    getParents(parent)\r\n                }\r\n            };\r\n            getParents(element);\r\n            parents.push(window);\r\n            var i = 0;\r\n            while (parents[i] && !event.isPropagationStopped()) {\r\n                var parentDataByEvent = getHandlersController(parents[i], event.type);\r\n                parentDataByEvent.callHandlers((0, _extend.extend)(event, {\r\n                    currentTarget: parents[i]\r\n                }), extraParameters);\r\n                i++\r\n            }\r\n        }\r\n        if (element.nodeType || (0, _type.isWindow)(element)) {\r\n            special.callMethod(eventName, \"_default\", element, [event, extraParameters]);\r\n            callNativeMethod(eventName, element)\r\n        }\r\n    })),\r\n    triggerHandler: getHandler(normalizeTriggerArguments(function(element, event, extraParameters) {\r\n        var handlersController = getHandlersController(element, event.type);\r\n        handlersController.callHandlers(event, extraParameters)\r\n    }))\r\n});\r\n\r\nfunction applyForEach(args, method) {\r\n    var element = args[0];\r\n    if (!element) {\r\n        return\r\n    }\r\n    if (_dom_adapter.default.isNode(element) || (0, _type.isWindow)(element)) {\r\n        method.apply(eventsEngine, args)\r\n    } else {\r\n        if (!(0, _type.isString)(element) && \"length\" in element) {\r\n            var itemArgs = Array.prototype.slice.call(args, 0);\r\n            Array.prototype.forEach.call(element, function(itemElement) {\r\n                itemArgs[0] = itemElement;\r\n                applyForEach(itemArgs, method)\r\n            })\r\n        } else {\r\n            throw _errors.default.Error(\"E0025\")\r\n        }\r\n    }\r\n}\r\n\r\nfunction getHandler(method) {\r\n    return function() {\r\n        applyForEach(arguments, method)\r\n    }\r\n}\r\n\r\nfunction detectPassiveEventHandlersSupport() {\r\n    var isSupported = false;\r\n    try {\r\n        var options = Object.defineProperty({}, \"passive\", {\r\n            get: function() {\r\n                isSupported = true;\r\n                return true\r\n            }\r\n        });\r\n        window.addEventListener(\"test\", null, options)\r\n    } catch (e) {}\r\n    return isSupported\r\n}\r\nvar passiveEventHandlersSupported = (0, _call_once.default)(detectPassiveEventHandlersSupport);\r\nvar contains = function contains(container, element) {\r\n    if ((0, _type.isWindow)(container)) {\r\n        return contains(container.document, element)\r\n    }\r\n    return container.contains ? container.contains(element) : !!(element.compareDocumentPosition(container) & element.DOCUMENT_POSITION_CONTAINS)\r\n};\r\n\r\nfunction getHandlersController(element, eventName) {\r\n    var elementData = elementDataMap.get(element);\r\n    eventName = eventName || \"\";\r\n    var eventNameParts = eventName.split(\".\");\r\n    var namespaces = eventNameParts.slice(1);\r\n    var eventNameIsDefined = !!eventNameParts[0];\r\n    eventName = eventNameParts[0] || EMPTY_EVENT_NAME;\r\n    if (!elementData) {\r\n        elementData = {};\r\n        elementDataMap.set(element, elementData)\r\n    }\r\n    if (!elementData[eventName]) {\r\n        elementData[eventName] = {\r\n            handleObjects: [],\r\n            nativeHandler: null\r\n        }\r\n    }\r\n    var eventData = elementData[eventName];\r\n    return {\r\n        addHandler: function(handler, selector, data) {\r\n            var callHandler = function(e, extraParameters) {\r\n                var handlerArgs = [e];\r\n                var target = e.currentTarget;\r\n                var relatedTarget = e.relatedTarget;\r\n                var secondaryTargetIsInside;\r\n                var result;\r\n                if (eventName in NATIVE_EVENTS_TO_SUBSCRIBE) {\r\n                    secondaryTargetIsInside = relatedTarget && target && (relatedTarget === target || contains(target, relatedTarget))\r\n                }\r\n                if (void 0 !== extraParameters) {\r\n                    handlerArgs.push(extraParameters)\r\n                }\r\n                special.callMethod(eventName, \"handle\", element, [e, data]);\r\n                if (!secondaryTargetIsInside) {\r\n                    result = handler.apply(target, handlerArgs)\r\n                }\r\n                if (false === result) {\r\n                    e.preventDefault();\r\n                    e.stopPropagation()\r\n                }\r\n            };\r\n            var wrappedHandler = function(e, extraParameters) {\r\n                if (skipEvent && e.type === skipEvent) {\r\n                    return\r\n                }\r\n                e.data = data;\r\n                e.delegateTarget = element;\r\n                if (selector) {\r\n                    var currentTarget = e.target;\r\n                    while (currentTarget && currentTarget !== element) {\r\n                        if (matchesSafe(currentTarget, selector)) {\r\n                            e.currentTarget = currentTarget;\r\n                            callHandler(e, extraParameters)\r\n                        }\r\n                        currentTarget = currentTarget.parentNode\r\n                    }\r\n                } else {\r\n                    e.currentTarget = e.delegateTarget || e.target;\r\n                    callHandler(e, extraParameters)\r\n                }\r\n            };\r\n            var handleObject = {\r\n                handler: handler,\r\n                wrappedHandler: wrappedHandler,\r\n                selector: selector,\r\n                type: eventName,\r\n                data: data,\r\n                namespace: namespaces.join(\".\"),\r\n                namespaces: namespaces,\r\n                guid: ++guid\r\n            };\r\n            eventData.handleObjects.push(handleObject);\r\n            var firstHandlerForTheType = 1 === eventData.handleObjects.length;\r\n            var shouldAddNativeListener = firstHandlerForTheType && eventNameIsDefined;\r\n            var nativeListenerOptions;\r\n            if (shouldAddNativeListener) {\r\n                shouldAddNativeListener = !special.callMethod(eventName, \"setup\", element, [data, namespaces, handler])\r\n            }\r\n            if (shouldAddNativeListener) {\r\n                eventData.nativeHandler = getNativeHandler(eventName);\r\n                if (passiveEventHandlersSupported() && forcePassiveFalseEventNames.indexOf(eventName) > -1) {\r\n                    nativeListenerOptions = {\r\n                        passive: false\r\n                    }\r\n                }\r\n                eventData.removeListener = _dom_adapter.default.listen(element, NATIVE_EVENTS_TO_SUBSCRIBE[eventName] || eventName, eventData.nativeHandler, nativeListenerOptions)\r\n            }\r\n            special.callMethod(eventName, \"add\", element, [handleObject])\r\n        },\r\n        removeHandler: function(handler, selector) {\r\n            var removeByEventName = function(eventName) {\r\n                var eventData = elementData[eventName];\r\n                if (!eventData.handleObjects.length) {\r\n                    delete elementData[eventName];\r\n                    return\r\n                }\r\n                var removedHandler;\r\n                eventData.handleObjects = eventData.handleObjects.filter(function(handleObject) {\r\n                    var skip = namespaces.length && !isSubset(handleObject.namespaces, namespaces) || handler && handleObject.handler !== handler || selector && handleObject.selector !== selector;\r\n                    if (!skip) {\r\n                        removedHandler = handleObject.handler;\r\n                        special.callMethod(eventName, \"remove\", element, [handleObject])\r\n                    }\r\n                    return skip\r\n                });\r\n                var lastHandlerForTheType = !eventData.handleObjects.length;\r\n                var shouldRemoveNativeListener = lastHandlerForTheType && eventName !== EMPTY_EVENT_NAME;\r\n                if (shouldRemoveNativeListener) {\r\n                    special.callMethod(eventName, \"teardown\", element, [namespaces, removedHandler]);\r\n                    if (eventData.nativeHandler) {\r\n                        eventData.removeListener()\r\n                    }\r\n                    delete elementData[eventName]\r\n                }\r\n            };\r\n            if (eventNameIsDefined) {\r\n                removeByEventName(eventName)\r\n            } else {\r\n                for (var name in elementData) {\r\n                    removeByEventName(name)\r\n                }\r\n            }\r\n            var elementDataIsEmpty = 0 === Object.keys(elementData).length;\r\n            if (elementDataIsEmpty) {\r\n                elementDataMap.delete(element)\r\n            }\r\n        },\r\n        callHandlers: function(event, extraParameters) {\r\n            var forceStop = false;\r\n            var handleCallback = function(handleObject) {\r\n                if (forceStop) {\r\n                    return\r\n                }\r\n                if (!namespaces.length || isSubset(handleObject.namespaces, namespaces)) {\r\n                    handleObject.wrappedHandler(event, extraParameters);\r\n                    forceStop = event.isImmediatePropagationStopped()\r\n                }\r\n            };\r\n            eventData.handleObjects.forEach(handleCallback);\r\n            if (namespaces.length && elementData[EMPTY_EVENT_NAME]) {\r\n                elementData[EMPTY_EVENT_NAME].handleObjects.forEach(handleCallback)\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction getNativeHandler(subscribeName) {\r\n    return function(event, extraParameters) {\r\n        var handlersController = getHandlersController(this, subscribeName);\r\n        event = eventsEngine.Event(event);\r\n        handlersController.callHandlers(event, extraParameters)\r\n    }\r\n}\r\n\r\nfunction isSubset(original, checked) {\r\n    for (var i = 0; i < checked.length; i++) {\r\n        if (original.indexOf(checked[i]) < 0) {\r\n            return false\r\n        }\r\n    }\r\n    return true\r\n}\r\n\r\nfunction normalizeOnArguments(callback) {\r\n    return function(element, eventName, selector, data, handler) {\r\n        if (!handler) {\r\n            handler = data;\r\n            data = void 0\r\n        }\r\n        if (\"string\" !== typeof selector) {\r\n            data = selector;\r\n            selector = void 0\r\n        }\r\n        if (!handler && \"string\" === typeof eventName) {\r\n            handler = data || selector;\r\n            selector = void 0;\r\n            data = void 0\r\n        }\r\n        callback(element, eventName, selector, data, handler)\r\n    }\r\n}\r\n\r\nfunction normalizeOffArguments(callback) {\r\n    return function(element, eventName, selector, handler) {\r\n        if (\"function\" === typeof selector) {\r\n            handler = selector;\r\n            selector = void 0\r\n        }\r\n        callback(element, eventName, selector, handler)\r\n    }\r\n}\r\n\r\nfunction normalizeTriggerArguments(callback) {\r\n    return function(element, src, extraParameters) {\r\n        if (\"string\" === typeof src) {\r\n            src = {\r\n                type: src\r\n            }\r\n        }\r\n        if (!src.target) {\r\n            src.target = element\r\n        }\r\n        src.currentTarget = element;\r\n        if (!src.delegateTarget) {\r\n            src.delegateTarget = element\r\n        }\r\n        if (!src.type && src.originalEvent) {\r\n            src.type = src.originalEvent.type\r\n        }\r\n        callback(element, src instanceof eventsEngine.Event ? src : eventsEngine.Event(src), extraParameters)\r\n    }\r\n}\r\n\r\nfunction normalizeEventArguments(callback) {\r\n    return function(src, config) {\r\n        if (!(this instanceof eventsEngine.Event)) {\r\n            return new eventsEngine.Event(src, config)\r\n        }\r\n        if (!src) {\r\n            src = {}\r\n        }\r\n        if (\"string\" === typeof src) {\r\n            src = {\r\n                type: src\r\n            }\r\n        }\r\n        if (!config) {\r\n            config = {}\r\n        }\r\n        callback.call(this, src, config)\r\n    }\r\n}\r\n\r\nfunction iterate(callback) {\r\n    var iterateEventNames = function(element, eventName) {\r\n        if (eventName && eventName.indexOf(\" \") > -1) {\r\n            var args = Array.prototype.slice.call(arguments, 0);\r\n            eventName.split(\" \").forEach(function(eventName) {\r\n                args[1] = eventName;\r\n                callback.apply(this, args)\r\n            })\r\n        } else {\r\n            callback.apply(this, arguments)\r\n        }\r\n    };\r\n    return function(element, eventName) {\r\n        if (\"object\" === _typeof(eventName)) {\r\n            var args = Array.prototype.slice.call(arguments, 0);\r\n            for (var name in eventName) {\r\n                args[1] = name;\r\n                args[args.length - 1] = eventName[name];\r\n                iterateEventNames.apply(this, args)\r\n            }\r\n        } else {\r\n            iterateEventNames.apply(this, arguments)\r\n        }\r\n    }\r\n}\r\n\r\nfunction callNativeMethod(eventName, element) {\r\n    var nativeMethodName = NATIVE_EVENTS_TO_TRIGGER[eventName] || eventName;\r\n    var isLinkClickEvent = function(eventName, element) {\r\n        return \"click\" === eventName && \"a\" === element.localName\r\n    };\r\n    if (isLinkClickEvent(eventName, element)) {\r\n        return\r\n    }\r\n    if ((0, _type.isFunction)(element[nativeMethodName])) {\r\n        skipEvent = eventName;\r\n        element[nativeMethodName]();\r\n        skipEvent = void 0\r\n    }\r\n}\r\n\r\nfunction calculateWhich(event) {\r\n    var setForMouseEvent = function(event) {\r\n        var mouseEventRegex = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\r\n        return !event.which && void 0 !== event.button && mouseEventRegex.test(event.type)\r\n    };\r\n    var setForKeyEvent = function(event) {\r\n        return null == event.which && 0 === event.type.indexOf(\"key\")\r\n    };\r\n    if (setForKeyEvent(event)) {\r\n        return null != event.charCode ? event.charCode : event.keyCode\r\n    }\r\n    if (setForMouseEvent(event)) {\r\n        var whichByButton = {\r\n            1: 1,\r\n            2: 3,\r\n            3: 1,\r\n            4: 2\r\n        };\r\n        return whichByButton[event.button]\r\n    }\r\n    return event.which\r\n}\r\n\r\nfunction initEvent(EventClass) {\r\n    if (EventClass) {\r\n        eventsEngine.Event = EventClass;\r\n        eventsEngine.Event.prototype = EventClass.prototype\r\n    }\r\n}\r\ninitEvent(normalizeEventArguments(function(src, config) {\r\n    var that = this;\r\n    var propagationStopped = false;\r\n    var immediatePropagationStopped = false;\r\n    var defaultPrevented = false;\r\n    (0, _extend.extend)(that, src);\r\n    if (src instanceof eventsEngine.Event || (0, _window.hasWindow)() && src instanceof window.Event) {\r\n        that.originalEvent = src;\r\n        that.currentTarget = void 0\r\n    }\r\n    if (!(src instanceof eventsEngine.Event)) {\r\n        (0, _extend.extend)(that, {\r\n            isPropagationStopped: function() {\r\n                return !!(propagationStopped || that.originalEvent && that.originalEvent.propagationStopped)\r\n            },\r\n            stopPropagation: function() {\r\n                propagationStopped = true;\r\n                that.originalEvent && that.originalEvent.stopPropagation()\r\n            },\r\n            isImmediatePropagationStopped: function() {\r\n                return immediatePropagationStopped\r\n            },\r\n            stopImmediatePropagation: function() {\r\n                this.stopPropagation();\r\n                immediatePropagationStopped = true;\r\n                that.originalEvent && that.originalEvent.stopImmediatePropagation()\r\n            },\r\n            isDefaultPrevented: function() {\r\n                return !!(defaultPrevented || that.originalEvent && that.originalEvent.defaultPrevented)\r\n            },\r\n            preventDefault: function() {\r\n                defaultPrevented = true;\r\n                that.originalEvent && that.originalEvent.preventDefault()\r\n            }\r\n        })\r\n    }\r\n    addProperty(\"which\", calculateWhich, that);\r\n    if (0 === src.type.indexOf(\"touch\")) {\r\n        delete config.pageX;\r\n        delete config.pageY\r\n    }(0, _extend.extend)(that, config);\r\n    that.guid = ++guid\r\n}));\r\n\r\nfunction addProperty(propName, hook, eventInstance) {\r\n    Object.defineProperty(eventInstance || eventsEngine.Event.prototype, propName, {\r\n        enumerable: true,\r\n        configurable: true,\r\n        get: function() {\r\n            return this.originalEvent && hook(this.originalEvent)\r\n        },\r\n        set: function(value) {\r\n            Object.defineProperty(this, propName, {\r\n                enumerable: true,\r\n                configurable: true,\r\n                writable: true,\r\n                value: value\r\n            })\r\n        }\r\n    })\r\n}(0, _hook_touch_props.default)(addProperty);\r\nvar beforeSetStrategy = (0, _callbacks.default)();\r\nvar afterSetStrategy = (0, _callbacks.default)();\r\neventsEngine.set = function(engine) {\r\n    beforeSetStrategy.fire();\r\n    eventsEngine.inject(engine);\r\n    initEvent(engine.Event);\r\n    afterSetStrategy.fire()\r\n};\r\neventsEngine.subscribeGlobal = function() {\r\n    applyForEach(arguments, normalizeOnArguments(function() {\r\n        var args = arguments;\r\n        eventsEngine.on.apply(this, args);\r\n        beforeSetStrategy.add(function() {\r\n            var offArgs = Array.prototype.slice.call(args, 0);\r\n            offArgs.splice(3, 1);\r\n            eventsEngine.off.apply(this, offArgs)\r\n        });\r\n        afterSetStrategy.add(function() {\r\n            eventsEngine.on.apply(this, args)\r\n        })\r\n    }))\r\n};\r\neventsEngine.forcePassiveFalseEventNames = forcePassiveFalseEventNames;\r\neventsEngine.passiveEventHandlersSupported = passiveEventHandlersSupported;\r\nvar _default = eventsEngine;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.time_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _number_box = _interopRequireDefault(require(\"../number_box\"));\r\nvar _select_box = _interopRequireDefault(require(\"../select_box\"));\r\nvar _box = _interopRequireDefault(require(\"../box\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TIMEVIEW_CLASS = \"dx-timeview\";\r\nvar TIMEVIEW_CLOCK_CLASS = \"dx-timeview-clock\";\r\nvar TIMEVIEW_FIELD_CLASS = \"dx-timeview-field\";\r\nvar TIMEVIEW_HOURARROW_CLASS = \"dx-timeview-hourarrow\";\r\nvar TIMEVIEW_TIME_SEPARATOR_CLASS = \"dx-timeview-time-separator\";\r\nvar TIMEVIEW_FORMAT12_CLASS = \"dx-timeview-format12\";\r\nvar TIMEVIEW_FORMAT12_AM = -1;\r\nvar TIMEVIEW_FORMAT12_PM = 1;\r\nvar TIMEVIEW_MINUTEARROW_CLASS = \"dx-timeview-minutearrow\";\r\nvar rotateArrow = function($arrow, angle, offset) {\r\n    cssRotate($arrow, angle, offset)\r\n};\r\nvar cssRotate = function($arrow, angle, offset) {\r\n    $arrow.css(\"transform\", \"rotate(\" + angle + \"deg) translate(0,\" + offset + \"px)\")\r\n};\r\nvar TimeView = _editor.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: new Date(Date.now()),\r\n            use24HourFormat: true,\r\n            _showClock: true,\r\n            _arrowOffset: 0,\r\n            stylingMode: void 0\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: {\r\n                platform: \"android\"\r\n            },\r\n            options: {\r\n                _arrowOffset: 15\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"generic\"\r\n            },\r\n            options: {\r\n                _arrowOffset: 5\r\n            }\r\n        }])\r\n    },\r\n    _getValue: function() {\r\n        return this.option(\"value\") || new Date\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(TIMEVIEW_CLASS)\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderBox();\r\n        this._updateTime()\r\n    },\r\n    _renderBox: function() {\r\n        var $box = (0, _renderer.default)(\"<div>\").appendTo(this.$element());\r\n        var items = [];\r\n        if (this.option(\"_showClock\")) {\r\n            items.push({\r\n                ratio: 1,\r\n                shrink: 0,\r\n                baseSize: \"auto\",\r\n                template: this._renderClock.bind(this)\r\n            })\r\n        }\r\n        items.push({\r\n            ratio: 0,\r\n            shrink: 0,\r\n            baseSize: 50,\r\n            template: this._renderField.bind(this)\r\n        });\r\n        this._createComponent($box, _box.default, {\r\n            height: \"100%\",\r\n            width: \"100%\",\r\n            direction: \"col\",\r\n            items: items\r\n        })\r\n    },\r\n    _renderClock: function(_, __, container) {\r\n        this._$hourArrow = (0, _renderer.default)(\"<div>\").addClass(TIMEVIEW_HOURARROW_CLASS);\r\n        this._$minuteArrow = (0, _renderer.default)(\"<div>\").addClass(TIMEVIEW_MINUTEARROW_CLASS);\r\n        var $container = (0, _renderer.default)(container);\r\n        $container.addClass(TIMEVIEW_CLOCK_CLASS).append(this._$hourArrow).append(this._$minuteArrow);\r\n        this.setAria(\"role\", \"presentation\", $container)\r\n    },\r\n    _updateClock: function() {\r\n        var time = this._getValue();\r\n        var hourArrowAngle = time.getHours() / 12 * 360 + time.getMinutes() / 60 * 30;\r\n        var minuteArrowAngle = time.getMinutes() / 60 * 360;\r\n        rotateArrow(this._$hourArrow, hourArrowAngle, this.option(\"_arrowOffset\"));\r\n        rotateArrow(this._$minuteArrow, minuteArrowAngle, this.option(\"_arrowOffset\"))\r\n    },\r\n    _getBoxItems: function(is12HourFormat) {\r\n        var _this = this;\r\n        var items = [{\r\n            ratio: 0,\r\n            shrink: 0,\r\n            baseSize: \"auto\",\r\n            template: function() {\r\n                return _this._hourBox.$element()\r\n            }\r\n        }, {\r\n            ratio: 0,\r\n            shrink: 0,\r\n            baseSize: \"auto\",\r\n            template: (0, _renderer.default)(\"<div>\").addClass(TIMEVIEW_TIME_SEPARATOR_CLASS).text(_date.default.getTimeSeparator())\r\n        }, {\r\n            ratio: 0,\r\n            shrink: 0,\r\n            baseSize: \"auto\",\r\n            template: function() {\r\n                return _this._minuteBox.$element()\r\n            }\r\n        }];\r\n        if (is12HourFormat) {\r\n            items.push({\r\n                ratio: 0,\r\n                shrink: 0,\r\n                baseSize: \"auto\",\r\n                template: function() {\r\n                    return _this._format12.$element()\r\n                }\r\n            })\r\n        }\r\n        return items\r\n    },\r\n    _renderField: function() {\r\n        var is12HourFormat = !this.option(\"use24HourFormat\");\r\n        this._createHourBox();\r\n        this._createMinuteBox();\r\n        if (is12HourFormat) {\r\n            this._createFormat12Box()\r\n        }\r\n        return this._createComponent((0, _renderer.default)(\"<div>\").addClass(TIMEVIEW_FIELD_CLASS), _box.default, {\r\n            direction: \"row\",\r\n            align: \"center\",\r\n            crossAlign: \"center\",\r\n            items: this._getBoxItems(is12HourFormat)\r\n        }).$element()\r\n    },\r\n    _createHourBox: function() {\r\n        var _this2 = this;\r\n        var editor = this._hourBox = this._createComponent((0, _renderer.default)(\"<div>\"), _number_box.default, (0, _extend.extend)({\r\n            min: -1,\r\n            max: 24,\r\n            value: this._getValue().getHours(),\r\n            onValueChanged: this._onHourBoxValueChanged.bind(this),\r\n            onKeyboardHandled: function(opts) {\r\n                return _this2._keyboardHandler(opts)\r\n            }\r\n        }, this._getNumberBoxConfig()));\r\n        editor.setAria(\"label\", \"hours\")\r\n    },\r\n    _isPM: function() {\r\n        return !this.option(\"use24HourFormat\") && 1 === this._format12.option(\"value\")\r\n    },\r\n    _onHourBoxValueChanged: function(args) {\r\n        var currentValue = this._getValue();\r\n        var newValue = new Date(currentValue);\r\n        var newHours = this._convertMaxHourToMin(args.value);\r\n        if (this._isPM()) {\r\n            newHours += 12\r\n        }\r\n        newValue.setHours(newHours);\r\n        _ui.default.normalizeTime(newValue);\r\n        this.option(\"value\", newValue)\r\n    },\r\n    _convertMaxHourToMin: function(hours) {\r\n        var maxHoursValue = this.option(\"use24HourFormat\") ? 24 : 12;\r\n        return (maxHoursValue + hours) % maxHoursValue\r\n    },\r\n    _createMinuteBox: function() {\r\n        var _this3 = this;\r\n        var editor = this._minuteBox = this._createComponent((0, _renderer.default)(\"<div>\"), _number_box.default, (0, _extend.extend)({\r\n            min: -1,\r\n            max: 60,\r\n            value: this._getValue().getMinutes(),\r\n            onKeyboardHandled: function(opts) {\r\n                return _this3._keyboardHandler(opts)\r\n            },\r\n            onValueChanged: function(_ref) {\r\n                var value = _ref.value,\r\n                    component = _ref.component;\r\n                var newMinutes = (60 + value) % 60;\r\n                component.option(\"value\", newMinutes);\r\n                var time = new Date(_this3._getValue());\r\n                time.setMinutes(newMinutes);\r\n                _ui.default.normalizeTime(time);\r\n                _this3.option(\"value\", time)\r\n            }\r\n        }, this._getNumberBoxConfig()));\r\n        editor.setAria(\"label\", \"minutes\")\r\n    },\r\n    _createFormat12Box: function() {\r\n        var _this4 = this;\r\n        var periodNames = _date.default.getPeriodNames();\r\n        var editor = this._format12 = this._createComponent((0, _renderer.default)(\"<div>\").addClass(TIMEVIEW_FORMAT12_CLASS), _select_box.default, {\r\n            items: [{\r\n                value: TIMEVIEW_FORMAT12_AM,\r\n                text: periodNames[0]\r\n            }, {\r\n                value: TIMEVIEW_FORMAT12_PM,\r\n                text: periodNames[1]\r\n            }],\r\n            valueExpr: \"value\",\r\n            displayExpr: \"text\",\r\n            onKeyboardHandled: function(opts) {\r\n                return _this4._keyboardHandler(opts)\r\n            },\r\n            onValueChanged: function(_ref2) {\r\n                var value = _ref2.value;\r\n                var hours = _this4._getValue().getHours();\r\n                var time = new Date(_this4._getValue());\r\n                var newHours = (hours + 12 * value) % 24;\r\n                time.setHours(newHours);\r\n                _this4.option(\"value\", time)\r\n            },\r\n            value: this._getValue().getHours() >= 12 ? TIMEVIEW_FORMAT12_PM : TIMEVIEW_FORMAT12_AM,\r\n            stylingMode: this.option(\"stylingMode\")\r\n        });\r\n        editor.setAria(\"label\", \"type\")\r\n    },\r\n    _refreshFormat12: function() {\r\n        if (this.option(\"use24HourFormat\")) {\r\n            return\r\n        }\r\n        var value = this._getValue();\r\n        var hours = value.getHours();\r\n        var isPM = hours >= 12;\r\n        var newValue = isPM ? TIMEVIEW_FORMAT12_PM : TIMEVIEW_FORMAT12_AM;\r\n        this._silentEditorValueUpdate(this._format12, newValue)\r\n    },\r\n    _silentEditorValueUpdate: function(editor, value) {\r\n        if (editor) {\r\n            editor._suppressValueChangeAction();\r\n            editor.option(\"value\", value);\r\n            editor._resumeValueChangeAction()\r\n        }\r\n    },\r\n    _getNumberBoxConfig: function() {\r\n        return {\r\n            showSpinButtons: true,\r\n            displayValueFormatter: function(value) {\r\n                return (value < 10 ? \"0\" : \"\") + value\r\n            },\r\n            stylingMode: this.option(\"stylingMode\")\r\n        }\r\n    },\r\n    _normalizeHours: function(hours) {\r\n        return this.option(\"use24HourFormat\") ? hours : hours % 12 || 12\r\n    },\r\n    _updateField: function() {\r\n        var hours = this._normalizeHours(this._getValue().getHours());\r\n        this._silentEditorValueUpdate(this._hourBox, hours);\r\n        this._silentEditorValueUpdate(this._minuteBox, this._getValue().getMinutes());\r\n        this._refreshFormat12()\r\n    },\r\n    _updateTime: function() {\r\n        if (this.option(\"_showClock\")) {\r\n            this._updateClock()\r\n        }\r\n        this._updateField()\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._updateTime()\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"value\":\r\n                this._updateTime();\r\n                this.callBase(args);\r\n                break;\r\n            case \"_arrowOffset\":\r\n                break;\r\n            case \"use24HourFormat\":\r\n            case \"_showClock\":\r\n            case \"stylingMode\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxTimeView\", TimeView);\r\nvar _default = TimeView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.mask.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiDate_boxMask = require(\"./ui.date_box.mask.parts\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _date2 = require(\"../../localization/ldml/date.parser\");\r\nvar _date3 = require(\"../../localization/ldml/date.format\");\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.base\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar MASK_EVENT_NAMESPACE = \"dateBoxMask\";\r\nvar FORWARD = 1;\r\nvar BACKWARD = -1;\r\nvar DateBoxMask = _uiDate_box.default.inherit({\r\n    _supportedKeys: function(e) {\r\n        var _this = this;\r\n        var originalHandlers = this.callBase(e);\r\n        var callOriginalHandler = function(e) {\r\n            var originalHandler = originalHandlers[(0, _index.normalizeKeyName)(e)];\r\n            return originalHandler && originalHandler.apply(_this, [e])\r\n        };\r\n        var applyHandler = function(e, maskHandler) {\r\n            if (_this._shouldUseOriginalHandler(e)) {\r\n                return callOriginalHandler.apply(_this, [e])\r\n            } else {\r\n                return maskHandler.apply(_this, [e])\r\n            }\r\n        };\r\n        return (0, _extend.extend)({}, originalHandlers, {\r\n            del: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._revertPart(FORWARD);\r\n                    _this._isAllSelected() || event.preventDefault()\r\n                })\r\n            },\r\n            backspace: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._revertPart(BACKWARD);\r\n                    _this._isAllSelected() || event.preventDefault()\r\n                })\r\n            },\r\n            home: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._selectFirstPart();\r\n                    event.preventDefault()\r\n                })\r\n            },\r\n            end: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._selectLastPart();\r\n                    event.preventDefault()\r\n                })\r\n            },\r\n            escape: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._revertChanges(event)\r\n                })\r\n            },\r\n            enter: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._enterHandler(event)\r\n                })\r\n            },\r\n            leftArrow: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._selectNextPart(BACKWARD);\r\n                    event.preventDefault()\r\n                })\r\n            },\r\n            rightArrow: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._selectNextPart(FORWARD);\r\n                    event.preventDefault()\r\n                })\r\n            },\r\n            upArrow: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._upDownArrowHandler(FORWARD);\r\n                    event.preventDefault()\r\n                })\r\n            },\r\n            downArrow: function(e) {\r\n                return applyHandler(e, function(event) {\r\n                    _this._upDownArrowHandler(BACKWARD);\r\n                    event.preventDefault()\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _shouldUseOriginalHandler: function(e) {\r\n        var keysToHandleByMask = [\"backspace\", \"del\"];\r\n        var isNotDeletingInCalendar = this.option(\"opened\") && e && keysToHandleByMask.indexOf((0, _index.normalizeKeyName)(e)) === -1;\r\n        return !this._useMaskBehavior() || isNotDeletingInCalendar || e && e.altKey\r\n    },\r\n    _upDownArrowHandler: function(step) {\r\n        this._setNewDateIfEmpty();\r\n        var originalValue = this._getActivePartValue(this._initialMaskValue);\r\n        var currentValue = this._getActivePartValue();\r\n        var delta = currentValue - originalValue;\r\n        this._loadMaskValue(this._initialMaskValue);\r\n        this._partIncrease(delta + step, true)\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            useMaskBehavior: false,\r\n            emptyDateValue: new Date(2e3, 0, 1, 0, 0, 0)\r\n        })\r\n    },\r\n    _isSingleCharKey: function(e) {\r\n        var key = e.originalEvent.data || e.originalEvent.key;\r\n        return \"string\" === typeof key && 1 === key.length && !e.ctrl && !e.alt\r\n    },\r\n    _isSingleDigitKey: function(e) {\r\n        var _e$originalEvent;\r\n        var data = null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.data;\r\n        return 1 === (null === data || void 0 === data ? void 0 : data.length) && parseInt(data, 10)\r\n    },\r\n    _useBeforeInputEvent: function() {\r\n        var device = _devices.default.real();\r\n        return device.android && device.version[0] > 4\r\n    },\r\n    _keyboardHandler: function(e) {\r\n        var _this2 = this;\r\n        var key = e.originalEvent.key;\r\n        var result = this.callBase(e);\r\n        if (!this._useMaskBehavior() || this._useBeforeInputEvent()) {\r\n            return result\r\n        }\r\n        if (_browser.default.chrome && \"Process\" === e.key && 0 === e.code.indexOf(\"Digit\")) {\r\n            key = e.code.replace(\"Digit\", \"\");\r\n            this._processInputKey(key);\r\n            this._maskInputHandler = function() {\r\n                _this2._renderSelectedPart()\r\n            }\r\n        } else {\r\n            if (this._isSingleCharKey(e)) {\r\n                this._processInputKey(key);\r\n                e.originalEvent.preventDefault()\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _maskBeforeInputHandler: function(e) {\r\n        var _this3 = this;\r\n        this._maskInputHandler = null;\r\n        var inputType = e.originalEvent.inputType;\r\n        if (\"insertCompositionText\" === inputType) {\r\n            this._maskInputHandler = function() {\r\n                _this3._renderSelectedPart()\r\n            }\r\n        }\r\n        var isBackwardDeletion = \"deleteContentBackward\" === inputType;\r\n        var isForwardDeletion = \"deleteContentForward\" === inputType;\r\n        if (isBackwardDeletion || isForwardDeletion) {\r\n            var direction = isBackwardDeletion ? BACKWARD : FORWARD;\r\n            this._maskInputHandler = function() {\r\n                _this3._revertPart();\r\n                _this3._selectNextPart(direction)\r\n            }\r\n        }\r\n        if (!this._useMaskBehavior() || !this._isSingleCharKey(e)) {\r\n            return\r\n        }\r\n        var key = e.originalEvent.data;\r\n        this._processInputKey(key);\r\n        e.preventDefault();\r\n        return true\r\n    },\r\n    _keyPressHandler: function(e) {\r\n        var event = e.originalEvent;\r\n        if (\"insertCompositionText\" === (null === event || void 0 === event ? void 0 : event.inputType) && this._isSingleDigitKey(e)) {\r\n            this._processInputKey(event.data);\r\n            this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n            this._selectNextPart()\r\n        }\r\n        this.callBase(e);\r\n        if (this._maskInputHandler) {\r\n            this._maskInputHandler();\r\n            this._maskInputHandler = null\r\n        }\r\n    },\r\n    _processInputKey: function(key) {\r\n        if (this._isAllSelected()) {\r\n            this._activePartIndex = 0\r\n        }\r\n        this._setNewDateIfEmpty();\r\n        if (isNaN(parseInt(key))) {\r\n            this._searchString(key)\r\n        } else {\r\n            this._searchNumber(key)\r\n        }\r\n    },\r\n    _isAllSelected: function() {\r\n        var caret = this._caret();\r\n        return caret.end - caret.start === this.option(\"text\").length\r\n    },\r\n    _getFormatPattern: function() {\r\n        if (this._formatPattern) {\r\n            return this._formatPattern\r\n        }\r\n        var format = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n        var isLDMLPattern = (0, _type.isString)(format) && !_date.default._getPatternByFormat(format);\r\n        if (isLDMLPattern) {\r\n            this._formatPattern = format\r\n        } else {\r\n            this._formatPattern = (0, _date3.getFormat)(function(value) {\r\n                return _date.default.format(value, format)\r\n            })\r\n        }\r\n        return this._formatPattern\r\n    },\r\n    _setNewDateIfEmpty: function() {\r\n        if (!this._maskValue) {\r\n            var value = \"time\" === this.option(\"type\") ? new Date(null) : new Date;\r\n            this._maskValue = value;\r\n            this._initialMaskValue = value;\r\n            this._renderDateParts()\r\n        }\r\n    },\r\n    _partLimitsReached: function(max) {\r\n        var maxLimitLength = String(max).length;\r\n        var formatLength = this._getActivePartProp(\"pattern\").length;\r\n        var isShortFormat = 1 === formatLength;\r\n        var maxSearchLength = isShortFormat ? maxLimitLength : Math.min(formatLength, maxLimitLength);\r\n        var isLengthExceeded = this._searchValue.length === maxSearchLength;\r\n        var isValueOverflowed = parseInt(this._searchValue + \"0\") > max;\r\n        return isLengthExceeded || isValueOverflowed\r\n    },\r\n    _searchNumber: function(char) {\r\n        var _this$_getActivePartL = this._getActivePartLimits(),\r\n            max = _this$_getActivePartL.max;\r\n        var maxLimitLength = String(max).length;\r\n        this._searchValue = (this._searchValue + char).substr(-maxLimitLength);\r\n        if (isNaN(this._searchValue)) {\r\n            this._searchValue = char\r\n        }\r\n        this._setActivePartValue(this._searchValue);\r\n        if (this._partLimitsReached(max)) {\r\n            this._selectNextPart(FORWARD)\r\n        }\r\n    },\r\n    _searchString: function(char) {\r\n        if (!isNaN(parseInt(this._getActivePartProp(\"text\")))) {\r\n            return\r\n        }\r\n        var limits = this._getActivePartProp(\"limits\")(this._maskValue);\r\n        var startString = this._searchValue + char.toLowerCase();\r\n        var endLimit = limits.max - limits.min;\r\n        for (var i = 0; i <= endLimit; i++) {\r\n            this._loadMaskValue(this._initialMaskValue);\r\n            this._partIncrease(i + 1);\r\n            if (0 === this._getActivePartProp(\"text\").toLowerCase().indexOf(startString)) {\r\n                this._searchValue = startString;\r\n                return\r\n            }\r\n        }\r\n        this._setNewDateIfEmpty();\r\n        if (this._searchValue) {\r\n            this._clearSearchValue();\r\n            this._searchString(char)\r\n        }\r\n    },\r\n    _clearSearchValue: function() {\r\n        this._searchValue = \"\"\r\n    },\r\n    _revertPart: function(direction) {\r\n        if (!this._isAllSelected()) {\r\n            var actual = this._getActivePartValue(this.option(\"emptyDateValue\"));\r\n            this._setActivePartValue(actual);\r\n            this._selectNextPart(direction)\r\n        }\r\n        this._clearSearchValue()\r\n    },\r\n    _useMaskBehavior: function() {\r\n        return this.option(\"useMaskBehavior\") && \"text\" === this.option(\"mode\")\r\n    },\r\n    _prepareRegExpInfo: function() {\r\n        this._regExpInfo = (0, _date2.getRegExpInfo)(this._getFormatPattern(), _date.default);\r\n        var regExp = this._regExpInfo.regexp;\r\n        var flags = regExp.flags;\r\n        var convertedRegExp = _number.default.convertDigits(this._regExpInfo.regexp.source, false);\r\n        this._regExpInfo.regexp = RegExp(convertedRegExp, flags)\r\n    },\r\n    _initMaskState: function() {\r\n        this._activePartIndex = 0;\r\n        this._formatPattern = null;\r\n        this._prepareRegExpInfo();\r\n        this._loadMaskValue()\r\n    },\r\n    _renderMask: function() {\r\n        this.callBase();\r\n        this._detachMaskEvents();\r\n        this._clearMaskState();\r\n        if (this._useMaskBehavior()) {\r\n            this._attachMaskEvents();\r\n            this._initMaskState();\r\n            this._renderDateParts()\r\n        }\r\n    },\r\n    _renderDateParts: function() {\r\n        if (!this._useMaskBehavior()) {\r\n            return\r\n        }\r\n        var text = this.option(\"text\") || this._getDisplayedText(this._maskValue);\r\n        if (text) {\r\n            this._dateParts = (0, _uiDate_boxMask.renderDateParts)(text, this._regExpInfo);\r\n            this._isFocused() && this._selectNextPart()\r\n        }\r\n    },\r\n    _detachMaskEvents: function() {\r\n        _events_engine.default.off(this._input(), \".\" + MASK_EVENT_NAMESPACE)\r\n    },\r\n    _attachMaskEvents: function() {\r\n        var _this4 = this;\r\n        _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"dxclick\", MASK_EVENT_NAMESPACE), this._maskClickHandler.bind(this));\r\n        _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"paste\", MASK_EVENT_NAMESPACE), this._maskPasteHandler.bind(this));\r\n        _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"drop\", MASK_EVENT_NAMESPACE), function() {\r\n            _this4._renderSelectedPart()\r\n        });\r\n        _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"compositionend\", MASK_EVENT_NAMESPACE), this._maskCompositionEndHandler.bind(this));\r\n        if (this._useBeforeInputEvent()) {\r\n            _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"beforeinput\", MASK_EVENT_NAMESPACE), this._maskBeforeInputHandler.bind(this))\r\n        }\r\n    },\r\n    _renderSelectedPart: function() {\r\n        this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n        this._selectNextPart()\r\n    },\r\n    _selectLastPart: function() {\r\n        if (this.option(\"text\")) {\r\n            this._activePartIndex = this._dateParts.length;\r\n            this._selectNextPart(BACKWARD)\r\n        }\r\n    },\r\n    _selectFirstPart: function() {\r\n        if (this.option(\"text\")) {\r\n            this._activePartIndex = -1;\r\n            this._selectNextPart(FORWARD)\r\n        }\r\n    },\r\n    _onMouseWheel: function(e) {\r\n        if (this._useMaskBehavior()) {\r\n            this._partIncrease(e.delta > 0 ? FORWARD : BACKWARD, e)\r\n        }\r\n    },\r\n    _selectNextPart: function() {\r\n        var step = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\r\n        if (!this.option(\"text\") || this._disposed) {\r\n            return\r\n        }\r\n        if (step) {\r\n            this._initialMaskValue = new Date(this._maskValue)\r\n        }\r\n        var index = (0, _math.fitIntoRange)(this._activePartIndex + step, 0, this._dateParts.length - 1);\r\n        if (this._dateParts[index].isStub) {\r\n            var isBoundaryIndex = 0 === index && step < 0 || index === this._dateParts.length - 1 && step > 0;\r\n            if (!isBoundaryIndex) {\r\n                this._selectNextPart(step >= 0 ? step + 1 : step - 1);\r\n                return\r\n            } else {\r\n                index = this._activePartIndex\r\n            }\r\n        }\r\n        if (this._activePartIndex !== index) {\r\n            this._clearSearchValue()\r\n        }\r\n        this._activePartIndex = index;\r\n        this._caret(this._getActivePartProp(\"caret\"))\r\n    },\r\n    _getRealLimitsPattern: function() {\r\n        if (\"d\" === this._getActivePartProp(\"pattern\")[0]) {\r\n            return \"dM\"\r\n        }\r\n    },\r\n    _getActivePartLimits: function(lockOtherParts) {\r\n        var limitFunction = this._getActivePartProp(\"limits\");\r\n        return limitFunction(this._maskValue, lockOtherParts && this._getRealLimitsPattern())\r\n    },\r\n    _getActivePartValue: function(dateValue) {\r\n        dateValue = dateValue || this._maskValue;\r\n        var getter = this._getActivePartProp(\"getter\");\r\n        return (0, _type.isFunction)(getter) ? getter(dateValue) : dateValue[getter]()\r\n    },\r\n    _addLeadingZeroes: function(value) {\r\n        var zeroes = this._searchValue.match(/^0+/);\r\n        var limits = this._getActivePartLimits();\r\n        var maxLimitLength = String(limits.max).length;\r\n        return ((zeroes && zeroes[0] || \"\") + String(value)).substr(-maxLimitLength)\r\n    },\r\n    _setActivePartValue: function(value, dateValue) {\r\n        dateValue = dateValue || this._maskValue;\r\n        var setter = this._getActivePartProp(\"setter\");\r\n        var limits = this._getActivePartLimits();\r\n        value = (0, _math.inRange)(value, limits.min, limits.max) ? value : value % 10;\r\n        value = this._addLeadingZeroes((0, _math.fitIntoRange)(value, limits.min, limits.max));\r\n        (0, _type.isFunction)(setter) ? setter(dateValue, value): dateValue[setter](value);\r\n        this._renderDisplayText(this._getDisplayedText(dateValue));\r\n        this._renderDateParts()\r\n    },\r\n    _getActivePartProp: function(property) {\r\n        if (!this._dateParts || !this._dateParts[this._activePartIndex]) {\r\n            return\r\n        }\r\n        return this._dateParts[this._activePartIndex][property]\r\n    },\r\n    _loadMaskValue: function() {\r\n        var value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.dateOption(\"value\");\r\n        this._maskValue = value && new Date(value);\r\n        this._initialMaskValue = value && new Date(value)\r\n    },\r\n    _saveMaskValue: function() {\r\n        var value = this._maskValue && new Date(this._maskValue);\r\n        if (value && \"date\" === this.option(\"type\")) {\r\n            value.setHours(0, 0, 0, 0)\r\n        }\r\n        this._initialMaskValue = new Date(value);\r\n        this.dateOption(\"value\", value)\r\n    },\r\n    _revertChanges: function() {\r\n        this._loadMaskValue();\r\n        this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n        this._renderDateParts()\r\n    },\r\n    _renderDisplayText: function(text) {\r\n        this.callBase(text);\r\n        if (this._useMaskBehavior()) {\r\n            this.option(\"text\", text)\r\n        }\r\n    },\r\n    _partIncrease: function(step, lockOtherParts) {\r\n        this._setNewDateIfEmpty();\r\n        var _this$_getActivePartL2 = this._getActivePartLimits(lockOtherParts),\r\n            max = _this$_getActivePartL2.max,\r\n            min = _this$_getActivePartL2.min;\r\n        var limitDelta = max - min;\r\n        if (1 === limitDelta) {\r\n            limitDelta++\r\n        }\r\n        var newValue = step + this._getActivePartValue();\r\n        if (newValue > max) {\r\n            newValue = this._applyLimits(newValue, {\r\n                limitBase: min,\r\n                limitClosest: max,\r\n                limitDelta: limitDelta\r\n            })\r\n        } else {\r\n            if (newValue < min) {\r\n                newValue = this._applyLimits(newValue, {\r\n                    limitBase: max,\r\n                    limitClosest: min,\r\n                    limitDelta: limitDelta\r\n                })\r\n            }\r\n        }\r\n        this._setActivePartValue(newValue)\r\n    },\r\n    _applyLimits: function(newValue, _ref) {\r\n        var limitBase = _ref.limitBase,\r\n            limitClosest = _ref.limitClosest,\r\n            limitDelta = _ref.limitDelta;\r\n        var delta = (newValue - limitClosest) % limitDelta;\r\n        return delta ? limitBase + delta - 1 * (0, _math.sign)(delta) : limitClosest\r\n    },\r\n    _maskClickHandler: function() {\r\n        if (this.option(\"text\")) {\r\n            this._activePartIndex = (0, _uiDate_boxMask.getDatePartIndexByPosition)(this._dateParts, this._caret().start);\r\n            if ((0, _type.isDefined)(this._activePartIndex)) {\r\n                this._caret(this._getActivePartProp(\"caret\"))\r\n            } else {\r\n                this._selectLastPart()\r\n            }\r\n        }\r\n    },\r\n    _maskCompositionEndHandler: function(e) {\r\n        var _this5 = this;\r\n        if (_browser.default.msie && this._isSingleDigitKey(e)) {\r\n            var key = e.originalEvent.data;\r\n            this._processInputKey(key)\r\n        } else {\r\n            this._input().val(this._getDisplayedText(this._maskValue));\r\n            this._selectNextPart();\r\n            this._maskInputHandler = function() {\r\n                _this5._renderSelectedPart()\r\n            }\r\n        }\r\n    },\r\n    _maskPasteHandler: function(e) {\r\n        var newText = this._replaceSelectedText(this.option(\"text\"), this._caret(), (0, _dom.clipboardText)(e));\r\n        var date = _date.default.parse(newText, this._getFormatPattern());\r\n        if (date && this._isDateValid(date)) {\r\n            this._maskValue = date;\r\n            this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n            this._renderDateParts();\r\n            this._selectNextPart()\r\n        }\r\n        e.preventDefault()\r\n    },\r\n    _isDateValid: function(date) {\r\n        return (0, _type.isDate)(date) && !isNaN(date)\r\n    },\r\n    _isValueDirty: function() {\r\n        var value = this.dateOption(\"value\");\r\n        return (this._maskValue && this._maskValue.getTime()) !== (value && value.getTime())\r\n    },\r\n    _fireChangeEvent: function() {\r\n        this._clearSearchValue();\r\n        if (this._isValueDirty()) {\r\n            _events_engine.default.trigger(this._input(), \"change\")\r\n        }\r\n    },\r\n    _enterHandler: function(e) {\r\n        this._fireChangeEvent();\r\n        this._selectNextPart(FORWARD);\r\n        e.preventDefault()\r\n    },\r\n    _focusOutHandler: function(e) {\r\n        this.callBase(e);\r\n        if (this._useMaskBehavior() && !e.isDefaultPrevented()) {\r\n            this._fireChangeEvent();\r\n            this._selectFirstPart(e)\r\n        }\r\n    },\r\n    _valueChangeEventHandler: function(e) {\r\n        var text = this.option(\"text\");\r\n        if (this._useMaskBehavior()) {\r\n            this._saveValueChangeEvent(e);\r\n            if (!text) {\r\n                this._maskValue = null\r\n            } else {\r\n                if (null === this._maskValue) {\r\n                    this._loadMaskValue(text)\r\n                }\r\n            }\r\n            this._saveMaskValue()\r\n        } else {\r\n            this.callBase(e)\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"useMaskBehavior\":\r\n                this._renderMask();\r\n                break;\r\n            case \"displayFormat\":\r\n            case \"mode\":\r\n                this.callBase(args);\r\n                this._renderMask();\r\n                break;\r\n            case \"value\":\r\n                this._loadMaskValue();\r\n                this.callBase(args);\r\n                this._renderDateParts();\r\n                break;\r\n            case \"emptyDateValue\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clearMaskState: function() {\r\n        this._clearSearchValue();\r\n        delete this._dateParts;\r\n        delete this._activePartIndex;\r\n        delete this._maskValue\r\n    },\r\n    reset: function() {\r\n        this.callBase();\r\n        this._clearMaskState();\r\n        this._activePartIndex = 0\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        this._detachMaskEvents();\r\n        this._clearMaskState()\r\n    }\r\n});\r\nvar _default = DateBoxMask;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/templates/template_engine_registry.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.registerTemplateEngine = registerTemplateEngine;\r\nexports.setTemplateEngine = setTemplateEngine;\r\nexports.getCurrentTemplateEngine = getCurrentTemplateEngine;\r\nvar _type = require(\"../utils/type\");\r\nvar _errors = _interopRequireDefault(require(\"../errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar templateEngines = {};\r\nvar currentTemplateEngine;\r\n\r\nfunction registerTemplateEngine(name, templateEngine) {\r\n    templateEngines[name] = templateEngine\r\n}\r\n\r\nfunction setTemplateEngine(templateEngine) {\r\n    if ((0, _type.isString)(templateEngine)) {\r\n        currentTemplateEngine = templateEngines[templateEngine];\r\n        if (!currentTemplateEngine) {\r\n            throw _errors.default.Error(\"E0020\", templateEngine)\r\n        }\r\n    } else {\r\n        currentTemplateEngine = templateEngine\r\n    }\r\n}\r\n\r\nfunction getCurrentTemplateEngine() {\r\n    return currentTemplateEngine\r\n}\r\n","/**\r\n * DevExtreme (ui/track_bar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _editor = _interopRequireDefault(require(\"./editor/editor\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _fx = _interopRequireDefault(require(\"../animation/fx\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TRACKBAR_CLASS = \"dx-trackbar\";\r\nvar TRACKBAR_CONTAINER_CLASS = \"dx-trackbar-container\";\r\nvar TRACKBAR_RANGE_CLASS = \"dx-trackbar-range\";\r\nvar TRACKBAR_WRAPPER_CLASS = \"dx-trackbar-wrapper\";\r\nvar TrackBar = _editor.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            min: 0,\r\n            max: 100,\r\n            value: 0\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(TRACKBAR_CLASS);\r\n        this._renderWrapper();\r\n        this._renderContainer();\r\n        this._renderRange();\r\n        this._renderValue();\r\n        this._setRangeStyles();\r\n        this.callBase()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._setRangeStyles(this._rangeStylesConfig())\r\n    },\r\n    _renderWrapper: function() {\r\n        this._$wrapper = (0, _renderer.default)(\"<div>\").addClass(TRACKBAR_WRAPPER_CLASS).appendTo(this.$element())\r\n    },\r\n    _renderContainer: function() {\r\n        this._$bar = (0, _renderer.default)(\"<div>\").addClass(TRACKBAR_CONTAINER_CLASS).appendTo(this._$wrapper)\r\n    },\r\n    _renderRange: function() {\r\n        this._$range = (0, _renderer.default)(\"<div>\").addClass(TRACKBAR_RANGE_CLASS).appendTo(this._$bar)\r\n    },\r\n    _renderValue: function() {\r\n        var val = this.option(\"value\");\r\n        var min = this.option(\"min\");\r\n        var max = this.option(\"max\");\r\n        if (min > max) {\r\n            return\r\n        }\r\n        if (val < min) {\r\n            this.option(\"value\", min);\r\n            this._currentRatio = 0;\r\n            return\r\n        }\r\n        if (val > max) {\r\n            this.option(\"value\", max);\r\n            this._currentRatio = 1;\r\n            return\r\n        }\r\n        var ratio = min === max ? 0 : (val - min) / (max - min);\r\n        !this._needPreventAnimation && this._setRangeStyles({\r\n            width: 100 * ratio + \"%\"\r\n        });\r\n        this.setAria({\r\n            valuemin: this.option(\"min\"),\r\n            valuemax: max,\r\n            valuenow: val\r\n        });\r\n        this._currentRatio = ratio\r\n    },\r\n    _rangeStylesConfig: function() {\r\n        return {\r\n            width: 100 * this._currentRatio + \"%\"\r\n        }\r\n    },\r\n    _setRangeStyles: function(options) {\r\n        _fx.default.stop(this._$range);\r\n        if (!options) {\r\n            this._$range.css({\r\n                width: 0\r\n            });\r\n            return\r\n        }\r\n        if (this._needPreventAnimation || !(0, _window.hasWindow)()) {\r\n            return\r\n        }\r\n        _fx.default.animate(this._$range, {\r\n            type: \"custom\",\r\n            duration: 100,\r\n            to: options\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"value\":\r\n                this._renderValue();\r\n                this.callBase(args);\r\n                break;\r\n            case \"max\":\r\n            case \"min\":\r\n                this._renderValue();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        _fx.default.stop(this._$range);\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxTrackBar\", TrackBar);\r\nvar _default = TrackBar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/calendar/ui.calendar.base_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _element = require(\"../../core/element\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _ui.default.abstract;\r\nvar CALENDAR_OTHER_VIEW_CLASS = \"dx-calendar-other-view\";\r\nvar CALENDAR_CELL_CLASS = \"dx-calendar-cell\";\r\nvar CALENDAR_EMPTY_CELL_CLASS = \"dx-calendar-empty-cell\";\r\nvar CALENDAR_TODAY_CLASS = \"dx-calendar-today\";\r\nvar CALENDAR_SELECTED_DATE_CLASS = \"dx-calendar-selected-date\";\r\nvar CALENDAR_CONTOURED_DATE_CLASS = \"dx-calendar-contoured-date\";\r\nvar CALENDAR_DXCLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, \"dxCalendar\");\r\nvar CALENDAR_DATE_VALUE_KEY = \"dxDateValueKey\";\r\nvar BaseView = _ui.default.inherit({\r\n    _getViewName: function() {\r\n        return \"base\"\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            date: new Date,\r\n            focusStateEnabled: false,\r\n            cellTemplate: null,\r\n            disabledDates: null,\r\n            onCellClick: null,\r\n            rowCount: 3,\r\n            colCount: 4,\r\n            allowValueSelection: true,\r\n            _todayDate: function() {\r\n                return new Date\r\n            }\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        var value = this.option(\"value\");\r\n        this.option(\"value\", new Date(value));\r\n        if (!this.option(\"value\").valueOf()) {\r\n            this.option(\"value\", new Date(0, 0, 0, 0, 0, 0))\r\n        }\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._renderImpl()\r\n    },\r\n    _renderImpl: function() {\r\n        this.$element().append(this._createTable());\r\n        this._createDisabledDatesHandler();\r\n        this._renderBody();\r\n        this._renderContouredDate();\r\n        this._renderValue();\r\n        this._renderEvents()\r\n    },\r\n    _createTable: function() {\r\n        this._$table = (0, _renderer.default)(\"<table>\");\r\n        this.setAria({\r\n            label: _message.default.format(\"dxCalendar-ariaWidgetName\"),\r\n            role: \"grid\"\r\n        }, this._$table);\r\n        return this._$table\r\n    },\r\n    _renderBody: function() {\r\n        this.$body = (0, _renderer.default)(\"<tbody>\").appendTo(this._$table);\r\n        var rowData = {\r\n            cellDate: this._getFirstCellData(),\r\n            prevCellDate: null\r\n        };\r\n        for (var rowIndex = 0, rowCount = this.option(\"rowCount\"); rowIndex < rowCount; rowIndex++) {\r\n            rowData.row = this._createRow();\r\n            for (var colIndex = 0, colCount = this.option(\"colCount\"); colIndex < colCount; colIndex++) {\r\n                this._renderCell(rowData, colIndex)\r\n            }\r\n        }\r\n    },\r\n    _createRow: function() {\r\n        var row = _dom_adapter.default.createElement(\"tr\");\r\n        this.setAria(\"role\", \"row\", (0, _renderer.default)(row));\r\n        this.$body.get(0).appendChild(row);\r\n        return row\r\n    },\r\n    _appendCell: function(row, cell) {\r\n        if (!this._appendMethodName) {\r\n            this._cacheAppendMethodName()\r\n        }(0, _renderer.default)(row)[this._appendMethodName](cell)\r\n    },\r\n    _cacheAppendMethodName: function(rtlEnabled) {\r\n        this._appendMethodName = (null !== rtlEnabled && void 0 !== rtlEnabled ? rtlEnabled : this.option(\"rtlEnabled\")) ? \"prepend\" : \"append\"\r\n    },\r\n    _createCell: function(cellDate) {\r\n        var cell = _dom_adapter.default.createElement(\"td\");\r\n        var $cell = (0, _renderer.default)(cell);\r\n        cell.className = this._getClassNameByDate(cellDate);\r\n        cell.setAttribute(\"data-value\", _date_serialization.default.serializeDate(cellDate, _date.default.getShortDateFormat()));\r\n        (0, _element_data.data)(cell, CALENDAR_DATE_VALUE_KEY, cellDate);\r\n        this.setAria({\r\n            role: \"gridcell\",\r\n            label: this.getCellAriaLabel(cellDate)\r\n        }, $cell);\r\n        return {\r\n            cell: cell,\r\n            $cell: $cell\r\n        }\r\n    },\r\n    _renderCell: function(params, cellIndex) {\r\n        var cellDate = params.cellDate,\r\n            prevCellDate = params.prevCellDate,\r\n            row = params.row;\r\n        if (prevCellDate) {\r\n            _date.default.fixTimezoneGap(prevCellDate, cellDate)\r\n        }\r\n        params.prevCellDate = cellDate;\r\n        var _this$_createCell = this._createCell(cellDate),\r\n            cell = _this$_createCell.cell,\r\n            $cell = _this$_createCell.$cell;\r\n        var cellTemplate = this.option(\"cellTemplate\");\r\n        this._appendCell(row, cell);\r\n        if (cellTemplate) {\r\n            cellTemplate.render(this._prepareCellTemplateData(cellDate, cellIndex, $cell))\r\n        } else {\r\n            cell.innerHTML = this._getCellText(cellDate)\r\n        }\r\n        params.cellDate = this._getNextCellData(cellDate)\r\n    },\r\n    _getClassNameByDate: function(cellDate) {\r\n        var className = CALENDAR_CELL_CLASS;\r\n        if (this._isTodayCell(cellDate)) {\r\n            className += \" \".concat(CALENDAR_TODAY_CLASS)\r\n        }\r\n        if (this._isDateOutOfRange(cellDate) || this.isDateDisabled(cellDate)) {\r\n            className += \" \".concat(CALENDAR_EMPTY_CELL_CLASS)\r\n        }\r\n        if (this._isOtherView(cellDate)) {\r\n            className += \" \".concat(CALENDAR_OTHER_VIEW_CLASS)\r\n        }\r\n        return className\r\n    },\r\n    _prepareCellTemplateData: function(cellDate, cellIndex, $cell) {\r\n        return {\r\n            model: {\r\n                text: this._getCellText(cellDate),\r\n                date: cellDate,\r\n                view: this._getViewName()\r\n            },\r\n            container: (0, _element.getPublicElement)($cell),\r\n            index: cellIndex\r\n        }\r\n    },\r\n    _renderEvents: function() {\r\n        var _this = this;\r\n        this._createCellClickAction();\r\n        _events_engine.default.off(this._$table, CALENDAR_DXCLICK_EVENT_NAME);\r\n        _events_engine.default.on(this._$table, CALENDAR_DXCLICK_EVENT_NAME, \"td\", function(e) {\r\n            if (!(0, _renderer.default)(e.currentTarget).hasClass(CALENDAR_EMPTY_CELL_CLASS)) {\r\n                _this._cellClickAction({\r\n                    event: e,\r\n                    value: (0, _renderer.default)(e.currentTarget).data(CALENDAR_DATE_VALUE_KEY)\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _createCellClickAction: function() {\r\n        this._cellClickAction = this._createActionByOption(\"onCellClick\")\r\n    },\r\n    _createDisabledDatesHandler: function() {\r\n        var disabledDates = this.option(\"disabledDates\");\r\n        this._disabledDatesHandler = Array.isArray(disabledDates) ? this._getDefaultDisabledDatesHandler(disabledDates) : disabledDates || _common.noop\r\n    },\r\n    _getDefaultDisabledDatesHandler: function(disabledDates) {\r\n        return _common.noop\r\n    },\r\n    _isTodayCell: abstract,\r\n    _isDateOutOfRange: abstract,\r\n    isDateDisabled: function(cellDate) {\r\n        var dateParts = {\r\n            date: cellDate,\r\n            view: this._getViewName()\r\n        };\r\n        return this._disabledDatesHandler(dateParts)\r\n    },\r\n    _isOtherView: abstract,\r\n    _getCellText: abstract,\r\n    _getFirstCellData: abstract,\r\n    _getNextCellData: abstract,\r\n    _renderContouredDate: function(contouredDate) {\r\n        if (!this.option(\"focusStateEnabled\")) {\r\n            return\r\n        }\r\n        contouredDate = contouredDate || this.option(\"contouredDate\");\r\n        var $oldContouredCell = this._$table.find(\".\".concat(CALENDAR_CONTOURED_DATE_CLASS));\r\n        var $newContouredCell = this._getCellByDate(contouredDate);\r\n        $oldContouredCell.removeClass(CALENDAR_CONTOURED_DATE_CLASS);\r\n        $newContouredCell.addClass(CALENDAR_CONTOURED_DATE_CLASS)\r\n    },\r\n    _changeValue: function(cellDate) {\r\n        if (cellDate) {\r\n            var value = this.option(\"value\");\r\n            var newValue = value ? new Date(value) : new Date;\r\n            newValue.setDate(cellDate.getDate());\r\n            newValue.setMonth(cellDate.getMonth());\r\n            newValue.setFullYear(cellDate.getFullYear());\r\n            newValue.setDate(cellDate.getDate());\r\n            this.option(\"value\", newValue)\r\n        } else {\r\n            this.option(\"value\", null)\r\n        }\r\n    },\r\n    _renderValue: function() {\r\n        if (!this.option(\"allowValueSelection\")) {\r\n            return\r\n        }\r\n        var value = this.option(\"value\");\r\n        var selectedCell = this._getCellByDate(value);\r\n        if (this._selectedCell) {\r\n            this._selectedCell.removeClass(CALENDAR_SELECTED_DATE_CLASS)\r\n        }\r\n        selectedCell.addClass(CALENDAR_SELECTED_DATE_CLASS);\r\n        this._selectedCell = selectedCell\r\n    },\r\n    getCellAriaLabel: function(date) {\r\n        return this._getCellText(date)\r\n    },\r\n    _getFirstAvailableDate: function() {\r\n        var date = this.option(\"date\");\r\n        var min = this.option(\"min\");\r\n        date = _date.default.getFirstDateView(this._getViewName(), date);\r\n        return new Date(min && date < min ? min : date)\r\n    },\r\n    _getCellByDate: abstract,\r\n    isBoundary: abstract,\r\n    _optionChanged: function(args) {\r\n        var name = args.name,\r\n            value = args.value;\r\n        switch (name) {\r\n            case \"value\":\r\n                this._renderValue();\r\n                break;\r\n            case \"contouredDate\":\r\n                this._renderContouredDate(value);\r\n                break;\r\n            case \"onCellClick\":\r\n                this._createCellClickAction();\r\n                break;\r\n            case \"disabledDates\":\r\n            case \"cellTemplate\":\r\n                this._invalidate();\r\n                break;\r\n            case \"rtlEnabled\":\r\n                this._cacheAppendMethodName(value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"_todayDate\":\r\n                this._renderBody();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = BaseView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.fill_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.pattern_fill_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar fillHelper = {\r\n    tryCreateTag: function(sourceObj) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(sourceObj)) {\r\n            result = {\r\n                patternFill: _excel2.default.tryCreateTag(sourceObj.patternFill)\r\n            };\r\n            if (fillHelper.isEmpty(result)) {\r\n                result = null\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    tryCreateFillFromSimpleFormat: function() {\r\n        var _ref = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\r\n            backgroundColor = _ref.backgroundColor,\r\n            fillPatternType = _ref.fillPatternType,\r\n            fillPatternColor = _ref.fillPatternColor;\r\n        if ((0, _type.isDefined)(backgroundColor) && !((0, _type.isDefined)(fillPatternType) && (0, _type.isDefined)(fillPatternColor))) {\r\n            return {\r\n                patternFill: {\r\n                    patternType: \"solid\",\r\n                    foregroundColor: {\r\n                        rgb: backgroundColor\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            if ((0, _type.isDefined)(fillPatternType) && (0, _type.isDefined)(fillPatternColor)) {\r\n                return {\r\n                    patternFill: {\r\n                        patternType: fillPatternType,\r\n                        foregroundColor: {\r\n                            rgb: fillPatternColor\r\n                        },\r\n                        backgroundColor: {\r\n                            rgb: backgroundColor\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    copySimpleFormat: function(source, target) {\r\n        if (void 0 !== source.backgroundColor) {\r\n            target.backgroundColor = source.backgroundColor\r\n        }\r\n        if (void 0 !== source.fillPatternType) {\r\n            target.fillPatternType = source.fillPatternType\r\n        }\r\n        if (void 0 !== source.fillPatternColor) {\r\n            target.fillPatternColor = source.fillPatternColor\r\n        }\r\n    },\r\n    copy: function(source) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(source)) {\r\n            result = {};\r\n            if (void 0 !== source.patternFill) {\r\n                result.patternFill = _excel2.default.copy(source.patternFill)\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    areEqual: function(leftTag, rightTag) {\r\n        return fillHelper.isEmpty(leftTag) && fillHelper.isEmpty(rightTag) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && _excel2.default.areEqual(leftTag.patternFill, rightTag.patternFill)\r\n    },\r\n    isEmpty: function(tag) {\r\n        return !(0, _type.isDefined)(tag) || _excel2.default.isEmpty(tag.patternFill)\r\n    },\r\n    toXml: function(tag) {\r\n        return _excel.default.toXml(\"fill\", {}, _excel2.default.toXml(tag.patternFill))\r\n    }\r\n};\r\nvar _default = fillHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.editing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nrequire(\"./ui.tree_list.editor_factory\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiTree_list2 = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.editing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TREELIST_EXPAND_ICON_CONTAINER_CLASS = \"dx-treelist-icon-container\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-select-checkbox\";\r\nvar DATA_EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar EditingController = _uiGrid_core2.default.controllers.editing.inherit(function() {\r\n    return {\r\n        _generateNewItem: function(key) {\r\n            var item = this.callBase(key);\r\n            item.data = {\r\n                key: key\r\n            };\r\n            item.children = [];\r\n            item.level = 0;\r\n            item.parentKey = this.option(\"rootValue\");\r\n            return item\r\n        },\r\n        _needInsertItem: function(change, changeType, items, item) {\r\n            var parentKey = change.key.parentKey;\r\n            if (void 0 !== parentKey && parentKey !== this.option(\"rootValue\")) {\r\n                var rowIndex = _uiGrid_core.default.getIndexByKey(parentKey, items);\r\n                if (rowIndex >= 0 && this._dataController.isRowExpanded(parentKey)) {\r\n                    items.splice(rowIndex + 1, 0, item)\r\n                }\r\n                return false\r\n            }\r\n            return this.callBase.apply(this, arguments)\r\n        },\r\n        _isEditColumnVisible: function() {\r\n            var result = this.callBase.apply(this, arguments);\r\n            var editingOptions = this.option(\"editing\");\r\n            return result || editingOptions && editingOptions.allowAdding\r\n        },\r\n        _isDefaultButtonVisible: function(button, options) {\r\n            var result = this.callBase.apply(this, arguments);\r\n            var row = options.row;\r\n            if (\"add\" === button.name) {\r\n                return this.allowAdding(options) && row.rowIndex !== this._getVisibleEditRowIndex() && !(row.removed || row.isNewRow)\r\n            }\r\n            return result\r\n        },\r\n        _getEditingButtons: function(options) {\r\n            var buttons = this.callBase.apply(this, arguments);\r\n            if (!options.column.buttons) {\r\n                buttons.unshift(this._getButtonConfig(\"add\", options))\r\n            }\r\n            return buttons\r\n        },\r\n        _beforeSaveEditData: function(change) {\r\n            var dataController = this._dataController;\r\n            var result = this.callBase.apply(this, arguments);\r\n            if (change && change.type !== DATA_EDIT_DATA_INSERT_TYPE) {\r\n                var store = null === dataController || void 0 === dataController ? void 0 : dataController.store();\r\n                var key = null === store || void 0 === store ? void 0 : store.key();\r\n                if (!(0, _type.isDefined)(key)) {\r\n                    throw _ui.default.Error(\"E1045\")\r\n                }\r\n            }\r\n            return result\r\n        },\r\n        addRowByRowIndex: function(rowIndex) {\r\n            var dataController = this.getController(\"data\");\r\n            var row = dataController.getVisibleRows()[rowIndex];\r\n            return this.addRow(row ? row.key : void 0)\r\n        },\r\n        addRow: function(key) {\r\n            var that = this;\r\n            var callBase = that.callBase;\r\n            var dataController = that.getController(\"data\");\r\n            if (void 0 !== key && !dataController.isRowExpanded(key)) {\r\n                var deferred = new _deferred.Deferred;\r\n                dataController.expandRow(key).done(function() {\r\n                    setTimeout(function() {\r\n                        callBase.call(that, key).done(deferred.resolve).fail(deferred.reject)\r\n                    })\r\n                }).fail(deferred.reject);\r\n                return deferred.promise()\r\n            }\r\n            if (void 0 === key) {\r\n                key = that.option(\"rootValue\")\r\n            }\r\n            return callBase.call(that, key)\r\n        },\r\n        _initNewRow: function(options, parentKey) {\r\n            var dataController = this.getController(\"data\");\r\n            var dataSourceAdapter = dataController.dataSource();\r\n            var parentIdSetter = dataSourceAdapter.createParentIdSetter();\r\n            parentIdSetter(options.data, parentKey);\r\n            return this.callBase.apply(this, arguments)\r\n        },\r\n        allowAdding: function(options) {\r\n            return this._allowEditAction(\"allowAdding\", options)\r\n        },\r\n        _needToCloseEditableCell: function($targetElement) {\r\n            return this.callBase.apply(this, arguments) || $targetElement.closest(\".\" + TREELIST_EXPAND_ICON_CONTAINER_CLASS).length && this.isEditing()\r\n        },\r\n        getButtonLocalizationNames: function() {\r\n            var names = this.callBase.apply(this);\r\n            names.add = \"dxTreeList-editingAddRowToNode\";\r\n            return names\r\n        }\r\n    }\r\n}());\r\nvar originalRowClick = _uiGrid_core2.default.extenders.views.rowsView._rowClick;\r\nvar originalRowDblClick = _uiGrid_core2.default.extenders.views.rowsView._rowDblClick;\r\nvar validateClick = function(e) {\r\n    var $targetElement = (0, _renderer.default)(e.event.target);\r\n    var originalClickHandler = \"dxdblclick\" === e.event.type ? originalRowDblClick : originalRowClick;\r\n    if ($targetElement.closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n        return false\r\n    }\r\n    return !needToCallOriginalClickHandler.call(this, e, originalClickHandler)\r\n};\r\n\r\nfunction needToCallOriginalClickHandler(e, originalClickHandler) {\r\n    var $targetElement = (0, _renderer.default)(e.event.target);\r\n    if (!$targetElement.closest(\".\" + TREELIST_EXPAND_ICON_CONTAINER_CLASS).length) {\r\n        originalClickHandler.call(this, e);\r\n        return true\r\n    }\r\n    return false\r\n}\r\nvar RowsViewExtender = (0, _extend.extend)({}, _uiGrid_core2.default.extenders.views.rowsView, {\r\n    _renderCellCommandContent: function($container, options) {\r\n        var editingController = this._editingController;\r\n        var isEditRow = options.row && editingController.isEditRow(options.row.rowIndex);\r\n        var isEditing = options.isEditing || isEditRow;\r\n        if (!isEditing) {\r\n            return this.callBase.apply(this, arguments)\r\n        }\r\n        return false\r\n    },\r\n    _rowClick: function(e) {\r\n        if (validateClick.call(this, e)) {\r\n            this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    _rowDblClick: function(e) {\r\n        if (validateClick.call(this, e)) {\r\n            this.callBase.apply(this, arguments)\r\n        }\r\n    }\r\n});\r\n_uiTree_list2.default.registerModule(\"editing\", {\r\n    defaultOptions: function() {\r\n        return (0, _extend.extend)(true, _uiGrid_core2.default.defaultOptions(), {\r\n            editing: {\r\n                texts: {\r\n                    addRowToNode: _message.default.format(\"dxTreeList-editingAddRowToNode\")\r\n                }\r\n            }\r\n        })\r\n    },\r\n    controllers: {\r\n        editing: EditingController\r\n    },\r\n    extenders: {\r\n        controllers: (0, _extend.extend)(true, {}, _uiGrid_core2.default.extenders.controllers, {\r\n            data: {\r\n                changeRowExpand: function() {\r\n                    this._editingController.refresh();\r\n                    return this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        }),\r\n        views: {\r\n            rowsView: RowsViewExtender,\r\n            headerPanel: _uiGrid_core2.default.extenders.views.headerPanel\r\n        }\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/shared/ui.editor_factory_mixin.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nrequire(\"../text_box\");\r\nrequire(\"../number_box\");\r\nrequire(\"../check_box\");\r\nrequire(\"../select_box\");\r\nrequire(\"../date_box\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar isWrapped = _variable_wrapper.default.isWrapped;\r\nvar CHECKBOX_SIZE_CLASS = \"checkbox-size\";\r\nvar EDITOR_INLINE_BLOCK = \"dx-editor-inline-block\";\r\nvar EditorFactoryMixin = function() {\r\n    var getResultConfig = function(config, options) {\r\n        return (0, _extend.extend)(config, {\r\n            readOnly: options.readOnly,\r\n            placeholder: options.placeholder,\r\n            inputAttr: {\r\n                id: options.id\r\n            },\r\n            tabIndex: options.tabIndex\r\n        }, options.editorOptions)\r\n    };\r\n    var checkEnterBug = function() {\r\n        return _browser.default.msie || _browser.default.mozilla || _devices.default.real().ios\r\n    };\r\n    var getTextEditorConfig = function(options) {\r\n        var data = {};\r\n        var isEnterBug = checkEnterBug();\r\n        var sharedData = options.sharedData || data;\r\n        return getResultConfig({\r\n            placeholder: options.placeholder,\r\n            width: options.width,\r\n            value: options.value,\r\n            onValueChanged: function(e) {\r\n                var needDelayedUpdate = \"filterRow\" === options.parentType || \"searchPanel\" === options.parentType;\r\n                var isInputOrKeyUpEvent = e.event && (\"input\" === e.event.type || \"keyup\" === e.event.type);\r\n                var updateValue = function(e, notFireEvent) {\r\n                    options && options.setValue(e.value, notFireEvent)\r\n                };\r\n                clearTimeout(data.valueChangeTimeout);\r\n                if (isInputOrKeyUpEvent && needDelayedUpdate) {\r\n                    sharedData.valueChangeTimeout = data.valueChangeTimeout = setTimeout(function() {\r\n                        updateValue(e, data.valueChangeTimeout !== sharedData.valueChangeTimeout)\r\n                    }, (0, _type.isDefined)(options.updateValueTimeout) ? options.updateValueTimeout : 0)\r\n                } else {\r\n                    updateValue(e)\r\n                }\r\n            },\r\n            onKeyDown: function(e) {\r\n                if (isEnterBug && \"enter\" === (0, _index.normalizeKeyName)(e.event)) {\r\n                    _events_engine.default.trigger((0, _renderer.default)(e.component._input()), \"change\")\r\n                }\r\n            },\r\n            valueChangeEvent: \"change\" + (\"filterRow\" === options.parentType ? \" keyup input\" : \"\")\r\n        }, options)\r\n    };\r\n    var prepareDateBox = function(options) {\r\n        options.editorName = \"dxDateBox\";\r\n        options.editorOptions = getResultConfig({\r\n            value: options.value,\r\n            onValueChanged: function(args) {\r\n                options.setValue(args.value)\r\n            },\r\n            onKeyDown: function(e) {\r\n                if (checkEnterBug() && \"enter\" === (0, _index.normalizeKeyName)(e.event)) {\r\n                    e.component.blur();\r\n                    e.component.focus()\r\n                }\r\n            },\r\n            displayFormat: options.format,\r\n            type: options.dataType,\r\n            dateSerializationFormat: null,\r\n            width: \"filterBuilder\" === options.parentType ? void 0 : \"auto\"\r\n        }, options)\r\n    };\r\n    var prepareTextBox = function(options) {\r\n        var config = getTextEditorConfig(options);\r\n        var isSearching = \"searchPanel\" === options.parentType;\r\n        var toString = function(value) {\r\n            return (0, _type.isDefined)(value) ? value.toString() : \"\"\r\n        };\r\n        if (options.editorType && \"dxTextBox\" !== options.editorType) {\r\n            config.value = options.value\r\n        } else {\r\n            config.value = toString(options.value)\r\n        }\r\n        config.valueChangeEvent += isSearching ? \" keyup input search\" : \"\";\r\n        config.mode = config.mode || (isSearching ? \"search\" : \"text\");\r\n        options.editorName = \"dxTextBox\";\r\n        options.editorOptions = config\r\n    };\r\n    var prepareNumberBox = function(options) {\r\n        var config = getTextEditorConfig(options);\r\n        config.value = (0, _type.isDefined)(options.value) ? options.value : null;\r\n        options.editorName = \"dxNumberBox\";\r\n        options.editorOptions = config\r\n    };\r\n    var prepareBooleanEditor = function(options) {\r\n        if (\"filterRow\" === options.parentType || \"filterBuilder\" === options.parentType) {\r\n            prepareSelectBox((0, _extend.extend)(options, {\r\n                lookup: {\r\n                    displayExpr: function(data) {\r\n                        if (true === data) {\r\n                            return options.trueText || \"true\"\r\n                        } else {\r\n                            if (false === data) {\r\n                                return options.falseText || \"false\"\r\n                            }\r\n                        }\r\n                    },\r\n                    dataSource: [true, false]\r\n                }\r\n            }))\r\n        } else {\r\n            prepareCheckBox(options)\r\n        }\r\n    };\r\n\r\n    function watchLookupDataSource(options) {\r\n        if (options.row && options.row.watch && \"dataRow\" === options.parentType) {\r\n            var editorOptions = options.editorOptions || {};\r\n            options.editorOptions = editorOptions;\r\n            var selectBox;\r\n            var onInitialized = editorOptions.onInitialized;\r\n            editorOptions.onInitialized = function(e) {\r\n                onInitialized && onInitialized.apply(this, arguments);\r\n                selectBox = e.component;\r\n                selectBox.on(\"disposing\", stopWatch)\r\n            };\r\n            var dataSource;\r\n            var stopWatch = options.row.watch(function() {\r\n                dataSource = options.lookup.dataSource(options.row);\r\n                return dataSource && dataSource.filter\r\n            }, function() {\r\n                selectBox.option(\"dataSource\", dataSource)\r\n            }, function(row) {\r\n                options.row = row\r\n            })\r\n        }\r\n    }\r\n\r\n    function prepareSelectBox(options) {\r\n        var lookup = options.lookup;\r\n        var displayGetter;\r\n        var dataSource;\r\n        var postProcess;\r\n        var isFilterRow = \"filterRow\" === options.parentType;\r\n        if (lookup) {\r\n            displayGetter = (0, _data.compileGetter)(lookup.displayExpr);\r\n            dataSource = lookup.dataSource;\r\n            if ((0, _type.isFunction)(dataSource) && !isWrapped(dataSource)) {\r\n                dataSource = dataSource(options.row || {});\r\n                watchLookupDataSource(options)\r\n            }\r\n            if ((0, _type.isObject)(dataSource) || Array.isArray(dataSource)) {\r\n                dataSource = (0, _utils.normalizeDataSourceOptions)(dataSource);\r\n                if (isFilterRow) {\r\n                    postProcess = dataSource.postProcess;\r\n                    dataSource.postProcess = function(items) {\r\n                        if (0 === this.pageIndex()) {\r\n                            items = items.slice(0);\r\n                            items.unshift(null)\r\n                        }\r\n                        if (postProcess) {\r\n                            return postProcess.call(this, items)\r\n                        }\r\n                        return items\r\n                    }\r\n                }\r\n            }\r\n            var allowClearing = Boolean(lookup.allowClearing && !isFilterRow);\r\n            options.editorName = \"dxSelectBox\";\r\n            options.editorOptions = getResultConfig({\r\n                searchEnabled: true,\r\n                value: options.value,\r\n                valueExpr: options.lookup.valueExpr,\r\n                searchExpr: options.lookup.searchExpr || options.lookup.displayExpr,\r\n                allowClearing: allowClearing,\r\n                showClearButton: allowClearing,\r\n                displayExpr: function(data) {\r\n                    if (null === data) {\r\n                        return options.showAllText\r\n                    }\r\n                    return displayGetter(data)\r\n                },\r\n                dataSource: dataSource,\r\n                onValueChanged: function(e) {\r\n                    var params = [e.value];\r\n                    !isFilterRow && params.push(e.component.option(\"text\"));\r\n                    options.setValue.apply(this, params)\r\n                }\r\n            }, options)\r\n        }\r\n    }\r\n\r\n    function prepareCheckBox(options) {\r\n        options.editorName = \"dxCheckBox\";\r\n        options.editorOptions = getResultConfig({\r\n            elementAttr: {\r\n                id: options.id\r\n            },\r\n            value: (0, _type.isDefined)(options.value) ? options.value : void 0,\r\n            hoverStateEnabled: !options.readOnly,\r\n            focusStateEnabled: !options.readOnly,\r\n            activeStateEnabled: false,\r\n            onValueChanged: function(e) {\r\n                options.setValue && options.setValue(e.value, e)\r\n            }\r\n        }, options)\r\n    }\r\n    var createEditorCore = function(that, options) {\r\n        var $editorElement = (0, _renderer.default)(options.editorElement);\r\n        if (options.editorName && options.editorOptions && $editorElement[options.editorName]) {\r\n            if (\"dxCheckBox\" === options.editorName || \"dxSwitch\" === options.editorName) {\r\n                if (!options.isOnForm) {\r\n                    $editorElement.addClass(that.addWidgetPrefix(CHECKBOX_SIZE_CLASS));\r\n                    $editorElement.parent().addClass(EDITOR_INLINE_BLOCK)\r\n                }\r\n            }\r\n            that._createComponent($editorElement, options.editorName, options.editorOptions);\r\n            if (\"dxTextBox\" === options.editorName) {\r\n                $editorElement.dxTextBox(\"instance\").registerKeyHandler(\"enter\", _common.noop)\r\n            }\r\n            if (\"dxDateBox\" === options.editorName) {\r\n                $editorElement.dxDateBox(\"instance\").registerKeyHandler(\"enter\", function() {\r\n                    return true\r\n                })\r\n            }\r\n            if (\"dxTextArea\" === options.editorName) {\r\n                $editorElement.dxTextArea(\"instance\").registerKeyHandler(\"enter\", function(event) {\r\n                    if (\"enter\" === (0, _index.normalizeKeyName)(event) && !event.ctrlKey && !event.shiftKey) {\r\n                        event.stopPropagation()\r\n                    }\r\n                })\r\n            }\r\n        }\r\n    };\r\n    return {\r\n        createEditor: function($container, options) {\r\n            options.cancel = false;\r\n            options.editorElement = (0, _element.getPublicElement)($container);\r\n            if (!(0, _type.isDefined)(options.tabIndex)) {\r\n                options.tabIndex = this.option(\"tabIndex\")\r\n            }\r\n            if (options.lookup) {\r\n                prepareSelectBox(options)\r\n            } else {\r\n                switch (options.dataType) {\r\n                    case \"date\":\r\n                    case \"datetime\":\r\n                        prepareDateBox(options);\r\n                        break;\r\n                    case \"boolean\":\r\n                        prepareBooleanEditor(options);\r\n                        break;\r\n                    case \"number\":\r\n                        prepareNumberBox(options);\r\n                        break;\r\n                    default:\r\n                        prepareTextBox(options)\r\n                }\r\n            }\r\n            var editorName = options.editorName;\r\n            this.executeAction(\"onEditorPreparing\", options);\r\n            if (options.cancel) {\r\n                return\r\n            } else {\r\n                if (\"dataRow\" === options.parentType && options.editorType && editorName === options.editorName) {\r\n                    options.editorName = options.editorType\r\n                }\r\n            }\r\n            if (\"dataRow\" === options.parentType && !options.isOnForm && !(0, _type.isDefined)(options.editorOptions.showValidationMark)) {\r\n                options.editorOptions.showValidationMark = false\r\n            }\r\n            createEditorCore(this, options);\r\n            this.executeAction(\"onEditorPrepared\", options)\r\n        }\r\n    }\r\n}();\r\nvar _default = EditorFactoryMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.export.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataProvider = exports.ExportMixin = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _exporter = require(\"../../exporter\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.export_mixin\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_DATA_TYPE = \"string\";\r\nvar COLUMN_HEADER_STYLE_ID = 0;\r\nvar ROW_HEADER_STYLE_ID = 1;\r\nvar DATA_STYLE_OFFSET = 2;\r\nvar DEFAUL_COLUMN_WIDTH = 100;\r\nvar ExportMixin = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n    exportToExcel: function() {\r\n        var that = this;\r\n        (0, _exporter.export)(that.getDataProvider(), {\r\n            fileName: that.option(\"export.fileName\"),\r\n            proxyUrl: that.option(\"export.proxyUrl\"),\r\n            format: \"EXCEL\",\r\n            rtlEnabled: that.option(\"rtlEnabled\"),\r\n            ignoreErrors: that.option(\"export.ignoreExcelErrors\"),\r\n            exportingAction: that._actions.onExporting,\r\n            exportedAction: that._actions.onExported,\r\n            fileSavingAction: that._actions.onFileSaving\r\n        }, _exporter.excel.getData)\r\n    },\r\n    _getLength: function(items) {\r\n        var i;\r\n        var itemCount = items[0].length;\r\n        var cellCount = 0;\r\n        for (i = 0; i < itemCount; i++) {\r\n            cellCount += items[0][i].colspan || 1\r\n        }\r\n        return cellCount\r\n    },\r\n    _correctCellsInfoItemLengths: function(cellsInfo, expectedLength) {\r\n        for (var i = 0; i < cellsInfo.length; i++) {\r\n            while (cellsInfo[i].length < expectedLength) {\r\n                cellsInfo[i].push({})\r\n            }\r\n        }\r\n        return cellsInfo\r\n    },\r\n    _calculateCellInfoItemLength: function(columnsRow) {\r\n        var result = 0;\r\n        for (var columnIndex = 0; columnIndex < columnsRow.length; columnIndex++) {\r\n            result += (0, _type.isDefined)(columnsRow[columnIndex].colspan) ? columnsRow[columnIndex].colspan : 1\r\n        }\r\n        return result\r\n    },\r\n    _getAllItems: function(columnsInfo, rowsInfoItems, cellsInfo) {\r\n        var cellIndex;\r\n        var rowIndex;\r\n        var correctedCellsInfo = cellsInfo;\r\n        var rowsLength = this._getLength(rowsInfoItems);\r\n        var headerRowsCount = columnsInfo.length;\r\n        if (columnsInfo.length > 0 && columnsInfo[0].length > 0 && cellsInfo.length > 0 && 0 === cellsInfo[0].length) {\r\n            var cellInfoItemLength = this._calculateCellInfoItemLength(columnsInfo[0]);\r\n            if (cellInfoItemLength > 0) {\r\n                correctedCellsInfo = this._correctCellsInfoItemLengths(cellsInfo, cellInfoItemLength)\r\n            }\r\n        }\r\n        var sourceItems = columnsInfo.concat(correctedCellsInfo);\r\n        for (rowIndex = 0; rowIndex < rowsInfoItems.length; rowIndex++) {\r\n            for (cellIndex = rowsInfoItems[rowIndex].length - 1; cellIndex >= 0; cellIndex--) {\r\n                if (!(0, _type.isDefined)(sourceItems[rowIndex + headerRowsCount])) {\r\n                    sourceItems[rowIndex + headerRowsCount] = []\r\n                }\r\n                sourceItems[rowIndex + headerRowsCount].splice(0, 0, (0, _extend.extend)({}, rowsInfoItems[rowIndex][cellIndex]))\r\n            }\r\n        }\r\n        sourceItems[0].splice(0, 0, (0, _extend.extend)({}, this._getEmptyCell(), {\r\n            alignment: this._options.rtlEnabled ? \"right\" : \"left\",\r\n            colspan: rowsLength,\r\n            rowspan: headerRowsCount\r\n        }));\r\n        return this._prepareItems(sourceItems)\r\n    },\r\n    getDataProvider: function() {\r\n        var that = this;\r\n        var dataController = this._dataController;\r\n        var items = new _deferred.Deferred;\r\n        dataController.beginLoading();\r\n        setTimeout(function() {\r\n            var columnsInfo = (0, _extend.extend)(true, [], dataController.getColumnsInfo(true));\r\n            var rowsInfoItems = (0, _extend.extend)(true, [], dataController.getRowsInfo(true));\r\n            var cellsInfo = dataController.getCellsInfo(true);\r\n            items.resolve(that._getAllItems(columnsInfo, rowsInfoItems, cellsInfo));\r\n            dataController.endLoading()\r\n        });\r\n        return new DataProvider({\r\n            items: items,\r\n            rtlEnabled: this.option(\"rtlEnabled\"),\r\n            dataFields: this.getDataSource().getAreaFields(\"data\"),\r\n            customizeExcelCell: this.option(\"export.customizeExcelCell\"),\r\n            rowsArea: this._rowsArea,\r\n            columnsArea: this._columnsArea\r\n        })\r\n    }\r\n});\r\nexports.ExportMixin = ExportMixin;\r\n\r\nfunction getCellDataType(field) {\r\n    if (field && field.customizeText) {\r\n        return \"string\"\r\n    }\r\n    if (field.dataType) {\r\n        return field.dataType\r\n    }\r\n    if (field.format) {\r\n        if (1 === _number.default.parse(_format_helper.default.format(1, field.format))) {\r\n            return \"number\"\r\n        }\r\n        if (_format_helper.default.format(new Date, field.format)) {\r\n            return \"date\"\r\n        }\r\n    }\r\n    return DEFAULT_DATA_TYPE\r\n}\r\nvar DataProvider = _class.default.inherit({\r\n    ctor: function(options) {\r\n        this._options = options;\r\n        this._styles = []\r\n    },\r\n    ready: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var dataFields = options.dataFields;\r\n        return (0, _deferred.when)(options.items).done(function(items) {\r\n            var headerSize = items[0][0].rowspan;\r\n            var columns = items[headerSize - 1];\r\n            var dataItemStyle = {\r\n                alignment: options.rtlEnabled ? \"left\" : \"right\"\r\n            };\r\n            that._styles = [{\r\n                alignment: \"center\",\r\n                dataType: \"string\"\r\n            }, {\r\n                alignment: options.rtlEnabled ? \"right\" : \"left\",\r\n                dataType: \"string\"\r\n            }];\r\n            if (dataFields.length) {\r\n                dataFields.forEach(function(dataField) {\r\n                    that._styles.push((0, _extend.extend)({}, dataItemStyle, {\r\n                        format: dataField.format,\r\n                        dataType: getCellDataType(dataField)\r\n                    }))\r\n                })\r\n            } else {\r\n                that._styles.push(dataItemStyle)\r\n            }(0, _iterator.each)(columns, function(columnIndex, column) {\r\n                column.width = DEFAUL_COLUMN_WIDTH\r\n            });\r\n            options.columns = columns;\r\n            options.items = items\r\n        })\r\n    },\r\n    getColumns: function() {\r\n        return this._options.columns\r\n    },\r\n    getColumnsWidths: function() {\r\n        var colsArea = this._options.columnsArea;\r\n        var rowsArea = this._options.rowsArea;\r\n        var columns = this._options.columns;\r\n        var useDefaultWidth = !(0, _window.hasWindow)() || \"virtual\" === colsArea.option(\"scrolling.mode\") || colsArea.element().is(\":hidden\");\r\n        return useDefaultWidth ? columns.map(function(_) {\r\n            return DEFAUL_COLUMN_WIDTH\r\n        }) : rowsArea.getColumnsWidth().concat(colsArea.getColumnsWidth())\r\n    },\r\n    getRowsCount: function() {\r\n        return this._options.items.length\r\n    },\r\n    getGroupLevel: function() {\r\n        return 0\r\n    },\r\n    getCellMerging: function(rowIndex, cellIndex) {\r\n        var items = this._options.items;\r\n        var item = items[rowIndex] && items[rowIndex][cellIndex];\r\n        return item ? {\r\n            colspan: item.colspan - 1,\r\n            rowspan: item.rowspan - 1\r\n        } : {\r\n            colspan: 0,\r\n            rowspan: 0\r\n        }\r\n    },\r\n    getFrozenArea: function() {\r\n        var items = this._options.items;\r\n        return {\r\n            x: items[0][0].colspan,\r\n            y: items[0][0].rowspan\r\n        }\r\n    },\r\n    getCellType: function(rowIndex, cellIndex) {\r\n        var style = this._styles[this.getStyleId(rowIndex, cellIndex)];\r\n        return style && style.dataType || \"string\"\r\n    },\r\n    getCellData: function(rowIndex, cellIndex, isExcelJS) {\r\n        var result = {};\r\n        var items = this._options.items;\r\n        var item = items[rowIndex] && items[rowIndex][cellIndex] || {};\r\n        if (isExcelJS) {\r\n            result.cellSourceData = item;\r\n            var areaName = this._tryGetAreaName(items, item, rowIndex, cellIndex);\r\n            if (areaName) {\r\n                result.cellSourceData.area = areaName\r\n            }\r\n            result.cellSourceData.rowIndex = rowIndex;\r\n            result.cellSourceData.columnIndex = cellIndex\r\n        }\r\n        if (\"string\" === this.getCellType(rowIndex, cellIndex)) {\r\n            result.value = item.text\r\n        } else {\r\n            result.value = item.value\r\n        }\r\n        if (result.cellSourceData && result.cellSourceData.isWhiteSpace) {\r\n            result.value = \"\"\r\n        }\r\n        return result\r\n    },\r\n    _tryGetAreaName: function(items, item, rowIndex, cellIndex) {\r\n        var columnHeaderSize = items[0][0].rowspan;\r\n        var rowHeaderSize = items[0][0].colspan;\r\n        if (cellIndex >= rowHeaderSize && rowIndex < columnHeaderSize) {\r\n            return \"column\"\r\n        } else {\r\n            if (rowIndex >= columnHeaderSize && cellIndex < rowHeaderSize) {\r\n                return \"row\"\r\n            } else {\r\n                if ((0, _type.isDefined)(item.dataIndex)) {\r\n                    return \"data\"\r\n                }\r\n            }\r\n        }\r\n    },\r\n    getStyles: function() {\r\n        return this._styles\r\n    },\r\n    getStyleId: function(rowIndex, cellIndex) {\r\n        var items = this._options.items;\r\n        var columnHeaderSize = items[0][0].rowspan;\r\n        var rowHeaderSize = items[0][0].colspan;\r\n        var item = items[rowIndex] && items[rowIndex][cellIndex] || {};\r\n        if (0 === cellIndex && 0 === rowIndex) {\r\n            return COLUMN_HEADER_STYLE_ID\r\n        } else {\r\n            if (cellIndex >= rowHeaderSize && rowIndex < columnHeaderSize) {\r\n                return COLUMN_HEADER_STYLE_ID\r\n            } else {\r\n                if (rowIndex >= columnHeaderSize && cellIndex < rowHeaderSize) {\r\n                    return ROW_HEADER_STYLE_ID\r\n                }\r\n            }\r\n        }\r\n        return DATA_STYLE_OFFSET + (item.dataIndex || 0)\r\n    },\r\n    hasCustomizeExcelCell: function() {\r\n        return (0, _type.isDefined)(this._options.customizeExcelCell)\r\n    },\r\n    customizeExcelCell: function(e) {\r\n        if (this._options.customizeExcelCell) {\r\n            this._options.customizeExcelCell(e)\r\n        }\r\n    }\r\n});\r\nexports.DataProvider = DataProvider;\r\n","/**\r\n * DevExtreme (ui/html_editor/formats/mention.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar Mention = {};\r\nif (_devextremeQuill.default) {\r\n    var Embed = _devextremeQuill.default.import(\"blots/embed\");\r\n    var MENTION_CLASS = \"dx-mention\";\r\n    Mention = function(_Embed) {\r\n        _inherits(Mention, _Embed);\r\n        var _super = _createSuper(Mention);\r\n\r\n        function Mention() {\r\n            _classCallCheck(this, Mention);\r\n            return _super.apply(this, arguments)\r\n        }\r\n        _createClass(Mention, null, [{\r\n            key: \"create\",\r\n            value: function(data) {\r\n                var node = _get(_getPrototypeOf(Mention), \"create\", this).call(this);\r\n                node.setAttribute(\"spellcheck\", false);\r\n                node.dataset.marker = data.marker;\r\n                node.dataset.mentionValue = data.value;\r\n                node.dataset.id = data.id;\r\n                this.renderContent(node, data);\r\n                return node\r\n            }\r\n        }, {\r\n            key: \"value\",\r\n            value: function(node) {\r\n                return {\r\n                    marker: node.dataset.marker,\r\n                    id: node.dataset.id,\r\n                    value: node.dataset.mentionValue\r\n                }\r\n            }\r\n        }, {\r\n            key: \"renderContent\",\r\n            value: function(node, data) {\r\n                var template = this._templates.get(data.marker);\r\n                if (template) {\r\n                    template.render({\r\n                        model: data,\r\n                        container: node\r\n                    })\r\n                } else {\r\n                    this.baseContentRender(node, data)\r\n                }\r\n            }\r\n        }, {\r\n            key: \"baseContentRender\",\r\n            value: function(node, data) {\r\n                var $marker = (0, _renderer.default)(\"<span>\").text(data.marker);\r\n                (0, _renderer.default)(node).append($marker).append(data.value)\r\n            }\r\n        }, {\r\n            key: \"addTemplate\",\r\n            value: function(marker, template) {\r\n                this._templates.set(marker, template)\r\n            }\r\n        }, {\r\n            key: \"removeTemplate\",\r\n            value: function(marker) {\r\n                this._templates.delete(marker)\r\n            }\r\n        }]);\r\n        return Mention\r\n    }(Embed);\r\n    Mention.blotName = \"mention\";\r\n    Mention.tagName = \"span\";\r\n    Mention.className = MENTION_CLASS;\r\n    Mention._templates = new Map\r\n}\r\nvar _default = Mention;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/core/emitter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar Emitter = _class.default.inherit({\r\n    ctor: function(element) {\r\n        this._$element = (0, _renderer.default)(element);\r\n        this._cancelCallback = (0, _callbacks.default)();\r\n        this._acceptCallback = (0, _callbacks.default)()\r\n    },\r\n    getElement: function() {\r\n        return this._$element\r\n    },\r\n    validate: function(e) {\r\n        return !(0, _index.isDxMouseWheelEvent)(e)\r\n    },\r\n    validatePointers: function(e) {\r\n        return 1 === (0, _index.hasTouches)(e)\r\n    },\r\n    allowInterruptionByMouseWheel: function() {\r\n        return true\r\n    },\r\n    configure: function(data) {\r\n        (0, _extend.extend)(this, data)\r\n    },\r\n    addCancelCallback: function(callback) {\r\n        this._cancelCallback.add(callback)\r\n    },\r\n    removeCancelCallback: function() {\r\n        this._cancelCallback.empty()\r\n    },\r\n    _cancel: function(e) {\r\n        this._cancelCallback.fire(this, e)\r\n    },\r\n    addAcceptCallback: function(callback) {\r\n        this._acceptCallback.add(callback)\r\n    },\r\n    removeAcceptCallback: function() {\r\n        this._acceptCallback.empty()\r\n    },\r\n    _accept: function(e) {\r\n        this._acceptCallback.fire(this, e)\r\n    },\r\n    _requestAccept: function(e) {\r\n        this._acceptRequestEvent = e\r\n    },\r\n    _forgetAccept: function() {\r\n        this._accept(this._acceptRequestEvent);\r\n        this._acceptRequestEvent = null\r\n    },\r\n    start: _common.noop,\r\n    move: _common.noop,\r\n    end: _common.noop,\r\n    cancel: _common.noop,\r\n    reset: function() {\r\n        if (this._acceptRequestEvent) {\r\n            this._accept(this._acceptRequestEvent)\r\n        }\r\n    },\r\n    _fireEvent: function(eventName, e, params) {\r\n        var eventData = (0, _extend.extend)({\r\n            type: eventName,\r\n            originalEvent: e,\r\n            target: this._getEmitterTarget(e),\r\n            delegateTarget: this.getElement().get(0)\r\n        }, params);\r\n        e = (0, _index.fireEvent)(eventData);\r\n        if (e.cancel) {\r\n            this._cancel(e)\r\n        }\r\n        return e\r\n    },\r\n    _getEmitterTarget: function(e) {\r\n        return (this.delegateSelector ? (0, _renderer.default)(e.target).closest(this.delegateSelector) : this.getElement()).get(0)\r\n    },\r\n    dispose: _common.noop\r\n});\r\nvar _default = Emitter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/gauges/base_gauge.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.compareArrays = compareArrays;\r\nexports.getSampleText = exports.formatValue = exports.dxBaseGauge = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _translator1d = require(\"../translators/translator1d\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _theme_manager = _interopRequireDefault(require(\"./theme_manager\"));\r\nvar _tracker = _interopRequireDefault(require(\"./tracker\"));\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _export = require(\"../core/export\");\r\nvar _title = require(\"../core/title\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _loading_indicator = require(\"../core/loading_indicator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _Number = Number;\r\nvar _extend = _extend2.extend;\r\nvar _format = _format_helper.default.format;\r\nvar dxBaseGauge = _base_widget.default.inherit({\r\n    _rootClassPrefix: \"dxg\",\r\n    _themeSection: \"gauge\",\r\n    _createThemeManager: function() {\r\n        return new _theme_manager.default.ThemeManager(this._getThemeManagerOptions())\r\n    },\r\n    _initCore: function() {\r\n        var that = this;\r\n        var root = that._renderer.root;\r\n        that._valueChangingLocker = 0;\r\n        that._translator = that._factory.createTranslator();\r\n        that._tracker = that._factory.createTracker({\r\n            renderer: that._renderer,\r\n            container: root\r\n        });\r\n        that._setTrackerCallbacks()\r\n    },\r\n    _beginValueChanging: function() {\r\n        this._resetIsReady();\r\n        this._onBeginUpdate();\r\n        ++this._valueChangingLocker\r\n    },\r\n    _endValueChanging: function() {\r\n        if (0 === --this._valueChangingLocker) {\r\n            this._drawn()\r\n        }\r\n    },\r\n    _setTrackerCallbacks: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var tooltip = that._tooltip;\r\n        that._tracker.setCallbacks({\r\n            \"tooltip-show\": function(target, info, callback) {\r\n                var tooltipParameters = target.getTooltipParameters();\r\n                var offset = renderer.getRootOffset();\r\n                var formatObject = _extend({\r\n                    value: tooltipParameters.value,\r\n                    valueText: tooltip.formatValue(tooltipParameters.value),\r\n                    color: tooltipParameters.color\r\n                }, info);\r\n                return tooltip.show(formatObject, {\r\n                    x: tooltipParameters.x + offset.left,\r\n                    y: tooltipParameters.y + offset.top,\r\n                    offset: tooltipParameters.offset\r\n                }, {\r\n                    target: info\r\n                }, void 0, callback)\r\n            },\r\n            \"tooltip-hide\": function() {\r\n                return tooltip.hide()\r\n            }\r\n        })\r\n    },\r\n    _dispose: function() {\r\n        this._cleanCore();\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _disposeCore: function() {\r\n        var that = this;\r\n        that._themeManager.dispose();\r\n        that._tracker.dispose();\r\n        that._translator = that._tracker = null\r\n    },\r\n    _cleanCore: function() {\r\n        var that = this;\r\n        that._tracker.deactivate();\r\n        that._cleanContent()\r\n    },\r\n    _renderCore: function() {\r\n        var that = this;\r\n        if (!that._isValidDomain) {\r\n            return\r\n        }\r\n        that._renderContent();\r\n        that._tracker.setTooltipState(that._tooltip.isEnabled());\r\n        that._tracker.activate();\r\n        that._noAnimation = false\r\n    },\r\n    _applyChanges: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._resizing = this._noAnimation = false\r\n    },\r\n    _setContentSize: function() {\r\n        var that = this;\r\n        that._resizing = that._noAnimation = 2 === that._changes.count();\r\n        that.callBase.apply(that, arguments)\r\n    },\r\n    _applySize: function(rect) {\r\n        var that = this;\r\n        that._innerRect = {\r\n            left: rect[0],\r\n            top: rect[1],\r\n            right: rect[2],\r\n            bottom: rect[3]\r\n        };\r\n        var layoutCache = that._layout._cache;\r\n        that._cleanCore();\r\n        that._renderCore();\r\n        that._layout._cache = that._layout._cache || layoutCache;\r\n        return [rect[0], that._innerRect.top, rect[2], that._innerRect.bottom]\r\n    },\r\n    _initialChanges: [\"DOMAIN\"],\r\n    _themeDependentChanges: [\"DOMAIN\"],\r\n    _optionChangesMap: {\r\n        subtitle: \"MOSTLY_TOTAL\",\r\n        indicator: \"MOSTLY_TOTAL\",\r\n        geometry: \"MOSTLY_TOTAL\",\r\n        animation: \"MOSTLY_TOTAL\",\r\n        startValue: \"DOMAIN\",\r\n        endValue: \"DOMAIN\"\r\n    },\r\n    _optionChangesOrder: [\"DOMAIN\", \"MOSTLY_TOTAL\"],\r\n    _change_DOMAIN: function() {\r\n        this._setupDomain()\r\n    },\r\n    _change_MOSTLY_TOTAL: function() {\r\n        this._applyMostlyTotalChange()\r\n    },\r\n    _setupDomain: function() {\r\n        var that = this;\r\n        that._setupDomainCore();\r\n        that._isValidDomain = isFinite(1 / (that._translator.getDomain()[1] - that._translator.getDomain()[0]));\r\n        if (!that._isValidDomain) {\r\n            that._incidentOccurred(\"W2301\")\r\n        }\r\n        that._change([\"MOSTLY_TOTAL\"])\r\n    },\r\n    _applyMostlyTotalChange: function() {\r\n        var that = this;\r\n        that._setupCodomain();\r\n        that._setupAnimationSettings();\r\n        that._setupDefaultFormat();\r\n        that._change([\"LAYOUT\"])\r\n    },\r\n    _setupAnimationSettings: function() {\r\n        var that = this;\r\n        var option = that.option(\"animation\");\r\n        that._animationSettings = null;\r\n        if (void 0 === option || option) {\r\n            option = _extend({\r\n                enabled: true,\r\n                duration: 1e3,\r\n                easing: \"easeOutCubic\"\r\n            }, option);\r\n            if (option.enabled && option.duration > 0) {\r\n                that._animationSettings = {\r\n                    duration: _Number(option.duration),\r\n                    easing: option.easing\r\n                }\r\n            }\r\n        }\r\n        that._containerBackgroundColor = that.option(\"containerBackgroundColor\") || that._themeManager.theme().containerBackgroundColor\r\n    },\r\n    _setupDefaultFormat: function() {\r\n        var domain = this._translator.getDomain();\r\n        this._defaultFormatOptions = (0, _utils.getAppropriateFormat)(domain[0], domain[1], this._getApproximateScreenRange())\r\n    },\r\n    _setupDomainCore: null,\r\n    _calculateSize: null,\r\n    _cleanContent: null,\r\n    _renderContent: null,\r\n    _setupCodomain: null,\r\n    _getApproximateScreenRange: null,\r\n    _factory: {\r\n        createTranslator: function() {\r\n            return new _translator1d.Translator1D\r\n        },\r\n        createTracker: function(parameters) {\r\n            return new _tracker.default(parameters)\r\n        }\r\n    }\r\n});\r\nexports.dxBaseGauge = dxBaseGauge;\r\nvar formatValue = function(value, options, extra) {\r\n    options = options || {};\r\n    var text = _format(value, options.format);\r\n    var formatObject;\r\n    if (\"function\" === typeof options.customizeText) {\r\n        formatObject = _extend({\r\n            value: value,\r\n            valueText: text\r\n        }, extra);\r\n        return String(options.customizeText.call(formatObject, formatObject))\r\n    }\r\n    return text\r\n};\r\nexports.formatValue = formatValue;\r\nvar getSampleText = function(translator, options) {\r\n    var text1 = formatValue(translator.getDomainStart(), options);\r\n    var text2 = formatValue(translator.getDomainEnd(), options);\r\n    return text1.length >= text2.length ? text1 : text2\r\n};\r\nexports.getSampleText = getSampleText;\r\n\r\nfunction compareArrays(array1, array2) {\r\n    return array1 && array2 && array1.length === array2.length && compareArraysElements(array1, array2)\r\n}\r\n\r\nfunction compareArraysElements(array1, array2) {\r\n    var i;\r\n    var ii = array1.length;\r\n    var array1ValueIsNaN;\r\n    var array2ValueIsNaN;\r\n    for (i = 0; i < ii; ++i) {\r\n        array1ValueIsNaN = array1[i] !== array1[i];\r\n        array2ValueIsNaN = array2[i] !== array2[i];\r\n        if (array1ValueIsNaN && array2ValueIsNaN) {\r\n            continue\r\n        }\r\n        if (array1[i] !== array2[i]) {\r\n            return false\r\n        }\r\n    }\r\n    return true\r\n}\r\ndxBaseGauge.addPlugin(_export.plugin);\r\ndxBaseGauge.addPlugin(_title.plugin);\r\ndxBaseGauge.addPlugin(_tooltip.plugin);\r\ndxBaseGauge.addPlugin(_loading_indicator.plugin);\r\nvar _setTooltipOptions = dxBaseGauge.prototype._setTooltipOptions;\r\ndxBaseGauge.prototype._setTooltipOptions = function() {\r\n    _setTooltipOptions.apply(this, arguments);\r\n    this._tracker && this._tracker.setTooltipState(this._tooltip.isEnabled())\r\n};\r\n","/**\r\n * DevExtreme (ui/responsive_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _box = _interopRequireDefault(require(\"./box\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar RESPONSIVE_BOX_CLASS = \"dx-responsivebox\";\r\nvar SCREEN_SIZE_CLASS_PREFIX = RESPONSIVE_BOX_CLASS + \"-screen-\";\r\nvar BOX_ITEM_CLASS = \"dx-box-item\";\r\nvar BOX_ITEM_DATA_KEY = \"dxBoxItemData\";\r\nvar HD_SCREEN_WIDTH = 1920;\r\nvar ResponsiveBox = _uiCollection_widget.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            rows: [],\r\n            cols: [],\r\n            screenByWidth: null,\r\n            singleColumnScreen: \"\",\r\n            height: \"100%\",\r\n            width: \"100%\",\r\n            activeStateEnabled: false,\r\n            focusStateEnabled: false,\r\n            onItemStateChanged: void 0,\r\n            onLayoutChanged: null,\r\n            currentScreenFactor: void 0,\r\n            _layoutStrategy: void 0\r\n        })\r\n    },\r\n    _init: function() {\r\n        if (!this.option(\"screenByWidth\")) {\r\n            this._options.silent(\"screenByWidth\", _window.defaultScreenFactorFunc)\r\n        }\r\n        this.callBase();\r\n        this._initLayoutChangedAction()\r\n    },\r\n    _initLayoutChangedAction: function() {\r\n        this._layoutChangedAction = this._createActionByOption(\"onLayoutChanged\", {\r\n            excludeValidators: [\"disabled\", \"readonly\"]\r\n        })\r\n    },\r\n    _itemClass: function() {\r\n        return BOX_ITEM_CLASS\r\n    },\r\n    _itemDataKey: function() {\r\n        return BOX_ITEM_DATA_KEY\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this.$element().addClass(RESPONSIVE_BOX_CLASS);\r\n        this._updateRootBox()\r\n    },\r\n    _updateRootBox: function() {\r\n        clearTimeout(this._updateTimer);\r\n        this._updateTimer = setTimeout(function() {\r\n            if (this._$root) {\r\n                _events_engine.default.triggerHandler(this._$root, \"dxupdate\")\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _renderItems: function() {\r\n        this._setScreenSize();\r\n        this._screenItems = this._itemsByScreen();\r\n        this._prepareGrid();\r\n        this._spreadItems();\r\n        this._layoutItems();\r\n        this._linkNodeToItem()\r\n    },\r\n    _itemOptionChanged: function(item) {\r\n        var $item = this._findItemElementByItem(item);\r\n        if (!$item.length) {\r\n            return\r\n        }\r\n        this._refreshItem($item, item);\r\n        this._clearItemNodeTemplates();\r\n        this._update(true)\r\n    },\r\n    _setScreenSize: function() {\r\n        var currentScreen = this._getCurrentScreen();\r\n        this._removeScreenSizeClass();\r\n        this.$element().addClass(SCREEN_SIZE_CLASS_PREFIX + currentScreen);\r\n        this.option(\"currentScreenFactor\", currentScreen)\r\n    },\r\n    _removeScreenSizeClass: function() {\r\n        var currentScreenFactor = this.option(\"currentScreenFactor\");\r\n        currentScreenFactor && this.$element().removeClass(SCREEN_SIZE_CLASS_PREFIX + currentScreenFactor)\r\n    },\r\n    _prepareGrid: function() {\r\n        var grid = this._grid = [];\r\n        this._prepareRowsAndCols();\r\n        (0, _iterator.each)(this._rows, function() {\r\n            var row = [];\r\n            grid.push(row);\r\n            (0, _iterator.each)(this._cols, function() {\r\n                row.push(this._createEmptyCell())\r\n            }.bind(this))\r\n        }.bind(this))\r\n    },\r\n    getSingleColumnRows: function() {\r\n        var rows = this.option(\"rows\");\r\n        var screenItemsLength = this._screenItems.length;\r\n        if (rows.length) {\r\n            var filteredRows = this._filterByScreen(rows);\r\n            var result = [];\r\n            for (var i = 0; i < screenItemsLength; i++) {\r\n                var sizeConfig = this._defaultSizeConfig();\r\n                if (i < filteredRows.length && (0, _type.isDefined)(filteredRows[i].shrink)) {\r\n                    sizeConfig.shrink = filteredRows[i].shrink\r\n                }\r\n                result.push(sizeConfig)\r\n            }\r\n            return result\r\n        } else {\r\n            return this._defaultSizeConfig(screenItemsLength)\r\n        }\r\n    },\r\n    _prepareRowsAndCols: function() {\r\n        if (this._isSingleColumnScreen()) {\r\n            this._prepareSingleColumnScreenItems();\r\n            this._rows = this.getSingleColumnRows();\r\n            this._cols = this._defaultSizeConfig(1)\r\n        } else {\r\n            this._rows = this._sizesByScreen(this.option(\"rows\"));\r\n            this._cols = this._sizesByScreen(this.option(\"cols\"))\r\n        }\r\n    },\r\n    _isSingleColumnScreen: function() {\r\n        return this._screenRegExp().test(this.option(\"singleColumnScreen\")) || !this.option(\"rows\").length || !this.option(\"cols\").length\r\n    },\r\n    _prepareSingleColumnScreenItems: function() {\r\n        this._screenItems.sort(function(item1, item2) {\r\n            return item1.location.row - item2.location.row || item1.location.col - item2.location.col\r\n        });\r\n        (0, _iterator.each)(this._screenItems, function(index, item) {\r\n            (0, _extend.extend)(item.location, {\r\n                row: index,\r\n                col: 0,\r\n                rowspan: 1,\r\n                colspan: 1\r\n            })\r\n        })\r\n    },\r\n    _sizesByScreen: function(sizeConfigs) {\r\n        return (0, _iterator.map)(this._filterByScreen(sizeConfigs), function(sizeConfig) {\r\n            return (0, _extend.extend)(this._defaultSizeConfig(), sizeConfig)\r\n        }.bind(this))\r\n    },\r\n    _createDefaultSizeConfig: function() {\r\n        return {\r\n            ratio: 1,\r\n            baseSize: 0,\r\n            minSize: 0,\r\n            maxSize: 0\r\n        }\r\n    },\r\n    _defaultSizeConfig: function(size) {\r\n        var defaultSizeConfig = this._createDefaultSizeConfig();\r\n        if (!arguments.length) {\r\n            return defaultSizeConfig\r\n        }\r\n        var result = [];\r\n        for (var i = 0; i < size; i++) {\r\n            result.push(defaultSizeConfig)\r\n        }\r\n        return result\r\n    },\r\n    _filterByScreen: function(items) {\r\n        var screenRegExp = this._screenRegExp();\r\n        return (0, _common.grep)(items, function(item) {\r\n            return !item.screen || screenRegExp.test(item.screen)\r\n        })\r\n    },\r\n    _screenRegExp: function() {\r\n        var screen = this._getCurrentScreen();\r\n        return new RegExp(\"(^|\\\\s)\" + screen + \"($|\\\\s)\", \"i\")\r\n    },\r\n    _getCurrentScreen: function() {\r\n        var width = this._screenWidth();\r\n        return this.option(\"screenByWidth\")(width)\r\n    },\r\n    _screenWidth: function() {\r\n        return (0, _window.hasWindow)() ? (0, _renderer.default)(window).width() : HD_SCREEN_WIDTH\r\n    },\r\n    _createEmptyCell: function() {\r\n        return {\r\n            item: {},\r\n            location: {\r\n                colspan: 1,\r\n                rowspan: 1\r\n            }\r\n        }\r\n    },\r\n    _spreadItems: function() {\r\n        (0, _iterator.each)(this._screenItems, function(_, itemInfo) {\r\n            var location = itemInfo.location || {};\r\n            var itemCol = location.col;\r\n            var itemRow = location.row;\r\n            var row = this._grid[itemRow];\r\n            var itemCell = row && row[itemCol];\r\n            this._occupyCells(itemCell, itemInfo)\r\n        }.bind(this))\r\n    },\r\n    _itemsByScreen: function() {\r\n        var _this = this;\r\n        return this.option(\"items\").reduce(function(result, item) {\r\n            var locations = item.location || {};\r\n            locations = (0, _type.isPlainObject)(locations) ? [locations] : locations;\r\n            _this._filterByScreen(locations).forEach(function(location) {\r\n                result.push({\r\n                    item: item,\r\n                    location: (0, _extend.extend)({\r\n                        rowspan: 1,\r\n                        colspan: 1\r\n                    }, location)\r\n                })\r\n            });\r\n            return result\r\n        }, [])\r\n    },\r\n    _occupyCells: function(itemCell, itemInfo) {\r\n        if (!itemCell || this._isItemCellOccupied(itemCell, itemInfo)) {\r\n            return\r\n        }(0, _extend.extend)(itemCell, itemInfo);\r\n        this._markSpanningCell(itemCell)\r\n    },\r\n    _isItemCellOccupied: function(itemCell, itemInfo) {\r\n        if (!(0, _type.isEmptyObject)(itemCell.item)) {\r\n            return true\r\n        }\r\n        var result = false;\r\n        this._loopOverSpanning(itemInfo.location, function(cell) {\r\n            result = result || !(0, _type.isEmptyObject)(cell.item)\r\n        });\r\n        return result\r\n    },\r\n    _loopOverSpanning: function(location, callback) {\r\n        var rowEnd = location.row + location.rowspan - 1;\r\n        var colEnd = location.col + location.colspan - 1;\r\n        var boundRowEnd = Math.min(rowEnd, this._rows.length - 1);\r\n        var boundColEnd = Math.min(colEnd, this._cols.length - 1);\r\n        location.rowspan -= rowEnd - boundRowEnd;\r\n        location.colspan -= colEnd - boundColEnd;\r\n        for (var rowIndex = location.row; rowIndex <= boundRowEnd; rowIndex++) {\r\n            for (var colIndex = location.col; colIndex <= boundColEnd; colIndex++) {\r\n                if (rowIndex !== location.row || colIndex !== location.col) {\r\n                    callback(this._grid[rowIndex][colIndex])\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _markSpanningCell: function(itemCell) {\r\n        this._loopOverSpanning(itemCell.location, function(cell) {\r\n            (0, _extend.extend)(cell, {\r\n                item: itemCell.item,\r\n                spanningCell: itemCell\r\n            })\r\n        })\r\n    },\r\n    _linkNodeToItem: function() {\r\n        (0, _iterator.each)(this._itemElements(), function(_, itemNode) {\r\n            var $item = (0, _renderer.default)(itemNode);\r\n            var item = $item.data(BOX_ITEM_DATA_KEY);\r\n            if (!item.box) {\r\n                item.node = $item.children()\r\n            }\r\n        })\r\n    },\r\n    _layoutItems: function() {\r\n        var rowsCount = this._grid.length;\r\n        var colsCount = rowsCount && this._grid[0].length;\r\n        if (!rowsCount && !colsCount) {\r\n            return\r\n        }\r\n        var result = this._layoutBlock({\r\n            direction: \"col\",\r\n            row: {\r\n                start: 0,\r\n                end: rowsCount - 1\r\n            },\r\n            col: {\r\n                start: 0,\r\n                end: colsCount - 1\r\n            }\r\n        });\r\n        var rootBox = this._prepareBoxConfig(result.box || {\r\n            direction: \"row\",\r\n            items: [(0, _extend.extend)(result, {\r\n                ratio: 1\r\n            })]\r\n        });\r\n        (0, _extend.extend)(rootBox, this._rootBoxConfig(rootBox.items));\r\n        this._$root = (0, _renderer.default)(\"<div>\").appendTo(this._itemContainer());\r\n        this._createComponent(this._$root, _box.default, rootBox)\r\n    },\r\n    _rootBoxConfig: function(items) {\r\n        var rootItems = (0, _iterator.each)(items, function(index, item) {\r\n            this._needApplyAutoBaseSize(item) && (0, _extend.extend)(item, {\r\n                baseSize: \"auto\"\r\n            })\r\n        }.bind(this));\r\n        return (0, _extend.extend)({\r\n            width: \"100%\",\r\n            height: \"100%\",\r\n            items: rootItems,\r\n            itemTemplate: this._getTemplateByOption(\"itemTemplate\"),\r\n            itemHoldTimeout: this.option(\"itemHoldTimeout\"),\r\n            onItemHold: this._createActionByOption(\"onItemHold\"),\r\n            onItemClick: this._createActionByOption(\"onItemClick\"),\r\n            onItemContextMenu: this._createActionByOption(\"onItemContextMenu\"),\r\n            onItemRendered: this._createActionByOption(\"onItemRendered\")\r\n        }, {\r\n            _layoutStrategy: this.option(\"_layoutStrategy\")\r\n        })\r\n    },\r\n    _needApplyAutoBaseSize: function(item) {\r\n        return !item.baseSize && (!item.minSize || \"auto\" === item.minSize) && (!item.maxSize || \"auto\" === item.maxSize)\r\n    },\r\n    _prepareBoxConfig: function(config) {\r\n        return (0, _extend.extend)(config || {}, {\r\n            crossAlign: \"stretch\",\r\n            onItemStateChanged: this.option(\"onItemStateChanged\")\r\n        })\r\n    },\r\n    _layoutBlock: function(options) {\r\n        if (this._isSingleItem(options)) {\r\n            return this._itemByCell(options.row.start, options.col.start)\r\n        }\r\n        return this._layoutDirection(options)\r\n    },\r\n    _isSingleItem: function(options) {\r\n        var firstCellLocation = this._grid[options.row.start][options.col.start].location;\r\n        var isItemRowSpanned = options.row.end - options.row.start === firstCellLocation.rowspan - 1;\r\n        var isItemColSpanned = options.col.end - options.col.start === firstCellLocation.colspan - 1;\r\n        return isItemRowSpanned && isItemColSpanned\r\n    },\r\n    _itemByCell: function(rowIndex, colIndex) {\r\n        var itemCell = this._grid[rowIndex][colIndex];\r\n        return itemCell.spanningCell ? null : itemCell.item\r\n    },\r\n    _layoutDirection: function(options) {\r\n        var items = [];\r\n        var direction = options.direction;\r\n        var crossDirection = this._crossDirection(direction);\r\n        var block;\r\n        while (block = this._nextBlock(options)) {\r\n            if (this._isBlockIndivisible(options.prevBlockOptions, block)) {\r\n                throw _ui.default.Error(\"E1025\")\r\n            }\r\n            var item = this._layoutBlock({\r\n                direction: crossDirection,\r\n                row: block.row,\r\n                col: block.col,\r\n                prevBlockOptions: options\r\n            });\r\n            if (item) {\r\n                (0, _extend.extend)(item, this._blockSize(block, crossDirection));\r\n                items.push(item)\r\n            }\r\n            options[crossDirection].start = block[crossDirection].end + 1\r\n        }\r\n        return {\r\n            box: this._prepareBoxConfig({\r\n                direction: direction,\r\n                items: items\r\n            })\r\n        }\r\n    },\r\n    _isBlockIndivisible: function(options, block) {\r\n        return options && options.col.start === block.col.start && options.col.end === block.col.end && options.row.start === block.row.start && options.row.end === block.row.end\r\n    },\r\n    _crossDirection: function(direction) {\r\n        return \"col\" === direction ? \"row\" : \"col\"\r\n    },\r\n    _nextBlock: function(options) {\r\n        var direction = options.direction;\r\n        var crossDirection = this._crossDirection(direction);\r\n        var startIndex = options[direction].start;\r\n        var endIndex = options[direction].end;\r\n        var crossStartIndex = options[crossDirection].start;\r\n        if (crossStartIndex > options[crossDirection].end) {\r\n            return null\r\n        }\r\n        var crossSpan = 1;\r\n        for (var crossIndex = crossStartIndex; crossIndex < crossStartIndex + crossSpan; crossIndex++) {\r\n            var lineCrossSpan = 1;\r\n            for (var index = startIndex; index <= endIndex; index++) {\r\n                var cell = this._cellByDirection(direction, index, crossIndex);\r\n                lineCrossSpan = Math.max(lineCrossSpan, cell.location[crossDirection + \"span\"])\r\n            }\r\n            var lineCrossEndIndex = crossIndex + lineCrossSpan;\r\n            var crossEndIndex = crossStartIndex + crossSpan;\r\n            if (lineCrossEndIndex > crossEndIndex) {\r\n                crossSpan += lineCrossEndIndex - crossEndIndex\r\n            }\r\n        }\r\n        var result = {};\r\n        result[direction] = {\r\n            start: startIndex,\r\n            end: endIndex\r\n        };\r\n        result[crossDirection] = {\r\n            start: crossStartIndex,\r\n            end: crossStartIndex + crossSpan - 1\r\n        };\r\n        return result\r\n    },\r\n    _cellByDirection: function(direction, index, crossIndex) {\r\n        return \"col\" === direction ? this._grid[crossIndex][index] : this._grid[index][crossIndex]\r\n    },\r\n    _blockSize: function(block, direction) {\r\n        var defaultMinSize = \"row\" === direction ? \"auto\" : 0;\r\n        var sizeConfigs = \"row\" === direction ? this._rows : this._cols;\r\n        var result = (0, _extend.extend)(this._createDefaultSizeConfig(), {\r\n            ratio: 0\r\n        });\r\n        for (var index = block[direction].start; index <= block[direction].end; index++) {\r\n            var sizeConfig = sizeConfigs[index];\r\n            result.ratio += sizeConfig.ratio;\r\n            result.baseSize += sizeConfig.baseSize;\r\n            result.minSize += sizeConfig.minSize;\r\n            result.maxSize += sizeConfig.maxSize;\r\n            if ((0, _type.isDefined)(sizeConfig.shrink)) {\r\n                result.shrink = sizeConfig.shrink\r\n            }\r\n        }\r\n        result.minSize = result.minSize ? result.minSize : defaultMinSize;\r\n        result.maxSize = result.maxSize ? result.maxSize : \"auto\";\r\n        this._isSingleColumnScreen() && (result.baseSize = \"auto\");\r\n        return result\r\n    },\r\n    _update: function(forceRemoveRoot) {\r\n        var $existingRoot = this._$root;\r\n        this._renderItems();\r\n        if ($existingRoot) {\r\n            if (forceRemoveRoot) {\r\n                $existingRoot.remove()\r\n            } else {\r\n                $existingRoot.detach();\r\n                this._saveAssistantRoot($existingRoot)\r\n            }\r\n        }\r\n        this._layoutChangedAction();\r\n        this._updateRootBox()\r\n    },\r\n    _saveAssistantRoot: function($root) {\r\n        this._assistantRoots = this._assistantRoots || [];\r\n        this._assistantRoots.push($root)\r\n    },\r\n    _dispose: function() {\r\n        clearTimeout(this._updateTimer);\r\n        this._clearItemNodeTemplates();\r\n        this._cleanUnusedRoots();\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _cleanUnusedRoots: function() {\r\n        if (!this._assistantRoots) {\r\n            return\r\n        }(0, _iterator.each)(this._assistantRoots, function(_, item) {\r\n            (0, _renderer.default)(item).remove()\r\n        })\r\n    },\r\n    _clearItemNodeTemplates: function() {\r\n        (0, _iterator.each)(this.option(\"items\"), function() {\r\n            delete this.node\r\n        })\r\n    },\r\n    _toggleVisibility: function(visible) {\r\n        this.callBase(visible);\r\n        if (visible) {\r\n            this._updateRootBox()\r\n        }\r\n    },\r\n    _attachClickEvent: _common.noop,\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"rows\":\r\n            case \"cols\":\r\n            case \"screenByWidth\":\r\n            case \"_layoutStrategy\":\r\n            case \"singleColumnScreen\":\r\n                this._clearItemNodeTemplates();\r\n                this._invalidate();\r\n                break;\r\n            case \"width\":\r\n            case \"height\":\r\n                this.callBase(args);\r\n                this._update();\r\n                break;\r\n            case \"onLayoutChanged\":\r\n                this._initLayoutChangedAction();\r\n                break;\r\n            case \"itemTemplate\":\r\n                this._clearItemNodeTemplates();\r\n                this.callBase(args);\r\n                break;\r\n            case \"currentScreenFactor\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        if (this._getCurrentScreen() !== this.option(\"currentScreenFactor\")) {\r\n            this._update()\r\n        }\r\n    },\r\n    repaint: function() {\r\n        this._update()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxResponsiveBox\", ResponsiveBox);\r\nvar _default = ResponsiveBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.validating.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _validation_engine = _interopRequireDefault(require(\"../validation_engine\"));\r\nvar _validator = _interopRequireDefault(require(\"../validator\"));\r\nvar _tooltip = _interopRequireDefault(require(\"../tooltip\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar INVALIDATE_CLASS = \"invalid\";\r\nvar REVERT_TOOLTIP_CLASS = \"revert-tooltip\";\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar INVALID_MESSAGE_CLASS = \"dx-invalid-message\";\r\nvar WIDGET_INVALID_MESSAGE_CLASS = \"invalid-message\";\r\nvar INVALID_MESSAGE_ALWAYS_CLASS = \"dx-invalid-message-always\";\r\nvar REVERT_BUTTON_CLASS = \"dx-revert-button\";\r\nvar VALIDATOR_CLASS = \"validator\";\r\nvar PENDING_INDICATOR_CLASS = \"dx-pending-indicator\";\r\nvar VALIDATION_PENDING_CLASS = \"dx-validation-pending\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar INSERT_INDEX = \"__DX_INSERT_INDEX__\";\r\nvar PADDING_BETWEEN_TOOLTIPS = 2;\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar FORM_BASED_MODES = [EDIT_MODE_POPUP, EDIT_MODE_FORM];\r\nvar COMMAND_TRANSPARENT = \"transparent\";\r\nvar VALIDATION_STATUS = {\r\n    valid: \"valid\",\r\n    invalid: \"invalid\",\r\n    pending: \"pending\"\r\n};\r\nvar EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nvar VALIDATION_CANCELLED = \"cancel\";\r\nvar validationResultIsValid = function(result) {\r\n    return (0, _type.isDefined)(result) && result !== VALIDATION_CANCELLED\r\n};\r\nvar cellValueShouldBeValidated = function(value, rowOptions) {\r\n    return void 0 !== value || void 0 === value && rowOptions && !rowOptions.isNewRow\r\n};\r\nvar ValidatingController = _uiGrid_core.default.Controller.inherit(function() {\r\n    return {\r\n        init: function() {\r\n            this._editingController = this.getController(\"editing\");\r\n            this.createAction(\"onRowValidating\");\r\n            if (!this._validationState) {\r\n                this._validationState = []\r\n            }\r\n        },\r\n        _rowIsValidated: function(change) {\r\n            var validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n            return !!validationData && !!validationData.validated\r\n        },\r\n        _getValidationData: function(key, create) {\r\n            var validationData = this._validationState.filter(function(data) {\r\n                return data.key === key\r\n            })[0];\r\n            if (!validationData && create) {\r\n                validationData = {\r\n                    key: key,\r\n                    isValid: true\r\n                };\r\n                this._validationState.push(validationData)\r\n            }\r\n            return validationData\r\n        },\r\n        _getBrokenRules: function(validationData, validationResults) {\r\n            var brokenRules;\r\n            if (validationResults) {\r\n                brokenRules = validationResults.brokenRules || validationResults.brokenRule && [validationResults.brokenRule]\r\n            } else {\r\n                brokenRules = validationData.brokenRules || []\r\n            }\r\n            return brokenRules\r\n        },\r\n        _rowValidating: function(validationData, validationResults) {\r\n            var deferred = new _deferred.Deferred;\r\n            var change = this._editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key);\r\n            var brokenRules = this._getBrokenRules(validationData, validationResults);\r\n            var isValid = validationResults ? validationResults.isValid : validationData.isValid;\r\n            var parameters = {\r\n                brokenRules: brokenRules,\r\n                isValid: isValid,\r\n                key: change.key,\r\n                newData: change.data,\r\n                oldData: this._editingController._getOldData(change.key),\r\n                promise: null,\r\n                errorText: this.getHiddenValidatorsErrorText(brokenRules)\r\n            };\r\n            this.executeAction(\"onRowValidating\", parameters);\r\n            (0, _deferred.when)(parameters.promise).always(function() {\r\n                validationData.isValid = parameters.isValid;\r\n                validationData.errorText = parameters.errorText;\r\n                deferred.resolve(parameters)\r\n            });\r\n            return deferred.promise()\r\n        },\r\n        getHiddenValidatorsErrorText: function(brokenRules) {\r\n            var brokenRulesMessages = [];\r\n            (0, _iterator.each)(brokenRules, function(_, brokenRule) {\r\n                var column = brokenRule.column;\r\n                var isGroupExpandColumn = column && void 0 !== column.groupIndex && !column.showWhenGrouped;\r\n                var isVisibleColumn = column && column.visible;\r\n                if (!brokenRule.validator.$element().parent().length && (!isVisibleColumn || isGroupExpandColumn)) {\r\n                    brokenRulesMessages.push(brokenRule.message)\r\n                }\r\n            });\r\n            return brokenRulesMessages.join(\", \")\r\n        },\r\n        validate: function(isFull) {\r\n            var _this = this;\r\n            var isValid = true;\r\n            var editingController = this._editingController;\r\n            var deferred = new _deferred.Deferred;\r\n            var completeList = [];\r\n            var editMode = editingController.getEditMode();\r\n            isFull = isFull || editMode === EDIT_MODE_ROW;\r\n            if (this._isValidationInProgress) {\r\n                return deferred.resolve(false).promise()\r\n            }\r\n            this._isValidationInProgress = true;\r\n            if (isFull) {\r\n                editingController.addDeferred(deferred);\r\n                var changes = editingController.getChanges();\r\n                (0, _iterator.each)(changes, function(index, _ref) {\r\n                    var type = _ref.type,\r\n                        key = _ref.key;\r\n                    if (\"remove\" !== type) {\r\n                        var validationData = _this._getValidationData(key);\r\n                        var validationResult = _this.validateGroup(validationData);\r\n                        completeList.push(validationResult);\r\n                        validationResult.done(function(validationResult) {\r\n                            validationData.validated = true;\r\n                            isValid = isValid && validationResult.isValid\r\n                        })\r\n                    }\r\n                })\r\n            } else {\r\n                if (this._currentCellValidator) {\r\n                    var validationResult = this.validateGroup(this._currentCellValidator._findGroup());\r\n                    completeList.push(validationResult);\r\n                    validationResult.done(function(validationResult) {\r\n                        isValid = validationResult.isValid\r\n                    })\r\n                }\r\n            }\r\n            _deferred.when.apply(void 0, completeList).done(function() {\r\n                _this._isValidationInProgress = false;\r\n                deferred.resolve(isValid)\r\n            });\r\n            return deferred.promise()\r\n        },\r\n        validateGroup: function validateGroup(validationData) {\r\n            var _validationResult, _this2 = this;\r\n            var result = new _deferred.Deferred;\r\n            var validateGroup = validationData && _validation_engine.default.getGroupConfig(validationData);\r\n            var validationResult;\r\n            if (null !== validateGroup && void 0 !== validateGroup && validateGroup.validators.length) {\r\n                this.resetRowValidationResults(validationData);\r\n                validationResult = _validation_engine.default.validateGroup(validationData)\r\n            }(0, _deferred.when)((null === (_validationResult = validationResult) || void 0 === _validationResult ? void 0 : _validationResult.complete) || validationResult).done(function(validationResult) {\r\n                (0, _deferred.when)(_this2._rowValidating(validationData, validationResult)).done(result.resolve)\r\n            });\r\n            return result.promise()\r\n        },\r\n        isRowDataModified: function(change) {\r\n            return !(0, _type.isEmptyObject)(change.data)\r\n        },\r\n        updateValidationState: function(change) {\r\n            var editMode = this._editingController.getEditMode();\r\n            var key = change.key;\r\n            var validationData = this._getValidationData(key, true);\r\n            if (FORM_BASED_MODES.indexOf(editMode) === -1) {\r\n                if (change.type === EDIT_DATA_INSERT_TYPE && !this.isRowDataModified(change)) {\r\n                    validationData.isValid = true;\r\n                    return\r\n                }\r\n                this.setDisableApplyValidationResults(true);\r\n                var groupConfig = _validation_engine.default.getGroupConfig(validationData);\r\n                if (groupConfig) {\r\n                    var validationResult = _validation_engine.default.validateGroup(validationData);\r\n                    (0, _deferred.when)(validationResult.complete || validationResult).done(function(validationResult) {\r\n                        validationData.isValid = validationResult.isValid;\r\n                        validationData.brokenRules = validationResult.brokenRules\r\n                    })\r\n                } else {\r\n                    if (!validationData.brokenRules || !validationData.brokenRules.length) {\r\n                        validationData.isValid = true\r\n                    }\r\n                }\r\n                this.setDisableApplyValidationResults(false)\r\n            } else {\r\n                validationData.isValid = true\r\n            }\r\n        },\r\n        setValidator: function(validator) {\r\n            this._currentCellValidator = validator\r\n        },\r\n        renderCellPendingIndicator: function($container) {\r\n            var $indicator = $container.find(\".\" + PENDING_INDICATOR_CLASS);\r\n            if (!$indicator.length) {\r\n                var $indicatorContainer = $container;\r\n                $indicator = (0, _renderer.default)(\"<div>\").appendTo($indicatorContainer).addClass(PENDING_INDICATOR_CLASS);\r\n                this._createComponent($indicator, _load_indicator.default);\r\n                $container.addClass(VALIDATION_PENDING_CLASS)\r\n            }\r\n        },\r\n        disposeCellPendingIndicator: function($container) {\r\n            var $indicator = $container.find(\".\" + PENDING_INDICATOR_CLASS);\r\n            if ($indicator.length) {\r\n                var indicator = _load_indicator.default.getInstance($indicator);\r\n                if (indicator) {\r\n                    indicator.dispose();\r\n                    indicator.$element().remove()\r\n                }\r\n                $container.removeClass(VALIDATION_PENDING_CLASS)\r\n            }\r\n        },\r\n        validationStatusChanged: function(result) {\r\n            var validator = result.validator;\r\n            var validationGroup = validator.option(\"validationGroup\");\r\n            var column = validator.option(\"dataGetter\")().column;\r\n            this.updateCellValidationResult({\r\n                rowKey: validationGroup.key,\r\n                columnIndex: column.index,\r\n                validationResult: result\r\n            })\r\n        },\r\n        validatorInitialized: function(arg) {\r\n            arg.component.on(\"validating\", this.validationStatusChanged.bind(this));\r\n            arg.component.on(\"validated\", this.validationStatusChanged.bind(this))\r\n        },\r\n        validatorDisposing: function(arg) {\r\n            var validator = arg.component;\r\n            var validationGroup = validator.option(\"validationGroup\");\r\n            var column = validator.option(\"dataGetter\")().column;\r\n            var result = this.getCellValidationResult({\r\n                rowKey: null === validationGroup || void 0 === validationGroup ? void 0 : validationGroup.key,\r\n                columnIndex: column.index\r\n            });\r\n            if (validationResultIsValid(result) && result.status === VALIDATION_STATUS.pending) {\r\n                this.cancelCellValidationResult({\r\n                    change: validationGroup,\r\n                    columnIndex: column.index\r\n                })\r\n            }\r\n        },\r\n        applyValidationResult: function($container, result) {\r\n            var validator = result.validator;\r\n            var validationGroup = validator.option(\"validationGroup\");\r\n            var column = validator.option(\"dataGetter\")().column;\r\n            result.brokenRules && result.brokenRules.forEach(function(rule) {\r\n                rule.columnIndex = column.index;\r\n                rule.column = column\r\n            });\r\n            if ($container) {\r\n                var validationResult = this.getCellValidationResult({\r\n                    rowKey: validationGroup.key,\r\n                    columnIndex: column.index\r\n                });\r\n                var requestIsDisabled = validationResultIsValid(validationResult) && validationResult.disabledPendingId === result.id;\r\n                if (this._disableApplyValidationResults || requestIsDisabled) {\r\n                    return\r\n                }\r\n                if (result.status === VALIDATION_STATUS.invalid) {\r\n                    var $focus = $container.find(\":focus\");\r\n                    if (!(0, _selectors.focused)($focus)) {\r\n                        _events_engine.default.trigger($focus, \"focus\");\r\n                        _events_engine.default.trigger($focus, _pointer.default.down)\r\n                    }\r\n                }\r\n                var editor = !column.editCellTemplate && this.getController(\"editorFactory\").getEditorInstance($container);\r\n                if (result.status === VALIDATION_STATUS.pending) {\r\n                    if (editor) {\r\n                        editor.option(\"validationStatus\", VALIDATION_STATUS.pending)\r\n                    } else {\r\n                        this.renderCellPendingIndicator($container)\r\n                    }\r\n                } else {\r\n                    if (editor) {\r\n                        editor.option(\"validationStatus\", VALIDATION_STATUS.valid)\r\n                    } else {\r\n                        this.disposeCellPendingIndicator($container)\r\n                    }\r\n                }\r\n                $container.toggleClass(this.addWidgetPrefix(INVALIDATE_CLASS), result.status === VALIDATION_STATUS.invalid)\r\n            }\r\n        },\r\n        createValidator: function(parameters, $container) {\r\n            var _this3 = this;\r\n            var editingController = this._editingController;\r\n            var column = parameters.column;\r\n            var showEditorAlways = column.showEditorAlways;\r\n            if ((0, _type.isDefined)(column.command) || !column.validationRules || !Array.isArray(column.validationRules) || !column.validationRules.length) {\r\n                return\r\n            }\r\n            var editIndex = editingController.getIndexByKey(parameters.key, editingController.getChanges());\r\n            var needCreateValidator = editIndex > -1;\r\n            if (!needCreateValidator) {\r\n                if (!showEditorAlways) {\r\n                    var columnsController = this.getController(\"columns\");\r\n                    var visibleColumns = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getVisibleColumns()) || [];\r\n                    showEditorAlways = visibleColumns.some(function(column) {\r\n                        return column.showEditorAlways\r\n                    })\r\n                }\r\n                var isEditRow = (0, _common.equalByValue)(this.option(\"editing.editRowKey\"), parameters.key);\r\n                var isCellOrBatchEditingAllowed = editingController.isCellOrBatchEditMode() && editingController.allowUpdating({\r\n                    row: parameters.row\r\n                });\r\n                needCreateValidator = isEditRow || isCellOrBatchEditingAllowed && showEditorAlways;\r\n                if (isCellOrBatchEditingAllowed && showEditorAlways) {\r\n                    editingController._addInternalData({\r\n                        key: parameters.key,\r\n                        oldData: parameters.data\r\n                    })\r\n                }\r\n            }\r\n            if (needCreateValidator) {\r\n                if ($container && !$container.length) {\r\n                    _ui.default.log(\"E1050\");\r\n                    return\r\n                }\r\n                var validationData = this._getValidationData(parameters.key, true);\r\n                var getValue = function() {\r\n                    var change = editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key);\r\n                    var value = column.calculateCellValue((null === change || void 0 === change ? void 0 : change.data) || {});\r\n                    return void 0 !== value ? value : parameters.value\r\n                };\r\n                var useDefaultValidator = $container && $container.hasClass(\"dx-widget\");\r\n                $container && $container.addClass(this.addWidgetPrefix(VALIDATOR_CLASS));\r\n                var validator = new _validator.default($container || (0, _renderer.default)(\"<div>\"), {\r\n                    name: column.caption,\r\n                    validationRules: (0, _extend.extend)(true, [], column.validationRules),\r\n                    validationGroup: validationData,\r\n                    adapter: useDefaultValidator ? null : {\r\n                        getValue: getValue,\r\n                        applyValidationResults: function(result) {\r\n                            _this3.applyValidationResult($container, result)\r\n                        }\r\n                    },\r\n                    dataGetter: function() {\r\n                        var key = null === validationData || void 0 === validationData ? void 0 : validationData.key;\r\n                        var change = editingController.getChangeByKey(key);\r\n                        var oldData = editingController._getOldData(key);\r\n                        return {\r\n                            data: (0, _array_utils.createObjectWithChanges)(oldData, null === change || void 0 === change ? void 0 : change.data),\r\n                            column: column\r\n                        }\r\n                    },\r\n                    onInitialized: this.validatorInitialized.bind(this),\r\n                    onDisposing: this.validatorDisposing.bind(this)\r\n                });\r\n                if (useDefaultValidator) {\r\n                    var adapter = validator.option(\"adapter\");\r\n                    if (adapter) {\r\n                        adapter.getValue = getValue;\r\n                        adapter.validationRequestsCallbacks = []\r\n                    }\r\n                }\r\n                return validator\r\n            }\r\n        },\r\n        setDisableApplyValidationResults: function(flag) {\r\n            this._disableApplyValidationResults = flag\r\n        },\r\n        getDisableApplyValidationResults: function() {\r\n            return this._disableApplyValidationResults\r\n        },\r\n        isCurrentValidatorProcessing: function(_ref2) {\r\n            var rowKey = _ref2.rowKey,\r\n                columnIndex = _ref2.columnIndex;\r\n            return this._currentCellValidator && this._currentCellValidator.option(\"validationGroup\").key === rowKey && this._currentCellValidator.option(\"dataGetter\")().column.index === columnIndex\r\n        },\r\n        validateCell: function(validator) {\r\n            var cellParams = {\r\n                rowKey: validator.option(\"validationGroup\").key,\r\n                columnIndex: validator.option(\"dataGetter\")().column.index\r\n            };\r\n            var validationResult = this.getCellValidationResult(cellParams);\r\n            var stateRestored = validationResultIsValid(validationResult);\r\n            if (!stateRestored) {\r\n                validationResult = validator.validate()\r\n            }\r\n            var deferred = new _deferred.Deferred;\r\n            var adapter = validator.option(\"adapter\");\r\n            if (stateRestored && validationResult.status === VALIDATION_STATUS.pending) {\r\n                this.updateCellValidationResult(cellParams);\r\n                adapter.applyValidationResults(validationResult)\r\n            }(0, _deferred.when)(validationResult.complete || validationResult).done(function(validationResult) {\r\n                stateRestored && adapter.applyValidationResults(validationResult);\r\n                deferred.resolve(validationResult)\r\n            });\r\n            return deferred.promise()\r\n        },\r\n        updateCellValidationResult: function(_ref3) {\r\n            var rowKey = _ref3.rowKey,\r\n                columnIndex = _ref3.columnIndex,\r\n                validationResult = _ref3.validationResult;\r\n            var validationData = this._getValidationData(rowKey);\r\n            if (!validationData) {\r\n                return\r\n            }\r\n            if (!validationData.validationResults) {\r\n                validationData.validationResults = {}\r\n            }\r\n            var result;\r\n            if (validationResult) {\r\n                result = (0, _extend.extend)({}, validationResult);\r\n                validationData.validationResults[columnIndex] = result;\r\n                if (validationResult.status === VALIDATION_STATUS.pending) {\r\n                    if (this._editingController.getEditMode() === EDIT_MODE_CELL) {\r\n                        result.deferred = new _deferred.Deferred;\r\n                        result.complete.always(function() {\r\n                            result.deferred.resolve()\r\n                        });\r\n                        this._editingController.addDeferred(result.deferred)\r\n                    }\r\n                    if (this._disableApplyValidationResults) {\r\n                        result.disabledPendingId = validationResult.id;\r\n                        return\r\n                    }\r\n                }\r\n            } else {\r\n                result = validationData.validationResults[columnIndex]\r\n            }\r\n            if (result && result.disabledPendingId) {\r\n                delete result.disabledPendingId\r\n            }\r\n        },\r\n        getCellValidationResult: function(_ref4) {\r\n            var _validationData$valid;\r\n            var rowKey = _ref4.rowKey,\r\n                columnIndex = _ref4.columnIndex;\r\n            var validationData = this._getValidationData(rowKey, true);\r\n            return null === validationData || void 0 === validationData ? void 0 : null === (_validationData$valid = validationData.validationResults) || void 0 === _validationData$valid ? void 0 : _validationData$valid[columnIndex]\r\n        },\r\n        removeCellValidationResult: function(_ref5) {\r\n            var change = _ref5.change,\r\n                columnIndex = _ref5.columnIndex;\r\n            var validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n            if (validationData && validationData.validationResults) {\r\n                this.cancelCellValidationResult({\r\n                    change: change,\r\n                    columnIndex: columnIndex\r\n                });\r\n                delete validationData.validationResults[columnIndex]\r\n            }\r\n        },\r\n        cancelCellValidationResult: function(_ref6) {\r\n            var change = _ref6.change,\r\n                columnIndex = _ref6.columnIndex;\r\n            var validationData = this._getValidationData(change.key);\r\n            if (change && validationData.validationResults) {\r\n                var result = validationData.validationResults[columnIndex];\r\n                if (result) {\r\n                    result.deferred && result.deferred.reject(VALIDATION_CANCELLED);\r\n                    validationData.validationResults[columnIndex] = VALIDATION_CANCELLED\r\n                }\r\n            }\r\n        },\r\n        resetRowValidationResults: function(validationData) {\r\n            if (validationData) {\r\n                validationData.validationResults && delete validationData.validationResults;\r\n                delete validationData.validated\r\n            }\r\n        },\r\n        isInvalidCell: function(_ref7) {\r\n            var rowKey = _ref7.rowKey,\r\n                columnIndex = _ref7.columnIndex;\r\n            var result = this.getCellValidationResult({\r\n                rowKey: rowKey,\r\n                columnIndex: columnIndex\r\n            });\r\n            return validationResultIsValid(result) && result.status === VALIDATION_STATUS.invalid\r\n        },\r\n        getCellValidator: function(_ref8) {\r\n            var rowKey = _ref8.rowKey,\r\n                columnIndex = _ref8.columnIndex;\r\n            var validationData = this._getValidationData(rowKey);\r\n            var groupConfig = validationData && _validation_engine.default.getGroupConfig(validationData);\r\n            var validators = groupConfig && groupConfig.validators;\r\n            return validators && validators.filter(function(v) {\r\n                var column = v.option(\"dataGetter\")().column;\r\n                return column ? column.index === columnIndex : false\r\n            })[0]\r\n        },\r\n        setCellValidationStatus: function(cellOptions) {\r\n            var validationResult = this.getCellValidationResult({\r\n                rowKey: cellOptions.key,\r\n                columnIndex: cellOptions.column.index\r\n            });\r\n            if ((0, _type.isDefined)(validationResult)) {\r\n                cellOptions.validationStatus = validationResult !== VALIDATION_CANCELLED ? validationResult.status : VALIDATION_CANCELLED\r\n            } else {\r\n                delete cellOptions.validationStatus\r\n            }\r\n        }\r\n    }\r\n}());\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            editing: {\r\n                texts: {\r\n                    validationCancelChanges: _message.default.format(\"dxDataGrid-validationCancelChanges\")\r\n                }\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        validating: ValidatingController\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            editing: {\r\n                _addChange: function(options, row) {\r\n                    var index = this.callBase(options, row);\r\n                    var validatingController = this.getController(\"validating\");\r\n                    if (index >= 0 && options.type !== EDIT_DATA_REMOVE_TYPE) {\r\n                        var change = this.getChanges()[index];\r\n                        change && validatingController.updateValidationState(change)\r\n                    }\r\n                    return index\r\n                },\r\n                _handleChangesChange: function(args) {\r\n                    this.callBase.apply(this, arguments);\r\n                    var validatingController = this.getController(\"validating\");\r\n                    args.value.forEach(function(change) {\r\n                        if (void 0 === validatingController._getValidationData(change.key)) {\r\n                            validatingController.updateValidationState(change)\r\n                        }\r\n                    })\r\n                },\r\n                _updateRowAndPageIndices: function() {\r\n                    var _this4 = this;\r\n                    var that = this;\r\n                    var startInsertIndex = that.getView(\"rowsView\").getTopVisibleItemIndex();\r\n                    var rowIndex = startInsertIndex;\r\n                    (0, _iterator.each)(that.getChanges(), function(_, _ref9) {\r\n                        var key = _ref9.key,\r\n                            type = _ref9.type;\r\n                        var validationData = _this4.getController(\"validating\")._getValidationData(key);\r\n                        if (validationData && !validationData.isValid && validationData.pageIndex !== that._pageIndex) {\r\n                            validationData.pageIndex = that._pageIndex;\r\n                            if (type === EDIT_DATA_INSERT_TYPE) {\r\n                                validationData.rowIndex = startInsertIndex\r\n                            } else {\r\n                                validationData.rowIndex = rowIndex\r\n                            }\r\n                            rowIndex++\r\n                        }\r\n                    })\r\n                },\r\n                getEditFormOptions: function(detailOptions) {\r\n                    var editFormOptions = this.callBase.apply(this, arguments);\r\n                    var validatingController = this.getController(\"validating\");\r\n                    var validationData = validatingController._getValidationData(detailOptions.key, true);\r\n                    return (0, _extend.extend)({}, editFormOptions, {\r\n                        validationGroup: validationData\r\n                    })\r\n                },\r\n                _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n                    this.callBase.apply(this, arguments);\r\n                    if (isCustomSetCellValue && this._editForm && !row.isNewRow) {\r\n                        this._editForm.validate()\r\n                    }\r\n                },\r\n                _needInsertItem: function(_ref10) {\r\n                    var key = _ref10.key;\r\n                    var result = this.callBase.apply(this, arguments);\r\n                    var validationData = this.getController(\"validating\")._getValidationData(key);\r\n                    if (result && !(null !== validationData && void 0 !== validationData && validationData.isValid)) {\r\n                        result = key.pageIndex === this._pageIndex\r\n                    }\r\n                    return result\r\n                },\r\n                _prepareEditCell: function(params) {\r\n                    var isNotCanceled = this.callBase.apply(this, arguments);\r\n                    var validatingController = this.getController(\"validating\");\r\n                    if (isNotCanceled && params.column.showEditorAlways) {\r\n                        validatingController.updateValidationState({\r\n                            key: params.key\r\n                        })\r\n                    }\r\n                    return isNotCanceled\r\n                },\r\n                processItems: function(items, changeType) {\r\n                    var that = this;\r\n                    var i;\r\n                    var changes = that.getChanges();\r\n                    var dataController = that.getController(\"data\");\r\n                    var validatingController = this.getController(\"validating\");\r\n                    var getIndexByChange = function(change, items) {\r\n                        var index = -1;\r\n                        var isInsert = change.type === EDIT_DATA_INSERT_TYPE;\r\n                        var key = change.key;\r\n                        (0, _iterator.each)(items, function(i, item) {\r\n                            if ((0, _common.equalByValue)(key, isInsert ? item : dataController.keyOf(item))) {\r\n                                index = i;\r\n                                return false\r\n                            }\r\n                        });\r\n                        return index\r\n                    };\r\n                    items = that.callBase(items, changeType);\r\n                    var itemsCount = items.length;\r\n                    var addInValidItem = function(change, validationData) {\r\n                        var data = {\r\n                            key: change.key\r\n                        };\r\n                        var index = getIndexByChange(change, items);\r\n                        if (index >= 0) {\r\n                            return\r\n                        }\r\n                        validationData.rowIndex = validationData.rowIndex > itemsCount ? validationData.rowIndex % itemsCount : validationData.rowIndex;\r\n                        var rowIndex = validationData.rowIndex;\r\n                        data[INSERT_INDEX] = 1;\r\n                        items.splice(rowIndex, 0, data)\r\n                    };\r\n                    if (that.getEditMode() === EDIT_MODE_BATCH && \"prepend\" !== changeType && \"append\" !== changeType) {\r\n                        for (i = 0; i < changes.length; i++) {\r\n                            var key = changes[i].key;\r\n                            var validationData = validatingController._getValidationData(key);\r\n                            if (validationData && changes[i].type && validationData.pageIndex === that._pageIndex && key.pageIndex !== that._pageIndex) {\r\n                                addInValidItem(changes[i], validationData)\r\n                            }\r\n                        }\r\n                    }\r\n                    return items\r\n                },\r\n                processDataItem: function(item) {\r\n                    var isInserted = item.data[INSERT_INDEX];\r\n                    var key = isInserted ? item.data.key : item.key;\r\n                    var editMode = this.getEditMode();\r\n                    if (editMode === EDIT_MODE_BATCH && isInserted && key) {\r\n                        var changes = this.getChanges();\r\n                        var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n                        if (editIndex >= 0) {\r\n                            var change = changes[editIndex];\r\n                            if (change.type !== EDIT_DATA_INSERT_TYPE) {\r\n                                var oldData = this._getOldData(change.key);\r\n                                item.data = (0, _extend.extend)(true, {}, oldData, change.data);\r\n                                item.key = key\r\n                            }\r\n                        }\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                _getInvisibleColumns: function(changes) {\r\n                    var _this5 = this;\r\n                    var columnsController = this.getController(\"columns\");\r\n                    var hasInvisibleRows;\r\n                    var invisibleColumns = columnsController.getInvisibleColumns();\r\n                    if (this.isCellOrBatchEditMode()) {\r\n                        hasInvisibleRows = changes.some(function(change) {\r\n                            var rowIndex = _this5._dataController.getRowIndexByKey(change.key);\r\n                            return rowIndex < 0\r\n                        })\r\n                    }\r\n                    return hasInvisibleRows ? columnsController.getColumns() : invisibleColumns\r\n                },\r\n                _createInvisibleColumnValidators: function(changes) {\r\n                    var that = this;\r\n                    var validatingController = this.getController(\"validating\");\r\n                    var columnsController = this.getController(\"columns\");\r\n                    var invisibleColumns = this._getInvisibleColumns(changes).filter(function(column) {\r\n                        return !column.isBand\r\n                    });\r\n                    var groupColumns = columnsController.getGroupColumns().filter(function(column) {\r\n                        return !column.showWhenGrouped && invisibleColumns.indexOf(column) === -1\r\n                    });\r\n                    var invisibleColumnValidators = [];\r\n                    invisibleColumns.push.apply(invisibleColumns, _toConsumableArray(groupColumns));\r\n                    if (FORM_BASED_MODES.indexOf(this.getEditMode()) === -1) {\r\n                        (0, _iterator.each)(invisibleColumns, function(_, column) {\r\n                            changes.forEach(function(change) {\r\n                                var data;\r\n                                if (change.type === EDIT_DATA_INSERT_TYPE) {\r\n                                    data = change.data\r\n                                } else {\r\n                                    if (\"update\" === change.type) {\r\n                                        var oldData = that._getOldData(change.key);\r\n                                        data = (0, _array_utils.createObjectWithChanges)(oldData, change.data)\r\n                                    }\r\n                                }\r\n                                if (data) {\r\n                                    var validator = validatingController.createValidator({\r\n                                        column: column,\r\n                                        key: change.key,\r\n                                        value: column.calculateCellValue(data)\r\n                                    });\r\n                                    if (validator) {\r\n                                        invisibleColumnValidators.push(validator)\r\n                                    }\r\n                                }\r\n                            })\r\n                        })\r\n                    }\r\n                    return function() {\r\n                        invisibleColumnValidators.forEach(function(validator) {\r\n                            validator.dispose()\r\n                        })\r\n                    }\r\n                },\r\n                _beforeSaveEditData: function(change, editIndex) {\r\n                    var _this6 = this;\r\n                    var result = this.callBase.apply(this, arguments);\r\n                    var validatingController = this.getController(\"validating\");\r\n                    var validationData = validatingController._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n                    if (change) {\r\n                        var isValid = \"remove\" === change.type || validationData.isValid;\r\n                        result = result || !isValid\r\n                    } else {\r\n                        var disposeValidators = this._createInvisibleColumnValidators(this.getChanges());\r\n                        result = new _deferred.Deferred;\r\n                        this.executeOperation(result, function() {\r\n                            validatingController.validate(true).done(function(isFullValid) {\r\n                                disposeValidators();\r\n                                _this6._updateRowAndPageIndices();\r\n                                switch (_this6.getEditMode()) {\r\n                                    case EDIT_MODE_CELL:\r\n                                        if (!isFullValid) {\r\n                                            _this6._focusEditingCell()\r\n                                        }\r\n                                        break;\r\n                                    case EDIT_MODE_BATCH:\r\n                                        if (!isFullValid) {\r\n                                            _this6._resetEditRowKey();\r\n                                            _this6._resetEditColumnName();\r\n                                            _this6.getController(\"data\").updateItems()\r\n                                        }\r\n                                }\r\n                                result.resolve(!isFullValid)\r\n                            })\r\n                        })\r\n                    }\r\n                    return result.promise ? result.promise() : result\r\n                },\r\n                _beforeEditCell: function(rowIndex, columnIndex, item) {\r\n                    var result = this.callBase(rowIndex, columnIndex, item);\r\n                    if (this.getEditMode() === EDIT_MODE_CELL) {\r\n                        var $cell = this._rowsView._getCellElement(rowIndex, columnIndex);\r\n                        var validator = $cell && $cell.data(\"dxValidator\");\r\n                        var rowOptions = $cell && $cell.closest(\".dx-row\").data(\"options\");\r\n                        var value = validator && validator.option(\"adapter\").getValue();\r\n                        if (validator && cellValueShouldBeValidated(value, rowOptions)) {\r\n                            var validatingController = this.getController(\"validating\");\r\n                            var deferred = new _deferred.Deferred;\r\n                            (0, _deferred.when)(validatingController.validateCell(validator), result).done(function(validationResult, result) {\r\n                                deferred.resolve(validationResult.status === VALIDATION_STATUS.valid && result)\r\n                            });\r\n                            return deferred.promise()\r\n                        } else {\r\n                            if (!validator) {\r\n                                return result\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                _afterSaveEditData: function(cancel) {\r\n                    var _this7 = this;\r\n                    var $firstErrorRow;\r\n                    (0, _iterator.each)(this.getChanges(), function(_, change) {\r\n                        var $errorRow = _this7._showErrorRow(change);\r\n                        $firstErrorRow = $firstErrorRow || $errorRow\r\n                    });\r\n                    if ($firstErrorRow) {\r\n                        var scrollable = this._rowsView.getScrollable();\r\n                        if (scrollable) {\r\n                            scrollable.update();\r\n                            scrollable.scrollToElement($firstErrorRow)\r\n                        }\r\n                    }\r\n                    if (cancel && this.getEditMode() === EDIT_MODE_CELL && this._needUpdateRow()) {\r\n                        var editRowIndex = this.getEditRowIndex();\r\n                        this._dataController.updateItems({\r\n                            changeType: \"update\",\r\n                            rowIndices: [editRowIndex]\r\n                        });\r\n                        this._focusEditingCell()\r\n                    } else {\r\n                        if (!cancel) {\r\n                            this.getController(\"validating\")._validationState = []\r\n                        }\r\n                    }\r\n                },\r\n                _handleDataChanged: function(args) {\r\n                    var validationState = this.getController(\"validating\")._validationState;\r\n                    if (\"standard\" === this.option(\"scrolling.mode\")) {\r\n                        this.resetRowAndPageIndices()\r\n                    }\r\n                    if (\"prepend\" === args.changeType) {\r\n                        (0, _iterator.each)(validationState, function(_, validationData) {\r\n                            validationData.rowIndex += args.items.length\r\n                        })\r\n                    }\r\n                    this.callBase(args)\r\n                },\r\n                resetRowAndPageIndices: function() {\r\n                    var _this8 = this;\r\n                    var validationState = this.getController(\"validating\")._validationState;\r\n                    (0, _iterator.each)(validationState, function(_, validationData) {\r\n                        if (validationData.pageIndex !== _this8._pageIndex) {\r\n                            delete validationData.pageIndex;\r\n                            delete validationData.rowIndex\r\n                        }\r\n                    })\r\n                },\r\n                _beforeCancelEditData: function() {\r\n                    var validatingController = this.getController(\"validating\");\r\n                    validatingController._validationState = [];\r\n                    this.callBase()\r\n                },\r\n                _showErrorRow: function(change) {\r\n                    var $popupContent;\r\n                    var errorHandling = this.getController(\"errorHandling\");\r\n                    var items = this.getController(\"data\").items();\r\n                    var rowIndex = this.getIndexByKey(change.key, items);\r\n                    var validationData = this.getController(\"validating\")._getValidationData(change.key);\r\n                    if (!(null !== validationData && void 0 !== validationData && validationData.isValid) && null !== validationData && void 0 !== validationData && validationData.errorText && rowIndex >= 0) {\r\n                        $popupContent = this.getPopupContent();\r\n                        return errorHandling && errorHandling.renderErrorRow(null === validationData || void 0 === validationData ? void 0 : validationData.errorText, rowIndex, $popupContent)\r\n                    }\r\n                },\r\n                updateFieldValue: function(e) {\r\n                    var _this9 = this;\r\n                    var validatingController = this.getController(\"validating\");\r\n                    var deferred = new _deferred.Deferred;\r\n                    validatingController.removeCellValidationResult({\r\n                        change: this.getChangeByKey(e.key),\r\n                        columnIndex: e.column.index\r\n                    });\r\n                    this.callBase.apply(this, arguments).done(function() {\r\n                        var currentValidator = validatingController.getCellValidator({\r\n                            rowKey: e.key,\r\n                            columnIndex: e.column.index\r\n                        });\r\n                        (0, _deferred.when)(currentValidator && validatingController.validateCell(currentValidator)).done(function(validationResult) {\r\n                            _this9.getController(\"editorFactory\").refocus();\r\n                            deferred.resolve(validationResult)\r\n                        })\r\n                    });\r\n                    return deferred.promise()\r\n                },\r\n                highlightDataCell: function($cell, parameters) {\r\n                    this.callBase.apply(this, arguments);\r\n                    var validatingController = this.getController(\"validating\");\r\n                    validatingController.setCellValidationStatus(parameters);\r\n                    var isEditableCell = !!parameters.setValue;\r\n                    var cellModified = this.isCellModified(parameters);\r\n                    var isValidated = (0, _type.isDefined)(parameters.validationStatus);\r\n                    var needValidation = cellModified && parameters.column.setCellValue || isEditableCell && !cellModified && !(parameters.row.isNewRow || !isValidated);\r\n                    if (needValidation) {\r\n                        var validator = $cell.data(\"dxValidator\");\r\n                        if (validator) {\r\n                            (0, _deferred.when)(this.getController(\"validating\").validateCell(validator)).done(function() {\r\n                                validatingController.setCellValidationStatus(parameters)\r\n                            })\r\n                        }\r\n                    }\r\n                },\r\n                getChangeByKey: function(key) {\r\n                    var changes = this.getChanges();\r\n                    return changes[_uiGrid_core2.default.getIndexByKey(key, changes)]\r\n                },\r\n                isCellModified: function(parameters) {\r\n                    var cellModified = this.callBase(parameters);\r\n                    var change = this.getChangeByKey(parameters.key);\r\n                    var isCellInvalid = !!parameters.row && this.getController(\"validating\").isInvalidCell({\r\n                        rowKey: parameters.key,\r\n                        columnIndex: parameters.column.index\r\n                    });\r\n                    return cellModified || this.getController(\"validating\")._rowIsValidated(change) && isCellInvalid\r\n                }\r\n            },\r\n            editorFactory: function() {\r\n                var getWidthOfVisibleCells = function(that, element) {\r\n                    var rowIndex = (0, _renderer.default)(element).closest(\"tr\").index();\r\n                    var $cellElements = (0, _renderer.default)(that._rowsView.getRowElement(rowIndex)).first().children().filter(\":not(.dx-hidden-cell)\");\r\n                    return that._rowsView._getWidths($cellElements).reduce(function(w1, w2) {\r\n                        return w1 + w2\r\n                    }, 0)\r\n                };\r\n                var getBoundaryNonFixedColumnsInfo = function(fixedColumns) {\r\n                    var firstNonFixedColumnIndex;\r\n                    var lastNonFixedColumnIndex;\r\n                    fixedColumns.some(function(column, index) {\r\n                        if (column.command === COMMAND_TRANSPARENT) {\r\n                            firstNonFixedColumnIndex = 0 === index ? -1 : index;\r\n                            lastNonFixedColumnIndex = index === fixedColumns.length - 1 ? -1 : index + column.colspan - 1;\r\n                            return true\r\n                        }\r\n                    });\r\n                    return {\r\n                        startColumnIndex: firstNonFixedColumnIndex,\r\n                        endColumnIndex: lastNonFixedColumnIndex\r\n                    }\r\n                };\r\n                return {\r\n                    _showRevertButton: function($container) {\r\n                        var _this10 = this;\r\n                        if (!$container || !$container.length) {\r\n                            return\r\n                        }\r\n                        var $tooltipElement = $container.find(\".\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS));\r\n                        $tooltipElement && $tooltipElement.remove();\r\n                        $tooltipElement = (0, _renderer.default)(\"<div>\").addClass(this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)).appendTo($container);\r\n                        var tooltipOptions = {\r\n                            animation: null,\r\n                            visible: true,\r\n                            target: $container,\r\n                            container: $container,\r\n                            closeOnOutsideClick: false,\r\n                            closeOnTargetScroll: false,\r\n                            contentTemplate: function() {\r\n                                var $buttonElement = (0, _renderer.default)(\"<div>\").addClass(REVERT_BUTTON_CLASS);\r\n                                var buttonOptions = {\r\n                                    icon: \"revert\",\r\n                                    hint: _this10.option(\"editing.texts.validationCancelChanges\"),\r\n                                    onClick: function() {\r\n                                        _this10._editingController.cancelEditData()\r\n                                    }\r\n                                };\r\n                                return new _button.default($buttonElement, buttonOptions).$element()\r\n                            },\r\n                            position: {\r\n                                my: \"left top\",\r\n                                at: \"right top\",\r\n                                of: $container,\r\n                                offset: \"1 0\",\r\n                                collision: \"flip\",\r\n                                boundary: this._rowsView.element()\r\n                            },\r\n                            onPositioned: this._positionedHandler.bind(this)\r\n                        };\r\n                        return new _tooltip.default($tooltipElement, tooltipOptions)\r\n                    },\r\n                    _hideFixedGroupCell: function($cell, overlayOptions) {\r\n                        var $nextFixedRowElement;\r\n                        var $groupCellElement;\r\n                        var isFixedColumns = this._rowsView.isFixedColumns();\r\n                        var isFormEditMode = this._editingController.isFormEditMode();\r\n                        if (isFixedColumns && !isFormEditMode) {\r\n                            var nextRowOptions = $cell.closest(\".dx-row\").next().data(\"options\");\r\n                            if (nextRowOptions && \"group\" === nextRowOptions.rowType) {\r\n                                $nextFixedRowElement = (0, _renderer.default)(this._rowsView.getRowElement(nextRowOptions.rowIndex)).last();\r\n                                $groupCellElement = $nextFixedRowElement.find(\".\" + GROUP_CELL_CLASS);\r\n                                if ($groupCellElement.length && \"hidden\" !== $groupCellElement.get(0).style.visibility) {\r\n                                    $groupCellElement.css(\"visibility\", \"hidden\");\r\n                                    overlayOptions.onDisposing = function() {\r\n                                        $groupCellElement.css(\"visibility\", \"\")\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    },\r\n                    _positionedHandler: function(e, isOverlayVisible) {\r\n                        if (!e.component.__skipPositionProcessing) {\r\n                            var isRevertButton = (0, _renderer.default)(e.element).hasClass(this.addWidgetPrefix(REVERT_TOOLTIP_CLASS));\r\n                            var needRepaint = !isRevertButton && this._rowsView.updateFreeSpaceRowHeight();\r\n                            var normalizedPosition = this._normalizeValidationMessagePositionAndMaxWidth(e, isRevertButton, isOverlayVisible);\r\n                            e.component.__skipPositionProcessing = !!(needRepaint || normalizedPosition);\r\n                            if (normalizedPosition) {\r\n                                e.component.option(normalizedPosition)\r\n                            } else {\r\n                                if (needRepaint) {\r\n                                    e.component.repaint()\r\n                                }\r\n                            }\r\n                        }\r\n                    },\r\n                    _showValidationMessage: function($cell, messages, alignment, revertTooltip) {\r\n                        var _this11 = this;\r\n                        var editorPopup = $cell.find(\".dx-dropdowneditor-overlay\").data(\"dxPopup\");\r\n                        var isOverlayVisible = editorPopup && editorPopup.option(\"visible\");\r\n                        var myPosition = isOverlayVisible ? \"top right\" : \"top \" + alignment;\r\n                        var atPosition = isOverlayVisible ? \"top left\" : \"bottom \" + alignment;\r\n                        var $overlayContainer = $cell.closest(\".\".concat(this.addWidgetPrefix(CONTENT_CLASS)));\r\n                        var errorMessageText = \"\";\r\n                        messages && messages.forEach(function(message) {\r\n                            errorMessageText += (errorMessageText.length ? \"<br/>\" : \"\") + (0, _string.encodeHtml)(message)\r\n                        });\r\n                        var $overlayElement = (0, _renderer.default)(\"<div>\").addClass(INVALID_MESSAGE_CLASS).addClass(INVALID_MESSAGE_ALWAYS_CLASS).addClass(this.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS)).html(errorMessageText).appendTo($cell);\r\n                        var overlayOptions = {\r\n                            target: $cell,\r\n                            container: $overlayContainer,\r\n                            shading: false,\r\n                            width: \"auto\",\r\n                            height: \"auto\",\r\n                            visible: true,\r\n                            animation: false,\r\n                            propagateOutsideClick: true,\r\n                            closeOnOutsideClick: false,\r\n                            closeOnTargetScroll: false,\r\n                            position: {\r\n                                collision: \"flip\",\r\n                                boundary: this._rowsView.element(),\r\n                                boundaryOffset: \"0 0\",\r\n                                offset: {\r\n                                    x: 0,\r\n                                    y: !isOverlayVisible && (_browser.default.mozilla || _browser.default.msie) ? -1 : 0\r\n                                },\r\n                                my: myPosition,\r\n                                at: atPosition\r\n                            },\r\n                            onPositioned: function(e) {\r\n                                _this11._positionedHandler(e, isOverlayVisible);\r\n                                _this11._shiftValidationMessageIfNeed(e.component.$content(), revertTooltip && revertTooltip.$content(), $cell)\r\n                            }\r\n                        };\r\n                        this._hideFixedGroupCell($cell, overlayOptions);\r\n                        new _overlay.default($overlayElement, overlayOptions)\r\n                    },\r\n                    _normalizeValidationMessagePositionAndMaxWidth: function(options, isRevertButton, isOverlayVisible) {\r\n                        var fixedColumns = this._columnsController.getFixedColumns();\r\n                        if (!fixedColumns || !fixedColumns.length) {\r\n                            return\r\n                        }\r\n                        var position;\r\n                        var visibleTableWidth = !isRevertButton && getWidthOfVisibleCells(this, options.element);\r\n                        var $overlayContentElement = isRevertButton ? options.component.overlayContent() : options.component.$content();\r\n                        var validationMessageWidth = $overlayContentElement.outerWidth(true);\r\n                        var needMaxWidth = !isRevertButton && validationMessageWidth > visibleTableWidth;\r\n                        var columnIndex = this._rowsView.getCellIndex((0, _renderer.default)(options.element).closest(\"td\"));\r\n                        var boundaryNonFixedColumnsInfo = getBoundaryNonFixedColumnsInfo(fixedColumns);\r\n                        if (!isRevertButton && (columnIndex === boundaryNonFixedColumnsInfo.startColumnIndex || needMaxWidth)) {\r\n                            position = {\r\n                                collision: \"none flip\",\r\n                                my: \"top left\",\r\n                                at: isOverlayVisible ? \"top right\" : \"bottom left\"\r\n                            }\r\n                        } else {\r\n                            if (columnIndex === boundaryNonFixedColumnsInfo.endColumnIndex) {\r\n                                position = {\r\n                                    collision: \"none flip\",\r\n                                    my: \"top right\",\r\n                                    at: isRevertButton || isOverlayVisible ? \"top left\" : \"bottom right\"\r\n                                };\r\n                                if (isRevertButton) {\r\n                                    position.offset = \"-1 0\"\r\n                                }\r\n                            }\r\n                        }\r\n                        return position && {\r\n                            position: position,\r\n                            maxWidth: needMaxWidth ? visibleTableWidth - 2 : void 0\r\n                        }\r\n                    },\r\n                    _shiftValidationMessageIfNeed: function($content, $revertContent, $cell) {\r\n                        if (!$revertContent) {\r\n                            return\r\n                        }\r\n                        var contentOffset = $content.offset();\r\n                        var revertContentOffset = $revertContent.offset();\r\n                        if (contentOffset.top === revertContentOffset.top && contentOffset.left + $content.width() > revertContentOffset.left) {\r\n                            var left = $revertContent.width() + PADDING_BETWEEN_TOOLTIPS;\r\n                            $content.css(\"left\", revertContentOffset.left < $cell.offset().left ? -left : left)\r\n                        }\r\n                    },\r\n                    _getTooltipsSelector: function() {\r\n                        var invalidMessageClass = this.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS);\r\n                        var revertTooltipClass = this.addWidgetPrefix(REVERT_TOOLTIP_CLASS);\r\n                        return \".dx-editor-cell .\" + revertTooltipClass + \", .dx-editor-cell .\" + invalidMessageClass + \", .dx-cell-modified .\" + invalidMessageClass\r\n                    },\r\n                    init: function() {\r\n                        this.callBase();\r\n                        this._editingController = this.getController(\"editing\");\r\n                        this._columnsController = this.getController(\"columns\");\r\n                        this._rowsView = this.getView(\"rowsView\")\r\n                    },\r\n                    loseFocus: function(skipValidator) {\r\n                        if (!skipValidator) {\r\n                            this.getController(\"validating\").setValidator(null)\r\n                        }\r\n                        this.callBase()\r\n                    },\r\n                    updateCellState: function($element, validationResult, hideBorder) {\r\n                        var $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());\r\n                        var $cell = null !== $focus && void 0 !== $focus && $focus.is(\"td\") ? $focus : null;\r\n                        var rowOptions = null === $focus || void 0 === $focus ? void 0 : $focus.closest(\".dx-row\").data(\"options\");\r\n                        var change = rowOptions ? this.getController(\"editing\").getChangeByKey(rowOptions.key) : null;\r\n                        var column = $cell && this.getController(\"columns\").getVisibleColumns()[$cell.index()];\r\n                        var revertTooltip;\r\n                        if (validationResult && validationResult.status === VALIDATION_STATUS.invalid || \"update\" === (null === change || void 0 === change ? void 0 : change.type) && !this._editingController.isSaving()) {\r\n                            if (this._editingController.getEditMode() === EDIT_MODE_CELL) {\r\n                                revertTooltip = this._showRevertButton($focus)\r\n                            }\r\n                        }\r\n                        var showValidationMessage = validationResult && validationResult.status === VALIDATION_STATUS.invalid;\r\n                        if (showValidationMessage && $cell && column && validationResult && validationResult.brokenRules) {\r\n                            var errorMessages = [];\r\n                            validationResult.brokenRules.forEach(function(rule) {\r\n                                errorMessages.push(rule.message)\r\n                            });\r\n                            this._showValidationMessage($focus, errorMessages, column.alignment || \"left\", revertTooltip)\r\n                        }!hideBorder && this._rowsView.element() && this._rowsView.updateFreeSpaceRowHeight()\r\n                    },\r\n                    focus: function($element, hideBorder) {\r\n                        var _this12 = this;\r\n                        if (!arguments.length) {\r\n                            return this.callBase()\r\n                        }\r\n                        var $tooltips = $element && $element.closest(\".\" + this.addWidgetPrefix(ROWS_VIEW_CLASS)).find(this._getTooltipsSelector());\r\n                        $tooltips && $tooltips.remove();\r\n                        if (null !== $element && void 0 !== $element && $element.hasClass(\"dx-row\")) {\r\n                            return this.callBase($element, hideBorder)\r\n                        }\r\n                        var $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());\r\n                        var callBase = this.callBase;\r\n                        var validator = $focus && ($focus.data(\"dxValidator\") || $element.find(\".\" + this.addWidgetPrefix(VALIDATOR_CLASS)).eq(0).data(\"dxValidator\"));\r\n                        var rowOptions = $focus && $focus.closest(\".dx-row\").data(\"options\");\r\n                        var editingController = this.getController(\"editing\");\r\n                        var change = rowOptions ? editingController.getChangeByKey(rowOptions.key) : null;\r\n                        var validationResult;\r\n                        var $cell = $focus && $focus.is(\"td\") ? $focus : null;\r\n                        var column = $cell && this.getController(\"columns\").getVisibleColumns()[$cell.index()];\r\n                        var validatingController = this.getController(\"validating\");\r\n                        if (validator) {\r\n                            validatingController.setValidator(validator);\r\n                            var value = validator.option(\"adapter\").getValue();\r\n                            if (cellValueShouldBeValidated(value, rowOptions) || validatingController._rowIsValidated(change)) {\r\n                                editingController.waitForDeferredOperations().done(function() {\r\n                                    (0, _deferred.when)(validatingController.validateCell(validator)).done(function(result) {\r\n                                        validationResult = result;\r\n                                        if (change && column && !validatingController.isCurrentValidatorProcessing({\r\n                                                rowKey: change.key,\r\n                                                columnIndex: column.index\r\n                                            })) {\r\n                                            return\r\n                                        }\r\n                                        if (validationResult.status === VALIDATION_STATUS.invalid) {\r\n                                            hideBorder = true\r\n                                        }\r\n                                        _this12.updateCellState($element, validationResult, hideBorder);\r\n                                        callBase.call(_this12, $element, hideBorder)\r\n                                    })\r\n                                });\r\n                                return this.callBase($element, hideBorder)\r\n                            }\r\n                        }\r\n                        this.updateCellState($element, validationResult, hideBorder);\r\n                        return this.callBase($element, hideBorder)\r\n                    },\r\n                    getEditorInstance: function($container) {\r\n                        var $editor = $container.find(\".dx-texteditor\").eq(0);\r\n                        return _uiGrid_core2.default.getWidgetInstance($editor)\r\n                    }\r\n                }\r\n            }(),\r\n            data: {\r\n                _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n                    var cell = oldRow.cells[columnIndex];\r\n                    var oldValidationStatus = cell && cell.validationStatus;\r\n                    var validatingController = this.getController(\"validating\");\r\n                    var validationResult = validatingController.getCellValidationResult({\r\n                        rowKey: oldRow.key,\r\n                        columnIndex: columnIndex\r\n                    });\r\n                    var validationData = validatingController._getValidationData(oldRow.key);\r\n                    var newValidationStatus = validationResultIsValid(validationResult) ? validationResult.status : validationResult;\r\n                    var rowIsModified = JSON.stringify(newRow.modifiedValues) !== JSON.stringify(oldRow.modifiedValues);\r\n                    var cellIsMarkedAsInvalid = (0, _renderer.default)(null === cell || void 0 === cell ? void 0 : cell.cellElement).hasClass(this.addWidgetPrefix(INVALIDATE_CLASS));\r\n                    if (oldValidationStatus !== newValidationStatus && rowIsModified || validationData.isValid && cellIsMarkedAsInvalid) {\r\n                        return true\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            rowsView: {\r\n                updateFreeSpaceRowHeight: function($table) {\r\n                    var that = this;\r\n                    var $rowElements;\r\n                    var $freeSpaceRowElement;\r\n                    var $freeSpaceRowElements;\r\n                    var $element = that.element();\r\n                    var $tooltipContent = $element && $element.find(\".\" + that.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS) + \" .dx-overlay-content\");\r\n                    that.callBase($table);\r\n                    if ($tooltipContent && $tooltipContent.length) {\r\n                        $rowElements = that._getRowElements();\r\n                        $freeSpaceRowElements = that._getFreeSpaceRowElements($table);\r\n                        $freeSpaceRowElement = $freeSpaceRowElements.first();\r\n                        if ($freeSpaceRowElement && 1 === $rowElements.length && (!$freeSpaceRowElement.is(\":visible\") || $tooltipContent.outerHeight() > $freeSpaceRowElement.outerHeight())) {\r\n                            $freeSpaceRowElements.show();\r\n                            $freeSpaceRowElements.height($tooltipContent.outerHeight());\r\n                            return true\r\n                        }\r\n                    }\r\n                },\r\n                _formItemPrepared: function(cellOptions, $container) {\r\n                    var _this13 = this;\r\n                    this.callBase.apply(this, arguments);\r\n                    (0, _common.deferUpdate)(function() {\r\n                        var $editor = $container.find(\".dx-widget\").first();\r\n                        var isEditorDisposed = $editor.length && !$editor.children().length;\r\n                        if (!isEditorDisposed) {\r\n                            _this13.getController(\"validating\").createValidator(cellOptions, $editor)\r\n                        }\r\n                    })\r\n                },\r\n                _cellPrepared: function($cell, parameters) {\r\n                    if (!this.getController(\"editing\").isFormEditMode()) {\r\n                        this.getController(\"validating\").createValidator(parameters, $cell)\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/slider/ui.slider_handle.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _tooltip = _interopRequireDefault(require(\"../tooltip\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position2 = require(\"../../core/utils/position\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SLIDER_CLASS = \"dx-slider\";\r\nvar SLIDER_HANDLE_CLASS = \"dx-slider-handle\";\r\nvar POSITION_ALIASES = {\r\n    top: {\r\n        my: \"bottom center\",\r\n        at: \"top center\",\r\n        collision: \"none\"\r\n    },\r\n    bottom: {\r\n        my: \"top center\",\r\n        at: \"bottom center\",\r\n        collision: \"none\"\r\n    },\r\n    right: {\r\n        my: \"left center\",\r\n        at: \"right center\",\r\n        collision: \"none\"\r\n    },\r\n    left: {\r\n        my: \"right center\",\r\n        at: \"left center\",\r\n        collision: \"none\"\r\n    }\r\n};\r\nvar SliderHandle = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: false,\r\n            value: 0,\r\n            tooltipEnabled: false,\r\n            tooltipFormat: function(v) {\r\n                return v\r\n            },\r\n            tooltipPosition: \"top\",\r\n            tooltipShowMode: \"onHover\",\r\n            tooltipFitIn: null\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this.$element().addClass(SLIDER_HANDLE_CLASS);\r\n        this.setAria({\r\n            role: \"slider\",\r\n            valuenow: this.option(\"value\")\r\n        })\r\n    },\r\n    _render: function() {\r\n        this._renderTooltip();\r\n        this.callBase()\r\n    },\r\n    _renderTooltip: function() {\r\n        if (this.option(\"tooltipEnabled\")) {\r\n            if (!this._$tooltip) {\r\n                this._$tooltip = (0, _renderer.default)(\"<div>\").appendTo(this.$element())\r\n            }\r\n            this._$slider = this.$element().closest(\".\" + SLIDER_CLASS);\r\n            this._updateTooltip()\r\n        } else {\r\n            this._removeTooltip()\r\n        }\r\n    },\r\n    _createTooltip: function() {\r\n        if (this._tooltip) {\r\n            return false\r\n        }\r\n        this._tooltip = this._createComponent(this._$tooltip, _tooltip.default, {\r\n            visible: true,\r\n            target: this.$element(),\r\n            closeOnOutsideClick: false,\r\n            container: this.$element(),\r\n            hideTopOverlayHandler: null,\r\n            closeOnTargetScroll: false,\r\n            onPositioned: function(args) {\r\n                this._saveTooltipElements(args.component);\r\n                this._saveTooltipLocation();\r\n                this._centeredTooltipPosition()\r\n            }.bind(this),\r\n            animation: null,\r\n            arrowPosition: null,\r\n            templatesRenderAsynchronously: false,\r\n            _fixedPosition: false\r\n        });\r\n        return true\r\n    },\r\n    _removeTooltip: function() {\r\n        if (!this._$tooltip) {\r\n            return\r\n        }\r\n        this._$tooltip.remove();\r\n        delete this._$tooltip;\r\n        delete this._tooltip\r\n    },\r\n    _renderTooltipPosition: function() {\r\n        if (!this._tooltip) {\r\n            return\r\n        }\r\n        var position = this.option(\"tooltipPosition\");\r\n        this._saveTooltipElements();\r\n        this._resetTooltipPosition();\r\n        if (\"string\" === (0, _type.type)(position)) {\r\n            position = (0, _extend.extend)({\r\n                boundary: this._$slider,\r\n                boundaryOffset: {\r\n                    h: 1,\r\n                    v: 1\r\n                }\r\n            }, POSITION_ALIASES[position])\r\n        }\r\n        this._tooltip.option(\"position\", position);\r\n        this._saveTooltipLocation()\r\n    },\r\n    _saveTooltipElements: function(tooltip) {\r\n        tooltip = this._tooltip || tooltip;\r\n        this._$tooltipContent = tooltip.$content().parent();\r\n        this._$tooltipArrow = this._$tooltipContent.find(\".dx-popover-arrow\")\r\n    },\r\n    _resetTooltipPosition: function() {\r\n        (0, _translator.resetPosition)(this._$tooltipContent);\r\n        (0, _translator.resetPosition)(this._$tooltipArrow)\r\n    },\r\n    _saveTooltipLocation: function() {\r\n        this._contentLocate = (0, _translator.locate)(this._$tooltipContent)\r\n    },\r\n    _centeredTooltipPosition: function() {\r\n        if (!this._tooltip) {\r\n            return\r\n        }\r\n        this._$tooltipContent.outerWidth(\"auto\");\r\n        var outerWidthWithoutRounding = (0, _position2.getBoundingRect)(this._$tooltipContent.get(0)).width;\r\n        var tooltipOuterWidth = Math.ceil(outerWidthWithoutRounding);\r\n        var roundedTooltipOuterWidth = tooltipOuterWidth % 2 + tooltipOuterWidth;\r\n        this._$tooltipContent.outerWidth(roundedTooltipOuterWidth);\r\n        var tooltipCenter = (roundedTooltipOuterWidth - this.$element().width()) / 2;\r\n        this._contentLocate.left = -tooltipCenter;\r\n        this._$tooltipArrow.css({\r\n            marginLeft: -this._$tooltipArrow.outerWidth() / 2,\r\n            left: \"50%\"\r\n        });\r\n        this._fitTooltip()\r\n    },\r\n    _fitTooltip: function() {\r\n        if (!this._tooltip) {\r\n            return\r\n        }\r\n        var position = this.option(\"tooltipPosition\");\r\n        if (\"string\" === (0, _type.type)(position)) {\r\n            position = (0, _extend.extend)({\r\n                of: this.$element(),\r\n                boundary: this._$slider,\r\n                boundaryOffset: {\r\n                    h: 2,\r\n                    v: 1\r\n                }\r\n            }, POSITION_ALIASES[position], {\r\n                collision: \"fit none\"\r\n            })\r\n        }\r\n        var calculatePosition = _position.default.calculate(this._$tooltipContent, position);\r\n        var isLeftSide = \"left\" === calculatePosition.h.collisionSide;\r\n        var arrowLeft = (isLeftSide ? -1 : 1) * calculatePosition.h.oversize;\r\n        var arrowMinLeft = this._contentLocate.left;\r\n        var arrowMaxRight = this._contentLocate.left + this._$tooltipContent.outerWidth() - this._$tooltipArrow.outerWidth();\r\n        (0, _translator.move)(this._$tooltipContent, {\r\n            left: this._contentLocate.left + (isLeftSide ? 1 : -1) * calculatePosition.h.oversize\r\n        });\r\n        (0, _translator.move)(this._$tooltipArrow, {\r\n            left: (0, _math.fitIntoRange)(arrowLeft, arrowMinLeft, arrowMaxRight)\r\n        })\r\n    },\r\n    _getFormattedValue: function(value) {\r\n        return _number.default.format(value, this.option(\"tooltipFormat\"))\r\n    },\r\n    _renderValue: function() {\r\n        if (!this._tooltip) {\r\n            return\r\n        }\r\n        var value = this.option(\"value\");\r\n        this._tooltip.$content().html(this._getFormattedValue(value));\r\n        this._fitTooltip()\r\n    },\r\n    _updateTooltip: function() {\r\n        var hoverMode = /^onhover$/i.test(this.option(\"tooltipShowMode\"));\r\n        if (!hoverMode) {\r\n            this._createTooltip()\r\n        }\r\n        this.$element().toggleClass(\"dx-slider-tooltip-on-hover\", hoverMode);\r\n        this._renderTooltipPosition();\r\n        this._renderValue();\r\n        this._centeredTooltipPosition()\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        delete this._$tooltip;\r\n        delete this._tooltip\r\n    },\r\n    _ensureTooltipIsCentered: function(value, previousValue) {\r\n        if ((0, _type.isDefined)(value) && (0, _type.isDefined)(previousValue) && value.toString().length !== previousValue.toString().length) {\r\n            this._centeredTooltipPosition()\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"tooltipFormat\":\r\n                this._renderValue();\r\n                break;\r\n            case \"value\":\r\n                this._renderValue();\r\n                var value = this._getFormattedValue(args.value);\r\n                var previousValue = this._getFormattedValue(args.previousValue);\r\n                this._ensureTooltipIsCentered(value, previousValue);\r\n                this.setAria(\"valuenow\", args.value);\r\n                break;\r\n            case \"tooltipEnabled\":\r\n                this._renderTooltip();\r\n                break;\r\n            case \"tooltipPosition\":\r\n                this._renderTooltipPosition();\r\n                this._centeredTooltipPosition();\r\n                break;\r\n            case \"tooltipShowMode\":\r\n                this._updateTooltip();\r\n                break;\r\n            case \"tooltipFitIn\":\r\n                this._fitTooltip();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    fitTooltipPosition: function() {\r\n        this._fitTooltip()\r\n    },\r\n    updateTooltip: function() {\r\n        if (!this._createTooltip()) {\r\n            return\r\n        }\r\n        this._renderTooltipPosition();\r\n        this._renderValue();\r\n        this._centeredTooltipPosition()\r\n    },\r\n    repaint: function() {\r\n        this._renderTooltipPosition();\r\n        this._centeredTooltipPosition();\r\n        if (this._tooltip) {\r\n            this._tooltip._visibilityChanged(true)\r\n        }\r\n    }\r\n});\r\nvar _default = SliderHandle;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_columns_core.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.foreachColumnInfo = foreachColumnInfo;\r\nexports.createColumnsInfo = createColumnsInfo;\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction foreachColumnInfo(info, callback, rowIndex, offsets, columnCount, lastProcessedIndexes) {\r\n    rowIndex = rowIndex || 0;\r\n    offsets = offsets || [];\r\n    lastProcessedIndexes = lastProcessedIndexes || [];\r\n    offsets[rowIndex] = offsets[rowIndex] || 0;\r\n    var row = info[rowIndex];\r\n    var startIndex = lastProcessedIndexes[rowIndex] + 1 || 0;\r\n    var processedColumnCount = 0;\r\n    var colIndex;\r\n    if (!row) {\r\n        return\r\n    }\r\n    for (colIndex = startIndex; colIndex < row.length; colIndex++) {\r\n        var cell = row[colIndex];\r\n        var visibleIndex = colIndex + offsets[rowIndex];\r\n        var colspan = cell.colspan || 1;\r\n        foreachColumnInfo(info, callback, rowIndex + (cell.rowspan || 1), offsets, colspan, lastProcessedIndexes);\r\n        offsets[rowIndex] += colspan - 1;\r\n        processedColumnCount += colspan;\r\n        if (cell.rowspan) {\r\n            for (var i = rowIndex + 1; i < rowIndex + cell.rowspan; i++) {\r\n                offsets[i] = offsets[i] || 0;\r\n                offsets[i] += cell.colspan || 1\r\n            }\r\n        }\r\n        if (false === callback(cell, visibleIndex, rowIndex, colIndex)) {\r\n            break\r\n        }\r\n        if (void 0 !== columnCount && processedColumnCount >= columnCount) {\r\n            break\r\n        }\r\n    }\r\n    lastProcessedIndexes[rowIndex] = colIndex\r\n}\r\n\r\nfunction createColumnsInfo(info, startIndex, endIndex) {\r\n    var newInfo = [];\r\n    foreachColumnInfo(info, function(columnInfo, visibleIndex, rowIndex) {\r\n        var cell = columnInfo;\r\n        var colspan;\r\n        var cellColspan = cell.colspan || 1;\r\n        var isVisible = visibleIndex + cellColspan - 1 >= startIndex && visibleIndex < endIndex;\r\n        newInfo[rowIndex] = newInfo[rowIndex] || [];\r\n        if (isVisible) {\r\n            if (visibleIndex < startIndex) {\r\n                colspan = cellColspan - (startIndex - visibleIndex);\r\n                visibleIndex = startIndex\r\n            } else {\r\n                colspan = cellColspan\r\n            }\r\n            if (visibleIndex + colspan > endIndex) {\r\n                colspan = endIndex - visibleIndex\r\n            }\r\n            if (colspan !== cellColspan) {\r\n                cell = (0, _extend.extend)({}, cell, {\r\n                    colspan: colspan\r\n                })\r\n            }\r\n            newInfo[rowIndex].push(cell)\r\n        } else {\r\n            if (visibleIndex > endIndex) {\r\n                return false\r\n            }\r\n        }\r\n    });\r\n    for (var i = 0; i < newInfo.length; i++) {\r\n        newInfo[i] = newInfo[i] || []\r\n    }\r\n    return newInfo\r\n}\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar DateBoxStrategy = _class.default.inherit({\r\n    ctor: function(dateBox) {\r\n        this.dateBox = dateBox\r\n    },\r\n    widgetOption: function() {\r\n        return this._widget && this._widget.option.apply(this._widget, arguments)\r\n    },\r\n    _renderWidget: function(element) {\r\n        element = element || (0, _renderer.default)(\"<div>\");\r\n        this._widget = this._createWidget(element);\r\n        this._widget.$element().appendTo(this._getWidgetContainer())\r\n    },\r\n    _createWidget: function(element) {\r\n        var widgetName = this._getWidgetName();\r\n        var widgetOptions = this._getWidgetOptions();\r\n        return this.dateBox._createComponent(element, widgetName, widgetOptions)\r\n    },\r\n    _getWidgetOptions: abstract,\r\n    _getWidgetName: abstract,\r\n    getDefaultOptions: function() {\r\n        return {\r\n            mode: \"text\"\r\n        }\r\n    },\r\n    getDisplayFormat: abstract,\r\n    supportedKeys: _common.noop,\r\n    getKeyboardListener: _common.noop,\r\n    customizeButtons: _common.noop,\r\n    getParsedText: function(text, format) {\r\n        var value = _date.default.parse(text, format);\r\n        return value ? value : _date.default.parse(text)\r\n    },\r\n    renderInputMinMax: _common.noop,\r\n    renderOpenedState: function() {\r\n        this._updateValue()\r\n    },\r\n    popupConfig: abstract,\r\n    _dimensionChanged: function() {\r\n        var _this$_getPopup;\r\n        null === (_this$_getPopup = this._getPopup()) || void 0 === _this$_getPopup ? void 0 : _this$_getPopup.repaint()\r\n    },\r\n    renderPopupContent: function() {\r\n        var popup = this._getPopup();\r\n        this._renderWidget();\r\n        var $popupContent = popup.$content().parent();\r\n        _events_engine.default.off($popupContent, \"mousedown\");\r\n        _events_engine.default.on($popupContent, \"mousedown\", this._preventFocusOnPopup.bind(this))\r\n    },\r\n    getFirstPopupElement: _common.noop,\r\n    getLastPopupElement: _common.noop,\r\n    _preventFocusOnPopup: function(e) {\r\n        e.preventDefault()\r\n    },\r\n    _getWidgetContainer: function() {\r\n        return this._getPopup().$content()\r\n    },\r\n    _getPopup: function() {\r\n        return this.dateBox._popup\r\n    },\r\n    popupShowingHandler: _common.noop,\r\n    popupHiddenHandler: _common.noop,\r\n    _updateValue: function() {\r\n        this._widget && this._widget.option(\"value\", this.dateBoxValue())\r\n    },\r\n    useCurrentDateByDefault: _common.noop,\r\n    getDefaultDate: function() {\r\n        return new Date\r\n    },\r\n    textChangedHandler: _common.noop,\r\n    renderValue: function() {\r\n        if (this.dateBox.option(\"opened\")) {\r\n            this._updateValue()\r\n        }\r\n    },\r\n    getValue: function() {\r\n        return this._widget.option(\"value\")\r\n    },\r\n    isAdaptivityChanged: function() {\r\n        return false\r\n    },\r\n    dispose: function() {\r\n        var popup = this._getPopup();\r\n        if (popup) {\r\n            popup.$content().empty()\r\n        }\r\n    },\r\n    dateBoxValue: function() {\r\n        if (arguments.length) {\r\n            return this.dateBox.dateValue.apply(this.dateBox, arguments)\r\n        } else {\r\n            return this.dateBox.dateOption.apply(this.dateBox, [\"value\"])\r\n        }\r\n    }\r\n});\r\nvar _default = DateBoxStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/templates/child_default_template.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.ChildDefaultTemplate = void 0;\r\nvar _template_base = require(\"./template_base\");\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar ChildDefaultTemplate = function(_TemplateBase) {\r\n    _inherits(ChildDefaultTemplate, _TemplateBase);\r\n    var _super = _createSuper(ChildDefaultTemplate);\r\n\r\n    function ChildDefaultTemplate(name) {\r\n        var _this;\r\n        _classCallCheck(this, ChildDefaultTemplate);\r\n        _this = _super.call(this);\r\n        _this.name = name;\r\n        return _this\r\n    }\r\n    return ChildDefaultTemplate\r\n}(_template_base.TemplateBase);\r\nexports.ChildDefaultTemplate = ChildDefaultTemplate;\r\n","/**\r\n * DevExtreme (ui/html_editor/formats/align.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar AlignStyle = {};\r\nif (_devextremeQuill.default) {\r\n    AlignStyle = _devextremeQuill.default.import(\"attributors/style/align\");\r\n    AlignStyle.whitelist.push(\"left\")\r\n}\r\nvar _default = AlignStyle;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/month/date_table/cell.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.MonthDateTableCell = MonthDateTableCell;\r\nexports.MonthDateTableCellProps = exports.viewFunction = void 0;\r\nvar _cell = require(\"../../base/date_table/cell\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_cell.DateTableCellBase, _extends({}, viewModel.restAttributes, {\r\n        className: viewModel.classes,\r\n        dataCellTemplate: viewModel.props.dataCellTemplate,\r\n        startDate: viewModel.props.startDate,\r\n        endDate: viewModel.props.endDate,\r\n        groups: viewModel.props.groups,\r\n        groupIndex: viewModel.props.groupIndex,\r\n        index: viewModel.props.index\r\n    }), Preact.h(\"div\", null, viewModel.props.startDate.getDate()))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar MonthDateTableCellProps = _objectSpread(_objectSpread({}, _cell.DateTableCellBaseProps), {}, {\r\n    otherMonth: false,\r\n    today: false\r\n});\r\nexports.MonthDateTableCellProps = MonthDateTableCellProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction MonthDateTableCell(props) {\r\n    var __classes = (0, _hooks.useCallback)(function() {\r\n        var className = props.className,\r\n            otherMonth = props.otherMonth,\r\n            today = props.today;\r\n        var classes = [];\r\n        otherMonth && classes.push(\"dx-scheduler-date-table-other-month\");\r\n        today && classes.push(\"dx-scheduler-date-table-current-date\");\r\n        className && classes.push(className);\r\n        return 0 !== classes.length ? classes.join(\" \") : void 0\r\n    }, [props.className, props.otherMonth, props.today]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.allDay, props.children, props.className, props.contentTemplate, props.contentTemplateProps, props.dataCellTemplate, props.endDate, props.groupIndex, props.groups, props.index, props.isFirstGroupCell, props.isLastGroupCell, props.otherMonth, props.startDate, props.text, props.today, _objectWithoutProperties(props, [\"allDay\", \"children\", \"className\", \"contentTemplate\", \"contentTemplateProps\", \"dataCellTemplate\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"otherMonth\", \"startDate\", \"text\", \"today\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate),\r\n            contentTemplate: getTemplate(props.contentTemplate)\r\n        }),\r\n        classes: __classes(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nMonthDateTableCell.defaultProps = _objectSpread({}, MonthDateTableCellProps);\r\n","/**\r\n * DevExtreme (exporter/exceljs/export_format.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ExportFormat = void 0;\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date2 = require(\"../../localization/ldml/date.format\");\r\nvar _language_codes = require(\"../../localization/language_codes\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nrequire(\"../../localization/currency\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ARABIC_ZERO_CODE = 1632;\r\nvar DEFINED_NUMBER_FORMTATS = {\r\n    thousands: \"#,##0{0},&quot;K&quot;\",\r\n    millions: \"#,##0{0},,&quot;M&quot;\",\r\n    billions: \"#,##0{0},,,&quot;B&quot;\",\r\n    trillions: \"#,##0{0},,,,&quot;T&quot;\",\r\n    percent: \"0{0}%\",\r\n    decimal: \"#{0}\",\r\n    fixedpoint: \"#,##0{0}\",\r\n    exponential: \"0{0}E+00\",\r\n    currency: \" \"\r\n};\r\nvar PERIOD_REGEXP = /a+/g;\r\nvar DAY_REGEXP = /E/g;\r\nvar DO_REGEXP = /dE+/g;\r\nvar STANDALONE_MONTH_REGEXP = /L/g;\r\nvar HOUR_REGEXP = /h/g;\r\nvar SLASH_REGEXP = /\\//g;\r\nvar SQUARE_OPEN_BRACKET_REGEXP = /\\[/g;\r\nvar SQUARE_CLOSE_BRACKET_REGEXP = /]/g;\r\nvar ANY_REGEXP = /./g;\r\n\r\nfunction _applyPrecision(format, precision) {\r\n    var result;\r\n    var i;\r\n    if (precision > 0) {\r\n        result = \"decimal\" !== format ? \".\" : \"\";\r\n        for (i = 0; i < precision; i++) {\r\n            result += \"0\"\r\n        }\r\n        return result\r\n    }\r\n    return \"\"\r\n}\r\n\r\nfunction _hasArabicDigits(text) {\r\n    var code;\r\n    for (var i = 0; i < text.length; i++) {\r\n        code = text.charCodeAt(i);\r\n        if (code >= ARABIC_ZERO_CODE && code < ARABIC_ZERO_CODE + 10) {\r\n            return true\r\n        }\r\n    }\r\n    return false\r\n}\r\n\r\nfunction _convertDateFormat(format) {\r\n    var formattedValue = (_date.default.format(new Date(2009, 8, 8, 6, 5, 4), format) || \"\").toString();\r\n    var result = (0, _date2.getFormat)(function(value) {\r\n        return _date.default.format(value, format)\r\n    });\r\n    if (result) {\r\n        result = _convertDateFormatToOpenXml(result);\r\n        result = _getLanguageInfo(formattedValue) + result\r\n    }\r\n    return result\r\n}\r\n\r\nfunction _getLanguageInfo(defaultPattern) {\r\n    var languageID = (0, _language_codes.getLanguageId)();\r\n    var languageIDStr = languageID ? languageID.toString(16) : \"\";\r\n    var languageInfo = \"\";\r\n    if (_hasArabicDigits(defaultPattern)) {\r\n        while (languageIDStr.length < 3) {\r\n            languageIDStr = \"0\" + languageIDStr\r\n        }\r\n        languageInfo = \"[$-2010\" + languageIDStr + \"]\"\r\n    } else {\r\n        if (languageIDStr) {\r\n            languageInfo = \"[$-\" + languageIDStr + \"]\"\r\n        }\r\n    }\r\n    return languageInfo\r\n}\r\n\r\nfunction _convertDateFormatToOpenXml(format) {\r\n    return format.replace(SLASH_REGEXP, \"\\\\/\").split(\"'\").map(function(datePart, index) {\r\n        if (index % 2 === 0) {\r\n            return datePart.replace(PERIOD_REGEXP, \"AM/PM\").replace(DO_REGEXP, \"d\").replace(DAY_REGEXP, \"d\").replace(STANDALONE_MONTH_REGEXP, \"M\").replace(HOUR_REGEXP, \"H\").replace(SQUARE_OPEN_BRACKET_REGEXP, \"\\\\[\").replace(SQUARE_CLOSE_BRACKET_REGEXP, \"\\\\]\")\r\n        }\r\n        if (datePart) {\r\n            return datePart.replace(ANY_REGEXP, \"\\\\$&\")\r\n        }\r\n        return \"'\"\r\n    }).join(\"\")\r\n}\r\n\r\nfunction _convertNumberFormat(format, precision, currency) {\r\n    var result;\r\n    var excelFormat;\r\n    if (\"currency\" === format) {\r\n        excelFormat = _number.default.getOpenXmlCurrencyFormat(currency)\r\n    } else {\r\n        excelFormat = DEFINED_NUMBER_FORMTATS[format.toLowerCase()]\r\n    }\r\n    if (excelFormat) {\r\n        result = (0, _string.format)(excelFormat, _applyPrecision(format, precision))\r\n    }\r\n    return result\r\n}\r\nvar ExportFormat = {\r\n    formatObjectConverter: function(format, dataType) {\r\n        var result = {\r\n            format: format,\r\n            precision: format && format.precision,\r\n            dataType: dataType\r\n        };\r\n        if ((0, _type.isObject)(format)) {\r\n            return (0, _extend.extend)(result, format, {\r\n                format: format.formatter || format.type,\r\n                currency: format.currency\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    convertFormat: function(format, precision, type, currency) {\r\n        if ((0, _type.isDefined)(format)) {\r\n            if (\"date\" === type) {\r\n                return _convertDateFormat(format)\r\n            } else {\r\n                if ((0, _type.isString)(format) && DEFINED_NUMBER_FORMTATS[format.toLowerCase()]) {\r\n                    return _convertNumberFormat(format, precision, currency)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.ExportFormat = ExportFormat;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/layout_props.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.LayoutProps = void 0;\r\nvar LayoutProps = {};\r\nexports.LayoutProps = LayoutProps;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.mask\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}(0, _component_registrator.default)(\"dxDateBox\", _uiDate_box.default);\r\nvar _default = _uiDate_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scroll_view.native.pull_down.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _uiScrollable = _interopRequireDefault(require(\"./ui.scrollable.native\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar PULLDOWN_RELEASE_TIME = 400;\r\nvar PullDownNativeScrollViewStrategy = _uiScrollable.default.inherit({\r\n    _init: function(scrollView) {\r\n        this.callBase(scrollView);\r\n        this._$topPocket = scrollView._$topPocket;\r\n        this._$pullDown = scrollView._$pullDown;\r\n        this._$bottomPocket = scrollView._$bottomPocket;\r\n        this._$refreshingText = scrollView._$refreshingText;\r\n        this._$scrollViewContent = (0, _renderer.default)(scrollView.content());\r\n        this._initCallbacks()\r\n    },\r\n    _initCallbacks: function() {\r\n        this.pullDownCallbacks = (0, _callbacks.default)();\r\n        this.releaseCallbacks = (0, _callbacks.default)();\r\n        this.reachBottomCallbacks = (0, _callbacks.default)()\r\n    },\r\n    render: function() {\r\n        this.callBase();\r\n        this._renderPullDown();\r\n        this._releaseState()\r\n    },\r\n    _renderPullDown: function() {\r\n        var $image = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n        var $loadContainer = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n        var $loadIndicator = new _load_indicator.default((0, _renderer.default)(\"<div>\")).$element();\r\n        var $text = this._$pullDownText = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n        this._$pullingDownText = (0, _renderer.default)(\"<div>\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n        this._$pulledDownText = (0, _renderer.default)(\"<div>\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n        this._$refreshingText = (0, _renderer.default)(\"<div>\").text(this.option(\"refreshingText\")).appendTo($text);\r\n        this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n    },\r\n    _releaseState: function() {\r\n        this._state = STATE_RELEASED;\r\n        this._refreshPullDownText()\r\n    },\r\n    _pushBackFromBoundary: function() {\r\n        if (!this._isLocked() && !this._component.isEmpty()) {\r\n            this.callBase()\r\n        }\r\n    },\r\n    _refreshPullDownText: function() {\r\n        var that = this;\r\n        var pullDownTextItems = [{\r\n            element: this._$pullingDownText,\r\n            visibleState: STATE_RELEASED\r\n        }, {\r\n            element: this._$pulledDownText,\r\n            visibleState: STATE_READY\r\n        }, {\r\n            element: this._$refreshingText,\r\n            visibleState: STATE_REFRESHING\r\n        }];\r\n        (0, _iterator.each)(pullDownTextItems, function(_, item) {\r\n            var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n            item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n        })\r\n    },\r\n    update: function() {\r\n        this.callBase();\r\n        this._setTopPocketOffset()\r\n    },\r\n    _updateDimensions: function() {\r\n        this.callBase();\r\n        this._topPocketSize = this._$topPocket.height();\r\n        this._bottomPocketSize = this._$bottomPocket.height();\r\n        if (_browser.default.msie) {\r\n            this._scrollOffset = Math.round(100 * (this._$container.height() - this._$content.height())) / 100\r\n        } else {\r\n            this._scrollOffset = this._$container.height() - this._$content.height()\r\n        }\r\n    },\r\n    _allowedDirections: function() {\r\n        var allowedDirections = this.callBase();\r\n        allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n        return allowedDirections\r\n    },\r\n    _setTopPocketOffset: function() {\r\n        this._$topPocket.css({\r\n            top: -this._topPocketSize\r\n        })\r\n    },\r\n    handleEnd: function() {\r\n        this.callBase();\r\n        this._complete()\r\n    },\r\n    handleStop: function() {\r\n        this.callBase();\r\n        this._complete()\r\n    },\r\n    _complete: function() {\r\n        if (this._state === STATE_READY) {\r\n            this._setPullDownOffset(this._topPocketSize);\r\n            clearTimeout(this._pullDownRefreshTimeout);\r\n            this._pullDownRefreshTimeout = setTimeout(function() {\r\n                this._pullDownRefreshing()\r\n            }.bind(this), 400)\r\n        }\r\n    },\r\n    _setPullDownOffset: function(offset) {\r\n        (0, _translator.move)(this._$topPocket, {\r\n            top: offset\r\n        });\r\n        (0, _translator.move)(this._$scrollViewContent, {\r\n            top: offset\r\n        })\r\n    },\r\n    handleScroll: function(e) {\r\n        this.callBase(e);\r\n        if (this._state === STATE_REFRESHING) {\r\n            return\r\n        }\r\n        var currentLocation = this.location().top;\r\n        var scrollDelta = (this._location || 0) - currentLocation;\r\n        this._location = currentLocation;\r\n        if (this._isPullDown()) {\r\n            this._pullDownReady()\r\n        } else {\r\n            if (scrollDelta > 0 && this._isReachBottom()) {\r\n                this._reachBottom()\r\n            } else {\r\n                this._stateReleased()\r\n            }\r\n        }\r\n    },\r\n    _isPullDown: function() {\r\n        return this._pullDownEnabled && this._location >= this._topPocketSize\r\n    },\r\n    _isReachBottom: function() {\r\n        return this._reachBottomEnabled && this._location - (this._scrollOffset + this._bottomPocketSize) <= .5\r\n    },\r\n    _reachBottom: function() {\r\n        if (this._state === STATE_LOADING) {\r\n            return\r\n        }\r\n        this._state = STATE_LOADING;\r\n        this.reachBottomCallbacks.fire()\r\n    },\r\n    _pullDownReady: function() {\r\n        if (this._state === STATE_READY) {\r\n            return\r\n        }\r\n        this._state = STATE_READY;\r\n        this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n        this._refreshPullDownText()\r\n    },\r\n    _stateReleased: function() {\r\n        if (this._state === STATE_RELEASED) {\r\n            return\r\n        }\r\n        this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n        this._releaseState()\r\n    },\r\n    _pullDownRefreshing: function() {\r\n        if (this._state === STATE_REFRESHING) {\r\n            return\r\n        }\r\n        this._state = STATE_REFRESHING;\r\n        this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n        this._refreshPullDownText();\r\n        this.pullDownCallbacks.fire()\r\n    },\r\n    pullDownEnable: function(enabled) {\r\n        if (enabled) {\r\n            this._updateDimensions();\r\n            this._setTopPocketOffset()\r\n        }\r\n        this._pullDownEnabled = enabled\r\n    },\r\n    reachBottomEnable: function(enabled) {\r\n        this._reachBottomEnabled = enabled\r\n    },\r\n    pendingRelease: function() {\r\n        this._state = STATE_READY\r\n    },\r\n    release: function() {\r\n        var deferred = new _deferred.Deferred;\r\n        this._updateDimensions();\r\n        clearTimeout(this._releaseTimeout);\r\n        if (this._state === STATE_LOADING) {\r\n            this._state = STATE_RELEASED\r\n        }\r\n        this._releaseTimeout = setTimeout(function() {\r\n            this._setPullDownOffset(0);\r\n            this._stateReleased();\r\n            this.releaseCallbacks.fire();\r\n            this._updateAction();\r\n            deferred.resolve()\r\n        }.bind(this), PULLDOWN_RELEASE_TIME);\r\n        return deferred.promise()\r\n    },\r\n    dispose: function() {\r\n        clearTimeout(this._pullDownRefreshTimeout);\r\n        clearTimeout(this._releaseTimeout);\r\n        this.callBase()\r\n    }\r\n});\r\nvar _default = PullDownNativeScrollViewStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointments.layout_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.vertical\"));\r\nvar _uiSchedulerAppointmentsStrategy2 = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.horizontal\"));\r\nvar _uiSchedulerAppointmentsStrategy3 = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month_line\"));\r\nvar _uiSchedulerAppointmentsStrategy4 = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month\"));\r\nvar _uiSchedulerAppointmentsStrategy5 = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.agenda\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar RENDERING_STRATEGIES = {\r\n    horizontal: _uiSchedulerAppointmentsStrategy2.default,\r\n    horizontalMonth: _uiSchedulerAppointmentsStrategy4.default,\r\n    horizontalMonthLine: _uiSchedulerAppointmentsStrategy3.default,\r\n    vertical: _uiSchedulerAppointmentsStrategy.default,\r\n    agenda: _uiSchedulerAppointmentsStrategy5.default\r\n};\r\nvar AppointmentLayoutManager = function() {\r\n    function AppointmentLayoutManager(instance, renderingStrategy) {\r\n        _classCallCheck(this, AppointmentLayoutManager);\r\n        this.instance = instance;\r\n        renderingStrategy && this.initRenderingStrategy(renderingStrategy)\r\n    }\r\n    _createClass(AppointmentLayoutManager, [{\r\n        key: \"getCellDimensions\",\r\n        value: function(options) {\r\n            if (this.instance._workSpace) {\r\n                return {\r\n                    width: this.instance._workSpace.getCellWidth(),\r\n                    height: this.instance._workSpace.getCellHeight(),\r\n                    allDayHeight: this.instance._workSpace.getAllDayHeight()\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getGroupOrientation\",\r\n        value: function(options) {\r\n            if (this.instance._workSpace) {\r\n                options.callback(this.instance._workSpace._getRealGroupOrientation())\r\n            }\r\n        }\r\n    }, {\r\n        key: \"initRenderingStrategy\",\r\n        value: function(renderingStrategy) {\r\n            var Strategy = RENDERING_STRATEGIES[renderingStrategy];\r\n            this._renderingStrategyInstance = new Strategy(this.instance);\r\n            this.renderingStrategy = renderingStrategy\r\n        }\r\n    }, {\r\n        key: \"createAppointmentsMap\",\r\n        value: function(items) {\r\n            var _this = this;\r\n            var _this$getCellDimensio = this.getCellDimensions(),\r\n                allDayHeight = _this$getCellDimensio.allDayHeight;\r\n            this.instance._allDayCellHeight = allDayHeight;\r\n            this.getGroupOrientation({\r\n                callback: function(groupOrientation) {\r\n                    return _this.instance._groupOrientation = groupOrientation\r\n                }\r\n            });\r\n            var appointments = items ? items.slice() : [];\r\n            this._positionMap = this._renderingStrategyInstance.createTaskPositionMap(appointments);\r\n            return this._createAppointmentsMapCore(appointments, this._positionMap)\r\n        }\r\n    }, {\r\n        key: \"_createAppointmentsMapCore\",\r\n        value: function(list, positionMap) {\r\n            var _this2 = this;\r\n            return list.map(function(data, index) {\r\n                if (!_this2._renderingStrategyInstance.keepAppointmentSettings()) {\r\n                    delete data.settings\r\n                }\r\n                var appointmentSettings = positionMap[index];\r\n                appointmentSettings.forEach(function(settings) {\r\n                    settings.direction = \"vertical\" === _this2.renderingStrategy && !settings.allDay ? \"vertical\" : \"horizontal\"\r\n                });\r\n                return {\r\n                    itemData: data,\r\n                    settings: appointmentSettings,\r\n                    needRepaint: true,\r\n                    needRemove: false\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_isDataChanged\",\r\n        value: function(data) {\r\n            var updatedData = this.instance.getUpdatedAppointment();\r\n            return updatedData === data || this.instance.getUpdatedAppointmentKeys().some(function(item) {\r\n                return data[item.key] === item.value\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_isAppointmentShouldAppear\",\r\n        value: function(currentAppointment, sourceAppointment) {\r\n            return currentAppointment.needRepaint && sourceAppointment.needRemove\r\n        }\r\n    }, {\r\n        key: \"_isSettingChanged\",\r\n        value: function(settings, sourceSetting) {\r\n            if (settings.length !== sourceSetting.length) {\r\n                return true\r\n            }\r\n            for (var i = 0; i < settings.length; i++) {\r\n                var newSettings = settings[i];\r\n                var oldSettings = sourceSetting[i];\r\n                if (oldSettings) {\r\n                    oldSettings.sortedIndex = newSettings.sortedIndex\r\n                }\r\n                if (!(0, _common.equalByValue)(newSettings, oldSettings)) {\r\n                    return true\r\n                }\r\n            }\r\n            return false\r\n        }\r\n    }, {\r\n        key: \"_getAssociatedSourceAppointment\",\r\n        value: function(currentAppointment, sourceAppointments) {\r\n            for (var i = 0; i < sourceAppointments.length; i++) {\r\n                var item = sourceAppointments[i];\r\n                if (item.itemData === currentAppointment.itemData) {\r\n                    return item\r\n                }\r\n            }\r\n            return null\r\n        }\r\n    }, {\r\n        key: \"_getDeletedAppointments\",\r\n        value: function(currentAppointments, sourceAppointments) {\r\n            var result = [];\r\n            for (var i = 0; i < sourceAppointments.length; i++) {\r\n                var sourceAppointment = sourceAppointments[i];\r\n                var currentAppointment = this._getAssociatedSourceAppointment(sourceAppointment, currentAppointments);\r\n                if (!currentAppointment) {\r\n                    sourceAppointment.needRemove = true;\r\n                    result.push(sourceAppointment)\r\n                }\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"getRepaintedAppointments\",\r\n        value: function(currentAppointments, sourceAppointments) {\r\n            var _this3 = this;\r\n            if (0 === sourceAppointments.length || \"agenda\" === this.renderingStrategy) {\r\n                return currentAppointments\r\n            }\r\n            currentAppointments.forEach(function(appointment) {\r\n                var sourceAppointment = _this3._getAssociatedSourceAppointment(appointment, sourceAppointments);\r\n                if (sourceAppointment) {\r\n                    appointment.needRepaint = _this3._isDataChanged(appointment.itemData) || _this3._isSettingChanged(appointment.settings, sourceAppointment.settings) || _this3._isAppointmentShouldAppear(appointment, sourceAppointment)\r\n                }\r\n            });\r\n            return currentAppointments.concat(this._getDeletedAppointments(currentAppointments, sourceAppointments))\r\n        }\r\n    }, {\r\n        key: \"getRenderingStrategyInstance\",\r\n        value: function() {\r\n            return this._renderingStrategyInstance\r\n        }\r\n    }]);\r\n    return AppointmentLayoutManager\r\n}();\r\nvar _default = AppointmentLayoutManager;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/timezones/timezones_data.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = {\r\n    zones: [{\r\n        id: \"Africa/Abidjan\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Accra\",\r\n        untils: \"-r507yk|1e3pak|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|Infinity\",\r\n        offsets: \"0.8667|0|-20\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Africa/Addis_Ababa\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Africa/Algiers\",\r\n        untils: \"-uozn3l|2qx1nl|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|53c00|9idxc0|3i040|51mw0|253uk0|9o2k0|92040|8l3s0|jutc0|4uy840|3rdzw0|46xc00|7x6o0|2xco40|8n180|7x9g0|9d440|kiqg0|9d440|9q2s0|9cyk0|Infinity\",\r\n        offsets: \"-9.35|0|-60|-120\",\r\n        offsetIndices: \"0121212121212121232321212122321212\"\r\n    }, {\r\n        id: \"Africa/Asmara\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Africa/Asmera\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Africa/Bamako\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Bangui\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Banjul\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Bissau\",\r\n        untils: \"-u9rek0|wvoyo0|Infinity\",\r\n        offsets: \"62.3333|60|0\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Africa/Blantyre\",\r\n        untils: \"-yvtfd8|Infinity\",\r\n        offsets: \"-130.3333|-120\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Brazzaville\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Bujumbura\",\r\n        untils: \"-yvtfd8|Infinity\",\r\n        offsets: \"-130.3333|-120\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Cairo\",\r\n        untils: \"-fdls80|40d80|a31g0|7x3w0|a4w40|aqyk0|80ys0|b07w0|7tk40|b07w0|8jhg0|a8fw0|60go40|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|f9x80|3i040|eluk0|462s0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|b5rw0|7m5g0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|aqvs0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7k580|b5xg0|6u7w0|bvus0|6h980|c8tg0|64ak0|cyqs0|5anw0|1jms0|12t80|1w22s0|25p80|1sw40|2vmk0|Infinity\",\r\n        offsets: \"-120|-180\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Africa/Casablanca\",\r\n        untils: \"-tblt9g|di7nxg|3huk0|51k40|2znuk0|2dp9g0|776k0|8nt2s0|657w0|3ifxg0|3jp80|va040|4qak0|e1ms0|7pp80|cnms0|3afw0|2xi840|xqqk0|bp56s0|4qak0|e1ms0|45x80|d2g40|51ek0|c8tg0|64ak0|e1sc0|47uo0|1leo0|23xc0|asw00|3lmo0|1qyo0|40g00|7x6o0|4mo00|1stc0|4deo0|7x6o0|3ylc0|1stc0|51hc0|7x6o0|3lmo0|1stc0|5reo0|7k800|2vpc0|25s00|64dc0|7k800|2iqo0|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|25s00|g7c00|1stc0|g7c00|25s00|Infinity\",\r\n        offsets: \"30.3333|0|-60\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Africa/Ceuta\",\r\n        untils: \"-qyiys0|7x3w0|2vt440|8sqs0|ssyk0|8n6s0|9px80|905g0|a2yo0|902o0|k69dc0|657w0|3ifxg0|3jp80|va040|4qak0|e1ms0|7pp80|cnms0|3afw0|2xi840|129us0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Africa/Conakry\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Dakar\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Dar_es_Salaam\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Africa/Djibouti\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Africa/Douala\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/El_Aaiun\",\r\n        untils: \"-isdxk0|m2g0c0|vek0|4qak0|e1ms0|7pp80|cnms0|3afw0|fke5g0|4qak0|e1ms0|45x80|d2g40|51ek0|c8tg0|64ak0|e1sc0|47uo0|1leo0|23xc0|asw00|3lmo0|1qyo0|40g00|7x6o0|4mo00|1stc0|4deo0|7x6o0|3ylc0|1stc0|51hc0|7x6o0|3lmo0|1stc0|5reo0|7k800|2vpc0|25s00|64dc0|7k800|2iqo0|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|25s00|g7c00|1stc0|g7c00|25s00|Infinity\",\r\n        offsets: \"52.8|60|0|-60\",\r\n        offsetIndices: \"012323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"Africa/Freetown\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Gaborone\",\r\n        untils: \"-yvtfd8|Infinity\",\r\n        offsets: \"-130.3333|-120\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Harare\",\r\n        untils: \"-yvtfd8|Infinity\",\r\n        offsets: \"-130.3333|-120\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Johannesburg\",\r\n        untils: \"-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity\",\r\n        offsets: \"-90|-120|-180\",\r\n        offsetIndices: \"012121\"\r\n    }, {\r\n        id: \"Africa/Juba\",\r\n        untils: \"-kcrsis|kixuys|8l6k0|a4w40|8n180|a6qs0|8n180|a31g0|8ovw0|a16s0|8qqk0|9zc40|8sl80|9xhg0|8wak0|9ts40|8y580|a4w40|8n180|a31g0|8ovw0|a16s0|8sl80|9xhg0|8ufw0|9vms0|8wak0|9ts40|8y580|a4w40|8ovw0|a16s0|8qqk0|7frw40|Infinity\",\r\n        offsets: \"-126.4667|-120|-180\",\r\n        offsetIndices: \"01212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Africa/Kampala\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Africa/Khartoum\",\r\n        untils: \"-kcrsow|kixv4w|8l6k0|a4w40|8n180|a6qs0|8n180|a31g0|8ovw0|a16s0|8qqk0|9zc40|8sl80|9xhg0|8wak0|9ts40|8y580|a4w40|8n180|a31g0|8ovw0|a16s0|8sl80|9xhg0|8ufw0|9vms0|8wak0|9ts40|8y580|a4w40|8ovw0|a16s0|8qqk0|7frw40|9ac180|Infinity\",\r\n        offsets: \"-130.1333|-120|-180\",\r\n        offsetIndices: \"012121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Africa/Kigali\",\r\n        untils: \"-yvtfd8|Infinity\",\r\n        offsets: \"-130.3333|-120\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Kinshasa\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Lagos\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Libreville\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Lome\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Luanda\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Lubumbashi\",\r\n        untils: \"-yvtfd8|Infinity\",\r\n        offsets: \"-130.3333|-120\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Lusaka\",\r\n        untils: \"-yvtfd8|Infinity\",\r\n        offsets: \"-130.3333|-120\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Malabo\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Maputo\",\r\n        untils: \"-yvtfd8|Infinity\",\r\n        offsets: \"-130.3333|-120\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Maseru\",\r\n        untils: \"-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity\",\r\n        offsets: \"-90|-120|-180\",\r\n        offsetIndices: \"012121\"\r\n    }, {\r\n        id: \"Africa/Mbabane\",\r\n        untils: \"-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity\",\r\n        offsets: \"-90|-120|-180\",\r\n        offsetIndices: \"012121\"\r\n    }, {\r\n        id: \"Africa/Mogadishu\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Africa/Monrovia\",\r\n        untils: \"-qj6zc4|rl202a|Infinity\",\r\n        offsets: \"43.1333|44.5|0\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Africa/Nairobi\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Africa/Ndjamena\",\r\n        untils: \"-u9rk4c|zdk5cc|7iak0|Infinity\",\r\n        offsets: \"-60.2|-60|-120\",\r\n        offsetIndices: \"0121\"\r\n    }, {\r\n        id: \"Africa/Niamey\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Nouakchott\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Ouagadougou\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Porto-Novo\",\r\n        untils: \"-q9qbao|Infinity\",\r\n        offsets: \"-13.6|-60\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Sao_Tome\",\r\n        untils: \"-u9rhc0|1jbm840|irxc0|Infinity\",\r\n        offsets: \"36.75|0|-60\",\r\n        offsetIndices: \"0121\"\r\n    }, {\r\n        id: \"Africa/Timbuktu\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Africa/Tripoli\",\r\n        untils: \"-q3gfrw|gl6ajw|422c0|xado0|4bbo0|wrpg0|4s580|1kdpg0|c05bw0|4mqs0|9et80|9d440|9et80|9eys0|9et80|9mdg0|95jw0|9io40|9cyk0|99es0|9et80|9eys0|9et80|9d440|9et80|b2840|3cf3w0|9kis0|9et80|7vqyw0|75eo0|asw00|Infinity\",\r\n        offsets: \"-52.7333|-60|-120\",\r\n        offsetIndices: \"012121212121212121212121212122122\"\r\n    }, {\r\n        id: \"Africa/Tunis\",\r\n        untils: \"-uozn3l|enxevl|b5uo0|53c00|u8w00|7x9g0|c8w80|7k800|z3w0|ew40|8bx80|9d440|9nx00|925o0|8l100|gi3440|7k800|b9k00|7vc00|51mw00|5ytc0|9d1c0|9d1c0|b9k00|7thc0|7m0tc0|7tk40|93us0|b5uo0|7k800|b5uo0|7x6o0|asw00|Infinity\",\r\n        offsets: \"-9.35|-60|-120\",\r\n        offsetIndices: \"0121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Africa/Windhoek\",\r\n        untils: \"-yvtdi0|kn7o60|9cyk0|oj2nw0|235k00|8lho0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|Infinity\",\r\n        offsets: \"-90|-120|-180|-60\",\r\n        offsetIndices: \"01211313131313131313131313131313131313131313131313131\"\r\n    }, {\r\n        id: \"America/Adak\",\r\n        untils: \"-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"660|600|540\",\r\n        offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Anchorage\",\r\n        untils: \"-ek1qo0|1tyx80|2e400|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"600|540|480\",\r\n        offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Anguilla\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Antigua\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Araguaina\",\r\n        untils: \"-t85j2o|99k8mo|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|2yl440|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|51udg0|64ak0|Infinity\",\r\n        offsets: \"192.8|180|120\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Argentina/Buenos_Aires\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323232323232\"\r\n    }, {\r\n        id: \"America/Argentina/Catamarca\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323132321232\"\r\n    }, {\r\n        id: \"America/Argentina/ComodRivadavia\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323132321232\"\r\n    }, {\r\n        id: \"America/Argentina/Cordoba\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323132323232\"\r\n    }, {\r\n        id: \"America/Argentina/Jujuy\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|c8w80|776k0|ag040|7k2g0|bvus0|776k0|7qcg40|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121232323121323232\"\r\n    }, {\r\n        id: \"America/Argentina/La_Rioja\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6qik0|3g880|8jbw0|6u7w0|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121232323231232321232\"\r\n    }, {\r\n        id: \"America/Argentina/Mendoza\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bktk0|71mk0|bqas0|73h80|bvus0|773s0|5unes0|6hes0|1p7mk0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232312121321232\"\r\n    }, {\r\n        id: \"America/Argentina/Rio_Gallegos\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323232321232\"\r\n    }, {\r\n        id: \"America/Argentina/Salta\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121232323231323232\"\r\n    }, {\r\n        id: \"America/Argentina/San_Juan\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6qik0|3g880|8jbw0|6u7w0|bvus0|776k0|5v2840|2txg0|1sgak0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121232323231232321232\"\r\n    }, {\r\n        id: \"America/Argentina/San_Luis\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|7pp80|b2aw0|71mk0|4qg40|6s8ik0|2txg0|1sgak0|14nw0|2gys0|b5xg0|7k580|b5xg0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121232323121212321212\"\r\n    }, {\r\n        id: \"America/Argentina/Tucuman\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|mas0|1um2k0|3yik0|b5xg0|7k580|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212323232313232123232\"\r\n    }, {\r\n        id: \"America/Argentina/Ushuaia\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|5v0dg0|12ys0|1u93w0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323232321232\"\r\n    }, {\r\n        id: \"America/Aruba\",\r\n        untils: \"-u7lckd|rlo7qd|Infinity\",\r\n        offsets: \"275.7833|270|240\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"America/Asuncion\",\r\n        untils: \"-jy93zk|ldwofk|s4vw0|s6w40|7tek0|b0dg0|7rjw0|b0dg0|7rjw0|b0dg0|9cyk0|9eys0|9et80|9eys0|9cyk0|9eys0|9cyk0|9eys0|9cyk0|9eys0|9et80|9eys0|9cyk0|9eys0|9cyk0|9eys0|9cyk0|9eys0|9et80|9eys0|9cyk0|ahus0|8a2k0|9eys0|9cyk0|9o840|7k580|b7s40|93p80|9gtg0|7nuk0|b42s0|7lzw0|b5xg0|7tek0|b9ms0|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|7kas0|b5rw0|7x9g0|ast80|a31g0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|776k0|biw40|8zzw0|905g0|9px80|905g0|9px80|9d440|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|Infinity\",\r\n        offsets: \"230.6667|240|180\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Atikokan\",\r\n        untils: \"-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"0101111\"\r\n    }, {\r\n        id: \"America/Atka\",\r\n        untils: \"-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"660|600|540\",\r\n        offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Bahia_Banderas\",\r\n        untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|asqg0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"421|420|360|480|300\",\r\n        offsetIndices: \"0121212131212121212121212121212121212142424242424242424242424242424242424242424242424242424242\"\r\n    }, {\r\n        id: \"America/Bahia\",\r\n        untils: \"-t85kv8|99kaf8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|4irc40|6u7w0|Infinity\",\r\n        offsets: \"154.0667|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Barbados\",\r\n        untils: \"-o0aiaj|46b400|npv1mj|5rbw0|a31g0|8n180|a31g0|8n180|ag040|84ik0|Infinity\",\r\n        offsets: \"238.4833|240|180\",\r\n        offsetIndices: \"00121212121\"\r\n    }, {\r\n        id: \"America/Belem\",\r\n        untils: \"-t85j0s|99k8ks|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|Infinity\",\r\n        offsets: \"193.9333|180|120\",\r\n        offsetIndices: \"012121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Belize\",\r\n        untils: \"-u52ic0|3edkc0|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|g2t2q0|3e580|4mcys0|2vmk0|Infinity\",\r\n        offsets: \"352.8|360|330|300\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121213131\"\r\n    }, {\r\n        id: \"America/Blanc-Sablon\",\r\n        untils: \"-qzp0o0|a2vw0|c5jxg0|1tzdw0|2dnc0|Infinity\",\r\n        offsets: \"240|180\",\r\n        offsetIndices: \"010110\"\r\n    }, {\r\n        id: \"America/Boa_Vista\",\r\n        untils: \"-t85grk|99k93k|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|62xk40|7k580|biw40|cvw0|Infinity\",\r\n        offsets: \"242.6667|240|180\",\r\n        offsetIndices: \"0121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Bogota\",\r\n        untils: \"-srdoy8|14f1hi8|ha580|Infinity\",\r\n        offsets: \"296.2667|300|240\",\r\n        offsetIndices: \"0121\"\r\n    }, {\r\n        id: \"America/Boise\",\r\n        untils: \"-r0emw0|ast80|7x9g0|ast80|1um840|9s7jw0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|51k40|doik0|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420|360\",\r\n        offsetIndices: \"0101012212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Buenos_Aires\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323232323232\"\r\n    }, {\r\n        id: \"America/Cambridge_Bay\",\r\n        untils: \"-q3gdc0|bjeec0|1tz5k0|2dvo0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x6o0|ast80|ct40|7kj40|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"0|420|360|300\",\r\n        offsetIndices: \"0122131212121212121212121212121212121212121212233221212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Campo_Grande\",\r\n        untils: \"-t85hvw|99ka7w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity\",\r\n        offsets: \"218.4667|240|180\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Cancun\",\r\n        untils: \"-p1u7c0|vauo00|7ggw40|afuk0|8a840|afuk0|8a840|64ak0|4bms0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|51k40|Infinity\",\r\n        offsets: \"347.0667|360|300|240\",\r\n        offsetIndices: \"0123232321212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Caracas\",\r\n        untils: \"-u7lcxw|rlo83w|meoxm0|4dps00|Infinity\",\r\n        offsets: \"267.6667|270|240\",\r\n        offsetIndices: \"01212\"\r\n    }, {\r\n        id: \"America/Catamarca\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323132321232\"\r\n    }, {\r\n        id: \"America/Cayenne\",\r\n        untils: \"-uj7yb4|tcw6r4|Infinity\",\r\n        offsets: \"209.3333|240|180\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"America/Cayman\",\r\n        untils: \"-w757vc|Infinity\",\r\n        offsets: \"319.6|300\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Chicago\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bvus0|776k0|7kas0|b5rw0|9d440|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|7x9g0|dbjw0|8a840|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Chihuahua\",\r\n        untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|xes2s0|afuk0|8a840|afuk0|8aaw0|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"424.3333|420|360|300\",\r\n        offsetIndices: \"0121212323221212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Coral_Harbour\",\r\n        untils: \"-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"0101111\"\r\n    }, {\r\n        id: \"America/Cordoba\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323132323232\"\r\n    }, {\r\n        id: \"America/Costa_Rica\",\r\n        untils: \"-pjw8fn|ubtl3n|51ek0|doo40|51ek0|5jso40|8drw0|acas0|2xh80|Infinity\",\r\n        offsets: \"336.2167|360|300\",\r\n        offsetIndices: \"0121212121\"\r\n    }, {\r\n        id: \"America/Creston\",\r\n        untils: \"-rshz80|vbus0|Infinity\",\r\n        offsets: \"420|480\",\r\n        offsetIndices: \"010\"\r\n    }, {\r\n        id: \"America/Cuiaba\",\r\n        untils: \"-t85hm4|99k9y4|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|w5hg0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity\",\r\n        offsets: \"224.3333|240|180\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Curacao\",\r\n        untils: \"-u7lckd|rlo7qd|Infinity\",\r\n        offsets: \"275.7833|270|240\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"America/Danmarkshavn\",\r\n        untils: \"-rvusjk|x8nx3k|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|53hk0|Infinity\",\r\n        offsets: \"74.6667|180|120|0\",\r\n        offsetIndices: \"01212121212121212121212121212121213\"\r\n    }, {\r\n        id: \"America/Dawson_Creek\",\r\n        untils: \"-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|69uk0|Infinity\",\r\n        offsets: \"480|420\",\r\n        offsetIndices: \"0101101010101010101010101010101010101010101010101010101011\"\r\n    }, {\r\n        id: \"America/Dawson\",\r\n        untils: \"-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|465k00|3e2is0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity\",\r\n        offsets: \"540|480|420\",\r\n        offsetIndices: \"01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Denver\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"420|360\",\r\n        offsetIndices: \"01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Detroit\",\r\n        untils: \"-xx8dyd|5eraud|dyeyk0|1tzb40|2dq40|1c9440|7x3w0|9rlbxo|71s2c|9d440|9cyk0|2cmdg0|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"332.1833|360|300|240\",\r\n        offsetIndices: \"0123323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"America/Dominica\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Edmonton\",\r\n        untils: \"-x1yazk|629ink|a2vw0|8n6s0|29ek0|h6lg0|9px80|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|9l0g40|1tz5k0|2dvo0|tj1g0|7x3w0|ctzk40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"453.8667|420|360\",\r\n        offsetIndices: \"0121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Eirunepe\",\r\n        untils: \"-t85f28|99ka68|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|7hg2s0|2t2t80|Infinity\",\r\n        offsets: \"279.4667|300|240\",\r\n        offsetIndices: \"0121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/El_Salvador\",\r\n        untils: \"-pkm4tc|ymao5c|7k580|b5xg0|7k580|Infinity\",\r\n        offsets: \"356.8|360|300\",\r\n        offsetIndices: \"012121\"\r\n    }, {\r\n        id: \"America/Ensenada\",\r\n        untils: \"-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"468.0667|420|480\",\r\n        offsetIndices: \"012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Fort_Nelson\",\r\n        untils: \"-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity\",\r\n        offsets: \"480|420\",\r\n        offsetIndices: \"01011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"America/Fort_Wayne\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Fortaleza\",\r\n        untils: \"-t85kvc|99kafc|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|puk0|id6s0|6h980|Infinity\",\r\n        offsets: \"154|180|120\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Glace_Bay\",\r\n        untils: \"-z94kwc|89fk8c|a2vw0|c5jxg0|1tzdw0|2dnc0|3y8g40|7x3w0|9pa5g0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"239.8|240|180\",\r\n        offsetIndices: \"012122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Godthab\",\r\n        untils: \"-rvumf4|x8nqz4|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"206.9333|180|120\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Goose_Bay\",\r\n        untils: \"-qzp20k|a2vw0|8kjbw0|kzjyk|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|6y2s0|22420|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"210.8667|150.8667|210|150|240|180|120\",\r\n        offsetIndices: \"010232323232323233232323232323232323232323232323232323232324545454545454545454545454545454545454545454546454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454\"\r\n    }, {\r\n        id: \"America/Grand_Turk\",\r\n        untils: \"-u85og2|z3brw2|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|18ais0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"307.1667|300|240\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121222121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Grenada\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Guadeloupe\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Guatemala\",\r\n        untils: \"-qqqskk|ss0akk|4ofw0|4tidg0|6djw0|3wwas0|8n180|7n5ms0|7x3w0|Infinity\",\r\n        offsets: \"362.0667|360|300\",\r\n        offsetIndices: \"0121212121\"\r\n    }, {\r\n        id: \"America/Guayaquil\",\r\n        untils: \"-kcr84o|wb620o|3jp80|Infinity\",\r\n        offsets: \"314|300|240\",\r\n        offsetIndices: \"0121\"\r\n    }, {\r\n        id: \"America/Guyana\",\r\n        untils: \"-smcak8|vj4sz8|81rf90|Infinity\",\r\n        offsets: \"232.6667|225|180|240\",\r\n        offsetIndices: \"0123\"\r\n    }, {\r\n        id: \"America/Halifax\",\r\n        untils: \"-z94k80|777go0|9et80|st9o0|a2vw0|ssyk0|5rbw0|cv1g0|69uk0|c6ys0|6kyk0|ci2s0|67zw0|ci2s0|6w2k0|bu040|7lzw0|bu040|66580|bu040|7lzw0|bu040|64ak0|cls40|5v180|cv1g0|6j3w0|c6ys0|79180|b42s0|7lzw0|b42s0|7yyk0|bu040|64ak0|dbpg0|66580|cls40|5ed80|bu040|7lzw0|b42s0|7lzw0|cjxg0|66580|bh1g0|7lzw0|b42s0|7lzw0|6uj00|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|1cm2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"254.4|240|180\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Havana\",\r\n        untils: \"-n7762o|1icfyo|69uk0|62s040|4ofw0|e1ms0|51ek0|e1ms0|4ofw0|1fhs40|4ofw0|e1ms0|4ofw0|9s9k40|67zw0|cedg0|6h980|9o840|7yyk0|b5xg0|7k580|bvus0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|8a2k0|ag040|8bx80|ae5g0|8drw0|acas0|9cyk0|9d440|9px80|905g0|9px80|9q2s0|7x3w0|8a840|ast80|7x9g0|ast80|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|905g0|a2vw0|905g0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|8n400|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|7x6o0|1cm000|6uao0|bvs00|779c0|bitc0|6uao0|bvs00|779c0|bvs00|779c0|c8qo0|779c0|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|Infinity\",\r\n        offsets: \"329.6|300|240\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Hermosillo\",\r\n        untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"443.8667|420|360|480\",\r\n        offsetIndices: \"0121212131212121\"\r\n    }, {\r\n        id: \"America/Indiana/Indianapolis\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Indiana/Knox\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Indiana/Marengo\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|2wsas0|7x3w0|1c9440|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|465h80|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|fvt9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"0101011010101010101010101212121212111212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Indiana/Petersburg\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|501ek0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|sfzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|eu02o0|asw00|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"01010110101010101010101010101010101010101010101010111011212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Indiana/Tell_City\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|501ek0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|1tw580|9d440|9cyk0|9d440|9cvs0|9d440|9cyk0|ihslg0|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"01010110101010101010101010101021211010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Indiana/Vevay\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|4gyis0|7txx80|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|hfzhg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"010101101212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Indiana/Vincennes\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|3fidg0|7x3w0|asys0|7x3w0|b5rw0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|2lz980|9cyk0|9d440|9cyk0|ihslg0|asw00|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"01010110101010101010101010101010121211011212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Indiana/Winamac\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|465h80|9cyk0|9d440|9cyk0|ihslg0|asw00|6udg0|c8l40|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"01010110101010101010101010101010101010121211021212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Indianapolis\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Inuvik\",\r\n        untils: \"-8ve5c0|6fce80|9q000|71i2w0|ipzw0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"0|480|360|420\",\r\n        offsetIndices: \"0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"America/Iqaluit\",\r\n        untils: \"-eb6ao0|1l3h80|2dq40|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7xc80|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"0|240|300|180|360\",\r\n        offsetIndices: \"01123212121212121212121212121212121212121212142212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Jamaica\",\r\n        untils: \"-u85og2|wbl182|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|Infinity\",\r\n        offsets: \"307.1667|300|240\",\r\n        offsetIndices: \"0121212121212121212121\"\r\n    }, {\r\n        id: \"America/Jujuy\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|c8w80|776k0|ag040|7k2g0|bvus0|776k0|7qcg40|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121232323121323232\"\r\n    }, {\r\n        id: \"America/Juneau\",\r\n        untils: \"-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9d1c0|9d1c0|9cyk0|9d440|9px80|905g0|9px80|1leo0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420|540\",\r\n        offsetIndices: \"01101010101010101010101010001010122020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202\"\r\n    }, {\r\n        id: \"America/Kentucky/Louisville\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|sg5g0|6bp80|a98o40|7x3w0|6w840|1tz8c0|2dsw0|ast9o|1sw2c|21gis0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|4bh80|3j3xc0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"0101010101101010101010101010101010101121212121212111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Kentucky/Monticello\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|bs6g40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"0101011010101010101010101010101010101010101010101010101010101010101010101121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Knox_IN\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Kralendijk\",\r\n        untils: \"-u7lckd|rlo7qd|Infinity\",\r\n        offsets: \"275.7833|270|240\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"America/La_Paz\",\r\n        untils: \"-jxzspo|84ik0|Infinity\",\r\n        offsets: \"272.6|212.6|240\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"America/Lima\",\r\n        untils: \"-w25lpo|fcxjlo|4ml80|93us0|9cyk0|9d440|9cyk0|nw16s0|4ml80|e5c40|4ml80|1fr1g0|4ml80|1yiys0|4ml80|Infinity\",\r\n        offsets: \"308.6|300|240\",\r\n        offsetIndices: \"0121212121212121\"\r\n    }, {\r\n        id: \"America/Los_Angeles\",\r\n        untils: \"-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Louisville\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|sg5g0|6bp80|a98o40|7x3w0|6w840|1tz8c0|2dsw0|ast9o|1sw2c|21gis0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|4bh80|3j3xc0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"0101010101101010101010101010101010101121212121212111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Lower_Princes\",\r\n        untils: \"-u7lckd|rlo7qd|Infinity\",\r\n        offsets: \"275.7833|270|240\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"America/Maceio\",\r\n        untils: \"-t85ldw|99kaxw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|2yl440|64ak0|1wf1g0|7k580|biw40|puk0|id6s0|6h980|Infinity\",\r\n        offsets: \"142.8667|180|120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Managua\",\r\n        untils: \"-ijh6oo|ka1i0o|xqqk0|24p6s0|53980|dmtg0|53980|60itw0|dq240|53es0|235h80|4beis0|8zzw0|at4c0|7x140|Infinity\",\r\n        offsets: \"345.2|360|300\",\r\n        offsetIndices: \"0121212121212121\"\r\n    }, {\r\n        id: \"America/Manaus\",\r\n        untils: \"-t85gvw|99k97w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|Infinity\",\r\n        offsets: \"240.0667|240|180\",\r\n        offsetIndices: \"01212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Marigot\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Martinique\",\r\n        untils: \"-umcvcs|zz5x4s|8zzw0|Infinity\",\r\n        offsets: \"244.3333|240|180\",\r\n        offsetIndices: \"0121\"\r\n    }, {\r\n        id: \"America/Matamoros\",\r\n        untils: \"-p1u7c0|ykt480|ast80|3vppg0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"400|360|300\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Mazatlan\",\r\n        untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"425.6667|420|360|480\",\r\n        offsetIndices: \"0121212131212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Mendoza\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bktk0|71mk0|bqas0|73h80|bvus0|773s0|5unes0|6hes0|1p7mk0|3yik0|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232312121321232\"\r\n    }, {\r\n        id: \"America/Menominee\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|a7n9g0|9px80|1at9g0|2396k0|9d1c0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"01010110101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Merida\",\r\n        untils: \"-p1u7c0|vauo00|hoyk0|6ys0c0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"358.4667|360|300\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Metlakatla\",\r\n        untils: \"-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|gpc840|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|3ylc0|2itg0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420|540\",\r\n        offsetIndices: \"01101010101010101010101010101010102020200202020202020202020202020202020202020202\"\r\n    }, {\r\n        id: \"America/Mexico_City\",\r\n        untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|3knek0|776k0|rf440|5t6k0|1evk40|71mk0|30p1g0|8n180|nufxo0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"396.6|420|360|300\",\r\n        offsetIndices: \"012121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"America/Miquelon\",\r\n        untils: \"-ulmyxk|zzqbdk|3m59g0|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"224.6667|240|180|120\",\r\n        offsetIndices: \"012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"America/Moncton\",\r\n        untils: \"-z94i40|89fhg0|a2vw0|7mqqo0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|dmtg0|64ak0|cao40|6fek0|bkqs0|7iak0|6y5k0|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|s36s0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a2lo|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6uiyc|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"300|240|180\",\r\n        offsetIndices: \"012121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Monterrey\",\r\n        untils: \"-p1u7c0|ykt480|ast80|3vppg0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"401.2667|360|300\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Montevideo\",\r\n        untils: \"-w4mll9|67elc0|1s74p9|9et80|9exe0|9czy0|9exe0|9czy0|3ydyq0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7k6m0|9q1e0|9czy0|asxe0|7x5a0|6do20|ppvy0|4mmm0|8g9qq0|901a0|38pe0|2inw0|2nf9g0|8zzw0|1e3s40|9o3y0|q8he0|2kik0|yxhg0|4bh80|s36s0|2vl60|905g0|5rg20|51ek0|weqs0|3yik0|e1ms0|4ofw0|erk40|3yik0|2vs40|gk7w0|41iys0|3wnw0|erk40|4bh80|c8tg0|64ak0|c8tg0|6u7w0|c8tg0|6h980|bvus0|6u7w0|614qs0|9q2s0|a31g0|7x3w0|ag040|8a2k0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|ag040|8a2k0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n        offsets: \"224.85|240|180|210|150|120|90\",\r\n        offsetIndices: \"001232323232323232323232324242525242525264252525252525252525252525252525252525252525252\"\r\n    }, {\r\n        id: \"America/Montreal\",\r\n        untils: \"-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"300|240\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Montserrat\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Nassau\",\r\n        untils: \"-u6m4c6|r7u7s6|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"309.5|300|240\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/New_York\",\r\n        untils: \"-r0ev80|ast80|7x9g0|ast80|7x9g0|b5rw0|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tzb40|2dq40|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"300|240\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Nipigon\",\r\n        untils: \"-qzoxw0|a2vw0|bfxjw0|pmdk0|1tzb40|2dq40|ewvus0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"300|240\",\r\n        offsetIndices: \"010111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Nome\",\r\n        untils: \"-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l6c0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"660|600|540|480\",\r\n        offsetIndices: \"011001010101010101010101010101010122323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"America/Noronha\",\r\n        untils: \"-t85lzw|99k8rw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity\",\r\n        offsets: \"129.6667|120|60\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/North_Dakota/Beulah\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"420|360|300\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/North_Dakota/Center\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a5c0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"420|360|300\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101011212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/North_Dakota/New_Salem\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a5c0|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"420|360|300\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Nuuk\",\r\n        untils: \"-rvumf4|x8nqz4|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"206.9333|180|120\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Ojinaga\",\r\n        untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|xes2s0|afuk0|8a840|afuk0|8aaw0|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"417.6667|420|360|300\",\r\n        offsetIndices: \"0121212323221212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Panama\",\r\n        untils: \"-w757vc|Infinity\",\r\n        offsets: \"319.6|300\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Pangnirtung\",\r\n        untils: \"-pkmlc0|b0ke00|1tzdw0|2dnc0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|asw00|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7xc80|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"0|240|180|120|300|360\",\r\n        offsetIndices: \"012213121212121212121212121212121212114141414154414141414141414141414141414141414141414141414141414141414141414141414141414\"\r\n    }, {\r\n        id: \"America/Paramaribo\",\r\n        untils: \"-usj4g8|cixc0c|5lydbk|kcrm6c|Infinity\",\r\n        offsets: \"220.6667|220.8667|220.6|210|180\",\r\n        offsetIndices: \"01234\"\r\n    }, {\r\n        id: \"America/Phoenix\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|zjedo|4olg0|9et80|bs6lmc|9cyk0|Infinity\",\r\n        offsets: \"420|360\",\r\n        offsetIndices: \"01010101010\"\r\n    }, {\r\n        id: \"America/Port_of_Spain\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Port-au-Prince\",\r\n        untils: \"-rmk9ac|ylcf6c|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8aaw0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|3vpjw0|ast80|7x9g0|ast80|2stv00|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|pkg40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"289|300|240\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Porto_Acre\",\r\n        untils: \"-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity\",\r\n        offsets: \"271.2|300|240\",\r\n        offsetIndices: \"01212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Porto_Velho\",\r\n        untils: \"-t85g60|99k8i0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|Infinity\",\r\n        offsets: \"255.6|240|180\",\r\n        offsetIndices: \"012121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Puerto_Rico\",\r\n        untils: \"-efsnk0|1ppu40|2dnc0|Infinity\",\r\n        offsets: \"240|180\",\r\n        offsetIndices: \"0110\"\r\n    }, {\r\n        id: \"America/Punta_Arenas\",\r\n        untils: \"-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|2fnh80|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|Infinity\",\r\n        offsets: \"282.7667|300|240|180\",\r\n        offsetIndices: \"0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"America/Rainy_River\",\r\n        untils: \"-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|ewvus0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"010111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Rankin_Inlet\",\r\n        untils: \"-6s8lc0|4c6oo0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"0|360|240|300\",\r\n        offsetIndices: \"012131313131313131313131313131313131313131313331313131313131313131313131313131313131313131313131313131313131313131313131\"\r\n    }, {\r\n        id: \"America/Recife\",\r\n        untils: \"-t85ljc|99kb3c|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity\",\r\n        offsets: \"139.6|180|120\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Regina\",\r\n        untils: \"-xkq9yc|6l1hmc|a2vw0|60enw0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|1b6840|9cyk0|9d440|8zzw0|9q2s0|9cyk0|9q2s0|9cyk0|9d440|9cyk0|66gc0|1tz5k0|2dvo0|a31g0|9cyk0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|tj1g0|9cyk0|9d440|Infinity\",\r\n        offsets: \"418.6|420|360\",\r\n        offsetIndices: \"012121212121212121212121221212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Resolute\",\r\n        untils: \"-bnp9c0|97nco0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"0|360|240|300\",\r\n        offsetIndices: \"012131313131313131313131313131313131313131313331313131313331313131313131313131313131313131313131313131313131313131313131\"\r\n    }, {\r\n        id: \"America/Rio_Branco\",\r\n        untils: \"-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity\",\r\n        offsets: \"271.2|300|240\",\r\n        offsetIndices: \"01212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Rosario\",\r\n        untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n        offsets: \"256.8|240|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212123232323132323232\"\r\n    }, {\r\n        id: \"America/Santa_Isabel\",\r\n        untils: \"-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"468.0667|420|480\",\r\n        offsetIndices: \"012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Santarem\",\r\n        untils: \"-t85hvc|99ka7c|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|Infinity\",\r\n        offsets: \"218.8|240|180\",\r\n        offsetIndices: \"0121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Santiago\",\r\n        untils: \"-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|229zw0|2gt80|awo40|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity\",\r\n        offsets: \"282.7667|300|240|180\",\r\n        offsetIndices: \"010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"America/Santo_Domingo\",\r\n        untils: \"-j6hz1c|hiw29c|67zw0|1dy840|62ha0|cnle0|4h2m0|elyq0|47ta0|ei9e0|4bim0|eek20|4dda0|ecpe0|dkmtg0|1stc0|Infinity\",\r\n        offsets: \"280|300|240|270\",\r\n        offsetIndices: \"01213131313131212\"\r\n    }, {\r\n        id: \"America/Sao_Paulo\",\r\n        untils: \"-t85jd8|99k8x8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5k02s0|6onw0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity\",\r\n        offsets: \"186.4667|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Scoresbysund\",\r\n        untils: \"-rvurxk|x8ntpk|902o0|9cvs0|9cyk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"87.8667|120|60|0\",\r\n        offsetIndices: \"0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"America/Shiprock\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"420|360\",\r\n        offsetIndices: \"01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Sitka\",\r\n        untils: \"-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1leo0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420|540\",\r\n        offsetIndices: \"01101010101010101010101010101010122020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202\"\r\n    }, {\r\n        id: \"America/St_Barthelemy\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/St_Johns\",\r\n        untils: \"-ris3ck|8bx80|ar440|a2vw0|9tjs0|53980|dkys0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|7tmw0|1wfuk|8zzw0|a3480|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"210.8667|150.8667|210|150|90\",\r\n        offsetIndices: \"01010101010101010101010101010101010102323232323232323323232323232323232323232323232323232323232323232323232323232323232323232323232323232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"America/St_Kitts\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/St_Lucia\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/St_Thomas\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/St_Vincent\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Swift_Current\",\r\n        untils: \"-xkq9d4|6l1h14|a2vw0|c5jxg0|1tz5k0|2dvo0|asys0|8n180|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|3yles0|9cyk0|s36s0|9cyk0|9d440|7x3w0|b5xg0|7k580|5j4lg0|Infinity\",\r\n        offsets: \"431.3333|420|360\",\r\n        offsetIndices: \"012122121212121212121212\"\r\n    }, {\r\n        id: \"America/Tegucigalpa\",\r\n        untils: \"-pfzh6k|yho0ik|7k580|b5xg0|7k580|96x1g0|4qak0|Infinity\",\r\n        offsets: \"348.8667|360|300\",\r\n        offsetIndices: \"01212121\"\r\n    }, {\r\n        id: \"America/Thule\",\r\n        untils: \"-rvuj9g|12yzilg|9cyk0|9d440|9cyk0|9q2s0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"275.1333|240|180\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Thunder_Bay\",\r\n        untils: \"-vbavc0|gr8qs0|1tzb40|2dq40|ctmlg0|9cyk0|9d440|9px80|9d440|9cyk0|s36s0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"0122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"America/Tijuana\",\r\n        untils: \"-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"468.0667|420|480\",\r\n        offsetIndices: \"012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Toronto\",\r\n        untils: \"-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"300|240\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Tortola\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Vancouver\",\r\n        untils: \"-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420\",\r\n        offsetIndices: \"0101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Virgin\",\r\n        untils: \"-u6m79w|Infinity\",\r\n        offsets: \"246.0667|240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"America/Whitehorse\",\r\n        untils: \"-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|tiyo0|6qp440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity\",\r\n        offsets: \"540|480|420\",\r\n        offsetIndices: \"01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"America/Winnipeg\",\r\n        untils: \"-s0s7c0|7k580|tj700|a2vw0|9ok840|6u7w0|2a5hg0|1tz8c0|2dsw0|biw40|7x3w0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b7s40|7tek0|autg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|7x3w0|1cm2s0|7k580|1cm2s0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Yakutat\",\r\n        untils: \"-ek1tg0|1tz000|2e180|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1lbw0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"540|480\",\r\n        offsetIndices: \"01101010101010101010101010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"America/Yellowknife\",\r\n        untils: \"-i9m2o0|3pk3o0|1tz5k0|2dvo0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"0|420|360|300\",\r\n        offsetIndices: \"012213121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Antarctica/Casey\",\r\n        untils: \"-irxc0|lag4o0|73bo0|uz1o0|60l80|2fnh80|pz9g0|Infinity\",\r\n        offsets: \"0|-480|-660\",\r\n        offsetIndices: \"01212121\"\r\n    }, {\r\n        id: \"Antarctica/Davis\",\r\n        untils: \"-6rmdc0|42jdw0|27wgs0|l8uss0|7eqs0|unmk0|60qs0|Infinity\",\r\n        offsets: \"0|-420|-300\",\r\n        offsetIndices: \"01012121\"\r\n    }, {\r\n        id: \"Antarctica/DumontDUrville\",\r\n        untils: \"-c05eo0|2mks80|2i72g0|Infinity\",\r\n        offsets: \"0|-600\",\r\n        offsetIndices: \"0101\"\r\n    }, {\r\n        id: \"Antarctica/Macquarie\",\r\n        untils: \"-rsj4w0|8zzw0|11wqk0|f4kh40|a6p8g0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660|0\",\r\n        offsetIndices: \"0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101011\"\r\n    }, {\r\n        id: \"Antarctica/Mawson\",\r\n        untils: \"-8aelc0|t22y80|Infinity\",\r\n        offsets: \"0|-360|-300\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Antarctica/McMurdo\",\r\n        untils: \"-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n        offsets: \"-690|-750|-720|-780\",\r\n        offsetIndices: \"01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"Antarctica/Palmer\",\r\n        untils: \"-2lxhc0|31ho0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|46b6s0|8c2s0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|Infinity\",\r\n        offsets: \"0|180|240|120\",\r\n        offsetIndices: \"0121212121213121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Antarctica/Rothera\",\r\n        untils: \"3lxs00|Infinity\",\r\n        offsets: \"0|180\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Antarctica/South_Pole\",\r\n        untils: \"-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n        offsets: \"-690|-750|-720|-780\",\r\n        offsetIndices: \"01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"Antarctica/Syowa\",\r\n        untils: \"-6qsqo0|Infinity\",\r\n        offsets: \"0|-180\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Antarctica/Troll\",\r\n        untils: \"ibruo0|27pg0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-120\",\r\n        offsetIndices: \"00101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Antarctica/Vostok\",\r\n        untils: \"-6aaao0|Infinity\",\r\n        offsets: \"0|-360\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Arctic/Longyearbyen\",\r\n        untils: \"-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Aden\",\r\n        untils: \"-bwgbbg|Infinity\",\r\n        offsets: \"-186.8667|-180\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Almaty\",\r\n        untils: \"-nu1a90|37a0d0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|Infinity\",\r\n        offsets: \"-307.8|-300|-360|-420\",\r\n        offsetIndices: \"012323232323232323232321232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Amman\",\r\n        untils: \"-kcrtbk|m566fk|60l80|awo40|7v980|awo40|7v980|ayis0|9gnw0|9b9g0|7v980|autg0|7v980|3e6840|9et80|9io40|9cyk0|9d440|9cyk0|9d440|9px80|ayis0|7rjw0|ag040|8a2k0|9zc40|8drw0|a31g0|8zzw0|9d440|9cyk0|9d440|8n180|ag040|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|epmo0|4deo0|9o5c0|9ew00|9b6o0|9ew00|9d1c0|9d1c0|9d1c0|asw00|7x6o0|afxc0|8n400|9d1c0|9d1c0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|wel80|51k40|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|Infinity\",\r\n        offsets: \"-143.7333|-120|-180\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Anadyr\",\r\n        untils: \"-nu1sv8|379zj8|qi27w0|9et80|is040|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity\",\r\n        offsets: \"-709.9333|-720|-780|-840|-660\",\r\n        offsetIndices: \"01232121212121212121214121212121212121212121212121212121212141\"\r\n    }, {\r\n        id: \"Asia/Aqtau\",\r\n        untils: \"-nu15b4|379y74|qrh3w0|iruk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-201.0667|-240|-300|-360\",\r\n        offsetIndices: \"012323232323232323232123232312121212121212121212\"\r\n    }, {\r\n        id: \"Asia/Aqtobe\",\r\n        untils: \"-nu16l4|379zh4|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|Infinity\",\r\n        offsets: \"-228.6667|-240|-300|-360\",\r\n        offsetIndices: \"0123232323232323232321232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Ashgabat\",\r\n        untils: \"-nu16t8|379zp8|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|Infinity\",\r\n        offsets: \"-233.5333|-240|-300|-360\",\r\n        offsetIndices: \"0123232323232323232323212\"\r\n    }, {\r\n        id: \"Asia/Ashkhabad\",\r\n        untils: \"-nu16t8|379zp8|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|Infinity\",\r\n        offsets: \"-233.5333|-240|-300|-360\",\r\n        offsetIndices: \"0123232323232323232323212\"\r\n    }, {\r\n        id: \"Asia/Atyrau\",\r\n        untils: \"-nu15m8|37a1a8|qrh140|iruk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|j3440|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-207.7333|-180|-300|-360|-240\",\r\n        offsetIndices: \"01232323232323232323242323232323232324242424242\"\r\n    }, {\r\n        id: \"Asia/Baghdad\",\r\n        untils: \"-r50g80|xkn3w0|7v980|9b9g0|9gnw0|9eys0|9et80|9d440|9b9g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9f1k0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|Infinity\",\r\n        offsets: \"-177.6|-180|-240\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Bahrain\",\r\n        untils: \"-q3gmvk|rctnrk|Infinity\",\r\n        offsets: \"-206.1333|-240|-180\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Asia/Baku\",\r\n        untils: \"-nu158c|h4tkwc|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9d1c0|239ew0|asw00|7x3w0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-199.4|-180|-240|-300\",\r\n        offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Bangkok\",\r\n        untils: \"-pysda4|Infinity\",\r\n        offsets: \"-402.0667|-420\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Barnaul\",\r\n        untils: \"-q4ljic|5hu6uc|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|38fo0|64og0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity\",\r\n        offsets: \"-335|-360|-420|-480\",\r\n        offsetIndices: \"0123232323232323232323212323232321212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Asia/Beirut\",\r\n        untils: \"-pyzew0|aunw0|88dg0|9et80|8yas0|a2vw0|a31g0|7k580|hjqo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|5lhs40|56yk0|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|autg0|7v980|2wxus0|8n180|a4w40|8n180|a4w40|8n180|a4w40|8n180|bs5g0|71mk0|alk40|86d80|a4w40|8n180|a4w40|8n180|a6qs0|80t80|905g0|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|Infinity\",\r\n        offsets: \"-120|-180\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Bishkek\",\r\n        untils: \"-nu19tc|379zxc|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|h8dc0|bkl80|8n180|a31g0|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9db20|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|Infinity\",\r\n        offsets: \"-298.4|-300|-360|-420\",\r\n        offsetIndices: \"012323232323232323232321212121212121212121212121212\"\r\n    }, {\r\n        id: \"Asia/Brunei\",\r\n        untils: \"-mvofy4|3khxs4|Infinity\",\r\n        offsets: \"-459.6667|-450|-480\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Asia/Calcutta\",\r\n        untils: \"-xehava|innm9a|bmfw0|5lxg0|1mn180|Infinity\",\r\n        offsets: \"-321.1667|-330|-390\",\r\n        offsetIndices: \"012121\"\r\n    }, {\r\n        id: \"Asia/Chita\",\r\n        untils: \"-q4cfog|5hkxgg|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnew0|Infinity\",\r\n        offsets: \"-453.8667|-480|-540|-600\",\r\n        offsetIndices: \"012323232323232323232321232323232323232323232323232323232323232312\"\r\n    }, {\r\n        id: \"Asia/Choibalsan\",\r\n        untils: \"-xmct7c|11sndrc|2qk2k0|9eqg0|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|s6qk0|3nc0c0|9ct00|9d9o0|9ct00|Infinity\",\r\n        offsets: \"-458|-420|-480|-600|-540\",\r\n        offsetIndices: \"0123434343434343434343434343434343434343434343424242\"\r\n    }, {\r\n        id: \"Asia/Chongqing\",\r\n        untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"01010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Chungking\",\r\n        untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"01010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Colombo\",\r\n        untils: \"-xehask|isle6k|cajy0|1mp2u0|qetjw0|7x5a0|4xvqq0|Infinity\",\r\n        offsets: \"-319.5333|-330|-360|-390\",\r\n        offsetIndices: \"01231321\"\r\n    }, {\r\n        id: \"Asia/Dacca\",\r\n        untils: \"-eqtpow|bmgyw|5lxg0|4qknw0|u4ijy0|a1400|Infinity\",\r\n        offsets: \"-353.3333|-390|-330|-360|-420\",\r\n        offsetIndices: \"0121343\"\r\n    }, {\r\n        id: \"Asia/Damascus\",\r\n        untils: \"-q3gk20|5k6q0|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|k4hk40|7yyk0|awo40|7tek0|b0dg0|7v980|awo40|7tek0|alk40|887w0|awo40|7v980|ayis0|7v980|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|6bp80|cg840|6bp80|2eh1g0|8zzw0|9ts40|8zzw0|pvk40|c33w0|7cw40|cjrw0|6zxg0|btuk0|7rpg0|9gnw0|9d440|9cyk0|9et80|9et80|9rxg0|91uk0|92040|9et80|9o840|9et80|9d440|9et80|9eys0|9et80|9b9g0|9gnw0|99es0|9iik0|9d440|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|9eys0|9et80|9d440|9et80|9d440|8y580|9q2s0|b5rw0|7x9g0|aunw0|7ig40|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|Infinity\",\r\n        offsets: \"-145.2|-120|-180\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Dhaka\",\r\n        untils: \"-eqtpow|bmgyw|5lxg0|4qknw0|u4ijy0|a1400|Infinity\",\r\n        offsets: \"-353.3333|-390|-330|-360|-420\",\r\n        offsetIndices: \"0121343\"\r\n    }, {\r\n        id: \"Asia/Dili\",\r\n        untils: \"-u9s4l8|fqcu98|hufs00|cpz440|Infinity\",\r\n        offsets: \"-502.3333|-480|-540\",\r\n        offsetIndices: \"01212\"\r\n    }, {\r\n        id: \"Asia/Dubai\",\r\n        untils: \"-q3gnko|Infinity\",\r\n        offsets: \"-221.2|-240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Dushanbe\",\r\n        untils: \"-nu18qo|379yuo|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|hp440|Infinity\",\r\n        offsets: \"-275.2|-300|-360|-420\",\r\n        offsetIndices: \"012323232323232323232321\"\r\n    }, {\r\n        id: \"Asia/Famagusta\",\r\n        untils: \"-p4bqac|rvhy2c|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|8h8w0|leog0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-135.8|-120|-180\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Gaza\",\r\n        untils: \"-ffv9k0|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|5hoqs0|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|1sns0|3p6is0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|66as0|4vxc0|8n400|a2yo0|8n400|a2yo0|8n400|asw00|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|8n400|a2yo0|8ulg0|97ek0|8y580|9ts40|8hms0|a4qk0|7x3w0|asys0|8a5c0|ahs1o|71mic|bzk5o|69uic|cg840|902o0|9q000|9cyk0|9d440|ast80|7z440|aqyk0|7z6w0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|Infinity\",\r\n        offsets: \"-120|-180\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Harbin\",\r\n        untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"01010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Hebron\",\r\n        untils: \"-ffv9k0|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|5hoqs0|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|1sns0|3p6is0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|66as0|4vxc0|8n400|a2yo0|8n400|a2yo0|8n400|asw00|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|8n400|a2yo0|8ulg0|97ek0|8y580|9ts40|8hms0|a4qk0|82nw0|anes0|8a5c0|afxc0|73h80|bzk5o|69uic|1hs40|1lbw0|9d440|902o0|9q000|9cyk0|9d440|ast80|7z440|aqyk0|7z6w0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|Infinity\",\r\n        offsets: \"-120|-180\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Ho_Chi_Minh\",\r\n        untils: \"-x56934|2isioa|gj25iu|15ct80|8so00|tmtk0|4azjw0|2cmao0|8285c0|Infinity\",\r\n        offsets: \"-426.6667|-426.5|-420|-480|-540\",\r\n        offsetIndices: \"0123423232\"\r\n    }, {\r\n        id: \"Asia/Hong_Kong\",\r\n        untils: \"-y0i0s0|j44dk0|5k000|4d4y0|2195i0|7x3w0|bj320|6uao0|bvs00|7x6o0|9d1c0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|ast80|77c40|biqk0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity\",\r\n        offsets: \"-456.7|-480|-540|-510\",\r\n        offsetIndices: \"0123212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Hovd\",\r\n        untils: \"-xmcoz0|11sncb0|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity\",\r\n        offsets: \"-366.6|-360|-420|-480\",\r\n        offsetIndices: \"012323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Irkutsk\",\r\n        untils: \"-q28gn5|5fh175|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-417.0833|-420|-480|-540\",\r\n        offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Istanbul\",\r\n        untils: \"-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity\",\r\n        offsets: \"-116.9333|-120|-180|-240\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122\"\r\n    }, {\r\n        id: \"Asia/Jakarta\",\r\n        untils: \"-o0bdpc|4lzxc0|4wdzjc|1tu960|1cx860|11jta0|74uc20|Infinity\",\r\n        offsets: \"-427.2|-440|-450|-540|-480|-420\",\r\n        offsetIndices: \"01232425\"\r\n    }, {\r\n        id: \"Asia/Jayapura\",\r\n        untils: \"-jebm20|66bqe0|a37vy0|Infinity\",\r\n        offsets: \"-562.8|-540|-570\",\r\n        offsetIndices: \"0121\"\r\n    }, {\r\n        id: \"Asia/Jerusalem\",\r\n        untils: \"-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity\",\r\n        offsets: \"-140.6667|-120|-180|-240\",\r\n        offsetIndices: \"012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Kabul\",\r\n        untils: \"-d1pkg0|Infinity\",\r\n        offsets: \"-240|-270\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Kamchatka\",\r\n        untils: \"-olrupo|3z045o|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity\",\r\n        offsets: \"-634.6|-660|-720|-780\",\r\n        offsetIndices: \"012323232323232323232321232323232323232323232323232323232323212\"\r\n    }, {\r\n        id: \"Asia/Karachi\",\r\n        untils: \"-wvpb30|im3zt0|1mn180|33xpg0|a63o20|g72qo0|9cyk0|2y85g0|7v980|8hms0|aaak0|Infinity\",\r\n        offsets: \"-268.2|-330|-390|-300|-360\",\r\n        offsetIndices: \"012133434343\"\r\n    }, {\r\n        id: \"Asia/Kashgar\",\r\n        untils: \"-lx5pjw|Infinity\",\r\n        offsets: \"-350.3333|-360\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Kathmandu\",\r\n        untils: \"-q3gt4s|yg2lus|Infinity\",\r\n        offsets: \"-341.2667|-330|-345\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Asia/Katmandu\",\r\n        untils: \"-q3gt4s|yg2lus|Infinity\",\r\n        offsets: \"-341.2667|-330|-345\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Asia/Khandyga\",\r\n        untils: \"-q4cjrp|5hl1jp|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|3fx40|4h6s0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|8ql00|1mlho0|Infinity\",\r\n        offsets: \"-542.2167|-480|-540|-600|-660\",\r\n        offsetIndices: \"0123232323232323232323212323232323232323232323232343434343434343432\"\r\n    }, {\r\n        id: \"Asia/Kolkata\",\r\n        untils: \"-xehava|innm9a|bmfw0|5lxg0|1mn180|Infinity\",\r\n        offsets: \"-321.1667|-330|-390\",\r\n        offsetIndices: \"012121\"\r\n    }, {\r\n        id: \"Asia/Krasnoyarsk\",\r\n        untils: \"-q37l72|5gg8j2|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-371.4333|-360|-420|-480\",\r\n        offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Kuala_Lumpur\",\r\n        untils: \"-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity\",\r\n        offsets: \"-415.4167|-420|-440|-450|-540|-480\",\r\n        offsetIndices: \"0123435\"\r\n    }, {\r\n        id: \"Asia/Kuching\",\r\n        untils: \"-mvof3k|3khwxk|1epvy0|4ohqo|e5a9c|4ohqo|e3flc|4ohqo|e3flc|4ohqo|e3flc|4ohqo|e5a9c|4ohqo|e3flc|4ohqo|3ajlc|1v2qk0|Infinity\",\r\n        offsets: \"-441.3333|-450|-480|-500|-540\",\r\n        offsetIndices: \"0123232323232323242\"\r\n    }, {\r\n        id: \"Asia/Kuwait\",\r\n        untils: \"-bwgbbg|Infinity\",\r\n        offsets: \"-186.8667|-180\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Macao\",\r\n        untils: \"-y0i2cy|jdvyoy|6onw0|ac580|8fs40|7v980|11luw0|awlc0|7vc00|ac800|bko00|7x6o0|9d1c0|7vc00|asw00|7x6o0|asw00|7x6o0|auqo0|88ao0|asw00|7x6o0|asw00|779c0|bitc0|779c0|bvs00|6uao0|bw1q0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cvs0|9d6w0|9cvs0|9d6w0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity\",\r\n        offsets: \"-454.1667|-480|-540|-600\",\r\n        offsetIndices: \"012323212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Macau\",\r\n        untils: \"-y0i2cy|jdvyoy|6onw0|ac580|8fs40|7v980|11luw0|awlc0|7vc00|ac800|bko00|7x6o0|9d1c0|7vc00|asw00|7x6o0|asw00|7x6o0|auqo0|88ao0|asw00|7x6o0|asw00|779c0|bitc0|779c0|bvs00|6uao0|bw1q0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cvs0|9d6w0|9cvs0|9d6w0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity\",\r\n        offsets: \"-454.1667|-480|-540|-600\",\r\n        offsetIndices: \"012323212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Magadan\",\r\n        untils: \"-nu1nxc|37a05c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|s39k0|Infinity\",\r\n        offsets: \"-603.2|-600|-660|-720\",\r\n        offsetIndices: \"012323232323232323232321232323232323232323232323232323232323232312\"\r\n    }, {\r\n        id: \"Asia/Makassar\",\r\n        untils: \"-q3gzg0|6p5hc0|4u87w0|1w02k0|Infinity\",\r\n        offsets: \"-477.6|-480|-540\",\r\n        offsetIndices: \"00121\"\r\n    }, {\r\n        id: \"Asia/Manila\",\r\n        untils: \"-hb5y80|4qak0|2qidg0|1b2d80|4xf440|442k0|cdqdg0|9et80|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"010101010\"\r\n    }, {\r\n        id: \"Asia/Muscat\",\r\n        untils: \"-q3gnko|Infinity\",\r\n        offsets: \"-221.2|-240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Nicosia\",\r\n        untils: \"-p4bq6g|rvhxyg|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-133.4667|-120|-180\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Novokuznetsk\",\r\n        untils: \"-nu36tc|37bu5c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity\",\r\n        offsets: \"-348.8|-360|-420|-480\",\r\n        offsetIndices: \"012323232323232323232321232323232323232323232323232323232323212\"\r\n    }, {\r\n        id: \"Asia/Novosibirsk\",\r\n        untils: \"-q4do0s|5hmbcs|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|2vh00|6hn40|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|wrpg0|Infinity\",\r\n        offsets: \"-331.6667|-360|-420|-480\",\r\n        offsetIndices: \"0123232323232323232323212323212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Asia/Omsk\",\r\n        untils: \"-q5xmx6|5j6d16|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-293.5|-300|-360|-420\",\r\n        offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Oral\",\r\n        untils: \"-nu15ic|37a16c|qi2540|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|9d1c0|5reo0|cyo00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-205.4|-180|-300|-360|-240\",\r\n        offsetIndices: \"01232323232323232424242424242424242424242424242\"\r\n    }, {\r\n        id: \"Asia/Phnom_Penh\",\r\n        untils: \"-pysda4|Infinity\",\r\n        offsets: \"-402.0667|-420\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Pontianak\",\r\n        untils: \"-w6piww|cse2o0|4tnu2w|1wkei0|1cx860|11jta0|74uc20|cixam0|Infinity\",\r\n        offsets: \"-437.3333|-450|-540|-480|-420\",\r\n        offsetIndices: \"001213134\"\r\n    }, {\r\n        id: \"Asia/Pyongyang\",\r\n        untils: \"-w895yc|1yh10c|hk5da0|10ipmo0|1f4qo0|Infinity\",\r\n        offsets: \"-503|-510|-540\",\r\n        offsetIndices: \"012212\"\r\n    }, {\r\n        id: \"Asia/Qatar\",\r\n        untils: \"-q3gmvk|rctnrk|Infinity\",\r\n        offsets: \"-206.1333|-240|-180\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Asia/Qostanay\",\r\n        untils: \"-nu17s4|37a0o4|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-254.4667|-240|-300|-360\",\r\n        offsetIndices: \"012323232323232323232123232323232323232323232323\"\r\n    }, {\r\n        id: \"Asia/Qyzylorda\",\r\n        untils: \"-nu184g|37a10g|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|ohhc0|cyo00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|7osl00|Infinity\",\r\n        offsets: \"-261.8667|-240|-300|-360\",\r\n        offsetIndices: \"01232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Rangoon\",\r\n        untils: \"-q3gv5b|bnjp3b|1kh520|Infinity\",\r\n        offsets: \"-384.7833|-390|-540\",\r\n        offsetIndices: \"0121\"\r\n    }, {\r\n        id: \"Asia/Riyadh\",\r\n        untils: \"-bwgbbg|Infinity\",\r\n        offsets: \"-186.8667|-180\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Saigon\",\r\n        untils: \"-x56934|2isioa|gj25iu|15ct80|8so00|tmtk0|4azjw0|2cmao0|8285c0|Infinity\",\r\n        offsets: \"-426.6667|-426.5|-420|-480|-540\",\r\n        offsetIndices: \"0123423232\"\r\n    }, {\r\n        id: \"Asia/Sakhalin\",\r\n        untils: \"-xl87rc|kvnarc|ikvh40|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|iq5g0|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity\",\r\n        offsets: \"-570.8|-540|-660|-720|-600\",\r\n        offsetIndices: \"01232323232323232323232423232323232424242424242424242424242424242\"\r\n    }, {\r\n        id: \"Asia/Samarkand\",\r\n        untils: \"-nu18eh|37a1ah|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-267.8833|-240|-300|-360\",\r\n        offsetIndices: \"01232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Seoul\",\r\n        untils: \"-w8966g|1yh18g|hkx5a0|1faao0|5cik0|ae5g0|8a2k0|ae5g0|8bx80|c8tg0|6h980|1bj6s0|l3aq0|6j3w0|d2g40|6u7w0|b5xg0|776k0|biw40|776k0|biw40|776k0|biw40|776k0|grs40|dfqxi0|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-507.8667|-510|-540|-600|-570\",\r\n        offsetIndices: \"012232323232141414141414123232\"\r\n    }, {\r\n        id: \"Asia/Shanghai\",\r\n        untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"01010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Singapore\",\r\n        untils: \"-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity\",\r\n        offsets: \"-415.4167|-420|-440|-450|-540|-480\",\r\n        offsetIndices: \"0123435\"\r\n    }, {\r\n        id: \"Asia/Srednekolymsk\",\r\n        untils: \"-nu1ogs|37a0os|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-614.8667|-600|-660|-720\",\r\n        offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Taipei\",\r\n        untils: \"-gtzfk0|45slc0|c51c0|75bw0|a31g0|aaak0|9d440|7v980|awo40|7v980|awo40|7v980|awo40|7v980|7tk40|clmk0|7rpg0|b07w0|7rpg0|b07w0|7rpg0|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|cjxg0|69uk0|ci2s0|69uk0|6its40|9et80|9d440|9et80|1yf9g0|4qak0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Asia/Tashkent\",\r\n        untils: \"-nu18tz|379yxz|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|Infinity\",\r\n        offsets: \"-277.1833|-300|-360|-420\",\r\n        offsetIndices: \"012323232323232323232321\"\r\n    }, {\r\n        id: \"Asia/Tbilisi\",\r\n        untils: \"-nu14an|h4tjyn|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9cvs0|9cyk0|9d440|9cyk0|9d440|ipzw0|9cyk0|9q2s0|tivw0|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|4ofw0|6hn40|7k800|Infinity\",\r\n        offsets: \"-179.1833|-180|-240|-300\",\r\n        offsetIndices: \"0123232323232323232323212121232323232323232323212\"\r\n    }, {\r\n        id: \"Asia/Tehran\",\r\n        untils: \"-s6m6uw|fnolc0|gm3h4w|777y0|b07w0|3pes0|42c20|9cyk0|9gtg0|9kd80|5ja5g0|7avw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|1av440|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|Infinity\",\r\n        offsets: \"-205.7333|-210|-240|-300|-270\",\r\n        offsetIndices: \"00123214141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141\"\r\n    }, {\r\n        id: \"Asia/Tel_Aviv\",\r\n        untils: \"-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity\",\r\n        offsets: \"-140.6667|-120|-180|-240\",\r\n        offsetIndices: \"012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Asia/Thimbu\",\r\n        untils: \"-bojclo|kxymno|Infinity\",\r\n        offsets: \"-358.6|-330|-360\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Asia/Thimphu\",\r\n        untils: \"-bojclo|kxymno|Infinity\",\r\n        offsets: \"-358.6|-330|-360\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Asia/Tokyo\",\r\n        untils: \"-bb4900|6uao0|afxc0|8a5c0|c8qo0|6hc00|c8qo0|6hc00|Infinity\",\r\n        offsets: \"-540|-600\",\r\n        offsetIndices: \"010101010\"\r\n    }, {\r\n        id: \"Asia/Tomsk\",\r\n        untils: \"-q3zbqf|5h7z2f|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|1leo0|97k40|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|tw040|Infinity\",\r\n        offsets: \"-339.85|-360|-420|-480\",\r\n        offsetIndices: \"0123232323232323232323212323232323232323232323212121212121212121212\"\r\n    }, {\r\n        id: \"Asia/Ujung_Pandang\",\r\n        untils: \"-q3gzg0|6p5hc0|4u87w0|1w02k0|Infinity\",\r\n        offsets: \"-477.6|-480|-540\",\r\n        offsetIndices: \"00121\"\r\n    }, {\r\n        id: \"Asia/Ulaanbaatar\",\r\n        untils: \"-xmcrsk|11sncck|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity\",\r\n        offsets: \"-427.5333|-420|-480|-540\",\r\n        offsetIndices: \"012323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Ulan_Bator\",\r\n        untils: \"-xmcrsk|11sncck|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity\",\r\n        offsets: \"-427.5333|-420|-480|-540\",\r\n        offsetIndices: \"012323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Urumqi\",\r\n        untils: \"-lx5pjw|Infinity\",\r\n        offsets: \"-350.3333|-360\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Ust-Nera\",\r\n        untils: \"-q4cl6u|5hl2yu|qi27w0|9eno0|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|8ql00|1mlho0|Infinity\",\r\n        offsets: \"-572.9|-480|-540|-720|-660|-600\",\r\n        offsetIndices: \"012343434343434343434345434343434343434343434343434343434343434345\"\r\n    }, {\r\n        id: \"Asia/Vientiane\",\r\n        untils: \"-pysda4|Infinity\",\r\n        offsets: \"-402.0667|-420\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Asia/Vladivostok\",\r\n        untils: \"-oligf7|3yqvf7|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-527.5167|-540|-600|-660\",\r\n        offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Yakutsk\",\r\n        untils: \"-q4cioy|5hl0gy|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-518.9667|-480|-540|-600\",\r\n        offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Asia/Yangon\",\r\n        untils: \"-q3gv5b|bnjp3b|1kh520|Infinity\",\r\n        offsets: \"-384.7833|-390|-540\",\r\n        offsetIndices: \"0121\"\r\n    }, {\r\n        id: \"Asia/Yekaterinburg\",\r\n        untils: \"-rx5hw9|1kybx4|5pfyv5|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-242.55|-225.0833|-240|-300|-360\",\r\n        offsetIndices: \"012343434343434343434343234343434343434343434343434343434343434343\"\r\n    }, {\r\n        id: \"Asia/Yerevan\",\r\n        untils: \"-nu148o|h4tjwo|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|11t180|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|Infinity\",\r\n        offsets: \"-178|-180|-240|-300\",\r\n        offsetIndices: \"0123232323232323232323212121212323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Atlantic/Azores\",\r\n        untils: \"-u9rbs0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5qbjo0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9cyk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"114.5333|120|60|0\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323233323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Atlantic/Bermuda\",\r\n        untils: \"-kvj2fu|n4pr3u|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"259.3|240|180\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Atlantic/Canary\",\r\n        untils: \"-oytbtc|ctvupc|hhq7s0|905g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"61.6|60|0|-60\",\r\n        offsetIndices: \"01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Atlantic/Cape_Verde\",\r\n        untils: \"-u9rbs0|g06lc0|1mn180|fpqwc0|Infinity\",\r\n        offsets: \"94.0667|120|60\",\r\n        offsetIndices: \"01212\"\r\n    }, {\r\n        id: \"Atlantic/Faeroe\",\r\n        untils: \"-wcehew|127keuw|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"27.0667|0|-60\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Atlantic/Faroe\",\r\n        untils: \"-wcehew|127keuw|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"27.0667|0|-60\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Atlantic/Jan_Mayen\",\r\n        untils: \"-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Atlantic/Madeira\",\r\n        untils: \"-u9rek0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5qbjo0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"67.6|60|0|-60\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Atlantic/Reykjavik\",\r\n        untils: \"-wcwx9c|4rpd9c|ci2s0|69uk0|du840|4xp80|du840|p7bw0|4w040|9bdzw0|9d6w0|64g40|cyl80|64dc0|clpc0|6hc00|bvs00|6uao0|bvs00|6uao0|bvs00|6uao0|c8qo0|6hc00|c8qo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|Infinity\",\r\n        offsets: \"88|60|0\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Atlantic/South_Georgia\",\r\n        untils: \"Infinity\",\r\n        offsets: \"120\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Atlantic/St_Helena\",\r\n        untils: \"-u9rgl4|Infinity\",\r\n        offsets: \"16.1333|0\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Atlantic/Stanley\",\r\n        untils: \"-u63pac|dbvxqc|8zzw0|9q2s0|8zzw0|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|4xp80|l1pus0|7k580|b5rw0|77c40|biqk0|id6s0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|biqk0|77c40|biqk0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|biqk0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5xg0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|77c40|biqk0|77c40|biqk0|77c40|Infinity\",\r\n        offsets: \"231.4|240|180|120\",\r\n        offsetIndices: \"012121212121212323212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Australia/ACT\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Adelaide\",\r\n        untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|7k800|b5uo0|6uao0|c8qo0|779c0|bitc0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-570|-630\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Brisbane\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"01010101010101010\"\r\n    }, {\r\n        id: \"Australia/Broken_Hill\",\r\n        untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-570|-630\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Canberra\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Currie\",\r\n        untils: \"-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Darwin\",\r\n        untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|Infinity\",\r\n        offsets: \"-570|-630\",\r\n        offsetIndices: \"010101010\"\r\n    }, {\r\n        id: \"Australia/Eucla\",\r\n        untils: \"-rnstlc|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-525|-585\",\r\n        offsetIndices: \"0101010101010101010\"\r\n    }, {\r\n        id: \"Australia/Hobart\",\r\n        untils: \"-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|c9tms0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/LHI\",\r\n        untils: \"5tp880|c8uu0|6u7w0|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|777y0|b5w20|7k6m0|biuq0|7k6m0|biuq0|777y0|biuq0|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|7x820|asum0|b5w20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7x5a0|asxe0|7k6m0|b5w20|8a3y0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9pym0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|Infinity\",\r\n        offsets: \"-600|-630|-690|-660\",\r\n        offsetIndices: \"0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313\"\r\n    }, {\r\n        id: \"Australia/Lindeman\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"010101010101010101010\"\r\n    }, {\r\n        id: \"Australia/Lord_Howe\",\r\n        untils: \"5tp880|c8uu0|6u7w0|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|777y0|b5w20|7k6m0|biuq0|7k6m0|biuq0|777y0|biuq0|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|7x820|asum0|b5w20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7x5a0|asxe0|7k6m0|b5w20|8a3y0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9pym0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|Infinity\",\r\n        offsets: \"-600|-630|-690|-660\",\r\n        offsetIndices: \"0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313\"\r\n    }, {\r\n        id: \"Australia/Melbourne\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|b5uo0|7x6o0|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/North\",\r\n        untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|Infinity\",\r\n        offsets: \"-570|-630\",\r\n        offsetIndices: \"010101010\"\r\n    }, {\r\n        id: \"Australia/NSW\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Perth\",\r\n        untils: \"-rnsric|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"0101010101010101010\"\r\n    }, {\r\n        id: \"Australia/Queensland\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"01010101010101010\"\r\n    }, {\r\n        id: \"Australia/South\",\r\n        untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|7k800|b5uo0|6uao0|c8qo0|779c0|bitc0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-570|-630\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Sydney\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Tasmania\",\r\n        untils: \"-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|c9tms0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/Victoria\",\r\n        untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|b5uo0|7x6o0|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-600|-660\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Australia/West\",\r\n        untils: \"-rnsric|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"0101010101010101010\"\r\n    }, {\r\n        id: \"Australia/Yancowinna\",\r\n        untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-570|-630\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n    }, {\r\n        id: \"Brazil/Acre\",\r\n        untils: \"-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity\",\r\n        offsets: \"271.2|300|240\",\r\n        offsetIndices: \"01212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Brazil/DeNoronha\",\r\n        untils: \"-t85lzw|99k8rw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity\",\r\n        offsets: \"129.6667|120|60\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Brazil/East\",\r\n        untils: \"-t85jd8|99k8x8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5k02s0|6onw0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity\",\r\n        offsets: \"186.4667|180|120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Brazil/West\",\r\n        untils: \"-t85gvw|99k97w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|Infinity\",\r\n        offsets: \"240.0667|240|180\",\r\n        offsetIndices: \"01212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Canada/Atlantic\",\r\n        untils: \"-z94k80|777go0|9et80|st9o0|a2vw0|ssyk0|5rbw0|cv1g0|69uk0|c6ys0|6kyk0|ci2s0|67zw0|ci2s0|6w2k0|bu040|7lzw0|bu040|66580|bu040|7lzw0|bu040|64ak0|cls40|5v180|cv1g0|6j3w0|c6ys0|79180|b42s0|7lzw0|b42s0|7yyk0|bu040|64ak0|dbpg0|66580|cls40|5ed80|bu040|7lzw0|b42s0|7lzw0|cjxg0|66580|bh1g0|7lzw0|b42s0|7lzw0|6uj00|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|1cm2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"254.4|240|180\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Canada/Central\",\r\n        untils: \"-s0s7c0|7k580|tj700|a2vw0|9ok840|6u7w0|2a5hg0|1tz8c0|2dsw0|biw40|7x3w0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b7s40|7tek0|autg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|7x3w0|1cm2s0|7k580|1cm2s0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Canada/Eastern\",\r\n        untils: \"-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"300|240\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Canada/Mountain\",\r\n        untils: \"-x1yazk|629ink|a2vw0|8n6s0|29ek0|h6lg0|9px80|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|9l0g40|1tz5k0|2dvo0|tj1g0|7x3w0|ctzk40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"453.8667|420|360\",\r\n        offsetIndices: \"0121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Canada/Newfoundland\",\r\n        untils: \"-ris3ck|8bx80|ar440|a2vw0|9tjs0|53980|dkys0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|7tmw0|1wfuk|8zzw0|a3480|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"210.8667|150.8667|210|150|90\",\r\n        offsetIndices: \"01010101010101010101010101010101010102323232323232323323232323232323232323232323232323232323232323232323232323232323232323232323232323232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Canada/Pacific\",\r\n        untils: \"-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420\",\r\n        offsetIndices: \"0101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Canada/Saskatchewan\",\r\n        untils: \"-xkq9yc|6l1hmc|a2vw0|60enw0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|1b6840|9cyk0|9d440|8zzw0|9q2s0|9cyk0|9q2s0|9cyk0|9d440|9cyk0|66gc0|1tz5k0|2dvo0|a31g0|9cyk0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|tj1g0|9cyk0|9d440|Infinity\",\r\n        offsets: \"418.6|420|360\",\r\n        offsetIndices: \"012121212121212121212121221212121212121212121212121212\"\r\n    }, {\r\n        id: \"Canada/Yukon\",\r\n        untils: \"-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|tiyo0|6qp440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity\",\r\n        offsets: \"540|480|420\",\r\n        offsetIndices: \"01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"CET\",\r\n        untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Chile/Continental\",\r\n        untils: \"-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|229zw0|2gt80|awo40|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity\",\r\n        offsets: \"282.7667|300|240|180\",\r\n        offsetIndices: \"010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"Chile/EasterIsland\",\r\n        untils: \"-jhfaew|ivmeuw|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|iq2o0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity\",\r\n        offsets: \"437.4667|420|360|300\",\r\n        offsetIndices: \"012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"CST6CDT\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Cuba\",\r\n        untils: \"-n7762o|1icfyo|69uk0|62s040|4ofw0|e1ms0|51ek0|e1ms0|4ofw0|1fhs40|4ofw0|e1ms0|4ofw0|9s9k40|67zw0|cedg0|6h980|9o840|7yyk0|b5xg0|7k580|bvus0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|8a2k0|ag040|8bx80|ae5g0|8drw0|acas0|9cyk0|9d440|9px80|905g0|9px80|9q2s0|7x3w0|8a840|ast80|7x9g0|ast80|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|905g0|a2vw0|905g0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|8n400|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|7x6o0|1cm000|6uao0|bvs00|779c0|bitc0|6uao0|bvs00|779c0|bvs00|779c0|c8qo0|779c0|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|Infinity\",\r\n        offsets: \"329.6|300|240\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"EET\",\r\n        untils: \"3s9ms0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-120|-180\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Egypt\",\r\n        untils: \"-fdls80|40d80|a31g0|7x3w0|a4w40|aqyk0|80ys0|b07w0|7tk40|b07w0|8jhg0|a8fw0|60go40|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|f9x80|3i040|eluk0|462s0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|b5rw0|7m5g0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|aqvs0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7k580|b5xg0|6u7w0|bvus0|6h980|c8tg0|64ak0|cyqs0|5anw0|1jms0|12t80|1w22s0|25p80|1sw40|2vmk0|Infinity\",\r\n        offsets: \"-120|-180\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Eire\",\r\n        untils: \"-rzcmlr|6uao0|9pytr|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|3g8800|8a5c0|bvs00|8n400|a2yo0|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"25.35|-34.65|0|-60\",\r\n        offsetIndices: \"01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"EST\",\r\n        untils: \"Infinity\",\r\n        offsets: \"300\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"EST5EDT\",\r\n        untils: \"-r0ev80|ast80|7x9g0|ast80|bmtus0|1tzb40|2dq40|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"300|240\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Etc/GMT-0\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-1\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-60\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-10\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-600\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-11\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-660\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-12\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-720\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-13\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-780\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-14\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-840\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-2\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-120\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-3\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-180\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-4\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-240\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-5\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-300\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-6\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-360\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-7\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-420\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-8\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-480\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT-9\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-540\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+0\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+1\",\r\n        untils: \"Infinity\",\r\n        offsets: \"60\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+10\",\r\n        untils: \"Infinity\",\r\n        offsets: \"600\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+11\",\r\n        untils: \"Infinity\",\r\n        offsets: \"660\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+12\",\r\n        untils: \"Infinity\",\r\n        offsets: \"720\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+2\",\r\n        untils: \"Infinity\",\r\n        offsets: \"120\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+3\",\r\n        untils: \"Infinity\",\r\n        offsets: \"180\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+4\",\r\n        untils: \"Infinity\",\r\n        offsets: \"240\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+5\",\r\n        untils: \"Infinity\",\r\n        offsets: \"300\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+6\",\r\n        untils: \"Infinity\",\r\n        offsets: \"360\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+7\",\r\n        untils: \"Infinity\",\r\n        offsets: \"420\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+8\",\r\n        untils: \"Infinity\",\r\n        offsets: \"480\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT+9\",\r\n        untils: \"Infinity\",\r\n        offsets: \"540\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/GMT0\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/Greenwich\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/UCT\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/Universal\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/UTC\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Etc/Zulu\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Europe/Amsterdam\",\r\n        untils: \"-s0dvkk|7v980|a51o0|7x6o0|a2yo0|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9b6o0|a2yo0|c51c0|6l1c0|902o0|9q000|ci000|682o0|bgyo0|79400|bitc0|779c0|bmio0|7gio0|bbeo0|7eo00|bd9c0|7ctc0|bf400|7ayo0|bvs00|6uao0|bko00|7idc0|b9k00|7gio0|bbeo0|7eo00|bf400|7ayo0|btxc0|21uc0|4uaz8|bitc0|779c0|bko00|7idc0|bd3s0|1aarpc|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-19.5333|-79.5333|-80|-20|-120|-60\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545\"\r\n    }, {\r\n        id: \"Europe/Andorra\",\r\n        untils: \"-c4xmo0|k3ctg0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Astrakhan\",\r\n        untils: \"-nu2zkc|37bv8c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity\",\r\n        offsets: \"-192.2|-180|-240|-300\",\r\n        offsetIndices: \"012323232323232323212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Europe/Athens\",\r\n        untils: \"-rvv0cg|8bjasg|2vmk0|4hiw40|16ik0|scog0|7lx40|9o2k0|9eys0|4atzw0|6djw0|bplus0|bq800|71uw0|9d1c0|902o0|91xc0|9o5c0|905g0|9qgo0|9akg0|9iik0|99980|9dcg0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-94.8667|-120|-180|-60\",\r\n        offsetIndices: \"012121313121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Belfast\",\r\n        untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Belgrade\",\r\n        untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Berlin\",\r\n        untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|2o7w0|6bs00|2txg0|7k800|91xc0|9b9g0|1sqk0|2inw0|51k40|a2yo0|8n400|9q000|902o0|fx91c0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120|-180\",\r\n        offsetIndices: \"01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Bratislava\",\r\n        untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|b5uo0|7vc00|2vs40|4bk00|2vmk0|8n400|a2yo0|8n400|9o5c0|91xc0|fe6000|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120|0\",\r\n        offsetIndices: \"01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Brussels\",\r\n        untils: \"-ss5uo0|rrx80|7vc00|a4yw0|7x6o0|asw00|7x6o0|2wh40|5omo0|b5uo0|6uao0|cyo00|7ayo0|bko00|7rmo0|a2yo0|a2yo0|8n400|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|90b00|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|4deo0|1a36k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8l9c0|clpc0|79400|fwu800|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"0121212101010101010101010101010101010101010101010101212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Bucharest\",\r\n        untils: \"-k29zi0|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|kp0dc0|6h980|9q000|905g0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9cvs0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9cyk0|9d440|9cyk0|9q2s0|ast80|7xhs0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-104.4|-120|-180\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Budapest\",\r\n        untils: \"-s0e080|7ves0|a4yw0|7x6o0|a31g0|8n180|autg0|bgvw0|b5jeg0|th9k0|7k800|9q000|9d1c0|9d1c0|awd00|9ew00|7q0c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|a4tc0|9q000|1va2g0|6u7w0|bxpg0|6u7w0|cjxg0|64ak0|cluw0|64g40|br3ek0|905g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Busingen\",\r\n        untils: \"-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Chisinau\",\r\n        untils: \"-r2p1bo|70f1to|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|geqo0|ha580|oc8g0|7k800|9q000|9d1c0|7cl00|j3pbw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|25p80|7kdk0|9d1c0|9d1c0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xf00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-115|-104.4|-120|-180|-60|-240\",\r\n        offsetIndices: \"012323232323232323232424235353535353535353535323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Europe/Copenhagen\",\r\n        untils: \"-rzo2w0|75bw0|cbs2w0|1aco80|7k800|9q000|9d1c0|9d1c0|9d1c0|6y000|dbmo0|6bs00|clpc0|51hc0|e1k00|4oio0|giutc0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Dublin\",\r\n        untils: \"-rzcmlr|6uao0|9pytr|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|3g8800|8a5c0|bvs00|8n400|a2yo0|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"25.35|-34.65|0|-60\",\r\n        offsetIndices: \"01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Europe/Gibraltar\",\r\n        untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|d0tp80|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101012121212121010121010101010101010101012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Guernsey\",\r\n        untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Helsinki\",\r\n        untils: \"-peghyd|ax3tqd|9gqo0|k31s80|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-99.8167|-120|-180\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Isle_of_Man\",\r\n        untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Istanbul\",\r\n        untils: \"-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity\",\r\n        offsets: \"-116.9333|-120|-180|-240\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122\"\r\n    }, {\r\n        id: \"Europe/Jersey\",\r\n        untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Kaliningrad\",\r\n        untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|el00|z6o0|9kd80|82tg0|i9avw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-60|-120|-180|-240\",\r\n        offsetIndices: \"01010101010101121232323232323232322121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Kiev\",\r\n        untils: \"-nu11ng|37a03g|5vd6k0|kzv40|7k800|9q000|1oyg0|jipzs0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|51ek0|neqw0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-122.0667|-120|-180|-60|-240\",\r\n        offsetIndices: \"0121313242424242424242424242121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Kirov\",\r\n        untils: \"-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-198.8|-180|-240|-300\",\r\n        offsetIndices: \"01232323232323232321212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Lisbon\",\r\n        untils: \"-u9rhc0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5gyl40|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"36.75|0|-60|-120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212121212121212121212121212121212122323232212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Ljubljana\",\r\n        untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/London\",\r\n        untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Luxembourg\",\r\n        untils: \"-y89550|68l290|75hg0|ast80|796s0|at1k0|7x6o0|3lh40|4zmo0|b6300|6u2c0|cytk0|7at40|bktk0|7rh40|a31g0|a2vw0|8n9k0|8zx40|9q2s0|9et80|9b9g0|a2vw0|8n6s0|9px80|905g0|a2vw0|905g0|a2vw0|8ncc0|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|42ao0|1aeak0|7k800|9q000|9d1c0|8n400|a2yo0|8l9c0|clpc0|79400|fwu800|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-24.6|-60|-120|0\",\r\n        offsetIndices: \"0121212131313131313131313131313131313131313131313131212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Madrid\",\r\n        untils: \"-qzlus0|8yas0|9cyk0|9eys0|2d2vw0|8sqs0|ssyk0|8n6s0|9px80|905g0|a2yo0|902o0|a2vw0|8n6s0|40lh80|5k2s0|9cyk0|1frw0|7z1c0|j1c80|8a2k0|13yt80|685g0|brzw0|8n6s0|a2vw0|8n6s0|a2vw0|8n6s0|a2vw0|8n6s0|1clx80|7x9g0|cswik0|905g0|9px80|905g0|8zzw0|9d440|9px80|905g0|9q5k0|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"010101010101010101210121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Malta\",\r\n        untils: \"-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9b6o0|8n400|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|9b6o0|9d1c0|ahs00|7m2o0|b45k0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|a4w40|8y580|9q2s0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Mariehamn\",\r\n        untils: \"-peghyd|ax3tqd|9gqo0|k31s80|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-99.8167|-120|-180\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Minsk\",\r\n        untils: \"-nu113c|379zjc|5r1mk0|pbf40|7k800|9q000|9d1c0|4oac0|j6dmk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|sg2o0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|Infinity\",\r\n        offsets: \"-110|-120|-180|-60|-240\",\r\n        offsetIndices: \"01213131242424242424242424221212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Europe/Monaco\",\r\n        untils: \"-uozn3l|2qx1nl|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|bko00|7rmo0|a2yo0|bvs00|6uao0|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51po0|mdbo0|7x3w0|7x9g0|c8w80|7k800|9q000|9d1c0|9nzs0|922w0|8l9c0|fxlx80|9cyk0|9q5k0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-9.35|0|-60|-120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Europe/Moscow\",\r\n        untils: \"-rx5dmh|ipzua|97hc0|7yyk0|5i840|d9p80|1jwk7|2cvk0|s8o00|1qvw0|8fpc0|1jms0|is040|412as0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-150.2833|-151.3167|-211.3167|-271.3167|-240|-180|-300|-120\",\r\n        offsetIndices: \"012132345464575454545454545454545455754545454545454545454545454545454545454545\"\r\n    }, {\r\n        id: \"Europe/Nicosia\",\r\n        untils: \"-p4bq6g|rvhxyg|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-133.4667|-120|-180\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Oslo\",\r\n        untils: \"-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Paris\",\r\n        untils: \"-uozn1x|2qx1lx|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|bko00|7rmo0|a2yo0|bvs00|6uao0|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51po0|5p8w0|18rcc0|7k800|9q000|9d1c0|7efo0|29k40|922w0|8l9c0|fxlx80|9cyk0|9q5k0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-9.35|0|-60|-120\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212123232332323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Europe/Podgorica\",\r\n        untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Prague\",\r\n        untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|b5uo0|7vc00|2vs40|4bk00|2vmk0|8n400|a2yo0|8n400|9o5c0|91xc0|fe6000|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120|0\",\r\n        offsetIndices: \"01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Riga\",\r\n        untils: \"-qznlky|7x6o0|a4tc0|2mg00|3myns0|7fhlky|gz180|p5v40|7k800|9q000|9d1c0|9d1c0|k7s0|j14ns0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|asw00|7x6o0|asw00|7x6o0|b5uo0|qaao0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-96.5667|-156.5667|-120|-180|-60|-240\",\r\n        offsetIndices: \"010102324242435353535353535353323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Europe/Rome\",\r\n        untils: \"-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Samara\",\r\n        untils: \"-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|jt1g0|89zs0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity\",\r\n        offsets: \"-200.3333|-180|-240|-300\",\r\n        offsetIndices: \"0123232323232323232121232323232323232323232323232323232323212\"\r\n    }, {\r\n        id: \"Europe/San_Marino\",\r\n        untils: \"-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Sarajevo\",\r\n        untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Saratov\",\r\n        untils: \"-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|13m040|Infinity\",\r\n        offsets: \"-184.3|-180|-240|-300\",\r\n        offsetIndices: \"012323232323232321212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Europe/Simferopol\",\r\n        untils: \"-nu12ao|37a0qo|5xiyk0|iu340|7k800|9q000|9d1c0|iac0|jajmk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|eeio0|wrjw0|9cyk0|9d440|9cyk0|9d440|1sqk0|7k580|9d440|9cyk0|9q2s0|at4c0|7x9g0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x3w0|asqg0|Infinity\",\r\n        offsets: \"-136|-120|-180|-60|-240\",\r\n        offsetIndices: \"012131312424242424242424242121212424242212121212121212121212121212121212142\"\r\n    }, {\r\n        id: \"Europe/Skopje\",\r\n        untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Sofia\",\r\n        untils: \"-e6dzw0|7k800|9q000|9d1c0|9d1c0|9d440|hqq240|9eys0|9o2k0|92040|9o2k0|90880|9pug0|90b00|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xhs0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-120|-60|-180\",\r\n        offsetIndices: \"01010102020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020\"\r\n    }, {\r\n        id: \"Europe/Stockholm\",\r\n        untils: \"-rzo2w0|75hg0|x5bew0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Tallinn\",\r\n        untils: \"-r3exx0|3re10|7x6o0|et6g0|ygov0|a1zgd0|ktx80|l94g0|7k800|9q000|9d1c0|8uac0|j27mk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asys0|7x6o0|b5uo0|19dc00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-99|-60|-120|-180|-240\",\r\n        offsetIndices: \"012102321212343434343434343433232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Europe/Tirane\",\r\n        untils: \"-t85vo8|dt2gw8|18pew0|7k800|m800|g7ot40|7rjw0|autg0|7x3w0|ayis0|7x3w0|b5xg0|7k580|b42s0|7lzw0|b42s0|7lzw0|b42s0|7x3w0|ahus0|7x3w0|b5xg0|7x3w0|a4w40|8jbw0|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-79.3333|-60|-120\",\r\n        offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Tiraspol\",\r\n        untils: \"-r2p1bo|70f1to|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|geqo0|ha580|oc8g0|7k800|9q000|9d1c0|7cl00|j3pbw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|25p80|7kdk0|9d1c0|9d1c0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xf00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-115|-104.4|-120|-180|-60|-240\",\r\n        offsetIndices: \"012323232323232323232424235353535353535353535323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"Europe/Ulyanovsk\",\r\n        untils: \"-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity\",\r\n        offsets: \"-193.6|-180|-240|-300|-120\",\r\n        offsetIndices: \"01232323232323232321214121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Europe/Uzhgorod\",\r\n        untils: \"-fizzw0|1cm000|7k800|9q000|9d1c0|al900|cnms0|int140|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|eeio0|e1sc0|iprk0|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120|-180|-240\",\r\n        offsetIndices: \"010101023232323232323232320121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Vaduz\",\r\n        untils: \"-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Vatican\",\r\n        untils: \"-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Vienna\",\r\n        untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|t6000|8a5c0|a7a800|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|iio0|ivmo0|91xc0|9b6o0|9d1c0|a2yo0|8n400|gfyyg0|8zzw0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Vilnius\",\r\n        untils: \"-rns980|1g224o|e75nc|4kqk0|acbs40|gpp40|pits0|7k800|9q000|9d1c0|65zo0|j4vx80|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x9g0|asw00|7x6o0|b5uo0|1s3eo0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-84|-95.6|-60|-120|-180|-240\",\r\n        offsetIndices: \"012324323234545454545454545443434343434343434332334343434343434343434343434343434343434343434343434343434343434343434343\"\r\n    }, {\r\n        id: \"Europe/Volgograd\",\r\n        untils: \"-q3cw84|5glrw4|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|239c40|Infinity\",\r\n        offsets: \"-177.6667|-180|-240|-300\",\r\n        offsetIndices: \"012323232323232321212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Europe/Warsaw\",\r\n        untils: \"-se9yk0|dvyc0|7ves0|a4yw0|7x6o0|asw00|7x6o0|aunw0|7x6o0|1evbs0|9fcwc0|18cao0|7k800|9q000|9d1c0|9gnw0|an980|9kd80|8fs40|922w0|ar1c0|7x6o0|a2yo0|8n400|9q000|902o0|4013w0|64dc0|9d1c0|9d1c0|clpc0|6hc00|9d1c0|9d1c0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|clpc0|64dc0|6j4tc0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-84|-60|-120|-180\",\r\n        offsetIndices: \"012121223212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Zagreb\",\r\n        untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Europe/Zaporozhye\",\r\n        untils: \"-nu12hc|37a0xc|5u1180|mc0g0|7k800|9q000|12qg0|jjc7s0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9cvs0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-140|-120|-180|-60|-240\",\r\n        offsetIndices: \"01213132424242424242424242422121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Europe/Zurich\",\r\n        untils: \"-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"GB-Eire\",\r\n        untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"GB\",\r\n        untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60|-120\",\r\n        offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"GMT-0\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"GMT\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"GMT+0\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"GMT0\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Greenwich\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Hongkong\",\r\n        untils: \"-y0i0s0|j44dk0|5k000|4d4y0|2195i0|7x3w0|bj320|6uao0|bvs00|7x6o0|9d1c0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|ast80|77c40|biqk0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity\",\r\n        offsets: \"-456.7|-480|-540|-510\",\r\n        offsetIndices: \"0123212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"HST\",\r\n        untils: \"Infinity\",\r\n        offsets: \"600\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Iceland\",\r\n        untils: \"-wcwx9c|4rpd9c|ci2s0|69uk0|du840|4xp80|du840|p7bw0|4w040|9bdzw0|9d6w0|64g40|cyl80|64dc0|clpc0|6hc00|bvs00|6uao0|bvs00|6uao0|bvs00|6uao0|c8qo0|6hc00|c8qo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|Infinity\",\r\n        offsets: \"88|60|0\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Indian/Antananarivo\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Indian/Chagos\",\r\n        untils: \"-wvpc2s|1ag64us|Infinity\",\r\n        offsets: \"-289.6667|-300|-360\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Indian/Christmas\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-420\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Indian/Cocos\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-390\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Indian/Comoro\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Indian/Kerguelen\",\r\n        untils: \"-afrs00|Infinity\",\r\n        offsets: \"0|-300\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Indian/Mahe\",\r\n        untils: \"-x6pjlo|Infinity\",\r\n        offsets: \"-221.8|-240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Indian/Maldives\",\r\n        untils: \"-57x6y0|Infinity\",\r\n        offsets: \"-294|-300\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Indian/Mauritius\",\r\n        untils: \"-wvp9bc|13jnu7c|8bx80|dd0wc0|7x3w0|Infinity\",\r\n        offsets: \"-230|-240|-300\",\r\n        offsetIndices: \"012121\"\r\n    }, {\r\n        id: \"Indian/Mayotte\",\r\n        untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n        offsets: \"-147.2667|-180|-150|-165\",\r\n        offsetIndices: \"01231\"\r\n    }, {\r\n        id: \"Indian/Reunion\",\r\n        untils: \"-uks29s|Infinity\",\r\n        offsets: \"-221.8667|-240\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Iran\",\r\n        untils: \"-s6m6uw|fnolc0|gm3h4w|777y0|b07w0|3pes0|42c20|9cyk0|9gtg0|9kd80|5ja5g0|7avw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|1av440|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|Infinity\",\r\n        offsets: \"-205.7333|-210|-240|-300|-270\",\r\n        offsetIndices: \"00123214141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141\"\r\n    }, {\r\n        id: \"Israel\",\r\n        untils: \"-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity\",\r\n        offsets: \"-140.6667|-120|-180|-240\",\r\n        offsetIndices: \"012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Jamaica\",\r\n        untils: \"-u85og2|wbl182|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|Infinity\",\r\n        offsets: \"307.1667|300|240\",\r\n        offsetIndices: \"0121212121212121212121\"\r\n    }, {\r\n        id: \"Japan\",\r\n        untils: \"-bb4900|6uao0|afxc0|8a5c0|c8qo0|6hc00|c8qo0|6hc00|Infinity\",\r\n        offsets: \"-540|-600\",\r\n        offsetIndices: \"010101010\"\r\n    }, {\r\n        id: \"Kwajalein\",\r\n        untils: \"-h817w0|27sas0|1hjus0|ddxug0|cgv6k0|Infinity\",\r\n        offsets: \"-660|-600|-540|720|-720\",\r\n        offsetIndices: \"012034\"\r\n    }, {\r\n        id: \"Libya\",\r\n        untils: \"-q3gfrw|gl6ajw|422c0|xado0|4bbo0|wrpg0|4s580|1kdpg0|c05bw0|4mqs0|9et80|9d440|9et80|9eys0|9et80|9mdg0|95jw0|9io40|9cyk0|99es0|9et80|9eys0|9et80|9d440|9et80|b2840|3cf3w0|9kis0|9et80|7vqyw0|75eo0|asw00|Infinity\",\r\n        offsets: \"-52.7333|-60|-120\",\r\n        offsetIndices: \"012121212121212121212121212122122\"\r\n    }, {\r\n        id: \"MET\",\r\n        untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-60|-120\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Mexico/BajaNorte\",\r\n        untils: \"-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"468.0667|420|480\",\r\n        offsetIndices: \"012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Mexico/BajaSur\",\r\n        untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"425.6667|420|360|480\",\r\n        offsetIndices: \"0121212131212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Mexico/General\",\r\n        untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|3knek0|776k0|rf440|5t6k0|1evk40|71mk0|30p1g0|8n180|nufxo0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n        offsets: \"396.6|420|360|300\",\r\n        offsetIndices: \"012121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"MST\",\r\n        untils: \"Infinity\",\r\n        offsets: \"420\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"MST7MDT\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"420|360\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Navajo\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"420|360\",\r\n        offsetIndices: \"01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"NZ-CHAT\",\r\n        untils: \"-ciya10|f1tq90|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n        offsets: \"-735|-765|-825\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"NZ\",\r\n        untils: \"-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n        offsets: \"-690|-750|-720|-780\",\r\n        offsetIndices: \"01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"Pacific/Apia\",\r\n        untils: \"-usiiv4|kcrmt4|vp3la0|9odo0|902o0|4zbk0|4qog0|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n        offsets: \"686.9333|690|660|600|-840|-780\",\r\n        offsetIndices: \"01232345454545454545454545454545454545454545454545454545454\"\r\n    }, {\r\n        id: \"Pacific/Auckland\",\r\n        untils: \"-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n        offsets: \"-690|-750|-720|-780\",\r\n        offsetIndices: \"01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"Pacific/Bougainville\",\r\n        untils: \"-ecsh40|1n05g0|1071c40|Infinity\",\r\n        offsets: \"-600|-540|-660\",\r\n        offsetIndices: \"0102\"\r\n    }, {\r\n        id: \"Pacific/Chatham\",\r\n        untils: \"-ciya10|f1tq90|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n        offsets: \"-735|-765|-825\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n    }, {\r\n        id: \"Pacific/Chuuk\",\r\n        untils: \"-su4zs0|29hes0|bkenw0|29fk40|Infinity\",\r\n        offsets: \"-600|-540\",\r\n        offsetIndices: \"01010\"\r\n    }, {\r\n        id: \"Pacific/Easter\",\r\n        untils: \"-jhfaew|ivmeuw|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|iq2o0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity\",\r\n        offsets: \"437.4667|420|360|300\",\r\n        offsetIndices: \"012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n    }, {\r\n        id: \"Pacific/Efate\",\r\n        untils: \"-u964i4|11f4ba4|9cyk0|awo40|7tek0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|64ak0|e1ms0|4ofw0|Infinity\",\r\n        offsets: \"-673.2667|-660|-720\",\r\n        offsetIndices: \"0121212121212121212121\"\r\n    }, {\r\n        id: \"Pacific/Enderbury\",\r\n        untils: \"535io0|7yiqk0|Infinity\",\r\n        offsets: \"720|660|-780\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Pacific/Fakaofo\",\r\n        untils: \"lx0jw0|Infinity\",\r\n        offsets: \"660|-780\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Fiji\",\r\n        untils: \"-sa2x4w|17bs00w|64dc0|cyo00|5reo0|53a5c0|64dc0|asw00|6uao0|bvs00|4oio0|e1k00|4oio0|eeio0|4bh80|erk40|3ylc0|erhc0|3ylc0|f4g00|3lmo0|f4g00|3lmo0|f4g00|3lmo0|fheo0|38o00|fheo0|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|f4g00|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|f4g00|3lmo0|Infinity\",\r\n        offsets: \"-715.7333|-720|-780\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Pacific/Funafuti\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-720\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Pacific/Galapagos\",\r\n        untils: \"-kcr62o|spdryo|3lsas0|3jp80|Infinity\",\r\n        offsets: \"358.4|300|360\",\r\n        offsetIndices: \"01212\"\r\n    }, {\r\n        id: \"Pacific/Gambier\",\r\n        untils: \"-tvndoc|Infinity\",\r\n        offsets: \"539.8|540\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Guadalcanal\",\r\n        untils: \"-tvowac|Infinity\",\r\n        offsets: \"-639.8|-660\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Guam\",\r\n        untils: \"-en8eg0|1dl9g0|7s1k40|txp80|3frms0|qdrpo|7kgac|3ljw0|c8tg0|6u7w0|bvus0|6u7w0|16uo40|3ljw0|16aas0|4ivxo|cls2c|6h980|c65zw0|Infinity\",\r\n        offsets: \"-600|-540|-660\",\r\n        offsetIndices: \"01020202020202020200\"\r\n    }, {\r\n        id: \"Pacific/Honolulu\",\r\n        untils: \"-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity\",\r\n        offsets: \"630|570|600\",\r\n        offsetIndices: \"0101102\"\r\n    }, {\r\n        id: \"Pacific/Johnston\",\r\n        untils: \"-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity\",\r\n        offsets: \"630|570|600\",\r\n        offsetIndices: \"0101102\"\r\n    }, {\r\n        id: \"Pacific/Kiritimati\",\r\n        untils: \"535eyo|7yirhc|Infinity\",\r\n        offsets: \"640|600|-840\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Pacific/Kosrae\",\r\n        untils: \"-su52k0|29hhk0|9cmd40|27sas0|29fk40|cm2540|f9l3w0|Infinity\",\r\n        offsets: \"-660|-540|-600|-720\",\r\n        offsetIndices: \"01021030\"\r\n    }, {\r\n        id: \"Pacific/Kwajalein\",\r\n        untils: \"-h817w0|27sas0|1hjus0|ddxug0|cgv6k0|Infinity\",\r\n        offsets: \"-660|-600|-540|720|-720\",\r\n        offsetIndices: \"012034\"\r\n    }, {\r\n        id: \"Pacific/Majuro\",\r\n        untils: \"-su52k0|29hhk0|9cmd40|27sas0|1h6w40|deat40|Infinity\",\r\n        offsets: \"-660|-540|-600|-720\",\r\n        offsetIndices: \"0102103\"\r\n    }, {\r\n        id: \"Pacific/Marquesas\",\r\n        untils: \"-tvncu0|Infinity\",\r\n        offsets: \"558|570\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Midway\",\r\n        untils: \"-usij20|Infinity\",\r\n        offsets: \"682.8|660\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Nauru\",\r\n        untils: \"-pjxiws|ba66ys|1kwca0|hfzda0|Infinity\",\r\n        offsets: \"-667.6667|-690|-540|-720\",\r\n        offsetIndices: \"01213\"\r\n    }, {\r\n        id: \"Pacific/Niue\",\r\n        untils: \"-9wyz6o|ehcj4o|Infinity\",\r\n        offsets: \"680|690|660\",\r\n        offsetIndices: \"012\"\r\n    }, {\r\n        id: \"Pacific/Norfolk\",\r\n        untils: \"-9x0ps0|cfj8q0|6hc00|l6nk00|239aq0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n        offsets: \"-672|-690|-750|-660|-720\",\r\n        offsetIndices: \"012134343434343434343434343434343434343434\"\r\n    }, {\r\n        id: \"Pacific/Noumea\",\r\n        untils: \"-u9645o|ye0ixo|4dbw0|ecqs0|4f6k0|99p700|4oio0|Infinity\",\r\n        offsets: \"-665.8|-660|-720\",\r\n        offsetIndices: \"01212121\"\r\n    }, {\r\n        id: \"Pacific/Pago_Pago\",\r\n        untils: \"-usij20|Infinity\",\r\n        offsets: \"682.8|660\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Palau\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-540\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Pacific/Pitcairn\",\r\n        untils: \"es2cy0|Infinity\",\r\n        offsets: \"510|480\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Pohnpei\",\r\n        untils: \"-su52k0|29hhk0|9cmd40|27sas0|29fk40|Infinity\",\r\n        offsets: \"-660|-540|-600\",\r\n        offsetIndices: \"010210\"\r\n    }, {\r\n        id: \"Pacific/Ponape\",\r\n        untils: \"-su52k0|29hhk0|9cmd40|27sas0|29fk40|Infinity\",\r\n        offsets: \"-660|-540|-600\",\r\n        offsetIndices: \"010210\"\r\n    }, {\r\n        id: \"Pacific/Port_Moresby\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-600\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Pacific/Rarotonga\",\r\n        untils: \"4mj960|5rbw0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|Infinity\",\r\n        offsets: \"630|570|600\",\r\n        offsetIndices: \"012121212121212121212121212\"\r\n    }, {\r\n        id: \"Pacific/Saipan\",\r\n        untils: \"-en8eg0|1dl9g0|7s1k40|txp80|3frms0|qdrpo|7kgac|3ljw0|c8tg0|6u7w0|bvus0|6u7w0|16uo40|3ljw0|16aas0|4ivxo|cls2c|6h980|c65zw0|Infinity\",\r\n        offsets: \"-600|-540|-660\",\r\n        offsetIndices: \"01020202020202020200\"\r\n    }, {\r\n        id: \"Pacific/Samoa\",\r\n        untils: \"-usij20|Infinity\",\r\n        offsets: \"682.8|660\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Tahiti\",\r\n        untils: \"-tvnayw|Infinity\",\r\n        offsets: \"598.2667|600\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"Pacific/Tarawa\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-720\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Pacific/Tongatapu\",\r\n        untils: \"-f4vrlc|uo2edc|8fpc0|bvs00|4bh80|eelg0|4bh80|7pmis0|3lmo0|Infinity\",\r\n        offsets: \"-740|-780|-840\",\r\n        offsetIndices: \"0121212121\"\r\n    }, {\r\n        id: \"Pacific/Truk\",\r\n        untils: \"-su4zs0|29hes0|bkenw0|29fk40|Infinity\",\r\n        offsets: \"-600|-540\",\r\n        offsetIndices: \"01010\"\r\n    }, {\r\n        id: \"Pacific/Wake\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-720\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Pacific/Wallis\",\r\n        untils: \"Infinity\",\r\n        offsets: \"-720\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Pacific/Yap\",\r\n        untils: \"-su4zs0|29hes0|bkenw0|29fk40|Infinity\",\r\n        offsets: \"-600|-540\",\r\n        offsetIndices: \"01010\"\r\n    }, {\r\n        id: \"Poland\",\r\n        untils: \"-se9yk0|dvyc0|7ves0|a4yw0|7x6o0|asw00|7x6o0|aunw0|7x6o0|1evbs0|9fcwc0|18cao0|7k800|9q000|9d1c0|9gnw0|an980|9kd80|8fs40|922w0|ar1c0|7x6o0|a2yo0|8n400|9q000|902o0|4013w0|64dc0|9d1c0|9d1c0|clpc0|6hc00|9d1c0|9d1c0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|clpc0|64dc0|6j4tc0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"-84|-60|-120|-180\",\r\n        offsetIndices: \"012121223212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"Portugal\",\r\n        untils: \"-u9rhc0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5gyl40|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"36.75|0|-60|-120\",\r\n        offsetIndices: \"012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212121212121212121212121212121212122323232212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"PRC\",\r\n        untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"01010101010101010101010101010\"\r\n    }, {\r\n        id: \"PST8PDT\",\r\n        untils: \"-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"ROC\",\r\n        untils: \"-gtzfk0|45slc0|c51c0|75bw0|a31g0|aaak0|9d440|7v980|awo40|7v980|awo40|7v980|awo40|7v980|7tk40|clmk0|7rpg0|b07w0|7rpg0|b07w0|7rpg0|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|cjxg0|69uk0|ci2s0|69uk0|6its40|9et80|9d440|9et80|1yf9g0|4qak0|Infinity\",\r\n        offsets: \"-480|-540\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"ROK\",\r\n        untils: \"-w8966g|1yh18g|hkx5a0|1faao0|5cik0|ae5g0|8a2k0|ae5g0|8bx80|c8tg0|6h980|1bj6s0|l3aq0|6j3w0|d2g40|6u7w0|b5xg0|776k0|biw40|776k0|biw40|776k0|biw40|776k0|grs40|dfqxi0|7x6o0|asw00|7x6o0|Infinity\",\r\n        offsets: \"-507.8667|-510|-540|-600|-570\",\r\n        offsetIndices: \"012232323232141414141414123232\"\r\n    }, {\r\n        id: \"Singapore\",\r\n        untils: \"-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity\",\r\n        offsets: \"-415.4167|-420|-440|-450|-540|-480\",\r\n        offsetIndices: \"0123435\"\r\n    }, {\r\n        id: \"Turkey\",\r\n        untils: \"-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity\",\r\n        offsets: \"-116.9333|-120|-180|-240\",\r\n        offsetIndices: \"0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122\"\r\n    }, {\r\n        id: \"UCT\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"Universal\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"US/Alaska\",\r\n        untils: \"-ek1qo0|1tyx80|2e400|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"600|540|480\",\r\n        offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"US/Aleutian\",\r\n        untils: \"-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"660|600|540\",\r\n        offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"US/Arizona\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|zjedo|4olg0|9et80|bs6lmc|9cyk0|Infinity\",\r\n        offsets: \"420|360\",\r\n        offsetIndices: \"01010101010\"\r\n    }, {\r\n        id: \"US/Central\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bvus0|776k0|7kas0|b5rw0|9d440|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|7x9g0|dbjw0|8a840|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"US/East-Indiana\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300|240\",\r\n        offsetIndices: \"010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121\"\r\n    }, {\r\n        id: \"US/Eastern\",\r\n        untils: \"-r0ev80|ast80|7x9g0|ast80|7x9g0|b5rw0|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tzb40|2dq40|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"300|240\",\r\n        offsetIndices: \"01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"US/Hawaii\",\r\n        untils: \"-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity\",\r\n        offsets: \"630|570|600\",\r\n        offsetIndices: \"0101102\"\r\n    }, {\r\n        id: \"US/Indiana-Starke\",\r\n        untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"360|300\",\r\n        offsetIndices: \"0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"US/Michigan\",\r\n        untils: \"-xx8dyd|5eraud|dyeyk0|1tzb40|2dq40|1c9440|7x3w0|9rlbxo|71s2c|9d440|9cyk0|2cmdg0|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"332.1833|360|300|240\",\r\n        offsetIndices: \"0123323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n    }, {\r\n        id: \"US/Mountain\",\r\n        untils: \"-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"420|360\",\r\n        offsetIndices: \"01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"US/Pacific-New\",\r\n        untils: \"-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"US/Pacific\",\r\n        untils: \"-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n        offsets: \"480|420\",\r\n        offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"US/Samoa\",\r\n        untils: \"-usij20|Infinity\",\r\n        offsets: \"682.8|660\",\r\n        offsetIndices: \"01\"\r\n    }, {\r\n        id: \"UTC\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }, {\r\n        id: \"W-SU\",\r\n        untils: \"-rx5dmh|ipzua|97hc0|7yyk0|5i840|d9p80|1jwk7|2cvk0|s8o00|1qvw0|8fpc0|1jms0|is040|412as0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n        offsets: \"-150.2833|-151.3167|-211.3167|-271.3167|-240|-180|-300|-120\",\r\n        offsetIndices: \"012132345464575454545454545454545455754545454545454545454545454545454545454545\"\r\n    }, {\r\n        id: \"WET\",\r\n        untils: \"3s9ms0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n        offsets: \"0|-60\",\r\n        offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n    }, {\r\n        id: \"Zulu\",\r\n        untils: \"Infinity\",\r\n        offsets: \"0\",\r\n        offsetIndices: \"0\"\r\n    }]\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (time_zone_utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getTimeZones = void 0;\r\nvar _utils = _interopRequireDefault(require(\"./ui/scheduler/utils.timeZone\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getTimeZones = _utils.default.getTimeZones;\r\nexports.getTimeZones = getTimeZones;\r\n","/**\r\n * DevExtreme (core/element.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getPublicElement = getPublicElement;\r\nexports.setPublicElementWrapper = setPublicElementWrapper;\r\nvar strategy = function(element) {\r\n    return element && element.get(0)\r\n};\r\n\r\nfunction getPublicElement(element) {\r\n    return strategy(element)\r\n}\r\n\r\nfunction setPublicElementWrapper(newStrategy) {\r\n    strategy = newStrategy\r\n}\r\n","/**\r\n * DevExtreme (viz/export.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar Export = _interopRequireWildcard(require(\"./core/export\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\nvar _default = Export;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/button_group.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _button = _interopRequireDefault(require(\"./button\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _bindable_template = require(\"../core/templates/bindable_template\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar BUTTON_GROUP_CLASS = \"dx-buttongroup\";\r\nvar BUTTON_GROUP_WRAPPER_CLASS = BUTTON_GROUP_CLASS + \"-wrapper\";\r\nvar BUTTON_GROUP_ITEM_CLASS = BUTTON_GROUP_CLASS + \"-item\";\r\nvar BUTTON_GROUP_FIRST_ITEM_CLASS = BUTTON_GROUP_CLASS + \"-first-item\";\r\nvar BUTTON_GROUP_LAST_ITEM_CLASS = BUTTON_GROUP_CLASS + \"-last-item\";\r\nvar BUTTON_GROUP_ITEM_HAS_WIDTH = BUTTON_GROUP_ITEM_CLASS + \"-has-width\";\r\nvar SHAPE_STANDARD_CLASS = \"dx-shape-standard\";\r\nvar ButtonCollection = _uiCollection_widget.default.inherit({\r\n    _initTemplates: function() {\r\n        var _this = this;\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            item: new _bindable_template.BindableTemplate(function($container, data, model) {\r\n                _this._prepareItemStyles($container);\r\n                _this._createComponent($container, _button.default, (0, _extend.extend)({}, model, data, _this._getBasicButtonOptions(), {\r\n                    _templateData: model,\r\n                    template: model.template || _this.option(\"buttonTemplate\")\r\n                }))\r\n            }, [\"text\", \"type\", \"icon\", \"disabled\", \"visible\", \"hint\"], this.option(\"integrationOptions.watchMethod\"))\r\n        })\r\n    },\r\n    _getBasicButtonOptions: function() {\r\n        return {\r\n            focusStateEnabled: false,\r\n            onClick: null,\r\n            hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n            activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n            stylingMode: this.option(\"stylingMode\")\r\n        }\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            itemTemplateProperty: null\r\n        })\r\n    },\r\n    _prepareItemStyles: function($item) {\r\n        var itemIndex = $item.data(\"dxItemIndex\");\r\n        0 === itemIndex && $item.addClass(BUTTON_GROUP_FIRST_ITEM_CLASS);\r\n        var items = this.option(\"items\");\r\n        items && itemIndex === items.length - 1 && $item.addClass(BUTTON_GROUP_LAST_ITEM_CLASS);\r\n        $item.addClass(SHAPE_STANDARD_CLASS)\r\n    },\r\n    _renderItemContent: function(args) {\r\n        args.container = (0, _renderer.default)(args.container).parent();\r\n        return this.callBase(args)\r\n    },\r\n    _renderItemContentByNode: function(args, $node) {\r\n        args.container = (0, _renderer.default)(args.container.children().first());\r\n        return this.callBase(args, $node)\r\n    },\r\n    _focusTarget: function() {\r\n        return this.$element().parent()\r\n    },\r\n    _keyboardEventBindingTarget: function() {\r\n        return this._focusTarget()\r\n    },\r\n    _refreshContent: function() {\r\n        this._prepareContent();\r\n        this._renderContent()\r\n    },\r\n    _itemClass: function() {\r\n        return BUTTON_GROUP_ITEM_CLASS\r\n    },\r\n    _itemSelectHandler: function(e) {\r\n        if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n            return\r\n        }\r\n        this.callBase(e)\r\n    }\r\n});\r\nvar ButtonGroup = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: true,\r\n            focusStateEnabled: true,\r\n            selectionMode: \"single\",\r\n            selectedItems: [],\r\n            selectedItemKeys: [],\r\n            stylingMode: \"contained\",\r\n            keyExpr: \"text\",\r\n            items: [],\r\n            buttonTemplate: \"content\",\r\n            onSelectionChanged: null,\r\n            onItemClick: null\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._createItemClickAction()\r\n    },\r\n    _createItemClickAction: function() {\r\n        this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n    },\r\n    _initMarkup: function() {\r\n        this.setAria(\"role\", \"group\");\r\n        this.$element().addClass(BUTTON_GROUP_CLASS);\r\n        this._renderButtons();\r\n        this._syncSelectionOptions();\r\n        this.callBase()\r\n    },\r\n    _fireSelectionChangeEvent: function(addedItems, removedItems) {\r\n        this._createActionByOption(\"onSelectionChanged\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })({\r\n            addedItems: addedItems,\r\n            removedItems: removedItems\r\n        })\r\n    },\r\n    _renderButtons: function() {\r\n        var _this2 = this;\r\n        var $buttons = (0, _renderer.default)(\"<div>\").addClass(BUTTON_GROUP_WRAPPER_CLASS).appendTo(this.$element());\r\n        var selectedItems = this.option(\"selectedItems\");\r\n        var options = {\r\n            selectionMode: this.option(\"selectionMode\"),\r\n            items: this.option(\"items\"),\r\n            keyExpr: this.option(\"keyExpr\"),\r\n            buttonTemplate: this.option(\"buttonTemplate\"),\r\n            scrollingEnabled: false,\r\n            selectedItemKeys: this.option(\"selectedItemKeys\"),\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n            activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n            stylingMode: this.option(\"stylingMode\"),\r\n            accessKey: this.option(\"accessKey\"),\r\n            tabIndex: this.option(\"tabIndex\"),\r\n            noDataText: \"\",\r\n            selectionRequired: false,\r\n            onItemRendered: function(e) {\r\n                var width = _this2.option(\"width\");\r\n                (0, _type.isDefined)(width) && (0, _renderer.default)(e.itemElement).addClass(BUTTON_GROUP_ITEM_HAS_WIDTH)\r\n            },\r\n            onSelectionChanged: function(e) {\r\n                _this2._syncSelectionOptions();\r\n                _this2._fireSelectionChangeEvent(e.addedItems, e.removedItems)\r\n            },\r\n            onItemClick: function(e) {\r\n                _this2._itemClickAction(e)\r\n            }\r\n        };\r\n        if ((0, _type.isDefined)(selectedItems) && selectedItems.length) {\r\n            options.selectedItems = selectedItems\r\n        }\r\n        this._buttonsCollection = this._createComponent($buttons, ButtonCollection, options)\r\n    },\r\n    _syncSelectionOptions: function() {\r\n        this._setOptionWithoutOptionChange(\"selectedItems\", this._buttonsCollection.option(\"selectedItems\"));\r\n        this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._buttonsCollection.option(\"selectedItemKeys\"))\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"stylingMode\":\r\n            case \"selectionMode\":\r\n            case \"keyExpr\":\r\n            case \"buttonTemplate\":\r\n            case \"items\":\r\n            case \"activeStateEnabled\":\r\n            case \"focusStateEnabled\":\r\n            case \"hoverStateEnabled\":\r\n            case \"tabIndex\":\r\n                this._invalidate();\r\n                break;\r\n            case \"selectedItemKeys\":\r\n            case \"selectedItems\":\r\n                this._buttonsCollection.option(args.name, args.value);\r\n                break;\r\n            case \"onItemClick\":\r\n                this._createItemClickAction();\r\n                break;\r\n            case \"onSelectionChanged\":\r\n                break;\r\n            case \"width\":\r\n                this.callBase(args);\r\n                this._buttonsCollection.itemElements().toggleClass(BUTTON_GROUP_ITEM_HAS_WIDTH, !!args.value);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxButtonGroup\", ButtonGroup);\r\nvar _default = ButtonGroup;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/utils/array_compare.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.findChanges = void 0;\r\nvar _type = require(\"./type\");\r\nvar getKeyWrapper = function(item, getKey) {\r\n    var key = getKey(item);\r\n    if ((0, _type.isObject)(key)) {\r\n        try {\r\n            return JSON.stringify(key)\r\n        } catch (e) {\r\n            return key\r\n        }\r\n    }\r\n    return key\r\n};\r\nvar getSameNewByOld = function(oldItem, newItems, newIndexByKey, getKey) {\r\n    var key = getKeyWrapper(oldItem, getKey);\r\n    return newItems[newIndexByKey[key]]\r\n};\r\nvar findChanges = function(oldItems, newItems, getKey, isItemEquals) {\r\n    var oldIndexByKey = {};\r\n    var newIndexByKey = {};\r\n    var addedCount = 0;\r\n    var removeCount = 0;\r\n    var result = [];\r\n    oldItems.forEach(function(item, index) {\r\n        var key = getKeyWrapper(item, getKey);\r\n        oldIndexByKey[key] = index\r\n    });\r\n    newItems.forEach(function(item, index) {\r\n        var key = getKeyWrapper(item, getKey);\r\n        newIndexByKey[key] = index\r\n    });\r\n    var itemCount = Math.max(oldItems.length, newItems.length);\r\n    for (var index = 0; index < itemCount + addedCount; index++) {\r\n        var newItem = newItems[index];\r\n        var oldNextIndex = index - addedCount + removeCount;\r\n        var nextOldItem = oldItems[oldNextIndex];\r\n        var isRemoved = !newItem || nextOldItem && !getSameNewByOld(nextOldItem, newItems, newIndexByKey, getKey);\r\n        if (isRemoved) {\r\n            if (nextOldItem) {\r\n                result.push({\r\n                    type: \"remove\",\r\n                    key: getKey(nextOldItem),\r\n                    index: index,\r\n                    oldItem: nextOldItem\r\n                });\r\n                removeCount++;\r\n                index--\r\n            }\r\n        } else {\r\n            var key = getKeyWrapper(newItem, getKey);\r\n            var oldIndex = oldIndexByKey[key];\r\n            var oldItem = oldItems[oldIndex];\r\n            if (!oldItem) {\r\n                addedCount++;\r\n                result.push({\r\n                    type: \"insert\",\r\n                    data: newItem,\r\n                    index: index\r\n                })\r\n            } else {\r\n                if (oldIndex === oldNextIndex) {\r\n                    if (!isItemEquals(oldItem, newItem)) {\r\n                        result.push({\r\n                            type: \"update\",\r\n                            data: newItem,\r\n                            key: getKey(newItem),\r\n                            index: index,\r\n                            oldItem: oldItem\r\n                        })\r\n                    }\r\n                } else {\r\n                    return\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return result\r\n};\r\nexports.findChanges = findChanges;\r\n","/**\r\n * DevExtreme (ui/tooltip.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _tooltip = _interopRequireDefault(require(\"./tooltip/tooltip\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _tooltip.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/utils/style.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.setHeight = exports.setWidth = exports.normalizeStyleProp = exports.stylePropPrefix = exports.styleProp = void 0;\r\nvar _inflector = require(\"./inflector\");\r\nvar _call_once = _interopRequireDefault(require(\"./call_once\"));\r\nvar _type = require(\"./type\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar jsPrefixes = [\"\", \"Webkit\", \"Moz\", \"O\", \"Ms\"];\r\nvar cssPrefixes = {\r\n    \"\": \"\",\r\n    Webkit: \"-webkit-\",\r\n    Moz: \"-moz-\",\r\n    O: \"-o-\",\r\n    ms: \"-ms-\"\r\n};\r\nvar getStyles = (0, _call_once.default)(function() {\r\n    return _dom_adapter.default.createElement(\"dx\").style\r\n});\r\nvar forEachPrefixes = function(prop, callBack) {\r\n    prop = (0, _inflector.camelize)(prop, true);\r\n    var result;\r\n    for (var i = 0, cssPrefixesCount = jsPrefixes.length; i < cssPrefixesCount; i++) {\r\n        var jsPrefix = jsPrefixes[i];\r\n        var prefixedProp = jsPrefix + prop;\r\n        var lowerPrefixedProp = (0, _inflector.camelize)(prefixedProp);\r\n        result = callBack(lowerPrefixedProp, jsPrefix);\r\n        if (void 0 === result) {\r\n            result = callBack(prefixedProp, jsPrefix)\r\n        }\r\n        if (void 0 !== result) {\r\n            break\r\n        }\r\n    }\r\n    return result || \"\"\r\n};\r\nvar styleProp = function(name) {\r\n    if (name in getStyles()) {\r\n        return name\r\n    }\r\n    var originalName = name;\r\n    name = name.charAt(0).toUpperCase() + name.substr(1);\r\n    for (var i = 1; i < jsPrefixes.length; i++) {\r\n        var prefixedProp = jsPrefixes[i].toLowerCase() + name;\r\n        if (prefixedProp in getStyles()) {\r\n            return prefixedProp\r\n        }\r\n    }\r\n    return originalName\r\n};\r\nexports.styleProp = styleProp;\r\nvar stylePropPrefix = function(prop) {\r\n    return forEachPrefixes(prop, function(specific, jsPrefix) {\r\n        if (specific in getStyles()) {\r\n            return cssPrefixes[jsPrefix]\r\n        }\r\n    })\r\n};\r\nexports.stylePropPrefix = stylePropPrefix;\r\nvar pxExceptions = [\"fillOpacity\", \"columnCount\", \"flexGrow\", \"flexShrink\", \"fontWeight\", \"lineHeight\", \"opacity\", \"zIndex\", \"zoom\"];\r\nvar normalizeStyleProp = function(prop, value) {\r\n    if ((0, _type.isNumeric)(value) && pxExceptions.indexOf(prop) === -1) {\r\n        value += \"px\"\r\n    }\r\n    return value\r\n};\r\nexports.normalizeStyleProp = normalizeStyleProp;\r\nvar setDimensionProperty = function(elements, propertyName, value) {\r\n    if (elements) {\r\n        value = (0, _type.isNumeric)(value) ? value += \"px\" : value;\r\n        for (var i = 0; i < elements.length; ++i) {\r\n            elements[i].style[propertyName] = value\r\n        }\r\n    }\r\n};\r\nvar setWidth = function(elements, value) {\r\n    setDimensionProperty(elements, \"width\", value)\r\n};\r\nexports.setWidth = setWidth;\r\nvar setHeight = function(elements, value) {\r\n    setDimensionProperty(elements, \"height\", value)\r\n};\r\nexports.setHeight = setHeight;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/utils.work_week.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar MONDAY_INDEX = 1;\r\nvar SATURDAY_INDEX = 6;\r\nvar SUNDAY_INDEX = 0;\r\nvar workWeekUtils = function() {\r\n    function workWeekUtils() {\r\n        _classCallCheck(this, workWeekUtils)\r\n    }\r\n    _createClass(workWeekUtils, null, [{\r\n        key: \"isDataOnWeekend\",\r\n        value: function(date) {\r\n            var day = date.getDay();\r\n            return day === SATURDAY_INDEX || day === SUNDAY_INDEX\r\n        }\r\n    }, {\r\n        key: \"getFirstDayOfWeek\",\r\n        value: function(firstDayOfWeekOption) {\r\n            return firstDayOfWeekOption || MONDAY_INDEX\r\n        }\r\n    }, {\r\n        key: \"getWeekendsCount\",\r\n        value: function(days) {\r\n            return 2 * Math.floor(days / 7)\r\n        }\r\n    }, {\r\n        key: \"getFirstViewDate\",\r\n        value: function(viewStart, firstDayOfWeek) {\r\n            var firstViewDate = _date.default.getFirstWeekDate(viewStart, firstDayOfWeek);\r\n            return _date.default.normalizeDateByWeek(firstViewDate, viewStart)\r\n        }\r\n    }]);\r\n    return workWeekUtils\r\n}();\r\nvar _default = workWeekUtils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/calendar/ui.calendar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _swipeable = _interopRequireDefault(require(\"../../events/gesture/swipeable\"));\r\nvar _uiCalendar = _interopRequireDefault(require(\"./ui.calendar.navigator\"));\r\nvar _uiCalendar2 = _interopRequireDefault(require(\"./ui.calendar.views\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _function_template = require(\"../../core/templates/function_template\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar CALENDAR_CLASS = \"dx-calendar\";\r\nvar CALENDAR_BODY_CLASS = \"dx-calendar-body\";\r\nvar CALENDAR_CELL_CLASS = \"dx-calendar-cell\";\r\nvar CALENDAR_FOOTER_CLASS = \"dx-calendar-footer\";\r\nvar CALENDAR_TODAY_BUTTON_CLASS = \"dx-calendar-today-button\";\r\nvar CALENDAR_HAS_FOOTER_CLASS = \"dx-calendar-with-footer\";\r\nvar CALENDAR_VIEWS_WRAPPER_CLASS = \"dx-calendar-views-wrapper\";\r\nvar CALENDAR_VIEW_CLASS = \"dx-calendar-view\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar ANIMATION_DURATION_SHOW_VIEW = 250;\r\nvar POP_ANIMATION_FROM = .6;\r\nvar POP_ANIMATION_TO = 1;\r\nvar CALENDAR_INPUT_STANDARD_PATTERN = \"yyyy-MM-dd\";\r\nvar CALENDAR_DATE_VALUE_KEY = \"dxDateValueKey\";\r\nvar LEVEL_COMPARE_MAP = {\r\n    month: 3,\r\n    year: 2,\r\n    decade: 1,\r\n    century: 0\r\n};\r\nvar ZOOM_LEVEL = {\r\n    MONTH: \"month\",\r\n    YEAR: \"year\",\r\n    DECADE: \"decade\",\r\n    CENTURY: \"century\"\r\n};\r\nvar isIE11 = _browser.default.msie && parseInt(_browser.default.version) <= 11;\r\nvar Calendar = _editor.default.inherit({\r\n    _activeStateUnit: \".\" + CALENDAR_CELL_CLASS,\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: true,\r\n            activeStateEnabled: true,\r\n            currentDate: new Date,\r\n            value: null,\r\n            dateSerializationFormat: void 0,\r\n            min: new Date(1e3, 0),\r\n            max: new Date(3e3, 0),\r\n            firstDayOfWeek: void 0,\r\n            zoomLevel: ZOOM_LEVEL.MONTH,\r\n            maxZoomLevel: ZOOM_LEVEL.MONTH,\r\n            minZoomLevel: ZOOM_LEVEL.CENTURY,\r\n            showTodayButton: false,\r\n            cellTemplate: \"cell\",\r\n            disabledDates: null,\r\n            onCellClick: null,\r\n            onContouredChanged: null,\r\n            hasFocus: function(element) {\r\n                return element.hasClass(FOCUSED_STATE_CLASS)\r\n            },\r\n            _todayDate: function() {\r\n                return new Date\r\n            }\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }])\r\n    },\r\n    _supportedKeys: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            rightArrow: function(e) {\r\n                e.preventDefault();\r\n                if (e.ctrlKey) {\r\n                    this._waitRenderView(1)\r\n                } else {\r\n                    this._moveCurrentDateByOffset(1 * this._getRtlCorrection())\r\n                }\r\n            },\r\n            leftArrow: function(e) {\r\n                e.preventDefault();\r\n                if (e.ctrlKey) {\r\n                    this._waitRenderView(-1)\r\n                } else {\r\n                    this._moveCurrentDateByOffset(-1 * this._getRtlCorrection())\r\n                }\r\n            },\r\n            upArrow: function(e) {\r\n                e.preventDefault();\r\n                if (e.ctrlKey) {\r\n                    this._navigateUp()\r\n                } else {\r\n                    if (_fx.default.isAnimating(this._view.$element())) {\r\n                        return\r\n                    }\r\n                    this._moveCurrentDateByOffset(-1 * this._view.option(\"colCount\"))\r\n                }\r\n            },\r\n            downArrow: function(e) {\r\n                e.preventDefault();\r\n                if (e.ctrlKey) {\r\n                    this._navigateDown()\r\n                } else {\r\n                    if (_fx.default.isAnimating(this._view.$element())) {\r\n                        return\r\n                    }\r\n                    this._moveCurrentDateByOffset(1 * this._view.option(\"colCount\"))\r\n                }\r\n            },\r\n            home: function(e) {\r\n                e.preventDefault();\r\n                var zoomLevel = this.option(\"zoomLevel\");\r\n                var currentDate = this.option(\"currentDate\");\r\n                var min = this._dateOption(\"min\");\r\n                if (this._view.isDateDisabled(currentDate)) {\r\n                    return\r\n                }\r\n                var date = _date.default.sameView(zoomLevel, currentDate, min) ? min : _date.default.getViewFirstCellDate(zoomLevel, currentDate);\r\n                this._moveToClosestAvailableDate(date)\r\n            },\r\n            end: function(e) {\r\n                e.preventDefault();\r\n                var zoomLevel = this.option(\"zoomLevel\");\r\n                var currentDate = this.option(\"currentDate\");\r\n                var max = this._dateOption(\"max\");\r\n                if (this._view.isDateDisabled(currentDate)) {\r\n                    return\r\n                }\r\n                var date = _date.default.sameView(zoomLevel, currentDate, max) ? max : _date.default.getViewLastCellDate(zoomLevel, currentDate);\r\n                this._moveToClosestAvailableDate(date)\r\n            },\r\n            pageUp: function(e) {\r\n                e.preventDefault();\r\n                this._waitRenderView(-1 * this._getRtlCorrection())\r\n            },\r\n            pageDown: function(e) {\r\n                e.preventDefault();\r\n                this._waitRenderView(1 * this._getRtlCorrection())\r\n            },\r\n            tab: _common.noop,\r\n            enter: function(e) {\r\n                if (!this._isMaxZoomLevel()) {\r\n                    this._navigateDown()\r\n                } else {\r\n                    if (!this._view.isDateDisabled(this.option(\"currentDate\"))) {\r\n                        var value = this._updateTimeComponent(this.option(\"currentDate\"));\r\n                        this._dateValue(value, e)\r\n                    }\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _getSerializationFormat: function(optionName) {\r\n        var value = this.option(optionName || \"value\");\r\n        if (this.option(\"dateSerializationFormat\")) {\r\n            return this.option(\"dateSerializationFormat\")\r\n        }\r\n        if ((0, _type.isNumeric)(value)) {\r\n            return \"number\"\r\n        }\r\n        if (!(0, _type.isString)(value)) {\r\n            return\r\n        }\r\n        return _date_serialization.default.getDateSerializationFormat(value)\r\n    },\r\n    _convertToDate: function(value, optionName) {\r\n        return _date_serialization.default.deserializeDate(value)\r\n    },\r\n    _dateValue: function(value, dxEvent) {\r\n        if (dxEvent) {\r\n            this._saveValueChangeEvent(dxEvent)\r\n        }\r\n        this._dateOption(\"value\", value)\r\n    },\r\n    _dateOption: function(optionName, optionValue) {\r\n        if (1 === arguments.length) {\r\n            return this._convertToDate(this.option(optionName), optionName)\r\n        }\r\n        var serializationFormat = this._getSerializationFormat(optionName);\r\n        this.option(optionName, _date_serialization.default.serializeDate(optionValue, serializationFormat))\r\n    },\r\n    _shiftDate: function(zoomLevel, date, offset, reverse) {\r\n        switch (zoomLevel) {\r\n            case ZOOM_LEVEL.MONTH:\r\n                date.setDate(date.getDate() + offset * reverse);\r\n                break;\r\n            case ZOOM_LEVEL.YEAR:\r\n                date.setMonth(date.getMonth() + offset * reverse);\r\n                break;\r\n            case ZOOM_LEVEL.DECADE:\r\n                date.setFullYear(date.getFullYear() + offset * reverse);\r\n                break;\r\n            case ZOOM_LEVEL.CENTURY:\r\n                date.setFullYear(date.getFullYear() + 10 * offset * reverse)\r\n        }\r\n    },\r\n    _moveCurrentDateByOffset: function(offset) {\r\n        var baseDate = this.option(\"currentDate\");\r\n        var currentDate = new Date(baseDate);\r\n        var zoomLevel = this.option(\"zoomLevel\");\r\n        this._shiftDate(zoomLevel, currentDate, offset, 1);\r\n        var maxDate = this._getMaxDate();\r\n        var minDate = this._getMinDate();\r\n        var isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, currentDate, baseDate);\r\n        var isDateForwardInRange = (0, _math.inRange)(currentDate, minDate, maxDate) && isDateForwardInNeighborView;\r\n        var dateForward = new Date(currentDate);\r\n        while (isDateForwardInRange) {\r\n            if (isDateForwardInRange && !this._view.isDateDisabled(dateForward)) {\r\n                currentDate = dateForward;\r\n                break\r\n            }\r\n            this._shiftDate(zoomLevel, dateForward, offset, 1);\r\n            isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, dateForward, baseDate);\r\n            isDateForwardInRange = (0, _math.inRange)(dateForward, minDate, maxDate) && isDateForwardInNeighborView\r\n        }\r\n        if (this._view.isDateDisabled(baseDate) || this._view.isDateDisabled(currentDate)) {\r\n            this._waitRenderView(offset > 0 ? 1 : -1)\r\n        } else {\r\n            this.option(\"currentDate\", currentDate)\r\n        }\r\n    },\r\n    _areDatesInSameView: function(zoomLevel, date1, date2) {\r\n        switch (zoomLevel) {\r\n            case ZOOM_LEVEL.MONTH:\r\n                return date1.getMonth() === date2.getMonth();\r\n            case ZOOM_LEVEL.YEAR:\r\n                return date1.getYear() === date2.getYear();\r\n            case ZOOM_LEVEL.DECADE:\r\n                return parseInt(date1.getYear() / 10) === parseInt(date2.getYear() / 10);\r\n            case ZOOM_LEVEL.CENTURY:\r\n                return parseInt(date1.getYear() / 100) === parseInt(date2.getYear() / 100)\r\n        }\r\n    },\r\n    _areDatesInNeighborView: function(zoomLevel, date1, date2) {\r\n        var monthMinDistance = function(a, b) {\r\n            var abs = Math.abs(a - b);\r\n            return Math.min(abs, 12 - abs)\r\n        };\r\n        switch (zoomLevel) {\r\n            case ZOOM_LEVEL.MONTH:\r\n                return monthMinDistance(date1.getMonth(), date2.getMonth()) <= 1;\r\n            case ZOOM_LEVEL.YEAR:\r\n                return Math.abs(date1.getYear() - date2.getYear()) <= 1;\r\n            case ZOOM_LEVEL.DECADE:\r\n                return Math.abs(date1.getYear() - date2.getYear()) <= 10;\r\n            case ZOOM_LEVEL.CENTURY:\r\n                return Math.abs(date1.getYear() - date2.getYear()) <= 100\r\n        }\r\n    },\r\n    _moveToClosestAvailableDate: function() {\r\n        var baseDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.option(\"currentDate\");\r\n        var currentDate = _date.default.createDate(baseDate);\r\n        var zoomLevel = this.option(\"zoomLevel\");\r\n        var isCurrentDateAvailable = !this._isDateNotAvailable(currentDate);\r\n        var isDateForwardAvailable = isCurrentDateAvailable;\r\n        var isDateBackwardAvailable = isCurrentDateAvailable;\r\n        var isDateForwardInStartView;\r\n        var isDateBackwardInStartView;\r\n        var dateForward = _date.default.createDate(currentDate);\r\n        var dateBackward = _date.default.createDate(currentDate);\r\n        do {\r\n            if (isDateForwardAvailable) {\r\n                currentDate = dateForward;\r\n                break\r\n            }\r\n            if (isDateBackwardAvailable) {\r\n                currentDate = dateBackward;\r\n                break\r\n            }\r\n            this._shiftDate(zoomLevel, dateForward, 1, 1);\r\n            this._shiftDate(zoomLevel, dateBackward, 1, -1);\r\n            isDateForwardInStartView = this._areDatesInSameView(zoomLevel, dateForward, baseDate);\r\n            isDateBackwardInStartView = this._areDatesInSameView(zoomLevel, dateBackward, baseDate);\r\n            isDateForwardAvailable = isDateForwardInStartView && !this._isDateNotAvailable(dateForward);\r\n            isDateBackwardAvailable = isDateBackwardInStartView && !this._isDateNotAvailable(dateBackward)\r\n        } while (isDateForwardInStartView || isDateBackwardInStartView);\r\n        this.option(\"currentDate\", currentDate)\r\n    },\r\n    _isDateNotAvailable: function(date) {\r\n        var maxDate = this._getMaxDate();\r\n        var minDate = this._getMinDate();\r\n        return !(0, _math.inRange)(date, minDate, maxDate) || this._view.isDateDisabled(date)\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._correctZoomLevel();\r\n        this._initCurrentDate();\r\n        this._initActions()\r\n    },\r\n    _correctZoomLevel: function() {\r\n        var minZoomLevel = this.option(\"minZoomLevel\");\r\n        var maxZoomLevel = this.option(\"maxZoomLevel\");\r\n        var zoomLevel = this.option(\"zoomLevel\");\r\n        if (LEVEL_COMPARE_MAP[maxZoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) {\r\n            return\r\n        }\r\n        if (LEVEL_COMPARE_MAP[zoomLevel] > LEVEL_COMPARE_MAP[maxZoomLevel]) {\r\n            this.option(\"zoomLevel\", maxZoomLevel)\r\n        } else {\r\n            if (LEVEL_COMPARE_MAP[zoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) {\r\n                this.option(\"zoomLevel\", minZoomLevel)\r\n            }\r\n        }\r\n    },\r\n    _initCurrentDate: function() {\r\n        var currentDate = this._getNormalizedDate(this._dateOption(\"value\")) || this._getNormalizedDate(this.option(\"currentDate\"));\r\n        this.option(\"currentDate\", currentDate)\r\n    },\r\n    _getNormalizedDate: function(date) {\r\n        date = _date.default.normalizeDate(date, this._getMinDate(), this._getMaxDate());\r\n        return (0, _type.isDefined)(date) ? this._getDate(date) : date\r\n    },\r\n    _initActions: function() {\r\n        this._cellClickAction = this._createActionByOption(\"onCellClick\");\r\n        this._onContouredChanged = this._createActionByOption(\"onContouredChanged\")\r\n    },\r\n    _initTemplates: function() {\r\n        this._templateManager.addDefaultTemplates({\r\n            cell: new _function_template.FunctionTemplate(function(options) {\r\n                var data = options.model;\r\n                (0, _renderer.default)(options.container).append((0, _renderer.default)(\"<span>\").text(data && data.text || String(data)))\r\n            })\r\n        });\r\n        this.callBase()\r\n    },\r\n    _updateCurrentDate: function(date) {\r\n        if (_fx.default.isAnimating(this._$viewsWrapper)) {\r\n            _fx.default.stop(this._$viewsWrapper, true)\r\n        }\r\n        var min = this._getMinDate();\r\n        var max = this._getMaxDate();\r\n        if (min > max) {\r\n            this.option(\"currentDate\", new Date);\r\n            return\r\n        }\r\n        var normalizedDate = this._getNormalizedDate(date);\r\n        if (date.getTime() !== normalizedDate.getTime()) {\r\n            this.option(\"currentDate\", _date.default.createDate(normalizedDate));\r\n            return\r\n        }\r\n        var offset = this._getViewsOffset(this._view.option(\"date\"), normalizedDate);\r\n        if (0 !== offset && !this._isMaxZoomLevel() && this._isOtherViewCellClicked) {\r\n            offset = 0\r\n        }\r\n        if (this._view && 0 !== offset && !this._suppressNavigation) {\r\n            this._navigate(offset, normalizedDate)\r\n        } else {\r\n            this._renderNavigator();\r\n            this._setViewContoured(normalizedDate);\r\n            this._updateAriaId(normalizedDate)\r\n        }\r\n    },\r\n    _setViewContoured: function(date) {\r\n        if (this.option(\"hasFocus\")(this._focusTarget())) {\r\n            this._view.option(\"contouredDate\", date)\r\n        }\r\n    },\r\n    _getMinDate: function() {\r\n        if (this.min) {\r\n            return this.min\r\n        }\r\n        this.min = this._dateOption(\"min\") || new Date(1e3, 0);\r\n        return this.min\r\n    },\r\n    _getMaxDate: function() {\r\n        if (this.max) {\r\n            return this.max\r\n        }\r\n        this.max = this._dateOption(\"max\") || new Date(3e3, 0);\r\n        return this.max\r\n    },\r\n    _getViewsOffset: function(startDate, endDate) {\r\n        var zoomLevel = this.option(\"zoomLevel\");\r\n        if (zoomLevel === ZOOM_LEVEL.MONTH) {\r\n            return this._getMonthsOffset(startDate, endDate)\r\n        }\r\n        var zoomCorrection;\r\n        switch (zoomLevel) {\r\n            case ZOOM_LEVEL.CENTURY:\r\n                zoomCorrection = 100;\r\n                break;\r\n            case ZOOM_LEVEL.DECADE:\r\n                zoomCorrection = 10;\r\n                break;\r\n            default:\r\n                zoomCorrection = 1\r\n        }\r\n        return parseInt(endDate.getFullYear() / zoomCorrection) - parseInt(startDate.getFullYear() / zoomCorrection)\r\n    },\r\n    _getMonthsOffset: function(startDate, endDate) {\r\n        var yearOffset = endDate.getFullYear() - startDate.getFullYear();\r\n        var monthOffset = endDate.getMonth() - startDate.getMonth();\r\n        return 12 * yearOffset + monthOffset\r\n    },\r\n    _waitRenderView: function(offset) {\r\n        var _this = this;\r\n        if (this._alreadyViewRender) {\r\n            return\r\n        }\r\n        this._alreadyViewRender = true;\r\n        var date = this._getDateByOffset(offset * this._getRtlCorrection());\r\n        this._moveToClosestAvailableDate(date);\r\n        this._waitRenderViewTimeout = setTimeout(function() {\r\n            _this._alreadyViewRender = false\r\n        })\r\n    },\r\n    _getRtlCorrection: function() {\r\n        return this.option(\"rtlEnabled\") ? -1 : 1\r\n    },\r\n    _getDateByOffset: function(offset, date) {\r\n        date = this._getDate(date || this.option(\"currentDate\"));\r\n        var currentDay = date.getDate();\r\n        var difference = _date.default.getDifferenceInMonth(this.option(\"zoomLevel\")) * offset;\r\n        date.setDate(1);\r\n        date.setMonth(date.getMonth() + difference);\r\n        var lastDay = _date.default.getLastMonthDate(date).getDate();\r\n        date.setDate(currentDay > lastDay ? lastDay : currentDay);\r\n        return date\r\n    },\r\n    _focusTarget: function() {\r\n        return this.$element()\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderSubmitElement();\r\n        this.callBase();\r\n        var $element = this.$element();\r\n        $element.addClass(CALENDAR_CLASS);\r\n        this._renderBody();\r\n        $element.append(this.$body);\r\n        this._renderViews();\r\n        this._renderNavigator();\r\n        $element.append(this._navigator.$element());\r\n        this._renderSwipeable();\r\n        this._renderFooter();\r\n        this._updateAriaSelected();\r\n        this._updateAriaId();\r\n        this._moveToClosestAvailableDate()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._setViewContoured(this.option(\"currentDate\"))\r\n    },\r\n    _renderBody: function() {\r\n        if (!this._$viewsWrapper) {\r\n            this.$body = (0, _renderer.default)(\"<div>\").addClass(CALENDAR_BODY_CLASS);\r\n            this._$viewsWrapper = (0, _renderer.default)(\"<div>\").addClass(CALENDAR_VIEWS_WRAPPER_CLASS);\r\n            this.$body.append(this._$viewsWrapper)\r\n        }\r\n    },\r\n    _getKeyboardListeners: function() {\r\n        return this.callBase().concat([this._view])\r\n    },\r\n    _renderViews: function() {\r\n        this.$element().addClass(CALENDAR_VIEW_CLASS + \"-\" + this.option(\"zoomLevel\"));\r\n        var currentDate = this.option(\"currentDate\");\r\n        this._view = this._renderSpecificView(currentDate);\r\n        if ((0, _window.hasWindow)()) {\r\n            var beforeDate = this._getDateByOffset(-1, currentDate);\r\n            this._beforeView = this._isViewAvailable(beforeDate) ? this._renderSpecificView(beforeDate) : null;\r\n            var afterDate = this._getDateByOffset(1, currentDate);\r\n            afterDate.setDate(1);\r\n            this._afterView = this._isViewAvailable(afterDate) ? this._renderSpecificView(afterDate) : null\r\n        }\r\n        this._translateViews()\r\n    },\r\n    _renderSpecificView: function(date) {\r\n        var specificView = _uiCalendar2.default[this.option(\"zoomLevel\")];\r\n        var $view = (0, _renderer.default)(\"<div>\").appendTo(this._$viewsWrapper);\r\n        var config = this._viewConfig(date);\r\n        return this._createComponent($view, specificView, config)\r\n    },\r\n    _viewConfig: function(date) {\r\n        var disabledDates = this.option(\"disabledDates\");\r\n        disabledDates = (0, _type.isFunction)(disabledDates) ? this._injectComponent(disabledDates.bind(this)) : disabledDates;\r\n        return {\r\n            date: date,\r\n            min: this._getMinDate(),\r\n            max: this._getMaxDate(),\r\n            firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n            value: this._dateOption(\"value\"),\r\n            tabIndex: void 0,\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n            disabledDates: disabledDates,\r\n            onCellClick: this._cellClickHandler.bind(this),\r\n            cellTemplate: this._getTemplateByOption(\"cellTemplate\"),\r\n            allowValueSelection: this._isMaxZoomLevel(),\r\n            _todayDate: this.option(\"_todayDate\")\r\n        }\r\n    },\r\n    _injectComponent: function(func) {\r\n        var that = this;\r\n        return function(params) {\r\n            (0, _extend.extend)(params, {\r\n                component: that\r\n            });\r\n            return func(params)\r\n        }\r\n    },\r\n    _isViewAvailable: function(date) {\r\n        var zoomLevel = this.option(\"zoomLevel\");\r\n        var min = _date.default.getViewMinBoundaryDate(zoomLevel, this._getMinDate());\r\n        var max = _date.default.getViewMaxBoundaryDate(zoomLevel, this._getMaxDate());\r\n        return _date.default.dateInRange(date, min, max)\r\n    },\r\n    _translateViews: function() {\r\n        (0, _translator.move)(this._view.$element(), {\r\n            left: 0,\r\n            top: 0\r\n        });\r\n        this._beforeView && (0, _translator.move)(this._beforeView.$element(), {\r\n            left: this._getViewPosition(-1),\r\n            top: 0\r\n        });\r\n        this._afterView && (0, _translator.move)(this._afterView.$element(), {\r\n            left: this._getViewPosition(1),\r\n            top: 0\r\n        })\r\n    },\r\n    _getViewPosition: function(coefficient) {\r\n        var rtlCorrection = this.option(\"rtlEnabled\") && !_browser.default.msie ? -1 : 1;\r\n        return 100 * coefficient * rtlCorrection + \"%\"\r\n    },\r\n    _cellClickHandler: function(e) {\r\n        var zoomLevel = this.option(\"zoomLevel\");\r\n        var nextView = _date.default.getViewDown(zoomLevel);\r\n        var isMaxZoomLevel = this._isMaxZoomLevel();\r\n        if (nextView && !isMaxZoomLevel) {\r\n            this._navigateDown(e.event.currentTarget)\r\n        } else {\r\n            var newValue = this._updateTimeComponent(e.value);\r\n            this._dateValue(newValue, e.event);\r\n            this._cellClickAction(e)\r\n        }\r\n    },\r\n    _updateTimeComponent: function(date) {\r\n        var result = _date.default.createDate(date);\r\n        var currentValue = this._dateOption(\"value\");\r\n        if (currentValue) {\r\n            result.setHours(currentValue.getHours());\r\n            result.setMinutes(currentValue.getMinutes());\r\n            result.setSeconds(currentValue.getSeconds());\r\n            result.setMilliseconds(currentValue.getMilliseconds())\r\n        }\r\n        return result\r\n    },\r\n    _isMaxZoomLevel: function() {\r\n        return this.option(\"zoomLevel\") === this.option(\"maxZoomLevel\")\r\n    },\r\n    _navigateDown: function(cell) {\r\n        var zoomLevel = this.option(\"zoomLevel\");\r\n        if (this._isMaxZoomLevel()) {\r\n            return\r\n        }\r\n        var nextView = _date.default.getViewDown(zoomLevel);\r\n        if (!nextView) {\r\n            return\r\n        }\r\n        var newCurrentDate = this._view.option(\"contouredDate\") || this._view.option(\"date\");\r\n        if (cell) {\r\n            newCurrentDate = (0, _renderer.default)(cell).data(CALENDAR_DATE_VALUE_KEY)\r\n        }\r\n        this._isOtherViewCellClicked = true;\r\n        this.option(\"currentDate\", newCurrentDate);\r\n        this.option(\"zoomLevel\", nextView);\r\n        this._isOtherViewCellClicked = false;\r\n        this._renderNavigator();\r\n        this._animateShowView();\r\n        this._moveToClosestAvailableDate();\r\n        this._setViewContoured(this._getNormalizedDate(this.option(\"currentDate\")))\r\n    },\r\n    _renderNavigator: function() {\r\n        if (!this._navigator) {\r\n            this._navigator = new _uiCalendar.default((0, _renderer.default)(\"<div>\"), this._navigatorConfig())\r\n        }\r\n        this._navigator.option(\"text\", this._view.getNavigatorCaption());\r\n        this._updateButtonsVisibility()\r\n    },\r\n    _navigatorConfig: function() {\r\n        return {\r\n            text: this._view.getNavigatorCaption(),\r\n            onClick: this._navigatorClickHandler.bind(this),\r\n            onCaptionClick: this._navigateUp.bind(this),\r\n            rtlEnabled: this.option(\"rtlEnabled\")\r\n        }\r\n    },\r\n    _navigatorClickHandler: function(e) {\r\n        var currentDate = this._getDateByOffset(e.direction, this.option(\"currentDate\"));\r\n        this._moveToClosestAvailableDate(currentDate);\r\n        this._updateNavigatorCaption(-e.direction * this._getRtlCorrection())\r\n    },\r\n    _navigateUp: function() {\r\n        var zoomLevel = this.option(\"zoomLevel\");\r\n        var nextView = _date.default.getViewUp(zoomLevel);\r\n        if (!nextView || this._isMinZoomLevel(zoomLevel)) {\r\n            return\r\n        }\r\n        this.option(\"zoomLevel\", nextView);\r\n        this._renderNavigator();\r\n        this._animateShowView();\r\n        this._moveToClosestAvailableDate();\r\n        this._setViewContoured(this._getNormalizedDate(this.option(\"currentDate\")))\r\n    },\r\n    _isMinZoomLevel: function(zoomLevel) {\r\n        var min = this._getMinDate();\r\n        var max = this._getMaxDate();\r\n        return _date.default.sameView(zoomLevel, min, max) || this.option(\"minZoomLevel\") === zoomLevel\r\n    },\r\n    _updateButtonsVisibility: function() {\r\n        this._navigator.toggleButton(\"next\", !(0, _type.isDefined)(this._getRequiredView(\"next\")));\r\n        this._navigator.toggleButton(\"prev\", !(0, _type.isDefined)(this._getRequiredView(\"prev\")))\r\n    },\r\n    _renderSwipeable: function() {\r\n        if (!this._swipeable) {\r\n            this._swipeable = this._createComponent(this.$element(), _swipeable.default, {\r\n                onStart: this._swipeStartHandler.bind(this),\r\n                onUpdated: this._swipeUpdateHandler.bind(this),\r\n                onEnd: this._swipeEndHandler.bind(this),\r\n                itemSizeFunc: this._viewWidth.bind(this)\r\n            })\r\n        }\r\n    },\r\n    _swipeStartHandler: function(e) {\r\n        _fx.default.stop(this._$viewsWrapper, true);\r\n        e.event.maxLeftOffset = this._getRequiredView(\"next\") ? 1 : 0;\r\n        e.event.maxRightOffset = this._getRequiredView(\"prev\") ? 1 : 0\r\n    },\r\n    _getRequiredView: function(name) {\r\n        var view;\r\n        var isRtl = this.option(\"rtlEnabled\");\r\n        if (\"next\" === name) {\r\n            view = isRtl ? this._beforeView : this._afterView\r\n        } else {\r\n            if (\"prev\" === name) {\r\n                view = isRtl ? this._afterView : this._beforeView\r\n            }\r\n        }\r\n        return view\r\n    },\r\n    _swipeUpdateHandler: function(e) {\r\n        var offset = e.event.offset;\r\n        (0, _translator.move)(this._$viewsWrapper, {\r\n            left: offset * this._viewWidth(),\r\n            top: 0\r\n        });\r\n        this._updateNavigatorCaption(offset)\r\n    },\r\n    _swipeEndHandler: function(e) {\r\n        var targetOffset = e.event.targetOffset;\r\n        var moveOffset = !targetOffset ? 0 : targetOffset / Math.abs(targetOffset);\r\n        if (0 === moveOffset) {\r\n            this._animateWrapper(0, ANIMATION_DURATION_SHOW_VIEW);\r\n            return\r\n        }\r\n        var date = this._getDateByOffset(-moveOffset * this._getRtlCorrection());\r\n        if (this._isDateInInvalidRange(date)) {\r\n            if (moveOffset >= 0) {\r\n                date = new Date(this._getMinDate())\r\n            } else {\r\n                date = new Date(this._getMaxDate())\r\n            }\r\n        }\r\n        this.option(\"currentDate\", date)\r\n    },\r\n    _viewWidth: function() {\r\n        if (!this._viewWidthValue) {\r\n            this._viewWidthValue = this.$element().width()\r\n        }\r\n        return this._viewWidthValue\r\n    },\r\n    _updateNavigatorCaption: function(offset) {\r\n        offset *= this._getRtlCorrection();\r\n        var view = this._view;\r\n        if (offset > .5 && this._beforeView) {\r\n            view = this._beforeView\r\n        } else {\r\n            if (offset < -.5 && this._afterView) {\r\n                view = this._afterView\r\n            }\r\n        }\r\n        this._navigator.option(\"text\", view.getNavigatorCaption())\r\n    },\r\n    _isDateInInvalidRange: function(date) {\r\n        if (this._view.isBoundary(date)) {\r\n            return\r\n        }\r\n        var min = this._getMinDate();\r\n        var max = this._getMaxDate();\r\n        var normalizedDate = _date.default.normalizeDate(date, min, max);\r\n        return normalizedDate === min || normalizedDate === max\r\n    },\r\n    _renderFooter: function() {\r\n        var showTodayButton = this.option(\"showTodayButton\");\r\n        if (showTodayButton) {\r\n            var $todayButton = this._createComponent((0, _renderer.default)(\"<a>\"), _button.default, {\r\n                focusStateEnabled: false,\r\n                text: _message.default.format(\"dxCalendar-todayButtonText\"),\r\n                onClick: function() {\r\n                    this._toTodayView()\r\n                }.bind(this),\r\n                integrationOptions: {}\r\n            }).$element().addClass(CALENDAR_TODAY_BUTTON_CLASS);\r\n            this._$footer = (0, _renderer.default)(\"<div>\").addClass(CALENDAR_FOOTER_CLASS).append($todayButton);\r\n            this.$element().append(this._$footer)\r\n        }\r\n        this.$element().toggleClass(CALENDAR_HAS_FOOTER_CLASS, showTodayButton)\r\n    },\r\n    _renderSubmitElement: function() {\r\n        this._$submitElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n        this._setSubmitValue(this.option(\"value\"))\r\n    },\r\n    _setSubmitValue: function(value) {\r\n        var dateValue = this._convertToDate(value);\r\n        this._getSubmitElement().val(_date_serialization.default.serializeDate(dateValue, CALENDAR_INPUT_STANDARD_PATTERN))\r\n    },\r\n    _getSubmitElement: function() {\r\n        return this._$submitElement\r\n    },\r\n    _animateShowView: function() {\r\n        _fx.default.stop(this._view.$element(), true);\r\n        return this._popAnimationView(this._view, POP_ANIMATION_FROM, POP_ANIMATION_TO, ANIMATION_DURATION_SHOW_VIEW).promise()\r\n    },\r\n    _popAnimationView: function(view, from, to, duration) {\r\n        return _fx.default.animate(view.$element(), {\r\n            type: \"pop\",\r\n            from: {\r\n                scale: from,\r\n                opacity: from\r\n            },\r\n            to: {\r\n                scale: to,\r\n                opacity: to\r\n            },\r\n            duration: duration\r\n        })\r\n    },\r\n    _navigate: function(offset, value) {\r\n        if (0 !== offset && 1 !== Math.abs(offset) && this._isViewAvailable(value)) {\r\n            var newView = this._renderSpecificView(value);\r\n            if (offset > 0) {\r\n                this._afterView && this._afterView.$element().remove();\r\n                this._afterView = newView\r\n            } else {\r\n                this._beforeView && this._beforeView.$element().remove();\r\n                this._beforeView = newView\r\n            }\r\n            this._translateViews()\r\n        }\r\n        var rtlCorrection = this._getRtlCorrection();\r\n        var offsetSign = offset > 0 ? 1 : offset < 0 ? -1 : 0;\r\n        var endPosition = -rtlCorrection * offsetSign * this._viewWidth();\r\n        var viewsWrapperPosition = this._$viewsWrapper.position().left;\r\n        if (viewsWrapperPosition !== endPosition) {\r\n            if (this._preventViewChangeAnimation) {\r\n                this._wrapperAnimationEndHandler(offset, value)\r\n            } else {\r\n                this._animateWrapper(endPosition, ANIMATION_DURATION_SHOW_VIEW).done(this._wrapperAnimationEndHandler.bind(this, offset, value))\r\n            }\r\n        }\r\n    },\r\n    _animateWrapper: function(to, duration) {\r\n        return _fx.default.animate(this._$viewsWrapper, {\r\n            type: \"slide\",\r\n            from: {\r\n                left: this._$viewsWrapper.position().left\r\n            },\r\n            to: {\r\n                left: to\r\n            },\r\n            duration: duration\r\n        })\r\n    },\r\n    _getDate: function(value) {\r\n        var result = _date.default.createDate(value);\r\n        if (isIE11 && (0, _type.isDate)(value)) {\r\n            result.setMilliseconds(0)\r\n        }\r\n        return result\r\n    },\r\n    _toTodayView: function() {\r\n        var today = new Date;\r\n        if (this._isMaxZoomLevel()) {\r\n            this._dateOption(\"value\", today);\r\n            return\r\n        }\r\n        this._preventViewChangeAnimation = true;\r\n        this.option(\"zoomLevel\", this.option(\"maxZoomLevel\"));\r\n        this._dateOption(\"value\", today);\r\n        this._animateShowView();\r\n        this._preventViewChangeAnimation = false\r\n    },\r\n    _wrapperAnimationEndHandler: function(offset, newDate) {\r\n        this._rearrangeViews(offset);\r\n        this._translateViews();\r\n        this._resetLocation();\r\n        this._renderNavigator();\r\n        this._setViewContoured(newDate);\r\n        this._updateAriaId(newDate)\r\n    },\r\n    _rearrangeViews: function(offset) {\r\n        if (0 === offset) {\r\n            return\r\n        }\r\n        var viewOffset;\r\n        var viewToCreateKey;\r\n        var viewToRemoveKey;\r\n        if (offset < 0) {\r\n            viewOffset = 1;\r\n            viewToCreateKey = \"_beforeView\";\r\n            viewToRemoveKey = \"_afterView\"\r\n        } else {\r\n            viewOffset = -1;\r\n            viewToCreateKey = \"_afterView\";\r\n            viewToRemoveKey = \"_beforeView\"\r\n        }\r\n        if (!this[viewToCreateKey]) {\r\n            return\r\n        }\r\n        var destinationDate = this[viewToCreateKey].option(\"date\");\r\n        if (this[viewToRemoveKey]) {\r\n            this[viewToRemoveKey].$element().remove()\r\n        }\r\n        if (offset === viewOffset) {\r\n            this[viewToRemoveKey] = this._view\r\n        } else {\r\n            this[viewToRemoveKey] = this._renderSpecificView(this._getDateByOffset(viewOffset, destinationDate));\r\n            this._view.$element().remove()\r\n        }\r\n        this._view = this[viewToCreateKey];\r\n        var dateByOffset = this._getDateByOffset(-viewOffset, destinationDate);\r\n        this[viewToCreateKey] = this._isViewAvailable(dateByOffset) ? this._renderSpecificView(dateByOffset) : null\r\n    },\r\n    _resetLocation: function() {\r\n        (0, _translator.move)(this._$viewsWrapper, {\r\n            left: 0,\r\n            top: 0\r\n        })\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        this._clearViewWidthCache();\r\n        delete this._$viewsWrapper;\r\n        delete this._navigator;\r\n        delete this._$footer\r\n    },\r\n    _clearViewWidthCache: function() {\r\n        delete this._viewWidthValue\r\n    },\r\n    _disposeViews: function() {\r\n        this._view.$element().remove();\r\n        this._beforeView && this._beforeView.$element().remove();\r\n        this._afterView && this._afterView.$element().remove();\r\n        delete this._view;\r\n        delete this._beforeView;\r\n        delete this._afterView\r\n    },\r\n    _dispose: function() {\r\n        clearTimeout(this._waitRenderViewTimeout);\r\n        this.callBase()\r\n    },\r\n    _refreshViews: function() {\r\n        this._disposeViews();\r\n        this._renderViews()\r\n    },\r\n    _visibilityChanged: function() {\r\n        this._translateViews()\r\n    },\r\n    _focusInHandler: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._view.option(\"contouredDate\", this.option(\"currentDate\"))\r\n    },\r\n    _focusOutHandler: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._view.option(\"contouredDate\", null)\r\n    },\r\n    _updateViewsValue: function(value) {\r\n        var newValue = value ? new Date(value) : null;\r\n        this._view.option(\"value\", newValue);\r\n        this._beforeView && this._beforeView.option(\"value\", newValue);\r\n        this._afterView && this._afterView.option(\"value\", newValue)\r\n    },\r\n    _updateAriaSelected: function(value, previousValue) {\r\n        value = value || this._dateOption(\"value\");\r\n        var $prevSelectedCell = this._view._getCellByDate(previousValue);\r\n        var $selectedCell = this._view._getCellByDate(value);\r\n        this.setAria(\"selected\", void 0, $prevSelectedCell);\r\n        this.setAria(\"selected\", true, $selectedCell);\r\n        if (value && this.option(\"currentDate\").getTime() === value.getTime()) {\r\n            this._updateAriaId(value)\r\n        }\r\n    },\r\n    _updateAriaId: function(value) {\r\n        value = value || this.option(\"currentDate\");\r\n        var ariaId = \"dx-\" + new _guid.default;\r\n        var $newCell = this._view._getCellByDate(value);\r\n        this.setAria(\"id\", ariaId, $newCell);\r\n        this.setAria(\"activedescendant\", ariaId);\r\n        this._onContouredChanged(ariaId)\r\n    },\r\n    _suppressingNavigation: function(callback, args) {\r\n        this._suppressNavigation = true;\r\n        callback.apply(this, args);\r\n        delete this._suppressNavigation\r\n    },\r\n    _optionChanged: function(args) {\r\n        var value = args.value;\r\n        var previousValue = args.previousValue;\r\n        switch (args.name) {\r\n            case \"width\":\r\n                this.callBase(args);\r\n                this._clearViewWidthCache();\r\n                break;\r\n            case \"min\":\r\n            case \"max\":\r\n                this.min = void 0;\r\n                this.max = void 0;\r\n                this._suppressingNavigation(this._updateCurrentDate, [this.option(\"currentDate\")]);\r\n                this._refreshViews();\r\n                this._renderNavigator();\r\n                break;\r\n            case \"firstDayOfWeek\":\r\n                this._refreshViews();\r\n                this._updateButtonsVisibility();\r\n                break;\r\n            case \"currentDate\":\r\n                this.setAria(\"id\", void 0, this._view._getCellByDate(previousValue));\r\n                this._updateCurrentDate(value);\r\n                break;\r\n            case \"zoomLevel\":\r\n                this.$element().removeClass(CALENDAR_VIEW_CLASS + \"-\" + previousValue);\r\n                this._correctZoomLevel();\r\n                this._refreshViews();\r\n                this._renderNavigator();\r\n                this._updateAriaId();\r\n                break;\r\n            case \"minZoomLevel\":\r\n            case \"maxZoomLevel\":\r\n                this._correctZoomLevel();\r\n                this._updateButtonsVisibility();\r\n                break;\r\n            case \"value\":\r\n                value = this._convertToDate(value);\r\n                previousValue = this._convertToDate(previousValue);\r\n                this._updateAriaSelected(value, previousValue);\r\n                this.option(\"currentDate\", (0, _type.isDefined)(value) ? _date.default.createDate(value) : new Date);\r\n                this._updateViewsValue(value);\r\n                this._setSubmitValue(value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"onCellClick\":\r\n                this._view.option(\"onCellClick\", value);\r\n                break;\r\n            case \"onContouredChanged\":\r\n                this._onContouredChanged = this._createActionByOption(\"onContouredChanged\");\r\n                break;\r\n            case \"disabledDates\":\r\n            case \"dateSerializationFormat\":\r\n            case \"cellTemplate\":\r\n            case \"showTodayButton\":\r\n                this._invalidate();\r\n                break;\r\n            case \"hasFocus\":\r\n                break;\r\n            case \"_todayDate\":\r\n                this._refreshViews();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxCalendar\", Calendar);\r\nvar _default = Calendar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/quill_importer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getQuill = getQuill;\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction getQuill() {\r\n    if (!_devextremeQuill.default) {\r\n        throw _ui.default.Error(\"E1041\", \"Quill\")\r\n    }\r\n    return _devextremeQuill.default\r\n}\r\n","/**\r\n * DevExtreme (ui/text_box/ui.text_editor.mask.rule.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.StubMaskRule = exports.MaskRule = exports.EmptyMaskRule = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar EMPTY_CHAR = \" \";\r\nvar BaseMaskRule = _class.default.inherit({\r\n    ctor: function(config) {\r\n        this._value = EMPTY_CHAR;\r\n        (0, _extend.extend)(this, config)\r\n    },\r\n    next: function(rule) {\r\n        if (!arguments.length) {\r\n            return this._next\r\n        }\r\n        this._next = rule\r\n    },\r\n    text: _common.noop,\r\n    value: _common.noop,\r\n    rawValue: _common.noop,\r\n    handle: _common.noop,\r\n    _prepareHandlingArgs: function(args, config) {\r\n        config = config || {};\r\n        var handlingProperty = Object.prototype.hasOwnProperty.call(args, \"value\") ? \"value\" : \"text\";\r\n        args[handlingProperty] = (0, _type.isDefined)(config.str) ? config.str : args[handlingProperty];\r\n        args.start = (0, _type.isDefined)(config.start) ? config.start : args.start;\r\n        args.length = (0, _type.isDefined)(config.length) ? config.length : args.length;\r\n        args.index = args.index + 1;\r\n        return args\r\n    },\r\n    reset: _common.noop,\r\n    clear: _common.noop,\r\n    first: function(index) {\r\n        index = index || 0;\r\n        return this.next().first(index + 1)\r\n    },\r\n    isAccepted: function() {\r\n        return false\r\n    },\r\n    adjustedCaret: function(caret, isForwardDirection, char) {\r\n        return isForwardDirection ? this._adjustedForward(caret, 0, char) : this._adjustedBackward(caret, 0, char)\r\n    },\r\n    _adjustedForward: _common.noop,\r\n    _adjustedBackward: _common.noop,\r\n    isValid: _common.noop\r\n});\r\nvar EmptyMaskRule = BaseMaskRule.inherit({\r\n    next: _common.noop,\r\n    handle: function() {\r\n        return 0\r\n    },\r\n    text: function() {\r\n        return \"\"\r\n    },\r\n    value: function() {\r\n        return \"\"\r\n    },\r\n    first: function() {\r\n        return 0\r\n    },\r\n    rawValue: function() {\r\n        return \"\"\r\n    },\r\n    adjustedCaret: function() {\r\n        return 0\r\n    },\r\n    isValid: function() {\r\n        return true\r\n    }\r\n});\r\nexports.EmptyMaskRule = EmptyMaskRule;\r\nvar MaskRule = BaseMaskRule.inherit({\r\n    text: function() {\r\n        return (this._value !== EMPTY_CHAR ? this._value : this.maskChar) + this.next().text()\r\n    },\r\n    value: function() {\r\n        return this._value + this.next().value()\r\n    },\r\n    rawValue: function() {\r\n        return this._value + this.next().rawValue()\r\n    },\r\n    handle: function(args) {\r\n        var str = Object.prototype.hasOwnProperty.call(args, \"value\") ? args.value : args.text;\r\n        if (!str || !str.length || !args.length) {\r\n            return 0\r\n        }\r\n        if (args.start) {\r\n            return this.next().handle(this._prepareHandlingArgs(args, {\r\n                start: args.start - 1\r\n            }))\r\n        }\r\n        var char = str[0];\r\n        var rest = str.substring(1);\r\n        this._tryAcceptChar(char, args);\r\n        return this._accepted() ? this.next().handle(this._prepareHandlingArgs(args, {\r\n            str: rest,\r\n            length: args.length - 1\r\n        })) + 1 : this.handle(this._prepareHandlingArgs(args, {\r\n            str: rest,\r\n            length: args.length - 1\r\n        }))\r\n    },\r\n    clear: function(args) {\r\n        this._tryAcceptChar(EMPTY_CHAR, args);\r\n        this.next().clear(this._prepareHandlingArgs(args))\r\n    },\r\n    reset: function() {\r\n        this._accepted(false);\r\n        this.next().reset()\r\n    },\r\n    _tryAcceptChar: function(char, args) {\r\n        this._accepted(false);\r\n        if (!this._isAllowed(char, args)) {\r\n            return\r\n        }\r\n        var acceptedChar = char === EMPTY_CHAR ? this.maskChar : char;\r\n        args.fullText = args.fullText.substring(0, args.index) + acceptedChar + args.fullText.substring(args.index + 1);\r\n        this._accepted(true);\r\n        this._value = char\r\n    },\r\n    _accepted: function(value) {\r\n        if (!arguments.length) {\r\n            return !!this._isAccepted\r\n        }\r\n        this._isAccepted = !!value\r\n    },\r\n    first: function(index) {\r\n        return this._value === EMPTY_CHAR ? index || 0 : this.callBase(index)\r\n    },\r\n    _isAllowed: function(char, args) {\r\n        if (char === EMPTY_CHAR) {\r\n            return true\r\n        }\r\n        return this._isValid(char, args)\r\n    },\r\n    _isValid: function(char, args) {\r\n        var allowedChars = this.allowedChars;\r\n        if (allowedChars instanceof RegExp) {\r\n            return allowedChars.test(char)\r\n        }\r\n        if ((0, _type.isFunction)(allowedChars)) {\r\n            return allowedChars(char, args.index, args.fullText)\r\n        }\r\n        if (Array.isArray(allowedChars)) {\r\n            return (0, _array.inArray)(char, allowedChars) > -1\r\n        }\r\n        return allowedChars === char\r\n    },\r\n    isAccepted: function(caret) {\r\n        return 0 === caret ? this._accepted() : this.next().isAccepted(caret - 1)\r\n    },\r\n    _adjustedForward: function(caret, index, char) {\r\n        if (index >= caret) {\r\n            return index\r\n        }\r\n        return this.next()._adjustedForward(caret, index + 1, char) || index + 1\r\n    },\r\n    _adjustedBackward: function(caret, index) {\r\n        if (index >= caret - 1) {\r\n            return caret\r\n        }\r\n        return this.next()._adjustedBackward(caret, index + 1) || index + 1\r\n    },\r\n    isValid: function(args) {\r\n        return this._isValid(this._value, args) && this.next().isValid(this._prepareHandlingArgs(args))\r\n    }\r\n});\r\nexports.MaskRule = MaskRule;\r\nvar StubMaskRule = MaskRule.inherit({\r\n    value: function() {\r\n        return this.next().value()\r\n    },\r\n    handle: function(args) {\r\n        var hasValueProperty = Object.prototype.hasOwnProperty.call(args, \"value\");\r\n        var str = hasValueProperty ? args.value : args.text;\r\n        if (!str.length || !args.length) {\r\n            return 0\r\n        }\r\n        if (args.start || hasValueProperty) {\r\n            return this.next().handle(this._prepareHandlingArgs(args, {\r\n                start: args.start && args.start - 1\r\n            }))\r\n        }\r\n        var char = str[0];\r\n        var rest = str.substring(1);\r\n        this._tryAcceptChar(char);\r\n        var nextArgs = this._isAllowed(char) ? this._prepareHandlingArgs(args, {\r\n            str: rest,\r\n            length: args.length - 1\r\n        }) : args;\r\n        return this.next().handle(nextArgs) + 1\r\n    },\r\n    clear: function(args) {\r\n        this._accepted(false);\r\n        this.next().clear(this._prepareHandlingArgs(args))\r\n    },\r\n    _tryAcceptChar: function(char) {\r\n        this._accepted(this._isValid(char))\r\n    },\r\n    _isValid: function(char) {\r\n        return char === this.maskChar\r\n    },\r\n    first: function(index) {\r\n        index = index || 0;\r\n        return this.next().first(index + 1)\r\n    },\r\n    _adjustedForward: function(caret, index, char) {\r\n        if (index >= caret && char === this.maskChar) {\r\n            return index\r\n        }\r\n        if (caret === index + 1 && this._accepted()) {\r\n            return caret\r\n        }\r\n        return this.next()._adjustedForward(caret, index + 1, char)\r\n    },\r\n    _adjustedBackward: function(caret, index) {\r\n        if (index >= caret - 1) {\r\n            return 0\r\n        }\r\n        return this.next()._adjustedBackward(caret, index + 1)\r\n    },\r\n    isValid: function(args) {\r\n        return this.next().isValid(this._prepareHandlingArgs(args))\r\n    }\r\n});\r\nexports.StubMaskRule = StubMaskRule;\r\n","/**\r\n * DevExtreme (ui/radio_group/radio_group.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar inkRipple = _interopRequireWildcard(require(\"../widget/utils.ink_ripple\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit\"));\r\nvar _ui = _interopRequireDefault(require(\"../editor/ui.data_expression\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar RADIO_BUTTON_CHECKED_CLASS = \"dx-radiobutton-checked\";\r\nvar RADIO_BUTTON_CLASS = \"dx-radiobutton\";\r\nvar RADIO_BUTTON_ICON_CHECKED_CLASS = \"dx-radiobutton-icon-checked\";\r\nvar RADIO_BUTTON_ICON_CLASS = \"dx-radiobutton-icon\";\r\nvar RADIO_BUTTON_ICON_DOT_CLASS = \"dx-radiobutton-icon-dot\";\r\nvar RADIO_GROUP_HORIZONTAL_CLASS = \"dx-radiogroup-horizontal\";\r\nvar RADIO_GROUP_VERTICAL_CLASS = \"dx-radiogroup-vertical\";\r\nvar RADIO_VALUE_CONTAINER_CLASS = \"dx-radio-value-container\";\r\nvar RADIO_GROUP_CLASS = \"dx-radiogroup\";\r\nvar RADIO_FEEDBACK_HIDE_TIMEOUT = 100;\r\nvar RadioCollection = function(_CollectionWidget) {\r\n    _inherits(RadioCollection, _CollectionWidget);\r\n    var _super = _createSuper(RadioCollection);\r\n\r\n    function RadioCollection() {\r\n        _classCallCheck(this, RadioCollection);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(RadioCollection, [{\r\n        key: \"_focusTarget\",\r\n        value: function() {\r\n            return this.$element().parent()\r\n        }\r\n    }, {\r\n        key: \"_nullValueSelectionSupported\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            var defaultOptions = _get(_getPrototypeOf(RadioCollection.prototype), \"_getDefaultOptions\", this).call(this);\r\n            return (0, _extend.extend)(defaultOptions, _ui.default._dataExpressionDefaultOptions(), {\r\n                _itemAttributes: {\r\n                    role: \"radio\"\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            var _this = this;\r\n            _get(_getPrototypeOf(RadioCollection.prototype), \"_initMarkup\", this).call(this);\r\n            (0, _common.deferRender)(function() {\r\n                _this.itemElements().addClass(RADIO_BUTTON_CLASS)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_keyboardEventBindingTarget\",\r\n        value: function() {\r\n            return this._focusTarget()\r\n        }\r\n    }, {\r\n        key: \"_postprocessRenderItem\",\r\n        value: function(args) {\r\n            var html = args.itemData.html,\r\n                itemElement = args.itemElement;\r\n            if (!html) {\r\n                var $radio = (0, _renderer.default)(\"<div>\").addClass(RADIO_BUTTON_ICON_CLASS);\r\n                (0, _renderer.default)(\"<div>\").addClass(RADIO_BUTTON_ICON_DOT_CLASS).appendTo($radio);\r\n                var $radioContainer = (0, _renderer.default)(\"<div>\").append($radio).addClass(RADIO_VALUE_CONTAINER_CLASS);\r\n                (0, _renderer.default)(itemElement).prepend($radioContainer)\r\n            }\r\n            _get(_getPrototypeOf(RadioCollection.prototype), \"_postprocessRenderItem\", this).call(this, args)\r\n        }\r\n    }, {\r\n        key: \"_processSelectableItem\",\r\n        value: function($itemElement, isSelected) {\r\n            _get(_getPrototypeOf(RadioCollection.prototype), \"_processSelectableItem\", this).call(this, $itemElement, isSelected);\r\n            $itemElement.toggleClass(RADIO_BUTTON_CHECKED_CLASS, isSelected).find(\".\".concat(RADIO_BUTTON_ICON_CLASS)).first().toggleClass(RADIO_BUTTON_ICON_CHECKED_CLASS, isSelected);\r\n            this.setAria(\"checked\", isSelected, $itemElement)\r\n        }\r\n    }, {\r\n        key: \"_refreshContent\",\r\n        value: function() {\r\n            this._prepareContent();\r\n            this._renderContent()\r\n        }\r\n    }, {\r\n        key: \"_supportedKeys\",\r\n        value: function() {\r\n            var parent = _get(_getPrototypeOf(RadioCollection.prototype), \"_supportedKeys\", this).call(this);\r\n            return (0, _extend.extend)({}, parent, {\r\n                enter: function(e) {\r\n                    e.preventDefault();\r\n                    return parent.enter.apply(this, arguments)\r\n                },\r\n                space: function(e) {\r\n                    e.preventDefault();\r\n                    return parent.space.apply(this, arguments)\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_itemElements\",\r\n        value: function() {\r\n            return this._itemContainer().children(this._itemSelector())\r\n        }\r\n    }]);\r\n    return RadioCollection\r\n}(_uiCollection_widget.default);\r\nvar RadioGroup = function(_Editor) {\r\n    _inherits(RadioGroup, _Editor);\r\n    var _super2 = _createSuper(RadioGroup);\r\n\r\n    function RadioGroup() {\r\n        _classCallCheck(this, RadioGroup);\r\n        return _super2.apply(this, arguments)\r\n    }\r\n    _createClass(RadioGroup, [{\r\n        key: \"_clean\",\r\n        value: function() {\r\n            delete this._inkRipple;\r\n            _get(_getPrototypeOf(RadioGroup.prototype), \"_clean\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_dataSourceOptions\",\r\n        value: function() {\r\n            return {\r\n                paginate: false\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_defaultOptionsRules\",\r\n        value: function() {\r\n            var defaultOptionsRules = _get(_getPrototypeOf(RadioGroup.prototype), \"_defaultOptionsRules\", this).call(this);\r\n            return defaultOptionsRules.concat([{\r\n                device: {\r\n                    tablet: true\r\n                },\r\n                options: {\r\n                    layout: \"horizontal\"\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n                },\r\n                options: {\r\n                    focusStateEnabled: true\r\n                }\r\n            }])\r\n        }\r\n    }, {\r\n        key: \"_fireContentReadyAction\",\r\n        value: function(force) {\r\n            force && _get(_getPrototypeOf(RadioGroup.prototype), \"_fireContentReadyAction\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_focusTarget\",\r\n        value: function() {\r\n            return this.$element()\r\n        }\r\n    }, {\r\n        key: \"_getAriaTarget\",\r\n        value: function() {\r\n            return this.$element()\r\n        }\r\n    }, {\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            var defaultOptions = _get(_getPrototypeOf(RadioGroup.prototype), \"_getDefaultOptions\", this).call(this);\r\n            return (0, _extend.extend)(defaultOptions, (0, _extend.extend)(_ui.default._dataExpressionDefaultOptions(), {\r\n                hoverStateEnabled: true,\r\n                activeStateEnabled: true,\r\n                layout: \"vertical\",\r\n                useInkRipple: false\r\n            }))\r\n        }\r\n    }, {\r\n        key: \"_getItemValue\",\r\n        value: function(item) {\r\n            return this._valueGetter ? this._valueGetter(item) : item.text\r\n        }\r\n    }, {\r\n        key: \"_getSubmitElement\",\r\n        value: function() {\r\n            return this._$submitElement\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(RadioGroup.prototype), \"_init\", this).call(this);\r\n            this._activeStateUnit = \".\".concat(RADIO_BUTTON_CLASS);\r\n            this._feedbackHideTimeout = RADIO_FEEDBACK_HIDE_TIMEOUT;\r\n            this._initDataExpressions()\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            this.$element().addClass(RADIO_GROUP_CLASS);\r\n            this._renderSubmitElement();\r\n            this.setAria(\"role\", \"radiogroup\");\r\n            this._renderRadios();\r\n            this.option(\"useInkRipple\") && this._renderInkRipple();\r\n            this._renderLayout();\r\n            _get(_getPrototypeOf(RadioGroup.prototype), \"_initMarkup\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_itemClickHandler\",\r\n        value: function(_ref) {\r\n            var itemElement = _ref.itemElement,\r\n                event = _ref.event,\r\n                itemData = _ref.itemData;\r\n            if (this.itemElements().is(itemElement)) {\r\n                var newValue = this._getItemValue(itemData);\r\n                if (newValue !== this.option(\"value\")) {\r\n                    this._saveValueChangeEvent(event);\r\n                    this.option(\"value\", newValue)\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_setSelection\",\r\n        value: function(currentValue) {\r\n            this._setCollectionWidgetOption(\"selectedItemKeys\", [this._unwrappedValue(currentValue)])\r\n        }\r\n    }, {\r\n        key: \"_optionChanged\",\r\n        value: function(args) {\r\n            var name = args.name,\r\n                value = args.value;\r\n            this._dataExpressionOptionChanged(args);\r\n            switch (name) {\r\n                case \"useInkRipple\":\r\n                case \"dataSource\":\r\n                    this._invalidate();\r\n                    break;\r\n                case \"focusStateEnabled\":\r\n                case \"accessKey\":\r\n                case \"tabIndex\":\r\n                    this._setCollectionWidgetOption(name, value);\r\n                    break;\r\n                case \"disabled\":\r\n                    _get(_getPrototypeOf(RadioGroup.prototype), \"_optionChanged\", this).call(this, args);\r\n                    this._setCollectionWidgetOption(name, value);\r\n                    break;\r\n                case \"valueExpr\":\r\n                    this._setCollectionWidgetOption(\"keyExpr\", this._getCollectionKeyExpr());\r\n                    break;\r\n                case \"value\":\r\n                    this._setSelection(value);\r\n                    this._setSubmitValue(value);\r\n                    _get(_getPrototypeOf(RadioGroup.prototype), \"_optionChanged\", this).call(this, args);\r\n                    break;\r\n                case \"items\":\r\n                    this._setSelection(this.option(\"value\"));\r\n                    break;\r\n                case \"itemTemplate\":\r\n                case \"displayExpr\":\r\n                    break;\r\n                case \"layout\":\r\n                    this._renderLayout();\r\n                    this._updateItemsSize();\r\n                    break;\r\n                default:\r\n                    _get(_getPrototypeOf(RadioGroup.prototype), \"_optionChanged\", this).call(this, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_render\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(RadioGroup.prototype), \"_render\", this).call(this);\r\n            this._updateItemsSize()\r\n        }\r\n    }, {\r\n        key: \"_renderInkRipple\",\r\n        value: function() {\r\n            this._inkRipple = inkRipple.render({\r\n                waveSizeCoefficient: 3.3,\r\n                useHoldAnimation: false,\r\n                isCentered: true\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_renderLayout\",\r\n        value: function() {\r\n            var layout = this.option(\"layout\");\r\n            var $element = this.$element();\r\n            $element.toggleClass(RADIO_GROUP_VERTICAL_CLASS, \"vertical\" === layout);\r\n            $element.toggleClass(RADIO_GROUP_HORIZONTAL_CLASS, \"horizontal\" === layout)\r\n        }\r\n    }, {\r\n        key: \"_renderRadios\",\r\n        value: function() {\r\n            var _this2 = this;\r\n            this._areRadiosCreated = new _deferred.Deferred;\r\n            var $radios = (0, _renderer.default)(\"<div>\").appendTo(this.$element());\r\n            var _this$option = this.option(),\r\n                value = _this$option.value,\r\n                displayExpr = _this$option.displayExpr,\r\n                accessKey = _this$option.accessKey,\r\n                focusStateEnabled = _this$option.focusStateEnabled,\r\n                itemTemplate = _this$option.itemTemplate,\r\n                tabIndex = _this$option.tabIndex,\r\n                valueExpr = _this$option.valueExpr;\r\n            var isNullSelectable = \"this\" !== valueExpr;\r\n            this._createComponent($radios, RadioCollection, {\r\n                onInitialized: function(_ref2) {\r\n                    var component = _ref2.component;\r\n                    _this2._radios = component\r\n                },\r\n                onContentReady: function(e) {\r\n                    _this2._fireContentReadyAction(true)\r\n                },\r\n                onItemClick: this._itemClickHandler.bind(this),\r\n                displayExpr: displayExpr,\r\n                accessKey: accessKey,\r\n                dataSource: this._dataSource,\r\n                focusStateEnabled: focusStateEnabled,\r\n                itemTemplate: itemTemplate,\r\n                keyExpr: this._getCollectionKeyExpr(),\r\n                noDataText: \"\",\r\n                scrollingEnabled: false,\r\n                selectionByClick: false,\r\n                selectionMode: \"single\",\r\n                selectedItemKeys: isNullSelectable || (0, _type.isDefined)(value) ? [value] : [],\r\n                tabIndex: tabIndex\r\n            });\r\n            this._areRadiosCreated.resolve()\r\n        }\r\n    }, {\r\n        key: \"_renderSubmitElement\",\r\n        value: function() {\r\n            this._$submitElement = (0, _renderer.default)(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n            this._setSubmitValue()\r\n        }\r\n    }, {\r\n        key: \"_setOptionsByReference\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(RadioGroup.prototype), \"_setOptionsByReference\", this).call(this);\r\n            (0, _extend.extend)(this._optionsByReference, {\r\n                value: true\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_setSubmitValue\",\r\n        value: function(value) {\r\n            value = value || this.option(\"value\");\r\n            var submitValue = \"this\" === this.option(\"valueExpr\") ? this._displayGetter(value) : value;\r\n            this._$submitElement.val(submitValue)\r\n        }\r\n    }, {\r\n        key: \"_setCollectionWidgetOption\",\r\n        value: function() {\r\n            this._areRadiosCreated.done(this._setWidgetOption.bind(this, \"_radios\", arguments))\r\n        }\r\n    }, {\r\n        key: \"_toggleActiveState\",\r\n        value: function($element, value, e) {\r\n            _get(_getPrototypeOf(RadioGroup.prototype), \"_toggleActiveState\", this).call(this, $element, value, e);\r\n            if (this._inkRipple) {\r\n                var event = {\r\n                    element: $element.find(\".\".concat(RADIO_BUTTON_ICON_CLASS)),\r\n                    event: e\r\n                };\r\n                value ? this._inkRipple.showWave(event) : this._inkRipple.hideWave(event)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_updateItemsSize\",\r\n        value: function() {\r\n            if (\"horizontal\" === this.option(\"layout\")) {\r\n                this.itemElements().css(\"height\", \"auto\")\r\n            } else {\r\n                var itemsCount = this.option(\"items\").length;\r\n                this.itemElements().css(\"height\", 100 / itemsCount + \"%\")\r\n            }\r\n        }\r\n    }, {\r\n        key: \"focus\",\r\n        value: function() {\r\n            var _this$_radios;\r\n            null === (_this$_radios = this._radios) || void 0 === _this$_radios ? void 0 : _this$_radios.focus()\r\n        }\r\n    }, {\r\n        key: \"itemElements\",\r\n        value: function() {\r\n            var _this$_radios2;\r\n            return null === (_this$_radios2 = this._radios) || void 0 === _this$_radios2 ? void 0 : _this$_radios2.itemElements()\r\n        }\r\n    }]);\r\n    return RadioGroup\r\n}(_editor.default);\r\nRadioGroup.include(_ui.default);\r\n(0, _component_registrator.default)(\"dxRadioGroup\", RadioGroup);\r\nvar _default = RadioGroup;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/validation_group.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../core/dom_component\"));\r\nvar _validation_summary = _interopRequireDefault(require(\"./validation_summary\"));\r\nvar _validation_engine = _interopRequireDefault(require(\"./validation_engine\"));\r\nvar _validator = _interopRequireDefault(require(\"./validator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar VALIDATION_ENGINE_CLASS = \"dx-validationgroup\";\r\nvar VALIDATOR_CLASS = \"dx-validator\";\r\nvar VALIDATION_SUMMARY_CLASS = \"dx-validationsummary\";\r\nvar ValidationGroup = function(_DOMComponent) {\r\n    _inherits(ValidationGroup, _DOMComponent);\r\n    var _super = _createSuper(ValidationGroup);\r\n\r\n    function ValidationGroup() {\r\n        _classCallCheck(this, ValidationGroup);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(ValidationGroup, [{\r\n        key: \"_getDefaultOptions\",\r\n        value: function() {\r\n            return _get(_getPrototypeOf(ValidationGroup.prototype), \"_getDefaultOptions\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_init\",\r\n        value: function() {\r\n            _get(_getPrototypeOf(ValidationGroup.prototype), \"_init\", this).call(this);\r\n            _validation_engine.default.addGroup(this)\r\n        }\r\n    }, {\r\n        key: \"_initMarkup\",\r\n        value: function() {\r\n            var $element = this.$element();\r\n            $element.addClass(VALIDATION_ENGINE_CLASS);\r\n            $element.find(\".\".concat(VALIDATOR_CLASS)).each(function(_, validatorContainer) {\r\n                _validator.default.getInstance((0, _renderer.default)(validatorContainer))._initGroupRegistration()\r\n            });\r\n            $element.find(\".\".concat(VALIDATION_SUMMARY_CLASS)).each(function(_, summaryContainer) {\r\n                _validation_summary.default.getInstance((0, _renderer.default)(summaryContainer))._initGroupRegistration()\r\n            });\r\n            _get(_getPrototypeOf(ValidationGroup.prototype), \"_initMarkup\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"validate\",\r\n        value: function() {\r\n            return _validation_engine.default.validateGroup(this)\r\n        }\r\n    }, {\r\n        key: \"reset\",\r\n        value: function() {\r\n            return _validation_engine.default.resetGroup(this)\r\n        }\r\n    }, {\r\n        key: \"_dispose\",\r\n        value: function() {\r\n            _validation_engine.default.removeGroup(this);\r\n            this.$element().removeClass(VALIDATION_ENGINE_CLASS);\r\n            _get(_getPrototypeOf(ValidationGroup.prototype), \"_dispose\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"_useTemplates\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }]);\r\n    return ValidationGroup\r\n}(_dom_component.default);\r\n(0, _component_registrator.default)(\"dxValidationGroup\", ValidationGroup);\r\nvar _default = ValidationGroup;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/calendar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./calendar/ui.calendar\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.header_filter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.header_filter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"headerFilter\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/axes/polar_axes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.linearSpider = exports.linear = exports.circularSpider = exports.circular = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _axes_constants = _interopRequireDefault(require(\"./axes_constants\"));\r\nvar _xy_axes = _interopRequireDefault(require(\"./xy_axes\"));\r\nvar _tick = require(\"./tick\");\r\nvar _base_axis = require(\"./base_axis\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar PI = Math.PI,\r\n    abs = Math.abs,\r\n    atan = Math.atan,\r\n    round = Math.round;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar xyAxesLinear = _xy_axes.default.linear;\r\nvar HALF_PI_ANGLE = 90;\r\n\r\nfunction getPolarQuarter(angle) {\r\n    var quarter;\r\n    angle = (0, _utils.normalizeAngle)(angle);\r\n    if (angle >= 315 && angle <= 360 || angle < 45 && angle >= 0) {\r\n        quarter = 1\r\n    } else {\r\n        if (angle >= 45 && angle < 135) {\r\n            quarter = 2\r\n        } else {\r\n            if (angle >= 135 && angle < 225) {\r\n                quarter = 3\r\n            } else {\r\n                if (angle >= 225 && angle < 315) {\r\n                    quarter = 4\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return quarter\r\n}\r\nvar circularAxes = {\r\n    _calculateValueMargins: function(ticks) {\r\n        var _this$_getViewportRan = this._getViewportRange(),\r\n            minVisible = _this$_getViewportRan.minVisible,\r\n            maxVisible = _this$_getViewportRan.maxVisible;\r\n        if (ticks && ticks.length > 1) {\r\n            minVisible = minVisible < ticks[0].value ? minVisible : ticks[0].value;\r\n            maxVisible = minVisible > ticks[ticks.length - 1].value ? maxVisible : ticks[ticks.length - 1].value\r\n        }\r\n        return {\r\n            minValue: minVisible,\r\n            maxValue: maxVisible\r\n        }\r\n    },\r\n    applyMargins: function() {\r\n        var margins = this._calculateValueMargins(this._majorTicks);\r\n        var br = this._translator.getBusinessRange();\r\n        br.addRange({\r\n            minVisible: margins.minValue,\r\n            maxVisible: margins.maxValue,\r\n            interval: this._calculateRangeInterval(br.interval)\r\n        });\r\n        this._translator.updateBusinessRange(br)\r\n    },\r\n    _getTranslatorOptions: function() {\r\n        return {\r\n            isHorizontal: true,\r\n            conversionValue: true,\r\n            addSpiderCategory: this._getSpiderCategoryOption(),\r\n            stick: this._getStick()\r\n        }\r\n    },\r\n    getCenter: function() {\r\n        return this._center\r\n    },\r\n    getRadius: function() {\r\n        return this._radius\r\n    },\r\n    getAngles: function() {\r\n        var options = this._options;\r\n        return [options.startAngle, options.endAngle]\r\n    },\r\n    _updateRadius: function(canvas) {\r\n        var rad = _min(canvas.width - canvas.left - canvas.right, canvas.height - canvas.top - canvas.bottom) / 2;\r\n        this._radius = rad < 0 ? 0 : rad\r\n    },\r\n    _updateCenter: function(canvas) {\r\n        this._center = {\r\n            x: canvas.left + (canvas.width - canvas.right - canvas.left) / 2,\r\n            y: canvas.top + (canvas.height - canvas.top - canvas.bottom) / 2\r\n        }\r\n    },\r\n    _processCanvas: function(canvas) {\r\n        this._updateRadius(canvas);\r\n        this._updateCenter(canvas);\r\n        return {\r\n            left: 0,\r\n            right: 0,\r\n            width: this._getScreenDelta()\r\n        }\r\n    },\r\n    _createAxisElement: function() {\r\n        return this._renderer.circle()\r\n    },\r\n    _updateAxisElementPosition: function() {\r\n        var center = this.getCenter();\r\n        this._axisElement.attr({\r\n            cx: center.x,\r\n            cy: center.y,\r\n            r: this.getRadius()\r\n        })\r\n    },\r\n    _boundaryTicksVisibility: {\r\n        min: true\r\n    },\r\n    _getSpiderCategoryOption: function() {\r\n        return this._options.firstPointOnStartAngle\r\n    },\r\n    _validateOptions: function(options) {\r\n        var that = this;\r\n        var originValue = options.originValue;\r\n        var wholeRange = options.wholeRange = {};\r\n        var period = options.period;\r\n        if ((0, _type.isDefined)(originValue)) {\r\n            originValue = that.validateUnit(originValue)\r\n        }\r\n        if (period > 0 && options.argumentType === _axes_constants.default.numeric) {\r\n            originValue = originValue || 0;\r\n            wholeRange.endValue = originValue + period;\r\n            that._viewport = (0, _utils.getVizRangeObject)([originValue, wholeRange.endValue])\r\n        }\r\n        if ((0, _type.isDefined)(originValue)) {\r\n            wholeRange.startValue = originValue\r\n        }\r\n    },\r\n    getMargins: function() {\r\n        var tickOptions = this._options.tick;\r\n        var tickOuterLength = _max(tickOptions.visible ? tickOptions.length / 2 + tickOptions.shift : 0, 0);\r\n        var radius = this.getRadius();\r\n        var _this$_center = this._center,\r\n            x = _this$_center.x,\r\n            y = _this$_center.y;\r\n        var labelBoxes = this._majorTicks.map(function(t) {\r\n            return t.label && t.label.getBBox()\r\n        }).filter(function(b) {\r\n            return b\r\n        });\r\n        var canvas = (0, _extend.extend)({}, this._canvas, {\r\n            left: x - radius,\r\n            top: y - radius,\r\n            right: this._canvas.width - (x + radius),\r\n            bottom: this._canvas.height - (y + radius)\r\n        });\r\n        var margins = (0, _base_axis.calculateCanvasMargins)(labelBoxes, canvas);\r\n        Object.keys(margins).forEach(function(k) {\r\n            return margins[k] = margins[k] < tickOuterLength ? tickOuterLength : margins[k]\r\n        });\r\n        return margins\r\n    },\r\n    updateSize: function() {\r\n        var that = this;\r\n        _base_axis.Axis.prototype.updateSize.apply(that, arguments);\r\n        (0, _base_axis.measureLabels)(that._majorTicks);\r\n        that._adjustLabelsCoord(0, 0, true);\r\n        this._checkBoundedLabelsOverlapping(this._majorTicks, this._majorTicks.map(function(t) {\r\n            return t.labelBBox\r\n        }))\r\n    },\r\n    _setVisualRange: _common.noop,\r\n    applyVisualRangeSetter: _common.noop,\r\n    _getStick: function() {\r\n        return this._options.firstPointOnStartAngle || this._options.type !== _axes_constants.default.discrete\r\n    },\r\n    _getTranslatedCoord: function(value, offset) {\r\n        return this._translator.translate(value, offset) - HALF_PI_ANGLE\r\n    },\r\n    _getCanvasStartEnd: function() {\r\n        return {\r\n            start: 0 - HALF_PI_ANGLE,\r\n            end: 360 - HALF_PI_ANGLE\r\n        }\r\n    },\r\n    _getStripGraphicAttributes: function(fromAngle, toAngle) {\r\n        var center = this.getCenter();\r\n        var angle = this.getAngles()[0];\r\n        var r = this.getRadius();\r\n        return {\r\n            x: center.x,\r\n            y: center.y,\r\n            innerRadius: 0,\r\n            outerRadius: r,\r\n            startAngle: -toAngle - angle,\r\n            endAngle: -fromAngle - angle\r\n        }\r\n    },\r\n    _createStrip: function(coords) {\r\n        return this._renderer.arc(coords.x, coords.y, coords.innerRadius, coords.outerRadius, coords.startAngle, coords.endAngle)\r\n    },\r\n    _getStripLabelCoords: function(from, to) {\r\n        var that = this;\r\n        var coords = that._getStripGraphicAttributes(from, to);\r\n        var angle = coords.startAngle + (coords.endAngle - coords.startAngle) / 2;\r\n        var cosSin = (0, _utils.getCosAndSin)(angle);\r\n        var halfRad = that.getRadius() / 2;\r\n        var center = that.getCenter();\r\n        var x = round(center.x + halfRad * cosSin.cos);\r\n        var y = round(center.y - halfRad * cosSin.sin);\r\n        return {\r\n            x: x,\r\n            y: y,\r\n            align: _axes_constants.default.center\r\n        }\r\n    },\r\n    _getConstantLineGraphicAttributes: function(value) {\r\n        var center = this.getCenter();\r\n        var r = this.getRadius();\r\n        return {\r\n            points: [center.x, center.y, center.x + r, center.y]\r\n        }\r\n    },\r\n    _createConstantLine: function(value, attr) {\r\n        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)\r\n    },\r\n    _rotateConstantLine: function(line, value) {\r\n        var _this$getCenter = this.getCenter(),\r\n            x = _this$getCenter.x,\r\n            y = _this$getCenter.y;\r\n        line.rotate(value + this.getAngles()[0], x, y)\r\n    },\r\n    _getConstantLineLabelsCoords: function(value) {\r\n        var that = this;\r\n        var cosSin = (0, _utils.getCosAndSin)(-value - that.getAngles()[0]);\r\n        var halfRad = that.getRadius() / 2;\r\n        var center = that.getCenter();\r\n        var x = round(center.x + halfRad * cosSin.cos);\r\n        var y = round(center.y - halfRad * cosSin.sin);\r\n        return {\r\n            x: x,\r\n            y: y\r\n        }\r\n    },\r\n    _checkAlignmentConstantLineLabels: _common.noop,\r\n    _adjustDivisionFactor: function(val) {\r\n        return 180 * val / (this.getRadius() * PI)\r\n    },\r\n    _getScreenDelta: function() {\r\n        var angles = this.getAngles();\r\n        return abs(angles[0] - angles[1])\r\n    },\r\n    _getTickMarkPoints: function(coords, length, _ref) {\r\n        var _ref$shift = _ref.shift,\r\n            shift = void 0 === _ref$shift ? 0 : _ref$shift;\r\n        var center = this.getCenter();\r\n        var corrections = {\r\n            inside: -1,\r\n            center: -.5,\r\n            outside: 0\r\n        };\r\n        var radiusWithTicks = this.getRadius() + length * corrections[this._options.tickOrientation || \"center\"];\r\n        return [center.x + radiusWithTicks + shift, center.y, center.x + radiusWithTicks + length + shift, center.y]\r\n    },\r\n    _getLabelAdjustedCoord: function(tick, _offset, _maxWidth, checkCanvas) {\r\n        var that = this;\r\n        var labelCoords = tick.labelCoords;\r\n        var labelY = labelCoords.y;\r\n        var labelAngle = labelCoords.angle;\r\n        var cosSin = (0, _utils.getCosAndSin)(labelAngle);\r\n        var cos = cosSin.cos;\r\n        var sin = cosSin.sin;\r\n        var box = tick.labelBBox;\r\n        var halfWidth = box.width / 2;\r\n        var halfHeight = box.height / 2;\r\n        var indentFromAxis = that._options.label.indentFromAxis || 0;\r\n        var x = labelCoords.x + indentFromAxis * cos;\r\n        var y = labelY + (labelY - box.y - halfHeight) + indentFromAxis * sin;\r\n        var shiftX = 0;\r\n        var shiftY = 0;\r\n        switch (getPolarQuarter(labelAngle)) {\r\n            case 1:\r\n                shiftX = halfWidth;\r\n                shiftY = halfHeight * sin;\r\n                break;\r\n            case 2:\r\n                shiftX = halfWidth * cos;\r\n                shiftY = halfHeight;\r\n                break;\r\n            case 3:\r\n                shiftX = -halfWidth;\r\n                shiftY = halfHeight * sin;\r\n                break;\r\n            case 4:\r\n                shiftX = halfWidth * cos;\r\n                shiftY = -halfHeight\r\n        }\r\n        if (checkCanvas) {\r\n            var canvas = that._canvas;\r\n            var boxShiftX = x - labelCoords.x + shiftX;\r\n            var boxShiftY = y - labelCoords.y + shiftY;\r\n            if (box.x + boxShiftX < canvas.originalLeft) {\r\n                shiftX -= box.x + boxShiftX - canvas.originalLeft\r\n            }\r\n            if (box.x + box.width + boxShiftX > canvas.width - canvas.originalRight) {\r\n                shiftX -= box.x + box.width + boxShiftX - (canvas.width - canvas.originalRight)\r\n            }\r\n            if (box.y + boxShiftY < canvas.originalTop) {\r\n                shiftY -= box.y + boxShiftY - canvas.originalTop\r\n            }\r\n            if (box.y + box.height + boxShiftY > canvas.height - canvas.originalBottom) {\r\n                shiftY -= box.y + box.height + boxShiftY - (canvas.height - canvas.originalBottom)\r\n            }\r\n        }\r\n        return {\r\n            x: x + shiftX,\r\n            y: y + shiftY\r\n        }\r\n    },\r\n    _getGridLineDrawer: function() {\r\n        var that = this;\r\n        return function(tick, gridStyle) {\r\n            var center = that.getCenter();\r\n            return that._createPathElement(that._getGridPoints().points, gridStyle).rotate(tick.coords.angle, center.x, center.y)\r\n        }\r\n    },\r\n    _getGridPoints: function() {\r\n        var r = this.getRadius();\r\n        var center = this.getCenter();\r\n        return {\r\n            points: [center.x, center.y, center.x + r, center.y]\r\n        }\r\n    },\r\n    _getTranslatedValue: function(value, offset) {\r\n        var startAngle = this.getAngles()[0];\r\n        var angle = this._translator.translate(value, -offset);\r\n        var coords = (0, _utils.convertPolarToXY)(this.getCenter(), startAngle, angle, this.getRadius());\r\n        return {\r\n            x: coords.x,\r\n            y: coords.y,\r\n            angle: this.getTranslatedAngle(angle)\r\n        }\r\n    },\r\n    _getAdjustedStripLabelCoords: function(strip) {\r\n        var box = strip.labelBBox;\r\n        return {\r\n            translateY: strip.label.attr(\"y\") - box.y - box.height / 2\r\n        }\r\n    },\r\n    coordsIn: function(x, y) {\r\n        return (0, _utils.convertXYToPolar)(this.getCenter(), x, y).r > this.getRadius()\r\n    },\r\n    _rotateTick: function(element, coords) {\r\n        var center = this.getCenter();\r\n        element.rotate(coords.angle, center.x, center.y)\r\n    },\r\n    _validateOverlappingMode: function(mode) {\r\n        return _axes_constants.default.validateOverlappingMode(mode)\r\n    },\r\n    _validateDisplayMode: function() {\r\n        return \"standard\"\r\n    },\r\n    _getStep: function(boxes) {\r\n        var that = this;\r\n        var radius = that.getRadius() + (that._options.label.indentFromAxis || 0);\r\n        var maxLabelBox = boxes.reduce(function(prevValue, box) {\r\n            var curValue = prevValue;\r\n            if (prevValue.width < box.width) {\r\n                curValue.width = box.width\r\n            }\r\n            if (prevValue.height < box.height) {\r\n                curValue.height = box.height\r\n            }\r\n            return curValue\r\n        }, {\r\n            width: 0,\r\n            height: 0\r\n        });\r\n        var angle1 = abs(2 * atan(maxLabelBox.height / (2 * radius - maxLabelBox.width)) * 180 / PI);\r\n        var angle2 = abs(2 * atan(maxLabelBox.width / (2 * radius - maxLabelBox.height)) * 180 / PI);\r\n        return _axes_constants.default.getTicksCountInRange(that._majorTicks, \"angle\", _max(angle1, angle2))\r\n    },\r\n    _checkBoundedLabelsOverlapping: function(majorTicks, boxes, mode) {\r\n        var labelOpt = this._options.label;\r\n        mode = mode || this._validateOverlappingMode(labelOpt.overlappingBehavior);\r\n        if (\"hide\" !== mode) {\r\n            return\r\n        }\r\n        var lastVisibleLabelIndex = majorTicks.reduce(function(lastVisibleLabelIndex, tick, index) {\r\n            return tick.label ? index : lastVisibleLabelIndex\r\n        }, null);\r\n        if (!lastVisibleLabelIndex) {\r\n            return\r\n        }\r\n        if (_axes_constants.default.areLabelsOverlap(boxes[0], boxes[lastVisibleLabelIndex], labelOpt.minSpacing, _axes_constants.default.center)) {\r\n            \"first\" === labelOpt.hideFirstOrLast ? majorTicks[0].label.remove() : majorTicks[lastVisibleLabelIndex].label.remove()\r\n        }\r\n    },\r\n    shift: function(margins) {\r\n        this._axisGroup.attr({\r\n            translateX: margins.right,\r\n            translateY: margins.bottom\r\n        })\r\n    },\r\n    getTranslatedAngle: function(angle) {\r\n        var startAngle = this.getAngles()[0];\r\n        return angle + startAngle - HALF_PI_ANGLE\r\n    }\r\n};\r\nvar circular = circularAxes;\r\nexports.circular = circular;\r\nvar circularSpider = (0, _extend.extend)({}, circularAxes, {\r\n    _createAxisElement: function() {\r\n        return this._renderer.path([], \"area\")\r\n    },\r\n    _updateAxisElementPosition: function() {\r\n        this._axisElement.attr({\r\n            points: (0, _utils.map)(this.getSpiderTicks(), function(tick) {\r\n                return {\r\n                    x: tick.coords.x,\r\n                    y: tick.coords.y\r\n                }\r\n            })\r\n        })\r\n    },\r\n    _getStick: function() {\r\n        return true\r\n    },\r\n    _getSpiderCategoryOption: function() {\r\n        return true\r\n    },\r\n    getSpiderTicks: function() {\r\n        var that = this;\r\n        var ticks = that.getFullTicks();\r\n        that._spiderTicks = ticks.map((0, _tick.tick)(that, that.renderer, {}, {}, that._getSkippedCategory(ticks), true));\r\n        that._spiderTicks.forEach(function(tick) {\r\n            tick.initCoords()\r\n        });\r\n        return that._spiderTicks\r\n    },\r\n    _getStripGraphicAttributes: function(fromAngle, toAngle) {\r\n        var center = this.getCenter();\r\n        var spiderTicks = this.getSpiderTicks();\r\n        var firstTick;\r\n        var lastTick;\r\n        var nextTick;\r\n        var tick;\r\n        var points = [];\r\n        var i = 0;\r\n        var len = spiderTicks.length;\r\n        while (i < len) {\r\n            tick = spiderTicks[i].coords;\r\n            if (tick.angle >= fromAngle && tick.angle <= toAngle) {\r\n                if (!firstTick) {\r\n                    firstTick = (spiderTicks[i - 1] || spiderTicks[spiderTicks.length - 1]).coords;\r\n                    points.push((tick.x + firstTick.x) / 2, (tick.y + firstTick.y) / 2)\r\n                }\r\n                points.push(tick.x, tick.y);\r\n                nextTick = (spiderTicks[i + 1] || spiderTicks[0]).coords;\r\n                lastTick = {\r\n                    x: (tick.x + nextTick.x) / 2,\r\n                    y: (tick.y + nextTick.y) / 2\r\n                }\r\n            }\r\n            i++\r\n        }\r\n        points.push(lastTick.x, lastTick.y);\r\n        points.push(center.x, center.y);\r\n        return {\r\n            points: points\r\n        }\r\n    },\r\n    _createStrip: function(_ref2) {\r\n        var points = _ref2.points;\r\n        return this._renderer.path(points, \"area\")\r\n    },\r\n    _getTranslatedCoord: function(value, offset) {\r\n        return this._translator.translate(value, offset) - HALF_PI_ANGLE\r\n    },\r\n    _setTickOffset: function() {\r\n        this._tickOffset = false\r\n    }\r\n});\r\nexports.circularSpider = circularSpider;\r\nvar linear = {\r\n    _resetMargins: function() {\r\n        this._reinitTranslator(this._getViewportRange())\r\n    },\r\n    _getStick: xyAxesLinear._getStick,\r\n    _getSpiderCategoryOption: _common.noop,\r\n    _getTranslatorOptions: function() {\r\n        return {\r\n            isHorizontal: true,\r\n            stick: this._getStick()\r\n        }\r\n    },\r\n    getRadius: circularAxes.getRadius,\r\n    getCenter: circularAxes.getCenter,\r\n    getAngles: circularAxes.getAngles,\r\n    _updateRadius: circularAxes._updateRadius,\r\n    _updateCenter: circularAxes._updateCenter,\r\n    _processCanvas: function(canvas) {\r\n        this._updateRadius(canvas);\r\n        this._updateCenter(canvas);\r\n        return {\r\n            left: 0,\r\n            right: 0,\r\n            startPadding: canvas.startPadding,\r\n            endPadding: canvas.endPadding,\r\n            width: this.getRadius()\r\n        }\r\n    },\r\n    _createAxisElement: xyAxesLinear._createAxisElement,\r\n    _updateAxisElementPosition: function() {\r\n        var centerCoord = this.getCenter();\r\n        this._axisElement.attr({\r\n            points: [centerCoord.x, centerCoord.y, centerCoord.x + this.getRadius(), centerCoord.y]\r\n        }).rotate(this.getAngles()[0] - HALF_PI_ANGLE, centerCoord.x, centerCoord.y)\r\n    },\r\n    _getScreenDelta: function() {\r\n        return this.getRadius()\r\n    },\r\n    _getTickMarkPoints: function(coords, length) {\r\n        return [coords.x - length / 2, coords.y, coords.x + length / 2, coords.y]\r\n    },\r\n    _getLabelAdjustedCoord: function(tick) {\r\n        var that = this;\r\n        var labelCoords = tick.labelCoords;\r\n        var labelY = labelCoords.y;\r\n        var cosSin = (0, _utils.getCosAndSin)(labelCoords.angle);\r\n        var indentFromAxis = that._options.label.indentFromAxis || 0;\r\n        var box = tick.labelBBox;\r\n        var x = labelCoords.x - abs(indentFromAxis * cosSin.sin) + abs(box.width / 2 * cosSin.cos) - box.width / 2;\r\n        var y = labelY + (labelY - box.y) - abs(box.height / 2 * cosSin.sin) + abs(indentFromAxis * cosSin.cos);\r\n        return {\r\n            x: x,\r\n            y: y\r\n        }\r\n    },\r\n    _getGridLineDrawer: function() {\r\n        var that = this;\r\n        return function(tick, gridStyle) {\r\n            var grid = that._getGridPoints(tick.coords);\r\n            return that._renderer.circle(grid.cx, grid.cy, grid.r).attr(gridStyle).sharp()\r\n        }\r\n    },\r\n    _getGridPoints: function(coords) {\r\n        var pos = this.getCenter();\r\n        var radius = (0, _utils.getDistance)(pos.x, pos.y, coords.x, coords.y);\r\n        if (radius > this.getRadius()) {\r\n            return {\r\n                cx: null,\r\n                cy: null,\r\n                r: null\r\n            }\r\n        }\r\n        return {\r\n            cx: pos.x,\r\n            cy: pos.y,\r\n            r: radius\r\n        }\r\n    },\r\n    _getTranslatedValue: function(value, offset) {\r\n        var startAngle = this.getAngles()[0];\r\n        var xy = (0, _utils.convertPolarToXY)(this.getCenter(), startAngle, 0, this._translator.translate(value, offset));\r\n        return {\r\n            x: xy.x,\r\n            y: xy.y,\r\n            angle: startAngle - HALF_PI_ANGLE\r\n        }\r\n    },\r\n    _getTranslatedCoord: function(value, offset) {\r\n        return this._translator.translate(value, offset)\r\n    },\r\n    _getCanvasStartEnd: function() {\r\n        var invert = this.getTranslator().getBusinessRange().invert;\r\n        var coords = [0, this.getRadius()];\r\n        invert && coords.reverse();\r\n        return {\r\n            start: coords[0],\r\n            end: coords[1]\r\n        }\r\n    },\r\n    _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n        var center = this.getCenter();\r\n        return {\r\n            x: center.x,\r\n            y: center.y,\r\n            innerRadius: fromPoint,\r\n            outerRadius: toPoint\r\n        }\r\n    },\r\n    _createStrip: function(attrs) {\r\n        return this._renderer.arc(attrs.x, attrs.y, attrs.innerRadius, attrs.outerRadius, 0, 360)\r\n    },\r\n    _getAdjustedStripLabelCoords: circularAxes._getAdjustedStripLabelCoords,\r\n    _getStripLabelCoords: function(from, to) {\r\n        var that = this;\r\n        var labelPos = from + (to - from) / 2;\r\n        var center = that.getCenter();\r\n        var y = round(center.y - labelPos);\r\n        return {\r\n            x: center.x,\r\n            y: y,\r\n            align: _axes_constants.default.center\r\n        }\r\n    },\r\n    _getConstantLineGraphicAttributes: function(value) {\r\n        var center = this.getCenter();\r\n        return {\r\n            cx: center.x,\r\n            cy: center.y,\r\n            r: value\r\n        }\r\n    },\r\n    _createConstantLine: function(value, attr) {\r\n        var attrs = this._getConstantLineGraphicAttributes(value);\r\n        return this._renderer.circle(attrs.cx, attrs.cy, attrs.r).attr(attr).sharp()\r\n    },\r\n    _getConstantLineLabelsCoords: function(value) {\r\n        var that = this;\r\n        var center = that.getCenter();\r\n        var y = round(center.y - value);\r\n        return {\r\n            x: center.x,\r\n            y: y\r\n        }\r\n    },\r\n    _checkAlignmentConstantLineLabels: _common.noop,\r\n    _rotateTick: function(element, coords, isGridLine) {\r\n        !isGridLine && element.rotate(coords.angle + HALF_PI_ANGLE, coords.x, coords.y)\r\n    },\r\n    _validateOverlappingMode: circularAxes._validateOverlappingMode,\r\n    _validateDisplayMode: circularAxes._validateDisplayMode,\r\n    _getStep: function(boxes) {\r\n        var quarter = getPolarQuarter(this.getAngles()[0]);\r\n        var spacing = this._options.label.minSpacing;\r\n        var func = 2 === quarter || 4 === quarter ? function(box) {\r\n            return box.width + spacing\r\n        } : function(box) {\r\n            return box.height\r\n        };\r\n        var maxLabelLength = boxes.reduce(function(prevValue, box) {\r\n            return _max(prevValue, func(box))\r\n        }, 0);\r\n        return _axes_constants.default.getTicksCountInRange(this._majorTicks, 2 === quarter || 4 === quarter ? \"x\" : \"y\", maxLabelLength)\r\n    }\r\n};\r\nexports.linear = linear;\r\nvar linearSpider = (0, _extend.extend)({}, linear, {\r\n    _createPathElement: function(points, attr) {\r\n        return this._renderer.path(points, \"area\").attr(attr).sharp()\r\n    },\r\n    setSpiderTicks: function(ticks) {\r\n        this._spiderTicks = ticks\r\n    },\r\n    _getGridLineDrawer: function() {\r\n        var that = this;\r\n        return function(tick, gridStyle) {\r\n            return that._createPathElement(that._getGridPoints(tick.coords).points, gridStyle)\r\n        }\r\n    },\r\n    _getGridPoints: function(coords) {\r\n        var pos = this.getCenter();\r\n        var radius = (0, _utils.getDistance)(pos.x, pos.y, coords.x, coords.y);\r\n        return this._getGridPointsByRadius(radius)\r\n    },\r\n    _getGridPointsByRadius: function(radius) {\r\n        var pos = this.getCenter();\r\n        if (radius > this.getRadius()) {\r\n            return {\r\n                points: null\r\n            }\r\n        }\r\n        return {\r\n            points: (0, _utils.map)(this._spiderTicks, function(tick) {\r\n                var cosSin = (0, _utils.getCosAndSin)(tick.coords.angle);\r\n                return {\r\n                    x: round(pos.x + radius * cosSin.cos),\r\n                    y: round(pos.y + radius * cosSin.sin)\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n        var innerPoints = this._getGridPointsByRadius(toPoint).points;\r\n        var outerPoints = this._getGridPointsByRadius(fromPoint).points;\r\n        return {\r\n            points: [outerPoints, innerPoints.reverse()]\r\n        }\r\n    },\r\n    _createStrip: circularSpider._createStrip,\r\n    _getConstantLineGraphicAttributes: function(value) {\r\n        return this._getGridPointsByRadius(value)\r\n    },\r\n    _createConstantLine: function(value, attr) {\r\n        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)\r\n    }\r\n});\r\nexports.linearSpider = linearSpider;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_week.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space_vertical\"));\r\nvar _layout = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/week/date_table/layout.j\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar WEEK_CLASS = \"dx-scheduler-work-space-week\";\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerWorkSpaceWeek = function(_SchedulerWorkSpaceVe) {\r\n    _inherits(SchedulerWorkSpaceWeek, _SchedulerWorkSpaceVe);\r\n    var _super = _createSuper(SchedulerWorkSpaceWeek);\r\n\r\n    function SchedulerWorkSpaceWeek() {\r\n        _classCallCheck(this, SchedulerWorkSpaceWeek);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(SchedulerWorkSpaceWeek, [{\r\n        key: \"_getElementClass\",\r\n        value: function() {\r\n            return WEEK_CLASS\r\n        }\r\n    }, {\r\n        key: \"_getRowCount\",\r\n        value: function() {\r\n            return this._getCellCountInDay()\r\n        }\r\n    }, {\r\n        key: \"_getCellCount\",\r\n        value: function() {\r\n            return 7 * this.option(\"intervalCount\")\r\n        }\r\n    }, {\r\n        key: \"_getDateByIndex\",\r\n        value: function(headerIndex) {\r\n            var resultDate = new Date(this._firstViewDate);\r\n            resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n            return resultDate\r\n        }\r\n    }, {\r\n        key: \"_getStartViewDate\",\r\n        value: function() {\r\n            return _date.default.getFirstWeekDate(this.option(\"startDate\"), this._firstDayOfWeek() || _date2.default.firstDayOfWeekIndex())\r\n        }\r\n    }, {\r\n        key: \"_getIntervalDuration\",\r\n        value: function() {\r\n            return 7 * toMs(\"day\") * this.option(\"intervalCount\")\r\n        }\r\n    }, {\r\n        key: \"getPositionShift\",\r\n        value: function(timeShift, isAllDay) {\r\n            if (!isAllDay && this.invoke(\"isAdaptive\") && 0 === this.invoke(\"getMaxAppointmentCountPerCellByType\")) {\r\n                return {\r\n                    top: 0,\r\n                    left: 0,\r\n                    cellPosition: 0\r\n                }\r\n            }\r\n            return _get(_getPrototypeOf(SchedulerWorkSpaceWeek.prototype), \"getPositionShift\", this).call(this, timeShift, isAllDay)\r\n        }\r\n    }, {\r\n        key: \"_isApplyCompactAppointmentOffset\",\r\n        value: function() {\r\n            if (this.invoke(\"isAdaptive\") && 0 === this.invoke(\"getMaxAppointmentCountPerCellByType\")) {\r\n                return false\r\n            }\r\n            return _get(_getPrototypeOf(SchedulerWorkSpaceWeek.prototype), \"_isApplyCompactAppointmentOffset\", this).call(this)\r\n        }\r\n    }, {\r\n        key: \"renderRDateTable\",\r\n        value: function() {\r\n            this.renderRComponent(this._$dateTable, _layout.default, \"renovatedDateTable\", {\r\n                viewData: this.viewDataProvider.viewData,\r\n                dataCellTemplate: this.option(\"dataCellTemplate\")\r\n            })\r\n        }\r\n    }]);\r\n    return SchedulerWorkSpaceWeek\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceWeek\", SchedulerWorkSpaceWeek);\r\nvar _default = SchedulerWorkSpaceWeek;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (bundles/modules/data.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar DevExpress = require(\"./core\");\r\nmodule.exports = DevExpress.data = DevExpress.data || {};\r\nObject.defineProperty(DevExpress.data, \"errorHandler\", {\r\n    get: function() {\r\n        return require(\"../../data/errors\").errorHandler\r\n    },\r\n    set: function(value) {\r\n        require(\"../../data/errors\").errorHandler = value\r\n    }\r\n});\r\nObject.defineProperty(DevExpress.data, \"_errorHandler\", {\r\n    get: function() {\r\n        return require(\"../../data/errors\")._errorHandler\r\n    },\r\n    set: function(value) {\r\n        require(\"../../data/errors\")._errorHandler = value\r\n    }\r\n});\r\nDevExpress.data.DataSource = require(\"../../data/data_source\");\r\nDevExpress.data.query = require(\"../../data/query\");\r\nDevExpress.data.Store = require(\"../../data/abstract_store\");\r\nDevExpress.data.ArrayStore = require(\"../../data/array_store\");\r\nDevExpress.data.CustomStore = require(\"../../data/custom_store\");\r\nDevExpress.data.LocalStore = require(\"../../data/local_store\");\r\nDevExpress.data.base64_encode = require(\"../../data/utils\").base64_encode;\r\nDevExpress.data.applyChanges = require(\"../../data/apply_changes\");\r\nDevExpress.data.Guid = require(\"../../core/guid\");\r\nDevExpress.data.utils = {};\r\nDevExpress.data.utils.compileGetter = require(\"../../core/utils/data\").compileGetter;\r\nDevExpress.data.utils.compileSetter = require(\"../../core/utils/data\").compileSetter;\r\nDevExpress.EndpointSelector = require(\"../../data/endpoint_selector\");\r\nDevExpress.data.queryImpl = require(\"../../data/query_implementation\").queryImpl;\r\nDevExpress.data.queryAdapters = require(\"../../data/query_adapters\");\r\nvar dataUtils = require(\"../../data/utils\");\r\nDevExpress.data.utils.normalizeBinaryCriterion = dataUtils.normalizeBinaryCriterion;\r\nDevExpress.data.utils.normalizeSortingInfo = dataUtils.normalizeSortingInfo;\r\nDevExpress.data.utils.errorMessageFromXhr = dataUtils.errorMessageFromXhr;\r\nDevExpress.data.utils.aggregators = dataUtils.aggregators;\r\nDevExpress.data.utils.keysEqual = dataUtils.keysEqual;\r\nDevExpress.data.utils.isDisjunctiveOperator = dataUtils.isDisjunctiveOperator;\r\nDevExpress.data.utils.isConjunctiveOperator = dataUtils.isConjunctiveOperator;\r\nDevExpress.data.utils.processRequestResultLock = dataUtils.processRequestResultLock;\r\nDevExpress.data.utils.toComparable = require(\"../../core/utils/data\").toComparable;\r\nDevExpress.data.utils.multiLevelGroup = require(\"../../data/store_helper\").multiLevelGroup;\r\nDevExpress.data.utils.arrangeSortingInfo = require(\"../../data/store_helper\").arrangeSortingInfo;\r\nDevExpress.data.utils.normalizeDataSourceOptions = require(\"../../data/data_source/utils\").normalizeDataSourceOptions;\r\n","/**\r\n * DevExtreme (viz/components/parse_utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.correctValueType = correctValueType;\r\nexports.getParser = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar parsers = {\r\n    string: function(val) {\r\n        return (0, _type.isDefined)(val) ? \"\" + val : val\r\n    },\r\n    numeric: function(val) {\r\n        if (!(0, _type.isDefined)(val)) {\r\n            return val\r\n        }\r\n        var parsedVal = Number(val);\r\n        if (isNaN(parsedVal)) {\r\n            parsedVal = void 0\r\n        }\r\n        return parsedVal\r\n    },\r\n    datetime: function(val) {\r\n        if (!(0, _type.isDefined)(val)) {\r\n            return val\r\n        }\r\n        var parsedVal;\r\n        var numVal = Number(val);\r\n        if (!isNaN(numVal)) {\r\n            parsedVal = new Date(numVal)\r\n        } else {\r\n            parsedVal = _date_serialization.default.deserializeDate(val)\r\n        }\r\n        if (isNaN(Number(parsedVal))) {\r\n            parsedVal = void 0\r\n        }\r\n        return parsedVal\r\n    }\r\n};\r\n\r\nfunction correctValueType(type) {\r\n    return \"numeric\" === type || \"datetime\" === type || \"string\" === type ? type : \"\"\r\n}\r\nvar getParser = function(valueType) {\r\n    return parsers[correctValueType(valueType)] || _common.noop\r\n};\r\nexports.getParser = getParser;\r\n","/**\r\n * DevExtreme (ui/scheduler/appointmentSettingsGenerator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.AppointmentSettingsGeneratorVirtualStrategy = exports.AppointmentSettingsGeneratorBaseStrategy = exports.AppointmentSettingsGenerator = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _utilsTimeZone = _interopRequireDefault(require(\"./utils.timeZone.js\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\n\r\nfunction _slicedToArray(arr, i) {\r\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n    if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n        return\r\n    }\r\n    var _arr = [];\r\n    var _n = true;\r\n    var _d = false;\r\n    var _e = void 0;\r\n    try {\r\n        for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n            _arr.push(_s.value);\r\n            if (i && _arr.length === i) {\r\n                break\r\n            }\r\n        }\r\n    } catch (err) {\r\n        _d = true;\r\n        _e = err\r\n    } finally {\r\n        try {\r\n            if (!_n && null != _i.return) {\r\n                _i.return()\r\n            }\r\n        } finally {\r\n            if (_d) {\r\n                throw _e\r\n            }\r\n        }\r\n    }\r\n    return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return arr\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar AppointmentSettingsGenerator = function() {\r\n    function AppointmentSettingsGenerator(scheduler) {\r\n        _classCallCheck(this, AppointmentSettingsGenerator);\r\n        this.scheduler = scheduler;\r\n        this.settingsStrategy = this.scheduler.isVirtualScrolling() ? new AppointmentSettingsGeneratorVirtualStrategy(this.scheduler) : new AppointmentSettingsGeneratorBaseStrategy(this.scheduler)\r\n    }\r\n    _createClass(AppointmentSettingsGenerator, [{\r\n        key: \"create\",\r\n        value: function(rawAppointment) {\r\n            return this.settingsStrategy.create(rawAppointment)\r\n        }\r\n    }]);\r\n    return AppointmentSettingsGenerator\r\n}();\r\nexports.AppointmentSettingsGenerator = AppointmentSettingsGenerator;\r\nvar AppointmentSettingsGeneratorBaseStrategy = function() {\r\n    function AppointmentSettingsGeneratorBaseStrategy(scheduler) {\r\n        _classCallCheck(this, AppointmentSettingsGeneratorBaseStrategy);\r\n        this.scheduler = scheduler\r\n    }\r\n    _createClass(AppointmentSettingsGeneratorBaseStrategy, [{\r\n        key: \"create\",\r\n        value: function(rawAppointment) {\r\n            var scheduler = this.scheduler;\r\n            var appointment = scheduler.createAppointmentAdapter(rawAppointment);\r\n            var itemResources = scheduler._resourcesManager.getResourcesFromItem(rawAppointment);\r\n            var appointmentList = this._createAppointments(appointment, itemResources);\r\n            if (this._canProcessNotNativeTimezoneDates(appointmentList, appointment)) {\r\n                appointmentList = this._getProcessedNotNativeTimezoneDates(appointmentList, appointment)\r\n            }\r\n            var gridAppointmentList = this._createGridAppointmentList(appointmentList);\r\n            this._cropAppointmentsByStartDayHour(gridAppointmentList, rawAppointment);\r\n            gridAppointmentList = this._getProcessedLongAppointmentsIfRequired(gridAppointmentList, appointment);\r\n            return this._createAppointmentInfos(gridAppointmentList, itemResources, this._isAllDayAppointment(rawAppointment))\r\n        }\r\n    }, {\r\n        key: \"_isAllDayAppointment\",\r\n        value: function(rawAppointment) {\r\n            var scheduler = this.scheduler;\r\n            return scheduler.appointmentTakesAllDay(rawAppointment) && scheduler._workSpace.supportAllDayRow()\r\n        }\r\n    }, {\r\n        key: \"_createAppointments\",\r\n        value: function(appointment, resources) {\r\n            var appointmentList = this._createRecurrenceAppointments(appointment, resources);\r\n            if (0 === appointmentList.length) {\r\n                appointmentList.push({\r\n                    startDate: appointment.startDate,\r\n                    endDate: appointment.endDate\r\n                })\r\n            }\r\n            return appointmentList\r\n        }\r\n    }, {\r\n        key: \"_canProcessNotNativeTimezoneDates\",\r\n        value: function(appointmentList, appointment) {\r\n            var timeZoneName = this.scheduler.option(\"timeZone\");\r\n            var isEqualLocalTimeZone = _utilsTimeZone.default.isEqualLocalTimeZone,\r\n                hasDSTInLocalTimeZone = _utilsTimeZone.default.hasDSTInLocalTimeZone;\r\n            var isRecurrence = appointmentList.length > 1;\r\n            var isTimeZoneSet = !(0, _type.isEmptyObject)(timeZoneName);\r\n            var isAppointmentTimeZoneSet = !(0, _type.isEmptyObject)(appointment.startDateTimeZone);\r\n            if (!isRecurrence) {\r\n                return false\r\n            }\r\n            if (!isTimeZoneSet && hasDSTInLocalTimeZone()) {\r\n                return false\r\n            }\r\n            return isTimeZoneSet && !isAppointmentTimeZoneSet && !isEqualLocalTimeZone(timeZoneName)\r\n        }\r\n    }, {\r\n        key: \"_getProcessedNotNativeDateIfCrossDST\",\r\n        value: function(date, dateRangeOffset) {\r\n            var newDate = new Date(date);\r\n            var newDateMinusOneHour = new Date(newDate);\r\n            newDateMinusOneHour.setHours(newDateMinusOneHour.getHours() - 1);\r\n            var newDateOffset = this.timeZoneCalculator.getOffsets(newDate).common;\r\n            var newDateMinusOneHourOffset = this.timeZoneCalculator.getOffsets(newDateMinusOneHour).common;\r\n            if (newDateOffset !== newDateMinusOneHourOffset) {\r\n                return 0\r\n            }\r\n            return dateRangeOffset\r\n        }\r\n    }, {\r\n        key: \"_getProcessedNotNativeTimezoneDates\",\r\n        value: function(appointmentList, appointment) {\r\n            var _this = this;\r\n            var startDateRange = appointmentList[0].startDate;\r\n            var endDateRange = appointmentList[appointmentList.length - 1].endDate;\r\n            var startDateRangeOffset = this.timeZoneCalculator.getOffsets(startDateRange).common;\r\n            var endDateRangeOffset = this.timeZoneCalculator.getOffsets(endDateRange).common;\r\n            var isChangeOffsetInRange = startDateRangeOffset !== endDateRangeOffset;\r\n            if (isChangeOffsetInRange) {\r\n                return appointmentList.map(function(a) {\r\n                    var diffStartDateOffset = _this.timeZoneCalculator.getOffsets(appointment.startDate).common - _this.timeZoneCalculator.getOffsets(a.startDate).common;\r\n                    var diffEndDateOffset = _this.timeZoneCalculator.getOffsets(appointment.endDate).common - _this.timeZoneCalculator.getOffsets(a.endDate).common;\r\n                    if (diffStartDateOffset < 0) {\r\n                        diffStartDateOffset = _this._getProcessedNotNativeDateIfCrossDST(a.startDate, diffStartDateOffset);\r\n                        diffEndDateOffset = _this._getProcessedNotNativeDateIfCrossDST(a.endDate, diffEndDateOffset)\r\n                    }\r\n                    var newStartDate = new Date(a.startDate.getTime() + diffStartDateOffset * toMs(\"hour\"));\r\n                    var newEndDate = new Date(a.endDate.getTime() + diffEndDateOffset * toMs(\"hour\"));\r\n                    var testNewStartDate = _this.timeZoneCalculator.createDate(newStartDate, {\r\n                        path: \"toGrid\"\r\n                    });\r\n                    var testNewEndDate = _this.timeZoneCalculator.createDate(newEndDate, {\r\n                        path: \"toGrid\"\r\n                    });\r\n                    if (appointment.duration > testNewEndDate.getTime() - testNewStartDate.getTime()) {\r\n                        newEndDate = new Date(newStartDate.getTime() + appointment.duration)\r\n                    }\r\n                    return {\r\n                        startDate: newStartDate,\r\n                        endDate: newEndDate\r\n                    }\r\n                })\r\n            }\r\n            return appointmentList\r\n        }\r\n    }, {\r\n        key: \"_getProcessedLongAppointmentsIfRequired\",\r\n        value: function(gridAppointmentList, appointment) {\r\n            var _this2 = this;\r\n            var rawAppointment = appointment.source();\r\n            var allDay = this.scheduler.appointmentTakesAllDay(rawAppointment);\r\n            var dateRange = this.scheduler._workSpace.getDateRange();\r\n            var renderingStrategy = this.scheduler.getLayoutManager().getRenderingStrategyInstance();\r\n            if (renderingStrategy.needSeparateAppointment(allDay)) {\r\n                var longStartDateParts = [];\r\n                var resultDates = [];\r\n                gridAppointmentList.forEach(function(gridAppointment) {\r\n                    var maxDate = new Date(dateRange[1]);\r\n                    var endDateOfPart = renderingStrategy.normalizeEndDateByViewEnd(rawAppointment, gridAppointment.endDate);\r\n                    longStartDateParts = _date.default.getDatesOfInterval(gridAppointment.startDate, endDateOfPart, {\r\n                        milliseconds: _this2.scheduler.getWorkSpace().getIntervalDuration(allDay)\r\n                    });\r\n                    var list = longStartDateParts.filter(function(startDatePart) {\r\n                        return new Date(startDatePart) < maxDate\r\n                    }).map(function(date) {\r\n                        return {\r\n                            startDate: date,\r\n                            endDate: new Date(new Date(date).setMilliseconds(appointment.duration)),\r\n                            source: gridAppointment.source\r\n                        }\r\n                    });\r\n                    resultDates = resultDates.concat(list)\r\n                });\r\n                gridAppointmentList = resultDates\r\n            }\r\n            return gridAppointmentList\r\n        }\r\n    }, {\r\n        key: \"_createGridAppointmentList\",\r\n        value: function(appointmentList) {\r\n            var _this3 = this;\r\n            return appointmentList.map(function(source) {\r\n                var startDate = _this3.timeZoneCalculator.createDate(source.startDate, {\r\n                    path: \"toGrid\"\r\n                });\r\n                var endDate = _this3.timeZoneCalculator.createDate(source.endDate, {\r\n                    path: \"toGrid\"\r\n                });\r\n                return {\r\n                    startDate: startDate,\r\n                    endDate: endDate,\r\n                    source: source\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createExtremeRecurrenceDates\",\r\n        value: function(rawAppointment, groupIndex) {\r\n            var dateRange = this._getGroupDateRange(rawAppointment, groupIndex);\r\n            var startViewDate = this.scheduler.appointmentTakesAllDay(rawAppointment) ? _date.default.trimTime(dateRange[0]) : dateRange[0];\r\n            var commonTimeZone = this.scheduler.option(\"timeZone\");\r\n            var minRecurrenceDate = commonTimeZone ? this.timeZoneCalculator.createDate(startViewDate, {\r\n                path: \"fromGrid\"\r\n            }) : startViewDate;\r\n            var maxRecurrenceDate = commonTimeZone ? this.timeZoneCalculator.createDate(dateRange[1], {\r\n                path: \"fromGrid\"\r\n            }) : dateRange[1];\r\n            return [minRecurrenceDate, maxRecurrenceDate]\r\n        }\r\n    }, {\r\n        key: \"_getGroupDateRange\",\r\n        value: function(rawAppointment, groupIndex) {\r\n            return this.scheduler._workSpace.getDateRange()\r\n        }\r\n    }, {\r\n        key: \"_createRecurrenceOptions\",\r\n        value: function(appointment, groupIndex) {\r\n            var _this$_createExtremeR = this._createExtremeRecurrenceDates(appointment.source(), groupIndex),\r\n                _this$_createExtremeR2 = _slicedToArray(_this$_createExtremeR, 2),\r\n                minRecurrenceDate = _this$_createExtremeR2[0],\r\n                maxRecurrenceDate = _this$_createExtremeR2[1];\r\n            return {\r\n                rule: appointment.recurrenceRule,\r\n                exception: appointment.recurrenceException,\r\n                min: minRecurrenceDate,\r\n                max: maxRecurrenceDate,\r\n                firstDayOfWeek: this.scheduler.getFirstDayOfWeek(),\r\n                start: appointment.startDate,\r\n                end: appointment.endDate\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createRecurrenceAppointments\",\r\n        value: function(appointment, resources) {\r\n            var duration = appointment.duration;\r\n            var option = this._createRecurrenceOptions(appointment);\r\n            var generatedStartDates = (0, _recurrence.getRecurrenceProcessor)().generateDates(option);\r\n            return generatedStartDates.map(function(date) {\r\n                var utcDate = _utilsTimeZone.default.createUTCDateWithLocalOffset(date);\r\n                utcDate.setTime(utcDate.getTime() + duration);\r\n                var endDate = _utilsTimeZone.default.createDateFromUTCWithLocalOffset(utcDate);\r\n                return {\r\n                    startDate: new Date(date),\r\n                    endDate: endDate\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getGroupIndices\",\r\n        value: function(resources) {\r\n            var workspace = this.scheduler._workSpace;\r\n            return workspace._getGroupIndexes(resources)\r\n        }\r\n    }, {\r\n        key: \"_cropAppointmentsByStartDayHour\",\r\n        value: function(appointments, rawAppointment) {\r\n            var _this4 = this;\r\n            appointments.forEach(function(appointment) {\r\n                var startDate = new Date(appointment.startDate);\r\n                var firstViewDate = _this4._getAppointmentFirstViewDate(appointment, rawAppointment);\r\n                var startDayHour = _this4._getViewStartDayHour(firstViewDate);\r\n                appointment.startDate = _this4._getAppointmentResultDate({\r\n                    appointment: appointment,\r\n                    rawAppointment: rawAppointment,\r\n                    startDate: startDate,\r\n                    startDayHour: startDayHour,\r\n                    firstViewDate: firstViewDate\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentFirstViewDate\",\r\n        value: function() {\r\n            return this.scheduler.getStartViewDate()\r\n        }\r\n    }, {\r\n        key: \"_getViewStartDayHour\",\r\n        value: function() {\r\n            return this.scheduler._getCurrentViewOption(\"startDayHour\")\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentResultDate\",\r\n        value: function(options) {\r\n            var appointment = options.appointment,\r\n                rawAppointment = options.rawAppointment,\r\n                startDayHour = options.startDayHour,\r\n                firstViewDate = options.firstViewDate;\r\n            var startDate = options.startDate;\r\n            var resultDate = new Date(appointment.startDate);\r\n            if (this.scheduler.appointmentTakesAllDay(rawAppointment)) {\r\n                resultDate = _date.default.normalizeDate(startDate, firstViewDate)\r\n            } else {\r\n                if (startDate < firstViewDate) {\r\n                    startDate = firstViewDate\r\n                }\r\n                resultDate = _date.default.normalizeDate(appointment.startDate, startDate)\r\n            }\r\n            return _date.default.roundDateByStartDayHour(resultDate, startDayHour)\r\n        }\r\n    }, {\r\n        key: \"_createAppointmentInfos\",\r\n        value: function(gridAppointments, appointmentResources, allDay) {\r\n            var _this5 = this;\r\n            var result = [];\r\n            var _loop = function(i) {\r\n                var coordinates = _this5.scheduler._workSpace.getCoordinatesByDateInGroup(gridAppointments[i].startDate, appointmentResources, allDay);\r\n                coordinates.forEach(function(coordinate) {\r\n                    (0, _extend.extend)(coordinate, {\r\n                        info: {\r\n                            appointment: gridAppointments[i],\r\n                            sourceAppointment: gridAppointments[i].source\r\n                        }\r\n                    })\r\n                });\r\n                result = result.concat(coordinates)\r\n            };\r\n            for (var i = 0; i < gridAppointments.length; i++) {\r\n                _loop(i)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"timeZoneCalculator\",\r\n        get: function() {\r\n            return this.scheduler.timeZoneCalculator\r\n        }\r\n    }]);\r\n    return AppointmentSettingsGeneratorBaseStrategy\r\n}();\r\nexports.AppointmentSettingsGeneratorBaseStrategy = AppointmentSettingsGeneratorBaseStrategy;\r\nvar AppointmentSettingsGeneratorVirtualStrategy = function(_AppointmentSettingsG) {\r\n    _inherits(AppointmentSettingsGeneratorVirtualStrategy, _AppointmentSettingsG);\r\n    var _super = _createSuper(AppointmentSettingsGeneratorVirtualStrategy);\r\n\r\n    function AppointmentSettingsGeneratorVirtualStrategy() {\r\n        _classCallCheck(this, AppointmentSettingsGeneratorVirtualStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(AppointmentSettingsGeneratorVirtualStrategy, [{\r\n        key: \"_createRecurrenceAppointments\",\r\n        value: function(appointment, resources) {\r\n            var _this6 = this;\r\n            var duration = appointment.duration;\r\n            var result = [];\r\n            var workspace = this.scheduler._workSpace;\r\n            var groupIndices = workspace._isVerticalGroupedWorkSpace() && workspace._getGroupCount() ? this._getGroupIndices(resources) : [0];\r\n            groupIndices.forEach(function(groupIndex) {\r\n                var option = _this6._createRecurrenceOptions(appointment, groupIndex);\r\n                var generatedStartDates = (0, _recurrence.getRecurrenceProcessor)().generateDates(option);\r\n                var dates = generatedStartDates.map(function(date) {\r\n                    var utcDate = _utilsTimeZone.default.createUTCDateWithLocalOffset(date);\r\n                    utcDate.setTime(utcDate.getTime() + duration);\r\n                    var endDate = _utilsTimeZone.default.createDateFromUTCWithLocalOffset(utcDate);\r\n                    return {\r\n                        startDate: new Date(date),\r\n                        endDate: endDate\r\n                    }\r\n                });\r\n                result.push.apply(result, _toConsumableArray(dates))\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getViewStartDayHour\",\r\n        value: function(firstViewDate) {\r\n            return firstViewDate.getHours()\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentFirstViewDate\",\r\n        value: function(appointment, rawAppointment) {\r\n            var _this$scheduler$getWo = this.scheduler.getWorkSpace(),\r\n                viewDataProvider = _this$scheduler$getWo.viewDataProvider;\r\n            var groupIndex = appointment.source.groupIndex;\r\n            var startDate = appointment.startDate,\r\n                endDate = appointment.endDate;\r\n            var isAllDay = this._isAllDayAppointment(rawAppointment);\r\n            return viewDataProvider.findGroupCellStartDate(groupIndex, startDate, endDate, isAllDay)\r\n        }\r\n    }, {\r\n        key: \"_getGroupDateRange\",\r\n        value: function(rawAppointment, groupIndex) {\r\n            if (this.scheduler.appointmentTakesAllDay(rawAppointment)) {\r\n                return _get(_getPrototypeOf(AppointmentSettingsGeneratorVirtualStrategy.prototype), \"_getGroupDateRange\", this).call(this, rawAppointment, groupIndex)\r\n            }\r\n            var _this$scheduler$getWo2 = this.scheduler.getWorkSpace(),\r\n                viewDataProvider = _this$scheduler$getWo2.viewDataProvider;\r\n            var startDate = viewDataProvider.getGroupStartDate(groupIndex);\r\n            var groupEndDate = viewDataProvider.getGroupEndDate(groupIndex);\r\n            var endDate = new Date(groupEndDate.getTime() - 1);\r\n            return [startDate, endDate]\r\n        }\r\n    }, {\r\n        key: \"_updateGroupIndices\",\r\n        value: function(appointments, itemResources) {\r\n            var workspace = this.scheduler.getWorkSpace();\r\n            var groupIndices = workspace._isVerticalGroupedWorkSpace() ? this._getGroupIndices(itemResources) : [0];\r\n            groupIndices.forEach(function(groupIndex) {\r\n                appointments.forEach(function(appointment) {\r\n                    return appointment.groupIndex = groupIndex\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_getGroupIndices\",\r\n        value: function(resources) {\r\n            var groupIndices = _get(_getPrototypeOf(AppointmentSettingsGeneratorVirtualStrategy.prototype), \"_getGroupIndices\", this).call(this, resources);\r\n            var _this$scheduler$getWo3 = this.scheduler.getWorkSpace(),\r\n                viewDataProvider = _this$scheduler$getWo3.viewDataProvider;\r\n            var viewDataGroupIndices = viewDataProvider.getGroupIndices();\r\n            var result = groupIndices.filter(function(groupIndex) {\r\n                return viewDataGroupIndices.indexOf(groupIndex) !== -1\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_createAppointments\",\r\n        value: function(appointment, resources) {\r\n            var result = _get(_getPrototypeOf(AppointmentSettingsGeneratorVirtualStrategy.prototype), \"_createAppointments\", this).call(this, appointment, resources);\r\n            this._updateGroupIndices(result, resources);\r\n            return result\r\n        }\r\n    }]);\r\n    return AppointmentSettingsGeneratorVirtualStrategy\r\n}(AppointmentSettingsGeneratorBaseStrategy);\r\nexports.AppointmentSettingsGeneratorVirtualStrategy = AppointmentSettingsGeneratorVirtualStrategy;\r\n","/**\r\n * DevExtreme (viz/sparklines/sparkline.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _base_sparkline = _interopRequireDefault(require(\"./base_sparkline\"));\r\nvar _data_validator = require(\"../components/data_validator\");\r\nvar _base_series = require(\"../series/base_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _data_source = require(\"../core/data_source\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar MIN_BAR_WIDTH = 1;\r\nvar MAX_BAR_WIDTH = 50;\r\nvar DEFAULT_BAR_INTERVAL = 4;\r\nvar DEFAULT_CANVAS_WIDTH = 250;\r\nvar DEFAULT_CANVAS_HEIGHT = 30;\r\nvar DEFAULT_POINT_BORDER = 2;\r\nvar ALLOWED_TYPES = {\r\n    line: true,\r\n    spline: true,\r\n    stepline: true,\r\n    area: true,\r\n    steparea: true,\r\n    splinearea: true,\r\n    bar: true,\r\n    winloss: true\r\n};\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _round = _math.round;\r\nvar _max = _math.max;\r\nvar _min = _math.min;\r\nvar _isFinite = isFinite;\r\nvar _Number = Number;\r\nvar _String = String;\r\n\r\nfunction findMinMax(data, valField) {\r\n    var firstItem = data[0] || {};\r\n    var firstValue = firstItem[valField] || 0;\r\n    var min = firstValue;\r\n    var max = firstValue;\r\n    var minIndexes = [0];\r\n    var maxIndexes = [0];\r\n    var dataLength = data.length;\r\n    var value;\r\n    var i;\r\n    for (i = 1; i < dataLength; i++) {\r\n        value = data[i][valField];\r\n        if (value < min) {\r\n            min = value;\r\n            minIndexes = [i]\r\n        } else {\r\n            if (value === min) {\r\n                minIndexes.push(i)\r\n            }\r\n        }\r\n        if (value > max) {\r\n            max = value;\r\n            maxIndexes = [i]\r\n        } else {\r\n            if (value === max) {\r\n                maxIndexes.push(i)\r\n            }\r\n        }\r\n    }\r\n    if (max === min) {\r\n        minIndexes = maxIndexes = []\r\n    }\r\n    return {\r\n        minIndexes: minIndexes,\r\n        maxIndexes: maxIndexes\r\n    }\r\n}\r\n\r\nfunction parseNumericDataSource(data, argField, valField, ignoreEmptyPoints) {\r\n    return (0, _utils.map)(data, function(dataItem, index) {\r\n        var item = null;\r\n        var isDataNumber;\r\n        var value;\r\n        if (void 0 !== dataItem) {\r\n            item = {};\r\n            isDataNumber = _isFinite(dataItem);\r\n            item[argField] = isDataNumber ? _String(index) : dataItem[argField];\r\n            value = isDataNumber ? dataItem : dataItem[valField];\r\n            item[valField] = null === value ? ignoreEmptyPoints ? void 0 : value : _Number(value);\r\n            item = void 0 !== item[argField] && void 0 !== item[valField] ? item : null\r\n        }\r\n        return item\r\n    })\r\n}\r\n\r\nfunction parseWinlossDataSource(data, argField, valField, target) {\r\n    var lowBarValue = -1;\r\n    var zeroBarValue = 0;\r\n    var highBarValue = 1;\r\n    var delta = 1e-4;\r\n    return (0, _utils.map)(data, function(dataItem) {\r\n        var item = {};\r\n        item[argField] = dataItem[argField];\r\n        if (_abs(dataItem[valField] - target) < delta) {\r\n            item[valField] = zeroBarValue\r\n        } else {\r\n            if (dataItem[valField] > target) {\r\n                item[valField] = highBarValue\r\n            } else {\r\n                item[valField] = lowBarValue\r\n            }\r\n        }\r\n        return item\r\n    })\r\n}\r\n\r\nfunction selectPointColor(color, options, index, pointIndexes) {\r\n    if (index === pointIndexes.first || index === pointIndexes.last) {\r\n        color = options.firstLastColor\r\n    }\r\n    if ((pointIndexes.min || []).indexOf(index) >= 0) {\r\n        color = options.minColor\r\n    }\r\n    if ((pointIndexes.max || []).indexOf(index) >= 0) {\r\n        color = options.maxColor\r\n    }\r\n    return color\r\n}\r\n\r\nfunction createLineCustomizeFunction(pointIndexes, options) {\r\n    return function() {\r\n        var color = selectPointColor(void 0, options, this.index, pointIndexes);\r\n        return color ? {\r\n            visible: true,\r\n            border: {\r\n                color: color\r\n            }\r\n        } : {}\r\n    }\r\n}\r\n\r\nfunction createBarCustomizeFunction(pointIndexes, options, winlossData) {\r\n    return function() {\r\n        var index = this.index;\r\n        var isWinloss = \"winloss\" === options.type;\r\n        var target = isWinloss ? options.winlossThreshold : 0;\r\n        var value = isWinloss ? winlossData[index][options.valueField] : this.value;\r\n        var positiveColor = isWinloss ? options.winColor : options.barPositiveColor;\r\n        var negativeColor = isWinloss ? options.lossColor : options.barNegativeColor;\r\n        return {\r\n            color: selectPointColor(value >= target ? positiveColor : negativeColor, options, index, pointIndexes)\r\n        }\r\n    }\r\n}\r\nvar dxSparkline = _base_sparkline.default.inherit({\r\n    _rootClassPrefix: \"dxsl\",\r\n    _rootClass: \"dxsl-sparkline\",\r\n    _themeSection: \"sparkline\",\r\n    _defaultSize: {\r\n        width: DEFAULT_CANVAS_WIDTH,\r\n        height: DEFAULT_CANVAS_HEIGHT\r\n    },\r\n    _initCore: function() {\r\n        this.callBase();\r\n        this._createSeries()\r\n    },\r\n    _initialChanges: [\"DATA_SOURCE\"],\r\n    _dataSourceChangedHandler: function() {\r\n        this._requestChange([\"UPDATE\"])\r\n    },\r\n    _updateWidgetElements: function() {\r\n        this._updateSeries();\r\n        this.callBase()\r\n    },\r\n    _disposeWidgetElements: function() {\r\n        var that = this;\r\n        that._series && that._series.dispose();\r\n        that._series = that._seriesGroup = that._seriesLabelGroup = null\r\n    },\r\n    _cleanWidgetElements: function() {\r\n        this._seriesGroup.remove();\r\n        this._seriesLabelGroup.remove();\r\n        this._seriesGroup.clear();\r\n        this._seriesLabelGroup.clear()\r\n    },\r\n    _drawWidgetElements: function() {\r\n        if (this._dataIsLoaded()) {\r\n            this._drawSeries();\r\n            this._drawn()\r\n        }\r\n    },\r\n    _getCorrectCanvas: function() {\r\n        var options = this._allOptions;\r\n        var canvas = this._canvas;\r\n        var halfPointSize = options.pointSize && Math.ceil(options.pointSize / 2) + DEFAULT_POINT_BORDER;\r\n        var type = options.type;\r\n        if (\"bar\" !== type && \"winloss\" !== type && (options.showFirstLast || options.showMinMax)) {\r\n            return {\r\n                width: canvas.width,\r\n                height: canvas.height,\r\n                left: canvas.left + halfPointSize,\r\n                right: canvas.right + halfPointSize,\r\n                top: canvas.top + halfPointSize,\r\n                bottom: canvas.bottom + halfPointSize\r\n            }\r\n        }\r\n        return canvas\r\n    },\r\n    _prepareOptions: function() {\r\n        var that = this;\r\n        that._allOptions = that.callBase();\r\n        that._allOptions.type = (0, _utils.normalizeEnum)(that._allOptions.type);\r\n        if (!ALLOWED_TYPES[that._allOptions.type]) {\r\n            that._allOptions.type = \"line\"\r\n        }\r\n    },\r\n    _createHtmlElements: function() {\r\n        this._seriesGroup = this._renderer.g().attr({\r\n            \"class\": \"dxsl-series\"\r\n        });\r\n        this._seriesLabelGroup = this._renderer.g().attr({\r\n            \"class\": \"dxsl-series-labels\"\r\n        })\r\n    },\r\n    _createSeries: function() {\r\n        this._series = new _base_series.Series({\r\n            renderer: this._renderer,\r\n            seriesGroup: this._seriesGroup,\r\n            labelsGroup: this._seriesLabelGroup,\r\n            argumentAxis: this._argumentAxis,\r\n            valueAxis: this._valueAxis\r\n        }, {\r\n            widgetType: \"chart\",\r\n            type: \"line\"\r\n        })\r\n    },\r\n    _updateSeries: function() {\r\n        var that = this;\r\n        var singleSeries = that._series;\r\n        that._prepareDataSource();\r\n        var seriesOptions = that._prepareSeriesOptions();\r\n        singleSeries.updateOptions(seriesOptions);\r\n        var groupsData = {\r\n            groups: [{\r\n                series: [singleSeries]\r\n            }]\r\n        };\r\n        groupsData.argumentOptions = {\r\n            type: \"bar\" === seriesOptions.type ? \"discrete\" : void 0\r\n        };\r\n        that._simpleDataSource = (0, _data_validator.validateData)(that._simpleDataSource, groupsData, that._incidentOccurred, {\r\n            checkTypeForAllData: false,\r\n            convertToAxisDataType: true,\r\n            sortingMethod: true\r\n        })[singleSeries.getArgumentField()];\r\n        seriesOptions.customizePoint = that._getCustomizeFunction();\r\n        singleSeries.updateData(that._simpleDataSource);\r\n        singleSeries.createPoints();\r\n        that._groupsDataCategories = groupsData.categories\r\n    },\r\n    _optionChangesMap: {\r\n        dataSource: \"DATA_SOURCE\"\r\n    },\r\n    _optionChangesOrder: [\"DATA_SOURCE\"],\r\n    _change_DATA_SOURCE: function() {\r\n        this._updateDataSource()\r\n    },\r\n    _prepareDataSource: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var argField = options.argumentField;\r\n        var valField = options.valueField;\r\n        var dataSource = that._dataSourceItems() || [];\r\n        var data = parseNumericDataSource(dataSource, argField, valField, that.option(\"ignoreEmptyPoints\"));\r\n        if (\"winloss\" === options.type) {\r\n            that._winlossDataSource = data;\r\n            that._simpleDataSource = parseWinlossDataSource(data, argField, valField, options.winlossThreshold)\r\n        } else {\r\n            that._simpleDataSource = data\r\n        }\r\n    },\r\n    _prepareSeriesOptions: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var type = \"winloss\" === options.type ? \"bar\" : options.type;\r\n        return {\r\n            visible: true,\r\n            argumentField: options.argumentField,\r\n            valueField: options.valueField,\r\n            color: options.lineColor,\r\n            width: options.lineWidth,\r\n            widgetType: \"chart\",\r\n            type: type,\r\n            opacity: type.indexOf(\"area\") !== -1 ? that._allOptions.areaOpacity : void 0,\r\n            point: {\r\n                size: options.pointSize,\r\n                symbol: options.pointSymbol,\r\n                border: {\r\n                    visible: true,\r\n                    width: DEFAULT_POINT_BORDER\r\n                },\r\n                color: options.pointColor,\r\n                visible: false,\r\n                hoverStyle: {\r\n                    border: {}\r\n                },\r\n                selectionStyle: {\r\n                    border: {}\r\n                }\r\n            },\r\n            border: {\r\n                color: options.lineColor,\r\n                width: options.lineWidth,\r\n                visible: \"bar\" !== type\r\n            }\r\n        }\r\n    },\r\n    _getCustomizeFunction: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var dataSource = that._winlossDataSource || that._simpleDataSource;\r\n        var drawnPointIndexes = that._getExtremumPointsIndexes(dataSource);\r\n        var customizeFunction;\r\n        if (\"winloss\" === options.type || \"bar\" === options.type) {\r\n            customizeFunction = createBarCustomizeFunction(drawnPointIndexes, options, that._winlossDataSource)\r\n        } else {\r\n            customizeFunction = createLineCustomizeFunction(drawnPointIndexes, options)\r\n        }\r\n        return customizeFunction\r\n    },\r\n    _getExtremumPointsIndexes: function(data) {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var lastIndex = data.length - 1;\r\n        var indexes = {};\r\n        that._minMaxIndexes = findMinMax(data, options.valueField);\r\n        if (options.showFirstLast) {\r\n            indexes.first = 0;\r\n            indexes.last = lastIndex\r\n        }\r\n        if (options.showMinMax) {\r\n            indexes.min = that._minMaxIndexes.minIndexes;\r\n            indexes.max = that._minMaxIndexes.maxIndexes\r\n        }\r\n        return indexes\r\n    },\r\n    _getStick: function() {\r\n        return {\r\n            stick: \"bar\" !== this._series.type\r\n        }\r\n    },\r\n    _updateRange: function() {\r\n        var that = this;\r\n        var series = that._series;\r\n        var type = series.type;\r\n        var isBarType = \"bar\" === type;\r\n        var isWinlossType = \"winloss\" === type;\r\n        var DEFAULT_VALUE_RANGE_MARGIN = .15;\r\n        var DEFAULT_ARGUMENT_RANGE_MARGIN = .1;\r\n        var WINLOSS_MAX_RANGE = 1;\r\n        var WINLOSS_MIN_RANGE = -1;\r\n        var rangeData = series.getRangeData();\r\n        var minValue = that._allOptions.minValue;\r\n        var hasMinY = (0, _type.isDefined)(minValue) && _isFinite(minValue);\r\n        var maxValue = that._allOptions.maxValue;\r\n        var hasMaxY = (0, _type.isDefined)(maxValue) && _isFinite(maxValue);\r\n        var argCoef;\r\n        var valCoef = (rangeData.val.max - rangeData.val.min) * DEFAULT_VALUE_RANGE_MARGIN;\r\n        if (isBarType || isWinlossType || \"area\" === type) {\r\n            if (0 !== rangeData.val.min) {\r\n                rangeData.val.min -= valCoef\r\n            }\r\n            if (0 !== rangeData.val.max) {\r\n                rangeData.val.max += valCoef\r\n            }\r\n        } else {\r\n            rangeData.val.min -= valCoef;\r\n            rangeData.val.max += valCoef\r\n        }\r\n        if (hasMinY || hasMaxY) {\r\n            if (hasMinY && hasMaxY) {\r\n                rangeData.val.minVisible = _min(minValue, maxValue);\r\n                rangeData.val.maxVisible = _max(minValue, maxValue)\r\n            } else {\r\n                rangeData.val.minVisible = hasMinY ? _Number(minValue) : void 0;\r\n                rangeData.val.maxVisible = hasMaxY ? _Number(maxValue) : void 0\r\n            }\r\n            if (isWinlossType) {\r\n                rangeData.val.minVisible = hasMinY ? _max(rangeData.val.minVisible, WINLOSS_MIN_RANGE) : void 0;\r\n                rangeData.val.maxVisible = hasMaxY ? _min(rangeData.val.maxVisible, WINLOSS_MAX_RANGE) : void 0\r\n            }\r\n        }\r\n        if (series.getPoints().length > 1) {\r\n            if (isBarType) {\r\n                argCoef = (rangeData.arg.max - rangeData.arg.min) * DEFAULT_ARGUMENT_RANGE_MARGIN;\r\n                rangeData.arg.min = rangeData.arg.min - argCoef;\r\n                rangeData.arg.max = rangeData.arg.max + argCoef\r\n            }\r\n        }\r\n        rangeData.arg.categories = that._groupsDataCategories;\r\n        that._ranges = rangeData\r\n    },\r\n    _getBarWidth: function(pointsCount) {\r\n        var that = this;\r\n        var canvas = that._canvas;\r\n        var intervalWidth = pointsCount * DEFAULT_BAR_INTERVAL;\r\n        var rangeWidth = canvas.width - canvas.left - canvas.right - intervalWidth;\r\n        var width = _round(rangeWidth / pointsCount);\r\n        if (width < MIN_BAR_WIDTH) {\r\n            width = MIN_BAR_WIDTH\r\n        }\r\n        if (width > MAX_BAR_WIDTH) {\r\n            width = MAX_BAR_WIDTH\r\n        }\r\n        return width\r\n    },\r\n    _correctPoints: function() {\r\n        var that = this;\r\n        var seriesType = that._allOptions.type;\r\n        var seriesPoints = that._series.getPoints();\r\n        var pointsLength = seriesPoints.length;\r\n        var barWidth;\r\n        var i;\r\n        if (\"bar\" === seriesType || \"winloss\" === seriesType) {\r\n            barWidth = that._getBarWidth(pointsLength);\r\n            for (i = 0; i < pointsLength; i++) {\r\n                seriesPoints[i].correctCoordinates({\r\n                    width: barWidth,\r\n                    offset: 0\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _drawSeries: function() {\r\n        var that = this;\r\n        if (that._simpleDataSource.length > 0) {\r\n            that._correctPoints();\r\n            that._series.draw();\r\n            that._seriesGroup.append(that._renderer.root)\r\n        }\r\n    },\r\n    _isTooltipEnabled: function() {\r\n        return !!this._simpleDataSource.length\r\n    },\r\n    _getTooltipData: function() {\r\n        var that = this;\r\n        var options = that._allOptions;\r\n        var dataSource = that._winlossDataSource || that._simpleDataSource;\r\n        var tooltip = that._tooltip;\r\n        if (0 === dataSource.length) {\r\n            return {}\r\n        }\r\n        var minMax = that._minMaxIndexes;\r\n        var valueField = options.valueField;\r\n        var first = dataSource[0][valueField];\r\n        var last = dataSource[dataSource.length - 1][valueField];\r\n        var min = (0, _type.isDefined)(minMax.minIndexes[0]) ? dataSource[minMax.minIndexes[0]][valueField] : first;\r\n        var max = (0, _type.isDefined)(minMax.maxIndexes[0]) ? dataSource[minMax.maxIndexes[0]][valueField] : first;\r\n        var formattedFirst = tooltip.formatValue(first);\r\n        var formattedLast = tooltip.formatValue(last);\r\n        var formattedMin = tooltip.formatValue(min);\r\n        var formattedMax = tooltip.formatValue(max);\r\n        var customizeObject = {\r\n            firstValue: formattedFirst,\r\n            lastValue: formattedLast,\r\n            minValue: formattedMin,\r\n            maxValue: formattedMax,\r\n            originalFirstValue: first,\r\n            originalLastValue: last,\r\n            originalMinValue: min,\r\n            originalMaxValue: max,\r\n            valueText: [\"Start:\", formattedFirst, \"End:\", formattedLast, \"Min:\", formattedMin, \"Max:\", formattedMax]\r\n        };\r\n        if (\"winloss\" === options.type) {\r\n            customizeObject.originalThresholdValue = options.winlossThreshold;\r\n            customizeObject.thresholdValue = tooltip.formatValue(options.winlossThreshold)\r\n        }\r\n        return customizeObject\r\n    }\r\n});\r\n(0, _utils.map)([\"lineColor\", \"lineWidth\", \"areaOpacity\", \"minColor\", \"maxColor\", \"barPositiveColor\", \"barNegativeColor\", \"winColor\", \"lessColor\", \"firstLastColor\", \"pointSymbol\", \"pointColor\", \"pointSize\", \"type\", \"argumentField\", \"valueField\", \"winlossThreshold\", \"showFirstLast\", \"showMinMax\", \"ignoreEmptyPoints\", \"minValue\", \"maxValue\"], function(name) {\r\n    dxSparkline.prototype._optionChangesMap[name] = \"OPTIONS\"\r\n});\r\n(0, _component_registrator.default)(\"dxSparkline\", dxSparkline);\r\nvar _default = dxSparkline;\r\nexports.default = _default;\r\ndxSparkline.addPlugin(_data_source.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.columns_resizing_reordering.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.columns_resizing_reordering\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"columnsResizingReordering\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.column_headers.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_headers\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"columnHeaders\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/html_editor/formats/font.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar FontStyle = {};\r\nif (_devextremeQuill.default) {\r\n    FontStyle = _devextremeQuill.default.import(\"attributors/style/font\");\r\n    FontStyle.whitelist = null\r\n}\r\nvar _default = FontStyle;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/logarithmic_translator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _default = {\r\n    _fromValue: function(value) {\r\n        return null !== value ? (0, _utils.getLogExt)(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value\r\n    },\r\n    _toValue: function(value) {\r\n        return null !== value ? (0, _utils.raiseToExt)(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value\r\n    },\r\n    getMinBarSize: function(minBarSize) {\r\n        var visibleArea = this.getCanvasVisibleArea();\r\n        var minValue = this.from(visibleArea.min + minBarSize);\r\n        var canvasOptions = this._canvasOptions;\r\n        return Math.pow(canvasOptions.base, canvasOptions.rangeMinVisible + this._fromValue(this.from(visibleArea.min)) - this._fromValue(!(0, _type.isDefined)(minValue) ? this.from(visibleArea.max) : minValue))\r\n    },\r\n    checkMinBarSize: function(initialValue, minShownValue, stackValue) {\r\n        var canvasOptions = this._canvasOptions;\r\n        var prevValue = stackValue - initialValue;\r\n        var baseMethod = this.constructor.prototype.checkMinBarSize;\r\n        var minBarSize;\r\n        var updateValue;\r\n        if ((0, _type.isDefined)(minShownValue) && prevValue > 0) {\r\n            minBarSize = baseMethod(this._fromValue(stackValue / prevValue), this._fromValue(minShownValue) - canvasOptions.rangeMinVisible);\r\n            updateValue = Math.pow(canvasOptions.base, this._fromValue(prevValue) + minBarSize) - prevValue\r\n        } else {\r\n            updateValue = baseMethod(initialValue, minShownValue)\r\n        }\r\n        return updateValue\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.state_storing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = require(\"./ui.grid_core.state_storing_core\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar getDataState = function(that) {\r\n    var pagerView = that.getView(\"pagerView\");\r\n    var dataController = that.getController(\"data\");\r\n    var state = {\r\n        allowedPageSizes: pagerView ? pagerView.getPageSizes() : void 0,\r\n        filterPanel: {\r\n            filterEnabled: that.option(\"filterPanel.filterEnabled\")\r\n        },\r\n        filterValue: that.option(\"filterValue\"),\r\n        focusedRowKey: that.option(\"focusedRowEnabled\") ? that.option(\"focusedRowKey\") : void 0\r\n    };\r\n    return (0, _extend.extend)(state, dataController.getUserState())\r\n};\r\nvar processLoadState = function(that) {\r\n    var columnsController = that.getController(\"columns\");\r\n    var selectionController = that.getController(\"selection\");\r\n    var exportController = that.getController(\"export\");\r\n    var dataController = that.getController(\"data\");\r\n    if (columnsController) {\r\n        columnsController.columnsChanged.add(function() {\r\n            that.updateState({\r\n                columns: columnsController.getUserState()\r\n            })\r\n        })\r\n    }\r\n    if (selectionController) {\r\n        selectionController.selectionChanged.add(function(e) {\r\n            that.updateState({\r\n                selectedRowKeys: e.selectedRowKeys,\r\n                selectionFilter: e.selectionFilter\r\n            })\r\n        })\r\n    }\r\n    if (dataController) {\r\n        that._initialPageSize = that.option(\"paging.pageSize\");\r\n        that._initialFilterValue = that.option(\"filterValue\");\r\n        dataController.changed.add(function() {\r\n            var state = getDataState(that);\r\n            that.updateState(state)\r\n        })\r\n    }\r\n    if (exportController) {\r\n        exportController.selectionOnlyChanged.add(function() {\r\n            that.updateState({\r\n                exportSelectionOnly: exportController.selectionOnly()\r\n            })\r\n        })\r\n    }\r\n};\r\nvar DEFAULT_FILTER_VALUE = null;\r\nvar getFilterValue = function(that, state) {\r\n    var filterSyncController = that.getController(\"filterSync\");\r\n    var columnsController = that.getController(\"columns\");\r\n    var hasFilterState = state.columns || void 0 !== state.filterValue;\r\n    if (filterSyncController) {\r\n        if (hasFilterState) {\r\n            return state.filterValue || filterSyncController.getFilterValueFromColumns(state.columns)\r\n        } else {\r\n            return that._initialFilterValue || filterSyncController.getFilterValueFromColumns(columnsController.getColumns())\r\n        }\r\n    }\r\n    return DEFAULT_FILTER_VALUE\r\n};\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            stateStoring: {\r\n                enabled: false,\r\n                storageKey: null,\r\n                type: \"localStorage\",\r\n                customLoad: null,\r\n                customSave: null,\r\n                savingTimeout: 2e3\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        stateStoring: _uiGrid_core.StateStoringController\r\n    },\r\n    extenders: {\r\n        views: {\r\n            rowsView: {\r\n                init: function() {\r\n                    var that = this;\r\n                    var dataController = that.getController(\"data\");\r\n                    that.callBase();\r\n                    dataController.stateLoaded.add(function() {\r\n                        if (dataController.isLoaded() && !dataController.getDataSource()) {\r\n                            that.setLoading(false);\r\n                            that.renderNoDataText();\r\n                            var columnHeadersView = that.component.getView(\"columnHeadersView\");\r\n                            columnHeadersView && columnHeadersView.render();\r\n                            that.component._fireContentReadyAction()\r\n                        }\r\n                    })\r\n                }\r\n            }\r\n        },\r\n        controllers: {\r\n            stateStoring: {\r\n                init: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    processLoadState(this)\r\n                },\r\n                isLoading: function() {\r\n                    return this.callBase() || this.getController(\"data\").isStateLoading()\r\n                },\r\n                state: function(_state) {\r\n                    var result = this.callBase.apply(this, arguments);\r\n                    if (void 0 !== _state) {\r\n                        this.applyState((0, _extend.extend)({}, _state))\r\n                    }\r\n                    return result\r\n                },\r\n                updateState: function(state) {\r\n                    if (this.isEnabled()) {\r\n                        var oldState = this.state();\r\n                        var newState = (0, _extend.extend)({}, oldState, state);\r\n                        var oldStateHash = (0, _common.getKeyHash)(oldState);\r\n                        var newStateHash = (0, _common.getKeyHash)(newState);\r\n                        if (!(0, _common.equalByValue)(oldStateHash, newStateHash)) {\r\n                            (0, _extend.extend)(this._state, state);\r\n                            this.save()\r\n                        }\r\n                    } else {\r\n                        (0, _extend.extend)(this._state, state)\r\n                    }\r\n                },\r\n                applyState: function(state) {\r\n                    var that = this;\r\n                    var allowedPageSizes = state.allowedPageSizes;\r\n                    var searchText = state.searchText;\r\n                    var selectedRowKeys = state.selectedRowKeys;\r\n                    var selectionFilter = state.selectionFilter;\r\n                    var exportController = that.getController(\"export\");\r\n                    var columnsController = that.getController(\"columns\");\r\n                    var dataController = that.getController(\"data\");\r\n                    var scrollingMode = that.option(\"scrolling.mode\");\r\n                    var isVirtualScrollingMode = \"virtual\" === scrollingMode || \"infinite\" === scrollingMode;\r\n                    var showPageSizeSelector = true === that.option(\"pager.visible\") && that.option(\"pager.showPageSizeSelector\");\r\n                    that.component.beginUpdate();\r\n                    if (columnsController) {\r\n                        columnsController.setUserState(state.columns)\r\n                    }\r\n                    if (exportController) {\r\n                        exportController.selectionOnly(state.exportSelectionOnly)\r\n                    }\r\n                    if (selectedRowKeys) {\r\n                        that.option(\"selectedRowKeys\", selectedRowKeys)\r\n                    }\r\n                    that.option(\"selectionFilter\", selectionFilter);\r\n                    if (allowedPageSizes && \"auto\" === that.option(\"pager.allowedPageSizes\")) {\r\n                        that.option(\"pager\").allowedPageSizes = allowedPageSizes\r\n                    }\r\n                    if (that.option(\"focusedRowEnabled\")) {\r\n                        that.option(\"focusedRowKey\", state.focusedRowKey)\r\n                    }\r\n                    that.component.endUpdate();\r\n                    searchText && that.option(\"searchPanel.text\", searchText);\r\n                    that.option(\"filterValue\", getFilterValue(that, state));\r\n                    that.option(\"filterPanel.filterEnabled\", state.filterPanel ? state.filterPanel.filterEnabled : true);\r\n                    that.option(\"paging.pageSize\", (!isVirtualScrollingMode || showPageSizeSelector) && (0, _type.isDefined)(state.pageSize) ? state.pageSize : that._initialPageSize);\r\n                    that.option(\"paging.pageIndex\", state.pageIndex || 0);\r\n                    dataController && dataController.reset()\r\n                }\r\n            },\r\n            columns: {\r\n                getVisibleColumns: function() {\r\n                    var visibleColumns = this.callBase.apply(this, arguments);\r\n                    var stateStoringController = this.getController(\"stateStoring\");\r\n                    return stateStoringController.isEnabled() && !stateStoringController.isLoaded() ? [] : visibleColumns\r\n                }\r\n            },\r\n            data: {\r\n                callbackNames: function() {\r\n                    return this.callBase().concat([\"stateLoaded\"])\r\n                },\r\n                _refreshDataSource: function() {\r\n                    var _this = this;\r\n                    var callBase = this.callBase;\r\n                    var stateStoringController = this.getController(\"stateStoring\");\r\n                    if (stateStoringController.isEnabled() && !stateStoringController.isLoaded()) {\r\n                        clearTimeout(this._restoreStateTimeoutID);\r\n                        var deferred = new _deferred.Deferred;\r\n                        this._restoreStateTimeoutID = setTimeout(function() {\r\n                            stateStoringController.load().always(function() {\r\n                                _this._restoreStateTimeoutID = null\r\n                            }).done(function() {\r\n                                callBase.call(_this);\r\n                                _this.stateLoaded.fire();\r\n                                deferred.resolve()\r\n                            }).fail(function(error) {\r\n                                _this.stateLoaded.fire();\r\n                                _this._handleLoadError(error || \"Unknown error\");\r\n                                deferred.reject()\r\n                            })\r\n                        });\r\n                        return deferred.promise()\r\n                    } else {\r\n                        if (!this.isStateLoading()) {\r\n                            callBase.call(this)\r\n                        }\r\n                    }\r\n                },\r\n                isLoading: function() {\r\n                    var that = this;\r\n                    var stateStoringController = that.getController(\"stateStoring\");\r\n                    return this.callBase() || stateStoringController.isLoading()\r\n                },\r\n                isStateLoading: function() {\r\n                    return (0, _type.isDefined)(this._restoreStateTimeoutID)\r\n                },\r\n                isLoaded: function() {\r\n                    return this.callBase() && !this.isStateLoading()\r\n                },\r\n                dispose: function() {\r\n                    clearTimeout(this._restoreStateTimeoutID);\r\n                    this.callBase()\r\n                }\r\n            },\r\n            selection: {\r\n                _fireSelectionChanged: function(options) {\r\n                    var stateStoringController = this.getController(\"stateStoring\");\r\n                    var isDeferredSelection = this.option(\"selection.deferred\");\r\n                    if (stateStoringController.isLoading() && isDeferredSelection) {\r\n                        return\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/linear_gauge.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _linear_gauge = _interopRequireDefault(require(\"./gauges/linear_gauge\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _linear_gauge.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _click = require(\"../../events/click\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _uiPivot_grid2 = require(\"./ui.pivot_grid.data_controller\");\r\nvar _uiPivot_grid3 = require(\"./ui.pivot_grid.data_area\");\r\nvar _uiPivot_grid4 = require(\"./ui.pivot_grid.headers_area\");\r\nvar _size = require(\"../../core/utils/size\");\r\nvar _uiPivot_grid5 = require(\"./ui.pivot_grid.fields_area\");\r\nvar _uiPivot_grid6 = _interopRequireDefault(require(\"./ui.pivot_grid.field_chooser\"));\r\nvar _uiPivot_grid7 = _interopRequireDefault(require(\"./ui.pivot_grid.field_chooser_base\"));\r\nvar _uiPivot_grid8 = require(\"./ui.pivot_grid.export\");\r\nvar _uiPivot_grid9 = _interopRequireDefault(require(\"./ui.pivot_grid.chart_integration\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DATA_AREA_CELL_CLASS = \"dx-area-data-cell\";\r\nvar ROW_AREA_CELL_CLASS = \"dx-area-row-cell\";\r\nvar COLUMN_AREA_CELL_CLASS = \"dx-area-column-cell\";\r\nvar DESCRIPTION_AREA_CELL_CLASS = \"dx-area-description-cell\";\r\nvar BORDERS_CLASS = \"dx-pivotgrid-border\";\r\nvar PIVOTGRID_CLASS = \"dx-pivotgrid\";\r\nvar ROW_LINES_CLASS = \"dx-row-lines\";\r\nvar BOTTOM_ROW_CLASS = \"dx-bottom-row\";\r\nvar BOTTOM_BORDER_CLASS = \"dx-bottom-border\";\r\nvar FIELDS_CONTAINER_CLASS = \"dx-pivotgrid-fields-container\";\r\nvar FIELDS_CLASS = \"dx-area-fields\";\r\nvar FIELD_CHOOSER_POPUP_CLASS = \"dx-fieldchooser-popup\";\r\nvar INCOMPRESSIBLE_FIELDS_CLASS = \"dx-incompressible-fields\";\r\nvar OVERFLOW_HIDDEN_CLASS = \"dx-overflow-hidden\";\r\nvar TR = \"<tr>\";\r\nvar TD = \"<td>\";\r\nvar DIV = \"<div>\";\r\nvar TEST_HEIGHT = 66666;\r\nvar FIELD_CALCULATED_OPTIONS = [\"allowSorting\", \"allowSortingBySummary\", \"allowFiltering\", \"allowExpandAll\"];\r\n\r\nfunction getArraySum(array) {\r\n    var sum = 0;\r\n    (0, _iterator.each)(array, function(_, value) {\r\n        sum += value || 0\r\n    });\r\n    return sum\r\n}\r\n\r\nfunction adjustSizeArray(sizeArray, space) {\r\n    var delta = space / sizeArray.length;\r\n    for (var i = 0; i < sizeArray.length; i++) {\r\n        sizeArray[i] -= delta\r\n    }\r\n}\r\n\r\nfunction unsubscribeScrollEvents(area) {\r\n    area.off(\"scroll\").off(\"stop\")\r\n}\r\n\r\nfunction subscribeToScrollEvent(area, handler) {\r\n    unsubscribeScrollEvents(area);\r\n    area.on(\"scroll\", handler).on(\"stop\", handler)\r\n}\r\nvar scrollBarInfoCache = {};\r\n\r\nfunction getScrollBarInfo(useNativeScrolling) {\r\n    if (scrollBarInfoCache[useNativeScrolling]) {\r\n        return scrollBarInfoCache[useNativeScrolling]\r\n    }\r\n    var scrollBarWidth = 0;\r\n    var options = {};\r\n    var container = (0, _renderer.default)(DIV).css({\r\n        position: \"absolute\",\r\n        visibility: \"hidden\",\r\n        top: -1e3,\r\n        left: -1e3,\r\n        width: 100,\r\n        height: 100\r\n    }).appendTo(\"body\");\r\n    var content = (0, _renderer.default)(\"<p>\").css({\r\n        width: \"100%\",\r\n        height: 200\r\n    }).appendTo(container);\r\n    if (\"auto\" !== useNativeScrolling) {\r\n        options.useNative = !!useNativeScrolling;\r\n        options.useSimulatedScrollbar = !useNativeScrolling\r\n    }\r\n    container.dxScrollable(options);\r\n    var scrollBarUseNative = container.dxScrollable(\"instance\").option(\"useNative\");\r\n    scrollBarWidth = scrollBarUseNative ? container.width() - content.width() : 0;\r\n    container.remove();\r\n    scrollBarInfoCache[useNativeScrolling] = {\r\n        scrollBarWidth: scrollBarWidth,\r\n        scrollBarUseNative: scrollBarUseNative\r\n    };\r\n    return scrollBarInfoCache[useNativeScrolling]\r\n}\r\n\r\nfunction getCommonBorderWidth(elements, direction) {\r\n    var borderStyleNames = \"width\" === direction ? [\"borderLeftWidth\", \"borderRightWidth\"] : [\"borderTopWidth\", \"borderBottomWidth\"];\r\n    var width = 0;\r\n    (0, _iterator.each)(elements, function(_, elem) {\r\n        var computedStyle = window.getComputedStyle(elem.get(0));\r\n        borderStyleNames.forEach(function(borderStyleName) {\r\n            width += parseFloat(computedStyle[borderStyleName]) || 0\r\n        })\r\n    });\r\n    return width\r\n}\r\n\r\nfunction clickedOnFieldsArea($targetElement) {\r\n    return $targetElement.closest(\".\" + FIELDS_CLASS).length || $targetElement.find(\".\" + FIELDS_CLASS).length\r\n}\r\nvar PivotGrid = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            scrolling: {\r\n                timeout: 300,\r\n                renderingThreshold: 150,\r\n                minTimeout: 10,\r\n                mode: \"standard\",\r\n                useNative: \"auto\",\r\n                removeInvisiblePages: true,\r\n                virtualRowHeight: 50,\r\n                virtualColumnWidth: 100,\r\n                loadTwoPagesOnStart: true\r\n            },\r\n            encodeHtml: true,\r\n            dataSource: null,\r\n            activeStateEnabled: false,\r\n            fieldChooser: {\r\n                minWidth: 250,\r\n                minHeight: 250,\r\n                enabled: true,\r\n                allowSearch: false,\r\n                searchTimeout: 500,\r\n                layout: 0,\r\n                title: _message.default.format(\"dxPivotGrid-fieldChooserTitle\"),\r\n                width: 600,\r\n                height: 600,\r\n                applyChangesMode: \"instantly\"\r\n            },\r\n            onContextMenuPreparing: null,\r\n            allowSorting: false,\r\n            allowSortingBySummary: false,\r\n            allowFiltering: false,\r\n            allowExpandAll: false,\r\n            wordWrapEnabled: true,\r\n            fieldPanel: {\r\n                showColumnFields: true,\r\n                showFilterFields: true,\r\n                showDataFields: true,\r\n                showRowFields: true,\r\n                allowFieldDragging: true,\r\n                visible: false,\r\n                texts: {\r\n                    columnFieldArea: _message.default.format(\"dxPivotGrid-columnFieldArea\"),\r\n                    rowFieldArea: _message.default.format(\"dxPivotGrid-rowFieldArea\"),\r\n                    filterFieldArea: _message.default.format(\"dxPivotGrid-filterFieldArea\"),\r\n                    dataFieldArea: _message.default.format(\"dxPivotGrid-dataFieldArea\")\r\n                }\r\n            },\r\n            dataFieldArea: \"column\",\r\n            \"export\": {\r\n                enabled: false,\r\n                fileName: \"PivotGrid\",\r\n                proxyUrl: void 0,\r\n                ignoreExcelErrors: true\r\n            },\r\n            showRowTotals: true,\r\n            showRowGrandTotals: true,\r\n            showColumnTotals: true,\r\n            showColumnGrandTotals: true,\r\n            hideEmptySummaryCells: true,\r\n            showTotalsPrior: \"none\",\r\n            rowHeaderLayout: \"standard\",\r\n            loadPanel: {\r\n                enabled: true,\r\n                text: _message.default.format(\"Loading\"),\r\n                width: 200,\r\n                height: 70,\r\n                showIndicator: true,\r\n                indicatorSrc: \"\",\r\n                showPane: true\r\n            },\r\n            texts: {\r\n                grandTotal: _message.default.format(\"dxPivotGrid-grandTotal\"),\r\n                total: _message.default.getFormatter(\"dxPivotGrid-total\"),\r\n                noData: _message.default.format(\"dxDataGrid-noDataText\"),\r\n                showFieldChooser: _message.default.format(\"dxPivotGrid-showFieldChooser\"),\r\n                expandAll: _message.default.format(\"dxPivotGrid-expandAll\"),\r\n                collapseAll: _message.default.format(\"dxPivotGrid-collapseAll\"),\r\n                sortColumnBySummary: _message.default.getFormatter(\"dxPivotGrid-sortColumnBySummary\"),\r\n                sortRowBySummary: _message.default.getFormatter(\"dxPivotGrid-sortRowBySummary\"),\r\n                removeAllSorting: _message.default.format(\"dxPivotGrid-removeAllSorting\"),\r\n                exportToExcel: _message.default.format(\"dxDataGrid-exportToExcel\"),\r\n                dataNotAvailable: _message.default.format(\"dxPivotGrid-dataNotAvailable\")\r\n            },\r\n            onCellClick: null,\r\n            onCellPrepared: null,\r\n            showBorders: false,\r\n            stateStoring: {\r\n                enabled: false,\r\n                storageKey: null,\r\n                type: \"localStorage\",\r\n                customLoad: null,\r\n                customSave: null,\r\n                savingTimeout: 2e3\r\n            },\r\n            onExpandValueChanging: null,\r\n            renderCellCountLimit: 2e4,\r\n            onExporting: null,\r\n            onExported: null,\r\n            onFileSaving: null,\r\n            headerFilter: {\r\n                width: 252,\r\n                height: 325,\r\n                allowSearch: false,\r\n                showRelevantValues: false,\r\n                searchTimeout: 500,\r\n                texts: {\r\n                    emptyValue: _message.default.format(\"dxDataGrid-headerFilterEmptyValue\"),\r\n                    ok: _message.default.format(\"dxDataGrid-headerFilterOK\"),\r\n                    cancel: _message.default.format(\"dxDataGrid-headerFilterCancel\")\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _updateCalculatedOptions: function(fields) {\r\n        var that = this;\r\n        (0, _iterator.each)(fields, function(index, field) {\r\n            (0, _iterator.each)(FIELD_CALCULATED_OPTIONS, function(_, optionName) {\r\n                var isCalculated = field._initProperties && optionName in field._initProperties && void 0 === field._initProperties[optionName];\r\n                var needUpdate = void 0 === field[optionName] || isCalculated;\r\n                if (needUpdate) {\r\n                    (0, _uiPivot_grid.setFieldProperty)(field, optionName, that.option(optionName))\r\n                }\r\n            })\r\n        })\r\n    },\r\n    _getDataControllerOptions: function() {\r\n        var that = this;\r\n        return {\r\n            component: that,\r\n            dataSource: that.option(\"dataSource\"),\r\n            texts: that.option(\"texts\"),\r\n            showRowTotals: that.option(\"showRowTotals\"),\r\n            showRowGrandTotals: that.option(\"showRowGrandTotals\"),\r\n            showColumnTotals: that.option(\"showColumnTotals\"),\r\n            showTotalsPrior: that.option(\"showTotalsPrior\"),\r\n            showColumnGrandTotals: that.option(\"showColumnGrandTotals\"),\r\n            dataFieldArea: that.option(\"dataFieldArea\"),\r\n            rowHeaderLayout: that.option(\"rowHeaderLayout\"),\r\n            hideEmptySummaryCells: that.option(\"hideEmptySummaryCells\"),\r\n            onFieldsPrepared: function(fields) {\r\n                that._updateCalculatedOptions(fields)\r\n            }\r\n        }\r\n    },\r\n    _initDataController: function() {\r\n        var that = this;\r\n        that._dataController && that._dataController.dispose();\r\n        that._dataController = new _uiPivot_grid2.DataController(that._getDataControllerOptions());\r\n        if ((0, _window.hasWindow)()) {\r\n            that._dataController.changed.add(function() {\r\n                that._render()\r\n            })\r\n        }\r\n        that._dataController.scrollChanged.add(function(options) {\r\n            that._scrollLeft = options.left;\r\n            that._scrollTop = options.top\r\n        });\r\n        that._dataController.loadingChanged.add(function(isLoading) {\r\n            that._updateLoading()\r\n        });\r\n        that._dataController.progressChanged.add(that._updateLoading.bind(that));\r\n        that._dataController.dataSourceChanged.add(function() {\r\n            that._trigger(\"onChanged\")\r\n        });\r\n        var expandValueChanging = that.option(\"onExpandValueChanging\");\r\n        if (expandValueChanging) {\r\n            that._dataController.expandValueChanging.add(function(e) {\r\n                expandValueChanging(e)\r\n            })\r\n        }\r\n    },\r\n    _init: function() {\r\n        var that = this;\r\n        that.callBase();\r\n        that._initDataController();\r\n        that._scrollLeft = that._scrollTop = null;\r\n        that._initActions()\r\n    },\r\n    _initActions: function() {\r\n        var that = this;\r\n        that._actions = {\r\n            onChanged: that._createActionByOption(\"onChanged\"),\r\n            onContextMenuPreparing: that._createActionByOption(\"onContextMenuPreparing\"),\r\n            onCellClick: that._createActionByOption(\"onCellClick\"),\r\n            onExporting: that._createActionByOption(\"onExporting\"),\r\n            onExported: that._createActionByOption(\"onExported\"),\r\n            onFileSaving: that._createActionByOption(\"onFileSaving\"),\r\n            onCellPrepared: that._createActionByOption(\"onCellPrepared\")\r\n        }\r\n    },\r\n    _trigger: function(eventName, eventArg) {\r\n        this._actions[eventName](eventArg)\r\n    },\r\n    _optionChanged: function(args) {\r\n        var that = this;\r\n        if (FIELD_CALCULATED_OPTIONS.indexOf(args.name) >= 0) {\r\n            var fields = this.getDataSource().fields();\r\n            this._updateCalculatedOptions(fields)\r\n        }\r\n        switch (args.name) {\r\n            case \"dataSource\":\r\n            case \"allowSorting\":\r\n            case \"allowFiltering\":\r\n            case \"allowExpandAll\":\r\n            case \"allowSortingBySummary\":\r\n            case \"scrolling\":\r\n            case \"stateStoring\":\r\n                that._initDataController();\r\n                that._fieldChooserPopup.hide();\r\n                that._renderFieldChooser();\r\n                that._invalidate();\r\n                break;\r\n            case \"texts\":\r\n            case \"showTotalsPrior\":\r\n            case \"showRowTotals\":\r\n            case \"showRowGrandTotals\":\r\n            case \"showColumnTotals\":\r\n            case \"showColumnGrandTotals\":\r\n            case \"hideEmptySummaryCells\":\r\n            case \"dataFieldArea\":\r\n                that._dataController.updateViewOptions(that._getDataControllerOptions());\r\n                break;\r\n            case \"useNativeScrolling\":\r\n            case \"encodeHtml\":\r\n            case \"renderCellCountLimit\":\r\n                break;\r\n            case \"rtlEnabled\":\r\n                that.callBase(args);\r\n                that._renderFieldChooser();\r\n                that._renderContextMenu();\r\n                (0, _window.hasWindow)() && that._renderLoadPanel(that._dataArea.groupElement(), that.$element());\r\n                that._invalidate();\r\n                break;\r\n            case \"export\":\r\n                that._renderDescriptionArea();\r\n                break;\r\n            case \"onExpandValueChanging\":\r\n                break;\r\n            case \"onCellClick\":\r\n            case \"onContextMenuPreparing\":\r\n            case \"onExporting\":\r\n            case \"onExported\":\r\n            case \"onFileSaving\":\r\n            case \"onCellPrepared\":\r\n                that._actions[args.name] = that._createActionByOption(args.name);\r\n                break;\r\n            case \"fieldChooser\":\r\n                that._renderFieldChooser();\r\n                that._renderDescriptionArea();\r\n                break;\r\n            case \"loadPanel\":\r\n                if ((0, _window.hasWindow)()) {\r\n                    that._renderLoadPanel(that._dataArea.groupElement(), that.$element());\r\n                    that._invalidate()\r\n                }\r\n                break;\r\n            case \"fieldPanel\":\r\n                that._renderDescriptionArea();\r\n                that._invalidate();\r\n                break;\r\n            case \"headerFilter\":\r\n                that._renderFieldChooser();\r\n                that._invalidate();\r\n                break;\r\n            case \"showBorders\":\r\n                that._tableElement().toggleClass(BORDERS_CLASS, !!args.value);\r\n                that.updateDimensions();\r\n                break;\r\n            case \"wordWrapEnabled\":\r\n                that._tableElement().toggleClass(\"dx-word-wrap\", !!args.value);\r\n                that.updateDimensions();\r\n                break;\r\n            case \"rowHeaderLayout\":\r\n                that._tableElement().find(\".\" + ROW_AREA_CELL_CLASS).toggleClass(\"dx-area-tree-view\", \"tree\" === args.value);\r\n                that._dataController.updateViewOptions(that._getDataControllerOptions());\r\n                break;\r\n            case \"height\":\r\n            case \"width\":\r\n                that._hasHeight = null;\r\n                that.callBase(args);\r\n                that.resize();\r\n                break;\r\n            default:\r\n                that.callBase(args)\r\n        }\r\n    },\r\n    _updateScrollPosition: function(columnsArea, rowsArea, dataArea) {\r\n        var that = this;\r\n        var scrollTop;\r\n        var scrollLeft;\r\n        var scrolled = that._scrollTop || that._scrollLeft;\r\n        if (that._scrollUpdating) {\r\n            return\r\n        }\r\n        that._scrollUpdating = true;\r\n        if (rowsArea && !rowsArea.hasScroll() && that._hasHeight) {\r\n            that._scrollTop = null\r\n        }\r\n        if (columnsArea && !columnsArea.hasScroll()) {\r\n            that._scrollLeft = null\r\n        }\r\n        if (null !== that._scrollTop || null !== that._scrollLeft || scrolled || that.option(\"rtlEnabled\")) {\r\n            scrollTop = that._scrollTop || 0;\r\n            scrollLeft = that._scrollLeft || 0;\r\n            dataArea.scrollTo({\r\n                x: scrollLeft,\r\n                y: scrollTop\r\n            });\r\n            columnsArea.scrollTo(scrollLeft);\r\n            rowsArea.scrollTo(scrollTop);\r\n            that._dataController.updateWindowScrollPosition(that._scrollTop)\r\n        }\r\n        that._scrollUpdating = false\r\n    },\r\n    _subscribeToEvents: function(columnsArea, rowsArea, dataArea) {\r\n        var that = this;\r\n        var scrollHandler = function(e) {\r\n            var scrollOffset = e.scrollOffset;\r\n            var leftOffset = (0, _type.isDefined)(scrollOffset.left) ? scrollOffset.left : that._scrollLeft;\r\n            var topOffset = (0, _type.isDefined)(scrollOffset.top) && that._hasHeight ? scrollOffset.top : that._scrollTop;\r\n            if ((that._scrollLeft || 0) !== (leftOffset || 0) || (that._scrollTop || 0) !== (topOffset || 0)) {\r\n                that._scrollLeft = leftOffset;\r\n                that._scrollTop = topOffset;\r\n                that._updateScrollPosition(columnsArea, rowsArea, dataArea);\r\n                if (\"virtual\" === that.option(\"scrolling.mode\")) {\r\n                    that._dataController.setViewportPosition(that._scrollLeft, that._scrollTop)\r\n                }\r\n            }\r\n        };\r\n        (0, _iterator.each)([columnsArea, rowsArea, dataArea], function(_, area) {\r\n            subscribeToScrollEvent(area, scrollHandler)\r\n        });\r\n        !that._hasHeight && that._dataController.subscribeToWindowScrollEvents(dataArea.groupElement())\r\n    },\r\n    _clean: _common.noop,\r\n    _needDelayResizing: function(cellsInfo) {\r\n        var cellsCount = cellsInfo.length * (cellsInfo.length ? cellsInfo[0].length : 0);\r\n        return cellsCount > this.option(\"renderCellCountLimit\")\r\n    },\r\n    _renderFieldChooser: function() {\r\n        var that = this;\r\n        var container = that._pivotGridContainer;\r\n        var fieldChooserOptions = that.option(\"fieldChooser\") || {};\r\n        var toolbarItems = \"onDemand\" === fieldChooserOptions.applyChangesMode ? [{\r\n            toolbar: \"bottom\",\r\n            location: \"after\",\r\n            widget: \"dxButton\",\r\n            options: {\r\n                text: _message.default.format(\"OK\"),\r\n                onClick: function(e) {\r\n                    that._fieldChooserPopup.$content().dxPivotGridFieldChooser(\"applyChanges\");\r\n                    that._fieldChooserPopup.hide()\r\n                }\r\n            }\r\n        }, {\r\n            toolbar: \"bottom\",\r\n            location: \"after\",\r\n            widget: \"dxButton\",\r\n            options: {\r\n                text: _message.default.format(\"Cancel\"),\r\n                onClick: function(e) {\r\n                    that._fieldChooserPopup.hide()\r\n                }\r\n            }\r\n        }] : [];\r\n        var fieldChooserComponentOptions = {\r\n            layout: fieldChooserOptions.layout,\r\n            texts: fieldChooserOptions.texts || {},\r\n            dataSource: that.getDataSource(),\r\n            allowSearch: fieldChooserOptions.allowSearch,\r\n            searchTimeout: fieldChooserOptions.searchTimeout,\r\n            width: void 0,\r\n            height: void 0,\r\n            headerFilter: that.option(\"headerFilter\"),\r\n            encodeHtml: that.option(\"encodeHtml\"),\r\n            applyChangesMode: fieldChooserOptions.applyChangesMode,\r\n            onContextMenuPreparing: function(e) {\r\n                that._trigger(\"onContextMenuPreparing\", e)\r\n            }\r\n        };\r\n        var popupOptions = {\r\n            shading: false,\r\n            title: fieldChooserOptions.title,\r\n            width: fieldChooserOptions.width,\r\n            height: fieldChooserOptions.height,\r\n            showCloseButton: true,\r\n            resizeEnabled: true,\r\n            minWidth: fieldChooserOptions.minWidth,\r\n            minHeight: fieldChooserOptions.minHeight,\r\n            toolbarItems: toolbarItems,\r\n            onResize: function(e) {\r\n                e.component.$content().dxPivotGridFieldChooser(\"updateDimensions\")\r\n            },\r\n            onShown: function(e) {\r\n                that._createComponent(e.component.content(), _uiPivot_grid6.default, fieldChooserComponentOptions)\r\n            },\r\n            onHidden: function(e) {\r\n                var fieldChooser = e.component.$content().dxPivotGridFieldChooser(\"instance\");\r\n                fieldChooser.resetTreeView();\r\n                fieldChooser.cancelChanges()\r\n            }\r\n        };\r\n        if (that._fieldChooserPopup) {\r\n            that._fieldChooserPopup.option(popupOptions);\r\n            that._fieldChooserPopup.$content().dxPivotGridFieldChooser(fieldChooserComponentOptions)\r\n        } else {\r\n            that._fieldChooserPopup = that._createComponent((0, _renderer.default)(DIV).addClass(FIELD_CHOOSER_POPUP_CLASS).appendTo(container), _popup.default, popupOptions)\r\n        }\r\n    },\r\n    _renderContextMenu: function() {\r\n        var that = this;\r\n        var $container = that._pivotGridContainer;\r\n        if (that._contextMenu) {\r\n            that._contextMenu.$element().remove()\r\n        }\r\n        that._contextMenu = that._createComponent((0, _renderer.default)(DIV).appendTo($container), _context_menu.default, {\r\n            onPositioning: function(actionArgs) {\r\n                var event = actionArgs.event;\r\n                actionArgs.cancel = true;\r\n                if (!event) {\r\n                    return\r\n                }\r\n                var targetElement = event.target.cellIndex >= 0 ? event.target : (0, _renderer.default)(event.target).closest(\"td\").get(0);\r\n                if (!targetElement) {\r\n                    return\r\n                }\r\n                var args = that._createEventArgs(targetElement, event);\r\n                var items = that._getContextMenuItems(args);\r\n                if (items) {\r\n                    actionArgs.component.option(\"items\", items);\r\n                    actionArgs.cancel = false;\r\n                    return\r\n                }\r\n            },\r\n            onItemClick: function(params) {\r\n                params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n            },\r\n            cssClass: PIVOTGRID_CLASS,\r\n            target: that.$element()\r\n        })\r\n    },\r\n    _getContextMenuItems: function(e) {\r\n        var that = this;\r\n        var items = [];\r\n        var texts = that.option(\"texts\");\r\n        if (\"row\" === e.area || \"column\" === e.area) {\r\n            var areaFields = e[e.area + \"Fields\"];\r\n            var oppositeAreaFields = e[\"column\" === e.area ? \"rowFields\" : \"columnFields\"];\r\n            var field = e.cell.path && areaFields[e.cell.path.length - 1];\r\n            var dataSource = that.getDataSource();\r\n            if (field && field.allowExpandAll && e.cell.path.length < e[e.area + \"Fields\"].length && !dataSource.paginate()) {\r\n                items.push({\r\n                    beginGroup: true,\r\n                    icon: \"none\",\r\n                    text: texts.expandAll,\r\n                    onItemClick: function() {\r\n                        dataSource.expandAll(field.index)\r\n                    }\r\n                });\r\n                items.push({\r\n                    text: texts.collapseAll,\r\n                    icon: \"none\",\r\n                    onItemClick: function() {\r\n                        dataSource.collapseAll(field.index)\r\n                    }\r\n                })\r\n            }\r\n            if (e.cell.isLast && !dataSource.paginate()) {\r\n                var sortingBySummaryItemCount = 0;\r\n                (0, _iterator.each)(oppositeAreaFields, function(index, field) {\r\n                    if (!field.allowSortingBySummary) {\r\n                        return\r\n                    }(0, _iterator.each)(e.dataFields, function(dataIndex, dataField) {\r\n                        if ((0, _type.isDefined)(e.cell.dataIndex) && e.cell.dataIndex !== dataIndex) {\r\n                            return\r\n                        }\r\n                        var showDataFieldCaption = !(0, _type.isDefined)(e.cell.dataIndex) && e.dataFields.length > 1;\r\n                        var textFormat = \"column\" === e.area ? texts.sortColumnBySummary : texts.sortRowBySummary;\r\n                        var checked = (0, _uiPivot_grid.findField)(e.dataFields, field.sortBySummaryField) === dataIndex && (e.cell.path || []).join(\"/\") === (field.sortBySummaryPath || []).join(\"/\");\r\n                        var text = (0, _string.format)(textFormat, showDataFieldCaption ? field.caption + \" - \" + dataField.caption : field.caption);\r\n                        items.push({\r\n                            beginGroup: 0 === sortingBySummaryItemCount,\r\n                            icon: checked ? \"desc\" === field.sortOrder ? \"sortdowntext\" : \"sortuptext\" : \"none\",\r\n                            text: text,\r\n                            onItemClick: function() {\r\n                                dataSource.field(field.index, {\r\n                                    sortBySummaryField: dataField.name || dataField.caption || dataField.dataField,\r\n                                    sortBySummaryPath: e.cell.path,\r\n                                    sortOrder: \"desc\" === field.sortOrder ? \"asc\" : \"desc\"\r\n                                });\r\n                                dataSource.load()\r\n                            }\r\n                        });\r\n                        sortingBySummaryItemCount++\r\n                    })\r\n                });\r\n                (0, _iterator.each)(oppositeAreaFields, function(index, field) {\r\n                    if (!field.allowSortingBySummary || !(0, _type.isDefined)(field.sortBySummaryField)) {\r\n                        return\r\n                    }\r\n                    items.push({\r\n                        beginGroup: 0 === sortingBySummaryItemCount,\r\n                        icon: \"none\",\r\n                        text: texts.removeAllSorting,\r\n                        onItemClick: function() {\r\n                            (0, _iterator.each)(oppositeAreaFields, function(index, field) {\r\n                                dataSource.field(field.index, {\r\n                                    sortBySummaryField: void 0,\r\n                                    sortBySummaryPath: void 0,\r\n                                    sortOrder: void 0\r\n                                })\r\n                            });\r\n                            dataSource.load()\r\n                        }\r\n                    });\r\n                    return false\r\n                })\r\n            }\r\n        }\r\n        if (that.option(\"fieldChooser.enabled\")) {\r\n            items.push({\r\n                beginGroup: true,\r\n                icon: \"columnchooser\",\r\n                text: texts.showFieldChooser,\r\n                onItemClick: function() {\r\n                    that._fieldChooserPopup.show()\r\n                }\r\n            })\r\n        }\r\n        if (that.option(\"export.enabled\")) {\r\n            items.push({\r\n                beginGroup: true,\r\n                icon: \"xlsxfile\",\r\n                text: texts.exportToExcel,\r\n                onItemClick: function() {\r\n                    that.exportToExcel()\r\n                }\r\n            })\r\n        }\r\n        e.items = items;\r\n        that._trigger(\"onContextMenuPreparing\", e);\r\n        items = e.items;\r\n        if (items && items.length) {\r\n            return items\r\n        }\r\n    },\r\n    _createEventArgs: function(targetElement, dxEvent) {\r\n        var that = this;\r\n        var dataSource = that.getDataSource();\r\n        var args = {\r\n            rowFields: dataSource.getAreaFields(\"row\"),\r\n            columnFields: dataSource.getAreaFields(\"column\"),\r\n            dataFields: dataSource.getAreaFields(\"data\"),\r\n            event: dxEvent\r\n        };\r\n        if (clickedOnFieldsArea((0, _renderer.default)(targetElement))) {\r\n            return (0, _extend.extend)(that._createFieldArgs(targetElement), args)\r\n        } else {\r\n            return (0, _extend.extend)(that._createCellArgs(targetElement), args)\r\n        }\r\n    },\r\n    _createFieldArgs: function(targetElement) {\r\n        var field = (0, _renderer.default)(targetElement).children().data(\"field\");\r\n        var args = {\r\n            field: field\r\n        };\r\n        return (0, _type.isDefined)(field) ? args : {}\r\n    },\r\n    _createCellArgs: function(cellElement) {\r\n        var $cellElement = (0, _renderer.default)(cellElement);\r\n        var columnIndex = cellElement.cellIndex;\r\n        var rowIndex = cellElement.parentElement.rowIndex;\r\n        var $table = $cellElement.closest(\"table\");\r\n        var data = $table.data(\"data\");\r\n        var cell = data && data[rowIndex] && data[rowIndex][columnIndex];\r\n        var args = {\r\n            area: $table.data(\"area\"),\r\n            rowIndex: rowIndex,\r\n            columnIndex: columnIndex,\r\n            cellElement: (0, _element.getPublicElement)($cellElement),\r\n            cell: cell\r\n        };\r\n        return args\r\n    },\r\n    _handleCellClick: function(e) {\r\n        var that = this;\r\n        var args = that._createEventArgs(e.currentTarget, e);\r\n        var cell = args.cell;\r\n        if (!cell || !args.area && (args.rowIndex || args.columnIndex)) {\r\n            return\r\n        }\r\n        that._trigger(\"onCellClick\", args);\r\n        cell && !args.cancel && (0, _type.isDefined)(cell.expanded) && setTimeout(function() {\r\n            that._dataController[cell.expanded ? \"collapseHeaderItem\" : \"expandHeaderItem\"](args.area, cell.path)\r\n        })\r\n    },\r\n    _getNoDataText: function() {\r\n        return this.option(\"texts.noData\")\r\n    },\r\n    _renderNoDataText: _uiGrid_core.default.renderNoDataText,\r\n    _renderLoadPanel: _uiGrid_core.default.renderLoadPanel,\r\n    _updateLoading: function(progress) {\r\n        var that = this;\r\n        var isLoading = that._dataController.isLoading();\r\n        if (!that._loadPanel) {\r\n            return\r\n        }\r\n        var loadPanelVisible = that._loadPanel.option(\"visible\");\r\n        if (!loadPanelVisible) {\r\n            that._startLoadingTime = new Date\r\n        }\r\n        if (isLoading) {\r\n            if (progress) {\r\n                if (new Date - that._startLoadingTime >= 1e3) {\r\n                    that._loadPanel.option(\"message\", Math.floor(100 * progress) + \"%\")\r\n                }\r\n            } else {\r\n                that._loadPanel.option(\"message\", that.option(\"loadPanel.text\"))\r\n            }\r\n        }\r\n        clearTimeout(that._hideLoadingTimeoutID);\r\n        if (loadPanelVisible && !isLoading) {\r\n            that._hideLoadingTimeoutID = setTimeout(function() {\r\n                that._loadPanel.option(\"visible\", false);\r\n                that.$element().removeClass(OVERFLOW_HIDDEN_CLASS)\r\n            })\r\n        } else {\r\n            that._loadPanel.option(\"visible\", isLoading);\r\n            that.$element().toggleClass(OVERFLOW_HIDDEN_CLASS, !isLoading)\r\n        }\r\n    },\r\n    _renderDescriptionArea: function() {\r\n        var _this = this;\r\n        var $element = this.$element();\r\n        var $descriptionCell = $element.find(\".\" + DESCRIPTION_AREA_CELL_CLASS);\r\n        var $toolbarContainer = (0, _renderer.default)(DIV).addClass(\"dx-pivotgrid-toolbar\");\r\n        var fieldPanel = this.option(\"fieldPanel\");\r\n        var $filterHeader = $element.find(\".dx-filter-header\");\r\n        var $columnHeader = $element.find(\".dx-column-header\");\r\n        var $targetContainer;\r\n        if (fieldPanel.visible && fieldPanel.showFilterFields) {\r\n            $targetContainer = $filterHeader\r\n        } else {\r\n            if (fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields)) {\r\n                $targetContainer = $columnHeader\r\n            } else {\r\n                $targetContainer = $descriptionCell\r\n            }\r\n        }\r\n        $columnHeader.toggleClass(BOTTOM_BORDER_CLASS, !!(fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields)));\r\n        $filterHeader.toggleClass(BOTTOM_BORDER_CLASS, !!(fieldPanel.visible && fieldPanel.showFilterFields));\r\n        $descriptionCell.toggleClass(\"dx-pivotgrid-background\", fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields || fieldPanel.showRowFields));\r\n        this.$element().find(\".dx-pivotgrid-toolbar\").remove();\r\n        $toolbarContainer.prependTo($targetContainer);\r\n        if (this.option(\"fieldChooser.enabled\")) {\r\n            var $buttonElement = (0, _renderer.default)(DIV).appendTo($toolbarContainer).addClass(\"dx-pivotgrid-field-chooser-button\");\r\n            var buttonOptions = {\r\n                icon: \"columnchooser\",\r\n                hint: this.option(\"texts.showFieldChooser\"),\r\n                onClick: function() {\r\n                    _this.getFieldChooserPopup().show()\r\n                }\r\n            };\r\n            this._createComponent($buttonElement, \"dxButton\", buttonOptions)\r\n        }\r\n        if (this.option(\"export.enabled\")) {\r\n            var _$buttonElement = (0, _renderer.default)(DIV).appendTo($toolbarContainer).addClass(\"dx-pivotgrid-export-button\");\r\n            var _buttonOptions = {\r\n                icon: \"xlsxfile\",\r\n                hint: this.option(\"texts.exportToExcel\"),\r\n                onClick: function() {\r\n                    _this.exportToExcel()\r\n                }\r\n            };\r\n            this._createComponent(_$buttonElement, \"dxButton\", _buttonOptions)\r\n        }\r\n    },\r\n    _detectHasContainerHeight: function() {\r\n        var that = this;\r\n        var element = that.$element();\r\n        if ((0, _type.isDefined)(that._hasHeight)) {\r\n            var height = that.option(\"height\") || that.$element().get(0).style.height;\r\n            if (height && that._hasHeight ^ \"auto\" !== height) {\r\n                that._hasHeight = null\r\n            }\r\n        }\r\n        if ((0, _type.isDefined)(that._hasHeight) || element.is(\":hidden\")) {\r\n            return\r\n        }\r\n        that._pivotGridContainer.addClass(\"dx-hidden\");\r\n        var testElement = (0, _renderer.default)(DIV).height(TEST_HEIGHT);\r\n        element.append(testElement);\r\n        that._hasHeight = element.height() !== TEST_HEIGHT;\r\n        that._pivotGridContainer.removeClass(\"dx-hidden\");\r\n        testElement.remove()\r\n    },\r\n    _renderHeaders: function(rowHeaderContainer, columnHeaderContainer, filterHeaderContainer, dataHeaderContainer) {\r\n        var that = this;\r\n        var dataSource = that.getDataSource();\r\n        that._rowFields = that._rowFields || new _uiPivot_grid5.FieldsArea(that, \"row\");\r\n        that._rowFields.render(rowHeaderContainer, dataSource.getAreaFields(\"row\"));\r\n        that._columnFields = that._columnFields || new _uiPivot_grid5.FieldsArea(that, \"column\");\r\n        that._columnFields.render(columnHeaderContainer, dataSource.getAreaFields(\"column\"));\r\n        that._filterFields = that._filterFields || new _uiPivot_grid5.FieldsArea(that, \"filter\");\r\n        that._filterFields.render(filterHeaderContainer, dataSource.getAreaFields(\"filter\"));\r\n        that._dataFields = that._dataFields || new _uiPivot_grid5.FieldsArea(that, \"data\");\r\n        that._dataFields.render(dataHeaderContainer, dataSource.getAreaFields(\"data\"));\r\n        that.$element().dxPivotGridFieldChooserBase(\"instance\").renderSortable()\r\n    },\r\n    _createTableElement: function() {\r\n        var that = this;\r\n        var $table = (0, _renderer.default)(\"<table>\").css({\r\n            width: \"100%\"\r\n        }).toggleClass(BORDERS_CLASS, !!that.option(\"showBorders\")).toggleClass(\"dx-word-wrap\", !!that.option(\"wordWrapEnabled\"));\r\n        _events_engine.default.on($table, (0, _index.addNamespace)(_click.name, \"dxPivotGrid\"), \"td\", that._handleCellClick.bind(that));\r\n        return $table\r\n    },\r\n    _renderDataArea: function(dataAreaElement) {\r\n        var that = this;\r\n        var dataArea = that._dataArea || new _uiPivot_grid3.DataArea(that);\r\n        that._dataArea = dataArea;\r\n        dataArea.render(dataAreaElement, that._dataController.getCellsInfo());\r\n        return dataArea\r\n    },\r\n    _renderRowsArea: function(rowsAreaElement) {\r\n        var that = this;\r\n        var rowsArea = that._rowsArea || new _uiPivot_grid4.VerticalHeadersArea(that);\r\n        that._rowsArea = rowsArea;\r\n        rowsArea.render(rowsAreaElement, that._dataController.getRowsInfo());\r\n        return rowsArea\r\n    },\r\n    _renderColumnsArea: function(columnsAreaElement) {\r\n        var that = this;\r\n        var columnsArea = that._columnsArea || new _uiPivot_grid4.HorizontalHeadersArea(that);\r\n        that._columnsArea = columnsArea;\r\n        columnsArea.render(columnsAreaElement, that._dataController.getColumnsInfo());\r\n        return columnsArea\r\n    },\r\n    _initMarkup: function() {\r\n        var that = this;\r\n        that.callBase.apply(this, arguments);\r\n        that.$element().addClass(PIVOTGRID_CLASS)\r\n    },\r\n    _renderContentImpl: function() {\r\n        var that = this;\r\n        var columnsAreaElement;\r\n        var rowsAreaElement;\r\n        var dataAreaElement;\r\n        var tableElement;\r\n        var isFirstDrawing = !that._pivotGridContainer;\r\n        var rowHeaderContainer;\r\n        var columnHeaderContainer;\r\n        var filterHeaderContainer;\r\n        var dataHeaderContainer;\r\n        tableElement = !isFirstDrawing && that._tableElement();\r\n        if (!tableElement) {\r\n            that.$element().addClass(ROW_LINES_CLASS).addClass(FIELDS_CONTAINER_CLASS);\r\n            that._pivotGridContainer = (0, _renderer.default)(DIV).addClass(\"dx-pivotgrid-container\");\r\n            that._renderFieldChooser();\r\n            that._renderContextMenu();\r\n            columnsAreaElement = (0, _renderer.default)(TD).addClass(COLUMN_AREA_CELL_CLASS);\r\n            rowsAreaElement = (0, _renderer.default)(TD).addClass(ROW_AREA_CELL_CLASS);\r\n            dataAreaElement = (0, _renderer.default)(TD).addClass(DATA_AREA_CELL_CLASS);\r\n            tableElement = that._createTableElement();\r\n            dataHeaderContainer = (0, _renderer.default)(TD).addClass(\"dx-data-header\");\r\n            filterHeaderContainer = (0, _renderer.default)(\"<td>\").attr(\"colspan\", \"2\").addClass(\"dx-filter-header\");\r\n            columnHeaderContainer = (0, _renderer.default)(TD).addClass(\"dx-column-header\");\r\n            rowHeaderContainer = (0, _renderer.default)(TD).addClass(DESCRIPTION_AREA_CELL_CLASS);\r\n            (0, _renderer.default)(TR).append(filterHeaderContainer).appendTo(tableElement);\r\n            (0, _renderer.default)(TR).append(dataHeaderContainer).append(columnHeaderContainer).appendTo(tableElement);\r\n            (0, _renderer.default)(TR).toggleClass(\"dx-ie\", true === _browser.default.msie).append(rowHeaderContainer).append(columnsAreaElement).appendTo(tableElement);\r\n            (0, _renderer.default)(TR).addClass(BOTTOM_ROW_CLASS).append(rowsAreaElement).append(dataAreaElement).appendTo(tableElement);\r\n            that._pivotGridContainer.append(tableElement);\r\n            that.$element().append(that._pivotGridContainer);\r\n            if (\"tree\" === that.option(\"rowHeaderLayout\")) {\r\n                rowsAreaElement.addClass(\"dx-area-tree-view\")\r\n            }\r\n        }\r\n        that.$element().addClass(OVERFLOW_HIDDEN_CLASS);\r\n        that._createComponent(that.$element(), _uiPivot_grid7.default, {\r\n            dataSource: that.getDataSource(),\r\n            encodeHtml: that.option(\"encodeHtml\"),\r\n            allowFieldDragging: that.option(\"fieldPanel.allowFieldDragging\"),\r\n            headerFilter: that.option(\"headerFilter\"),\r\n            visible: that.option(\"visible\")\r\n        });\r\n        var dataArea = that._renderDataArea(dataAreaElement);\r\n        var rowsArea = that._renderRowsArea(rowsAreaElement);\r\n        var columnsArea = that._renderColumnsArea(columnsAreaElement);\r\n        dataArea.tableElement().prepend(columnsArea.headElement());\r\n        if (isFirstDrawing) {\r\n            that._renderLoadPanel(dataArea.groupElement().parent(), that.$element());\r\n            that._renderDescriptionArea();\r\n            rowsArea.processScroll();\r\n            columnsArea.processScroll()\r\n        } [dataArea, rowsArea, columnsArea].forEach(function(area) {\r\n            unsubscribeScrollEvents(area)\r\n        });\r\n        that._renderHeaders(rowHeaderContainer, columnHeaderContainer, filterHeaderContainer, dataHeaderContainer);\r\n        that._update(isFirstDrawing)\r\n    },\r\n    _update: function(isFirstDrawing) {\r\n        var that = this;\r\n        var updateHandler = function() {\r\n            that.updateDimensions()\r\n        };\r\n        if (that._needDelayResizing(that._dataArea.getData()) && isFirstDrawing) {\r\n            setTimeout(updateHandler)\r\n        } else {\r\n            updateHandler()\r\n        }\r\n    },\r\n    _fireContentReadyAction: function() {\r\n        if (!this._dataController.isLoading()) {\r\n            this.callBase()\r\n        }\r\n    },\r\n    getScrollPath: function(area) {\r\n        var that = this;\r\n        if (\"column\" === area) {\r\n            return that._columnsArea.getScrollPath(that._scrollLeft)\r\n        } else {\r\n            return that._rowsArea.getScrollPath(that._scrollTop)\r\n        }\r\n    },\r\n    getDataSource: function() {\r\n        return this._dataController.getDataSource()\r\n    },\r\n    getFieldChooserPopup: function() {\r\n        return this._fieldChooserPopup\r\n    },\r\n    hasScroll: function(area) {\r\n        var that = this;\r\n        return \"column\" === area ? that._columnsArea.hasScroll() : that._rowsArea.hasScroll()\r\n    },\r\n    _dimensionChanged: function() {\r\n        this.updateDimensions()\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this.updateDimensions()\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        var that = this;\r\n        clearTimeout(that._hideLoadingTimeoutID);\r\n        that.callBase.apply(that, arguments);\r\n        if (that._dataController) {\r\n            that._dataController.dispose()\r\n        }\r\n    },\r\n    _tableElement: function() {\r\n        return this.$element().find(\"table\").first()\r\n    },\r\n    addWidgetPrefix: function(className) {\r\n        return \"dx-pivotgrid-\" + className\r\n    },\r\n    resize: function() {\r\n        this.updateDimensions()\r\n    },\r\n    isReady: function() {\r\n        return this.callBase() && !this._dataController.isLoading()\r\n    },\r\n    updateDimensions: function() {\r\n        var that = this;\r\n        var groupWidth;\r\n        var tableElement = that._tableElement();\r\n        var rowsArea = that._rowsArea;\r\n        var columnsArea = that._columnsArea;\r\n        var dataArea = that._dataArea;\r\n        var bordersWidth;\r\n        var totalWidth = 0;\r\n        var totalHeight = 0;\r\n        var rowsAreaWidth = 0;\r\n        var hasRowsScroll;\r\n        var hasColumnsScroll;\r\n        var scrollingOptions = that.option(\"scrolling\") || {};\r\n        var scrollBarInfo = getScrollBarInfo(scrollingOptions.useNative);\r\n        var scrollBarWidth = scrollBarInfo.scrollBarWidth;\r\n        var dataAreaCell = tableElement.find(\".\" + DATA_AREA_CELL_CLASS);\r\n        var rowAreaCell = tableElement.find(\".\" + ROW_AREA_CELL_CLASS);\r\n        var columnAreaCell = tableElement.find(\".\" + COLUMN_AREA_CELL_CLASS);\r\n        var descriptionCell = tableElement.find(\".\" + DESCRIPTION_AREA_CELL_CLASS);\r\n        var filterHeaderCell = tableElement.find(\".dx-filter-header\");\r\n        var columnHeaderCell = tableElement.find(\".dx-column-header\");\r\n        var rowFieldsHeader = that._rowFields;\r\n        var d = new _deferred.Deferred;\r\n        if (!(0, _window.hasWindow)()) {\r\n            return\r\n        }\r\n        var needSynchronizeFieldPanel = rowFieldsHeader.isVisible() && \"tree\" !== that.option(\"rowHeaderLayout\");\r\n        that._detectHasContainerHeight();\r\n        if (!dataArea.headElement().length) {\r\n            dataArea.tableElement().prepend(columnsArea.headElement())\r\n        }\r\n        if (needSynchronizeFieldPanel) {\r\n            rowsArea.updateColspans(rowFieldsHeader.getColumnsCount());\r\n            rowsArea.tableElement().prepend(rowFieldsHeader.headElement())\r\n        }\r\n        tableElement.addClass(INCOMPRESSIBLE_FIELDS_CLASS);\r\n        dataArea.reset();\r\n        rowsArea.reset();\r\n        columnsArea.reset();\r\n        rowFieldsHeader.reset();\r\n        var calculateHasScroll = function(areaSize, totalSize) {\r\n            return totalSize - areaSize >= 1\r\n        };\r\n        var calculateGroupHeight = function(dataAreaHeight, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth) {\r\n            return hasRowsScroll ? dataAreaHeight : totalHeight + (hasColumnsScroll ? scrollBarWidth : 0)\r\n        };\r\n        (0, _common.deferUpdate)(function() {\r\n            var resultWidths = dataArea.getColumnsWidth();\r\n            var rowHeights = rowsArea.getRowsHeight();\r\n            var rowsAreaHeights = needSynchronizeFieldPanel ? rowHeights.slice(1) : rowHeights;\r\n            var dataAreaHeights = dataArea.getRowsHeight();\r\n            var descriptionCellHeight = (0, _size.getSize)(descriptionCell[0], \"height\", {\r\n                paddings: true,\r\n                borders: true,\r\n                margins: true\r\n            }) + (needSynchronizeFieldPanel ? rowHeights[0] : 0);\r\n            var columnsAreaRowCount = that._dataController.getColumnsInfo().length;\r\n            var resultHeights = (0, _uiPivot_grid.mergeArraysByMaxValue)(rowsAreaHeights, dataAreaHeights.slice(columnsAreaRowCount));\r\n            var columnsAreaRowHeights = dataAreaHeights.slice(0, columnsAreaRowCount);\r\n            var columnsAreaHeight = getArraySum(columnsAreaRowHeights);\r\n            var rowsAreaColumnWidths = rowsArea.getColumnsWidth();\r\n            var filterAreaHeight = 0;\r\n            var dataAreaHeight = 0;\r\n            if (that._hasHeight) {\r\n                filterAreaHeight = filterHeaderCell.height();\r\n                var $dataHeader = tableElement.find(\".dx-data-header\");\r\n                var dataHeaderHeight = _browser.default.msie ? (0, _size.getSize)($dataHeader.get(0), \"height\", {\r\n                    paddings: false,\r\n                    borders: false,\r\n                    margins: false\r\n                }) : $dataHeader.height();\r\n                bordersWidth = getCommonBorderWidth([columnAreaCell, dataAreaCell, tableElement, columnHeaderCell, filterHeaderCell], \"height\");\r\n                dataAreaHeight = that.$element().height() - filterAreaHeight - dataHeaderHeight - (Math.max(dataArea.headElement().height(), columnAreaCell.height(), descriptionCellHeight) + bordersWidth)\r\n            }\r\n            totalWidth = dataArea.tableElement().width();\r\n            totalHeight = getArraySum(resultHeights);\r\n            if (!totalWidth || !totalHeight) {\r\n                d.resolve();\r\n                return\r\n            }\r\n            rowsAreaWidth = getArraySum(rowsAreaColumnWidths);\r\n            var elementWidth = that.$element().width();\r\n            bordersWidth = getCommonBorderWidth([rowAreaCell, dataAreaCell, tableElement], \"width\");\r\n            groupWidth = elementWidth - rowsAreaWidth - bordersWidth;\r\n            groupWidth = groupWidth > 0 ? groupWidth : totalWidth;\r\n            var diff = totalWidth - groupWidth;\r\n            var needAdjustWidthOnZoom = diff >= 0 && diff <= 2;\r\n            if (needAdjustWidthOnZoom) {\r\n                adjustSizeArray(resultWidths, diff);\r\n                totalWidth = groupWidth\r\n            }\r\n            hasRowsScroll = that._hasHeight && calculateHasScroll(dataAreaHeight, totalHeight);\r\n            hasColumnsScroll = calculateHasScroll(groupWidth, totalWidth);\r\n            var groupHeight = calculateGroupHeight(dataAreaHeight, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth);\r\n            (0, _common.deferRender)(function() {\r\n                columnsArea.tableElement().append(dataArea.headElement());\r\n                rowFieldsHeader.tableElement().append(rowsArea.headElement());\r\n                if (!hasColumnsScroll && hasRowsScroll && scrollBarWidth) {\r\n                    adjustSizeArray(resultWidths, scrollBarWidth);\r\n                    totalWidth -= scrollBarWidth\r\n                }\r\n                if (descriptionCellHeight > columnsAreaHeight) {\r\n                    adjustSizeArray(columnsAreaRowHeights, columnsAreaHeight - descriptionCellHeight);\r\n                    columnsArea.setRowsHeight(columnsAreaRowHeights)\r\n                }\r\n                tableElement.removeClass(INCOMPRESSIBLE_FIELDS_CLASS);\r\n                columnHeaderCell.children().css(\"maxWidth\", groupWidth);\r\n                columnsArea.groupWidth(groupWidth);\r\n                columnsArea.processScrollBarSpacing(hasRowsScroll ? scrollBarWidth : 0);\r\n                columnsArea.setColumnsWidth(resultWidths);\r\n                rowsArea.groupHeight(that._hasHeight ? groupHeight : \"auto\");\r\n                rowsArea.processScrollBarSpacing(hasColumnsScroll ? scrollBarWidth : 0);\r\n                rowsArea.setColumnsWidth(rowsAreaColumnWidths);\r\n                rowsArea.setRowsHeight(resultHeights);\r\n                dataArea.setColumnsWidth(resultWidths);\r\n                dataArea.setRowsHeight(resultHeights);\r\n                dataArea.groupWidth(groupWidth);\r\n                dataArea.groupHeight(that._hasHeight ? groupHeight : \"auto\");\r\n                needSynchronizeFieldPanel && rowFieldsHeader.setColumnsWidth(rowsAreaColumnWidths);\r\n                dataAreaCell.toggleClass(BOTTOM_BORDER_CLASS, !hasRowsScroll);\r\n                rowAreaCell.toggleClass(BOTTOM_BORDER_CLASS, !hasRowsScroll);\r\n                if (!that._hasHeight && elementWidth !== that.$element().width()) {\r\n                    var _diff = elementWidth - that.$element().width();\r\n                    if (!hasColumnsScroll) {\r\n                        adjustSizeArray(resultWidths, _diff);\r\n                        columnsArea.setColumnsWidth(resultWidths);\r\n                        dataArea.setColumnsWidth(resultWidths)\r\n                    }\r\n                    dataArea.groupWidth(groupWidth - _diff);\r\n                    columnsArea.groupWidth(groupWidth - _diff)\r\n                }\r\n                if (that._hasHeight && that._filterFields.isVisible() && filterHeaderCell.height() !== filterAreaHeight) {\r\n                    var _diff2 = filterHeaderCell.height() - filterAreaHeight;\r\n                    if (_diff2 > 0) {\r\n                        hasRowsScroll = calculateHasScroll(dataAreaHeight - _diff2, totalHeight);\r\n                        var _groupHeight = calculateGroupHeight(dataAreaHeight - _diff2, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth);\r\n                        dataArea.groupHeight(_groupHeight);\r\n                        rowsArea.groupHeight(_groupHeight)\r\n                    }\r\n                }\r\n                if (\"virtual\" === scrollingOptions.mode) {\r\n                    var virtualContentParams = that._dataController.calculateVirtualContentParams({\r\n                        virtualRowHeight: scrollingOptions.virtualRowHeight,\r\n                        virtualColumnWidth: scrollingOptions.virtualColumnWidth,\r\n                        itemWidths: resultWidths,\r\n                        itemHeights: resultHeights,\r\n                        rowCount: resultHeights.length,\r\n                        columnCount: resultWidths.length,\r\n                        viewportWidth: groupWidth,\r\n                        viewportHeight: that._hasHeight ? groupHeight : (0, _renderer.default)(window).outerHeight()\r\n                    });\r\n                    dataArea.setVirtualContentParams({\r\n                        top: virtualContentParams.contentTop,\r\n                        left: virtualContentParams.contentLeft,\r\n                        width: virtualContentParams.width,\r\n                        height: virtualContentParams.height\r\n                    });\r\n                    rowsArea.setVirtualContentParams({\r\n                        top: virtualContentParams.contentTop,\r\n                        width: rowsAreaWidth,\r\n                        height: virtualContentParams.height\r\n                    });\r\n                    columnsArea.setVirtualContentParams({\r\n                        left: virtualContentParams.contentLeft,\r\n                        width: virtualContentParams.width,\r\n                        height: columnsArea.groupElement().height()\r\n                    })\r\n                }\r\n                var updateScrollableResults = [];\r\n                dataArea.processScroll(scrollBarInfo.scrollBarUseNative, hasColumnsScroll, hasRowsScroll);\r\n                (0, _iterator.each)([columnsArea, rowsArea, dataArea], function(_, area) {\r\n                    updateScrollableResults.push(area && area.updateScrollable())\r\n                });\r\n                that._updateLoading();\r\n                that._renderNoDataText(dataAreaCell);\r\n                _deferred.when.apply(_renderer.default, updateScrollableResults).done(function() {\r\n                    that._updateScrollPosition(columnsArea, rowsArea, dataArea);\r\n                    that._subscribeToEvents(columnsArea, rowsArea, dataArea);\r\n                    d.resolve()\r\n                })\r\n            })\r\n        });\r\n        return d\r\n    },\r\n    applyPartialDataSource: function(area, path, dataSource) {\r\n        this._dataController.applyPartialDataSource(area, path, dataSource)\r\n    }\r\n}).inherit(_uiPivot_grid8.ExportMixin).include(_uiPivot_grid9.default);\r\n(0, _component_registrator.default)(\"dxPivotGrid\", PivotGrid);\r\nvar _default = PivotGrid;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.filter_row.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_row\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"filterRow\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/axes/strip.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = createStrip;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction createStrip(axis, options) {\r\n    var storedCoord;\r\n    var lastStoredCoordinates;\r\n    var labelOptions = options.label || {};\r\n    return {\r\n        options: options,\r\n        label: null,\r\n        rect: null,\r\n        _getCoord: function() {\r\n            var canvas = axis._getCanvasStartEnd();\r\n            var range = axis._translator.getBusinessRange();\r\n            return axis._getStripPos(options.startValue, options.endValue, canvas.start, canvas.end, range)\r\n        },\r\n        _drawLabel: function(coords) {\r\n            return axis._renderer.text(labelOptions.text, coords.x, coords.y).css((0, _utils.patchFontOptions)((0, _extend.extend)({}, axis.getOptions().label.font, labelOptions.font))).attr({\r\n                align: \"center\",\r\n                \"class\": labelOptions.cssClass\r\n            }).append(axis._axisStripLabelGroup)\r\n        },\r\n        draw: function() {\r\n            if (axis._translator.getBusinessRange().isEmpty()) {\r\n                return\r\n            }\r\n            if (((0, _type.isDefined)(options.startValue) || (0, _type.isDefined)(options.endValue)) && (0, _type.isDefined)(options.color)) {\r\n                var stripPos = this._getCoord();\r\n                this.labelCoords = labelOptions.text ? axis._getStripLabelCoords(stripPos.from, stripPos.to, labelOptions) : null;\r\n                if (stripPos.outOfCanvas || !(0, _type.isDefined)(stripPos.to) || !(0, _type.isDefined)(stripPos.from)) {\r\n                    return\r\n                }\r\n                this.rect = axis._createStrip(axis._getStripGraphicAttributes(stripPos.from, stripPos.to)).attr({\r\n                    fill: options.color\r\n                }).append(axis._axisStripGroup);\r\n                this.label = labelOptions.text ? this._drawLabel(this.labelCoords) : null\r\n            }\r\n        },\r\n        getContentContainer: function() {\r\n            return this.label\r\n        },\r\n        removeLabel: function() {},\r\n        updatePosition: function(animate) {\r\n            var stripPos = this._getCoord();\r\n            if (animate && storedCoord) {\r\n                this.label && this.label.attr(axis._getStripLabelCoords(storedCoord.from, storedCoord.to, options.label));\r\n                this.rect && this.rect.attr(axis._getStripGraphicAttributes(storedCoord.from, storedCoord.to));\r\n                this.label && this.label.animate(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));\r\n                this.rect && this.rect.animate(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))\r\n            } else {\r\n                this.label && this.label.attr(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));\r\n                this.rect && this.rect.attr(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))\r\n            }\r\n        },\r\n        saveCoords: function() {\r\n            lastStoredCoordinates = storedCoord;\r\n            storedCoord = this._getCoord()\r\n        },\r\n        resetCoordinates: function() {\r\n            storedCoord = lastStoredCoordinates\r\n        }\r\n    }\r\n}\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tab_panel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _support = require(\"../core/utils/support\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _multi_view = _interopRequireDefault(require(\"./multi_view\"));\r\nvar _tabs = _interopRequireDefault(require(\"./tabs\"));\r\nvar _item = _interopRequireDefault(require(\"./tab_panel/item\"));\r\nvar _icon = require(\"../core/utils/icon\");\r\nvar _element = require(\"../core/element\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _bindable_template = require(\"../core/templates/bindable_template\");\r\nvar _window = require(\"../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TABPANEL_CLASS = \"dx-tabpanel\";\r\nvar TABPANEL_TABS_CLASS = \"dx-tabpanel-tabs\";\r\nvar TABPANEL_CONTAINER_CLASS = \"dx-tabpanel-container\";\r\nvar TABS_ITEM_TEXT_CLASS = \"dx-tab-text\";\r\nvar TabPanel = _multi_view.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            itemTitleTemplate: \"title\",\r\n            hoverStateEnabled: true,\r\n            showNavButtons: false,\r\n            scrollByContent: true,\r\n            scrollingEnabled: true,\r\n            onTitleClick: null,\r\n            onTitleHold: null,\r\n            onTitleRendered: null,\r\n            badgeExpr: function(data) {\r\n                return data ? data.badge : void 0\r\n            }\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return !_support.touch\r\n            },\r\n            options: {\r\n                swipeEnabled: false\r\n            }\r\n        }, {\r\n            device: {\r\n                platform: \"generic\"\r\n            },\r\n            options: {\r\n                animationEnabled: false\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(TABPANEL_CLASS);\r\n        this.setAria(\"role\", \"tabpanel\")\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._createTitleActions();\r\n        this._renderLayout()\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            title: new _bindable_template.BindableTemplate(function($container, data) {\r\n                if ((0, _type.isPlainObject)(data)) {\r\n                    var $iconElement = (0, _icon.getImageContainer)(data.icon);\r\n                    if ($iconElement) {\r\n                        $container.append($iconElement)\r\n                    }\r\n                    if ((0, _type.isDefined)(data.title) && !(0, _type.isPlainObject)(data.title)) {\r\n                        $container.append(_dom_adapter.default.createTextNode(data.title))\r\n                    }\r\n                } else {\r\n                    if ((0, _type.isDefined)(data)) {\r\n                        $container.text(String(data))\r\n                    }\r\n                }\r\n                $container.wrapInner((0, _renderer.default)(\"<span>\").addClass(TABS_ITEM_TEXT_CLASS))\r\n            }, [\"title\", \"icon\"], this.option(\"integrationOptions.watchMethod\"))\r\n        })\r\n    },\r\n    _createTitleActions: function() {\r\n        this._createTitleClickAction();\r\n        this._createTitleHoldAction();\r\n        this._createTitleRenderedAction()\r\n    },\r\n    _createTitleClickAction: function() {\r\n        this._titleClickAction = this._createActionByOption(\"onTitleClick\")\r\n    },\r\n    _createTitleHoldAction: function() {\r\n        this._titleHoldAction = this._createActionByOption(\"onTitleHold\")\r\n    },\r\n    _createTitleRenderedAction: function() {\r\n        this._titleRenderedAction = this._createActionByOption(\"onTitleRendered\")\r\n    },\r\n    _renderContent: function() {\r\n        var that = this;\r\n        this.callBase();\r\n        if (this.option(\"templatesRenderAsynchronously\")) {\r\n            this._resizeEventTimer = setTimeout(function() {\r\n                that._updateLayout()\r\n            }, 0)\r\n        }\r\n    },\r\n    _renderLayout: function() {\r\n        if (this._tabs) {\r\n            this._updateLayout();\r\n            return\r\n        }\r\n        var $element = this.$element();\r\n        this._$tabContainer = (0, _renderer.default)(\"<div>\").addClass(TABPANEL_TABS_CLASS).appendTo($element);\r\n        var $tabs = (0, _renderer.default)(\"<div>\").appendTo(this._$tabContainer);\r\n        this._tabs = this._createComponent($tabs, _tabs.default, this._tabConfig());\r\n        this._$container = (0, _renderer.default)(\"<div>\").addClass(TABPANEL_CONTAINER_CLASS).appendTo($element);\r\n        this._$container.append(this._$wrapper);\r\n        this._updateLayout()\r\n    },\r\n    _updateLayout: function() {\r\n        if ((0, _window.hasWindow)()) {\r\n            var tabsHeight = this._$tabContainer.outerHeight();\r\n            this._$container.css({\r\n                marginTop: -tabsHeight,\r\n                paddingTop: tabsHeight\r\n            })\r\n        }\r\n    },\r\n    _refreshActiveDescendant: function() {\r\n        if (!this._tabs) {\r\n            return\r\n        }\r\n        var tabs = this._tabs;\r\n        var tabItems = tabs.itemElements();\r\n        var $activeTab = (0, _renderer.default)(tabItems[tabs.option(\"selectedIndex\")]);\r\n        var id = this.getFocusedItemId();\r\n        this.setAria(\"controls\", void 0, (0, _renderer.default)(tabItems));\r\n        this.setAria(\"controls\", id, $activeTab)\r\n    },\r\n    _tabConfig: function() {\r\n        return {\r\n            selectOnFocus: true,\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n            repaintChangesOnly: this.option(\"repaintChangesOnly\"),\r\n            tabIndex: this.option(\"tabIndex\"),\r\n            selectedIndex: this.option(\"selectedIndex\"),\r\n            badgeExpr: this.option(\"badgeExpr\"),\r\n            onItemClick: this._titleClickAction.bind(this),\r\n            onItemHold: this._titleHoldAction.bind(this),\r\n            itemHoldTimeout: this.option(\"itemHoldTimeout\"),\r\n            onSelectionChanged: function(e) {\r\n                this.option(\"selectedIndex\", e.component.option(\"selectedIndex\"));\r\n                this._refreshActiveDescendant()\r\n            }.bind(this),\r\n            onItemRendered: this._titleRenderedAction.bind(this),\r\n            itemTemplate: this._getTemplateByOption(\"itemTitleTemplate\"),\r\n            items: this.option(\"items\"),\r\n            noDataText: null,\r\n            scrollingEnabled: this.option(\"scrollingEnabled\"),\r\n            scrollByContent: this.option(\"scrollByContent\"),\r\n            showNavButtons: this.option(\"showNavButtons\"),\r\n            itemTemplateProperty: \"tabTemplate\",\r\n            loopItemFocus: this.option(\"loop\"),\r\n            selectionRequired: true,\r\n            onOptionChanged: function(args) {\r\n                if (\"focusedElement\" === args.name) {\r\n                    if (args.value) {\r\n                        var $value = (0, _renderer.default)(args.value);\r\n                        var $newItem = this._itemElements().eq($value.index());\r\n                        this.option(\"focusedElement\", (0, _element.getPublicElement)($newItem))\r\n                    } else {\r\n                        this.option(\"focusedElement\", args.value)\r\n                    }\r\n                }\r\n            }.bind(this),\r\n            onFocusIn: function(args) {\r\n                this._focusInHandler(args.event)\r\n            }.bind(this),\r\n            onFocusOut: function(args) {\r\n                if (!this._isFocusOutHandlerExecuting) {\r\n                    this._focusOutHandler(args.event)\r\n                }\r\n            }.bind(this)\r\n        }\r\n    },\r\n    _renderFocusTarget: function() {\r\n        this._focusTarget().attr(\"tabIndex\", -1)\r\n    },\r\n    _updateFocusState: function(e, isFocused) {\r\n        this.callBase(e, isFocused);\r\n        if (e.target === this._tabs._focusTarget().get(0)) {\r\n            this._toggleFocusClass(isFocused, this._focusTarget())\r\n        }\r\n    },\r\n    _focusOutHandler: function(e) {\r\n        this._isFocusOutHandlerExecuting = true;\r\n        this.callBase.apply(this, arguments);\r\n        this._tabs._focusOutHandler(e);\r\n        this._isFocusOutHandlerExecuting = false\r\n    },\r\n    _setTabsOption: function(name, value) {\r\n        if (this._tabs) {\r\n            this._tabs.option(name, value)\r\n        }\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._tabs._dimensionChanged();\r\n            this._updateLayout()\r\n        }\r\n    },\r\n    registerKeyHandler: function(key, handler) {\r\n        this.callBase(key, handler);\r\n        if (this._tabs) {\r\n            this._tabs.registerKeyHandler(key, handler)\r\n        }\r\n    },\r\n    repaint: function() {\r\n        this.callBase();\r\n        this._tabs.repaint()\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name;\r\n        var value = args.value;\r\n        var fullName = args.fullName;\r\n        switch (name) {\r\n            case \"dataSource\":\r\n                this.callBase(args);\r\n                break;\r\n            case \"items\":\r\n                this._setTabsOption(name, this.option(name));\r\n                this._updateLayout();\r\n                if (!this.option(\"repaintChangesOnly\")) {\r\n                    this._tabs.repaint()\r\n                }\r\n                this.callBase(args);\r\n                break;\r\n            case \"width\":\r\n                this.callBase(args);\r\n                this._tabs.repaint();\r\n                break;\r\n            case \"selectedIndex\":\r\n            case \"selectedItem\":\r\n                this._setTabsOption(fullName, value);\r\n                this.callBase(args);\r\n                if (true === this.option(\"focusStateEnabled\")) {\r\n                    var selectedIndex = this.option(\"selectedIndex\");\r\n                    var selectedTabContent = this._itemElements().eq(selectedIndex);\r\n                    this.option(\"focusedElement\", (0, _element.getPublicElement)(selectedTabContent))\r\n                }\r\n                break;\r\n            case \"itemHoldTimeout\":\r\n            case \"focusStateEnabled\":\r\n            case \"hoverStateEnabled\":\r\n                this._setTabsOption(fullName, value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"scrollingEnabled\":\r\n            case \"scrollByContent\":\r\n            case \"showNavButtons\":\r\n                this._setTabsOption(fullName, value);\r\n                break;\r\n            case \"focusedElement\":\r\n                var id = value ? (0, _renderer.default)(value).index() : value;\r\n                var newItem = value ? this._tabs._itemElements().eq(id) : value;\r\n                this._setTabsOption(\"focusedElement\", (0, _element.getPublicElement)(newItem));\r\n                this.callBase(args);\r\n                break;\r\n            case \"itemTitleTemplate\":\r\n                this._setTabsOption(\"itemTemplate\", this._getTemplateByOption(\"itemTitleTemplate\"));\r\n                break;\r\n            case \"onTitleClick\":\r\n                this._createTitleClickAction();\r\n                this._setTabsOption(\"onItemClick\", this._titleClickAction.bind(this));\r\n                break;\r\n            case \"onTitleHold\":\r\n                this._createTitleHoldAction();\r\n                this._setTabsOption(\"onItemHold\", this._titleHoldAction.bind(this));\r\n                break;\r\n            case \"onTitleRendered\":\r\n                this._createTitleRenderedAction();\r\n                this._setTabsOption(\"onItemRendered\", this._titleRenderedAction.bind(this));\r\n                break;\r\n            case \"loop\":\r\n                this._setTabsOption(\"loopItemFocus\", value);\r\n                break;\r\n            case \"badgeExpr\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _clean: function() {\r\n        clearTimeout(this._resizeEventTimer);\r\n        this.callBase()\r\n    }\r\n});\r\nTabPanel.ItemClass = _item.default;\r\n(0, _component_registrator.default)(\"dxTabPanel\", TabPanel);\r\nvar _default = TabPanel;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.data_adapter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../../ui/widget/ui.errors\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../../ui/widget/ui.search_box_mixin\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _ui3 = _interopRequireDefault(require(\"./ui.data_converter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar EXPANDED = \"expanded\";\r\nvar SELECTED = \"selected\";\r\nvar DISABLED = \"disabled\";\r\nvar DataAdapter = _class.default.inherit({\r\n    ctor: function(options) {\r\n        this.options = {};\r\n        (0, _extend.extend)(this.options, this._defaultOptions(), options);\r\n        this.options.dataConverter.setDataAccessors(this.options.dataAccessors);\r\n        this._selectedNodesKeys = [];\r\n        this._expandedNodesKeys = [];\r\n        this._dataStructure = [];\r\n        this._createInternalDataStructure();\r\n        this.getTreeNodes()\r\n    },\r\n    setOption: function(name, value) {\r\n        this.options[name] = value;\r\n        if (\"recursiveSelection\" === name) {\r\n            this._updateSelection()\r\n        }\r\n    },\r\n    _defaultOptions: function() {\r\n        return {\r\n            dataAccessors: void 0,\r\n            items: [],\r\n            multipleSelection: true,\r\n            recursiveSelection: false,\r\n            recursiveExpansion: false,\r\n            rootValue: 0,\r\n            searchValue: \"\",\r\n            dataType: \"tree\",\r\n            searchMode: \"contains\",\r\n            dataConverter: new _ui3.default,\r\n            onNodeChanged: _common.noop,\r\n            sort: null\r\n        }\r\n    },\r\n    _createInternalDataStructure: function() {\r\n        this._initialDataStructure = this.options.dataConverter.createPlainStructure(this.options.items, this.options.rootValue, this.options.dataType);\r\n        this._dataStructure = this.options.searchValue.length ? this.search(this.options.searchValue) : this._initialDataStructure;\r\n        this.options.dataConverter._dataStructure = this._dataStructure;\r\n        this._updateSelection();\r\n        this._updateExpansion()\r\n    },\r\n    _updateSelection: function() {\r\n        if (this.options.recursiveSelection) {\r\n            this._setChildrenSelection();\r\n            this._setParentSelection()\r\n        }\r\n        this._selectedNodesKeys = this._updateNodesKeysArray(SELECTED)\r\n    },\r\n    _updateExpansion: function(key) {\r\n        if (this.options.recursiveExpansion) {\r\n            key ? this._updateOneBranch(key) : this._setParentExpansion()\r\n        }\r\n        this._expandedNodesKeys = this._updateNodesKeysArray(EXPANDED)\r\n    },\r\n    _updateNodesKeysArray: function(property) {\r\n        var that = this;\r\n        var array = [];\r\n        (0, _iterator.each)(that._getDataBySelectionMode(), function(_, node) {\r\n            if (!that._isNodeVisible(node)) {\r\n                return\r\n            }\r\n            if (node.internalFields[property]) {\r\n                if (property === EXPANDED || that.options.multipleSelection) {\r\n                    array.push(node.internalFields.key)\r\n                } else {\r\n                    array.length && that.toggleSelection(array[0], false, true);\r\n                    array = [node.internalFields.key]\r\n                }\r\n            }\r\n        });\r\n        return array\r\n    },\r\n    _getDataBySelectionMode: function() {\r\n        return this.options.multipleSelection ? this.getData() : this.getFullData()\r\n    },\r\n    _isNodeVisible: function(node) {\r\n        return false !== node.internalFields.item.visible\r\n    },\r\n    _getByKey: function(data, key) {\r\n        return data === this._dataStructure ? this.options.dataConverter._getByKey(key) : this.options.dataConverter.getByKey(data, key)\r\n    },\r\n    _setChildrenSelection: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n            if (!node.internalFields.childrenKeys.length) {\r\n                return\r\n            }\r\n            var isSelected = node.internalFields.selected;\r\n            true === isSelected && that._toggleChildrenSelection(node, isSelected)\r\n        })\r\n    },\r\n    _setParentSelection: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n            var parent = that.options.dataConverter.getParentNode(node);\r\n            if (parent && node.internalFields.parentKey !== that.options.rootValue) {\r\n                that._iterateParents(node, function(parent) {\r\n                    var newParentState = that._calculateSelectedState(parent);\r\n                    that._setFieldState(parent, SELECTED, newParentState)\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _setParentExpansion: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n            if (!node.internalFields.expanded) {\r\n                return\r\n            }\r\n            that._updateOneBranch(node.internalFields.key)\r\n        })\r\n    },\r\n    _updateOneBranch: function(key) {\r\n        var that = this;\r\n        var node = this.getNodeByKey(key);\r\n        that._iterateParents(node, function(parent) {\r\n            that._setFieldState(parent, EXPANDED, true)\r\n        })\r\n    },\r\n    _iterateChildren: function(node, recursive, callback, processedKeys) {\r\n        if (!(0, _type.isFunction)(callback)) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var nodeKey = node.internalFields.key;\r\n        processedKeys = processedKeys || [];\r\n        if (processedKeys.indexOf(nodeKey) === -1) {\r\n            processedKeys.push(nodeKey);\r\n            (0, _iterator.each)(node.internalFields.childrenKeys, function(_, key) {\r\n                var child = that.getNodeByKey(key);\r\n                callback(child);\r\n                if (child.internalFields.childrenKeys.length && recursive) {\r\n                    that._iterateChildren(child, recursive, callback, processedKeys)\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _iterateParents: function(node, callback, processedKeys) {\r\n        if (node.internalFields.parentKey === this.options.rootValue || !(0, _type.isFunction)(callback)) {\r\n            return\r\n        }\r\n        processedKeys = processedKeys || [];\r\n        var key = node.internalFields.key;\r\n        if (processedKeys.indexOf(key) === -1) {\r\n            processedKeys.push(key);\r\n            var parent = this.options.dataConverter.getParentNode(node);\r\n            if (parent) {\r\n                callback(parent);\r\n                if (parent.internalFields.parentKey !== this.options.rootValue) {\r\n                    this._iterateParents(parent, callback, processedKeys)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _calculateSelectedState: function(node) {\r\n        var itemsCount = node.internalFields.childrenKeys.length;\r\n        var selectedItemsCount = 0;\r\n        var invisibleItemsCount = 0;\r\n        var result = false;\r\n        for (var i = 0; i <= itemsCount - 1; i++) {\r\n            var childNode = this.getNodeByKey(node.internalFields.childrenKeys[i]);\r\n            var isChildInvisible = false === childNode.internalFields.item.visible;\r\n            var childState = childNode.internalFields.selected;\r\n            if (isChildInvisible) {\r\n                invisibleItemsCount++;\r\n                continue\r\n            }\r\n            if (childState) {\r\n                selectedItemsCount++\r\n            } else {\r\n                if (void 0 === childState) {\r\n                    selectedItemsCount += .5\r\n                }\r\n            }\r\n        }\r\n        if (selectedItemsCount) {\r\n            result = selectedItemsCount === itemsCount - invisibleItemsCount ? true : void 0\r\n        }\r\n        return result\r\n    },\r\n    _toggleChildrenSelection: function(node, state) {\r\n        var that = this;\r\n        this._iterateChildren(node, true, function(child) {\r\n            if (that._isNodeVisible(child)) {\r\n                that._setFieldState(child, SELECTED, state)\r\n            }\r\n        })\r\n    },\r\n    _setFieldState: function(node, field, state) {\r\n        if (node.internalFields[field] === state) {\r\n            return\r\n        }\r\n        node.internalFields[field] = state;\r\n        if (node.internalFields.publicNode) {\r\n            node.internalFields.publicNode[field] = state\r\n        }\r\n        this.options.dataAccessors.setters[field](node.internalFields.item, state);\r\n        this.options.onNodeChanged(node)\r\n    },\r\n    _markChildren: function(keys) {\r\n        var that = this;\r\n        (0, _iterator.each)(keys, function(_, key) {\r\n            var index = that.getIndexByKey(key);\r\n            var node = that.getNodeByKey(key);\r\n            that._dataStructure[index] = 0;\r\n            node.internalFields.childrenKeys.length && that._markChildren(node.internalFields.childrenKeys)\r\n        })\r\n    },\r\n    _removeNode: function(key) {\r\n        var node = this.getNodeByKey(key);\r\n        this._dataStructure[this.getIndexByKey(key)] = 0;\r\n        this._markChildren(node.internalFields.childrenKeys);\r\n        var that = this;\r\n        var counter = 0;\r\n        var items = (0, _extend.extend)([], this._dataStructure);\r\n        (0, _iterator.each)(items, function(index, item) {\r\n            if (!item) {\r\n                that._dataStructure.splice(index - counter, 1);\r\n                counter++\r\n            }\r\n        })\r\n    },\r\n    _addNode: function(item) {\r\n        var dataConverter = this.options.dataConverter;\r\n        var node = dataConverter._convertItemToNode(item, this.options.dataAccessors.getters.parentKey(item));\r\n        this._dataStructure = this._dataStructure.concat(node);\r\n        this._initialDataStructure = this._initialDataStructure.concat(node);\r\n        dataConverter._dataStructure = dataConverter._dataStructure.concat(node)\r\n    },\r\n    _updateFields: function() {\r\n        this.options.dataConverter.updateChildrenKeys();\r\n        this._updateSelection();\r\n        this._updateExpansion()\r\n    },\r\n    getSelectedNodesKeys: function() {\r\n        return this._selectedNodesKeys\r\n    },\r\n    getExpandedNodesKeys: function() {\r\n        return this._expandedNodesKeys\r\n    },\r\n    getData: function() {\r\n        return this._dataStructure\r\n    },\r\n    getFullData: function() {\r\n        return this._initialDataStructure\r\n    },\r\n    getNodeByItem: function(item) {\r\n        var result = null;\r\n        (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n            if (node.internalFields.item === item) {\r\n                result = node;\r\n                return false\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    getNodesByItems: function(items) {\r\n        var that = this;\r\n        var nodes = [];\r\n        (0, _iterator.each)(items, function(_, item) {\r\n            var node = that.getNodeByItem(item);\r\n            node && nodes.push(node)\r\n        });\r\n        return nodes\r\n    },\r\n    getNodeByKey: function(key, data) {\r\n        return this._getByKey(data || this._getDataBySelectionMode(), key)\r\n    },\r\n    getTreeNodes: function() {\r\n        return this.options.dataConverter.convertToPublicNodes(this.getRootNodes())\r\n    },\r\n    getItemsCount: function() {\r\n        return this.options.dataConverter.getItemsCount()\r\n    },\r\n    getVisibleItemsCount: function() {\r\n        return this.options.dataConverter.getVisibleItemsCount()\r\n    },\r\n    getPublicNode: function(node) {\r\n        return node.internalFields.publicNode\r\n    },\r\n    getRootNodes: function() {\r\n        return this.getChildrenNodes(this.options.rootValue)\r\n    },\r\n    getChildrenNodes: function(parentKey) {\r\n        return (0, _query.default)(this._dataStructure).filter([\"internalFields.parentKey\", parentKey]).toArray()\r\n    },\r\n    getIndexByKey: function(key) {\r\n        return this.options.dataConverter.getIndexByKey(key)\r\n    },\r\n    addItem: function(item) {\r\n        this._addNode(item);\r\n        this._updateFields()\r\n    },\r\n    removeItem: function(key) {\r\n        this._removeNode(key);\r\n        this._updateFields()\r\n    },\r\n    toggleSelection: function(key, state, selectRecursive) {\r\n        var isSingleModeUnselect = this._isSingleModeUnselect(state);\r\n        var node = this._getByKey(selectRecursive || isSingleModeUnselect ? this._initialDataStructure : this._dataStructure, key);\r\n        this._setFieldState(node, SELECTED, state);\r\n        if (this.options.recursiveSelection && !selectRecursive) {\r\n            state ? this._setChildrenSelection() : this._toggleChildrenSelection(node, state);\r\n            this._setParentSelection()\r\n        }\r\n        this._selectedNodesKeys = this._updateNodesKeysArray(SELECTED)\r\n    },\r\n    _isSingleModeUnselect: function(selectionState) {\r\n        return !this.options.multipleSelection && !selectionState\r\n    },\r\n    toggleNodeDisabledState: function(key, state) {\r\n        var node = this.getNodeByKey(key);\r\n        this._setFieldState(node, DISABLED, state)\r\n    },\r\n    toggleSelectAll: function(state) {\r\n        if (!(0, _type.isDefined)(state)) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var lastSelectedKey = that._selectedNodesKeys[that._selectedNodesKeys.length - 1];\r\n        var dataStructure = that._isSingleModeUnselect(state) ? this._initialDataStructure : this._dataStructure;\r\n        (0, _iterator.each)(dataStructure, function(index, node) {\r\n            if (!that._isNodeVisible(node)) {\r\n                return\r\n            }\r\n            that._setFieldState(node, SELECTED, state)\r\n        });\r\n        that._selectedNodesKeys = that._updateNodesKeysArray(SELECTED);\r\n        if (!state && that.options.selectionRequired) {\r\n            that.toggleSelection(lastSelectedKey, true)\r\n        }\r\n    },\r\n    isAllSelected: function() {\r\n        if (this.getSelectedNodesKeys().length) {\r\n            return this.getSelectedNodesKeys().length === this.getVisibleItemsCount() ? true : void 0\r\n        } else {\r\n            return false\r\n        }\r\n    },\r\n    toggleExpansion: function(key, state) {\r\n        var node = this.getNodeByKey(key);\r\n        this._setFieldState(node, EXPANDED, state);\r\n        if (state) {\r\n            this._updateExpansion(key)\r\n        }\r\n        this._expandedNodesKeys = this._updateNodesKeysArray(EXPANDED)\r\n    },\r\n    isFiltered: function(item) {\r\n        return !this.options.searchValue.length || !!this._filterDataStructure(this.options.searchValue, [item]).length\r\n    },\r\n    _createCriteria: function(selector, value, operation) {\r\n        var searchFilter = [];\r\n        if (!Array.isArray(selector)) {\r\n            return [selector, operation, value]\r\n        }(0, _iterator.each)(selector, function(i, item) {\r\n            searchFilter.push([item, operation, value], \"or\")\r\n        });\r\n        searchFilter.pop();\r\n        return searchFilter\r\n    },\r\n    _filterDataStructure: function(filterValue, dataStructure) {\r\n        var selector = this.options.searchExpr || this.options.dataAccessors.getters.display;\r\n        var operation = _ui2.default.getOperationBySearchMode(this.options.searchMode);\r\n        var criteria = this._createCriteria(selector, filterValue, operation);\r\n        dataStructure = dataStructure || this._initialDataStructure;\r\n        return (0, _query.default)(dataStructure).filter(criteria).toArray()\r\n    },\r\n    search: function(searchValue) {\r\n        var that = this;\r\n        var matches = this._filterDataStructure(searchValue);\r\n        var dataConverter = this.options.dataConverter;\r\n\r\n        function lookForParents(matches, index) {\r\n            var length = matches.length;\r\n            while (index < length) {\r\n                var node = matches[index];\r\n                if (node.internalFields.parentKey === that.options.rootValue) {\r\n                    index++;\r\n                    continue\r\n                }\r\n                var parent = dataConverter.getParentNode(node);\r\n                if (!parent) {\r\n                    _ui.default.log(\"W1007\", node.internalFields.parentKey, node.internalFields.key);\r\n                    index++;\r\n                    continue\r\n                }\r\n                if (!parent.internalFields.expanded) {\r\n                    that._setFieldState(parent, EXPANDED, true)\r\n                }\r\n                if ((0, _array.inArray)(parent, matches) > -1) {\r\n                    index++;\r\n                    continue\r\n                }\r\n                matches.splice(index, 0, parent);\r\n                lookForParents(matches, index)\r\n            }\r\n        }\r\n        lookForParents(matches, 0);\r\n        if (this.options.sort) {\r\n            matches = _store_helper.default.queryByOptions((0, _query.default)(matches), {\r\n                sort: this.options.sort\r\n            }).toArray()\r\n        }\r\n        dataConverter._indexByKey = {};\r\n        (0, _iterator.each)(matches, function(index, node) {\r\n            node.internalFields.childrenKeys = [];\r\n            dataConverter._indexByKey[node.internalFields.key] = index\r\n        });\r\n        dataConverter._dataStructure = matches;\r\n        dataConverter.setChildrenKeys();\r\n        return dataConverter._dataStructure\r\n    }\r\n});\r\nvar _default = DataAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/components/data_validator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.validateData = validateData;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _parse_utils = require(\"./parse_utils\");\r\nvar STRING = \"string\";\r\nvar NUMERIC = \"numeric\";\r\nvar DATETIME = \"datetime\";\r\nvar DISCRETE = \"discrete\";\r\nvar SEMIDISCRETE = \"semidiscrete\";\r\nvar CONTINUOUS = \"continuous\";\r\nvar LOGARITHMIC = \"logarithmic\";\r\nvar VALUE_TYPE = \"valueType\";\r\nvar ARGUMENT_TYPE = \"argumentType\";\r\nvar axisTypeParser = (0, _utils.enumParser)([STRING, NUMERIC, DATETIME]);\r\nvar _isArray = Array.isArray;\r\n\r\nfunction groupingValues(data, others, valueField, index) {\r\n    if (index >= 0) {\r\n        data.slice(index).forEach(function(cell) {\r\n            if ((0, _type.isDefined)(cell[valueField])) {\r\n                others[valueField] += cell[valueField];\r\n                cell[valueField] = void 0\r\n            }\r\n        })\r\n    }\r\n}\r\n\r\nfunction processGroups(groups) {\r\n    groups.forEach(function(group) {\r\n        group.valueType = group.valueAxisType = null;\r\n        group.series.forEach(function(series) {\r\n            series.updateDataType({})\r\n        });\r\n        group.valueAxis && group.valueAxis.resetTypes(VALUE_TYPE)\r\n    })\r\n}\r\n\r\nfunction sortValues(data, asc, selector) {\r\n    var func = asc ? function(a, b) {\r\n        return a - b\r\n    } : function(a, b) {\r\n        return b - a\r\n    };\r\n    data.sort(function(a, b) {\r\n        var valA = selector(a);\r\n        var valB = selector(b);\r\n        var aa = (0, _type.isDefined)(valA) ? 1 : 0;\r\n        var bb = (0, _type.isDefined)(valB) ? 1 : 0;\r\n        return aa && bb ? func(valA, valB) : func(aa, bb)\r\n    });\r\n    return data\r\n}\r\n\r\nfunction resetArgumentAxes(axes) {\r\n    axes && axes.forEach(function(axis) {\r\n        axis.resetTypes(ARGUMENT_TYPE)\r\n    })\r\n}\r\n\r\nfunction parseCategories(categories, parser) {\r\n    var newArray = [];\r\n    categories.forEach(function(category) {\r\n        var parsedCategory = parser(category);\r\n        void 0 !== parsedCategory && newArray.push(parsedCategory)\r\n    });\r\n    return newArray\r\n}\r\n\r\nfunction parseAxisCategories(groupsData, parsers) {\r\n    var argumentCategories = groupsData.argumentOptions && groupsData.argumentOptions.categories;\r\n    groupsData.groups.forEach(function(valueGroup, i) {\r\n        var categories = valueGroup.valueOptions && valueGroup.valueOptions.categories;\r\n        if (categories) {\r\n            valueGroup.valueOptions.categories = parseCategories(categories, parsers[i + 1])\r\n        }\r\n    });\r\n    if (argumentCategories) {\r\n        groupsData.argumentOptions.categories = parseCategories(argumentCategories, parsers[0])\r\n    }\r\n}\r\n\r\nfunction eigen(x) {\r\n    return x\r\n}\r\n\r\nfunction getType(unit, type) {\r\n    var result = type;\r\n    if (type === STRING || (0, _type.isString)(unit)) {\r\n        result = STRING\r\n    } else {\r\n        if (type === DATETIME || (0, _type.isDate)(unit)) {\r\n            result = DATETIME\r\n        } else {\r\n            if ((0, _type.isNumeric)(unit)) {\r\n                result = NUMERIC\r\n            }\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction correctAxisType(type, axisType, hasCategories, incidentOccurred) {\r\n    if (type === STRING && (axisType === CONTINUOUS || axisType === LOGARITHMIC || axisType === SEMIDISCRETE)) {\r\n        incidentOccurred(\"E2002\")\r\n    }\r\n    return axisType === LOGARITHMIC ? LOGARITHMIC : hasCategories || axisType === DISCRETE || type === STRING ? DISCRETE : axisType === SEMIDISCRETE ? SEMIDISCRETE : CONTINUOUS\r\n}\r\n\r\nfunction validUnit(unit, field, incidentOccurred) {\r\n    if (unit) {\r\n        incidentOccurred(!(0, _type.isNumeric)(unit) && !(0, _type.isDate)(unit) && !(0, _type.isString)(unit) ? \"E2003\" : \"E2004\", [field])\r\n    }\r\n}\r\n\r\nfunction createParserUnit(type, axisType, incidentOccurred) {\r\n    var parser = type ? (0, _parse_utils.getParser)(type) : eigen;\r\n    var filterInfinity = axisType !== DISCRETE ? function(x) {\r\n        return isFinite(x) || void 0 === x ? x : null\r\n    } : eigen;\r\n    return function(unit, field) {\r\n        var parseUnit = filterInfinity(parser(unit));\r\n        if (void 0 === parseUnit) {\r\n            validUnit(unit, field, incidentOccurred)\r\n        }\r\n        return parseUnit\r\n    }\r\n}\r\n\r\nfunction prepareParsers(groupsData, incidentOccurred) {\r\n    var argumentParser = createParserUnit(groupsData.argumentType, groupsData.argumentAxisType, incidentOccurred);\r\n    var sizeParser;\r\n    var valueParser;\r\n    var categoryParsers = [argumentParser];\r\n    var cache = {};\r\n    var list = [];\r\n    groupsData.groups.forEach(function(group, groupIndex) {\r\n        group.series.forEach(function(series) {\r\n            valueParser = createParserUnit(group.valueType, group.valueAxisType, incidentOccurred);\r\n            sizeParser = createParserUnit(NUMERIC, CONTINUOUS, incidentOccurred);\r\n            cache[series.getArgumentField()] = argumentParser;\r\n            series.getValueFields().forEach(function(field) {\r\n                categoryParsers[groupIndex + 1] = valueParser;\r\n                cache[field] = valueParser\r\n            });\r\n            if (series.getSizeField()) {\r\n                cache[series.getSizeField()] = sizeParser\r\n            }\r\n        })\r\n    });\r\n    for (var field in cache) {\r\n        list.push([field, cache[field]])\r\n    }\r\n    list.length && parseAxisCategories(groupsData, categoryParsers);\r\n    return list\r\n}\r\n\r\nfunction getParsedCell(cell, parsers) {\r\n    var i;\r\n    var ii = parsers.length;\r\n    var obj = (0, _extend.extend)({}, cell);\r\n    var field;\r\n    var value;\r\n    for (i = 0; i < ii; ++i) {\r\n        field = parsers[i][0];\r\n        value = cell[field];\r\n        obj[field] = parsers[i][1](value, field)\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction parse(data, parsers) {\r\n    var parsedData = [];\r\n    var i;\r\n    var ii = data.length;\r\n    parsedData.length = ii;\r\n    for (i = 0; i < ii; ++i) {\r\n        parsedData[i] = getParsedCell(data[i], parsers)\r\n    }\r\n    return parsedData\r\n}\r\n\r\nfunction findIndexByThreshold(data, valueField, threshold) {\r\n    var i;\r\n    var ii = data.length;\r\n    var value;\r\n    for (i = 0; i < ii; ++i) {\r\n        value = data[i][valueField];\r\n        if ((0, _type.isDefined)(value) && threshold > value) {\r\n            break\r\n        }\r\n    }\r\n    return i\r\n}\r\n\r\nfunction groupMinSlices(originalData, argumentField, valueField, smallValuesGrouping) {\r\n    smallValuesGrouping = smallValuesGrouping || {};\r\n    var mode = smallValuesGrouping.mode;\r\n    var others = {};\r\n    if (!mode || \"none\" === mode) {\r\n        return\r\n    }\r\n    others[argumentField] = String(smallValuesGrouping.groupName || \"others\");\r\n    others[valueField] = 0;\r\n    var data = sortValues(originalData.slice(), false, function(a) {\r\n        return a[valueField]\r\n    });\r\n    groupingValues(data, others, valueField, \"smallValueThreshold\" === mode ? findIndexByThreshold(data, valueField, smallValuesGrouping.threshold) : smallValuesGrouping.topCount);\r\n    others[valueField] && originalData.push(others)\r\n}\r\n\r\nfunction groupPieData(data, groupsData) {\r\n    var firstSeries = groupsData.groups[0] && groupsData.groups[0].series[0];\r\n    var isPie = firstSeries && (\"pie\" === firstSeries.type || \"doughnut\" === firstSeries.type || \"donut\" === firstSeries.type);\r\n    if (!isPie) {\r\n        return\r\n    }\r\n    groupsData.groups.forEach(function(group) {\r\n        group.series.forEach(function(series) {\r\n            groupMinSlices(data, series.getArgumentField(), series.getValueFields()[0], series.getOptions().smallValuesGrouping)\r\n        })\r\n    })\r\n}\r\n\r\nfunction addUniqueItemToCollection(item, collection, itemsHash) {\r\n    if (!itemsHash[item]) {\r\n        collection.push(item);\r\n        itemsHash[item] = true\r\n    }\r\n}\r\n\r\nfunction getUniqueArgumentFields(groupsData) {\r\n    var uniqueArgumentFields = [];\r\n    var hash = {};\r\n    groupsData.groups.forEach(function(group) {\r\n        group.series.forEach(function(series) {\r\n            addUniqueItemToCollection(series.getArgumentField(), uniqueArgumentFields, hash)\r\n        })\r\n    });\r\n    return uniqueArgumentFields\r\n}\r\n\r\nfunction sort(a, b) {\r\n    var result = a - b;\r\n    if (isNaN(result)) {\r\n        if (!(0, _type.isDefined)(a)) {\r\n            return 1\r\n        }\r\n        if (!(0, _type.isDefined)(b)) {\r\n            return -1\r\n        }\r\n        return 0\r\n    }\r\n    return result\r\n}\r\n\r\nfunction sortByArgument(data, argumentField) {\r\n    return data.slice().sort(function(a, b) {\r\n        return sort(a[argumentField], b[argumentField])\r\n    })\r\n}\r\n\r\nfunction sortByCallback(data, callback) {\r\n    return data.slice().sort(callback)\r\n}\r\n\r\nfunction checkValueTypeOfGroup(group, cell) {\r\n    group.series.forEach(function(series) {\r\n        series.getValueFields().forEach(function(field) {\r\n            group.valueType = getType(cell[field], group.valueType)\r\n        })\r\n    });\r\n    return group.valueType\r\n}\r\n\r\nfunction getSortByCategories(categories) {\r\n    var hash = {};\r\n    categories.forEach(function(value, i) {\r\n        hash[value] = i\r\n    });\r\n    return function(data, argumentField) {\r\n        return sortValues(data.slice(), true, function(a) {\r\n            return hash[a[argumentField]]\r\n        })\r\n    }\r\n}\r\n\r\nfunction sortData(data, groupsData, options, uniqueArgumentFields) {\r\n    var dataByArguments = {};\r\n    var isDiscrete = groupsData.argumentAxisType === DISCRETE;\r\n    var userCategories = isDiscrete && groupsData.argumentOptions && groupsData.argumentOptions.categories;\r\n    var sortFunction = function(data) {\r\n        return data\r\n    };\r\n    var sortingMethodOption = options.sortingMethod;\r\n    var reSortCategories;\r\n    if (!userCategories && (0, _type.isFunction)(sortingMethodOption)) {\r\n        data = sortByCallback(data, sortingMethodOption)\r\n    }\r\n    if (isDiscrete) {\r\n        groupsData.categories = getCategories(data, uniqueArgumentFields, userCategories)\r\n    }\r\n    if (userCategories || !(0, _type.isFunction)(sortingMethodOption) && groupsData.argumentType === STRING && !options._skipArgumentSorting) {\r\n        sortFunction = getSortByCategories(groupsData.categories)\r\n    } else {\r\n        if (true === sortingMethodOption && groupsData.argumentType !== STRING) {\r\n            sortFunction = sortByArgument;\r\n            reSortCategories = isDiscrete\r\n        }\r\n    }\r\n    uniqueArgumentFields.forEach(function(field) {\r\n        dataByArguments[field] = sortFunction(data, field)\r\n    });\r\n    if (reSortCategories) {\r\n        groupsData.categories = groupsData.categories.sort(sort)\r\n    }\r\n    return dataByArguments\r\n}\r\n\r\nfunction checkItemExistence(collection, item) {\r\n    return collection.map(function(collectionItem) {\r\n        return collectionItem.valueOf()\r\n    }).indexOf(item.valueOf()) === -1\r\n}\r\n\r\nfunction getCategories(data, uniqueArgumentFields, userCategories) {\r\n    var categories = userCategories ? userCategories.slice() : [];\r\n    uniqueArgumentFields.forEach(function(field) {\r\n        data.forEach(function(item) {\r\n            var dataItem = item[field];\r\n            (0, _type.isDefined)(dataItem) && checkItemExistence(categories, dataItem) && categories.push(dataItem)\r\n        })\r\n    });\r\n    return categories\r\n}\r\n\r\nfunction checkArgumentTypeOfGroup(series, cell, groupsData) {\r\n    series.forEach(function(currentSeries) {\r\n        groupsData.argumentType = getType(cell[currentSeries.getArgumentField()], groupsData.argumentType)\r\n    });\r\n    return groupsData.argumentType\r\n}\r\n\r\nfunction checkType(data, groupsData, checkTypeForAllData) {\r\n    var groupsWithUndefinedValueType = [];\r\n    var groupsWithUndefinedArgumentType = [];\r\n    var argumentTypeGroup = groupsData.argumentOptions && axisTypeParser(groupsData.argumentOptions.argumentType);\r\n    var groupsIndexes;\r\n    groupsData.groups.forEach(function(group) {\r\n        if (!group.series.length) {\r\n            return\r\n        }\r\n        var valueTypeGroup = group.valueOptions && axisTypeParser(group.valueOptions.valueType);\r\n        group.valueType = valueTypeGroup;\r\n        groupsData.argumentType = argumentTypeGroup;\r\n        !valueTypeGroup && groupsWithUndefinedValueType.push(group);\r\n        !argumentTypeGroup && groupsWithUndefinedArgumentType.push(group)\r\n    });\r\n    if (groupsWithUndefinedValueType.length || groupsWithUndefinedArgumentType.length) {\r\n        groupsIndexes = groupsWithUndefinedValueType.map(function(_, index) {\r\n            return index\r\n        });\r\n        data.some(function(cell) {\r\n            var defineArg;\r\n            groupsWithUndefinedValueType.forEach(function(group, groupIndex) {\r\n                if (checkValueTypeOfGroup(group, cell) && groupsIndexes.indexOf(groupIndex) >= 0) {\r\n                    groupsIndexes.splice(groupIndex, 1)\r\n                }\r\n            });\r\n            if (!defineArg) {\r\n                groupsWithUndefinedArgumentType.forEach(function(group) {\r\n                    defineArg = checkArgumentTypeOfGroup(group.series, cell, groupsData)\r\n                })\r\n            }\r\n            if (!checkTypeForAllData && defineArg && 0 === groupsIndexes.length) {\r\n                return true\r\n            }\r\n        })\r\n    }\r\n}\r\n\r\nfunction checkAxisType(groupsData, incidentOccurred) {\r\n    var argumentOptions = groupsData.argumentOptions || {};\r\n    var userArgumentCategories = argumentOptions && argumentOptions.categories || [];\r\n    var argumentAxisType = correctAxisType(groupsData.argumentType, argumentOptions.type, !!userArgumentCategories.length, incidentOccurred);\r\n    groupsData.groups.forEach(function(group) {\r\n        var valueOptions = group.valueOptions || {};\r\n        var valueCategories = valueOptions.categories || [];\r\n        var valueAxisType = correctAxisType(group.valueType, valueOptions.type, !!valueCategories.length, incidentOccurred);\r\n        group.series.forEach(function(series) {\r\n            var optionsSeries = {};\r\n            optionsSeries.argumentAxisType = argumentAxisType;\r\n            optionsSeries.valueAxisType = valueAxisType;\r\n            groupsData.argumentAxisType = groupsData.argumentAxisType || optionsSeries.argumentAxisType;\r\n            group.valueAxisType = group.valueAxisType || optionsSeries.valueAxisType;\r\n            optionsSeries.argumentType = groupsData.argumentType;\r\n            optionsSeries.valueType = group.valueType;\r\n            optionsSeries.showZero = valueOptions.showZero;\r\n            series.updateDataType(optionsSeries)\r\n        });\r\n        group.valueAxisType = group.valueAxisType || valueAxisType;\r\n        if (group.valueAxis) {\r\n            group.valueAxis.setTypes(group.valueAxisType, group.valueType, VALUE_TYPE);\r\n            group.valueAxis.validate()\r\n        }\r\n    });\r\n    groupsData.argumentAxisType = groupsData.argumentAxisType || argumentAxisType;\r\n    if (groupsData.argumentAxes) {\r\n        groupsData.argumentAxes.forEach(function(axis) {\r\n            axis.setTypes(groupsData.argumentAxisType, groupsData.argumentType, ARGUMENT_TYPE);\r\n            axis.validate()\r\n        })\r\n    }\r\n}\r\n\r\nfunction verifyData(source, incidentOccurred) {\r\n    var data = [];\r\n    var sourceIsDefined = (0, _type.isDefined)(source);\r\n    var hasError = sourceIsDefined && !_isArray(source);\r\n    var i;\r\n    var ii;\r\n    var k;\r\n    var item;\r\n    if (sourceIsDefined && !hasError) {\r\n        for (i = 0, ii = source.length, k = 0; i < ii; ++i) {\r\n            item = source[i];\r\n            if ((0, _type.isObject)(item)) {\r\n                data[k++] = item\r\n            } else {\r\n                if (item) {\r\n                    hasError = true\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (hasError) {\r\n        incidentOccurred(\"E2001\")\r\n    }\r\n    return data\r\n}\r\n\r\nfunction validateData(data, groupsData, incidentOccurred, options) {\r\n    data = verifyData(data, incidentOccurred);\r\n    groupsData.argumentType = groupsData.argumentAxisType = null;\r\n    processGroups(groupsData.groups);\r\n    resetArgumentAxes(groupsData.argumentAxes);\r\n    checkType(data, groupsData, options.checkTypeForAllData);\r\n    checkAxisType(groupsData, incidentOccurred);\r\n    if (options.convertToAxisDataType) {\r\n        data = parse(data, prepareParsers(groupsData, incidentOccurred))\r\n    }\r\n    groupPieData(data, groupsData);\r\n    var dataByArgumentFields = sortData(data, groupsData, options, getUniqueArgumentFields(groupsData));\r\n    return dataByArgumentFields\r\n}\r\n","/**\r\n * DevExtreme (core/options/option_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.OptionManager = void 0;\r\nvar _data = require(\"../utils/data\");\r\nvar _common = require(\"../utils/common\");\r\nvar _comparator = require(\"../utils/comparator\");\r\nvar _extend = require(\"../utils/extend\");\r\nvar _type = require(\"../utils/type\");\r\nvar _utils = require(\"./utils\");\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar cachedGetters = {};\r\nvar cachedSetters = {};\r\nvar OptionManager = function() {\r\n    function OptionManager(options, optionsByReference) {\r\n        _classCallCheck(this, OptionManager);\r\n        this._options = options;\r\n        this._optionsByReference = optionsByReference;\r\n        this._changingCallback;\r\n        this._changedCallback;\r\n        this._namePreparedCallbacks\r\n    }\r\n    _createClass(OptionManager, [{\r\n        key: \"_setByReference\",\r\n        value: function(options, rulesOptions) {\r\n            (0, _extend.extend)(true, options, rulesOptions);\r\n            for (var fieldName in this._optionsByReference) {\r\n                if (Object.prototype.hasOwnProperty.call(rulesOptions, fieldName)) {\r\n                    options[fieldName] = rulesOptions[fieldName]\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_setPreparedValue\",\r\n        value: function(name, value, merge, silent) {\r\n            var previousValue = this.get(this._options, name, false);\r\n            if (!(0, _comparator.equals)(previousValue, value)) {\r\n                var path = name.split(/[.[]/);\r\n                !silent && this._changingCallback(name, previousValue, value);\r\n                cachedSetters[name] = cachedSetters[name] || (0, _data.compileSetter)(name);\r\n                cachedSetters[name](this._options, value, {\r\n                    functionsAsIs: true,\r\n                    merge: (0, _type.isDefined)(merge) ? merge : !this._optionsByReference[name],\r\n                    unwrapObservables: path.length > 1 && !!this._optionsByReference[path[0]]\r\n                });\r\n                !silent && this._changedCallback(name, value, previousValue)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_prepareRelevantNames\",\r\n        value: function(options, name, value, silent) {\r\n            if ((0, _type.isPlainObject)(value)) {\r\n                for (var valueName in value) {\r\n                    this._prepareRelevantNames(options, \"\".concat(name, \".\").concat(valueName), value[valueName])\r\n                }\r\n            }\r\n            this._namePreparedCallbacks(options, name, value, silent)\r\n        }\r\n    }, {\r\n        key: \"get\",\r\n        value: function() {\r\n            var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._options;\r\n            var name = arguments.length > 1 ? arguments[1] : void 0;\r\n            var unwrapObservables = arguments.length > 2 ? arguments[2] : void 0;\r\n            cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name);\r\n            return cachedGetters[name](options, {\r\n                functionsAsIs: true,\r\n                unwrapObservables: unwrapObservables\r\n            })\r\n        }\r\n    }, {\r\n        key: \"set\",\r\n        value: function(options, value, merge, silent) {\r\n            options = (0, _utils.normalizeOptions)(options, value);\r\n            for (var name in options) {\r\n                this._prepareRelevantNames(options, name, options[name], silent)\r\n            }\r\n            for (var _name in options) {\r\n                this._setPreparedValue(_name, options[_name], merge, silent)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"onRelevantNamesPrepared\",\r\n        value: function(callBack) {\r\n            this._namePreparedCallbacks = callBack\r\n        }\r\n    }, {\r\n        key: \"onChanging\",\r\n        value: function(callBack) {\r\n            this._changingCallback = callBack\r\n        }\r\n    }, {\r\n        key: \"onChanged\",\r\n        value: function(callBack) {\r\n            this._changedCallback = callBack\r\n        }\r\n    }, {\r\n        key: \"dispose\",\r\n        value: function() {\r\n            this._changingCallback = _common.noop;\r\n            this._changedCallback = _common.noop\r\n        }\r\n    }]);\r\n    return OptionManager\r\n}();\r\nexports.OptionManager = OptionManager;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/row.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.Row = Row;\r\nexports.RowProps = exports.viewFunction = void 0;\r\nvar _utils = require(\"../utils\");\r\nvar _combine_classes = require(\"../../../../utils/combine_classes\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(\"tr\", _extends({}, viewModel.restAttributes, {\r\n        className: viewModel.classes,\r\n        style: viewModel.style\r\n    }), viewModel.props.children)\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar RowProps = {\r\n    className: \"\",\r\n    isVirtual: false\r\n};\r\nexports.RowProps = RowProps;\r\n\r\nfunction Row(props) {\r\n    var __style = (0, _hooks.useCallback)(function() {\r\n        var height = props.height;\r\n        var _restAttributes = __restAttributes(),\r\n            style = _restAttributes.style;\r\n        return (0, _utils.addHeightToStyle)(height, style)\r\n    }, [props.height]);\r\n    var __classes = (0, _hooks.useCallback)(function() {\r\n        var className = props.className;\r\n        return (0, _combine_classes.combineClasses)(_defineProperty({\r\n            \"dx-scheduler-virtual-row\": !!props.isVirtual\r\n        }, className, !!className))\r\n    }, [props.className, props.isVirtual]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.children, props.className, props.height, props.isVirtual, _objectWithoutProperties(props, [\"children\", \"className\", \"height\", \"isVirtual\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread({}, props),\r\n        style: __style(),\r\n        classes: __classes(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nRow.defaultProps = _objectSpread({}, RowProps);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.column_headers.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ColumnHeadersView = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_headers\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ColumnHeadersView = _uiGrid_core.default.views.columnHeadersView;\r\nexports.ColumnHeadersView = ColumnHeadersView;\r\n_uiData_grid.default.registerModule(\"columnHeaders\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.data_converter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../../ui/widget/ui.errors\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DataConverter = _class.default.inherit({\r\n    ctor: function() {\r\n        this._dataStructure = [];\r\n        this._itemsCount = 0;\r\n        this._visibleItemsCount = 0\r\n    },\r\n    _indexByKey: {},\r\n    _convertItemsToNodes: function(items, parentKey) {\r\n        var that = this;\r\n        (0, _iterator.each)(items, function(_, item) {\r\n            var parentId = (0, _type.isDefined)(parentKey) ? parentKey : that._getParentId(item);\r\n            var node = that._convertItemToNode(item, parentId);\r\n            that._dataStructure.push(node);\r\n            that._checkForDuplicateId(node.internalFields.key);\r\n            that._indexByKey[node.internalFields.key] = that._dataStructure.length - 1;\r\n            if (that._itemHasChildren(item)) {\r\n                that._convertItemsToNodes(that._dataAccessors.getters.items(item), node.internalFields.key)\r\n            }\r\n        })\r\n    },\r\n    _checkForDuplicateId: function(key) {\r\n        if ((0, _type.isDefined)(this._indexByKey[key])) {\r\n            throw _ui.default.Error(\"E1040\", key)\r\n        }\r\n    },\r\n    _getParentId: function(item) {\r\n        return \"plain\" === this._dataType ? this._dataAccessors.getters.parentKey(item) : void 0\r\n    },\r\n    _itemHasChildren: function(item) {\r\n        if (\"plain\" === this._dataType) {\r\n            return\r\n        }\r\n        var items = this._dataAccessors.getters.items(item);\r\n        return items && items.length\r\n    },\r\n    _getUniqueKey: function(item) {\r\n        var keyGetter = this._dataAccessors.getters.key;\r\n        var itemKey = keyGetter(item);\r\n        var isCorrectKey = keyGetter && (itemKey || 0 === itemKey) && (0, _type.isPrimitive)(itemKey);\r\n        return isCorrectKey ? itemKey : this.getItemsCount()\r\n    },\r\n    _convertItemToNode: function(item, parentKey) {\r\n        this._itemsCount++;\r\n        false !== item.visible && this._visibleItemsCount++;\r\n        var that = this;\r\n        var node = {\r\n            internalFields: {\r\n                disabled: that._dataAccessors.getters.disabled(item, {\r\n                    defaultValue: false\r\n                }),\r\n                expanded: that._dataAccessors.getters.expanded(item, {\r\n                    defaultValue: false\r\n                }),\r\n                selected: that._dataAccessors.getters.selected(item, {\r\n                    defaultValue: false\r\n                }),\r\n                key: that._getUniqueKey(item),\r\n                parentKey: (0, _type.isDefined)(parentKey) ? parentKey : that._rootValue,\r\n                item: that._makeObjectFromPrimitive(item),\r\n                childrenKeys: []\r\n            }\r\n        };\r\n        (0, _extend.extend)(node, item);\r\n        delete node.items;\r\n        return node\r\n    },\r\n    setChildrenKeys: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n            if (node.internalFields.parentKey === that._rootValue) {\r\n                return\r\n            }\r\n            var parent = that.getParentNode(node);\r\n            parent && parent.internalFields.childrenKeys.push(node.internalFields.key)\r\n        })\r\n    },\r\n    _makeObjectFromPrimitive: function(item) {\r\n        if ((0, _type.isPrimitive)(item)) {\r\n            var key = item;\r\n            item = {};\r\n            this._dataAccessors.setters.key(item, key)\r\n        }\r\n        return item\r\n    },\r\n    _convertToPublicNode: function(node, parent) {\r\n        if (!node) {\r\n            return null\r\n        }\r\n        var publicNode = {\r\n            text: this._dataAccessors.getters.display(node),\r\n            key: node.internalFields.key,\r\n            selected: node.internalFields.selected,\r\n            expanded: node.internalFields.expanded,\r\n            disabled: node.internalFields.disabled,\r\n            parent: parent || null,\r\n            itemData: node.internalFields.item,\r\n            children: [],\r\n            items: []\r\n        };\r\n        if (publicNode.parent) {\r\n            publicNode.parent.children.push(publicNode);\r\n            publicNode.parent.items.push(publicNode)\r\n        }\r\n        return publicNode\r\n    },\r\n    convertToPublicNodes: function(data, parent) {\r\n        if (!data.length) {\r\n            return []\r\n        }\r\n        var that = this;\r\n        var publicNodes = [];\r\n        (0, _iterator.each)(data, function(_, node) {\r\n            node = (0, _type.isPrimitive)(node) ? that._getByKey(node) : node;\r\n            var publicNode = that._convertToPublicNode(node, parent);\r\n            publicNode.children = that.convertToPublicNodes(node.internalFields.childrenKeys, publicNode);\r\n            publicNodes.push(publicNode);\r\n            node.internalFields.publicNode = publicNode\r\n        });\r\n        return publicNodes\r\n    },\r\n    setDataAccessors: function(accessors) {\r\n        this._dataAccessors = accessors\r\n    },\r\n    _getByKey: function(key) {\r\n        return this._dataStructure[this.getIndexByKey(key)] || null\r\n    },\r\n    getParentNode: function(node) {\r\n        return this._getByKey(node.internalFields.parentKey)\r\n    },\r\n    getByKey: function getByKey(data, key) {\r\n        if (null === key || void 0 === key) {\r\n            return null\r\n        }\r\n        var result = null;\r\n        var that = this;\r\n        var getByKey = function(data, key) {\r\n            (0, _iterator.each)(data, function(_, element) {\r\n                var currentElementKey = element.internalFields && element.internalFields.key || that._dataAccessors.getters.key(element);\r\n                if (currentElementKey.toString() === key.toString()) {\r\n                    result = element;\r\n                    return false\r\n                }\r\n            });\r\n            return result\r\n        };\r\n        return getByKey(data, key)\r\n    },\r\n    getItemsCount: function() {\r\n        return this._itemsCount\r\n    },\r\n    getVisibleItemsCount: function() {\r\n        return this._visibleItemsCount\r\n    },\r\n    updateIndexByKey: function() {\r\n        var that = this;\r\n        this._indexByKey = {};\r\n        (0, _iterator.each)(this._dataStructure, function(index, node) {\r\n            that._checkForDuplicateId(node.internalFields.key);\r\n            that._indexByKey[node.internalFields.key] = index\r\n        })\r\n    },\r\n    updateChildrenKeys: function() {\r\n        this._indexByKey = {};\r\n        this.removeChildrenKeys();\r\n        this.updateIndexByKey();\r\n        this.setChildrenKeys()\r\n    },\r\n    removeChildrenKeys: function() {\r\n        this._indexByKey = {};\r\n        (0, _iterator.each)(this._dataStructure, function(index, node) {\r\n            node.internalFields.childrenKeys = []\r\n        })\r\n    },\r\n    getIndexByKey: function(key) {\r\n        return this._indexByKey[key]\r\n    },\r\n    createPlainStructure: function(items, rootValue, dataType) {\r\n        this._itemsCount = 0;\r\n        this._visibleItemsCount = 0;\r\n        this._rootValue = rootValue;\r\n        this._dataType = dataType;\r\n        this._indexByKey = {};\r\n        this._convertItemsToNodes(items);\r\n        this.setChildrenKeys();\r\n        return this._dataStructure\r\n    }\r\n});\r\nvar _default = DataConverter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_state_mixin.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COLUMN_INDICATORS_CLASS = \"dx-column-indicators\";\r\nvar GROUP_PANEL_ITEM_CLASS = \"dx-group-panel-item\";\r\nvar _default = {\r\n    _applyColumnState: function(options) {\r\n        var _that$component;\r\n        var that = this;\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var columnAlignment = that._getColumnAlignment(options.column.alignment, rtlEnabled);\r\n        var parameters = (0, _extend.extend)(true, {\r\n            columnAlignment: columnAlignment\r\n        }, options);\r\n        var isGroupPanelItem = parameters.rootElement.hasClass(GROUP_PANEL_ITEM_CLASS);\r\n        var $indicatorsContainer = that._createIndicatorContainer(parameters, isGroupPanelItem);\r\n        var $span = (0, _renderer.default)(\"<span>\").addClass(that._getIndicatorClassName(options.name));\r\n        var columnsController = null === (_that$component = that.component) || void 0 === _that$component ? void 0 : _that$component.getController(\"columns\");\r\n        var indicatorAlignment = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getHeaderContentAlignment(columnAlignment)) || columnAlignment;\r\n        parameters.container = $indicatorsContainer;\r\n        parameters.indicator = $span;\r\n        that._renderIndicator(parameters);\r\n        $indicatorsContainer[(isGroupPanelItem || !options.showColumnLines) && \"left\" === indicatorAlignment ? \"appendTo\" : \"prependTo\"](options.rootElement);\r\n        return $span\r\n    },\r\n    _getIndicatorClassName: _common.noop,\r\n    _getColumnAlignment: function(alignment, rtlEnabled) {\r\n        rtlEnabled = rtlEnabled || this.option(\"rtlEnabled\");\r\n        return alignment && \"center\" !== alignment ? alignment : (0, _position.getDefaultAlignment)(rtlEnabled)\r\n    },\r\n    _createIndicatorContainer: function(options, ignoreIndicatorAlignment) {\r\n        var $indicatorsContainer = this._getIndicatorContainer(options.rootElement);\r\n        var indicatorAlignment = \"left\" === options.columnAlignment ? \"right\" : \"left\";\r\n        if (!$indicatorsContainer.length) {\r\n            $indicatorsContainer = (0, _renderer.default)(\"<div>\").addClass(COLUMN_INDICATORS_CLASS)\r\n        }\r\n        this.setAria(\"role\", \"presentation\", $indicatorsContainer);\r\n        return $indicatorsContainer.css(\"float\", options.showColumnLines && !ignoreIndicatorAlignment ? indicatorAlignment : null)\r\n    },\r\n    _getIndicatorContainer: function($cell) {\r\n        return $cell && $cell.find(\".\" + COLUMN_INDICATORS_CLASS)\r\n    },\r\n    _getIndicatorElements: function($cell) {\r\n        var $indicatorContainer = this._getIndicatorContainer($cell);\r\n        return $indicatorContainer && $indicatorContainer.children()\r\n    },\r\n    _renderIndicator: function(options) {\r\n        var $container = options.container;\r\n        var $indicator = options.indicator;\r\n        $container && $indicator && $container.append($indicator)\r\n    },\r\n    _updateIndicators: function(indicatorName) {\r\n        var that = this;\r\n        var columns = that.getColumns();\r\n        var $cells = that.getColumnElements();\r\n        var $cell;\r\n        if (!$cells || columns.length !== $cells.length) {\r\n            return\r\n        }\r\n        for (var i = 0; i < columns.length; i++) {\r\n            $cell = $cells.eq(i);\r\n            that._updateIndicator($cell, columns[i], indicatorName);\r\n            var rowOptions = $cell.parent().data(\"options\");\r\n            if (rowOptions && rowOptions.cells) {\r\n                rowOptions.cells[$cell.index()].column = columns[i]\r\n            }\r\n        }\r\n    },\r\n    _updateIndicator: function($cell, column, indicatorName) {\r\n        if (!column.command) {\r\n            return this._applyColumnState({\r\n                name: indicatorName,\r\n                rootElement: $cell,\r\n                column: column,\r\n                showColumnLines: this.option(\"showColumnLines\")\r\n            })\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/language_codes.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getLanguageId = getLanguageId;\r\nvar _core = _interopRequireDefault(require(\"./core\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar LANGUAGE_CODES = {\r\n    ar: 1,\r\n    bg: 2,\r\n    ca: 3,\r\n    \"zh-Hans\": 4,\r\n    cs: 5,\r\n    da: 6,\r\n    de: 7,\r\n    el: 8,\r\n    en: 9,\r\n    es: 10,\r\n    fi: 11,\r\n    fr: 12,\r\n    he: 13,\r\n    hu: 14,\r\n    is: 15,\r\n    it: 16,\r\n    ja: 17,\r\n    ko: 18,\r\n    nl: 19,\r\n    no: 20,\r\n    pl: 21,\r\n    pt: 22,\r\n    rm: 23,\r\n    ro: 24,\r\n    ru: 25,\r\n    hr: 26,\r\n    sk: 27,\r\n    sq: 28,\r\n    sv: 29,\r\n    th: 30,\r\n    tr: 31,\r\n    ur: 32,\r\n    id: 33,\r\n    uk: 34,\r\n    be: 35,\r\n    sl: 36,\r\n    et: 37,\r\n    lv: 38,\r\n    lt: 39,\r\n    tg: 40,\r\n    fa: 41,\r\n    vi: 42,\r\n    hy: 43,\r\n    az: 44,\r\n    eu: 45,\r\n    hsb: 46,\r\n    mk: 47,\r\n    tn: 50,\r\n    xh: 52,\r\n    zu: 53,\r\n    af: 54,\r\n    ka: 55,\r\n    fo: 56,\r\n    hi: 57,\r\n    mt: 58,\r\n    se: 59,\r\n    ga: 60,\r\n    ms: 62,\r\n    kk: 63,\r\n    ky: 64,\r\n    sw: 65,\r\n    tk: 66,\r\n    uz: 67,\r\n    tt: 68,\r\n    bn: 69,\r\n    pa: 70,\r\n    gu: 71,\r\n    or: 72,\r\n    ta: 73,\r\n    te: 74,\r\n    kn: 75,\r\n    ml: 76,\r\n    as: 77,\r\n    mr: 78,\r\n    sa: 79,\r\n    mn: 80,\r\n    bo: 81,\r\n    cy: 82,\r\n    km: 83,\r\n    lo: 84,\r\n    gl: 86,\r\n    kok: 87,\r\n    syr: 90,\r\n    si: 91,\r\n    iu: 93,\r\n    am: 94,\r\n    tzm: 95,\r\n    ne: 97,\r\n    fy: 98,\r\n    ps: 99,\r\n    fil: 100,\r\n    dv: 101,\r\n    ha: 104,\r\n    yo: 106,\r\n    quz: 107,\r\n    nso: 108,\r\n    ba: 109,\r\n    lb: 110,\r\n    kl: 111,\r\n    ig: 112,\r\n    ii: 120,\r\n    arn: 122,\r\n    moh: 124,\r\n    br: 126,\r\n    ug: 128,\r\n    mi: 129,\r\n    oc: 130,\r\n    co: 131,\r\n    gsw: 132,\r\n    sah: 133,\r\n    qut: 134,\r\n    rw: 135,\r\n    wo: 136,\r\n    prs: 140,\r\n    gd: 145,\r\n    \"ar-SA\": 1025,\r\n    \"bg-BG\": 1026,\r\n    \"ca-ES\": 1027,\r\n    \"zh-TW\": 1028,\r\n    \"cs-CZ\": 1029,\r\n    \"da-DK\": 1030,\r\n    \"de-DE\": 1031,\r\n    \"el-GR\": 1032,\r\n    \"en-US\": 1033,\r\n    \"fi-FI\": 1035,\r\n    \"fr-FR\": 1036,\r\n    \"he-IL\": 1037,\r\n    \"hu-HU\": 1038,\r\n    \"is-IS\": 1039,\r\n    \"it-IT\": 1040,\r\n    \"ja-JP\": 1041,\r\n    \"ko-KR\": 1042,\r\n    \"nl-NL\": 1043,\r\n    \"nb-NO\": 1044,\r\n    \"pl-PL\": 1045,\r\n    \"pt-BR\": 1046,\r\n    \"rm-CH\": 1047,\r\n    \"ro-RO\": 1048,\r\n    \"ru-RU\": 1049,\r\n    \"hr-HR\": 1050,\r\n    \"sk-SK\": 1051,\r\n    \"sq-AL\": 1052,\r\n    \"sv-SE\": 1053,\r\n    \"th-TH\": 1054,\r\n    \"tr-TR\": 1055,\r\n    \"ur-PK\": 1056,\r\n    \"id-ID\": 1057,\r\n    \"uk-UA\": 1058,\r\n    \"be-BY\": 1059,\r\n    \"sl-SI\": 1060,\r\n    \"et-EE\": 1061,\r\n    \"lv-LV\": 1062,\r\n    \"lt-LT\": 1063,\r\n    \"tg-Cyrl-TJ\": 1064,\r\n    \"fa-IR\": 1065,\r\n    \"vi-VN\": 1066,\r\n    \"hy-AM\": 1067,\r\n    \"az-Latn-AZ\": 1068,\r\n    \"eu-ES\": 1069,\r\n    \"hsb-DE\": 1070,\r\n    \"mk-MK\": 1071,\r\n    \"tn-ZA\": 1074,\r\n    \"xh-ZA\": 1076,\r\n    \"zu-ZA\": 1077,\r\n    \"af-ZA\": 1078,\r\n    \"ka-GE\": 1079,\r\n    \"fo-FO\": 1080,\r\n    \"hi-IN\": 1081,\r\n    \"mt-MT\": 1082,\r\n    \"se-NO\": 1083,\r\n    \"ms-MY\": 1086,\r\n    \"kk-KZ\": 1087,\r\n    \"ky-KG\": 1088,\r\n    \"sw-KE\": 1089,\r\n    \"tk-TM\": 1090,\r\n    \"uz-Latn-UZ\": 1091,\r\n    \"tt-RU\": 1092,\r\n    \"bn-IN\": 1093,\r\n    \"pa-IN\": 1094,\r\n    \"gu-IN\": 1095,\r\n    \"or-IN\": 1096,\r\n    \"ta-IN\": 1097,\r\n    \"te-IN\": 1098,\r\n    \"kn-IN\": 1099,\r\n    \"ml-IN\": 1100,\r\n    \"as-IN\": 1101,\r\n    \"mr-IN\": 1102,\r\n    \"sa-IN\": 1103,\r\n    \"mn-MN\": 1104,\r\n    \"bo-CN\": 1105,\r\n    \"cy-GB\": 1106,\r\n    \"km-KH\": 1107,\r\n    \"lo-LA\": 1108,\r\n    \"gl-ES\": 1110,\r\n    \"kok-IN\": 1111,\r\n    \"syr-SY\": 1114,\r\n    \"si-LK\": 1115,\r\n    \"iu-Cans-CA\": 1117,\r\n    \"am-ET\": 1118,\r\n    \"ne-NP\": 1121,\r\n    \"fy-NL\": 1122,\r\n    \"ps-AF\": 1123,\r\n    \"fil-PH\": 1124,\r\n    \"dv-MV\": 1125,\r\n    \"ha-Latn-NG\": 1128,\r\n    \"yo-NG\": 1130,\r\n    \"quz-BO\": 1131,\r\n    \"nso-ZA\": 1132,\r\n    \"ba-RU\": 1133,\r\n    \"lb-LU\": 1134,\r\n    \"kl-GL\": 1135,\r\n    \"ig-NG\": 1136,\r\n    \"ii-CN\": 1144,\r\n    \"arn-CL\": 1146,\r\n    \"moh-CA\": 1148,\r\n    \"br-FR\": 1150,\r\n    \"ug-CN\": 1152,\r\n    \"mi-NZ\": 1153,\r\n    \"oc-FR\": 1154,\r\n    \"co-FR\": 1155,\r\n    \"gsw-FR\": 1156,\r\n    \"sah-RU\": 1157,\r\n    \"qut-GT\": 1158,\r\n    \"rw-RW\": 1159,\r\n    \"wo-SN\": 1160,\r\n    \"prs-AF\": 1164,\r\n    \"gd-GB\": 1169,\r\n    \"ar-IQ\": 2049,\r\n    \"zh-CN\": 2052,\r\n    \"de-CH\": 2055,\r\n    \"en-GB\": 2057,\r\n    \"es-MX\": 2058,\r\n    \"fr-BE\": 2060,\r\n    \"it-CH\": 2064,\r\n    \"nl-BE\": 2067,\r\n    \"nn-NO\": 2068,\r\n    \"pt-PT\": 2070,\r\n    \"sr-Latn-CS\": 2074,\r\n    \"sv-FI\": 2077,\r\n    \"az-Cyrl-AZ\": 2092,\r\n    \"dsb-DE\": 2094,\r\n    \"se-SE\": 2107,\r\n    \"ga-IE\": 2108,\r\n    \"ms-BN\": 2110,\r\n    \"uz-Cyrl-UZ\": 2115,\r\n    \"bn-BD\": 2117,\r\n    \"mn-Mong-CN\": 2128,\r\n    \"iu-Latn-CA\": 2141,\r\n    \"tzm-Latn-DZ\": 2143,\r\n    \"quz-EC\": 2155,\r\n    \"ar-EG\": 3073,\r\n    \"zh-HK\": 3076,\r\n    \"de-AT\": 3079,\r\n    \"en-AU\": 3081,\r\n    \"es-ES\": 3082,\r\n    \"fr-CA\": 3084,\r\n    \"sr-Cyrl-CS\": 3098,\r\n    \"se-FI\": 3131,\r\n    \"quz-PE\": 3179,\r\n    \"ar-LY\": 4097,\r\n    \"zh-SG\": 4100,\r\n    \"de-LU\": 4103,\r\n    \"en-CA\": 4105,\r\n    \"es-GT\": 4106,\r\n    \"fr-CH\": 4108,\r\n    \"hr-BA\": 4122,\r\n    \"smj-NO\": 4155,\r\n    \"ar-DZ\": 5121,\r\n    \"zh-MO\": 5124,\r\n    \"de-LI\": 5127,\r\n    \"en-NZ\": 5129,\r\n    \"es-CR\": 5130,\r\n    \"fr-LU\": 5132,\r\n    \"bs-Latn-BA\": 5146,\r\n    \"smj-SE\": 5179,\r\n    \"ar-MA\": 6145,\r\n    \"en-IE\": 6153,\r\n    \"es-PA\": 6154,\r\n    \"fr-MC\": 6156,\r\n    \"sr-Latn-BA\": 6170,\r\n    \"sma-NO\": 6203,\r\n    \"ar-TN\": 7169,\r\n    \"en-ZA\": 7177,\r\n    \"es-DO\": 7178,\r\n    \"sr-Cyrl-BA\": 7194,\r\n    \"sma-SE\": 7227,\r\n    \"ar-OM\": 8193,\r\n    \"en-JM\": 8201,\r\n    \"es-VE\": 8202,\r\n    \"bs-Cyrl-BA\": 8218,\r\n    \"sms-FI\": 8251,\r\n    \"ar-YE\": 9217,\r\n    \"en-029\": 9225,\r\n    \"es-CO\": 9226,\r\n    \"sr-Latn-RS\": 9242,\r\n    \"smn-FI\": 9275,\r\n    \"ar-SY\": 10241,\r\n    \"en-BZ\": 10249,\r\n    \"es-PE\": 10250,\r\n    \"sr-Cyrl-RS\": 10266,\r\n    \"ar-JO\": 11265,\r\n    \"en-TT\": 11273,\r\n    \"es-AR\": 11274,\r\n    \"sr-Latn-ME\": 11290,\r\n    \"ar-LB\": 12289,\r\n    \"en-ZW\": 12297,\r\n    \"es-EC\": 12298,\r\n    \"sr-Cyrl-ME\": 12314,\r\n    \"ar-KW\": 13313,\r\n    \"en-PH\": 13321,\r\n    \"es-CL\": 13322,\r\n    \"ar-AE\": 14337,\r\n    \"es-UY\": 14346,\r\n    \"ar-BH\": 15361,\r\n    \"es-PY\": 15370,\r\n    \"ar-QA\": 16385,\r\n    \"en-IN\": 16393,\r\n    \"es-BO\": 16394,\r\n    \"en-MY\": 17417,\r\n    \"es-SV\": 17418,\r\n    \"en-SG\": 18441,\r\n    \"es-HN\": 18442,\r\n    \"es-NI\": 19466,\r\n    \"es-PR\": 20490,\r\n    \"es-US\": 21514,\r\n    \"bs-Cyrl\": 25626,\r\n    \"bs-Latn\": 26650,\r\n    \"sr-Cyrl\": 27674,\r\n    \"sr-Latn\": 28698,\r\n    smn: 28731,\r\n    \"az-Cyrl\": 29740,\r\n    sms: 29755,\r\n    zh: 30724,\r\n    nn: 30740,\r\n    bs: 30746,\r\n    \"az-Latn\": 30764,\r\n    sma: 30779,\r\n    \"uz-Cyrl\": 30787,\r\n    \"mn-Cyrl\": 30800,\r\n    \"iu-Cans\": 30813,\r\n    \"zh-Hant\": 31748,\r\n    nb: 31764,\r\n    sr: 31770,\r\n    \"tg-Cyrl\": 31784,\r\n    dsb: 31790,\r\n    smj: 31803,\r\n    \"uz-Latn\": 31811,\r\n    \"mn-Mong\": 31824,\r\n    \"iu-Latn\": 31837,\r\n    \"tzm-Latn\": 31839,\r\n    \"ha-Latn\": 31848\r\n};\r\n\r\nfunction getLanguageId() {\r\n    return LANGUAGE_CODES[_core.default.locale()]\r\n}\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.vertical.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointments.strategy.base\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _utils = _interopRequireDefault(require(\"./../utils.timeZone\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar ALLDAY_APPOINTMENT_MIN_VERTICAL_OFFSET = 5;\r\nvar ALLDAY_APPOINTMENT_MAX_VERTICAL_OFFSET = 20;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar VerticalRenderingStrategy = function(_BaseAppointmentsStra) {\r\n    _inherits(VerticalRenderingStrategy, _BaseAppointmentsStra);\r\n    var _super = _createSuper(VerticalRenderingStrategy);\r\n\r\n    function VerticalRenderingStrategy() {\r\n        _classCallCheck(this, VerticalRenderingStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(VerticalRenderingStrategy, [{\r\n        key: \"getDeltaTime\",\r\n        value: function(args, initialSize, appointment) {\r\n            var deltaTime = 0;\r\n            if (this.isAllDay(appointment)) {\r\n                deltaTime = this._getDeltaWidth(args, initialSize) * toMs(\"day\")\r\n            } else {\r\n                var deltaHeight = args.height - initialSize.height;\r\n                deltaTime = toMs(\"minute\") * Math.round(deltaHeight / this.getDefaultCellHeight() * this.instance.getAppointmentDurationInMinutes())\r\n            }\r\n            return deltaTime\r\n        }\r\n    }, {\r\n        key: \"_correctCollectorCoordinatesInAdaptive\",\r\n        value: function(coordinates, isAllDay) {\r\n            if (isAllDay) {\r\n                _get(_getPrototypeOf(VerticalRenderingStrategy.prototype), \"_correctCollectorCoordinatesInAdaptive\", this).call(this, coordinates, isAllDay)\r\n            } else {\r\n                if (0 === this._getMaxAppointmentCountPerCellByType()) {\r\n                    var cellHeight = this.getDefaultCellHeight();\r\n                    var cellWidth = this.getDefaultCellWidth();\r\n                    coordinates.top += (cellHeight - this.getDropDownButtonAdaptiveSize()) / 2;\r\n                    coordinates.left += (cellWidth - this.getDropDownButtonAdaptiveSize()) / 2\r\n                }\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getAppointmentGeometry\",\r\n        value: function(coordinates) {\r\n            var geometry = null;\r\n            if (coordinates.allDay) {\r\n                geometry = this._getAllDayAppointmentGeometry(coordinates)\r\n            } else {\r\n                geometry = this._isAdaptive() && coordinates.isCompact ? this._getAdaptiveGeometry(coordinates) : this._getVerticalAppointmentGeometry(coordinates)\r\n            }\r\n            return _get(_getPrototypeOf(VerticalRenderingStrategy.prototype), \"getAppointmentGeometry\", this).call(this, geometry)\r\n        }\r\n    }, {\r\n        key: \"_getAdaptiveGeometry\",\r\n        value: function(coordinates) {\r\n            var config = this._calculateGeometryConfig(coordinates);\r\n            return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset)\r\n        }\r\n    }, {\r\n        key: \"_getItemPosition\",\r\n        value: function(appointment) {\r\n            var adapter = this.instance.createAppointmentAdapter(appointment);\r\n            var allDay = this.isAllDay(appointment);\r\n            var isRecurring = !!adapter.recurrenceRule;\r\n            var appointmentStartDate = adapter.calculateStartDate(\"toGrid\");\r\n            var appointmentEndDate = adapter.calculateEndDate(\"toGrid\");\r\n            var isAppointmentTakesSeveralDays = !_utils.default.isSameAppointmentDates(appointmentStartDate, appointmentEndDate);\r\n            if (allDay) {\r\n                return _get(_getPrototypeOf(VerticalRenderingStrategy.prototype), \"_getItemPosition\", this).call(this, appointment)\r\n            }\r\n            var settings = this._getAppointmentCoordinates(appointment);\r\n            var result = [];\r\n            for (var j = 0; j < settings.length; j++) {\r\n                var currentSetting = settings[j];\r\n                var height = this.calculateAppointmentHeight(appointment, currentSetting);\r\n                var width = this.calculateAppointmentWidth(appointment, currentSetting);\r\n                var resultHeight = height;\r\n                var appointmentReduced = null;\r\n                var multiDaysAppointmentParts = [];\r\n                var currentMaxAllowedPosition = currentSetting.vMax;\r\n                if (this._isMultiDayAppointment(currentSetting, height) || isAppointmentTakesSeveralDays && !isRecurring) {\r\n                    if (_date.default.sameDate(appointmentStartDate, currentSetting.info.appointment.startDate) || isRecurring) {\r\n                        appointmentReduced = \"head\";\r\n                        resultHeight = this._reduceMultiDayAppointment(height, {\r\n                            top: currentSetting.top,\r\n                            bottom: currentMaxAllowedPosition\r\n                        });\r\n                        multiDaysAppointmentParts = this._getAppointmentParts({\r\n                            sourceAppointmentHeight: height,\r\n                            reducedHeight: resultHeight,\r\n                            width: width\r\n                        }, currentSetting)\r\n                    } else {\r\n                        appointmentReduced = \"tail\"\r\n                    }\r\n                }(0, _extend.extend)(currentSetting, {\r\n                    height: resultHeight,\r\n                    width: width,\r\n                    allDay: allDay,\r\n                    appointmentReduced: appointmentReduced\r\n                });\r\n                result = this._getAppointmentPartsPosition(multiDaysAppointmentParts, currentSetting, result)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_isMultiDayAppointment\",\r\n        value: function(position, height) {\r\n            var maxTop = position.vMax;\r\n            var result = height > maxTop - position.top;\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_reduceMultiDayAppointment\",\r\n        value: function(sourceAppointmentHeight, bound) {\r\n            sourceAppointmentHeight = bound.bottom - Math.floor(bound.top);\r\n            return sourceAppointmentHeight\r\n        }\r\n    }, {\r\n        key: \"_getTailHeight\",\r\n        value: function(appointmentGeometry, appointmentSettings) {\r\n            var workspace = this.instance.getWorkSpace();\r\n            if (!workspace.isVirtualScrolling()) {\r\n                return appointmentGeometry.sourceAppointmentHeight - appointmentGeometry.reducedHeight\r\n            }\r\n            var groupTop = Math.max(0, this.instance.fire(\"getGroupTop\", appointmentSettings.groupIndex));\r\n            var allDayPanelOffset = this.instance.fire(\"getOffsetByAllDayPanel\", appointmentSettings.groupIndex);\r\n            var cellHeight = workspace.getCellHeight();\r\n            var groupHeight = cellHeight * workspace._getRowCount();\r\n            var appointmentGroupTopOffset = appointmentSettings.top - groupTop - allDayPanelOffset;\r\n            var sourceAppointmentHeight = appointmentGeometry.sourceAppointmentHeight;\r\n            var tailHeight = appointmentGroupTopOffset + sourceAppointmentHeight - groupHeight;\r\n            return tailHeight\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentParts\",\r\n        value: function(appointmentGeometry, appointmentSettings) {\r\n            var tailHeight = this._getTailHeight(appointmentGeometry, appointmentSettings);\r\n            var width = appointmentGeometry.width;\r\n            var result = [];\r\n            var currentPartTop = Math.max(0, this.instance.fire(\"getGroupTop\", appointmentSettings.groupIndex));\r\n            var offset = this.instance.fire(\"isGroupedByDate\") ? this.getDefaultCellWidth() * this.instance.fire(\"getGroupCount\") : this.getDefaultCellWidth();\r\n            var left = appointmentSettings.left + offset;\r\n            if (tailHeight > 0) {\r\n                var minHeight = this.getAppointmentMinSize();\r\n                if (tailHeight < minHeight) {\r\n                    tailHeight = minHeight\r\n                }\r\n                currentPartTop += this.instance.fire(\"getOffsetByAllDayPanel\", appointmentSettings.groupIndex);\r\n                result.push((0, _extend.extend)(true, {}, appointmentSettings, {\r\n                    top: currentPartTop,\r\n                    left: left,\r\n                    height: tailHeight,\r\n                    width: width,\r\n                    appointmentReduced: \"tail\",\r\n                    rowIndex: ++appointmentSettings.rowIndex\r\n                }))\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getMinuteHeight\",\r\n        value: function() {\r\n            return this.getDefaultCellHeight() / this.instance.getAppointmentDurationInMinutes()\r\n        }\r\n    }, {\r\n        key: \"_getCompactLeftCoordinate\",\r\n        value: function(itemLeft, index) {\r\n            var cellBorderSize = 1;\r\n            var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n            return itemLeft + (cellBorderSize + cellWidth) * index\r\n        }\r\n    }, {\r\n        key: \"_getVerticalAppointmentGeometry\",\r\n        value: function(coordinates) {\r\n            var config = this._calculateVerticalGeometryConfig(coordinates);\r\n            return this._customizeVerticalCoordinates(coordinates, config.width, config.appointmentCountPerCell, config.offset)\r\n        }\r\n    }, {\r\n        key: \"_customizeVerticalCoordinates\",\r\n        value: function(coordinates, width, appointmentCountPerCell, topOffset, isAllDay) {\r\n            var appointmentWidth = Math.max(width / appointmentCountPerCell, width / coordinates.count);\r\n            var height = coordinates.height;\r\n            var appointmentLeft = coordinates.left + coordinates.index * appointmentWidth;\r\n            var top = coordinates.top;\r\n            if (coordinates.isCompact) {\r\n                this._markAppointmentAsVirtual(coordinates, isAllDay)\r\n            }\r\n            return {\r\n                height: height,\r\n                width: appointmentWidth,\r\n                top: top,\r\n                left: appointmentLeft,\r\n                empty: this._isAppointmentEmpty(height, width)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_calculateVerticalGeometryConfig\",\r\n        value: function(coordinates) {\r\n            var overlappingMode = this.instance.fire(\"getMaxAppointmentsPerCell\");\r\n            var offsets = this._getOffsets();\r\n            var appointmentDefaultOffset = this._getAppointmentDefaultOffset();\r\n            var appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates);\r\n            var ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell);\r\n            var maxWidth = this._getMaxWidth();\r\n            if (!appointmentCountPerCell) {\r\n                appointmentCountPerCell = coordinates.count;\r\n                ratio = (maxWidth - offsets.unlimited) / maxWidth\r\n            }\r\n            var topOffset = (1 - ratio) * maxWidth;\r\n            if (\"auto\" === overlappingMode || (0, _type.isNumeric)(overlappingMode)) {\r\n                ratio = 1;\r\n                maxWidth -= appointmentDefaultOffset;\r\n                topOffset = 0\r\n            }\r\n            return {\r\n                width: ratio * maxWidth,\r\n                appointmentCountPerCell: appointmentCountPerCell,\r\n                offset: topOffset\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getMaxWidth\",\r\n        value: function() {\r\n            return this.getDefaultCellWidth() || this.invoke(\"getCellWidth\")\r\n        }\r\n    }, {\r\n        key: \"isAllDay\",\r\n        value: function(appointmentData) {\r\n            var allDay = this.instance.fire(\"getField\", \"allDay\", appointmentData);\r\n            if (allDay) {\r\n                return true\r\n            }\r\n            return this.instance.appointmentTakesAllDay(appointmentData)\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentMaxWidth\",\r\n        value: function() {\r\n            return this.getDefaultCellWidth() - this._getAppointmentDefaultOffset()\r\n        }\r\n    }, {\r\n        key: \"calculateAppointmentWidth\",\r\n        value: function(appointment, position) {\r\n            if (!this.isAllDay(appointment)) {\r\n                return 0\r\n            }\r\n            var startDate = _date.default.trimTime(position.info.appointment.startDate);\r\n            var endDate = this.normalizeEndDateByViewEnd(appointment, position.info.appointment.endDate);\r\n            var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n            var durationInHours = (endDate.getTime() - startDate.getTime()) / toMs(\"hour\");\r\n            var width = Math.ceil(durationInHours / 24) * cellWidth;\r\n            width = this.cropAppointmentWidth(width, cellWidth);\r\n            return width\r\n        }\r\n    }, {\r\n        key: \"calculateAppointmentHeight\",\r\n        value: function(appointment, position) {\r\n            if (this.isAllDay(appointment)) {\r\n                return 0\r\n            }\r\n            var startDate = position.info.appointment.startDate;\r\n            var endDate = this.normalizeEndDateByViewEnd(appointment, position.info.appointment.endDate);\r\n            var allDay = this.instance.fire(\"getField\", \"allDay\", appointment);\r\n            var fullDuration = this._getAppointmentDurationInMs(startDate, endDate, allDay);\r\n            var durationInMinutes = this._adjustDurationByDaylightDiff(fullDuration, startDate, endDate) / toMs(\"minute\");\r\n            var height = durationInMinutes * this._getMinuteHeight();\r\n            return height\r\n        }\r\n    }, {\r\n        key: \"getDirection\",\r\n        value: function() {\r\n            return \"vertical\"\r\n        }\r\n    }, {\r\n        key: \"_sortCondition\",\r\n        value: function(a, b) {\r\n            var allDayCondition = a.allDay - b.allDay;\r\n            var isAllDay = a.allDay && b.allDay;\r\n            var condition = \"vertical\" === this.instance._groupOrientation && isAllDay ? this._columnCondition(a, b) : this._rowCondition(a, b);\r\n            return allDayCondition ? allDayCondition : condition\r\n        }\r\n    }, {\r\n        key: \"hasAllDayAppointments\",\r\n        value: function() {\r\n            return true\r\n        }\r\n    }, {\r\n        key: \"_getAllDayAppointmentGeometry\",\r\n        value: function(coordinates) {\r\n            var config = this._calculateGeometryConfig(coordinates);\r\n            return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset, true)\r\n        }\r\n    }, {\r\n        key: \"_calculateGeometryConfig\",\r\n        value: function(coordinates) {\r\n            if (!this.instance._allowResizing() || !this.instance._allowAllDayResizing()) {\r\n                coordinates.skipResizing = true\r\n            }\r\n            var config = _get(_getPrototypeOf(VerticalRenderingStrategy.prototype), \"_calculateGeometryConfig\", this).call(this, coordinates);\r\n            if (coordinates.count <= this._getDynamicAppointmentCountPerCell().allDay) {\r\n                config.offset = 0\r\n            }\r\n            return config\r\n        }\r\n    }, {\r\n        key: \"_getAppointmentCount\",\r\n        value: function(overlappingMode, coordinates) {\r\n            return \"auto\" !== overlappingMode && 1 === coordinates.count && !(0, _type.isNumeric)(overlappingMode) ? coordinates.count : this._getMaxAppointmentCountPerCellByType(coordinates.allDay)\r\n        }\r\n    }, {\r\n        key: \"_getDefaultRatio\",\r\n        value: function(coordinates, appointmentCountPerCell) {\r\n            return coordinates.count > this.instance.option(\"_appointmentCountPerCell\") ? .65 : 1\r\n        }\r\n    }, {\r\n        key: \"_getOffsets\",\r\n        value: function() {\r\n            return {\r\n                unlimited: ALLDAY_APPOINTMENT_MIN_VERTICAL_OFFSET,\r\n                auto: ALLDAY_APPOINTMENT_MAX_VERTICAL_OFFSET\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getMaxHeight\",\r\n        value: function() {\r\n            return this.getDefaultAllDayCellHeight() || this.getAppointmentMinSize()\r\n        }\r\n    }, {\r\n        key: \"_needVerticalGroupBounds\",\r\n        value: function(allDay) {\r\n            return !allDay\r\n        }\r\n    }, {\r\n        key: \"_needHorizontalGroupBounds\",\r\n        value: function() {\r\n            return false\r\n        }\r\n    }]);\r\n    return VerticalRenderingStrategy\r\n}(_uiSchedulerAppointmentsStrategy.default);\r\nvar _default = VerticalRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.data_controller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataController = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiGrid_core = require(\"../grid_core/ui.grid_core.virtual_scrolling_core\");\r\nvar _uiGrid_core2 = require(\"../grid_core/ui.grid_core.virtual_columns_core\");\r\nvar _uiGrid_core3 = require(\"../grid_core/ui.grid_core.state_storing_core\");\r\nvar _data_source = _interopRequireDefault(require(\"./data_source\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar math = Math;\r\nvar GRAND_TOTAL_TYPE = \"GT\";\r\nvar TOTAL_TYPE = \"T\";\r\nvar DATA_TYPE = \"D\";\r\nvar NOT_AVAILABLE = \"#N/A\";\r\nvar CHANGING_DURATION_IF_PAGINATE = 300;\r\nvar proxyMethod = function(instance, methodName, defaultResult) {\r\n    if (!instance[methodName]) {\r\n        instance[methodName] = function() {\r\n            var dataSource = this._dataSource;\r\n            return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult\r\n        }\r\n    }\r\n};\r\nvar DataController = _class.default.inherit(function() {\r\n    function getHeaderItemText(item, description, options) {\r\n        var text = item.text;\r\n        if ((0, _type.isDefined)(item.displayText)) {\r\n            text = item.displayText\r\n        } else {\r\n            if ((0, _type.isDefined)(item.caption)) {\r\n                text = item.caption\r\n            } else {\r\n                if (item.type === GRAND_TOTAL_TYPE) {\r\n                    text = options.texts.grandTotal\r\n                }\r\n            }\r\n        }\r\n        if (item.isAdditionalTotal) {\r\n            text = (0, _string.format)(options.texts.total || \"\", text)\r\n        }\r\n        return text\r\n    }\r\n\r\n    function formatCellValue(value, dataField, errorText) {\r\n        return value === NOT_AVAILABLE ? errorText : (0, _uiPivot_grid.formatValue)(value, dataField)\r\n    }\r\n    var createHeaderInfo = function() {\r\n        var getHeaderItemsDepth = function(headerItems) {\r\n            var depth = 0;\r\n            (0, _uiPivot_grid.foreachTree)(headerItems, function(items) {\r\n                depth = math.max(depth, items.length)\r\n            });\r\n            return depth\r\n        };\r\n        var createInfoItem = function(headerItem, breadth, isHorizontal, isTree) {\r\n            var infoItem = {\r\n                type: headerItem.type,\r\n                text: headerItem.text\r\n            };\r\n            if (headerItem.path) {\r\n                infoItem.path = headerItem.path\r\n            }\r\n            if (headerItem.width) {\r\n                infoItem.width = headerItem.width\r\n            }\r\n            if ((0, _type.isDefined)(headerItem.wordWrapEnabled)) {\r\n                infoItem.wordWrapEnabled = headerItem.wordWrapEnabled\r\n            }\r\n            if (headerItem.isLast) {\r\n                infoItem.isLast = true\r\n            }\r\n            if (headerItem.sorted) {\r\n                infoItem.sorted = true\r\n            }\r\n            if (headerItem.isMetric) {\r\n                infoItem.dataIndex = headerItem.dataIndex\r\n            }\r\n            if ((0, _type.isDefined)(headerItem.expanded)) {\r\n                infoItem.expanded = headerItem.expanded\r\n            }\r\n            if (breadth > 1) {\r\n                infoItem[isHorizontal ? \"colspan\" : \"rowspan\"] = breadth\r\n            }\r\n            if (headerItem.depthSize && headerItem.depthSize > 1) {\r\n                infoItem[isHorizontal ? \"rowspan\" : \"colspan\"] = headerItem.depthSize\r\n            }\r\n            if (headerItem.index >= 0) {\r\n                infoItem.dataSourceIndex = headerItem.index\r\n            }\r\n            if (isTree && headerItem.children && headerItem.children.length && !headerItem.children[0].isMetric) {\r\n                infoItem.width = null;\r\n                infoItem.isWhiteSpace = true\r\n            }\r\n            return infoItem\r\n        };\r\n        var addInfoItem = function(info, options) {\r\n            var breadth = options.lastIndex - options.index || 1;\r\n            var addInfoItemCore = function(info, infoItem, itemIndex, depthIndex, isHorizontal) {\r\n                var index = isHorizontal ? depthIndex : itemIndex;\r\n                while (!info[index]) {\r\n                    info.push([])\r\n                }\r\n                if (isHorizontal) {\r\n                    info[index].push(infoItem)\r\n                } else {\r\n                    info[index].unshift(infoItem)\r\n                }\r\n            };\r\n            var itemInfo = createInfoItem(options.headerItem, breadth, options.isHorizontal, options.isTree);\r\n            addInfoItemCore(info, itemInfo, options.index, options.depth, options.isHorizontal);\r\n            if (!options.headerItem.children || 0 === options.headerItem.children.length) {\r\n                return options.lastIndex + 1\r\n            }\r\n            return options.lastIndex\r\n        };\r\n        var isItemSorted = function(items, sortBySummaryPath) {\r\n            var path;\r\n            var item = items[0];\r\n            var stringValuesUsed = (0, _type.isString)(sortBySummaryPath[0]);\r\n            var headerItem = item.dataIndex >= 0 ? items[1] : item;\r\n            if (stringValuesUsed && sortBySummaryPath[0].indexOf(\"&[\") !== -1 && headerItem.key || !headerItem.key) {\r\n                path = (0, _uiPivot_grid.createPath)(items)\r\n            } else {\r\n                path = (0, _iterator.map)(items, function(item) {\r\n                    return item.dataIndex >= 0 ? item.value : item.text\r\n                }).reverse()\r\n            }\r\n            if (item.type === GRAND_TOTAL_TYPE) {\r\n                path = path.slice(1)\r\n            }\r\n            return path.join(\"/\") === sortBySummaryPath.join(\"/\")\r\n        };\r\n        var getViewHeaderItems = function(headerItems, headerDescriptions, cellDescriptions, depthSize, options) {\r\n            var cellDescriptionsCount = cellDescriptions.length;\r\n            var viewHeaderItems = createViewHeaderItems(headerItems, headerDescriptions);\r\n            var dataFields = options.dataFields;\r\n            var d = new _deferred.Deferred;\r\n            (0, _deferred.when)(viewHeaderItems).done(function(viewHeaderItems) {\r\n                options.notifyProgress(.5);\r\n                if (options.showGrandTotals) {\r\n                    viewHeaderItems[!options.showTotalsPrior ? \"push\" : \"unshift\"]({\r\n                        type: GRAND_TOTAL_TYPE,\r\n                        isEmpty: options.isEmptyGrandTotal\r\n                    })\r\n                }\r\n                var hideTotals = false === options.showTotals || dataFields.length > 0 && dataFields.length === options.hiddenTotals.length;\r\n                var hideData = dataFields.length > 0 && options.hiddenValues.length === dataFields.length;\r\n                if (hideData && hideTotals) {\r\n                    depthSize = 1\r\n                }\r\n                if (!hideTotals || \"tree\" === options.layout) {\r\n                    addAdditionalTotalHeaderItems(viewHeaderItems, headerDescriptions, options.showTotalsPrior, \"tree\" === options.layout)\r\n                }(0, _deferred.when)((0, _uiPivot_grid.foreachTreeAsync)(viewHeaderItems, function(items) {\r\n                    var item = items[0];\r\n                    if (!item.children || 0 === item.children.length) {\r\n                        item.depthSize = depthSize - items.length + 1\r\n                    }\r\n                })).done(function() {\r\n                    if (cellDescriptionsCount > 1) {\r\n                        addMetricHeaderItems(viewHeaderItems, cellDescriptions, options)\r\n                    }!options.showEmpty && removeHiddenItems(viewHeaderItems);\r\n                    options.notifyProgress(.75);\r\n                    (0, _deferred.when)((0, _uiPivot_grid.foreachTreeAsync)(viewHeaderItems, function(items) {\r\n                        var item = items[0];\r\n                        var isMetric = item.isMetric;\r\n                        var field = headerDescriptions[items.length - 1] || {};\r\n                        if (item.type === DATA_TYPE && !isMetric) {\r\n                            item.width = field.width\r\n                        }\r\n                        if (true === hideData && item.type === DATA_TYPE) {\r\n                            var parentChildren = (items[1] ? items[1].children : viewHeaderItems) || [];\r\n                            parentChildren.splice((0, _array.inArray)(item, parentChildren), 1);\r\n                            return\r\n                        }\r\n                        if (isMetric) {\r\n                            item.wordWrapEnabled = cellDescriptions[item.dataIndex].wordWrapEnabled\r\n                        } else {\r\n                            item.wordWrapEnabled = field.wordWrapEnabled\r\n                        }\r\n                        item.isLast = !item.children || !item.children.length;\r\n                        if (item.isLast) {\r\n                            (0, _iterator.each)(options.sortBySummaryPaths, function(index, sortBySummaryPath) {\r\n                                if (!(0, _type.isDefined)(item.dataIndex)) {\r\n                                    sortBySummaryPath = sortBySummaryPath.slice(0);\r\n                                    sortBySummaryPath.pop()\r\n                                }\r\n                                if (isItemSorted(items, sortBySummaryPath)) {\r\n                                    item.sorted = true;\r\n                                    return false\r\n                                }\r\n                            })\r\n                        }\r\n                        item.text = getHeaderItemText(item, field, options)\r\n                    })).done(function() {\r\n                        if (!viewHeaderItems.length) {\r\n                            viewHeaderItems.push({})\r\n                        }\r\n                        options.notifyProgress(1);\r\n                        d.resolve(viewHeaderItems)\r\n                    })\r\n                })\r\n            });\r\n            return d\r\n        };\r\n\r\n        function createHeaderItem(childrenStack, depth, index) {\r\n            var parent = childrenStack[depth] = childrenStack[depth] || [];\r\n            var node = parent[index] = {};\r\n            if (childrenStack[depth + 1]) {\r\n                node.children = childrenStack[depth + 1];\r\n                for (var i = depth + 1; i < childrenStack.length; i++) {\r\n                    childrenStack[i] = void 0\r\n                }\r\n                childrenStack.length = depth + 1\r\n            }\r\n            return node\r\n        }\r\n\r\n        function createViewHeaderItems(headerItems, headerDescriptions) {\r\n            var headerDescriptionsCount = headerDescriptions && headerDescriptions.length || 0;\r\n            var childrenStack = [];\r\n            var d = new _deferred.Deferred;\r\n            var headerItem;\r\n            (0, _deferred.when)((0, _uiPivot_grid.foreachTreeAsync)(headerItems, function(items, index) {\r\n                var item = items[0];\r\n                var path = (0, _uiPivot_grid.createPath)(items);\r\n                headerItem = createHeaderItem(childrenStack, path.length, index);\r\n                headerItem.type = DATA_TYPE;\r\n                headerItem.value = item.value;\r\n                headerItem.path = path;\r\n                headerItem.text = item.text;\r\n                headerItem.index = item.index;\r\n                headerItem.displayText = item.displayText;\r\n                headerItem.key = item.key;\r\n                headerItem.isEmpty = item.isEmpty;\r\n                if (path.length < headerDescriptionsCount && (!item.children || 0 !== item.children.length)) {\r\n                    headerItem.expanded = !!item.children\r\n                }\r\n            })).done(function() {\r\n                d.resolve(createHeaderItem(childrenStack, 0, 0).children || [])\r\n            });\r\n            return d\r\n        }\r\n\r\n        function addMetricHeaderItems(headerItems, cellDescriptions, options) {\r\n            (0, _uiPivot_grid.foreachTree)(headerItems, function(items) {\r\n                var item = items[0];\r\n                var i;\r\n                if (!item.children || 0 === item.children.length) {\r\n                    item.children = [];\r\n                    for (i = 0; i < cellDescriptions.length; i++) {\r\n                        var isGrandTotal = item.type === GRAND_TOTAL_TYPE;\r\n                        var isTotal = item.type === TOTAL_TYPE;\r\n                        var isValue = item.type === DATA_TYPE;\r\n                        var columnIsHidden = false === cellDescriptions[i].visible || isGrandTotal && (0, _array.inArray)(i, options.hiddenGrandTotals) !== -1 || isTotal && (0, _array.inArray)(i, options.hiddenTotals) !== -1 || isValue && (0, _array.inArray)(i, options.hiddenValues) !== -1;\r\n                        if (columnIsHidden) {\r\n                            continue\r\n                        }\r\n                        item.children.push({\r\n                            caption: cellDescriptions[i].caption,\r\n                            path: item.path,\r\n                            type: item.type,\r\n                            value: i,\r\n                            index: item.index,\r\n                            dataIndex: i,\r\n                            isMetric: true,\r\n                            isEmpty: item.isEmpty && item.isEmpty[i]\r\n                        })\r\n                    }\r\n                }\r\n            })\r\n        }\r\n\r\n        function addAdditionalTotalHeaderItems(headerItems, headerDescriptions, showTotalsPrior, isTree) {\r\n            showTotalsPrior = showTotalsPrior || isTree;\r\n            (0, _uiPivot_grid.foreachTree)(headerItems, function(items, index) {\r\n                var item = items[0];\r\n                var parentChildren = (items[1] ? items[1].children : headerItems) || [];\r\n                var dataField = headerDescriptions[items.length - 1];\r\n                if (item.type === DATA_TYPE && item.expanded && (false !== dataField.showTotals || isTree)) {\r\n                    index !== -1 && parentChildren.splice(showTotalsPrior ? index : index + 1, 0, (0, _extend2.extend)({}, item, {\r\n                        children: null,\r\n                        type: TOTAL_TYPE,\r\n                        expanded: showTotalsPrior ? true : null,\r\n                        isAdditionalTotal: true\r\n                    }));\r\n                    if (showTotalsPrior) {\r\n                        item.expanded = null\r\n                    }\r\n                }\r\n            })\r\n        }\r\n        var removeEmptyParent = function removeEmptyParent(items, index) {\r\n            var parent = items[index + 1];\r\n            if (!items[index].children.length && parent && parent.children) {\r\n                parent.children.splice((0, _array.inArray)(items[index], parent.children), 1);\r\n                removeEmptyParent(items, index + 1)\r\n            }\r\n        };\r\n\r\n        function removeHiddenItems(headerItems) {\r\n            (0, _uiPivot_grid.foreachTree)([{\r\n                children: headerItems\r\n            }], function(items, index) {\r\n                var item = items[0];\r\n                var parentChildren = (items[1] ? items[1].children : headerItems) || [];\r\n                var isEmpty = item.isEmpty;\r\n                if (isEmpty && isEmpty.length) {\r\n                    isEmpty = item.isEmpty.filter(function(isEmpty) {\r\n                        return isEmpty\r\n                    }).length === isEmpty.length\r\n                }\r\n                if (item && !item.children && isEmpty) {\r\n                    parentChildren.splice(index, 1);\r\n                    removeEmptyParent(items, 1)\r\n                }\r\n            })\r\n        }\r\n        var fillHeaderInfo = function(info, viewHeaderItems, depthSize, isHorizontal, isTree) {\r\n            var lastIndex = 0;\r\n            var index;\r\n            var depth;\r\n            var indexesByDepth = [0];\r\n            (0, _uiPivot_grid.foreachTree)(viewHeaderItems, function(items) {\r\n                var headerItem = items[0];\r\n                depth = headerItem.isMetric ? depthSize : items.length - 1;\r\n                while (indexesByDepth.length - 1 < depth) {\r\n                    indexesByDepth.push(indexesByDepth[indexesByDepth.length - 1])\r\n                }\r\n                index = indexesByDepth[depth] || 0;\r\n                lastIndex = addInfoItem(info, {\r\n                    headerItem: headerItem,\r\n                    index: index,\r\n                    lastIndex: lastIndex,\r\n                    depth: depth,\r\n                    isHorizontal: isHorizontal,\r\n                    isTree: isTree\r\n                });\r\n                indexesByDepth.length = depth;\r\n                indexesByDepth.push(lastIndex)\r\n            })\r\n        };\r\n        return function(headerItems, headerDescriptions, cellDescriptions, isHorizontal, options) {\r\n            var info = [];\r\n            var depthSize = getHeaderItemsDepth(headerItems) || 1;\r\n            var d = new _deferred.Deferred;\r\n            getViewHeaderItems(headerItems, headerDescriptions, cellDescriptions, depthSize, options).done(function(viewHeaderItems) {\r\n                fillHeaderInfo(info, viewHeaderItems, depthSize, isHorizontal, \"tree\" === options.layout);\r\n                options.notifyProgress(1);\r\n                d.resolve(info)\r\n            });\r\n            return d\r\n        }\r\n    }();\r\n\r\n    function createSortPaths(headerFields, dataFields) {\r\n        var sortBySummaryPaths = [];\r\n        (0, _iterator.each)(headerFields, function(index, headerField) {\r\n            var fieldIndex = (0, _uiPivot_grid.findField)(dataFields, headerField.sortBySummaryField);\r\n            if (fieldIndex >= 0) {\r\n                sortBySummaryPaths.push((headerField.sortBySummaryPath || []).concat([fieldIndex]))\r\n            }\r\n        });\r\n        return sortBySummaryPaths\r\n    }\r\n\r\n    function foreachRowInfo(rowsInfo, callback) {\r\n        var columnOffset = 0;\r\n        var columnOffsetResetIndexes = [];\r\n        for (var i = 0; i < rowsInfo.length; i++) {\r\n            for (var j = 0; j < rowsInfo[i].length; j++) {\r\n                var rowSpanOffset = (rowsInfo[i][j].rowspan || 1) - 1;\r\n                var visibleIndex = i + rowSpanOffset;\r\n                if (columnOffsetResetIndexes[i]) {\r\n                    columnOffset -= columnOffsetResetIndexes[i];\r\n                    columnOffsetResetIndexes[i] = 0\r\n                }\r\n                if (false === callback(rowsInfo[i][j], visibleIndex, i, j, columnOffset)) {\r\n                    break\r\n                }\r\n                columnOffsetResetIndexes[i + (rowsInfo[i][j].rowspan || 1)] = (columnOffsetResetIndexes[i + (rowsInfo[i][j].rowspan || 1)] || 0) + 1;\r\n                columnOffset++\r\n            }\r\n        }\r\n    }\r\n\r\n    function createCellsInfo(rowsInfo, columnsInfo, data, dataFields, dataFieldArea, errorText) {\r\n        var info = [];\r\n        var dataFieldAreaInRows = \"row\" === dataFieldArea;\r\n        var dataSourceCells = data.values;\r\n        dataSourceCells.length && foreachRowInfo(rowsInfo, function(rowInfo, rowIndex) {\r\n            var row = info[rowIndex] = [];\r\n            var dataRow = dataSourceCells[rowInfo.dataSourceIndex >= 0 ? rowInfo.dataSourceIndex : data.grandTotalRowIndex] || [];\r\n            rowInfo.isLast && (0, _uiGrid_core2.foreachColumnInfo)(columnsInfo, function(columnInfo, columnIndex) {\r\n                var dataIndex = (dataFieldAreaInRows ? rowInfo.dataIndex : columnInfo.dataIndex) || 0;\r\n                var dataField = dataFields[dataIndex];\r\n                if (columnInfo.isLast && dataField) {\r\n                    var cell = dataRow[columnInfo.dataSourceIndex >= 0 ? columnInfo.dataSourceIndex : data.grandTotalColumnIndex];\r\n                    if (!Array.isArray(cell)) {\r\n                        cell = [cell]\r\n                    }\r\n                    var cellValue = cell[dataIndex];\r\n                    row[columnIndex] = {\r\n                        text: formatCellValue(cellValue, dataField, errorText),\r\n                        value: cellValue,\r\n                        format: dataField.format,\r\n                        dataType: dataField.dataType,\r\n                        columnType: columnInfo.type,\r\n                        rowType: rowInfo.type,\r\n                        rowPath: rowInfo.path || [],\r\n                        columnPath: columnInfo.path || [],\r\n                        dataIndex: dataIndex\r\n                    };\r\n                    if (dataField.width) {\r\n                        row[columnIndex].width = dataField.width\r\n                    }\r\n                }\r\n            })\r\n        });\r\n        return info\r\n    }\r\n\r\n    function getHeaderIndexedItems(headerItems, options) {\r\n        var visibleIndex = 0;\r\n        var indexedItems = [];\r\n        (0, _uiPivot_grid.foreachTree)(headerItems, function(items) {\r\n            var headerItem = items[0];\r\n            var path = (0, _uiPivot_grid.createPath)(items);\r\n            if (headerItem.children && false === options.showTotals) {\r\n                return\r\n            }\r\n            var indexedItem = (0, _extend2.extend)(true, {}, headerItem, {\r\n                visibleIndex: visibleIndex++,\r\n                path: path\r\n            });\r\n            if ((0, _type.isDefined)(indexedItem.index)) {\r\n                indexedItems[indexedItem.index] = indexedItem\r\n            } else {\r\n                indexedItems.push(indexedItem)\r\n            }\r\n        });\r\n        return indexedItems\r\n    }\r\n\r\n    function createScrollController(dataController, component, dataAdapter) {\r\n        if (component && \"virtual\" === component.option(\"scrolling.mode\")) {\r\n            return new _uiGrid_core.VirtualScrollController(component, (0, _extend2.extend)({\r\n                hasKnownLastPage: function() {\r\n                    return true\r\n                },\r\n                pageCount: function() {\r\n                    return math.ceil(this.totalItemsCount() / this.pageSize())\r\n                },\r\n                updateLoading: function() {},\r\n                itemsCount: function() {\r\n                    if (this.pageIndex() < this.pageCount() - 1) {\r\n                        return this.pageSize()\r\n                    } else {\r\n                        return this.totalItemsCount() % this.pageSize()\r\n                    }\r\n                },\r\n                items: function() {\r\n                    return []\r\n                },\r\n                viewportItems: function() {\r\n                    return []\r\n                },\r\n                onChanged: function() {},\r\n                isLoading: function() {\r\n                    return dataController.isLoading()\r\n                },\r\n                changingDuration: function() {\r\n                    var dataSource = dataController._dataSource;\r\n                    if (dataSource.paginate()) {\r\n                        return CHANGING_DURATION_IF_PAGINATE\r\n                    }\r\n                    return dataController._changingDuration || 0\r\n                }\r\n            }, dataAdapter))\r\n        }\r\n    }\r\n\r\n    function getHiddenTotals(dataFields) {\r\n        var result = [];\r\n        (0, _iterator.each)(dataFields, function(index, field) {\r\n            if (false === field.showTotals) {\r\n                result.push(index)\r\n            }\r\n        });\r\n        return result\r\n    }\r\n\r\n    function getHiddenValues(dataFields) {\r\n        var result = [];\r\n        dataFields.forEach(function(field, index) {\r\n            if (void 0 === field.showValues && false === field.showTotals || false === field.showValues) {\r\n                result.push(index)\r\n            }\r\n        });\r\n        return result\r\n    }\r\n\r\n    function getHiddenGrandTotalsTotals(dataFields, columnFields) {\r\n        var result = [];\r\n        (0, _iterator.each)(dataFields, function(index, field) {\r\n            if (false === field.showGrandTotals) {\r\n                result.push(index)\r\n            }\r\n        });\r\n        if (0 === columnFields.length && result.length === dataFields.length) {\r\n            result = []\r\n        }\r\n        return result\r\n    }\r\n    var members = {\r\n        ctor: function(options) {\r\n            var that = this;\r\n            var virtualScrollControllerChanged = that._fireChanged.bind(that);\r\n            options = that._options = options || {};\r\n            that.dataSourceChanged = (0, _callbacks.default)();\r\n            that._dataSource = that._createDataSource(options);\r\n            that._rowsScrollController = createScrollController(that, options.component, {\r\n                totalItemsCount: function() {\r\n                    return that.totalRowCount()\r\n                },\r\n                pageIndex: function(index) {\r\n                    return that.rowPageIndex(index)\r\n                },\r\n                pageSize: function() {\r\n                    return that.rowPageSize()\r\n                },\r\n                load: function() {\r\n                    if (that._rowsScrollController.pageIndex() >= this.pageCount()) {\r\n                        that._rowsScrollController.pageIndex(this.pageCount() - 1)\r\n                    }\r\n                    return that._rowsScrollController.handleDataChanged(function() {\r\n                        if (that._dataSource.paginate()) {\r\n                            that._dataSource.load()\r\n                        } else {\r\n                            virtualScrollControllerChanged.apply(this, arguments)\r\n                        }\r\n                    })\r\n                }\r\n            });\r\n            that._columnsScrollController = createScrollController(that, options.component, {\r\n                totalItemsCount: function() {\r\n                    return that.totalColumnCount()\r\n                },\r\n                pageIndex: function(index) {\r\n                    return that.columnPageIndex(index)\r\n                },\r\n                pageSize: function() {\r\n                    return that.columnPageSize()\r\n                },\r\n                load: function() {\r\n                    if (that._columnsScrollController.pageIndex() >= this.pageCount()) {\r\n                        that._columnsScrollController.pageIndex(this.pageCount() - 1)\r\n                    }\r\n                    return that._columnsScrollController.handleDataChanged(function() {\r\n                        if (that._dataSource.paginate()) {\r\n                            that._dataSource.load()\r\n                        } else {\r\n                            virtualScrollControllerChanged.apply(this, arguments)\r\n                        }\r\n                    })\r\n                }\r\n            });\r\n            that._stateStoringController = new _uiGrid_core3.StateStoringController(options.component).init();\r\n            that._columnsInfo = [];\r\n            that._rowsInfo = [];\r\n            that._cellsInfo = [];\r\n            that.expandValueChanging = (0, _callbacks.default)();\r\n            that.loadingChanged = (0, _callbacks.default)();\r\n            that.progressChanged = (0, _callbacks.default)();\r\n            that.scrollChanged = (0, _callbacks.default)();\r\n            that.load();\r\n            that._update();\r\n            that.changed = (0, _callbacks.default)()\r\n        },\r\n        _fireChanged: function() {\r\n            var that = this;\r\n            var startChanging = new Date;\r\n            that.changed && !that._lockChanged && that.changed.fire();\r\n            that._changingDuration = new Date - startChanging\r\n        },\r\n        _correctSkipsTakes: function(rowIndex, rowSkip, rowSpan, levels, skips, takes) {\r\n            var endIndex = rowSpan ? rowIndex + rowSpan - 1 : rowIndex;\r\n            skips[levels.length] = skips[levels.length] || 0;\r\n            takes[levels.length] = takes[levels.length] || 0;\r\n            if (endIndex < rowSkip) {\r\n                skips[levels.length]++\r\n            } else {\r\n                takes[levels.length]++\r\n            }\r\n        },\r\n        _calculatePagingForRowExpandedPaths: function(options, skips, takes, rowExpandedSkips, rowExpandedTakes) {\r\n            var rows = this._rowsInfo;\r\n            var rowCount = Math.min(options.rowSkip + options.rowTake, rows.length);\r\n            var rowExpandedPaths = options.rowExpandedPaths;\r\n            var levels = [];\r\n            var expandedPathIndexes = {};\r\n            var i;\r\n            var j;\r\n            var path;\r\n            rowExpandedPaths.forEach(function(path, index) {\r\n                expandedPathIndexes[path] = index\r\n            });\r\n            for (i = 0; i < rowCount; i++) {\r\n                takes.length = skips.length = levels.length + 1;\r\n                for (j = 0; j < rows[i].length; j++) {\r\n                    var cell = rows[i][j];\r\n                    if (\"D\" === cell.type) {\r\n                        this._correctSkipsTakes(i, options.rowSkip, cell.rowspan, levels, skips, takes);\r\n                        path = cell.path || path;\r\n                        var expandIndex = path && path.length > 1 ? expandedPathIndexes[path.slice(0, -1)] : -1;\r\n                        if (expandIndex >= 0) {\r\n                            rowExpandedSkips[expandIndex] = skips[levels.length] || 0;\r\n                            rowExpandedTakes[expandIndex] = takes[levels.length] || 0\r\n                        }\r\n                        if (cell.rowspan) {\r\n                            levels.push(cell.rowspan)\r\n                        }\r\n                    }\r\n                }\r\n                levels = levels.map(function(level) {\r\n                    return level - 1\r\n                }).filter(function(level) {\r\n                    return level > 0\r\n                })\r\n            }\r\n        },\r\n        _calculatePagingForColumnExpandedPaths: function(options, skips, takes, expandedSkips, expandedTakes) {\r\n            var skipByPath = {};\r\n            var takeByPath = {};\r\n            (0, _uiGrid_core2.foreachColumnInfo)(this._columnsInfo, function(columnInfo, columnIndex) {\r\n                if (\"D\" === columnInfo.type && columnInfo.path && void 0 === columnInfo.dataIndex) {\r\n                    var colspan = columnInfo.colspan || 1;\r\n                    var path = columnInfo.path.slice(0, -1).toString();\r\n                    skipByPath[path] = skipByPath[path] || 0;\r\n                    takeByPath[path] = takeByPath[path] || 0;\r\n                    if (columnIndex + colspan <= options.columnSkip) {\r\n                        skipByPath[path]++\r\n                    } else {\r\n                        if (columnIndex < options.columnSkip + options.columnTake) {\r\n                            takeByPath[path]++\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n            skips[0] = skipByPath[[]];\r\n            takes[0] = takeByPath[[]];\r\n            options.columnExpandedPaths.forEach(function(path, index) {\r\n                var skip = skipByPath[path];\r\n                var take = takeByPath[path];\r\n                if (void 0 !== skip) {\r\n                    expandedSkips[index] = skip\r\n                }\r\n                if (void 0 !== take) {\r\n                    expandedTakes[index] = take\r\n                }\r\n            })\r\n        },\r\n        _processPagingForExpandedPaths: function(options, area, storeLoadOptions, reload) {\r\n            var expandedPaths = options[area + \"ExpandedPaths\"];\r\n            var expandedSkips = expandedPaths.map(function() {\r\n                return 0\r\n            });\r\n            var expandedTakes = expandedPaths.map(function() {\r\n                return reload ? options.pageSize : 0\r\n            });\r\n            var skips = [];\r\n            var takes = [];\r\n            if (!reload) {\r\n                if (\"row\" === area) {\r\n                    this._calculatePagingForRowExpandedPaths(options, skips, takes, expandedSkips, expandedTakes)\r\n                } else {\r\n                    this._calculatePagingForColumnExpandedPaths(options, skips, takes, expandedSkips, expandedTakes)\r\n                }\r\n            }\r\n            this._savePagingForExpandedPaths(options, area, storeLoadOptions, skips[0], takes[0], expandedSkips, expandedTakes)\r\n        },\r\n        _savePagingForExpandedPaths: function(options, area, storeLoadOptions, skip, take, expandedSkips, expandedTakes) {\r\n            var expandedPaths = options[area + \"ExpandedPaths\"];\r\n            options[area + \"ExpandedPaths\"] = [];\r\n            options[area + \"Skip\"] = void 0 !== skip ? skip : options[area + \"Skip\"];\r\n            options[area + \"Take\"] = void 0 !== take ? take : options[area + \"Take\"];\r\n            for (var i = 0; i < expandedPaths.length; i++) {\r\n                if (expandedTakes[i]) {\r\n                    var _extend;\r\n                    var isOppositeArea = options.area && options.area !== area;\r\n                    storeLoadOptions.push((0, _extend2.extend)({\r\n                        area: area,\r\n                        headerName: area + \"s\"\r\n                    }, options, (_extend = {}, _defineProperty(_extend, area + \"Skip\", expandedSkips[i]), _defineProperty(_extend, area + \"Take\", expandedTakes[i]), _defineProperty(_extend, isOppositeArea ? \"oppositePath\" : \"path\", expandedPaths[i]), _extend)))\r\n                }\r\n            }\r\n        },\r\n        _handleCustomizeStoreLoadOptions: function(storeLoadOptions, reload) {\r\n            var _this = this;\r\n            var options = storeLoadOptions[0];\r\n            var rowsScrollController = this._rowsScrollController;\r\n            if (this._dataSource.paginate() && rowsScrollController) {\r\n                var rowPageSize = rowsScrollController._dataSource.pageSize();\r\n                if (\"rows\" === options.headerName) {\r\n                    options.rowSkip = 0;\r\n                    options.rowTake = rowPageSize;\r\n                    options.rowExpandedPaths = []\r\n                } else {\r\n                    options.rowSkip = rowsScrollController.beginPageIndex() * rowPageSize;\r\n                    options.rowTake = (rowsScrollController.endPageIndex() - rowsScrollController.beginPageIndex() + 1) * rowPageSize;\r\n                    this._processPagingForExpandedPaths(options, \"row\", storeLoadOptions, reload)\r\n                }\r\n            }\r\n            var columnsScrollController = this._columnsScrollController;\r\n            if (this._dataSource.paginate() && columnsScrollController) {\r\n                var columnPageSize = columnsScrollController._dataSource.pageSize();\r\n                storeLoadOptions.forEach(function(options, index) {\r\n                    if (\"columns\" === options.headerName) {\r\n                        options.columnSkip = 0;\r\n                        options.columnTake = columnPageSize;\r\n                        options.columnExpandedPaths = []\r\n                    } else {\r\n                        options.columnSkip = columnsScrollController.beginPageIndex() * columnPageSize;\r\n                        options.columnTake = (columnsScrollController.endPageIndex() - columnsScrollController.beginPageIndex() + 1) * columnPageSize;\r\n                        _this._processPagingForExpandedPaths(options, \"column\", storeLoadOptions, reload)\r\n                    }\r\n                })\r\n            }\r\n        },\r\n        load: function() {\r\n            var that = this;\r\n            var stateStoringController = this._stateStoringController;\r\n            if (stateStoringController.isEnabled() && !stateStoringController.isLoaded()) {\r\n                stateStoringController.load().always(function(state) {\r\n                    if (state) {\r\n                        that._dataSource.state(state)\r\n                    } else {\r\n                        that._dataSource.load()\r\n                    }\r\n                })\r\n            } else {\r\n                that._dataSource.load()\r\n            }\r\n        },\r\n        calculateVirtualContentParams: function(contentParams) {\r\n            var that = this;\r\n            var rowsScrollController = that._rowsScrollController;\r\n            var columnsScrollController = that._columnsScrollController;\r\n            if (rowsScrollController && columnsScrollController) {\r\n                rowsScrollController.viewportItemSize(contentParams.virtualRowHeight);\r\n                rowsScrollController.viewportSize(contentParams.viewportHeight / rowsScrollController.viewportItemSize());\r\n                rowsScrollController.setContentSize(contentParams.itemHeights);\r\n                columnsScrollController.viewportItemSize(contentParams.virtualColumnWidth);\r\n                columnsScrollController.viewportSize(contentParams.viewportWidth / columnsScrollController.viewportItemSize());\r\n                columnsScrollController.setContentSize(contentParams.itemWidths);\r\n                (0, _common.deferUpdate)(function() {\r\n                    columnsScrollController.loadIfNeed();\r\n                    rowsScrollController.loadIfNeed()\r\n                });\r\n                that.scrollChanged.fire({\r\n                    left: columnsScrollController.getViewportPosition(),\r\n                    top: rowsScrollController.getViewportPosition()\r\n                });\r\n                return {\r\n                    contentTop: rowsScrollController.getContentOffset(),\r\n                    contentLeft: columnsScrollController.getContentOffset(),\r\n                    width: columnsScrollController.getVirtualContentSize(),\r\n                    height: rowsScrollController.getVirtualContentSize()\r\n                }\r\n            }\r\n        },\r\n        setViewportPosition: function(left, top) {\r\n            this._rowsScrollController.setViewportPosition(top || 0);\r\n            this._columnsScrollController.setViewportPosition(left || 0)\r\n        },\r\n        subscribeToWindowScrollEvents: function($element) {\r\n            this._rowsScrollController && this._rowsScrollController.subscribeToWindowScrollEvents($element)\r\n        },\r\n        updateWindowScrollPosition: function(position) {\r\n            this._rowsScrollController && this._rowsScrollController.scrollTo(position)\r\n        },\r\n        updateViewOptions: function(options) {\r\n            (0, _extend2.extend)(this._options, options);\r\n            this._update()\r\n        },\r\n        _handleExpandValueChanging: function(e) {\r\n            this.expandValueChanging.fire(e)\r\n        },\r\n        _handleLoadingChanged: function(isLoading) {\r\n            this.loadingChanged.fire(isLoading)\r\n        },\r\n        _handleProgressChanged: function(progress) {\r\n            this.progressChanged.fire(progress)\r\n        },\r\n        _handleFieldsPrepared: function(e) {\r\n            this._options.onFieldsPrepared && this._options.onFieldsPrepared(e)\r\n        },\r\n        _createDataSource: function(options) {\r\n            var that = this;\r\n            var dataSourceOptions = options.dataSource;\r\n            var dataSource;\r\n            that._isSharedDataSource = dataSourceOptions instanceof _data_source.default;\r\n            if (that._isSharedDataSource) {\r\n                dataSource = dataSourceOptions\r\n            } else {\r\n                dataSource = new _data_source.default(dataSourceOptions)\r\n            }\r\n            that._expandValueChangingHandler = that._handleExpandValueChanging.bind(that);\r\n            that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n            that._fieldsPreparedHandler = that._handleFieldsPrepared.bind(that);\r\n            that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);\r\n            that._changedHandler = function() {\r\n                that._update();\r\n                that.dataSourceChanged.fire()\r\n            };\r\n            that._progressChangedHandler = function(progress) {\r\n                that._handleProgressChanged(.8 * progress)\r\n            };\r\n            dataSource.on(\"changed\", that._changedHandler);\r\n            dataSource.on(\"expandValueChanging\", that._expandValueChangingHandler);\r\n            dataSource.on(\"loadingChanged\", that._loadingChangedHandler);\r\n            dataSource.on(\"progressChanged\", that._progressChangedHandler);\r\n            dataSource.on(\"fieldsPrepared\", that._fieldsPreparedHandler);\r\n            dataSource.on(\"customizeStoreLoadOptions\", that._customizeStoreLoadOptionsHandler);\r\n            return dataSource\r\n        },\r\n        getDataSource: function() {\r\n            return this._dataSource\r\n        },\r\n        isLoading: function() {\r\n            return this._dataSource.isLoading()\r\n        },\r\n        beginLoading: function() {\r\n            this._dataSource.beginLoading()\r\n        },\r\n        endLoading: function() {\r\n            this._dataSource.endLoading()\r\n        },\r\n        _update: function() {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var options = that._options;\r\n            var columnFields = dataSource.getAreaFields(\"column\");\r\n            var rowFields = dataSource.getAreaFields(\"row\");\r\n            var dataFields = dataSource.getAreaFields(\"data\");\r\n            var dataFieldsForRows = \"row\" === options.dataFieldArea ? dataFields : [];\r\n            var dataFieldsForColumns = \"row\" !== options.dataFieldArea ? dataFields : [];\r\n            var data = dataSource.getData();\r\n            var hiddenTotals = getHiddenTotals(dataFields);\r\n            var hiddenValues = getHiddenValues(dataFields);\r\n            var hiddenGrandTotals = getHiddenGrandTotalsTotals(dataFields, columnFields);\r\n            var grandTotalsAreHiddenForNotAllDataFields = dataFields.length > 0 ? hiddenGrandTotals.length !== dataFields.length : true;\r\n            var rowOptions = {\r\n                isEmptyGrandTotal: data.isEmptyGrandTotalRow,\r\n                texts: options.texts || {},\r\n                hiddenTotals: hiddenTotals,\r\n                hiddenValues: hiddenValues,\r\n                hiddenGrandTotals: [],\r\n                showTotals: options.showRowTotals,\r\n                showGrandTotals: false !== options.showRowGrandTotals && grandTotalsAreHiddenForNotAllDataFields,\r\n                sortBySummaryPaths: createSortPaths(columnFields, dataFields),\r\n                showTotalsPrior: \"rows\" === options.showTotalsPrior || \"both\" === options.showTotalsPrior,\r\n                showEmpty: !options.hideEmptySummaryCells,\r\n                layout: options.rowHeaderLayout,\r\n                fields: rowFields,\r\n                dataFields: dataFields,\r\n                progress: 0\r\n            };\r\n            var columnOptions = {\r\n                isEmptyGrandTotal: data.isEmptyGrandTotalColumn,\r\n                texts: options.texts || {},\r\n                hiddenTotals: hiddenTotals,\r\n                hiddenValues: hiddenValues,\r\n                hiddenGrandTotals: hiddenGrandTotals,\r\n                showTotals: options.showColumnTotals,\r\n                showTotalsPrior: \"columns\" === options.showTotalsPrior || \"both\" === options.showTotalsPrior,\r\n                showGrandTotals: false !== options.showColumnGrandTotals && grandTotalsAreHiddenForNotAllDataFields,\r\n                sortBySummaryPaths: createSortPaths(rowFields, dataFields),\r\n                showEmpty: !options.hideEmptySummaryCells,\r\n                fields: columnFields,\r\n                dataFields: dataFields,\r\n                progress: 0\r\n            };\r\n            var notifyProgress = function(progress) {\r\n                this.progress = progress;\r\n                that._handleProgressChanged(.8 + .1 * rowOptions.progress + .1 * columnOptions.progress)\r\n            };\r\n            rowOptions.notifyProgress = notifyProgress;\r\n            columnOptions.notifyProgress = notifyProgress;\r\n            if (!(0, _type.isDefined)(data.grandTotalRowIndex)) {\r\n                data.grandTotalRowIndex = getHeaderIndexedItems(data.rows, rowOptions).length\r\n            }\r\n            if (!(0, _type.isDefined)(data.grandTotalColumnIndex)) {\r\n                data.grandTotalColumnIndex = getHeaderIndexedItems(data.columns, columnOptions).length\r\n            }\r\n            dataSource._changeLoadingCount(1);\r\n            (0, _deferred.when)(createHeaderInfo(data.columns, columnFields, dataFieldsForColumns, true, columnOptions), createHeaderInfo(data.rows, rowFields, dataFieldsForRows, false, rowOptions)).always(function() {\r\n                dataSource._changeLoadingCount(-1)\r\n            }).done(function(columnsInfo, rowsInfo) {\r\n                that._columnsInfo = columnsInfo;\r\n                that._rowsInfo = rowsInfo;\r\n                if (that._rowsScrollController && that._columnsScrollController && that.changed && !that._dataSource.paginate()) {\r\n                    that._rowsScrollController.reset();\r\n                    that._columnsScrollController.reset();\r\n                    that._lockChanged = true;\r\n                    that._rowsScrollController.load();\r\n                    that._columnsScrollController.load();\r\n                    that._lockChanged = false\r\n                }\r\n            }).done(function() {\r\n                that._fireChanged();\r\n                if (that._stateStoringController.isEnabled() && !that._dataSource.isLoading()) {\r\n                    that._stateStoringController.state(that._dataSource.state());\r\n                    that._stateStoringController.save()\r\n                }\r\n            })\r\n        },\r\n        getRowsInfo: function(getAllData) {\r\n            var that = this;\r\n            var rowsInfo = that._rowsInfo;\r\n            var scrollController = that._rowsScrollController;\r\n            var rowspan;\r\n            var i;\r\n            if (scrollController && !getAllData) {\r\n                var startIndex = scrollController.beginPageIndex() * that.rowPageSize();\r\n                var endIndex = scrollController.endPageIndex() * that.rowPageSize() + that.rowPageSize();\r\n                var newRowsInfo = [];\r\n                var maxDepth = 1;\r\n                foreachRowInfo(rowsInfo, function(rowInfo, visibleIndex, rowIndex, _, columnIndex) {\r\n                    var isVisible = visibleIndex >= startIndex && rowIndex < endIndex;\r\n                    var index = rowIndex < startIndex ? 0 : rowIndex - startIndex;\r\n                    var cell = rowInfo;\r\n                    if (isVisible) {\r\n                        newRowsInfo[index] = newRowsInfo[index] || [];\r\n                        rowspan = rowIndex < startIndex ? rowInfo.rowspan - (startIndex - rowIndex) || 1 : rowInfo.rowspan;\r\n                        if (startIndex + index + rowspan > endIndex) {\r\n                            rowspan = endIndex - (index + startIndex) || 1\r\n                        }\r\n                        if (rowspan !== rowInfo.rowspan) {\r\n                            cell = (0, _extend2.extend)({}, cell, {\r\n                                rowspan: rowspan\r\n                            })\r\n                        }\r\n                        newRowsInfo[index].push(cell);\r\n                        maxDepth = math.max(maxDepth, columnIndex + 1)\r\n                    } else {\r\n                        if (i > endIndex) {\r\n                            return false\r\n                        }\r\n                    }\r\n                });\r\n                foreachRowInfo(newRowsInfo, function(rowInfo, visibleIndex, rowIndex, columnIndex, realColumnIndex) {\r\n                    var colspan = rowInfo.colspan || 1;\r\n                    if (realColumnIndex + colspan > maxDepth) {\r\n                        newRowsInfo[rowIndex][columnIndex] = (0, _extend2.extend)({}, rowInfo, {\r\n                            colspan: maxDepth - realColumnIndex || 1\r\n                        })\r\n                    }\r\n                });\r\n                return newRowsInfo\r\n            }\r\n            return rowsInfo\r\n        },\r\n        getColumnsInfo: function(getAllData) {\r\n            var that = this;\r\n            var info = that._columnsInfo;\r\n            var scrollController = that._columnsScrollController;\r\n            if (scrollController && !getAllData) {\r\n                var startIndex = scrollController.beginPageIndex() * that.columnPageSize();\r\n                var endIndex = scrollController.endPageIndex() * that.columnPageSize() + that.columnPageSize();\r\n                info = (0, _uiGrid_core2.createColumnsInfo)(info, startIndex, endIndex)\r\n            }\r\n            return info\r\n        },\r\n        totalRowCount: function() {\r\n            return this._rowsInfo.length\r\n        },\r\n        rowPageIndex: function(index) {\r\n            if (void 0 !== index) {\r\n                this._rowPageIndex = index\r\n            }\r\n            return this._rowPageIndex || 0\r\n        },\r\n        totalColumnCount: function() {\r\n            var count = 0;\r\n            if (this._columnsInfo && this._columnsInfo.length) {\r\n                for (var i = 0; i < this._columnsInfo[0].length; i++) {\r\n                    count += this._columnsInfo[0][i].colspan || 1\r\n                }\r\n            }\r\n            return count\r\n        },\r\n        rowPageSize: function(size) {\r\n            if (void 0 !== size) {\r\n                this._rowPageSize = size\r\n            }\r\n            return this._rowPageSize || 20\r\n        },\r\n        columnPageSize: function(size) {\r\n            if (void 0 !== size) {\r\n                this._columnPageSize = size\r\n            }\r\n            return this._columnPageSize || 20\r\n        },\r\n        columnPageIndex: function(index) {\r\n            if (void 0 !== index) {\r\n                this._columnPageIndex = index\r\n            }\r\n            return this._columnPageIndex || 0\r\n        },\r\n        getCellsInfo: function(getAllData) {\r\n            var rowsInfo = this.getRowsInfo(getAllData);\r\n            var columnsInfo = this.getColumnsInfo(getAllData);\r\n            var data = this._dataSource.getData();\r\n            var texts = this._options.texts || {};\r\n            return createCellsInfo(rowsInfo, columnsInfo, data, this._dataSource.getAreaFields(\"data\"), this._options.dataFieldArea, texts.dataNotAvailable)\r\n        },\r\n        dispose: function() {\r\n            var that = this;\r\n            if (that._isSharedDataSource) {\r\n                that._dataSource.off(\"changed\", that._changedHandler);\r\n                that._dataSource.off(\"expandValueChanging\", that._expandValueChangingHandler);\r\n                that._dataSource.off(\"loadingChanged\", that._loadingChangedHandler);\r\n                that._dataSource.off(\"progressChanged\", that._progressChangedHandler);\r\n                that._dataSource.off(\"fieldsPrepared\", that._fieldsPreparedHandler);\r\n                that._dataSource.off(\"customizeStoreLoadOptions\", that._customizeStoreLoadOptionsHandler)\r\n            } else {\r\n                that._dataSource.dispose()\r\n            }\r\n            that._columnsScrollController && that._columnsScrollController.dispose();\r\n            that._rowsScrollController && that._rowsScrollController.dispose();\r\n            that._stateStoringController.dispose();\r\n            that.expandValueChanging.empty();\r\n            that.changed.empty();\r\n            that.loadingChanged.empty();\r\n            that.progressChanged.empty();\r\n            that.scrollChanged.empty();\r\n            that.dataSourceChanged.empty()\r\n        }\r\n    };\r\n    proxyMethod(members, \"applyPartialDataSource\");\r\n    proxyMethod(members, \"collapseHeaderItem\");\r\n    proxyMethod(members, \"expandHeaderItem\");\r\n    proxyMethod(members, \"getData\");\r\n    proxyMethod(members, \"isEmpty\");\r\n    return members\r\n}());\r\nexports.DataController = DataController;\r\n","/**\r\n * DevExtreme (core/templates/template.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.Template = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../renderer\"));\r\nvar _template_base = require(\"./template_base\");\r\nvar _dom = require(\"../utils/dom\");\r\nvar _template_engine_registry = require(\"./template_engine_registry\");\r\nrequire(\"./template_engines\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}(0, _template_engine_registry.registerTemplateEngine)(\"default\", {\r\n    compile: function(element) {\r\n        return (0, _dom.normalizeTemplateElement)(element)\r\n    },\r\n    render: function(template, model, index) {\r\n        return template.clone()\r\n    }\r\n});\r\n(0, _template_engine_registry.setTemplateEngine)(\"default\");\r\nvar Template = function(_TemplateBase) {\r\n    _inherits(Template, _TemplateBase);\r\n    var _super = _createSuper(Template);\r\n\r\n    function Template(element) {\r\n        var _this;\r\n        _classCallCheck(this, Template);\r\n        _this = _super.call(this);\r\n        _this._element = element;\r\n        return _this\r\n    }\r\n    _createClass(Template, [{\r\n        key: \"_renderCore\",\r\n        value: function(options) {\r\n            var transclude = options.transclude;\r\n            if (!transclude && !this._compiledTemplate) {\r\n                this._compiledTemplate = (0, _template_engine_registry.getCurrentTemplateEngine)().compile(this._element)\r\n            }\r\n            return (0, _renderer.default)(\"<div>\").append(transclude ? this._element : (0, _template_engine_registry.getCurrentTemplateEngine)().render(this._compiledTemplate, options.model, options.index)).contents()\r\n        }\r\n    }, {\r\n        key: \"source\",\r\n        value: function() {\r\n            return (0, _renderer.default)(this._element).clone()\r\n        }\r\n    }]);\r\n    return Template\r\n}(_template_base.TemplateBase);\r\nexports.Template = Template;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grid_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.grid_view\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"gridView\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/toolbar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _uiToolbarStrategy = _interopRequireDefault(require(\"./toolbar/ui.toolbar.strategy.action_sheet\"));\r\nvar _uiToolbarStrategy2 = _interopRequireDefault(require(\"./toolbar/ui.toolbar.strategy.drop_down_menu\"));\r\nvar _uiToolbar = _interopRequireDefault(require(\"./toolbar/ui.toolbar.base\"));\r\nvar _child_default_template = require(\"../core/templates/child_default_template\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar STRATEGIES = {\r\n    actionSheet: _uiToolbarStrategy.default,\r\n    dropDownMenu: _uiToolbarStrategy2.default\r\n};\r\nvar TOOLBAR_AUTO_HIDE_ITEM_CLASS = \"dx-toolbar-item-auto-hide\";\r\nvar TOOLBAR_AUTO_HIDE_TEXT_CLASS = \"dx-toolbar-text-auto-hide\";\r\nvar TOOLBAR_HIDDEN_ITEM = \"dx-toolbar-item-invisible\";\r\nvar Toolbar = _uiToolbar.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            menuItemTemplate: \"menuItem\",\r\n            submenuType: \"dropDownMenu\",\r\n            menuContainer: void 0\r\n        })\r\n    },\r\n    _dimensionChanged: function(dimension) {\r\n        if (\"height\" === dimension) {\r\n            return\r\n        }\r\n        this._menuStrategy.toggleMenuVisibility(false, true);\r\n        this.callBase();\r\n        this._menuStrategy.renderMenuItems()\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            actionSheetItem: new _child_default_template.ChildDefaultTemplate(\"item\")\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._renderMenu()\r\n    },\r\n    _postProcessRenderItems: function() {\r\n        var _this = this;\r\n        this._hideOverflowItems();\r\n        this._menuStrategy._updateMenuVisibility();\r\n        this.callBase();\r\n        (0, _common.deferRender)(function() {\r\n            _this._menuStrategy.renderMenuItems()\r\n        })\r\n    },\r\n    _renderItem: function(index, item, itemContainer, $after) {\r\n        var itemElement = this.callBase(index, item, itemContainer, $after);\r\n        if (\"auto\" === item.locateInMenu) {\r\n            itemElement.addClass(TOOLBAR_AUTO_HIDE_ITEM_CLASS)\r\n        }\r\n        if (\"dxButton\" === item.widget && \"inMenu\" === item.showText) {\r\n            itemElement.toggleClass(TOOLBAR_AUTO_HIDE_TEXT_CLASS)\r\n        }\r\n        return itemElement\r\n    },\r\n    _getItemsWidth: function() {\r\n        return this._getSummaryItemsWidth([this._$beforeSection, this._$centerSection, this._$afterSection])\r\n    },\r\n    _hideOverflowItems: function(elementWidth) {\r\n        var overflowItems = this.$element().find(\".\" + TOOLBAR_AUTO_HIDE_ITEM_CLASS);\r\n        if (!overflowItems.length) {\r\n            return\r\n        }\r\n        elementWidth = elementWidth || this.$element().width();\r\n        (0, _renderer.default)(overflowItems).removeClass(TOOLBAR_HIDDEN_ITEM);\r\n        var itemsWidth = this._getItemsWidth();\r\n        while (overflowItems.length && elementWidth < itemsWidth) {\r\n            var $item = overflowItems.eq(-1);\r\n            itemsWidth -= $item.outerWidth();\r\n            $item.addClass(TOOLBAR_HIDDEN_ITEM);\r\n            overflowItems.splice(-1, 1)\r\n        }\r\n    },\r\n    _getMenuItems: function() {\r\n        var that = this;\r\n        var menuItems = (0, _common.grep)(this.option(\"items\") || [], function(item) {\r\n            return that._isMenuItem(item)\r\n        });\r\n        var $hiddenItems = this._itemContainer().children(\".\" + TOOLBAR_AUTO_HIDE_ITEM_CLASS + \".\" + TOOLBAR_HIDDEN_ITEM).not(\".dx-state-invisible\");\r\n        this._restoreItems = this._restoreItems || [];\r\n        var overflowItems = [].slice.call($hiddenItems).map(function(item) {\r\n            var itemData = that._getItemData(item);\r\n            var $itemContainer = (0, _renderer.default)(item).children();\r\n            var $itemMarkup = $itemContainer.children();\r\n            return (0, _extend.extend)({\r\n                menuItemTemplate: function() {\r\n                    that._restoreItems.push({\r\n                        container: $itemContainer,\r\n                        item: $itemMarkup\r\n                    });\r\n                    var $container = (0, _renderer.default)(\"<div>\").addClass(TOOLBAR_AUTO_HIDE_ITEM_CLASS);\r\n                    return $container.append($itemMarkup)\r\n                }\r\n            }, itemData)\r\n        });\r\n        return (0, _array.merge)(overflowItems, menuItems)\r\n    },\r\n    _getToolbarItems: function() {\r\n        var that = this;\r\n        return (0, _common.grep)(this.option(\"items\") || [], function(item) {\r\n            return !that._isMenuItem(item)\r\n        })\r\n    },\r\n    _renderMenu: function() {\r\n        var _this2 = this;\r\n        this._renderMenuStrategy();\r\n        (0, _common.deferRender)(function() {\r\n            _this2._menuStrategy.render()\r\n        })\r\n    },\r\n    _renderMenuStrategy: function() {\r\n        var strategyName = this.option(\"submenuType\");\r\n        if (this._requireDropDownStrategy()) {\r\n            strategyName = \"dropDownMenu\"\r\n        }\r\n        var strategy = STRATEGIES[strategyName];\r\n        if (!(this._menuStrategy && this._menuStrategy.NAME === strategyName)) {\r\n            this._menuStrategy = new strategy(this)\r\n        }\r\n    },\r\n    _requireDropDownStrategy: function() {\r\n        var items = this.option(\"items\") || [];\r\n        var result = false;\r\n        (0, _iterator.each)(items, function(index, item) {\r\n            if (\"auto\" === item.locateInMenu) {\r\n                result = true\r\n            } else {\r\n                if (\"always\" === item.locateInMenu && item.widget) {\r\n                    result = true\r\n                }\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _arrangeItems: function() {\r\n        if (this.$element().is(\":hidden\")) {\r\n            return\r\n        }\r\n        this._$centerSection.css({\r\n            margin: \"0 auto\",\r\n            \"float\": \"none\"\r\n        });\r\n        (0, _iterator.each)(this._restoreItems || [], function(_, obj) {\r\n            (0, _renderer.default)(obj.container).append(obj.item)\r\n        });\r\n        this._restoreItems = [];\r\n        var elementWidth = this.$element().width();\r\n        this._hideOverflowItems(elementWidth);\r\n        this.callBase(elementWidth)\r\n    },\r\n    _itemOptionChanged: function(item, property, value) {\r\n        if (this._isMenuItem(item)) {\r\n            this._menuStrategy.renderMenuItems()\r\n        } else {\r\n            if (this._isToolbarItem(item)) {\r\n                this.callBase(item, property, value)\r\n            } else {\r\n                this.callBase(item, property, value);\r\n                this._menuStrategy.renderMenuItems()\r\n            }\r\n        }\r\n        if (\"location\" === property) {\r\n            this.repaint()\r\n        }\r\n    },\r\n    _isMenuItem: function(itemData) {\r\n        return \"menu\" === itemData.location || \"always\" === itemData.locateInMenu\r\n    },\r\n    _isToolbarItem: function(itemData) {\r\n        return void 0 === itemData.location || \"never\" === itemData.locateInMenu\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name;\r\n        var value = args.value;\r\n        switch (name) {\r\n            case \"submenuType\":\r\n                this._invalidate();\r\n                break;\r\n            case \"visible\":\r\n                this.callBase.apply(this, arguments);\r\n                this._menuStrategy.handleToolbarVisibilityChange(value);\r\n                break;\r\n            case \"menuItemTemplate\":\r\n                this._changeMenuOption(\"itemTemplate\", this._getTemplate(value));\r\n                break;\r\n            case \"onItemClick\":\r\n                this._changeMenuOption(name, value);\r\n                this.callBase.apply(this, arguments);\r\n                break;\r\n            case \"menuContainer\":\r\n                this._changeMenuOption(\"container\", value);\r\n                break;\r\n            default:\r\n                this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    _changeMenuOption: function(name, value) {\r\n        this._menuStrategy.widgetOption(name, value)\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxToolbar\", Toolbar);\r\nvar _default = Toolbar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/scheduler/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar KEYS = {\r\n    SETTINGS: \"dxAppointmentSettings\"\r\n};\r\nvar utils = {\r\n    dataAccessors: {\r\n        getAppointmentSettings: function(element) {\r\n            return (0, _renderer.default)(element).data(KEYS.SETTINGS)\r\n        },\r\n        getAppointmentInfo: function(element) {\r\n            var settings = utils.dataAccessors.getAppointmentSettings(element);\r\n            return null === settings || void 0 === settings ? void 0 : settings.info\r\n        }\r\n    }\r\n};\r\nvar _default = utils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/time_panel/layout.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.TimePanelTableLayout = TimePanelTableLayout;\r\nexports.TimePanelTableLayoutProps = exports.viewFunction = void 0;\r\nvar _row = require(\"../row\");\r\nvar _cell = require(\"./cell\");\r\nvar _cell2 = require(\"../cell\");\r\nvar _utils = require(\"../../utils\");\r\nvar _table = require(\"../table\");\r\nvar _layout_props = require(\"../layout_props\");\r\nvar _title = require(\"../date_table/all_day_panel/title\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_table.Table, _extends({}, viewModel.restAttributes, {\r\n        isVirtual: viewModel.isVirtual,\r\n        topVirtualRowHeight: viewModel.topVirtualRowHeight,\r\n        bottomVirtualRowHeight: viewModel.bottomVirtualRowHeight,\r\n        className: \"dx-scheduler-time-panel\"\r\n    }), viewModel.props.viewData.groupedData.map(function(_ref, index) {\r\n        var dateTable = _ref.dateTable,\r\n            groupIndex = _ref.groupIndex;\r\n        return Preact.h(Preact.Fragment, {\r\n            key: (0, _utils.getKeyByGroup)(groupIndex)\r\n        }, (0, _utils.getIsGroupedAllDayPanel)(viewModel.props.viewData, index) && Preact.h(_row.Row, null, Preact.h(_cell2.CellBase, {\r\n            className: \"dx-scheduler-time-panel-title-cell\"\r\n        }, Preact.h(_title.AllDayPanelTitle, null))), dateTable.map(function(cellsRow) {\r\n            var cellCountInGroupRow = viewModel.props.viewData.cellCountInGroupRow;\r\n            var _cellsRow$ = cellsRow[0],\r\n                groups = _cellsRow$.groups,\r\n                cellIndex = _cellsRow$.index,\r\n                isFirstGroupCell = _cellsRow$.isFirstGroupCell,\r\n                isLastGroupCell = _cellsRow$.isLastGroupCell,\r\n                key = _cellsRow$.key,\r\n                startDate = _cellsRow$.startDate,\r\n                text = _cellsRow$.text;\r\n            return Preact.h(_row.Row, {\r\n                className: \"dx-scheduler-time-panel-row\",\r\n                key: key\r\n            }, Preact.h(_cell.TimePanelCell, {\r\n                startDate: startDate,\r\n                text: text,\r\n                groups: viewModel.isVerticalGroupOrientation ? groups : void 0,\r\n                groupIndex: viewModel.isVerticalGroupOrientation ? groupIndex : void 0,\r\n                isFirstGroupCell: viewModel.isVerticalGroupOrientation && isFirstGroupCell,\r\n                isLastGroupCell: viewModel.isVerticalGroupOrientation && isLastGroupCell,\r\n                index: Math.floor(cellIndex / cellCountInGroupRow),\r\n                timeCellTemplate: viewModel.props.timeCellTemplate\r\n            }))\r\n        }))\r\n    }))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar TimePanelTableLayoutProps = _objectSpread(_objectSpread({}, _layout_props.LayoutProps), {}, {\r\n    className: \"\",\r\n    allDayPanelVisible: false\r\n});\r\nexports.TimePanelTableLayoutProps = TimePanelTableLayoutProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction TimePanelTableLayout(props) {\r\n    var __isVirtual = (0, _hooks.useCallback)(function() {\r\n        var viewData = props.viewData;\r\n        return !!viewData.isVirtual\r\n    }, [props.viewData]);\r\n    var __topVirtualRowHeight = (0, _hooks.useCallback)(function() {\r\n        return props.viewData.topVirtualRowHeight || 0\r\n    }, [props.viewData]);\r\n    var __bottomVirtualRowHeight = (0, _hooks.useCallback)(function() {\r\n        return props.viewData.bottomVirtualRowHeight || 0\r\n    }, [props.viewData]);\r\n    var __isVerticalGroupOrientation = (0, _hooks.useCallback)(function() {\r\n        var groupOrientation = props.groupOrientation;\r\n        return (0, _utils.isVerticalGroupOrientation)(groupOrientation)\r\n    }, [props.groupOrientation]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.allDayPanelVisible, props.className, props.dataCellTemplate, props.groupOrientation, props.timeCellTemplate, props.viewData, _objectWithoutProperties(props, [\"allDayPanelVisible\", \"className\", \"dataCellTemplate\", \"groupOrientation\", \"timeCellTemplate\", \"viewData\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            timeCellTemplate: getTemplate(props.timeCellTemplate),\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n        }),\r\n        isVirtual: __isVirtual(),\r\n        topVirtualRowHeight: __topVirtualRowHeight(),\r\n        bottomVirtualRowHeight: __bottomVirtualRowHeight(),\r\n        isVerticalGroupOrientation: __isVerticalGroupOrientation(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nTimePanelTableLayout.defaultProps = _objectSpread({}, TimePanelTableLayoutProps);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.virtual_scrolling.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiTree_list2 = _interopRequireDefault(require(\"./ui.tree_list.data_source_adapter\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.virtual_scrolling\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar oldDefaultOptions = _uiGrid_core.default.defaultOptions;\r\nvar originalDataControllerExtender = _uiGrid_core.default.extenders.controllers.data;\r\nvar originalDataSourceAdapterExtender = _uiGrid_core.default.extenders.dataSourceAdapter;\r\n_uiGrid_core.default.extenders.controllers.data = (0, _extend.extend)({}, originalDataControllerExtender, {\r\n    _loadOnOptionChange: function() {\r\n        var virtualScrollController = this._dataSource && this._dataSource._virtualScrollController;\r\n        virtualScrollController && virtualScrollController.reset();\r\n        this.callBase()\r\n    }\r\n});\r\n_uiGrid_core.default.extenders.dataSourceAdapter = (0, _extend.extend)({}, originalDataSourceAdapterExtender, {\r\n    changeRowExpand: function() {\r\n        var _this = this;\r\n        return this.callBase.apply(this, arguments).done(function() {\r\n            var viewportItemIndex = _this.getViewportItemIndex();\r\n            viewportItemIndex >= 0 && _this.setViewportItemIndex(viewportItemIndex)\r\n        })\r\n    }\r\n});\r\n_uiTree_list.default.registerModule(\"virtualScrolling\", (0, _extend.extend)({}, _uiGrid_core.default, {\r\n    defaultOptions: function() {\r\n        return (0, _extend.extend)(true, oldDefaultOptions(), {\r\n            scrolling: {\r\n                mode: \"virtual\"\r\n            }\r\n        })\r\n    }\r\n}));\r\n_uiTree_list2.default.extend(_uiGrid_core.default.extenders.dataSourceAdapter);\r\n","/**\r\n * DevExtreme (core/template_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TemplateManager = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"./renderer\"));\r\nvar _type = require(\"./utils/type\");\r\nvar _common = require(\"./utils/common\");\r\nvar _extend = require(\"./utils/extend\");\r\nvar _function_template = require(\"./templates/function_template\");\r\nvar _empty_template = require(\"./templates/empty_template\");\r\nvar _template_manager = require(\"./utils/template_manager\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar TEXT_NODE = 3;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"template\";\r\nvar TEMPLATE_OPTIONS_NAME = \"dxTemplate\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar DX_POLYMORPH_WIDGET_TEMPLATE = new _function_template.FunctionTemplate(function(_ref) {\r\n    var model = _ref.model,\r\n        parent = _ref.parent;\r\n    var widgetName = model.widget;\r\n    if (!widgetName) {\r\n        return (0, _renderer.default)()\r\n    }\r\n    var widgetElement = (0, _renderer.default)(\"<div>\");\r\n    var widgetOptions = model.options || {};\r\n    if (parent) {\r\n        parent._createComponent(widgetElement, widgetName, widgetOptions)\r\n    } else {\r\n        widgetElement[widgetName](widgetOptions)\r\n    }\r\n    return widgetElement\r\n});\r\nvar TemplateManager = function() {\r\n    function TemplateManager(createElement, anonymousTemplateName) {\r\n        _classCallCheck(this, TemplateManager);\r\n        this._tempTemplates = [];\r\n        this._defaultTemplates = {};\r\n        this._anonymousTemplateName = anonymousTemplateName || ANONYMOUS_TEMPLATE_NAME;\r\n        this._createElement = createElement || _template_manager.defaultCreateElement;\r\n        this._createTemplateIfNeeded = this._createTemplateIfNeeded.bind(this)\r\n    }\r\n    _createClass(TemplateManager, [{\r\n        key: \"addDefaultTemplates\",\r\n        value: function(templates) {\r\n            this._defaultTemplates = (0, _extend.extend)({}, this._defaultTemplates, templates)\r\n        }\r\n    }, {\r\n        key: \"dispose\",\r\n        value: function() {\r\n            this._tempTemplates.forEach(function(tempTemplate) {\r\n                tempTemplate.template.dispose && tempTemplate.template.dispose()\r\n            });\r\n            this._tempTemplates = []\r\n        }\r\n    }, {\r\n        key: \"extractTemplates\",\r\n        value: function($el) {\r\n            var templates = this._extractTemplates($el);\r\n            var anonymousTemplateMeta = this._extractAnonymousTemplate($el);\r\n            return {\r\n                templates: templates,\r\n                anonymousTemplateMeta: anonymousTemplateMeta\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_extractTemplates\",\r\n        value: function($el) {\r\n            var _this = this;\r\n            var templates = (0, _template_manager.findTemplates)($el, TEMPLATE_OPTIONS_NAME);\r\n            var suitableTemplates = (0, _template_manager.suitableTemplatesByName)(templates);\r\n            templates.forEach(function(_ref2) {\r\n                var element = _ref2.element,\r\n                    name = _ref2.options.name;\r\n                if (element === suitableTemplates[name]) {\r\n                    (0, _renderer.default)(element).addClass(TEMPLATE_WRAPPER_CLASS).detach()\r\n                } else {\r\n                    (0, _renderer.default)(element).remove()\r\n                }\r\n            });\r\n            return Object.keys(suitableTemplates).map(function(name) {\r\n                return {\r\n                    name: name,\r\n                    template: _this._createTemplate(suitableTemplates[name])\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_extractAnonymousTemplate\",\r\n        value: function($el) {\r\n            var $anonymousTemplate = $el.contents().detach();\r\n            var $notJunkTemplateContent = $anonymousTemplate.filter(function(_, element) {\r\n                var isTextNode = element.nodeType === TEXT_NODE;\r\n                var isEmptyText = (0, _renderer.default)(element).text().trim().length < 1;\r\n                return !(isTextNode && isEmptyText)\r\n            });\r\n            return $notJunkTemplateContent.length > 0 ? {\r\n                template: this._createTemplate($anonymousTemplate),\r\n                name: this._anonymousTemplateName\r\n            } : {}\r\n        }\r\n    }, {\r\n        key: \"_createTemplateIfNeeded\",\r\n        value: function(templateSource) {\r\n            var cachedTemplate = this._tempTemplates.filter(function(tempTemplate) {\r\n                return tempTemplate.source === (0, _template_manager.templateKey)(templateSource)\r\n            })[0];\r\n            if (cachedTemplate) {\r\n                return cachedTemplate.template\r\n            }\r\n            var template = this._createTemplate(templateSource);\r\n            this._tempTemplates.push({\r\n                template: template,\r\n                source: (0, _template_manager.templateKey)(templateSource)\r\n            });\r\n            return template\r\n        }\r\n    }, {\r\n        key: \"_createTemplate\",\r\n        value: function(templateSource) {\r\n            return this._createElement((0, _template_manager.validateTemplateSource)(templateSource))\r\n        }\r\n    }, {\r\n        key: \"getTemplate\",\r\n        value: function(templateSource, templates, _ref3, context) {\r\n            var _this2 = this;\r\n            var isAsyncTemplate = _ref3.isAsyncTemplate,\r\n                skipTemplates = _ref3.skipTemplates;\r\n            if (!(0, _type.isFunction)(templateSource)) {\r\n                return (0, _template_manager.acquireTemplate)(templateSource, this._createTemplateIfNeeded, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates)\r\n            }\r\n            return new _function_template.FunctionTemplate(function(options) {\r\n                var templateSourceResult = templateSource.apply(context, (0, _template_manager.getNormalizedTemplateArgs)(options));\r\n                if (!(0, _type.isDefined)(templateSourceResult)) {\r\n                    return new _empty_template.EmptyTemplate\r\n                }\r\n                var dispose = false;\r\n                var template = (0, _template_manager.acquireTemplate)(templateSourceResult, function(templateSource) {\r\n                    if (templateSource.nodeType || (0, _type.isRenderer)(templateSource) && !(0, _renderer.default)(templateSource).is(\"script\")) {\r\n                        return new _function_template.FunctionTemplate(function() {\r\n                            return templateSource\r\n                        })\r\n                    }\r\n                    dispose = true;\r\n                    return _this2._createTemplate(templateSource)\r\n                }, templates, isAsyncTemplate, skipTemplates, _this2._defaultTemplates);\r\n                var result = template.render(options);\r\n                dispose && template.dispose && template.dispose();\r\n                return result\r\n            })\r\n        }\r\n    }, {\r\n        key: \"anonymousTemplateName\",\r\n        get: function() {\r\n            return this._anonymousTemplateName\r\n        }\r\n    }], [{\r\n        key: \"createDefaultOptions\",\r\n        value: function() {\r\n            return {\r\n                integrationOptions: {\r\n                    watchMethod: function(fn, callback) {\r\n                        var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n                        if (!options.skipImmediate) {\r\n                            callback(fn())\r\n                        }\r\n                        return _common.noop\r\n                    },\r\n                    templates: {\r\n                        \"dx-polymorph-widget\": DX_POLYMORPH_WIDGET_TEMPLATE\r\n                    },\r\n                    useDeferUpdateForTemplates: true\r\n                }\r\n            }\r\n        }\r\n    }]);\r\n    return TemplateManager\r\n}();\r\nexports.TemplateManager = TemplateManager;\r\n","/**\r\n * DevExtreme (events/hover.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.end = exports.start = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _element_data = require(\"../core/element_data\");\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _event_registrator = _interopRequireDefault(require(\"./core/event_registrator\"));\r\nvar _index = require(\"./utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"./pointer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar HOVERSTART_NAMESPACE = \"dxHoverStart\";\r\nvar HOVERSTART = \"dxhoverstart\";\r\nexports.start = HOVERSTART;\r\nvar POINTERENTER_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.enter, HOVERSTART_NAMESPACE);\r\nvar HOVEREND_NAMESPACE = \"dxHoverEnd\";\r\nvar HOVEREND = \"dxhoverend\";\r\nexports.end = HOVEREND;\r\nvar POINTERLEAVE_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.leave, HOVEREND_NAMESPACE);\r\nvar Hover = _class.default.inherit({\r\n    noBubble: true,\r\n    ctor: function() {\r\n        this._handlerArrayKeyPath = this._eventNamespace + \"_HandlerStore\"\r\n    },\r\n    setup: function(element) {\r\n        (0, _element_data.data)(element, this._handlerArrayKeyPath, {})\r\n    },\r\n    add: function(element, handleObj) {\r\n        var that = this;\r\n        var handler = function(e) {\r\n            that._handler(e)\r\n        };\r\n        _events_engine.default.on(element, this._originalEventName, handleObj.selector, handler);\r\n        (0, _element_data.data)(element, this._handlerArrayKeyPath)[handleObj.guid] = handler\r\n    },\r\n    _handler: function(e) {\r\n        if ((0, _index.isTouchEvent)(e) || _devices.default.isSimulator()) {\r\n            return\r\n        }(0, _index.fireEvent)({\r\n            type: this._eventName,\r\n            originalEvent: e,\r\n            delegateTarget: e.delegateTarget\r\n        })\r\n    },\r\n    remove: function(element, handleObj) {\r\n        var handler = (0, _element_data.data)(element, this._handlerArrayKeyPath)[handleObj.guid];\r\n        _events_engine.default.off(element, this._originalEventName, handleObj.selector, handler)\r\n    },\r\n    teardown: function(element) {\r\n        (0, _element_data.removeData)(element, this._handlerArrayKeyPath)\r\n    }\r\n});\r\nvar HoverStart = Hover.inherit({\r\n    ctor: function() {\r\n        this._eventNamespace = HOVERSTART_NAMESPACE;\r\n        this._eventName = HOVERSTART;\r\n        this._originalEventName = POINTERENTER_NAMESPACED_EVENT_NAME;\r\n        this.callBase()\r\n    },\r\n    _handler: function(e) {\r\n        var pointers = e.pointers || [];\r\n        if (!pointers.length) {\r\n            this.callBase(e)\r\n        }\r\n    }\r\n});\r\nvar HoverEnd = Hover.inherit({\r\n    ctor: function() {\r\n        this._eventNamespace = HOVEREND_NAMESPACE;\r\n        this._eventName = HOVEREND;\r\n        this._originalEventName = POINTERLEAVE_NAMESPACED_EVENT_NAME;\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _event_registrator.default)(HOVERSTART, new HoverStart);\r\n(0, _event_registrator.default)(HOVEREND, new HoverEnd);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.columns_controller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ColumnsController = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.columns_controller\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ColumnsController = _uiGrid_core.default.controllers.columns.inherit(function() {\r\n    return {\r\n        _getFirstItems: function(dataSourceAdapter) {\r\n            return this.callBase(dataSourceAdapter).map(function(node) {\r\n                return node.data\r\n            })\r\n        },\r\n        getFirstDataColumnIndex: function() {\r\n            var visibleColumns = this.getVisibleColumns();\r\n            var visibleColumnsLength = visibleColumns.length;\r\n            var firstDataColumnIndex = 0;\r\n            for (var i = 0; i <= visibleColumnsLength - 1; i++) {\r\n                if (!(0, _type.isDefined)(visibleColumns[i].command)) {\r\n                    firstDataColumnIndex = visibleColumns[i].index;\r\n                    break\r\n                }\r\n            }\r\n            return firstDataColumnIndex\r\n        }\r\n    }\r\n}());\r\nexports.ColumnsController = ColumnsController;\r\n_uiTree_list.default.registerModule(\"columns\", {\r\n    defaultOptions: _uiGrid_core.default.defaultOptions,\r\n    controllers: {\r\n        columns: ColumnsController\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/defer_rendering.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _transition_executor = require(\"../animation/transition_executor/transition_executor\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _visibility_change = require(\"../events/visibility_change\");\r\nvar _load_indicator = _interopRequireDefault(require(\"./load_indicator\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _position = require(\"../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar DEFER_RENDERING_CLASS = \"dx-deferrendering\";\r\nvar PENDING_RENDERING_CLASS = \"dx-pending-rendering\";\r\nvar PENDING_RENDERING_MANUAL_CLASS = \"dx-pending-rendering-manual\";\r\nvar PENDING_RENDERING_ACTIVE_CLASS = \"dx-pending-rendering-active\";\r\nvar VISIBLE_WHILE_PENDING_RENDERING_CLASS = \"dx-visible-while-pending-rendering\";\r\nvar INVISIBLE_WHILE_PENDING_RENDERING_CLASS = \"dx-invisible-while-pending-rendering\";\r\nvar LOADINDICATOR_CONTAINER_CLASS = \"dx-loadindicator-container\";\r\nvar DEFER_RENDERING_LOADINDICATOR_CONTAINER_CLASS = \"dx-deferrendering-loadindicator-container\";\r\nvar DEFER_DEFER_RENDERING_LOAD_INDICATOR = \"dx-deferrendering-load-indicator\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar ACTIONS = [\"onRendered\", \"onShown\"];\r\nvar DeferRendering = _ui.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            showLoadIndicator: false,\r\n            renderWhen: void 0,\r\n            animation: void 0,\r\n            staggerItemSelector: void 0,\r\n            onRendered: null,\r\n            onShown: null\r\n        })\r\n    },\r\n    _getAnonymousTemplateName: function() {\r\n        return ANONYMOUS_TEMPLATE_NAME\r\n    },\r\n    _init: function() {\r\n        this.transitionExecutor = new _transition_executor.TransitionExecutor;\r\n        this._initElement();\r\n        this._initRender();\r\n        this._$initialContent = this.$element().clone().contents();\r\n        this._initActions();\r\n        this.callBase()\r\n    },\r\n    _initElement: function() {\r\n        this.$element().addClass(DEFER_RENDERING_CLASS)\r\n    },\r\n    _initRender: function() {\r\n        var that = this;\r\n        var $element = this.$element();\r\n        var renderWhen = this.option(\"renderWhen\");\r\n        var doRender = function() {\r\n            return that._renderDeferredContent()\r\n        };\r\n        if ((0, _type.isPromise)(renderWhen)) {\r\n            (0, _deferred.fromPromise)(renderWhen).done(doRender)\r\n        } else {\r\n            $element.data(\"dx-render-delegate\", doRender);\r\n            if (void 0 === renderWhen) {\r\n                $element.addClass(PENDING_RENDERING_MANUAL_CLASS)\r\n            }\r\n        }\r\n    },\r\n    _initActions: function() {\r\n        var _this = this;\r\n        this._actions = {};\r\n        (0, _iterator.each)(ACTIONS, function(_, action) {\r\n            _this._actions[action] = _this._createActionByOption(action) || _common.noop\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        if (!this._initContent) {\r\n            this._initContent = this._renderContent;\r\n            this._renderContent = function() {}\r\n        }\r\n        this._initContent()\r\n    },\r\n    _renderContentImpl: function() {\r\n        this.$element().removeClass(WIDGET_CLASS);\r\n        this.$element().append(this._$initialContent);\r\n        this._setLoadingState()\r\n    },\r\n    _renderDeferredContent: function() {\r\n        var that = this;\r\n        var $element = this.$element();\r\n        var result = new _deferred.Deferred;\r\n        $element.removeClass(PENDING_RENDERING_MANUAL_CLASS);\r\n        $element.addClass(PENDING_RENDERING_ACTIVE_CLASS);\r\n        this._abortRenderTask();\r\n        this._renderTask = (0, _common.executeAsync)(function() {\r\n            that._renderImpl().done(function() {\r\n                var shownArgs = {\r\n                    element: $element\r\n                };\r\n                that._actions.onShown([shownArgs]);\r\n                result.resolve(shownArgs)\r\n            }).fail(function() {\r\n                result.rejectWith(result, arguments)\r\n            })\r\n        });\r\n        return result.promise()\r\n    },\r\n    _isElementInViewport: function(element) {\r\n        var rect = (0, _position.getBoundingRect)(element);\r\n        return rect.bottom >= 0 && rect.right >= 0 && rect.top <= (window.innerHeight || _dom_adapter.default.getDocumentElement().clientHeight) && rect.left <= (window.innerWidth || _dom_adapter.default.getDocumentElement().clientWidth)\r\n    },\r\n    _animate: function() {\r\n        var that = this;\r\n        var $element = this.$element();\r\n        var animation = (0, _window.hasWindow)() && this.option(\"animation\");\r\n        var staggerItemSelector = this.option(\"staggerItemSelector\");\r\n        var animatePromise;\r\n        that.transitionExecutor.stop();\r\n        if (animation) {\r\n            if (staggerItemSelector) {\r\n                $element.find(staggerItemSelector).each(function() {\r\n                    if (that._isElementInViewport(this)) {\r\n                        that.transitionExecutor.enter((0, _renderer.default)(this), animation)\r\n                    }\r\n                })\r\n            } else {\r\n                that.transitionExecutor.enter($element, animation)\r\n            }\r\n            animatePromise = that.transitionExecutor.start()\r\n        } else {\r\n            animatePromise = (new _deferred.Deferred).resolve().promise()\r\n        }\r\n        return animatePromise\r\n    },\r\n    _renderImpl: function() {\r\n        var $element = this.$element();\r\n        var renderedArgs = {\r\n            element: $element\r\n        };\r\n        var contentTemplate = this._getTemplate(this._templateManager.anonymousTemplateName);\r\n        if (contentTemplate) {\r\n            contentTemplate.render({\r\n                container: $element.empty(),\r\n                noModel: true\r\n            })\r\n        }\r\n        this._setRenderedState($element);\r\n        _events_engine.default.trigger($element, \"dxcontentrendered\");\r\n        this._actions.onRendered([renderedArgs]);\r\n        this._isRendered = true;\r\n        return this._animate()\r\n    },\r\n    _setLoadingState: function() {\r\n        var $element = this.$element();\r\n        var hasCustomLoadIndicator = !!$element.find(\".\" + VISIBLE_WHILE_PENDING_RENDERING_CLASS).length;\r\n        $element.addClass(PENDING_RENDERING_CLASS);\r\n        if (!hasCustomLoadIndicator) {\r\n            $element.children().addClass(INVISIBLE_WHILE_PENDING_RENDERING_CLASS)\r\n        }\r\n        if (this.option(\"showLoadIndicator\")) {\r\n            this._showLoadIndicator($element)\r\n        }\r\n    },\r\n    _showLoadIndicator: function($container) {\r\n        this._$loadIndicator = new _load_indicator.default((0, _renderer.default)(\"<div>\"), {\r\n            visible: true\r\n        }).$element().addClass(DEFER_DEFER_RENDERING_LOAD_INDICATOR);\r\n        (0, _renderer.default)(\"<div>\").addClass(LOADINDICATOR_CONTAINER_CLASS).addClass(DEFER_RENDERING_LOADINDICATOR_CONTAINER_CLASS).append(this._$loadIndicator).appendTo($container)\r\n    },\r\n    _setRenderedState: function() {\r\n        var $element = this.$element();\r\n        if (this._$loadIndicator) {\r\n            this._$loadIndicator.remove()\r\n        }\r\n        $element.removeClass(PENDING_RENDERING_CLASS);\r\n        $element.removeClass(PENDING_RENDERING_ACTIVE_CLASS);\r\n        (0, _visibility_change.triggerShownEvent)($element.children())\r\n    },\r\n    _optionChanged: function(args) {\r\n        var value = args.value;\r\n        var previousValue = args.previousValue;\r\n        switch (args.name) {\r\n            case \"renderWhen\":\r\n                if (false === previousValue && true === value) {\r\n                    this._renderOrAnimate()\r\n                } else {\r\n                    if (true === previousValue && false === value) {\r\n                        this.transitionExecutor.stop();\r\n                        this._setLoadingState()\r\n                    }\r\n                }\r\n                break;\r\n            case \"showLoadIndicator\":\r\n            case \"onRendered\":\r\n            case \"onShown\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _renderOrAnimate: function() {\r\n        var result;\r\n        if (this._isRendered) {\r\n            this._setRenderedState();\r\n            result = this._animate()\r\n        } else {\r\n            result = this._renderDeferredContent()\r\n        }\r\n        return result\r\n    },\r\n    renderContent: function() {\r\n        return this._renderOrAnimate()\r\n    },\r\n    _abortRenderTask: function() {\r\n        if (this._renderTask) {\r\n            this._renderTask.abort();\r\n            this._renderTask = void 0\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        this.transitionExecutor.stop(true);\r\n        this._abortRenderTask();\r\n        this._actions = void 0;\r\n        this._$initialContent = void 0;\r\n        this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxDeferRendering\", DeferRendering);\r\nvar _default = DeferRendering;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.context_menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"contextMenu\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/components/consts.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = {\r\n    events: {\r\n        mouseover: \"mouseover\",\r\n        mouseout: \"mouseout\",\r\n        mousemove: \"mousemove\",\r\n        touchstart: \"touchstart\",\r\n        touchmove: \"touchmove\",\r\n        touchend: \"touchend\",\r\n        mousedown: \"mousedown\",\r\n        mouseup: \"mouseup\",\r\n        click: \"click\",\r\n        selectSeries: \"selectseries\",\r\n        deselectSeries: \"deselectseries\",\r\n        selectPoint: \"selectpoint\",\r\n        deselectPoint: \"deselectpoint\",\r\n        showPointTooltip: \"showpointtooltip\",\r\n        hidePointTooltip: \"hidepointtooltip\"\r\n    },\r\n    states: {\r\n        hover: \"hover\",\r\n        normal: \"normal\",\r\n        selection: \"selection\",\r\n        normalMark: 0,\r\n        hoverMark: 1,\r\n        selectedMark: 2,\r\n        applyHover: \"applyHover\",\r\n        applySelected: \"applySelected\",\r\n        resetItem: \"resetItem\"\r\n    },\r\n    radialLabelIndent: 30,\r\n    pieLabelSpacing: 10,\r\n    pieSeriesSpacing: 4\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./pivot_grid/ui.pivot_grid\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (events/index.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Event = exports.triggerHandler = exports.trigger = exports.off = exports.one = exports.on = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"./core/events_engine\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar on = _events_engine.default.on;\r\nexports.on = on;\r\nvar one = _events_engine.default.one;\r\nexports.one = one;\r\nvar off = _events_engine.default.off;\r\nexports.off = off;\r\nvar trigger = _events_engine.default.trigger;\r\nexports.trigger = trigger;\r\nvar triggerHandler = _events_engine.default.triggerHandler;\r\nexports.triggerHandler = triggerHandler;\r\nvar Event = _events_engine.default.Event;\r\nexports.Event = Event;\r\n","/**\r\n * DevExtreme (ui/notify.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _action = _interopRequireDefault(require(\"../core/action\"));\r\nvar _view_port = require(\"../core/utils/view_port\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _toast = _interopRequireDefault(require(\"./toast\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar $notify = null;\r\nvar notify = function(message, type, displayTime) {\r\n    var options = (0, _type.isPlainObject)(message) ? message : {\r\n        message: message\r\n    };\r\n    var userHiddenAction = options.onHidden;\r\n    (0, _extend.extend)(options, {\r\n        type: type,\r\n        displayTime: displayTime,\r\n        onHidden: function(args) {\r\n            (0, _renderer.default)(args.element).remove();\r\n            new _action.default(userHiddenAction, {\r\n                context: args.model\r\n            }).execute(arguments)\r\n        }\r\n    });\r\n    $notify = (0, _renderer.default)(\"<div>\").appendTo((0, _view_port.value)());\r\n    new _toast.default($notify, options).show()\r\n};\r\nvar _default = notify;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./menu/ui.menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.virtual_scrolling.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.data_source_adapter\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.virtual_scrolling\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"virtualScrolling\", _uiGrid_core.default);\r\n_uiData_grid2.default.extend(_uiGrid_core.default.extenders.dataSourceAdapter);\r\n","/**\r\n * DevExtreme (events/utils/event_nodes_disposing.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.unsubscribeNodesDisposing = exports.subscribeNodesDisposing = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../core/events_engine\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar REMOVE_EVENT_NAME = \"dxremove\";\r\n\r\nfunction nodesByEvent(event) {\r\n    return event && [event.target, event.delegateTarget, event.relatedTarget, event.currentTarget].filter(function(node) {\r\n        return !!node\r\n    })\r\n}\r\nvar subscribeNodesDisposing = function(event, callback) {\r\n    _events_engine.default.one(nodesByEvent(event), REMOVE_EVENT_NAME, callback)\r\n};\r\nexports.subscribeNodesDisposing = subscribeNodesDisposing;\r\nvar unsubscribeNodesDisposing = function(event, callback) {\r\n    _events_engine.default.off(nodesByEvent(event), REMOVE_EVENT_NAME, callback)\r\n};\r\nexports.unsubscribeNodesDisposing = unsubscribeNodesDisposing;\r\n","/**\r\n * DevExtreme (ui/html_editor/modules/widget_collector.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar WidgetCollector = function() {\r\n    function WidgetCollector() {\r\n        _classCallCheck(this, WidgetCollector);\r\n        this._collection = []\r\n    }\r\n    _createClass(WidgetCollector, [{\r\n        key: \"clear\",\r\n        value: function() {\r\n            this._collection = []\r\n        }\r\n    }, {\r\n        key: \"add\",\r\n        value: function(name, instance) {\r\n            this._collection.push({\r\n                name: name,\r\n                instance: instance\r\n            })\r\n        }\r\n    }, {\r\n        key: \"getByName\",\r\n        value: function(widgetName) {\r\n            var widget = null;\r\n            (0, _iterator.each)(this._collection, function(index, _ref) {\r\n                var name = _ref.name,\r\n                    instance = _ref.instance;\r\n                if (name === widgetName) {\r\n                    widget = instance;\r\n                    return false\r\n                }\r\n            });\r\n            return widget\r\n        }\r\n    }, {\r\n        key: \"each\",\r\n        value: function(handler) {\r\n            this._collection.forEach(function(_ref2) {\r\n                var name = _ref2.name,\r\n                    instance = _ref2.instance;\r\n                return instance && handler(name, instance)\r\n            })\r\n        }\r\n    }]);\r\n    return WidgetCollector\r\n}();\r\nexports.default = WidgetCollector;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (localization/cldr-data/parent_locales.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = {\r\n    \"en-150\": \"en-001\",\r\n    \"en-AG\": \"en-001\",\r\n    \"en-AI\": \"en-001\",\r\n    \"en-AU\": \"en-001\",\r\n    \"en-BB\": \"en-001\",\r\n    \"en-BM\": \"en-001\",\r\n    \"en-BS\": \"en-001\",\r\n    \"en-BW\": \"en-001\",\r\n    \"en-BZ\": \"en-001\",\r\n    \"en-CA\": \"en-001\",\r\n    \"en-CC\": \"en-001\",\r\n    \"en-CK\": \"en-001\",\r\n    \"en-CM\": \"en-001\",\r\n    \"en-CX\": \"en-001\",\r\n    \"en-CY\": \"en-001\",\r\n    \"en-DG\": \"en-001\",\r\n    \"en-DM\": \"en-001\",\r\n    \"en-ER\": \"en-001\",\r\n    \"en-FJ\": \"en-001\",\r\n    \"en-FK\": \"en-001\",\r\n    \"en-FM\": \"en-001\",\r\n    \"en-GB\": \"en-001\",\r\n    \"en-GD\": \"en-001\",\r\n    \"en-GG\": \"en-001\",\r\n    \"en-GH\": \"en-001\",\r\n    \"en-GI\": \"en-001\",\r\n    \"en-GM\": \"en-001\",\r\n    \"en-GY\": \"en-001\",\r\n    \"en-HK\": \"en-001\",\r\n    \"en-IE\": \"en-001\",\r\n    \"en-IL\": \"en-001\",\r\n    \"en-IM\": \"en-001\",\r\n    \"en-IN\": \"en-001\",\r\n    \"en-IO\": \"en-001\",\r\n    \"en-JE\": \"en-001\",\r\n    \"en-JM\": \"en-001\",\r\n    \"en-KE\": \"en-001\",\r\n    \"en-KI\": \"en-001\",\r\n    \"en-KN\": \"en-001\",\r\n    \"en-KY\": \"en-001\",\r\n    \"en-LC\": \"en-001\",\r\n    \"en-LR\": \"en-001\",\r\n    \"en-LS\": \"en-001\",\r\n    \"en-MG\": \"en-001\",\r\n    \"en-MO\": \"en-001\",\r\n    \"en-MS\": \"en-001\",\r\n    \"en-MT\": \"en-001\",\r\n    \"en-MU\": \"en-001\",\r\n    \"en-MW\": \"en-001\",\r\n    \"en-MY\": \"en-001\",\r\n    \"en-NA\": \"en-001\",\r\n    \"en-NF\": \"en-001\",\r\n    \"en-NG\": \"en-001\",\r\n    \"en-NR\": \"en-001\",\r\n    \"en-NU\": \"en-001\",\r\n    \"en-NZ\": \"en-001\",\r\n    \"en-PG\": \"en-001\",\r\n    \"en-PH\": \"en-001\",\r\n    \"en-PK\": \"en-001\",\r\n    \"en-PN\": \"en-001\",\r\n    \"en-PW\": \"en-001\",\r\n    \"en-RW\": \"en-001\",\r\n    \"en-SB\": \"en-001\",\r\n    \"en-SC\": \"en-001\",\r\n    \"en-SD\": \"en-001\",\r\n    \"en-SG\": \"en-001\",\r\n    \"en-SH\": \"en-001\",\r\n    \"en-SL\": \"en-001\",\r\n    \"en-SS\": \"en-001\",\r\n    \"en-SX\": \"en-001\",\r\n    \"en-SZ\": \"en-001\",\r\n    \"en-TC\": \"en-001\",\r\n    \"en-TK\": \"en-001\",\r\n    \"en-TO\": \"en-001\",\r\n    \"en-TT\": \"en-001\",\r\n    \"en-TV\": \"en-001\",\r\n    \"en-TZ\": \"en-001\",\r\n    \"en-UG\": \"en-001\",\r\n    \"en-VC\": \"en-001\",\r\n    \"en-VG\": \"en-001\",\r\n    \"en-VU\": \"en-001\",\r\n    \"en-WS\": \"en-001\",\r\n    \"en-ZA\": \"en-001\",\r\n    \"en-ZM\": \"en-001\",\r\n    \"en-ZW\": \"en-001\",\r\n    \"en-AT\": \"en-150\",\r\n    \"en-BE\": \"en-150\",\r\n    \"en-CH\": \"en-150\",\r\n    \"en-DE\": \"en-150\",\r\n    \"en-DK\": \"en-150\",\r\n    \"en-FI\": \"en-150\",\r\n    \"en-NL\": \"en-150\",\r\n    \"en-SE\": \"en-150\",\r\n    \"en-SI\": \"en-150\",\r\n    \"es-AR\": \"es-419\",\r\n    \"es-BO\": \"es-419\",\r\n    \"es-BR\": \"es-419\",\r\n    \"es-BZ\": \"es-419\",\r\n    \"es-CL\": \"es-419\",\r\n    \"es-CO\": \"es-419\",\r\n    \"es-CR\": \"es-419\",\r\n    \"es-CU\": \"es-419\",\r\n    \"es-DO\": \"es-419\",\r\n    \"es-EC\": \"es-419\",\r\n    \"es-GT\": \"es-419\",\r\n    \"es-HN\": \"es-419\",\r\n    \"es-MX\": \"es-419\",\r\n    \"es-NI\": \"es-419\",\r\n    \"es-PA\": \"es-419\",\r\n    \"es-PE\": \"es-419\",\r\n    \"es-PR\": \"es-419\",\r\n    \"es-PY\": \"es-419\",\r\n    \"es-SV\": \"es-419\",\r\n    \"es-US\": \"es-419\",\r\n    \"es-UY\": \"es-419\",\r\n    \"es-VE\": \"es-419\",\r\n    \"pt-AO\": \"pt-PT\",\r\n    \"pt-CH\": \"pt-PT\",\r\n    \"pt-CV\": \"pt-PT\",\r\n    \"pt-FR\": \"pt-PT\",\r\n    \"pt-GQ\": \"pt-PT\",\r\n    \"pt-GW\": \"pt-PT\",\r\n    \"pt-LU\": \"pt-PT\",\r\n    \"pt-MO\": \"pt-PT\",\r\n    \"pt-MZ\": \"pt-PT\",\r\n    \"pt-ST\": \"pt-PT\",\r\n    \"pt-TL\": \"pt-PT\",\r\n    \"az-Arab\": \"root\",\r\n    \"az-Cyrl\": \"root\",\r\n    \"blt-Latn\": \"root\",\r\n    \"bm-Nkoo\": \"root\",\r\n    \"bs-Cyrl\": \"root\",\r\n    \"byn-Latn\": \"root\",\r\n    \"cu-Glag\": \"root\",\r\n    \"dje-Arab\": \"root\",\r\n    \"dyo-Arab\": \"root\",\r\n    \"en-Dsrt\": \"root\",\r\n    \"en-Shaw\": \"root\",\r\n    \"ff-Adlm\": \"root\",\r\n    \"ff-Arab\": \"root\",\r\n    \"ha-Arab\": \"root\",\r\n    \"hi-Latn\": \"root\",\r\n    \"iu-Latn\": \"root\",\r\n    \"kk-Arab\": \"root\",\r\n    \"ks-Deva\": \"root\",\r\n    \"ku-Arab\": \"root\",\r\n    \"ky-Arab\": \"root\",\r\n    \"ky-Latn\": \"root\",\r\n    \"ml-Arab\": \"root\",\r\n    \"mn-Mong\": \"root\",\r\n    \"mni-Mtei\": \"root\",\r\n    \"ms-Arab\": \"root\",\r\n    \"pa-Arab\": \"root\",\r\n    \"sat-Deva\": \"root\",\r\n    \"sd-Deva\": \"root\",\r\n    \"sd-Khoj\": \"root\",\r\n    \"sd-Sind\": \"root\",\r\n    \"shi-Latn\": \"root\",\r\n    \"so-Arab\": \"root\",\r\n    \"sr-Latn\": \"root\",\r\n    \"sw-Arab\": \"root\",\r\n    \"tg-Arab\": \"root\",\r\n    \"ug-Cyrl\": \"root\",\r\n    \"uz-Arab\": \"root\",\r\n    \"uz-Cyrl\": \"root\",\r\n    \"vai-Latn\": \"root\",\r\n    \"wo-Arab\": \"root\",\r\n    \"yo-Arab\": \"root\",\r\n    \"yue-Hans\": \"root\",\r\n    \"zh-Hant\": \"root\",\r\n    \"zh-Hant-MO\": \"zh-Hant-HK\"\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.swipe.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit2 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}(0, _uiListEdit.register)(\"delete\", \"swipe\", _uiListEdit2.default.inherit({\r\n    _shouldHandleSwipe: true,\r\n    _renderItemPosition: function($itemElement, offset, animate) {\r\n        var deferred = new _deferred.Deferred;\r\n        var itemOffset = offset * this._itemElementWidth;\r\n        if (animate) {\r\n            _fx.default.animate($itemElement, {\r\n                to: {\r\n                    left: itemOffset\r\n                },\r\n                type: \"slide\",\r\n                complete: function() {\r\n                    deferred.resolve($itemElement, offset)\r\n                }\r\n            })\r\n        } else {\r\n            (0, _translator.move)($itemElement, {\r\n                left: itemOffset\r\n            });\r\n            deferred.resolve()\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    _swipeStartHandler: function($itemElement) {\r\n        this._itemElementWidth = $itemElement.width();\r\n        return true\r\n    },\r\n    _swipeUpdateHandler: function($itemElement, args) {\r\n        this._renderItemPosition($itemElement, args.offset);\r\n        return true\r\n    },\r\n    _swipeEndHandler: function($itemElement, args) {\r\n        var offset = args.targetOffset;\r\n        this._renderItemPosition($itemElement, offset, true).done(function($itemElement, offset) {\r\n            if (Math.abs(offset)) {\r\n                this._list.deleteItem($itemElement).fail(function() {\r\n                    this._renderItemPosition($itemElement, 0, true)\r\n                }.bind(this))\r\n            }\r\n        }.bind(this));\r\n        return true\r\n    }\r\n}));\r\n","/**\r\n * DevExtreme (ui/accordion.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _fx = _interopRequireDefault(require(\"../animation/fx\"));\r\nvar _click = require(\"../events/click\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _element = require(\"../core/element\");\r\nvar iteratorUtils = _interopRequireWildcard(require(\"../core/utils/iterator\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.live_update\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _bindable_template = require(\"../core/templates/bindable_template\");\r\nvar _icon = require(\"../core/utils/icon\");\r\nvar _themes = require(\"./themes\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ACCORDION_CLASS = \"dx-accordion\";\r\nvar ACCORDION_WRAPPER_CLASS = \"dx-accordion-wrapper\";\r\nvar ACCORDION_ITEM_CLASS = \"dx-accordion-item\";\r\nvar ACCORDION_ITEM_OPENED_CLASS = \"dx-accordion-item-opened\";\r\nvar ACCORDION_ITEM_CLOSED_CLASS = \"dx-accordion-item-closed\";\r\nvar ACCORDION_ITEM_TITLE_CLASS = \"dx-accordion-item-title\";\r\nvar ACCORDION_ITEM_BODY_CLASS = \"dx-accordion-item-body\";\r\nvar ACCORDION_ITEM_TITLE_CAPTION_CLASS = \"dx-accordion-item-title-caption\";\r\nvar ACCORDION_ITEM_DATA_KEY = \"dxAccordionItemData\";\r\nvar Accordion = _uiCollection_widget.default.inherit({\r\n    _activeStateUnit: \".\" + ACCORDION_ITEM_CLASS,\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            hoverStateEnabled: true,\r\n            height: void 0,\r\n            itemTitleTemplate: \"title\",\r\n            onItemTitleClick: null,\r\n            selectedIndex: 0,\r\n            collapsible: false,\r\n            multiple: false,\r\n            animationDuration: 300,\r\n            deferRendering: true,\r\n            selectionByClick: true,\r\n            activeStateEnabled: true,\r\n            _itemAttributes: {\r\n                role: \"tab\"\r\n            },\r\n            _animationEasing: \"ease\"\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                animationDuration: 200,\r\n                _animationEasing: \"cubic-bezier(0.4, 0, 0.2, 1)\"\r\n            }\r\n        }])\r\n    },\r\n    _itemElements: function() {\r\n        return this._itemContainer().children(this._itemSelector())\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.option(\"selectionRequired\", !this.option(\"collapsible\"));\r\n        this.option(\"selectionMode\", this.option(\"multiple\") ? \"multiple\" : \"single\");\r\n        var $element = this.$element();\r\n        $element.addClass(ACCORDION_CLASS);\r\n        this._$container = (0, _renderer.default)(\"<div>\").addClass(ACCORDION_WRAPPER_CLASS);\r\n        $element.append(this._$container)\r\n    },\r\n    _initTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            title: new _bindable_template.BindableTemplate(function($container, data) {\r\n                if ((0, _type.isPlainObject)(data)) {\r\n                    var $iconElement = (0, _icon.getImageContainer)(data.icon);\r\n                    if ($iconElement) {\r\n                        $container.append($iconElement)\r\n                    }\r\n                    if ((0, _type.isDefined)(data.title) && !(0, _type.isPlainObject)(data.title)) {\r\n                        $container.append(_dom_adapter.default.createTextNode(data.title))\r\n                    }\r\n                } else {\r\n                    if ((0, _type.isDefined)(data)) {\r\n                        $container.text(String(data))\r\n                    }\r\n                }\r\n                $container.wrapInner((0, _renderer.default)(\"<div>\").addClass(ACCORDION_ITEM_TITLE_CAPTION_CLASS))\r\n            }, [\"title\", \"icon\"], this.option(\"integrationOptions.watchMethod\"))\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        var _this = this;\r\n        this._deferredItems = [];\r\n        this.callBase();\r\n        this.setAria({\r\n            role: \"tablist\",\r\n            multiselectable: this.option(\"multiple\")\r\n        });\r\n        (0, _common.deferRender)(function() {\r\n            var selectedItemIndices = _this._getSelectedItemIndices();\r\n            _this._renderSelection(selectedItemIndices, [])\r\n        })\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._updateItemHeightsWrapper(true)\r\n    },\r\n    _itemDataKey: function() {\r\n        return ACCORDION_ITEM_DATA_KEY\r\n    },\r\n    _itemClass: function() {\r\n        return ACCORDION_ITEM_CLASS\r\n    },\r\n    _itemContainer: function() {\r\n        return this._$container\r\n    },\r\n    _itemTitles: function() {\r\n        return this._itemElements().find(\".\" + ACCORDION_ITEM_TITLE_CLASS)\r\n    },\r\n    _itemContents: function() {\r\n        return this._itemElements().find(\".\" + ACCORDION_ITEM_BODY_CLASS)\r\n    },\r\n    _getItemData: function(target) {\r\n        return (0, _renderer.default)(target).parent().data(this._itemDataKey()) || this.callBase.apply(this, arguments)\r\n    },\r\n    _executeItemRenderAction: function(itemData) {\r\n        if (itemData.type) {\r\n            return\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _itemSelectHandler: function(e) {\r\n        if ((0, _renderer.default)(e.target).closest(this._itemContents()).length) {\r\n            return\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n        this._deferredItems.splice(deletedActionArgs.itemIndex, 1);\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _renderItemContent: function(args) {\r\n        var itemTitle = this.callBase((0, _extend.extend)({}, args, {\r\n            contentClass: ACCORDION_ITEM_TITLE_CLASS,\r\n            templateProperty: \"titleTemplate\",\r\n            defaultTemplateName: this.option(\"itemTitleTemplate\")\r\n        }));\r\n        this._attachItemTitleClickAction(itemTitle);\r\n        var deferred = new _deferred.Deferred;\r\n        if ((0, _type.isDefined)(this._deferredItems[args.index])) {\r\n            this._deferredItems[args.index] = deferred\r\n        } else {\r\n            this._deferredItems.push(deferred)\r\n        }\r\n        if (!this.option(\"deferRendering\") || this._getSelectedItemIndices().indexOf(args.index) >= 0) {\r\n            deferred.resolve()\r\n        }\r\n        deferred.done(this.callBase.bind(this, (0, _extend.extend)({}, args, {\r\n            contentClass: ACCORDION_ITEM_BODY_CLASS,\r\n            container: (0, _element.getPublicElement)((0, _renderer.default)(\"<div>\").appendTo((0, _renderer.default)(itemTitle).parent()))\r\n        })))\r\n    },\r\n    _attachItemTitleClickAction: function(itemTitle) {\r\n        var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n        _events_engine.default.off(itemTitle, eventName);\r\n        _events_engine.default.on(itemTitle, eventName, this._itemTitleClickHandler.bind(this))\r\n    },\r\n    _itemTitleClickHandler: function(e) {\r\n        this._itemDXEventHandler(e, \"onItemTitleClick\")\r\n    },\r\n    _renderSelection: function(addedSelection, removedSelection) {\r\n        this._itemElements().addClass(ACCORDION_ITEM_CLOSED_CLASS);\r\n        this.setAria(\"hidden\", true, this._itemContents());\r\n        this._updateItems(addedSelection, removedSelection)\r\n    },\r\n    _updateSelection: function(addedSelection, removedSelection) {\r\n        this._updateItems(addedSelection, removedSelection);\r\n        this._updateItemHeightsWrapper(false)\r\n    },\r\n    _updateItems: function(addedSelection, removedSelection) {\r\n        var _this2 = this;\r\n        var $items = this._itemElements();\r\n        iteratorUtils.each(addedSelection, function(_, index) {\r\n            _this2._deferredItems[index].resolve();\r\n            var $item = $items.eq(index).addClass(ACCORDION_ITEM_OPENED_CLASS).removeClass(ACCORDION_ITEM_CLOSED_CLASS);\r\n            _this2.setAria(\"hidden\", false, $item.find(\".\" + ACCORDION_ITEM_BODY_CLASS))\r\n        });\r\n        iteratorUtils.each(removedSelection, function(_, index) {\r\n            var $item = $items.eq(index).removeClass(ACCORDION_ITEM_OPENED_CLASS);\r\n            _this2.setAria(\"hidden\", true, $item.find(\".\" + ACCORDION_ITEM_BODY_CLASS))\r\n        })\r\n    },\r\n    _updateItemHeightsWrapper: function(skipAnimation) {\r\n        if (this.option(\"templatesRenderAsynchronously\")) {\r\n            this._animationTimer = setTimeout(function() {\r\n                this._updateItemHeights(skipAnimation)\r\n            }.bind(this))\r\n        } else {\r\n            this._updateItemHeights(skipAnimation)\r\n        }\r\n    },\r\n    _updateItemHeights: function(skipAnimation) {\r\n        var that = this;\r\n        var deferredAnimate = that._deferredAnimate;\r\n        var itemHeight = this._splitFreeSpace(this._calculateFreeSpace());\r\n        clearTimeout(this._animationTimer);\r\n        return _deferred.when.apply(_renderer.default, [].slice.call(this._itemElements()).map(function(item) {\r\n            return that._updateItemHeight((0, _renderer.default)(item), itemHeight, skipAnimation)\r\n        })).done(function() {\r\n            if (deferredAnimate) {\r\n                deferredAnimate.resolveWith(that)\r\n            }\r\n        })\r\n    },\r\n    _updateItemHeight: function($item, itemHeight, skipAnimation) {\r\n        var $title = $item.children(\".\" + ACCORDION_ITEM_TITLE_CLASS);\r\n        if (_fx.default.isAnimating($item)) {\r\n            _fx.default.stop($item)\r\n        }\r\n        var startItemHeight = $item.outerHeight();\r\n        var finalItemHeight = $item.hasClass(ACCORDION_ITEM_OPENED_CLASS) ? itemHeight + $title.outerHeight() || $item.height(\"auto\").outerHeight() : $title.outerHeight();\r\n        return this._animateItem($item, startItemHeight, finalItemHeight, skipAnimation, !!itemHeight)\r\n    },\r\n    _animateItem: function($element, startHeight, endHeight, skipAnimation, fixedHeight) {\r\n        var d;\r\n        if (skipAnimation || startHeight === endHeight) {\r\n            $element.css(\"height\", endHeight);\r\n            d = (new _deferred.Deferred).resolve()\r\n        } else {\r\n            d = _fx.default.animate($element, {\r\n                type: \"custom\",\r\n                from: {\r\n                    height: startHeight\r\n                },\r\n                to: {\r\n                    height: endHeight\r\n                },\r\n                duration: this.option(\"animationDuration\"),\r\n                easing: this.option(\"_animationEasing\")\r\n            })\r\n        }\r\n        return d.done(function() {\r\n            if ($element.hasClass(ACCORDION_ITEM_OPENED_CLASS) && !fixedHeight) {\r\n                $element.css(\"height\", \"\")\r\n            }\r\n            $element.not(\".\" + ACCORDION_ITEM_OPENED_CLASS).addClass(ACCORDION_ITEM_CLOSED_CLASS)\r\n        })\r\n    },\r\n    _splitFreeSpace: function(freeSpace) {\r\n        if (!freeSpace) {\r\n            return freeSpace\r\n        }\r\n        return freeSpace / this.option(\"selectedItems\").length\r\n    },\r\n    _calculateFreeSpace: function() {\r\n        var height = this.option(\"height\");\r\n        if (void 0 === height || \"auto\" === height) {\r\n            return\r\n        }\r\n        var $titles = this._itemTitles();\r\n        var itemsHeight = 0;\r\n        iteratorUtils.each($titles, function(_, title) {\r\n            itemsHeight += (0, _renderer.default)(title).outerHeight()\r\n        });\r\n        return this.$element().height() - itemsHeight\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._dimensionChanged()\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        this._updateItemHeights(true)\r\n    },\r\n    _clean: function() {\r\n        clearTimeout(this._animationTimer);\r\n        this.callBase()\r\n    },\r\n    _itemOptionChanged: function(item, property, value, oldValue) {\r\n        this.callBase(item, property, value, oldValue);\r\n        if (\"visible\" === property) {\r\n            this._updateItemHeightsWrapper(true)\r\n        }\r\n    },\r\n    _tryParseItemPropertyName: function(fullName) {\r\n        var matches = fullName.match(/.*\\.(.*)/);\r\n        if ((0, _type.isDefined)(matches) && matches.length >= 1) {\r\n            return matches[1]\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"items\":\r\n                this.callBase(args);\r\n                if (\"title\" === this._tryParseItemPropertyName(args.fullName)) {\r\n                    this._renderSelection(this._getSelectedItemIndices(), [])\r\n                }\r\n                break;\r\n            case \"animationDuration\":\r\n            case \"onItemTitleClick\":\r\n            case \"_animationEasing\":\r\n                break;\r\n            case \"collapsible\":\r\n                this.option(\"selectionRequired\", !this.option(\"collapsible\"));\r\n                break;\r\n            case \"itemTitleTemplate\":\r\n            case \"height\":\r\n            case \"deferRendering\":\r\n                this._invalidate();\r\n                break;\r\n            case \"multiple\":\r\n                this.option(\"selectionMode\", args.value ? \"multiple\" : \"single\");\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    expandItem: function(index) {\r\n        this._deferredAnimate = new _deferred.Deferred;\r\n        this.selectItem(index);\r\n        return this._deferredAnimate.promise()\r\n    },\r\n    collapseItem: function(index) {\r\n        this._deferredAnimate = new _deferred.Deferred;\r\n        this.unselectItem(index);\r\n        return this._deferredAnimate.promise()\r\n    },\r\n    updateDimensions: function() {\r\n        return this._updateItemHeights(false)\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxAccordion\", Accordion);\r\nvar _default = Accordion;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/funnel/tiling.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getAlgorithm = getAlgorithm;\r\nexports.addAlgorithm = addAlgorithm;\r\nvar _utils = require(\"../core/utils\");\r\nvar algorithms = {};\r\nvar defaultAlgorithm;\r\n\r\nfunction getAlgorithm(name) {\r\n    return algorithms[(0, _utils.normalizeEnum)(name)] || defaultAlgorithm\r\n}\r\n\r\nfunction addAlgorithm(name, callback, setDefault) {\r\n    algorithms[name] = callback;\r\n    if (setDefault) {\r\n        defaultAlgorithm = algorithms[name]\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.field_chooser.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _icon = require(\"../../core/utils/icon\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\nvar _uiPivot_grid2 = _interopRequireDefault(require(\"./ui.pivot_grid.field_chooser_base\"));\r\nrequire(\"./data_source\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DIV = \"<div>\";\r\nvar hasWindow = (0, _window.hasWindow)();\r\nvar FIELDCHOOSER_CLASS = \"dx-pivotgridfieldchooser\";\r\nvar FIELDCHOOSER_CONTAINER_CLASS = \"dx-pivotgridfieldchooser-container\";\r\nvar FIELDS_CONTAINER_CLASS = \"dx-pivotgrid-fields-container\";\r\nvar AREA_DRAG_CLASS = \"dx-pivotgrid-drag-action\";\r\n\r\nfunction getDimensionFields(item, fields) {\r\n    var result = [];\r\n    if (item.items) {\r\n        for (var i = 0; i < item.items.length; i++) {\r\n            result.push.apply(result, getDimensionFields(item.items[i], fields))\r\n        }\r\n    } else {\r\n        if ((0, _type.isDefined)(item.index)) {\r\n            result.push(fields[item.index])\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction getFirstItem(item, condition) {\r\n    if (item.items) {\r\n        for (var i = 0; i < item.items.length; i++) {\r\n            var childrenItem = getFirstItem(item.items[i], condition);\r\n            if (childrenItem) {\r\n                return childrenItem\r\n            }\r\n        }\r\n    }\r\n    if (condition(item)) {\r\n        return item\r\n    }\r\n}\r\nvar compareOrder = [function(a, b) {\r\n    var aValue = -!!a.isMeasure;\r\n    var bValue = +!!b.isMeasure;\r\n    return aValue + bValue\r\n}, function(a, b) {\r\n    var aValue = -!!(a.items && a.items.length);\r\n    var bValue = +!!(b.items && b.items.length);\r\n    return aValue + bValue\r\n}, function(a, b) {\r\n    var aValue = +!!(false === a.isMeasure && a.field && a.field.levels && a.field.levels.length);\r\n    var bValue = -!!(false === b.isMeasure && b.field && b.field.levels && b.field.levels.length);\r\n    return aValue + bValue\r\n}, (0, _uiPivot_grid.getCompareFunction)(function(item) {\r\n    return item.text\r\n})];\r\n\r\nfunction compareItems(a, b) {\r\n    var result = 0;\r\n    var i = 0;\r\n    while (!result && compareOrder[i]) {\r\n        result = compareOrder[i++](a, b)\r\n    }\r\n    return result\r\n}\r\n\r\nfunction getScrollable(container) {\r\n    return container.find(\".dx-scrollable\").dxScrollable(\"instance\")\r\n}\r\nvar FieldChooser = _uiPivot_grid2.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            height: 400,\r\n            layout: 0,\r\n            dataSource: null,\r\n            onContextMenuPreparing: null,\r\n            allowSearch: false,\r\n            searchTimeout: 500,\r\n            texts: {\r\n                columnFields: _message.default.format(\"dxPivotGrid-columnFields\"),\r\n                rowFields: _message.default.format(\"dxPivotGrid-rowFields\"),\r\n                dataFields: _message.default.format(\"dxPivotGrid-dataFields\"),\r\n                filterFields: _message.default.format(\"dxPivotGrid-filterFields\"),\r\n                allFields: _message.default.format(\"dxPivotGrid-allFields\")\r\n            }\r\n        })\r\n    },\r\n    _refreshDataSource: function() {\r\n        var that = this;\r\n        that._expandedPaths = [];\r\n        that._changedHandler = that._changedHandler || function() {\r\n            (0, _iterator.each)(that._dataChangedHandlers, function(_, func) {\r\n                func()\r\n            });\r\n            that._fireContentReadyAction();\r\n            that._options.silent(\"state\", that._dataSource.state())\r\n        };\r\n        that._disposeDataSource();\r\n        that.callBase();\r\n        that._dataSource && that._dataSource.on(\"changed\", that._changedHandler)\r\n    },\r\n    _disposeDataSource: function() {\r\n        var that = this;\r\n        var dataSource = that._dataSource;\r\n        if (dataSource) {\r\n            dataSource.off(\"changed\", that._changedHandler);\r\n            that._dataSource = void 0\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        this._disposeDataSource();\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._refreshDataSource();\r\n        this._dataChangedHandlers = [];\r\n        this._initActions()\r\n    },\r\n    _initActions: function() {\r\n        this._actions = {\r\n            onContextMenuPreparing: this._createActionByOption(\"onContextMenuPreparing\")\r\n        }\r\n    },\r\n    _trigger: function(eventName, eventArg) {\r\n        this._actions[eventName](eventArg)\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            dataSource: true\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        var that = this;\r\n        switch (args.name) {\r\n            case \"dataSource\":\r\n                that._refreshDataSource();\r\n                that._invalidate();\r\n                break;\r\n            case \"layout\":\r\n            case \"texts\":\r\n            case \"allowSearch\":\r\n            case \"searchTimeout\":\r\n                that._invalidate();\r\n                break;\r\n            case \"onContextMenuPreparing\":\r\n                that._actions[args.name] = that._createActionByOption(args.name);\r\n                break;\r\n            default:\r\n                that.callBase(args)\r\n        }\r\n    },\r\n    _clean: function(skipStateSetting) {\r\n        !skipStateSetting && this._dataSource && this.option(\"state\", this._dataSource.state());\r\n        this.$element().children(\".\" + FIELDCHOOSER_CONTAINER_CLASS).remove()\r\n    },\r\n    _renderLayout0: function($container) {\r\n        var that = this;\r\n        $container.addClass(\"dx-layout-0\");\r\n        var $row1 = (0, _renderer.default)(DIV).addClass(\"dx-row\").appendTo($container);\r\n        var $row2 = (0, _renderer.default)(DIV).addClass(\"dx-row\").appendTo($container);\r\n        var $col1 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row1);\r\n        var $col2 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row1);\r\n        var $col3 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row2);\r\n        var $col4 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row2);\r\n        that._renderArea($col1, \"all\");\r\n        that._renderArea($col2, \"row\");\r\n        that._renderArea($col2, \"column\");\r\n        that._renderArea($col3, \"filter\");\r\n        that._renderArea($col4, \"data\")\r\n    },\r\n    _renderLayout1: function($container) {\r\n        var that = this;\r\n        var $col1 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($container);\r\n        var $col2 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($container);\r\n        that._renderArea($col1, \"all\");\r\n        that._renderArea($col2, \"filter\");\r\n        that._renderArea($col2, \"row\");\r\n        that._renderArea($col2, \"column\");\r\n        that._renderArea($col2, \"data\")\r\n    },\r\n    _renderLayout2: function($container) {\r\n        var that = this;\r\n        $container.addClass(\"dx-layout-2\");\r\n        var $row1 = (0, _renderer.default)(DIV).addClass(\"dx-row\").appendTo($container);\r\n        that._renderArea($row1, \"all\");\r\n        var $row2 = (0, _renderer.default)(DIV).addClass(\"dx-row\").appendTo($container);\r\n        var $col1 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row2);\r\n        var $col2 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row2);\r\n        that._renderArea($col1, \"filter\");\r\n        that._renderArea($col1, \"row\");\r\n        that._renderArea($col2, \"column\");\r\n        that._renderArea($col2, \"data\")\r\n    },\r\n    _initMarkup: function() {\r\n        var that = this;\r\n        var $element = this.$element();\r\n        var $container = (0, _renderer.default)(DIV).addClass(FIELDCHOOSER_CONTAINER_CLASS).appendTo($element);\r\n        var layout = that.option(\"layout\");\r\n        that.callBase();\r\n        $element.addClass(FIELDCHOOSER_CLASS).addClass(FIELDS_CONTAINER_CLASS);\r\n        that._dataChangedHandlers = [];\r\n        var dataSource = this._dataSource;\r\n        var currentState = \"instantly\" !== that.option(\"applyChangesMode\") && dataSource && dataSource.state();\r\n        currentState && that.option(\"state\") && dataSource.state(that.option(\"state\"), true);\r\n        if (0 === layout) {\r\n            that._renderLayout0($container)\r\n        } else {\r\n            if (1 === layout) {\r\n                that._renderLayout1($container)\r\n            } else {\r\n                that._renderLayout2($container)\r\n            }\r\n        }\r\n        currentState && dataSource.state(currentState, true)\r\n    },\r\n    _renderContentImpl: function() {\r\n        this.callBase();\r\n        this.renderSortable();\r\n        this._renderContextMenu();\r\n        this.updateDimensions()\r\n    },\r\n    _fireContentReadyAction: function() {\r\n        if (!this._dataSource || !this._dataSource.isLoading()) {\r\n            this.callBase()\r\n        }\r\n    },\r\n    _getContextMenuArgs: function(dxEvent) {\r\n        var targetFieldElement = (0, _renderer.default)(dxEvent.target).closest(\".dx-area-field\");\r\n        var targetGroupElement = (0, _renderer.default)(dxEvent.target).closest(\".dx-area-fields\");\r\n        var field;\r\n        var area;\r\n        if (targetFieldElement.length) {\r\n            var fieldCopy = targetFieldElement.data(\"field\");\r\n            if (fieldCopy) {\r\n                field = this.getDataSource().field(fieldCopy.index) || fieldCopy\r\n            }\r\n        }\r\n        if (targetGroupElement.length) {\r\n            area = targetGroupElement.attr(\"group\")\r\n        }\r\n        return {\r\n            event: dxEvent,\r\n            field: field,\r\n            area: area,\r\n            items: []\r\n        }\r\n    },\r\n    _renderContextMenu: function() {\r\n        var that = this;\r\n        var $container = that.$element();\r\n        if (that._contextMenu) {\r\n            that._contextMenu.$element().remove()\r\n        }\r\n        that._contextMenu = that._createComponent((0, _renderer.default)(DIV).appendTo($container), _context_menu.default, {\r\n            onPositioning: function(actionArgs) {\r\n                var event = actionArgs.event;\r\n                if (!event) {\r\n                    return\r\n                }\r\n                var args = that._getContextMenuArgs(event);\r\n                that._trigger(\"onContextMenuPreparing\", args);\r\n                if (args.items && args.items.length) {\r\n                    actionArgs.component.option(\"items\", args.items)\r\n                } else {\r\n                    actionArgs.cancel = true\r\n                }\r\n            },\r\n            target: $container,\r\n            onItemClick: function(params) {\r\n                params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n            },\r\n            cssClass: \"dx-pivotgridfieldchooser-context-menu\"\r\n        })\r\n    },\r\n    _createTreeItems: function(fields, groupFieldNames, path) {\r\n        var that = this;\r\n        var isMeasure;\r\n        var resultItems = [];\r\n        var groupedItems = [];\r\n        var groupFieldName = groupFieldNames[0];\r\n        var fieldsByGroup = {};\r\n        if (!groupFieldName) {\r\n            (0, _iterator.each)(fields, function(index, field) {\r\n                var icon;\r\n                if (true === field.isMeasure) {\r\n                    icon = \"measure\"\r\n                }\r\n                if (false === field.isMeasure) {\r\n                    icon = field.groupName ? \"hierarchy\" : \"dimension\"\r\n                }\r\n                resultItems.push({\r\n                    index: field.index,\r\n                    field: field,\r\n                    key: field.dataField,\r\n                    selected: (0, _type.isDefined)(field.area),\r\n                    text: field.caption || field.dataField,\r\n                    icon: icon,\r\n                    isMeasure: field.isMeasure,\r\n                    isDefault: field.isDefault\r\n                })\r\n            })\r\n        } else {\r\n            (0, _iterator.each)(fields, function(index, field) {\r\n                var groupName = field[groupFieldName] || \"\";\r\n                fieldsByGroup[groupName] = fieldsByGroup[groupName] || [];\r\n                fieldsByGroup[groupName].push(field);\r\n                if (void 0 === isMeasure) {\r\n                    isMeasure = true\r\n                }\r\n                isMeasure = isMeasure && true === field.isMeasure\r\n            });\r\n            (0, _iterator.each)(fieldsByGroup, function(groupName, fields) {\r\n                var currentPath = path ? path + \".\" + groupName : groupName;\r\n                var items = that._createTreeItems(fields, groupFieldNames.slice(1), currentPath);\r\n                if (groupName) {\r\n                    groupedItems.push({\r\n                        key: groupName,\r\n                        text: groupName,\r\n                        path: currentPath,\r\n                        isMeasure: items.isMeasure,\r\n                        expanded: (0, _array.inArray)(currentPath, that._expandedPaths) >= 0,\r\n                        items: items\r\n                    })\r\n                } else {\r\n                    resultItems = items\r\n                }\r\n            });\r\n            resultItems = groupedItems.concat(resultItems);\r\n            resultItems.isMeasure = isMeasure\r\n        }\r\n        return resultItems\r\n    },\r\n    _createFieldsDataSource: function(dataSource) {\r\n        var fields = dataSource && dataSource.fields() || [];\r\n        fields = fields.filter(function(field) {\r\n            return false !== field.visible && !(0, _type.isDefined)(field.groupIndex)\r\n        });\r\n        var treeItems = this._createTreeItems(fields, [\"dimension\", \"displayFolder\"]);\r\n        (0, _uiPivot_grid.foreachDataLevel)(treeItems, function(items) {\r\n            items.sort(compareItems)\r\n        }, 0, \"items\");\r\n        return treeItems\r\n    },\r\n    _renderFieldsTreeView: function(container) {\r\n        var that = this;\r\n        var dataSource = that._dataSource;\r\n        var treeView = that._createComponent(container, _tree_view.default, {\r\n            dataSource: that._createFieldsDataSource(dataSource),\r\n            showCheckBoxesMode: \"normal\",\r\n            expandNodesRecursive: false,\r\n            searchEnabled: that.option(\"allowSearch\"),\r\n            searchTimeout: that.option(\"searchTimeout\"),\r\n            itemTemplate: function(itemData, itemIndex, itemElement) {\r\n                if (itemData.icon) {\r\n                    (0, _icon.getImageContainer)(itemData.icon).appendTo(itemElement)\r\n                }(0, _renderer.default)(\"<span>\").toggleClass(\"dx-area-field\", !itemData.items).data(\"field\", itemData.field).text(itemData.text).appendTo(itemElement)\r\n            },\r\n            onItemCollapsed: function(e) {\r\n                var index = (0, _array.inArray)(e.itemData.path, that._expandedPaths);\r\n                if (index >= 0) {\r\n                    that._expandedPaths.splice(index, 1)\r\n                }\r\n            },\r\n            onItemExpanded: function(e) {\r\n                var index = (0, _array.inArray)(e.itemData.path, that._expandedPaths);\r\n                if (index < 0) {\r\n                    that._expandedPaths.push(e.itemData.path)\r\n                }\r\n            },\r\n            onItemSelectionChanged: function(e) {\r\n                var data = e.itemData;\r\n                var field;\r\n                var fields;\r\n                var needSelectDefaultItem = true;\r\n                var area;\r\n                if (data.items) {\r\n                    if (data.selected) {\r\n                        treeView.unselectItem(data);\r\n                        return\r\n                    }\r\n                    that._processDemandState(function() {\r\n                        fields = getDimensionFields(data, dataSource.fields());\r\n                        for (var i = 0; i < fields.length; i++) {\r\n                            if (fields[i].area) {\r\n                                needSelectDefaultItem = false;\r\n                                break\r\n                            }\r\n                        }\r\n                    });\r\n                    if (needSelectDefaultItem) {\r\n                        var item = getFirstItem(data, function(item) {\r\n                            return item.isDefault\r\n                        }) || getFirstItem(data, function(item) {\r\n                            return (0, _type.isDefined)(item.index)\r\n                        });\r\n                        item && treeView.selectItem(item);\r\n                        return\r\n                    }\r\n                } else {\r\n                    field = dataSource.fields()[data.index];\r\n                    if (data.selected) {\r\n                        area = field.isMeasure ? \"data\" : \"column\"\r\n                    }\r\n                    if (field) {\r\n                        fields = [field]\r\n                    }\r\n                }\r\n                that._applyChanges(fields, {\r\n                    area: area,\r\n                    areaIndex: void 0\r\n                })\r\n            }\r\n        });\r\n        var dataChanged = function() {\r\n            var scrollable = getScrollable(container);\r\n            var scrollTop = scrollable ? scrollable.scrollTop() : 0;\r\n            treeView.option({\r\n                dataSource: that._createFieldsDataSource(dataSource)\r\n            });\r\n            scrollable = getScrollable(container);\r\n            if (scrollable) {\r\n                scrollable.scrollTo({\r\n                    y: scrollTop\r\n                });\r\n                scrollable.update()\r\n            }\r\n        };\r\n        that._dataChangedHandlers.push(dataChanged)\r\n    },\r\n    _renderAreaFields: function($container, area) {\r\n        var that = this;\r\n        var dataSource = that._dataSource;\r\n        var fields = dataSource ? (0, _extend.extend)(true, [], dataSource.getAreaFields(area, true)) : [];\r\n        $container.empty();\r\n        (0, _iterator.each)(fields, function(_, field) {\r\n            if (false !== field.visible) {\r\n                that.renderField(field, true).appendTo($container)\r\n            }\r\n        })\r\n    },\r\n    _renderArea: function(container, area) {\r\n        var that = this;\r\n        var $areaContainer = (0, _renderer.default)(DIV).addClass(\"dx-area\").appendTo(container);\r\n        var $fieldsHeaderContainer = (0, _renderer.default)(DIV).addClass(\"dx-area-fields-header\").appendTo($areaContainer);\r\n        var caption = that.option(\"texts.\" + area + \"Fields\");\r\n        var $fieldsContent;\r\n        var render;\r\n        (0, _renderer.default)(\"<span>\").addClass(\"dx-area-icon\").addClass(\"dx-area-icon-\" + area).appendTo($fieldsHeaderContainer);\r\n        (0, _renderer.default)(\"<span>\").html(\"&nbsp;\").appendTo($fieldsHeaderContainer);\r\n        (0, _renderer.default)(\"<span>\").addClass(\"dx-area-caption\").text(caption).appendTo($fieldsHeaderContainer);\r\n        var $fieldsContainer = (0, _renderer.default)(DIV).addClass(\"dx-area-fields\").addClass(AREA_DRAG_CLASS).appendTo($areaContainer);\r\n        if (\"all\" !== area) {\r\n            $fieldsContainer.attr(\"group\", area).attr(\"allow-scrolling\", true);\r\n            $fieldsContent = (0, _renderer.default)(DIV).addClass(\"dx-area-field-container\").appendTo($fieldsContainer);\r\n            render = function() {\r\n                that._renderAreaFields($fieldsContent, area)\r\n            };\r\n            that._dataChangedHandlers.push(render);\r\n            render();\r\n            $fieldsContainer.dxScrollable()\r\n        } else {\r\n            $areaContainer.addClass(\"dx-all-fields\");\r\n            $fieldsContainer.addClass(\"dx-treeview-border-visible\");\r\n            that._renderFieldsTreeView($fieldsContainer)\r\n        }\r\n    },\r\n    _getSortableOptions: function() {\r\n        return {}\r\n    },\r\n    _adjustSortableOnChangedArgs: function() {},\r\n    resetTreeView: function() {\r\n        var treeView = this.$element().find(\".dx-treeview\").dxTreeView(\"instance\");\r\n        if (treeView) {\r\n            treeView.option(\"searchValue\", \"\");\r\n            treeView.collapseAll()\r\n        }\r\n    },\r\n    applyChanges: function() {\r\n        var state = this.option(\"state\");\r\n        if ((0, _type.isDefined)(state)) {\r\n            this._dataSource.state(state)\r\n        }\r\n    },\r\n    cancelChanges: function() {\r\n        var dataSource = this._dataSource;\r\n        if (!dataSource.isLoading()) {\r\n            this.option(\"state\", dataSource.state());\r\n            return true\r\n        }\r\n        return false\r\n    },\r\n    getDataSource: function() {\r\n        return this._dataSource\r\n    },\r\n    updateDimensions: function() {\r\n        var $scrollableElements = this.$element().find(\".dx-area .dx-scrollable\");\r\n        $scrollableElements.dxScrollable(\"update\")\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible && hasWindow) {\r\n            this.updateDimensions()\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxPivotGridFieldChooser\", FieldChooser);\r\nvar _default = FieldChooser;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/base_theme_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.BaseThemeManager = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _palette = require(\"../palette\");\r\nvar _utils = require(\"./utils\");\r\nvar _themes = require(\"../themes\");\r\nrequire(\"./themes/generic.light\");\r\nrequire(\"./themes/generic.dark\");\r\nrequire(\"./themes/generic.contrast\");\r\nrequire(\"./themes/generic.carmine\");\r\nrequire(\"./themes/generic.darkmoon\");\r\nrequire(\"./themes/generic.softblue\");\r\nrequire(\"./themes/generic.darkviolet\");\r\nrequire(\"./themes/generic.greenmist\");\r\nrequire(\"./themes/material\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _getTheme = _themes.getTheme;\r\nvar _addCacheItem = _themes.addCacheItem;\r\nvar _removeCacheItem = _themes.removeCacheItem;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\n\r\nfunction getThemePart(theme, path) {\r\n    var _theme = theme;\r\n    path && _each(path.split(\".\"), function(_, pathItem) {\r\n        return _theme = _theme[pathItem]\r\n    });\r\n    return _theme\r\n}\r\nvar BaseThemeManager = _class.default.inherit({\r\n    ctor: function(options) {\r\n        this._themeSection = options.themeSection;\r\n        this._fontFields = options.fontFields || [];\r\n        _addCacheItem(this)\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        _removeCacheItem(that);\r\n        that._callback = that._theme = that._font = null;\r\n        return that\r\n    },\r\n    setCallback: function(callback) {\r\n        this._callback = callback;\r\n        return this\r\n    },\r\n    setTheme: function(theme, rtl) {\r\n        this._current = theme;\r\n        this._rtl = rtl;\r\n        return this.refresh()\r\n    },\r\n    refresh: function() {\r\n        var that = this;\r\n        var current = that._current || {};\r\n        var theme = _getTheme(current.name || current);\r\n        that._themeName = theme.name;\r\n        that._defaultPalette = theme.defaultPalette;\r\n        that._font = _extend({}, theme.font, current.font);\r\n        that._themeSection && _each(that._themeSection.split(\".\"), function(_, path) {\r\n            theme = _extend(true, {}, theme[path])\r\n        });\r\n        that._theme = _extend(true, {}, theme, (0, _type.isString)(current) ? {} : current);\r\n        that._initializeTheme();\r\n        if ((0, _utils.parseScalar)(that._rtl, that._theme.rtlEnabled)) {\r\n            _extend(true, that._theme, that._theme._rtl)\r\n        }\r\n        that._callback();\r\n        return that\r\n    },\r\n    theme: function(path) {\r\n        return getThemePart(this._theme, path)\r\n    },\r\n    themeName: function() {\r\n        return this._themeName\r\n    },\r\n    createPalette: function(palette, options) {\r\n        return (0, _palette.createPalette)(palette, options, this._defaultPalette)\r\n    },\r\n    createDiscretePalette: function(palette, count) {\r\n        return (0, _palette.getDiscretePalette)(palette, count, this._defaultPalette)\r\n    },\r\n    createGradientPalette: function(palette) {\r\n        return (0, _palette.getGradientPalette)(palette, this._defaultPalette)\r\n    },\r\n    getAccentColor: function(palette) {\r\n        return (0, _palette.getAccentColor)(palette, this._defaultPalette)\r\n    },\r\n    _initializeTheme: function() {\r\n        var that = this;\r\n        _each(that._fontFields || [], function(_, path) {\r\n            that._initializeFont(getThemePart(that._theme, path))\r\n        })\r\n    },\r\n    _initializeFont: function(font) {\r\n        _extend(font, this._font, _extend({}, font))\r\n    }\r\n});\r\nexports.BaseThemeManager = BaseThemeManager;\r\n","/**\r\n * DevExtreme (ui/html_editor/quill_registrator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _quill_importer = require(\"./quill_importer\");\r\nvar _base = _interopRequireDefault(require(\"./themes/base\"));\r\nvar _image = _interopRequireDefault(require(\"./formats/image\"));\r\nvar _link = _interopRequireDefault(require(\"./formats/link\"));\r\nvar _font = _interopRequireDefault(require(\"./formats/font\"));\r\nvar _size = _interopRequireDefault(require(\"./formats/size\"));\r\nvar _align = _interopRequireDefault(require(\"./formats/align\"));\r\nvar _toolbar = _interopRequireDefault(require(\"./modules/toolbar\"));\r\nvar _dropImage = _interopRequireDefault(require(\"./modules/dropImage\"));\r\nvar _variables = _interopRequireDefault(require(\"./modules/variables\"));\r\nvar _resizing = _interopRequireDefault(require(\"./modules/resizing\"));\r\nvar _mentions = _interopRequireDefault(require(\"./modules/mentions\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar QuillRegistrator = function() {\r\n    function QuillRegistrator() {\r\n        _classCallCheck(this, QuillRegistrator);\r\n        if (QuillRegistrator.initialized) {\r\n            return\r\n        }\r\n        var quill = this.getQuill();\r\n        var DirectionStyle = quill.import(\"attributors/style/direction\");\r\n        quill.register({\r\n            \"formats/align\": _align.default,\r\n            \"formats/direction\": DirectionStyle,\r\n            \"formats/font\": _font.default,\r\n            \"formats/size\": _size.default,\r\n            \"formats/extendedImage\": _image.default,\r\n            \"formats/link\": _link.default,\r\n            \"modules/toolbar\": _toolbar.default,\r\n            \"modules/dropImage\": _dropImage.default,\r\n            \"modules/variables\": _variables.default,\r\n            \"modules/resizing\": _resizing.default,\r\n            \"modules/mentions\": _mentions.default,\r\n            \"themes/basic\": _base.default\r\n        }, true);\r\n        this._customModules = [];\r\n        QuillRegistrator._initialized = true\r\n    }\r\n    _createClass(QuillRegistrator, [{\r\n        key: \"createEditor\",\r\n        value: function(container, config) {\r\n            var quill = this.getQuill();\r\n            return new quill(container, config)\r\n        }\r\n    }, {\r\n        key: \"registerModules\",\r\n        value: function(modulesConfig) {\r\n            var isModule = RegExp(\"modules/*\");\r\n            var quill = this.getQuill();\r\n            var isRegisteredModule = function(modulePath) {\r\n                return !!quill.imports[modulePath]\r\n            };\r\n            for (var modulePath in modulesConfig) {\r\n                if (isModule.test(modulePath) && !isRegisteredModule(modulePath)) {\r\n                    this._customModules.push(modulePath.slice(8))\r\n                }\r\n            }\r\n            quill.register(modulesConfig, true)\r\n        }\r\n    }, {\r\n        key: \"getRegisteredModuleNames\",\r\n        value: function() {\r\n            return this._customModules\r\n        }\r\n    }, {\r\n        key: \"getQuill\",\r\n        value: function() {\r\n            return (0, _quill_importer.getQuill)()\r\n        }\r\n    }]);\r\n    return QuillRegistrator\r\n}();\r\nvar _default = QuillRegistrator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.header_panel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _toolbar = _interopRequireDefault(require(\"../toolbar\"));\r\nvar _uiGrid_core = require(\"./ui.grid_core.columns_view\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nrequire(\"../drop_down_menu\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar HEADER_PANEL_CLASS = \"header-panel\";\r\nvar TOOLBAR_BUTTON_CLASS = \"toolbar-button\";\r\nvar HeaderPanel = _uiGrid_core.ColumnsView.inherit({\r\n    _getToolbarItems: function() {\r\n        return []\r\n    },\r\n    _getButtonContainer: function() {\r\n        return (0, _renderer.default)(\"<div>\").addClass(this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS))\r\n    },\r\n    _getToolbarButtonClass: function(specificClass) {\r\n        var secondClass = specificClass ? \" \" + specificClass : \"\";\r\n        return this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS) + secondClass\r\n    },\r\n    _getToolbarOptions: function() {\r\n        var options = {\r\n            toolbarOptions: {\r\n                items: this._getToolbarItems(),\r\n                onItemRendered: function(e) {\r\n                    var itemRenderedCallback = e.itemData.onItemRendered;\r\n                    if (itemRenderedCallback) {\r\n                        itemRenderedCallback(e)\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        this.executeAction(\"onToolbarPreparing\", options);\r\n        if (options.toolbarOptions && !(0, _type.isDefined)(options.toolbarOptions.visible)) {\r\n            var toolbarItems = options.toolbarOptions.items;\r\n            options.toolbarOptions.visible = !!(toolbarItems && toolbarItems.length)\r\n        }\r\n        return options.toolbarOptions\r\n    },\r\n    _renderCore: function() {\r\n        if (!this._toolbar) {\r\n            this.element().addClass(this.addWidgetPrefix(HEADER_PANEL_CLASS));\r\n            this._toolbar = this._createComponent((0, _renderer.default)(\"<div>\").appendTo(this.element()), _toolbar.default, this._toolbarOptions)\r\n        } else {\r\n            this._toolbar.option(this._toolbarOptions)\r\n        }\r\n    },\r\n    _columnOptionChanged: _common.noop,\r\n    _handleDataChanged: function() {\r\n        if (this._requireReady) {\r\n            this.render()\r\n        }\r\n    },\r\n    init: function() {\r\n        this.callBase();\r\n        this.createAction(\"onToolbarPreparing\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    render: function() {\r\n        this._toolbarOptions = this._getToolbarOptions();\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    setToolbarItemDisabled: function(name, optionValue) {\r\n        var toolbarInstance = this._toolbar;\r\n        if (toolbarInstance) {\r\n            var items = toolbarInstance.option(\"items\") || [];\r\n            var itemIndex = items.indexOf(items.filter(function(item) {\r\n                return item.name === name\r\n            })[0]);\r\n            if (itemIndex >= 0) {\r\n                var itemOptionPrefix = \"items[\" + itemIndex + \"]\";\r\n                if (toolbarInstance.option(itemOptionPrefix + \".options\")) {\r\n                    toolbarInstance.option(itemOptionPrefix + \".options.disabled\", optionValue)\r\n                } else {\r\n                    toolbarInstance.option(itemOptionPrefix + \".disabled\", optionValue)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    updateToolbarDimensions: function() {\r\n        if (this._toolbar) {\r\n            (0, _visibility_change.triggerResizeEvent)(this.getHeaderPanel())\r\n        }\r\n    },\r\n    getHeaderPanel: function() {\r\n        return this.element()\r\n    },\r\n    getHeight: function() {\r\n        return this.getElementHeight()\r\n    },\r\n    optionChanged: function(args) {\r\n        if (\"onToolbarPreparing\" === args.name) {\r\n            this._invalidate();\r\n            args.handled = true\r\n        }\r\n        this.callBase(args)\r\n    },\r\n    isVisible: function() {\r\n        return this._toolbarOptions && this._toolbarOptions.visible\r\n    },\r\n    allowDragging: _common.noop\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {}\r\n    },\r\n    views: {\r\n        headerPanel: HeaderPanel\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            resizing: {\r\n                _updateDimensionsCore: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    this.getView(\"headerPanel\").updateToolbarDimensions()\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.navigator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _calendar = _interopRequireDefault(require(\"../calendar\"));\r\nvar _popover = _interopRequireDefault(require(\"../popover\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.publisher_mixin\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _ui3 = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ELEMENT_CLASS = \"dx-scheduler-navigator\";\r\nvar CALENDAR_CLASS = \"dx-scheduler-navigator-calendar\";\r\nvar NEXT_BUTTON_CLASS = \"dx-scheduler-navigator-next\";\r\nvar CAPTION_BUTTON_CLASS = \"dx-scheduler-navigator-caption\";\r\nvar PREVIOUS_BUTTON_CLASS = \"dx-scheduler-navigator-previous\";\r\nvar CALENDAR_POPOVER_CLASS = \"dx-scheduler-navigator-calendar-popover\";\r\nvar MONDAY_INDEX = 1;\r\nvar getDefaultFirstDayOfWeekIndex = function(shift) {\r\n    return shift ? MONDAY_INDEX : _date2.default.firstDayOfWeekIndex()\r\n};\r\nvar getDateMonthFormat = function(short) {\r\n    return function(date) {\r\n        var monthName = _date2.default.getMonthNames(short ? \"abbreviated\" : \"wide\")[date.getMonth()];\r\n        return [_date2.default.format(date, \"day\"), monthName].join(\" \")\r\n    }\r\n};\r\nvar getMonthYearFormat = function(date) {\r\n    return _date2.default.getMonthNames(\"abbreviated\")[date.getMonth()] + \" \" + _date2.default.format(date, \"year\")\r\n};\r\nvar getCaptionFormat = function getCaptionFormat(short, intervalCount, duration) {\r\n    var dateMonthFormat = getDateMonthFormat(short);\r\n    return function(date) {\r\n        if (intervalCount > 1) {\r\n            var lastIntervalDate = new Date(date);\r\n            var defaultViewDuration = duration;\r\n            lastIntervalDate.setDate(date.getDate() + defaultViewDuration - 1);\r\n            var isDifferentMonthDates = date.getMonth() !== lastIntervalDate.getMonth();\r\n            var useShortFormat = isDifferentMonthDates || short;\r\n            var firstWeekDateText = _date2.default.format(date, isDifferentMonthDates ? getDateMonthFormat(useShortFormat) : \"d\");\r\n            var lastWeekDateText = _date2.default.format(lastIntervalDate, getCaptionFormat(useShortFormat));\r\n            return firstWeekDateText + \"-\" + lastWeekDateText\r\n        }\r\n        return [dateMonthFormat(date), _date2.default.format(date, \"year\")].join(\" \")\r\n    }\r\n};\r\nvar getWeekCaption = function(date, shift, rejectWeekend) {\r\n    var firstDayOfWeek = this.option(\"firstDayOfWeek\");\r\n    var firstDayOfWeekIndex = (0, _type.isDefined)(firstDayOfWeek) ? firstDayOfWeek : getDefaultFirstDayOfWeekIndex(shift);\r\n    if (0 === firstDayOfWeekIndex && rejectWeekend) {\r\n        firstDayOfWeekIndex = MONDAY_INDEX\r\n    }\r\n    var firstWeekDate = _date.default.getFirstWeekDate(date, firstDayOfWeekIndex);\r\n    var weekendDuration = 2;\r\n    if (rejectWeekend) {\r\n        firstWeekDate = _date.default.normalizeDateByWeek(firstWeekDate, date)\r\n    }\r\n    if (firstDayOfWeek >= 6 && rejectWeekend) {\r\n        firstWeekDate.setDate(firstWeekDate.getDate() + (7 - firstDayOfWeek + 1))\r\n    }\r\n    var lastWeekDate = new Date(firstWeekDate);\r\n    var intervalCount = this.option(\"intervalCount\");\r\n    shift = shift || 6;\r\n    lastWeekDate = new Date(lastWeekDate.setDate(lastWeekDate.getDate() + (intervalCount > 1 ? 7 * (intervalCount - 1) + shift : shift)));\r\n    if (lastWeekDate.getDay() % 6 === 0 && rejectWeekend) {\r\n        lastWeekDate.setDate(lastWeekDate.getDate() + weekendDuration)\r\n    }\r\n    return {\r\n        text: formatCaptionByMonths.call(this, lastWeekDate, firstWeekDate),\r\n        startDate: firstWeekDate,\r\n        endDate: lastWeekDate\r\n    }\r\n};\r\nvar formatCaptionByMonths = function(lastDate, firstDate) {\r\n    var isDifferentMonthDates = firstDate.getMonth() !== lastDate.getMonth();\r\n    var isDifferentYears = firstDate.getFullYear() !== lastDate.getFullYear();\r\n    var useShortFormat = isDifferentMonthDates || this.option(\"_useShortDateFormat\");\r\n    var lastDateText;\r\n    var firstDateText;\r\n    if (isDifferentYears) {\r\n        firstDateText = _date2.default.format(firstDate, getCaptionFormat(true));\r\n        lastDateText = _date2.default.format(lastDate, getCaptionFormat(true))\r\n    } else {\r\n        firstDateText = _date2.default.format(firstDate, isDifferentMonthDates ? getDateMonthFormat(useShortFormat) : \"d\");\r\n        lastDateText = _date2.default.format(lastDate, getCaptionFormat(useShortFormat))\r\n    }\r\n    return firstDateText + \"-\" + lastDateText\r\n};\r\nvar getMonthCaption = function(date) {\r\n    var firstDate = new Date(_date.default.getFirstMonthDate(date));\r\n    var lastDate = new Date(_date.default.getLastMonthDate(firstDate));\r\n    var text;\r\n    if (this.option(\"intervalCount\") > 1) {\r\n        lastDate = new Date(firstDate);\r\n        lastDate.setMonth(firstDate.getMonth() + this.option(\"intervalCount\") - 1);\r\n        lastDate = new Date(_date.default.getLastMonthDate(lastDate));\r\n        var isSameYear = firstDate.getYear() === lastDate.getYear();\r\n        var lastDateText = getMonthYearFormat(lastDate);\r\n        var firstDateText = isSameYear ? _date2.default.getMonthNames(\"abbreviated\")[firstDate.getMonth()] : getMonthYearFormat(firstDate);\r\n        text = firstDateText + \"-\" + lastDateText\r\n    } else {\r\n        text = _date2.default.format(date, \"monthandyear\")\r\n    }\r\n    return {\r\n        text: text,\r\n        startDate: firstDate,\r\n        endDate: lastDate\r\n    }\r\n};\r\nvar dateGetter = function(date, offset) {\r\n    return new Date(date[this.setter](date[this.getter]() + offset))\r\n};\r\nvar getConfig = function(step) {\r\n    var agendaDuration;\r\n    switch (step) {\r\n        case \"day\":\r\n            return {\r\n                duration: 1 * this.option(\"intervalCount\"), setter: \"setDate\", getter: \"getDate\", getDate: dateGetter, getCaption: function(date) {\r\n                    var format = getCaptionFormat(false, this.option(\"intervalCount\"), this._getConfig().duration);\r\n                    return {\r\n                        text: _date2.default.format(date, format),\r\n                        startDate: date,\r\n                        endDate: date\r\n                    }\r\n                }\r\n            };\r\n        case \"week\":\r\n            return {\r\n                duration: 7 * this.option(\"intervalCount\"), setter: \"setDate\", getter: \"getDate\", getDate: dateGetter, getCaption: getWeekCaption\r\n            };\r\n        case \"workWeek\":\r\n            return {\r\n                duration: 7 * this.option(\"intervalCount\"), setter: \"setDate\", getter: \"getDate\", getDate: dateGetter, getCaption: function(date) {\r\n                    return getWeekCaption.call(this, date, 4, true)\r\n                }\r\n            };\r\n        case \"month\":\r\n            return {\r\n                duration: 1 * this.option(\"intervalCount\"), setter: \"setMonth\", getter: \"getMonth\", getDate: function(date, offset) {\r\n                    var currentDate = date.getDate();\r\n                    date.setDate(1);\r\n                    date = dateGetter.call(this, date, offset);\r\n                    var lastDate = _date.default.getLastMonthDay(date);\r\n                    date.setDate(currentDate < lastDate ? currentDate : lastDate);\r\n                    return date\r\n                }, getCaption: getMonthCaption\r\n            };\r\n        case \"agenda\":\r\n            agendaDuration = this.invoke(\"getAgendaDuration\");\r\n            agendaDuration = (0, _type.isNumeric)(agendaDuration) && agendaDuration > 0 ? agendaDuration : 7;\r\n            return {\r\n                duration: agendaDuration, setter: \"setDate\", getter: \"getDate\", getDate: dateGetter, getCaption: function(date) {\r\n                    var format = getCaptionFormat(this.option(\"_useShortDateFormat\"));\r\n                    var firstDate = new Date(date);\r\n                    var lastDate = new Date(date);\r\n                    var text;\r\n                    if (agendaDuration > 1) {\r\n                        lastDate.setDate(lastDate.getDate() + agendaDuration - 1);\r\n                        text = formatCaptionByMonths.call(this, lastDate, date)\r\n                    } else {\r\n                        text = _date2.default.format(date, format)\r\n                    }\r\n                    return {\r\n                        text: text,\r\n                        startDate: firstDate,\r\n                        endDate: lastDate\r\n                    }\r\n                }\r\n            }\r\n    }\r\n};\r\nvar SchedulerNavigator = _ui2.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            date: new Date,\r\n            displayedDate: void 0,\r\n            step: \"day\",\r\n            intervalCount: 1,\r\n            min: void 0,\r\n            max: void 0,\r\n            firstDayOfWeek: void 0,\r\n            _useShortDateFormat: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return !_devices.default.real().generic || _devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                _useShortDateFormat: true\r\n            }\r\n        }])\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"step\":\r\n            case \"date\":\r\n            case \"intervalCount\":\r\n            case \"displayedDate\":\r\n                this._updateButtonsState();\r\n                this._renderCaption();\r\n                this._setCalendarOption(\"value\", this.option(\"date\"));\r\n                break;\r\n            case \"min\":\r\n            case \"max\":\r\n                this._updateButtonsState();\r\n                this._setCalendarOption(args.name, args.value);\r\n                break;\r\n            case \"firstDayOfWeek\":\r\n                this._setCalendarOption(args.name, args.value);\r\n                break;\r\n            case \"customizeDateNavigatorText\":\r\n                this._renderCaption();\r\n                break;\r\n            case \"tabIndex\":\r\n            case \"focusStateEnabled\":\r\n                this._next.option(args.name, args.value);\r\n                this._caption.option(args.name, args.value);\r\n                this._prev.option(args.name, args.value);\r\n                this._setCalendarOption(args.name, args.value);\r\n                this.callBase(args);\r\n                break;\r\n            case \"_useShortDateFormat\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this.$element().addClass(ELEMENT_CLASS);\r\n        this._initButtons()\r\n    },\r\n    _initButtons: function() {\r\n        var $next = (0, _renderer.default)(\"<div>\").addClass(NEXT_BUTTON_CLASS);\r\n        this._next = this._createComponent($next, _button.default, {\r\n            icon: \"chevronnext\",\r\n            onClick: this._updateCurrentDate.bind(this, 1),\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            tabIndex: this.option(\"tabIndex\"),\r\n            integrationOptions: {}\r\n        });\r\n        var $caption = (0, _renderer.default)(\"<div>\").addClass(CAPTION_BUTTON_CLASS);\r\n        this._caption = this._createComponent($caption, _button.default, {\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            tabIndex: this.option(\"tabIndex\"),\r\n            integrationOptions: {}\r\n        });\r\n        var $prev = (0, _renderer.default)(\"<div>\").addClass(PREVIOUS_BUTTON_CLASS);\r\n        this._prev = this._createComponent($prev, _button.default, {\r\n            icon: \"chevronprev\",\r\n            onClick: this._updateCurrentDate.bind(this, -1),\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            tabIndex: this.option(\"tabIndex\"),\r\n            integrationOptions: {}\r\n        });\r\n        this.setAria(\"label\", \"Next period\", $next);\r\n        this.setAria(\"label\", \"Previous period\", $prev);\r\n        this._updateButtonsState();\r\n        this.$element().append($prev, $caption, $next)\r\n    },\r\n    _updateButtonsState: function() {\r\n        var min = this.option(\"min\");\r\n        var max = this.option(\"max\");\r\n        var caption = this._getConfig().getCaption.call(this, this.option(\"displayedDate\") || this.option(\"date\"));\r\n        min = min ? _date.default.trimTime(min) : min;\r\n        max = max ? _date.default.trimTime(max) : max;\r\n        max && max.setHours(23, 59, 59);\r\n        this._prev.option(\"disabled\", min && !isNaN(min.getTime()) && this._getNextDate(-1, caption.endDate) < min);\r\n        this._next.option(\"disabled\", max && !isNaN(max.getTime()) && this._getNextDate(1, caption.startDate) > max)\r\n    },\r\n    _updateCurrentDate: function(direction) {\r\n        var date = this._getNextDate(direction);\r\n        _date.default.normalizeDate(date, this.option(\"min\"), this.option(\"max\"));\r\n        this.notifyObserver(\"currentDateUpdated\", date)\r\n    },\r\n    _getNextDate: function(direction) {\r\n        var initialDate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\r\n        var stepConfig = this._getConfig();\r\n        var offset = stepConfig.duration * direction;\r\n        var date = stepConfig.getDate(new Date(initialDate || this.option(\"date\")), offset);\r\n        return date\r\n    },\r\n    _renderFocusTarget: _common.noop,\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this._renderCaption()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderPopover();\r\n        this._renderCaptionKeys()\r\n    },\r\n    _isMobileLayout: function() {\r\n        return !_devices.default.current().generic\r\n    },\r\n    _renderPopover: function() {\r\n        var _this = this;\r\n        var overlayType = this._isMobileLayout() ? _popup.default : _popover.default;\r\n        var popoverContainer = (0, _renderer.default)(\"<div>\").addClass(CALENDAR_POPOVER_CLASS);\r\n        this._popover = this._createComponent(popoverContainer, overlayType, {\r\n            contentTemplate: function() {\r\n                return _this._createPopupContent()\r\n            },\r\n            defaultOptionsRules: [{\r\n                device: function() {\r\n                    return !_devices.default.current().generic\r\n                },\r\n                options: {\r\n                    fullScreen: true,\r\n                    showCloseButton: false,\r\n                    toolbarItems: [{\r\n                        shortcut: \"cancel\"\r\n                    }]\r\n                }\r\n            }, {\r\n                device: function() {\r\n                    return _devices.default.current().generic\r\n                },\r\n                options: {\r\n                    target: this._caption.$element()\r\n                }\r\n            }]\r\n        });\r\n        this._popover.$element().appendTo(this.$element())\r\n    },\r\n    _createScrollable: function(content) {\r\n        var result = this._createComponent((0, _renderer.default)(\"<div>\"), _ui3.default, {\r\n            direction: \"vertical\"\r\n        });\r\n        result.$content().append(content);\r\n        return result\r\n    },\r\n    _createPopupContent: function() {\r\n        var result = (0, _renderer.default)(\"<div>\").addClass(CALENDAR_CLASS);\r\n        this._calendar = this._createComponent(result, _calendar.default, this._calendarOptions());\r\n        if (this._isMobileLayout()) {\r\n            var scrollable = this._createScrollable(result);\r\n            return scrollable.$element()\r\n        }\r\n        return result\r\n    },\r\n    _calendarOptions: function() {\r\n        return {\r\n            min: this.option(\"min\"),\r\n            max: this.option(\"max\"),\r\n            firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n            value: this.option(\"date\"),\r\n            focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n            onValueChanged: function(e) {\r\n                if (!this.option(\"visible\")) {\r\n                    return\r\n                }\r\n                this.notifyObserver(\"currentDateUpdated\", e.value);\r\n                this._popover.hide()\r\n            }.bind(this),\r\n            hasFocus: function() {\r\n                return true\r\n            },\r\n            tabIndex: null\r\n        }\r\n    },\r\n    _renderCaption: function() {\r\n        var _this2 = this;\r\n        var date = this.option(\"displayedDate\") || this.option(\"date\");\r\n        var captionConfig = this._getConfig().getCaption.call(this, date);\r\n        var customizationFunction = this.option(\"customizeDateNavigatorText\");\r\n        var caption = (0, _type.isFunction)(customizationFunction) ? customizationFunction(captionConfig) : captionConfig.text;\r\n        this._caption.option({\r\n            text: caption,\r\n            onKeyboardHandled: function(opts) {\r\n                _this2.option(\"focusStateEnabled\") && !_this2.option(\"disabled\") && _this2._calendar._keyboardHandler(opts)\r\n            },\r\n            onClick: function() {\r\n                return _this2._popover.toggle()\r\n            }\r\n        })\r\n    },\r\n    _renderCaptionKeys: function() {\r\n        if (!this.option(\"focusStateEnabled\") || this.option(\"disabled\")) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var executeHandler = function() {\r\n            if (that._popover.$content().is(\":hidden\")) {\r\n                that._popover.show()\r\n            } else {\r\n                return true\r\n            }\r\n        };\r\n        var tabHandler = function() {\r\n            that._popover.hide()\r\n        };\r\n        this._caption.registerKeyHandler(\"enter\", executeHandler);\r\n        this._caption.registerKeyHandler(\"space\", executeHandler);\r\n        this._caption.registerKeyHandler(\"tab\", tabHandler)\r\n    },\r\n    _setCalendarOption: function(name, value) {\r\n        if (this._calendar) {\r\n            this._calendar.option(name, value)\r\n        }\r\n    },\r\n    _getConfig: function() {\r\n        var step = this.option(\"step\");\r\n        var config = getConfig.call(this, step);\r\n        if (!config) {\r\n            throw _ui.default.Error(\"E1033\", step)\r\n        }\r\n        return config\r\n    }\r\n}).include(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerNavigator\", SchedulerNavigator);\r\nvar _default = SchedulerNavigator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (data/query_adapters.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = {};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/common.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.formatValue = exports.consts = exports.utils = exports.HEIGHT_COMPACT_MODE = void 0;\r\nvar _smart_formatter = require(\"../axes/smart_formatter\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar HEIGHT_COMPACT_MODE = 24;\r\nexports.HEIGHT_COMPACT_MODE = HEIGHT_COMPACT_MODE;\r\nvar POINTER_SIZE = 4;\r\nvar EMPTY_SLIDER_MARKER_TEXT = \". . .\";\r\nvar utils = {\r\n    trackerSettings: {\r\n        fill: \"grey\",\r\n        stroke: \"grey\",\r\n        opacity: 1e-4\r\n    },\r\n    animationSettings: {\r\n        duration: 250\r\n    }\r\n};\r\nexports.utils = utils;\r\nvar consts = {\r\n    emptySliderMarkerText: EMPTY_SLIDER_MARKER_TEXT,\r\n    pointerSize: POINTER_SIZE\r\n};\r\nexports.consts = consts;\r\nvar formatValue = function(value, formatOptions, tickIntervalsInfo, valueType, type, logarithmBase) {\r\n    var formatObject = {\r\n        value: value,\r\n        valueText: (0, _smart_formatter.smartFormatter)(value, {\r\n            labelOptions: formatOptions,\r\n            ticks: tickIntervalsInfo ? tickIntervalsInfo.ticks : [],\r\n            tickInterval: tickIntervalsInfo ? tickIntervalsInfo.tickInterval : void 0,\r\n            dataType: valueType,\r\n            type: type,\r\n            logarithmBase: logarithmBase\r\n        })\r\n    };\r\n    return String((0, _type.isFunction)(formatOptions.customizeText) ? formatOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText)\r\n};\r\nexports.formatValue = formatValue;\r\n","/**\r\n * DevExtreme (viz/series/points/bar_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _floor = _math.floor;\r\nvar _abs = _math.abs;\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\nvar DEFAULT_BAR_TRACKER_SIZE = 9;\r\nvar CORRECTING_BAR_TRACKER_VALUE = 4;\r\nvar RIGHT = \"right\";\r\nvar LEFT = \"left\";\r\nvar TOP = \"top\";\r\nvar BOTTOM = \"bottom\";\r\n\r\nfunction getLabelOrientation(point) {\r\n    var initialValue = point.initialValue;\r\n    var invert = point._getValTranslator().getBusinessRange().invert;\r\n    var isDiscreteValue = \"discrete\" === point.series.valueAxisType;\r\n    var isFullStacked = point.series.isFullStackedSeries();\r\n    var notAxisInverted = !isDiscreteValue && (initialValue >= 0 && !invert || initialValue < 0 && invert) || isDiscreteValue && !invert || isFullStacked;\r\n    return notAxisInverted ? TOP : BOTTOM\r\n}\r\nvar _default = _extend({}, _symbol_point.default, {\r\n    correctCoordinates: function(correctOptions) {\r\n        var that = this;\r\n        var correction = _floor(correctOptions.offset - correctOptions.width / 2);\r\n        if (that._options.rotated) {\r\n            that.height = correctOptions.width;\r\n            that.yCorrection = correction;\r\n            that.xCorrection = null\r\n        } else {\r\n            that.width = correctOptions.width;\r\n            that.xCorrection = correction;\r\n            that.yCorrection = null\r\n        }\r\n    },\r\n    _getGraphicBBox: function(location) {\r\n        var bBox = {\r\n            x: this.x,\r\n            y: this.y,\r\n            width: this.width,\r\n            height: this.height\r\n        };\r\n        if (location) {\r\n            var isTop = \"top\" === location;\r\n            if (!this._options.rotated) {\r\n                bBox.y = isTop ? bBox.y : bBox.y + bBox.height;\r\n                bBox.height = 0\r\n            } else {\r\n                bBox.x = isTop ? bBox.x + bBox.width : bBox.x;\r\n                bBox.width = 0\r\n            }\r\n        }\r\n        return bBox\r\n    },\r\n    _getLabelConnector: function(location) {\r\n        return this._getGraphicBBox(location)\r\n    },\r\n    _getLabelPosition: function() {\r\n        var position = getLabelOrientation(this);\r\n        if (this._options.rotated) {\r\n            position = position === TOP ? RIGHT : LEFT\r\n        }\r\n        return position\r\n    },\r\n    _getLabelCoords: function(label) {\r\n        var that = this;\r\n        var coords;\r\n        if (0 === that.initialValue && that.series.isFullStackedSeries()) {\r\n            if (!this._options.rotated) {\r\n                coords = that._getLabelCoordOfPosition(label, TOP)\r\n            } else {\r\n                coords = that._getLabelCoordOfPosition(label, RIGHT)\r\n            }\r\n        } else {\r\n            if (\"inside\" === label.getLayoutOptions().position) {\r\n                coords = that._getLabelCoordOfPosition(label, \"inside\")\r\n            } else {\r\n                coords = _symbol_point.default._getLabelCoords.call(this, label)\r\n            }\r\n        }\r\n        return coords\r\n    },\r\n    _drawLabel: function() {\r\n        this._label.pointPosition = \"inside\" !== this._label.getLayoutOptions().position && getLabelOrientation(this);\r\n        _symbol_point.default._drawLabel.call(this)\r\n    },\r\n    hideInsideLabel: function(label, coord) {\r\n        var graphicBBox = this._getGraphicBBox();\r\n        var labelBBox = label.getBoundingRect();\r\n        if (this._options.resolveLabelsOverlapping) {\r\n            if ((coord.y <= graphicBBox.y && coord.y + labelBBox.height >= graphicBBox.y + graphicBBox.height || coord.x <= graphicBBox.x && coord.x + labelBBox.width >= graphicBBox.x + graphicBBox.width) && !(coord.y > graphicBBox.y + graphicBBox.height || coord.y + labelBBox.height < graphicBBox.y || coord.x > graphicBBox.x + graphicBBox.width || coord.x + labelBBox.width < graphicBBox.x)) {\r\n                label.draw(false);\r\n                return true\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _showForZeroValues: function() {\r\n        return this._options.label.showForZeroValues || this.initialValue\r\n    },\r\n    _drawMarker: function(renderer, group, animationEnabled) {\r\n        var that = this;\r\n        var style = that._getStyle();\r\n        var r = that._options.cornerRadius;\r\n        var rotated = that._options.rotated;\r\n        var _that$getMarkerCoords = that.getMarkerCoords(),\r\n            x = _that$getMarkerCoords.x,\r\n            y = _that$getMarkerCoords.y,\r\n            width = _that$getMarkerCoords.width,\r\n            height = _that$getMarkerCoords.height;\r\n        if (animationEnabled) {\r\n            if (rotated) {\r\n                width = 0;\r\n                x = that.defaultX\r\n            } else {\r\n                height = 0;\r\n                y = that.defaultY\r\n            }\r\n        }\r\n        that.graphic = renderer.rect(x, y, width, height).attr({\r\n            rx: r,\r\n            ry: r\r\n        }).smartAttr(style).data({\r\n            \"chart-data-point\": that\r\n        }).append(group)\r\n    },\r\n    _getSettingsForTracker: function() {\r\n        var that = this;\r\n        var y = that.y;\r\n        var height = that.height;\r\n        var x = that.x;\r\n        var width = that.width;\r\n        if (that._options.rotated) {\r\n            if (1 === width) {\r\n                width = DEFAULT_BAR_TRACKER_SIZE;\r\n                x -= CORRECTING_BAR_TRACKER_VALUE\r\n            }\r\n        } else {\r\n            if (1 === height) {\r\n                height = DEFAULT_BAR_TRACKER_SIZE;\r\n                y -= CORRECTING_BAR_TRACKER_VALUE\r\n            }\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y,\r\n            width: width,\r\n            height: height\r\n        }\r\n    },\r\n    getGraphicSettings: function() {\r\n        var graphic = this.graphic;\r\n        return {\r\n            x: graphic.attr(\"x\"),\r\n            y: graphic.attr(\"y\"),\r\n            height: graphic.attr(\"height\"),\r\n            width: graphic.attr(\"width\")\r\n        }\r\n    },\r\n    _getEdgeTooltipParams: function() {\r\n        var isPositive = this.value >= 0;\r\n        var xCoord;\r\n        var yCoord;\r\n        var invertedBusinessRange = this._getValTranslator().getBusinessRange().invert;\r\n        var x = this.x,\r\n            y = this.y,\r\n            width = this.width,\r\n            height = this.height;\r\n        if (this._options.rotated) {\r\n            yCoord = y + height / 2;\r\n            if (invertedBusinessRange) {\r\n                xCoord = isPositive ? x : x + width\r\n            } else {\r\n                xCoord = isPositive ? x + width : x\r\n            }\r\n        } else {\r\n            xCoord = x + width / 2;\r\n            if (invertedBusinessRange) {\r\n                yCoord = isPositive ? y + height : y\r\n            } else {\r\n                yCoord = isPositive ? y : y + height\r\n            }\r\n        }\r\n        return {\r\n            x: xCoord,\r\n            y: yCoord,\r\n            offset: 0\r\n        }\r\n    },\r\n    getTooltipParams: function(location) {\r\n        if (\"edge\" === location) {\r\n            return this._getEdgeTooltipParams()\r\n        }\r\n        var center = this.getCenterCoord();\r\n        center.offset = 0;\r\n        return center\r\n    },\r\n    getCenterCoord: function() {\r\n        var width = this.width,\r\n            height = this.height,\r\n            x = this.x,\r\n            y = this.y;\r\n        return {\r\n            x: x + width / 2,\r\n            y: y + height / 2\r\n        }\r\n    },\r\n    _truncateCoord: function(coord, bounds) {\r\n        if (null === coord) {\r\n            return coord\r\n        }\r\n        if (coord < bounds[0]) {\r\n            return bounds[0]\r\n        }\r\n        if (coord > bounds[1]) {\r\n            return bounds[1]\r\n        }\r\n        return coord\r\n    },\r\n    _getErrorBarBaseEdgeLength: function() {\r\n        return this._options.rotated ? this.height : this.width\r\n    },\r\n    _translateErrorBars: function(argVisibleArea) {\r\n        _symbol_point.default._translateErrorBars.call(this);\r\n        if (this._errorBarPos < argVisibleArea[0] || this._errorBarPos > argVisibleArea[1]) {\r\n            this._errorBarPos = void 0\r\n        }\r\n    },\r\n    _translate: function() {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        var valAxis = rotated ? \"x\" : \"y\";\r\n        var argAxis = rotated ? \"y\" : \"x\";\r\n        var valIntervalName = rotated ? \"width\" : \"height\";\r\n        var argIntervalName = rotated ? \"height\" : \"width\";\r\n        var argTranslator = that._getArgTranslator();\r\n        var valTranslator = that._getValTranslator();\r\n        var argVisibleArea = that.series.getArgumentAxis().getVisibleArea();\r\n        var valVisibleArea = that.series.getValueAxis().getVisibleArea();\r\n        var arg;\r\n        var val;\r\n        var minVal;\r\n        arg = argTranslator.translate(that.argument);\r\n        that[argAxis] = arg = null === arg ? arg : arg + (that[argAxis + \"Correction\"] || 0);\r\n        val = valTranslator.translate(that.value, 1);\r\n        minVal = valTranslator.translate(that.minValue);\r\n        that[\"v\" + valAxis] = val;\r\n        that[\"v\" + argAxis] = arg + that[argIntervalName] / 2;\r\n        val = that._truncateCoord(val, valVisibleArea);\r\n        minVal = that._truncateCoord(minVal, valVisibleArea);\r\n        that[valIntervalName] = _abs(val - minVal);\r\n        val = val < minVal ? val : minVal;\r\n        that._calculateVisibility(rotated ? val : arg, rotated ? arg : val, that.width, that.height);\r\n        that[valAxis] = null === val ? val : val + (that[valAxis + \"Correction\"] || 0);\r\n        that[\"min\" + valAxis.toUpperCase()] = null === minVal ? minVal : minVal + (that[valAxis + \"Correction\"] || 0);\r\n        that[\"default\" + valAxis.toUpperCase()] = valTranslator.translate(CANVAS_POSITION_DEFAULT);\r\n        that._translateErrorBars(argVisibleArea);\r\n        if (that.inVisibleArea && null !== that[argAxis]) {\r\n            if (that[argAxis] < argVisibleArea[0]) {\r\n                that[argIntervalName] = that[argIntervalName] - (argVisibleArea[0] - that[argAxis]);\r\n                that[argAxis] = argVisibleArea[0]\r\n            }\r\n            if (that[argAxis] + that[argIntervalName] > argVisibleArea[1]) {\r\n                that[argIntervalName] = argVisibleArea[1] - that[argAxis]\r\n            }\r\n        }\r\n    },\r\n    _updateMarker: function(animationEnabled, style) {\r\n        this.graphic.smartAttr(_extend({}, style, !animationEnabled ? this.getMarkerCoords() : {}))\r\n    },\r\n    getMarkerCoords: function() {\r\n        var that = this;\r\n        var x = that.x;\r\n        var y = that.y;\r\n        var width = that.width;\r\n        var height = that.height;\r\n        var argAxis = that.series.getArgumentAxis();\r\n        var rotated = that._options.rotated;\r\n        if (argAxis.getAxisPosition) {\r\n            var axisOptions = argAxis.getOptions();\r\n            var edgeOffset = Math.round(axisOptions.width / 2);\r\n            var argAxisPosition = argAxis.getAxisPosition();\r\n            if (axisOptions.visible) {\r\n                if (!rotated) {\r\n                    height -= that.minY === that.defaultY && that.minY === argAxisPosition - argAxis.getAxisShift() ? edgeOffset : 0;\r\n                    height < 0 && (height = 0)\r\n                } else {\r\n                    var isStartFromAxis = that.minX === that.defaultX && that.minX === argAxisPosition - argAxis.getAxisShift();\r\n                    x += isStartFromAxis ? edgeOffset : 0;\r\n                    width -= isStartFromAxis ? edgeOffset : 0;\r\n                    width < 0 && (width = 0)\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y,\r\n            width: width,\r\n            height: height\r\n        }\r\n    },\r\n    coordsIn: function(x, y) {\r\n        var that = this;\r\n        return x >= that.x && x <= that.x + that.width && y >= that.y && y <= that.y + that.height\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/overlay/z_index.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.clearStack = exports.remove = exports.create = exports.base = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar baseZIndex = 1500;\r\nvar zIndexStack = [];\r\nvar base = function(ZIndex) {\r\n    baseZIndex = (0, _common.ensureDefined)(ZIndex, baseZIndex);\r\n    return baseZIndex\r\n};\r\nexports.base = base;\r\nvar create = function() {\r\n    var baseIndex = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : baseZIndex;\r\n    var length = zIndexStack.length;\r\n    var index = (length ? zIndexStack[length - 1] : baseIndex) + 1;\r\n    zIndexStack.push(index);\r\n    return index\r\n};\r\nexports.create = create;\r\nvar remove = function(zIndex) {\r\n    var position = zIndexStack.indexOf(zIndex);\r\n    if (position >= 0) {\r\n        zIndexStack.splice(position, 1)\r\n    }\r\n};\r\nexports.remove = remove;\r\nvar clearStack = function() {\r\n    zIndexStack = []\r\n};\r\nexports.clearStack = clearStack;\r\n","/**\r\n * DevExtreme (exporter/jspdf/export_data_grid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.exportDataGrid = exportDataGrid;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _export = require(\"./export\");\r\n\r\nfunction _getFullOptions(options) {\r\n    if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {\r\n        throw Error('The \"exportDataGrid\" method requires a configuration object.')\r\n    }\r\n    if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && \"dxDataGrid\" === options.component.NAME)) {\r\n        throw Error('The \"component\" field must contain a DataGrid instance.')\r\n    }\r\n    if (!(0, _type.isDefined)(options.selectedRowsOnly)) {\r\n        options.selectedRowsOnly = false\r\n    }\r\n    return _export.Export.getFullOptions(options)\r\n}\r\n\r\nfunction exportDataGrid(options) {\r\n    return _export.Export.export(_getFullOptions(options))\r\n}\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.provider.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nrequire(\"./ui.list.edit.decorator.static\");\r\nrequire(\"./ui.list.edit.decorator.switchable.button\");\r\nrequire(\"./ui.list.edit.decorator.switchable.slide\");\r\nrequire(\"./ui.list.edit.decorator.swipe\");\r\nrequire(\"./ui.list.edit.decorator.context\");\r\nrequire(\"./ui.list.edit.decorator.selection\");\r\nrequire(\"./ui.list.edit.decorator.reorder\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar editOptionsRegistry = [];\r\nvar registerOption = function(enabledFunc, decoratorTypeFunc, decoratorSubTypeFunc) {\r\n    editOptionsRegistry.push({\r\n        enabled: enabledFunc,\r\n        decoratorType: decoratorTypeFunc,\r\n        decoratorSubType: decoratorSubTypeFunc\r\n    })\r\n};\r\nregisterOption(function() {\r\n    return this.option(\"menuItems\").length\r\n}, function() {\r\n    return \"menu\"\r\n}, function() {\r\n    return this.option(\"menuMode\")\r\n});\r\nregisterOption(function() {\r\n    return !this.option(\"menuItems\").length && this.option(\"allowItemDeleting\")\r\n}, function() {\r\n    var mode = this.option(\"itemDeleteMode\");\r\n    return \"toggle\" === mode || \"slideButton\" === mode || \"swipe\" === mode || \"static\" === mode ? \"delete\" : \"menu\"\r\n}, function() {\r\n    var mode = this.option(\"itemDeleteMode\");\r\n    if (\"slideItem\" === mode) {\r\n        mode = \"slide\"\r\n    }\r\n    if (\"hold\" === mode) {\r\n        mode = \"context\"\r\n    }\r\n    return mode\r\n});\r\nregisterOption(function() {\r\n    return \"none\" !== this.option(\"selectionMode\") && this.option(\"showSelectionControls\")\r\n}, function() {\r\n    return \"selection\"\r\n}, function() {\r\n    return \"default\"\r\n});\r\nregisterOption(function() {\r\n    return this.option(\"itemDragging.allowReordering\") || this.option(\"itemDragging.allowDropInsideItem\") || this.option(\"itemDragging.group\")\r\n}, function() {\r\n    return \"reorder\"\r\n}, function() {\r\n    return \"default\"\r\n});\r\nvar LIST_ITEM_BEFORE_BAG_CLASS = \"dx-list-item-before-bag\";\r\nvar LIST_ITEM_AFTER_BAG_CLASS = \"dx-list-item-after-bag\";\r\nvar DECORATOR_BEFORE_BAG_CREATE_METHOD = \"beforeBag\";\r\nvar DECORATOR_AFTER_BAG_CREATE_METHOD = \"afterBag\";\r\nvar DECORATOR_MODIFY_ELEMENT_METHOD = \"modifyElement\";\r\nvar DECORATOR_AFTER_RENDER_METHOD = \"afterRender\";\r\nvar DECORATOR_GET_EXCLUDED_SELECTORS_METHOD = \"getExcludedSelectors\";\r\nvar EditProvider = _class.default.inherit({\r\n    ctor: function(list) {\r\n        this._list = list;\r\n        this._fetchRequiredDecorators()\r\n    },\r\n    dispose: function() {\r\n        if (this._decorators && this._decorators.length) {\r\n            (0, _iterator.each)(this._decorators, function(_, decorator) {\r\n                decorator.dispose()\r\n            })\r\n        }\r\n    },\r\n    _fetchRequiredDecorators: function() {\r\n        this._decorators = [];\r\n        (0, _iterator.each)(editOptionsRegistry, function(_, option) {\r\n            var optionEnabled = option.enabled.call(this._list);\r\n            if (optionEnabled) {\r\n                var decoratorType = option.decoratorType.call(this._list);\r\n                var decoratorSubType = option.decoratorSubType.call(this._list);\r\n                var decorator = this._createDecorator(decoratorType, decoratorSubType);\r\n                this._decorators.push(decorator)\r\n            }\r\n        }.bind(this))\r\n    },\r\n    _createDecorator: function(type, subType) {\r\n        var decoratorClass = this._findDecorator(type, subType);\r\n        return new decoratorClass(this._list)\r\n    },\r\n    _findDecorator: function(type, subType) {\r\n        var foundDecorator = _uiListEdit.registry[type][subType];\r\n        if (!foundDecorator) {\r\n            throw _ui.default.Error(\"E1012\", type, subType)\r\n        }\r\n        return foundDecorator\r\n    },\r\n    modifyItemElement: function(args) {\r\n        var $itemElement = (0, _renderer.default)(args.itemElement);\r\n        var config = {\r\n            $itemElement: $itemElement\r\n        };\r\n        this._prependBeforeBags($itemElement, config);\r\n        this._appendAfterBags($itemElement, config);\r\n        this._applyDecorators(DECORATOR_MODIFY_ELEMENT_METHOD, config)\r\n    },\r\n    afterItemsRendered: function() {\r\n        this._applyDecorators(DECORATOR_AFTER_RENDER_METHOD)\r\n    },\r\n    _prependBeforeBags: function($itemElement, config) {\r\n        var $beforeBags = this._collectDecoratorsMarkup(DECORATOR_BEFORE_BAG_CREATE_METHOD, config, LIST_ITEM_BEFORE_BAG_CLASS);\r\n        $itemElement.prepend($beforeBags)\r\n    },\r\n    _appendAfterBags: function($itemElement, config) {\r\n        var $afterBags = this._collectDecoratorsMarkup(DECORATOR_AFTER_BAG_CREATE_METHOD, config, LIST_ITEM_AFTER_BAG_CLASS);\r\n        $itemElement.append($afterBags)\r\n    },\r\n    _collectDecoratorsMarkup: function(method, config, containerClass) {\r\n        var $collector = (0, _renderer.default)(\"<div>\");\r\n        (0, _iterator.each)(this._decorators, function() {\r\n            var $container = (0, _renderer.default)(\"<div>\").addClass(containerClass);\r\n            this[method]((0, _extend.extend)({\r\n                $container: $container\r\n            }, config));\r\n            if ($container.children().length) {\r\n                $collector.append($container)\r\n            }\r\n        });\r\n        return $collector.children()\r\n    },\r\n    _applyDecorators: function(method, config) {\r\n        (0, _iterator.each)(this._decorators, function() {\r\n            this[method](config)\r\n        })\r\n    },\r\n    _handlerExists: function(name) {\r\n        if (!this._decorators) {\r\n            return false\r\n        }\r\n        var decorators = this._decorators;\r\n        var length = decorators.length;\r\n        for (var i = 0; i < length; i++) {\r\n            if (decorators[i][name] !== _common.noop) {\r\n                return true\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _eventHandler: function(name, $itemElement, e) {\r\n        if (!this._decorators) {\r\n            return false\r\n        }\r\n        var response = false;\r\n        var decorators = this._decorators;\r\n        var length = decorators.length;\r\n        for (var i = 0; i < length; i++) {\r\n            response = decorators[i][name]($itemElement, e);\r\n            if (response) {\r\n                break\r\n            }\r\n        }\r\n        return response\r\n    },\r\n    handleClick: function($itemElement, e) {\r\n        return this._eventHandler(\"handleClick\", $itemElement, e)\r\n    },\r\n    handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n        return this._eventHandler(\"handleKeyboardEvents\", currentFocusedIndex, moveFocusUp)\r\n    },\r\n    handleEnterPressing: function() {\r\n        return this._eventHandler(\"handleEnterPressing\")\r\n    },\r\n    contextMenuHandlerExists: function() {\r\n        return this._handlerExists(\"handleContextMenu\")\r\n    },\r\n    handleContextMenu: function($itemElement, e) {\r\n        return this._eventHandler(\"handleContextMenu\", $itemElement, e)\r\n    },\r\n    getExcludedItemSelectors: function() {\r\n        var excludedSelectors = [];\r\n        this._applyDecorators(DECORATOR_GET_EXCLUDED_SELECTORS_METHOD, excludedSelectors);\r\n        return excludedSelectors.join(\",\")\r\n    }\r\n});\r\nvar _default = EditProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/palette.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.currentPalette = currentPalette;\r\nexports.generateColors = generateColors;\r\nexports.getPalette = getPalette;\r\nexports.registerPalette = registerPalette;\r\nexports.getAccentColor = getAccentColor;\r\nexports.createPalette = createPalette;\r\nexports.getDiscretePalette = getDiscretePalette;\r\nexports.getGradientPalette = getGradientPalette;\r\nvar _utils = require(\"./core/utils\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _color = _interopRequireDefault(require(\"../color\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _palettes;\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar _floor = Math.floor;\r\nvar _ceil = Math.ceil;\r\nvar _isArray = Array.isArray;\r\nvar HIGHLIGHTING_STEP = 50;\r\nvar DEFAULT_PALETTE = \"material\";\r\nvar officePalette = {\r\n    simpleSet: [\"#5f8b95\", \"#ba4d51\", \"#af8a53\", \"#955f71\", \"#859666\", \"#7e688c\"],\r\n    indicatingSet: [\"#a3b97c\", \"#e1b676\", \"#ec7f83\"],\r\n    gradientSet: [\"#5f8b95\", \"#ba4d51\"],\r\n    accentColor: \"#ba4d51\"\r\n};\r\nvar palettes = (_palettes = {}, _defineProperty(_palettes, DEFAULT_PALETTE, {\r\n    simpleSet: [\"#1db2f5\", \"#f5564a\", \"#97c95c\", \"#ffc720\", \"#eb3573\", \"#a63db8\"],\r\n    indicatingSet: [\"#97c95c\", \"#ffc720\", \"#f5564a\"],\r\n    gradientSet: [\"#1db2f5\", \"#97c95c\"],\r\n    accentColor: \"#1db2f5\"\r\n}), _defineProperty(_palettes, \"office\", officePalette), _defineProperty(_palettes, \"harmony light\", {\r\n    simpleSet: [\"#fcb65e\", \"#679ec5\", \"#ad79ce\", \"#7abd5c\", \"#e18e92\", \"#b6d623\", \"#b7abea\", \"#85dbd5\"],\r\n    indicatingSet: [\"#b6d623\", \"#fcb65e\", \"#e18e92\"],\r\n    gradientSet: [\"#7abd5c\", \"#fcb65e\"],\r\n    accentColor: \"#679ec5\"\r\n}), _defineProperty(_palettes, \"soft pastel\", {\r\n    simpleSet: [\"#60a69f\", \"#78b6d9\", \"#6682bb\", \"#a37182\", \"#eeba69\", \"#90ba58\", \"#456c68\", \"#7565a4\"],\r\n    indicatingSet: [\"#90ba58\", \"#eeba69\", \"#a37182\"],\r\n    gradientSet: [\"#78b6d9\", \"#eeba69\"],\r\n    accentColor: \"#60a69f\"\r\n}), _defineProperty(_palettes, \"pastel\", {\r\n    simpleSet: [\"#bb7862\", \"#70b3a1\", \"#bb626a\", \"#057d85\", \"#ab394b\", \"#dac599\", \"#153459\", \"#b1d2c6\"],\r\n    indicatingSet: [\"#70b3a1\", \"#dac599\", \"#bb626a\"],\r\n    gradientSet: [\"#bb7862\", \"#70b3a1\"],\r\n    accentColor: \"#bb7862\"\r\n}), _defineProperty(_palettes, \"bright\", {\r\n    simpleSet: [\"#70c92f\", \"#f8ca00\", \"#bd1550\", \"#e97f02\", \"#9d419c\", \"#7e4452\", \"#9ab57e\", \"#36a3a6\"],\r\n    indicatingSet: [\"#70c92f\", \"#f8ca00\", \"#bd1550\"],\r\n    gradientSet: [\"#e97f02\", \"#f8ca00\"],\r\n    accentColor: \"#e97f02\"\r\n}), _defineProperty(_palettes, \"soft\", {\r\n    simpleSet: [\"#cbc87b\", \"#9ab57e\", \"#e55253\", \"#7e4452\", \"#e8c267\", \"#565077\", \"#6babac\", \"#ad6082\"],\r\n    indicatingSet: [\"#9ab57e\", \"#e8c267\", \"#e55253\"],\r\n    gradientSet: [\"#9ab57e\", \"#e8c267\"],\r\n    accentColor: \"#565077\"\r\n}), _defineProperty(_palettes, \"ocean\", {\r\n    simpleSet: [\"#75c099\", \"#acc371\", \"#378a8a\", \"#5fa26a\", \"#064970\", \"#38c5d2\", \"#00a7c6\", \"#6f84bb\"],\r\n    indicatingSet: [\"#c8e394\", \"#7bc59d\", \"#397c8b\"],\r\n    gradientSet: [\"#acc371\", \"#38c5d2\"],\r\n    accentColor: \"#378a8a\"\r\n}), _defineProperty(_palettes, \"vintage\", {\r\n    simpleSet: [\"#dea484\", \"#efc59c\", \"#cb715e\", \"#eb9692\", \"#a85c4c\", \"#f2c0b5\", \"#c96374\", \"#dd956c\"],\r\n    indicatingSet: [\"#ffe5c6\", \"#f4bb9d\", \"#e57660\"],\r\n    gradientSet: [\"#efc59c\", \"#cb715e\"],\r\n    accentColor: \"#cb715e\"\r\n}), _defineProperty(_palettes, \"violet\", {\r\n    simpleSet: [\"#d1a1d1\", \"#eeacc5\", \"#7b5685\", \"#7e7cad\", \"#a13d73\", \"#5b41ab\", \"#e287e2\", \"#689cc1\"],\r\n    indicatingSet: [\"#d8e2f6\", \"#d0b2da\", \"#d56a8a\"],\r\n    gradientSet: [\"#eeacc5\", \"#7b5685\"],\r\n    accentColor: \"#7b5685\"\r\n}), _defineProperty(_palettes, \"carmine\", {\r\n    simpleSet: [\"#fb7764\", \"#73d47f\", \"#fed85e\", \"#d47683\", \"#dde392\", \"#757ab2\"],\r\n    indicatingSet: [\"#5cb85c\", \"#f0ad4e\", \"#d9534f\"],\r\n    gradientSet: [\"#fb7764\", \"#73d47f\"],\r\n    accentColor: \"#f05b41\"\r\n}), _defineProperty(_palettes, \"dark moon\", {\r\n    simpleSet: [\"#4ddac1\", \"#f4c99a\", \"#80dd9b\", \"#f998b3\", \"#4aaaa0\", \"#a5aef1\"],\r\n    indicatingSet: [\"#59d8a4\", \"#f0ad4e\", \"#f9517e\"],\r\n    gradientSet: [\"#4ddac1\", \"#f4c99a\"],\r\n    accentColor: \"#3debd3\"\r\n}), _defineProperty(_palettes, \"soft blue\", {\r\n    simpleSet: [\"#7ab8eb\", \"#97da97\", \"#facb86\", \"#e78683\", \"#839bda\", \"#4db7be\"],\r\n    indicatingSet: [\"#5cb85c\", \"#f0ad4e\", \"#d9534f\"],\r\n    gradientSet: [\"#7ab8eb\", \"#97da97\"],\r\n    accentColor: \"#7ab8eb\"\r\n}), _defineProperty(_palettes, \"dark violet\", {\r\n    simpleSet: [\"#9c63ff\", \"#64c064\", \"#eead51\", \"#d2504b\", \"#4b6bbf\", \"#2da7b0\"],\r\n    indicatingSet: [\"#5cb85c\", \"#f0ad4e\", \"#d9534f\"],\r\n    gradientSet: [\"#9c63ff\", \"#64c064\"],\r\n    accentColor: \"#9c63ff\"\r\n}), _defineProperty(_palettes, \"green mist\", {\r\n    simpleSet: [\"#3cbab2\", \"#8ed962\", \"#5b9d95\", \"#efcc7c\", \"#f1929f\", \"#4d8dab\"],\r\n    indicatingSet: [\"#72d63c\", \"#ffc852\", \"#f74a5e\"],\r\n    gradientSet: [\"#3cbab2\", \"#8ed962\"],\r\n    accentColor: \"#3cbab2\"\r\n}), _palettes);\r\nvar currentPaletteName;\r\n\r\nfunction currentPalette(name) {\r\n    if (void 0 === name) {\r\n        return currentPaletteName || DEFAULT_PALETTE\r\n    } else {\r\n        name = (0, _utils.normalizeEnum)(name);\r\n        currentPaletteName = name in palettes ? name : void 0\r\n    }\r\n}\r\n\r\nfunction generateColors(palette, count) {\r\n    var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {\r\n        keepLastColorInEnd: false\r\n    };\r\n    options.type = options.baseColorSet;\r\n    options.extensionMode = options.paletteExtensionMode;\r\n    return createPalette(palette, options).generateColors(count)\r\n}\r\n\r\nfunction getPalette(palette, parameters) {\r\n    parameters = parameters || {};\r\n    palette = palette || (void 0 === currentPaletteName ? parameters.themeDefault : currentPalette());\r\n    var result;\r\n    var type = parameters.type;\r\n    if (_isArray(palette)) {\r\n        return palette.slice(0)\r\n    } else {\r\n        if ((0, _type.isString)(palette)) {\r\n            result = palettes[(0, _utils.normalizeEnum)(palette)]\r\n        }\r\n        if (!result) {\r\n            result = palettes[currentPalette()]\r\n        }\r\n    }\r\n    return type ? result[type].slice(0) : result\r\n}\r\n\r\nfunction registerPalette(name, palette) {\r\n    var item = {};\r\n    var paletteName;\r\n    if (_isArray(palette)) {\r\n        item.simpleSet = palette.slice(0)\r\n    } else {\r\n        if (palette) {\r\n            item.simpleSet = _isArray(palette.simpleSet) ? palette.simpleSet.slice(0) : void 0;\r\n            item.indicatingSet = _isArray(palette.indicatingSet) ? palette.indicatingSet.slice(0) : void 0;\r\n            item.gradientSet = _isArray(palette.gradientSet) ? palette.gradientSet.slice(0) : void 0;\r\n            item.accentColor = palette.accentColor\r\n        }\r\n    }\r\n    if (!item.accentColor) {\r\n        item.accentColor = item.simpleSet && item.simpleSet[0]\r\n    }\r\n    if (item.simpleSet || item.indicatingSet || item.gradientSet) {\r\n        paletteName = (0, _utils.normalizeEnum)(name);\r\n        (0, _extend.extend)(palettes[paletteName] = palettes[paletteName] || {}, item)\r\n    }\r\n}\r\n\r\nfunction getAccentColor(palette, themeDefault) {\r\n    palette = getPalette(palette, {\r\n        themeDefault: themeDefault\r\n    });\r\n    return palette.accentColor || palette[0]\r\n}\r\n\r\nfunction RingBuf(buf) {\r\n    var ind = 0;\r\n    this.next = function() {\r\n        var res = buf[ind++];\r\n        if (ind === buf.length) {\r\n            this.reset()\r\n        }\r\n        return res\r\n    };\r\n    this.reset = function() {\r\n        ind = 0\r\n    }\r\n}\r\n\r\nfunction getAlternateColorsStrategy(palette, parameters) {\r\n    var stepHighlight = parameters.useHighlight ? HIGHLIGHTING_STEP : 0;\r\n    var paletteSteps = new RingBuf([0, stepHighlight, -stepHighlight]);\r\n    var currentPalette = [];\r\n\r\n    function _reset() {\r\n        var step = paletteSteps.next();\r\n        currentPalette = step ? getAlteredPalette(palette, step) : palette.slice(0)\r\n    }\r\n    return {\r\n        getColor: function(index) {\r\n            var color = currentPalette[index % palette.length];\r\n            if (index % palette.length === palette.length - 1) {\r\n                _reset()\r\n            }\r\n            return color\r\n        },\r\n        generateColors: function(count) {\r\n            var colors = [];\r\n            count = count || parameters.count;\r\n            for (var i = 0; i < count; i++) {\r\n                colors.push(this.getColor(i))\r\n            }\r\n            return colors\r\n        },\r\n        reset: function() {\r\n            paletteSteps.reset();\r\n            _reset()\r\n        }\r\n    }\r\n}\r\n\r\nfunction getExtrapolateColorsStrategy(palette, parameters) {\r\n    function convertColor(color, cycleIndex, cycleCount) {\r\n        var hsl = new _color.default(color).hsl;\r\n        var l = hsl.l / 100;\r\n        var diapason = cycleCount - 1 / cycleCount;\r\n        var minL = l - .5 * diapason;\r\n        var maxL = l + .5 * diapason;\r\n        var cycleMiddle = (cycleCount - 1) / 2;\r\n        var cycleDiff = cycleIndex - cycleMiddle;\r\n        if (minL < Math.min(.5, .9 * l)) {\r\n            minL = Math.min(.5, .9 * l)\r\n        }\r\n        if (maxL > Math.max(.8, l + .15 * (1 - l))) {\r\n            maxL = Math.max(.8, l + .15 * (1 - l))\r\n        }\r\n        if (cycleDiff < 0) {\r\n            l -= (minL - l) * cycleDiff / cycleMiddle\r\n        } else {\r\n            l += (maxL - l) * (cycleDiff / cycleMiddle)\r\n        }\r\n        hsl.l = 100 * l;\r\n        return _color.default.prototype.fromHSL(hsl).toHex()\r\n    }\r\n    return {\r\n        getColor: function(index, count) {\r\n            var paletteCount = palette.length;\r\n            var cycles = _floor((count - 1) / paletteCount + 1);\r\n            var color = palette[index % paletteCount];\r\n            if (cycles > 1) {\r\n                return convertColor(color, _floor(index / paletteCount), cycles)\r\n            }\r\n            return color\r\n        },\r\n        generateColors: function(count) {\r\n            var colors = [];\r\n            count = count || parameters.count;\r\n            for (var i = 0; i < count; i++) {\r\n                colors.push(this.getColor(i, count))\r\n            }\r\n            return colors\r\n        },\r\n        reset: function() {}\r\n    }\r\n}\r\n\r\nfunction getColorMixer(palette, parameters) {\r\n    var paletteCount = palette.length;\r\n    var extendedPalette = [];\r\n\r\n    function distributeColors(count, colorsCount, startIndex, distribution) {\r\n        var groupSize = Math.floor(count / colorsCount);\r\n        var extraItems = count - colorsCount * groupSize;\r\n        var i = startIndex;\r\n        var middleIndex;\r\n        var size;\r\n        while (i < startIndex + count) {\r\n            size = groupSize;\r\n            if (extraItems > 0) {\r\n                size += 1;\r\n                extraItems--\r\n            }\r\n            middleIndex = size > 2 ? Math.floor(size / 2) : 0;\r\n            distribution.push(i + middleIndex);\r\n            i += size\r\n        }\r\n        return distribution.sort(function(a, b) {\r\n            return a - b\r\n        })\r\n    }\r\n\r\n    function getColorAndDistance(arr, startIndex, count) {\r\n        startIndex = (count + startIndex) % count;\r\n        var distance = 0;\r\n        for (var i = startIndex; i < 2 * count; i += 1) {\r\n            var index = (count + i) % count;\r\n            if (arr[index]) {\r\n                return [arr[index], distance]\r\n            }\r\n            distance++\r\n        }\r\n    }\r\n\r\n    function blendColors(paletteWithEmptyColors, paletteLength) {\r\n        for (var i = 0; i < paletteLength; i++) {\r\n            var color = paletteWithEmptyColors[i];\r\n            if (!color) {\r\n                var color1 = paletteWithEmptyColors[i - 1];\r\n                if (!color1) {\r\n                    continue\r\n                } else {\r\n                    var c2 = getColorAndDistance(paletteWithEmptyColors, i, paletteLength);\r\n                    var color2 = new _color.default(c2[0]);\r\n                    color1 = new _color.default(color1);\r\n                    for (var j = 0; j < c2[1]; j++, i++) {\r\n                        paletteWithEmptyColors[i] = color1.blend(color2, (j + 1) / (c2[1] + 1)).toHex()\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return paletteWithEmptyColors\r\n    }\r\n\r\n    function extendPalette(count) {\r\n        if (count <= paletteCount) {\r\n            return palette\r\n        }\r\n        var result = [];\r\n        var colorInGroups = paletteCount - 2;\r\n        var currentColorIndex = 0;\r\n        var cleanColorIndices = [];\r\n        if (parameters.keepLastColorInEnd) {\r\n            cleanColorIndices = distributeColors(count - 2, colorInGroups, 1, [0, count - 1])\r\n        } else {\r\n            cleanColorIndices = distributeColors(count - 1, paletteCount - 1, 1, [0])\r\n        }\r\n        for (var i = 0; i < count; i++) {\r\n            if (cleanColorIndices.indexOf(i) > -1) {\r\n                result[i] = palette[currentColorIndex++]\r\n            }\r\n        }\r\n        result = blendColors(result, count);\r\n        return result\r\n    }\r\n    return {\r\n        getColor: function(index, count) {\r\n            count = count || parameters.count || paletteCount;\r\n            if (extendedPalette.length !== count) {\r\n                extendedPalette = extendPalette(count)\r\n            }\r\n            return extendedPalette[index % count]\r\n        },\r\n        generateColors: function(count, repeat) {\r\n            count = count || parameters.count || paletteCount;\r\n            if (repeat && count > paletteCount) {\r\n                var colors = extendPalette(paletteCount);\r\n                for (var i = 0; i < count - paletteCount; i++) {\r\n                    colors.push(colors[i])\r\n                }\r\n                return colors\r\n            } else {\r\n                return paletteCount > 0 ? extendPalette(count).slice(0, count) : []\r\n            }\r\n        },\r\n        reset: function() {}\r\n    }\r\n}\r\n\r\nfunction createPalette(palette, parameters, themeDefaultPalette) {\r\n    var paletteObj = {\r\n        dispose: function() {\r\n            this._extensionStrategy = null\r\n        },\r\n        getNextColor: function(count) {\r\n            return this._extensionStrategy.getColor(this._currentColor++, count)\r\n        },\r\n        generateColors: function(count, parameters) {\r\n            return this._extensionStrategy.generateColors(count, (parameters || {}).repeat)\r\n        },\r\n        reset: function() {\r\n            this._currentColor = 0;\r\n            this._extensionStrategy.reset();\r\n            return this\r\n        }\r\n    };\r\n    parameters = parameters || {};\r\n    var extensionMode = (parameters.extensionMode || \"\").toLowerCase();\r\n    var colors = getPalette(palette, {\r\n        type: parameters.type || \"simpleSet\",\r\n        themeDefault: themeDefaultPalette\r\n    });\r\n    if (\"alternate\" === extensionMode) {\r\n        paletteObj._extensionStrategy = getAlternateColorsStrategy(colors, parameters)\r\n    } else {\r\n        if (\"extrapolate\" === extensionMode) {\r\n            paletteObj._extensionStrategy = getExtrapolateColorsStrategy(colors, parameters)\r\n        } else {\r\n            paletteObj._extensionStrategy = getColorMixer(colors, parameters)\r\n        }\r\n    }\r\n    paletteObj.reset();\r\n    return paletteObj\r\n}\r\n\r\nfunction getAlteredPalette(originalPalette, step) {\r\n    var palette = [];\r\n    var i;\r\n    var ii = originalPalette.length;\r\n    for (i = 0; i < ii; ++i) {\r\n        palette.push(getNewColor(originalPalette[i], step))\r\n    }\r\n    return palette\r\n}\r\n\r\nfunction getNewColor(currentColor, step) {\r\n    var newColor = new _color.default(currentColor).alter(step);\r\n    var lightness = getLightness(newColor);\r\n    if (lightness > 200 || lightness < 55) {\r\n        newColor = new _color.default(currentColor).alter(-step / 2)\r\n    }\r\n    return newColor.toHex()\r\n}\r\n\r\nfunction getLightness(color) {\r\n    return .3 * color.r + .59 * color.g + .11 * color.b\r\n}\r\n\r\nfunction getDiscretePalette(source, size, themeDefaultPalette) {\r\n    var palette = size > 0 ? createDiscreteColors(getPalette(source, {\r\n        type: \"gradientSet\",\r\n        themeDefault: themeDefaultPalette\r\n    }), size) : [];\r\n    return {\r\n        getColor: function(index) {\r\n            return palette[index] || null\r\n        }\r\n    }\r\n}\r\n\r\nfunction createDiscreteColors(source, count) {\r\n    var colorCount = count - 1;\r\n    var sourceCount = source.length - 1;\r\n    var colors = [];\r\n    var gradient = [];\r\n    var i;\r\n\r\n    function addColor(pos) {\r\n        var k = sourceCount * pos;\r\n        var kl = _floor(k);\r\n        var kr = _ceil(k);\r\n        gradient.push(colors[kl].blend(colors[kr], k - kl).toHex())\r\n    }\r\n    for (i = 0; i <= sourceCount; ++i) {\r\n        colors.push(new _color.default(source[i]))\r\n    }\r\n    if (colorCount > 0) {\r\n        for (i = 0; i <= colorCount; ++i) {\r\n            addColor(i / colorCount)\r\n        }\r\n    } else {\r\n        addColor(.5)\r\n    }\r\n    return gradient\r\n}\r\n\r\nfunction getGradientPalette(source, themeDefaultPalette) {\r\n    var palette = getPalette(source, {\r\n        type: \"gradientSet\",\r\n        themeDefault: themeDefaultPalette\r\n    });\r\n    var color1 = new _color.default(palette[0]);\r\n    var color2 = new _color.default(palette[1]);\r\n    return {\r\n        getColor: function(ratio) {\r\n            return 0 <= ratio && ratio <= 1 ? color1.blend(color2, ratio).toHex() : null\r\n        }\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.sorting.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"sorting\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/overlay/ui.overlay.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _empty_template = require(\"../../core/templates/empty_template\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _version = require(\"../../core/utils/version\");\r\nvar _view_port = require(\"../../core/utils/view_port\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _short = require(\"../../events/short\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _hide_callback = require(\"../../mobile/hide_callback\");\r\nvar _resizable = _interopRequireDefault(require(\"../resizable\"));\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar zIndexPool = _interopRequireWildcard(require(\"./z_index\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar ready = _ready_callbacks.default.add;\r\nvar window = (0, _window.getWindow)();\r\nvar navigator = (0, _window.getNavigator)();\r\nvar viewPortChanged = _view_port.changeCallback;\r\nvar OVERLAY_CLASS = \"dx-overlay\";\r\nvar OVERLAY_WRAPPER_CLASS = \"dx-overlay-wrapper\";\r\nvar OVERLAY_CONTENT_CLASS = \"dx-overlay-content\";\r\nvar OVERLAY_SHADER_CLASS = \"dx-overlay-shader\";\r\nvar OVERLAY_MODAL_CLASS = \"dx-overlay-modal\";\r\nvar INNER_OVERLAY_CLASS = \"dx-inner-overlay\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar RTL_DIRECTION_CLASS = \"dx-rtl\";\r\nvar ACTIONS = [\"onShowing\", \"onShown\", \"onHiding\", \"onHidden\", \"onPositioning\", \"onPositioned\", \"onResizeStart\", \"onResize\", \"onResizeEnd\"];\r\nvar OVERLAY_STACK = [];\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar PREVENT_SAFARI_SCROLLING_CLASS = \"dx-prevent-safari-scrolling\";\r\nvar TAB_KEY = \"tab\";\r\nvar POSITION_ALIASES = {\r\n    top: {\r\n        my: \"top center\",\r\n        at: \"top center\"\r\n    },\r\n    bottom: {\r\n        my: \"bottom center\",\r\n        at: \"bottom center\"\r\n    },\r\n    right: {\r\n        my: \"right center\",\r\n        at: \"right center\"\r\n    },\r\n    left: {\r\n        my: \"left center\",\r\n        at: \"left center\"\r\n    },\r\n    center: {\r\n        my: \"center\",\r\n        at: \"center\"\r\n    },\r\n    \"right bottom\": {\r\n        my: \"right bottom\",\r\n        at: \"right bottom\"\r\n    },\r\n    \"right top\": {\r\n        my: \"right top\",\r\n        at: \"right top\"\r\n    },\r\n    \"left bottom\": {\r\n        my: \"left bottom\",\r\n        at: \"left bottom\"\r\n    },\r\n    \"left top\": {\r\n        my: \"left top\",\r\n        at: \"left top\"\r\n    }\r\n};\r\nvar realDevice = _devices.default.real();\r\nvar realVersion = realDevice.version;\r\nvar firefoxDesktop = _browser.default.mozilla && \"desktop\" === realDevice.deviceType;\r\nvar iOS = \"ios\" === realDevice.platform;\r\nvar hasSafariAddressBar = _browser.default.safari && \"desktop\" !== realDevice.deviceType;\r\nvar android4_0nativeBrowser = \"android\" === realDevice.platform && 0 === (0, _version.compare)(realVersion, [4, 0], 2) && navigator.userAgent.indexOf(\"Chrome\") === -1;\r\nvar forceRepaint = function($element) {\r\n    if (firefoxDesktop) {\r\n        $element.width()\r\n    }\r\n    if (android4_0nativeBrowser) {\r\n        var $parents = $element.parents();\r\n        var inScrollView = $parents.is(\".dx-scrollable-native\");\r\n        if (!inScrollView) {\r\n            $parents.css(\"backfaceVisibility\", \"hidden\");\r\n            $parents.css(\"backfaceVisibility\");\r\n            $parents.css(\"backfaceVisibility\", \"visible\")\r\n        }\r\n    }\r\n};\r\nvar getElement = function(value) {\r\n    if ((0, _type.isEvent)(value)) {\r\n        value = value.target\r\n    }\r\n    return (0, _renderer.default)(value)\r\n};\r\nready(function() {\r\n    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), _pointer.default.down, function(e) {\r\n        for (var i = OVERLAY_STACK.length - 1; i >= 0; i--) {\r\n            if (!OVERLAY_STACK[i]._proxiedDocumentDownHandler(e)) {\r\n                return\r\n            }\r\n        }\r\n    })\r\n});\r\nvar Overlay = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        var offsetSize = 5;\r\n        var move = function(top, left, e) {\r\n            if (!this.option(\"dragEnabled\")) {\r\n                return\r\n            }\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            var allowedOffsets = this._allowedOffsets();\r\n            var offset = {\r\n                top: (0, _math.fitIntoRange)(top, -allowedOffsets.top, allowedOffsets.bottom),\r\n                left: (0, _math.fitIntoRange)(left, -allowedOffsets.left, allowedOffsets.right)\r\n            };\r\n            this._changePosition(offset)\r\n        };\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            escape: function() {\r\n                this.hide()\r\n            },\r\n            upArrow: move.bind(this, -offsetSize, 0),\r\n            downArrow: move.bind(this, offsetSize, 0),\r\n            leftArrow: move.bind(this, 0, -offsetSize),\r\n            rightArrow: move.bind(this, 0, offsetSize)\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        var _this = this;\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            activeStateEnabled: false,\r\n            visible: false,\r\n            deferRendering: true,\r\n            shading: true,\r\n            shadingColor: \"\",\r\n            position: {\r\n                my: \"center\",\r\n                at: \"center\"\r\n            },\r\n            width: function() {\r\n                return .8 * (0, _renderer.default)(window).width()\r\n            },\r\n            minWidth: null,\r\n            maxWidth: null,\r\n            height: function() {\r\n                return .8 * (0, _renderer.default)(window).height()\r\n            },\r\n            minHeight: null,\r\n            maxHeight: null,\r\n            animation: {\r\n                show: {\r\n                    type: \"pop\",\r\n                    duration: 300,\r\n                    from: {\r\n                        scale: .55\r\n                    }\r\n                },\r\n                hide: {\r\n                    type: \"pop\",\r\n                    duration: 300,\r\n                    to: {\r\n                        opacity: 0,\r\n                        scale: .55\r\n                    },\r\n                    from: {\r\n                        opacity: 1,\r\n                        scale: 1\r\n                    }\r\n                }\r\n            },\r\n            closeOnOutsideClick: false,\r\n            onShowing: null,\r\n            onShown: null,\r\n            onHiding: null,\r\n            onHidden: null,\r\n            contentTemplate: \"content\",\r\n            dragEnabled: false,\r\n            resizeEnabled: false,\r\n            onResizeStart: null,\r\n            onResize: null,\r\n            onResizeEnd: null,\r\n            innerOverlay: false,\r\n            target: void 0,\r\n            container: void 0,\r\n            hideTopOverlayHandler: function() {\r\n                _this.hide()\r\n            },\r\n            closeOnTargetScroll: false,\r\n            onPositioned: null,\r\n            boundaryOffset: {\r\n                h: 0,\r\n                v: 0\r\n            },\r\n            propagateOutsideClick: false,\r\n            ignoreChildEvents: true,\r\n            _checkParentVisibility: true,\r\n            _fixedPosition: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                var realDevice = _devices.default.real();\r\n                var realPlatform = realDevice.platform;\r\n                var realVersion = realDevice.version;\r\n                return \"android\" === realPlatform && (0, _version.compare)(realVersion, [4, 2]) < 0\r\n            },\r\n            options: {\r\n                animation: {\r\n                    show: {\r\n                        type: \"fade\",\r\n                        duration: 400\r\n                    },\r\n                    hide: {\r\n                        type: \"fade\",\r\n                        duration: 400,\r\n                        to: {\r\n                            opacity: 0\r\n                        },\r\n                        from: {\r\n                            opacity: 1\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return !(0, _window.hasWindow)()\r\n            },\r\n            options: {\r\n                width: null,\r\n                height: null,\r\n                animation: null,\r\n                _checkParentVisibility: false\r\n            }\r\n        }])\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            animation: true\r\n        })\r\n    },\r\n    _wrapper: function() {\r\n        return this._$wrapper\r\n    },\r\n    _container: function() {\r\n        return this._$content\r\n    },\r\n    _eventBindingTarget: function() {\r\n        return this._$content\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initActions();\r\n        this._initCloseOnOutsideClickHandler();\r\n        this._initTabTerminatorHandler();\r\n        this._$wrapper = (0, _renderer.default)(\"<div>\").addClass(OVERLAY_WRAPPER_CLASS);\r\n        this._$content = (0, _renderer.default)(\"<div>\").addClass(OVERLAY_CONTENT_CLASS);\r\n        this._initInnerOverlayClass();\r\n        var $element = this.$element();\r\n        this._$wrapper.addClass($element.attr(\"class\"));\r\n        $element.addClass(OVERLAY_CLASS);\r\n        this._$wrapper.attr(\"data-bind\", \"dxControlsDescendantBindings: true\");\r\n        _events_engine.default.on(this._$wrapper, \"MSPointerDown\", _common.noop);\r\n        _events_engine.default.on(this._$wrapper, \"focusin\", function(e) {\r\n            e.stopPropagation()\r\n        });\r\n        this._toggleViewPortSubscription(true);\r\n        this._initHideTopOverlayHandler(this.option(\"hideTopOverlayHandler\"))\r\n    },\r\n    _initOptions: function(options) {\r\n        this._initTarget(options.target);\r\n        var container = void 0 === options.container ? this.option(\"container\") : options.container;\r\n        this._initContainer(container);\r\n        this.callBase(options)\r\n    },\r\n    _initInnerOverlayClass: function() {\r\n        this._$content.toggleClass(INNER_OVERLAY_CLASS, this.option(\"innerOverlay\"))\r\n    },\r\n    _initTarget: function(target) {\r\n        if (!(0, _type.isDefined)(target)) {\r\n            return\r\n        }\r\n        var options = this.option();\r\n        (0, _iterator.each)([\"position.of\", \"animation.show.from.position.of\", \"animation.show.to.position.of\", \"animation.hide.from.position.of\", \"animation.hide.to.position.of\"], function(_, path) {\r\n            var pathParts = path.split(\".\");\r\n            var option = options;\r\n            while (option) {\r\n                if (1 === pathParts.length) {\r\n                    if ((0, _type.isPlainObject)(option)) {\r\n                        option[pathParts.shift()] = target\r\n                    }\r\n                    break\r\n                } else {\r\n                    option = option[pathParts.shift()]\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _initContainer: function(container) {\r\n        container = void 0 === container ? (0, _view_port.value)() : container;\r\n        var $element = this.$element();\r\n        var $container = $element.closest(container);\r\n        if (!$container.length) {\r\n            $container = (0, _renderer.default)(container).first()\r\n        }\r\n        this._$container = $container.length ? $container : $element.parent()\r\n    },\r\n    _initHideTopOverlayHandler: function(handler) {\r\n        this._hideTopOverlayHandler = handler\r\n    },\r\n    _initActions: function() {\r\n        var _this2 = this;\r\n        this._actions = {};\r\n        (0, _iterator.each)(ACTIONS, function(_, action) {\r\n            _this2._actions[action] = _this2._createActionByOption(action, {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            }) || _common.noop\r\n        })\r\n    },\r\n    _initCloseOnOutsideClickHandler: function() {\r\n        var that = this;\r\n        this._proxiedDocumentDownHandler = function() {\r\n            return that._documentDownHandler.apply(that, arguments)\r\n        }\r\n    },\r\n    _documentDownHandler: function(e) {\r\n        if (this._showAnimationProcessing) {\r\n            this._stopAnimation()\r\n        }\r\n        var closeOnOutsideClick = this.option(\"closeOnOutsideClick\");\r\n        if ((0, _type.isFunction)(closeOnOutsideClick)) {\r\n            closeOnOutsideClick = closeOnOutsideClick(e)\r\n        }\r\n        var $container = this._$content;\r\n        var isAttachedTarget = (0, _renderer.default)(window.document).is(e.target) || (0, _dom.contains)(window.document, e.target);\r\n        var isInnerOverlay = (0, _renderer.default)(e.target).closest(\".\" + INNER_OVERLAY_CLASS).length;\r\n        var outsideClick = isAttachedTarget && !isInnerOverlay && !($container.is(e.target) || (0, _dom.contains)($container.get(0), e.target));\r\n        if (outsideClick && closeOnOutsideClick) {\r\n            this._outsideClickHandler(e)\r\n        }\r\n        return this.option(\"propagateOutsideClick\")\r\n    },\r\n    _outsideClickHandler: function(e) {\r\n        if (this.option(\"shading\")) {\r\n            e.preventDefault()\r\n        }\r\n        this.hide()\r\n    },\r\n    _getAnonymousTemplateName: function() {\r\n        return ANONYMOUS_TEMPLATE_NAME\r\n    },\r\n    _initTemplates: function() {\r\n        this._templateManager.addDefaultTemplates({\r\n            content: new _empty_template.EmptyTemplate\r\n        });\r\n        this.callBase()\r\n    },\r\n    _isTopOverlay: function() {\r\n        var overlayStack = this._overlayStack();\r\n        for (var i = overlayStack.length - 1; i >= 0; i--) {\r\n            var tabbableElements = overlayStack[i]._findTabbableBounds();\r\n            if (tabbableElements.first || tabbableElements.last) {\r\n                return overlayStack[i] === this\r\n            }\r\n        }\r\n        return false\r\n    },\r\n    _overlayStack: function() {\r\n        return OVERLAY_STACK\r\n    },\r\n    _zIndexInitValue: function() {\r\n        return Overlay.baseZIndex()\r\n    },\r\n    _toggleViewPortSubscription: function(toggle) {\r\n        viewPortChanged.remove(this._viewPortChangeHandle);\r\n        if (toggle) {\r\n            this._viewPortChangeHandle = this._viewPortChangeHandler.bind(this);\r\n            viewPortChanged.add(this._viewPortChangeHandle)\r\n        }\r\n    },\r\n    _viewPortChangeHandler: function() {\r\n        this._initContainer(this.option(\"container\"));\r\n        this._refresh()\r\n    },\r\n    _renderVisibilityAnimate: function(visible) {\r\n        this._stopAnimation();\r\n        return visible ? this._show() : this._hide()\r\n    },\r\n    _normalizePosition: function() {\r\n        var position = this.option(\"position\");\r\n        this._position = \"function\" === typeof position ? position() : position\r\n    },\r\n    _getAnimationConfig: function() {\r\n        var animation = this.option(\"animation\");\r\n        if ((0, _type.isFunction)(animation)) {\r\n            animation = animation.call(this)\r\n        }\r\n        return animation\r\n    },\r\n    _show: function() {\r\n        var _this3 = this;\r\n        var that = this;\r\n        var deferred = new _deferred.Deferred;\r\n        this._parentHidden = this._isParentHidden();\r\n        deferred.done(function() {\r\n            delete that._parentHidden\r\n        });\r\n        if (this._parentHidden) {\r\n            this._isHidden = true;\r\n            return deferred.resolve()\r\n        }\r\n        if (this._currentVisible) {\r\n            return (new _deferred.Deferred).resolve().promise()\r\n        }\r\n        this._currentVisible = true;\r\n        this._isShown = false;\r\n        this._normalizePosition();\r\n        var animation = that._getAnimationConfig() || {};\r\n        var showAnimation = this._normalizeAnimation(animation.show, \"to\");\r\n        var startShowAnimation = showAnimation && showAnimation.start || _common.noop;\r\n        var completeShowAnimation = showAnimation && showAnimation.complete || _common.noop;\r\n        if (this._isHidingActionCanceled) {\r\n            delete this._isHidingActionCanceled;\r\n            deferred.resolve()\r\n        } else {\r\n            var show = function() {\r\n                _this3._renderVisibility(true);\r\n                if (_this3._isShowingActionCanceled) {\r\n                    delete _this3._isShowingActionCanceled;\r\n                    deferred.resolve();\r\n                    return\r\n                }\r\n                _this3._animate(showAnimation, function() {\r\n                    if (that.option(\"focusStateEnabled\")) {\r\n                        _events_engine.default.trigger(that._focusTarget(), \"focus\")\r\n                    }\r\n                    completeShowAnimation.apply(this, arguments);\r\n                    that._showAnimationProcessing = false;\r\n                    that._isShown = true;\r\n                    that._actions.onShown();\r\n                    that._toggleSafariScrolling(false);\r\n                    deferred.resolve()\r\n                }, function() {\r\n                    startShowAnimation.apply(this, arguments);\r\n                    that._showAnimationProcessing = true\r\n                })\r\n            };\r\n            if (this.option(\"templatesRenderAsynchronously\")) {\r\n                this._stopShowTimer();\r\n                this._asyncShowTimeout = setTimeout(show)\r\n            } else {\r\n                show()\r\n            }\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    _normalizeAnimation: function(animation, prop) {\r\n        if (animation) {\r\n            animation = (0, _extend.extend)({\r\n                type: \"slide\"\r\n            }, animation);\r\n            if (animation[prop] && \"object\" === _typeof(animation[prop])) {\r\n                (0, _extend.extend)(animation[prop], {\r\n                    position: this._position\r\n                })\r\n            }\r\n        }\r\n        return animation\r\n    },\r\n    _hide: function() {\r\n        if (!this._currentVisible) {\r\n            return (new _deferred.Deferred).resolve().promise()\r\n        }\r\n        this._currentVisible = false;\r\n        var that = this;\r\n        var deferred = new _deferred.Deferred;\r\n        var animation = that._getAnimationConfig() || {};\r\n        var hideAnimation = this._normalizeAnimation(animation.hide, \"from\");\r\n        var startHideAnimation = hideAnimation && hideAnimation.start || _common.noop;\r\n        var completeHideAnimation = hideAnimation && hideAnimation.complete || _common.noop;\r\n        var hidingArgs = {\r\n            cancel: false\r\n        };\r\n        if (this._isShowingActionCanceled) {\r\n            deferred.resolve()\r\n        } else {\r\n            this._actions.onHiding(hidingArgs);\r\n            that._toggleSafariScrolling(true);\r\n            if (hidingArgs.cancel) {\r\n                this._isHidingActionCanceled = true;\r\n                this.option(\"visible\", true);\r\n                deferred.resolve()\r\n            } else {\r\n                this._forceFocusLost();\r\n                this._toggleShading(false);\r\n                this._toggleSubscriptions(false);\r\n                this._stopShowTimer();\r\n                this._animate(hideAnimation, function() {\r\n                    var _that$_actions;\r\n                    that._$content.css(\"pointerEvents\", \"\");\r\n                    that._renderVisibility(false);\r\n                    completeHideAnimation.apply(this, arguments);\r\n                    null === (_that$_actions = that._actions) || void 0 === _that$_actions ? void 0 : _that$_actions.onHidden();\r\n                    deferred.resolve()\r\n                }, function() {\r\n                    that._$content.css(\"pointerEvents\", \"none\");\r\n                    startHideAnimation.apply(this, arguments)\r\n                })\r\n            }\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    _forceFocusLost: function() {\r\n        var activeElement = _dom_adapter.default.getActiveElement();\r\n        var shouldResetActiveElement = !!this._$content.find(activeElement).length;\r\n        if (shouldResetActiveElement) {\r\n            (0, _dom.resetActiveElement)()\r\n        }\r\n    },\r\n    _animate: function(animation, completeCallback, startCallback) {\r\n        if (animation) {\r\n            startCallback = startCallback || animation.start || _common.noop;\r\n            _fx.default.animate(this._$content, (0, _extend.extend)({}, animation, {\r\n                start: startCallback,\r\n                complete: completeCallback\r\n            }))\r\n        } else {\r\n            completeCallback()\r\n        }\r\n    },\r\n    _stopAnimation: function() {\r\n        _fx.default.stop(this._$content, true)\r\n    },\r\n    _renderVisibility: function(visible) {\r\n        if (visible && this._isParentHidden()) {\r\n            return\r\n        }\r\n        this._currentVisible = visible;\r\n        this._stopAnimation();\r\n        if (!visible) {\r\n            (0, _visibility_change.triggerHidingEvent)(this._$content)\r\n        }\r\n        this._toggleVisibility(visible);\r\n        this._$content.toggleClass(INVISIBLE_STATE_CLASS, !visible);\r\n        this._updateZIndexStackPosition(visible);\r\n        if (visible) {\r\n            this._renderContent();\r\n            var showingArgs = {\r\n                cancel: false\r\n            };\r\n            this._actions.onShowing(showingArgs);\r\n            if (showingArgs.cancel) {\r\n                this._toggleVisibility(false);\r\n                this._$content.toggleClass(INVISIBLE_STATE_CLASS, true);\r\n                this._updateZIndexStackPosition(false);\r\n                this._moveFromContainer();\r\n                this._isShowingActionCanceled = true;\r\n                this.option(\"visible\", false);\r\n                return\r\n            }\r\n            this._moveToContainer();\r\n            this._renderGeometry();\r\n            (0, _visibility_change.triggerShownEvent)(this._$content);\r\n            (0, _visibility_change.triggerResizeEvent)(this._$content)\r\n        } else {\r\n            this._moveFromContainer()\r\n        }\r\n        this._toggleShading(visible);\r\n        this._toggleSubscriptions(visible)\r\n    },\r\n    _updateZIndexStackPosition: function(pushToStack) {\r\n        var overlayStack = this._overlayStack();\r\n        var index = (0, _array.inArray)(this, overlayStack);\r\n        if (pushToStack) {\r\n            if (index === -1) {\r\n                this._zIndex = zIndexPool.create(this._zIndexInitValue());\r\n                overlayStack.push(this)\r\n            }\r\n            this._$wrapper.css(\"zIndex\", this._zIndex);\r\n            this._$content.css(\"zIndex\", this._zIndex)\r\n        } else {\r\n            if (index !== -1) {\r\n                overlayStack.splice(index, 1);\r\n                zIndexPool.remove(this._zIndex)\r\n            }\r\n        }\r\n    },\r\n    _toggleShading: function(visible) {\r\n        this._$wrapper.toggleClass(OVERLAY_MODAL_CLASS, this.option(\"shading\") && !this.option(\"container\"));\r\n        this._$wrapper.toggleClass(OVERLAY_SHADER_CLASS, visible && this.option(\"shading\"));\r\n        this._$wrapper.css(\"backgroundColor\", this.option(\"shading\") ? this.option(\"shadingColor\") : \"\");\r\n        this._toggleTabTerminator(visible && this.option(\"shading\"))\r\n    },\r\n    _initTabTerminatorHandler: function() {\r\n        var that = this;\r\n        this._proxiedTabTerminatorHandler = function() {\r\n            that._tabKeyHandler.apply(that, arguments)\r\n        }\r\n    },\r\n    _toggleTabTerminator: function(enabled) {\r\n        var eventName = (0, _index.addNamespace)(\"keydown\", this.NAME);\r\n        if (enabled) {\r\n            _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler)\r\n        } else {\r\n            _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler)\r\n        }\r\n    },\r\n    _findTabbableBounds: function() {\r\n        var $elements = this._$wrapper.find(\"*\");\r\n        var elementsCount = $elements.length - 1;\r\n        var result = {\r\n            first: null,\r\n            last: null\r\n        };\r\n        for (var i = 0; i <= elementsCount; i++) {\r\n            if (!result.first && $elements.eq(i).is(_selectors.tabbable)) {\r\n                result.first = $elements.eq(i)\r\n            }\r\n            if (!result.last && $elements.eq(elementsCount - i).is(_selectors.tabbable)) {\r\n                result.last = $elements.eq(elementsCount - i)\r\n            }\r\n            if (result.first && result.last) {\r\n                break\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _tabKeyHandler: function(e) {\r\n        if ((0, _index.normalizeKeyName)(e) !== TAB_KEY || !this._isTopOverlay()) {\r\n            return\r\n        }\r\n        var tabbableElements = this._findTabbableBounds();\r\n        var $firstTabbable = tabbableElements.first;\r\n        var $lastTabbable = tabbableElements.last;\r\n        var isTabOnLast = !e.shiftKey && e.target === $lastTabbable.get(0);\r\n        var isShiftTabOnFirst = e.shiftKey && e.target === $firstTabbable.get(0);\r\n        var isEmptyTabList = 0 === tabbableElements.length;\r\n        var isOutsideTarget = !(0, _dom.contains)(this._$wrapper.get(0), e.target);\r\n        if (isTabOnLast || isShiftTabOnFirst || isEmptyTabList || isOutsideTarget) {\r\n            e.preventDefault();\r\n            var $focusElement = e.shiftKey ? $lastTabbable : $firstTabbable;\r\n            _events_engine.default.trigger($focusElement, \"focusin\");\r\n            _events_engine.default.trigger($focusElement, \"focus\")\r\n        }\r\n    },\r\n    _toggleSubscriptions: function(enabled) {\r\n        if ((0, _window.hasWindow)()) {\r\n            this._toggleHideTopOverlayCallback(enabled);\r\n            this._toggleParentsScrollSubscription(enabled)\r\n        }\r\n    },\r\n    _toggleHideTopOverlayCallback: function(subscribe) {\r\n        if (!this._hideTopOverlayHandler) {\r\n            return\r\n        }\r\n        if (subscribe) {\r\n            _hide_callback.hideCallback.add(this._hideTopOverlayHandler)\r\n        } else {\r\n            _hide_callback.hideCallback.remove(this._hideTopOverlayHandler)\r\n        }\r\n    },\r\n    _toggleParentsScrollSubscription: function(subscribe) {\r\n        var _this4 = this;\r\n        if (!this._position) {\r\n            return\r\n        }\r\n        var target = this._position.of || (0, _renderer.default)();\r\n        var closeOnScroll = this.option(\"closeOnTargetScroll\");\r\n        var $parents = getElement(target).parents();\r\n        var scrollEvent = (0, _index.addNamespace)(\"scroll\", this.NAME);\r\n        if (\"desktop\" === _devices.default.real().deviceType) {\r\n            $parents = $parents.add(window)\r\n        }\r\n        this._proxiedTargetParentsScrollHandler = this._proxiedTargetParentsScrollHandler || function(e) {\r\n            _this4._targetParentsScrollHandler(e)\r\n        };\r\n        _events_engine.default.off((0, _renderer.default)().add(this._$prevTargetParents), scrollEvent, this._proxiedTargetParentsScrollHandler);\r\n        if (subscribe && closeOnScroll) {\r\n            _events_engine.default.on($parents, scrollEvent, this._proxiedTargetParentsScrollHandler);\r\n            this._$prevTargetParents = $parents\r\n        }\r\n    },\r\n    _targetParentsScrollHandler: function(e) {\r\n        var closeHandled = false;\r\n        var closeOnScroll = this.option(\"closeOnTargetScroll\");\r\n        if ((0, _type.isFunction)(closeOnScroll)) {\r\n            closeHandled = closeOnScroll(e)\r\n        }\r\n        if (!closeHandled && !this._showAnimationProcessing) {\r\n            this.hide()\r\n        }\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._appendContentToElement();\r\n        this._renderVisibilityAnimate(this.option(\"visible\"))\r\n    },\r\n    _appendContentToElement: function() {\r\n        if (!this._$content.parent().is(this.$element())) {\r\n            this._$content.appendTo(this.$element())\r\n        }\r\n    },\r\n    _renderContent: function() {\r\n        var shouldDeferRendering = !this._currentVisible && this.option(\"deferRendering\");\r\n        var isParentHidden = this.option(\"visible\") && this._isParentHidden();\r\n        if (isParentHidden) {\r\n            this._isHidden = true;\r\n            return\r\n        }\r\n        if (this._contentAlreadyRendered || shouldDeferRendering) {\r\n            return\r\n        }\r\n        this._contentAlreadyRendered = true;\r\n        this._appendContentToElement();\r\n        this.callBase()\r\n    },\r\n    _isParentHidden: function() {\r\n        if (!this.option(\"_checkParentVisibility\")) {\r\n            return false\r\n        }\r\n        if (void 0 !== this._parentHidden) {\r\n            return this._parentHidden\r\n        }\r\n        var $parent = this.$element().parent();\r\n        if ($parent.is(\":visible\")) {\r\n            return false\r\n        }\r\n        var isHidden = false;\r\n        $parent.add($parent.parents()).each(function() {\r\n            var $element = (0, _renderer.default)(this);\r\n            if (\"none\" === $element.css(\"display\")) {\r\n                isHidden = true;\r\n                return false\r\n            }\r\n        });\r\n        return isHidden || !_dom_adapter.default.getBody().contains($parent.get(0))\r\n    },\r\n    _renderContentImpl: function() {\r\n        var _this5 = this;\r\n        var whenContentRendered = new _deferred.Deferred;\r\n        var contentTemplateOption = this.option(\"contentTemplate\");\r\n        var contentTemplate = this._getTemplate(contentTemplateOption);\r\n        var transclude = this._templateManager.anonymousTemplateName === contentTemplateOption;\r\n        contentTemplate && contentTemplate.render({\r\n            container: (0, _element.getPublicElement)(this.$content()),\r\n            noModel: true,\r\n            transclude: transclude,\r\n            onRendered: function() {\r\n                whenContentRendered.resolve()\r\n            }\r\n        });\r\n        this._renderDrag();\r\n        this._renderResize();\r\n        this._renderScrollTerminator();\r\n        whenContentRendered.done(function() {\r\n            if (_this5.option(\"visible\")) {\r\n                _this5._moveToContainer()\r\n            }\r\n        });\r\n        return whenContentRendered.promise()\r\n    },\r\n    _renderDrag: function() {\r\n        var $dragTarget = this._getDragTarget();\r\n        if (!$dragTarget) {\r\n            return\r\n        }\r\n        var startEventName = (0, _index.addNamespace)(_drag.start, this.NAME);\r\n        var updateEventName = (0, _index.addNamespace)(_drag.move, this.NAME);\r\n        _events_engine.default.off($dragTarget, startEventName);\r\n        _events_engine.default.off($dragTarget, updateEventName);\r\n        if (!this.option(\"dragEnabled\")) {\r\n            return\r\n        }\r\n        _events_engine.default.on($dragTarget, startEventName, this._dragStartHandler.bind(this));\r\n        _events_engine.default.on($dragTarget, updateEventName, this._dragUpdateHandler.bind(this))\r\n    },\r\n    _renderResize: function() {\r\n        this._resizable = this._createComponent(this._$content, _resizable.default, {\r\n            handles: this.option(\"resizeEnabled\") ? \"all\" : \"none\",\r\n            onResizeEnd: this._resizeEndHandler.bind(this),\r\n            onResize: this._actions.onResize.bind(this),\r\n            onResizeStart: this._actions.onResizeStart.bind(this),\r\n            minHeight: 100,\r\n            minWidth: 100,\r\n            area: this._getDragResizeContainer()\r\n        })\r\n    },\r\n    _resizeEndHandler: function() {\r\n        this._positionChangeHandled = true;\r\n        var width = this._resizable.option(\"width\");\r\n        var height = this._resizable.option(\"height\");\r\n        width && this.option(\"width\", width);\r\n        height && this.option(\"height\", height);\r\n        this._actions.onResizeEnd()\r\n    },\r\n    _renderScrollTerminator: function() {\r\n        var $scrollTerminator = this._wrapper();\r\n        var terminatorEventName = (0, _index.addNamespace)(_drag.move, this.NAME);\r\n        _events_engine.default.off($scrollTerminator, terminatorEventName);\r\n        _events_engine.default.on($scrollTerminator, terminatorEventName, {\r\n            validate: function() {\r\n                return true\r\n            },\r\n            getDirection: function() {\r\n                return \"both\"\r\n            },\r\n            _toggleGestureCover: function(toggle) {\r\n                if (!toggle) {\r\n                    this._toggleGestureCoverImpl(toggle)\r\n                }\r\n            },\r\n            _clearSelection: _common.noop,\r\n            isNative: true\r\n        }, function(e) {\r\n            var originalEvent = e.originalEvent.originalEvent;\r\n            e._cancelPreventDefault = true;\r\n            if (originalEvent && \"mousemove\" !== originalEvent.type && false !== e.cancelable) {\r\n                e.preventDefault()\r\n            }\r\n        })\r\n    },\r\n    _getDragTarget: function() {\r\n        return this.$content()\r\n    },\r\n    _dragStartHandler: function(e) {\r\n        e.targetElements = [];\r\n        this._prevOffset = {\r\n            x: 0,\r\n            y: 0\r\n        };\r\n        var allowedOffsets = this._allowedOffsets();\r\n        e.maxTopOffset = allowedOffsets.top;\r\n        e.maxBottomOffset = allowedOffsets.bottom;\r\n        e.maxLeftOffset = allowedOffsets.left;\r\n        e.maxRightOffset = allowedOffsets.right\r\n    },\r\n    _getDragResizeContainer: function() {\r\n        var isContainerDefined = (0, _view_port.originalViewPort)().get(0) || this.option(\"container\");\r\n        var $container = !isContainerDefined ? (0, _renderer.default)(window) : this._$container;\r\n        return $container\r\n    },\r\n    _deltaSize: function() {\r\n        var $content = this._$content;\r\n        var $container = this._getDragResizeContainer();\r\n        var contentWidth = $content.outerWidth();\r\n        var contentHeight = $content.outerHeight();\r\n        var containerWidth = $container.outerWidth();\r\n        var containerHeight = $container.outerHeight();\r\n        if (this._isWindow($container)) {\r\n            var document = _dom_adapter.default.getDocument();\r\n            var fullPageHeight = Math.max((0, _renderer.default)(document).outerHeight(), containerHeight);\r\n            var fullPageWidth = Math.max((0, _renderer.default)(document).outerWidth(), containerWidth);\r\n            containerHeight = fullPageHeight;\r\n            containerWidth = fullPageWidth\r\n        }\r\n        return {\r\n            width: containerWidth - contentWidth,\r\n            height: containerHeight - contentHeight\r\n        }\r\n    },\r\n    _dragUpdateHandler: function(e) {\r\n        var offset = e.offset;\r\n        var prevOffset = this._prevOffset;\r\n        var targetOffset = {\r\n            top: offset.y - prevOffset.y,\r\n            left: offset.x - prevOffset.x\r\n        };\r\n        this._changePosition(targetOffset);\r\n        this._prevOffset = offset\r\n    },\r\n    _changePosition: function(offset) {\r\n        var position = (0, _translator.locate)(this._$content);\r\n        (0, _translator.move)(this._$content, {\r\n            left: position.left + offset.left,\r\n            top: position.top + offset.top\r\n        });\r\n        this._positionChangeHandled = true\r\n    },\r\n    _allowedOffsets: function() {\r\n        var position = (0, _translator.locate)(this._$content);\r\n        var deltaSize = this._deltaSize();\r\n        var isAllowedDrag = deltaSize.height >= 0 && deltaSize.width >= 0;\r\n        var shaderOffset = this.option(\"shading\") && !this.option(\"container\") && !this._isWindow(this._getContainer()) ? (0, _translator.locate)(this._$wrapper) : {\r\n            top: 0,\r\n            left: 0\r\n        };\r\n        var boundaryOffset = this.option(\"boundaryOffset\");\r\n        return {\r\n            top: isAllowedDrag ? position.top + shaderOffset.top + boundaryOffset.v : 0,\r\n            bottom: isAllowedDrag ? -position.top - shaderOffset.top + deltaSize.height - boundaryOffset.v : 0,\r\n            left: isAllowedDrag ? position.left + shaderOffset.left + boundaryOffset.h : 0,\r\n            right: isAllowedDrag ? -position.left - shaderOffset.left + deltaSize.width - boundaryOffset.h : 0\r\n        }\r\n    },\r\n    _moveFromContainer: function() {\r\n        this._$content.appendTo(this.$element());\r\n        this._detachWrapperToContainer()\r\n    },\r\n    _detachWrapperToContainer: function() {\r\n        this._$wrapper.detach()\r\n    },\r\n    _moveToContainer: function() {\r\n        this._attachWrapperToContainer();\r\n        this._$content.appendTo(this._$wrapper)\r\n    },\r\n    _attachWrapperToContainer: function() {\r\n        var $element = this.$element();\r\n        var containerDefined = void 0 !== this.option(\"container\");\r\n        var renderContainer = containerDefined ? this._$container : _swatch_container.default.getSwatchContainer($element);\r\n        if (renderContainer && renderContainer[0] === $element.parent()[0]) {\r\n            renderContainer = $element\r\n        }\r\n        this._$wrapper.appendTo(renderContainer)\r\n    },\r\n    _fixHeightAfterSafariAddressBarResizing: function() {\r\n        if (this._isWindow(this._getContainer()) && hasSafariAddressBar) {\r\n            this._$wrapper.css(\"minHeight\", window.innerHeight)\r\n        }\r\n    },\r\n    _renderGeometry: function(isDimensionChanged) {\r\n        if (this.option(\"visible\") && (0, _window.hasWindow)()) {\r\n            this._renderGeometryImpl(isDimensionChanged)\r\n        }\r\n    },\r\n    _renderGeometryImpl: function(isDimensionChanged) {\r\n        this._stopAnimation();\r\n        this._normalizePosition();\r\n        this._renderWrapper();\r\n        this._fixHeightAfterSafariAddressBarResizing();\r\n        this._renderDimensions();\r\n        var resultPosition = this._renderPosition();\r\n        this._actions.onPositioned({\r\n            position: resultPosition\r\n        })\r\n    },\r\n    _fixWrapperPosition: function() {\r\n        this._$wrapper.css(\"position\", this._useFixedPosition() ? \"fixed\" : \"absolute\")\r\n    },\r\n    _useFixedPosition: function() {\r\n        return this._shouldFixBodyPosition() || this.option(\"_fixedPosition\")\r\n    },\r\n    _shouldFixBodyPosition: function() {\r\n        var $container = this._getContainer();\r\n        return this._isWindow($container) && (!iOS || void 0 !== this._bodyScrollTop)\r\n    },\r\n    _toggleSafariScrolling: function(scrollingEnabled) {\r\n        if (iOS && this._shouldFixBodyPosition()) {\r\n            var body = _dom_adapter.default.getBody();\r\n            if (scrollingEnabled) {\r\n                (0, _renderer.default)(body).removeClass(PREVENT_SAFARI_SCROLLING_CLASS);\r\n                window.scrollTo(0, this._bodyScrollTop);\r\n                this._bodyScrollTop = void 0\r\n            } else {\r\n                if (this.option(\"visible\")) {\r\n                    this._bodyScrollTop = window.pageYOffset;\r\n                    (0, _renderer.default)(body).addClass(PREVENT_SAFARI_SCROLLING_CLASS)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _renderWrapper: function() {\r\n        this._fixWrapperPosition();\r\n        this._renderWrapperDimensions();\r\n        this._renderWrapperPosition()\r\n    },\r\n    _renderWrapperDimensions: function() {\r\n        var wrapperWidth;\r\n        var wrapperHeight;\r\n        var $container = this._getContainer();\r\n        if (!$container) {\r\n            return\r\n        }\r\n        var isWindow = this._isWindow($container);\r\n        wrapperWidth = isWindow ? \"\" : $container.outerWidth(), wrapperHeight = isWindow ? \"\" : $container.outerHeight();\r\n        this._$wrapper.css({\r\n            width: wrapperWidth,\r\n            height: wrapperHeight\r\n        })\r\n    },\r\n    _isWindow: function($element) {\r\n        return !!$element && (0, _type.isWindow)($element.get(0))\r\n    },\r\n    _renderWrapperPosition: function() {\r\n        var $container = this._getContainer();\r\n        if ($container) {\r\n            _position.default.setup(this._$wrapper, {\r\n                my: \"top left\",\r\n                at: \"top left\",\r\n                of: $container\r\n            })\r\n        }\r\n    },\r\n    _getContainer: function() {\r\n        var position = this._position;\r\n        var container = this.option(\"container\");\r\n        var positionOf = null;\r\n        if (!container && position) {\r\n            positionOf = (0, _type.isEvent)(position.of) ? window : position.of || window\r\n        }\r\n        return getElement(container || positionOf)\r\n    },\r\n    _renderDimensions: function() {\r\n        var content = this._$content.get(0);\r\n        this._$content.css({\r\n            minWidth: this._getOptionValue(\"minWidth\", content),\r\n            maxWidth: this._getOptionValue(\"maxWidth\", content),\r\n            minHeight: this._getOptionValue(\"minHeight\", content),\r\n            maxHeight: this._getOptionValue(\"maxHeight\", content),\r\n            width: this._getOptionValue(\"width\", content),\r\n            height: this._getOptionValue(\"height\", content)\r\n        })\r\n    },\r\n    _renderPosition: function() {\r\n        if (this._positionChangeHandled) {\r\n            var allowedOffsets = this._allowedOffsets();\r\n            this._changePosition({\r\n                top: (0, _math.fitIntoRange)(0, -allowedOffsets.top, allowedOffsets.bottom),\r\n                left: (0, _math.fitIntoRange)(0, -allowedOffsets.left, allowedOffsets.right)\r\n            })\r\n        } else {\r\n            this._renderOverlayBoundaryOffset();\r\n            (0, _translator.resetPosition)(this._$content);\r\n            var position = this._transformStringPosition(this._position, POSITION_ALIASES);\r\n            var resultPosition = _position.default.setup(this._$content, position);\r\n            forceRepaint(this._$content);\r\n            this._actions.onPositioning();\r\n            return resultPosition\r\n        }\r\n    },\r\n    _transformStringPosition: function(position, positionAliases) {\r\n        if ((0, _type.isString)(position)) {\r\n            position = (0, _extend.extend)({}, positionAliases[position])\r\n        }\r\n        return position\r\n    },\r\n    _renderOverlayBoundaryOffset: function() {\r\n        var boundaryOffset = this.option(\"boundaryOffset\");\r\n        this._$content.css(\"margin\", boundaryOffset.v + \"px \" + boundaryOffset.h + \"px\")\r\n    },\r\n    _focusTarget: function() {\r\n        return this._$content\r\n    },\r\n    _attachKeyboardEvents: function() {\r\n        var _this6 = this;\r\n        this._keyboardListenerId = _short.keyboard.on(this._$content, null, function(opts) {\r\n            return _this6._keyboardHandler(opts)\r\n        })\r\n    },\r\n    _keyboardHandler: function(options) {\r\n        var e = options.originalEvent;\r\n        var $target = (0, _renderer.default)(e.target);\r\n        if ($target.is(this._$content) || !this.option(\"ignoreChildEvents\")) {\r\n            this.callBase.apply(this, arguments)\r\n        }\r\n    },\r\n    _isVisible: function() {\r\n        return this.option(\"visible\")\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            if (this.option(\"visible\")) {\r\n                this._renderVisibilityAnimate(visible)\r\n            }\r\n        } else {\r\n            this._renderVisibilityAnimate(visible)\r\n        }\r\n    },\r\n    _dimensionChanged: function() {\r\n        this._renderGeometry(true)\r\n    },\r\n    _clean: function() {\r\n        if (!this._contentAlreadyRendered) {\r\n            this.$content().empty()\r\n        }\r\n        this._renderVisibility(false);\r\n        this._stopShowTimer();\r\n        this._cleanFocusState()\r\n    },\r\n    _stopShowTimer: function() {\r\n        if (this._asyncShowTimeout) {\r\n            clearTimeout(this._asyncShowTimeout)\r\n        }\r\n        this._asyncShowTimeout = null\r\n    },\r\n    _dispose: function() {\r\n        _fx.default.stop(this._$content, false);\r\n        clearTimeout(this._deferShowTimer);\r\n        this._toggleViewPortSubscription(false);\r\n        this._toggleSubscriptions(false);\r\n        this._updateZIndexStackPosition(false);\r\n        this._toggleTabTerminator(false);\r\n        this._toggleSafariScrolling(true);\r\n        this._actions = null;\r\n        this.callBase();\r\n        zIndexPool.remove(this._zIndex);\r\n        this._$wrapper.remove();\r\n        this._$content.remove()\r\n    },\r\n    _toggleDisabledState: function(value) {\r\n        this.callBase.apply(this, arguments);\r\n        this._$content.toggleClass(DISABLED_STATE_CLASS, Boolean(value))\r\n    },\r\n    _toggleRTLDirection: function(rtl) {\r\n        this._$content.toggleClass(RTL_DIRECTION_CLASS, rtl)\r\n    },\r\n    _optionChanged: function(args) {\r\n        var _this7 = this;\r\n        var value = args.value;\r\n        if ((0, _array.inArray)(args.name, ACTIONS) > -1) {\r\n            this._initActions();\r\n            return\r\n        }\r\n        switch (args.name) {\r\n            case \"dragEnabled\":\r\n                this._renderDrag();\r\n                this._renderGeometry();\r\n                break;\r\n            case \"resizeEnabled\":\r\n                this._renderResize();\r\n                this._renderGeometry();\r\n                break;\r\n            case \"shading\":\r\n            case \"shadingColor\":\r\n                this._toggleShading(this.option(\"visible\"));\r\n                break;\r\n            case \"width\":\r\n            case \"height\":\r\n            case \"minWidth\":\r\n            case \"maxWidth\":\r\n            case \"minHeight\":\r\n            case \"maxHeight\":\r\n            case \"boundaryOffset\":\r\n                this._renderGeometry();\r\n                break;\r\n            case \"position\":\r\n                this._positionChangeHandled = false;\r\n                this._renderGeometry();\r\n                break;\r\n            case \"visible\":\r\n                this._renderVisibilityAnimate(value).done(function() {\r\n                    if (!_this7._animateDeferred) {\r\n                        return\r\n                    }\r\n                    _this7._animateDeferred.resolveWith(_this7)\r\n                });\r\n                break;\r\n            case \"target\":\r\n                this._initTarget(value);\r\n                this._invalidate();\r\n                break;\r\n            case \"container\":\r\n                this._initContainer(value);\r\n                this._invalidate();\r\n                break;\r\n            case \"innerOverlay\":\r\n                this._initInnerOverlayClass();\r\n                break;\r\n            case \"deferRendering\":\r\n            case \"contentTemplate\":\r\n                this._contentAlreadyRendered = false;\r\n                this._clean();\r\n                this._invalidate();\r\n                break;\r\n            case \"hideTopOverlayHandler\":\r\n                this._toggleHideTopOverlayCallback(false);\r\n                this._initHideTopOverlayHandler(args.value);\r\n                this._toggleHideTopOverlayCallback(this.option(\"visible\"));\r\n                break;\r\n            case \"closeOnTargetScroll\":\r\n                this._toggleParentsScrollSubscription(this.option(\"visible\"));\r\n                break;\r\n            case \"closeOnOutsideClick\":\r\n            case \"animation\":\r\n            case \"propagateOutsideClick\":\r\n                break;\r\n            case \"rtlEnabled\":\r\n                this._contentAlreadyRendered = false;\r\n                this.callBase(args);\r\n                break;\r\n            case \"_fixedPosition\":\r\n                this._fixWrapperPosition();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    toggle: function(showing) {\r\n        var _this8 = this;\r\n        showing = void 0 === showing ? !this.option(\"visible\") : showing;\r\n        var result = new _deferred.Deferred;\r\n        if (showing === this.option(\"visible\")) {\r\n            return result.resolveWith(this, [showing]).promise()\r\n        }\r\n        var animateDeferred = new _deferred.Deferred;\r\n        this._animateDeferred = animateDeferred;\r\n        this.option(\"visible\", showing);\r\n        animateDeferred.promise().done(function() {\r\n            delete _this8._animateDeferred;\r\n            result.resolveWith(_this8, [_this8.option(\"visible\")])\r\n        });\r\n        return result.promise()\r\n    },\r\n    $content: function() {\r\n        return this._$content\r\n    },\r\n    show: function() {\r\n        return this.toggle(true)\r\n    },\r\n    hide: function() {\r\n        return this.toggle(false)\r\n    },\r\n    content: function() {\r\n        return (0, _element.getPublicElement)(this._$content)\r\n    },\r\n    repaint: function() {\r\n        if (this._contentAlreadyRendered) {\r\n            this._renderGeometry();\r\n            (0, _visibility_change.triggerResizeEvent)(this._$content)\r\n        } else {\r\n            this.callBase()\r\n        }\r\n    }\r\n});\r\nOverlay.baseZIndex = function(zIndex) {\r\n    return zIndexPool.base(zIndex)\r\n};\r\n(0, _component_registrator.default)(\"dxOverlay\", Overlay);\r\nvar _default = Overlay;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (excel_exporter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"exportDataGrid\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _export_data_grid.exportDataGrid\r\n    }\r\n});\r\nObject.defineProperty(exports, \"exportPivotGrid\", {\r\n    enumerable: true,\r\n    get: function() {\r\n        return _export_pivot_grid.exportPivotGrid\r\n    }\r\n});\r\nvar _export_data_grid = require(\"./exporter/exceljs/export_data_grid\");\r\nvar _export_pivot_grid = require(\"./exporter/exceljs/export_pivot_grid\");\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_row.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_row\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"filterRow\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollable.device.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.deviceDependentOptions = void 0;\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _support = require(\"../../core/utils/support\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar deviceDependentOptions = function() {\r\n    return [{\r\n        device: function() {\r\n            return !_support.nativeScrolling\r\n        },\r\n        options: {\r\n            useNative: false\r\n        }\r\n    }, {\r\n        device: function(_device) {\r\n            return !_devices.default.isSimulator() && \"desktop\" === _devices.default.real().deviceType && \"generic\" === _device.platform\r\n        },\r\n        options: {\r\n            bounceEnabled: false,\r\n            scrollByThumb: true,\r\n            scrollByContent: _support.touch,\r\n            showScrollbar: \"onHover\"\r\n        }\r\n    }]\r\n};\r\nexports.deviceDependentOptions = deviceDependentOptions;\r\n","/**\r\n * DevExtreme (core/utils/comparator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.equals = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\nvar _data = require(\"./data\");\r\nvar _type = require(\"./type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar hasNegation = function(oldValue, newValue) {\r\n    return 1 / oldValue === 1 / newValue\r\n};\r\nvar equals = function(oldValue, newValue) {\r\n    oldValue = (0, _data.toComparable)(oldValue, true);\r\n    newValue = (0, _data.toComparable)(newValue, true);\r\n    if (oldValue && newValue && (0, _type.isRenderer)(oldValue) && (0, _type.isRenderer)(newValue)) {\r\n        return newValue.is(oldValue)\r\n    }\r\n    var oldValueIsNaN = oldValue !== oldValue;\r\n    var newValueIsNaN = newValue !== newValue;\r\n    if (oldValueIsNaN && newValueIsNaN) {\r\n        return true\r\n    }\r\n    if (0 === oldValue && 0 === newValue) {\r\n        return hasNegation(oldValue, newValue)\r\n    }\r\n    if (null === oldValue || \"object\" !== _typeof(oldValue) || _dom_adapter.default.isElementNode(oldValue)) {\r\n        return oldValue === newValue\r\n    }\r\n    return false\r\n};\r\nexports.equals = equals;\r\n","/**\r\n * DevExtreme (viz/chart_components/scroll_bar.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ScrollBar = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _translator2d = require(\"../translators/translator2d\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _drag = require(\"../../events/drag\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar MIN_SCROLL_BAR_SIZE = 2;\r\nvar ScrollBar = function(renderer, group) {\r\n    this._translator = new _translator2d.Translator2D({}, {}, {});\r\n    this._scroll = renderer.rect().append(group);\r\n    this._addEvents()\r\n};\r\nexports.ScrollBar = ScrollBar;\r\n\r\nfunction _getXCoord(canvas, pos, offset, width) {\r\n    var x = 0;\r\n    if (\"right\" === pos) {\r\n        x = canvas.width - canvas.right + offset\r\n    } else {\r\n        if (\"left\" === pos) {\r\n            x = canvas.left - offset - width\r\n        }\r\n    }\r\n    return x\r\n}\r\n\r\nfunction _getYCoord(canvas, pos, offset, width) {\r\n    var y = 0;\r\n    if (\"top\" === pos) {\r\n        y = canvas.top - offset\r\n    } else {\r\n        if (\"bottom\" === pos) {\r\n            y = canvas.height - canvas.bottom + width + offset\r\n        }\r\n    }\r\n    return y\r\n}\r\nScrollBar.prototype = {\r\n    _addEvents: function() {\r\n        var _this = this;\r\n        var scrollElement = this._scroll.element;\r\n        _events_engine.default.on(scrollElement, _drag.start, function(e) {\r\n            (0, _index.fireEvent)({\r\n                type: \"dxc-scroll-start\",\r\n                originalEvent: e,\r\n                target: scrollElement\r\n            })\r\n        });\r\n        _events_engine.default.on(scrollElement, _drag.move, function(e) {\r\n            var dX = -e.offset.x * _this._scale;\r\n            var dY = -e.offset.y * _this._scale;\r\n            var lx = _this._offset - (_this._layoutOptions.vertical ? dY : dX) / _this._scale;\r\n            _this._applyPosition(lx, lx + _this._translator.canvasLength / _this._scale);\r\n            (0, _index.fireEvent)({\r\n                type: \"dxc-scroll-move\",\r\n                originalEvent: e,\r\n                target: scrollElement,\r\n                offset: {\r\n                    x: dX,\r\n                    y: dY\r\n                }\r\n            })\r\n        });\r\n        _events_engine.default.on(scrollElement, _drag.end, function(e) {\r\n            (0, _index.fireEvent)({\r\n                type: \"dxc-scroll-end\",\r\n                originalEvent: e,\r\n                target: scrollElement,\r\n                offset: {\r\n                    x: -e.offset.x * _this._scale,\r\n                    y: -e.offset.y * _this._scale\r\n                }\r\n            })\r\n        })\r\n    },\r\n    update: function(options) {\r\n        var that = this;\r\n        var position = options.position;\r\n        var isVertical = options.rotated;\r\n        var defaultPosition = isVertical ? \"right\" : \"top\";\r\n        var secondaryPosition = isVertical ? \"left\" : \"bottom\";\r\n        if (position !== defaultPosition && position !== secondaryPosition) {\r\n            position = defaultPosition\r\n        }\r\n        that._scroll.attr({\r\n            rotate: !options.rotated ? -90 : 0,\r\n            rotateX: 0,\r\n            rotateY: 0,\r\n            fill: options.color,\r\n            width: options.width,\r\n            opacity: options.opacity\r\n        });\r\n        that._layoutOptions = {\r\n            width: options.width,\r\n            offset: options.offset,\r\n            vertical: isVertical,\r\n            position: position\r\n        };\r\n        return that\r\n    },\r\n    init: function(range, stick) {\r\n        var that = this;\r\n        var isDiscrete = \"discrete\" === range.axisType;\r\n        that._translateWithOffset = isDiscrete && !stick && 1 || 0;\r\n        that._translator.update((0, _extend.extend)({}, range, {\r\n            minVisible: null,\r\n            maxVisible: null,\r\n            visibleCategories: null\r\n        }, isDiscrete && {\r\n            min: null,\r\n            max: null\r\n        } || {}), that._canvas, {\r\n            isHorizontal: !that._layoutOptions.vertical,\r\n            stick: stick\r\n        });\r\n        return that\r\n    },\r\n    getOptions: function() {\r\n        return this._layoutOptions\r\n    },\r\n    setPane: function(panes) {\r\n        var position = this._layoutOptions.position;\r\n        var pane;\r\n        if (\"left\" === position || \"top\" === position) {\r\n            pane = panes[0]\r\n        } else {\r\n            pane = panes[panes.length - 1]\r\n        }\r\n        this.pane = pane.name;\r\n        return this\r\n    },\r\n    updateSize: function(canvas) {\r\n        this._canvas = (0, _extend.extend)({}, canvas);\r\n        var options = this._layoutOptions;\r\n        var pos = options.position;\r\n        var offset = options.offset;\r\n        var width = options.width;\r\n        this._scroll.attr({\r\n            translateX: _getXCoord(canvas, pos, offset, width),\r\n            translateY: _getYCoord(canvas, pos, offset, width)\r\n        })\r\n    },\r\n    getMultipleAxesSpacing: function() {\r\n        return 0\r\n    },\r\n    estimateMargins: function() {\r\n        return this.getMargins()\r\n    },\r\n    getMargins: function() {\r\n        var options = this._layoutOptions;\r\n        var margins = {\r\n            left: 0,\r\n            top: 0,\r\n            right: 0,\r\n            bottom: 0\r\n        };\r\n        margins[options.position] = options.width + options.offset;\r\n        return margins\r\n    },\r\n    shift: function shift(margins) {\r\n        var _that$_scroll$attr, _that$_scroll$attr2;\r\n        var that = this;\r\n        var options = that._layoutOptions;\r\n        var side = options.position;\r\n        var isVertical = options.vertical;\r\n        var attr = {\r\n            translateX: null !== (_that$_scroll$attr = that._scroll.attr(\"translateX\")) && void 0 !== _that$_scroll$attr ? _that$_scroll$attr : 0,\r\n            translateY: null !== (_that$_scroll$attr2 = that._scroll.attr(\"translateY\")) && void 0 !== _that$_scroll$attr2 ? _that$_scroll$attr2 : 0\r\n        };\r\n        var shift = margins[side];\r\n        attr[isVertical ? \"translateX\" : \"translateY\"] += (\"left\" === side || \"top\" === side ? -1 : 1) * shift;\r\n        that._scroll.attr(attr)\r\n    },\r\n    hideTitle: _common.noop,\r\n    hideOuterElements: _common.noop,\r\n    setPosition: function(min, max) {\r\n        var that = this;\r\n        var translator = that._translator;\r\n        var minPoint = (0, _type.isDefined)(min) ? translator.translate(min, -that._translateWithOffset) : translator.translate(\"canvas_position_start\");\r\n        var maxPoint = (0, _type.isDefined)(max) ? translator.translate(max, that._translateWithOffset) : translator.translate(\"canvas_position_end\");\r\n        that._offset = _min(minPoint, maxPoint);\r\n        that._scale = translator.getScale(min, max);\r\n        that._applyPosition(_min(minPoint, maxPoint), _max(minPoint, maxPoint))\r\n    },\r\n    customPositionIsAvailable: function() {\r\n        return false\r\n    },\r\n    dispose: function() {\r\n        this._scroll.dispose();\r\n        this._scroll = this._translator = null\r\n    },\r\n    _applyPosition: function(x1, x2) {\r\n        var that = this;\r\n        var visibleArea = that._translator.getCanvasVisibleArea();\r\n        x1 = _max(x1, visibleArea.min);\r\n        x1 = _min(x1, visibleArea.max);\r\n        x2 = _min(x2, visibleArea.max);\r\n        x2 = _max(x2, visibleArea.min);\r\n        var height = Math.abs(x2 - x1);\r\n        that._scroll.attr({\r\n            y: x1,\r\n            height: height < MIN_SCROLL_BAR_SIZE ? MIN_SCROLL_BAR_SIZE : height\r\n        })\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.field_chooser_base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _uiGrid_core = require(\"../grid_core/ui.grid_core.header_filter_core\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_state_mixin\"));\r\nvar _uiGrid_core3 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting_mixin\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.sortable\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar IE_FIELD_WIDTH_CORRECTION = 1;\r\nvar DIV = \"<div>\";\r\nvar HeaderFilterView = _uiGrid_core.HeaderFilterView.inherit({\r\n    _getSearchExpr: function(options) {\r\n        options.useDefaultSearchExpr = true;\r\n        return this.callBase(options)\r\n    }\r\n});\r\nvar processItems = function(groupItems, field) {\r\n    var filterValues = [];\r\n    var isTree = !!field.groupName;\r\n    var isExcludeFilterType = \"exclude\" === field.filterType;\r\n    if (field.filterValues) {\r\n        (0, _iterator.each)(field.filterValues, function(_, filterValue) {\r\n            filterValues.push(Array.isArray(filterValue) ? filterValue.join(\"/\") : filterValue && filterValue.valueOf())\r\n        })\r\n    }(0, _uiPivot_grid.foreachTree)(groupItems, function(items) {\r\n        var item = items[0];\r\n        var path = (0, _uiPivot_grid.createPath)(items);\r\n        var preparedFilterValueByText = isTree ? (0, _iterator.map)(items, function(item) {\r\n            return item.text\r\n        }).reverse().join(\"/\") : item.text;\r\n        item.value = isTree ? path.slice(0) : item.key || item.value;\r\n        var preparedFilterValue = isTree ? path.join(\"/\") : item.value && item.value.valueOf();\r\n        if (item.children) {\r\n            item.items = item.children;\r\n            item.children = null\r\n        }(0, _uiGrid_core.updateHeaderFilterItemSelectionState)(item, item.key && (0, _array.inArray)(preparedFilterValueByText, filterValues) > -1 || (0, _array.inArray)(preparedFilterValue, filterValues) > -1, isExcludeFilterType)\r\n    })\r\n};\r\n\r\nfunction getMainGroupField(dataSource, sourceField) {\r\n    var field = sourceField;\r\n    if ((0, _type.isDefined)(sourceField.groupIndex)) {\r\n        field = dataSource.getAreaFields(sourceField.area, true)[sourceField.areaIndex]\r\n    }\r\n    return field\r\n}\r\n\r\nfunction getStringState(state) {\r\n    state = state || {};\r\n    return JSON.stringify([state.fields, state.columnExpandedPaths, state.rowExpandedPaths])\r\n}\r\nvar FieldChooserBase = _ui.default.inherit(_uiGrid_core2.default).inherit(_uiGrid_core3.default).inherit(_uiGrid_core.headerFilterMixin).inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            allowFieldDragging: true,\r\n            applyChangesMode: \"instantly\",\r\n            state: null,\r\n            headerFilter: {\r\n                width: 252,\r\n                height: 325,\r\n                searchTimeout: 500,\r\n                texts: {\r\n                    emptyValue: _message.default.format(\"dxDataGrid-headerFilterEmptyValue\"),\r\n                    ok: _message.default.format(\"dxDataGrid-headerFilterOK\"),\r\n                    cancel: _message.default.format(\"dxDataGrid-headerFilterCancel\")\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._headerFilterView = new HeaderFilterView(this);\r\n        this._refreshDataSource();\r\n        this.subscribeToEvents()\r\n    },\r\n    _refreshDataSource: function() {\r\n        var dataSource = this.option(\"dataSource\");\r\n        if (dataSource && dataSource.fields && dataSource.load) {\r\n            this._dataSource = dataSource\r\n        }\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"dataSource\":\r\n                this._refreshDataSource();\r\n                break;\r\n            case \"applyChangesMode\":\r\n                break;\r\n            case \"state\":\r\n                if (!this._dataSource) {\r\n                    break\r\n                }\r\n                if (\"instantly\" === this.option(\"applyChangesMode\") && getStringState(this._dataSource.state()) !== getStringState(args.value)) {\r\n                    this._dataSource.state(args.value)\r\n                } else {\r\n                    this._clean(true);\r\n                    this._renderComponent()\r\n                }\r\n                break;\r\n            case \"headerFilter\":\r\n            case \"allowFieldDragging\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    renderField: function(field, showColumnLines) {\r\n        var that = this;\r\n        var $fieldContent = (0, _renderer.default)(DIV).addClass(\"dx-area-field-content\").text(field.caption || field.dataField);\r\n        var $fieldElement = (0, _renderer.default)(DIV).addClass(\"dx-area-field\").addClass(\"dx-area-box\").data(\"field\", field).append($fieldContent);\r\n        var mainGroupField = getMainGroupField(that._dataSource, field);\r\n        if (\"data\" !== field.area) {\r\n            if (field.allowSorting) {\r\n                that._applyColumnState({\r\n                    name: \"sort\",\r\n                    rootElement: $fieldElement,\r\n                    column: {\r\n                        alignment: that.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n                        sortOrder: \"desc\" === field.sortOrder ? \"desc\" : \"asc\"\r\n                    },\r\n                    showColumnLines: showColumnLines\r\n                })\r\n            }\r\n            that._applyColumnState({\r\n                name: \"headerFilter\",\r\n                rootElement: $fieldElement,\r\n                column: {\r\n                    alignment: that.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n                    filterValues: mainGroupField.filterValues,\r\n                    allowFiltering: mainGroupField.allowFiltering && !field.groupIndex\r\n                },\r\n                showColumnLines: showColumnLines\r\n            })\r\n        }\r\n        if (field.groupName) {\r\n            $fieldElement.attr(\"item-group\", field.groupName)\r\n        }\r\n        return $fieldElement\r\n    },\r\n    _clean: function() {},\r\n    _render: function() {\r\n        this.callBase();\r\n        this._headerFilterView.render(this.$element())\r\n    },\r\n    renderSortable: function() {\r\n        var that = this;\r\n        that._createComponent(that.$element(), _ui2.default, (0, _extend.extend)({\r\n            allowDragging: that.option(\"allowFieldDragging\"),\r\n            itemSelector: \".dx-area-field\",\r\n            itemContainerSelector: \".dx-area-field-container\",\r\n            groupSelector: \".dx-area-fields\",\r\n            groupFilter: function() {\r\n                var dataSource = that._dataSource;\r\n                var $sortable = (0, _renderer.default)(this).closest(\".dx-sortable-old\");\r\n                var pivotGrid = $sortable.data(\"dxPivotGrid\");\r\n                var pivotGridFieldChooser = $sortable.data(\"dxPivotGridFieldChooser\");\r\n                if (pivotGrid) {\r\n                    return pivotGrid.getDataSource() === dataSource\r\n                }\r\n                if (pivotGridFieldChooser) {\r\n                    return pivotGridFieldChooser.option(\"dataSource\") === dataSource\r\n                }\r\n                return false\r\n            },\r\n            itemRender: function($sourceItem, target) {\r\n                var $item;\r\n                if ($sourceItem.hasClass(\"dx-area-box\")) {\r\n                    $item = $sourceItem.clone();\r\n                    if (\"drag\" === target) {\r\n                        (0, _iterator.each)($sourceItem, function(index, sourceItem) {\r\n                            $item.eq(index).css(\"width\", parseInt((0, _renderer.default)(sourceItem).outerWidth(), 10) + IE_FIELD_WIDTH_CORRECTION)\r\n                        })\r\n                    }\r\n                } else {\r\n                    $item = (0, _renderer.default)(DIV).addClass(\"dx-area-field\").addClass(\"dx-area-box\").text($sourceItem.text())\r\n                }\r\n                if (\"drag\" === target) {\r\n                    var wrapperContainer = (0, _renderer.default)(DIV);\r\n                    (0, _iterator.each)($item, function(_, item) {\r\n                        var wrapper = (0, _renderer.default)(\"<div>\").addClass(\"dx-pivotgrid-fields-container\").addClass(\"dx-widget\").append((0, _renderer.default)(item));\r\n                        wrapperContainer.append(wrapper)\r\n                    });\r\n                    return wrapperContainer.children()\r\n                }\r\n                return $item\r\n            },\r\n            onDragging: function(e) {\r\n                var field = e.sourceElement.data(\"field\");\r\n                var targetGroup = e.targetGroup;\r\n                e.cancel = false;\r\n                if (true === field.isMeasure) {\r\n                    if (\"column\" === targetGroup || \"row\" === targetGroup || \"filter\" === targetGroup) {\r\n                        e.cancel = true\r\n                    }\r\n                } else {\r\n                    if (false === field.isMeasure && \"data\" === targetGroup) {\r\n                        e.cancel = true\r\n                    }\r\n                }\r\n            },\r\n            useIndicator: true,\r\n            onChanged: function(e) {\r\n                var dataSource = that._dataSource;\r\n                var field = e.sourceElement.data(\"field\");\r\n                e.removeSourceElement = !!e.sourceGroup;\r\n                that._adjustSortableOnChangedArgs(e);\r\n                if (field) {\r\n                    that._applyChanges([getMainGroupField(dataSource, field)], {\r\n                        area: e.targetGroup,\r\n                        areaIndex: e.targetIndex\r\n                    })\r\n                }\r\n            }\r\n        }, that._getSortableOptions()))\r\n    },\r\n    _processDemandState: function(func) {\r\n        var that = this;\r\n        var isInstantlyMode = \"instantly\" === that.option(\"applyChangesMode\");\r\n        var dataSource = that._dataSource;\r\n        if (isInstantlyMode) {\r\n            func(dataSource, isInstantlyMode)\r\n        } else {\r\n            var currentState = dataSource.state();\r\n            var pivotGridState = that.option(\"state\");\r\n            if (pivotGridState) {\r\n                dataSource.state(pivotGridState, true)\r\n            }\r\n            func(dataSource, isInstantlyMode);\r\n            dataSource.state(currentState, true)\r\n        }\r\n    },\r\n    _applyChanges: function(fields, props) {\r\n        var that = this;\r\n        that._processDemandState(function(dataSource, isInstantlyMode) {\r\n            fields.forEach(function(_ref) {\r\n                var index = _ref.index;\r\n                dataSource.field(index, props)\r\n            });\r\n            if (isInstantlyMode) {\r\n                dataSource.load()\r\n            } else {\r\n                that._changedHandler()\r\n            }\r\n        })\r\n    },\r\n    _adjustSortableOnChangedArgs: function(e) {\r\n        e.removeSourceElement = false;\r\n        e.removeTargetElement = true;\r\n        e.removeSourceClass = false\r\n    },\r\n    _getSortableOptions: function() {\r\n        return {\r\n            direction: \"auto\"\r\n        }\r\n    },\r\n    subscribeToEvents: function(element) {\r\n        var that = this;\r\n        var func = function(e) {\r\n            var field = (0, _renderer.default)(e.currentTarget).data(\"field\");\r\n            var mainGroupField = (0, _extend.extend)(true, {}, getMainGroupField(that._dataSource, field));\r\n            var isHeaderFilter = (0, _renderer.default)(e.target).hasClass(\"dx-header-filter\");\r\n            var dataSource = that._dataSource;\r\n            var type = mainGroupField.groupName ? \"tree\" : \"list\";\r\n            var paginate = dataSource.paginate() && \"list\" === type;\r\n            if (isHeaderFilter) {\r\n                that._headerFilterView.showHeaderFilterMenu((0, _renderer.default)(e.currentTarget), (0, _extend.extend)(mainGroupField, {\r\n                    type: type,\r\n                    encodeHtml: that.option(\"encodeHtml\"),\r\n                    dataSource: {\r\n                        useDefaultSearch: !paginate,\r\n                        load: function(options) {\r\n                            var userData = options.userData;\r\n                            if (userData.store) {\r\n                                return userData.store.load(options)\r\n                            } else {\r\n                                var d = new _deferred.Deferred;\r\n                                dataSource.getFieldValues(mainGroupField.index, that.option(\"headerFilter.showRelevantValues\"), paginate ? options : void 0).done(function(data) {\r\n                                    var emptyValue = that.option(\"headerFilter.texts.emptyValue\");\r\n                                    data.forEach(function(element) {\r\n                                        if (!element.text) {\r\n                                            element.text = emptyValue\r\n                                        }\r\n                                    });\r\n                                    if (paginate) {\r\n                                        d.resolve(data)\r\n                                    } else {\r\n                                        userData.store = new _array_store.default(data);\r\n                                        userData.store.load(options).done(d.resolve).fail(d.reject)\r\n                                    }\r\n                                }).fail(d.reject);\r\n                                return d\r\n                            }\r\n                        },\r\n                        postProcess: function(data) {\r\n                            processItems(data, mainGroupField);\r\n                            return data\r\n                        }\r\n                    },\r\n                    apply: function() {\r\n                        that._applyChanges([mainGroupField], {\r\n                            filterValues: this.filterValues,\r\n                            filterType: this.filterType\r\n                        })\r\n                    }\r\n                }))\r\n            } else {\r\n                if (field.allowSorting && \"data\" !== field.area) {\r\n                    that._applyChanges([field], {\r\n                        sortOrder: \"desc\" === field.sortOrder ? \"asc\" : \"desc\"\r\n                    })\r\n                }\r\n            }\r\n        };\r\n        if (element) {\r\n            _events_engine.default.on(element, _click.name, \".dx-area-field.dx-area-box\", func);\r\n            return\r\n        }\r\n        _events_engine.default.on(that.$element(), _click.name, \".dx-area-field.dx-area-box\", func)\r\n    },\r\n    _initTemplates: _common.noop,\r\n    addWidgetPrefix: function(className) {\r\n        return \"dx-pivotgrid-\" + className\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxPivotGridFieldChooserBase\", FieldChooserBase);\r\nvar _default = FieldChooserBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/core/wheel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.name = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _event_registrator = _interopRequireDefault(require(\"./event_registrator\"));\r\nvar _index = require(\"../utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar EVENT_NAME = \"dxmousewheel\";\r\nexports.name = EVENT_NAME;\r\nvar EVENT_NAMESPACE = \"dxWheel\";\r\nvar NATIVE_EVENT_NAME = \"wheel\";\r\nvar PIXEL_MODE = 0;\r\nvar DELTA_MUTLIPLIER = 30;\r\nvar wheel = {\r\n    setup: function(element) {\r\n        var $element = (0, _renderer.default)(element);\r\n        _events_engine.default.on($element, (0, _index.addNamespace)(NATIVE_EVENT_NAME, EVENT_NAMESPACE), wheel._wheelHandler.bind(wheel))\r\n    },\r\n    teardown: function(element) {\r\n        _events_engine.default.off(element, \".\".concat(EVENT_NAMESPACE))\r\n    },\r\n    _wheelHandler: function(e) {\r\n        var _e$originalEvent = e.originalEvent,\r\n            deltaMode = _e$originalEvent.deltaMode,\r\n            deltaY = _e$originalEvent.deltaY,\r\n            deltaX = _e$originalEvent.deltaX,\r\n            deltaZ = _e$originalEvent.deltaZ;\r\n        (0, _index.fireEvent)({\r\n            type: EVENT_NAME,\r\n            originalEvent: e,\r\n            delta: this._normalizeDelta(deltaY, deltaMode),\r\n            deltaX: deltaX,\r\n            deltaY: deltaY,\r\n            deltaZ: deltaZ,\r\n            deltaMode: deltaMode,\r\n            pointerType: \"mouse\"\r\n        });\r\n        e.stopPropagation()\r\n    },\r\n    _normalizeDelta: function(delta) {\r\n        var deltaMode = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : PIXEL_MODE;\r\n        if (deltaMode === PIXEL_MODE) {\r\n            return -delta\r\n        } else {\r\n            return -DELTA_MUTLIPLIER * delta\r\n        }\r\n    }\r\n};\r\n(0, _event_registrator.default)(EVENT_NAME, wheel);\r\n","/**\r\n * DevExtreme (viz/gauges/base_range_container.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base_indicators = require(\"./base_indicators\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _Number = Number;\r\nvar _abs = Math.abs;\r\nvar _isArray = Array.isArray;\r\nvar _isFinite = isFinite;\r\nvar BaseRangeContainer = _base_indicators.BaseElement.inherit({\r\n    _init: function() {\r\n        this._root = this._renderer.g().attr({\r\n            \"class\": \"dxg-range-container\"\r\n        }).linkOn(this._container, \"range-container\")\r\n    },\r\n    _dispose: function() {\r\n        this._root.linkOff()\r\n    },\r\n    clean: function() {\r\n        this._root.linkRemove().clear();\r\n        this._options = this.enabled = null;\r\n        return this\r\n    },\r\n    _getRanges: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var translator = that._translator;\r\n        var totalStart = translator.getDomain()[0];\r\n        var totalEnd = translator.getDomain()[1];\r\n        var totalDelta = totalEnd - totalStart;\r\n        var isNotEmptySegment = totalDelta >= 0 ? isNotEmptySegmentAsc : isNotEmptySegmentDesc;\r\n        var subtractSegment = totalDelta >= 0 ? subtractSegmentAsc : subtractSegmentDesc;\r\n        var list = [];\r\n        var ranges = [];\r\n        var backgroundRanges = [{\r\n            start: totalStart,\r\n            end: totalEnd\r\n        }];\r\n        var threshold = _abs(totalDelta) / 1e4;\r\n        var backgroundColor = (0, _type.isString)(options.backgroundColor) ? options.backgroundColor : \"none\";\r\n        var width = options.width || {};\r\n        var startWidth = _Number(width > 0 ? width : width.start);\r\n        var endWidth = _Number(width > 0 ? width : width.end);\r\n        var deltaWidth = endWidth - startWidth;\r\n        if (void 0 !== options.ranges && !_isArray(options.ranges)) {\r\n            return null\r\n        }\r\n        if (!(startWidth >= 0 && endWidth >= 0 && startWidth + endWidth > 0)) {\r\n            return null\r\n        }\r\n        list = (_isArray(options.ranges) ? options.ranges : []).reduce(function(result, rangeOptions, i) {\r\n            rangeOptions = rangeOptions || {};\r\n            var start = translator.adjust(rangeOptions.startValue);\r\n            var end = translator.adjust(rangeOptions.endValue);\r\n            if (_isFinite(start) && _isFinite(end) && isNotEmptySegment(start, end, threshold)) {\r\n                result.push({\r\n                    start: start,\r\n                    end: end,\r\n                    color: rangeOptions.color,\r\n                    classIndex: i\r\n                })\r\n            }\r\n            return result\r\n        }, []);\r\n        var palette = that._themeManager.createPalette(options.palette, {\r\n            type: \"indicatingSet\",\r\n            extensionMode: options.paletteExtensionMode,\r\n            keepLastColorInEnd: true,\r\n            count: list.length\r\n        });\r\n        (0, _iterator.each)(list, function(_, item) {\r\n            var paletteColor = palette.getNextColor();\r\n            item.color = (0, _type.isString)(item.color) && item.color || paletteColor || \"none\";\r\n            item.className = \"dxg-range dxg-range-\" + item.classIndex;\r\n            delete item.classIndex\r\n        });\r\n        (0, _iterator.each)(list, function(_, item) {\r\n            var i;\r\n            var ii;\r\n            var sub;\r\n            var subs;\r\n            var range;\r\n            var newRanges = [];\r\n            var newBackgroundRanges = [];\r\n            for (i = 0, ii = ranges.length; i < ii; ++i) {\r\n                range = ranges[i];\r\n                subs = subtractSegment(range.start, range.end, item.start, item.end);\r\n                (sub = subs[0]) && (sub.color = range.color) && (sub.className = range.className) && newRanges.push(sub);\r\n                (sub = subs[1]) && (sub.color = range.color) && (sub.className = range.className) && newRanges.push(sub)\r\n            }\r\n            newRanges.push(item);\r\n            ranges = newRanges;\r\n            for (i = 0, ii = backgroundRanges.length; i < ii; ++i) {\r\n                range = backgroundRanges[i];\r\n                subs = subtractSegment(range.start, range.end, item.start, item.end);\r\n                (sub = subs[0]) && newBackgroundRanges.push(sub);\r\n                (sub = subs[1]) && newBackgroundRanges.push(sub)\r\n            }\r\n            backgroundRanges = newBackgroundRanges\r\n        });\r\n        (0, _iterator.each)(backgroundRanges, function(_, range) {\r\n            range.color = backgroundColor;\r\n            range.className = \"dxg-range dxg-background-range\";\r\n            ranges.push(range)\r\n        });\r\n        (0, _iterator.each)(ranges, function(_, range) {\r\n            range.startWidth = (range.start - totalStart) / totalDelta * deltaWidth + startWidth;\r\n            range.endWidth = (range.end - totalStart) / totalDelta * deltaWidth + startWidth\r\n        });\r\n        return ranges\r\n    },\r\n    render: function(options) {\r\n        var that = this;\r\n        that._options = options;\r\n        that._processOptions();\r\n        that._ranges = that._getRanges();\r\n        if (that._ranges) {\r\n            that.enabled = true;\r\n            that._root.linkAppend()\r\n        }\r\n        return that\r\n    },\r\n    resize: function(layout) {\r\n        var that = this;\r\n        that._root.clear();\r\n        if (that._isVisible(layout)) {\r\n            (0, _iterator.each)(that._ranges, function(_, range) {\r\n                that._createRange(range, layout).attr({\r\n                    fill: range.color,\r\n                    \"class\": range.className\r\n                }).append(that._root)\r\n            })\r\n        }\r\n        return that\r\n    },\r\n    _processOptions: null,\r\n    _isVisible: null,\r\n    _createRange: null,\r\n    getColorForValue: function(value) {\r\n        var color = null;\r\n        (0, _iterator.each)(this._ranges, function(_, range) {\r\n            if (range.start <= value && value <= range.end || range.start >= value && value >= range.end) {\r\n                color = range.color;\r\n                return false\r\n            }\r\n        });\r\n        return color\r\n    }\r\n});\r\n\r\nfunction subtractSegmentAsc(segmentStart, segmentEnd, otherStart, otherEnd) {\r\n    var result;\r\n    if (otherStart > segmentStart && otherEnd < segmentEnd) {\r\n        result = [{\r\n            start: segmentStart,\r\n            end: otherStart\r\n        }, {\r\n            start: otherEnd,\r\n            end: segmentEnd\r\n        }]\r\n    } else {\r\n        if (otherStart >= segmentEnd || otherEnd <= segmentStart) {\r\n            result = [{\r\n                start: segmentStart,\r\n                end: segmentEnd\r\n            }]\r\n        } else {\r\n            if (otherStart <= segmentStart && otherEnd >= segmentEnd) {\r\n                result = []\r\n            } else {\r\n                if (otherStart > segmentStart) {\r\n                    result = [{\r\n                        start: segmentStart,\r\n                        end: otherStart\r\n                    }]\r\n                } else {\r\n                    if (otherEnd < segmentEnd) {\r\n                        result = [{\r\n                            start: otherEnd,\r\n                            end: segmentEnd\r\n                        }]\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction subtractSegmentDesc(segmentStart, segmentEnd, otherStart, otherEnd) {\r\n    var result;\r\n    if (otherStart < segmentStart && otherEnd > segmentEnd) {\r\n        result = [{\r\n            start: segmentStart,\r\n            end: otherStart\r\n        }, {\r\n            start: otherEnd,\r\n            end: segmentEnd\r\n        }]\r\n    } else {\r\n        if (otherStart <= segmentEnd || otherEnd >= segmentStart) {\r\n            result = [{\r\n                start: segmentStart,\r\n                end: segmentEnd\r\n            }]\r\n        } else {\r\n            if (otherStart >= segmentStart && otherEnd <= segmentEnd) {\r\n                result = []\r\n            } else {\r\n                if (otherStart < segmentStart) {\r\n                    result = [{\r\n                        start: segmentStart,\r\n                        end: otherStart\r\n                    }]\r\n                } else {\r\n                    if (otherEnd > segmentEnd) {\r\n                        result = [{\r\n                            start: otherEnd,\r\n                            end: segmentEnd\r\n                        }]\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return result\r\n}\r\n\r\nfunction isNotEmptySegmentAsc(start, end, threshold) {\r\n    return end - start >= threshold\r\n}\r\n\r\nfunction isNotEmptySegmentDesc(start, end, threshold) {\r\n    return start - end >= threshold\r\n}\r\nvar _default = BaseRangeContainer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.keyboard_navigation.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar accessibility = _interopRequireWildcard(require(\"../shared/accessibility\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _short = require(\"../../events/short\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar EDIT_FORM_CLASS = \"edit-form\";\r\nvar GROUP_FOOTER_CLASS = \"group-footer\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar EDIT_FORM_ITEM_CLASS = \"edit-form-item\";\r\nvar MASTER_DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar FREESPACE_ROW_CLASS = \"dx-freespace-row\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-virtual-row\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar DROPDOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar COMMAND_EXPAND_CLASS = \"dx-command-expand\";\r\nvar COMMAND_SELECT_CLASS = \"dx-command-select\";\r\nvar COMMAND_EDIT_CLASS = \"dx-command-edit\";\r\nvar COMMAND_CELL_SELECTOR = \"[class^=dx-command]\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar DATEBOX_WIDGET_NAME = \"dxDateBox\";\r\nvar FOCUS_STATE_CLASS = \"dx-state-focused\";\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar REVERT_BUTTON_CLASS = \"dx-revert-button\";\r\nvar FAST_EDITING_DELETE_KEY = \"delete\";\r\nvar INTERACTIVE_ELEMENTS_SELECTOR = \"input:not([type='hidden']), textarea, a, select, button, [tabindex]\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar FOCUS_TYPE_ROW = \"row\";\r\nvar FOCUS_TYPE_CELL = \"cell\";\r\nvar COLUMN_HEADERS_VIEW = \"columnHeadersView\";\r\n\r\nfunction isGroupRow($row) {\r\n    return $row && $row.hasClass(GROUP_ROW_CLASS)\r\n}\r\n\r\nfunction isDetailRow($row) {\r\n    return $row && $row.hasClass(MASTER_DETAIL_ROW_CLASS)\r\n}\r\n\r\nfunction isDataRow($row) {\r\n    return $row && !isGroupRow($row) && !isDetailRow($row)\r\n}\r\n\r\nfunction isNotFocusedRow($row) {\r\n    return !$row || $row.hasClass(FREESPACE_ROW_CLASS) || $row.hasClass(VIRTUAL_ROW_CLASS)\r\n}\r\n\r\nfunction isCellElement($element) {\r\n    return $element.length && \"TD\" === $element[0].tagName\r\n}\r\n\r\nfunction isEditorCell(that, $cell) {\r\n    return !that._isRowEditMode() && $cell && !$cell.hasClass(COMMAND_SELECT_CLASS) && $cell.hasClass(EDITOR_CELL_CLASS)\r\n}\r\n\r\nfunction isElementDefined($element) {\r\n    return (0, _type.isDefined)($element) && $element.length > 0\r\n}\r\n\r\nfunction isMobile() {\r\n    return \"desktop\" !== _devices.default.current().deviceType\r\n}\r\n\r\nfunction isCellInHeaderRow($cell) {\r\n    return !!$cell.parent(\".\".concat(HEADER_ROW_CLASS)).length\r\n}\r\n\r\nfunction isFixedColumnIndexOffsetRequired(that, column) {\r\n    var rtlEnabled = that.option(\"rtlEnabled\");\r\n    var result = false;\r\n    if (rtlEnabled) {\r\n        result = !(\"right\" === column.fixedPosition || (0, _type.isDefined)(column.command) && !(0, _type.isDefined)(column.fixedPosition))\r\n    } else {\r\n        result = !(!(0, _type.isDefined)(column.fixedPosition) || \"left\" === column.fixedPosition)\r\n    }\r\n    return result\r\n}\r\nvar KeyboardNavigationController = _uiGrid_core.default.ViewController.inherit({\r\n    init: function() {\r\n        var _this = this;\r\n        this._dataController = this.getController(\"data\");\r\n        this._selectionController = this.getController(\"selection\");\r\n        this._editingController = this.getController(\"editing\");\r\n        this._headerPanel = this.getView(\"headerPanel\");\r\n        this._columnsController = this.getController(\"columns\");\r\n        this._editorFactory = this.getController(\"editorFactory\");\r\n        if (this.isKeyboardEnabled()) {\r\n            accessibility.subscribeVisibilityChange();\r\n            this._updateFocusTimeout = null;\r\n            this._fastEditingStarted = false;\r\n            this._focusedCellPosition = {};\r\n            this._canceledCellPosition = null;\r\n            var elementFocused = function($element) {\r\n                _this.setupFocusedView();\r\n                if (_this._isNeedScroll) {\r\n                    if ($element.is(\":visible\") && _this._focusedView && _this._focusedView.getScrollable) {\r\n                        _this._focusedView._scrollToElement($element);\r\n                        _this._isNeedScroll = false\r\n                    }\r\n                }\r\n            };\r\n            this._editorFactory.focused.add(elementFocused);\r\n            this._initViewHandlers();\r\n            this._initDocumentHandlers();\r\n            this.createAction(\"onKeyDown\")\r\n        }\r\n    },\r\n    _initViewHandlers: function() {\r\n        var _this2 = this;\r\n        var rowsView = this.getView(\"rowsView\");\r\n        rowsView.renderCompleted.add(function(e) {\r\n            var $rowsView = rowsView.element();\r\n            var isFullUpdate = !e || \"refresh\" === e.changeType;\r\n            var isFocusedViewCorrect = _this2._focusedView && _this2._focusedView.name === rowsView.name;\r\n            var needUpdateFocus = false;\r\n            var isAppend = e && (\"append\" === e.changeType || \"prepend\" === e.changeType);\r\n            var $focusedElement = (0, _renderer.default)(\":focus\");\r\n            var isFocusedElementCorrect = !$focusedElement.length || $focusedElement.closest($rowsView).length || _browser.default.msie && $focusedElement.is(\"body\");\r\n            _this2._initPointerEventHandler();\r\n            _this2._initKeyDownHandler();\r\n            _this2._setRowsViewAttributes();\r\n            if (isFocusedViewCorrect && isFocusedElementCorrect) {\r\n                needUpdateFocus = _this2._isNeedFocus ? !isAppend : _this2._isHiddenFocus && isFullUpdate;\r\n                needUpdateFocus && _this2._updateFocus(true)\r\n            }\r\n        })\r\n    },\r\n    _initDocumentHandlers: function() {\r\n        var _this3 = this;\r\n        var document = _dom_adapter.default.getDocument();\r\n        this._documentClickHandler = this.createAction(function(e) {\r\n            var $target = (0, _renderer.default)(e.event.target);\r\n            var isCurrentRowsViewClick = _this3._isEventInCurrentGrid(e.event) && $target.closest(\".\".concat(_this3.addWidgetPrefix(ROWS_VIEW_CLASS))).length;\r\n            var isEditorOverlay = $target.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length;\r\n            var columnsResizerController = _this3.getController(\"columnsResizer\");\r\n            var isColumnResizing = !!columnsResizerController && columnsResizerController.isResizing();\r\n            if (!isCurrentRowsViewClick && !isEditorOverlay && !isColumnResizing) {\r\n                _this3._resetFocusedView()\r\n            }\r\n        });\r\n        _events_engine.default.on(document, (0, _index.addNamespace)(_pointer.default.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler)\r\n    },\r\n    _setRowsViewAttributes: function() {\r\n        var $rowsView = this._getRowsViewElement();\r\n        var isGridEmpty = !this._dataController.getVisibleRows().length;\r\n        if (isGridEmpty) {\r\n            this._applyTabIndexToElement($rowsView)\r\n        }\r\n    },\r\n    _initPointerEventHandler: function() {\r\n        var pointerEventName = !isMobile() ? _pointer.default.down : _click.name;\r\n        var clickSelector = \".\".concat(ROW_CLASS, \" > td, .\").concat(ROW_CLASS);\r\n        var $rowsView = this._getRowsViewElement();\r\n        if (!(0, _type.isDefined)(this._pointerEventAction)) {\r\n            this._pointerEventAction = this.createAction(this._pointerEventHandler)\r\n        }\r\n        _events_engine.default.off($rowsView, (0, _index.addNamespace)(pointerEventName, \"dxDataGridKeyboardNavigation\"), this._pointerEventAction);\r\n        _events_engine.default.on($rowsView, (0, _index.addNamespace)(pointerEventName, \"dxDataGridKeyboardNavigation\"), clickSelector, this._pointerEventAction)\r\n    },\r\n    _initKeyDownHandler: function() {\r\n        var _this4 = this;\r\n        var $rowsView = this._getRowsViewElement();\r\n        _short.keyboard.off(this._keyDownListener);\r\n        this._keyDownListener = _short.keyboard.on($rowsView, null, function(e) {\r\n            return _this4._keyDownHandler(e)\r\n        })\r\n    },\r\n    dispose: function() {\r\n        this.callBase();\r\n        this._resetFocusedView();\r\n        _short.keyboard.off(this._keyDownListener);\r\n        _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler);\r\n        clearTimeout(this._updateFocusTimeout);\r\n        accessibility.unsubscribeVisibilityChange()\r\n    },\r\n    optionChanged: function(args) {\r\n        var that = this;\r\n        switch (args.name) {\r\n            case \"keyboardNavigation\":\r\n            case \"useLegacyKeyboardNavigation\":\r\n                args.handled = true;\r\n                break;\r\n            default:\r\n                that.callBase(args)\r\n        }\r\n    },\r\n    isRowFocusType: function() {\r\n        return this.focusType === FOCUS_TYPE_ROW\r\n    },\r\n    isCellFocusType: function() {\r\n        return this.focusType === FOCUS_TYPE_CELL\r\n    },\r\n    setRowFocusType: function() {\r\n        if (this.option(\"focusedRowEnabled\")) {\r\n            this.focusType = FOCUS_TYPE_ROW\r\n        }\r\n    },\r\n    setCellFocusType: function() {\r\n        this.focusType = FOCUS_TYPE_CELL\r\n    },\r\n    _keyDownHandler: function(e) {\r\n        var isEditing = this._editingController.isEditing();\r\n        var needStopPropagation = true;\r\n        var originalEvent = e.originalEvent;\r\n        var isHandled = this._processOnKeyDown(e);\r\n        if (originalEvent.isDefaultPrevented()) {\r\n            return\r\n        }\r\n        this._isNeedFocus = true;\r\n        this._isNeedScroll = true;\r\n        this._updateFocusedCellPositionByTarget(originalEvent.target);\r\n        if (!isHandled) {\r\n            switch (e.keyName) {\r\n                case \"leftArrow\":\r\n                case \"rightArrow\":\r\n                    this._leftRightKeysHandler(e, isEditing);\r\n                    break;\r\n                case \"upArrow\":\r\n                case \"downArrow\":\r\n                    if (e.ctrl) {\r\n                        accessibility.selectView(\"rowsView\", this, originalEvent)\r\n                    } else {\r\n                        this._upDownKeysHandler(e, isEditing)\r\n                    }\r\n                    break;\r\n                case \"pageUp\":\r\n                case \"pageDown\":\r\n                    this._pageUpDownKeyHandler(e);\r\n                    break;\r\n                case \"space\":\r\n                    this._spaceKeyHandler(e, isEditing);\r\n                    break;\r\n                case \"A\":\r\n                    if (e.ctrl) {\r\n                        this._ctrlAKeyHandler(e, isEditing)\r\n                    } else {\r\n                        this._beginFastEditing(e.originalEvent)\r\n                    }\r\n                    break;\r\n                case \"tab\":\r\n                    this._tabKeyHandler(e, isEditing);\r\n                    break;\r\n                case \"enter\":\r\n                    this._enterKeyHandler(e, isEditing);\r\n                    break;\r\n                case \"escape\":\r\n                    this._escapeKeyHandler(e, isEditing);\r\n                    break;\r\n                case \"F\":\r\n                    if (e.ctrl) {\r\n                        this._ctrlFKeyHandler(e)\r\n                    } else {\r\n                        this._beginFastEditing(e.originalEvent)\r\n                    }\r\n                    break;\r\n                case \"F2\":\r\n                    this._f2KeyHandler();\r\n                    break;\r\n                case \"del\":\r\n                case \"backspace\":\r\n                    if (this._isFastEditingAllowed() && !this._isFastEditingStarted()) {\r\n                        this._beginFastEditing(originalEvent, true)\r\n                    }\r\n                    break;\r\n                default:\r\n                    if (!this._beginFastEditing(originalEvent)) {\r\n                        this._isNeedFocus = false;\r\n                        this._isNeedScroll = false;\r\n                        needStopPropagation = false\r\n                    }\r\n            }\r\n            if (needStopPropagation) {\r\n                originalEvent.stopPropagation()\r\n            }\r\n        }\r\n    },\r\n    _processOnKeyDown: function(eventArgs) {\r\n        var originalEvent = eventArgs.originalEvent;\r\n        var args = {\r\n            handled: false,\r\n            event: originalEvent\r\n        };\r\n        this.executeAction(\"onKeyDown\", args);\r\n        eventArgs.ctrl = originalEvent.ctrlKey;\r\n        eventArgs.alt = originalEvent.altKey;\r\n        eventArgs.shift = originalEvent.shiftKey;\r\n        return !!args.handled\r\n    },\r\n    _closeEditCell: function() {\r\n        var _this5 = this;\r\n        setTimeout(function() {\r\n            _this5._editingController.closeEditCell()\r\n        })\r\n    },\r\n    _leftRightKeysHandler: function(eventArgs, isEditing) {\r\n        var rowIndex = this.getVisibleRowIndex();\r\n        var $event = eventArgs.originalEvent;\r\n        var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n        var directionCode = this._getDirectionCodeByKey(eventArgs.keyName);\r\n        var isEditingNavigationMode = this._isFastEditingStarted();\r\n        var allowNavigate = (!isEditing || isEditingNavigationMode) && isDataRow($row);\r\n        if (allowNavigate) {\r\n            this.setCellFocusType();\r\n            isEditingNavigationMode && this._closeEditCell();\r\n            if (this._isVirtualColumnRender()) {\r\n                this._processVirtualHorizontalPosition(directionCode)\r\n            }\r\n            var $cell = this._getNextCell(directionCode);\r\n            if (isElementDefined($cell)) {\r\n                this._arrowKeysHandlerFocusCell($event, $cell, directionCode)\r\n            }\r\n            $event && $event.preventDefault()\r\n        }\r\n    },\r\n    _upDownKeysHandler: function(eventArgs, isEditing) {\r\n        var rowIndex = this._focusedCellPosition.rowIndex;\r\n        var visibleRowIndex = this.getVisibleRowIndex();\r\n        var $row = this._focusedView && this._focusedView.getRow(visibleRowIndex);\r\n        var $event = eventArgs.originalEvent;\r\n        var isUpArrow = \"upArrow\" === eventArgs.keyName;\r\n        var dataSource = this._dataController.dataSource();\r\n        var isEditingNavigationMode = this._isFastEditingStarted();\r\n        var allowNavigate = (!isEditing || isEditingNavigationMode) && $row && !isDetailRow($row);\r\n        if (allowNavigate) {\r\n            isEditingNavigationMode && this._closeEditCell();\r\n            if (!this._navigateNextCell($event, eventArgs.keyName)) {\r\n                if (this._isVirtualRowRender() && isUpArrow && dataSource && !dataSource.isLoading()) {\r\n                    var rowHeight = $row.outerHeight();\r\n                    rowIndex = this._focusedCellPosition.rowIndex - 1;\r\n                    this._scrollBy(0, -rowHeight, rowIndex, $event)\r\n                }\r\n            }\r\n            $event && $event.preventDefault()\r\n        }\r\n    },\r\n    _pageUpDownKeyHandler: function(eventArgs) {\r\n        var pageIndex = this._dataController.pageIndex();\r\n        var pageCount = this._dataController.pageCount();\r\n        var pagingEnabled = this.option(\"paging.enabled\");\r\n        var isPageUp = \"pageUp\" === eventArgs.keyName;\r\n        var pageStep = isPageUp ? -1 : 1;\r\n        var scrollable = this.getView(\"rowsView\").getScrollable();\r\n        if (pagingEnabled && !this._isVirtualScrolling()) {\r\n            if ((isPageUp ? pageIndex > 0 : pageIndex < pageCount - 1) && !this._isVirtualScrolling()) {\r\n                this._dataController.pageIndex(pageIndex + pageStep);\r\n                eventArgs.originalEvent.preventDefault()\r\n            }\r\n        } else {\r\n            if (scrollable && scrollable._container().height() < scrollable.$content().height()) {\r\n                this._scrollBy(0, scrollable._container().height() * pageStep);\r\n                eventArgs.originalEvent.preventDefault()\r\n            }\r\n        }\r\n    },\r\n    _spaceKeyHandler: function(eventArgs, isEditing) {\r\n        var rowIndex = this.getVisibleRowIndex();\r\n        var $target = (0, _renderer.default)(eventArgs.originalEvent && eventArgs.originalEvent.target);\r\n        if (this.option(\"selection\") && \"none\" !== this.option(\"selection\").mode && !isEditing) {\r\n            var isFocusedRowElement = \"row\" === this._getElementType($target) && this.isRowFocusType() && isDataRow($target);\r\n            var isFocusedSelectionCell = $target.hasClass(COMMAND_SELECT_CLASS);\r\n            if (isFocusedSelectionCell && \"onClick\" === this.option(\"selection.showCheckBoxesMode\")) {\r\n                this._selectionController.startSelectionWithCheckboxes()\r\n            }\r\n            if (isFocusedRowElement || $target.parent().hasClass(DATA_ROW_CLASS) || $target.hasClass(this.addWidgetPrefix(ROWS_VIEW_CLASS))) {\r\n                this._selectionController.changeItemSelection(rowIndex, {\r\n                    shift: eventArgs.shift,\r\n                    control: eventArgs.ctrl\r\n                });\r\n                eventArgs.originalEvent.preventDefault()\r\n            }\r\n        } else {\r\n            this._beginFastEditing(eventArgs.originalEvent)\r\n        }\r\n    },\r\n    _ctrlAKeyHandler: function(eventArgs, isEditing) {\r\n        if (!isEditing && eventArgs.ctrl && !eventArgs.alt && \"multiple\" === this.option(\"selection.mode\") && this.option(\"selection.allowSelectAll\")) {\r\n            this._selectionController.selectAll();\r\n            eventArgs.originalEvent.preventDefault()\r\n        }\r\n    },\r\n    _tabKeyHandler: function(eventArgs, isEditing) {\r\n        var editingOptions = this.option(\"editing\");\r\n        var direction = eventArgs.shift ? \"previous\" : \"next\";\r\n        var isCellPositionDefined = (0, _type.isDefined)(this._focusedCellPosition) && !(0, _type.isEmptyObject)(this._focusedCellPosition);\r\n        var isOriginalHandlerRequired = !isCellPositionDefined || !eventArgs.shift && this._isLastValidCell(this._focusedCellPosition) || eventArgs.shift && this._isFirstValidCell(this._focusedCellPosition);\r\n        var eventTarget = eventArgs.originalEvent.target;\r\n        var focusedViewElement = this._focusedView && this._focusedView.element();\r\n        if (this._handleTabKeyOnMasterDetailCell(eventTarget, direction)) {\r\n            return\r\n        }(0, _renderer.default)(focusedViewElement).addClass(FOCUS_STATE_CLASS);\r\n        if (editingOptions && eventTarget && !isOriginalHandlerRequired) {\r\n            if ((0, _renderer.default)(eventTarget).hasClass(this.addWidgetPrefix(ROWS_VIEW_CLASS))) {\r\n                this._resetFocusedCell()\r\n            }\r\n            if (this._isVirtualColumnRender()) {\r\n                this._processVirtualHorizontalPosition(direction)\r\n            }\r\n            if (isEditing) {\r\n                if (!this._editingCellTabHandler(eventArgs, direction)) {\r\n                    return\r\n                }\r\n            } else {\r\n                if (this._targetCellTabHandler(eventArgs, direction)) {\r\n                    isOriginalHandlerRequired = true\r\n                }\r\n            }\r\n        }\r\n        if (isOriginalHandlerRequired) {\r\n            this._editorFactory.loseFocus();\r\n            if (this._editingController.isEditing() && !this._isRowEditMode()) {\r\n                this._resetFocusedView();\r\n                this._closeEditCell()\r\n            }\r\n        } else {\r\n            eventArgs.originalEvent.preventDefault()\r\n        }\r\n    },\r\n    _getMaxHorizontalOffset: function() {\r\n        var scrollable = this.component.getScrollable();\r\n        var rowsView = this.getView(\"rowsView\");\r\n        var offset = scrollable ? scrollable.scrollWidth() - (0, _renderer.default)(rowsView.element()).width() : 0;\r\n        return offset\r\n    },\r\n    _isColumnRendered: function(columnIndex) {\r\n        var allVisibleColumns = this._columnsController.getVisibleColumns(null, true);\r\n        var renderedVisibleColumns = this._columnsController.getVisibleColumns();\r\n        var column = allVisibleColumns[columnIndex];\r\n        var result = false;\r\n        if (column) {\r\n            result = renderedVisibleColumns.indexOf(column) >= 0\r\n        }\r\n        return result\r\n    },\r\n    _isFixedColumn: function(columnIndex) {\r\n        var allVisibleColumns = this._columnsController.getVisibleColumns(null, true);\r\n        var column = allVisibleColumns[columnIndex];\r\n        return !!column && !!column.fixed\r\n    },\r\n    _isColumnVirtual: function(columnIndex) {\r\n        var localColumnIndex = columnIndex - this._columnsController.getColumnIndexOffset();\r\n        var visibleColumns = this._columnsController.getVisibleColumns();\r\n        var column = visibleColumns[localColumnIndex];\r\n        return !!column && \"virtual\" === column.command\r\n    },\r\n    _processVirtualHorizontalPosition: function(direction) {\r\n        var scrollable = this.component.getScrollable();\r\n        var columnIndex = this.getColumnIndex();\r\n        var nextColumnIndex;\r\n        var horizontalScrollPosition = 0;\r\n        var needToScroll = false;\r\n        switch (direction) {\r\n            case \"next\":\r\n            case \"nextInRow\":\r\n                var columnsCount = this._getVisibleColumnCount();\r\n                nextColumnIndex = columnIndex + 1;\r\n                horizontalScrollPosition = this.option(\"rtlEnabled\") ? this._getMaxHorizontalOffset() : 0;\r\n                if (\"next\" === direction) {\r\n                    needToScroll = columnsCount === nextColumnIndex || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n                } else {\r\n                    needToScroll = columnsCount > nextColumnIndex && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n                }\r\n                break;\r\n            case \"previous\":\r\n            case \"previousInRow\":\r\n                nextColumnIndex = columnIndex - 1;\r\n                horizontalScrollPosition = this.option(\"rtlEnabled\") ? 0 : this._getMaxHorizontalOffset();\r\n                if (\"previous\" === direction) {\r\n                    var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n                    var leftEdgePosition = nextColumnIndex < 0 && 0 === columnIndexOffset;\r\n                    needToScroll = leftEdgePosition || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n                } else {\r\n                    needToScroll = nextColumnIndex >= 0 && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n                }\r\n        }\r\n        if (needToScroll) {\r\n            scrollable.scrollTo({\r\n                left: horizontalScrollPosition\r\n            })\r\n        } else {\r\n            if ((0, _type.isDefined)(nextColumnIndex) && (0, _type.isDefined)(direction) && this._isColumnVirtual(nextColumnIndex)) {\r\n                horizontalScrollPosition = this._getHorizontalScrollPositionOffset(direction);\r\n                0 !== horizontalScrollPosition && scrollable.scrollBy({\r\n                    left: horizontalScrollPosition,\r\n                    top: 0\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _getHorizontalScrollPositionOffset: function(direction) {\r\n        var positionOffset = 0;\r\n        var $currentCell = this._getCell(this._focusedCellPosition);\r\n        var currentCellWidth = $currentCell && $currentCell.outerWidth();\r\n        if (currentCellWidth > 0) {\r\n            var rtlMultiplier = this.option(\"rtlEnabled\") ? -1 : 1;\r\n            positionOffset = \"nextInRow\" === direction || \"next\" === direction ? currentCellWidth * rtlMultiplier : currentCellWidth * rtlMultiplier * -1\r\n        }\r\n        return positionOffset\r\n    },\r\n    _editingCellTabHandler: function(eventArgs, direction) {\r\n        var eventTarget = eventArgs.originalEvent.target;\r\n        var $cell = this._getCellElementFromTarget(eventTarget);\r\n        var isEditingAllowed;\r\n        var $event = eventArgs.originalEvent;\r\n        var elementType = this._getElementType(eventTarget);\r\n        if ($cell.is(COMMAND_CELL_SELECTOR)) {\r\n            return !this._targetCellTabHandler(eventArgs, direction)\r\n        }\r\n        this._updateFocusedCellPosition($cell);\r\n        var nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);\r\n        $cell = nextCellInfo.$cell;\r\n        if (!$cell || this._handleTabKeyOnMasterDetailCell($cell, direction)) {\r\n            return false\r\n        }\r\n        var columnsController = this._columnsController;\r\n        var cellIndex = this.getView(\"rowsView\").getCellIndex($cell);\r\n        var columnIndex = cellIndex + columnsController.getColumnIndexOffset();\r\n        var column = columnsController.getVisibleColumns(null, true)[columnIndex];\r\n        var $row = $cell && $cell.parent();\r\n        var rowIndex = this._getRowIndex($row);\r\n        var row = this._dataController.items()[rowIndex];\r\n        var editingController = this._editingController;\r\n        if (column && column.allowEditing) {\r\n            var _isDataRow = !row || \"data\" === row.rowType;\r\n            isEditingAllowed = editingController.allowUpdating({\r\n                row: row\r\n            }) ? _isDataRow : row && row.isNewRow\r\n        }\r\n        if (!isEditingAllowed) {\r\n            this._closeEditCell()\r\n        }\r\n        if (this._focusCell($cell, !nextCellInfo.isHighlighted)) {\r\n            if (!this._isRowEditMode() && isEditingAllowed) {\r\n                this._editFocusedCell()\r\n            } else {\r\n                this._focusInteractiveElement($cell, eventArgs.shift)\r\n            }\r\n        }\r\n        return true\r\n    },\r\n    _targetCellTabHandler: function(eventArgs, direction) {\r\n        var $event = eventArgs.originalEvent;\r\n        var eventTarget = $event.target;\r\n        var $cell = this._getCellElementFromTarget(eventTarget);\r\n        var $lastInteractiveElement = this._getInteractiveElement($cell, !eventArgs.shift);\r\n        var isOriginalHandlerRequired = false;\r\n        var elementType;\r\n        if (!isEditorCell(this, $cell) && $lastInteractiveElement.length && eventTarget !== $lastInteractiveElement.get(0)) {\r\n            isOriginalHandlerRequired = true\r\n        } else {\r\n            if (void 0 === this._focusedCellPosition.rowIndex && (0, _renderer.default)(eventTarget).hasClass(ROW_CLASS)) {\r\n                this._updateFocusedCellPosition($cell)\r\n            }\r\n            elementType = this._getElementType(eventTarget);\r\n            if (this.isRowFocusType()) {\r\n                this.setCellFocusType();\r\n                if (\"row\" === elementType && isDataRow((0, _renderer.default)(eventTarget))) {\r\n                    eventTarget = this.getFirstValidCellInRow((0, _renderer.default)(eventTarget));\r\n                    elementType = this._getElementType(eventTarget)\r\n                }\r\n            }\r\n            var nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);\r\n            $cell = nextCellInfo.$cell;\r\n            if (!$cell) {\r\n                return false\r\n            }\r\n            $cell = this._checkNewLineTransition($event, $cell);\r\n            if (!$cell) {\r\n                return false\r\n            }\r\n            this._focusCell($cell, !nextCellInfo.isHighlighted);\r\n            if (!isEditorCell(this, $cell)) {\r\n                this._focusInteractiveElement($cell, eventArgs.shift)\r\n            }\r\n        }\r\n        return isOriginalHandlerRequired\r\n    },\r\n    _getNextCellByTabKey: function($event, direction, elementType) {\r\n        var $cell = this._getNextCell(direction, elementType);\r\n        var args = $cell && this._fireFocusedCellChanging($event, $cell, true);\r\n        if (!args || args.cancel) {\r\n            return {}\r\n        }\r\n        if (args.$newCellElement) {\r\n            $cell = args.$newCellElement\r\n        }\r\n        return {\r\n            $cell: $cell,\r\n            isHighlighted: args.isHighlighted\r\n        }\r\n    },\r\n    _checkNewLineTransition: function($event, $cell) {\r\n        var rowIndex = this.getVisibleRowIndex();\r\n        var $row = $cell.parent();\r\n        if (rowIndex !== this._getRowIndex($row)) {\r\n            var cellPosition = this._getCellPosition($cell);\r\n            var args = this._fireFocusedRowChanging($event, $row);\r\n            if (args.cancel) {\r\n                return\r\n            }\r\n            if (args.rowIndexChanged) {\r\n                this.setFocusedColumnIndex(cellPosition.columnIndex);\r\n                $cell = this._getFocusedCell()\r\n            }\r\n        }\r\n        return $cell\r\n    },\r\n    _enterKeyHandler: function(eventArgs, isEditing) {\r\n        var $cell = this._getFocusedCell();\r\n        var rowIndex = this.getVisibleRowIndex();\r\n        var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n        if (this.option(\"grouping.allowCollapsing\") && isGroupRow($row) || this.option(\"masterDetail.enabled\") && $cell && $cell.hasClass(COMMAND_EXPAND_CLASS)) {\r\n            var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n            var item = this._dataController.items()[rowIndex];\r\n            if (void 0 !== key && item && item.data && !item.data.isContinuation) {\r\n                this._dataController.changeRowExpand(key)\r\n            }\r\n        } else {\r\n            this._processEnterKeyForDataCell(eventArgs, isEditing)\r\n        }\r\n    },\r\n    _processEnterKeyForDataCell: function(eventArgs, isEditing) {\r\n        var direction = this._getEnterKeyDirection(eventArgs);\r\n        var allowEditingOnEnterKey = this._allowEditingOnEnterKey();\r\n        if (isEditing || !allowEditingOnEnterKey && direction) {\r\n            this._handleEnterKeyEditingCell(eventArgs.originalEvent);\r\n            if (\"next\" === direction || \"previous\" === direction) {\r\n                this._targetCellTabHandler(eventArgs, direction)\r\n            } else {\r\n                if (\"upArrow\" === direction || \"downArrow\" === direction) {\r\n                    this._navigateNextCell(eventArgs.originalEvent, direction)\r\n                }\r\n            }\r\n        } else {\r\n            if (allowEditingOnEnterKey) {\r\n                this._startEditing(eventArgs)\r\n            }\r\n        }\r\n    },\r\n    _getEnterKeyDirection: function(eventArgs) {\r\n        var enterKeyDirection = this.option(\"keyboardNavigation.enterKeyDirection\");\r\n        var isShift = eventArgs.shift;\r\n        if (\"column\" === enterKeyDirection) {\r\n            return isShift ? \"upArrow\" : \"downArrow\"\r\n        }\r\n        if (\"row\" === enterKeyDirection) {\r\n            return isShift ? \"previous\" : \"next\"\r\n        }\r\n    },\r\n    _handleEnterKeyEditingCell: function(event) {\r\n        var target = event.target;\r\n        var $cell = this._getCellElementFromTarget(target);\r\n        var isRowEditMode = this._isRowEditMode();\r\n        this._updateFocusedCellPosition($cell);\r\n        if (isRowEditMode) {\r\n            this._focusEditFormCell($cell);\r\n            setTimeout(this._editingController.saveEditData.bind(this._editingController))\r\n        } else {\r\n            _events_engine.default.trigger((0, _renderer.default)(target), \"change\");\r\n            this._closeEditCell();\r\n            event.preventDefault()\r\n        }\r\n    },\r\n    _escapeKeyHandler: function(eventArgs, isEditing) {\r\n        var $cell = this._getCellElementFromTarget(eventArgs.originalEvent.target);\r\n        if (isEditing) {\r\n            this._updateFocusedCellPosition($cell);\r\n            if (!this._isRowEditMode()) {\r\n                if (\"cell\" === this._editingController.getEditMode()) {\r\n                    this._editingController.cancelEditData()\r\n                } else {\r\n                    this._closeEditCell()\r\n                }\r\n            } else {\r\n                this._focusEditFormCell($cell);\r\n                this._editingController.cancelEditData()\r\n            }\r\n            eventArgs.originalEvent.preventDefault()\r\n        }\r\n    },\r\n    _ctrlFKeyHandler: function(eventArgs) {\r\n        if (this.option(\"searchPanel.visible\")) {\r\n            var searchTextEditor = this._headerPanel.getSearchTextEditor();\r\n            if (searchTextEditor) {\r\n                searchTextEditor.focus();\r\n                eventArgs.originalEvent.preventDefault()\r\n            }\r\n        }\r\n    },\r\n    _f2KeyHandler: function() {\r\n        var isEditing = this._editingController.isEditing();\r\n        var rowIndex = this.getVisibleRowIndex();\r\n        var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n        if (!isEditing && isDataRow($row)) {\r\n            this._startEditing()\r\n        }\r\n    },\r\n    _navigateNextCell: function($event, keyCode) {\r\n        var $cell = this._getNextCell(keyCode);\r\n        var directionCode = this._getDirectionCodeByKey(keyCode);\r\n        var isCellValid = $cell && this._isCellValid($cell);\r\n        var result = isCellValid ? this._arrowKeysHandlerFocusCell($event, $cell, directionCode) : false;\r\n        return result\r\n    },\r\n    _arrowKeysHandlerFocusCell: function($event, $nextCell, direction) {\r\n        var isVerticalDirection = \"prevRow\" === direction || \"nextRow\" === direction;\r\n        var args = this._fireFocusChangingEvents($event, $nextCell, isVerticalDirection, true);\r\n        $nextCell = args.$newCellElement;\r\n        if (!args.cancel && this._isCellValid($nextCell)) {\r\n            this._focus($nextCell, !args.isHighlighted);\r\n            return true\r\n        }\r\n        return false\r\n    },\r\n    _beginFastEditing: function(originalEvent, isDeleting) {\r\n        if (!this._isFastEditingAllowed() || originalEvent.altKey || originalEvent.ctrlKey || this._editingController.isEditing()) {\r\n            return false\r\n        }\r\n        if (isDeleting) {\r\n            this._startEditing(originalEvent, FAST_EDITING_DELETE_KEY)\r\n        } else {\r\n            var key = originalEvent.key;\r\n            var keyCode = originalEvent.keyCode || originalEvent.which;\r\n            var fastEditingKey = key || keyCode && String.fromCharCode(keyCode);\r\n            if (fastEditingKey && (1 === fastEditingKey.length || fastEditingKey === FAST_EDITING_DELETE_KEY)) {\r\n                this._startEditing(originalEvent, fastEditingKey)\r\n            }\r\n        }\r\n        return true\r\n    },\r\n    _pointerEventHandler: function(e) {\r\n        var event = e.event || e;\r\n        var $target = (0, _renderer.default)(event.currentTarget);\r\n        var rowsView = this.getView(\"rowsView\");\r\n        var focusedViewElement = rowsView && rowsView.element();\r\n        var $parent = $target.parent();\r\n        var isInteractiveElement = (0, _renderer.default)(event.target).is(INTERACTIVE_ELEMENTS_SELECTOR);\r\n        var isRevertButton = !!(0, _renderer.default)(event.target).closest(\".\".concat(REVERT_BUTTON_CLASS)).length;\r\n        var isExpandCommandCell = $target.hasClass(COMMAND_EXPAND_CLASS);\r\n        if (!isRevertButton && this._isEventInCurrentGrid(event) && (this._isCellValid($target, !isInteractiveElement) || isExpandCommandCell)) {\r\n            $target = this._isInsideEditForm($target) ? (0, _renderer.default)(event.target) : $target;\r\n            this._focusView();\r\n            (0, _renderer.default)(focusedViewElement).removeClass(FOCUS_STATE_CLASS);\r\n            if ($parent.hasClass(FREESPACE_ROW_CLASS)) {\r\n                this._updateFocusedCellPosition($target);\r\n                this._applyTabIndexToElement(this._focusedView.element());\r\n                this._focusedView.focus()\r\n            } else {\r\n                if (!this._isMasterDetailCell($target)) {\r\n                    this._clickTargetCellHandler(event, $target)\r\n                } else {\r\n                    this._updateFocusedCellPosition($target)\r\n                }\r\n            }\r\n        } else {\r\n            if ($target.is(\"td\")) {\r\n                this._resetFocusedCell()\r\n            }\r\n        }\r\n    },\r\n    _clickTargetCellHandler: function(event, $cell) {\r\n        var columnIndex = this.getView(\"rowsView\").getCellIndex($cell);\r\n        var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n        var isCellEditMode = this._isCellEditMode();\r\n        this.setCellFocusType();\r\n        var args = this._fireFocusChangingEvents(event, $cell, true);\r\n        $cell = args.$newCellElement;\r\n        if (!args.cancel) {\r\n            if (args.resetFocusedRow) {\r\n                this.getController(\"focus\")._resetFocusedRow();\r\n                return\r\n            }\r\n            if (args.rowIndexChanged) {\r\n                $cell = this._getFocusedCell()\r\n            }\r\n            if (!args.isHighlighted && !isCellEditMode) {\r\n                this.setRowFocusType()\r\n            }\r\n            this._updateFocusedCellPosition($cell);\r\n            if (this._allowRowUpdating() && isCellEditMode && column && column.allowEditing) {\r\n                this._isNeedFocus = false;\r\n                this._isHiddenFocus = false\r\n            } else {\r\n                var $target = event && (0, _renderer.default)(event.target).closest(INTERACTIVE_ELEMENTS_SELECTOR + \", td\");\r\n                var isInteractiveTarget = $target && $target.not($cell).is(INTERACTIVE_ELEMENTS_SELECTOR);\r\n                var isEditor = !!column && !column.command && $cell.hasClass(EDITOR_CELL_CLASS);\r\n                var isDisabled = !isEditor && (!args.isHighlighted || isInteractiveTarget);\r\n                this._focus($cell, isDisabled, isInteractiveTarget)\r\n            }\r\n        } else {\r\n            this.setRowFocusType();\r\n            this.setFocusedRowIndex(args.prevRowIndex);\r\n            $cell = this._getFocusedCell();\r\n            if (this._editingController.isEditing() && isCellEditMode) {\r\n                this._closeEditCell()\r\n            }\r\n        }\r\n    },\r\n    _allowRowUpdating: function() {\r\n        var rowIndex = this.getVisibleRowIndex();\r\n        var row = this._dataController.items()[rowIndex];\r\n        return this._editingController.allowUpdating({\r\n            row: row\r\n        }, \"click\")\r\n    },\r\n    focus: function(element) {\r\n        var activeElementSelector;\r\n        var focusedRowEnabled = this.option(\"focusedRowEnabled\");\r\n        var isHighlighted = isCellElement((0, _renderer.default)(element));\r\n        if (!element) {\r\n            activeElementSelector = \".dx-datagrid-rowsview .dx-row[tabindex]\";\r\n            if (!focusedRowEnabled) {\r\n                activeElementSelector += \", .dx-datagrid-rowsview .dx-row > td[tabindex]\"\r\n            }\r\n            element = this.component.$element().find(activeElementSelector).first()\r\n        }\r\n        element && this._focusElement((0, _renderer.default)(element), isHighlighted)\r\n    },\r\n    getFocusedView: function() {\r\n        return this._focusedView\r\n    },\r\n    setupFocusedView: function() {\r\n        if (this.isKeyboardEnabled() && !(0, _type.isDefined)(this._focusedView)) {\r\n            this._focusView()\r\n        }\r\n    },\r\n    _focusElement: function($element, isHighlighted) {\r\n        var rowsViewElement = (0, _renderer.default)(this._getRowsViewElement());\r\n        var $focusedView = $element.closest(rowsViewElement);\r\n        var isRowFocusType = this.isRowFocusType();\r\n        var args = {};\r\n        if (!$focusedView.length || isCellElement($element) && !this._isCellValid($element)) {\r\n            return\r\n        }\r\n        this._focusView();\r\n        this._isNeedFocus = true;\r\n        this._isNeedScroll = true;\r\n        if (isCellElement($element) || isGroupRow($element)) {\r\n            this.setCellFocusType();\r\n            args = this._fireFocusChangingEvents(null, $element, false, isHighlighted);\r\n            $element = args.$newCellElement;\r\n            if (isRowFocusType && !args.isHighlighted) {\r\n                this.setRowFocusType()\r\n            }\r\n        }\r\n        if (!args.cancel) {\r\n            this._focus($element, !args.isHighlighted);\r\n            this._focusInteractiveElement($element)\r\n        }\r\n    },\r\n    _getFocusedViewByElement: function($element) {\r\n        var view = this.getFocusedView();\r\n        var $view = view && (0, _renderer.default)(view.element());\r\n        return $element && 0 !== $element.closest($view).length\r\n    },\r\n    _focusView: function() {\r\n        this._focusedView = this.getView(\"rowsView\")\r\n    },\r\n    _resetFocusedView: function() {\r\n        var $cell = this._getFocusedCell();\r\n        this._focusedView = null;\r\n        this._resetFocusedCell($cell)\r\n    },\r\n    _focusInteractiveElement: function($cell, isLast) {\r\n        if (!$cell) {\r\n            return\r\n        }\r\n        var $focusedElement = this._getInteractiveElement($cell, isLast);\r\n        _uiGrid_core2.default.focusAndSelectElement(this, $focusedElement)\r\n    },\r\n    _focus: function($cell, disableFocus, isInteractiveElement) {\r\n        var $row = $cell && !$cell.hasClass(ROW_CLASS) ? $cell.closest(\".\".concat(ROW_CLASS)) : $cell;\r\n        if ($row && isNotFocusedRow($row)) {\r\n            return\r\n        }\r\n        var focusedView = this._focusedView;\r\n        var $focusViewElement = focusedView && focusedView.element();\r\n        var $focusElement;\r\n        this._isHiddenFocus = disableFocus;\r\n        if (isGroupRow($row) || this.isRowFocusType()) {\r\n            $focusElement = $row;\r\n            if (focusedView) {\r\n                this.setFocusedRowIndex(this._getRowIndex($row))\r\n            }\r\n        } else {\r\n            if (isCellElement($cell)) {\r\n                $focusElement = $cell;\r\n                this._updateFocusedCellPosition($cell)\r\n            }\r\n        }\r\n        if ($focusElement) {\r\n            if ($focusViewElement) {\r\n                $focusViewElement.find(\".dx-row[tabindex], .dx-row > td[tabindex]\").not($focusElement).removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabindex\")\r\n            }\r\n            _events_engine.default.one($focusElement, \"blur\", function(e) {\r\n                if (e.relatedTarget) {\r\n                    $focusElement.removeClass(CELL_FOCUS_DISABLED_CLASS)\r\n                }\r\n            });\r\n            if (!isInteractiveElement) {\r\n                this._applyTabIndexToElement($focusElement);\r\n                _events_engine.default.trigger($focusElement, \"focus\")\r\n            }\r\n            if (disableFocus) {\r\n                $focusElement.addClass(CELL_FOCUS_DISABLED_CLASS)\r\n            } else {\r\n                this._editorFactory.focus($focusElement)\r\n            }\r\n        }\r\n    },\r\n    _updateFocus: function(isRenderView) {\r\n        var _this6 = this;\r\n        this._updateFocusTimeout = setTimeout(function() {\r\n            var $cell = _this6._getFocusedCell();\r\n            var isEditing = _this6._editingController.isEditing();\r\n            if ($cell && !(_this6._isMasterDetailCell($cell) && !_this6._isRowEditMode())) {\r\n                if (_this6._hasSkipRow($cell.parent())) {\r\n                    var direction = _this6._focusedCellPosition && _this6._focusedCellPosition.rowIndex > 0 ? \"upArrow\" : \"downArrow\";\r\n                    $cell = _this6._getNextCell(direction)\r\n                }\r\n                if (isElementDefined($cell)) {\r\n                    if (isRenderView && !isEditing && _this6._checkCellOverlapped($cell)) {\r\n                        return\r\n                    }\r\n                    if ($cell.is(\"td\") || $cell.hasClass(_this6.addWidgetPrefix(EDIT_FORM_ITEM_CLASS))) {\r\n                        var isCommandCell = $cell.is(COMMAND_CELL_SELECTOR);\r\n                        if ((isRenderView || !isCommandCell) && _this6._editorFactory.focus()) {\r\n                            var $focusedElementInsideCell = $cell.find(\":focus\");\r\n                            var isFocusedElementDefined = isElementDefined($focusedElementInsideCell);\r\n                            if (isCommandCell && isFocusedElementDefined) {\r\n                                _uiGrid_core2.default.focusAndSelectElement(_this6, $focusedElementInsideCell);\r\n                                return\r\n                            }!isFocusedElementDefined && _this6._focus($cell)\r\n                        } else {\r\n                            if (_this6._isNeedFocus || _this6._isHiddenFocus) {\r\n                                _this6._focus($cell, _this6._isHiddenFocus)\r\n                            }\r\n                        }\r\n                        if (isEditing) {\r\n                            _this6._focusInteractiveElement.bind(_this6)($cell)\r\n                        }\r\n                    } else {\r\n                        _events_engine.default.trigger($cell, \"focus\")\r\n                    }\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _checkCellOverlapped: function($cell) {\r\n        var cellOffset = $cell.offset();\r\n        var hasScrollable = this.component.getScrollable && this.component.getScrollable();\r\n        var isOverlapped = false;\r\n        if (hasScrollable) {\r\n            if (cellOffset.left < 0) {\r\n                isOverlapped = $cell.width() + cellOffset.left <= 0\r\n            } else {\r\n                if (cellOffset.top < 0) {\r\n                    isOverlapped = $cell.height() + cellOffset.top <= 0\r\n                }\r\n            }\r\n        }\r\n        return isOverlapped\r\n    },\r\n    _getFocusedCell: function() {\r\n        return (0, _renderer.default)(this._getCell(this._focusedCellPosition))\r\n    },\r\n    _updateFocusedCellPositionByTarget: function(target) {\r\n        var _this$_focusedCellPos;\r\n        var elementType = this._getElementType(target);\r\n        if (\"row\" === elementType && (0, _type.isDefined)(null === (_this$_focusedCellPos = this._focusedCellPosition) || void 0 === _this$_focusedCellPos ? void 0 : _this$_focusedCellPos.columnIndex)) {\r\n            var $row = (0, _renderer.default)(target);\r\n            this._focusedView && isGroupRow($row) && this.setFocusedRowIndex(this._getRowIndex($row))\r\n        } else {\r\n            this._updateFocusedCellPosition(this._getCellElementFromTarget(target))\r\n        }\r\n    },\r\n    _updateFocusedCellPosition: function($cell, direction) {\r\n        var position = this._getCellPosition($cell, direction);\r\n        if (position) {\r\n            if (!$cell.length || position.rowIndex >= 0 && position.columnIndex >= 0) {\r\n                this.setFocusedCellPosition(position.rowIndex, position.columnIndex)\r\n            }\r\n        }\r\n        return position\r\n    },\r\n    _getFocusedColumnIndexOffset: function(columnIndex) {\r\n        var offset = 0;\r\n        var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n        if (column && column.fixed) {\r\n            offset = this._getFixedColumnIndexOffset(column)\r\n        } else {\r\n            if (columnIndex >= 0) {\r\n                offset = this._columnsController.getColumnIndexOffset()\r\n            }\r\n        }\r\n        return offset\r\n    },\r\n    _getFixedColumnIndexOffset: function(column) {\r\n        var offset = isFixedColumnIndexOffsetRequired(this, column) ? this._getVisibleColumnCount() - this._columnsController.getVisibleColumns().length : 0;\r\n        return offset\r\n    },\r\n    _getCellPosition: function($cell, direction) {\r\n        var columnIndex;\r\n        var $row = isElementDefined($cell) && $cell.closest(\"tr\");\r\n        var rowsView = this.getView(\"rowsView\");\r\n        if (isElementDefined($row)) {\r\n            var rowIndex = this._getRowIndex($row);\r\n            columnIndex = rowsView.getCellIndex($cell, rowIndex);\r\n            columnIndex += this._getFocusedColumnIndexOffset(columnIndex);\r\n            if (direction) {\r\n                columnIndex = \"previous\" === direction ? columnIndex - 1 : columnIndex + 1;\r\n                columnIndex = this._applyColumnIndexBoundaries(columnIndex)\r\n            }\r\n            return {\r\n                rowIndex: rowIndex,\r\n                columnIndex: columnIndex\r\n            }\r\n        }\r\n    },\r\n    _focusCell: function($cell, isDisabled) {\r\n        if (this._isCellValid($cell)) {\r\n            this._focus($cell, isDisabled);\r\n            return true\r\n        }\r\n    },\r\n    _focusEditFormCell: function($cell) {\r\n        if ($cell.hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n            this._editorFactory.focus($cell, true)\r\n        }\r\n    },\r\n    _resetFocusedCell: function($cellElement) {\r\n        var $cell = isElementDefined($cellElement) ? $cellElement : this._getFocusedCell();\r\n        isElementDefined($cell) && $cell.removeAttr(\"tabindex\");\r\n        this._isNeedFocus = false;\r\n        this._isNeedScroll = false;\r\n        this._focusedCellPosition = {};\r\n        clearTimeout(this._updateFocusTimeout);\r\n        if (this._focusedView && this._focusedView.renderFocusState) {\r\n            this._focusedView.renderFocusState()\r\n        }\r\n    },\r\n    restoreFocusableElement: function(rowIndex, $event) {\r\n        var that = this;\r\n        var args;\r\n        var $rowElement;\r\n        var isUpArrow = (0, _type.isDefined)(rowIndex);\r\n        var rowsView = that.getView(\"rowsView\");\r\n        var $rowsViewElement = rowsView.element();\r\n        var columnIndex = that._focusedCellPosition.columnIndex;\r\n        var rowIndexOffset = that._dataController.getRowIndexOffset();\r\n        rowIndex = isUpArrow ? rowIndex : rowsView.getTopVisibleItemIndex() + rowIndexOffset;\r\n        if (!isUpArrow) {\r\n            that._editorFactory.loseFocus();\r\n            that._applyTabIndexToElement($rowsViewElement);\r\n            _events_engine.default.trigger($rowsViewElement, \"focus\")\r\n        } else {\r\n            $rowElement = rowsView.getRow(rowIndex - rowIndexOffset);\r\n            args = that._fireFocusedRowChanging($event, $rowElement);\r\n            if (!args.cancel && args.rowIndexChanged) {\r\n                rowIndex = args.newRowIndex\r\n            }\r\n        }\r\n        if (!isUpArrow || !args.cancel) {\r\n            that.setFocusedCellPosition(rowIndex, columnIndex)\r\n        }\r\n        isUpArrow && that._updateFocus()\r\n    },\r\n    _getNewPositionByCode: function(cellPosition, elementType, code) {\r\n        var columnIndex = cellPosition.columnIndex;\r\n        var rowIndex = cellPosition.rowIndex;\r\n        var visibleColumnsCount;\r\n        if (void 0 === cellPosition.rowIndex && \"next\" === code) {\r\n            return {\r\n                columnIndex: 0,\r\n                rowIndex: 0\r\n            }\r\n        }\r\n        switch (code) {\r\n            case \"nextInRow\":\r\n            case \"next\":\r\n                visibleColumnsCount = this._getVisibleColumnCount();\r\n                if (columnIndex < visibleColumnsCount - 1 && \"row\" !== elementType && this._hasValidCellAfterPosition({\r\n                        columnIndex: columnIndex,\r\n                        rowIndex: rowIndex\r\n                    })) {\r\n                    columnIndex++\r\n                } else {\r\n                    if (!this._isLastRow(rowIndex) && \"next\" === code) {\r\n                        columnIndex = 0;\r\n                        rowIndex++\r\n                    }\r\n                }\r\n                break;\r\n            case \"previousInRow\":\r\n            case \"previous\":\r\n                if (columnIndex > 0 && \"row\" !== elementType && this._hasValidCellBeforePosition({\r\n                        columnIndex: columnIndex,\r\n                        rowIndex: rowIndex\r\n                    })) {\r\n                    columnIndex--\r\n                } else {\r\n                    if (rowIndex > 0 && \"previous\" === code) {\r\n                        rowIndex--;\r\n                        visibleColumnsCount = this._getVisibleColumnCount();\r\n                        columnIndex = visibleColumnsCount - 1\r\n                    }\r\n                }\r\n                break;\r\n            case \"upArrow\":\r\n                rowIndex = rowIndex > 0 ? rowIndex - 1 : rowIndex;\r\n                break;\r\n            case \"downArrow\":\r\n                rowIndex = !this._isLastRow(rowIndex) ? rowIndex + 1 : rowIndex\r\n        }\r\n        return {\r\n            columnIndex: columnIndex,\r\n            rowIndex: rowIndex\r\n        }\r\n    },\r\n    setFocusedCellPosition: function(rowIndex, columnIndex) {\r\n        this.setFocusedRowIndex(rowIndex);\r\n        this.setFocusedColumnIndex(columnIndex)\r\n    },\r\n    setFocusedRowIndex: function(rowIndex) {\r\n        if (!this._focusedCellPosition) {\r\n            this._focusedCellPosition = {}\r\n        }\r\n        this._focusedCellPosition.rowIndex = rowIndex\r\n    },\r\n    setFocusedColumnIndex: function(columnIndex) {\r\n        if (!this._focusedCellPosition) {\r\n            this._focusedCellPosition = {}\r\n        }\r\n        this._focusedCellPosition.columnIndex = columnIndex\r\n    },\r\n    getRowIndex: function() {\r\n        return this._focusedCellPosition ? this._focusedCellPosition.rowIndex : -1\r\n    },\r\n    getColumnIndex: function() {\r\n        return this._focusedCellPosition ? this._focusedCellPosition.columnIndex : -1\r\n    },\r\n    getVisibleRowIndex: function() {\r\n        var rowIndex = this._focusedCellPosition && this._focusedCellPosition.rowIndex;\r\n        if (!(0, _type.isDefined)(rowIndex)) {\r\n            return -1\r\n        }\r\n        return rowIndex - this._dataController.getRowIndexOffset()\r\n    },\r\n    getVisibleColumnIndex: function() {\r\n        var columnIndex = this._focusedCellPosition && this._focusedCellPosition.columnIndex;\r\n        if (!(0, _type.isDefined)(columnIndex)) {\r\n            return -1\r\n        }\r\n        return columnIndex - this._columnsController.getColumnIndexOffset()\r\n    },\r\n    _applyColumnIndexBoundaries: function(columnIndex) {\r\n        var visibleColumnsCount = this._getVisibleColumnCount();\r\n        if (columnIndex < 0) {\r\n            columnIndex = 0\r\n        } else {\r\n            if (columnIndex >= visibleColumnsCount) {\r\n                columnIndex = visibleColumnsCount - 1\r\n            }\r\n        }\r\n        return columnIndex\r\n    },\r\n    _isCellByPositionValid: function(cellPosition) {\r\n        var $cell = (0, _renderer.default)(this._getCell(cellPosition));\r\n        return this._isCellValid($cell)\r\n    },\r\n    _isLastRow: function(rowIndex) {\r\n        if (this._isVirtualRowRender()) {\r\n            return rowIndex >= this._dataController.totalItemsCount() - 1\r\n        }\r\n        return rowIndex === this._dataController.items().length - 1\r\n    },\r\n    _isFirstValidCell: function(cellPosition) {\r\n        var isFirstValidCell = false;\r\n        if (0 === cellPosition.rowIndex && cellPosition.columnIndex >= 0) {\r\n            isFirstValidCell = isFirstValidCell || !this._hasValidCellBeforePosition(cellPosition)\r\n        }\r\n        return isFirstValidCell\r\n    },\r\n    _hasValidCellBeforePosition: function(cellPosition) {\r\n        var columnIndex = cellPosition.columnIndex;\r\n        var hasValidCells = false;\r\n        while (columnIndex > 0 && !hasValidCells) {\r\n            var checkingPosition = {\r\n                columnIndex: --columnIndex,\r\n                rowIndex: cellPosition.rowIndex\r\n            };\r\n            hasValidCells = this._isCellByPositionValid(checkingPosition)\r\n        }\r\n        return hasValidCells\r\n    },\r\n    _hasValidCellAfterPosition: function(cellPosition) {\r\n        var columnIndex = cellPosition.columnIndex;\r\n        var hasValidCells = false;\r\n        var visibleColumnCount = this._getVisibleColumnCount();\r\n        while (columnIndex < visibleColumnCount - 1 && !hasValidCells) {\r\n            var checkingPosition = {\r\n                columnIndex: ++columnIndex,\r\n                rowIndex: cellPosition.rowIndex\r\n            };\r\n            hasValidCells = this._isCellByPositionValid(checkingPosition)\r\n        }\r\n        return hasValidCells\r\n    },\r\n    _isLastValidCell: function(cellPosition) {\r\n        var nextColumnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex + 1 : 0;\r\n        var rowIndex = cellPosition.rowIndex;\r\n        var checkingPosition = {\r\n            columnIndex: nextColumnIndex,\r\n            rowIndex: rowIndex\r\n        };\r\n        var visibleRows = this._dataController.getVisibleRows();\r\n        var row = visibleRows && visibleRows[rowIndex];\r\n        var isLastRow = this._isLastRow(rowIndex);\r\n        if (!isLastRow) {\r\n            return false\r\n        }\r\n        if (row && \"group\" === row.rowType && cellPosition.columnIndex > 0) {\r\n            return true\r\n        }\r\n        if (cellPosition.columnIndex === this._getVisibleColumnCount() - 1) {\r\n            return true\r\n        }\r\n        if (this._isCellByPositionValid(checkingPosition)) {\r\n            return false\r\n        }\r\n        return this._isLastValidCell(checkingPosition)\r\n    },\r\n    _isCellValid: function($cell, isClick) {\r\n        if (isElementDefined($cell)) {\r\n            var rowsView = this.getView(\"rowsView\");\r\n            var $row = $cell.parent();\r\n            var columnsController = this._columnsController;\r\n            var columnIndex = rowsView.getCellIndex($cell) + columnsController.getColumnIndexOffset();\r\n            var column = columnsController.getVisibleColumns(null, true)[columnIndex];\r\n            var visibleColumnCount = this._getVisibleColumnCount();\r\n            var editingController = this._editingController;\r\n            var isMasterDetailRow = isDetailRow($row);\r\n            var isShowWhenGrouped = column && column.showWhenGrouped;\r\n            var isDataCell = column && !$cell.hasClass(COMMAND_EXPAND_CLASS) && isDataRow($row);\r\n            var isValidGroupSpaceColumn = function() {\r\n                return !isMasterDetailRow && column && (!(0, _type.isDefined)(column.groupIndex) || isShowWhenGrouped && isDataCell) || parseInt($cell.attr(\"colspan\")) > 1\r\n            };\r\n            if (this._isMasterDetailCell($cell)) {\r\n                return true\r\n            }\r\n            if (visibleColumnCount > columnIndex && isValidGroupSpaceColumn()) {\r\n                var rowItems = this._dataController.items();\r\n                var visibleRowIndex = rowsView.getRowIndex($row);\r\n                var row = rowItems[visibleRowIndex];\r\n                var isCellEditing = editingController && this._isCellEditMode() && editingController.isEditing();\r\n                var isRowEditingInCurrentRow = editingController && editingController.isEditRow(visibleRowIndex);\r\n                var isEditing = isRowEditingInCurrentRow || isCellEditing;\r\n                if (column.command) {\r\n                    if (this._isLegacyNavigation()) {\r\n                        return !isEditing && \"expand\" === column.command\r\n                    }\r\n                    if (isCellEditing) {\r\n                        return false\r\n                    }\r\n                    if (isRowEditingInCurrentRow) {\r\n                        return \"select\" !== column.command\r\n                    }\r\n                    return !isEditing\r\n                }\r\n                if (isCellEditing && row && \"data\" !== row.rowType) {\r\n                    return false\r\n                }\r\n                return !isEditing || column.allowEditing || isClick\r\n            }\r\n        }\r\n    },\r\n    getFirstValidCellInRow: function($row, columnIndex) {\r\n        var that = this;\r\n        var $cells = $row.find(\"> td\");\r\n        var $cell;\r\n        var $result;\r\n        columnIndex = columnIndex || 0;\r\n        for (var i = columnIndex; i < $cells.length; ++i) {\r\n            $cell = $cells.eq(i);\r\n            if (that._isCellValid($cell)) {\r\n                $result = $cell;\r\n                break\r\n            }\r\n        }\r\n        return $result\r\n    },\r\n    _getNextCell: function(keyCode, elementType, cellPosition) {\r\n        var focusedCellPosition = cellPosition || this._focusedCellPosition;\r\n        var isRowFocusType = this.isRowFocusType();\r\n        var includeCommandCells = isRowFocusType || (0, _array.inArray)(keyCode, [\"next\", \"previous\"]) > -1;\r\n        var $cell;\r\n        var $row;\r\n        if (this._focusedView && focusedCellPosition) {\r\n            var newFocusedCellPosition = this._getNewPositionByCode(focusedCellPosition, elementType, keyCode);\r\n            $cell = (0, _renderer.default)(this._getCell(newFocusedCellPosition));\r\n            var isLastCellOnDirection = \"previous\" === keyCode ? this._isFirstValidCell(newFocusedCellPosition) : this._isLastValidCell(newFocusedCellPosition);\r\n            if (isElementDefined($cell) && !this._isCellValid($cell) && this._isCellInRow(newFocusedCellPosition, includeCommandCells) && !isLastCellOnDirection) {\r\n                if (isRowFocusType) {\r\n                    $cell = this.getFirstValidCellInRow($cell.parent(), newFocusedCellPosition.columnIndex)\r\n                } else {\r\n                    $cell = this._getNextCell(keyCode, \"cell\", newFocusedCellPosition)\r\n                }\r\n            }\r\n            $row = isElementDefined($cell) && $cell.parent();\r\n            if (this._hasSkipRow($row)) {\r\n                var rowIndex = this._getRowIndex($row);\r\n                if (!this._isLastRow(rowIndex)) {\r\n                    $cell = this._getNextCell(keyCode, \"row\", {\r\n                        columnIndex: focusedCellPosition.columnIndex,\r\n                        rowIndex: rowIndex\r\n                    })\r\n                } else {\r\n                    return null\r\n                }\r\n            }\r\n            return isElementDefined($cell) ? $cell : null\r\n        }\r\n        return null\r\n    },\r\n    _startEditing: function(eventArgs, fastEditingKey) {\r\n        var focusedCellPosition = this._focusedCellPosition;\r\n        var visibleRowIndex = this.getVisibleRowIndex();\r\n        var visibleColumnIndex = this.getVisibleColumnIndex();\r\n        var row = this._dataController.items()[visibleRowIndex];\r\n        var column = this._columnsController.getVisibleColumns()[visibleColumnIndex];\r\n        if (this._isAllowEditing(row, column)) {\r\n            if (this._isRowEditMode()) {\r\n                this._editingController.editRow(visibleRowIndex)\r\n            } else {\r\n                if (focusedCellPosition) {\r\n                    this._startEditCell(eventArgs, fastEditingKey)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _isAllowEditing: function(row, column) {\r\n        return this._editingController.allowUpdating({\r\n            row: row\r\n        }) && column && column.allowEditing\r\n    },\r\n    _editFocusedCell: function() {\r\n        var rowIndex = this.getVisibleRowIndex();\r\n        var colIndex = this.getVisibleColumnIndex();\r\n        return this._editingController.editCell(rowIndex, colIndex)\r\n    },\r\n    _startEditCell: function(eventArgs, fastEditingKey) {\r\n        var _this7 = this;\r\n        this._fastEditingStarted = (0, _type.isDefined)(fastEditingKey);\r\n        var editResult = this._editFocusedCell();\r\n        if (this._isFastEditingStarted()) {\r\n            if (true === editResult) {\r\n                this._editingCellHandler(eventArgs, fastEditingKey)\r\n            } else {\r\n                if (editResult && editResult.done) {\r\n                    var editorValue = fastEditingKey !== FAST_EDITING_DELETE_KEY ? fastEditingKey : \"\";\r\n                    editResult.done(function() {\r\n                        return _this7._editingCellHandler(eventArgs, editorValue)\r\n                    })\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _editingCellHandler: function(eventArgs, editorValue) {\r\n        var $input = this._getFocusedCell().find(\".dx-texteditor-input\").eq(0);\r\n        var keyDownEvent = (0, _index.createEvent)(eventArgs, {\r\n            type: \"keydown\",\r\n            target: $input.get(0)\r\n        });\r\n        var keyPressEvent = (0, _index.createEvent)(eventArgs, {\r\n            type: \"keypress\",\r\n            target: $input.get(0)\r\n        });\r\n        var inputEvent = (0, _index.createEvent)(eventArgs, {\r\n            type: \"input\",\r\n            target: $input.get(0)\r\n        });\r\n        _events_engine.default.trigger($input, keyDownEvent);\r\n        if (!keyDownEvent.isDefaultPrevented()) {\r\n            _events_engine.default.trigger($input, keyPressEvent);\r\n            if (!keyPressEvent.isDefaultPrevented()) {\r\n                var timeout = _browser.default.mozilla ? 25 : 0;\r\n                setTimeout(function() {\r\n                    $input.val(editorValue);\r\n                    var $widgetContainer = $input.closest(\".\".concat(WIDGET_CLASS));\r\n                    _events_engine.default.off($widgetContainer, \"focusout\");\r\n                    _events_engine.default.one($widgetContainer, \"focusout\", function() {\r\n                        _events_engine.default.trigger($input, \"change\")\r\n                    });\r\n                    _events_engine.default.trigger($input, inputEvent)\r\n                }, timeout)\r\n            }\r\n        }\r\n    },\r\n    _fireFocusChangingEvents: function($event, $cell, fireRowEvent, isHighlighted) {\r\n        var args = {};\r\n        var cellPosition = this._getCellPosition($cell) || {};\r\n        if (this.isCellFocusType()) {\r\n            args = this._fireFocusedCellChanging($event, $cell, isHighlighted);\r\n            if (!args.cancel) {\r\n                cellPosition.columnIndex = args.newColumnIndex;\r\n                cellPosition.rowIndex = args.newRowIndex;\r\n                isHighlighted = args.isHighlighted;\r\n                $cell = (0, _renderer.default)(this._getCell(cellPosition))\r\n            }\r\n        }\r\n        if (!args.cancel && fireRowEvent && $cell) {\r\n            args = this._fireFocusedRowChanging($event, $cell.parent());\r\n            if (!args.cancel) {\r\n                cellPosition.rowIndex = args.newRowIndex;\r\n                args.isHighlighted = isHighlighted\r\n            }\r\n        }\r\n        args.$newCellElement = (0, _renderer.default)(this._getCell(cellPosition));\r\n        if (!args.$newCellElement.length) {\r\n            args.$newCellElement = $cell\r\n        }\r\n        return args\r\n    },\r\n    _fireFocusedCellChanging: function($event, $cellElement, isHighlighted) {\r\n        var that = this;\r\n        var prevCellIndex = that.option(\"focusedColumnIndex\");\r\n        var prevRowIndex = that.option(\"focusedRowIndex\");\r\n        var cellPosition = that._getCellPosition($cellElement);\r\n        var columnIndex = cellPosition ? cellPosition.columnIndex : -1;\r\n        var rowIndex = cellPosition ? cellPosition.rowIndex : -1;\r\n        var args = {\r\n            cellElement: $cellElement,\r\n            prevColumnIndex: prevCellIndex,\r\n            prevRowIndex: prevRowIndex,\r\n            newColumnIndex: columnIndex,\r\n            newRowIndex: rowIndex,\r\n            rows: that._dataController.getVisibleRows(),\r\n            columns: that._columnsController.getVisibleColumns(),\r\n            event: $event,\r\n            isHighlighted: isHighlighted || false,\r\n            cancel: false\r\n        };\r\n        this._canceledCellPosition = null;\r\n        that.executeAction(\"onFocusedCellChanging\", args);\r\n        if (args.newColumnIndex !== columnIndex || args.newRowIndex !== rowIndex) {\r\n            args.$newCellElement = (0, _renderer.default)(this._getCell({\r\n                columnIndex: args.newColumnIndex,\r\n                rowIndex: args.newRowIndex\r\n            }))\r\n        }\r\n        if (args.cancel) {\r\n            this._canceledCellPosition = {\r\n                rowIndex: rowIndex,\r\n                columnIndex: columnIndex\r\n            }\r\n        }\r\n        return args\r\n    },\r\n    _fireFocusedCellChanged: function($cellElement, prevCellIndex, prevRowIndex) {\r\n        var that = this;\r\n        var dataController = that._dataController;\r\n        var columnIndex = that.getView(\"rowsView\").getCellIndex($cellElement);\r\n        var rowIndex = this._getRowIndex($cellElement && $cellElement.parent());\r\n        var localRowIndex = Math.min(rowIndex - dataController.getRowIndexOffset(), dataController.items().length - 1);\r\n        var isEditingCell = that._editingController.isEditCell(localRowIndex, columnIndex);\r\n        var row = dataController.items()[localRowIndex];\r\n        if (!isEditingCell && (prevCellIndex !== columnIndex || prevRowIndex !== rowIndex)) {\r\n            that.executeAction(\"onFocusedCellChanged\", {\r\n                cellElement: $cellElement,\r\n                columnIndex: columnIndex,\r\n                rowIndex: rowIndex,\r\n                row: row,\r\n                column: that._columnsController.getVisibleColumns()[columnIndex]\r\n            })\r\n        }\r\n    },\r\n    _fireFocusedRowChanging: function(eventArgs, $newFocusedRow) {\r\n        var newRowIndex = this._getRowIndex($newFocusedRow);\r\n        var dataController = this._dataController;\r\n        var prevFocusedRowIndex = this.option(\"focusedRowIndex\");\r\n        var loadingOperationTypes = dataController.loadingOperationTypes();\r\n        var args = {\r\n            rowElement: $newFocusedRow,\r\n            prevRowIndex: prevFocusedRowIndex,\r\n            newRowIndex: newRowIndex,\r\n            event: eventArgs,\r\n            rows: dataController.getVisibleRows(),\r\n            cancel: false\r\n        };\r\n        if (!dataController || dataController.isLoading() && (loadingOperationTypes.reload || loadingOperationTypes.paging)) {\r\n            args.cancel = true;\r\n            return args\r\n        }\r\n        if (this.option(\"focusedRowEnabled\")) {\r\n            this.executeAction(\"onFocusedRowChanging\", args);\r\n            if (!args.cancel && args.newRowIndex !== newRowIndex) {\r\n                args.resetFocusedRow = args.newRowIndex < 0;\r\n                if (!args.resetFocusedRow) {\r\n                    this.setFocusedRowIndex(args.newRowIndex)\r\n                }\r\n                args.rowIndexChanged = true\r\n            }\r\n        }\r\n        return args\r\n    },\r\n    _fireFocusedRowChanged: function($rowElement) {\r\n        var row;\r\n        var focusedRowKey = this.option(\"focusedRowKey\");\r\n        var focusController = this.getController(\"focus\");\r\n        var focusedRowIndex = null === focusController || void 0 === focusController ? void 0 : focusController.getFocusedRowIndexByKey(focusedRowKey);\r\n        if (this.option(\"focusedRowEnabled\")) {\r\n            if (focusedRowIndex >= 0) {\r\n                var dataController = this._dataController;\r\n                row = focusedRowIndex >= 0 && dataController.getVisibleRows()[focusedRowIndex - dataController.getRowIndexOffset()]\r\n            }\r\n            this.executeAction(\"onFocusedRowChanged\", {\r\n                rowElement: $rowElement,\r\n                rowIndex: focusedRowIndex,\r\n                row: row\r\n            })\r\n        }\r\n    },\r\n    _isEventInCurrentGrid: function(event) {\r\n        return _uiGrid_core2.default.isElementInCurrentGrid(this, (0, _renderer.default)(event.target))\r\n    },\r\n    _isRowEditMode: function() {\r\n        var editMode = this._editingController.getEditMode();\r\n        return editMode === EDIT_MODE_ROW || editMode === EDIT_MODE_FORM\r\n    },\r\n    _isCellEditMode: function() {\r\n        var editMode = this._editingController.getEditMode();\r\n        return editMode === EDIT_MODE_CELL || editMode === EDIT_MODE_BATCH\r\n    },\r\n    _isFastEditingAllowed: function() {\r\n        return this._isCellEditMode() && this.option(\"keyboardNavigation.editOnKeyPress\")\r\n    },\r\n    _getInteractiveElement: function($cell, isLast) {\r\n        var $focusedElement = $cell.find(INTERACTIVE_ELEMENTS_SELECTOR).filter(\":visible\");\r\n        return isLast ? $focusedElement.last() : $focusedElement.first()\r\n    },\r\n    _applyTabIndexToElement: function($element) {\r\n        var tabIndex = this.option(\"tabIndex\") || 0;\r\n        $element.attr(\"tabindex\", (0, _type.isDefined)(tabIndex) ? tabIndex : 0)\r\n    },\r\n    _getCell: function(cellPosition) {\r\n        if (this._focusedView && cellPosition) {\r\n            var rowIndexOffset = this._dataController.getRowIndexOffset();\r\n            var column = this._columnsController.getVisibleColumns(null, true)[cellPosition.columnIndex];\r\n            var columnIndexOffset = column && column.fixed ? this._getFixedColumnIndexOffset(column) : this._columnsController.getColumnIndexOffset();\r\n            var rowIndex = cellPosition.rowIndex >= 0 ? cellPosition.rowIndex - rowIndexOffset : -1;\r\n            var columnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex - columnIndexOffset : -1;\r\n            return this._focusedView.getCell({\r\n                rowIndex: rowIndex,\r\n                columnIndex: columnIndex\r\n            })\r\n        }\r\n    },\r\n    _getRowIndex: function($row) {\r\n        var rowsView = this.getView(\"rowsView\");\r\n        var rowIndex = rowsView.getRowIndex($row);\r\n        if (rowIndex >= 0) {\r\n            rowIndex += this._dataController.getRowIndexOffset()\r\n        }\r\n        return rowIndex\r\n    },\r\n    _hasSkipRow: function($row) {\r\n        var row = $row && $row.get(0);\r\n        return row && (\"none\" === row.style.display || $row.hasClass(this.addWidgetPrefix(GROUP_FOOTER_CLASS)) || isDetailRow($row) && !$row.hasClass(this.addWidgetPrefix(EDIT_FORM_CLASS)))\r\n    },\r\n    _allowEditingOnEnterKey: function() {\r\n        return \"startEdit\" === this.option(\"keyboardNavigation.enterKeyAction\")\r\n    },\r\n    _isLegacyNavigation: function() {\r\n        return this.option(\"useLegacyKeyboardNavigation\")\r\n    },\r\n    _getDirectionCodeByKey: function(key) {\r\n        var directionCode;\r\n        switch (key) {\r\n            case \"upArrow\":\r\n                directionCode = \"prevRow\";\r\n                break;\r\n            case \"downArrow\":\r\n                directionCode = \"nextRow\";\r\n                break;\r\n            case \"leftArrow\":\r\n                directionCode = this.option(\"rtlEnabled\") ? \"nextInRow\" : \"previousInRow\";\r\n                break;\r\n            case \"rightArrow\":\r\n                directionCode = this.option(\"rtlEnabled\") ? \"previousInRow\" : \"nextInRow\"\r\n        }\r\n        return directionCode\r\n    },\r\n    _isVirtualScrolling: function() {\r\n        var scrollingMode = this.option(\"scrolling.mode\");\r\n        return \"virtual\" === scrollingMode || \"infinite\" === scrollingMode\r\n    },\r\n    _isVirtualRowRender: function() {\r\n        return this._isVirtualScrolling() || \"virtual\" === this.option(\"scrolling.rowRenderingMode\")\r\n    },\r\n    _isVirtualColumnRender: function() {\r\n        return \"virtual\" === this.option(\"scrolling.columnRenderingMode\")\r\n    },\r\n    _scrollBy: function(left, top, rowIndex, $event) {\r\n        var that = this;\r\n        var scrollable = this.getView(\"rowsView\").getScrollable();\r\n        if (that._focusedCellPosition) {\r\n            var scrollHandler = function scrollHandler() {\r\n                scrollable.off(\"scroll\", scrollHandler);\r\n                setTimeout(that.restoreFocusableElement.bind(that, rowIndex, $event))\r\n            };\r\n            scrollable.on(\"scroll\", scrollHandler)\r\n        }\r\n        return scrollable.scrollBy({\r\n            left: left,\r\n            top: top\r\n        })\r\n    },\r\n    _isInsideEditForm: function(element) {\r\n        return (0, _renderer.default)(element).closest(\".\" + this.addWidgetPrefix(EDIT_FORM_CLASS)).length > 0\r\n    },\r\n    _isMasterDetailCell: function(element) {\r\n        var $masterDetailCell = (0, _renderer.default)(element).closest(\".\" + MASTER_DETAIL_CELL_CLASS);\r\n        var $masterDetailGrid = $masterDetailCell.closest(\".\" + this.getWidgetContainerClass()).parent();\r\n        return $masterDetailCell.length && $masterDetailGrid.is(this.component.$element())\r\n    },\r\n    _processNextCellInMasterDetail: function($nextCell) {\r\n        if (!this._isInsideEditForm($nextCell) && $nextCell) {\r\n            this._applyTabIndexToElement($nextCell)\r\n        }\r\n    },\r\n    _handleTabKeyOnMasterDetailCell: function(target, direction) {\r\n        if (this._isMasterDetailCell(target)) {\r\n            this._updateFocusedCellPosition((0, _renderer.default)(target), direction);\r\n            var $nextCell = this._getNextCell(direction, \"row\");\r\n            this._processNextCellInMasterDetail($nextCell);\r\n            return true\r\n        }\r\n        return false\r\n    },\r\n    _getElementType: function(target) {\r\n        return (0, _renderer.default)(target).is(\"tr\") ? \"row\" : \"cell\"\r\n    },\r\n    _isFastEditingStarted: function() {\r\n        return this._isFastEditingAllowed() && this._fastEditingStarted\r\n    },\r\n    _getVisibleColumnCount: function() {\r\n        return this._columnsController.getVisibleColumns(null, true).length\r\n    },\r\n    _isCellInRow: function(cellPosition, includeCommandCells) {\r\n        var columnIndex = cellPosition.columnIndex;\r\n        var visibleColumnsCount = this._getVisibleColumnCount();\r\n        return includeCommandCells ? columnIndex >= 0 && columnIndex <= visibleColumnsCount - 1 : columnIndex > 0 && columnIndex < visibleColumnsCount - 1\r\n    },\r\n    _getCellElementFromTarget: function(target) {\r\n        var elementType = this._getElementType(target);\r\n        var $targetElement = (0, _renderer.default)(target);\r\n        var $cell;\r\n        if (\"cell\" === elementType) {\r\n            $cell = $targetElement.closest(\".\".concat(ROW_CLASS, \" > td\"))\r\n        } else {\r\n            $cell = $targetElement.children().not(\".\" + COMMAND_EXPAND_CLASS).first()\r\n        }\r\n        return $cell\r\n    },\r\n    _getRowsViewElement: function() {\r\n        var rowsView = this.getView(\"rowsView\");\r\n        return rowsView && rowsView.element()\r\n    },\r\n    isKeyboardEnabled: function() {\r\n        return this.option(\"keyboardNavigation.enabled\")\r\n    },\r\n    _processCanceledEditCellPosition: function(rowIndex, columnIndex) {\r\n        if (this._canceledCellPosition) {\r\n            var isCanceled = this._canceledCellPosition.rowIndex === rowIndex && this._canceledCellPosition.columnIndex === columnIndex;\r\n            this._canceledCellPosition = null;\r\n            return isCanceled\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            useLegacyKeyboardNavigation: false,\r\n            keyboardNavigation: {\r\n                enabled: true,\r\n                enterKeyAction: \"startEdit\",\r\n                enterKeyDirection: \"none\",\r\n                editOnKeyPress: false\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        keyboardNavigation: KeyboardNavigationController\r\n    },\r\n    extenders: {\r\n        views: {\r\n            rowsView: {\r\n                _rowClick: function(e) {\r\n                    var editRowIndex = this.getController(\"editing\").getEditRowIndex();\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    if (editRowIndex === e.rowIndex) {\r\n                        keyboardController.setCellFocusType()\r\n                    }\r\n                    var needTriggerPointerEventHandler = isMobile() && this.option(\"focusedRowEnabled\");\r\n                    if (needTriggerPointerEventHandler) {\r\n                        this._triggerPointerDownEventHandler(e)\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                _triggerPointerDownEventHandler: function(e) {\r\n                    var originalEvent = e.event.originalEvent;\r\n                    if (originalEvent) {\r\n                        var keyboardController = this.getController(\"keyboardNavigation\");\r\n                        var $cell = (0, _renderer.default)(originalEvent.target);\r\n                        var columnIndex = this.getCellIndex($cell);\r\n                        var column = this.getController(\"columns\").getVisibleColumns()[columnIndex];\r\n                        var row = this.getController(\"data\").items()[e.rowIndex];\r\n                        if (keyboardController._isAllowEditing(row, column)) {\r\n                            var eventArgs = (0, _index.createEvent)(originalEvent, {\r\n                                currentTarget: originalEvent.target\r\n                            });\r\n                            keyboardController._pointerEventHandler(eventArgs)\r\n                        }\r\n                    }\r\n                },\r\n                renderFocusState: function() {\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    var $rowsViewElement = this.element();\r\n                    if ($rowsViewElement && !(0, _selectors.focused)($rowsViewElement)) {\r\n                        $rowsViewElement.attr(\"tabindex\", null)\r\n                    }\r\n                    var rowIndex = keyboardController.getVisibleRowIndex();\r\n                    if (!(0, _type.isDefined)(rowIndex) || rowIndex < 0) {\r\n                        rowIndex = 0\r\n                    }\r\n                    var cellElements = this.getCellElements(rowIndex);\r\n                    if (keyboardController.isKeyboardEnabled() && cellElements.length) {\r\n                        this.updateFocusElementTabIndex(cellElements)\r\n                    }\r\n                },\r\n                updateFocusElementTabIndex: function(cellElements) {\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    var $row = cellElements.eq(0).parent();\r\n                    if (isGroupRow($row)) {\r\n                        keyboardController._applyTabIndexToElement($row)\r\n                    } else {\r\n                        var columnIndex = keyboardController.getColumnIndex();\r\n                        if (!(0, _type.isDefined)(columnIndex) || columnIndex < 0) {\r\n                            columnIndex = 0\r\n                        }\r\n                        this._updateFocusedCellTabIndex(cellElements, columnIndex)\r\n                    }\r\n                },\r\n                _updateFocusedCellTabIndex: function(cellElements, columnIndex) {\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    var cellElementsLength = cellElements ? cellElements.length : -1;\r\n                    var updateCellTabIndex = function($cell) {\r\n                        var isMasterDetailCell = keyboardController._isMasterDetailCell($cell);\r\n                        var isValidCell = keyboardController._isCellValid($cell);\r\n                        if (!isMasterDetailCell && isValidCell && isCellElement($cell)) {\r\n                            keyboardController._applyTabIndexToElement($cell);\r\n                            keyboardController.setCellFocusType();\r\n                            return true\r\n                        }\r\n                    };\r\n                    var $cell = cellElements.filter(\"[aria-colindex='\".concat(columnIndex + 1, \"']\"));\r\n                    if ($cell.length) {\r\n                        updateCellTabIndex($cell)\r\n                    } else {\r\n                        if (cellElementsLength <= columnIndex) {\r\n                            columnIndex = cellElementsLength - 1\r\n                        }\r\n                        for (var i = columnIndex; i < cellElementsLength; ++i) {\r\n                            if (updateCellTabIndex((0, _renderer.default)(cellElements[i]))) {\r\n                                break\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                renderDelayedTemplates: function(change) {\r\n                    this.callBase.apply(this, arguments);\r\n                    if (!change || !change.repaintChangesOnly) {\r\n                        this.renderFocusState()\r\n                    }\r\n                },\r\n                _renderCore: function(change) {\r\n                    this.callBase(change);\r\n                    if (!change || !change.repaintChangesOnly) {\r\n                        this.renderFocusState()\r\n                    }\r\n                },\r\n                _editCellPrepared: function($cell) {\r\n                    var editorInstance = this._getEditorInstance($cell);\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    var isEditingNavigationMode = keyboardController && keyboardController._isFastEditingStarted();\r\n                    if (editorInstance && isEditingNavigationMode) {\r\n                        this._handleEditingNavigationMode(editorInstance)\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                _handleEditingNavigationMode: function(editorInstance) {\r\n                    [\"downArrow\", \"upArrow\"].forEach(function(keyName) {\r\n                        var originalKeyHandler = editorInstance._supportedKeys()[keyName];\r\n                        editorInstance.registerKeyHandler(keyName, function(e) {\r\n                            var isDropDownOpened = \"true\" === editorInstance._input().attr(\"aria-expanded\");\r\n                            if (isDropDownOpened) {\r\n                                return originalKeyHandler && originalKeyHandler.call(editorInstance, e)\r\n                            }\r\n                        })\r\n                    });\r\n                    editorInstance.registerKeyHandler(\"leftArrow\", _common.noop);\r\n                    editorInstance.registerKeyHandler(\"rightArrow\", _common.noop);\r\n                    var isDateBoxWithMask = editorInstance.NAME === DATEBOX_WIDGET_NAME && editorInstance.option(\"useMaskBehavior\");\r\n                    if (isDateBoxWithMask) {\r\n                        editorInstance.registerKeyHandler(\"enter\", _common.noop)\r\n                    }\r\n                },\r\n                _getEditorInstance: function($cell) {\r\n                    var $editor = $cell.find(\".dx-texteditor\").eq(0);\r\n                    return _uiGrid_core2.default.getWidgetInstance($editor)\r\n                }\r\n            }\r\n        },\r\n        controllers: {\r\n            editing: {\r\n                editCell: function(rowIndex, columnIndex) {\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    if (keyboardController._processCanceledEditCellPosition(rowIndex, columnIndex)) {\r\n                        return false\r\n                    }\r\n                    var isCellEditing = this.callBase(rowIndex, columnIndex);\r\n                    if (isCellEditing) {\r\n                        keyboardController.setupFocusedView()\r\n                    }\r\n                    return isCellEditing\r\n                },\r\n                editRow: function(rowIndex) {\r\n                    var keyboardController = this.getController(\"keyboardNavigation\");\r\n                    var visibleColumnIndex = keyboardController.getVisibleColumnIndex();\r\n                    var column = this._columnsController.getVisibleColumns()[visibleColumnIndex];\r\n                    if (column && column.type || this.option(\"editing.mode\") === EDIT_MODE_FORM) {\r\n                        keyboardController._resetFocusedCell()\r\n                    }\r\n                    this.callBase(rowIndex)\r\n                },\r\n                addRow: function(parentKey) {\r\n                    this.getController(\"keyboardNavigation\").setupFocusedView();\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                getFocusedCellInRow: function(rowIndex) {\r\n                    var keyboardNavigationController = this.getController(\"keyboardNavigation\");\r\n                    var $cell = this.callBase(rowIndex);\r\n                    if (keyboardNavigationController.isKeyboardEnabled() && keyboardNavigationController._focusedCellPosition.rowIndex === rowIndex) {\r\n                        var $focusedCell = keyboardNavigationController._getFocusedCell();\r\n                        if (isElementDefined($focusedCell) && !$focusedCell.hasClass(COMMAND_EDIT_CLASS)) {\r\n                            $cell = $focusedCell\r\n                        }\r\n                    }\r\n                    return $cell\r\n                },\r\n                _processCanceledEditingCell: function() {\r\n                    var _this8 = this;\r\n                    this.closeEditCell().done(function() {\r\n                        var keyboardNavigation = _this8.getController(\"keyboardNavigation\");\r\n                        keyboardNavigation._updateFocus()\r\n                    })\r\n                },\r\n                init: function() {\r\n                    this.callBase();\r\n                    this._keyboardNavigationController = this.getController(\"keyboardNavigation\")\r\n                },\r\n                closeEditCell: function() {\r\n                    var keyboardNavigation = this.getController(\"keyboardNavigation\");\r\n                    keyboardNavigation._fastEditingStarted = false;\r\n                    var result = this.callBase.apply(this, arguments);\r\n                    keyboardNavigation._updateFocus();\r\n                    return result\r\n                },\r\n                _delayedInputFocus: function() {\r\n                    this._keyboardNavigationController._isNeedScroll = true;\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                _isEditingStart: function() {\r\n                    var keyboardNavigation = this.getController(\"keyboardNavigation\");\r\n                    var cancel = this.callBase.apply(this, arguments);\r\n                    if (cancel && !keyboardNavigation._isNeedFocus) {\r\n                        var $cell = keyboardNavigation._getFocusedCell();\r\n                        keyboardNavigation._focus($cell, true)\r\n                    }\r\n                    return cancel\r\n                }\r\n            },\r\n            data: {\r\n                _correctRowIndices: function(getRowIndexCorrection) {\r\n                    var that = this;\r\n                    var keyboardNavigationController = that.getController(\"keyboardNavigation\");\r\n                    var editorFactory = that.getController(\"editorFactory\");\r\n                    var focusedCellPosition = keyboardNavigationController._focusedCellPosition;\r\n                    that.callBase.apply(that, arguments);\r\n                    if (focusedCellPosition && focusedCellPosition.rowIndex >= 0) {\r\n                        var focusedRowIndexCorrection = getRowIndexCorrection(focusedCellPosition.rowIndex);\r\n                        if (focusedRowIndexCorrection) {\r\n                            focusedCellPosition.rowIndex += focusedRowIndexCorrection;\r\n                            editorFactory.refocus()\r\n                        }\r\n                    }\r\n                }\r\n            },\r\n            adaptiveColumns: {\r\n                _showHiddenCellsInView: function(_ref) {\r\n                    var viewName = _ref.viewName,\r\n                        $cells = _ref.$cells,\r\n                        isCommandColumn = _ref.isCommandColumn;\r\n                    this.callBase.apply(this, arguments);\r\n                    viewName === COLUMN_HEADERS_VIEW && !isCommandColumn && $cells.each(function(_, cellElement) {\r\n                        var $cell = (0, _renderer.default)(cellElement);\r\n                        isCellInHeaderRow($cell) && $cell.attr(\"tabindex\", 0)\r\n                    })\r\n                },\r\n                _hideVisibleCellInView: function(_ref2) {\r\n                    var viewName = _ref2.viewName,\r\n                        $cell = _ref2.$cell,\r\n                        isCommandColumn = _ref2.isCommandColumn;\r\n                    this.callBase.apply(this, arguments);\r\n                    if (viewName === COLUMN_HEADERS_VIEW && !isCommandColumn && isCellInHeaderRow($cell)) {\r\n                        $cell.removeAttr(\"tabindex\")\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/interval_translator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _math = require(\"../../core/utils/math\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar floor = Math.floor;\r\nvar _default = {\r\n    _intervalize: function(value, interval) {\r\n        if (!(0, _type.isDefined)(value)) {\r\n            return\r\n        }\r\n        if (\"datetime\" === this._businessRange.dataType) {\r\n            if ((0, _type.isNumeric)(value)) {\r\n                value = new Date(value)\r\n            } else {\r\n                value = new Date(value.getTime())\r\n            }\r\n            value = _date.default.correctDateWithUnitBeginning(value, interval, null, this._options.firstDayOfWeek)\r\n        } else {\r\n            value = (0, _math.adjust)(floor((0, _math.adjust)(value / interval)) * interval, interval)\r\n        }\r\n        return value\r\n    },\r\n    translate: function(bp, direction, interval) {\r\n        var that = this;\r\n        var specialValue = that.translateSpecialCase(bp);\r\n        if ((0, _type.isDefined)(specialValue)) {\r\n            return Math.round(specialValue)\r\n        }\r\n        interval = interval || that._options.interval;\r\n        if (!that.isValid(bp, interval)) {\r\n            return null\r\n        }\r\n        return that.to(bp, direction, interval)\r\n    },\r\n    getInterval: function() {\r\n        return Math.round(this._canvasOptions.ratioOfCanvasRange * (this._businessRange.interval || Math.abs(this._canvasOptions.rangeMax - this._canvasOptions.rangeMin)))\r\n    },\r\n    zoom: function() {},\r\n    getMinScale: function() {},\r\n    getScale: function() {},\r\n    _parse: function(value) {\r\n        return \"datetime\" === this._businessRange.dataType ? new Date(value) : Number(value)\r\n    },\r\n    _fromValue: function(value) {\r\n        return this._parse(value)\r\n    },\r\n    _toValue: function(value) {\r\n        return this._parse(value)\r\n    },\r\n    isValid: function(value, interval) {\r\n        var that = this;\r\n        var co = that._canvasOptions;\r\n        var rangeMin = co.rangeMin;\r\n        var rangeMax = co.rangeMax;\r\n        interval = interval || that._options.interval;\r\n        if (null === value || isNaN(value)) {\r\n            return false\r\n        }\r\n        value = \"datetime\" === that._businessRange.dataType && (0, _type.isNumeric)(value) ? new Date(value) : value;\r\n        if (interval !== that._options.interval) {\r\n            rangeMin = that._intervalize(rangeMin, interval);\r\n            rangeMax = that._intervalize(rangeMax, interval)\r\n        }\r\n        if (value.valueOf() < rangeMin || value.valueOf() >= _date.default.addInterval(rangeMax, interval)) {\r\n            return false\r\n        }\r\n        return true\r\n    },\r\n    to: function(bp, direction, interval) {\r\n        var that = this;\r\n        interval = interval || that._options.interval;\r\n        var v1 = that._intervalize(bp, interval);\r\n        var v2 = _date.default.addInterval(v1, interval);\r\n        var res = that._to(v1);\r\n        var p2 = that._to(v2);\r\n        if (!direction) {\r\n            res = floor((res + p2) / 2)\r\n        } else {\r\n            if (direction > 0) {\r\n                res = p2\r\n            }\r\n        }\r\n        return res\r\n    },\r\n    _to: function(value) {\r\n        var co = this._canvasOptions;\r\n        var rMin = co.rangeMinVisible;\r\n        var rMax = co.rangeMaxVisible;\r\n        var offset = value - rMin;\r\n        if (value < rMin) {\r\n            offset = 0\r\n        } else {\r\n            if (value > rMax) {\r\n                offset = _date.default.addInterval(rMax, this._options.interval) - rMin\r\n            }\r\n        }\r\n        return this._conversionValue(this._calculateProjection(offset * this._canvasOptions.ratioOfCanvasRange))\r\n    },\r\n    from: function(position, direction) {\r\n        var that = this;\r\n        var origInterval = that._options.interval;\r\n        var interval = origInterval;\r\n        var co = that._canvasOptions;\r\n        var rMin = co.rangeMinVisible;\r\n        var rMax = co.rangeMaxVisible;\r\n        var value;\r\n        if (\"datetime\" === that._businessRange.dataType) {\r\n            interval = _date.default.dateToMilliseconds(origInterval)\r\n        }\r\n        value = that._calculateUnProjection((position - that._canvasOptions.startPoint) / that._canvasOptions.ratioOfCanvasRange);\r\n        value = that._intervalize(_date.default.addInterval(value, interval / 2, direction > 0), origInterval);\r\n        if (value < rMin) {\r\n            value = rMin\r\n        } else {\r\n            if (value > rMax) {\r\n                value = rMax\r\n            }\r\n        }\r\n        return value\r\n    },\r\n    _add: function() {\r\n        return NaN\r\n    },\r\n    isValueProlonged: true\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/deferred.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.fromPromise = fromPromise;\r\nexports.setStrategy = setStrategy;\r\nexports.Deferred = Deferred;\r\nexports.when = when;\r\nvar _type = require(\"../utils/type\");\r\nvar _extend = require(\"../utils/extend\");\r\nvar _callbacks = _interopRequireDefault(require(\"../utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar deferredConfig = [{\r\n    method: \"resolve\",\r\n    handler: \"done\",\r\n    state: \"resolved\"\r\n}, {\r\n    method: \"reject\",\r\n    handler: \"fail\",\r\n    state: \"rejected\"\r\n}, {\r\n    method: \"notify\",\r\n    handler: \"progress\"\r\n}];\r\nvar _DeferredObj = function() {\r\n    var that = this;\r\n    this._state = \"pending\";\r\n    this._promise = {};\r\n    deferredConfig.forEach(function(config) {\r\n        var methodName = config.method;\r\n        this[methodName + \"Callbacks\"] = new _callbacks.default;\r\n        this[methodName] = function() {\r\n            return this[methodName + \"With\"](this._promise, arguments)\r\n        }.bind(this);\r\n        this._promise[config.handler] = function(handler) {\r\n            if (!handler) {\r\n                return this\r\n            }\r\n            var callbacks = that[methodName + \"Callbacks\"];\r\n            if (callbacks.fired()) {\r\n                handler.apply(that[methodName + \"Context\"], that[methodName + \"Args\"])\r\n            } else {\r\n                callbacks.add(function(context, args) {\r\n                    handler.apply(context, args)\r\n                }.bind(this))\r\n            }\r\n            return this\r\n        }\r\n    }.bind(this));\r\n    this._promise.always = function(handler) {\r\n        return this.done(handler).fail(handler)\r\n    };\r\n    this._promise.catch = function(handler) {\r\n        return this.then(null, handler)\r\n    };\r\n    this._promise.then = function(resolve, reject) {\r\n        var result = new _DeferredObj;\r\n        [\"done\", \"fail\"].forEach(function(method) {\r\n            var callback = \"done\" === method ? resolve : reject;\r\n            this[method](function() {\r\n                if (!callback) {\r\n                    result[\"done\" === method ? \"resolve\" : \"reject\"].apply(this, arguments);\r\n                    return\r\n                }\r\n                var callbackResult = callback && callback.apply(this, arguments);\r\n                if ((0, _type.isDeferred)(callbackResult)) {\r\n                    callbackResult.done(result.resolve).fail(result.reject)\r\n                } else {\r\n                    if ((0, _type.isPromise)(callbackResult)) {\r\n                        callbackResult.then(result.resolve, result.reject)\r\n                    } else {\r\n                        result.resolve.apply(this, (0, _type.isDefined)(callbackResult) ? [callbackResult] : arguments)\r\n                    }\r\n                }\r\n            })\r\n        }.bind(this));\r\n        return result.promise()\r\n    };\r\n    this._promise.state = function() {\r\n        return that._state\r\n    };\r\n    this._promise.promise = function(args) {\r\n        return args ? (0, _extend.extend)(args, that._promise) : that._promise\r\n    };\r\n    this._promise.promise(this)\r\n};\r\ndeferredConfig.forEach(function(config) {\r\n    var methodName = config.method;\r\n    var state = config.state;\r\n    _DeferredObj.prototype[methodName + \"With\"] = function(context, args) {\r\n        var callbacks = this[methodName + \"Callbacks\"];\r\n        if (\"pending\" === this.state()) {\r\n            this[methodName + \"Args\"] = args;\r\n            this[methodName + \"Context\"] = context;\r\n            if (state) {\r\n                this._state = state\r\n            }\r\n            callbacks.fire(context, args)\r\n        }\r\n        return this\r\n    }\r\n});\r\n\r\nfunction fromPromise(promise, context) {\r\n    if ((0, _type.isDeferred)(promise)) {\r\n        return promise\r\n    } else {\r\n        if ((0, _type.isPromise)(promise)) {\r\n            var d = new _DeferredObj;\r\n            promise.then(function() {\r\n                d.resolveWith.apply(d, [context].concat([\r\n                    [].slice.call(arguments)\r\n                ]))\r\n            }, function() {\r\n                d.rejectWith.apply(d, [context].concat([\r\n                    [].slice.call(arguments)\r\n                ]))\r\n            });\r\n            return d\r\n        }\r\n    }\r\n    return (new _DeferredObj).resolveWith(context, [promise])\r\n}\r\nvar whenFunc = function() {\r\n    if (1 === arguments.length) {\r\n        return fromPromise(arguments[0])\r\n    }\r\n    var values = [].slice.call(arguments);\r\n    var contexts = [];\r\n    var resolvedCount = 0;\r\n    var deferred = new _DeferredObj;\r\n    var updateState = function(i) {\r\n        return function(value) {\r\n            contexts[i] = this;\r\n            values[i] = arguments.length > 1 ? [].slice.call(arguments) : value;\r\n            resolvedCount++;\r\n            if (resolvedCount === values.length) {\r\n                deferred.resolveWith(contexts, values)\r\n            }\r\n        }\r\n    };\r\n    for (var i = 0; i < values.length; i++) {\r\n        if ((0, _type.isDeferred)(values[i])) {\r\n            values[i].promise().done(updateState(i)).fail(deferred.reject)\r\n        } else {\r\n            resolvedCount++\r\n        }\r\n    }\r\n    if (resolvedCount === values.length) {\r\n        deferred.resolveWith(contexts, values)\r\n    }\r\n    return deferred.promise()\r\n};\r\n\r\nfunction setStrategy(value) {\r\n    _DeferredObj = value.Deferred;\r\n    whenFunc = value.when\r\n}\r\n\r\nfunction Deferred() {\r\n    return new _DeferredObj\r\n}\r\n\r\nfunction when() {\r\n    return whenFunc.apply(this, arguments)\r\n}\r\n","/**\r\n * DevExtreme (viz/series/base_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.Series = Series;\r\nexports.mixins = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base_point = require(\"./points/base_point\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _consts = _interopRequireDefault(require(\"../components/consts\"));\r\nvar _range_data_calculator = _interopRequireDefault(require(\"./helpers/range_data_calculator\"));\r\nvar scatterSeries = _interopRequireWildcard(require(\"./scatter_series\"));\r\nvar lineSeries = _interopRequireWildcard(require(\"./line_series\"));\r\nvar areaSeries = _interopRequireWildcard(require(\"./area_series\"));\r\nvar barSeries = _interopRequireWildcard(require(\"./bar_series\"));\r\nvar _range_series = require(\"./range_series\");\r\nvar _bubble_series = require(\"./bubble_series\");\r\nvar pieSeries = _interopRequireWildcard(require(\"./pie_series\"));\r\nvar financialSeries = _interopRequireWildcard(require(\"./financial_series\"));\r\nvar stackedSeries = _interopRequireWildcard(require(\"./stacked_series\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar seriesNS = {};\r\nvar states = _consts.default.states;\r\nvar DISCRETE = \"discrete\";\r\nvar SELECTED_STATE = states.selectedMark;\r\nvar HOVER_STATE = states.hoverMark;\r\nvar HOVER = states.hover;\r\nvar NORMAL = states.normal;\r\nvar SELECTION = states.selection;\r\nvar APPLY_SELECTED = states.applySelected;\r\nvar APPLY_HOVER = states.applyHover;\r\nvar RESET_ITEM = states.resetItem;\r\nvar NONE_MODE = \"none\";\r\nvar INCLUDE_POINTS = \"includepoints\";\r\nvar NEAREST_POINT = \"nearestpoint\";\r\nvar SERIES_SELECTION_CHANGED = \"seriesSelectionChanged\";\r\nvar POINT_SELECTION_CHANGED = \"pointSelectionChanged\";\r\nvar SERIES_HOVER_CHANGED = \"seriesHoverChanged\";\r\nvar POINT_HOVER_CHANGED = \"pointHoverChanged\";\r\nvar ALL_SERIES_POINTS = \"allseriespoints\";\r\nvar ALL_ARGUMENT_POINTS = \"allargumentpoints\";\r\nvar POINT_HOVER = \"pointHover\";\r\nvar CLEAR_POINT_HOVER = \"clearPointHover\";\r\nvar SERIES_SELECT = \"seriesSelect\";\r\nvar POINT_SELECT = \"pointSelect\";\r\nvar POINT_DESELECT = \"pointDeselect\";\r\nvar getEmptyBusinessRange = function() {\r\n    return {\r\n        arg: {},\r\n        val: {}\r\n    }\r\n};\r\n\r\nfunction triggerEvent(element, event, point) {\r\n    element && element.trigger(event, point)\r\n}\r\nseriesNS.mixins = {\r\n    chart: {},\r\n    pie: {},\r\n    polar: {}\r\n};\r\nseriesNS.mixins.chart.scatter = scatterSeries.chart;\r\nseriesNS.mixins.polar.scatter = scatterSeries.polar;\r\n(0, _extend2.extend)(seriesNS.mixins.pie, pieSeries);\r\n(0, _extend2.extend)(seriesNS.mixins.chart, lineSeries.chart, areaSeries.chart, barSeries.chart, _range_series.chart, _bubble_series.chart, financialSeries, stackedSeries.chart);\r\n(0, _extend2.extend)(seriesNS.mixins.polar, lineSeries.polar, areaSeries.polar, barSeries.polar, stackedSeries.polar);\r\n\r\nfunction includePointsMode(mode) {\r\n    mode = (0, _utils.normalizeEnum)(mode);\r\n    return mode === INCLUDE_POINTS || mode === ALL_SERIES_POINTS\r\n}\r\n\r\nfunction getLabelOptions(labelOptions, defaultColor) {\r\n    var opt = labelOptions || {};\r\n    var labelFont = (0, _extend2.extend)({}, opt.font) || {};\r\n    var labelBorder = opt.border || {};\r\n    var labelConnector = opt.connector || {};\r\n    var backgroundAttr = {\r\n        fill: opt.backgroundColor || defaultColor,\r\n        \"stroke-width\": labelBorder.visible ? labelBorder.width || 0 : 0,\r\n        stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : \"none\",\r\n        dashStyle: labelBorder.dashStyle\r\n    };\r\n    var connectorAttr = {\r\n        stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : \"none\",\r\n        \"stroke-width\": labelConnector.visible ? labelConnector.width || 0 : 0\r\n    };\r\n    labelFont.color = \"none\" === opt.backgroundColor && \"#ffffff\" === (0, _utils.normalizeEnum)(labelFont.color) && \"inside\" !== opt.position ? defaultColor : labelFont.color;\r\n    return {\r\n        alignment: opt.alignment,\r\n        format: opt.format,\r\n        argumentFormat: opt.argumentFormat,\r\n        customizeText: (0, _type.isFunction)(opt.customizeText) ? opt.customizeText : void 0,\r\n        attributes: {\r\n            font: labelFont\r\n        },\r\n        visible: 0 !== labelFont.size ? opt.visible : false,\r\n        showForZeroValues: opt.showForZeroValues,\r\n        horizontalOffset: opt.horizontalOffset,\r\n        verticalOffset: opt.verticalOffset,\r\n        radialOffset: opt.radialOffset,\r\n        background: backgroundAttr,\r\n        position: opt.position,\r\n        connector: connectorAttr,\r\n        rotationAngle: opt.rotationAngle,\r\n        wordWrap: opt.wordWrap,\r\n        textOverflow: opt.textOverflow,\r\n        cssClass: opt.cssClass\r\n    }\r\n}\r\n\r\nfunction setPointHoverState(point, legendCallback) {\r\n    point.fullState |= HOVER_STATE;\r\n    point.applyView(legendCallback)\r\n}\r\n\r\nfunction releasePointHoverState(point, legendCallback) {\r\n    point.fullState &= ~HOVER_STATE;\r\n    point.applyView(legendCallback);\r\n    point.releaseHoverState()\r\n}\r\n\r\nfunction setPointSelectedState(point, legendCallback) {\r\n    point.fullState |= SELECTED_STATE;\r\n    point.applyView(legendCallback)\r\n}\r\n\r\nfunction releasePointSelectedState(point, legendCallback) {\r\n    point.fullState &= ~SELECTED_STATE;\r\n    point.applyView(legendCallback)\r\n}\r\n\r\nfunction mergePointOptionsCore(base, extra) {\r\n    var options = (0, _extend2.extend)({}, base, extra);\r\n    options.border = (0, _extend2.extend)({}, base && base.border, extra && extra.border);\r\n    return options\r\n}\r\n\r\nfunction mergePointOptions(base, extra) {\r\n    var options = mergePointOptionsCore(base, extra);\r\n    options.image = (0, _extend2.extend)(true, {}, base.image, extra.image);\r\n    options.selectionStyle = mergePointOptionsCore(base.selectionStyle, extra.selectionStyle);\r\n    options.hoverStyle = mergePointOptionsCore(base.hoverStyle, extra.hoverStyle);\r\n    return options\r\n}\r\n\r\nfunction Series(settings, options) {\r\n    var that = this;\r\n    that.fullState = 0;\r\n    that._extGroups = settings;\r\n    that._renderer = settings.renderer;\r\n    that._group = settings.renderer.g().attr({\r\n        \"class\": \"dxc-series\"\r\n    });\r\n    that._eventTrigger = settings.eventTrigger;\r\n    that._eventPipe = settings.eventPipe;\r\n    that._incidentOccurred = settings.incidentOccurred;\r\n    that._legendCallback = _common.noop;\r\n    that.updateOptions(options, settings)\r\n}\r\n\r\nfunction getData(pointData) {\r\n    return pointData.data\r\n}\r\n\r\nfunction getValueChecker(axisType, axis) {\r\n    if (!axis || \"logarithmic\" !== axisType || false !== axis.getOptions().allowNegatives) {\r\n        return function() {\r\n            return true\r\n        }\r\n    } else {\r\n        return function(value) {\r\n            return value > 0\r\n        }\r\n    }\r\n}\r\nSeries.prototype = {\r\n    constructor: Series,\r\n    _createLegendState: _common.noop,\r\n    getLegendStyles: function() {\r\n        return this._styles.legendStyles\r\n    },\r\n    _createStyles: function(options) {\r\n        var that = this;\r\n        var mainSeriesColor = options.mainSeriesColor;\r\n        that._styles = {\r\n            normal: that._parseStyle(options, mainSeriesColor, mainSeriesColor),\r\n            hover: that._parseStyle(options.hoverStyle || {}, mainSeriesColor, mainSeriesColor),\r\n            selection: that._parseStyle(options.selectionStyle || {}, mainSeriesColor, mainSeriesColor),\r\n            legendStyles: {\r\n                normal: that._createLegendState(options, mainSeriesColor),\r\n                hover: that._createLegendState(options.hoverStyle || {}, mainSeriesColor),\r\n                selection: that._createLegendState(options.selectionStyle || {}, mainSeriesColor)\r\n            }\r\n        }\r\n    },\r\n    setClippingParams: function(baseId, wideId, forceClipping) {\r\n        var clipLabels = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n        this._paneClipRectID = baseId;\r\n        this._widePaneClipRectID = wideId;\r\n        this._forceClipping = forceClipping;\r\n        this._clipLabels = clipLabels\r\n    },\r\n    applyClip: function() {\r\n        this._group.attr({\r\n            \"clip-path\": this._paneClipRectID\r\n        })\r\n    },\r\n    resetClip: function() {\r\n        this._group.attr({\r\n            \"clip-path\": null\r\n        })\r\n    },\r\n    getTagField: function() {\r\n        return this._options.tagField || \"tag\"\r\n    },\r\n    getValueFields: _common.noop,\r\n    getSizeField: _common.noop,\r\n    getArgumentField: _common.noop,\r\n    getPoints: function() {\r\n        return this._points\r\n    },\r\n    getPointsInViewPort: function() {\r\n        return _range_data_calculator.default.getPointsInViewPort(this)\r\n    },\r\n    _createPoint: function(data, index, oldPoint) {\r\n        data.index = index;\r\n        var that = this;\r\n        var pointsByArgument = that.pointsByArgument;\r\n        var options = that._getCreatingPointOptions(data);\r\n        var arg = data.argument.valueOf();\r\n        var point = oldPoint;\r\n        if (point) {\r\n            point.update(data, options)\r\n        } else {\r\n            point = new _base_point.Point(that, data, options);\r\n            if (that.isSelected() && includePointsMode(that.lastSelectionMode)) {\r\n                point.setView(SELECTION)\r\n            }\r\n        }\r\n        var pointByArgument = pointsByArgument[arg];\r\n        if (pointByArgument) {\r\n            pointByArgument.push(point)\r\n        } else {\r\n            pointsByArgument[arg] = [point]\r\n        }\r\n        if (point.hasValue()) {\r\n            that.customizePoint(point, data)\r\n        }\r\n        return point\r\n    },\r\n    getRangeData: function() {\r\n        return this._visible ? this._getRangeData() : getEmptyBusinessRange()\r\n    },\r\n    getArgumentRange: function() {\r\n        return this._visible ? _range_data_calculator.default.getArgumentRange(this) : getEmptyBusinessRange()\r\n    },\r\n    getViewport: function() {\r\n        return _range_data_calculator.default.getViewport(this)\r\n    },\r\n    _deleteGroup: function(groupName) {\r\n        var group = this[groupName];\r\n        if (group) {\r\n            group.dispose();\r\n            this[groupName] = null\r\n        }\r\n    },\r\n    updateOptions: function(newOptions, settings) {\r\n        var that = this;\r\n        var widgetType = newOptions.widgetType;\r\n        var oldType = that.type;\r\n        var newType = newOptions.type;\r\n        that.type = newType && (0, _utils.normalizeEnum)(newType.toString());\r\n        if (!that._checkType(widgetType) || that._checkPolarBarType(widgetType, newOptions)) {\r\n            that.dispose();\r\n            that.isUpdated = false;\r\n            return\r\n        }\r\n        if (oldType !== that.type) {\r\n            that._firstDrawing = true;\r\n            that._resetType(oldType, widgetType);\r\n            that._setType(that.type, widgetType)\r\n        } else {\r\n            that._defineDrawingState()\r\n        }\r\n        that._options = newOptions;\r\n        that._pointOptions = null;\r\n        that.name = newOptions.name;\r\n        that.pane = newOptions.pane;\r\n        that.tag = newOptions.tag;\r\n        if (settings) {\r\n            that._seriesModes = settings.commonSeriesModes || that._seriesModes;\r\n            that._valueAxis = settings.valueAxis || that._valueAxis;\r\n            that.axis = that._valueAxis && that._valueAxis.name;\r\n            that._argumentAxis = settings.argumentAxis || that._argumentAxis\r\n        }\r\n        that._createStyles(newOptions);\r\n        that._stackName = null;\r\n        that._updateOptions(newOptions);\r\n        that._visible = newOptions.visible;\r\n        that.isUpdated = true;\r\n        that.stack = newOptions.stack;\r\n        that.barOverlapGroup = newOptions.barOverlapGroup;\r\n        that._createGroups();\r\n        that._processEmptyValue = newOptions.ignoreEmptyPoints ? function(x) {\r\n            return null === x ? void 0 : x\r\n        } : function(x) {\r\n            return x\r\n        }\r\n    },\r\n    _defineDrawingState: function() {\r\n        this._firstDrawing = true\r\n    },\r\n    _disposePoints: function(points) {\r\n        (0, _iterator.each)(points || [], function(_, p) {\r\n            p.dispose()\r\n        })\r\n    },\r\n    updateDataType: function(settings) {\r\n        var that = this;\r\n        that.argumentType = settings.argumentType;\r\n        that.valueType = settings.valueType;\r\n        that.argumentAxisType = settings.argumentAxisType;\r\n        that.valueAxisType = settings.valueAxisType;\r\n        that.showZero = settings.showZero;\r\n        this._argumentChecker = getValueChecker(settings.argumentAxisType, that.getArgumentAxis());\r\n        this._valueChecker = getValueChecker(settings.valueAxisType, that.getValueAxis());\r\n        return that\r\n    },\r\n    _argumentChecker: function() {\r\n        return true\r\n    },\r\n    _valueChecker: function() {\r\n        return true\r\n    },\r\n    getOptions: function() {\r\n        return this._options\r\n    },\r\n    _getOldPoint: function(data, oldPointsByArgument, index) {\r\n        var arg = data.argument && data.argument.valueOf();\r\n        var point = (oldPointsByArgument[arg] || [])[0];\r\n        if (point) {\r\n            oldPointsByArgument[arg].splice(0, 1)\r\n        }\r\n        return point\r\n    },\r\n    updateData: function(data) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var nameField = options.nameField;\r\n        data = data || [];\r\n        if (data.length) {\r\n            that._canRenderCompleteHandle = true\r\n        }\r\n        var dataSelector = this._getPointDataSelector();\r\n        var itemsWithoutArgument = 0;\r\n        that._data = data.reduce(function(data, dataItem, index) {\r\n            var pointDataItem = dataSelector(dataItem);\r\n            if ((0, _type.isDefined)(pointDataItem.argument)) {\r\n                if (!nameField || dataItem[nameField] === options.nameFieldValue) {\r\n                    pointDataItem.index = index;\r\n                    data.push(pointDataItem)\r\n                }\r\n            } else {\r\n                itemsWithoutArgument++\r\n            }\r\n            return data\r\n        }, []);\r\n        if (itemsWithoutArgument && itemsWithoutArgument === data.length) {\r\n            that._incidentOccurred(\"W2002\", [that.name, that.getArgumentField()])\r\n        }\r\n        that._endUpdateData()\r\n    },\r\n    _getData: function() {\r\n        var data = this._data || [];\r\n        if (this.useAggregation()) {\r\n            data = this._resample(this.getArgumentAxis().getAggregationInfo(this._useAllAggregatedPoints, this.argumentAxisType !== DISCRETE ? this.getArgumentRange() : {}), data)\r\n        }\r\n        return data\r\n    },\r\n    useAggregation: function() {\r\n        var aggregation = this.getOptions().aggregation;\r\n        return aggregation && aggregation.enabled\r\n    },\r\n    autoHidePointMarkersEnabled: _common.noop,\r\n    usePointsToDefineAutoHiding: _common.noop,\r\n    createPoints: function(useAllAggregatedPoints) {\r\n        this._normalizeUsingAllAggregatedPoints(useAllAggregatedPoints);\r\n        this._createPoints()\r\n    },\r\n    _normalizeUsingAllAggregatedPoints: function(useAllAggregatedPoints) {\r\n        this._useAllAggregatedPoints = this.useAggregation() && (this.argumentAxisType === DISCRETE || (this._data || []).length > 1 && !!useAllAggregatedPoints)\r\n    },\r\n    _createPoints: function() {\r\n        var that = this;\r\n        var oldPointsByArgument = that.pointsByArgument || {};\r\n        var data = that._getData();\r\n        that.pointsByArgument = {};\r\n        that._calculateErrorBars(data);\r\n        var skippedFields = {};\r\n        var points = data.reduce(function(points, pointDataItem) {\r\n            if (that._checkData(pointDataItem, skippedFields)) {\r\n                var pointIndex = points.length;\r\n                var oldPoint = that._getOldPoint(pointDataItem, oldPointsByArgument, pointIndex);\r\n                var point = that._createPoint(pointDataItem, pointIndex, oldPoint);\r\n                points.push(point)\r\n            }\r\n            return points\r\n        }, []);\r\n        for (var field in skippedFields) {\r\n            if (skippedFields[field] === data.length) {\r\n                that._incidentOccurred(\"W2002\", [that.name, field])\r\n            }\r\n        }\r\n        Object.keys(oldPointsByArgument).forEach(function(key) {\r\n            return that._disposePoints(oldPointsByArgument[key])\r\n        });\r\n        that._points = points\r\n    },\r\n    _removeOldSegments: function() {\r\n        var that = this;\r\n        var startIndex = that._segments.length;\r\n        (0, _iterator.each)(that._graphics.splice(startIndex, that._graphics.length) || [], function(_, elem) {\r\n            that._removeElement(elem)\r\n        });\r\n        if (that._trackers) {\r\n            (0, _iterator.each)(that._trackers.splice(startIndex, that._trackers.length) || [], function(_, elem) {\r\n                elem.remove()\r\n            })\r\n        }\r\n    },\r\n    _drawElements: function(animationEnabled, firstDrawing, translateAllPoints) {\r\n        var that = this;\r\n        var points = that._points || [];\r\n        var closeSegment = points[0] && points[0].hasValue() && that._options.closed;\r\n        var groupForPoint = {\r\n            markers: that._markersGroup,\r\n            errorBars: that._errorBarGroup\r\n        };\r\n        that._drawnPoints = [];\r\n        that._graphics = that._graphics || [];\r\n        that._segments = [];\r\n        var segments = points.reduce(function(segments, p) {\r\n            var segment = segments[segments.length - 1];\r\n            if (!p.translated || translateAllPoints) {\r\n                p.translate();\r\n                !translateAllPoints && p.setDefaultCoords()\r\n            }\r\n            if (p.hasValue() && p.hasCoords()) {\r\n                translateAllPoints && that._drawPoint({\r\n                    point: p,\r\n                    groups: groupForPoint,\r\n                    hasAnimation: animationEnabled,\r\n                    firstDrawing: firstDrawing\r\n                });\r\n                segment.push(p)\r\n            } else {\r\n                if (!p.hasValue()) {\r\n                    segment.length && segments.push([])\r\n                } else {\r\n                    p.setInvisibility()\r\n                }\r\n            }\r\n            return segments\r\n        }, [\r\n            []\r\n        ]);\r\n        segments.forEach(function(segment, index) {\r\n            if (segment.length) {\r\n                that._drawSegment(segment, animationEnabled, index, closeSegment && index === this.length - 1)\r\n            }\r\n        }, segments);\r\n        that._firstDrawing = !points.length;\r\n        that._removeOldSegments();\r\n        animationEnabled && that._animate(firstDrawing)\r\n    },\r\n    draw: function(animationEnabled, hideLayoutLabels, legendCallback) {\r\n        var that = this;\r\n        var firstDrawing = that._firstDrawing;\r\n        that._legendCallback = legendCallback || that._legendCallback;\r\n        if (!that._visible) {\r\n            animationEnabled = false;\r\n            that._group.remove();\r\n            return\r\n        }\r\n        that._appendInGroup();\r\n        that._applyVisibleArea();\r\n        that._setGroupsSettings(animationEnabled, firstDrawing);\r\n        !firstDrawing && !that._resetApplyingAnimation && that._drawElements(false, firstDrawing, false);\r\n        that._drawElements(animationEnabled, firstDrawing, true);\r\n        hideLayoutLabels && that.hideLabels();\r\n        if (that.isSelected()) {\r\n            that._changeStyle(that.lastSelectionMode, void 0, true)\r\n        } else {\r\n            if (that.isHovered()) {\r\n                that._changeStyle(that.lastHoverMode, void 0, true)\r\n            } else {\r\n                that._applyStyle(that._styles.normal)\r\n            }\r\n        }\r\n        that._resetApplyingAnimation = false\r\n    },\r\n    _setLabelGroupSettings: function(animationEnabled) {\r\n        var settings = {\r\n            \"class\": \"dxc-labels\",\r\n            \"pointer-events\": \"none\"\r\n        };\r\n        this._clipLabels && this._applyElementsClipRect(settings);\r\n        this._applyClearingSettings(settings);\r\n        animationEnabled && (settings.opacity = .001);\r\n        this._labelsGroup.attr(settings).append(this._extGroups.labelsGroup)\r\n    },\r\n    _checkType: function(widgetType) {\r\n        return !!seriesNS.mixins[widgetType][this.type]\r\n    },\r\n    _checkPolarBarType: function(widgetType, options) {\r\n        return \"polar\" === widgetType && options.spiderWidget && this.type.indexOf(\"bar\") !== -1\r\n    },\r\n    _resetType: function(seriesType, widgetType) {\r\n        var methodName;\r\n        var methods;\r\n        if (seriesType) {\r\n            methods = seriesNS.mixins[widgetType][seriesType];\r\n            for (methodName in methods) {\r\n                delete this[methodName]\r\n            }\r\n        }\r\n    },\r\n    _setType: function(seriesType, widgetType) {\r\n        var methodName;\r\n        var methods = seriesNS.mixins[widgetType][seriesType];\r\n        for (methodName in methods) {\r\n            this[methodName] = methods[methodName]\r\n        }\r\n    },\r\n    _setPointsView: function(view, target) {\r\n        this.getPoints().forEach(function(point) {\r\n            if (target !== point) {\r\n                point.setView(view)\r\n            }\r\n        })\r\n    },\r\n    _resetPointsView: function(view, target) {\r\n        this.getPoints().forEach(function(point) {\r\n            if (target !== point) {\r\n                point.resetView(view)\r\n            }\r\n        })\r\n    },\r\n    _resetNearestPoint: function() {\r\n        var that = this;\r\n        that._nearestPoint && null !== that._nearestPoint.series && that._nearestPoint.resetView(HOVER);\r\n        that._nearestPoint = null\r\n    },\r\n    _setSelectedState: function(mode) {\r\n        var that = this;\r\n        that.lastSelectionMode = (0, _utils.normalizeEnum)(mode || that._options.selectionMode);\r\n        that.fullState = that.fullState | SELECTED_STATE;\r\n        that._resetNearestPoint();\r\n        that._changeStyle(that.lastSelectionMode);\r\n        if (that.lastSelectionMode !== NONE_MODE && that.isHovered() && includePointsMode(that.lastHoverMode)) {\r\n            that._resetPointsView(HOVER)\r\n        }\r\n    },\r\n    _releaseSelectedState: function() {\r\n        var that = this;\r\n        that.fullState = that.fullState & ~SELECTED_STATE;\r\n        that._changeStyle(that.lastSelectionMode, SELECTION);\r\n        if (that.lastSelectionMode !== NONE_MODE && that.isHovered() && includePointsMode(that.lastHoverMode)) {\r\n            that._setPointsView(HOVER)\r\n        }\r\n    },\r\n    isFullStackedSeries: function() {\r\n        return 0 === this.type.indexOf(\"fullstacked\")\r\n    },\r\n    isStackedSeries: function() {\r\n        return 0 === this.type.indexOf(\"stacked\")\r\n    },\r\n    resetApplyingAnimation: function(isFirstDrawing) {\r\n        this._resetApplyingAnimation = true;\r\n        if (isFirstDrawing) {\r\n            this._firstDrawing = true\r\n        }\r\n    },\r\n    isFinancialSeries: function() {\r\n        return \"stock\" === this.type || \"candlestick\" === this.type\r\n    },\r\n    _canChangeView: function() {\r\n        return !this.isSelected() && (0, _utils.normalizeEnum)(this._options.hoverMode) !== NONE_MODE\r\n    },\r\n    _changeStyle: function(mode, resetView, skipPoints) {\r\n        var that = this;\r\n        var state = that.fullState;\r\n        var styles = [NORMAL, HOVER, SELECTION, SELECTION];\r\n        if (\"none\" === that.lastHoverMode) {\r\n            state &= ~HOVER_STATE\r\n        }\r\n        if (\"none\" === that.lastSelectionMode) {\r\n            state &= ~SELECTED_STATE\r\n        }\r\n        if (includePointsMode(mode) && !skipPoints) {\r\n            if (!resetView) {\r\n                that._setPointsView(styles[state])\r\n            } else {\r\n                that._resetPointsView(resetView)\r\n            }\r\n        }\r\n        that._legendCallback([RESET_ITEM, APPLY_HOVER, APPLY_SELECTED, APPLY_SELECTED][state]);\r\n        that._applyStyle(that._styles[styles[state]])\r\n    },\r\n    updateHover: function(x, y) {\r\n        var that = this;\r\n        var currentNearestPoint = that._nearestPoint;\r\n        var point = that.isHovered() && that.lastHoverMode === NEAREST_POINT && that.getNeighborPoint(x, y);\r\n        if (point !== currentNearestPoint && !(that.isSelected() && that.lastSelectionMode !== NONE_MODE)) {\r\n            that._resetNearestPoint();\r\n            if (point) {\r\n                point.setView(HOVER);\r\n                that._nearestPoint = point\r\n            }\r\n        }\r\n    },\r\n    _getMainAxisName: function() {\r\n        return this._options.rotated ? \"X\" : \"Y\"\r\n    },\r\n    areLabelsVisible: function() {\r\n        return !(0, _type.isDefined)(this._options.maxLabelCount) || this._points.length <= this._options.maxLabelCount\r\n    },\r\n    getLabelVisibility: function() {\r\n        return this.areLabelsVisible() && this._options.label && this._options.label.visible\r\n    },\r\n    customizePoint: function customizePoint(point, pointData) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var customizePoint = options.customizePoint;\r\n        var customizeObject;\r\n        var pointOptions;\r\n        var customLabelOptions;\r\n        var customOptions;\r\n        var customizeLabel = options.customizeLabel;\r\n        var useLabelCustomOptions;\r\n        var usePointCustomOptions;\r\n        if (customizeLabel && customizeLabel.call) {\r\n            customizeObject = (0, _extend2.extend)({\r\n                seriesName: that.name\r\n            }, pointData);\r\n            customizeObject.series = that;\r\n            customLabelOptions = customizeLabel.call(customizeObject, customizeObject);\r\n            useLabelCustomOptions = customLabelOptions && !(0, _type.isEmptyObject)(customLabelOptions);\r\n            customLabelOptions = useLabelCustomOptions ? (0, _extend2.extend)(true, {}, options.label, customLabelOptions) : null\r\n        }\r\n        if (customizePoint && customizePoint.call) {\r\n            customizeObject = customizeObject || (0, _extend2.extend)({\r\n                seriesName: that.name\r\n            }, pointData);\r\n            customizeObject.series = that;\r\n            customOptions = customizePoint.call(customizeObject, customizeObject);\r\n            usePointCustomOptions = customOptions && !(0, _type.isEmptyObject)(customOptions)\r\n        }\r\n        if (useLabelCustomOptions || usePointCustomOptions) {\r\n            pointOptions = that._parsePointOptions(that._preparePointOptions(customOptions), customLabelOptions || options.label, pointData, point);\r\n            pointOptions.styles.useLabelCustomOptions = useLabelCustomOptions;\r\n            pointOptions.styles.usePointCustomOptions = usePointCustomOptions;\r\n            point.updateOptions(pointOptions)\r\n        }\r\n    },\r\n    show: function() {\r\n        if (!this._visible) {\r\n            this._changeVisibility(true)\r\n        }\r\n    },\r\n    hide: function() {\r\n        if (this._visible) {\r\n            this._changeVisibility(false)\r\n        }\r\n    },\r\n    _changeVisibility: function(visibility) {\r\n        var that = this;\r\n        that._visible = that._options.visible = visibility;\r\n        that._updatePointsVisibility();\r\n        that.hidePointTooltip();\r\n        that._options.visibilityChanged(that)\r\n    },\r\n    _updatePointsVisibility: _common.noop,\r\n    hideLabels: function() {\r\n        (0, _iterator.each)(this._points, function(_, point) {\r\n            point._label.draw(false)\r\n        })\r\n    },\r\n    _parsePointOptions: function(pointOptions, labelOptions, data, point) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var styles = that._createPointStyles(pointOptions, data, point);\r\n        var parsedOptions = (0, _extend2.extend)({}, pointOptions, {\r\n            type: options.type,\r\n            rotated: options.rotated,\r\n            styles: styles,\r\n            widgetType: options.widgetType,\r\n            visibilityChanged: options.visibilityChanged\r\n        });\r\n        parsedOptions.label = getLabelOptions(labelOptions, styles.normal.fill);\r\n        if (that.areErrorBarsVisible()) {\r\n            parsedOptions.errorBars = options.valueErrorBar\r\n        }\r\n        return parsedOptions\r\n    },\r\n    _preparePointOptions: function(customOptions) {\r\n        var pointOptions = this._getOptionsForPoint();\r\n        return customOptions ? mergePointOptions(pointOptions, customOptions) : pointOptions\r\n    },\r\n    _getMarkerGroupOptions: function() {\r\n        return (0, _extend2.extend)(false, {}, this._getOptionsForPoint(), {\r\n            hoverStyle: {},\r\n            selectionStyle: {}\r\n        })\r\n    },\r\n    _getAggregationMethod: function(isDiscrete, aggregateByCategory) {\r\n        var options = this.getOptions().aggregation;\r\n        var method = (0, _utils.normalizeEnum)(options.method);\r\n        var customAggregator = \"custom\" === method && options.calculate;\r\n        var aggregator;\r\n        if (isDiscrete && !aggregateByCategory) {\r\n            aggregator = function(_ref) {\r\n                var data = _ref.data;\r\n                return data[0]\r\n            }\r\n        } else {\r\n            aggregator = this._aggregators[method] || this._aggregators[this._defaultAggregator]\r\n        }\r\n        return customAggregator || aggregator\r\n    },\r\n    _resample: function(_ref2, data) {\r\n        var interval = _ref2.interval,\r\n            ticks = _ref2.ticks,\r\n            aggregateByCategory = _ref2.aggregateByCategory;\r\n        var that = this;\r\n        var isDiscrete = that.argumentAxisType === DISCRETE || that.valueAxisType === DISCRETE;\r\n        var dataIndex = 0;\r\n        var dataSelector = this._getPointDataSelector();\r\n        var options = that.getOptions();\r\n        var addAggregatedData = function(target, data, aggregationInfo) {\r\n            if (!data) {\r\n                return\r\n            }\r\n            var processData = function(d) {\r\n                var pointData = d && dataSelector(d, options);\r\n                if (pointData && that._checkData(pointData)) {\r\n                    pointData.aggregationInfo = aggregationInfo;\r\n                    target.push(pointData)\r\n                }\r\n            };\r\n            if (data.length) {\r\n                data.forEach(processData)\r\n            } else {\r\n                processData(data)\r\n            }\r\n        };\r\n        var aggregationMethod = this._getAggregationMethod(isDiscrete, aggregateByCategory);\r\n        if (isDiscrete) {\r\n            if (aggregateByCategory) {\r\n                var categories = this.getArgumentAxis().getTranslator().getBusinessRange().categories;\r\n                var groups = categories.reduce(function(g, category) {\r\n                    g[category.valueOf()] = [];\r\n                    return g\r\n                }, {});\r\n                data.forEach(function(dataItem) {\r\n                    groups[dataItem.argument.valueOf()].push(dataItem)\r\n                });\r\n                return categories.reduce(function(result, c) {\r\n                    addAggregatedData(result, aggregationMethod({\r\n                        aggregationInterval: null,\r\n                        intervalStart: c,\r\n                        intervalEnd: c,\r\n                        data: groups[c.valueOf()].map(getData)\r\n                    }, that));\r\n                    return result\r\n                }, [])\r\n            } else {\r\n                return data.reduce(function(result, dataItem, index, data) {\r\n                    result[1].push(dataItem);\r\n                    if (index === data.length - 1 || (index + 1) % interval === 0) {\r\n                        var dataInInterval = result[1];\r\n                        var aggregationInfo = {\r\n                            aggregationInterval: interval,\r\n                            data: dataInInterval.map(getData)\r\n                        };\r\n                        addAggregatedData(result[0], aggregationMethod(aggregationInfo, that));\r\n                        result[1] = []\r\n                    }\r\n                    return result\r\n                }, [\r\n                    [],\r\n                    []\r\n                ])[0]\r\n            }\r\n        }\r\n        var aggregatedData = [];\r\n        for (var i = 1; i < ticks.length; i++) {\r\n            var intervalEnd = ticks[i];\r\n            var intervalStart = ticks[i - 1];\r\n            var dataInInterval = [];\r\n            while (data[dataIndex] && data[dataIndex].argument < intervalEnd) {\r\n                if (data[dataIndex].argument >= intervalStart) {\r\n                    dataInInterval.push(data[dataIndex])\r\n                }\r\n                dataIndex++\r\n            }\r\n            var aggregationInfo = {\r\n                intervalStart: intervalStart,\r\n                intervalEnd: intervalEnd,\r\n                aggregationInterval: interval,\r\n                data: dataInInterval.map(getData)\r\n            };\r\n            addAggregatedData(aggregatedData, aggregationMethod(aggregationInfo, that), aggregationInfo)\r\n        }\r\n        that._endUpdateData();\r\n        return aggregatedData\r\n    },\r\n    canRenderCompleteHandle: function() {\r\n        var result = this._canRenderCompleteHandle;\r\n        delete this._canRenderCompleteHandle;\r\n        return !!result\r\n    },\r\n    isHovered: function() {\r\n        return !!(1 & this.fullState)\r\n    },\r\n    isSelected: function() {\r\n        return !!(2 & this.fullState)\r\n    },\r\n    isVisible: function() {\r\n        return this._visible\r\n    },\r\n    getAllPoints: function() {\r\n        this._createAllAggregatedPoints();\r\n        return (this._points || []).slice()\r\n    },\r\n    getPointByPos: function(pos) {\r\n        this._createAllAggregatedPoints();\r\n        return (this._points || [])[pos]\r\n    },\r\n    getVisiblePoints: function() {\r\n        return (this._drawnPoints || []).slice()\r\n    },\r\n    selectPoint: function(point) {\r\n        if (!point.isSelected()) {\r\n            setPointSelectedState(point, this._legendCallback);\r\n            this._eventPipe({\r\n                action: POINT_SELECT,\r\n                target: point\r\n            });\r\n            this._eventTrigger(POINT_SELECTION_CHANGED, {\r\n                target: point\r\n            })\r\n        }\r\n    },\r\n    deselectPoint: function(point) {\r\n        if (point.isSelected()) {\r\n            releasePointSelectedState(point, this._legendCallback);\r\n            this._eventPipe({\r\n                action: POINT_DESELECT,\r\n                target: point\r\n            });\r\n            this._eventTrigger(POINT_SELECTION_CHANGED, {\r\n                target: point\r\n            })\r\n        }\r\n    },\r\n    hover: function(mode) {\r\n        var that = this;\r\n        var eventTrigger = that._eventTrigger;\r\n        if (that.isHovered()) {\r\n            return\r\n        }\r\n        that.lastHoverMode = (0, _utils.normalizeEnum)(mode || that._options.hoverMode);\r\n        that.fullState = that.fullState | HOVER_STATE;\r\n        that._changeStyle(that.lastHoverMode, void 0, that.isSelected() && that.lastSelectionMode !== NONE_MODE);\r\n        eventTrigger(SERIES_HOVER_CHANGED, {\r\n            target: that\r\n        })\r\n    },\r\n    clearHover: function() {\r\n        var that = this;\r\n        var eventTrigger = that._eventTrigger;\r\n        if (!that.isHovered()) {\r\n            return\r\n        }\r\n        that._resetNearestPoint();\r\n        that.fullState = that.fullState & ~HOVER_STATE;\r\n        that._changeStyle(that.lastHoverMode, HOVER, that.isSelected() && that.lastSelectionMode !== NONE_MODE);\r\n        eventTrigger(SERIES_HOVER_CHANGED, {\r\n            target: that\r\n        })\r\n    },\r\n    hoverPoint: function(point) {\r\n        var that = this;\r\n        if (!point.isHovered()) {\r\n            point.clearHover();\r\n            setPointHoverState(point, that._legendCallback);\r\n            that._canChangeView() && that._applyStyle(that._styles.hover);\r\n            that._eventPipe({\r\n                action: POINT_HOVER,\r\n                target: point\r\n            });\r\n            that._eventTrigger(POINT_HOVER_CHANGED, {\r\n                target: point\r\n            })\r\n        }\r\n    },\r\n    clearPointHover: function() {\r\n        var that = this;\r\n        that.getPoints().some(function(currentPoint) {\r\n            if (currentPoint.isHovered()) {\r\n                releasePointHoverState(currentPoint, that._legendCallback);\r\n                that._canChangeView() && that._applyStyle(that._styles.normal);\r\n                that._eventPipe({\r\n                    action: CLEAR_POINT_HOVER,\r\n                    target: currentPoint\r\n                });\r\n                that._eventTrigger(POINT_HOVER_CHANGED, {\r\n                    target: currentPoint\r\n                });\r\n                return true\r\n            }\r\n            return false\r\n        })\r\n    },\r\n    showPointTooltip: function(point) {\r\n        triggerEvent(this._extGroups.seriesGroup, \"showpointtooltip\", point)\r\n    },\r\n    hidePointTooltip: function(point) {\r\n        triggerEvent(this._extGroups.seriesGroup, \"hidepointtooltip\", point)\r\n    },\r\n    select: function() {\r\n        var that = this;\r\n        if (!that.isSelected()) {\r\n            that._setSelectedState(that._options.selectionMode);\r\n            that._eventPipe({\r\n                action: SERIES_SELECT,\r\n                target: that\r\n            });\r\n            that._group.toForeground();\r\n            that._eventTrigger(SERIES_SELECTION_CHANGED, {\r\n                target: that\r\n            })\r\n        }\r\n    },\r\n    clearSelection: function() {\r\n        var that = this;\r\n        if (that.isSelected()) {\r\n            that._releaseSelectedState();\r\n            that._eventTrigger(SERIES_SELECTION_CHANGED, {\r\n                target: that\r\n            })\r\n        }\r\n    },\r\n    getPointsByArg: function(arg, skipPointsCreation) {\r\n        var that = this;\r\n        var argValue = arg.valueOf();\r\n        var points = that.pointsByArgument[argValue];\r\n        if (!points && !skipPointsCreation && that._createAllAggregatedPoints()) {\r\n            points = that.pointsByArgument[argValue]\r\n        }\r\n        return points || []\r\n    },\r\n    _createAllAggregatedPoints: function() {\r\n        if (this.useAggregation() && !this._useAllAggregatedPoints) {\r\n            this.createPoints(true);\r\n            return true\r\n        }\r\n        return false\r\n    },\r\n    getPointsByKeys: function(arg) {\r\n        return this.getPointsByArg(arg)\r\n    },\r\n    notify: function(data) {\r\n        var that = this;\r\n        var action = data.action;\r\n        var seriesModes = that._seriesModes;\r\n        var target = data.target;\r\n        var targetOptions = target.getOptions();\r\n        var pointHoverMode = (0, _utils.normalizeEnum)(targetOptions.hoverMode);\r\n        var selectionModeOfPoint = (0, _utils.normalizeEnum)(targetOptions.selectionMode);\r\n        if (action === POINT_HOVER) {\r\n            that._hoverPointHandler(target, pointHoverMode, data.notifyLegend)\r\n        } else {\r\n            if (action === CLEAR_POINT_HOVER) {\r\n                that._clearPointHoverHandler(target, pointHoverMode, data.notifyLegend)\r\n            } else {\r\n                if (action === SERIES_SELECT) {\r\n                    target !== that && \"single\" === seriesModes.seriesSelectionMode && that.clearSelection()\r\n                } else {\r\n                    if (action === POINT_SELECT) {\r\n                        if (\"single\" === seriesModes.pointSelectionMode) {\r\n                            that.getPoints().some(function(currentPoint) {\r\n                                if (currentPoint !== target && currentPoint.isSelected()) {\r\n                                    that.deselectPoint(currentPoint);\r\n                                    return true\r\n                                }\r\n                                return false\r\n                            })\r\n                        }\r\n                        that._selectPointHandler(target, selectionModeOfPoint)\r\n                    } else {\r\n                        if (action === POINT_DESELECT) {\r\n                            that._deselectPointHandler(target, selectionModeOfPoint)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _selectPointHandler: function(target, mode) {\r\n        var that = this;\r\n        if (mode === ALL_SERIES_POINTS) {\r\n            target.series === that && that._setPointsView(SELECTION, target)\r\n        } else {\r\n            if (mode === ALL_ARGUMENT_POINTS) {\r\n                that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n                    currentPoint !== target && currentPoint.setView(SELECTION)\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _deselectPointHandler: function(target, mode) {\r\n        if (mode === ALL_SERIES_POINTS) {\r\n            target.series === this && this._resetPointsView(SELECTION, target)\r\n        } else {\r\n            if (mode === ALL_ARGUMENT_POINTS) {\r\n                this.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n                    currentPoint !== target && currentPoint.resetView(SELECTION)\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _hoverPointHandler: function(target, mode, notifyLegend) {\r\n        var that = this;\r\n        if (target.series !== that && mode === ALL_ARGUMENT_POINTS) {\r\n            that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n                currentPoint.setView(HOVER)\r\n            });\r\n            notifyLegend && that._legendCallback(target)\r\n        } else {\r\n            if (mode === ALL_SERIES_POINTS && target.series === that) {\r\n                that._setPointsView(HOVER, target)\r\n            }\r\n        }\r\n    },\r\n    _clearPointHoverHandler: function(target, mode, notifyLegend) {\r\n        var that = this;\r\n        if (mode === ALL_ARGUMENT_POINTS) {\r\n            target.series !== that && that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n                currentPoint.resetView(HOVER)\r\n            });\r\n            notifyLegend && that._legendCallback(target)\r\n        } else {\r\n            if (mode === ALL_SERIES_POINTS && target.series === that) {\r\n                that._resetPointsView(HOVER, target)\r\n            }\r\n        }\r\n    },\r\n    _deletePoints: function() {\r\n        var that = this;\r\n        that._disposePoints(that._points);\r\n        that._points = that._drawnPoints = null\r\n    },\r\n    _deleteTrackers: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(that._trackers || [], function(_, tracker) {\r\n            tracker.remove()\r\n        });\r\n        that._trackersGroup && that._trackersGroup.dispose();\r\n        that._trackers = that._trackersGroup = null\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        that._deletePoints();\r\n        that._group.dispose();\r\n        that._labelsGroup && that._labelsGroup.dispose();\r\n        that._errorBarGroup && that._errorBarGroup.dispose();\r\n        that._deleteTrackers();\r\n        that._group = that._extGroups = that._markersGroup = that._elementsGroup = that._bordersGroup = that._labelsGroup = that._errorBarGroup = that._graphics = that._rangeData = that._renderer = that._styles = that._options = that._pointOptions = that._drawnPoints = that.pointsByArgument = that._segments = that._prevSeries = null\r\n    },\r\n    correctPosition: _common.noop,\r\n    drawTrackers: _common.noop,\r\n    getNeighborPoint: _common.noop,\r\n    areErrorBarsVisible: _common.noop,\r\n    getMarginOptions: function() {\r\n        return this._patchMarginOptions({\r\n            percentStick: this.isFullStackedSeries()\r\n        })\r\n    },\r\n    getColor: function() {\r\n        return this.getLegendStyles().normal.fill\r\n    },\r\n    getOpacity: function() {\r\n        return this._options.opacity\r\n    },\r\n    getStackName: function() {\r\n        return this._stackName\r\n    },\r\n    getBarOverlapGroup: function() {\r\n        return this._options.barOverlapGroup\r\n    },\r\n    getPointByCoord: function(x, y) {\r\n        var point = this.getNeighborPoint(x, y);\r\n        return null !== point && void 0 !== point && point.coordsIn(x, y) ? point : null\r\n    },\r\n    getValueAxis: function() {\r\n        return this._valueAxis\r\n    },\r\n    getArgumentAxis: function() {\r\n        return this._argumentAxis\r\n    },\r\n    getMarkersGroup: function() {\r\n        return this._markersGroup\r\n    },\r\n    getRenderer: function() {\r\n        return this._renderer\r\n    }\r\n};\r\nvar mixins = seriesNS.mixins;\r\nexports.mixins = mixins;\r\n","/**\r\n * DevExtreme (mobile/hide_top_overlay.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = _default;\r\nvar _hide_callback = require(\"./hide_callback\");\r\n\r\nfunction _default() {\r\n    return _hide_callback.hideCallback.fire()\r\n}\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/dom_adapter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dependency_injector = _interopRequireDefault(require(\"./utils/dependency_injector\"));\r\nvar _common = require(\"./utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar ELEMENT_NODE = 1;\r\nvar TEXT_NODE = 3;\r\nvar DOCUMENT_NODE = 9;\r\nvar nativeDOMAdapterStrategy = {\r\n    querySelectorAll: function(element, selector) {\r\n        return element.querySelectorAll(selector)\r\n    },\r\n    elementMatches: function(element, selector) {\r\n        var _this = this;\r\n        var matches = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || function(selector) {\r\n            var doc = element.document || element.ownerDocument;\r\n            if (!doc) {\r\n                return false\r\n            }\r\n            var items = _this.querySelectorAll(doc, selector);\r\n            for (var i = 0; i < items.length; i++) {\r\n                if (items[i] === element) {\r\n                    return true\r\n                }\r\n            }\r\n        };\r\n        return matches.call(element, selector)\r\n    },\r\n    createElement: function(tagName, context) {\r\n        context = context || this._document;\r\n        return context.createElement(tagName)\r\n    },\r\n    createElementNS: function(ns, tagName, context) {\r\n        context = context || this._document;\r\n        return context.createElementNS(ns, tagName)\r\n    },\r\n    createTextNode: function(text, context) {\r\n        context = context || this._document;\r\n        return context.createTextNode(text)\r\n    },\r\n    isNode: function(element) {\r\n        return \"object\" === _typeof(element) && \"nodeType\" in element\r\n    },\r\n    isElementNode: function(element) {\r\n        return element && element.nodeType === ELEMENT_NODE\r\n    },\r\n    isTextNode: function(element) {\r\n        return element && element.nodeType === TEXT_NODE\r\n    },\r\n    isDocument: function(element) {\r\n        return element && element.nodeType === DOCUMENT_NODE\r\n    },\r\n    removeElement: function(element) {\r\n        var parentNode = element && element.parentNode;\r\n        if (parentNode) {\r\n            parentNode.removeChild(element)\r\n        }\r\n    },\r\n    insertElement: function(parentElement, newElement, nextSiblingElement) {\r\n        if (parentElement && newElement && parentElement !== newElement) {\r\n            if (nextSiblingElement) {\r\n                parentElement.insertBefore(newElement, nextSiblingElement)\r\n            } else {\r\n                parentElement.appendChild(newElement)\r\n            }\r\n        }\r\n    },\r\n    getAttribute: function(element, name) {\r\n        return element.getAttribute(name)\r\n    },\r\n    setAttribute: function(element, name, value) {\r\n        element.setAttribute(name, value)\r\n    },\r\n    removeAttribute: function(element, name) {\r\n        element.removeAttribute(name)\r\n    },\r\n    setProperty: function(element, name, value) {\r\n        element[name] = value\r\n    },\r\n    setText: function(element, text) {\r\n        if (element) {\r\n            element.textContent = text\r\n        }\r\n    },\r\n    setClass: function(element, className, isAdd) {\r\n        if (1 === element.nodeType && className) {\r\n            if (element.classList) {\r\n                if (isAdd) {\r\n                    element.classList.add(className)\r\n                } else {\r\n                    element.classList.remove(className)\r\n                }\r\n            } else {\r\n                var classNameSupported = \"string\" === typeof element.className;\r\n                var elementClass = classNameSupported ? element.className : this.getAttribute(element, \"class\") || \"\";\r\n                var classNames = elementClass.split(\" \");\r\n                var classIndex = classNames.indexOf(className);\r\n                var resultClassName;\r\n                if (isAdd && classIndex < 0) {\r\n                    resultClassName = elementClass ? elementClass + \" \" + className : className\r\n                }\r\n                if (!isAdd && classIndex >= 0) {\r\n                    classNames.splice(classIndex, 1);\r\n                    resultClassName = classNames.join(\" \")\r\n                }\r\n                if (void 0 !== resultClassName) {\r\n                    if (classNameSupported) {\r\n                        element.className = resultClassName\r\n                    } else {\r\n                        this.setAttribute(element, \"class\", resultClassName)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    setStyle: function(element, name, value) {\r\n        element.style[name] = value || \"\"\r\n    },\r\n    _document: \"undefined\" === typeof document ? void 0 : document,\r\n    getDocument: function() {\r\n        return this._document\r\n    },\r\n    getActiveElement: function() {\r\n        return this._document.activeElement\r\n    },\r\n    getBody: function() {\r\n        return this._document.body\r\n    },\r\n    createDocumentFragment: function() {\r\n        return this._document.createDocumentFragment()\r\n    },\r\n    getDocumentElement: function() {\r\n        return this._document.documentElement\r\n    },\r\n    getLocation: function() {\r\n        return this._document.location\r\n    },\r\n    getSelection: function() {\r\n        return this._document.selection\r\n    },\r\n    getReadyState: function() {\r\n        return this._document.readyState\r\n    },\r\n    getHead: function() {\r\n        return this._document.head\r\n    },\r\n    hasDocumentProperty: function(property) {\r\n        return property in this._document\r\n    },\r\n    listen: function(element, event, callback, options) {\r\n        if (!element || !(\"addEventListener\" in element)) {\r\n            return _common.noop\r\n        }\r\n        element.addEventListener(event, callback, options);\r\n        return function() {\r\n            element.removeEventListener(event, callback)\r\n        }\r\n    }\r\n};\r\nvar _default = (0, _dependency_injector.default)(nativeDOMAdapterStrategy);\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.adaptivity.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _themes = require(\"../themes\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COLUMN_HEADERS_VIEW = \"columnHeadersView\";\r\nvar ROWS_VIEW = \"rowsView\";\r\nvar FOOTER_VIEW = \"footerView\";\r\nvar COLUMN_VIEWS = [COLUMN_HEADERS_VIEW, ROWS_VIEW, FOOTER_VIEW];\r\nvar ADAPTIVE_NAMESPACE = \"dxDataGridAdaptivity\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\r\nvar ADAPTIVE_ROW_TYPE = \"detailAdaptive\";\r\nvar FORM_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar FORM_ITEM_MODIFIED = \"dx-item-modified\";\r\nvar HIDDEN_COLUMN_CLASS = \"hidden-column\";\r\nvar ADAPTIVE_COLUMN_BUTTON_CLASS = \"adaptive-more\";\r\nvar ADAPTIVE_COLUMN_NAME_CLASS = \"dx-command-adaptive\";\r\nvar COMMAND_ADAPTIVE_HIDDEN_CLASS = \"dx-command-adaptive-hidden\";\r\nvar ADAPTIVE_DETAIL_ROW_CLASS = \"dx-adaptive-detail-row\";\r\nvar ADAPTIVE_ITEM_TEXT_CLASS = \"dx-adaptive-item-text\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar LAST_DATA_CELL_CLASS = \"dx-last-data-cell\";\r\nvar ADAPTIVE_COLUMN_NAME = \"adaptive\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar REVERT_TOOLTIP_CLASS = \"revert-tooltip\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\n\r\nfunction getColumnId(that, column) {\r\n    return that._columnsController.getColumnId(column)\r\n}\r\n\r\nfunction getDataCellElements($row) {\r\n    return $row.find(\"td:not(.dx-datagrid-hidden-column):not([class*='dx-command-'])\")\r\n}\r\n\r\nfunction adaptiveCellTemplate(container, options) {\r\n    var $adaptiveColumnButton;\r\n    var $container = (0, _renderer.default)(container);\r\n    var adaptiveColumnsController = options.component.getController(\"adaptiveColumns\");\r\n    if (\"data\" === options.rowType) {\r\n        $adaptiveColumnButton = (0, _renderer.default)(\"<span>\").addClass(adaptiveColumnsController.addWidgetPrefix(ADAPTIVE_COLUMN_BUTTON_CLASS));\r\n        _events_engine.default.on($adaptiveColumnButton, (0, _index.addNamespace)(_click.name, ADAPTIVE_NAMESPACE), adaptiveColumnsController.createAction(function() {\r\n            adaptiveColumnsController.toggleExpandAdaptiveDetailRow(options.key)\r\n        }));\r\n        $adaptiveColumnButton.appendTo($container)\r\n    } else {\r\n        _uiGrid_core2.default.setEmptyText($container)\r\n    }\r\n}\r\nvar AdaptiveColumnsController = _uiGrid_core.default.ViewController.inherit({\r\n    _isRowEditMode: function() {\r\n        var editMode = this._getEditMode();\r\n        return editMode === EDIT_MODE_ROW\r\n    },\r\n    _isItemModified: function(item, cellOptions) {\r\n        var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n        var rowIndex = this._dataController.getRowIndexByKey(cellOptions.key);\r\n        var row = this._dataController.items()[rowIndex + 1];\r\n        return row && row.modifiedValues && (0, _type.isDefined)(row.modifiedValues[columnIndex])\r\n    },\r\n    _renderFormViewTemplate: function(item, cellOptions, $container) {\r\n        var that = this;\r\n        var column = item.column;\r\n        var focusAction = that.createAction(function() {\r\n            _events_engine.default.trigger($container, _click.name)\r\n        });\r\n        var value = column.calculateCellValue(cellOptions.data);\r\n        var displayValue = _uiGrid_core2.default.getDisplayValue(column, value, cellOptions.data, cellOptions.rowType);\r\n        var text = _uiGrid_core2.default.formatValue(displayValue, column);\r\n        var isCellOrBatchEditMode = this._editingController.isCellOrBatchEditMode();\r\n        var rowsView = that._rowsView;\r\n        if (column.allowEditing && that.getController(\"keyboardNavigation\").isKeyboardEnabled()) {\r\n            $container.attr(\"tabIndex\", that.option(\"tabIndex\"));\r\n            if (isCellOrBatchEditMode) {\r\n                _events_engine.default.off($container, \"focus\", focusAction);\r\n                _events_engine.default.on($container, \"focus\", focusAction)\r\n            }\r\n        }\r\n        if (column.cellTemplate) {\r\n            var templateOptions = (0, _extend.extend)({}, cellOptions, {\r\n                value: value,\r\n                displayValue: displayValue,\r\n                text: text,\r\n                column: column\r\n            });\r\n            var isDomElement = !!$container.closest((0, _window.getWindow)().document).length;\r\n            rowsView.renderTemplate($container, column.cellTemplate, templateOptions, isDomElement).done(function() {\r\n                rowsView._cellPrepared($container, cellOptions)\r\n            })\r\n        } else {\r\n            var container = $container.get(0);\r\n            if (column.encodeHtml) {\r\n                container.textContent = text\r\n            } else {\r\n                container.innerHTML = text\r\n            }\r\n            $container.addClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n            if (!(0, _type.isDefined)(text) || \"\" === text) {\r\n                $container.html(\"&nbsp;\")\r\n            }\r\n            if (!that._isRowEditMode()) {\r\n                if (that._isItemModified(item, cellOptions)) {\r\n                    $container.addClass(FORM_ITEM_MODIFIED)\r\n                }\r\n            }\r\n            rowsView._cellPrepared($container, cellOptions)\r\n        }\r\n    },\r\n    _getTemplate: function(item, cellOptions) {\r\n        var that = this;\r\n        var column = item.column;\r\n        var editingController = this.getController(\"editing\");\r\n        return function(options, container) {\r\n            var $container = (0, _renderer.default)(container);\r\n            var columnIndex = that._columnsController.getVisibleIndex(column.visibleIndex);\r\n            var templateOptions = (0, _extend.extend)({}, cellOptions);\r\n            var renderFormTemplate = function() {\r\n                var isItemEdited = that._isItemEdited(item);\r\n                templateOptions.value = cellOptions.row.values[columnIndex];\r\n                if (isItemEdited || column.showEditorAlways) {\r\n                    editingController.renderFormEditTemplate(templateOptions, item, options.component, $container, !isItemEdited)\r\n                } else {\r\n                    templateOptions.column = column;\r\n                    templateOptions.columnIndex = columnIndex;\r\n                    that._renderFormViewTemplate(item, templateOptions, $container)\r\n                }\r\n            };\r\n            renderFormTemplate();\r\n            templateOptions.watch && templateOptions.watch(function() {\r\n                return {\r\n                    isItemEdited: that._isItemEdited(item),\r\n                    value: cellOptions.row.values[columnIndex]\r\n                }\r\n            }, function() {\r\n                $container.contents().remove();\r\n                $container.removeClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n                renderFormTemplate()\r\n            })\r\n        }\r\n    },\r\n    _isVisibleColumnsValid: function(visibleColumns) {\r\n        var getCommandColumnsCount = function() {\r\n            var result = 0;\r\n            for (var j = 0; j < visibleColumns.length; j++) {\r\n                var visibleColumn = visibleColumns[j];\r\n                if (visibleColumn.command) {\r\n                    result++\r\n                }\r\n            }\r\n            return result\r\n        };\r\n        if (visibleColumns < 2) {\r\n            return false\r\n        }\r\n        if (visibleColumns.length - getCommandColumnsCount() <= 1) {\r\n            return false\r\n        }\r\n        return true\r\n    },\r\n    _calculatePercentWidths: function(widths, visibleColumns) {\r\n        var that = this;\r\n        var percentWidths = 0;\r\n        visibleColumns.forEach(function(item, index) {\r\n            if (widths[index] !== HIDDEN_COLUMNS_WIDTH) {\r\n                percentWidths += that._getItemPercentWidth(item)\r\n            }\r\n        });\r\n        return percentWidths\r\n    },\r\n    _isPercentWidth: function(width) {\r\n        return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n    },\r\n    _isColumnHidden: function(column) {\r\n        return this._hiddenColumns.filter(function(hiddenColumn) {\r\n            return hiddenColumn.index === column.index\r\n        }).length > 0\r\n    },\r\n    _getAverageColumnsWidth: function(containerWidth, columns, columnsCanFit) {\r\n        var that = this;\r\n        var fixedColumnsWidth = 0;\r\n        var columnsWithoutFixedWidthCount = 0;\r\n        columns.forEach(function(column) {\r\n            if (!that._isColumnHidden(column)) {\r\n                var width = column.width;\r\n                if ((0, _type.isDefined)(width) && !isNaN(parseFloat(width))) {\r\n                    fixedColumnsWidth += that._isPercentWidth(width) ? that._calculatePercentWidth({\r\n                        visibleIndex: column.visibleIndex,\r\n                        columnsCount: columns.length,\r\n                        columnsCanFit: columnsCanFit,\r\n                        bestFitWidth: column.bestFitWidth,\r\n                        columnWidth: width,\r\n                        containerWidth: containerWidth\r\n                    }) : parseFloat(width)\r\n                } else {\r\n                    columnsWithoutFixedWidthCount++\r\n                }\r\n            }\r\n        });\r\n        return (containerWidth - fixedColumnsWidth) / columnsWithoutFixedWidthCount\r\n    },\r\n    _calculateColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n        var columnId = getColumnId(this, column);\r\n        var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n        var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n        var columnsCount = contentColumns.length;\r\n        var colWidth;\r\n        if (widthOption && \"auto\" !== widthOption) {\r\n            if (this._isPercentWidth(widthOption)) {\r\n                colWidth = this._calculatePercentWidth({\r\n                    visibleIndex: column.visibleIndex,\r\n                    columnsCount: columnsCount,\r\n                    columnsCanFit: columnsCanFit,\r\n                    bestFitWidth: bestFitWidth,\r\n                    columnWidth: widthOption,\r\n                    containerWidth: containerWidth\r\n                })\r\n            } else {\r\n                return widthOption\r\n            }\r\n        } else {\r\n            var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n            colWidth = columnAutoWidth || !!column.command ? bestFitWidth : this._getAverageColumnsWidth(containerWidth, contentColumns, columnsCanFit)\r\n        }\r\n        return colWidth\r\n    },\r\n    _calculatePercentWidth: function(options) {\r\n        var columnFitted = options.visibleIndex < options.columnsCount - 1 && options.columnsCanFit;\r\n        var partialWidth = options.containerWidth * parseFloat(options.columnWidth) / 100;\r\n        var resultWidth = options.columnsCanFit && partialWidth < options.bestFitWidth ? options.bestFitWidth : partialWidth;\r\n        return columnFitted ? options.containerWidth * parseFloat(options.columnWidth) / 100 : resultWidth\r\n    },\r\n    _getNotTruncatedColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n        var columnId = getColumnId(this, column);\r\n        var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n        var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n        if (widthOption && \"auto\" !== widthOption && !this._isPercentWidth(widthOption)) {\r\n            return parseFloat(widthOption)\r\n        }\r\n        var colWidth = this._calculateColumnWidth(column, containerWidth, contentColumns, columnsCanFit);\r\n        return colWidth < bestFitWidth ? null : colWidth\r\n    },\r\n    _getItemPercentWidth: function(item) {\r\n        var result = 0;\r\n        if (item.width && this._isPercentWidth(item.width)) {\r\n            result = parseFloat(item.width)\r\n        }\r\n        return result\r\n    },\r\n    _getCommandColumnsWidth: function() {\r\n        var that = this;\r\n        var columns = that._columnsController.getVisibleColumns();\r\n        var colWidth = 0;\r\n        (0, _iterator.each)(columns, function(index, column) {\r\n            if (column.index < 0 || column.command) {\r\n                colWidth += that._columnsController.columnOption(getColumnId(that, column), \"bestFitWidth\") || 0\r\n            }\r\n        });\r\n        return colWidth\r\n    },\r\n    _isItemEdited: function(item) {\r\n        if (this.isFormEditMode()) {\r\n            return false\r\n        }\r\n        if (this._isRowEditMode()) {\r\n            var editRowKey = this.option(\"editing.editRowKey\");\r\n            if ((0, _common.equalByValue)(editRowKey, this._dataController.adaptiveExpandedKey())) {\r\n                return true\r\n            }\r\n        } else {\r\n            var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n            var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n            return this._editingController.isEditCell(rowIndex, columnIndex)\r\n        }\r\n    },\r\n    _getFormItemsByHiddenColumns: function(hiddenColumns) {\r\n        var items = [];\r\n        (0, _iterator.each)(hiddenColumns, function(_, column) {\r\n            items.push({\r\n                column: column,\r\n                name: column.name,\r\n                dataField: column.dataField,\r\n                visibleIndex: column.visibleIndex\r\n            })\r\n        });\r\n        return items\r\n    },\r\n    _getAdaptiveColumnVisibleIndex: function(visibleColumns) {\r\n        for (var i = 0; i < visibleColumns.length; i++) {\r\n            var column = visibleColumns[i];\r\n            if (column.command === ADAPTIVE_COLUMN_NAME) {\r\n                return i\r\n            }\r\n        }\r\n    },\r\n    _hideAdaptiveColumn: function(resultWidths, visibleColumns) {\r\n        var visibleIndex = this._getAdaptiveColumnVisibleIndex(visibleColumns);\r\n        if ((0, _type.isDefined)(visibleIndex)) {\r\n            resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n            this._hideVisibleColumn({\r\n                isCommandColumn: true,\r\n                visibleIndex: visibleIndex\r\n            })\r\n        }\r\n    },\r\n    _showHiddenCellsInView: function(_ref) {\r\n        var $cells = _ref.$cells,\r\n            isCommandColumn = _ref.isCommandColumn;\r\n        var cssClassNameToRemove = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n        $cells.removeClass(cssClassNameToRemove)\r\n    },\r\n    _showHiddenColumns: function() {\r\n        for (var i = 0; i < COLUMN_VIEWS.length; i++) {\r\n            var view = this.getView(COLUMN_VIEWS[i]);\r\n            if (view && view.isVisible() && view.element()) {\r\n                var viewName = view.name;\r\n                var $hiddenCommandCells = view.element().find(\".\" + COMMAND_ADAPTIVE_HIDDEN_CLASS);\r\n                this._showHiddenCellsInView({\r\n                    viewName: viewName,\r\n                    $cells: $hiddenCommandCells,\r\n                    isCommandColumn: true\r\n                });\r\n                var $hiddenCells = view.element().find(\".\" + this.addWidgetPrefix(HIDDEN_COLUMN_CLASS));\r\n                this._showHiddenCellsInView({\r\n                    viewName: viewName,\r\n                    $cells: $hiddenCells\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _isCellValid: function($cell) {\r\n        return $cell && $cell.length && !$cell.hasClass(MASTER_DETAIL_CELL_CLASS) && !$cell.hasClass(GROUP_CELL_CLASS)\r\n    },\r\n    _hideVisibleColumn: function(_ref2) {\r\n        var isCommandColumn = _ref2.isCommandColumn,\r\n            visibleIndex = _ref2.visibleIndex;\r\n        var that = this;\r\n        COLUMN_VIEWS.forEach(function(viewName) {\r\n            var view = that.getView(viewName);\r\n            view && that._hideVisibleColumnInView({\r\n                view: view,\r\n                isCommandColumn: isCommandColumn,\r\n                visibleIndex: visibleIndex\r\n            })\r\n        })\r\n    },\r\n    _hideVisibleColumnInView: function(_ref3) {\r\n        var view = _ref3.view,\r\n            isCommandColumn = _ref3.isCommandColumn,\r\n            visibleIndex = _ref3.visibleIndex;\r\n        var viewName = view.name;\r\n        var $cellElement;\r\n        var column = this._columnsController.getVisibleColumns()[visibleIndex];\r\n        var editFormRowIndex = this._editingController && this._editingController.getEditFormRowIndex();\r\n        if (view && view.isVisible() && column) {\r\n            var rowsCount = view.getRowsCount();\r\n            var $rowElements = view._getRowElements();\r\n            for (var rowIndex = 0; rowIndex < rowsCount; rowIndex++) {\r\n                var cancelClassAdding = rowIndex === editFormRowIndex && viewName === ROWS_VIEW && \"popup\" !== this.option(\"editing.mode\");\r\n                if (!cancelClassAdding) {\r\n                    var currentVisibleIndex = viewName === COLUMN_HEADERS_VIEW ? this._columnsController.getVisibleIndex(column.index, rowIndex) : visibleIndex;\r\n                    if (currentVisibleIndex >= 0) {\r\n                        var $rowElement = $rowElements.eq(rowIndex);\r\n                        $cellElement = this._findCellElementInRow($rowElement, currentVisibleIndex);\r\n                        this._isCellValid($cellElement) && this._hideVisibleCellInView({\r\n                            viewName: viewName,\r\n                            isCommandColumn: isCommandColumn,\r\n                            $cell: $cellElement\r\n                        })\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _findCellElementInRow: function($rowElement, visibleColumnIndex) {\r\n        var $rowCells = $rowElement.children();\r\n        var visibleIndex = visibleColumnIndex;\r\n        var cellIsInsideGroup = false;\r\n        if ($rowElement.hasClass(GROUP_ROW_CLASS)) {\r\n            var $groupCell = $rowElement.find(\".\".concat(GROUP_CELL_CLASS));\r\n            var colSpan = $groupCell.attr(\"colspan\");\r\n            if ($groupCell.length && (0, _type.isDefined)(colSpan)) {\r\n                var groupCellLength = parseInt(colSpan);\r\n                var endGroupIndex = $groupCell.index() + groupCellLength - 1;\r\n                if (visibleColumnIndex > endGroupIndex) {\r\n                    visibleIndex = visibleColumnIndex - groupCellLength + 1\r\n                } else {\r\n                    cellIsInsideGroup = true\r\n                }\r\n            }\r\n        }\r\n        var $cellElement = !cellIsInsideGroup ? $rowCells.eq(visibleIndex) : void 0;\r\n        return $cellElement\r\n    },\r\n    _hideVisibleCellInView: function(_ref4) {\r\n        var $cell = _ref4.$cell,\r\n            isCommandColumn = _ref4.isCommandColumn;\r\n        var cssClassNameToAdd = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n        $cell.addClass(cssClassNameToAdd)\r\n    },\r\n    _getEditMode: function() {\r\n        return this._editingController.getEditMode()\r\n    },\r\n    isFormEditMode: function() {\r\n        var editMode = this._getEditMode();\r\n        return editMode === EDIT_MODE_FORM || editMode === EDIT_MODE_POPUP\r\n    },\r\n    hideRedundantColumns: function(resultWidths, visibleColumns, hiddenQueue) {\r\n        var that = this;\r\n        this._hiddenColumns = [];\r\n        if (that._isVisibleColumnsValid(visibleColumns) && hiddenQueue.length) {\r\n            var totalWidth = 0;\r\n            var $rootElement = that.component.$element();\r\n            var rootElementWidth = $rootElement.width() - that._getCommandColumnsWidth();\r\n            var getVisibleContentColumns = function() {\r\n                var _this = this;\r\n                return visibleColumns.filter(function(item) {\r\n                    return !item.command && 0 === _this._hiddenColumns.filter(function(i) {\r\n                        return i.index === item.index\r\n                    }).length\r\n                })\r\n            }.bind(this);\r\n            var visibleContentColumns = getVisibleContentColumns();\r\n            var contentColumnsCount = visibleContentColumns.length;\r\n            var i;\r\n            var hasHiddenColumns;\r\n            var needHideColumn;\r\n            do {\r\n                needHideColumn = false;\r\n                totalWidth = 0;\r\n                var percentWidths = that._calculatePercentWidths(resultWidths, visibleColumns);\r\n                var columnsCanFit = percentWidths < 100 && 0 !== percentWidths;\r\n                for (i = 0; i < visibleColumns.length; i++) {\r\n                    var visibleColumn = visibleColumns[i];\r\n                    var columnWidth = that._getNotTruncatedColumnWidth(visibleColumn, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n                    var columnId = getColumnId(that, visibleColumn);\r\n                    var widthOption = that._columnsController.columnOption(columnId, \"width\");\r\n                    var minWidth = that._columnsController.columnOption(columnId, \"minWidth\");\r\n                    var columnBestFitWidth = that._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n                    if (resultWidths[i] === HIDDEN_COLUMNS_WIDTH) {\r\n                        hasHiddenColumns = true;\r\n                        continue\r\n                    }\r\n                    if (!columnWidth && !visibleColumn.command && !visibleColumn.fixed) {\r\n                        needHideColumn = true;\r\n                        break\r\n                    }\r\n                    if (!widthOption || \"auto\" === widthOption) {\r\n                        columnWidth = Math.max(columnBestFitWidth || 0, minWidth || 0)\r\n                    }\r\n                    if (visibleColumn.command !== ADAPTIVE_COLUMN_NAME || hasHiddenColumns) {\r\n                        totalWidth += columnWidth\r\n                    }\r\n                }\r\n                needHideColumn = needHideColumn || totalWidth > $rootElement.width();\r\n                if (needHideColumn) {\r\n                    var column = hiddenQueue.pop();\r\n                    var visibleIndex = that._columnsController.getVisibleIndex(column.index);\r\n                    rootElementWidth += that._calculateColumnWidth(column, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n                    that._hideVisibleColumn({\r\n                        visibleIndex: visibleIndex\r\n                    });\r\n                    resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n                    this._hiddenColumns.push(column);\r\n                    visibleContentColumns = getVisibleContentColumns()\r\n                }\r\n            } while (needHideColumn && visibleContentColumns.length > 1 && hiddenQueue.length);\r\n            if (contentColumnsCount === visibleContentColumns.length) {\r\n                that._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n            }\r\n        } else {\r\n            that._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n        }\r\n    },\r\n    getItemContentByColumnIndex: function(visibleColumnIndex) {\r\n        var $itemContent;\r\n        for (var i = 0; i < this._$itemContents.length; i++) {\r\n            $itemContent = this._$itemContents.eq(i);\r\n            var item = $itemContent.data(\"dx-form-item\");\r\n            if (item && item.column && this._columnsController.getVisibleIndex(item.column.index) === visibleColumnIndex) {\r\n                return $itemContent\r\n            }\r\n        }\r\n    },\r\n    toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n        if (!(this.isFormEditMode() && this._editingController.isEditing())) {\r\n            this.getController(\"data\").toggleExpandAdaptiveDetailRow(key, alwaysExpanded)\r\n        }\r\n    },\r\n    createFormByHiddenColumns: function(container, options) {\r\n        var that = this;\r\n        var $container = (0, _renderer.default)(container);\r\n        var userFormOptions = {\r\n            items: that._getFormItemsByHiddenColumns(that._hiddenColumns),\r\n            formID: \"dx-\" + new _guid.default\r\n        };\r\n        var defaultFormOptions = (0, _themes.isMaterial)() ? {\r\n            colCount: 2\r\n        } : {};\r\n        this.executeAction(\"onAdaptiveDetailRowPreparing\", {\r\n            formOptions: userFormOptions\r\n        });\r\n        that._$itemContents = null;\r\n        that._form = that._createComponent((0, _renderer.default)(\"<div>\").appendTo($container), _form.default, (0, _extend.extend)(defaultFormOptions, userFormOptions, {\r\n            customizeItem: function(item) {\r\n                var column = item.column || that._columnsController.columnOption(item.name || item.dataField);\r\n                if (column) {\r\n                    item.label = item.label || {};\r\n                    item.label.text = item.label.text || column.caption;\r\n                    item.column = column;\r\n                    item.template = that._getTemplate(item, options, that.updateForm.bind(that))\r\n                }\r\n                userFormOptions.customizeItem && userFormOptions.customizeItem.call(this, item)\r\n            },\r\n            onContentReady: function(e) {\r\n                userFormOptions.onContentReady && userFormOptions.onContentReady.call(this, e);\r\n                that._$itemContents = $container.find(\".\" + FORM_ITEM_CONTENT_CLASS)\r\n            }\r\n        }))\r\n    },\r\n    hasAdaptiveDetailRowExpanded: function() {\r\n        return (0, _type.isDefined)(this._dataController.adaptiveExpandedKey())\r\n    },\r\n    updateForm: function(hiddenColumns) {\r\n        if (this.hasAdaptiveDetailRowExpanded()) {\r\n            if (this._form && (0, _type.isDefined)(this._form._contentReadyAction)) {\r\n                if (hiddenColumns && hiddenColumns.length) {\r\n                    this._form.option(\"items\", this._getFormItemsByHiddenColumns(hiddenColumns))\r\n                } else {\r\n                    this._form.repaint()\r\n                }\r\n            }\r\n        }\r\n    },\r\n    updateHidingQueue: function(columns) {\r\n        var that = this;\r\n        var hideableColumns = columns.filter(function(column) {\r\n            return column.visible && !column.type && !column.fixed && !((0, _type.isDefined)(column.groupIndex) && column.groupIndex >= 0)\r\n        });\r\n        var columnsHasHidingPriority;\r\n        var i;\r\n        that._hidingColumnsQueue = [];\r\n        if (that.option(\"allowColumnResizing\") && \"widget\" === that.option(\"columnResizingMode\")) {\r\n            return that._hidingColumnsQueue\r\n        }\r\n        for (i = 0; i < hideableColumns.length; i++) {\r\n            if ((0, _type.isDefined)(hideableColumns[i].hidingPriority) && hideableColumns[i].hidingPriority >= 0) {\r\n                columnsHasHidingPriority = true;\r\n                that._hidingColumnsQueue[hideableColumns[i].hidingPriority] = hideableColumns[i]\r\n            }\r\n        }\r\n        if (columnsHasHidingPriority) {\r\n            that._hidingColumnsQueue.reverse()\r\n        } else {\r\n            if (that.option(\"columnHidingEnabled\")) {\r\n                for (i = 0; i < hideableColumns.length; i++) {\r\n                    var visibleIndex = that._columnsController.getVisibleIndex(hideableColumns[i].index);\r\n                    that._hidingColumnsQueue[visibleIndex] = hideableColumns[i]\r\n                }\r\n            }\r\n        }\r\n        that._hidingColumnsQueue = that._hidingColumnsQueue.filter(Object);\r\n        return that._hidingColumnsQueue\r\n    },\r\n    getHiddenColumns: function() {\r\n        return this._hiddenColumns\r\n    },\r\n    hasHiddenColumns: function() {\r\n        return this._hiddenColumns.length > 0\r\n    },\r\n    getHidingColumnsQueue: function() {\r\n        return this._hidingColumnsQueue\r\n    },\r\n    init: function() {\r\n        var that = this;\r\n        that._columnsController = that.getController(\"columns\");\r\n        that._dataController = that.getController(\"data\");\r\n        that._rowsView = that.getView(\"rowsView\");\r\n        that._columnsController.addCommandColumn({\r\n            type: ADAPTIVE_COLUMN_NAME,\r\n            command: ADAPTIVE_COLUMN_NAME,\r\n            visible: true,\r\n            adaptiveHidden: true,\r\n            cssClass: ADAPTIVE_COLUMN_NAME_CLASS,\r\n            alignment: \"center\",\r\n            width: \"auto\",\r\n            cellTemplate: adaptiveCellTemplate,\r\n            fixedPosition: \"right\"\r\n        });\r\n        that._columnsController.columnsChanged.add(function() {\r\n            var isAdaptiveVisible = !!that.updateHidingQueue(that._columnsController.getColumns()).length;\r\n            that._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !isAdaptiveVisible, true)\r\n        });\r\n        that._editingController = that.getController(\"editing\");\r\n        that._hidingColumnsQueue = [];\r\n        that._hiddenColumns = [];\r\n        that.createAction(\"onAdaptiveDetailRowPreparing\");\r\n        that.callBase()\r\n    },\r\n    optionChanged: function(args) {\r\n        if (\"columnHidingEnabled\" === args.name) {\r\n            this._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !args.value)\r\n        }\r\n        this.callBase(args)\r\n    },\r\n    publicMethods: function() {\r\n        return [\"isAdaptiveDetailRowExpanded\", \"expandAdaptiveDetailRow\", \"collapseAdaptiveDetailRow\"]\r\n    },\r\n    isAdaptiveDetailRowExpanded: function(key) {\r\n        return this._dataController.adaptiveExpandedKey() && (0, _common.equalByValue)(this._dataController.adaptiveExpandedKey(), key)\r\n    },\r\n    expandAdaptiveDetailRow: function(key) {\r\n        if (!this.hasAdaptiveDetailRowExpanded()) {\r\n            this.toggleExpandAdaptiveDetailRow(key)\r\n        }\r\n    },\r\n    collapseAdaptiveDetailRow: function() {\r\n        if (this.hasAdaptiveDetailRowExpanded()) {\r\n            this.toggleExpandAdaptiveDetailRow()\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            columnHidingEnabled: false,\r\n            onAdaptiveDetailRowPreparing: null\r\n        }\r\n    },\r\n    controllers: {\r\n        adaptiveColumns: AdaptiveColumnsController\r\n    },\r\n    extenders: {\r\n        views: {\r\n            rowsView: {\r\n                _getCellTemplate: function(options) {\r\n                    var that = this;\r\n                    var column = options.column;\r\n                    if (options.rowType === ADAPTIVE_ROW_TYPE && \"detail\" === column.command) {\r\n                        return function(container, options) {\r\n                            that._adaptiveColumnsController.createFormByHiddenColumns((0, _renderer.default)(container), options)\r\n                        }\r\n                    }\r\n                    return that.callBase(options)\r\n                },\r\n                _createRow: function(row) {\r\n                    var $row = this.callBase(row);\r\n                    if (row && row.rowType === ADAPTIVE_ROW_TYPE && row.key === this._dataController.adaptiveExpandedKey()) {\r\n                        $row.addClass(ADAPTIVE_DETAIL_ROW_CLASS)\r\n                    }\r\n                    return $row\r\n                },\r\n                _renderCells: function($row, options) {\r\n                    this.callBase($row, options);\r\n                    var hidingColumnsQueueLength = this._adaptiveColumnsController.getHidingColumnsQueue().length;\r\n                    var hiddenColumnsLength = this._adaptiveColumnsController.getHiddenColumns().length;\r\n                    if (hidingColumnsQueueLength && !hiddenColumnsLength) {\r\n                        getDataCellElements($row).last().addClass(LAST_DATA_CELL_CLASS)\r\n                    }\r\n                },\r\n                _getColumnIndexByElementCore: function($element) {\r\n                    var $itemContent = $element.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n                    if ($itemContent.length && $itemContent.closest(this.component.$element()).length) {\r\n                        var formItem = $itemContent.length ? $itemContent.first().data(\"dx-form-item\") : null;\r\n                        return formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index)\r\n                    } else {\r\n                        return this.callBase($element)\r\n                    }\r\n                },\r\n                _cellPrepared: function($cell, options) {\r\n                    this.callBase.apply(this, arguments);\r\n                    if (options.row.rowType !== ADAPTIVE_ROW_TYPE && options.column.visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n                        $cell.addClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n                    }\r\n                },\r\n                _getCellElement: function(rowIndex, columnIdentifier) {\r\n                    var item = this._dataController.items()[rowIndex];\r\n                    if (item && item.rowType === ADAPTIVE_ROW_TYPE) {\r\n                        return this._adaptiveColumnsController.getItemContentByColumnIndex(columnIdentifier)\r\n                    } else {\r\n                        return this.callBase(rowIndex, columnIdentifier)\r\n                    }\r\n                },\r\n                getContextMenuItems: function(options) {\r\n                    if (options.row && \"detailAdaptive\" === options.row.rowType) {\r\n                        var view = this.component.getView(\"columnHeadersView\");\r\n                        var formItem = (0, _renderer.default)(options.targetElement).closest(\".dx-field-item-label\").next().data(\"dx-form-item\");\r\n                        options.column = formItem ? formItem.column : options.column;\r\n                        return view.getContextMenuItems && view.getContextMenuItems(options)\r\n                    }\r\n                    return this.callBase && this.callBase(options)\r\n                },\r\n                isClickableElement: function($target) {\r\n                    var isClickable = this.callBase ? this.callBase($target) : false;\r\n                    return isClickable || !!$target.closest(\".\" + ADAPTIVE_COLUMN_NAME_CLASS).length\r\n                },\r\n                init: function() {\r\n                    this.callBase();\r\n                    this._adaptiveColumnsController = this.getController(\"adaptiveColumns\")\r\n                }\r\n            }\r\n        },\r\n        controllers: {\r\n            \"export\": {\r\n                _updateColumnWidth: function(column, width) {\r\n                    this.callBase(column, column.visibleWidth === HIDDEN_COLUMNS_WIDTH ? column.bestFitWidth : width)\r\n                }\r\n            },\r\n            columnsResizer: {\r\n                _pointCreated: function(point, cellsLength, columns) {\r\n                    var result = this.callBase(point, cellsLength, columns);\r\n                    var currentColumn = columns[point.columnIndex] || {};\r\n                    var nextColumnIndex = this._getNextColumnIndex(point.columnIndex);\r\n                    var nextColumn = columns[nextColumnIndex] || {};\r\n                    var hasHiddenColumnsOnly = nextColumnIndex !== point.columnIndex + 1 && nextColumn.command;\r\n                    var hasAdaptiveHiddenWidth = currentColumn.visibleWidth === HIDDEN_COLUMNS_WIDTH || hasHiddenColumnsOnly;\r\n                    return result || hasAdaptiveHiddenWidth\r\n                },\r\n                _getNextColumnIndex: function(currentColumnIndex) {\r\n                    var visibleColumns = this._columnsController.getVisibleColumns();\r\n                    var index = this.callBase(currentColumnIndex);\r\n                    while (visibleColumns[index] && visibleColumns[index].visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n                        index++\r\n                    }\r\n                    return index\r\n                }\r\n            },\r\n            draggingHeader: {\r\n                _pointCreated: function(point, columns, location, sourceColumn) {\r\n                    var result = this.callBase(point, columns, location, sourceColumn);\r\n                    var column = columns[point.columnIndex - 1] || {};\r\n                    var hasAdaptiveHiddenWidth = column.visibleWidth === HIDDEN_COLUMNS_WIDTH;\r\n                    return result || hasAdaptiveHiddenWidth\r\n                }\r\n            },\r\n            editing: {\r\n                _isRowEditMode: function() {\r\n                    return this.getEditMode() === EDIT_MODE_ROW\r\n                },\r\n                _getFormEditItemTemplate: function(cellOptions, column) {\r\n                    if (this.getEditMode() !== EDIT_MODE_ROW && \"detailAdaptive\" === cellOptions.rowType) {\r\n                        cellOptions.columnIndex = this._columnsController.getVisibleIndex(column.index);\r\n                        return this.getColumnTemplate(cellOptions)\r\n                    }\r\n                    return this.callBase(cellOptions, column)\r\n                },\r\n                _closeEditItem: function($targetElement) {\r\n                    var $itemContents = $targetElement.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n                    var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n                    var formItem = $itemContents.length ? $itemContents.first().data(\"dx-form-item\") : null;\r\n                    var columnIndex = formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index);\r\n                    if (!this.isEditCell(rowIndex, columnIndex)) {\r\n                        this.callBase($targetElement)\r\n                    }\r\n                },\r\n                _beforeUpdateItems: function(rowIndices, rowIndex) {\r\n                    if (!this._adaptiveController.isFormEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n                        var items = this._dataController.items();\r\n                        var item = items[rowIndex];\r\n                        var oldExpandRowIndex = _uiGrid_core2.default.getIndexByKey(this._dataController.adaptiveExpandedKey(), items);\r\n                        this._isForceRowAdaptiveExpand = !this._adaptiveController.hasAdaptiveDetailRowExpanded();\r\n                        if (oldExpandRowIndex >= 0) {\r\n                            rowIndices.push(oldExpandRowIndex + 1)\r\n                        }\r\n                        rowIndices.push(rowIndex + 1);\r\n                        this._dataController.adaptiveExpandedKey(item.key)\r\n                    }\r\n                },\r\n                _afterInsertRow: function(options) {\r\n                    this.callBase(options);\r\n                    if (this._adaptiveController.hasHiddenColumns()) {\r\n                        this._adaptiveController.toggleExpandAdaptiveDetailRow(options.key, this.isRowEditMode());\r\n                        this._isForceRowAdaptiveExpand = true\r\n                    }\r\n                },\r\n                _collapseAdaptiveDetailRow: function() {\r\n                    if (this._isRowEditMode() && this._isForceRowAdaptiveExpand) {\r\n                        this._adaptiveController.collapseAdaptiveDetailRow();\r\n                        this._isForceRowAdaptiveExpand = false\r\n                    }\r\n                },\r\n                _cancelEditAdaptiveDetailRow: function() {\r\n                    if (this._adaptiveController.hasHiddenColumns()) {\r\n                        this._collapseAdaptiveDetailRow()\r\n                    }\r\n                },\r\n                _afterSaveEditData: function() {\r\n                    var _this2 = this;\r\n                    this.callBase.apply(this, arguments);\r\n                    var deferred = new _deferred.Deferred;\r\n                    if (this._isRowEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n                        (0, _deferred.when)(this.getController(\"validating\").validate(true)).done(function(isValid) {\r\n                            if (isValid) {\r\n                                _this2._cancelEditAdaptiveDetailRow()\r\n                            }\r\n                            deferred.resolve()\r\n                        })\r\n                    } else {\r\n                        deferred.resolve()\r\n                    }\r\n                    return deferred.promise()\r\n                },\r\n                _beforeCancelEditData: function() {\r\n                    this.callBase();\r\n                    this._cancelEditAdaptiveDetailRow()\r\n                },\r\n                _getRowIndicesForCascadeUpdating: function(row) {\r\n                    var rowIndices = this.callBase.apply(this, arguments);\r\n                    if (this._adaptiveController.isAdaptiveDetailRowExpanded(row.key)) {\r\n                        rowIndices.push(row.rowType === ADAPTIVE_ROW_TYPE ? row.rowIndex - 1 : row.rowIndex + 1)\r\n                    }\r\n                    return rowIndices\r\n                },\r\n                _beforeCloseEditCellInBatchMode: function(rowIndices) {\r\n                    var expandedKey = this._dataController._adaptiveExpandedKey;\r\n                    if (expandedKey) {\r\n                        var rowIndex = _uiGrid_core2.default.getIndexByKey(expandedKey, this._dataController.items());\r\n                        if (rowIndex > -1) {\r\n                            rowIndices.unshift(rowIndex)\r\n                        }\r\n                    }\r\n                },\r\n                editRow: function(rowIndex) {\r\n                    if (this._adaptiveController.isFormEditMode()) {\r\n                        this._adaptiveController.collapseAdaptiveDetailRow()\r\n                    }\r\n                    this.callBase(rowIndex)\r\n                },\r\n                deleteRow: function(rowIndex) {\r\n                    var rowKey = this._dataController.getKeyByRowIndex(rowIndex);\r\n                    if (this.getEditMode() === EDIT_MODE_BATCH && this._adaptiveController.isAdaptiveDetailRowExpanded(rowKey)) {\r\n                        this._adaptiveController.collapseAdaptiveDetailRow()\r\n                    }\r\n                    this.callBase(rowIndex)\r\n                },\r\n                init: function() {\r\n                    this.callBase();\r\n                    this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n                }\r\n            },\r\n            resizing: {\r\n                _needBestFit: function() {\r\n                    return this.callBase() || !!this._adaptiveColumnsController.getHidingColumnsQueue().length\r\n                },\r\n                _updateScrollableForIE: function() {\r\n                    var that = this;\r\n                    if (_browser.default.msie && parseInt(_browser.default.version) <= 11) {\r\n                        this._updateScrollableTimeoutID = setTimeout(function() {\r\n                            that.getView(\"rowsView\")._updateScrollable()\r\n                        })\r\n                    }\r\n                },\r\n                _correctColumnWidths: function(resultWidths, visibleColumns) {\r\n                    var adaptiveController = this._adaptiveColumnsController;\r\n                    var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n                    var oldHiddenColumns = adaptiveController.getHiddenColumns();\r\n                    var hidingColumnsQueue = adaptiveController.updateHidingQueue(this._columnsController.getColumns());\r\n                    adaptiveController.hideRedundantColumns(resultWidths, visibleColumns, hidingColumnsQueue);\r\n                    var hiddenColumns = adaptiveController.getHiddenColumns();\r\n                    if (adaptiveController.hasAdaptiveDetailRowExpanded()) {\r\n                        if (oldHiddenColumns.length !== hiddenColumns.length) {\r\n                            adaptiveController.updateForm(hiddenColumns)\r\n                        }\r\n                    }!hiddenColumns.length && adaptiveController.collapseAdaptiveDetailRow();\r\n                    if (columnAutoWidth && hidingColumnsQueue.length && !hiddenColumns.length) {\r\n                        this._updateScrollableForIE()\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _toggleBestFitMode: function(isBestFit) {\r\n                    isBestFit && this._adaptiveColumnsController._showHiddenColumns();\r\n                    this.callBase(isBestFit)\r\n                },\r\n                _needStretch: function() {\r\n                    var adaptiveColumnsController = this._adaptiveColumnsController;\r\n                    return this.callBase.apply(this, arguments) || adaptiveColumnsController.getHidingColumnsQueue().length || adaptiveColumnsController.hasHiddenColumns()\r\n                },\r\n                init: function() {\r\n                    this._adaptiveColumnsController = this.getController(\"adaptiveColumns\");\r\n                    this.callBase()\r\n                },\r\n                dispose: function() {\r\n                    this.callBase.apply(this, arguments);\r\n                    clearTimeout(this._updateScrollableTimeoutID)\r\n                }\r\n            },\r\n            data: {\r\n                _processItems: function(items, change) {\r\n                    var that = this;\r\n                    var changeType = change.changeType;\r\n                    items = that.callBase.apply(that, arguments);\r\n                    if (\"loadingAll\" === changeType || !(0, _type.isDefined)(that._adaptiveExpandedKey)) {\r\n                        return items\r\n                    }\r\n                    var expandRowIndex = _uiGrid_core2.default.getIndexByKey(that._adaptiveExpandedKey, items);\r\n                    if (expandRowIndex >= 0) {\r\n                        var item = items[expandRowIndex];\r\n                        items.splice(expandRowIndex + 1, 0, {\r\n                            visible: true,\r\n                            rowType: ADAPTIVE_ROW_TYPE,\r\n                            key: item.key,\r\n                            data: item.data,\r\n                            node: item.node,\r\n                            modifiedValues: item.modifiedValues,\r\n                            isNewRow: item.isNewRow,\r\n                            values: item.values\r\n                        })\r\n                    } else {\r\n                        if (\"refresh\" === changeType) {\r\n                            that._adaptiveExpandedKey = void 0\r\n                        }\r\n                    }\r\n                    return items\r\n                },\r\n                _getRowIndicesForExpand: function(key) {\r\n                    var rowIndices = this.callBase.apply(this, arguments);\r\n                    if (this.getController(\"adaptiveColumns\").isAdaptiveDetailRowExpanded(key)) {\r\n                        var lastRowIndex = rowIndices[rowIndices.length - 1];\r\n                        rowIndices.push(lastRowIndex + 1)\r\n                    }\r\n                    return rowIndices\r\n                },\r\n                adaptiveExpandedKey: function(value) {\r\n                    if ((0, _type.isDefined)(value)) {\r\n                        this._adaptiveExpandedKey = value\r\n                    } else {\r\n                        return this._adaptiveExpandedKey\r\n                    }\r\n                },\r\n                toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n                    var that = this;\r\n                    var oldExpandLoadedRowIndex = _uiGrid_core2.default.getIndexByKey(that._adaptiveExpandedKey, that._items);\r\n                    var newExpandLoadedRowIndex = _uiGrid_core2.default.getIndexByKey(key, that._items);\r\n                    if (oldExpandLoadedRowIndex >= 0 && oldExpandLoadedRowIndex === newExpandLoadedRowIndex && !alwaysExpanded) {\r\n                        key = void 0;\r\n                        newExpandLoadedRowIndex = -1\r\n                    }\r\n                    that._adaptiveExpandedKey = key;\r\n                    if (oldExpandLoadedRowIndex >= 0) {\r\n                        oldExpandLoadedRowIndex++\r\n                    }\r\n                    if (newExpandLoadedRowIndex >= 0) {\r\n                        newExpandLoadedRowIndex++\r\n                    }\r\n                    var rowIndexDelta = that.getRowIndexDelta();\r\n                    that.updateItems({\r\n                        allowInvisibleRowIndices: true,\r\n                        changeType: \"update\",\r\n                        rowIndices: [oldExpandLoadedRowIndex - rowIndexDelta, newExpandLoadedRowIndex - rowIndexDelta]\r\n                    })\r\n                },\r\n                init: function() {\r\n                    this.callBase();\r\n                    this._adaptiveExpandedKey = void 0\r\n                }\r\n            },\r\n            editorFactory: {\r\n                _getFocusCellSelector: function() {\r\n                    return this.callBase() + \", .dx-adaptive-detail-row .dx-field-item > .dx-field-item-content\"\r\n                },\r\n                _getTooltipsSelector: function() {\r\n                    return this.callBase() + \", .dx-field-item-content .\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)\r\n                }\r\n            },\r\n            columns: {\r\n                _isColumnVisible: function(column) {\r\n                    return this.callBase(column) && !column.adaptiveHidden\r\n                }\r\n            },\r\n            keyboardNavigation: {\r\n                _isCellValid: function($cell) {\r\n                    return this.callBase.apply(this, arguments) && !$cell.hasClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n                },\r\n                _processNextCellInMasterDetail: function($nextCell) {\r\n                    this.callBase($nextCell);\r\n                    var isCellOrBatchMode = this._editingController.isCellOrBatchEditMode();\r\n                    if (!this._isInsideEditForm($nextCell) && $nextCell && isCellOrBatchMode) {\r\n                        var focusHandler = function focusHandler() {\r\n                            _events_engine.default.off($nextCell, \"focus\", focusHandler);\r\n                            _events_engine.default.trigger($nextCell, \"dxclick\")\r\n                        };\r\n                        _events_engine.default.on($nextCell, \"focus\", focusHandler)\r\n                    }\r\n                },\r\n                _handleTabKeyOnMasterDetailCell: function(eventTarget, direction) {\r\n                    var result = this.callBase(eventTarget, direction);\r\n                    var $currentCell = this._getFocusedCell();\r\n                    var $row = $currentCell && $currentCell.parent();\r\n                    if (!result && $row && $row.length) {\r\n                        var $dataCells = getDataCellElements($row);\r\n                        var $targetCell = \"next\" === direction ? $dataCells.last() : $dataCells.first();\r\n                        var rowIndex = $row.get(0).rowIndex;\r\n                        var adaptiveController = this._adaptiveController;\r\n                        var key = this._dataController.getKeyByRowIndex(\"next\" === direction ? rowIndex : rowIndex - 1);\r\n                        var isCellElementsEquals = $currentCell && $targetCell && $currentCell.get(0) === $targetCell.get(0);\r\n                        return adaptiveController.isAdaptiveDetailRowExpanded(key) && isCellElementsEquals\r\n                    }\r\n                    return result\r\n                },\r\n                init: function() {\r\n                    this.callBase();\r\n                    this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/bubble_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.chart = void 0;\r\nvar _line_series = require(\"./line_series\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _area_series = require(\"./area_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar lineSeries = _line_series.chart.line;\r\nvar areaSeries = _area_series.chart.area;\r\nvar chartBarSeries = _bar_series.chart.bar;\r\nvar polarBarSeries = _bar_series.polar.bar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar _noop = _common.noop;\r\nvar chart = {};\r\nexports.chart = chart;\r\nchart.bubble = _extend({}, _scatter_series.chart, {\r\n    _calculateErrorBars: _noop,\r\n    _getMainColor: chartBarSeries._getMainColor,\r\n    _createPointStyles: chartBarSeries._createPointStyles,\r\n    _updatePointsVisibility: chartBarSeries._updatePointsVisibility,\r\n    _getOptionsForPoint: chartBarSeries._getOptionsForPoint,\r\n    _applyMarkerClipRect: lineSeries._applyElementsClipRect,\r\n    _parsePointStyle: polarBarSeries._parsePointStyle,\r\n    _createLegendState: areaSeries._createLegendState,\r\n    _setMarkerGroupSettings: polarBarSeries._setMarkerGroupSettings,\r\n    areErrorBarsVisible: _noop,\r\n    _createErrorBarGroup: _noop,\r\n    _checkData: function(data, skippedFields) {\r\n        return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n            value: this.getValueFields()[0],\r\n            size: this.getSizeField()\r\n        })\r\n    },\r\n    _getPointDataSelector: function(data, options) {\r\n        var sizeField = this.getSizeField();\r\n        var baseGetter = _scatter_series.chart._getPointDataSelector.call(this);\r\n        return function(data) {\r\n            var pointData = baseGetter(data);\r\n            pointData.size = data[sizeField];\r\n            return pointData\r\n        }\r\n    },\r\n    _aggregators: {\r\n        avg: function(_ref, series) {\r\n            var _ref2;\r\n            var data = _ref.data,\r\n                intervalStart = _ref.intervalStart;\r\n            if (!data.length) {\r\n                return\r\n            }\r\n            var valueField = series.getValueFields()[0];\r\n            var sizeField = series.getSizeField();\r\n            var aggregate = data.reduce(function(result, item) {\r\n                result[0] += item[valueField];\r\n                result[1] += item[sizeField];\r\n                result[2]++;\r\n                return result\r\n            }, [0, 0, 0]);\r\n            return _ref2 = {}, _defineProperty(_ref2, valueField, aggregate[0] / aggregate[2]), _defineProperty(_ref2, sizeField, aggregate[1] / aggregate[2]), _defineProperty(_ref2, series.getArgumentField(), intervalStart), _ref2\r\n        }\r\n    },\r\n    getValueFields: function() {\r\n        return [this._options.valueField || \"val\"]\r\n    },\r\n    getSizeField: function() {\r\n        return this._options.sizeField || \"size\"\r\n    },\r\n    _animate: function() {\r\n        var that = this;\r\n        var lastPointIndex = that._drawnPoints.length - 1;\r\n        var labelsGroup = that._labelsGroup;\r\n        var labelAnimFunc = function() {\r\n            labelsGroup && labelsGroup.animate({\r\n                opacity: 1\r\n            }, {\r\n                duration: that._defaultDuration\r\n            })\r\n        };\r\n        _each(that._drawnPoints || [], function(i, p) {\r\n            p.animate(i === lastPointIndex ? labelAnimFunc : void 0, {\r\n                r: p.bubbleSize,\r\n                translateX: p.x,\r\n                translateY: p.y\r\n            })\r\n        })\r\n    },\r\n    _patchMarginOptions: function(options) {\r\n        options.processBubbleSize = true;\r\n        return options\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/scheduler/dataStructures.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.AppointmentTooltipInfo = void 0;\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\nvar AppointmentTooltipInfo = function AppointmentTooltipInfo(appointment) {\r\n    var targetedAppointment = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0;\r\n    var color = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [];\r\n    var settings = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : [];\r\n    _classCallCheck(this, AppointmentTooltipInfo);\r\n    this.appointment = appointment;\r\n    this.targetedAppointment = targetedAppointment;\r\n    this.color = color;\r\n    this.settings = settings\r\n};\r\nexports.AppointmentTooltipInfo = AppointmentTooltipInfo;\r\n","/**\r\n * DevExtreme (core/utils/type.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.isEvent = exports.type = exports.isDeferred = exports.isPromise = exports.isRenderer = exports.isWindow = exports.isPrimitive = exports.isPlainObject = exports.isEmptyObject = exports.isObject = exports.isNumeric = exports.isString = exports.isFunction = exports.isDefined = exports.isDate = exports.isExponential = exports.isBoolean = void 0;\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar types = {\r\n    \"[object Array]\": \"array\",\r\n    \"[object Date]\": \"date\",\r\n    \"[object Object]\": \"object\",\r\n    \"[object String]\": \"string\",\r\n    \"[object Null]\": \"null\"\r\n};\r\nvar type = function(object) {\r\n    var typeOfObject = Object.prototype.toString.call(object);\r\n    return \"object\" === _typeof(object) ? types[typeOfObject] || \"object\" : _typeof(object)\r\n};\r\nexports.type = type;\r\nvar isBoolean = function(object) {\r\n    return \"boolean\" === typeof object\r\n};\r\nexports.isBoolean = isBoolean;\r\nvar isExponential = function(value) {\r\n    return isNumeric(value) && value.toString().indexOf(\"e\") !== -1\r\n};\r\nexports.isExponential = isExponential;\r\nvar isDate = function(object) {\r\n    return \"date\" === type(object)\r\n};\r\nexports.isDate = isDate;\r\nvar isDefined = function(object) {\r\n    return null !== object && void 0 !== object\r\n};\r\nexports.isDefined = isDefined;\r\nvar isFunction = function(object) {\r\n    return \"function\" === typeof object\r\n};\r\nexports.isFunction = isFunction;\r\nvar isString = function(object) {\r\n    return \"string\" === typeof object\r\n};\r\nexports.isString = isString;\r\nvar isNumeric = function(object) {\r\n    return \"number\" === typeof object && isFinite(object) || !isNaN(object - parseFloat(object))\r\n};\r\nexports.isNumeric = isNumeric;\r\nvar isObject = function(object) {\r\n    return \"object\" === type(object)\r\n};\r\nexports.isObject = isObject;\r\nvar isEmptyObject = function(object) {\r\n    var property;\r\n    for (property in object) {\r\n        return false\r\n    }\r\n    return true\r\n};\r\nexports.isEmptyObject = isEmptyObject;\r\nvar isPlainObject = function(object) {\r\n    if (!object || \"[object Object]\" !== Object.prototype.toString.call(object)) {\r\n        return false\r\n    }\r\n    var proto = Object.getPrototypeOf(object);\r\n    var ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\r\n    return \"function\" === typeof ctor && Object.toString.call(ctor) === Object.toString.call(Object)\r\n};\r\nexports.isPlainObject = isPlainObject;\r\nvar isPrimitive = function(value) {\r\n    return [\"object\", \"array\", \"function\"].indexOf(type(value)) === -1\r\n};\r\nexports.isPrimitive = isPrimitive;\r\nvar isWindow = function(object) {\r\n    return null != object && object === object.window\r\n};\r\nexports.isWindow = isWindow;\r\nvar isRenderer = function(object) {\r\n    return !!(object.jquery || object.dxRenderer)\r\n};\r\nexports.isRenderer = isRenderer;\r\nvar isPromise = function(object) {\r\n    return object && isFunction(object.then)\r\n};\r\nexports.isPromise = isPromise;\r\nvar isDeferred = function(object) {\r\n    return object && isFunction(object.done) && isFunction(object.fail)\r\n};\r\nexports.isDeferred = isDeferred;\r\nvar isEvent = function(object) {\r\n    return !!(object && object.preventDefault)\r\n};\r\nexports.isEvent = isEvent;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/table_body.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.DateTableBody = DateTableBody;\r\nexports.DateTableBodyProps = exports.viewFunction = void 0;\r\nvar _row = require(\"../row\");\r\nvar _utils = require(\"../../utils\");\r\nvar _layout_props = require(\"../layout_props\");\r\nvar _table_body = require(\"./all_day_panel/table_body\");\r\nvar _cell = require(\"../../month/date_table/cell\");\r\nvar _cell2 = require(\"./cell\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(Preact.Fragment, null, viewModel.props.viewData.groupedData.map(function(_ref, groupIndex) {\r\n        var allDayPanel = _ref.allDayPanel,\r\n            dateTable = _ref.dateTable;\r\n        return Preact.h(Preact.Fragment, {\r\n            key: (0, _utils.getKeyByGroup)(groupIndex)\r\n        }, (0, _utils.getIsGroupedAllDayPanel)(viewModel.props.viewData, groupIndex) && Preact.h(_table_body.AllDayPanelTableBody, {\r\n            viewData: allDayPanel,\r\n            dataCellTemplate: viewModel.props.dataCellTemplate,\r\n            isVerticalGroupOrientation: true\r\n        }), dateTable.map(function(cellsRow) {\r\n            return Preact.h(_row.Row, {\r\n                className: \"dx-scheduler-date-table-row\",\r\n                key: cellsRow[0].key\r\n            }, cellsRow.map(function(_ref2) {\r\n                var endDate = _ref2.endDate,\r\n                    cellGroupIndex = _ref2.groupIndex,\r\n                    groups = _ref2.groups,\r\n                    index = _ref2.index,\r\n                    isFirstGroupCell = _ref2.isFirstGroupCell,\r\n                    isLastGroupCell = _ref2.isLastGroupCell,\r\n                    key = _ref2.key,\r\n                    startDate = _ref2.startDate;\r\n                return Preact.h(viewModel.cell, {\r\n                    isFirstGroupCell: isFirstGroupCell,\r\n                    isLastGroupCell: isLastGroupCell,\r\n                    startDate: startDate,\r\n                    endDate: endDate,\r\n                    groups: groups,\r\n                    groupIndex: cellGroupIndex,\r\n                    index: index,\r\n                    dataCellTemplate: viewModel.props.dataCellTemplate,\r\n                    key: key\r\n                })\r\n            }))\r\n        }))\r\n    }))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar DateTableBodyProps = _objectSpread({}, _layout_props.LayoutProps);\r\nexports.DateTableBodyProps = DateTableBodyProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction DateTableBody(props) {\r\n    var __cell = (0, _hooks.useCallback)(function() {\r\n        var viewType = props.viewType;\r\n        return \"month\" === viewType ? _cell.MonthDateTableCell : _cell2.DateTableCellBase\r\n    }, [props.viewType]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.dataCellTemplate, props.groupOrientation, props.viewData, props.viewType, _objectWithoutProperties(props, [\"dataCellTemplate\", \"groupOrientation\", \"viewData\", \"viewType\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n        }),\r\n        cell: __cell(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nDateTableBody.defaultProps = _objectSpread({}, DateTableBodyProps);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.editor_factory.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.editor_factory\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"editorFactory\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/overlay.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./overlay/ui.overlay\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (core/utils/browser.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"./extend\");\r\nvar _window = require(\"./window\");\r\nvar navigator = (0, _window.getNavigator)();\r\nvar webkitRegExp = /(webkit)[ /]([\\w.]+)/;\r\nvar ieRegExp = /(msie) (\\d{1,2}\\.\\d)/;\r\nvar ie11RegExp = /(trident).*rv:(\\d{1,2}\\.\\d)/;\r\nvar msEdge = /(edge)\\/((\\d+)?[\\w.]+)/;\r\nvar mozillaRegExp = /(mozilla)(?:.*? rv:([\\w.]+))/;\r\nvar browserFromUA = function(ua) {\r\n    ua = ua.toLowerCase();\r\n    var result = {};\r\n    var matches = ieRegExp.exec(ua) || ie11RegExp.exec(ua) || msEdge.exec(ua) || ua.indexOf(\"compatible\") < 0 && mozillaRegExp.exec(ua) || webkitRegExp.exec(ua) || [];\r\n    var browserName = matches[1];\r\n    var browserVersion = matches[2];\r\n    if (\"webkit\" === browserName) {\r\n        result.webkit = true;\r\n        if (ua.indexOf(\"chrome\") >= 0 || ua.indexOf(\"crios\") >= 0) {\r\n            browserName = \"chrome\";\r\n            browserVersion = /(?:chrome|crios)\\/(\\d+\\.\\d+)/.exec(ua);\r\n            browserVersion = browserVersion && browserVersion[1]\r\n        } else {\r\n            if (ua.indexOf(\"fxios\") >= 0) {\r\n                browserName = \"mozilla\";\r\n                browserVersion = /fxios\\/(\\d+\\.\\d+)/.exec(ua);\r\n                browserVersion = browserVersion && browserVersion[1]\r\n            } else {\r\n                if (ua.indexOf(\"safari\") >= 0 && /version|phantomjs/.test(ua)) {\r\n                    browserName = \"safari\";\r\n                    browserVersion = /(?:version|phantomjs)\\/([0-9.]+)/.exec(ua);\r\n                    browserVersion = browserVersion && browserVersion[1]\r\n                } else {\r\n                    browserName = \"unknown\";\r\n                    browserVersion = /applewebkit\\/([0-9.]+)/.exec(ua);\r\n                    browserVersion = browserVersion && browserVersion[1]\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (\"trident\" === browserName || \"edge\" === browserName) {\r\n        browserName = \"msie\"\r\n    }\r\n    if (browserName) {\r\n        result[browserName] = true;\r\n        result.version = browserVersion\r\n    }\r\n    return result\r\n};\r\nvar _default = (0, _extend.extend)({\r\n    _fromUA: browserFromUA\r\n}, browserFromUA(navigator.userAgent));\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.error_handling.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.error_handling\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"errorHandling\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.editor_factory.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.editor_factory\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"editorFactory\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/series/pie_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.donut = exports.doughnut = exports.pie = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar chartScatterSeries = _scatter_series.chart;\r\nvar barSeries = _bar_series.chart.bar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar _noop = _common.noop;\r\nvar _map = _utils.map;\r\nvar _isFinite = isFinite;\r\nvar _max = Math.max;\r\nvar ANIMATION_DURATION = .7;\r\nvar INSIDE = \"inside\";\r\nvar pie = _extend({}, barSeries, {\r\n    _setGroupsSettings: function() {\r\n        chartScatterSeries._setGroupsSettings.apply(this, arguments);\r\n        this._labelsGroup.attr({\r\n            \"pointer-events\": null\r\n        })\r\n    },\r\n    _createErrorBarGroup: _noop,\r\n    _drawPoint: function(options) {\r\n        var point = options.point;\r\n        var legendCallback = this._legendCallback;\r\n        chartScatterSeries._drawPoint.call(this, options);\r\n        !point.isVisible() && point.setInvisibility();\r\n        point.isSelected() && legendCallback()\r\n    },\r\n    _getOldPoint: function(data, oldPointsByArgument, index) {\r\n        var point = (this._points || [])[index];\r\n        if (point) {\r\n            oldPointsByArgument[point.argument.valueOf()] = oldPointsByArgument[point.argument.valueOf()].filter(function(p) {\r\n                return p !== point\r\n            })\r\n        }\r\n        return point\r\n    },\r\n    adjustLabels: function(moveLabelsFromCenter) {\r\n        return (this._points || []).reduce(function(r, p) {\r\n            if (p._label.isVisible()) {\r\n                p.setLabelTrackerData();\r\n                r = p.applyWordWrap(moveLabelsFromCenter) || r;\r\n                p.updateLabelCoord(moveLabelsFromCenter);\r\n                return r\r\n            }\r\n        }, false)\r\n    },\r\n    _applyElementsClipRect: _noop,\r\n    getColor: _noop,\r\n    areErrorBarsVisible: _noop,\r\n    drawLabelsWOPoints: function() {\r\n        var that = this;\r\n        if (that._options.label.position === INSIDE) {\r\n            return false\r\n        }\r\n        that._labelsGroup.append(that._extGroups.labelsGroup);\r\n        (that._points || []).forEach(function(point) {\r\n            point.drawLabel()\r\n        });\r\n        return true\r\n    },\r\n    getPointsCount: function() {\r\n        var _this = this;\r\n        return this._data.filter(function(d) {\r\n            return _this._checkData(d)\r\n        }).length\r\n    },\r\n    setMaxPointsCount: function(count) {\r\n        this._pointsCount = count\r\n    },\r\n    _getCreatingPointOptions: function(data, dataIndex) {\r\n        return this._getPointOptions(data, dataIndex)\r\n    },\r\n    _updateOptions: function(options) {\r\n        this.labelSpace = 0;\r\n        this.innerRadius = \"pie\" === this.type ? 0 : options.innerRadius\r\n    },\r\n    _checkData: function(data, skippedFields) {\r\n        var base = barSeries._checkData.call(this, data, skippedFields, {\r\n            value: this.getValueFields()[0]\r\n        });\r\n        return this._options.paintNullPoints ? base : base && null !== data.value\r\n    },\r\n    _createGroups: chartScatterSeries._createGroups,\r\n    _setMarkerGroupSettings: function() {\r\n        this._markersGroup.attr({\r\n            \"class\": \"dxc-markers\"\r\n        })\r\n    },\r\n    _getMainColor: function(data, point) {\r\n        var pointsByArg = this.getPointsByArg(data.argument);\r\n        var argumentIndex = point ? pointsByArg.indexOf(point) : pointsByArg.length;\r\n        return this._options.mainSeriesColor(data.argument, argumentIndex, this._pointsCount)\r\n    },\r\n    _getPointOptions: function(data) {\r\n        return this._parsePointOptions(this._preparePointOptions(), this._options.label, data)\r\n    },\r\n    _getRangeData: function() {\r\n        return this._rangeData\r\n    },\r\n    _createPointStyles: function(pointOptions, data, point) {\r\n        var that = this;\r\n        var mainColor = pointOptions.color || that._getMainColor(data, point);\r\n        return {\r\n            normal: that._parsePointStyle(pointOptions, mainColor, mainColor),\r\n            hover: that._parsePointStyle(pointOptions.hoverStyle, mainColor, mainColor),\r\n            selection: that._parsePointStyle(pointOptions.selectionStyle, mainColor, mainColor),\r\n            legendStyles: {\r\n                normal: that._createLegendState(pointOptions, mainColor),\r\n                hover: that._createLegendState(pointOptions.hoverStyle, mainColor),\r\n                selection: that._createLegendState(pointOptions.selectionStyle, mainColor)\r\n            }\r\n        }\r\n    },\r\n    _getArrangeMinShownValue: function(points, total) {\r\n        var minSegmentSize = this._options.minSegmentSize;\r\n        var totalMinSegmentSize = 0;\r\n        var totalNotMinValues = 0;\r\n        total = total || points.length;\r\n        _each(points, function(_, point) {\r\n            if (point.isVisible()) {\r\n                if (point.normalInitialValue < minSegmentSize * total / 360) {\r\n                    totalMinSegmentSize += minSegmentSize\r\n                } else {\r\n                    totalNotMinValues += point.normalInitialValue\r\n                }\r\n            }\r\n        });\r\n        return totalMinSegmentSize < 360 ? minSegmentSize * totalNotMinValues / (360 - totalMinSegmentSize) : 0\r\n    },\r\n    _applyArrangeCorrection: function(points, minShownValue, total) {\r\n        var options = this._options;\r\n        var isClockWise = \"anticlockwise\" !== options.segmentsDirection;\r\n        var shiftedAngle = _isFinite(options.startAngle) ? (0, _utils.normalizeAngle)(options.startAngle) : 0;\r\n        var minSegmentSize = options.minSegmentSize;\r\n        var percent;\r\n        var correction = 0;\r\n        var zeroTotalCorrection = 0;\r\n        if (0 === total) {\r\n            total = points.filter(function(el) {\r\n                return el.isVisible()\r\n            }).length;\r\n            zeroTotalCorrection = 1\r\n        }\r\n        _each(isClockWise ? points : points.concat([]).reverse(), function(_, point) {\r\n            var val = point.isVisible() ? zeroTotalCorrection || point.normalInitialValue : 0;\r\n            var updatedZeroValue;\r\n            if (minSegmentSize && point.isVisible() && val < minShownValue) {\r\n                updatedZeroValue = minShownValue\r\n            }\r\n            percent = val / total;\r\n            point.correctValue(correction, percent, zeroTotalCorrection + (updatedZeroValue || 0));\r\n            point.shiftedAngle = shiftedAngle;\r\n            correction += updatedZeroValue || val\r\n        });\r\n        this._rangeData = {\r\n            val: {\r\n                min: 0,\r\n                max: correction\r\n            }\r\n        }\r\n    },\r\n    _removePoint: function(point) {\r\n        var points = this.getPointsByArg(point.argument);\r\n        points.splice(points.indexOf(point), 1);\r\n        point.dispose()\r\n    },\r\n    arrangePoints: function() {\r\n        var that = this;\r\n        var originalPoints = that._points || [];\r\n        var minSegmentSize = that._options.minSegmentSize;\r\n        var minShownValue;\r\n        var isAllPointsNegative = true;\r\n        var i = 0;\r\n        var len = originalPoints.length;\r\n        while (i < len && isAllPointsNegative) {\r\n            isAllPointsNegative = originalPoints[i].value <= 0;\r\n            i++\r\n        }\r\n        var points = that._points = _map(originalPoints, function(point) {\r\n            if (null === point.value || !isAllPointsNegative && point.value < 0) {\r\n                that._removePoint(point);\r\n                return null\r\n            } else {\r\n                return point\r\n            }\r\n        });\r\n        var maxValue = points.reduce(function(max, p) {\r\n            return _max(max, Math.abs(p.initialValue))\r\n        }, 0);\r\n        points.forEach(function(p) {\r\n            p.normalInitialValue = p.initialValue / (0 !== maxValue ? maxValue : 1)\r\n        });\r\n        var total = points.reduce(function(total, point) {\r\n            return total + (point.isVisible() ? point.normalInitialValue : 0)\r\n        }, 0);\r\n        if (minSegmentSize) {\r\n            minShownValue = this._getArrangeMinShownValue(points, total)\r\n        }\r\n        that._applyArrangeCorrection(points, minShownValue, total)\r\n    },\r\n    correctPosition: function(correction, canvas) {\r\n        _each(this._points, function(_, point) {\r\n            point.correctPosition(correction)\r\n        });\r\n        this.setVisibleArea(canvas)\r\n    },\r\n    correctRadius: function(correction) {\r\n        this._points.forEach(function(point) {\r\n            point.correctRadius(correction)\r\n        })\r\n    },\r\n    correctLabelRadius: function(labelRadius) {\r\n        this._points.forEach(function(point) {\r\n            point.correctLabelRadius(labelRadius)\r\n        })\r\n    },\r\n    setVisibleArea: function(canvas) {\r\n        this._visibleArea = {\r\n            minX: canvas.left,\r\n            maxX: canvas.width - canvas.right,\r\n            minY: canvas.top,\r\n            maxY: canvas.height - canvas.bottom\r\n        }\r\n    },\r\n    _applyVisibleArea: _noop,\r\n    _animate: function(firstDrawing) {\r\n        var that = this;\r\n        var points = that._points;\r\n        var pointsCount = points && points.length;\r\n        var completeFunc = function() {\r\n            that._animateComplete()\r\n        };\r\n        var animatePoint;\r\n        if (firstDrawing) {\r\n            animatePoint = function(p, i) {\r\n                p.animate(i === pointsCount - 1 ? completeFunc : void 0, ANIMATION_DURATION, (1 - ANIMATION_DURATION) * i / (pointsCount - 1))\r\n            }\r\n        } else {\r\n            animatePoint = function(p, i) {\r\n                p.animate(i === pointsCount - 1 ? completeFunc : void 0)\r\n            }\r\n        }\r\n        points.forEach(animatePoint)\r\n    },\r\n    getVisiblePoints: function() {\r\n        return _map(this._points, function(p) {\r\n            return p.isVisible() ? p : null\r\n        })\r\n    },\r\n    getPointsByKeys: function(arg, argumentIndex) {\r\n        var pointsByArg = this.getPointsByArg(arg);\r\n        return pointsByArg[argumentIndex] && [pointsByArg[argumentIndex]] || []\r\n    }\r\n});\r\nexports.pie = pie;\r\nvar doughnut = pie;\r\nexports.doughnut = doughnut;\r\nvar donut = pie;\r\nexports.donut = donut;\r\n","/**\r\n * DevExtreme (viz/axes/smart_formatter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.smartFormatter = smartFormatter;\r\nexports.formatRange = formatRange;\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _format = _format_helper.default.format;\r\nvar abs = Math.abs,\r\n    floor = Math.floor;\r\nvar EXPONENTIAL = \"exponential\";\r\nvar formats = [\"fixedPoint\", \"thousands\", \"millions\", \"billions\", \"trillions\", EXPONENTIAL];\r\nvar dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"month\", \"year\"];\r\n\r\nfunction getDatesDifferences(prevDate, curDate, nextDate, tickFormat) {\r\n    var prevDifferences;\r\n    var nextDifferences;\r\n    var dateUnitInterval;\r\n    var dateUnitsLength = dateUnitIntervals.length;\r\n    var i;\r\n    var j;\r\n    if (\"week\" === tickFormat) {\r\n        tickFormat = \"day\"\r\n    } else {\r\n        if (\"quarter\" === tickFormat) {\r\n            tickFormat = \"month\"\r\n        } else {\r\n            if (\"shorttime\" === tickFormat) {\r\n                tickFormat = \"hour\"\r\n            } else {\r\n                if (\"longtime\" === tickFormat) {\r\n                    tickFormat = \"second\"\r\n                }\r\n            }\r\n        }\r\n    }\r\n    var tickFormatIndex = dateUnitIntervals.indexOf(tickFormat);\r\n    if (nextDate) {\r\n        nextDifferences = _date.default.getDatesDifferences(curDate, nextDate);\r\n        prevDifferences = _date.default.getDatesDifferences(curDate, prevDate);\r\n        if (nextDifferences[tickFormat]) {\r\n            for (i = dateUnitsLength - 1; i >= tickFormatIndex; i--) {\r\n                dateUnitInterval = dateUnitIntervals[i];\r\n                if (i === tickFormatIndex) {\r\n                    setDateUnitInterval(nextDifferences, tickFormatIndex + (nextDifferences.millisecond ? 2 : 1))\r\n                } else {\r\n                    if (nextDifferences[dateUnitInterval]) {\r\n                        resetDateUnitInterval(nextDifferences, i);\r\n                        break\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    } else {\r\n        prevDifferences = _date.default.getDatesDifferences(prevDate, curDate);\r\n        for (i = dateUnitsLength - 1; i >= tickFormatIndex; i--) {\r\n            dateUnitInterval = dateUnitIntervals[i];\r\n            if (prevDifferences[dateUnitInterval]) {\r\n                if (i - tickFormatIndex > 1) {\r\n                    for (j = tickFormatIndex + 1; j >= 0; j--) {\r\n                        resetDateUnitInterval(prevDifferences, j)\r\n                    }\r\n                    break\r\n                } else {\r\n                    if (isDateTimeStart(curDate, dateUnitInterval)) {\r\n                        for (j = i - 1; j > 0; j--) {\r\n                            resetDateUnitInterval(prevDifferences, j)\r\n                        }\r\n                        break\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return nextDate ? nextDifferences : prevDifferences\r\n}\r\n\r\nfunction isDateTimeStart(date, dateUnitInterval) {\r\n    var unitNumbers = [date.getMilliseconds(), date.getSeconds(), date.getMinutes(), date.getHours(), date.getDate(), date.getMonth()];\r\n    var unitIndex = dateUnitIntervals.indexOf(dateUnitInterval);\r\n    var i;\r\n    for (i = 0; i < unitIndex; i++) {\r\n        if (4 === i && 1 !== unitNumbers[i] || 4 !== i && 0 !== unitNumbers[i]) {\r\n            return false\r\n        }\r\n    }\r\n    return true\r\n}\r\n\r\nfunction resetDateUnitInterval(differences, intervalIndex) {\r\n    var dateUnitInterval = dateUnitIntervals[intervalIndex];\r\n    if (differences[dateUnitInterval]) {\r\n        differences[dateUnitInterval] = false;\r\n        differences.count--\r\n    }\r\n}\r\n\r\nfunction setDateUnitInterval(differences, intervalIndex) {\r\n    var dateUnitInterval = dateUnitIntervals[intervalIndex];\r\n    if (false === differences[dateUnitInterval]) {\r\n        differences[dateUnitInterval] = true;\r\n        differences.count++\r\n    }\r\n}\r\n\r\nfunction getNoZeroIndex(str) {\r\n    return str.length - parseInt(str).toString().length\r\n}\r\n\r\nfunction getTransitionTickIndex(ticks, value) {\r\n    var i;\r\n    var curDiff;\r\n    var minDiff;\r\n    var nearestTickIndex = 0;\r\n    minDiff = abs(value - ticks[0]);\r\n    for (i = 1; i < ticks.length; i++) {\r\n        curDiff = abs(value - ticks[i]);\r\n        if (curDiff < minDiff) {\r\n            minDiff = curDiff;\r\n            nearestTickIndex = i\r\n        }\r\n    }\r\n    return nearestTickIndex\r\n}\r\n\r\nfunction splitDecimalNumber(value) {\r\n    return value.toString().split(\".\")\r\n}\r\n\r\nfunction createFormat(type) {\r\n    var formatter;\r\n    if ((0, _type.isFunction)(type)) {\r\n        formatter = type;\r\n        type = null\r\n    }\r\n    return {\r\n        type: type,\r\n        formatter: formatter\r\n    }\r\n}\r\n\r\nfunction smartFormatter(tick, options) {\r\n    var tickInterval = options.tickInterval;\r\n    var tickIntervalIndex;\r\n    var tickIndex;\r\n    var actualIndex;\r\n    var stringTick = abs(tick).toString();\r\n    var precision = 0;\r\n    var typeFormat;\r\n    var offset = 0;\r\n    var separatedTickInterval;\r\n    var indexOfFormat = 0;\r\n    var indexOfTick = -1;\r\n    var datesDifferences;\r\n    var format = options.labelOptions.format;\r\n    var ticks = options.ticks;\r\n    var log10Tick;\r\n    var prevDateIndex;\r\n    var nextDateIndex;\r\n    var isLogarithmic = \"logarithmic\" === options.type;\r\n    if (1 === ticks.length && 0 === ticks.indexOf(tick) && !(0, _type.isDefined)(tickInterval)) {\r\n        tickInterval = abs(tick) >= 1 ? 1 : (0, _math.adjust)(1 - abs(tick), tick)\r\n    }\r\n    if (!(0, _type.isDefined)(format) && \"discrete\" !== options.type && tick && (10 === options.logarithmBase || !isLogarithmic)) {\r\n        if (\"datetime\" !== options.dataType && (0, _type.isDefined)(tickInterval)) {\r\n            if (ticks.length && ticks.indexOf(tick) === -1) {\r\n                indexOfTick = getTransitionTickIndex(ticks, tick);\r\n                tickInterval = (0, _math.adjust)(abs(tick - ticks[indexOfTick]), tick)\r\n            }\r\n            separatedTickInterval = splitDecimalNumber(tickInterval);\r\n            if (separatedTickInterval < 2) {\r\n                separatedTickInterval = splitDecimalNumber(tick)\r\n            }\r\n            if (isLogarithmic) {\r\n                log10Tick = (0, _utils.getAdjustedLog10)(abs(tick));\r\n                if (log10Tick > 0) {\r\n                    typeFormat = formats[floor(log10Tick / 3)] || EXPONENTIAL\r\n                } else {\r\n                    if (log10Tick < -4) {\r\n                        typeFormat = EXPONENTIAL\r\n                    } else {\r\n                        return _format((0, _math.adjust)(tick))\r\n                    }\r\n                }\r\n            } else {\r\n                if (separatedTickInterval.length > 1 && !(0, _type.isExponential)(tickInterval)) {\r\n                    precision = separatedTickInterval[1].length;\r\n                    typeFormat = formats[indexOfFormat]\r\n                } else {\r\n                    if ((0, _type.isExponential)(tickInterval) && (stringTick.indexOf(\".\") !== -1 || (0, _type.isExponential)(tick))) {\r\n                        typeFormat = EXPONENTIAL;\r\n                        if (!(0, _type.isExponential)(tick)) {\r\n                            precision = abs(getNoZeroIndex(stringTick.split(\".\")[1]) - (0, _math.getExponent)(tickInterval) + 1)\r\n                        } else {\r\n                            precision = Math.max(abs((0, _math.getExponent)(tick) - (0, _math.getExponent)(tickInterval)), abs((0, _math.getPrecision)(tick) - (0, _math.getPrecision)(tickInterval)))\r\n                        }\r\n                    } else {\r\n                        tickIntervalIndex = floor((0, _utils.getAdjustedLog10)(tickInterval));\r\n                        actualIndex = tickIndex = floor((0, _utils.getAdjustedLog10)(abs(tick)));\r\n                        if (tickIndex - tickIntervalIndex >= 2) {\r\n                            actualIndex = tickIntervalIndex\r\n                        }\r\n                        indexOfFormat = floor(actualIndex / 3);\r\n                        offset = 3 * indexOfFormat;\r\n                        if (indexOfFormat < 5) {\r\n                            if (tickIntervalIndex - offset === 2 && tickIndex >= 3) {\r\n                                indexOfFormat++;\r\n                                offset = 3 * indexOfFormat\r\n                            }\r\n                            typeFormat = formats[indexOfFormat]\r\n                        } else {\r\n                            typeFormat = formats[formats.length - 1]\r\n                        }\r\n                        if (offset > 0) {\r\n                            separatedTickInterval = splitDecimalNumber(tickInterval / Math.pow(10, offset));\r\n                            if (separatedTickInterval[1]) {\r\n                                precision = separatedTickInterval[1].length\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (void 0 !== typeFormat || void 0 !== precision) {\r\n                format = {\r\n                    type: typeFormat,\r\n                    precision: precision\r\n                }\r\n            }\r\n        } else {\r\n            if (\"datetime\" === options.dataType) {\r\n                typeFormat = _date.default.getDateFormatByTickInterval(tickInterval);\r\n                if (options.showTransition && ticks.length) {\r\n                    indexOfTick = ticks.map(Number).indexOf(+tick);\r\n                    if (1 === ticks.length && 0 === indexOfTick) {\r\n                        typeFormat = _format_helper.default.getDateFormatByTicks(ticks)\r\n                    } else {\r\n                        if (indexOfTick === -1) {\r\n                            prevDateIndex = getTransitionTickIndex(ticks, tick)\r\n                        } else {\r\n                            prevDateIndex = 0 === indexOfTick ? ticks.length - 1 : indexOfTick - 1;\r\n                            nextDateIndex = 0 === indexOfTick ? 1 : -1\r\n                        }\r\n                        datesDifferences = getDatesDifferences(ticks[prevDateIndex], tick, ticks[nextDateIndex], typeFormat);\r\n                        typeFormat = _format_helper.default.getDateFormatByDifferences(datesDifferences, typeFormat)\r\n                    }\r\n                }\r\n                format = createFormat(typeFormat)\r\n            }\r\n        }\r\n    }\r\n    return _format(tick, format)\r\n}\r\n\r\nfunction getHighDiffFormat(diff) {\r\n    var stop = false;\r\n    for (var i in diff) {\r\n        if (true === diff[i] || \"hour\" === i || stop) {\r\n            diff[i] = false;\r\n            stop = true\r\n        } else {\r\n            if (false === diff[i]) {\r\n                diff[i] = true\r\n            }\r\n        }\r\n    }\r\n    return createFormat(_format_helper.default.getDateFormatByDifferences(diff))\r\n}\r\n\r\nfunction getHighAndSelfDiffFormat(diff, interval) {\r\n    var stop = false;\r\n    for (var i in diff) {\r\n        if (stop) {\r\n            diff[i] = false\r\n        } else {\r\n            if (i === interval) {\r\n                stop = true\r\n            } else {\r\n                diff[i] = true\r\n            }\r\n        }\r\n    }\r\n    return createFormat(_format_helper.default.getDateFormatByDifferences(diff))\r\n}\r\n\r\nfunction formatDateRange(startValue, endValue, tickInterval) {\r\n    var diff = getDatesDifferences(startValue, endValue);\r\n    var typeFormat = _date.default.getDateFormatByTickInterval(tickInterval);\r\n    var diffFormatType = _format_helper.default.getDateFormatByDifferences(diff, typeFormat);\r\n    var diffFormat = createFormat(diffFormatType);\r\n    var values = [];\r\n    if (tickInterval in diff) {\r\n        var rangeFormat = getHighAndSelfDiffFormat(getDatesDifferences(startValue, endValue), tickInterval);\r\n        var value = _format(startValue, rangeFormat);\r\n        if (value) {\r\n            values.push(value)\r\n        }\r\n    } else {\r\n        var _rangeFormat = getHighDiffFormat(getDatesDifferences(startValue, endValue));\r\n        var highValue = _format(startValue, _rangeFormat);\r\n        if (highValue) {\r\n            values.push(highValue)\r\n        }\r\n        values.push(\"\".concat(_format(startValue, diffFormat), \" - \").concat(_format(endValue, diffFormat)))\r\n    }\r\n    return values.join(\", \")\r\n}\r\n\r\nfunction processDateInterval(interval) {\r\n    if ((0, _type.isObject)(interval)) {\r\n        var dateUnits = Object.keys(interval);\r\n        var sum = dateUnits.reduce(function(sum, k) {\r\n            return interval[k] + sum\r\n        }, 0);\r\n        if (1 === sum) {\r\n            var dateUnit = dateUnits.filter(function(k) {\r\n                return 1 === interval[k]\r\n            })[0];\r\n            return dateUnit.slice(0, dateUnit.length - 1)\r\n        }\r\n    }\r\n    return interval\r\n}\r\n\r\nfunction formatRange(startValue, endValue, tickInterval, _ref) {\r\n    var dataType = _ref.dataType,\r\n        type = _ref.type,\r\n        logarithmBase = _ref.logarithmBase;\r\n    if (\"discrete\" === type) {\r\n        return \"\"\r\n    }\r\n    if (\"datetime\" === dataType) {\r\n        return formatDateRange(startValue, endValue, processDateInterval(tickInterval))\r\n    }\r\n    var formatOptions = {\r\n        ticks: [],\r\n        type: type,\r\n        dataType: dataType,\r\n        tickInterval: tickInterval,\r\n        logarithmBase: logarithmBase,\r\n        labelOptions: {}\r\n    };\r\n    return \"\".concat(smartFormatter(startValue, formatOptions), \" - \").concat(smartFormatter(endValue, formatOptions))\r\n}\r\n","/**\r\n * DevExtreme (core/component.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _config = _interopRequireDefault(require(\"./config\"));\r\nvar _extend = require(\"./utils/extend\");\r\nvar _index = require(\"./options/index\");\r\nvar _utils = require(\"./options/utils\");\r\nvar _class = _interopRequireDefault(require(\"./class\"));\r\nvar _action = _interopRequireDefault(require(\"./action\"));\r\nvar _errors = _interopRequireDefault(require(\"./errors\"));\r\nvar _callbacks = _interopRequireDefault(require(\"./utils/callbacks\"));\r\nvar _events_strategy = require(\"./events_strategy\");\r\nvar _public_component = require(\"./utils/public_component\");\r\nvar _postponed_operations = require(\"./postponed_operations\");\r\nvar _type = require(\"./utils/type\");\r\nvar _common = require(\"./utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getEventName = function(actionName) {\r\n    return actionName.charAt(2).toLowerCase() + actionName.substr(3)\r\n};\r\nvar isInnerOption = function(optionName) {\r\n    return 0 === optionName.indexOf(\"_\", 0)\r\n};\r\nvar Component = _class.default.inherit({\r\n    _setDeprecatedOptions: function() {\r\n        this._deprecatedOptions = {}\r\n    },\r\n    _getDeprecatedOptions: function() {\r\n        return this._deprecatedOptions\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return {\r\n            onInitialized: null,\r\n            onOptionChanged: null,\r\n            onDisposing: null,\r\n            defaultOptionsRules: null\r\n        }\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return []\r\n    },\r\n    _setOptionsByDevice: function(rules) {\r\n        this._options.applyRules(rules)\r\n    },\r\n    _convertRulesToOptions: function(rules) {\r\n        return (0, _utils.convertRulesToOptions)(rules)\r\n    },\r\n    _isInitialOptionValue: function(name) {\r\n        return this._options.isInitial(name)\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this._optionsByReference = {}\r\n    },\r\n    _getOptionsByReference: function() {\r\n        return this._optionsByReference\r\n    },\r\n    ctor: function() {\r\n        var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n        var _optionChangedCallbacks = options._optionChangedCallbacks,\r\n            _disposingCallbacks = options._disposingCallbacks;\r\n        this.NAME = (0, _public_component.name)(this.constructor);\r\n        this._eventsStrategy = _events_strategy.EventsStrategy.create(this, options.eventsStrategy);\r\n        this._updateLockCount = 0;\r\n        this._optionChangedCallbacks = _optionChangedCallbacks || (0, _callbacks.default)();\r\n        this._disposingCallbacks = _disposingCallbacks || (0, _callbacks.default)();\r\n        this.postponedOperations = new _postponed_operations.PostponedOperations;\r\n        this._createOptions(options)\r\n    },\r\n    _createOptions: function(options) {\r\n        var _this = this;\r\n        this.beginUpdate();\r\n        try {\r\n            this._setOptionsByReference();\r\n            this._setDeprecatedOptions();\r\n            this._options = new _index.Options(this._getDefaultOptions(), this._getDefaultOptions(), this._getOptionsByReference(), this._getDeprecatedOptions());\r\n            this._options.onChanging(function(name, previousValue, value) {\r\n                return _this._initialized && _this._optionChanging(name, previousValue, value)\r\n            });\r\n            this._options.onDeprecated(function(option, info) {\r\n                return _this._logDeprecatedOptionWarning(option, info)\r\n            });\r\n            this._options.onChanged(function(name, value, previousValue) {\r\n                return _this._notifyOptionChanged(name, value, previousValue)\r\n            });\r\n            this._options.onStartChange(function() {\r\n                return _this.beginUpdate()\r\n            });\r\n            this._options.onEndChange(function() {\r\n                return _this.endUpdate()\r\n            });\r\n            this._options.addRules(this._defaultOptionsRules());\r\n            if (options && options.onInitializing) {\r\n                options.onInitializing.apply(this, [options])\r\n            }\r\n            this._setOptionsByDevice(options.defaultOptionsRules);\r\n            this._initOptions(options)\r\n        } finally {\r\n            this.endUpdate()\r\n        }\r\n    },\r\n    _initOptions: function(options) {\r\n        this.option(options)\r\n    },\r\n    _init: function() {\r\n        var _this2 = this;\r\n        this._createOptionChangedAction();\r\n        this.on(\"disposing\", function(args) {\r\n            _this2._disposingCallbacks.fireWith(_this2, [args])\r\n        })\r\n    },\r\n    _logDeprecatedOptionWarning: function(option, info) {\r\n        var message = info.message || \"Use the '\".concat(info.alias, \"' option instead\");\r\n        _errors.default.log(\"W0001\", this.NAME, option, info.since, message)\r\n    },\r\n    _logDeprecatedComponentWarning: function(since, alias) {\r\n        _errors.default.log(\"W0000\", this.NAME, since, \"Use the '\".concat(alias, \"' widget instead\"))\r\n    },\r\n    _createOptionChangedAction: function() {\r\n        this._optionChangedAction = this._createActionByOption(\"onOptionChanged\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _createDisposingAction: function() {\r\n        this._disposingAction = this._createActionByOption(\"onDisposing\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"onDisposing\":\r\n            case \"onInitialized\":\r\n                break;\r\n            case \"onOptionChanged\":\r\n                this._createOptionChangedAction();\r\n                break;\r\n            case \"defaultOptionsRules\":\r\n        }\r\n    },\r\n    _dispose: function() {\r\n        this._optionChangedCallbacks.empty();\r\n        this._createDisposingAction();\r\n        this._disposingAction();\r\n        this._eventsStrategy.dispose();\r\n        this._options.dispose();\r\n        this._disposed = true\r\n    },\r\n    _lockUpdate: function() {\r\n        this._updateLockCount++\r\n    },\r\n    _unlockUpdate: function() {\r\n        this._updateLockCount = Math.max(this._updateLockCount - 1, 0)\r\n    },\r\n    _isUpdateAllowed: function() {\r\n        return 0 === this._updateLockCount\r\n    },\r\n    _isInitializingRequired: function() {\r\n        return !this._initializing && !this._initialized\r\n    },\r\n    _commitUpdate: function() {\r\n        this.postponedOperations.callPostponedOperations();\r\n        this._isInitializingRequired() && this._initializeComponent()\r\n    },\r\n    _initializeComponent: function() {\r\n        this._initializing = true;\r\n        try {\r\n            this._init()\r\n        } finally {\r\n            this._initializing = false;\r\n            this._lockUpdate();\r\n            this._createActionByOption(\"onInitialized\", {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            })();\r\n            this._unlockUpdate();\r\n            this._initialized = true\r\n        }\r\n    },\r\n    instance: function() {\r\n        return this\r\n    },\r\n    beginUpdate: function() {\r\n        this._lockUpdate()\r\n    },\r\n    endUpdate: function() {\r\n        this._unlockUpdate();\r\n        this._isUpdateAllowed() && this._commitUpdate()\r\n    },\r\n    _optionChanging: _common.noop,\r\n    _notifyOptionChanged: function(option, value, previousValue) {\r\n        if (this._initialized) {\r\n            var optionNames = [option].concat(this._options.getAliasesByName(option));\r\n            for (var i = 0; i < optionNames.length; i++) {\r\n                var name = optionNames[i];\r\n                var args = {\r\n                    name: name.split(/[.[]/)[0],\r\n                    fullName: name,\r\n                    value: value,\r\n                    previousValue: previousValue\r\n                };\r\n                if (!isInnerOption(name)) {\r\n                    this._optionChangedCallbacks.fireWith(this, [(0, _extend.extend)(this._defaultActionArgs(), args)]);\r\n                    this._optionChangedAction((0, _extend.extend)({}, args))\r\n                }\r\n                if (!this._disposed && this._cancelOptionChange !== name) {\r\n                    this._optionChanged(args)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    initialOption: function(name) {\r\n        return this._options.initial(name)\r\n    },\r\n    _defaultActionConfig: function() {\r\n        return {\r\n            context: this,\r\n            component: this\r\n        }\r\n    },\r\n    _defaultActionArgs: function() {\r\n        return {\r\n            component: this\r\n        }\r\n    },\r\n    _createAction: function(actionSource, config) {\r\n        var _this3 = this;\r\n        var action;\r\n        return function(e) {\r\n            if (!(0, _type.isDefined)(e)) {\r\n                e = {}\r\n            }\r\n            if (!(0, _type.isPlainObject)(e)) {\r\n                e = {\r\n                    actionValue: e\r\n                }\r\n            }\r\n            action = action || new _action.default(actionSource, (0, _extend.extend)(config, _this3._defaultActionConfig()));\r\n            return action.execute.call(action, (0, _extend.extend)(e, _this3._defaultActionArgs()))\r\n        }\r\n    },\r\n    _createActionByOption: function(optionName, config) {\r\n        var _this4 = this;\r\n        var action;\r\n        var eventName;\r\n        var actionFunc;\r\n        var result = function() {\r\n            if (!eventName) {\r\n                config = config || {};\r\n                if (\"string\" !== typeof optionName) {\r\n                    throw _errors.default.Error(\"E0008\")\r\n                }\r\n                if (0 === optionName.indexOf(\"on\")) {\r\n                    eventName = getEventName(optionName)\r\n                }\r\n                actionFunc = _this4.option(optionName)\r\n            }\r\n            if (!action && !actionFunc && !config.beforeExecute && !config.afterExecute && !_this4._eventsStrategy.hasEvent(eventName)) {\r\n                return\r\n            }\r\n            if (!action) {\r\n                var beforeExecute = config.beforeExecute;\r\n                config.beforeExecute = function() {\r\n                    for (var _len2 = arguments.length, props = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n                        props[_key2] = arguments[_key2]\r\n                    }\r\n                    beforeExecute && beforeExecute.apply(_this4, props);\r\n                    _this4._eventsStrategy.fireEvent(eventName, props[0].args)\r\n                };\r\n                action = _this4._createAction(actionFunc, config)\r\n            }\r\n            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n                args[_key] = arguments[_key]\r\n            }\r\n            if ((0, _config.default)().wrapActionsBeforeExecute) {\r\n                var beforeActionExecute = _this4.option(\"beforeActionExecute\") || _common.noop;\r\n                var wrappedAction = beforeActionExecute(_this4, action, config) || action;\r\n                return wrappedAction.apply(_this4, args)\r\n            }\r\n            return action.apply(_this4, args)\r\n        };\r\n        if ((0, _config.default)().wrapActionsBeforeExecute) {\r\n            return result\r\n        }\r\n        var onActionCreated = this.option(\"onActionCreated\") || _common.noop;\r\n        return onActionCreated(this, result, config) || result\r\n    },\r\n    on: function(eventName, eventHandler) {\r\n        this._eventsStrategy.on(eventName, eventHandler);\r\n        return this\r\n    },\r\n    off: function(eventName, eventHandler) {\r\n        this._eventsStrategy.off(eventName, eventHandler);\r\n        return this\r\n    },\r\n    hasActionSubscription: function(actionName) {\r\n        return !!this._options.silent(actionName) || this._eventsStrategy.hasEvent(getEventName(actionName))\r\n    },\r\n    isOptionDeprecated: function(name) {\r\n        return this._options.isDeprecated(name)\r\n    },\r\n    _setOptionWithoutOptionChange: function(name, value) {\r\n        this._cancelOptionChange = name;\r\n        this.option(name, value);\r\n        this._cancelOptionChange = false\r\n    },\r\n    _getOptionValue: function(name, context) {\r\n        var value = this.option(name);\r\n        if ((0, _type.isFunction)(value)) {\r\n            return value.bind(context)()\r\n        }\r\n        return value\r\n    },\r\n    option: function() {\r\n        var _this$_options;\r\n        return (_this$_options = this._options).option.apply(_this$_options, arguments)\r\n    },\r\n    resetOption: function(name) {\r\n        this.beginUpdate();\r\n        this._options.reset(name);\r\n        this.endUpdate()\r\n    }\r\n});\r\nvar _default = Component;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/funnel/tiling.pyramid.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar CENTER = .5;\r\nvar LEFTCORNER = 0;\r\nvar RIGHTCORNER = 1;\r\nvar _default = {\r\n    getFigures: function(data, neckWidth, neckHeight) {\r\n        var height = 0;\r\n        var y = 0;\r\n        var x = 0;\r\n        var offsetX = 0;\r\n        var halfNeckWidth = neckWidth / 2;\r\n        var offsetFromCorner = CENTER - halfNeckWidth;\r\n        var funnelHeight = 1 - neckHeight;\r\n        var neckLeftCorner = CENTER - halfNeckWidth;\r\n        var neckRightCorner = CENTER + halfNeckWidth;\r\n        return data.map(function(value) {\r\n            x = offsetX;\r\n            y = height;\r\n            height += value;\r\n            offsetX = offsetFromCorner * height / funnelHeight;\r\n            if (y <= funnelHeight && height <= funnelHeight) {\r\n                return [x, y, RIGHTCORNER - x, y, RIGHTCORNER - offsetX, height, LEFTCORNER + offsetX, height]\r\n            } else {\r\n                if (y <= funnelHeight && height > funnelHeight) {\r\n                    return [x, y, RIGHTCORNER - x, y, neckRightCorner, funnelHeight, neckRightCorner, height, neckLeftCorner, height, neckLeftCorner, funnelHeight]\r\n                } else {\r\n                    return [neckLeftCorner, y, neckRightCorner, y, neckRightCorner, height, neckLeftCorner, height]\r\n                }\r\n            }\r\n        })\r\n    },\r\n    normalizeValues: function(items) {\r\n        var sum = items.reduce(function(sum, item) {\r\n            return sum + item.value\r\n        }, 0);\r\n        return items.map(function(item) {\r\n            return item.value / sum\r\n        })\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/filter_builder/utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getGroupCriteria = getGroupCriteria;\r\nexports.setGroupValue = setGroupValue;\r\nexports.getGroupMenuItem = getGroupMenuItem;\r\nexports.getGroupValue = getGroupValue;\r\nexports.getFilterOperations = getFilterOperations;\r\nexports.getCaptionByOperation = getCaptionByOperation;\r\nexports.getOperationFromAvailable = getOperationFromAvailable;\r\nexports.getCustomOperation = getCustomOperation;\r\nexports.getAvailableOperations = getAvailableOperations;\r\nexports.getDefaultOperation = getDefaultOperation;\r\nexports.createCondition = createCondition;\r\nexports.removeItem = removeItem;\r\nexports.createEmptyGroup = createEmptyGroup;\r\nexports.isEmptyGroup = isEmptyGroup;\r\nexports.addItem = addItem;\r\nexports.getField = getField;\r\nexports.isGroup = isGroup;\r\nexports.isCondition = isCondition;\r\nexports.convertToInnerStructure = convertToInnerStructure;\r\nexports.getNormalizedFields = getNormalizedFields;\r\nexports.getFilterExpression = getFilterExpression;\r\nexports.getNormalizedFilter = getNormalizedFilter;\r\nexports.getCurrentLookupValueText = getCurrentLookupValueText;\r\nexports.getCurrentValueText = getCurrentValueText;\r\nexports.getItems = getItems;\r\nexports.getCaptionWithParents = getCaptionWithParents;\r\nexports.updateConditionByOperation = updateConditionByOperation;\r\nexports.getOperationValue = getOperationValue;\r\nexports.isValidCondition = isValidCondition;\r\nexports.getMergedOperations = getMergedOperations;\r\nexports.removeFieldConditionsFromFilter = removeFieldConditionsFromFilter;\r\nexports.syncFilters = syncFilters;\r\nexports.getMatchedConditions = getMatchedConditions;\r\nexports.filterHasField = filterHasField;\r\nexports.renderValueText = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _errors = _interopRequireDefault(require(\"../../data/errors\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _between = require(\"./between\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.filter_operations_dictionary\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_DATA_TYPE = \"string\";\r\nvar EMPTY_MENU_ICON = \"icon-none\";\r\nvar AND_GROUP_OPERATION = \"and\";\r\nvar EQUAL_OPERATION = \"=\";\r\nvar NOT_EQUAL_OPERATION = \"<>\";\r\nvar DATATYPE_OPERATIONS = {\r\n    number: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"isblank\", \"isnotblank\"],\r\n    string: [\"contains\", \"notcontains\", \"startswith\", \"endswith\", \"=\", \"<>\", \"isblank\", \"isnotblank\"],\r\n    date: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"isblank\", \"isnotblank\"],\r\n    datetime: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"isblank\", \"isnotblank\"],\r\n    \"boolean\": [\"=\", \"<>\", \"isblank\", \"isnotblank\"],\r\n    object: [\"isblank\", \"isnotblank\"]\r\n};\r\nvar DEFAULT_FORMAT = {\r\n    date: \"shortDate\",\r\n    datetime: \"shortDateShortTime\"\r\n};\r\nvar LOOKUP_OPERATIONS = [\"=\", \"<>\", \"isblank\", \"isnotblank\"];\r\nvar AVAILABLE_FIELD_PROPERTIES = [\"caption\", \"customizeText\", \"dataField\", \"dataType\", \"editorTemplate\", \"falseText\", \"editorOptions\", \"filterOperations\", \"format\", \"lookup\", \"trueText\", \"calculateFilterExpression\", \"name\"];\r\nvar FILTER_BUILDER_CLASS = \"dx-filterbuilder\";\r\nvar FILTER_BUILDER_ITEM_TEXT_CLASS = FILTER_BUILDER_CLASS + \"-text\";\r\nvar FILTER_BUILDER_ITEM_TEXT_PART_CLASS = FILTER_BUILDER_ITEM_TEXT_CLASS + \"-part\";\r\nvar FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS = FILTER_BUILDER_ITEM_TEXT_CLASS + \"-separator\";\r\nvar FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS = FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS + \"-empty\";\r\n\r\nfunction getFormattedValueText(field, value) {\r\n    var fieldFormat = field.format || DEFAULT_FORMAT[field.dataType];\r\n    return _format_helper.default.format(value, fieldFormat)\r\n}\r\n\r\nfunction isNegationGroup(group) {\r\n    return group && group.length > 1 && \"!\" === group[0] && !isCondition(group)\r\n}\r\n\r\nfunction getGroupCriteria(group) {\r\n    return isNegationGroup(group) ? group[1] : group\r\n}\r\n\r\nfunction setGroupCriteria(group, criteria) {\r\n    if (isNegationGroup(group)) {\r\n        group[1] = criteria\r\n    } else {\r\n        group = criteria\r\n    }\r\n    return group\r\n}\r\n\r\nfunction convertGroupToNewStructure(group, value) {\r\n    var isNegationValue = function(value) {\r\n        return value.indexOf(\"!\") !== -1\r\n    };\r\n    var convertGroupToNegationGroup = function(group) {\r\n        var criteria = group.slice(0);\r\n        group.length = 0;\r\n        group.push(\"!\", criteria)\r\n    };\r\n    var convertNegationGroupToGroup = function(group) {\r\n        var criteria = getGroupCriteria(group);\r\n        group.length = 0;\r\n        [].push.apply(group, criteria)\r\n    };\r\n    if (isNegationValue(value)) {\r\n        if (!isNegationGroup(group)) {\r\n            convertGroupToNegationGroup(group)\r\n        }\r\n    } else {\r\n        if (isNegationGroup(group)) {\r\n            convertNegationGroupToGroup(group)\r\n        }\r\n    }\r\n}\r\n\r\nfunction setGroupValue(group, value) {\r\n    convertGroupToNewStructure(group, value);\r\n    var criteria = getGroupCriteria(group);\r\n    var i;\r\n    var getNormalizedGroupValue = function(value) {\r\n        return value.indexOf(\"!\") === -1 ? value : value.substring(1)\r\n    };\r\n    var changeCriteriaValue = function(criteria, value) {\r\n        for (i = 0; i < criteria.length; i++) {\r\n            if (!Array.isArray(criteria[i])) {\r\n                criteria[i] = value\r\n            }\r\n        }\r\n    };\r\n    value = getNormalizedGroupValue(value);\r\n    changeCriteriaValue(criteria, value);\r\n    return group\r\n}\r\n\r\nfunction getGroupMenuItem(group, availableGroups) {\r\n    var groupValue = getGroupValue(group);\r\n    return availableGroups.filter(function(item) {\r\n        return item.value === groupValue\r\n    })[0]\r\n}\r\n\r\nfunction getCriteriaOperation(criteria) {\r\n    if (isCondition(criteria)) {\r\n        return AND_GROUP_OPERATION\r\n    }\r\n    var value = \"\";\r\n    for (var i = 0; i < criteria.length; i++) {\r\n        var item = criteria[i];\r\n        if (!Array.isArray(item)) {\r\n            if (value && value !== item) {\r\n                throw new _errors.default.errors.Error(\"E4019\")\r\n            }\r\n            if (\"!\" !== item) {\r\n                value = item\r\n            }\r\n        }\r\n    }\r\n    return value\r\n}\r\n\r\nfunction getGroupValue(group) {\r\n    var criteria = getGroupCriteria(group);\r\n    var value = getCriteriaOperation(criteria);\r\n    if (!value) {\r\n        value = AND_GROUP_OPERATION\r\n    }\r\n    if (criteria !== group) {\r\n        value = \"!\" + value\r\n    }\r\n    return value\r\n}\r\n\r\nfunction getDefaultFilterOperations(field) {\r\n    return field.lookup && LOOKUP_OPERATIONS || DATATYPE_OPERATIONS[field.dataType || DEFAULT_DATA_TYPE]\r\n}\r\n\r\nfunction containItems(entity) {\r\n    return Array.isArray(entity) && entity.length\r\n}\r\n\r\nfunction getFilterOperations(field) {\r\n    var result = containItems(field.filterOperations) ? field.filterOperations : getDefaultFilterOperations(field);\r\n    return (0, _extend.extend)([], result)\r\n}\r\n\r\nfunction getCaptionByOperation(operation, filterOperationDescriptions) {\r\n    var operationName = _ui2.default.getNameByFilterOperation(operation);\r\n    return filterOperationDescriptions && filterOperationDescriptions[operationName] ? filterOperationDescriptions[operationName] : operationName\r\n}\r\n\r\nfunction getOperationFromAvailable(operation, availableOperations) {\r\n    for (var i = 0; i < availableOperations.length; i++) {\r\n        if (availableOperations[i].value === operation) {\r\n            return availableOperations[i]\r\n        }\r\n    }\r\n    throw new _ui.default.Error(\"E1048\", operation)\r\n}\r\n\r\nfunction getCustomOperation(customOperations, name) {\r\n    var filteredOperations = customOperations.filter(function(item) {\r\n        return item.name === name\r\n    });\r\n    return filteredOperations.length ? filteredOperations[0] : null\r\n}\r\n\r\nfunction getAvailableOperations(field, filterOperationDescriptions, customOperations) {\r\n    var filterOperations = getFilterOperations(field);\r\n    var isLookupField = !!field.lookup;\r\n    customOperations.forEach(function(customOperation) {\r\n        if (!field.filterOperations && filterOperations.indexOf(customOperation.name) === -1) {\r\n            var dataTypes = customOperation && customOperation.dataTypes;\r\n            var isOperationForbidden = isLookupField ? !!customOperation.notForLookup : false;\r\n            if (!isOperationForbidden && dataTypes && dataTypes.indexOf(field.dataType || DEFAULT_DATA_TYPE) >= 0) {\r\n                filterOperations.push(customOperation.name)\r\n            }\r\n        }\r\n    });\r\n    return filterOperations.map(function(operation) {\r\n        var customOperation = getCustomOperation(customOperations, operation);\r\n        if (customOperation) {\r\n            return {\r\n                icon: customOperation.icon || EMPTY_MENU_ICON,\r\n                text: customOperation.caption || (0, _inflector.captionize)(customOperation.name),\r\n                value: customOperation.name,\r\n                isCustom: true\r\n            }\r\n        } else {\r\n            return {\r\n                icon: _ui2.default.getIconByFilterOperation(operation) || EMPTY_MENU_ICON,\r\n                text: getCaptionByOperation(operation, filterOperationDescriptions),\r\n                value: operation\r\n            }\r\n        }\r\n    })\r\n}\r\n\r\nfunction getDefaultOperation(field) {\r\n    return field.defaultFilterOperation || getFilterOperations(field)[0]\r\n}\r\n\r\nfunction createCondition(field, customOperations) {\r\n    var condition = [field.dataField, \"\", \"\"];\r\n    var filterOperation = getDefaultOperation(field);\r\n    updateConditionByOperation(condition, filterOperation, customOperations);\r\n    return condition\r\n}\r\n\r\nfunction removeItem(group, item) {\r\n    var criteria = getGroupCriteria(group);\r\n    var index = criteria.indexOf(item);\r\n    criteria.splice(index, 1);\r\n    if (1 !== criteria.length) {\r\n        criteria.splice(index, 1)\r\n    }\r\n    return group\r\n}\r\n\r\nfunction createEmptyGroup(value) {\r\n    return value.indexOf(\"not\") !== -1 ? [\"!\", [value.substring(3).toLowerCase()]] : [value]\r\n}\r\n\r\nfunction isEmptyGroup(group) {\r\n    var criteria = getGroupCriteria(group);\r\n    if (isCondition(criteria)) {\r\n        return false\r\n    }\r\n    var hasConditions = criteria.some(function(item) {\r\n        return isCondition(item)\r\n    });\r\n    return !hasConditions\r\n}\r\n\r\nfunction addItem(item, group) {\r\n    var criteria = getGroupCriteria(group);\r\n    var groupValue = getGroupValue(criteria);\r\n    1 === criteria.length ? criteria.unshift(item) : criteria.push(item, groupValue);\r\n    return group\r\n}\r\n\r\nfunction getField(dataField, fields) {\r\n    for (var i = 0; i < fields.length; i++) {\r\n        if (fields[i].name === dataField) {\r\n            return fields[i]\r\n        }\r\n        if (fields[i].dataField.toLowerCase() === dataField.toLowerCase()) {\r\n            return fields[i]\r\n        }\r\n    }\r\n    var extendedFields = getItems(fields, true).filter(function(item) {\r\n        return item.dataField.toLowerCase() === dataField.toLowerCase()\r\n    });\r\n    if (extendedFields.length > 0) {\r\n        return extendedFields[0]\r\n    }\r\n    throw new _ui.default.Error(\"E1047\", dataField)\r\n}\r\n\r\nfunction isGroup(criteria) {\r\n    if (!Array.isArray(criteria)) {\r\n        return false\r\n    }\r\n    return criteria.length < 2 || Array.isArray(criteria[0]) || Array.isArray(criteria[1])\r\n}\r\n\r\nfunction isCondition(criteria) {\r\n    if (!Array.isArray(criteria)) {\r\n        return false\r\n    }\r\n    return criteria.length > 1 && !Array.isArray(criteria[0]) && !Array.isArray(criteria[1])\r\n}\r\n\r\nfunction convertToInnerGroup(group, customOperations) {\r\n    var groupOperation = getCriteriaOperation(group).toLowerCase() || AND_GROUP_OPERATION;\r\n    var innerGroup = [];\r\n    for (var i = 0; i < group.length; i++) {\r\n        if (isGroup(group[i])) {\r\n            innerGroup.push(convertToInnerStructure(group[i], customOperations));\r\n            innerGroup.push(groupOperation)\r\n        } else {\r\n            if (isCondition(group[i])) {\r\n                innerGroup.push(convertToInnerCondition(group[i], customOperations));\r\n                innerGroup.push(groupOperation)\r\n            }\r\n        }\r\n    }\r\n    if (0 === innerGroup.length) {\r\n        innerGroup.push(groupOperation)\r\n    }\r\n    return innerGroup\r\n}\r\n\r\nfunction conditionHasCustomOperation(condition, customOperations) {\r\n    var customOperation = getCustomOperation(customOperations, condition[1]);\r\n    return customOperation && customOperation.name === condition[1]\r\n}\r\n\r\nfunction convertToInnerCondition(condition, customOperations) {\r\n    if (conditionHasCustomOperation(condition, customOperations)) {\r\n        return condition\r\n    }\r\n    if (condition.length < 3) {\r\n        condition[2] = condition[1];\r\n        condition[1] = EQUAL_OPERATION\r\n    }\r\n    return condition\r\n}\r\n\r\nfunction convertToInnerStructure(value, customOperations) {\r\n    if (!value) {\r\n        return [AND_GROUP_OPERATION]\r\n    }\r\n    value = (0, _extend.extend)(true, [], value);\r\n    if (isCondition(value)) {\r\n        return [convertToInnerCondition(value, customOperations), AND_GROUP_OPERATION]\r\n    }\r\n    if (isNegationGroup(value)) {\r\n        return [\"!\", isCondition(value[1]) ? [convertToInnerCondition(value[1], customOperations), AND_GROUP_OPERATION] : isNegationGroup(value[1]) ? [convertToInnerStructure(value[1], customOperations), AND_GROUP_OPERATION] : convertToInnerGroup(value[1], customOperations)]\r\n    }\r\n    return convertToInnerGroup(value, customOperations)\r\n}\r\n\r\nfunction getNormalizedFields(fields) {\r\n    return fields.reduce(function(result, field) {\r\n        if ((0, _type.isDefined)(field.dataField)) {\r\n            var normalizedField = {};\r\n            for (var key in field) {\r\n                if (field[key] && AVAILABLE_FIELD_PROPERTIES.indexOf(key) > -1) {\r\n                    normalizedField[key] = field[key]\r\n                }\r\n            }\r\n            normalizedField.defaultCalculateFilterExpression = _filtering.default.defaultCalculateFilterExpression;\r\n            if (!(0, _type.isDefined)(normalizedField.dataType)) {\r\n                normalizedField.dataType = DEFAULT_DATA_TYPE\r\n            }\r\n            if (!(0, _type.isDefined)(normalizedField.trueText)) {\r\n                normalizedField.trueText = _message.default.format(\"dxDataGrid-trueText\")\r\n            }\r\n            if (!(0, _type.isDefined)(normalizedField.falseText)) {\r\n                normalizedField.falseText = _message.default.format(\"dxDataGrid-falseText\")\r\n            }\r\n            result.push(normalizedField)\r\n        }\r\n        return result\r\n    }, [])\r\n}\r\n\r\nfunction getConditionFilterExpression(condition, fields, customOperations, target) {\r\n    var field = getField(condition[0], fields);\r\n    var filterExpression = convertToInnerCondition(condition, customOperations);\r\n    var customOperation = customOperations.length && getCustomOperation(customOperations, filterExpression[1]);\r\n    if (customOperation && customOperation.calculateFilterExpression) {\r\n        return customOperation.calculateFilterExpression.apply(customOperation, [filterExpression[2], field, fields])\r\n    } else {\r\n        if (field.createFilterExpression) {\r\n            return field.createFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])\r\n        } else {\r\n            if (field.calculateFilterExpression) {\r\n                return field.calculateFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])\r\n            } else {\r\n                return field.defaultCalculateFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction getFilterExpression(value, fields, customOperations, target) {\r\n    if (!(0, _type.isDefined)(value)) {\r\n        return null\r\n    }\r\n    if (isNegationGroup(value)) {\r\n        var filterExpression = getFilterExpression(value[1], fields, customOperations, target);\r\n        return [\"!\", filterExpression]\r\n    }\r\n    var criteria = getGroupCriteria(value);\r\n    if (isCondition(criteria)) {\r\n        return getConditionFilterExpression(criteria, fields, customOperations, target) || null\r\n    } else {\r\n        var result = [];\r\n        var _filterExpression;\r\n        var groupValue = getGroupValue(criteria);\r\n        for (var i = 0; i < criteria.length; i++) {\r\n            if (isGroup(criteria[i])) {\r\n                _filterExpression = getFilterExpression(criteria[i], fields, customOperations, target);\r\n                if (_filterExpression) {\r\n                    i && result.push(groupValue);\r\n                    result.push(_filterExpression)\r\n                }\r\n            } else {\r\n                if (isCondition(criteria[i])) {\r\n                    _filterExpression = getConditionFilterExpression(criteria[i], fields, customOperations, target);\r\n                    if (_filterExpression) {\r\n                        result.length && result.push(groupValue);\r\n                        result.push(_filterExpression)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        if (1 === result.length) {\r\n            result = result[0]\r\n        }\r\n        return result.length ? result : null\r\n    }\r\n}\r\n\r\nfunction getNormalizedFilter(group) {\r\n    var criteria = getGroupCriteria(group);\r\n    var i;\r\n    if (0 === criteria.length) {\r\n        return null\r\n    }\r\n    var itemsForRemove = [];\r\n    for (i = 0; i < criteria.length; i++) {\r\n        if (isGroup(criteria[i])) {\r\n            var normalizedGroupValue = getNormalizedFilter(criteria[i]);\r\n            if (normalizedGroupValue) {\r\n                criteria[i] = normalizedGroupValue\r\n            } else {\r\n                itemsForRemove.push(criteria[i])\r\n            }\r\n        } else {\r\n            if (isCondition(criteria[i])) {\r\n                if (!isValidCondition(criteria[i])) {\r\n                    itemsForRemove.push(criteria[i])\r\n                }\r\n            }\r\n        }\r\n    }\r\n    for (i = 0; i < itemsForRemove.length; i++) {\r\n        removeItem(criteria, itemsForRemove[i])\r\n    }\r\n    if (1 === criteria.length) {\r\n        return null\r\n    }\r\n    criteria.splice(criteria.length - 1, 1);\r\n    if (1 === criteria.length) {\r\n        group = setGroupCriteria(group, criteria[0])\r\n    }\r\n    if (0 === group.length) {\r\n        return null\r\n    }\r\n    return group\r\n}\r\n\r\nfunction getCurrentLookupValueText(field, value, handler) {\r\n    if (\"\" === value) {\r\n        handler(\"\");\r\n        return\r\n    }\r\n    var lookup = field.lookup;\r\n    if (lookup.items) {\r\n        handler(lookup.calculateCellValue(value) || \"\")\r\n    } else {\r\n        var lookupDataSource = (0, _type.isFunction)(lookup.dataSource) ? lookup.dataSource({}) : lookup.dataSource;\r\n        var dataSource = new _data_source.DataSource(lookupDataSource);\r\n        dataSource.loadSingle(lookup.valueExpr, value).done(function(result) {\r\n            result ? handler(lookup.displayExpr ? (0, _data.compileGetter)(lookup.displayExpr)(result) : result) : handler(\"\")\r\n        }).fail(function() {\r\n            handler(\"\")\r\n        })\r\n    }\r\n}\r\n\r\nfunction getPrimitiveValueText(field, value, customOperation, target) {\r\n    var valueText;\r\n    if (true === value) {\r\n        valueText = field.trueText || _message.default.format(\"dxDataGrid-trueText\")\r\n    } else {\r\n        if (false === value) {\r\n            valueText = field.falseText || _message.default.format(\"dxDataGrid-falseText\")\r\n        } else {\r\n            valueText = getFormattedValueText(field, value)\r\n        }\r\n    }\r\n    if (field.customizeText) {\r\n        valueText = field.customizeText.call(field, {\r\n            value: value,\r\n            valueText: valueText,\r\n            target: target\r\n        })\r\n    }\r\n    if (customOperation && customOperation.customizeText) {\r\n        valueText = customOperation.customizeText.call(customOperation, {\r\n            value: value,\r\n            valueText: valueText,\r\n            field: field,\r\n            target: target\r\n        })\r\n    }\r\n    return valueText\r\n}\r\n\r\nfunction getArrayValueText(field, value, customOperation, target) {\r\n    return value.map(function(v) {\r\n        return getPrimitiveValueText(field, v, customOperation, target)\r\n    })\r\n}\r\n\r\nfunction checkDefaultValue(value) {\r\n    return \"\" === value || null === value\r\n}\r\n\r\nfunction getCurrentValueText(field, value, customOperation) {\r\n    var target = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : \"filterBuilder\";\r\n    if (checkDefaultValue(value)) {\r\n        return \"\"\r\n    }\r\n    if (Array.isArray(value)) {\r\n        var result = new _deferred.Deferred;\r\n        _deferred.when.apply(this, getArrayValueText(field, value, customOperation, target)).done(function() {\r\n            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n                args[_key] = arguments[_key]\r\n            }\r\n            var text = args.some(function(item) {\r\n                return !checkDefaultValue(item)\r\n            }) ? args.map(function(item) {\r\n                return !checkDefaultValue(item) ? item : \"?\"\r\n            }) : \"\";\r\n            result.resolve(text)\r\n        });\r\n        return result\r\n    } else {\r\n        return getPrimitiveValueText(field, value, customOperation, target)\r\n    }\r\n}\r\n\r\nfunction itemExists(plainItems, parentId) {\r\n    return plainItems.some(function(item) {\r\n        return item.dataField === parentId\r\n    })\r\n}\r\n\r\nfunction pushItemAndCheckParent(originalItems, plainItems, item) {\r\n    var dataField = item.dataField;\r\n    if (hasParent(dataField)) {\r\n        item.parentId = getParentIdFromItemDataField(dataField);\r\n        if (!itemExists(plainItems, item.parentId) && !itemExists(originalItems, item.parentId)) {\r\n            pushItemAndCheckParent(originalItems, plainItems, {\r\n                id: item.parentId,\r\n                dataType: \"object\",\r\n                dataField: item.parentId,\r\n                caption: generateCaptionByDataField(item.parentId, true),\r\n                filterOperations: [\"isblank\", \"isnotblank\"]\r\n            })\r\n        }\r\n    }\r\n    plainItems.push(item)\r\n}\r\n\r\nfunction generateCaptionByDataField(dataField, allowHierarchicalFields) {\r\n    var caption = \"\";\r\n    if (allowHierarchicalFields) {\r\n        dataField = dataField.substring(dataField.lastIndexOf(\".\") + 1)\r\n    } else {\r\n        if (hasParent(dataField)) {\r\n            dataField.split(\".\").forEach(function(field, index, arr) {\r\n                caption += (0, _inflector.captionize)(field);\r\n                if (index !== arr.length - 1) {\r\n                    caption += \".\"\r\n                }\r\n            });\r\n            return caption\r\n        }\r\n    }\r\n    return (0, _inflector.captionize)(dataField)\r\n}\r\n\r\nfunction getItems(fields, allowHierarchicalFields) {\r\n    var items = [];\r\n    for (var i = 0; i < fields.length; i++) {\r\n        var item = (0, _extend.extend)(true, {\r\n            caption: generateCaptionByDataField(fields[i].dataField, allowHierarchicalFields)\r\n        }, fields[i]);\r\n        item.id = item.name || item.dataField;\r\n        if (allowHierarchicalFields) {\r\n            pushItemAndCheckParent(fields, items, item)\r\n        } else {\r\n            items.push(item)\r\n        }\r\n    }\r\n    return items\r\n}\r\n\r\nfunction hasParent(dataField) {\r\n    return dataField.lastIndexOf(\".\") !== -1\r\n}\r\n\r\nfunction getParentIdFromItemDataField(dataField) {\r\n    return dataField.substring(0, dataField.lastIndexOf(\".\"))\r\n}\r\n\r\nfunction getCaptionWithParents(item, plainItems) {\r\n    if (hasParent(item.dataField)) {\r\n        var parentId = getParentIdFromItemDataField(item.dataField);\r\n        for (var i = 0; i < plainItems.length; i++) {\r\n            if (plainItems[i].dataField === parentId) {\r\n                return getCaptionWithParents(plainItems[i], plainItems) + \".\" + item.caption\r\n            }\r\n        }\r\n    }\r\n    return item.caption\r\n}\r\n\r\nfunction updateConditionByOperation(condition, operation, customOperations) {\r\n    var customOperation = getCustomOperation(customOperations, operation);\r\n    if (customOperation) {\r\n        if (false === customOperation.hasValue) {\r\n            condition[1] = operation;\r\n            condition.length = 2\r\n        } else {\r\n            condition[1] = operation;\r\n            condition[2] = \"\"\r\n        }\r\n        return condition\r\n    }\r\n    if (\"isblank\" === operation) {\r\n        condition[1] = EQUAL_OPERATION;\r\n        condition[2] = null\r\n    } else {\r\n        if (\"isnotblank\" === operation) {\r\n            condition[1] = NOT_EQUAL_OPERATION;\r\n            condition[2] = null\r\n        } else {\r\n            customOperation = getCustomOperation(customOperations, condition[1]);\r\n            if (customOperation || 2 === condition.length || null === condition[2]) {\r\n                condition[2] = \"\"\r\n            }\r\n            condition[1] = operation\r\n        }\r\n    }\r\n    return condition\r\n}\r\n\r\nfunction getOperationValue(condition) {\r\n    var caption;\r\n    if (null === condition[2]) {\r\n        if (condition[1] === EQUAL_OPERATION) {\r\n            caption = \"isblank\"\r\n        } else {\r\n            caption = \"isnotblank\"\r\n        }\r\n    } else {\r\n        caption = condition[1]\r\n    }\r\n    return caption\r\n}\r\n\r\nfunction isValidCondition(condition) {\r\n    return \"\" !== condition[2]\r\n}\r\n\r\nfunction getMergedOperations(customOperations, betweenCaption, context) {\r\n    var result = (0, _extend.extend)(true, [], customOperations);\r\n    var betweenIndex = -1;\r\n    result.some(function(customOperation, index) {\r\n        if (\"between\" === customOperation.name) {\r\n            betweenIndex = index;\r\n            return true\r\n        }\r\n    });\r\n    if (betweenIndex !== -1) {\r\n        result[betweenIndex] = (0, _extend.extend)((0, _between.getConfig)(betweenCaption, context), result[betweenIndex])\r\n    } else {\r\n        result.unshift((0, _between.getConfig)(betweenCaption, context))\r\n    }\r\n    return result\r\n}\r\n\r\nfunction isMatchedCondition(filter, addedFilterDataField) {\r\n    return filter[0] === addedFilterDataField\r\n}\r\n\r\nfunction removeFieldConditionsFromFilter(filter, dataField) {\r\n    if (!filter || 0 === filter.length) {\r\n        return null\r\n    }\r\n    if (isCondition(filter)) {\r\n        var hasMatchedCondition = isMatchedCondition(filter, dataField);\r\n        return !hasMatchedCondition ? filter : null\r\n    } else {\r\n        return syncConditionIntoGroup(filter, [dataField], false)\r\n    }\r\n}\r\n\r\nfunction syncConditionIntoGroup(filter, addedFilter, canPush) {\r\n    var result = [];\r\n    filter.forEach(function(item) {\r\n        if (isCondition(item)) {\r\n            if (isMatchedCondition(item, addedFilter[0])) {\r\n                if (canPush) {\r\n                    result.push(addedFilter);\r\n                    canPush = false\r\n                } else {\r\n                    result.splice(result.length - 1, 1)\r\n                }\r\n            } else {\r\n                result.push(item)\r\n            }\r\n        } else {\r\n            (result.length || isGroup(item)) && result.push(item)\r\n        }\r\n    });\r\n    if (0 === result.length) {\r\n        return null\r\n    }\r\n    if (canPush) {\r\n        result.push(AND_GROUP_OPERATION);\r\n        result.push(addedFilter)\r\n    }\r\n    return 1 === result.length ? result[0] : result\r\n}\r\n\r\nfunction syncFilters(filter, addedFilter) {\r\n    if (null === filter || 0 === filter.length) {\r\n        return addedFilter\r\n    }\r\n    if (isCondition(filter)) {\r\n        if (isMatchedCondition(filter, addedFilter[0])) {\r\n            return addedFilter\r\n        } else {\r\n            return [filter, AND_GROUP_OPERATION, addedFilter]\r\n        }\r\n    }\r\n    var groupValue = getGroupValue(filter);\r\n    if (groupValue !== AND_GROUP_OPERATION) {\r\n        return [addedFilter, \"and\", filter]\r\n    }\r\n    return syncConditionIntoGroup(filter, addedFilter, true)\r\n}\r\n\r\nfunction getMatchedConditions(filter, dataField) {\r\n    if (null === filter || 0 === filter.length) {\r\n        return []\r\n    }\r\n    if (isCondition(filter)) {\r\n        if (isMatchedCondition(filter, dataField)) {\r\n            return [filter]\r\n        } else {\r\n            return []\r\n        }\r\n    }\r\n    var groupValue = getGroupValue(filter);\r\n    if (groupValue !== AND_GROUP_OPERATION) {\r\n        return []\r\n    }\r\n    var result = filter.filter(function(item) {\r\n        return isCondition(item) && isMatchedCondition(item, dataField)\r\n    });\r\n    return result\r\n}\r\n\r\nfunction filterHasField(filter, dataField) {\r\n    if (null === filter || 0 === filter.length) {\r\n        return false\r\n    }\r\n    if (isCondition(filter)) {\r\n        return filter[0] === dataField\r\n    }\r\n    return filter.some(function(item) {\r\n        return (isCondition(item) || isGroup(item)) && filterHasField(item, dataField)\r\n    })\r\n}\r\nvar renderValueText = function($container, value, customOperation) {\r\n    if (Array.isArray(value)) {\r\n        var lastItemIndex = value.length - 1;\r\n        $container.empty();\r\n        value.forEach(function(t, i) {\r\n            (0, _renderer.default)(\"<span>\").addClass(FILTER_BUILDER_ITEM_TEXT_PART_CLASS).text(t).appendTo($container);\r\n            if (i !== lastItemIndex) {\r\n                (0, _renderer.default)(\"<span>\").addClass(FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS).text(customOperation && customOperation.valueSeparator ? customOperation.valueSeparator : \"|\").addClass(FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS).appendTo($container)\r\n            }\r\n        })\r\n    } else {\r\n        if (value) {\r\n            $container.text(value)\r\n        } else {\r\n            $container.text(_message.default.format(\"dxFilterBuilder-enterValueText\"))\r\n        }\r\n    }\r\n};\r\nexports.renderValueText = renderValueText;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_panel.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _check_box = _interopRequireDefault(require(\"../check_box\"));\r\nvar _utils = require(\"../filter_builder/utils\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _uiGrid_core3 = require(\"./ui.grid_core.accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar FILTER_PANEL_CLASS = \"filter-panel\";\r\nvar FILTER_PANEL_TEXT_CLASS = FILTER_PANEL_CLASS + \"-text\";\r\nvar FILTER_PANEL_CHECKBOX_CLASS = FILTER_PANEL_CLASS + \"-checkbox\";\r\nvar FILTER_PANEL_CLEAR_FILTER_CLASS = FILTER_PANEL_CLASS + \"-clear-filter\";\r\nvar FILTER_PANEL_LEFT_CONTAINER = FILTER_PANEL_CLASS + \"-left\";\r\nvar FILTER_PANEL_TARGET = \"filterPanel\";\r\nvar FilterPanelView = _uiGrid_core.default.View.inherit({\r\n    isVisible: function() {\r\n        return this.option(\"filterPanel.visible\") && this.getController(\"data\").dataSource()\r\n    },\r\n    init: function() {\r\n        var _this = this;\r\n        this.getController(\"data\").dataSourceChanged.add(function() {\r\n            return _this.render()\r\n        })\r\n    },\r\n    _renderCore: function() {\r\n        var that = this;\r\n        var $element = that.element();\r\n        $element.empty().addClass(that.addWidgetPrefix(FILTER_PANEL_CLASS));\r\n        var $leftContainer = (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(FILTER_PANEL_LEFT_CONTAINER)).appendTo($element);\r\n        if (that.option(\"filterValue\") || that._filterValueBuffer) {\r\n            $leftContainer.append(that._getCheckElement()).append(that._getFilterElement()).append(that._getTextElement());\r\n            $element.append(that._getRemoveButtonElement())\r\n        } else {\r\n            $leftContainer.append(that._getFilterElement()).append(that._getTextElement())\r\n        }\r\n    },\r\n    _getCheckElement: function() {\r\n        var that = this;\r\n        var $element = (0, _renderer.default)(\"<div>\").addClass(this.addWidgetPrefix(FILTER_PANEL_CHECKBOX_CLASS));\r\n        that._createComponent($element, _check_box.default, {\r\n            value: that.option(\"filterPanel.filterEnabled\"),\r\n            onValueChanged: function(e) {\r\n                that.option(\"filterPanel.filterEnabled\", e.value)\r\n            }\r\n        });\r\n        $element.attr(\"title\", this.option(\"filterPanel.texts.filterEnabledHint\"));\r\n        return $element\r\n    },\r\n    _getFilterElement: function() {\r\n        var that = this;\r\n        var $element = (0, _renderer.default)(\"<div>\").addClass(\"dx-icon-filter\");\r\n        _events_engine.default.on($element, \"click\", function() {\r\n            return that._showFilterBuilder()\r\n        });\r\n        (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", that, $element, void 0, function() {\r\n            return that._showFilterBuilder()\r\n        });\r\n        that._addTabIndexToElement($element);\r\n        return $element\r\n    },\r\n    _getTextElement: function() {\r\n        var that = this;\r\n        var $textElement = (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(FILTER_PANEL_TEXT_CLASS));\r\n        var filterText;\r\n        var filterValue = that.option(\"filterValue\");\r\n        if (filterValue) {\r\n            (0, _deferred.when)(that.getFilterText(filterValue, that.getController(\"filterSync\").getCustomFilterOperations())).done(function(filterText) {\r\n                var customizeText = that.option(\"filterPanel.customizeText\");\r\n                if (customizeText) {\r\n                    var customText = customizeText({\r\n                        component: that.component,\r\n                        filterValue: filterValue,\r\n                        text: filterText\r\n                    });\r\n                    if (\"string\" === typeof customText) {\r\n                        filterText = customText\r\n                    }\r\n                }\r\n                $textElement.text(filterText)\r\n            })\r\n        } else {\r\n            filterText = that.option(\"filterPanel.texts.createFilter\");\r\n            $textElement.text(filterText)\r\n        }\r\n        _events_engine.default.on($textElement, \"click\", function() {\r\n            return that._showFilterBuilder()\r\n        });\r\n        (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", that, $textElement, void 0, function() {\r\n            return that._showFilterBuilder()\r\n        });\r\n        that._addTabIndexToElement($textElement);\r\n        return $textElement\r\n    },\r\n    _showFilterBuilder: function() {\r\n        this.option(\"filterBuilderPopup.visible\", true)\r\n    },\r\n    _getRemoveButtonElement: function() {\r\n        var that = this;\r\n        var clearFilterValue = function() {\r\n            return that.option(\"filterValue\", null)\r\n        };\r\n        var $element = (0, _renderer.default)(\"<div>\").addClass(that.addWidgetPrefix(FILTER_PANEL_CLEAR_FILTER_CLASS)).text(that.option(\"filterPanel.texts.clearFilter\"));\r\n        _events_engine.default.on($element, \"click\", clearFilterValue);\r\n        (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", this, $element, void 0, clearFilterValue);\r\n        that._addTabIndexToElement($element);\r\n        return $element\r\n    },\r\n    _addTabIndexToElement: function($element) {\r\n        if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n            var tabindex = this.option(\"tabindex\") || 0;\r\n            $element.attr(\"tabindex\", tabindex)\r\n        }\r\n    },\r\n    optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"filterValue\":\r\n                this._invalidate();\r\n                this.option(\"filterPanel.filterEnabled\", true);\r\n                args.handled = true;\r\n                break;\r\n            case \"filterPanel\":\r\n                this._invalidate();\r\n                args.handled = true;\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _getConditionText: function(fieldText, operationText, valueText) {\r\n        var result = \"[\".concat(fieldText, \"] \").concat(operationText);\r\n        if ((0, _type.isDefined)(valueText)) {\r\n            result += valueText\r\n        }\r\n        return result\r\n    },\r\n    _getValueMaskedText: function(value) {\r\n        return Array.isArray(value) ? \"('\".concat(value.join(\"', '\"), \"')\") : \" '\".concat(value, \"'\")\r\n    },\r\n    _getValueText: function(field, customOperation, value) {\r\n        var _this2 = this;\r\n        var deferred = new _deferred.Deferred;\r\n        var hasCustomOperation = customOperation && customOperation.customizeText;\r\n        if ((0, _type.isDefined)(value) || hasCustomOperation) {\r\n            if (!hasCustomOperation && field.lookup) {\r\n                (0, _utils.getCurrentLookupValueText)(field, value, function(data) {\r\n                    deferred.resolve(_this2._getValueMaskedText(data))\r\n                })\r\n            } else {\r\n                var displayValue = Array.isArray(value) ? value : _uiGrid_core2.default.getDisplayValue(field, value);\r\n                (0, _deferred.when)((0, _utils.getCurrentValueText)(field, displayValue, customOperation, FILTER_PANEL_TARGET)).done(function(data) {\r\n                    deferred.resolve(_this2._getValueMaskedText(data))\r\n                })\r\n            }\r\n        } else {\r\n            deferred.resolve(\"\")\r\n        }\r\n        return deferred.promise()\r\n    },\r\n    getConditionText: function(filterValue, options) {\r\n        var that = this;\r\n        var operation = filterValue[1];\r\n        var deferred = new _deferred.Deferred;\r\n        var customOperation = (0, _utils.getCustomOperation)(options.customOperations, operation);\r\n        var operationText;\r\n        var field = (0, _utils.getField)(filterValue[0], options.columns);\r\n        var fieldText = field.caption || \"\";\r\n        var value = filterValue[2];\r\n        if (customOperation) {\r\n            operationText = customOperation.caption || (0, _inflector.captionize)(customOperation.name)\r\n        } else {\r\n            if (null === value) {\r\n                operationText = (0, _utils.getCaptionByOperation)(\"=\" === operation ? \"isblank\" : \"isnotblank\", options.filterOperationDescriptions)\r\n            } else {\r\n                operationText = (0, _utils.getCaptionByOperation)(operation, options.filterOperationDescriptions)\r\n            }\r\n        }\r\n        this._getValueText(field, customOperation, value).done(function(valueText) {\r\n            deferred.resolve(that._getConditionText(fieldText, operationText, valueText))\r\n        });\r\n        return deferred\r\n    },\r\n    getGroupText: function(filterValue, options, isInnerGroup) {\r\n        var that = this;\r\n        var result = new _deferred.Deferred;\r\n        var textParts = [];\r\n        var groupValue = (0, _utils.getGroupValue)(filterValue);\r\n        filterValue.forEach(function(item) {\r\n            if ((0, _utils.isCondition)(item)) {\r\n                textParts.push(that.getConditionText(item, options))\r\n            } else {\r\n                if ((0, _utils.isGroup)(item)) {\r\n                    textParts.push(that.getGroupText(item, options, true))\r\n                }\r\n            }\r\n        });\r\n        _deferred.when.apply(this, textParts).done(function() {\r\n            var text;\r\n            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n                args[_key] = arguments[_key]\r\n            }\r\n            if (\"!\" === groupValue[0]) {\r\n                var groupText = options.groupOperationDescriptions[\"not\" + groupValue.substring(1, 2).toUpperCase() + groupValue.substring(2)].split(\" \");\r\n                text = \"\".concat(groupText[0], \" \").concat(args[0])\r\n            } else {\r\n                text = args.join(\" \".concat(options.groupOperationDescriptions[groupValue], \" \"))\r\n            }\r\n            if (isInnerGroup) {\r\n                text = \"(\".concat(text, \")\")\r\n            }\r\n            result.resolve(text)\r\n        });\r\n        return result\r\n    },\r\n    getFilterText: function(filterValue, customOperations) {\r\n        var that = this;\r\n        var options = {\r\n            customOperations: customOperations,\r\n            columns: that.getController(\"columns\").getFilteringColumns(),\r\n            filterOperationDescriptions: that.option(\"filterBuilder.filterOperationDescriptions\"),\r\n            groupOperationDescriptions: that.option(\"filterBuilder.groupOperationDescriptions\")\r\n        };\r\n        return (0, _utils.isCondition)(filterValue) ? that.getConditionText(filterValue, options) : that.getGroupText(filterValue, options)\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            filterPanel: {\r\n                visible: false,\r\n                filterEnabled: true,\r\n                texts: {\r\n                    createFilter: _message.default.format(\"dxDataGrid-filterPanelCreateFilter\"),\r\n                    clearFilter: _message.default.format(\"dxDataGrid-filterPanelClearFilter\"),\r\n                    filterEnabledHint: _message.default.format(\"dxDataGrid-filterPanelFilterEnabledHint\")\r\n                }\r\n            }\r\n        }\r\n    },\r\n    views: {\r\n        filterPanelView: FilterPanelView\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                optionChanged: function(args) {\r\n                    switch (args.name) {\r\n                        case \"filterPanel\":\r\n                            this._applyFilter();\r\n                            args.handled = true;\r\n                            break;\r\n                        default:\r\n                            this.callBase(args)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/pointer/observer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar addEventsListener = function(events, handler) {\r\n    _ready_callbacks.default.add(function() {\r\n        events.split(\" \").forEach(function(event) {\r\n            _dom_adapter.default.listen(_dom_adapter.default.getDocument(), event, handler, true)\r\n        })\r\n    })\r\n};\r\nvar Observer = function(eventMap, pointerEquals, onPointerAdding) {\r\n    onPointerAdding = onPointerAdding || function() {};\r\n    var pointers = [];\r\n    var getPointerIndex = function(e) {\r\n        var index = -1;\r\n        (0, _iterator.each)(pointers, function(i, pointer) {\r\n            if (!pointerEquals(e, pointer)) {\r\n                return true\r\n            }\r\n            index = i;\r\n            return false\r\n        });\r\n        return index\r\n    };\r\n    var addPointer = function(e) {\r\n        if (getPointerIndex(e) === -1) {\r\n            onPointerAdding(e);\r\n            pointers.push(e)\r\n        }\r\n    };\r\n    var removePointer = function(e) {\r\n        var index = getPointerIndex(e);\r\n        if (index > -1) {\r\n            pointers.splice(index, 1)\r\n        }\r\n    };\r\n    var updatePointer = function(e) {\r\n        pointers[getPointerIndex(e)] = e\r\n    };\r\n    addEventsListener(eventMap.dxpointerdown, addPointer);\r\n    addEventsListener(eventMap.dxpointermove, updatePointer);\r\n    addEventsListener(eventMap.dxpointerup, removePointer);\r\n    addEventsListener(eventMap.dxpointercancel, removePointer);\r\n    this.pointers = function() {\r\n        return pointers\r\n    };\r\n    this.reset = function() {\r\n        pointers = []\r\n    }\r\n};\r\nvar _default = Observer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/multi_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _translator2 = require(\"../animation/translator\");\r\nvar _uiMulti_view = require(\"./multi_view/ui.multi_view.animation\");\r\nvar _math = require(\"../core/utils/math\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _visibility_change = require(\"../events/visibility_change\");\r\nvar _element = require(\"../core/element\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.live_update\"));\r\nvar _swipeable = _interopRequireDefault(require(\"../events/gesture/swipeable\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar MULTIVIEW_CLASS = \"dx-multiview\";\r\nvar MULTIVIEW_WRAPPER_CLASS = \"dx-multiview-wrapper\";\r\nvar MULTIVIEW_ITEM_CONTAINER_CLASS = \"dx-multiview-item-container\";\r\nvar MULTIVIEW_ITEM_CLASS = \"dx-multiview-item\";\r\nvar MULTIVIEW_ITEM_HIDDEN_CLASS = \"dx-multiview-item-hidden\";\r\nvar MULTIVIEW_ITEM_DATA_KEY = \"dxMultiViewItemData\";\r\nvar MULTIVIEW_ANIMATION_DURATION = 200;\r\nvar toNumber = function(value) {\r\n    return +value\r\n};\r\nvar position = function($element) {\r\n    return (0, _translator2.locate)($element).left\r\n};\r\nvar MultiView = _uiCollection_widget.default.inherit({\r\n    _activeStateUnit: \".\" + MULTIVIEW_ITEM_CLASS,\r\n    _supportedKeys: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            pageUp: _common.noop,\r\n            pageDown: _common.noop\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            selectedIndex: 0,\r\n            swipeEnabled: true,\r\n            animationEnabled: true,\r\n            loop: false,\r\n            deferRendering: true,\r\n            _itemAttributes: {\r\n                role: \"tabpanel\"\r\n            },\r\n            loopItemFocus: false,\r\n            selectOnFocus: true,\r\n            selectionMode: \"single\",\r\n            selectionRequired: true,\r\n            selectionByClick: false\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n            },\r\n            options: {\r\n                focusStateEnabled: true\r\n            }\r\n        }])\r\n    },\r\n    _itemClass: function() {\r\n        return MULTIVIEW_ITEM_CLASS\r\n    },\r\n    _itemDataKey: function() {\r\n        return MULTIVIEW_ITEM_DATA_KEY\r\n    },\r\n    _itemContainer: function() {\r\n        return this._$itemContainer\r\n    },\r\n    _itemElements: function() {\r\n        return this._itemContainer().children(this._itemSelector())\r\n    },\r\n    _itemWidth: function() {\r\n        if (!this._itemWidthValue) {\r\n            this._itemWidthValue = this._$wrapper.width()\r\n        }\r\n        return this._itemWidthValue\r\n    },\r\n    _clearItemWidthCache: function() {\r\n        delete this._itemWidthValue\r\n    },\r\n    _itemsCount: function() {\r\n        return this.option(\"items\").length\r\n    },\r\n    _normalizeIndex: function(index) {\r\n        var count = this._itemsCount();\r\n        if (index < 0) {\r\n            index += count\r\n        }\r\n        if (index >= count) {\r\n            index -= count\r\n        }\r\n        return index\r\n    },\r\n    _getRTLSignCorrection: function() {\r\n        return this.option(\"rtlEnabled\") ? -1 : 1\r\n    },\r\n    _init: function() {\r\n        this.callBase.apply(this, arguments);\r\n        var $element = this.$element();\r\n        $element.addClass(MULTIVIEW_CLASS);\r\n        this._$wrapper = (0, _renderer.default)(\"<div>\").addClass(MULTIVIEW_WRAPPER_CLASS);\r\n        this._$wrapper.appendTo($element);\r\n        this._$itemContainer = (0, _renderer.default)(\"<div>\").addClass(MULTIVIEW_ITEM_CONTAINER_CLASS);\r\n        this._$itemContainer.appendTo(this._$wrapper);\r\n        this.option(\"loopItemFocus\", this.option(\"loop\"));\r\n        this._initSwipeable()\r\n    },\r\n    _initMarkup: function() {\r\n        this._deferredItems = [];\r\n        this.callBase();\r\n        var selectedItemIndices = this._getSelectedItemIndices();\r\n        this._updateItemsVisibility(selectedItemIndices[0])\r\n    },\r\n    _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n        this.callBase($item, deletedActionArgs);\r\n        if (this._deferredItems) {\r\n            this._deferredItems.splice(deletedActionArgs.itemIndex, 1)\r\n        }\r\n    },\r\n    _beforeItemElementInserted: function(change) {\r\n        this.callBase.apply(this, arguments);\r\n        if (this._deferredItems) {\r\n            this._deferredItems.splice(change.index, 0, null)\r\n        }\r\n    },\r\n    _executeItemRenderAction: function(index, itemData, itemElement) {\r\n        index = (this.option(\"items\") || []).indexOf(itemData);\r\n        this.callBase(index, itemData, itemElement)\r\n    },\r\n    _renderItemContent: function(args) {\r\n        var renderContentDeferred = new _deferred.Deferred;\r\n        var that = this;\r\n        var callBase = this.callBase;\r\n        var deferred = new _deferred.Deferred;\r\n        deferred.done(function() {\r\n            var $itemContent = callBase.call(that, args);\r\n            renderContentDeferred.resolve($itemContent)\r\n        });\r\n        this._deferredItems[args.index] = deferred;\r\n        this.option(\"deferRendering\") || deferred.resolve();\r\n        return renderContentDeferred.promise()\r\n    },\r\n    _render: function() {\r\n        var _this = this;\r\n        this.callBase();\r\n        (0, _common.deferRender)(function() {\r\n            var selectedItemIndices = _this._getSelectedItemIndices();\r\n            _this._updateItems(selectedItemIndices[0])\r\n        })\r\n    },\r\n    _updateItems: function(selectedIndex, newIndex) {\r\n        this._updateItemsPosition(selectedIndex, newIndex);\r\n        this._updateItemsVisibility(selectedIndex, newIndex)\r\n    },\r\n    _modifyByChanges: function() {\r\n        this.callBase.apply(this, arguments);\r\n        var selectedItemIndices = this._getSelectedItemIndices();\r\n        this._updateItemsVisibility(selectedItemIndices[0])\r\n    },\r\n    _updateItemsPosition: function(selectedIndex, newIndex) {\r\n        var $itemElements = this._itemElements();\r\n        var positionSign = (0, _type.isDefined)(newIndex) ? -this._animationDirection(newIndex, selectedIndex) : void 0;\r\n        var $selectedItem = $itemElements.eq(selectedIndex);\r\n        _uiMulti_view._translator.move($selectedItem, 0);\r\n        if ((0, _type.isDefined)(newIndex)) {\r\n            _uiMulti_view._translator.move($itemElements.eq(newIndex), 100 * positionSign + \"%\")\r\n        }\r\n    },\r\n    _updateItemsVisibility: function(selectedIndex, newIndex) {\r\n        var $itemElements = this._itemElements();\r\n        $itemElements.each(function(itemIndex, item) {\r\n            var $item = (0, _renderer.default)(item);\r\n            var isHidden = itemIndex !== selectedIndex && itemIndex !== newIndex;\r\n            if (!isHidden) {\r\n                this._renderSpecificItem(itemIndex)\r\n            }\r\n            $item.toggleClass(MULTIVIEW_ITEM_HIDDEN_CLASS, isHidden);\r\n            this.setAria(\"hidden\", isHidden || void 0, $item)\r\n        }.bind(this))\r\n    },\r\n    _renderSpecificItem: function(index) {\r\n        var $item = this._itemElements().eq(index);\r\n        var hasItemContent = $item.find(this._itemContentClass()).length > 0;\r\n        if ((0, _type.isDefined)(index) && !hasItemContent) {\r\n            this._deferredItems[index].resolve();\r\n            (0, _visibility_change.triggerResizeEvent)($item)\r\n        }\r\n    },\r\n    _refreshItem: function($item, item) {\r\n        this.callBase($item, item);\r\n        this._updateItemsVisibility(this.option(\"selectedIndex\"))\r\n    },\r\n    _setAriaSelected: _common.noop,\r\n    _updateSelection: function(addedSelection, removedSelection) {\r\n        var newIndex = addedSelection[0];\r\n        var prevIndex = removedSelection[0];\r\n        _uiMulti_view.animation.complete(this._$itemContainer);\r\n        this._updateItems(prevIndex, newIndex);\r\n        var animationDirection = this._animationDirection(newIndex, prevIndex);\r\n        this._animateItemContainer(animationDirection * this._itemWidth(), function() {\r\n            _uiMulti_view._translator.move(this._$itemContainer, 0);\r\n            this._updateItems(newIndex);\r\n            this._$itemContainer.width()\r\n        }.bind(this))\r\n    },\r\n    _animateItemContainer: function(position, completeCallback) {\r\n        var duration = this.option(\"animationEnabled\") ? MULTIVIEW_ANIMATION_DURATION : 0;\r\n        _uiMulti_view.animation.moveTo(this._$itemContainer, position, duration, completeCallback)\r\n    },\r\n    _animationDirection: function(newIndex, prevIndex) {\r\n        var containerPosition = position(this._$itemContainer);\r\n        var indexDifference = (prevIndex - newIndex) * this._getRTLSignCorrection() * this._getItemFocusLoopSignCorrection();\r\n        var isSwipePresent = 0 !== containerPosition;\r\n        var directionSignVariable = isSwipePresent ? containerPosition : indexDifference;\r\n        return (0, _math.sign)(directionSignVariable)\r\n    },\r\n    _getSwipeDisabledState: function() {\r\n        return !this.option(\"swipeEnabled\") || this._itemsCount() <= 1\r\n    },\r\n    _initSwipeable: function() {\r\n        var _this2 = this;\r\n        this._createComponent(this.$element(), _swipeable.default, {\r\n            disabled: this._getSwipeDisabledState(),\r\n            elastic: false,\r\n            itemSizeFunc: this._itemWidth.bind(this),\r\n            onStart: function(args) {\r\n                return _this2._swipeStartHandler(args.event)\r\n            },\r\n            onUpdated: function(args) {\r\n                return _this2._swipeUpdateHandler(args.event)\r\n            },\r\n            onEnd: function(args) {\r\n                return _this2._swipeEndHandler(args.event)\r\n            }\r\n        })\r\n    },\r\n    _swipeStartHandler: function(e) {\r\n        _uiMulti_view.animation.complete(this._$itemContainer);\r\n        var selectedIndex = this.option(\"selectedIndex\");\r\n        var loop = this.option(\"loop\");\r\n        var lastIndex = this._itemsCount() - 1;\r\n        var rtl = this.option(\"rtlEnabled\");\r\n        e.maxLeftOffset = toNumber(loop || (rtl ? selectedIndex > 0 : selectedIndex < lastIndex));\r\n        e.maxRightOffset = toNumber(loop || (rtl ? selectedIndex < lastIndex : selectedIndex > 0));\r\n        this._swipeDirection = null\r\n    },\r\n    _swipeUpdateHandler: function(e) {\r\n        var offset = e.offset;\r\n        var swipeDirection = (0, _math.sign)(offset) * this._getRTLSignCorrection();\r\n        _uiMulti_view._translator.move(this._$itemContainer, offset * this._itemWidth());\r\n        if (swipeDirection !== this._swipeDirection) {\r\n            this._swipeDirection = swipeDirection;\r\n            var selectedIndex = this.option(\"selectedIndex\");\r\n            var newIndex = this._normalizeIndex(selectedIndex - swipeDirection);\r\n            this._updateItems(selectedIndex, newIndex)\r\n        }\r\n    },\r\n    _swipeEndHandler: function(e) {\r\n        var targetOffset = e.targetOffset * this._getRTLSignCorrection();\r\n        if (targetOffset) {\r\n            this.option(\"selectedIndex\", this._normalizeIndex(this.option(\"selectedIndex\") - targetOffset));\r\n            var $selectedElement = this.itemElements().filter(\".dx-item-selected\");\r\n            this.option(\"focusStateEnabled\") && this.option(\"focusedElement\", (0, _element.getPublicElement)($selectedElement))\r\n        } else {\r\n            this._animateItemContainer(0, _common.noop)\r\n        }\r\n    },\r\n    _getItemFocusLoopSignCorrection: function() {\r\n        return this._itemFocusLooped ? -1 : 1\r\n    },\r\n    _moveFocus: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._itemFocusLooped = false\r\n    },\r\n    _prevItem: function($items) {\r\n        var $result = this.callBase.apply(this, arguments);\r\n        this._itemFocusLooped = $result.is($items.last());\r\n        return $result\r\n    },\r\n    _nextItem: function($items) {\r\n        var $result = this.callBase.apply(this, arguments);\r\n        this._itemFocusLooped = $result.is($items.first());\r\n        return $result\r\n    },\r\n    _dimensionChanged: function() {\r\n        this._clearItemWidthCache()\r\n    },\r\n    _visibilityChanged: function(visible) {\r\n        if (visible) {\r\n            this._dimensionChanged()\r\n        }\r\n    },\r\n    _updateSwipeDisabledState: function() {\r\n        var disabled = this._getSwipeDisabledState();\r\n        _swipeable.default.getInstance(this.$element()).option(\"disabled\", disabled)\r\n    },\r\n    _optionChanged: function(args) {\r\n        var value = args.value;\r\n        switch (args.name) {\r\n            case \"loop\":\r\n                this.option(\"loopItemFocus\", value);\r\n                break;\r\n            case \"animationEnabled\":\r\n                break;\r\n            case \"swipeEnabled\":\r\n                this._updateSwipeDisabledState();\r\n                break;\r\n            case \"deferRendering\":\r\n                this._invalidate();\r\n                break;\r\n            case \"items\":\r\n                this._updateSwipeDisabledState();\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxMultiView\", MultiView);\r\nvar _default = MultiView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.selection.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"../data_grid/ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _click = require(\"../../events/click\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _selection = _interopRequireDefault(require(\"../selection/selection\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar ROW_SELECTION_CLASS = \"dx-selection\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-select-checkbox\";\r\nvar CHECKBOXES_HIDDEN_CLASS = \"dx-select-checkboxes-hidden\";\r\nvar COMMAND_SELECT_CLASS = \"dx-command-select\";\r\nvar SELECTION_DISABLED_CLASS = \"dx-selection-disabled\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar SHOW_CHECKBOXES_MODE = \"selection.showCheckBoxesMode\";\r\nvar SELECTION_MODE = \"selection.mode\";\r\nvar processLongTap = function(that, dxEvent) {\r\n    var selectionController = that.getController(\"selection\");\r\n    var rowsView = that.getView(\"rowsView\");\r\n    var $row = (0, _renderer.default)(dxEvent.target).closest(\".\" + DATA_ROW_CLASS);\r\n    var rowIndex = rowsView.getRowIndex($row);\r\n    if (rowIndex < 0) {\r\n        return\r\n    }\r\n    if (\"onLongTap\" === that.option(SHOW_CHECKBOXES_MODE)) {\r\n        if (selectionController.isSelectionWithCheckboxes()) {\r\n            selectionController.stopSelectionWithCheckboxes()\r\n        } else {\r\n            selectionController.startSelectionWithCheckboxes()\r\n        }\r\n    } else {\r\n        if (\"onClick\" === that.option(SHOW_CHECKBOXES_MODE)) {\r\n            selectionController.startSelectionWithCheckboxes()\r\n        }\r\n        if (\"always\" !== that.option(SHOW_CHECKBOXES_MODE)) {\r\n            selectionController.changeItemSelection(rowIndex, {\r\n                control: true\r\n            })\r\n        }\r\n    }\r\n};\r\nvar SelectionController = _uiData_grid.default.Controller.inherit(function() {\r\n    var isSeveralRowsSelected = function(that, selectionFilter) {\r\n        var keyIndex = 0;\r\n        var store = that._dataController.store();\r\n        var key = store && store.key();\r\n        var isComplexKey = Array.isArray(key);\r\n        if (!selectionFilter.length) {\r\n            return false\r\n        }\r\n        if (isComplexKey && Array.isArray(selectionFilter[0]) && \"and\" === selectionFilter[1]) {\r\n            for (var i = 0; i < selectionFilter.length; i++) {\r\n                if (Array.isArray(selectionFilter[i])) {\r\n                    if (selectionFilter[i][0] !== key[keyIndex] || \"=\" !== selectionFilter[i][1]) {\r\n                        return true\r\n                    }\r\n                    keyIndex++\r\n                }\r\n            }\r\n            return false\r\n        }\r\n        return key !== selectionFilter[0]\r\n    };\r\n    var selectionCellTemplate = function(container, options) {\r\n        var component = options.component;\r\n        var rowsView = component.getView(\"rowsView\");\r\n        if (component.option(\"renderAsync\") && !component.option(\"selection.deferred\")) {\r\n            options.value = component.isRowSelected(options.row.key)\r\n        }\r\n        rowsView.renderSelectCheckBoxContainer((0, _renderer.default)(container), options)\r\n    };\r\n    var selectionHeaderTemplate = function(container, options) {\r\n        var column = options.column;\r\n        var $cellElement = (0, _renderer.default)(container);\r\n        var columnHeadersView = options.component.getView(\"columnHeadersView\");\r\n        $cellElement.addClass(EDITOR_CELL_CLASS);\r\n        columnHeadersView._renderSelectAllCheckBox($cellElement, column);\r\n        columnHeadersView._attachSelectAllCheckBoxClickEvent($cellElement)\r\n    };\r\n    return {\r\n        init: function() {\r\n            this._dataController = this.getController(\"data\");\r\n            this._selectionMode = this.option(SELECTION_MODE);\r\n            this._isSelectionWithCheckboxes = false;\r\n            this._selection = this._createSelection();\r\n            this._updateSelectColumn();\r\n            this.createAction(\"onSelectionChanged\", {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            })\r\n        },\r\n        _getSelectionConfig: function() {\r\n            var that = this;\r\n            var dataController = that._dataController;\r\n            var selectionOptions = that.option(\"selection\") || {};\r\n            return {\r\n                selectedKeys: that.option(\"selectedRowKeys\"),\r\n                mode: that._selectionMode,\r\n                deferred: selectionOptions.deferred,\r\n                maxFilterLengthInRequest: selectionOptions.maxFilterLengthInRequest,\r\n                selectionFilter: that.option(\"selectionFilter\"),\r\n                key: function() {\r\n                    return dataController && dataController.key()\r\n                },\r\n                keyOf: function(item) {\r\n                    return dataController && dataController.keyOf(item)\r\n                },\r\n                dataFields: function() {\r\n                    return dataController.dataSource() && dataController.dataSource().select()\r\n                },\r\n                load: function(options) {\r\n                    return dataController.dataSource() && dataController.dataSource().load(options) || (new _deferred.Deferred).resolve([])\r\n                },\r\n                plainItems: function() {\r\n                    return dataController.items(true)\r\n                },\r\n                isItemSelected: function(item) {\r\n                    return item.selected\r\n                },\r\n                isSelectableItem: function(item) {\r\n                    return item && \"data\" === item.rowType && !item.isNewRow\r\n                },\r\n                getItemData: function(item) {\r\n                    return item && (item.oldData || item.data || item)\r\n                },\r\n                filter: function() {\r\n                    return dataController.getCombinedFilter()\r\n                },\r\n                totalCount: function() {\r\n                    return dataController.totalCount()\r\n                },\r\n                onSelectionChanged: that._updateSelectedItems.bind(this)\r\n            }\r\n        },\r\n        _updateSelectColumn: function() {\r\n            var columnsController = this.getController(\"columns\");\r\n            var isSelectColumnVisible = this.isSelectColumnVisible();\r\n            columnsController.addCommandColumn({\r\n                type: \"selection\",\r\n                command: \"select\",\r\n                visible: isSelectColumnVisible,\r\n                visibleIndex: -1,\r\n                dataType: \"boolean\",\r\n                alignment: \"center\",\r\n                cssClass: COMMAND_SELECT_CLASS,\r\n                width: \"auto\",\r\n                cellTemplate: selectionCellTemplate,\r\n                headerCellTemplate: selectionHeaderTemplate\r\n            });\r\n            columnsController.columnOption(\"command:select\", \"visible\", isSelectColumnVisible)\r\n        },\r\n        _createSelection: function() {\r\n            var options = this._getSelectionConfig();\r\n            return new _selection.default(options)\r\n        },\r\n        _fireSelectionChanged: function(options) {\r\n            if (options) {\r\n                this.executeAction(\"onSelectionChanged\", options)\r\n            }\r\n            var argument = this.option(\"selection.deferred\") ? {\r\n                selectionFilter: this.option(\"selectionFilter\")\r\n            } : {\r\n                selectedRowKeys: this.option(\"selectedRowKeys\")\r\n            };\r\n            this.selectionChanged.fire(argument)\r\n        },\r\n        _updateCheckboxesState: function(options) {\r\n            var isDeferredMode = options.isDeferredMode;\r\n            var selectionFilter = options.selectionFilter;\r\n            var selectedItemKeys = options.selectedItemKeys;\r\n            var removedItemKeys = options.removedItemKeys;\r\n            if (\"onClick\" === this.option(SHOW_CHECKBOXES_MODE)) {\r\n                if (isDeferredMode ? selectionFilter && isSeveralRowsSelected(this, selectionFilter) : selectedItemKeys.length > 1) {\r\n                    this.startSelectionWithCheckboxes()\r\n                } else {\r\n                    if (isDeferredMode ? selectionFilter && !selectionFilter.length : 0 === selectedItemKeys.length && removedItemKeys.length) {\r\n                        this.stopSelectionWithCheckboxes()\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        _updateSelectedItems: function(args) {\r\n            var that = this;\r\n            var selectionChangedOptions;\r\n            var isDeferredMode = that.option(\"selection.deferred\");\r\n            var selectionFilter = that._selection.selectionFilter();\r\n            var dataController = that._dataController;\r\n            var items = dataController.items();\r\n            if (!items) {\r\n                return\r\n            }\r\n            var isSelectionWithCheckboxes = that.isSelectionWithCheckboxes();\r\n            var changedItemIndexes = that.getChangedItemIndexes(items);\r\n            that._updateCheckboxesState({\r\n                selectedItemKeys: args.selectedItemKeys,\r\n                removedItemKeys: args.removedItemKeys,\r\n                selectionFilter: selectionFilter,\r\n                isDeferredMode: isDeferredMode\r\n            });\r\n            if (changedItemIndexes.length || isSelectionWithCheckboxes !== that.isSelectionWithCheckboxes()) {\r\n                dataController.updateItems({\r\n                    changeType: \"updateSelection\",\r\n                    itemIndexes: changedItemIndexes\r\n                })\r\n            }\r\n            if (isDeferredMode) {\r\n                that.option(\"selectionFilter\", selectionFilter);\r\n                selectionChangedOptions = {}\r\n            } else {\r\n                if (args.addedItemKeys.length || args.removedItemKeys.length) {\r\n                    that._selectedItemsInternalChange = true;\r\n                    that.option(\"selectedRowKeys\", args.selectedItemKeys.slice(0));\r\n                    that._selectedItemsInternalChange = false;\r\n                    selectionChangedOptions = {\r\n                        selectedRowsData: args.selectedItems.slice(0),\r\n                        selectedRowKeys: args.selectedItemKeys.slice(0),\r\n                        currentSelectedRowKeys: args.addedItemKeys.slice(0),\r\n                        currentDeselectedRowKeys: args.removedItemKeys.slice(0)\r\n                    }\r\n                }\r\n            }\r\n            that._fireSelectionChanged(selectionChangedOptions)\r\n        },\r\n        getChangedItemIndexes: function(items) {\r\n            var that = this;\r\n            var itemIndexes = [];\r\n            var isDeferredSelection = this.option(\"selection.deferred\");\r\n            for (var i = 0, length = items.length; i < length; i++) {\r\n                var row = items[i];\r\n                var isItemSelected = that.isRowSelected(isDeferredSelection ? row.data : row.key);\r\n                if (that._selection.isDataItem(row) && row.isSelected !== isItemSelected) {\r\n                    itemIndexes.push(i)\r\n                }\r\n            }\r\n            return itemIndexes\r\n        },\r\n        callbackNames: function() {\r\n            return [\"selectionChanged\"]\r\n        },\r\n        optionChanged: function(args) {\r\n            var that = this;\r\n            that.callBase(args);\r\n            switch (args.name) {\r\n                case \"selection\":\r\n                    var oldSelectionMode = that._selectionMode;\r\n                    that.init();\r\n                    var selectionMode = that._selectionMode;\r\n                    var selectedRowKeys = that.option(\"selectedRowKeys\");\r\n                    if (oldSelectionMode !== selectionMode) {\r\n                        if (\"single\" === selectionMode) {\r\n                            if (selectedRowKeys.length > 1) {\r\n                                selectedRowKeys = [selectedRowKeys[0]]\r\n                            }\r\n                        } else {\r\n                            if (\"multiple\" !== selectionMode) {\r\n                                selectedRowKeys = []\r\n                            }\r\n                        }\r\n                    }\r\n                    that.selectRows(selectedRowKeys).always(function() {\r\n                        that._fireSelectionChanged()\r\n                    });\r\n                    that.getController(\"columns\").updateColumns();\r\n                    args.handled = true;\r\n                    break;\r\n                case \"selectionFilter\":\r\n                    this._selection.selectionFilter(args.value);\r\n                    args.handled = true;\r\n                    break;\r\n                case \"selectedRowKeys\":\r\n                    var value = args.value || [];\r\n                    if (Array.isArray(value) && !that._selectedItemsInternalChange && (that.component.getDataSource() || !value.length)) {\r\n                        that.selectRows(value)\r\n                    }\r\n                    args.handled = true\r\n            }\r\n        },\r\n        publicMethods: function() {\r\n            return [\"selectRows\", \"deselectRows\", \"selectRowsByIndexes\", \"getSelectedRowKeys\", \"getSelectedRowsData\", \"clearSelection\", \"selectAll\", \"deselectAll\", \"startSelectionWithCheckboxes\", \"stopSelectionWithCheckboxes\", \"isRowSelected\"]\r\n        },\r\n        isRowSelected: function(arg) {\r\n            return this._selection.isItemSelected(arg)\r\n        },\r\n        isSelectColumnVisible: function() {\r\n            return \"multiple\" === this.option(SELECTION_MODE) && (\"always\" === this.option(SHOW_CHECKBOXES_MODE) || \"onClick\" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes)\r\n        },\r\n        _isOnePageSelectAll: function() {\r\n            return \"page\" === this.option(\"selection.selectAllMode\")\r\n        },\r\n        isSelectAll: function() {\r\n            return this._selection.getSelectAllState(this._isOnePageSelectAll())\r\n        },\r\n        selectAll: function() {\r\n            if (\"onClick\" === this.option(SHOW_CHECKBOXES_MODE)) {\r\n                this.startSelectionWithCheckboxes()\r\n            }\r\n            return this._selection.selectAll(this._isOnePageSelectAll())\r\n        },\r\n        deselectAll: function() {\r\n            return this._selection.deselectAll(this._isOnePageSelectAll())\r\n        },\r\n        clearSelection: function() {\r\n            return this.selectedItemKeys([])\r\n        },\r\n        refresh: function() {\r\n            var selectedRowKeys = this.option(\"selectedRowKeys\") || [];\r\n            if (!this.option(\"selection.deferred\") && selectedRowKeys.length) {\r\n                return this.selectedItemKeys(selectedRowKeys)\r\n            }\r\n            return (new _deferred.Deferred).resolve().promise()\r\n        },\r\n        selectedItemKeys: function(value, preserve, isDeselect, isSelectAll) {\r\n            return this._selection.selectedItemKeys(value, preserve, isDeselect, isSelectAll)\r\n        },\r\n        getSelectedRowKeys: function() {\r\n            return this._selection.getSelectedItemKeys()\r\n        },\r\n        selectRows: function(keys, preserve) {\r\n            return this.selectedItemKeys(keys, preserve)\r\n        },\r\n        deselectRows: function(keys) {\r\n            return this.selectedItemKeys(keys, true, true)\r\n        },\r\n        selectRowsByIndexes: function(indexes) {\r\n            var items = this._dataController.items();\r\n            var keys = [];\r\n            if (!Array.isArray(indexes)) {\r\n                indexes = Array.prototype.slice.call(arguments, 0)\r\n            }(0, _iterator.each)(indexes, function() {\r\n                var item = items[this];\r\n                if (item && \"data\" === item.rowType) {\r\n                    keys.push(item.key)\r\n                }\r\n            });\r\n            return this.selectRows(keys)\r\n        },\r\n        getSelectedRowsData: function() {\r\n            return this._selection.getSelectedItems()\r\n        },\r\n        changeItemSelection: function(itemIndex, keys) {\r\n            keys = keys || {};\r\n            if (this.isSelectionWithCheckboxes()) {\r\n                keys.control = true\r\n            }\r\n            return this._selection.changeItemSelection(this._dataController.getRowIndexDelta() + itemIndex, keys)\r\n        },\r\n        focusedItemIndex: function(itemIndex) {\r\n            var that = this;\r\n            if ((0, _type.isDefined)(itemIndex)) {\r\n                that._selection._focusedItemIndex = itemIndex\r\n            } else {\r\n                return that._selection._focusedItemIndex\r\n            }\r\n        },\r\n        isSelectionWithCheckboxes: function() {\r\n            return \"multiple\" === this.option(SELECTION_MODE) && (\"always\" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes)\r\n        },\r\n        startSelectionWithCheckboxes: function() {\r\n            var that = this;\r\n            if (\"multiple\" === that.option(SELECTION_MODE) && !that.isSelectionWithCheckboxes()) {\r\n                that._isSelectionWithCheckboxes = true;\r\n                that._updateSelectColumn();\r\n                return true\r\n            }\r\n            return false\r\n        },\r\n        stopSelectionWithCheckboxes: function() {\r\n            var that = this;\r\n            if (that._isSelectionWithCheckboxes) {\r\n                that._isSelectionWithCheckboxes = false;\r\n                that._updateSelectColumn();\r\n                return true\r\n            }\r\n            return false\r\n        }\r\n    }\r\n}());\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            selection: {\r\n                mode: \"none\",\r\n                showCheckBoxesMode: \"onClick\",\r\n                allowSelectAll: true,\r\n                selectAllMode: \"allPages\",\r\n                maxFilterLengthInRequest: 1500,\r\n                deferred: false\r\n            },\r\n            selectionFilter: [],\r\n            selectedRowKeys: []\r\n        }\r\n    },\r\n    controllers: {\r\n        selection: SelectionController\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: {\r\n                init: function() {\r\n                    var selectionController = this.getController(\"selection\");\r\n                    var isDeferredMode = this.option(\"selection.deferred\");\r\n                    this.callBase.apply(this, arguments);\r\n                    if (isDeferredMode) {\r\n                        selectionController._updateCheckboxesState({\r\n                            isDeferredMode: true,\r\n                            selectionFilter: this.option(\"selectionFilter\")\r\n                        })\r\n                    }\r\n                },\r\n                _loadDataSource: function() {\r\n                    var that = this;\r\n                    return that.callBase().done(function() {\r\n                        that.getController(\"selection\").refresh()\r\n                    })\r\n                },\r\n                _processDataItem: function(item, options) {\r\n                    var that = this;\r\n                    var selectionController = that.getController(\"selection\");\r\n                    var hasSelectColumn = selectionController.isSelectColumnVisible();\r\n                    var isDeferredSelection = options.isDeferredSelection = void 0 === options.isDeferredSelection ? this.option(\"selection.deferred\") : options.isDeferredSelection;\r\n                    var dataItem = this.callBase.apply(this, arguments);\r\n                    dataItem.isSelected = selectionController.isRowSelected(isDeferredSelection ? dataItem.data : dataItem.key);\r\n                    if (hasSelectColumn && dataItem.values) {\r\n                        for (var i = 0; i < options.visibleColumns.length; i++) {\r\n                            if (\"select\" === options.visibleColumns[i].command) {\r\n                                dataItem.values[i] = dataItem.isSelected;\r\n                                break\r\n                            }\r\n                        }\r\n                    }\r\n                    return dataItem\r\n                },\r\n                refresh: function(options) {\r\n                    var that = this;\r\n                    var d = new _deferred.Deferred;\r\n                    this.callBase.apply(this, arguments).done(function() {\r\n                        if (!options || options.selection) {\r\n                            that.getController(\"selection\").refresh().done(d.resolve).fail(d.reject)\r\n                        } else {\r\n                            d.resolve()\r\n                        }\r\n                    }).fail(d.reject);\r\n                    return d.promise()\r\n                },\r\n                _handleDataChanged: function(e) {\r\n                    this.callBase.apply(this, arguments);\r\n                    if ((!e || \"refresh\" === e.changeType) && !this._repaintChangesOnly) {\r\n                        this.getController(\"selection\").focusedItemIndex(-1)\r\n                    }\r\n                },\r\n                _applyChange: function(change) {\r\n                    var _this = this;\r\n                    if (change && \"updateSelection\" === change.changeType) {\r\n                        change.items.forEach(function(item, index) {\r\n                            var currentItem = _this._items[index];\r\n                            if (currentItem) {\r\n                                currentItem.isSelected = item.isSelected;\r\n                                currentItem.values = item.values\r\n                            }\r\n                        });\r\n                        return\r\n                    }\r\n                    return this.callBase.apply(this, arguments)\r\n                },\r\n                _endUpdateCore: function() {\r\n                    var changes = this._changes;\r\n                    var isUpdateSelection = changes.length > 1 && changes.every(function(change) {\r\n                        return \"updateSelection\" === change.changeType\r\n                    });\r\n                    if (isUpdateSelection) {\r\n                        var itemIndexes = changes.map(function(change) {\r\n                            return change.itemIndexes || []\r\n                        }).reduce(function(a, b) {\r\n                            return a.concat(b)\r\n                        });\r\n                        this._changes = [{\r\n                            changeType: \"updateSelection\",\r\n                            itemIndexes: itemIndexes\r\n                        }]\r\n                    }\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                push: function(changes) {\r\n                    this.callBase.apply(this, arguments);\r\n                    var removedKeys = changes.filter(function(change) {\r\n                        return \"remove\" === change.type\r\n                    }).map(function(change) {\r\n                        return change.key\r\n                    });\r\n                    removedKeys.length && this.getController(\"selection\").deselectRows(removedKeys)\r\n                }\r\n            },\r\n            contextMenu: {\r\n                _contextMenuPrepared: function(options) {\r\n                    var dxEvent = options.event;\r\n                    if (dxEvent.originalEvent && \"dxhold\" !== dxEvent.originalEvent.type || options.items && options.items.length > 0) {\r\n                        return\r\n                    }\r\n                    processLongTap(this, dxEvent)\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            columnHeadersView: {\r\n                init: function() {\r\n                    var that = this;\r\n                    that.callBase();\r\n                    that.getController(\"selection\").selectionChanged.add(that._updateSelectAllValue.bind(that))\r\n                },\r\n                _updateSelectAllValue: function() {\r\n                    var that = this;\r\n                    var $element = that.element();\r\n                    var $editor = $element && $element.find(\".\" + SELECT_CHECKBOX_CLASS);\r\n                    if ($element && $editor.length && \"multiple\" === that.option(\"selection.mode\")) {\r\n                        $editor.dxCheckBox(\"instance\").option(\"value\", that.getController(\"selection\").isSelectAll())\r\n                    }\r\n                },\r\n                _handleDataChanged: function(e) {\r\n                    this.callBase(e);\r\n                    if (!e || \"refresh\" === e.changeType) {\r\n                        this._updateSelectAllValue()\r\n                    }\r\n                },\r\n                _renderSelectAllCheckBox: function($container, column) {\r\n                    var that = this;\r\n                    var selectionController = that.getController(\"selection\");\r\n                    var groupElement = (0, _renderer.default)(\"<div>\").appendTo($container).addClass(SELECT_CHECKBOX_CLASS);\r\n                    that.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaSelectAll\"), $container);\r\n                    that.getController(\"editorFactory\").createEditor(groupElement, (0, _extend.extend)({}, column, {\r\n                        parentType: \"headerRow\",\r\n                        dataType: \"boolean\",\r\n                        value: selectionController.isSelectAll(),\r\n                        editorOptions: {\r\n                            visible: that.option(\"selection.allowSelectAll\") || false !== selectionController.isSelectAll()\r\n                        },\r\n                        tabIndex: that.option(\"useLegacyKeyboardNavigation\") ? -1 : that.option(\"tabIndex\") || 0,\r\n                        setValue: function(value, e) {\r\n                            var allowSelectAll = that.option(\"selection.allowSelectAll\");\r\n                            e.component.option(\"visible\", allowSelectAll || false !== e.component.option(\"value\"));\r\n                            if (!e.event || selectionController.isSelectAll() === value) {\r\n                                return\r\n                            }\r\n                            if (e.value && !allowSelectAll) {\r\n                                e.component.option(\"value\", false)\r\n                            } else {\r\n                                e.value ? selectionController.selectAll() : selectionController.deselectAll()\r\n                            }\r\n                            e.event.preventDefault()\r\n                        }\r\n                    }));\r\n                    return groupElement\r\n                },\r\n                _attachSelectAllCheckBoxClickEvent: function($element) {\r\n                    _events_engine.default.on($element, _click.name, this.createAction(function(e) {\r\n                        var event = e.event;\r\n                        if (!(0, _renderer.default)(event.target).closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n                            _events_engine.default.trigger((0, _renderer.default)(event.currentTarget).children(\".\" + SELECT_CHECKBOX_CLASS), _click.name)\r\n                        }\r\n                        event.preventDefault()\r\n                    }))\r\n                }\r\n            },\r\n            rowsView: {\r\n                renderSelectCheckBoxContainer: function($container, options) {\r\n                    if (\"data\" === options.rowType && !options.row.isNewRow) {\r\n                        $container.addClass(EDITOR_CELL_CLASS);\r\n                        this._attachCheckBoxClickEvent($container);\r\n                        this.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaSelectRow\"), $container);\r\n                        this._renderSelectCheckBox($container, options)\r\n                    } else {\r\n                        _uiGrid_core.default.setEmptyText($container)\r\n                    }\r\n                },\r\n                _renderSelectCheckBox: function(container, options) {\r\n                    var groupElement = (0, _renderer.default)(\"<div>\").addClass(SELECT_CHECKBOX_CLASS).appendTo(container);\r\n                    this.getController(\"editorFactory\").createEditor(groupElement, (0, _extend.extend)({}, options.column, {\r\n                        parentType: \"dataRow\",\r\n                        dataType: \"boolean\",\r\n                        lookup: null,\r\n                        value: options.value,\r\n                        setValue: function(value, e) {\r\n                            var _e$event;\r\n                            if (\"keydown\" === (null === e || void 0 === e ? void 0 : null === (_e$event = e.event) || void 0 === _e$event ? void 0 : _e$event.type)) {\r\n                                _events_engine.default.trigger(e.element, _click.name, e)\r\n                            }\r\n                        },\r\n                        row: options.row\r\n                    }));\r\n                    return groupElement\r\n                },\r\n                _attachCheckBoxClickEvent: function($element) {\r\n                    _events_engine.default.on($element, _click.name, this.createAction(function(e) {\r\n                        var selectionController = this.getController(\"selection\");\r\n                        var event = e.event;\r\n                        var rowIndex = this.getRowIndex((0, _renderer.default)(event.currentTarget).closest(\".\" + ROW_CLASS));\r\n                        if (rowIndex >= 0) {\r\n                            selectionController.startSelectionWithCheckboxes();\r\n                            selectionController.changeItemSelection(rowIndex, {\r\n                                shift: event.shiftKey\r\n                            });\r\n                            if ((0, _renderer.default)(event.target).closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n                                this.getController(\"data\").updateItems({\r\n                                    changeType: \"updateSelection\",\r\n                                    itemIndexes: [rowIndex]\r\n                                })\r\n                            }\r\n                        }\r\n                    }))\r\n                },\r\n                _update: function(change) {\r\n                    var that = this;\r\n                    var tableElements = that.getTableElements();\r\n                    if (\"updateSelection\" === change.changeType) {\r\n                        if (tableElements.length > 0) {\r\n                            (0, _iterator.each)(tableElements, function(_, tableElement) {\r\n                                (0, _iterator.each)(change.itemIndexes || [], function(_, index) {\r\n                                    var $row;\r\n                                    if (change.items[index]) {\r\n                                        $row = that._getRowElements((0, _renderer.default)(tableElement)).eq(index);\r\n                                        if ($row.length) {\r\n                                            var isSelected = change.items[index].isSelected;\r\n                                            $row.toggleClass(ROW_SELECTION_CLASS, void 0 === isSelected ? false : isSelected).find(\".\" + SELECT_CHECKBOX_CLASS).dxCheckBox(\"option\", \"value\", isSelected);\r\n                                            that.setAria(\"selected\", isSelected, $row)\r\n                                        }\r\n                                    }\r\n                                })\r\n                            });\r\n                            that._updateCheckboxesClass()\r\n                        }\r\n                    } else {\r\n                        that.callBase(change)\r\n                    }\r\n                },\r\n                _createTable: function() {\r\n                    var that = this;\r\n                    var selectionMode = that.option(\"selection.mode\");\r\n                    var $table = that.callBase.apply(that, arguments);\r\n                    if (\"none\" !== selectionMode) {\r\n                        if (\"onLongTap\" === that.option(SHOW_CHECKBOXES_MODE) || !_support.touch) {\r\n                            _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, \"dxDataGridRowsView\"), \".\" + DATA_ROW_CLASS, that.createAction(function(e) {\r\n                                processLongTap(that.component, e.event);\r\n                                e.event.stopPropagation()\r\n                            }))\r\n                        }\r\n                        _events_engine.default.on($table, \"mousedown selectstart\", that.createAction(function(e) {\r\n                            var event = e.event;\r\n                            if (event.shiftKey) {\r\n                                event.preventDefault()\r\n                            }\r\n                        }))\r\n                    }\r\n                    return $table\r\n                },\r\n                _createRow: function(row) {\r\n                    var $row = this.callBase(row);\r\n                    if (row) {\r\n                        var isSelected = !!row.isSelected;\r\n                        if (isSelected) {\r\n                            $row.addClass(ROW_SELECTION_CLASS)\r\n                        }\r\n                        this.setAria(\"selected\", isSelected, $row)\r\n                    }\r\n                    return $row\r\n                },\r\n                _rowClick: function(e) {\r\n                    var that = this;\r\n                    var dxEvent = e.event;\r\n                    var isSelectionDisabled = (0, _renderer.default)(dxEvent.target).closest(\".\" + SELECTION_DISABLED_CLASS).length;\r\n                    if (!that.isClickableElement((0, _renderer.default)(dxEvent.target))) {\r\n                        if (!isSelectionDisabled && (\"multiple\" !== that.option(SELECTION_MODE) || \"always\" !== that.option(SHOW_CHECKBOXES_MODE))) {\r\n                            if (that.getController(\"selection\").changeItemSelection(e.rowIndex, {\r\n                                    control: dxEvent.ctrlKey || dxEvent.metaKey,\r\n                                    shift: dxEvent.shiftKey\r\n                                })) {\r\n                                dxEvent.preventDefault();\r\n                                e.handled = true\r\n                            }\r\n                        }\r\n                        that.callBase(e)\r\n                    }\r\n                },\r\n                isClickableElement: function($target) {\r\n                    var isCommandSelect = $target.closest(\".\" + COMMAND_SELECT_CLASS).length;\r\n                    return !!isCommandSelect\r\n                },\r\n                _renderCore: function(change) {\r\n                    this.callBase(change);\r\n                    this._updateCheckboxesClass()\r\n                },\r\n                _updateCheckboxesClass: function() {\r\n                    var tableElements = this.getTableElements();\r\n                    var selectionController = this.getController(\"selection\");\r\n                    var isCheckBoxesHidden = selectionController.isSelectColumnVisible() && !selectionController.isSelectionWithCheckboxes();\r\n                    (0, _iterator.each)(tableElements, function(_, tableElement) {\r\n                        (0, _renderer.default)(tableElement).toggleClass(CHECKBOXES_HIDDEN_CLASS, isCheckBoxesHidden)\r\n                    })\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/translator1d.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Translator1D = Translator1D;\r\nvar _Number = Number;\r\n\r\nfunction Translator1D() {\r\n    this.setDomain(arguments[0], arguments[1]).setCodomain(arguments[2], arguments[3]).setInverted(false)\r\n}\r\nTranslator1D.prototype = {\r\n    constructor: Translator1D,\r\n    setDomain: function(domain1, domain2) {\r\n        var that = this;\r\n        that._domain1 = _Number(domain1);\r\n        that._domain2 = _Number(domain2);\r\n        that._domainDelta = that._domain2 - that._domain1;\r\n        return that\r\n    },\r\n    setCodomain: function(codomain1, codomain2) {\r\n        var that = this;\r\n        that._codomain1 = _Number(codomain1);\r\n        that._codomain2 = _Number(codomain2);\r\n        that._codomainDelta = that._codomain2 - that._codomain1;\r\n        return that\r\n    },\r\n    setInverted: function(state) {\r\n        this.inverted = state\r\n    },\r\n    getDomain: function() {\r\n        return [this._domain1, this._domain2]\r\n    },\r\n    getCodomain: function() {\r\n        return [this._codomain1, this._codomain2]\r\n    },\r\n    getDomainStart: function() {\r\n        return this._domain1\r\n    },\r\n    getDomainEnd: function() {\r\n        return this._domain2\r\n    },\r\n    getCodomainStart: function() {\r\n        return this._codomain1\r\n    },\r\n    getCodomainEnd: function() {\r\n        return this._codomain2\r\n    },\r\n    getDomainRange: function() {\r\n        return this._domainDelta\r\n    },\r\n    getCodomainRange: function() {\r\n        return this._codomainDelta\r\n    },\r\n    translate: function(value) {\r\n        var ratio = (_Number(value) - this._domain1) / this._domainDelta;\r\n        this.inverted && (ratio = 1 - ratio);\r\n        return 0 <= ratio && ratio <= 1 ? this._codomain1 + ratio * this._codomainDelta : NaN\r\n    },\r\n    adjust: function(value) {\r\n        var ratio = (_Number(value) - this._domain1) / this._domainDelta;\r\n        var result = NaN;\r\n        if (ratio < 0) {\r\n            result = this._domain1\r\n        } else {\r\n            if (ratio > 1) {\r\n                result = this._domain2\r\n            } else {\r\n                if (0 <= ratio && ratio <= 1) {\r\n                    result = _Number(value)\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (core/utils/dom.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createTextElementHiddenCopy = exports.contains = exports.clipboardText = exports.normalizeTemplateElement = exports.extractTemplateMarkup = exports.closestCommonParent = exports.clearSelection = exports.resetActiveElement = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"./type\");\r\nvar _window = require(\"./window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar resetActiveElement = function() {\r\n    var activeElement = _dom_adapter.default.getActiveElement();\r\n    var body = _dom_adapter.default.getBody();\r\n    if (activeElement && activeElement !== body && activeElement.blur) {\r\n        try {\r\n            activeElement.blur()\r\n        } catch (e) {\r\n            body.blur()\r\n        }\r\n    }\r\n};\r\nexports.resetActiveElement = resetActiveElement;\r\nvar clearSelection = function() {\r\n    var selection = window.getSelection();\r\n    if (!selection) {\r\n        return\r\n    }\r\n    if (\"Caret\" === selection.type) {\r\n        return\r\n    }\r\n    if (selection.empty) {\r\n        selection.empty()\r\n    } else {\r\n        if (selection.removeAllRanges) {\r\n            try {\r\n                selection.removeAllRanges()\r\n            } catch (e) {}\r\n        }\r\n    }\r\n};\r\nexports.clearSelection = clearSelection;\r\nvar closestCommonParent = function(startTarget, endTarget) {\r\n    var $startTarget = (0, _renderer.default)(startTarget);\r\n    var $endTarget = (0, _renderer.default)(endTarget);\r\n    if ($startTarget[0] === $endTarget[0]) {\r\n        return $startTarget[0]\r\n    }\r\n    var $startParents = $startTarget.parents();\r\n    var $endParents = $endTarget.parents();\r\n    var startingParent = Math.min($startParents.length, $endParents.length);\r\n    for (var i = -startingParent; i < 0; i++) {\r\n        if ($startParents.get(i) === $endParents.get(i)) {\r\n            return $startParents.get(i)\r\n        }\r\n    }\r\n};\r\nexports.closestCommonParent = closestCommonParent;\r\nvar extractTemplateMarkup = function(element) {\r\n    element = (0, _renderer.default)(element);\r\n    var templateTag = element.length && element.filter(function() {\r\n        var $node = (0, _renderer.default)(this);\r\n        return $node.is(\"script[type]\") && $node.attr(\"type\").indexOf(\"script\") < 0\r\n    });\r\n    if (templateTag.length) {\r\n        return templateTag.eq(0).html()\r\n    } else {\r\n        element = (0, _renderer.default)(\"<div>\").append(element);\r\n        return element.html()\r\n    }\r\n};\r\nexports.extractTemplateMarkup = extractTemplateMarkup;\r\nvar normalizeTemplateElement = function normalizeTemplateElement(element) {\r\n    var $element = (0, _type.isDefined)(element) && (element.nodeType || (0, _type.isRenderer)(element)) ? (0, _renderer.default)(element) : (0, _renderer.default)(\"<div>\").html(element).contents();\r\n    if (1 === $element.length) {\r\n        if ($element.is(\"script\")) {\r\n            $element = normalizeTemplateElement($element.html().trim())\r\n        } else {\r\n            if ($element.is(\"table\")) {\r\n                $element = $element.children(\"tbody\").contents()\r\n            }\r\n        }\r\n    }\r\n    return $element\r\n};\r\nexports.normalizeTemplateElement = normalizeTemplateElement;\r\nvar clipboardText = function(event, text) {\r\n    var clipboard = event.originalEvent && event.originalEvent.clipboardData || window.clipboardData;\r\n    if (1 === arguments.length) {\r\n        return clipboard && clipboard.getData(\"Text\")\r\n    }\r\n    clipboard && clipboard.setData(\"Text\", text)\r\n};\r\nexports.clipboardText = clipboardText;\r\nvar contains = function contains(container, element) {\r\n    if (!element) {\r\n        return false\r\n    }\r\n    if (_dom_adapter.default.isTextNode(element)) {\r\n        element = element.parentNode\r\n    }\r\n    if (_dom_adapter.default.isDocument(container)) {\r\n        return container.documentElement.contains(element)\r\n    }\r\n    if ((0, _type.isWindow)(container)) {\r\n        return contains(container.document, element)\r\n    }\r\n    return container.contains ? container.contains(element) : !!(element.compareDocumentPosition(container) & element.DOCUMENT_POSITION_CONTAINS)\r\n};\r\nexports.contains = contains;\r\nvar createTextElementHiddenCopy = function(element, text, options) {\r\n    var elementStyles = window.getComputedStyle((0, _renderer.default)(element).get(0));\r\n    var includePaddings = options && options.includePaddings;\r\n    return (0, _renderer.default)(\"<div>\").text(text).css({\r\n        fontStyle: elementStyles.fontStyle,\r\n        fontVariant: elementStyles.fontVariant,\r\n        fontWeight: elementStyles.fontWeight,\r\n        fontSize: elementStyles.fontSize,\r\n        fontFamily: elementStyles.fontFamily,\r\n        letterSpacing: elementStyles.letterSpacing,\r\n        border: elementStyles.border,\r\n        paddingTop: includePaddings ? elementStyles.paddingTop : \"\",\r\n        paddingRight: includePaddings ? elementStyles.paddingRight : \"\",\r\n        paddingBottom: includePaddings ? elementStyles.paddingBottom : \"\",\r\n        paddingLeft: includePaddings ? elementStyles.paddingLeft : \"\",\r\n        visibility: \"hidden\",\r\n        whiteSpace: \"pre\",\r\n        position: \"absolute\",\r\n        \"float\": \"left\"\r\n    })\r\n};\r\nexports.createTextElementHiddenCopy = createTextElementHiddenCopy;\r\n","/**\r\n * DevExtreme (core/templates/template_engines.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _dom = require(\"../utils/dom\");\r\nvar _template_engine_registry = require(\"./template_engine_registry\");\r\n(0, _template_engine_registry.registerTemplateEngine)(\"jquery-tmpl\", {\r\n    compile: function(element) {\r\n        return (0, _dom.extractTemplateMarkup)(element)\r\n    },\r\n    render: function(template, data) {\r\n        return jQuery.tmpl(template, data)\r\n    }\r\n});\r\n(0, _template_engine_registry.registerTemplateEngine)(\"jsrender\", {\r\n    compile: function(element) {\r\n        return (jQuery ? jQuery : jsrender).templates((0, _dom.extractTemplateMarkup)(element))\r\n    },\r\n    render: function(template, data) {\r\n        return template.render(data)\r\n    }\r\n});\r\n(0, _template_engine_registry.registerTemplateEngine)(\"mustache\", {\r\n    compile: function(element) {\r\n        return (0, _dom.extractTemplateMarkup)(element)\r\n    },\r\n    render: function(template, data) {\r\n        return Mustache.render(template, data)\r\n    }\r\n});\r\n(0, _template_engine_registry.registerTemplateEngine)(\"hogan\", {\r\n    compile: function(element) {\r\n        return Hogan.compile((0, _dom.extractTemplateMarkup)(element))\r\n    },\r\n    render: function(template, data) {\r\n        return template.render(data)\r\n    }\r\n});\r\n(0, _template_engine_registry.registerTemplateEngine)(\"underscore\", {\r\n    compile: function(element) {\r\n        return _.template((0, _dom.extractTemplateMarkup)(element))\r\n    },\r\n    render: function(template, data) {\r\n        return template(data)\r\n    }\r\n});\r\n(0, _template_engine_registry.registerTemplateEngine)(\"handlebars\", {\r\n    compile: function(element) {\r\n        return Handlebars.compile((0, _dom.extractTemplateMarkup)(element))\r\n    },\r\n    render: function(template, data) {\r\n        return template(data)\r\n    }\r\n});\r\n(0, _template_engine_registry.registerTemplateEngine)(\"doT\", {\r\n    compile: function(element) {\r\n        return doT.template((0, _dom.extractTemplateMarkup)(element))\r\n    },\r\n    render: function(template, data) {\r\n        return template(data)\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (viz/series/bar_series.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.polar = exports.chart = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar scatterSeries = _interopRequireWildcard(require(\"./scatter_series\"));\r\nvar _area_series = require(\"./area_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\nvar areaSeries = _area_series.chart.area;\r\nvar chartSeries = scatterSeries.chart;\r\nvar polarSeries = scatterSeries.polar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nvar baseBarSeriesMethods = {\r\n    _createLegendState: function(styleOptions, defaultColor) {\r\n        return {\r\n            fill: styleOptions.color || defaultColor,\r\n            hatching: styleOptions.hatching\r\n        }\r\n    },\r\n    _parsePointStyle: function(style, defaultColor, defaultBorderColor) {\r\n        var color = style.color || defaultColor;\r\n        var base = chartSeries._parsePointStyle.call(this, style, color, defaultBorderColor);\r\n        base.fill = color;\r\n        base.hatching = style.hatching;\r\n        base.dashStyle = style.border && style.border.dashStyle || \"solid\";\r\n        delete base.r;\r\n        return base\r\n    },\r\n    _applyMarkerClipRect: function(settings) {\r\n        settings[\"clip-path\"] = null\r\n    },\r\n    _setGroupsSettings: function(animationEnabled, firstDrawing) {\r\n        var that = this;\r\n        var settings = {};\r\n        chartSeries._setGroupsSettings.apply(that, arguments);\r\n        if (animationEnabled && firstDrawing) {\r\n            settings = this._getAffineCoordOptions()\r\n        } else {\r\n            if (!animationEnabled) {\r\n                settings = {\r\n                    scaleX: 1,\r\n                    scaleY: 1,\r\n                    translateX: 0,\r\n                    translateY: 0\r\n                }\r\n            }\r\n        }\r\n        that._markersGroup.attr(settings)\r\n    },\r\n    _drawPoint: function(options) {\r\n        options.hasAnimation = options.hasAnimation && !options.firstDrawing;\r\n        options.firstDrawing = false;\r\n        chartSeries._drawPoint.call(this, options)\r\n    },\r\n    _getMainColor: function() {\r\n        return this._options.mainSeriesColor\r\n    },\r\n    _createPointStyles: function(pointOptions) {\r\n        var that = this;\r\n        var mainColor = pointOptions.color || that._getMainColor();\r\n        return {\r\n            normal: that._parsePointStyle(pointOptions, mainColor, mainColor),\r\n            hover: that._parsePointStyle(pointOptions.hoverStyle || {}, mainColor, mainColor),\r\n            selection: that._parsePointStyle(pointOptions.selectionStyle || {}, mainColor, mainColor)\r\n        }\r\n    },\r\n    _updatePointsVisibility: function() {\r\n        var visibility = this._options.visible;\r\n        (0, _iterator.each)(this._points, function(_, point) {\r\n            point._options.visible = visibility\r\n        })\r\n    },\r\n    _getOptionsForPoint: function() {\r\n        return this._options\r\n    },\r\n    _animate: function(firstDrawing) {\r\n        var that = this;\r\n        var complete = function() {\r\n            that._animateComplete()\r\n        };\r\n        var animateFunc = function(drawnPoints, complete) {\r\n            var lastPointIndex = drawnPoints.length - 1;\r\n            _each(drawnPoints || [], function(i, point) {\r\n                point.animate(i === lastPointIndex ? complete : void 0, point.getMarkerCoords())\r\n            })\r\n        };\r\n        that._animatePoints(firstDrawing, complete, animateFunc)\r\n    },\r\n    getValueRangeInitialValue: areaSeries.getValueRangeInitialValue,\r\n    _patchMarginOptions: function(options) {\r\n        options.checkInterval = true;\r\n        return options\r\n    },\r\n    _defaultAggregator: \"sum\",\r\n    _defineDrawingState: function() {},\r\n    usePointsToDefineAutoHiding: function() {\r\n        return false\r\n    }\r\n};\r\nchart.bar = _extend({}, chartSeries, baseBarSeriesMethods, {\r\n    _getAffineCoordOptions: function() {\r\n        var rotated = this._options.rotated;\r\n        var direction = rotated ? \"X\" : \"Y\";\r\n        var settings = {\r\n            scaleX: rotated ? .001 : 1,\r\n            scaleY: rotated ? 1 : .001\r\n        };\r\n        settings[\"translate\" + direction] = this.getValueAxis().getTranslator().translate(\"canvas_position_default\");\r\n        return settings\r\n    },\r\n    _animatePoints: function(firstDrawing, complete, animateFunc) {\r\n        var that = this;\r\n        that._markersGroup.animate({\r\n            scaleX: 1,\r\n            scaleY: 1,\r\n            translateY: 0,\r\n            translateX: 0\r\n        }, void 0, complete);\r\n        if (!firstDrawing) {\r\n            animateFunc(that._drawnPoints, complete)\r\n        }\r\n    },\r\n    checkSeriesViewportCoord: function(axis, coord) {\r\n        if (0 === this._points.length) {\r\n            return false\r\n        }\r\n        if (axis.isArgumentAxis) {\r\n            return true\r\n        }\r\n        var translator = axis.getTranslator();\r\n        var range = this.getViewport();\r\n        var min = translator.translate(range.categories ? range.categories[0] : range.min);\r\n        var max = translator.translate(range.categories ? range.categories[range.categories.length - 1] : range.max);\r\n        var rotated = this.getOptions().rotated;\r\n        var inverted = axis.getOptions().inverted;\r\n        return rotated && !inverted || !rotated && inverted ? coord >= min && coord <= max : coord >= max && coord <= min\r\n    },\r\n    getSeriesPairCoord: function(coord, isArgument) {\r\n        var oppositeCoord = null;\r\n        var rotated = this._options.rotated;\r\n        var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n        var coordName = isOpposite ? \"vy\" : \"vx\";\r\n        var oppositeCoordName = isOpposite ? \"vx\" : \"vy\";\r\n        var points = this.getPoints();\r\n        for (var i = 0; i < points.length; i++) {\r\n            var p = points[i];\r\n            var tmpCoord = void 0;\r\n            if (isArgument) {\r\n                tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0\r\n            } else {\r\n                tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0\r\n            }\r\n            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n                oppositeCoord = tmpCoord;\r\n                break\r\n            }\r\n        }\r\n        return oppositeCoord\r\n    }\r\n});\r\npolar.bar = _extend({}, polarSeries, baseBarSeriesMethods, {\r\n    _animatePoints: function(firstDrawing, complete, animateFunc) {\r\n        animateFunc(this._drawnPoints, complete)\r\n    },\r\n    _setGroupsSettings: chartSeries._setGroupsSettings,\r\n    _drawPoint: function(point, groups, animationEnabled) {\r\n        chartSeries._drawPoint.call(this, point, groups, animationEnabled)\r\n    },\r\n    _parsePointStyle: function(style) {\r\n        var base = baseBarSeriesMethods._parsePointStyle.apply(this, arguments);\r\n        base.opacity = style.opacity;\r\n        return base\r\n    },\r\n    _createGroups: chartSeries._createGroups,\r\n    _setMarkerGroupSettings: function() {\r\n        var that = this;\r\n        var markersSettings = that._createPointStyles(that._getMarkerGroupOptions()).normal;\r\n        markersSettings.class = \"dxc-markers\";\r\n        that._applyMarkerClipRect(markersSettings);\r\n        var groupSettings = _extend({}, markersSettings);\r\n        delete groupSettings.opacity;\r\n        that._markersGroup.attr(groupSettings)\r\n    },\r\n    getSeriesPairCoord: function(params, isArgument) {\r\n        var coords = null;\r\n        var paramName = isArgument ? \"argument\" : \"radius\";\r\n        var points = this.getVisiblePoints();\r\n        var argAxis = this.getArgumentAxis();\r\n        var startAngle = argAxis.getAngles()[0];\r\n        for (var i = 0; i < points.length; i++) {\r\n            var p = points[i];\r\n            var tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, -argAxis.getTranslatedAngle(p.angle), p.radius) : void 0;\r\n            if ((0, _type.isDefined)(tmpPoint)) {\r\n                coords = tmpPoint;\r\n                break\r\n            }\r\n        }\r\n        return coords\r\n    },\r\n    _createLegendState: areaSeries._createLegendState\r\n});\r\n","/**\r\n * DevExtreme (exporter/excel/excel.color_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar colorHelper = {\r\n    _tryConvertColor: function(source) {\r\n        if (\"string\" !== typeof source) {\r\n            return source\r\n        }\r\n        var result;\r\n        if (source.length > 0 && \"#\" === source[0]) {\r\n            var colorCode = source.substr(1, source.length);\r\n            if (6 === colorCode.length) {\r\n                result = \"FF\" + colorCode\r\n            } else {\r\n                if (8 === colorCode.length) {\r\n                    result = colorCode[6] + colorCode[7] + colorCode.substr(0, 6)\r\n                } else {\r\n                    result = colorCode\r\n                }\r\n            }\r\n        } else {\r\n            result = source\r\n        }\r\n        return result\r\n    },\r\n    tryCreateTag: function(sourceObj) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(sourceObj)) {\r\n            if (\"string\" === typeof sourceObj) {\r\n                result = {\r\n                    rgb: this._tryConvertColor(sourceObj)\r\n                }\r\n            } else {\r\n                result = {\r\n                    rgb: this._tryConvertColor(sourceObj.rgb),\r\n                    theme: sourceObj.theme\r\n                }\r\n            }\r\n            if (colorHelper.isEmpty(result)) {\r\n                result = null\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    copy: function(source) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(source)) {\r\n            if (\"string\" === typeof source) {\r\n                result = source\r\n            } else {\r\n                result = {};\r\n                if (void 0 !== source.rgb) {\r\n                    result.rgb = source.rgb\r\n                }\r\n                if (void 0 !== source.theme) {\r\n                    result.theme = source.theme\r\n                }\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    isEmpty: function(tag) {\r\n        return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.rgb) && !(0, _type.isDefined)(tag.theme)\r\n    },\r\n    areEqual: function(leftTag, rightTag) {\r\n        return colorHelper.isEmpty(leftTag) && colorHelper.isEmpty(rightTag) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.rgb === rightTag.rgb && leftTag.theme === rightTag.theme\r\n    },\r\n    toXml: function(tagName, tag) {\r\n        return _excel.default.toXml(tagName, {\r\n            rgb: tag.rgb,\r\n            theme: tag.theme\r\n        })\r\n    }\r\n};\r\nvar _default = colorHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/candlestick_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar DEFAULT_FINANCIAL_TRACKER_MARGIN = 2;\r\nvar _default = (0, _extend2.extend)({}, _bar_point.default, {\r\n    _getContinuousPoints: function(openCoord, closeCoord) {\r\n        var that = this;\r\n        var x = that.x;\r\n        var createPoint = that._options.rotated ? function(x, y) {\r\n            return [y, x]\r\n        } : function(x, y) {\r\n            return [x, y]\r\n        };\r\n        var width = that.width;\r\n        var highCoord = that.highY;\r\n        var max = _abs(highCoord - openCoord) < _abs(highCoord - closeCoord) ? openCoord : closeCoord;\r\n        var min = max === closeCoord ? openCoord : closeCoord;\r\n        var points;\r\n        if (min === max) {\r\n            points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, that.lowY)).concat(createPoint(x, that.closeY)).concat(createPoint(x - width / 2, that.closeY)).concat(createPoint(x + width / 2, that.closeY)).concat(createPoint(x, that.closeY))\r\n        } else {\r\n            points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, max)).concat(createPoint(x + width / 2, max)).concat(createPoint(x + width / 2, min)).concat(createPoint(x, min)).concat(createPoint(x, that.lowY)).concat(createPoint(x, min)).concat(createPoint(x - width / 2, min)).concat(createPoint(x - width / 2, max)).concat(createPoint(x, max))\r\n        }\r\n        return points\r\n    },\r\n    _getCrockPoints: function(y) {\r\n        var that = this;\r\n        var x = that.x;\r\n        var createPoint = that._options.rotated ? function(x, y) {\r\n            return [y, x]\r\n        } : function(x, y) {\r\n            return [x, y]\r\n        };\r\n        return [].concat(createPoint(x, that.highY)).concat(createPoint(x, that.lowY)).concat(createPoint(x, y)).concat(createPoint(x - that.width / 2, y)).concat(createPoint(x + that.width / 2, y)).concat(createPoint(x, y))\r\n    },\r\n    _getPoints: function() {\r\n        var that = this;\r\n        var points;\r\n        var closeCoord = that.closeY;\r\n        var openCoord = that.openY;\r\n        if (null !== closeCoord && null !== openCoord) {\r\n            points = that._getContinuousPoints(openCoord, closeCoord)\r\n        } else {\r\n            if (openCoord === closeCoord) {\r\n                points = [that.x, that.highY, that.x, that.lowY]\r\n            } else {\r\n                points = that._getCrockPoints(null !== openCoord ? openCoord : closeCoord)\r\n            }\r\n        }\r\n        return points\r\n    },\r\n    getColor: function() {\r\n        var that = this;\r\n        return that._isReduction ? that._options.reduction.color : that._styles.normal.stroke || that.series.getColor()\r\n    },\r\n    _drawMarkerInGroup: function(group, attributes, renderer) {\r\n        var that = this;\r\n        that.graphic = renderer.path(that._getPoints(), \"area\").attr({\r\n            \"stroke-linecap\": \"square\"\r\n        }).attr(attributes).data({\r\n            \"chart-data-point\": that\r\n        }).sharp().append(group)\r\n    },\r\n    _fillStyle: function() {\r\n        var that = this;\r\n        var styles = that._options.styles;\r\n        if (that._isReduction && that._isPositive) {\r\n            that._styles = styles.reductionPositive\r\n        } else {\r\n            if (that._isReduction) {\r\n                that._styles = styles.reduction\r\n            } else {\r\n                if (that._isPositive) {\r\n                    that._styles = styles.positive\r\n                } else {\r\n                    that._styles = styles\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _getMinTrackerWidth: function() {\r\n        return 2 + 2 * this._styles.normal[\"stroke-width\"]\r\n    },\r\n    correctCoordinates: function(correctOptions) {\r\n        var minWidth = this._getMinTrackerWidth();\r\n        var maxWidth = 10;\r\n        var width = correctOptions.width;\r\n        width = width < minWidth ? minWidth : width > maxWidth ? maxWidth : width;\r\n        this.width = width + width % 2;\r\n        this.xCorrection = correctOptions.offset\r\n    },\r\n    _getMarkerGroup: function(group) {\r\n        var that = this;\r\n        var markerGroup;\r\n        if (that._isReduction && that._isPositive) {\r\n            markerGroup = group.reductionPositiveMarkersGroup\r\n        } else {\r\n            if (that._isReduction) {\r\n                markerGroup = group.reductionMarkersGroup\r\n            } else {\r\n                if (that._isPositive) {\r\n                    markerGroup = group.defaultPositiveMarkersGroup\r\n                } else {\r\n                    markerGroup = group.defaultMarkersGroup\r\n                }\r\n            }\r\n        }\r\n        return markerGroup\r\n    },\r\n    _drawMarker: function(renderer, group) {\r\n        this._drawMarkerInGroup(this._getMarkerGroup(group), this._getStyle(), renderer)\r\n    },\r\n    _getSettingsForTracker: function() {\r\n        var that = this;\r\n        var highY = that.highY;\r\n        var lowY = that.lowY;\r\n        var rotated = that._options.rotated;\r\n        var x;\r\n        var y;\r\n        var width;\r\n        var height;\r\n        if (highY === lowY) {\r\n            highY = rotated ? highY + DEFAULT_FINANCIAL_TRACKER_MARGIN : highY - DEFAULT_FINANCIAL_TRACKER_MARGIN;\r\n            lowY = rotated ? lowY - DEFAULT_FINANCIAL_TRACKER_MARGIN : lowY + DEFAULT_FINANCIAL_TRACKER_MARGIN\r\n        }\r\n        if (rotated) {\r\n            x = _min(lowY, highY);\r\n            y = that.x - that.width / 2;\r\n            width = _abs(lowY - highY);\r\n            height = that.width\r\n        } else {\r\n            x = that.x - that.width / 2;\r\n            y = _min(lowY, highY);\r\n            width = that.width;\r\n            height = _abs(lowY - highY)\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y,\r\n            width: width,\r\n            height: height\r\n        }\r\n    },\r\n    _getGraphicBBox: function(location) {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        var x = that.x;\r\n        var width = that.width;\r\n        var lowY = that.lowY;\r\n        var highY = that.highY;\r\n        if (location) {\r\n            var valVisibleArea = that.series.getValueAxis().getVisibleArea();\r\n            highY = that._truncateCoord(highY, valVisibleArea);\r\n            lowY = that._truncateCoord(lowY, valVisibleArea)\r\n        }\r\n        var bBox = {\r\n            x: !rotated ? x - _round(width / 2) : lowY,\r\n            y: !rotated ? highY : x - _round(width / 2),\r\n            width: !rotated ? width : highY - lowY,\r\n            height: !rotated ? lowY - highY : width\r\n        };\r\n        if (location) {\r\n            var isTop = \"top\" === location;\r\n            if (!this._options.rotated) {\r\n                bBox.y = isTop ? bBox.y : bBox.y + bBox.height;\r\n                bBox.height = 0\r\n            } else {\r\n                bBox.x = isTop ? bBox.x + bBox.width : bBox.x;\r\n                bBox.width = 0\r\n            }\r\n        }\r\n        return bBox\r\n    },\r\n    getTooltipParams: function(location) {\r\n        var that = this;\r\n        if (that.graphic) {\r\n            var minValue = _min(that.lowY, that.highY);\r\n            var maxValue = _max(that.lowY, that.highY);\r\n            var visibleArea = that._getVisibleArea();\r\n            var rotated = that._options.rotated;\r\n            var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n            var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n            var min = _max(minVisible, minValue);\r\n            var max = _min(maxVisible, maxValue);\r\n            var centerCoord = that.getCenterCoord();\r\n            if (\"edge\" === location) {\r\n                centerCoord[rotated ? \"x\" : \"y\"] = rotated ? max : min\r\n            }\r\n            centerCoord.offset = 0;\r\n            return centerCoord\r\n        }\r\n    },\r\n    getCenterCoord: function() {\r\n        if (this.graphic) {\r\n            var that = this;\r\n            var x;\r\n            var y;\r\n            var minValue = _min(that.lowY, that.highY);\r\n            var maxValue = _max(that.lowY, that.highY);\r\n            var visibleArea = that._getVisibleArea();\r\n            var rotated = that._options.rotated;\r\n            var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n            var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n            var min = _max(minVisible, minValue);\r\n            var max = _min(maxVisible, maxValue);\r\n            var center = min + (max - min) / 2;\r\n            if (rotated) {\r\n                y = that.x;\r\n                x = center\r\n            } else {\r\n                x = that.x;\r\n                y = center\r\n            }\r\n            return {\r\n                x: x,\r\n                y: y\r\n            }\r\n        }\r\n    },\r\n    hasValue: function() {\r\n        return null !== this.highValue && null !== this.lowValue\r\n    },\r\n    hasCoords: function() {\r\n        return null !== this.x && null !== this.lowY && null !== this.highY\r\n    },\r\n    _translate: function() {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        var valTranslator = that._getValTranslator();\r\n        var x = that._getArgTranslator().translate(that.argument);\r\n        that.vx = that.vy = that.x = null === x ? x : x + (that.xCorrection || 0);\r\n        that.openY = null !== that.openValue ? valTranslator.translate(that.openValue) : null;\r\n        that.highY = valTranslator.translate(that.highValue);\r\n        that.lowY = valTranslator.translate(that.lowValue);\r\n        that.closeY = null !== that.closeValue ? valTranslator.translate(that.closeValue) : null;\r\n        var centerValue = _min(that.lowY, that.highY) + _abs(that.lowY - that.highY) / 2;\r\n        that._calculateVisibility(!rotated ? that.x : centerValue, !rotated ? centerValue : that.x)\r\n    },\r\n    getCrosshairData: function(x, y) {\r\n        var that = this;\r\n        var rotated = that._options.rotated;\r\n        var origY = rotated ? x : y;\r\n        var yValue;\r\n        var argument = that.argument;\r\n        var coords;\r\n        var coord = \"low\";\r\n        if (_abs(that.lowY - origY) < _abs(that.closeY - origY)) {\r\n            yValue = that.lowY\r\n        } else {\r\n            yValue = that.closeY;\r\n            coord = \"close\"\r\n        }\r\n        if (_abs(yValue - origY) >= _abs(that.openY - origY)) {\r\n            yValue = that.openY;\r\n            coord = \"open\"\r\n        }\r\n        if (_abs(yValue - origY) >= _abs(that.highY - origY)) {\r\n            yValue = that.highY;\r\n            coord = \"high\"\r\n        }\r\n        if (rotated) {\r\n            coords = {\r\n                y: that.vy,\r\n                x: yValue,\r\n                xValue: that[coord + \"Value\"],\r\n                yValue: argument\r\n            }\r\n        } else {\r\n            coords = {\r\n                x: that.vx,\r\n                y: yValue,\r\n                xValue: argument,\r\n                yValue: that[coord + \"Value\"]\r\n            }\r\n        }\r\n        coords.axis = that.series.axis;\r\n        return coords\r\n    },\r\n    _updateData: function(data) {\r\n        var that = this;\r\n        var label = that._label;\r\n        var reductionColor = this._options.reduction.color;\r\n        that.value = that.initialValue = data.reductionValue;\r\n        that.originalValue = data.value;\r\n        that.lowValue = that.originalLowValue = data.lowValue;\r\n        that.highValue = that.originalHighValue = data.highValue;\r\n        that.openValue = that.originalOpenValue = data.openValue;\r\n        that.closeValue = that.originalCloseValue = data.closeValue;\r\n        that._isPositive = data.openValue < data.closeValue;\r\n        that._isReduction = data.isReduction;\r\n        if (that._isReduction) {\r\n            label.setColor(reductionColor)\r\n        }\r\n    },\r\n    _updateMarker: function(animationEnabled, style, group) {\r\n        var that = this;\r\n        var graphic = that.graphic;\r\n        graphic.attr({\r\n            points: that._getPoints()\r\n        }).smartAttr(style).sharp();\r\n        group && graphic.append(that._getMarkerGroup(group))\r\n    },\r\n    _getLabelFormatObject: function() {\r\n        var that = this;\r\n        return {\r\n            openValue: that.openValue,\r\n            highValue: that.highValue,\r\n            lowValue: that.lowValue,\r\n            closeValue: that.closeValue,\r\n            reductionValue: that.initialValue,\r\n            argument: that.initialArgument,\r\n            value: that.initialValue,\r\n            seriesName: that.series.name,\r\n            originalOpenValue: that.originalOpenValue,\r\n            originalCloseValue: that.originalCloseValue,\r\n            originalLowValue: that.originalLowValue,\r\n            originalHighValue: that.originalHighValue,\r\n            originalArgument: that.originalArgument,\r\n            point: that\r\n        }\r\n    },\r\n    _getFormatObject: function(tooltip) {\r\n        var that = this;\r\n        var highValue = tooltip.formatValue(that.highValue);\r\n        var openValue = tooltip.formatValue(that.openValue);\r\n        var closeValue = tooltip.formatValue(that.closeValue);\r\n        var lowValue = tooltip.formatValue(that.lowValue);\r\n        var symbolMethods = _symbol_point.default;\r\n        var formatObject = symbolMethods._getFormatObject.call(that, tooltip);\r\n        return (0, _extend2.extend)({}, formatObject, {\r\n            valueText: \"h: \" + highValue + (\"\" !== openValue ? \" o: \" + openValue : \"\") + (\"\" !== closeValue ? \" c: \" + closeValue : \"\") + \" l: \" + lowValue,\r\n            highValueText: highValue,\r\n            openValueText: openValue,\r\n            closeValueText: closeValue,\r\n            lowValueText: lowValue\r\n        })\r\n    },\r\n    getMaxValue: function() {\r\n        return this.highValue\r\n    },\r\n    getMinValue: function() {\r\n        return this.lowValue\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/autocomplete.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"./drop_down_editor/ui.drop_down_list\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar AUTOCOMPLETE_CLASS = \"dx-autocomplete\";\r\nvar AUTOCOMPLETE_POPUP_WRAPPER_CLASS = \"dx-autocomplete-popup-wrapper\";\r\nvar Autocomplete = _ui.default.inherit({\r\n    _supportedKeys: function() {\r\n        var item = this._list ? this._list.option(\"focusedElement\") : null;\r\n        var parent = this.callBase();\r\n        item = item && (0, _renderer.default)(item);\r\n        return (0, _extend.extend)({}, parent, {\r\n            upArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (item && !this._calcNextItem(-1)) {\r\n                    this._clearFocusedItem();\r\n                    return false\r\n                }\r\n                return true\r\n            },\r\n            downArrow: function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (item && !this._calcNextItem(1)) {\r\n                    this._clearFocusedItem();\r\n                    return false\r\n                }\r\n                return true\r\n            },\r\n            enter: function() {\r\n                if (!item) {\r\n                    this.close()\r\n                }\r\n                parent.enter.apply(this, arguments);\r\n                return this.option(\"opened\")\r\n            }\r\n        })\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            minSearchLength: 1,\r\n            maxItemCount: 10,\r\n            noDataText: \"\",\r\n            showDropDownButton: false,\r\n            searchEnabled: true\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this.callBase();\r\n        this.$element().addClass(AUTOCOMPLETE_CLASS);\r\n        this.setAria(\"autocomplete\", \"inline\")\r\n    },\r\n    _displayGetterExpr: function() {\r\n        return this.option(\"valueExpr\")\r\n    },\r\n    _popupConfig: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            closeOnOutsideClick: function(e) {\r\n                return !(0, _renderer.default)(e.target).closest(this.$element()).length\r\n            }.bind(this)\r\n        })\r\n    },\r\n    _renderDimensions: function() {\r\n        this.callBase();\r\n        this._dimensionChanged()\r\n    },\r\n    _popupWrapperClass: function() {\r\n        return this.callBase() + \" \" + AUTOCOMPLETE_POPUP_WRAPPER_CLASS\r\n    },\r\n    _listConfig: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            pageLoadMode: \"none\"\r\n        })\r\n    },\r\n    _listItemClickHandler: function(e) {\r\n        var value = this._displayGetter(e.itemData);\r\n        this.option(\"value\", value);\r\n        this.close()\r\n    },\r\n    _setListDataSource: function() {\r\n        if (!this._list) {\r\n            return\r\n        }\r\n        this._list.option(\"selectedItems\", []);\r\n        this.callBase()\r\n    },\r\n    _refreshSelected: _common.noop,\r\n    _searchCanceled: function() {\r\n        this.callBase();\r\n        this.close()\r\n    },\r\n    _loadItem: function(value, cache) {\r\n        var selectedItem = this._getItemFromPlain(value, cache);\r\n        return (new _deferred.Deferred).resolve(selectedItem).promise()\r\n    },\r\n    _dataSourceOptions: function() {\r\n        return {\r\n            paginate: true,\r\n            pageSize: this.option(\"maxItemCount\")\r\n        }\r\n    },\r\n    _searchDataSource: function() {\r\n        this._dataSource.pageSize(this.option(\"maxItemCount\"));\r\n        this.callBase();\r\n        this._clearFocusedItem()\r\n    },\r\n    _clearFocusedItem: function() {\r\n        if (this._list) {\r\n            this._list.option(\"focusedElement\", null);\r\n            this._list.option(\"selectedIndex\", -1)\r\n        }\r\n    },\r\n    _renderValueEventName: function() {\r\n        return \"input keyup\"\r\n    },\r\n    _valueChangeEventHandler: function(e) {\r\n        var value = this._input().val() || null;\r\n        return this.callBase(e, value)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"maxItemCount\":\r\n                this._searchDataSource();\r\n                break;\r\n            case \"valueExpr\":\r\n                this._compileDisplayGetter();\r\n                this._setListOption(\"displayExpr\", this._displayGetterExpr());\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    reset: function() {\r\n        this.callBase();\r\n        this.close()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxAutocomplete\", Autocomplete);\r\nvar _default = Autocomplete;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (localization/open_xml_currency_format.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _default = function(currencySymbol, accountingFormat) {\r\n    if (!accountingFormat) {\r\n        return\r\n    }\r\n    var encodedCurrencySymbol = currencySymbol;\r\n    if (\"string\" === typeof currencySymbol) {\r\n        encodedCurrencySymbol = \"\";\r\n        for (var i = 0; i < currencySymbol.length; i++) {\r\n            if (\"$\" !== currencySymbol[i]) {\r\n                encodedCurrencySymbol += \"\\\\\"\r\n            }\r\n            encodedCurrencySymbol += currencySymbol[i]\r\n        }\r\n    }\r\n    var encodeSymbols = {\r\n        \".00\": \"{0}\",\r\n        \"'\": \"\\\\'\",\r\n        \"\\\\(\": \"\\\\(\",\r\n        \"\\\\)\": \"\\\\)\",\r\n        \" \": \"\\\\ \",\r\n        '\"': \"&quot;\",\r\n        \"\\\\\\xa4\": encodedCurrencySymbol\r\n    };\r\n    var result = accountingFormat.split(\";\");\r\n    for (var _i = 0; _i < result.length; _i++) {\r\n        for (var symbol in encodeSymbols) {\r\n            if (Object.prototype.hasOwnProperty.call(encodeSymbols, symbol)) {\r\n                result[_i] = result[_i].replace(new RegExp(symbol, \"g\"), encodeSymbols[symbol])\r\n            }\r\n        }\r\n    }\r\n    return 2 === result.length ? result[0] + \"_);\" + result[1] : result[0]\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.vertical.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _uiSchedulerWork_spaceGrouped = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy\"));\r\nvar _cache = require(\"./cache\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar VERTICAL_GROUPED_ATTR = \"dx-group-column-count\";\r\nvar DATE_HEADER_OFFSET = 10;\r\nvar WORK_SPACE_BORDER = 1;\r\nvar VerticalGroupedStrategy = function(_GroupedStrategy) {\r\n    _inherits(VerticalGroupedStrategy, _GroupedStrategy);\r\n    var _super = _createSuper(VerticalGroupedStrategy);\r\n\r\n    function VerticalGroupedStrategy() {\r\n        _classCallCheck(this, VerticalGroupedStrategy);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(VerticalGroupedStrategy, [{\r\n        key: \"prepareCellIndexes\",\r\n        value: function(cellCoordinates, groupIndex, inAllDayRow) {\r\n            var rowIndex = cellCoordinates.rowIndex + groupIndex * this._workSpace._getRowCount();\r\n            if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n                rowIndex += groupIndex;\r\n                if (!inAllDayRow) {\r\n                    rowIndex += 1\r\n                }\r\n            }\r\n            return {\r\n                rowIndex: rowIndex,\r\n                cellIndex: cellCoordinates.cellIndex\r\n            }\r\n        }\r\n    }, {\r\n        key: \"calculateCellIndex\",\r\n        value: function(rowIndex, cellIndex) {\r\n            rowIndex %= this._workSpace._getRowCount();\r\n            return this._workSpace._getRowCount() * cellIndex + rowIndex\r\n        }\r\n    }, {\r\n        key: \"getGroupIndex\",\r\n        value: function(rowIndex) {\r\n            return Math.floor(rowIndex / this._workSpace._getRowCount())\r\n        }\r\n    }, {\r\n        key: \"calculateHeaderCellRepeatCount\",\r\n        value: function() {\r\n            return 1\r\n        }\r\n    }, {\r\n        key: \"insertAllDayRowsIntoDateTable\",\r\n        value: function() {\r\n            return this._workSpace.option(\"showAllDayPanel\")\r\n        }\r\n    }, {\r\n        key: \"getTotalCellCount\",\r\n        value: function() {\r\n            return this._workSpace._getCellCount()\r\n        }\r\n    }, {\r\n        key: \"getTotalRowCount\",\r\n        value: function() {\r\n            return this._workSpace._getRowCount() * this._workSpace._getGroupCount()\r\n        }\r\n    }, {\r\n        key: \"addAdditionalGroupCellClasses\",\r\n        value: function(cellClass, index, i, j) {\r\n            cellClass = this._addLastGroupCellClass(cellClass, i + 1);\r\n            return this._addFirstGroupCellClass(cellClass, i + 1)\r\n        }\r\n    }, {\r\n        key: \"_addLastGroupCellClass\",\r\n        value: function(cellClass, index) {\r\n            if (index % this._workSpace._getRowCount() === 0) {\r\n                return cellClass + \" \" + this.getLastGroupCellClass()\r\n            }\r\n            return cellClass\r\n        }\r\n    }, {\r\n        key: \"_addFirstGroupCellClass\",\r\n        value: function(cellClass, index) {\r\n            if ((index - 1) % this._workSpace._getRowCount() === 0) {\r\n                return cellClass + \" \" + this.getFirstGroupCellClass()\r\n            }\r\n            return cellClass\r\n        }\r\n    }, {\r\n        key: \"getHorizontalMax\",\r\n        value: function() {\r\n            return this._workSpace.getMaxAllowedPosition()[0]\r\n        }\r\n    }, {\r\n        key: \"getVerticalMax\",\r\n        value: function(groupIndex) {\r\n            var maxAllowedPosition = this._workSpace.getMaxAllowedVerticalPosition(groupIndex);\r\n            maxAllowedPosition += this._getOffsetByAllDayPanel(groupIndex);\r\n            return maxAllowedPosition\r\n        }\r\n    }, {\r\n        key: \"_getOffsetByAllDayPanel\",\r\n        value: function(groupIndex) {\r\n            var result = 0;\r\n            if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n                result = this._workSpace.getAllDayHeight() * (groupIndex + 1)\r\n            }\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_getGroupTop\",\r\n        value: function(groupIndex) {\r\n            var workspace = this._workSpace;\r\n            var rowCount = workspace.isVirtualScrolling() ? workspace.viewDataProvider.getRowCountInGroup(groupIndex) : workspace._getRowCount();\r\n            return workspace.getMaxAllowedVerticalPosition(groupIndex) - workspace.getCellHeight() * rowCount\r\n        }\r\n    }, {\r\n        key: \"calculateTimeCellRepeatCount\",\r\n        value: function() {\r\n            return this._workSpace._getGroupCount() || 1\r\n        }\r\n    }, {\r\n        key: \"getWorkSpaceMinWidth\",\r\n        value: function() {\r\n            var minWidth = this._workSpace._getWorkSpaceWidth();\r\n            var workspaceContainerWidth = (0, _position.getBoundingRect)(this._workSpace.$element().get(0)).width - this._workSpace.getTimePanelWidth() - this._workSpace.getGroupTableWidth() - 2 * WORK_SPACE_BORDER;\r\n            if (minWidth < workspaceContainerWidth) {\r\n                minWidth = workspaceContainerWidth\r\n            }\r\n            return minWidth\r\n        }\r\n    }, {\r\n        key: \"getAllDayOffset\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"getAllDayTableHeight\",\r\n        value: function() {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"getGroupCountAttr\",\r\n        value: function() {\r\n            return {\r\n                attr: VERTICAL_GROUPED_ATTR,\r\n                count: this._workSpace.option(\"groups\") && this._workSpace.option(\"groups\").length\r\n            }\r\n        }\r\n    }, {\r\n        key: \"getLeftOffset\",\r\n        value: function() {\r\n            return this._workSpace.getTimePanelWidth() + this._workSpace.getGroupTableWidth()\r\n        }\r\n    }, {\r\n        key: \"getGroupBoundsOffset\",\r\n        value: function(cellCount, $cells, cellWidth, coordinates) {\r\n            var _this = this;\r\n            return _cache.cache.get(\"groupBoundsOffset\", function() {\r\n                var groupIndex = coordinates.groupIndex;\r\n                var startOffset = $cells.eq(0).offset().left;\r\n                var endOffset = $cells.eq(cellCount - 1).offset().left + cellWidth;\r\n                var dayHeight = _this._workSpace._calculateDayDuration() / _this._workSpace.option(\"hoursInterval\") * _this._workSpace.getCellHeight();\r\n                var scrollTop = _this.getScrollableScrollTop();\r\n                var topOffset = groupIndex * dayHeight + (0, _position.getBoundingRect)(_this._workSpace._$thead.get(0)).height + _this._workSpace.invoke(\"getHeaderHeight\") + DATE_HEADER_OFFSET - scrollTop;\r\n                if (_this._workSpace.option(\"showAllDayPanel\") && _this._workSpace.supportAllDayRow()) {\r\n                    topOffset += _this._workSpace.getCellHeight() * (groupIndex + 1)\r\n                }\r\n                var bottomOffset = topOffset + dayHeight;\r\n                return _this._groupBoundsOffset = {\r\n                    left: startOffset,\r\n                    right: endOffset,\r\n                    top: topOffset,\r\n                    bottom: bottomOffset\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"shiftIndicator\",\r\n        value: function($indicator, height, rtlOffset, i) {\r\n            var offset = this._workSpace.getIndicatorOffset(0);\r\n            var tableOffset = this._workSpace.option(\"crossScrollingEnabled\") ? 0 : this._workSpace.getGroupTableWidth();\r\n            var horizontalOffset = rtlOffset ? rtlOffset - offset : offset;\r\n            var verticalOffset = this._workSpace._getRowCount() * this._workSpace.getCellHeight() * i;\r\n            if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n                verticalOffset += this._workSpace.getAllDayHeight() * (i + 1)\r\n            }\r\n            $indicator.css(\"left\", horizontalOffset + tableOffset);\r\n            $indicator.css(\"top\", height + verticalOffset)\r\n        }\r\n    }, {\r\n        key: \"getShaderOffset\",\r\n        value: function(i, width) {\r\n            var offset = this._workSpace.option(\"crossScrollingEnabled\") ? 0 : this._workSpace.getGroupTableWidth();\r\n            return this._workSpace.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this._$container.get(0)).width - offset - this._workSpace.getWorkSpaceLeftOffset() - width : offset\r\n        }\r\n    }, {\r\n        key: \"getShaderTopOffset\",\r\n        value: function(i) {\r\n            return 0\r\n        }\r\n    }, {\r\n        key: \"getShaderHeight\",\r\n        value: function() {\r\n            var height = this._workSpace.getIndicationHeight();\r\n            if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n                height += this._workSpace.getCellHeight()\r\n            }\r\n            return height\r\n        }\r\n    }, {\r\n        key: \"getShaderMaxHeight\",\r\n        value: function() {\r\n            var height = this._workSpace._getRowCount() * this._workSpace.getCellHeight();\r\n            if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n                height += this._workSpace.getCellHeight()\r\n            }\r\n            return height\r\n        }\r\n    }, {\r\n        key: \"getShaderWidth\",\r\n        value: function() {\r\n            return this._workSpace.getIndicationWidth(0)\r\n        }\r\n    }, {\r\n        key: \"getScrollableScrollTop\",\r\n        value: function() {\r\n            return this._workSpace.getScrollable().scrollTop()\r\n        }\r\n    }, {\r\n        key: \"getGroupIndexByCell\",\r\n        value: function($cell) {\r\n            var rowIndex = $cell.parent().index();\r\n            var rowCount = this._workSpace._getRowCountWithAllDayRows();\r\n            return Math.ceil((rowIndex + 1) / rowCount)\r\n        }\r\n    }]);\r\n    return VerticalGroupedStrategy\r\n}(_uiSchedulerWork_spaceGrouped.default);\r\nvar _default = VerticalGroupedStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (animation/position.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _position = require(\"../core/utils/position\");\r\nvar _browser = _interopRequireDefault(require(\"../core/utils/browser\"));\r\nvar _translator = require(\"./translator\");\r\nvar _support = require(\"../core/utils/support\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar horzRe = /left|right/;\r\nvar vertRe = /top|bottom/;\r\nvar collisionRe = /fit|flip|none/;\r\nvar scaleRe = /scale(.+)/;\r\nvar IS_SAFARI = _browser.default.safari;\r\nvar normalizeAlign = function(raw) {\r\n    var result = {\r\n        h: \"center\",\r\n        v: \"center\"\r\n    };\r\n    var pair = (0, _common.splitPair)(raw);\r\n    if (pair) {\r\n        (0, _iterator.each)(pair, function() {\r\n            var w = String(this).toLowerCase();\r\n            if (horzRe.test(w)) {\r\n                result.h = w\r\n            } else {\r\n                if (vertRe.test(w)) {\r\n                    result.v = w\r\n                }\r\n            }\r\n        })\r\n    }\r\n    return result\r\n};\r\nvar normalizeOffset = function(raw) {\r\n    return (0, _common.pairToObject)(raw)\r\n};\r\nvar normalizeCollision = function(raw) {\r\n    var pair = (0, _common.splitPair)(raw);\r\n    var h = String(pair && pair[0]).toLowerCase();\r\n    var v = String(pair && pair[1]).toLowerCase();\r\n    if (!collisionRe.test(h)) {\r\n        h = \"none\"\r\n    }\r\n    if (!collisionRe.test(v)) {\r\n        v = h\r\n    }\r\n    return {\r\n        h: h,\r\n        v: v\r\n    }\r\n};\r\nvar getAlignFactor = function(align) {\r\n    switch (align) {\r\n        case \"center\":\r\n            return .5;\r\n        case \"right\":\r\n        case \"bottom\":\r\n            return 1;\r\n        default:\r\n            return 0\r\n    }\r\n};\r\nvar inverseAlign = function(align) {\r\n    switch (align) {\r\n        case \"left\":\r\n            return \"right\";\r\n        case \"right\":\r\n            return \"left\";\r\n        case \"top\":\r\n            return \"bottom\";\r\n        case \"bottom\":\r\n            return \"top\";\r\n        default:\r\n            return align\r\n    }\r\n};\r\nvar calculateOversize = function(data, bounds) {\r\n    var oversize = 0;\r\n    if (data.myLocation < bounds.min) {\r\n        oversize += bounds.min - data.myLocation\r\n    }\r\n    if (data.myLocation > bounds.max) {\r\n        oversize += data.myLocation - bounds.max\r\n    }\r\n    return oversize\r\n};\r\nvar collisionSide = function(direction, data, bounds) {\r\n    if (data.myLocation < bounds.min) {\r\n        return \"h\" === direction ? \"left\" : \"top\"\r\n    }\r\n    if (data.myLocation > bounds.max) {\r\n        return \"h\" === direction ? \"right\" : \"bottom\"\r\n    }\r\n    return \"none\"\r\n};\r\nvar initMyLocation = function(data) {\r\n    data.myLocation = data.atLocation + getAlignFactor(data.atAlign) * data.atSize - getAlignFactor(data.myAlign) * data.mySize + data.offset\r\n};\r\nvar collisionResolvers = {\r\n    fit: function(data, bounds) {\r\n        var result = false;\r\n        if (data.myLocation > bounds.max) {\r\n            data.myLocation = bounds.max;\r\n            result = true\r\n        }\r\n        if (data.myLocation < bounds.min) {\r\n            data.myLocation = bounds.min;\r\n            result = true\r\n        }\r\n        data.fit = result\r\n    },\r\n    flip: function(data, bounds) {\r\n        data.flip = false;\r\n        if (\"center\" === data.myAlign && \"center\" === data.atAlign) {\r\n            return\r\n        }\r\n        if (data.myLocation < bounds.min || data.myLocation > bounds.max) {\r\n            var inverseData = (0, _extend.extend)({}, data, {\r\n                myAlign: inverseAlign(data.myAlign),\r\n                atAlign: inverseAlign(data.atAlign),\r\n                offset: -data.offset\r\n            });\r\n            initMyLocation(inverseData);\r\n            inverseData.oversize = calculateOversize(inverseData, bounds);\r\n            if (inverseData.myLocation >= bounds.min && inverseData.myLocation <= bounds.max || data.oversize > inverseData.oversize) {\r\n                data.myLocation = inverseData.myLocation;\r\n                data.oversize = inverseData.oversize;\r\n                data.flip = true\r\n            }\r\n        }\r\n    },\r\n    flipfit: function(data, bounds) {\r\n        this.flip(data, bounds);\r\n        this.fit(data, bounds)\r\n    },\r\n    none: function(data) {\r\n        data.oversize = 0\r\n    }\r\n};\r\nvar scrollbarWidth;\r\nvar calculateScrollbarWidth = function() {\r\n    var $scrollDiv = (0, _renderer.default)(\"<div>\").css({\r\n        width: 100,\r\n        height: 100,\r\n        overflow: \"scroll\",\r\n        position: \"absolute\",\r\n        top: -9999\r\n    }).appendTo((0, _renderer.default)(\"body\"));\r\n    var result = $scrollDiv.get(0).offsetWidth - $scrollDiv.get(0).clientWidth;\r\n    $scrollDiv.remove();\r\n    scrollbarWidth = result\r\n};\r\nvar defaultPositionResult = {\r\n    h: {\r\n        location: 0,\r\n        flip: false,\r\n        fit: false,\r\n        oversize: 0\r\n    },\r\n    v: {\r\n        location: 0,\r\n        flip: false,\r\n        fit: false,\r\n        oversize: 0\r\n    }\r\n};\r\nvar calculatePosition = function(what, options) {\r\n    var $what = (0, _renderer.default)(what);\r\n    var currentOffset = $what.offset();\r\n    var result = (0, _extend.extend)(true, {}, defaultPositionResult, {\r\n        h: {\r\n            location: currentOffset.left\r\n        },\r\n        v: {\r\n            location: currentOffset.top\r\n        }\r\n    });\r\n    if (!options) {\r\n        return result\r\n    }\r\n    var my = normalizeAlign(options.my);\r\n    var at = normalizeAlign(options.at);\r\n    var of = (0, _renderer.default)(options.of).length && options.of || window;\r\n    var offset = normalizeOffset(options.offset);\r\n    var collision = normalizeCollision(options.collision);\r\n    var boundary = options.boundary;\r\n    var boundaryOffset = normalizeOffset(options.boundaryOffset);\r\n    var h = {\r\n        mySize: $what.outerWidth(),\r\n        myAlign: my.h,\r\n        atAlign: at.h,\r\n        offset: offset.h,\r\n        collision: collision.h,\r\n        boundaryOffset: boundaryOffset.h\r\n    };\r\n    var v = {\r\n        mySize: $what.outerHeight(),\r\n        myAlign: my.v,\r\n        atAlign: at.v,\r\n        offset: offset.v,\r\n        collision: collision.v,\r\n        boundaryOffset: boundaryOffset.v\r\n    };\r\n    if ( of .preventDefault) {\r\n        h.atLocation = of .pageX;\r\n        v.atLocation = of .pageY;\r\n        h.atSize = 0;\r\n        v.atSize = 0\r\n    } else {\r\n        of = (0, _renderer.default)( of );\r\n        if ((0, _type.isWindow)( of [0])) {\r\n            h.atLocation = of .scrollLeft();\r\n            v.atLocation = of .scrollTop();\r\n            if (\"phone\" === _devices.default.real().deviceType && of [0].visualViewport) {\r\n                h.atLocation = Math.max(h.atLocation, of [0].visualViewport.offsetLeft);\r\n                v.atLocation = Math.max(v.atLocation, of [0].visualViewport.offsetTop);\r\n                h.atSize = of [0].visualViewport.width;\r\n                v.atSize = of [0].visualViewport.height\r\n            } else {\r\n                h.atSize = of [0].innerWidth > of [0].outerWidth ? of [0].innerWidth : of .width();\r\n                v.atSize = of [0].innerHeight > of [0].outerHeight || IS_SAFARI ? of [0].innerHeight : of .height()\r\n            }\r\n        } else {\r\n            if (9 === of [0].nodeType) {\r\n                h.atLocation = 0;\r\n                v.atLocation = 0;\r\n                h.atSize = of .width();\r\n                v.atSize = of .height()\r\n            } else {\r\n                var ofRect = (0, _position.getBoundingRect)( of .get(0));\r\n                var o = getOffsetWithoutScale( of );\r\n                h.atLocation = o.left;\r\n                v.atLocation = o.top;\r\n                h.atSize = Math.max(ofRect.width, of .outerWidth());\r\n                v.atSize = Math.max(ofRect.height, of .outerHeight())\r\n            }\r\n        }\r\n    }\r\n    initMyLocation(h);\r\n    initMyLocation(v);\r\n    var bounds = function() {\r\n        var win = (0, _renderer.default)(window);\r\n        var windowWidth = win.width();\r\n        var windowHeight = win.height();\r\n        var left = win.scrollLeft();\r\n        var top = win.scrollTop();\r\n        var documentElement = _dom_adapter.default.getDocumentElement();\r\n        var hZoomLevel = _support.touch ? documentElement.clientWidth / windowWidth : 1;\r\n        var vZoomLevel = _support.touch ? documentElement.clientHeight / windowHeight : 1;\r\n        if (void 0 === scrollbarWidth) {\r\n            calculateScrollbarWidth()\r\n        }\r\n        var boundaryWidth = windowWidth;\r\n        var boundaryHeight = windowHeight;\r\n        if (boundary) {\r\n            var $boundary = (0, _renderer.default)(boundary);\r\n            var boundaryPosition = $boundary.offset();\r\n            left = boundaryPosition.left;\r\n            top = boundaryPosition.top;\r\n            boundaryWidth = $boundary.width();\r\n            boundaryHeight = $boundary.height()\r\n        }\r\n        return {\r\n            h: {\r\n                min: left + h.boundaryOffset,\r\n                max: left + boundaryWidth / hZoomLevel - h.mySize - h.boundaryOffset\r\n            },\r\n            v: {\r\n                min: top + v.boundaryOffset,\r\n                max: top + boundaryHeight / vZoomLevel - v.mySize - v.boundaryOffset\r\n            }\r\n        }\r\n    }();\r\n    h.oversize = calculateOversize(h, bounds.h);\r\n    v.oversize = calculateOversize(v, bounds.v);\r\n    h.collisionSide = collisionSide(\"h\", h, bounds.h);\r\n    v.collisionSide = collisionSide(\"v\", v, bounds.v);\r\n    if (collisionResolvers[h.collision]) {\r\n        collisionResolvers[h.collision](h, bounds.h)\r\n    }\r\n    if (collisionResolvers[v.collision]) {\r\n        collisionResolvers[v.collision](v, bounds.v)\r\n    }\r\n    var preciser = function(number) {\r\n        return options.precise ? number : Math.round(number)\r\n    };\r\n    (0, _extend.extend)(true, result, {\r\n        h: {\r\n            location: preciser(h.myLocation),\r\n            oversize: preciser(h.oversize),\r\n            fit: h.fit,\r\n            flip: h.flip,\r\n            collisionSide: h.collisionSide\r\n        },\r\n        v: {\r\n            location: preciser(v.myLocation),\r\n            oversize: preciser(v.oversize),\r\n            fit: v.fit,\r\n            flip: v.flip,\r\n            collisionSide: v.collisionSide\r\n        },\r\n        precise: options.precise\r\n    });\r\n    return result\r\n};\r\nvar getOffsetWithoutScale = function getOffsetWithoutScale($startElement) {\r\n    var _currentElement$getAt, _style$match;\r\n    var $currentElement = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : $startElement;\r\n    var currentElement = $currentElement.get(0);\r\n    if (!currentElement) {\r\n        return $startElement.offset()\r\n    }\r\n    var style = (null === (_currentElement$getAt = currentElement.getAttribute) || void 0 === _currentElement$getAt ? void 0 : _currentElement$getAt.call(currentElement, \"style\")) || \"\";\r\n    var scale = null === (_style$match = style.match(scaleRe)) || void 0 === _style$match ? void 0 : _style$match[0];\r\n    var offset;\r\n    if (scale) {\r\n        currentElement.setAttribute(\"style\", style.replace(scale, \"\"));\r\n        offset = getOffsetWithoutScale($startElement, $currentElement.parent());\r\n        currentElement.setAttribute(\"style\", style)\r\n    } else {\r\n        offset = getOffsetWithoutScale($startElement, $currentElement.parent())\r\n    }\r\n    return offset\r\n};\r\nvar position = function(what, options) {\r\n    var $what = (0, _renderer.default)(what);\r\n    if (!options) {\r\n        return $what.offset()\r\n    }(0, _translator.resetPosition)($what, true);\r\n    var offset = getOffsetWithoutScale($what);\r\n    var targetPosition = options.h && options.v ? options : calculatePosition($what, options);\r\n    var preciser = function(number) {\r\n        return options.precise ? number : Math.round(number)\r\n    };\r\n    (0, _translator.move)($what, {\r\n        left: targetPosition.h.location - preciser(offset.left),\r\n        top: targetPosition.v.location - preciser(offset.top)\r\n    });\r\n    return targetPosition\r\n};\r\nvar offset = function(element) {\r\n    element = (0, _renderer.default)(element).get(0);\r\n    if ((0, _type.isWindow)(element)) {\r\n        return null\r\n    } else {\r\n        if (element && \"pageY\" in element && \"pageX\" in element) {\r\n            return {\r\n                top: element.pageY,\r\n                left: element.pageX\r\n            }\r\n        }\r\n    }\r\n    return (0, _renderer.default)(element).offset()\r\n};\r\nif (!position.inverseAlign) {\r\n    position.inverseAlign = inverseAlign\r\n}\r\nif (!position.normalizeAlign) {\r\n    position.normalizeAlign = normalizeAlign\r\n}\r\nvar _default = {\r\n    calculateScrollbarWidth: calculateScrollbarWidth,\r\n    calculate: calculatePosition,\r\n    setup: position,\r\n    offset: offset\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.pattern_fill_helper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.color_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar patternFillHelper = {\r\n    tryCreateTag: function(sourceObj) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(sourceObj)) {\r\n            result = {\r\n                patternType: sourceObj.patternType,\r\n                backgroundColor: _excel2.default.tryCreateTag(sourceObj.backgroundColor),\r\n                foregroundColor: _excel2.default.tryCreateTag(sourceObj.foregroundColor)\r\n            };\r\n            if (patternFillHelper.isEmpty(result)) {\r\n                result = null\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    copy: function(source) {\r\n        var result = null;\r\n        if ((0, _type.isDefined)(source)) {\r\n            result = {};\r\n            if (void 0 !== source.patternType) {\r\n                result.patternType = source.patternType\r\n            }\r\n            if (void 0 !== source.backgroundColor) {\r\n                result.backgroundColor = _excel2.default.copy(source.backgroundColor)\r\n            }\r\n            if (void 0 !== source.foregroundColor) {\r\n                result.foregroundColor = _excel2.default.copy(source.foregroundColor)\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    areEqual: function(leftTag, rightTag) {\r\n        return patternFillHelper.isEmpty(leftTag) && patternFillHelper.isEmpty(rightTag) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.patternType === rightTag.patternType && _excel2.default.areEqual(leftTag.backgroundColor, rightTag.backgroundColor) && _excel2.default.areEqual(leftTag.foregroundColor, rightTag.foregroundColor)\r\n    },\r\n    isEmpty: function(tag) {\r\n        return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.patternType)\r\n    },\r\n    toXml: function(tag) {\r\n        var content = [(0, _type.isDefined)(tag.foregroundColor) ? _excel2.default.toXml(\"fgColor\", tag.foregroundColor) : \"\", (0, _type.isDefined)(tag.backgroundColor) ? _excel2.default.toXml(\"bgColor\", tag.backgroundColor) : \"\"].join(\"\");\r\n        return _excel.default.toXml(\"patternFill\", {\r\n            patternType: tag.patternType\r\n        }, content)\r\n    }\r\n};\r\nvar _default = patternFillHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/vector_map.utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.generateDataKey = generateDataKey;\r\nvar nextDataKey = 1;\r\n\r\nfunction generateDataKey() {\r\n    return \"vectormap-data-\" + nextDataKey++\r\n}\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.columns_resizing_reordering.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TrackerView = exports.ColumnsResizerViewController = exports.TablePositionViewController = exports.ColumnsSeparatorView = exports.DraggingHeaderViewController = exports.DraggingHeaderView = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.columns_resizing_reordering\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DraggingHeaderView = _uiGrid_core.default.views.draggingHeaderView;\r\nexports.DraggingHeaderView = DraggingHeaderView;\r\nvar DraggingHeaderViewController = _uiGrid_core.default.controllers.draggingHeader;\r\nexports.DraggingHeaderViewController = DraggingHeaderViewController;\r\nvar ColumnsSeparatorView = _uiGrid_core.default.views.columnsSeparatorView;\r\nexports.ColumnsSeparatorView = ColumnsSeparatorView;\r\nvar TablePositionViewController = _uiGrid_core.default.controllers.tablePosition;\r\nexports.TablePositionViewController = TablePositionViewController;\r\nvar ColumnsResizerViewController = _uiGrid_core.default.controllers.columnsResizer;\r\nexports.ColumnsResizerViewController = ColumnsResizerViewController;\r\nvar TrackerView = _uiGrid_core.default.views.trackerView;\r\nexports.TrackerView = TrackerView;\r\n_uiData_grid.default.registerModule(\"columnsResizingReordering\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/core/annotations.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugins = exports.createAnnotations = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"./utils\");\r\nvar _plaque = require(\"./plaque\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar getDocument = _dom_adapter.default.getDocument;\r\nvar EVENT_NS = \"annotations\";\r\nvar DOT_EVENT_NS = \".\" + EVENT_NS;\r\nvar POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);\r\nvar POINTER_UP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, EVENT_NS);\r\nvar DRAG_START_EVENT_NAME = _drag.start + DOT_EVENT_NS;\r\nvar DRAG_EVENT_NAME = _drag.move + DOT_EVENT_NS;\r\nvar DRAG_END_EVENT_NAME = _drag.end + DOT_EVENT_NS;\r\n\r\nfunction coreAnnotation(options, contentTemplate) {\r\n    return {\r\n        draw: function(widget, group) {\r\n            var _this = this;\r\n            var annotationGroup = widget._renderer.g().append(group).css((0, _utils.patchFontOptions)(options.font));\r\n            if (this.plaque) {\r\n                this.plaque.clear()\r\n            }\r\n            this.plaque = new _plaque.Plaque((0, _extend.extend)(true, {}, options, {\r\n                cornerRadius: (options.border || {}).cornerRadius\r\n            }), widget, annotationGroup, contentTemplate, widget._isAnnotationBounded(options));\r\n            this.plaque.draw(widget._getAnnotationCoords(this));\r\n            if (options.allowDragging) {\r\n                annotationGroup.on(DRAG_START_EVENT_NAME, {\r\n                    immediate: true\r\n                }, function(e) {\r\n                    _this._dragOffsetX = _this.plaque.x - e.pageX;\r\n                    _this._dragOffsetY = _this.plaque.y - e.pageY\r\n                }).on(DRAG_EVENT_NAME, function(e) {\r\n                    _this.plaque.move(e.pageX + _this._dragOffsetX, e.pageY + _this._dragOffsetY)\r\n                }).on(DRAG_END_EVENT_NAME, function(e) {\r\n                    _this.offsetX = (_this.offsetX || 0) + e.offset.x;\r\n                    _this.offsetY = (_this.offsetY || 0) + e.offset.y\r\n                })\r\n            }\r\n        },\r\n        hitTest: function(x, y) {\r\n            return this.plaque.hitTest(x, y)\r\n        },\r\n        showTooltip: function(tooltip, _ref) {\r\n            var x = _ref.x,\r\n                y = _ref.y;\r\n            var that = this;\r\n            var options = that.options;\r\n            if (tooltip.annotation !== that) {\r\n                tooltip.setTemplate(options.tooltipTemplate);\r\n                var callback = function(result) {\r\n                    result && (tooltip.annotation = that)\r\n                };\r\n                callback(tooltip.show(options, {\r\n                    x: x,\r\n                    y: y\r\n                }, {\r\n                    target: options\r\n                }, options.customizeTooltip, callback))\r\n            } else {\r\n                tooltip.move(x, y)\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction getTemplateFunction(options, widget) {\r\n    var template;\r\n    if (\"text\" === options.type) {\r\n        template = function(item, groupElement) {\r\n            var text = widget._renderer.text(item.text).attr({\r\n                \"class\": item.cssClass\r\n            }).append({\r\n                element: groupElement\r\n            });\r\n            if (item.width > 0 || item.height > 0) {\r\n                text.setMaxSize(item.width, item.height, {\r\n                    wordWrap: item.wordWrap,\r\n                    textOverflow: item.textOverflow\r\n                })\r\n            }\r\n        }\r\n    } else {\r\n        if (\"image\" === options.type) {\r\n            template = function(item, groupElement) {\r\n                var _ref2 = item.image || {},\r\n                    width = _ref2.width,\r\n                    height = _ref2.height,\r\n                    url = _ref2.url,\r\n                    location = _ref2.location;\r\n                var outerWidth = item.width,\r\n                    outerHeight = item.height;\r\n                var imageWidth = outerWidth > 0 ? Math.min(width, outerWidth) : width;\r\n                var imageHeight = outerHeight > 0 ? Math.min(height, outerHeight) : height;\r\n                widget._renderer.image(0, 0, imageWidth, imageHeight, url, location || \"center\").append({\r\n                    element: groupElement\r\n                })\r\n            }\r\n        } else {\r\n            if (\"custom\" === options.type) {\r\n                template = options.template\r\n            }\r\n        }\r\n    }\r\n    return template\r\n}\r\n\r\nfunction getImageObject(image) {\r\n    return \"string\" === typeof image ? {\r\n        url: image\r\n    } : image\r\n}\r\nvar createAnnotations = function(widget, items) {\r\n    var commonAnnotationSettings = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n    var customizeAnnotation = arguments.length > 3 ? arguments[3] : void 0;\r\n    var pullOptions = arguments.length > 4 ? arguments[4] : void 0;\r\n    var commonImageOptions = getImageObject(commonAnnotationSettings.image);\r\n    return items.reduce(function(arr, item) {\r\n        var currentImageOptions = getImageObject(item.image);\r\n        var customizedItem = (0, _type.isFunction)(customizeAnnotation) ? customizeAnnotation(item) : {};\r\n        if (customizedItem) {\r\n            customizedItem.image = getImageObject(customizedItem.image)\r\n        }\r\n        var options = (0, _extend.extend)(true, {}, commonAnnotationSettings, item, {\r\n            image: commonImageOptions\r\n        }, {\r\n            image: currentImageOptions\r\n        }, customizedItem);\r\n        var templateFunction = getTemplateFunction(options, widget);\r\n        var annotation = templateFunction && (0, _extend.extend)(true, pullOptions(options), coreAnnotation(options, widget._getTemplate(templateFunction)));\r\n        annotation && arr.push(annotation);\r\n        return arr\r\n    }, [])\r\n};\r\nexports.createAnnotations = createAnnotations;\r\nvar chartPlugin = {\r\n    name: \"annotations_chart\",\r\n    init: function() {},\r\n    dispose: function() {},\r\n    members: {\r\n        _getAnnotationCoords: function(annotation) {\r\n            var _axis, _axis2;\r\n            var coords = {\r\n                offsetX: annotation.offsetX,\r\n                offsetY: annotation.offsetY\r\n            };\r\n            var argCoordName = this._options.silent(\"rotated\") ? \"y\" : \"x\";\r\n            var valCoordName = this._options.silent(\"rotated\") ? \"x\" : \"y\";\r\n            var argAxis = this.getArgumentAxis();\r\n            var argument = argAxis.validateUnit(annotation.argument);\r\n            var axis = this.getValueAxis(annotation.axis);\r\n            var series;\r\n            var pane = null === (_axis = axis) || void 0 === _axis ? void 0 : _axis.pane;\r\n            if (annotation.series) {\r\n                var _series;\r\n                series = this.series.filter(function(s) {\r\n                    return s.name === annotation.series\r\n                })[0];\r\n                axis = null === (_series = series) || void 0 === _series ? void 0 : _series.getValueAxis();\r\n                (0, _type.isDefined)(axis) && (pane = axis.pane)\r\n            }\r\n            if ((0, _type.isDefined)(argument)) {\r\n                if (series) {\r\n                    var center = series.getPointCenterByArg(argument);\r\n                    center && (coords[argCoordName] = center[argCoordName])\r\n                } else {\r\n                    coords[argCoordName] = argAxis.getTranslator().translate(argument)\r\n                }!(0, _type.isDefined)(pane) && (pane = argAxis.pane)\r\n            }\r\n            var value = null === (_axis2 = axis) || void 0 === _axis2 ? void 0 : _axis2.validateUnit(annotation.value);\r\n            if ((0, _type.isDefined)(value)) {\r\n                var _axis3;\r\n                coords[valCoordName] = null === (_axis3 = axis) || void 0 === _axis3 ? void 0 : _axis3.getTranslator().translate(value);\r\n                !(0, _type.isDefined)(pane) && (0, _type.isDefined)(axis) && (pane = axis.pane)\r\n            }\r\n            coords.canvas = this._getCanvasForPane(pane);\r\n            if ((0, _type.isDefined)(coords[argCoordName]) && !(0, _type.isDefined)(value)) {\r\n                var _series2;\r\n                if (!(0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {\r\n                    coords[valCoordName] = argAxis.getAxisPosition()\r\n                } else {\r\n                    if ((0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {\r\n                        coords[valCoordName] = this._argumentAxes.filter(function(a) {\r\n                            return a.pane === axis.pane\r\n                        })[0].getAxisPosition()\r\n                    } else {\r\n                        if (null !== (_series2 = series) && void 0 !== _series2 && _series2.checkSeriesViewportCoord(argAxis, coords[argCoordName])) {\r\n                            coords[valCoordName] = series.getSeriesPairCoord(coords[argCoordName], true)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (!(0, _type.isDefined)(argument) && (0, _type.isDefined)(coords[valCoordName])) {\r\n                if ((0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {\r\n                    coords[argCoordName] = axis.getAxisPosition()\r\n                } else {\r\n                    if ((0, _type.isDefined)(series)) {\r\n                        if (series.checkSeriesViewportCoord(axis, coords[valCoordName])) {\r\n                            coords[argCoordName] = series.getSeriesPairCoord(coords[valCoordName], false)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return coords\r\n        },\r\n        _annotationsPointerEventHandler: function(event) {\r\n            var originalEvent = event.originalEvent || {};\r\n            var touch = originalEvent.touches && originalEvent.touches[0] || {};\r\n            var rootOffset = this._renderer.getRootOffset();\r\n            var coords = {\r\n                x: touch.pageX || originalEvent.pageX || event.pageX,\r\n                y: touch.pageY || originalEvent.pageY || event.pageY\r\n            };\r\n            var annotation = this._annotations.items.filter(function(a) {\r\n                return a.hitTest(coords.x - rootOffset.left, coords.y - rootOffset.top)\r\n            })[0];\r\n            if (!annotation || !annotation.options.tooltipEnabled) {\r\n                this._annotations.hideTooltip();\r\n                return\r\n            }\r\n            this._clear();\r\n            if (annotation.options.allowDragging && event.type === _pointer.default.down) {\r\n                this._annotations._hideToolTipForDrag = true\r\n            }\r\n            if (!this._annotations._hideToolTipForDrag) {\r\n                annotation.showTooltip(this._annotations.tooltip, coords);\r\n                event.stopPropagation()\r\n            }\r\n        },\r\n        _isAnnotationBounded: function(options) {\r\n            return (0, _type.isDefined)(options.value) || (0, _type.isDefined)(options.argument)\r\n        },\r\n        _pullOptions: function(options) {\r\n            return {\r\n                type: options.type,\r\n                name: options.name,\r\n                x: options.x,\r\n                y: options.y,\r\n                value: options.value,\r\n                argument: options.argument,\r\n                axis: options.axis,\r\n                series: options.series,\r\n                options: options,\r\n                offsetX: options.offsetX,\r\n                offsetY: options.offsetY\r\n            }\r\n        },\r\n        _forceAnnotationRender: function() {\r\n            this._change([\"FORCE_RENDER\"])\r\n        },\r\n        _clear: function() {\r\n            this.hideTooltip();\r\n            this.clearHover()\r\n        }\r\n    }\r\n};\r\nvar polarChartPlugin = {\r\n    name: \"annotations_polar_chart\",\r\n    init: function() {},\r\n    dispose: function() {},\r\n    members: {\r\n        _getAnnotationCoords: function(annotation) {\r\n            var coords = {\r\n                offsetX: annotation.offsetX,\r\n                offsetY: annotation.offsetY,\r\n                canvas: this._calcCanvas()\r\n            };\r\n            var argAxis = this.getArgumentAxis();\r\n            var argument = argAxis.validateUnit(annotation.argument);\r\n            var value = this.getValueAxis().validateUnit(annotation.value);\r\n            var radius = annotation.radius;\r\n            var angle = annotation.angle;\r\n            var pointCoords;\r\n            var series;\r\n            if (annotation.series) {\r\n                series = this.series.filter(function(s) {\r\n                    return s.name === annotation.series\r\n                })[0]\r\n            }(0, _extend.extend)(true, coords, this.getXYFromPolar(angle, radius, argument, value));\r\n            if ((0, _type.isDefined)(series)) {\r\n                if ((0, _type.isDefined)(coords.angle) && !(0, _type.isDefined)(value) && !(0, _type.isDefined)(radius)) {\r\n                    if (!(0, _type.isDefined)(argument)) {\r\n                        argument = argAxis.getTranslator().from(isFinite(angle) ? this.getActualAngle(angle) : coords.angle)\r\n                    }\r\n                    pointCoords = series.getSeriesPairCoord({\r\n                        argument: argument,\r\n                        angle: -coords.angle\r\n                    }, true)\r\n                } else {\r\n                    if ((0, _type.isDefined)(coords.radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(angle)) {\r\n                        pointCoords = series.getSeriesPairCoord({\r\n                            radius: coords.radius\r\n                        }, false)\r\n                    }\r\n                }\r\n                if ((0, _type.isDefined)(pointCoords)) {\r\n                    coords.x = pointCoords.x;\r\n                    coords.y = pointCoords.y\r\n                }\r\n            }\r\n            if (annotation.series && !(0, _type.isDefined)(pointCoords)) {\r\n                coords.x = coords.y = void 0\r\n            }\r\n            return coords\r\n        },\r\n        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,\r\n        _isAnnotationBounded: chartPlugin.members._isAnnotationBounded,\r\n        _pullOptions: function(options) {\r\n            var polarOptions = (0, _extend.extend)({}, {\r\n                radius: options.radius,\r\n                angle: options.angle\r\n            }, chartPlugin.members._pullOptions(options));\r\n            delete polarOptions.axis;\r\n            return polarOptions\r\n        },\r\n        _forceAnnotationRender: chartPlugin.members._forceAnnotationRender,\r\n        _clear: chartPlugin.members._clear\r\n    }\r\n};\r\nvar vectorMapPlugin = {\r\n    name: \"annotations_vector_map\",\r\n    init: function() {},\r\n    dispose: function() {\r\n        this._annotations._offTracker();\r\n        this._annotations._offTracker = null\r\n    },\r\n    members: {\r\n        _getAnnotationCoords: function(annotation) {\r\n            var coords = {\r\n                offsetX: annotation.offsetX,\r\n                offsetY: annotation.offsetY\r\n            };\r\n            coords.canvas = this._projection.getCanvas();\r\n            if (annotation.coordinates) {\r\n                var data = this._projection.toScreenPoint(annotation.coordinates);\r\n                coords.x = data[0];\r\n                coords.y = data[1]\r\n            }\r\n            return coords\r\n        },\r\n        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,\r\n        _isAnnotationBounded: function(options) {\r\n            return (0, _type.isDefined)(options.coordinates)\r\n        },\r\n        _pullOptions: function(options) {\r\n            var vectorMapOptions = (0, _extend.extend)({}, {\r\n                coordinates: options.coordinates\r\n            }, chartPlugin.members._pullOptions(options));\r\n            delete vectorMapOptions.axis;\r\n            delete vectorMapOptions.series;\r\n            delete vectorMapOptions.argument;\r\n            delete vectorMapOptions.value;\r\n            return vectorMapOptions\r\n        },\r\n        _forceAnnotationRender: function() {\r\n            this._change([\"EXTRA_ELEMENTS\"])\r\n        },\r\n        _getAnnotationStyles: function() {\r\n            return {\r\n                \"text-anchor\": \"start\"\r\n            }\r\n        },\r\n        _clear: function() {}\r\n    },\r\n    extenders: {\r\n        _prepareExtraElements: function() {\r\n            var that = this;\r\n            var renderElements = function() {\r\n                that._renderExtraElements()\r\n            };\r\n            that._annotations._offTracker = that._tracker.on({\r\n                move: renderElements,\r\n                zoom: renderElements,\r\n                end: renderElements\r\n            })\r\n        }\r\n    }\r\n};\r\nvar pieChartPlugin = {\r\n    name: \"annotations_pie_chart\",\r\n    init: function() {},\r\n    dispose: function() {},\r\n    members: {\r\n        _getAnnotationCoords: function(annotation) {\r\n            var series;\r\n            var coords = {\r\n                offsetX: annotation.offsetX,\r\n                offsetY: annotation.offsetY,\r\n                canvas: this._canvas\r\n            };\r\n            if (annotation.argument) {\r\n                if (annotation.series) {\r\n                    series = this.getSeriesByName(annotation.series)\r\n                } else {\r\n                    series = this.series[0]\r\n                }\r\n                var argument = series.getPointsByArg(annotation.argument)[0];\r\n                var _argument$getAnnotati = argument.getAnnotationCoords(annotation.location),\r\n                    x = _argument$getAnnotati.x,\r\n                    y = _argument$getAnnotati.y;\r\n                coords.x = x;\r\n                coords.y = y\r\n            }\r\n            return coords\r\n        },\r\n        _isAnnotationBounded: function(options) {\r\n            return options.argument\r\n        },\r\n        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,\r\n        _pullOptions: function(options) {\r\n            var pieChartOptions = (0, _extend.extend)({}, {\r\n                location: options.location\r\n            }, chartPlugin.members._pullOptions(options));\r\n            delete pieChartOptions.axis;\r\n            return pieChartOptions\r\n        },\r\n        _clear: chartPlugin.members._clear,\r\n        _forceAnnotationRender: chartPlugin.members._forceAnnotationRender\r\n    }\r\n};\r\nvar corePlugin = {\r\n    name: \"annotations_core\",\r\n    init: function() {\r\n        this._annotations = {\r\n            items: [],\r\n            _hideToolTipForDrag: false,\r\n            tooltip: new _tooltip.Tooltip({\r\n                cssClass: \"\".concat(this._rootClassPrefix, \"-annotation-tooltip\"),\r\n                eventTrigger: this._eventTrigger,\r\n                widgetRoot: this.element(),\r\n                widget: this\r\n            }),\r\n            hideTooltip: function() {\r\n                this.tooltip.annotation = null;\r\n                this.tooltip.hide()\r\n            },\r\n            clearItems: function() {\r\n                this.items.forEach(function(i) {\r\n                    return i.plaque.clear()\r\n                });\r\n                this.items = []\r\n            }\r\n        };\r\n        this._annotations.tooltip.setRendererOptions(this._getRendererOptions())\r\n    },\r\n    dispose: function() {\r\n        this._annotationsGroup.linkRemove().linkOff();\r\n        _events_engine.default.off(getDocument(), DOT_EVENT_NS);\r\n        this._annotationsGroup.off(DOT_EVENT_NS);\r\n        this._annotations.tooltip && this._annotations.tooltip.dispose()\r\n    },\r\n    extenders: {\r\n        _createHtmlStructure: function() {\r\n            var _this2 = this;\r\n            this._annotationsGroup = this._renderer.g().attr({\r\n                \"class\": \"\".concat(this._rootClassPrefix, \"-annotations\")\r\n            }).css(this._getAnnotationStyles()).linkOn(this._renderer.root, \"annotations\").linkAppend();\r\n            _events_engine.default.on(getDocument(), POINTER_ACTION, function() {\r\n                return _this2._annotations.hideTooltip()\r\n            });\r\n            _events_engine.default.on(getDocument(), POINTER_UP_EVENT_NAME, function(event) {\r\n                _this2._annotations._hideToolTipForDrag = false;\r\n                _this2._annotationsPointerEventHandler(event)\r\n            });\r\n            this._annotationsGroup.on(POINTER_ACTION, this._annotationsPointerEventHandler.bind(this))\r\n        },\r\n        _renderExtraElements: function() {\r\n            var _this3 = this;\r\n            this._annotationsGroup.clear();\r\n            this._annotations.items.forEach(function(item) {\r\n                return item.draw(_this3, _this3._annotationsGroup)\r\n            })\r\n        },\r\n        _stopCurrentHandling: function() {\r\n            this._annotations.hideTooltip()\r\n        }\r\n    },\r\n    members: {\r\n        _buildAnnotations: function() {\r\n            this._annotations.clearItems();\r\n            var items = this._getOption(\"annotations\", true);\r\n            if (!(null !== items && void 0 !== items && items.length)) {\r\n                return\r\n            }\r\n            this._annotations.items = createAnnotations(this, items, this._getOption(\"commonAnnotationSettings\"), this._getOption(\"customizeAnnotation\", true), this._pullOptions)\r\n        },\r\n        _setAnnotationTooltipOptions: function() {\r\n            var tooltipOptions = (0, _extend.extend)({}, this._getOption(\"tooltip\"));\r\n            tooltipOptions.contentTemplate = tooltipOptions.customizeTooltip = void 0;\r\n            this._annotations.tooltip.update(tooltipOptions)\r\n        },\r\n        _getAnnotationCoords: function() {\r\n            return {}\r\n        },\r\n        _pullOptions: function() {\r\n            return {}\r\n        },\r\n        _getAnnotationStyles: function() {\r\n            return {}\r\n        }\r\n    },\r\n    customize: function(constructor) {\r\n        constructor.addChange({\r\n            code: \"ANNOTATIONITEMS\",\r\n            handler: function() {\r\n                this._requestChange([\"ANNOTATIONS\"])\r\n            },\r\n            isOptionChange: true,\r\n            option: \"annotations\"\r\n        });\r\n        constructor.addChange({\r\n            code: \"ANNOTATIONSSETTINGS\",\r\n            handler: function() {\r\n                this._requestChange([\"ANNOTATIONS\"])\r\n            },\r\n            isOptionChange: true,\r\n            option: \"commonAnnotationSettings\"\r\n        });\r\n        constructor.addChange({\r\n            code: \"ANNOTATIONS\",\r\n            handler: function() {\r\n                this._buildAnnotations();\r\n                this._setAnnotationTooltipOptions();\r\n                this._forceAnnotationRender()\r\n            },\r\n            isThemeDependent: true,\r\n            isOptionChange: true\r\n        })\r\n    },\r\n    fontFields: [\"commonAnnotationSettings.font\"]\r\n};\r\nvar plugins = {\r\n    core: corePlugin,\r\n    chart: chartPlugin,\r\n    polarChart: polarChartPlugin,\r\n    vectorMap: vectorMapPlugin,\r\n    pieChart: pieChartPlugin\r\n};\r\nexports.plugins = plugins;\r\n","/**\r\n * DevExtreme (ui/tree_list.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./tree_list/ui.tree_list\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (color.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar standardColorNames = {\r\n    aliceblue: \"f0f8ff\",\r\n    antiquewhite: \"faebd7\",\r\n    aqua: \"00ffff\",\r\n    aquamarine: \"7fffd4\",\r\n    azure: \"f0ffff\",\r\n    beige: \"f5f5dc\",\r\n    bisque: \"ffe4c4\",\r\n    black: \"000000\",\r\n    blanchedalmond: \"ffebcd\",\r\n    blue: \"0000ff\",\r\n    blueviolet: \"8a2be2\",\r\n    brown: \"a52a2a\",\r\n    burlywood: \"deb887\",\r\n    cadetblue: \"5f9ea0\",\r\n    chartreuse: \"7fff00\",\r\n    chocolate: \"d2691e\",\r\n    coral: \"ff7f50\",\r\n    cornflowerblue: \"6495ed\",\r\n    cornsilk: \"fff8dc\",\r\n    crimson: \"dc143c\",\r\n    cyan: \"00ffff\",\r\n    darkblue: \"00008b\",\r\n    darkcyan: \"008b8b\",\r\n    darkgoldenrod: \"b8860b\",\r\n    darkgray: \"a9a9a9\",\r\n    darkgreen: \"006400\",\r\n    darkkhaki: \"bdb76b\",\r\n    darkmagenta: \"8b008b\",\r\n    darkolivegreen: \"556b2f\",\r\n    darkorange: \"ff8c00\",\r\n    darkorchid: \"9932cc\",\r\n    darkred: \"8b0000\",\r\n    darksalmon: \"e9967a\",\r\n    darkseagreen: \"8fbc8f\",\r\n    darkslateblue: \"483d8b\",\r\n    darkslategray: \"2f4f4f\",\r\n    darkturquoise: \"00ced1\",\r\n    darkviolet: \"9400d3\",\r\n    deeppink: \"ff1493\",\r\n    deepskyblue: \"00bfff\",\r\n    dimgray: \"696969\",\r\n    dodgerblue: \"1e90ff\",\r\n    feldspar: \"d19275\",\r\n    firebrick: \"b22222\",\r\n    floralwhite: \"fffaf0\",\r\n    forestgreen: \"228b22\",\r\n    fuchsia: \"ff00ff\",\r\n    gainsboro: \"dcdcdc\",\r\n    ghostwhite: \"f8f8ff\",\r\n    gold: \"ffd700\",\r\n    goldenrod: \"daa520\",\r\n    gray: \"808080\",\r\n    green: \"008000\",\r\n    greenyellow: \"adff2f\",\r\n    honeydew: \"f0fff0\",\r\n    hotpink: \"ff69b4\",\r\n    indianred: \"cd5c5c\",\r\n    indigo: \"4b0082\",\r\n    ivory: \"fffff0\",\r\n    khaki: \"f0e68c\",\r\n    lavender: \"e6e6fa\",\r\n    lavenderblush: \"fff0f5\",\r\n    lawngreen: \"7cfc00\",\r\n    lemonchiffon: \"fffacd\",\r\n    lightblue: \"add8e6\",\r\n    lightcoral: \"f08080\",\r\n    lightcyan: \"e0ffff\",\r\n    lightgoldenrodyellow: \"fafad2\",\r\n    lightgrey: \"d3d3d3\",\r\n    lightgreen: \"90ee90\",\r\n    lightpink: \"ffb6c1\",\r\n    lightsalmon: \"ffa07a\",\r\n    lightseagreen: \"20b2aa\",\r\n    lightskyblue: \"87cefa\",\r\n    lightslateblue: \"8470ff\",\r\n    lightslategray: \"778899\",\r\n    lightsteelblue: \"b0c4de\",\r\n    lightyellow: \"ffffe0\",\r\n    lime: \"00ff00\",\r\n    limegreen: \"32cd32\",\r\n    linen: \"faf0e6\",\r\n    magenta: \"ff00ff\",\r\n    maroon: \"800000\",\r\n    mediumaquamarine: \"66cdaa\",\r\n    mediumblue: \"0000cd\",\r\n    mediumorchid: \"ba55d3\",\r\n    mediumpurple: \"9370d8\",\r\n    mediumseagreen: \"3cb371\",\r\n    mediumslateblue: \"7b68ee\",\r\n    mediumspringgreen: \"00fa9a\",\r\n    mediumturquoise: \"48d1cc\",\r\n    mediumvioletred: \"c71585\",\r\n    midnightblue: \"191970\",\r\n    mintcream: \"f5fffa\",\r\n    mistyrose: \"ffe4e1\",\r\n    moccasin: \"ffe4b5\",\r\n    navajowhite: \"ffdead\",\r\n    navy: \"000080\",\r\n    oldlace: \"fdf5e6\",\r\n    olive: \"808000\",\r\n    olivedrab: \"6b8e23\",\r\n    orange: \"ffa500\",\r\n    orangered: \"ff4500\",\r\n    orchid: \"da70d6\",\r\n    palegoldenrod: \"eee8aa\",\r\n    palegreen: \"98fb98\",\r\n    paleturquoise: \"afeeee\",\r\n    palevioletred: \"d87093\",\r\n    papayawhip: \"ffefd5\",\r\n    peachpuff: \"ffdab9\",\r\n    peru: \"cd853f\",\r\n    pink: \"ffc0cb\",\r\n    plum: \"dda0dd\",\r\n    powderblue: \"b0e0e6\",\r\n    purple: \"800080\",\r\n    rebeccapurple: \"663399\",\r\n    red: \"ff0000\",\r\n    rosybrown: \"bc8f8f\",\r\n    royalblue: \"4169e1\",\r\n    saddlebrown: \"8b4513\",\r\n    salmon: \"fa8072\",\r\n    sandybrown: \"f4a460\",\r\n    seagreen: \"2e8b57\",\r\n    seashell: \"fff5ee\",\r\n    sienna: \"a0522d\",\r\n    silver: \"c0c0c0\",\r\n    skyblue: \"87ceeb\",\r\n    slateblue: \"6a5acd\",\r\n    slategray: \"708090\",\r\n    snow: \"fffafa\",\r\n    springgreen: \"00ff7f\",\r\n    steelblue: \"4682b4\",\r\n    tan: \"d2b48c\",\r\n    teal: \"008080\",\r\n    thistle: \"d8bfd8\",\r\n    tomato: \"ff6347\",\r\n    turquoise: \"40e0d0\",\r\n    violet: \"ee82ee\",\r\n    violetred: \"d02090\",\r\n    wheat: \"f5deb3\",\r\n    white: \"ffffff\",\r\n    whitesmoke: \"f5f5f5\",\r\n    yellow: \"ffff00\",\r\n    yellowgreen: \"9acd32\"\r\n};\r\nvar standardColorTypes = [{\r\n    re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n    process: function(colorString) {\r\n        return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10)]\r\n    }\r\n}, {\r\n    re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d*\\.*\\d+)\\)$/,\r\n    process: function(colorString) {\r\n        return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10), parseFloat(colorString[4])]\r\n    }\r\n}, {\r\n    re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,\r\n    process: function(colorString) {\r\n        return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16)]\r\n    }\r\n}, {\r\n    re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,\r\n    process: function(colorString) {\r\n        return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16)]\r\n    }\r\n}, {\r\n    re: /^hsv\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n    process: function(colorString) {\r\n        var h = parseInt(colorString[1], 10);\r\n        var s = parseInt(colorString[2], 10);\r\n        var v = parseInt(colorString[3], 10);\r\n        var rgb = hsvToRgb(h, s, v);\r\n        return [rgb[0], rgb[1], rgb[2], 1, [h, s, v]]\r\n    }\r\n}, {\r\n    re: /^hsl\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n    process: function(colorString) {\r\n        var h = parseInt(colorString[1], 10);\r\n        var s = parseInt(colorString[2], 10);\r\n        var l = parseInt(colorString[3], 10);\r\n        var rgb = hslToRgb(h, s, l);\r\n        return [rgb[0], rgb[1], rgb[2], 1, null, [h, s, l]]\r\n    }\r\n}];\r\nvar _round = Math.round;\r\n\r\nfunction Color(value) {\r\n    this.baseColor = value;\r\n    var color;\r\n    if (value) {\r\n        color = String(value).toLowerCase().replace(/ /g, \"\");\r\n        color = standardColorNames[color] ? \"#\" + standardColorNames[color] : color;\r\n        color = parseColor(color)\r\n    }\r\n    if (!color) {\r\n        this.colorIsInvalid = true\r\n    }\r\n    color = color || {};\r\n    this.r = normalize(color[0]);\r\n    this.g = normalize(color[1]);\r\n    this.b = normalize(color[2]);\r\n    this.a = normalize(color[3], 1, 1);\r\n    if (color[4]) {\r\n        this.hsv = {\r\n            h: color[4][0],\r\n            s: color[4][1],\r\n            v: color[4][2]\r\n        }\r\n    } else {\r\n        this.hsv = toHsvFromRgb(this.r, this.g, this.b)\r\n    }\r\n    if (color[5]) {\r\n        this.hsl = {\r\n            h: color[5][0],\r\n            s: color[5][1],\r\n            l: color[5][2]\r\n        }\r\n    } else {\r\n        this.hsl = toHslFromRgb(this.r, this.g, this.b)\r\n    }\r\n}\r\n\r\nfunction parseColor(color) {\r\n    if (\"transparent\" === color) {\r\n        return [0, 0, 0, 0]\r\n    }\r\n    var i = 0;\r\n    var ii = standardColorTypes.length;\r\n    var str;\r\n    for (; i < ii; ++i) {\r\n        str = standardColorTypes[i].re.exec(color);\r\n        if (str) {\r\n            return standardColorTypes[i].process(str)\r\n        }\r\n    }\r\n    return null\r\n}\r\n\r\nfunction normalize(colorComponent, def, max) {\r\n    def = def || 0;\r\n    max = max || 255;\r\n    return colorComponent < 0 || isNaN(colorComponent) ? def : colorComponent > max ? max : colorComponent\r\n}\r\n\r\nfunction toHexFromRgb(r, g, b) {\r\n    return \"#\" + (16777216 | r << 16 | g << 8 | b).toString(16).slice(1)\r\n}\r\n\r\nfunction toHsvFromRgb(r, g, b) {\r\n    var max = Math.max(r, g, b);\r\n    var min = Math.min(r, g, b);\r\n    var delta = max - min;\r\n    var H;\r\n    var S;\r\n    var V = max;\r\n    S = 0 === max ? 0 : 1 - min / max;\r\n    if (max === min) {\r\n        H = 0\r\n    } else {\r\n        switch (max) {\r\n            case r:\r\n                H = 60 * ((g - b) / delta);\r\n                if (g < b) {\r\n                    H += 360\r\n                }\r\n                break;\r\n            case g:\r\n                H = 60 * ((b - r) / delta) + 120;\r\n                break;\r\n            case b:\r\n                H = 60 * ((r - g) / delta) + 240\r\n        }\r\n    }\r\n    S *= 100;\r\n    V *= 100 / 255;\r\n    return {\r\n        h: Math.round(H),\r\n        s: Math.round(S),\r\n        v: Math.round(V)\r\n    }\r\n}\r\n\r\nfunction hsvToRgb(h, s, v) {\r\n    var index = Math.floor(h % 360 / 60);\r\n    var vMin = (100 - s) * v / 100;\r\n    var a = (v - vMin) * (h % 60 / 60);\r\n    var vInc = vMin + a;\r\n    var vDec = v - a;\r\n    var r;\r\n    var g;\r\n    var b;\r\n    switch (index) {\r\n        case 0:\r\n            r = v;\r\n            g = vInc;\r\n            b = vMin;\r\n            break;\r\n        case 1:\r\n            r = vDec;\r\n            g = v;\r\n            b = vMin;\r\n            break;\r\n        case 2:\r\n            r = vMin;\r\n            g = v;\r\n            b = vInc;\r\n            break;\r\n        case 3:\r\n            r = vMin;\r\n            g = vDec;\r\n            b = v;\r\n            break;\r\n        case 4:\r\n            r = vInc;\r\n            g = vMin;\r\n            b = v;\r\n            break;\r\n        case 5:\r\n            r = v;\r\n            g = vMin;\r\n            b = vDec\r\n    }\r\n    return [Math.round(2.55 * r), Math.round(2.55 * g), Math.round(2.55 * b)]\r\n}\r\n\r\nfunction calculateHue(r, g, b, delta) {\r\n    var max = Math.max(r, g, b);\r\n    switch (max) {\r\n        case r:\r\n            return (g - b) / delta + (g < b ? 6 : 0);\r\n        case g:\r\n            return (b - r) / delta + 2;\r\n        case b:\r\n            return (r - g) / delta + 4\r\n    }\r\n}\r\n\r\nfunction toHslFromRgb(r, g, b) {\r\n    r = convertTo01Bounds(r, 255);\r\n    g = convertTo01Bounds(g, 255);\r\n    b = convertTo01Bounds(b, 255);\r\n    var max = Math.max(r, g, b);\r\n    var min = Math.min(r, g, b);\r\n    var maxMinSum = max + min;\r\n    var h;\r\n    var s;\r\n    var l = maxMinSum / 2;\r\n    if (max === min) {\r\n        h = s = 0\r\n    } else {\r\n        var delta = max - min;\r\n        if (l > .5) {\r\n            s = delta / (2 - maxMinSum)\r\n        } else {\r\n            s = delta / maxMinSum\r\n        }\r\n        h = calculateHue(r, g, b, delta);\r\n        h /= 6\r\n    }\r\n    return {\r\n        h: _round(360 * h),\r\n        s: _round(100 * s),\r\n        l: _round(100 * l)\r\n    }\r\n}\r\n\r\nfunction makeColorTint(colorPart, h) {\r\n    var colorTint = h;\r\n    if (\"r\" === colorPart) {\r\n        colorTint = h + 1 / 3\r\n    }\r\n    if (\"b\" === colorPart) {\r\n        colorTint = h - 1 / 3\r\n    }\r\n    return colorTint\r\n}\r\n\r\nfunction modifyColorTint(colorTint) {\r\n    if (colorTint < 0) {\r\n        colorTint += 1\r\n    }\r\n    if (colorTint > 1) {\r\n        colorTint -= 1\r\n    }\r\n    return colorTint\r\n}\r\n\r\nfunction hueToRgb(p, q, colorTint) {\r\n    colorTint = modifyColorTint(colorTint);\r\n    if (colorTint < 1 / 6) {\r\n        return p + 6 * (q - p) * colorTint\r\n    }\r\n    if (colorTint < .5) {\r\n        return q\r\n    }\r\n    if (colorTint < 2 / 3) {\r\n        return p + (q - p) * (2 / 3 - colorTint) * 6\r\n    }\r\n    return p\r\n}\r\n\r\nfunction hslToRgb(h, s, l) {\r\n    var r;\r\n    var g;\r\n    var b;\r\n    h = convertTo01Bounds(h, 360);\r\n    s = convertTo01Bounds(s, 100);\r\n    l = convertTo01Bounds(l, 100);\r\n    if (0 === s) {\r\n        r = g = b = l\r\n    } else {\r\n        var q = l < .5 ? l * (1 + s) : l + s - l * s;\r\n        var p = 2 * l - q;\r\n        r = hueToRgb(p, q, makeColorTint(\"r\", h));\r\n        g = hueToRgb(p, q, makeColorTint(\"g\", h));\r\n        b = hueToRgb(p, q, makeColorTint(\"b\", h))\r\n    }\r\n    return [_round(255 * r), _round(255 * g), _round(255 * b)]\r\n}\r\n\r\nfunction convertTo01Bounds(n, max) {\r\n    n = Math.min(max, Math.max(0, parseFloat(n)));\r\n    if (Math.abs(n - max) < 1e-6) {\r\n        return 1\r\n    }\r\n    return n % max / parseFloat(max)\r\n}\r\n\r\nfunction isIntegerBetweenMinAndMax(number, min, max) {\r\n    min = min || 0;\r\n    max = max || 255;\r\n    if (number % 1 !== 0 || number < min || number > max || \"number\" !== typeof number || isNaN(number)) {\r\n        return false\r\n    }\r\n    return true\r\n}\r\nColor.prototype = {\r\n    constructor: Color,\r\n    highlight: function(step) {\r\n        step = step || 10;\r\n        return this.alter(step).toHex()\r\n    },\r\n    darken: function(step) {\r\n        step = step || 10;\r\n        return this.alter(-step).toHex()\r\n    },\r\n    alter: function(step) {\r\n        var result = new Color;\r\n        result.r = normalize(this.r + step);\r\n        result.g = normalize(this.g + step);\r\n        result.b = normalize(this.b + step);\r\n        return result\r\n    },\r\n    blend: function(blendColor, opacity) {\r\n        var other = blendColor instanceof Color ? blendColor : new Color(blendColor);\r\n        var result = new Color;\r\n        result.r = normalize(_round(this.r * (1 - opacity) + other.r * opacity));\r\n        result.g = normalize(_round(this.g * (1 - opacity) + other.g * opacity));\r\n        result.b = normalize(_round(this.b * (1 - opacity) + other.b * opacity));\r\n        return result\r\n    },\r\n    toHex: function() {\r\n        return toHexFromRgb(this.r, this.g, this.b)\r\n    },\r\n    getPureColor: function() {\r\n        var rgb = hsvToRgb(this.hsv.h, 100, 100);\r\n        return new Color(\"rgb(\" + rgb.join(\",\") + \")\")\r\n    },\r\n    isValidHex: function(hex) {\r\n        return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex)\r\n    },\r\n    isValidRGB: function(r, g, b) {\r\n        if (!isIntegerBetweenMinAndMax(r) || !isIntegerBetweenMinAndMax(g) || !isIntegerBetweenMinAndMax(b)) {\r\n            return false\r\n        }\r\n        return true\r\n    },\r\n    isValidAlpha: function(a) {\r\n        if (isNaN(a) || a < 0 || a > 1 || \"number\" !== typeof a) {\r\n            return false\r\n        }\r\n        return true\r\n    },\r\n    colorIsInvalid: false,\r\n    fromHSL: function(hsl) {\r\n        var color = new Color;\r\n        var rgb = hslToRgb(hsl.h, hsl.s, hsl.l);\r\n        color.r = rgb[0];\r\n        color.g = rgb[1];\r\n        color.b = rgb[2];\r\n        return color\r\n    }\r\n};\r\nvar _default = Color;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/constants.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS = exports.DIRECTION_APPOINTMENT_CLASSES = exports.REDUCED_APPOINTMENT_PARTS_CLASSES = exports.ALL_DAY_APPOINTMENT_CLASS = exports.EMPTY_APPOINTMENT_CLASS = exports.RECURRENCE_APPOINTMENT_CLASS = exports.REDUCED_APPOINTMENT_ICON = exports.REDUCED_APPOINTMENT_CLASS = exports.LIST_ITEM_CLASS = exports.FIXED_CONTAINER_CLASS = exports.LIST_ITEM_DATA_KEY = void 0;\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nexports.LIST_ITEM_DATA_KEY = LIST_ITEM_DATA_KEY;\r\nvar FIXED_CONTAINER_CLASS = \"dx-scheduler-fixed-appointments\";\r\nexports.FIXED_CONTAINER_CLASS = FIXED_CONTAINER_CLASS;\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nexports.LIST_ITEM_CLASS = LIST_ITEM_CLASS;\r\nvar REDUCED_APPOINTMENT_CLASS = \"dx-scheduler-appointment-reduced\";\r\nexports.REDUCED_APPOINTMENT_CLASS = REDUCED_APPOINTMENT_CLASS;\r\nvar REDUCED_APPOINTMENT_ICON = \"dx-scheduler-appointment-reduced-icon\";\r\nexports.REDUCED_APPOINTMENT_ICON = REDUCED_APPOINTMENT_ICON;\r\nvar RECURRENCE_APPOINTMENT_CLASS = \"dx-scheduler-appointment-recurrence\";\r\nexports.RECURRENCE_APPOINTMENT_CLASS = RECURRENCE_APPOINTMENT_CLASS;\r\nvar EMPTY_APPOINTMENT_CLASS = \"dx-scheduler-appointment-empty\";\r\nexports.EMPTY_APPOINTMENT_CLASS = EMPTY_APPOINTMENT_CLASS;\r\nvar ALL_DAY_APPOINTMENT_CLASS = \"dx-scheduler-all-day-appointment\";\r\nexports.ALL_DAY_APPOINTMENT_CLASS = ALL_DAY_APPOINTMENT_CLASS;\r\nvar REDUCED_APPOINTMENT_PARTS_CLASSES = {\r\n    head: \"dx-scheduler-appointment-head\",\r\n    body: \"dx-scheduler-appointment-body\",\r\n    tail: \"dx-scheduler-appointment-tail\"\r\n};\r\nexports.REDUCED_APPOINTMENT_PARTS_CLASSES = REDUCED_APPOINTMENT_PARTS_CLASSES;\r\nvar DIRECTION_APPOINTMENT_CLASSES = {\r\n    horizontal: \"dx-scheduler-appointment-horizontal\",\r\n    vertical: \"dx-scheduler-appointment-vertical\"\r\n};\r\nexports.DIRECTION_APPOINTMENT_CLASSES = DIRECTION_APPOINTMENT_CLASSES;\r\nvar AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS = \"dx-scheduler-last-in-date-agenda-appointment\";\r\nexports.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS = AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS;\r\n","/**\r\n * DevExtreme (events/pointer/base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _index = require(\"../utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar POINTER_EVENTS_NAMESPACE = \"dxPointerEvents\";\r\nvar BaseStrategy = _class.default.inherit({\r\n    ctor: function(eventName, originalEvents) {\r\n        this._eventName = eventName;\r\n        this._originalEvents = (0, _index.addNamespace)(originalEvents, POINTER_EVENTS_NAMESPACE);\r\n        this._handlerCount = 0;\r\n        this.noBubble = this._isNoBubble()\r\n    },\r\n    _isNoBubble: function() {\r\n        var eventName = this._eventName;\r\n        return \"dxpointerenter\" === eventName || \"dxpointerleave\" === eventName\r\n    },\r\n    _handler: function(e) {\r\n        var delegateTarget = this._getDelegateTarget(e);\r\n        return this._fireEvent({\r\n            type: this._eventName,\r\n            pointerType: e.pointerType || (0, _index.eventSource)(e),\r\n            originalEvent: e,\r\n            delegateTarget: delegateTarget,\r\n            timeStamp: _browser.default.mozilla ? (new Date).getTime() : e.timeStamp\r\n        })\r\n    },\r\n    _getDelegateTarget: function(e) {\r\n        var delegateTarget;\r\n        if (this.noBubble) {\r\n            delegateTarget = e.delegateTarget\r\n        }\r\n        return delegateTarget\r\n    },\r\n    _fireEvent: function(args) {\r\n        return (0, _index.fireEvent)(args)\r\n    },\r\n    _setSelector: function(handleObj) {\r\n        this._selector = this.noBubble && handleObj ? handleObj.selector : null\r\n    },\r\n    _getSelector: function() {\r\n        return this._selector\r\n    },\r\n    setup: function() {\r\n        return true\r\n    },\r\n    add: function(element, handleObj) {\r\n        if (this._handlerCount <= 0 || this.noBubble) {\r\n            element = this.noBubble ? element : _dom_adapter.default.getDocument();\r\n            this._setSelector(handleObj);\r\n            var that = this;\r\n            _events_engine.default.on(element, this._originalEvents, this._getSelector(), function(e) {\r\n                that._handler(e)\r\n            })\r\n        }\r\n        if (!this.noBubble) {\r\n            this._handlerCount++\r\n        }\r\n    },\r\n    remove: function(handleObj) {\r\n        this._setSelector(handleObj);\r\n        if (!this.noBubble) {\r\n            this._handlerCount--\r\n        }\r\n    },\r\n    teardown: function(element) {\r\n        if (this._handlerCount && !this.noBubble) {\r\n            return\r\n        }\r\n        element = this.noBubble ? element : _dom_adapter.default.getDocument();\r\n        if (this._originalEvents !== \".\" + POINTER_EVENTS_NAMESPACE) {\r\n            _events_engine.default.off(element, this._originalEvents, this._getSelector())\r\n        }\r\n    },\r\n    dispose: function(element) {\r\n        element = this.noBubble ? element : _dom_adapter.default.getDocument();\r\n        _events_engine.default.off(element, this._originalEvents)\r\n    }\r\n});\r\nvar _default = BaseStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/popover.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _element = require(\"../core/element\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _translator = require(\"../animation/translator\");\r\nvar _position = _interopRequireDefault(require(\"../animation/position\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _math = require(\"../core/utils/math\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _popup = _interopRequireDefault(require(\"./popup\"));\r\nvar _position2 = require(\"../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar POPOVER_CLASS = \"dx-popover\";\r\nvar POPOVER_WRAPPER_CLASS = \"dx-popover-wrapper\";\r\nvar POPOVER_ARROW_CLASS = \"dx-popover-arrow\";\r\nvar POPOVER_WITHOUT_TITLE_CLASS = \"dx-popover-without-title\";\r\nvar POSITION_FLIP_MAP = {\r\n    left: \"right\",\r\n    top: \"bottom\",\r\n    right: \"left\",\r\n    bottom: \"top\",\r\n    center: \"center\"\r\n};\r\nvar WEIGHT_OF_SIDES = {\r\n    left: -1,\r\n    top: -1,\r\n    center: 0,\r\n    right: 1,\r\n    bottom: 1\r\n};\r\nvar POSITION_ALIASES = {\r\n    top: {\r\n        my: \"bottom center\",\r\n        at: \"top center\",\r\n        collision: \"fit flip\"\r\n    },\r\n    bottom: {\r\n        my: \"top center\",\r\n        at: \"bottom center\",\r\n        collision: \"fit flip\"\r\n    },\r\n    right: {\r\n        my: \"left center\",\r\n        at: \"right center\",\r\n        collision: \"flip fit\"\r\n    },\r\n    left: {\r\n        my: \"right center\",\r\n        at: \"left center\",\r\n        collision: \"flip fit\"\r\n    }\r\n};\r\nvar SIDE_BORDER_WIDTH_STYLES = {\r\n    left: \"borderLeftWidth\",\r\n    top: \"borderTopWidth\",\r\n    right: \"borderRightWidth\",\r\n    bottom: \"borderBottomWidth\"\r\n};\r\nvar getEventNameByOption = function(optionValue) {\r\n    return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue\r\n};\r\nvar getEventName = function(that, optionName) {\r\n    var optionValue = that.option(optionName);\r\n    return getEventNameByOption(optionValue)\r\n};\r\nvar getEventDelay = function(that, optionName) {\r\n    var optionValue = that.option(optionName);\r\n    return (0, _type.isObject)(optionValue) && optionValue.delay\r\n};\r\nvar attachEvent = function(that, name) {\r\n    var target = that.option(\"target\");\r\n    var isSelector = (0, _type.isString)(target);\r\n    var event = getEventName(that, name + \"Event\");\r\n    if (!event || that.option(\"disabled\")) {\r\n        return\r\n    }\r\n    var eventName = (0, _index.addNamespace)(event, that.NAME);\r\n    var action = that._createAction(function() {\r\n        var delay = getEventDelay(that, name + \"Event\");\r\n        this._clearEventsTimeouts();\r\n        if (delay) {\r\n            this._timeouts[name] = setTimeout(function() {\r\n                that[name]()\r\n            }, delay)\r\n        } else {\r\n            that[name]()\r\n        }\r\n    }.bind(that), {\r\n        validatingTargetName: \"target\"\r\n    });\r\n    var handler = function(e) {\r\n        action({\r\n            event: e,\r\n            target: (0, _renderer.default)(e.currentTarget)\r\n        })\r\n    };\r\n    var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n    if (isSelector) {\r\n        that[EVENT_HANDLER_NAME] = handler;\r\n        _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, target, handler)\r\n    } else {\r\n        var targetElement = (0, _element.getPublicElement)((0, _renderer.default)(target));\r\n        that[EVENT_HANDLER_NAME] = void 0;\r\n        _events_engine.default.on(targetElement, eventName, handler)\r\n    }\r\n};\r\nvar detachEvent = function(that, target, name, event) {\r\n    var eventName = event || getEventName(that, name + \"Event\");\r\n    if (!eventName) {\r\n        return\r\n    }\r\n    eventName = (0, _index.addNamespace)(eventName, that.NAME);\r\n    var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n    if (that[EVENT_HANDLER_NAME]) {\r\n        _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, target, that[EVENT_HANDLER_NAME])\r\n    } else {\r\n        _events_engine.default.off((0, _element.getPublicElement)((0, _renderer.default)(target)), eventName)\r\n    }\r\n};\r\nvar Popover = _popup.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            target: window,\r\n            shading: false,\r\n            position: \"bottom\",\r\n            closeOnOutsideClick: true,\r\n            animation: {\r\n                show: {\r\n                    type: \"fade\",\r\n                    from: 0,\r\n                    to: 1\r\n                },\r\n                hide: {\r\n                    type: \"fade\",\r\n                    to: 0\r\n                }\r\n            },\r\n            showTitle: false,\r\n            width: \"auto\",\r\n            height: \"auto\",\r\n            dragEnabled: false,\r\n            resizeEnabled: false,\r\n            fullScreen: false,\r\n            closeOnTargetScroll: true,\r\n            arrowPosition: \"\",\r\n            arrowOffset: 0,\r\n            boundaryOffset: {\r\n                h: 10,\r\n                v: 10\r\n            },\r\n            _fixedPosition: true\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return [{\r\n            device: {\r\n                platform: \"ios\"\r\n            },\r\n            options: {\r\n                arrowPosition: {\r\n                    boundaryOffset: {\r\n                        h: 20,\r\n                        v: -10\r\n                    },\r\n                    collision: \"fit\"\r\n                }\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return !(0, _window.hasWindow)()\r\n            },\r\n            options: {\r\n                animation: null\r\n            }\r\n        }]\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._renderArrow();\r\n        this._timeouts = {};\r\n        this.$element().addClass(POPOVER_CLASS);\r\n        this._wrapper().addClass(POPOVER_WRAPPER_CLASS)\r\n    },\r\n    _render: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._detachEvents(this.option(\"target\"));\r\n        this._attachEvents()\r\n    },\r\n    _detachEvents: function(target) {\r\n        detachEvent(this, target, \"show\");\r\n        detachEvent(this, target, \"hide\")\r\n    },\r\n    _attachEvents: function() {\r\n        attachEvent(this, \"show\");\r\n        attachEvent(this, \"hide\")\r\n    },\r\n    _renderArrow: function() {\r\n        this._$arrow = (0, _renderer.default)(\"<div>\").addClass(POPOVER_ARROW_CLASS).prependTo(this.overlayContent())\r\n    },\r\n    _documentDownHandler: function(e) {\r\n        if (this._isOutsideClick(e)) {\r\n            return this.callBase(e)\r\n        }\r\n        return true\r\n    },\r\n    _isOutsideClick: function(e) {\r\n        return !(0, _renderer.default)(e.target).closest(this.option(\"target\")).length\r\n    },\r\n    _animate: function(animation) {\r\n        if (animation && animation.to && \"object\" === _typeof(animation.to)) {\r\n            (0, _extend.extend)(animation.to, {\r\n                position: this._getContainerPosition()\r\n            })\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _stopAnimation: function() {\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _renderTitle: function() {\r\n        this._wrapper().toggleClass(POPOVER_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"));\r\n        this.callBase()\r\n    },\r\n    _renderPosition: function() {\r\n        this.callBase();\r\n        this._renderOverlayPosition()\r\n    },\r\n    _renderOverlayBoundaryOffset: _common.noop,\r\n    _renderOverlayPosition: function() {\r\n        this._resetOverlayPosition();\r\n        this._updateContentSize();\r\n        var contentPosition = this._getContainerPosition();\r\n        var resultLocation = _position.default.setup(this._$content, contentPosition);\r\n        var positionSide = this._getSideByLocation(resultLocation);\r\n        this._togglePositionClass(\"dx-position-\" + positionSide);\r\n        this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip);\r\n        var isArrowVisible = this._isHorizontalSide() || this._isVerticalSide();\r\n        if (isArrowVisible) {\r\n            this._renderArrowPosition(positionSide)\r\n        }\r\n    },\r\n    _resetOverlayPosition: function() {\r\n        this._setContentHeight(true);\r\n        this._togglePositionClass(\"dx-position-\" + this._positionSide);\r\n        (0, _translator.move)(this._$content, {\r\n            left: 0,\r\n            top: 0\r\n        });\r\n        this._$arrow.css({\r\n            top: \"auto\",\r\n            right: \"auto\",\r\n            bottom: \"auto\",\r\n            left: \"auto\"\r\n        })\r\n    },\r\n    _updateContentSize: function() {\r\n        if (!this._$popupContent) {\r\n            return\r\n        }\r\n        var containerLocation = _position.default.calculate(this._$content, this._getContainerPosition());\r\n        if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) {\r\n            var newContainerWidth = this._$content.width() - containerLocation.h.oversize;\r\n            this._$content.width(newContainerWidth)\r\n        }\r\n        if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) {\r\n            var newOverlayContentHeight = this._$content.height() - containerLocation.v.oversize;\r\n            var newPopupContentHeight = this._$popupContent.height() - containerLocation.v.oversize;\r\n            this._$content.height(newOverlayContentHeight);\r\n            this._$popupContent.height(newPopupContentHeight)\r\n        }\r\n    },\r\n    _getContainerPosition: function() {\r\n        var offset = (0, _common.pairToObject)(this._position.offset || \"\");\r\n        var hOffset = offset.h;\r\n        var vOffset = offset.v;\r\n        var isVerticalSide = this._isVerticalSide();\r\n        var isHorizontalSide = this._isHorizontalSide();\r\n        if (isVerticalSide || isHorizontalSide) {\r\n            var isPopoverInside = this._isPopoverInside();\r\n            var sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide];\r\n            var arrowSize = isVerticalSide ? this._$arrow.height() : this._$arrow.width();\r\n            var arrowSizeCorrection = this._getContentBorderWidth(this._positionSide);\r\n            var arrowOffset = sign * (arrowSize - arrowSizeCorrection);\r\n            isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset\r\n        }\r\n        return (0, _extend.extend)({}, this._position, {\r\n            offset: hOffset + \" \" + vOffset\r\n        })\r\n    },\r\n    _getContentBorderWidth: function(side) {\r\n        var borderWidth = this._$content.css(SIDE_BORDER_WIDTH_STYLES[side]);\r\n        return parseInt(borderWidth) || 0\r\n    },\r\n    _getSideByLocation: function(location) {\r\n        var isFlippedByVertical = location.v.flip;\r\n        var isFlippedByHorizontal = location.h.flip;\r\n        return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionSide] : this._positionSide\r\n    },\r\n    _togglePositionClass: function(positionClass) {\r\n        this._$wrapper.removeClass(\"dx-position-left dx-position-right dx-position-top dx-position-bottom\").addClass(positionClass)\r\n    },\r\n    _toggleFlippedClass: function(isFlippedHorizontal, isFlippedVertical) {\r\n        this._$wrapper.toggleClass(\"dx-popover-flipped-horizontal\", isFlippedHorizontal).toggleClass(\"dx-popover-flipped-vertical\", isFlippedVertical)\r\n    },\r\n    _renderArrowPosition: function(side) {\r\n        var arrowRect = (0, _position2.getBoundingRect)(this._$arrow.get(0));\r\n        var arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width);\r\n        this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip);\r\n        var axis = this._isVerticalSide(side) ? \"left\" : \"top\";\r\n        var sizeProperty = this._isVerticalSide(side) ? \"width\" : \"height\";\r\n        var $target = (0, _renderer.default)(this._position.of);\r\n        var targetOffset = _position.default.offset($target) || {\r\n            top: 0,\r\n            left: 0\r\n        };\r\n        var contentOffset = _position.default.offset(this._$content);\r\n        var arrowSize = arrowRect[sizeProperty];\r\n        var contentLocation = contentOffset[axis];\r\n        var contentSize = (0, _position2.getBoundingRect)(this._$content.get(0))[sizeProperty];\r\n        var targetLocation = targetOffset[axis];\r\n        var targetSize = $target.get(0).preventDefault ? 0 : (0, _position2.getBoundingRect)($target.get(0))[sizeProperty];\r\n        var min = Math.max(contentLocation, targetLocation);\r\n        var max = Math.min(contentLocation + contentSize, targetLocation + targetSize);\r\n        var arrowLocation;\r\n        if (\"start\" === this.option(\"arrowPosition\")) {\r\n            arrowLocation = min - contentLocation\r\n        } else {\r\n            if (\"end\" === this.option(\"arrowPosition\")) {\r\n                arrowLocation = max - contentLocation - arrowSize\r\n            } else {\r\n                arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2\r\n            }\r\n        }\r\n        var borderWidth = this._getContentBorderWidth(side);\r\n        var finalArrowLocation = (0, _math.fitIntoRange)(arrowLocation - borderWidth + this.option(\"arrowOffset\"), borderWidth, contentSize - arrowSize - 2 * borderWidth);\r\n        this._$arrow.css(axis, finalArrowLocation)\r\n    },\r\n    _isPopoverInside: function() {\r\n        var position = this._transformStringPosition(this.option(\"position\"), POSITION_ALIASES);\r\n        var my = _position.default.setup.normalizeAlign(position.my);\r\n        var at = _position.default.setup.normalizeAlign(position.at);\r\n        return my.h === at.h && my.v === at.v\r\n    },\r\n    _setContentHeight: function(fullUpdate) {\r\n        if (fullUpdate) {\r\n            this.callBase()\r\n        }\r\n    },\r\n    _renderWrapperPosition: function() {\r\n        if (this.option(\"shading\")) {\r\n            this._$wrapper.css({\r\n                top: 0,\r\n                left: 0\r\n            })\r\n        }\r\n    },\r\n    _renderWrapperDimensions: function() {\r\n        if (this.option(\"shading\")) {\r\n            this._$wrapper.css({\r\n                width: \"100%\",\r\n                height: \"100%\"\r\n            })\r\n        }\r\n    },\r\n    _normalizePosition: function() {\r\n        var position = (0, _extend.extend)({}, this._transformStringPosition(this.option(\"position\"), POSITION_ALIASES));\r\n        if (!position.of) {\r\n            position.of = this.option(\"target\")\r\n        }\r\n        if (!position.collision) {\r\n            position.collision = \"flip\"\r\n        }\r\n        if (!position.boundaryOffset) {\r\n            position.boundaryOffset = this.option(\"boundaryOffset\")\r\n        }\r\n        this._positionSide = this._getDisplaySide(position);\r\n        this._position = position\r\n    },\r\n    _getDisplaySide: function(position) {\r\n        var my = _position.default.setup.normalizeAlign(position.my);\r\n        var at = _position.default.setup.normalizeAlign(position.at);\r\n        var weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1;\r\n        var horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]);\r\n        var verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]);\r\n        return horizontalWeight > verticalWeight ? at.h : at.v\r\n    },\r\n    _isVerticalSide: function(side) {\r\n        side = side || this._positionSide;\r\n        return \"top\" === side || \"bottom\" === side\r\n    },\r\n    _isHorizontalSide: function(side) {\r\n        side = side || this._positionSide;\r\n        return \"left\" === side || \"right\" === side\r\n    },\r\n    _clearEventTimeout: function(name) {\r\n        clearTimeout(this._timeouts[name])\r\n    },\r\n    _clearEventsTimeouts: function() {\r\n        this._clearEventTimeout(\"show\");\r\n        this._clearEventTimeout(\"hide\")\r\n    },\r\n    _clean: function() {\r\n        this._detachEvents(this.option(\"target\"));\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"boundaryOffset\":\r\n            case \"arrowPosition\":\r\n            case \"arrowOffset\":\r\n                this._renderGeometry();\r\n                break;\r\n            case \"fullScreen\":\r\n                if (args.value) {\r\n                    this.option(\"fullScreen\", false)\r\n                }\r\n                break;\r\n            case \"target\":\r\n                args.previousValue && this._detachEvents(args.previousValue);\r\n                this.callBase(args);\r\n                break;\r\n            case \"showEvent\":\r\n            case \"hideEvent\":\r\n                var name = args.name.substring(0, 4);\r\n                var event = getEventNameByOption(args.previousValue);\r\n                this.hide();\r\n                detachEvent(this, this.option(\"target\"), name, event);\r\n                attachEvent(this, name);\r\n                break;\r\n            case \"visible\":\r\n                this._clearEventTimeout(args.value ? \"show\" : \"hide\");\r\n                this.callBase(args);\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    show: function(target) {\r\n        if (target) {\r\n            this.option(\"target\", target)\r\n        }\r\n        return this.callBase()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxPopover\", Popover);\r\nvar _default = Popover;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _number_box = _interopRequireDefault(require(\"./number_box.mask\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}(0, _component_registrator.default)(\"dxNumberBox\", _number_box.default);\r\nvar _default = _number_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/chart_components/advanced_chart.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.AdvancedChart = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range = require(\"../translators/range\");\r\nvar _base_axis = require(\"../axes/base_axis\");\r\nvar _series_family = require(\"../core/series_family\");\r\nvar _base_chart = require(\"./base_chart\");\r\nvar _crosshair = require(\"./crosshair\");\r\nvar _range_data_calculator = _interopRequireDefault(require(\"../series/helpers/range_data_calculator\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\nvar _isArray = Array.isArray;\r\nvar DEFAULT_AXIS_NAME = \"defaultAxisName\";\r\nvar FONT = \"font\";\r\nvar COMMON_AXIS_SETTINGS = \"commonAxisSettings\";\r\nvar DEFAULT_PANE_NAME = \"default\";\r\nvar VISUAL_RANGE = \"VISUAL_RANGE\";\r\n\r\nfunction prepareAxis(axisOptions) {\r\n    return _isArray(axisOptions) ? 0 === axisOptions.length ? [{}] : axisOptions : [axisOptions]\r\n}\r\n\r\nfunction processBubbleMargin(opt, bubbleSize) {\r\n    if (opt.processBubbleSize) {\r\n        opt.size = bubbleSize\r\n    }\r\n    return opt\r\n}\r\n\r\nfunction estimateBubbleSize(size, panesCount, maxSize, rotated) {\r\n    var width = rotated ? size.width / panesCount : size.width;\r\n    var height = rotated ? size.height : size.height / panesCount;\r\n    return Math.min(width, height) * maxSize\r\n}\r\n\r\nfunction setAxisVisualRangeByOption(arg, axis, isDirectOption, index) {\r\n    var options;\r\n    var visualRange;\r\n    if (isDirectOption) {\r\n        visualRange = arg.value;\r\n        options = {\r\n            skipEventRising: true\r\n        };\r\n        var pathElements = arg.fullName.split(\".\");\r\n        var destElem = pathElements[pathElements.length - 1];\r\n        if (\"endValue\" === destElem || \"startValue\" === destElem) {\r\n            options = {\r\n                allowPartialUpdate: true\r\n            };\r\n            visualRange = _defineProperty({}, destElem, arg.value)\r\n        }\r\n    } else {\r\n        visualRange = ((0, _type.isDefined)(index) ? arg.value[index] : arg.value).visualRange\r\n    }\r\n    axis.visualRange(visualRange, options)\r\n}\r\n\r\nfunction getAxisTypes(groupsData, axis, isArgumentAxes) {\r\n    if (isArgumentAxes) {\r\n        return {\r\n            argumentAxisType: groupsData.argumentAxisType,\r\n            argumentType: groupsData.argumentType\r\n        }\r\n    }\r\n    var _groupsData$groups$fi = groupsData.groups.filter(function(g) {\r\n            return g.valueAxis === axis\r\n        })[0],\r\n        valueAxisType = _groupsData$groups$fi.valueAxisType,\r\n        valueType = _groupsData$groups$fi.valueType;\r\n    return {\r\n        valueAxisType: valueAxisType,\r\n        valueType: valueType\r\n    }\r\n}\r\nvar AdvancedChart = _base_chart.BaseChart.inherit({\r\n    _fontFields: [COMMON_AXIS_SETTINGS + \".label.\" + FONT, COMMON_AXIS_SETTINGS + \".title.\" + FONT],\r\n    _partialOptionChangesMap: {\r\n        visualRange: VISUAL_RANGE,\r\n        _customVisualRange: VISUAL_RANGE,\r\n        strips: \"REFRESH_AXES\",\r\n        constantLines: \"REFRESH_AXES\"\r\n    },\r\n    _partialOptionChangesPath: {\r\n        argumentAxis: [\"strips\", \"constantLines\", \"visualRange\", \"_customVisualRange\"],\r\n        valueAxis: [\"strips\", \"constantLines\", \"visualRange\", \"_customVisualRange\"]\r\n    },\r\n    _initCore: function() {\r\n        this._panesClipRects = {};\r\n        this.callBase()\r\n    },\r\n    _disposeCore: function() {\r\n        var disposeObjectsInArray = this._disposeObjectsInArray;\r\n        var panesClipRects = this._panesClipRects;\r\n        this.callBase();\r\n        disposeObjectsInArray.call(panesClipRects, \"fixed\");\r\n        disposeObjectsInArray.call(panesClipRects, \"base\");\r\n        disposeObjectsInArray.call(panesClipRects, \"wide\");\r\n        this._panesClipRects = null\r\n    },\r\n    _dispose: function() {\r\n        var that = this;\r\n        var disposeObjectsInArray = this._disposeObjectsInArray;\r\n        that.callBase();\r\n        that.panes = null;\r\n        if (that._legend) {\r\n            that._legend.dispose();\r\n            that._legend = null\r\n        }\r\n        disposeObjectsInArray.call(that, \"panesBackground\");\r\n        disposeObjectsInArray.call(that, \"seriesFamilies\");\r\n        that._disposeAxes()\r\n    },\r\n    _createPanes: function() {\r\n        this._cleanPanesClipRects(\"fixed\");\r\n        this._cleanPanesClipRects(\"base\");\r\n        this._cleanPanesClipRects(\"wide\")\r\n    },\r\n    _cleanPanesClipRects: function(clipArrayName) {\r\n        var clipArray = this._panesClipRects[clipArrayName];\r\n        (clipArray || []).forEach(function(clipRect) {\r\n            return clipRect && clipRect.dispose()\r\n        });\r\n        this._panesClipRects[clipArrayName] = []\r\n    },\r\n    _getElementsClipRectID: function(paneName) {\r\n        var clipShape = this._panesClipRects.fixed[this._getPaneIndex(paneName)];\r\n        return clipShape && clipShape.id\r\n    },\r\n    _getPaneIndex: function(paneName) {\r\n        var paneIndex;\r\n        var name = paneName || DEFAULT_PANE_NAME;\r\n        (0, _iterator.each)(this.panes, function(index, pane) {\r\n            if (pane.name === name) {\r\n                paneIndex = index;\r\n                return false\r\n            }\r\n        });\r\n        return paneIndex\r\n    },\r\n    _updateSize: function() {\r\n        this.callBase();\r\n        (0, _utils.setCanvasValues)(this._canvas)\r\n    },\r\n    _reinitAxes: function() {\r\n        this.panes = this._createPanes();\r\n        this._populateAxes();\r\n        this._axesReinitialized = true\r\n    },\r\n    _getCrosshairMargins: function() {\r\n        var crosshairOptions = this._getCrosshairOptions() || {};\r\n        var crosshairEnabled = crosshairOptions.enabled;\r\n        var margins = (0, _crosshair.getMargins)();\r\n        return {\r\n            x: crosshairEnabled && crosshairOptions.horizontalLine.visible ? margins.x : 0,\r\n            y: crosshairEnabled && crosshairOptions.verticalLine.visible ? margins.y : 0\r\n        }\r\n    },\r\n    _populateAxes: function() {\r\n        var that = this;\r\n        var panes = that.panes;\r\n        var rotated = that._isRotated();\r\n        var argumentAxesOptions = prepareAxis(that.option(\"argumentAxis\") || {})[0];\r\n        var valueAxisOption = that.option(\"valueAxis\");\r\n        var valueAxesOptions = prepareAxis(valueAxisOption || {});\r\n        var argumentAxesPopulatedOptions = [];\r\n        var valueAxesPopulatedOptions = [];\r\n        var axisNames = [];\r\n        var valueAxesCounter = 0;\r\n        var paneWithNonVirtualAxis;\r\n        var crosshairMargins = that._getCrosshairMargins();\r\n\r\n        function getNextAxisName() {\r\n            return DEFAULT_AXIS_NAME + valueAxesCounter++\r\n        }\r\n        if (rotated) {\r\n            paneWithNonVirtualAxis = \"right\" === argumentAxesOptions.position ? panes[panes.length - 1].name : panes[0].name\r\n        } else {\r\n            paneWithNonVirtualAxis = \"top\" === argumentAxesOptions.position ? panes[0].name : panes[panes.length - 1].name\r\n        }\r\n        argumentAxesPopulatedOptions = (0, _utils.map)(panes, function(pane) {\r\n            var virtual = pane.name !== paneWithNonVirtualAxis;\r\n            return that._populateAxesOptions(\"argumentAxis\", argumentAxesOptions, {\r\n                pane: pane.name,\r\n                name: null,\r\n                optionPath: \"argumentAxis\",\r\n                crosshairMargin: rotated ? crosshairMargins.x : crosshairMargins.y\r\n            }, rotated, virtual)\r\n        });\r\n        (0, _iterator.each)(valueAxesOptions, function(priority, axisOptions) {\r\n            var _axisOptions$panes;\r\n            var axisPanes = [];\r\n            var name = axisOptions.name;\r\n            if (name && (0, _array.inArray)(name, axisNames) !== -1) {\r\n                that._incidentOccurred(\"E2102\");\r\n                return\r\n            }\r\n            name && axisNames.push(name);\r\n            if (axisOptions.pane) {\r\n                axisPanes.push(axisOptions.pane)\r\n            }\r\n            if (null !== (_axisOptions$panes = axisOptions.panes) && void 0 !== _axisOptions$panes && _axisOptions$panes.length) {\r\n                axisPanes = axisPanes.concat(axisOptions.panes.slice(0))\r\n            }\r\n            axisPanes = (0, _utils.unique)(axisPanes);\r\n            if (!axisPanes.length) {\r\n                axisPanes.push(void 0)\r\n            }(0, _iterator.each)(axisPanes, function(_, pane) {\r\n                var optionPath = _isArray(valueAxisOption) ? \"valueAxis[\".concat(priority, \"]\") : \"valueAxis\";\r\n                valueAxesPopulatedOptions.push(that._populateAxesOptions(\"valueAxis\", axisOptions, {\r\n                    name: name || getNextAxisName(),\r\n                    pane: pane,\r\n                    priority: priority,\r\n                    optionPath: optionPath,\r\n                    crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x\r\n                }, rotated))\r\n            })\r\n        });\r\n        that._redesignAxes(argumentAxesPopulatedOptions, true, paneWithNonVirtualAxis);\r\n        that._redesignAxes(valueAxesPopulatedOptions, false)\r\n    },\r\n    _redesignAxes: function(options, isArgumentAxes, paneWithNonVirtualAxis) {\r\n        var that = this;\r\n        var axesBasis = [];\r\n        var axes = isArgumentAxes ? that._argumentAxes : that._valueAxes;\r\n        (0, _iterator.each)(options, function(_, opt) {\r\n            var curAxes = axes && axes.filter(function(a) {\r\n                return a.name === opt.name && (!(0, _type.isDefined)(opt.pane) && that.panes.some(function(p) {\r\n                    return p.name === a.pane\r\n                }) || a.pane === opt.pane)\r\n            });\r\n            if (curAxes && curAxes.length > 0) {\r\n                (0, _iterator.each)(curAxes, function(_, axis) {\r\n                    var axisTypes = getAxisTypes(that._groupsData, axis, isArgumentAxes);\r\n                    axis.updateOptions(opt);\r\n                    if (isArgumentAxes) {\r\n                        axis.setTypes(axisTypes.argumentAxisType, axisTypes.argumentType, \"argumentType\")\r\n                    } else {\r\n                        axis.setTypes(axisTypes.valueAxisType, axisTypes.valueType, \"valueType\")\r\n                    }\r\n                    axis.validate();\r\n                    axesBasis.push({\r\n                        axis: axis\r\n                    })\r\n                })\r\n            } else {\r\n                axesBasis.push({\r\n                    options: opt\r\n                })\r\n            }\r\n        });\r\n        if (axes) {\r\n            (0, _iterator.reverseEach)(axes, function(index, axis) {\r\n                if (!axesBasis.some(function(basis) {\r\n                        return basis.axis && basis.axis === axis\r\n                    })) {\r\n                    that._disposeAxis(index, isArgumentAxes)\r\n                }\r\n            })\r\n        } else {\r\n            if (isArgumentAxes) {\r\n                axes = that._argumentAxes = []\r\n            } else {\r\n                axes = that._valueAxes = []\r\n            }\r\n        }(0, _iterator.each)(axesBasis, function(_, basis) {\r\n            var axis = basis.axis;\r\n            if (basis.axis && isArgumentAxes) {\r\n                basis.axis.isVirtual = basis.axis.pane !== paneWithNonVirtualAxis\r\n            } else {\r\n                if (basis.options) {\r\n                    axis = that._createAxis(isArgumentAxes, basis.options, isArgumentAxes ? basis.options.pane !== paneWithNonVirtualAxis : void 0);\r\n                    axes.push(axis)\r\n                }\r\n            }\r\n            axis.applyVisualRangeSetter(that._getVisualRangeSetter())\r\n        })\r\n    },\r\n    _disposeAxis: function(index, isArgumentAxis) {\r\n        var axes = isArgumentAxis ? this._argumentAxes : this._valueAxes;\r\n        var axis = axes[index];\r\n        if (!axis) {\r\n            return\r\n        }\r\n        axis.dispose();\r\n        axes.splice(index, 1)\r\n    },\r\n    _disposeAxes: function() {\r\n        var that = this;\r\n        var disposeObjectsInArray = that._disposeObjectsInArray;\r\n        disposeObjectsInArray.call(that, \"_argumentAxes\");\r\n        disposeObjectsInArray.call(that, \"_valueAxes\")\r\n    },\r\n    _appendAdditionalSeriesGroups: function() {\r\n        this._crosshairCursorGroup.linkAppend();\r\n        this._scrollBar && this._scrollBarGroup.linkAppend()\r\n    },\r\n    _getLegendTargets: function() {\r\n        var _this = this;\r\n        return (this.series || []).map(function(s) {\r\n            var item = _this._getLegendOptions(s);\r\n            item.legendData.series = s;\r\n            if (!s.getOptions().showInLegend) {\r\n                item.legendData.visible = false\r\n            }\r\n            return item\r\n        })\r\n    },\r\n    _legendItemTextField: \"name\",\r\n    _seriesPopulatedHandlerCore: function() {\r\n        this._processSeriesFamilies();\r\n        this._processValueAxisFormat()\r\n    },\r\n    _renderTrackers: function() {\r\n        var that = this;\r\n        var i;\r\n        for (i = 0; i < that.series.length; ++i) {\r\n            that.series[i].drawTrackers()\r\n        }\r\n    },\r\n    _specialProcessSeries: function() {\r\n        this._processSeriesFamilies()\r\n    },\r\n    _processSeriesFamilies: function() {\r\n        var _that$seriesFamilies;\r\n        var that = this;\r\n        var types = [];\r\n        var families = [];\r\n        var paneSeries;\r\n        var themeManager = that._themeManager;\r\n        var negativesAsZeroes = themeManager.getOptions(\"negativesAsZeroes\");\r\n        var negativesAsZeros = themeManager.getOptions(\"negativesAsZeros\");\r\n        var familyOptions = {\r\n            minBubbleSize: themeManager.getOptions(\"minBubbleSize\"),\r\n            maxBubbleSize: themeManager.getOptions(\"maxBubbleSize\"),\r\n            barGroupPadding: themeManager.getOptions(\"barGroupPadding\"),\r\n            barGroupWidth: themeManager.getOptions(\"barGroupWidth\"),\r\n            negativesAsZeroes: (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros\r\n        };\r\n        if (null !== (_that$seriesFamilies = that.seriesFamilies) && void 0 !== _that$seriesFamilies && _that$seriesFamilies.length) {\r\n            (0, _iterator.each)(that.seriesFamilies, function(_, family) {\r\n                family.updateOptions(familyOptions);\r\n                family.adjustSeriesValues()\r\n            });\r\n            return\r\n        }(0, _iterator.each)(that.series, function(_, item) {\r\n            if ((0, _array.inArray)(item.type, types) === -1) {\r\n                types.push(item.type)\r\n            }\r\n        });\r\n        (0, _iterator.each)(that._getLayoutTargets(), function(_, pane) {\r\n            paneSeries = that._getSeriesForPane(pane.name);\r\n            (0, _iterator.each)(types, function(_, type) {\r\n                var family = new _series_family.SeriesFamily({\r\n                    type: type,\r\n                    pane: pane.name,\r\n                    minBubbleSize: familyOptions.minBubbleSize,\r\n                    maxBubbleSize: familyOptions.maxBubbleSize,\r\n                    barGroupPadding: familyOptions.barGroupPadding,\r\n                    barGroupWidth: familyOptions.barGroupWidth,\r\n                    negativesAsZeroes: familyOptions.negativesAsZeroes,\r\n                    rotated: that._isRotated()\r\n                });\r\n                family.add(paneSeries);\r\n                family.adjustSeriesValues();\r\n                families.push(family)\r\n            })\r\n        });\r\n        that.seriesFamilies = families\r\n    },\r\n    _updateSeriesDimensions: function() {\r\n        var that = this;\r\n        var i;\r\n        var seriesFamilies = that.seriesFamilies || [];\r\n        for (i = 0; i < seriesFamilies.length; i++) {\r\n            var family = seriesFamilies[i];\r\n            family.updateSeriesValues();\r\n            family.adjustSeriesDimensions()\r\n        }\r\n    },\r\n    _getLegendCallBack: function(series) {\r\n        return this._legend && this._legend.getActionCallback(series)\r\n    },\r\n    _appendAxesGroups: function() {\r\n        var that = this;\r\n        that._stripsGroup.linkAppend();\r\n        that._gridGroup.linkAppend();\r\n        that._axesGroup.linkAppend();\r\n        that._constantLinesGroup.linkAppend();\r\n        that._labelAxesGroup.linkAppend();\r\n        that._scaleBreaksGroup.linkAppend()\r\n    },\r\n    _populateMarginOptions: function() {\r\n        var that = this;\r\n        var bubbleSize = estimateBubbleSize(that.getSize(), that.panes.length, that._themeManager.getOptions(\"maxBubbleSize\"), that._isRotated());\r\n        var argumentMarginOptions = {};\r\n        that._valueAxes.forEach(function(valueAxis) {\r\n            var groupSeries = that.series.filter(function(series) {\r\n                return series.getValueAxis() === valueAxis\r\n            });\r\n            var marginOptions = {};\r\n            groupSeries.forEach(function(series) {\r\n                if (series.isVisible()) {\r\n                    var seriesMarginOptions = processBubbleMargin(series.getMarginOptions(), bubbleSize);\r\n                    marginOptions = (0, _utils.mergeMarginOptions)(marginOptions, seriesMarginOptions);\r\n                    argumentMarginOptions = (0, _utils.mergeMarginOptions)(argumentMarginOptions, seriesMarginOptions)\r\n                }\r\n            });\r\n            valueAxis.setMarginOptions(marginOptions)\r\n        });\r\n        that._argumentAxes.forEach(function(a) {\r\n            return a.setMarginOptions(argumentMarginOptions)\r\n        })\r\n    },\r\n    _populateBusinessRange: function(updatedAxis, keepRange) {\r\n        var that = this;\r\n        var rotated = that._isRotated();\r\n        var argRange = new _range.Range({\r\n            rotated: !!rotated\r\n        });\r\n        var series = that._getVisibleSeries();\r\n        that._valueAxes.forEach(function(valueAxis) {\r\n            var groupRange = new _range.Range({\r\n                rotated: !!rotated,\r\n                pane: valueAxis.pane,\r\n                axis: valueAxis.name\r\n            });\r\n            var groupSeries = series.filter(function(series) {\r\n                return series.getValueAxis() === valueAxis\r\n            });\r\n            groupSeries.forEach(function(series) {\r\n                var seriesRange = series.getRangeData();\r\n                groupRange.addRange(seriesRange.val);\r\n                argRange.addRange(seriesRange.arg)\r\n            });\r\n            if (!updatedAxis || updatedAxis && groupSeries.length && valueAxis === updatedAxis) {\r\n                valueAxis.setGroupSeries(groupSeries);\r\n                valueAxis.setBusinessRange(groupRange, that._axesReinitialized || keepRange, that._argumentAxes[0]._lastVisualRangeUpdateMode)\r\n            }\r\n        });\r\n        if (!updatedAxis || updatedAxis && series.length) {\r\n            that._argumentAxes.forEach(function(a) {\r\n                return a.setBusinessRange(argRange, that._axesReinitialized, void 0, that._groupsData.categories)\r\n            })\r\n        }\r\n        that._populateMarginOptions()\r\n    },\r\n    getArgumentAxis: function() {\r\n        return (this._argumentAxes || []).filter(function(a) {\r\n            return !a.isVirtual\r\n        })[0]\r\n    },\r\n    getValueAxis: function(name) {\r\n        var _this2 = this;\r\n        return (this._valueAxes || []).filter((0, _type.isDefined)(name) ? function(a) {\r\n            return a.name === name\r\n        } : function(a) {\r\n            return a.pane === _this2.defaultPane\r\n        })[0]\r\n    },\r\n    _getGroupsData: function() {\r\n        var that = this;\r\n        var groups = [];\r\n        that._valueAxes.forEach(function(axis) {\r\n            groups.push({\r\n                series: that.series.filter(function(series) {\r\n                    return series.getValueAxis() === axis\r\n                }),\r\n                valueAxis: axis,\r\n                valueOptions: axis.getOptions()\r\n            })\r\n        });\r\n        return {\r\n            groups: groups,\r\n            argumentAxes: that._argumentAxes,\r\n            argumentOptions: that._argumentAxes[0].getOptions()\r\n        }\r\n    },\r\n    _groupSeries: function() {\r\n        var that = this;\r\n        that._correctValueAxes(false);\r\n        that._groupsData = that._getGroupsData()\r\n    },\r\n    _processValueAxisFormat: function() {\r\n        var axesWithFullStackedFormat = [];\r\n        this.series.forEach(function(series) {\r\n            var axis = series.getValueAxis();\r\n            if (series.isFullStackedSeries()) {\r\n                axis.setPercentLabelFormat();\r\n                axesWithFullStackedFormat.push(axis)\r\n            }\r\n        });\r\n        this._valueAxes.forEach(function(axis) {\r\n            if (axesWithFullStackedFormat.indexOf(axis) === -1) {\r\n                axis.resetAutoLabelFormat()\r\n            }\r\n        })\r\n    },\r\n    _populateAxesOptions: function(typeSelector, userOptions, axisOptions, rotated, virtual) {\r\n        var that = this;\r\n        var preparedUserOptions = that._prepareStripsAndConstantLines(typeSelector, userOptions, rotated);\r\n        var options = (0, _extend2.extend)(true, {}, preparedUserOptions, axisOptions, that._prepareAxisOptions(typeSelector, preparedUserOptions, rotated));\r\n        if (virtual) {\r\n            options.visible = options.tick.visible = options.minorTick.visible = options.label.visible = false;\r\n            options.title = {}\r\n        }\r\n        return options\r\n    },\r\n    _getValFilter: function(series) {\r\n        return _range_data_calculator.default.getViewPortFilter(series.getValueAxis().visualRange() || {})\r\n    },\r\n    _createAxis: function(isArgumentAxes, options, virtual) {\r\n        var that = this;\r\n        var typeSelector = isArgumentAxes ? \"argumentAxis\" : \"valueAxis\";\r\n        var renderingSettings = (0, _extend2.extend)({\r\n            renderer: that._renderer,\r\n            incidentOccurred: that._incidentOccurred,\r\n            eventTrigger: that._eventTrigger,\r\n            axisClass: isArgumentAxes ? \"arg\" : \"val\",\r\n            widgetClass: \"dxc\",\r\n            stripsGroup: that._stripsGroup,\r\n            labelAxesGroup: that._labelAxesGroup,\r\n            constantLinesGroup: that._constantLinesGroup,\r\n            scaleBreaksGroup: that._scaleBreaksGroup,\r\n            axesContainerGroup: that._axesGroup,\r\n            gridGroup: that._gridGroup,\r\n            isArgumentAxis: isArgumentAxes,\r\n            getTemplate: function() {\r\n                return that._getTemplate(options.label.template)\r\n            }\r\n        }, that._getAxisRenderingOptions(typeSelector));\r\n        var axis = new _base_axis.Axis(renderingSettings);\r\n        axis.updateOptions(options);\r\n        axis.isVirtual = virtual;\r\n        return axis\r\n    },\r\n    _applyVisualRangeByVirtualAxes: function(axis, range) {\r\n        return false\r\n    },\r\n    _applyCustomVisualRangeOption: function(axis, range) {\r\n        var that = this;\r\n        if (axis.getOptions().optionPath) {\r\n            that._parseVisualRangeOption(\"\".concat(axis.getOptions().optionPath, \".visualRange\"), range)\r\n        }\r\n    },\r\n    _getVisualRangeSetter: function() {\r\n        var chart = this;\r\n        return function(axis, _ref) {\r\n            var skipEventRising = _ref.skipEventRising,\r\n                range = _ref.range;\r\n            chart._applyCustomVisualRangeOption(axis, range);\r\n            axis.setCustomVisualRange(range);\r\n            axis.skipEventRising = skipEventRising;\r\n            if (!chart._applyVisualRangeByVirtualAxes(axis, range)) {\r\n                if (chart._applyingChanges) {\r\n                    chart._change_VISUAL_RANGE()\r\n                } else {\r\n                    chart._requestChange([VISUAL_RANGE])\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _getTrackerSettings: function() {\r\n        return (0, _extend2.extend)(this.callBase(), {\r\n            argumentAxis: this.getArgumentAxis()\r\n        })\r\n    },\r\n    _prepareStripsAndConstantLines: function(typeSelector, userOptions, rotated) {\r\n        userOptions = this._themeManager.getOptions(typeSelector, userOptions, rotated);\r\n        if (userOptions.strips) {\r\n            (0, _iterator.each)(userOptions.strips, function(i) {\r\n                userOptions.strips[i] = (0, _extend2.extend)(true, {}, userOptions.stripStyle, userOptions.strips[i])\r\n            })\r\n        }\r\n        if (userOptions.constantLines) {\r\n            (0, _iterator.each)(userOptions.constantLines, function(i, line) {\r\n                userOptions.constantLines[i] = (0, _extend2.extend)(true, {}, userOptions.constantLineStyle, line)\r\n            })\r\n        }\r\n        return userOptions\r\n    },\r\n    refresh: function() {\r\n        this._disposeAxes();\r\n        this.callBase()\r\n    },\r\n    _layoutAxes: function(drawAxes) {\r\n        var that = this;\r\n        var cleanPanesCanvases = drawAxes();\r\n        var needSpace = that.checkForMoreSpaceForPanesCanvas();\r\n        if (needSpace) {\r\n            var size = this._layout.backward(this._rect, this._rect, [needSpace.width, needSpace.height]);\r\n            needSpace.width = Math.max(0, size[0]);\r\n            needSpace.height = Math.max(0, size[1]);\r\n            this._canvas = this._createCanvasFromRect(this._rect);\r\n            drawAxes(needSpace, cleanPanesCanvases)\r\n        }\r\n    },\r\n    checkForMoreSpaceForPanesCanvas: function() {\r\n        return this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), this._isRotated())\r\n    },\r\n    _parseVisualRangeOption: function(fullName, value) {\r\n        var that = this;\r\n        var name = fullName.split(/[.[]/)[0];\r\n        var index = fullName.match(/\\d+/g);\r\n        index = (0, _type.isDefined)(index) ? parseInt(index[0]) : index;\r\n        if (fullName.indexOf(\"visualRange\") > 0) {\r\n            that._setCustomVisualRange(name, index, value)\r\n        } else {\r\n            if ((\"object\" === (0, _type.type)(value) || _isArray(value)) && name.indexOf(\"Axis\") > 0 && JSON.stringify(value).indexOf(\"visualRange\") > 0) {\r\n                if ((0, _type.isDefined)(value.visualRange)) {\r\n                    that._setCustomVisualRange(name, index, value.visualRange)\r\n                } else {\r\n                    if (_isArray(value)) {\r\n                        value.forEach(function(a, i) {\r\n                            return (0, _type.isDefined)(a.visualRange) && that._setCustomVisualRange(name, i, a.visualRange)\r\n                        })\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _setCustomVisualRange: function(axesName, index, value) {\r\n        var that = this;\r\n        var options = that._options.silent(axesName);\r\n        if (!options) {\r\n            return\r\n        }\r\n        if (!(0, _type.isDefined)(index)) {\r\n            options._customVisualRange = value\r\n        } else {\r\n            options[index]._customVisualRange = value\r\n        }\r\n        that._axesReinitialized = true\r\n    },\r\n    _raiseZoomEndHandlers: function() {\r\n        this._valueAxes.forEach(function(axis) {\r\n            return axis.handleZoomEnd()\r\n        })\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend2.extend)(this._optionsByReference, {\r\n            \"valueAxis.visualRange\": true\r\n        })\r\n    },\r\n    _notifyOptionChanged: function(option, value, previousValue) {\r\n        this.callBase.apply(this, arguments);\r\n        if (!this._optionChangedLocker) {\r\n            this._parseVisualRangeOption(option, value)\r\n        }\r\n    },\r\n    _notifyVisualRange: function() {\r\n        var that = this;\r\n        that._valueAxes.forEach(function(axis) {\r\n            if (axis.getOptions().optionPath) {\r\n                var path = \"\".concat(axis.getOptions().optionPath, \".visualRange\");\r\n                var visualRange = (0, _utils.convertVisualRangeObject)(axis.visualRange(), !_isArray(that.option(path)));\r\n                if (!axis.skipEventRising || !(0, _utils.rangesAreEqual)(visualRange, that.option(path))) {\r\n                    that.option(path, visualRange)\r\n                } else {\r\n                    axis.skipEventRising = null\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _notify: function() {\r\n        this.callBase();\r\n        this._axesReinitialized = false;\r\n        if (true !== this.option(\"disableTwoWayBinding\")) {\r\n            this._notifyVisualRange()\r\n        }\r\n    },\r\n    _getAxesForScaling: function() {\r\n        return this._valueAxes\r\n    },\r\n    _getAxesByOptionPath: function(arg, isDirectOption, optionName) {\r\n        var that = this;\r\n        var sourceAxes = that._getAxesForScaling();\r\n        var axes = [];\r\n        if (isDirectOption) {\r\n            var axisPath;\r\n            if (arg.fullName) {\r\n                axisPath = arg.fullName.slice(0, arg.fullName.indexOf(\".\"))\r\n            }\r\n            axes = sourceAxes.filter(function(a) {\r\n                return a.getOptions().optionPath === axisPath\r\n            })\r\n        } else {\r\n            if (\"object\" === (0, _type.type)(arg.value)) {\r\n                axes = sourceAxes.filter(function(a) {\r\n                    return a.getOptions().optionPath === arg.name\r\n                })\r\n            } else {\r\n                if (_isArray(arg.value)) {\r\n                    arg.value.forEach(function(v, index) {\r\n                        var axis = sourceAxes.filter(function(a) {\r\n                            return a.getOptions().optionPath === \"\".concat(arg.name, \"[\").concat(index, \"]\")\r\n                        })[0];\r\n                        (0, _type.isDefined)(v[optionName]) && (0, _type.isDefined)(axis) && (axes[index] = axis)\r\n                    })\r\n                }\r\n            }\r\n        }\r\n        return axes\r\n    },\r\n    _optionChanged: function(arg) {\r\n        var that = this;\r\n        if (!that._optionChangedLocker) {\r\n            var optionName = \"visualRange\";\r\n            var axes;\r\n            var isDirectOption = arg.fullName.indexOf(optionName) > 0 ? true : that.getPartialChangeOptionsName(arg).indexOf(optionName) > -1 ? false : void 0;\r\n            if ((0, _type.isDefined)(isDirectOption)) {\r\n                axes = that._getAxesByOptionPath(arg, isDirectOption, optionName);\r\n                if (axes) {\r\n                    if (axes.length > 1 || _isArray(arg.value)) {\r\n                        axes.forEach(function(a, index) {\r\n                            return setAxisVisualRangeByOption(arg, a, isDirectOption, index)\r\n                        })\r\n                    } else {\r\n                        if (1 === axes.length) {\r\n                            setAxisVisualRangeByOption(arg, axes[0], isDirectOption)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        that.callBase(arg)\r\n    },\r\n    _change_VISUAL_RANGE: function() {\r\n        var that = this;\r\n        that._recreateSizeDependentObjects(false);\r\n        if (!that._changes.has(\"FULL_RENDER\")) {\r\n            var resizePanesOnZoom = that.option(\"resizePanesOnZoom\");\r\n            that._doRender({\r\n                force: true,\r\n                drawTitle: false,\r\n                drawLegend: false,\r\n                adjustAxes: null !== resizePanesOnZoom && void 0 !== resizePanesOnZoom ? resizePanesOnZoom : that.option(\"adjustAxesOnZoom\") || false,\r\n                animate: false\r\n            });\r\n            that._raiseZoomEndHandlers()\r\n        }\r\n    },\r\n    resetVisualRange: function() {\r\n        var that = this;\r\n        that._valueAxes.forEach(function(axis) {\r\n            axis.resetVisualRange(false);\r\n            that._applyCustomVisualRangeOption(axis)\r\n        });\r\n        that._requestChange([VISUAL_RANGE])\r\n    },\r\n    _legendDataField: \"series\",\r\n    _adjustSeriesLabels: _common.noop,\r\n    _correctValueAxes: _common.noop\r\n});\r\nexports.AdvancedChart = AdvancedChart;\r\n","/**\r\n * DevExtreme (ui/widget/ui.search_box_mixin.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _text_box = _interopRequireDefault(require(\"../text_box\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = {\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            searchMode: \"\",\r\n            searchExpr: null,\r\n            searchValue: \"\",\r\n            searchEnabled: false,\r\n            searchEditorOptions: {}\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this._renderSearch();\r\n        this.callBase()\r\n    },\r\n    _renderSearch: function() {\r\n        var $element = this.$element();\r\n        var searchEnabled = this.option(\"searchEnabled\");\r\n        var searchBoxClassName = this._addWidgetPrefix(\"search\");\r\n        var rootElementClassName = this._addWidgetPrefix(\"with-search\");\r\n        if (!searchEnabled) {\r\n            $element.removeClass(rootElementClassName);\r\n            this._removeSearchBox();\r\n            return\r\n        }\r\n        var editorOptions = this._getSearchEditorOptions();\r\n        if (this._searchEditor) {\r\n            this._searchEditor.option(editorOptions)\r\n        } else {\r\n            $element.addClass(rootElementClassName);\r\n            this._$searchEditorElement = (0, _renderer.default)(\"<div>\").addClass(searchBoxClassName).prependTo($element);\r\n            this._searchEditor = this._createComponent(this._$searchEditorElement, _text_box.default, editorOptions)\r\n        }\r\n    },\r\n    _removeSearchBox: function() {\r\n        this._$searchEditorElement && this._$searchEditorElement.remove();\r\n        delete this._$searchEditorElement;\r\n        delete this._searchEditor\r\n    },\r\n    _getSearchEditorOptions: function() {\r\n        var that = this;\r\n        var userEditorOptions = that.option(\"searchEditorOptions\");\r\n        var searchText = _message.default.format(\"Search\");\r\n        return (0, _extend.extend)({\r\n            mode: \"search\",\r\n            placeholder: searchText,\r\n            tabIndex: that.option(\"tabIndex\"),\r\n            value: that.option(\"searchValue\"),\r\n            valueChangeEvent: \"input\",\r\n            inputAttr: {\r\n                \"aria-label\": searchText\r\n            },\r\n            onValueChanged: function(e) {\r\n                var searchTimeout = that.option(\"searchTimeout\");\r\n                that._valueChangeDeferred = new _deferred.Deferred;\r\n                clearTimeout(that._valueChangeTimeout);\r\n                that._valueChangeDeferred.done(function() {\r\n                    this.option(\"searchValue\", e.value)\r\n                }.bind(that));\r\n                if (e.event && \"input\" === e.event.type && searchTimeout) {\r\n                    that._valueChangeTimeout = setTimeout(function() {\r\n                        that._valueChangeDeferred.resolve()\r\n                    }, searchTimeout)\r\n                } else {\r\n                    that._valueChangeDeferred.resolve()\r\n                }\r\n            }\r\n        }, userEditorOptions)\r\n    },\r\n    _getAriaTarget: function() {\r\n        if (this.option(\"searchEnabled\")) {\r\n            return this._itemContainer(true)\r\n        }\r\n        return this.$element()\r\n    },\r\n    _focusTarget: function() {\r\n        if (this.option(\"searchEnabled\")) {\r\n            return this._itemContainer(true)\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _updateFocusState: function(e, isFocused) {\r\n        if (this.option(\"searchEnabled\")) {\r\n            this._toggleFocusClass(isFocused, this.$element())\r\n        }\r\n        this.callBase(e, isFocused)\r\n    },\r\n    getOperationBySearchMode: function(searchMode) {\r\n        return \"equals\" === searchMode ? \"=\" : searchMode\r\n    },\r\n    _cleanAria: function($target) {\r\n        this.setAria({\r\n            role: null,\r\n            activedescendant: null\r\n        }, $target);\r\n        $target.attr(\"tabIndex\", null)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"searchEnabled\":\r\n            case \"searchEditorOptions\":\r\n                this._cleanAria(this.option(\"searchEnabled\") ? this.$element() : this._itemContainer());\r\n                this._invalidate();\r\n                break;\r\n            case \"searchExpr\":\r\n            case \"searchMode\":\r\n            case \"searchValue\":\r\n                if (!this._dataSource) {\r\n                    _ui.default.log(\"W1009\");\r\n                    return\r\n                }\r\n                if (\"searchMode\" === args.name) {\r\n                    this._dataSource.searchOperation(this.getOperationBySearchMode(args.value))\r\n                } else {\r\n                    this._dataSource[args.name](args.value)\r\n                }\r\n                this._dataSource.load();\r\n                break;\r\n            case \"searchTimeout\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    focus: function() {\r\n        if (!this.option(\"focusedElement\") && this.option(\"searchEnabled\")) {\r\n            this._searchEditor && this._searchEditor.focus();\r\n            return\r\n        }\r\n        this.callBase()\r\n    },\r\n    _refresh: function() {\r\n        if (this._valueChangeDeferred) {\r\n            this._valueChangeDeferred.resolve()\r\n        }\r\n        this.callBase()\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/form/ui.form.layout_manager.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _uiForm = _interopRequireDefault(require(\"./ui.form.items_runtime_info\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _element = require(\"../../core/element\");\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _remove_event = _interopRequireDefault(require(\"../../core/remove_event\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _ui2 = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _validator = _interopRequireDefault(require(\"../validator\"));\r\nvar _responsive_box = _interopRequireDefault(require(\"../responsive_box\"));\r\nvar _themes = require(\"../themes\");\r\nvar _constants = require(\"./constants\");\r\nrequire(\"../text_box\");\r\nrequire(\"../number_box\");\r\nrequire(\"../check_box\");\r\nrequire(\"../date_box\");\r\nrequire(\"../button\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n    if (!o) {\r\n        return\r\n    }\r\n    if (\"string\" === typeof o) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n    var n = Object.prototype.toString.call(o).slice(8, -1);\r\n    if (\"Object\" === n && o.constructor) {\r\n        n = o.constructor.name\r\n    }\r\n    if (\"Map\" === n || \"Set\" === n) {\r\n        return Array.from(o)\r\n    }\r\n    if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n        return _arrayLikeToArray(o, minLen)\r\n    }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n    if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n        return Array.from(iter)\r\n    }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n    if (Array.isArray(arr)) {\r\n        return _arrayLikeToArray(arr)\r\n    }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n    if (null == len || len > arr.length) {\r\n        len = arr.length\r\n    }\r\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n        arr2[i] = arr[i]\r\n    }\r\n    return arr2\r\n}\r\nvar FORM_EDITOR_BY_DEFAULT = \"dxTextBox\";\r\nvar LAYOUT_MANAGER_FIRST_ROW_CLASS = \"dx-first-row\";\r\nvar LAYOUT_MANAGER_LAST_ROW_CLASS = \"dx-last-row\";\r\nvar LAYOUT_MANAGER_FIRST_COL_CLASS = \"dx-first-col\";\r\nvar LAYOUT_MANAGER_LAST_COL_CLASS = \"dx-last-col\";\r\nvar INVALID_CLASS = \"dx-invalid\";\r\nvar LAYOUT_STRATEGY_FLEX = \"flex\";\r\nvar LAYOUT_STRATEGY_FALLBACK = \"fallback\";\r\nvar SIMPLE_ITEM_TYPE = \"simple\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar DATA_OPTIONS = [\"dataSource\", \"items\"];\r\nvar EDITORS_WITH_ARRAY_VALUE = [\"dxTagBox\", \"dxRangeSlider\"];\r\nvar LayoutManager = _ui2.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            layoutData: {},\r\n            readOnly: false,\r\n            colCount: 1,\r\n            colCountByScreen: void 0,\r\n            labelLocation: \"left\",\r\n            onFieldDataChanged: null,\r\n            onEditorEnterKey: null,\r\n            customizeItem: null,\r\n            alignItemLabels: true,\r\n            minColWidth: 200,\r\n            showRequiredMark: true,\r\n            screenByWidth: null,\r\n            showOptionalMark: false,\r\n            requiredMark: \"*\",\r\n            optionalMark: _message.default.format(\"dxForm-optionalMark\"),\r\n            requiredMessage: _message.default.getFormatter(\"dxForm-requiredMessage\")\r\n        })\r\n    },\r\n    _setOptionsByReference: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._optionsByReference, {\r\n            layoutData: true,\r\n            validationGroup: true\r\n        })\r\n    },\r\n    _init: function() {\r\n        var layoutData = this.option(\"layoutData\");\r\n        this.callBase();\r\n        this._itemWatchers = [];\r\n        this._itemsRunTimeInfo = new _uiForm.default;\r\n        this._updateReferencedOptions(layoutData);\r\n        this._initDataAndItems(layoutData)\r\n    },\r\n    _dispose: function() {\r\n        this.callBase();\r\n        this._cleanItemWatchers()\r\n    },\r\n    _initDataAndItems: function(initialData) {\r\n        this._syncDataWithItems();\r\n        this._updateItems(initialData)\r\n    },\r\n    _syncDataWithItems: function() {\r\n        var _this = this;\r\n        var layoutData = this.option(\"layoutData\");\r\n        var userItems = this.option(\"items\");\r\n        if ((0, _type.isDefined)(userItems)) {\r\n            userItems.forEach(function(item) {\r\n                if (item.dataField && void 0 === _this._getDataByField(item.dataField)) {\r\n                    var value;\r\n                    if (item.editorOptions) {\r\n                        value = item.editorOptions.value\r\n                    }\r\n                    if ((0, _type.isDefined)(value) || item.dataField in layoutData) {\r\n                        _this._updateFieldValue(item.dataField, value)\r\n                    }\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _getDataByField: function(dataField) {\r\n        return dataField ? this.option(\"layoutData.\" + dataField) : null\r\n    },\r\n    _isCheckboxUndefinedStateEnabled: function(editorOption) {\r\n        if (true === editorOption.allowIndeterminateState && \"dxCheckBox\" === editorOption.editorType) {\r\n            var nameParts = [\"layoutData\"].concat(_toConsumableArray(editorOption.dataField.split(\".\")));\r\n            var propertyName = nameParts.pop();\r\n            var layoutData = this.option(nameParts.join(\".\"));\r\n            return layoutData && propertyName in layoutData\r\n        }\r\n        return false\r\n    },\r\n    _updateFieldValue: function(dataField, value) {\r\n        var layoutData = this.option(\"layoutData\");\r\n        var newValue = value;\r\n        if (!_variable_wrapper.default.isWrapped(layoutData[dataField]) && (0, _type.isDefined)(dataField)) {\r\n            this.option(\"layoutData.\" + dataField, newValue)\r\n        } else {\r\n            if (_variable_wrapper.default.isWritableWrapped(layoutData[dataField])) {\r\n                newValue = (0, _type.isFunction)(newValue) ? newValue() : newValue;\r\n                layoutData[dataField](newValue)\r\n            }\r\n        }\r\n        this._triggerOnFieldDataChanged({\r\n            dataField: dataField,\r\n            value: newValue\r\n        })\r\n    },\r\n    _triggerOnFieldDataChanged: function(args) {\r\n        this._createActionByOption(\"onFieldDataChanged\")(args)\r\n    },\r\n    _updateItems: function(layoutData) {\r\n        var that = this;\r\n        var userItems = this.option(\"items\");\r\n        var isUserItemsExist = (0, _type.isDefined)(userItems);\r\n        var customizeItem = that.option(\"customizeItem\");\r\n        var items = isUserItemsExist ? userItems : this._generateItemsByData(layoutData);\r\n        if ((0, _type.isDefined)(items)) {\r\n            var processedItems = [];\r\n            (0, _iterator.each)(items, function(index, item) {\r\n                if (that._isAcceptableItem(item)) {\r\n                    item = that._processItem(item);\r\n                    customizeItem && customizeItem(item);\r\n                    if ((0, _type.isObject)(item) && false !== _variable_wrapper.default.unwrap(item.visible)) {\r\n                        processedItems.push(item)\r\n                    }\r\n                }\r\n            });\r\n            if (!that._itemWatchers.length || !isUserItemsExist) {\r\n                that._updateItemWatchers(items)\r\n            }\r\n            this._setItems(processedItems);\r\n            this._sortItems()\r\n        }\r\n    },\r\n    _cleanItemWatchers: function() {\r\n        this._itemWatchers.forEach(function(dispose) {\r\n            dispose()\r\n        });\r\n        this._itemWatchers = []\r\n    },\r\n    _updateItemWatchers: function(items) {\r\n        var that = this;\r\n        var watch = that._getWatch();\r\n        items.forEach(function(item) {\r\n            if ((0, _type.isObject)(item) && (0, _type.isDefined)(item.visible) && (0, _type.isFunction)(watch)) {\r\n                that._itemWatchers.push(watch(function() {\r\n                    return _variable_wrapper.default.unwrap(item.visible)\r\n                }, function() {\r\n                    that._updateItems(that.option(\"layoutData\"));\r\n                    that.repaint()\r\n                }, {\r\n                    skipImmediate: true\r\n                }))\r\n            }\r\n        })\r\n    },\r\n    _generateItemsByData: function(layoutData) {\r\n        var result = [];\r\n        if ((0, _type.isDefined)(layoutData)) {\r\n            (0, _iterator.each)(layoutData, function(dataField) {\r\n                result.push({\r\n                    dataField: dataField\r\n                })\r\n            })\r\n        }\r\n        return result\r\n    },\r\n    _isAcceptableItem: function(item) {\r\n        var itemField = item.dataField || item;\r\n        var itemData = this._getDataByField(itemField);\r\n        return !((0, _type.isFunction)(itemData) && !_variable_wrapper.default.isWrapped(itemData))\r\n    },\r\n    _processItem: function(item) {\r\n        if (\"string\" === typeof item) {\r\n            item = {\r\n                dataField: item\r\n            }\r\n        }\r\n        if (\"object\" === _typeof(item) && !item.itemType) {\r\n            item.itemType = SIMPLE_ITEM_TYPE\r\n        }\r\n        if (!(0, _type.isDefined)(item.editorType) && (0, _type.isDefined)(item.dataField)) {\r\n            var value = this._getDataByField(item.dataField);\r\n            item.editorType = (0, _type.isDefined)(value) ? this._getEditorTypeByDataType((0, _type.type)(value)) : FORM_EDITOR_BY_DEFAULT\r\n        }\r\n        if (\"dxCheckBox\" === item.editorType) {\r\n            var _item$allowIndetermin;\r\n            item.allowIndeterminateState = null !== (_item$allowIndetermin = item.allowIndeterminateState) && void 0 !== _item$allowIndetermin ? _item$allowIndetermin : true\r\n        }\r\n        return item\r\n    },\r\n    _getEditorTypeByDataType: function(dataType) {\r\n        switch (dataType) {\r\n            case \"number\":\r\n                return \"dxNumberBox\";\r\n            case \"date\":\r\n                return \"dxDateBox\";\r\n            case \"boolean\":\r\n                return \"dxCheckBox\";\r\n            default:\r\n                return \"dxTextBox\"\r\n        }\r\n    },\r\n    _sortItems: function() {\r\n        (0, _array.normalizeIndexes)(this._items, \"visibleIndex\");\r\n        this._sortIndexes()\r\n    },\r\n    _sortIndexes: function() {\r\n        this._items.sort(function(itemA, itemB) {\r\n            var indexA = itemA.visibleIndex;\r\n            var indexB = itemB.visibleIndex;\r\n            var result;\r\n            if (indexA > indexB) {\r\n                result = 1\r\n            } else {\r\n                if (indexA < indexB) {\r\n                    result = -1\r\n                } else {\r\n                    result = 0\r\n                }\r\n            }\r\n            return result\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        this._itemsRunTimeInfo.clear();\r\n        this.$element().addClass(_constants.FORM_LAYOUT_MANAGER_CLASS);\r\n        this.callBase();\r\n        this._renderResponsiveBox()\r\n    },\r\n    _hasBrowserFlex: function() {\r\n        return (0, _style.styleProp)(LAYOUT_STRATEGY_FLEX) === LAYOUT_STRATEGY_FLEX\r\n    },\r\n    _renderResponsiveBox: function() {\r\n        var that = this;\r\n        var templatesInfo = [];\r\n        if (that._items && that._items.length) {\r\n            var colCount = that._getColCount();\r\n            var $container = (0, _renderer.default)(\"<div>\").appendTo(that.$element());\r\n            that._prepareItemsWithMerging(colCount);\r\n            var layoutItems = that._generateLayoutItems();\r\n            that._extendItemsWithDefaultTemplateOptions(layoutItems, that._items);\r\n            that._responsiveBox = that._createComponent($container, _responsive_box.default, that._getResponsiveBoxConfig(layoutItems, colCount, templatesInfo));\r\n            if (!(0, _window.hasWindow)()) {\r\n                that._renderTemplates(templatesInfo)\r\n            }\r\n        }\r\n    },\r\n    _extendItemsWithDefaultTemplateOptions: function(targetItems, sourceItems) {\r\n        sourceItems.forEach(function(item) {\r\n            if (!item.merged) {\r\n                if ((0, _type.isDefined)(item.disabled)) {\r\n                    targetItems[item.visibleIndex].disabled = item.disabled\r\n                }\r\n                if ((0, _type.isDefined)(item.visible)) {\r\n                    targetItems[item.visibleIndex].visible = item.visible\r\n                }\r\n            }\r\n        })\r\n    },\r\n    _itemStateChangedHandler: function(e) {\r\n        this._refresh()\r\n    },\r\n    _renderTemplate: function($container, item) {\r\n        switch (item.itemType) {\r\n            case \"empty\":\r\n                this._renderEmptyItem($container);\r\n                break;\r\n            case \"button\":\r\n                this._renderButtonItem(item, $container);\r\n                break;\r\n            default:\r\n                this._renderFieldItem(item, $container)\r\n        }\r\n    },\r\n    _renderTemplates: function(templatesInfo) {\r\n        var that = this;\r\n        (0, _iterator.each)(templatesInfo, function(index, info) {\r\n            that._renderTemplate(info.container, info.formItem)\r\n        })\r\n    },\r\n    _getResponsiveBoxConfig: function(layoutItems, colCount, templatesInfo) {\r\n        var that = this;\r\n        var colCountByScreen = that.option(\"colCountByScreen\");\r\n        var xsColCount = colCountByScreen && colCountByScreen.xs;\r\n        return {\r\n            onItemStateChanged: this._itemStateChangedHandler.bind(this),\r\n            _layoutStrategy: that._hasBrowserFlex() ? LAYOUT_STRATEGY_FLEX : LAYOUT_STRATEGY_FALLBACK,\r\n            onLayoutChanged: function onLayoutChanged() {\r\n                var onLayoutChanged = that.option(\"onLayoutChanged\");\r\n                var isSingleColumnMode = that.isSingleColumnMode();\r\n                if (onLayoutChanged) {\r\n                    that.$element().toggleClass(_constants.LAYOUT_MANAGER_ONE_COLUMN, isSingleColumnMode);\r\n                    onLayoutChanged(isSingleColumnMode)\r\n                }\r\n            },\r\n            onContentReady: function(e) {\r\n                if ((0, _window.hasWindow)()) {\r\n                    that._renderTemplates(templatesInfo)\r\n                }\r\n                if (that.option(\"onLayoutChanged\")) {\r\n                    that.$element().toggleClass(_constants.LAYOUT_MANAGER_ONE_COLUMN, that.isSingleColumnMode(e.component))\r\n                }\r\n            },\r\n            itemTemplate: function(e, itemData, itemElement) {\r\n                if (!e.location) {\r\n                    return\r\n                }\r\n                var $itemElement = (0, _renderer.default)(itemElement);\r\n                var itemRenderedCountInPreviousRows = e.location.row * colCount;\r\n                var item = that._items[e.location.col + itemRenderedCountInPreviousRows];\r\n                var $fieldItem = (0, _renderer.default)(\"<div>\").addClass(item.cssClass).appendTo($itemElement);\r\n                templatesInfo.push({\r\n                    container: $fieldItem,\r\n                    formItem: item\r\n                });\r\n                $itemElement.toggleClass(_constants.SINGLE_COLUMN_ITEM_CONTENT, that.isSingleColumnMode(this));\r\n                if (0 === e.location.row) {\r\n                    $fieldItem.addClass(LAYOUT_MANAGER_FIRST_ROW_CLASS)\r\n                }\r\n                if (0 === e.location.col) {\r\n                    $fieldItem.addClass(LAYOUT_MANAGER_FIRST_COL_CLASS)\r\n                }\r\n                if (item.itemType === SIMPLE_ITEM_TYPE && that.option(\"isRoot\")) {\r\n                    $itemElement.addClass(_constants.ROOT_SIMPLE_ITEM_CLASS)\r\n                }\r\n                var isLastColumn = e.location.col === colCount - 1 || e.location.col + e.location.colspan === colCount;\r\n                var rowsCount = that._getRowsCount();\r\n                var isLastRow = e.location.row === rowsCount - 1;\r\n                if (isLastColumn) {\r\n                    $fieldItem.addClass(LAYOUT_MANAGER_LAST_COL_CLASS)\r\n                }\r\n                if (isLastRow) {\r\n                    $fieldItem.addClass(LAYOUT_MANAGER_LAST_ROW_CLASS)\r\n                }\r\n            },\r\n            cols: that._generateRatio(colCount),\r\n            rows: that._generateRatio(that._getRowsCount(), true),\r\n            dataSource: layoutItems,\r\n            screenByWidth: that.option(\"screenByWidth\"),\r\n            singleColumnScreen: xsColCount ? false : \"xs\"\r\n        }\r\n    },\r\n    _getColCount: function() {\r\n        var colCount = this.option(\"colCount\");\r\n        var colCountByScreen = this.option(\"colCountByScreen\");\r\n        if (colCountByScreen) {\r\n            var screenFactor = this.option(\"form\").getTargetScreenFactor();\r\n            if (!screenFactor) {\r\n                screenFactor = (0, _window.hasWindow)() ? (0, _window.getCurrentScreenFactor)(this.option(\"screenByWidth\")) : \"lg\"\r\n            }\r\n            colCount = colCountByScreen[screenFactor] || colCount\r\n        }\r\n        if (\"auto\" === colCount) {\r\n            if (this._cashedColCount) {\r\n                return this._cashedColCount\r\n            }\r\n            this._cashedColCount = colCount = this._getMaxColCount()\r\n        }\r\n        return colCount < 1 ? 1 : colCount\r\n    },\r\n    _getMaxColCount: function() {\r\n        if (!(0, _window.hasWindow)()) {\r\n            return 1\r\n        }\r\n        var minColWidth = this.option(\"minColWidth\");\r\n        var width = this.$element().width();\r\n        var itemsCount = this._items.length;\r\n        var maxColCount = Math.floor(width / minColWidth) || 1;\r\n        return itemsCount < maxColCount ? itemsCount : maxColCount\r\n    },\r\n    isCachedColCountObsolete: function() {\r\n        return this._cashedColCount && this._getMaxColCount() !== this._cashedColCount\r\n    },\r\n    _prepareItemsWithMerging: function(colCount) {\r\n        var items = this._items.slice(0);\r\n        var item;\r\n        var itemsMergedByCol;\r\n        var result = [];\r\n        var j;\r\n        var i;\r\n        for (i = 0; i < items.length; i++) {\r\n            item = items[i];\r\n            result.push(item);\r\n            if (this.option(\"alignItemLabels\") || item.alignItemLabels || item.colSpan) {\r\n                item.col = this._getColByIndex(result.length - 1, colCount)\r\n            }\r\n            if (item.colSpan > 1 && item.col + item.colSpan <= colCount) {\r\n                itemsMergedByCol = [];\r\n                for (j = 0; j < item.colSpan - 1; j++) {\r\n                    itemsMergedByCol.push({\r\n                        merged: true\r\n                    })\r\n                }\r\n                result = result.concat(itemsMergedByCol)\r\n            } else {\r\n                delete item.colSpan\r\n            }\r\n        }\r\n        this._setItems(result)\r\n    },\r\n    _getColByIndex: function(index, colCount) {\r\n        return index % colCount\r\n    },\r\n    _setItems: function(items) {\r\n        this._items = items;\r\n        this._cashedColCount = null\r\n    },\r\n    _generateLayoutItems: function() {\r\n        var items = this._items;\r\n        var colCount = this._getColCount();\r\n        var result = [];\r\n        var item;\r\n        var i;\r\n        for (i = 0; i < items.length; i++) {\r\n            item = items[i];\r\n            if (!item.merged) {\r\n                var generatedItem = {\r\n                    location: {\r\n                        row: parseInt(i / colCount),\r\n                        col: this._getColByIndex(i, colCount)\r\n                    }\r\n                };\r\n                if ((0, _type.isDefined)(item.colSpan)) {\r\n                    generatedItem.location.colspan = item.colSpan\r\n                }\r\n                if ((0, _type.isDefined)(item.rowSpan)) {\r\n                    generatedItem.location.rowspan = item.rowSpan\r\n                }\r\n                result.push(generatedItem)\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _renderEmptyItem: function($container) {\r\n        return $container.addClass(_constants.FIELD_EMPTY_ITEM_CLASS).html(\"&nbsp;\")\r\n    },\r\n    _getButtonHorizontalAlignment: function(item) {\r\n        if ((0, _type.isDefined)(item.horizontalAlignment)) {\r\n            return item.horizontalAlignment\r\n        }\r\n        return \"right\"\r\n    },\r\n    _getButtonVerticalAlignment: function(item) {\r\n        switch (item.verticalAlignment) {\r\n            case \"center\":\r\n                return \"center\";\r\n            case \"bottom\":\r\n                return \"flex-end\";\r\n            default:\r\n                return \"flex-start\"\r\n        }\r\n    },\r\n    _renderButtonItem: function(item, $container) {\r\n        var $button = (0, _renderer.default)(\"<div>\").appendTo($container);\r\n        var defaultOptions = {\r\n            validationGroup: this.option(\"validationGroup\")\r\n        };\r\n        $container.addClass(_constants.FIELD_BUTTON_ITEM_CLASS).css(\"textAlign\", this._getButtonHorizontalAlignment(item));\r\n        $container.parent().css(\"justifyContent\", this._getButtonVerticalAlignment(item));\r\n        var instance = this._createComponent($button, \"dxButton\", (0, _extend.extend)(defaultOptions, item.buttonOptions));\r\n        this._itemsRunTimeInfo.add({\r\n            item: item,\r\n            widgetInstance: instance,\r\n            guid: item.guid,\r\n            $itemContainer: $container\r\n        });\r\n        this._addItemClasses($container, item.col);\r\n        return $button\r\n    },\r\n    _addItemClasses: function($item, column) {\r\n        $item.addClass(_constants.FIELD_ITEM_CLASS).addClass(this.option(\"cssItemClass\")).addClass((0, _type.isDefined)(column) ? \"dx-col-\" + column : \"\")\r\n    },\r\n    _renderFieldItem: function(item, $container) {\r\n        var that = this;\r\n        var name = that._getName(item);\r\n        var id = that.getItemID(name);\r\n        var isRequired = (0, _type.isDefined)(item.isRequired) ? item.isRequired : !!that._hasRequiredRuleInSet(item.validationRules);\r\n        var labelOptions = that._getLabelOptions(item, id, isRequired);\r\n        var $editor = (0, _renderer.default)(\"<div>\");\r\n        var helpID = item.helpText ? \"dx-\" + new _guid.default : null;\r\n        var $label;\r\n        this._addItemClasses($container, item.col);\r\n        $container.addClass(isRequired ? _constants.FIELD_ITEM_REQUIRED_CLASS : _constants.FIELD_ITEM_OPTIONAL_CLASS);\r\n        if (labelOptions.visible && labelOptions.text) {\r\n            $label = that._renderLabel(labelOptions).appendTo($container)\r\n        }\r\n        if (item.itemType === SIMPLE_ITEM_TYPE) {\r\n            if (that._isLabelNeedBaselineAlign(item) && \"top\" !== labelOptions.location) {\r\n                $container.addClass(_constants.FIELD_ITEM_LABEL_ALIGN_CLASS)\r\n            }\r\n            that._hasBrowserFlex() && $container.addClass(_constants.FLEX_LAYOUT_CLASS)\r\n        }\r\n        $editor.data(\"dx-form-item\", item);\r\n        that._appendEditorToField({\r\n            $fieldItem: $container,\r\n            $label: $label,\r\n            $editor: $editor,\r\n            labelOptions: labelOptions\r\n        });\r\n        var instance = that._renderEditor({\r\n            $container: $editor,\r\n            dataField: item.dataField,\r\n            name: item.name,\r\n            editorType: item.editorType,\r\n            editorOptions: item.editorOptions,\r\n            template: that._getTemplateByFieldItem(item),\r\n            isRequired: isRequired,\r\n            helpID: helpID,\r\n            labelID: labelOptions.labelID,\r\n            id: id,\r\n            validationBoundary: that.option(\"validationBoundary\"),\r\n            allowIndeterminateState: item.allowIndeterminateState\r\n        });\r\n        this._itemsRunTimeInfo.add({\r\n            item: item,\r\n            widgetInstance: instance,\r\n            guid: item.guid,\r\n            $itemContainer: $container\r\n        });\r\n        var editorElem = $editor.children().first();\r\n        var $validationTarget = editorElem.hasClass(TEMPLATE_WRAPPER_CLASS) ? editorElem.children().first() : editorElem;\r\n        if ($validationTarget && $validationTarget.data(\"dx-validation-target\")) {\r\n            that._renderValidator($validationTarget, item)\r\n        }\r\n        that._renderHelpText(item, $editor, helpID);\r\n        that._attachClickHandler($label, $editor, item.editorType)\r\n    },\r\n    _hasRequiredRuleInSet: function(rules) {\r\n        var hasRequiredRule;\r\n        if (rules && rules.length) {\r\n            (0, _iterator.each)(rules, function(index, rule) {\r\n                if (\"required\" === rule.type) {\r\n                    hasRequiredRule = true;\r\n                    return false\r\n                }\r\n            })\r\n        }\r\n        return hasRequiredRule\r\n    },\r\n    _getName: function(item) {\r\n        return item.dataField || item.name\r\n    },\r\n    _isLabelNeedBaselineAlign: function(item) {\r\n        var largeEditors = [\"dxTextArea\", \"dxRadioGroup\", \"dxCalendar\", \"dxHtmlEditor\"];\r\n        return !!item.helpText && !this._hasBrowserFlex() || (0, _array.inArray)(item.editorType, largeEditors) !== -1\r\n    },\r\n    _isLabelNeedId: function(item) {\r\n        var editorsRequiringIdForLabel = [\"dxRadioGroup\", \"dxCheckBox\", \"dxLookup\", \"dxSlider\", \"dxRangeSlider\", \"dxSwitch\", \"dxHtmlEditor\"];\r\n        return (0, _array.inArray)(item.editorType, editorsRequiringIdForLabel) !== -1\r\n    },\r\n    _getLabelOptions: function(item, id, isRequired) {\r\n        var labelOptions = (0, _extend.extend)({\r\n            showColon: this.option(\"showColonAfterLabel\"),\r\n            location: this.option(\"labelLocation\"),\r\n            id: id,\r\n            visible: true,\r\n            isRequired: isRequired\r\n        }, item ? item.label : {});\r\n        if (this._isLabelNeedId(item)) {\r\n            labelOptions.labelID = \"dx-label-\".concat(new _guid.default)\r\n        }\r\n        if (!labelOptions.text && item.dataField) {\r\n            labelOptions.text = (0, _inflector.captionize)(item.dataField)\r\n        }\r\n        if (labelOptions.text) {\r\n            labelOptions.text += labelOptions.showColon ? \":\" : \"\"\r\n        }\r\n        return labelOptions\r\n    },\r\n    _renderLabel: function(options) {\r\n        var text = options.text,\r\n            id = options.id,\r\n            location = options.location,\r\n            alignment = options.alignment,\r\n            isRequired = options.isRequired,\r\n            _options$labelID = options.labelID,\r\n            labelID = void 0 === _options$labelID ? null : _options$labelID;\r\n        if ((0, _type.isDefined)(text) && text.length > 0) {\r\n            var labelClasses = _constants.FIELD_ITEM_LABEL_CLASS + \" \" + _constants.FIELD_ITEM_LABEL_LOCATION_CLASS + location;\r\n            var $label = (0, _renderer.default)(\"<label>\").addClass(labelClasses).attr(\"for\", id).attr(\"id\", labelID);\r\n            var $labelContent = (0, _renderer.default)(\"<span>\").addClass(_constants.FIELD_ITEM_LABEL_CONTENT_CLASS).appendTo($label);\r\n            (0, _renderer.default)(\"<span>\").addClass(_constants.FIELD_ITEM_LABEL_TEXT_CLASS).text(text).appendTo($labelContent);\r\n            if (alignment) {\r\n                $label.css(\"textAlign\", alignment)\r\n            }\r\n            $labelContent.append(this._renderLabelMark(isRequired));\r\n            return $label\r\n        }\r\n    },\r\n    _renderLabelMark: function(isRequired) {\r\n        var $mark;\r\n        var requiredMarksConfig = this._getRequiredMarksConfig();\r\n        var isRequiredMark = requiredMarksConfig.showRequiredMark && isRequired;\r\n        var isOptionalMark = requiredMarksConfig.showOptionalMark && !isRequired;\r\n        if (isRequiredMark || isOptionalMark) {\r\n            var markClass = isRequiredMark ? _constants.FIELD_ITEM_REQUIRED_MARK_CLASS : _constants.FIELD_ITEM_OPTIONAL_MARK_CLASS;\r\n            var markText = isRequiredMark ? requiredMarksConfig.requiredMark : requiredMarksConfig.optionalMark;\r\n            $mark = (0, _renderer.default)(\"<span>\").addClass(markClass).html(\"&nbsp\" + markText)\r\n        }\r\n        return $mark\r\n    },\r\n    _getRequiredMarksConfig: function() {\r\n        if (!this._cashedRequiredConfig) {\r\n            this._cashedRequiredConfig = {\r\n                showRequiredMark: this.option(\"showRequiredMark\"),\r\n                showOptionalMark: this.option(\"showOptionalMark\"),\r\n                requiredMark: this.option(\"requiredMark\"),\r\n                optionalMark: this.option(\"optionalMark\")\r\n            }\r\n        }\r\n        return this._cashedRequiredConfig\r\n    },\r\n    _renderEditor: function(options) {\r\n        var dataValue = this._getDataByField(options.dataField);\r\n        var defaultEditorOptions = void 0 !== dataValue || this._isCheckboxUndefinedStateEnabled(options) ? {\r\n            value: dataValue\r\n        } : {};\r\n        var isDeepExtend = true;\r\n        if (EDITORS_WITH_ARRAY_VALUE.indexOf(options.editorType) !== -1) {\r\n            defaultEditorOptions.value = defaultEditorOptions.value || []\r\n        }\r\n        var formInstance = this.option(\"form\");\r\n        var editorOptions = (0, _extend.extend)(isDeepExtend, defaultEditorOptions, options.editorOptions, {\r\n            inputAttr: {\r\n                id: options.id\r\n            },\r\n            validationBoundary: options.validationBoundary,\r\n            stylingMode: formInstance && formInstance.option(\"stylingMode\")\r\n        });\r\n        this._replaceDataOptions(options.editorOptions, editorOptions);\r\n        var renderOptions = {\r\n            editorType: options.editorType,\r\n            dataField: options.dataField,\r\n            template: options.template,\r\n            name: options.name,\r\n            helpID: options.helpID,\r\n            labelID: options.labelID,\r\n            isRequired: options.isRequired\r\n        };\r\n        return this._createEditor(options.$container, renderOptions, editorOptions)\r\n    },\r\n    _replaceDataOptions: function(originalOptions, resultOptions) {\r\n        if (originalOptions) {\r\n            DATA_OPTIONS.forEach(function(item) {\r\n                if (resultOptions[item]) {\r\n                    resultOptions[item] = originalOptions[item]\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _renderValidator: function($editor, item) {\r\n        var fieldName = this._getFieldLabelName(item);\r\n        var validationRules = this._prepareValidationRules(item.validationRules, item.isRequired, item.itemType, fieldName);\r\n        if (Array.isArray(validationRules) && validationRules.length) {\r\n            this._createComponent($editor, _validator.default, {\r\n                validationRules: validationRules,\r\n                validationGroup: this.option(\"validationGroup\"),\r\n                dataGetter: function() {\r\n                    return {\r\n                        formItem: item\r\n                    }\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _getFieldLabelName: function(item) {\r\n        var isItemHaveCustomLabel = item.label && item.label.text;\r\n        var itemName = isItemHaveCustomLabel ? null : this._getName(item);\r\n        return isItemHaveCustomLabel ? item.label.text : itemName && (0, _inflector.captionize)(itemName)\r\n    },\r\n    _prepareValidationRules: function(userValidationRules, isItemRequired, itemType, itemName) {\r\n        var isSimpleItem = itemType === SIMPLE_ITEM_TYPE;\r\n        var validationRules;\r\n        if (isSimpleItem) {\r\n            if (userValidationRules) {\r\n                validationRules = userValidationRules\r\n            } else {\r\n                var requiredMessage = (0, _string.format)(this.option(\"requiredMessage\"), itemName || \"\");\r\n                validationRules = isItemRequired ? [{\r\n                    type: \"required\",\r\n                    message: requiredMessage\r\n                }] : null\r\n            }\r\n        }\r\n        return validationRules\r\n    },\r\n    _addWrapperInvalidClass: function(editorInstance) {\r\n        var wrapperClass = \".\" + _constants.FIELD_ITEM_CONTENT_WRAPPER_CLASS;\r\n        var toggleInvalidClass = function(e) {\r\n            (0, _renderer.default)(e.element).parents(wrapperClass).toggleClass(INVALID_CLASS, e.component._isFocused() && false === e.component.option(\"isValid\"))\r\n        };\r\n        editorInstance.on(\"focusIn\", toggleInvalidClass).on(\"focusOut\", toggleInvalidClass).on(\"enterKey\", toggleInvalidClass)\r\n    },\r\n    _createEditor: function($container, renderOptions, editorOptions) {\r\n        var that = this;\r\n        var template = renderOptions.template;\r\n        var editorInstance;\r\n        if (renderOptions.dataField && !editorOptions.name) {\r\n            editorOptions.name = renderOptions.dataField\r\n        }\r\n        that._addItemContentClasses($container);\r\n        if (template) {\r\n            var data = {\r\n                dataField: renderOptions.dataField,\r\n                editorType: renderOptions.editorType,\r\n                editorOptions: editorOptions,\r\n                component: that._getComponentOwner(),\r\n                name: renderOptions.name\r\n            };\r\n            template.render({\r\n                model: data,\r\n                container: (0, _element.getPublicElement)($container)\r\n            })\r\n        } else {\r\n            var $editor = (0, _renderer.default)(\"<div>\").appendTo($container);\r\n            try {\r\n                editorInstance = that._createComponent($editor, renderOptions.editorType, editorOptions);\r\n                editorInstance.setAria(\"describedby\", renderOptions.helpID);\r\n                editorInstance.setAria(\"labelledby\", renderOptions.labelID);\r\n                editorInstance.setAria(\"required\", renderOptions.isRequired);\r\n                if ((0, _themes.isMaterial)()) {\r\n                    that._addWrapperInvalidClass(editorInstance)\r\n                }\r\n                if (renderOptions.dataField) {\r\n                    that._bindDataField(editorInstance, renderOptions, $container)\r\n                }\r\n            } catch (e) {\r\n                _ui.default.log(\"E1035\", e.message)\r\n            }\r\n        }\r\n        return editorInstance\r\n    },\r\n    _getComponentOwner: function() {\r\n        return this.option(\"form\") || this\r\n    },\r\n    _bindDataField: function(editorInstance, renderOptions, $container) {\r\n        var componentOwner = this._getComponentOwner();\r\n        editorInstance.on(\"enterKey\", function(args) {\r\n            componentOwner._createActionByOption(\"onEditorEnterKey\")((0, _extend.extend)(args, {\r\n                dataField: renderOptions.dataField\r\n            }))\r\n        });\r\n        this._createWatcher(editorInstance, $container, renderOptions);\r\n        this.linkEditorToDataField(editorInstance, renderOptions.dataField, renderOptions.editorType)\r\n    },\r\n    _createWatcher: function(editorInstance, $container, renderOptions) {\r\n        var that = this;\r\n        var watch = that._getWatch();\r\n        if (!(0, _type.isFunction)(watch)) {\r\n            return\r\n        }\r\n        var dispose = watch(function() {\r\n            return that._getDataByField(renderOptions.dataField)\r\n        }, function() {\r\n            editorInstance.option(\"value\", that._getDataByField(renderOptions.dataField))\r\n        }, {\r\n            deep: true,\r\n            skipImmediate: true\r\n        });\r\n        _events_engine.default.on($container, _remove_event.default, dispose)\r\n    },\r\n    _getWatch: function() {\r\n        if (!(0, _type.isDefined)(this._watch)) {\r\n            var formInstance = this.option(\"form\");\r\n            this._watch = formInstance && formInstance.option(\"integrationOptions.watchMethod\")\r\n        }\r\n        return this._watch\r\n    },\r\n    _addItemContentClasses: function($itemContent) {\r\n        var locationSpecificClass = this._getItemContentLocationSpecificClass();\r\n        $itemContent.addClass([_constants.FIELD_ITEM_CONTENT_CLASS, locationSpecificClass].join(\" \"))\r\n    },\r\n    _getItemContentLocationSpecificClass: function() {\r\n        var labelLocation = this.option(\"labelLocation\");\r\n        var oppositeClasses = {\r\n            right: \"left\",\r\n            left: \"right\",\r\n            top: \"bottom\"\r\n        };\r\n        return _constants.FIELD_ITEM_CONTENT_LOCATION_CLASS + oppositeClasses[labelLocation]\r\n    },\r\n    _createComponent: function($editor, type, editorOptions) {\r\n        var that = this;\r\n        var readOnlyState = this.option(\"readOnly\");\r\n        var instance = that.callBase($editor, type, editorOptions);\r\n        readOnlyState && instance.option(\"readOnly\", readOnlyState);\r\n        that.on(\"optionChanged\", function(args) {\r\n            if (\"readOnly\" === args.name && !(0, _type.isDefined)(editorOptions.readOnly)) {\r\n                instance.option(args.name, args.value)\r\n            }\r\n        });\r\n        return instance\r\n    },\r\n    _getTemplateByFieldItem: function(fieldItem) {\r\n        return fieldItem.template ? this._getTemplate(fieldItem.template) : null\r\n    },\r\n    _appendEditorToField: function(params) {\r\n        if (params.$label) {\r\n            var location = params.labelOptions.location;\r\n            if (\"top\" === location || \"left\" === location) {\r\n                params.$fieldItem.append(params.$editor)\r\n            }\r\n            if (\"right\" === location) {\r\n                params.$fieldItem.prepend(params.$editor)\r\n            }\r\n            this._addInnerItemAlignmentClass(params.$fieldItem, location)\r\n        } else {\r\n            params.$fieldItem.append(params.$editor)\r\n        }\r\n    },\r\n    _addInnerItemAlignmentClass: function($fieldItem, location) {\r\n        if (\"top\" === location) {\r\n            $fieldItem.addClass(_constants.LABEL_VERTICAL_ALIGNMENT_CLASS)\r\n        } else {\r\n            $fieldItem.addClass(_constants.LABEL_HORIZONTAL_ALIGNMENT_CLASS)\r\n        }\r\n    },\r\n    _renderHelpText: function(fieldItem, $editor, helpID) {\r\n        var helpText = fieldItem.helpText;\r\n        var isSimpleItem = fieldItem.itemType === SIMPLE_ITEM_TYPE;\r\n        if (helpText && isSimpleItem) {\r\n            var $editorWrapper = (0, _renderer.default)(\"<div>\").addClass(_constants.FIELD_ITEM_CONTENT_WRAPPER_CLASS);\r\n            $editor.wrap($editorWrapper);\r\n            (0, _renderer.default)(\"<div>\").addClass(_constants.FIELD_ITEM_HELP_TEXT_CLASS).attr(\"id\", helpID).text(helpText).appendTo($editor.parent())\r\n        }\r\n    },\r\n    _attachClickHandler: function($label, $editor, editorType) {\r\n        var isBooleanEditors = \"dxCheckBox\" === editorType || \"dxSwitch\" === editorType;\r\n        if ($label && isBooleanEditors) {\r\n            _events_engine.default.on($label, _click.name, function() {\r\n                _events_engine.default.trigger($editor.children(), _click.name)\r\n            })\r\n        }\r\n    },\r\n    _generateRatio: function(count, isAutoSize) {\r\n        var result = [];\r\n        var ratio;\r\n        var i;\r\n        for (i = 0; i < count; i++) {\r\n            ratio = {\r\n                ratio: 1\r\n            };\r\n            if (isAutoSize) {\r\n                ratio.baseSize = \"auto\"\r\n            }\r\n            result.push(ratio)\r\n        }\r\n        return result\r\n    },\r\n    _getRowsCount: function() {\r\n        return Math.ceil(this._items.length / this._getColCount())\r\n    },\r\n    _updateReferencedOptions: function(newLayoutData) {\r\n        var _this2 = this;\r\n        var layoutData = this.option(\"layoutData\");\r\n        if ((0, _type.isObject)(layoutData)) {\r\n            Object.getOwnPropertyNames(layoutData).forEach(function(property) {\r\n                return delete _this2._optionsByReference[\"layoutData.\" + property]\r\n            })\r\n        }\r\n        if ((0, _type.isObject)(newLayoutData)) {\r\n            Object.getOwnPropertyNames(newLayoutData).forEach(function(property) {\r\n                return _this2._optionsByReference[\"layoutData.\" + property] = true\r\n            })\r\n        }\r\n    },\r\n    _resetWidget: function(instance) {\r\n        this._disableEditorValueChangedHandler = true;\r\n        instance.reset();\r\n        this._disableEditorValueChangedHandler = false;\r\n        instance.option(\"isValid\", true)\r\n    },\r\n    _optionChanged: function(args) {\r\n        var _this3 = this;\r\n        if (0 === args.fullName.search(\"layoutData.\")) {\r\n            return\r\n        }\r\n        switch (args.name) {\r\n            case \"showRequiredMark\":\r\n            case \"showOptionalMark\":\r\n            case \"requiredMark\":\r\n            case \"optionalMark\":\r\n                this._cashedRequiredConfig = null;\r\n                this._invalidate();\r\n                break;\r\n            case \"layoutData\":\r\n                this._updateReferencedOptions(args.value);\r\n                if (this.option(\"items\")) {\r\n                    if (!(0, _type.isEmptyObject)(args.value)) {\r\n                        this._itemsRunTimeInfo.each(function(_, itemRunTimeInfo) {\r\n                            if ((0, _type.isDefined)(itemRunTimeInfo.item)) {\r\n                                var dataField = itemRunTimeInfo.item.dataField;\r\n                                if (dataField && (0, _type.isDefined)(itemRunTimeInfo.widgetInstance)) {\r\n                                    var valueGetter = (0, _data.compileGetter)(dataField);\r\n                                    var dataValue = valueGetter(args.value);\r\n                                    if (void 0 !== dataValue || _this3._isCheckboxUndefinedStateEnabled(itemRunTimeInfo.item)) {\r\n                                        itemRunTimeInfo.widgetInstance.option(\"value\", dataValue)\r\n                                    } else {\r\n                                        _this3._resetWidget(itemRunTimeInfo.widgetInstance)\r\n                                    }\r\n                                }\r\n                            }\r\n                        })\r\n                    }\r\n                } else {\r\n                    this._initDataAndItems(args.value);\r\n                    this._invalidate()\r\n                }\r\n                break;\r\n            case \"items\":\r\n                this._cleanItemWatchers();\r\n                this._initDataAndItems(args.value);\r\n                this._invalidate();\r\n                break;\r\n            case \"alignItemLabels\":\r\n            case \"labelLocation\":\r\n            case \"requiredMessage\":\r\n                this._invalidate();\r\n                break;\r\n            case \"customizeItem\":\r\n                this._updateItems(this.option(\"layoutData\"));\r\n                this._invalidate();\r\n                break;\r\n            case \"colCount\":\r\n                this._resetColCount();\r\n                break;\r\n            case \"minColWidth\":\r\n                if (\"auto\" === this.option(\"colCount\")) {\r\n                    this._resetColCount()\r\n                }\r\n                break;\r\n            case \"readOnly\":\r\n                break;\r\n            case \"width\":\r\n                this.callBase(args);\r\n                if (\"auto\" === this.option(\"colCount\")) {\r\n                    this._resetColCount()\r\n                }\r\n                break;\r\n            case \"onFieldDataChanged\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _resetColCount: function() {\r\n        this._cashedColCount = null;\r\n        this._invalidate()\r\n    },\r\n    linkEditorToDataField: function(editorInstance, dataField) {\r\n        var _this4 = this;\r\n        this.on(\"optionChanged\", function(args) {\r\n            if (args.fullName === \"layoutData.\".concat(dataField)) {\r\n                editorInstance._setOptionWithoutOptionChange(\"value\", args.value)\r\n            }\r\n        });\r\n        editorInstance.on(\"valueChanged\", function(args) {\r\n            var isValueReferenceType = (0, _type.isObject)(args.value) || Array.isArray(args.value);\r\n            if (!_this4._disableEditorValueChangedHandler && !(isValueReferenceType && args.value === args.previousValue)) {\r\n                _this4._updateFieldValue(dataField, args.value)\r\n            }\r\n        })\r\n    },\r\n    _dimensionChanged: function() {\r\n        if (\"auto\" === this.option(\"colCount\") && this.isCachedColCountObsolete()) {\r\n            this._eventsStrategy.fireEvent(\"autoColCountChanged\")\r\n        }\r\n    },\r\n    getItemID: function(name) {\r\n        var formInstance = this.option(\"form\");\r\n        return formInstance && formInstance.getItemID(name)\r\n    },\r\n    updateData: function(data, value) {\r\n        var that = this;\r\n        if ((0, _type.isObject)(data)) {\r\n            (0, _iterator.each)(data, function(dataField, fieldValue) {\r\n                that._updateFieldValue(dataField, fieldValue)\r\n            })\r\n        } else {\r\n            if (\"string\" === typeof data) {\r\n                that._updateFieldValue(data, value)\r\n            }\r\n        }\r\n    },\r\n    getEditor: function(field) {\r\n        return this._itemsRunTimeInfo.findWidgetInstanceByDataField(field) || this._itemsRunTimeInfo.findWidgetInstanceByName(field)\r\n    },\r\n    isSingleColumnMode: function(component) {\r\n        var responsiveBox = this._responsiveBox || component;\r\n        if (responsiveBox) {\r\n            return responsiveBox.option(\"currentScreenFactor\") === responsiveBox.option(\"singleColumnScreen\")\r\n        }\r\n    },\r\n    getItemsRunTimeInfo: function() {\r\n        return this._itemsRunTimeInfo\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxLayoutManager\", LayoutManager);\r\nvar _default = LayoutManager;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/text_box/utils.caret.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _devices$real = _devices.default.real(),\r\n    ios = _devices$real.ios,\r\n    mac = _devices$real.mac;\r\nvar isFocusingOnCaretChange = _browser.default.msie || ios || mac;\r\nvar getCaret = function(input) {\r\n    var range;\r\n    try {\r\n        range = {\r\n            start: input.selectionStart,\r\n            end: input.selectionEnd\r\n        }\r\n    } catch (e) {\r\n        range = {\r\n            start: 0,\r\n            end: 0\r\n        }\r\n    }\r\n    return range\r\n};\r\nvar setCaret = function(input, position) {\r\n    if (!_dom_adapter.default.getBody().contains(input)) {\r\n        return\r\n    }\r\n    try {\r\n        input.selectionStart = position.start;\r\n        input.selectionEnd = position.end\r\n    } catch (e) {}\r\n};\r\nvar caret = function(input, position) {\r\n    input = (0, _renderer.default)(input).get(0);\r\n    if (!(0, _type.isDefined)(position)) {\r\n        return getCaret(input)\r\n    }\r\n    if (isFocusingOnCaretChange && _dom_adapter.default.getActiveElement() !== input) {\r\n        return\r\n    }\r\n    setCaret(input, position)\r\n};\r\nvar _default = caret;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/pie_point.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _utils = require(\"../../core/utils\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _round = Math.round;\r\nvar _sqrt = Math.sqrt;\r\nvar _acos = Math.acos;\r\nvar DEG = 180 / Math.PI;\r\nvar _abs = Math.abs;\r\nvar RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n    _updateData: function(data, argumentChanged) {\r\n        var that = this;\r\n        _symbol_point.default._updateData.call(this, data);\r\n        if (argumentChanged || !(0, _type.isDefined)(that._visible)) {\r\n            that._visible = true\r\n        }\r\n        that.minValue = that.initialMinValue = that.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : 0\r\n    },\r\n    animate: function(complete, duration, delay) {\r\n        var that = this;\r\n        that.graphic.animate({\r\n            x: that.centerX,\r\n            y: that.centerY,\r\n            outerRadius: that.radiusOuter,\r\n            innerRadius: that.radiusInner,\r\n            startAngle: that.toAngle,\r\n            endAngle: that.fromAngle\r\n        }, {\r\n            delay: delay,\r\n            partitionDuration: duration\r\n        }, complete)\r\n    },\r\n    correctPosition: function(correction) {\r\n        var that = this;\r\n        that.correctRadius(correction);\r\n        that.correctLabelRadius(correction.radiusOuter + RADIAL_LABEL_INDENT);\r\n        that.centerX = correction.centerX;\r\n        that.centerY = correction.centerY\r\n    },\r\n    correctRadius: function(correction) {\r\n        this.radiusInner = correction.radiusInner;\r\n        this.radiusOuter = correction.radiusOuter\r\n    },\r\n    correctLabelRadius: function(radiusLabels) {\r\n        this.radiusLabels = radiusLabels\r\n    },\r\n    correctValue: function(correction, percent, base) {\r\n        var that = this;\r\n        that.value = (base || that.normalInitialValue) + correction;\r\n        that.minValue = correction;\r\n        that.percent = percent;\r\n        that._label.setDataField(\"percent\", percent)\r\n    },\r\n    _updateLabelData: function() {\r\n        this._label.setData(this._getLabelFormatObject())\r\n    },\r\n    _getShiftLabelCoords: function() {\r\n        var that = this;\r\n        var bBox = that._label.getBoundingRect();\r\n        var coord = that._getLabelCoords(that._label);\r\n        var visibleArea = that._getVisibleArea();\r\n        if (that._isLabelDrawingWithoutPoints) {\r\n            return that._checkLabelPosition(coord, bBox, visibleArea)\r\n        } else {\r\n            return that._getLabelExtraCoord(coord, that._checkVerticalLabelPosition(coord, bBox, visibleArea), bBox)\r\n        }\r\n    },\r\n    _getLabelPosition: function(options) {\r\n        return options.position\r\n    },\r\n    getAnnotationCoords: function(location) {\r\n        return this._getElementCoords(\"edge\" !== location ? \"inside\" : \"outside\", this.radiusOuter, 0)\r\n    },\r\n    _getElementCoords: function(position, elementRadius, radialOffset) {\r\n        var bBox = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        };\r\n        var that = this;\r\n        var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n        var radiusInner = that.radiusInner;\r\n        var radiusOuter = that.radiusOuter;\r\n        var columnsPosition = \"columns\" === position;\r\n        var rad;\r\n        var x;\r\n        if (\"inside\" === position) {\r\n            rad = radiusInner + (radiusOuter - radiusInner) / 2 + radialOffset;\r\n            x = that.centerX + rad * angleFunctions.cos - bBox.width / 2\r\n        } else {\r\n            rad = elementRadius + radialOffset;\r\n            if (angleFunctions.cos > .1 || columnsPosition && angleFunctions.cos >= 0) {\r\n                x = that.centerX + rad * angleFunctions.cos\r\n            } else {\r\n                if (angleFunctions.cos < -.1 || columnsPosition && angleFunctions.cos < 0) {\r\n                    x = that.centerX + rad * angleFunctions.cos - bBox.width\r\n                } else {\r\n                    x = that.centerX + rad * angleFunctions.cos - bBox.width / 2\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            x: x,\r\n            y: _round(that.centerY - rad * angleFunctions.sin - bBox.height / 2)\r\n        }\r\n    },\r\n    _getLabelCoords: function(label) {\r\n        var that = this;\r\n        var bBox = label.getBoundingRect();\r\n        var options = label.getLayoutOptions();\r\n        var position = that._getLabelPosition(options);\r\n        return that._getElementCoords(position, that.radiusLabels, options.radialOffset, bBox)\r\n    },\r\n    _correctLabelCoord: function(coord, moveLabelsFromCenter) {\r\n        var that = this;\r\n        var label = that._label;\r\n        var bBox = label.getBoundingRect();\r\n        var labelWidth = bBox.width;\r\n        var options = label.getLayoutOptions();\r\n        var visibleArea = that._getVisibleArea();\r\n        var rightBorderX = visibleArea.maxX - labelWidth;\r\n        var leftBorderX = visibleArea.minX;\r\n        var angleOfPoint = (0, _utils.normalizeAngle)(that.middleAngle);\r\n        var centerX = that.centerX;\r\n        var connectorOffset = options.connectorOffset;\r\n        var x = coord.x;\r\n        if (\"columns\" === options.position) {\r\n            if (angleOfPoint <= 90 || angleOfPoint >= 270) {\r\n                x = rightBorderX\r\n            } else {\r\n                x = leftBorderX\r\n            }\r\n            coord.x = x\r\n        } else {\r\n            if (\"inside\" !== options.position && moveLabelsFromCenter) {\r\n                if (angleOfPoint <= 90 || angleOfPoint >= 270) {\r\n                    if (x - connectorOffset < centerX) {\r\n                        x = centerX + connectorOffset\r\n                    }\r\n                } else {\r\n                    if (x + labelWidth + connectorOffset > centerX) {\r\n                        x = centerX - labelWidth - connectorOffset\r\n                    }\r\n                }\r\n                coord.x = x\r\n            }\r\n        }\r\n        return coord\r\n    },\r\n    drawLabel: function() {\r\n        this.translate();\r\n        this._isLabelDrawingWithoutPoints = true;\r\n        this._drawLabel();\r\n        this._isLabelDrawingWithoutPoints = false\r\n    },\r\n    updateLabelCoord: function(moveLabelsFromCenter) {\r\n        var that = this;\r\n        var bBox = that._label.getBoundingRect();\r\n        var coord = that._correctLabelCoord(bBox, moveLabelsFromCenter);\r\n        coord = that._checkHorizontalLabelPosition(coord, bBox, that._getVisibleArea());\r\n        that._label.shift(_round(coord.x), _round(bBox.y))\r\n    },\r\n    _checkVerticalLabelPosition: function(coord, box, visibleArea) {\r\n        var x = coord.x;\r\n        var y = coord.y;\r\n        if (coord.y + box.height > visibleArea.maxY) {\r\n            y = visibleArea.maxY - box.height\r\n        } else {\r\n            if (coord.y < visibleArea.minY) {\r\n                y = visibleArea.minY\r\n            }\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y\r\n        }\r\n    },\r\n    _getLabelExtraCoord: function(coord, shiftCoord, box) {\r\n        return coord.y !== shiftCoord.y ? (0, _utils.getVerticallyShiftedAngularCoords)({\r\n            x: coord.x,\r\n            y: coord.y,\r\n            width: box.width,\r\n            height: box.height\r\n        }, shiftCoord.y - coord.y, {\r\n            x: this.centerX,\r\n            y: this.centerY\r\n        }) : coord\r\n    },\r\n    _checkHorizontalLabelPosition: function(coord, box, visibleArea) {\r\n        var x = coord.x;\r\n        var y = coord.y;\r\n        if (coord.x + box.width > visibleArea.maxX) {\r\n            x = visibleArea.maxX - box.width\r\n        } else {\r\n            if (coord.x < visibleArea.minX) {\r\n                x = visibleArea.minX\r\n            }\r\n        }\r\n        return {\r\n            x: x,\r\n            y: y\r\n        }\r\n    },\r\n    applyWordWrap: function(moveLabelsFromCenter) {\r\n        var that = this;\r\n        var label = that._label;\r\n        var box = label.getBoundingRect();\r\n        var visibleArea = that._getVisibleArea();\r\n        var position = label.getLayoutOptions().position;\r\n        var width = box.width;\r\n        var rowCountChanged = false;\r\n        if (\"columns\" === position && that.series.index > 0) {\r\n            width = visibleArea.maxX - that.centerX - that.radiusLabels\r\n        } else {\r\n            if (\"inside\" === position) {\r\n                if (width > visibleArea.maxX - visibleArea.minX) {\r\n                    width = visibleArea.maxX - visibleArea.minX\r\n                }\r\n            } else {\r\n                if (moveLabelsFromCenter && box.x < that.centerX && box.width + box.x > that.centerX) {\r\n                    width = Math.floor((visibleArea.maxX - visibleArea.minX) / 2)\r\n                } else {\r\n                    if (box.x + width > visibleArea.maxX) {\r\n                        width = visibleArea.maxX - box.x\r\n                    } else {\r\n                        if (box.x < visibleArea.minX) {\r\n                            width = box.x + width - visibleArea.minX\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        if (width < box.width) {\r\n            rowCountChanged = label.fit(width)\r\n        }\r\n        return rowCountChanged\r\n    },\r\n    setLabelTrackerData: function() {\r\n        this._label.setTrackerData(this)\r\n    },\r\n    _checkLabelPosition: function(coord, bBox, visibleArea) {\r\n        coord = this._checkHorizontalLabelPosition(coord, bBox, visibleArea);\r\n        return this._checkVerticalLabelPosition(coord, bBox, visibleArea)\r\n    },\r\n    _getLabelConnector: function() {\r\n        var that = this;\r\n        var rad = that.radiusOuter;\r\n        var seriesStyle = that._options.styles.normal;\r\n        var strokeWidthBy2 = seriesStyle[\"stroke-width\"] / 2;\r\n        var borderWidth = that.series.getOptions().containerBackgroundColor === seriesStyle.stroke ? _round(strokeWidthBy2) : _round(-strokeWidthBy2);\r\n        var angleFunctions = (0, _utils.getCosAndSin)(_round(that.middleAngle));\r\n        return {\r\n            x: _round(that.centerX + (rad - borderWidth) * angleFunctions.cos),\r\n            y: _round(that.centerY - (rad - borderWidth) * angleFunctions.sin),\r\n            angle: that.middleAngle\r\n        }\r\n    },\r\n    _drawMarker: function(renderer, group, animationEnabled, firstDrawing) {\r\n        var that = this;\r\n        var radiusOuter = that.radiusOuter;\r\n        var radiusInner = that.radiusInner;\r\n        var fromAngle = that.fromAngle;\r\n        var toAngle = that.toAngle;\r\n        if (animationEnabled) {\r\n            radiusInner = radiusOuter = 0;\r\n            if (!firstDrawing) {\r\n                fromAngle = toAngle = that.shiftedAngle\r\n            }\r\n        }\r\n        that.graphic = renderer.arc(that.centerX, that.centerY, radiusInner, radiusOuter, toAngle, fromAngle).attr({\r\n            \"stroke-linejoin\": \"round\"\r\n        }).smartAttr(that._getStyle()).data({\r\n            \"chart-data-point\": that\r\n        }).sharp().append(group)\r\n    },\r\n    getTooltipParams: function() {\r\n        var that = this;\r\n        var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n        var radiusInner = that.radiusInner;\r\n        var radiusOuter = that.radiusOuter;\r\n        return {\r\n            x: that.centerX + (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.cos,\r\n            y: that.centerY - (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.sin,\r\n            offset: 0\r\n        }\r\n    },\r\n    _translate: function() {\r\n        var that = this;\r\n        var angle = that.shiftedAngle || 0;\r\n        var value = that.value;\r\n        var minValue = that.minValue;\r\n        var translator = that._getValTranslator();\r\n        that.fromAngle = translator.translate(minValue) + angle;\r\n        that.toAngle = translator.translate(value) + angle;\r\n        that.middleAngle = translator.translate((value - minValue) / 2 + minValue) + angle;\r\n        if (!that.isVisible()) {\r\n            that.middleAngle = that.toAngle = that.fromAngle = that.fromAngle || angle\r\n        }\r\n    },\r\n    getMarkerVisibility: function() {\r\n        return true\r\n    },\r\n    _updateMarker: function(animationEnabled, style, _, callback) {\r\n        var that = this;\r\n        if (!animationEnabled) {\r\n            style = _extend({\r\n                x: that.centerX,\r\n                y: that.centerY,\r\n                outerRadius: that.radiusOuter,\r\n                innerRadius: that.radiusInner,\r\n                startAngle: that.toAngle,\r\n                endAngle: that.fromAngle\r\n            }, style)\r\n        }\r\n        that.graphic.smartAttr(style).sharp();\r\n        callback && callback()\r\n    },\r\n    getLegendStyles: function() {\r\n        return this._styles.legendStyles\r\n    },\r\n    isInVisibleArea: function() {\r\n        return true\r\n    },\r\n    hide: function() {\r\n        var that = this;\r\n        if (that._visible) {\r\n            that._visible = false;\r\n            that.hideTooltip();\r\n            that._options.visibilityChanged()\r\n        }\r\n    },\r\n    show: function() {\r\n        var that = this;\r\n        if (!that._visible) {\r\n            that._visible = true;\r\n            that._options.visibilityChanged()\r\n        }\r\n    },\r\n    setInvisibility: function() {\r\n        this._label.draw(false)\r\n    },\r\n    isVisible: function() {\r\n        return this._visible\r\n    },\r\n    _getFormatObject: function(tooltip) {\r\n        var formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);\r\n        var percent = this.percent;\r\n        formatObject.percent = percent;\r\n        formatObject.percentText = tooltip.formatValue(percent, \"percent\");\r\n        return formatObject\r\n    },\r\n    getColor: function() {\r\n        return this._styles.normal.fill\r\n    },\r\n    coordsIn: function(x, y) {\r\n        var that = this;\r\n        var lx = x - that.centerX;\r\n        var ly = y - that.centerY;\r\n        var r = _sqrt(lx * lx + ly * ly);\r\n        var fromAngle = that.fromAngle % 360;\r\n        var toAngle = that.toAngle % 360;\r\n        var angle;\r\n        if (r < that.radiusInner || r > that.radiusOuter || 0 === r) {\r\n            return false\r\n        }\r\n        angle = _acos(lx / r) * DEG * (ly > 0 ? -1 : 1);\r\n        if (angle < 0) {\r\n            angle += 360\r\n        }\r\n        if (fromAngle === toAngle && _abs(that.toAngle - that.fromAngle) > 1e-4) {\r\n            return true\r\n        } else {\r\n            return fromAngle >= toAngle ? angle <= fromAngle && angle >= toAngle : !(angle >= fromAngle && angle <= toAngle)\r\n        }\r\n    }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.header_filter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.header_filter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiData_grid.default.registerModule(\"headerFilter\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (events/pointer/mouse.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _base = _interopRequireDefault(require(\"./base\"));\r\nvar _observer = _interopRequireDefault(require(\"./observer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar eventMap = {\r\n    dxpointerdown: \"mousedown\",\r\n    dxpointermove: \"mousemove\",\r\n    dxpointerup: \"mouseup\",\r\n    dxpointercancel: \"\",\r\n    dxpointerover: \"mouseover\",\r\n    dxpointerout: \"mouseout\",\r\n    dxpointerenter: \"mouseenter\",\r\n    dxpointerleave: \"mouseleave\"\r\n};\r\nvar normalizeMouseEvent = function(e) {\r\n    e.pointerId = 1;\r\n    return {\r\n        pointers: observer.pointers(),\r\n        pointerId: 1\r\n    }\r\n};\r\nvar observer;\r\nvar activated = false;\r\nvar activateStrategy = function() {\r\n    if (activated) {\r\n        return\r\n    }\r\n    observer = new _observer.default(eventMap, function() {\r\n        return true\r\n    });\r\n    activated = true\r\n};\r\nvar MouseStrategy = _base.default.inherit({\r\n    ctor: function() {\r\n        this.callBase.apply(this, arguments);\r\n        activateStrategy()\r\n    },\r\n    _fireEvent: function(args) {\r\n        return this.callBase((0, _extend.extend)(normalizeMouseEvent(args.originalEvent), args))\r\n    }\r\n});\r\nMouseStrategy.map = eventMap;\r\nMouseStrategy.normalize = normalizeMouseEvent;\r\nMouseStrategy.activate = activateStrategy;\r\nMouseStrategy.resetObserver = function() {\r\n    observer.reset()\r\n};\r\nvar _default = MouseStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/ready_callbacks.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\nvar _dependency_injector = _interopRequireDefault(require(\"./dependency_injector\"));\r\nvar _window = require(\"./window\");\r\nvar _call_once = _interopRequireDefault(require(\"./call_once\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar callbacks = [];\r\nvar isReady = function() {\r\n    return \"complete\" === _dom_adapter.default.getReadyState() || \"loading\" !== _dom_adapter.default.getReadyState() && !_dom_adapter.default.getDocumentElement().doScroll\r\n};\r\nvar subscribeReady = (0, _call_once.default)(function() {\r\n    var removeListener = _dom_adapter.default.listen(_dom_adapter.default.getDocument(), \"DOMContentLoaded\", function() {\r\n        readyCallbacks.fire();\r\n        removeListener()\r\n    })\r\n});\r\nvar readyCallbacks = {\r\n    add: function(callback) {\r\n        var windowExists = (0, _window.hasWindow)();\r\n        if (windowExists && isReady()) {\r\n            callback()\r\n        } else {\r\n            callbacks.push(callback);\r\n            windowExists && subscribeReady()\r\n        }\r\n    },\r\n    fire: function() {\r\n        callbacks.forEach(function(callback) {\r\n            return callback()\r\n        });\r\n        callbacks = []\r\n    }\r\n};\r\nvar _default = (0, _dependency_injector.default)(readyCallbacks);\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/event_emitter.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.makeEventEmitter = makeEventEmitter;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar eventEmitterMethods = {\r\n    _initEvents: function() {\r\n        var names = this._eventNames;\r\n        var i;\r\n        var ii = names.length;\r\n        var events = this._events = {};\r\n        for (i = 0; i < ii; ++i) {\r\n            events[names[i]] = (0, _callbacks.default)()\r\n        }\r\n    },\r\n    _disposeEvents: function() {\r\n        var events = this._events;\r\n        var name;\r\n        for (name in events) {\r\n            events[name].empty()\r\n        }\r\n        this._events = null\r\n    },\r\n    on: function(handlers) {\r\n        var events = this._events;\r\n        var name;\r\n        for (name in handlers) {\r\n            events[name].add(handlers[name])\r\n        }\r\n        return dispose;\r\n\r\n        function dispose() {\r\n            for (name in handlers) {\r\n                events[name].remove(handlers[name])\r\n            }\r\n        }\r\n    },\r\n    _fire: function(name, arg) {\r\n        this._events[name].fire(arg)\r\n    }\r\n};\r\n\r\nfunction makeEventEmitter(target) {\r\n    var proto = target.prototype;\r\n    var name;\r\n    for (name in eventEmitterMethods) {\r\n        proto[name] = eventEmitterMethods[name]\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointment.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = require(\"../tooltip/ui.tooltip\");\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.publisher_mixin\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _resizable = _interopRequireDefault(require(\"../resizable\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _constants = require(\"./constants\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DEFAULT_HORIZONTAL_HANDLES = \"left right\";\r\nvar DEFAULT_VERTICAL_HANDLES = \"top bottom\";\r\nvar REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.enter, \"dxSchedulerAppointment\");\r\nvar REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.leave, \"dxSchedulerAppointment\");\r\nvar Appointment = _dom_component.default.inherit({\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            data: {},\r\n            geometry: {\r\n                top: 0,\r\n                left: 0,\r\n                width: 0,\r\n                height: 0\r\n            },\r\n            allowDrag: true,\r\n            allowResize: true,\r\n            reduced: null,\r\n            isCompact: false,\r\n            direction: \"vertical\",\r\n            resizableConfig: {},\r\n            cellHeight: 0,\r\n            cellWidth: 0\r\n        })\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"data\":\r\n            case \"geometry\":\r\n            case \"allowDrag\":\r\n            case \"allowResize\":\r\n            case \"reduced\":\r\n            case \"sortedIndex\":\r\n            case \"isCompact\":\r\n            case \"direction\":\r\n            case \"resizableConfig\":\r\n            case \"cellHeight\":\r\n            case \"cellWidth\":\r\n                this._invalidate();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _getHorizontalResizingRule: function() {\r\n        var reducedHandles = {\r\n            head: this.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n            body: \"\",\r\n            tail: this.option(\"rtlEnabled\") ? \"left\" : \"right\"\r\n        };\r\n        return {\r\n            handles: this.option(\"reduced\") ? reducedHandles[this.option(\"reduced\")] : DEFAULT_HORIZONTAL_HANDLES,\r\n            minHeight: 0,\r\n            minWidth: this.invoke(\"getCellWidth\"),\r\n            step: this.invoke(\"getResizableStep\"),\r\n            roundStepValue: false\r\n        }\r\n    },\r\n    _getVerticalResizingRule: function() {\r\n        var height = this.invoke(\"getCellHeight\");\r\n        return {\r\n            handles: DEFAULT_VERTICAL_HANDLES,\r\n            minWidth: 0,\r\n            minHeight: height,\r\n            step: height,\r\n            roundStepValue: true\r\n        }\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderAppointmentGeometry();\r\n        this._renderEmptyClass();\r\n        this._renderReducedAppointment();\r\n        this._renderAllDayClass();\r\n        this._renderDirection();\r\n        this.$element().data(\"dxAppointmentStartDate\", this.option(\"startDate\"));\r\n        this.$element().attr(\"title\", this.invoke(\"getField\", \"text\", this.option(\"data\")));\r\n        this.$element().attr(\"role\", \"button\");\r\n        this._renderRecurrenceClass();\r\n        this._renderResizable()\r\n    },\r\n    _renderAppointmentGeometry: function() {\r\n        var geometry = this.option(\"geometry\");\r\n        var $element = this.$element();\r\n        (0, _translator.move)($element, {\r\n            top: geometry.top,\r\n            left: geometry.left\r\n        });\r\n        $element.css({\r\n            width: geometry.width < 0 ? 0 : geometry.width,\r\n            height: geometry.height < 0 ? 0 : geometry.height\r\n        })\r\n    },\r\n    _renderEmptyClass: function() {\r\n        var geometry = this.option(\"geometry\");\r\n        if (geometry.empty || this.option(\"isCompact\")) {\r\n            this.$element().addClass(_constants.EMPTY_APPOINTMENT_CLASS)\r\n        }\r\n    },\r\n    _renderReducedAppointment: function() {\r\n        var reducedPart = this.option(\"reduced\");\r\n        if (!reducedPart) {\r\n            return\r\n        }\r\n        this.$element().toggleClass(_constants.REDUCED_APPOINTMENT_CLASS, true).toggleClass(_constants.REDUCED_APPOINTMENT_PARTS_CLASSES[reducedPart], true);\r\n        this._renderAppointmentReducedIcon()\r\n    },\r\n    _renderAppointmentReducedIcon: function() {\r\n        var $icon = (0, _renderer.default)(\"<div>\").addClass(_constants.REDUCED_APPOINTMENT_ICON).appendTo(this.$element());\r\n        var endDate = this._getEndDate();\r\n        var tooltipLabel = _message.default.format(\"dxScheduler-editorLabelEndDate\");\r\n        var tooltipText = [tooltipLabel, \": \", _date.default.format(endDate, \"monthAndDay\"), \", \", _date.default.format(endDate, \"year\")].join(\"\");\r\n        _events_engine.default.off($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME);\r\n        _events_engine.default.on($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME, function() {\r\n            (0, _ui.show)({\r\n                target: $icon,\r\n                content: tooltipText\r\n            })\r\n        });\r\n        _events_engine.default.off($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME);\r\n        _events_engine.default.on($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME, function() {\r\n            (0, _ui.hide)()\r\n        })\r\n    },\r\n    _getEndDate: function() {\r\n        var result = this.invoke(\"getField\", \"endDate\", this.option(\"data\"));\r\n        if (result) {\r\n            return new Date(result)\r\n        }\r\n        return result\r\n    },\r\n    _renderAllDayClass: function() {\r\n        this.$element().toggleClass(_constants.ALL_DAY_APPOINTMENT_CLASS, !!this.option(\"allDay\"))\r\n    },\r\n    _renderRecurrenceClass: function() {\r\n        var rule = this.invoke(\"getField\", \"recurrenceRule\", this.option(\"data\"));\r\n        if ((0, _recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(rule)) {\r\n            this.$element().addClass(_constants.RECURRENCE_APPOINTMENT_CLASS)\r\n        }\r\n    },\r\n    _renderDirection: function() {\r\n        this.$element().addClass(_constants.DIRECTION_APPOINTMENT_CLASSES[this.option(\"direction\")])\r\n    },\r\n    _createResizingConfig: function() {\r\n        var config = \"vertical\" === this.option(\"direction\") ? this._getVerticalResizingRule() : this._getHorizontalResizingRule();\r\n        if (!this.invoke(\"isGroupedByDate\")) {\r\n            config.stepPrecision = \"strict\"\r\n        }\r\n        return config\r\n    },\r\n    _renderResizable: function() {\r\n        if (this.option(\"allowResize\")) {\r\n            this._createComponent(this.$element(), _resizable.default, (0, _extend.extend)(this._createResizingConfig(), this.option(\"resizableConfig\")))\r\n        }\r\n    },\r\n    _useTemplates: function() {\r\n        return false\r\n    }\r\n}).include(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerAppointment\", Appointment);\r\nvar _default = Appointment;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/inflector.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.captionize = exports.titleize = exports.humanize = exports.camelize = exports.underscore = exports.dasherize = void 0;\r\nvar _iterator = require(\"./iterator\");\r\nvar _normalize = function(text) {\r\n    if (void 0 === text || null === text) {\r\n        return \"\"\r\n    }\r\n    return String(text)\r\n};\r\nvar _upperCaseFirst = function(text) {\r\n    return _normalize(text).charAt(0).toUpperCase() + text.substr(1)\r\n};\r\nvar _chop = function(text) {\r\n    return _normalize(text).replace(/([a-z\\d])([A-Z])/g, \"$1 $2\").split(/[\\s_-]+/)\r\n};\r\nvar dasherize = function(text) {\r\n    return (0, _iterator.map)(_chop(text), function(p) {\r\n        return p.toLowerCase()\r\n    }).join(\"-\")\r\n};\r\nexports.dasherize = dasherize;\r\nvar underscore = function(text) {\r\n    return dasherize(text).replace(/-/g, \"_\")\r\n};\r\nexports.underscore = underscore;\r\nvar camelize = function(text, upperFirst) {\r\n    return (0, _iterator.map)(_chop(text), function(p, i) {\r\n        p = p.toLowerCase();\r\n        if (upperFirst || i > 0) {\r\n            p = _upperCaseFirst(p)\r\n        }\r\n        return p\r\n    }).join(\"\")\r\n};\r\nexports.camelize = camelize;\r\nvar humanize = function(text) {\r\n    return _upperCaseFirst(dasherize(text).replace(/-/g, \" \"))\r\n};\r\nexports.humanize = humanize;\r\nvar titleize = function(text) {\r\n    return (0, _iterator.map)(_chop(text), function(p) {\r\n        return _upperCaseFirst(p.toLowerCase())\r\n    }).join(\" \")\r\n};\r\nexports.titleize = titleize;\r\nvar DIGIT_CHARS = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\r\nvar captionize = function(name) {\r\n    var captionList = [];\r\n    var i;\r\n    var char;\r\n    var isPrevCharNewWord = false;\r\n    var isNewWord = false;\r\n    for (i = 0; i < name.length; i++) {\r\n        char = name.charAt(i);\r\n        isNewWord = char === char.toUpperCase() && \"-\" !== char && \")\" !== char && \"/\" !== char || char in DIGIT_CHARS;\r\n        if (\"_\" === char || \".\" === char) {\r\n            char = \" \";\r\n            isNewWord = true\r\n        } else {\r\n            if (0 === i) {\r\n                char = char.toUpperCase();\r\n                isNewWord = true\r\n            } else {\r\n                if (!isPrevCharNewWord && isNewWord) {\r\n                    if (captionList.length > 0) {\r\n                        captionList.push(\" \")\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        captionList.push(char);\r\n        isPrevCharNewWord = isNewWord\r\n    }\r\n    return captionList.join(\"\")\r\n};\r\nexports.captionize = captionize;\r\n","/**\r\n * DevExtreme (viz/gauges/linear_gauge.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _base_gauge = require(\"./base_gauge\");\r\nvar _common = require(\"./common\");\r\nvar _utils = require(\"../core/utils\");\r\nvar linearIndicators = _interopRequireWildcard(require(\"./linear_indicators\"));\r\nvar _linear_range_container = _interopRequireDefault(require(\"./linear_range_container\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _max = Math.max;\r\nvar _min = Math.min;\r\nvar _round = Math.round;\r\nvar dxLinearGauge = _common.dxGauge.inherit({\r\n    _rootClass: \"dxg-linear-gauge\",\r\n    _factoryMethods: {\r\n        rangeContainer: \"createLinearRangeContainer\",\r\n        indicator: \"createLinearIndicator\"\r\n    },\r\n    _gridSpacingFactor: 25,\r\n    _scaleTypes: {\r\n        type: \"xyAxes\",\r\n        drawingType: \"linear\"\r\n    },\r\n    _getTicksOrientation: function(scaleOptions) {\r\n        return scaleOptions.isHorizontal ? scaleOptions.verticalOrientation : scaleOptions.horizontalOrientation\r\n    },\r\n    _getThemeManagerOptions: function() {\r\n        var options = this.callBase.apply(this, arguments);\r\n        options.subTheme = \"_linear\";\r\n        return options\r\n    },\r\n    _getInvertedState: function() {\r\n        return !this._area.vertical && this.option(\"rtlEnabled\")\r\n    },\r\n    _prepareScaleSettings: function() {\r\n        var scaleOptions = this.callBase();\r\n        scaleOptions.inverted = this._getInvertedState();\r\n        return scaleOptions\r\n    },\r\n    _updateScaleTickIndent: function(scaleOptions) {\r\n        var indentFromTick = scaleOptions.label.indentFromTick;\r\n        var length = scaleOptions.tick.length;\r\n        var textParams = this._scale.measureLabels((0, _extend.extend)({}, this._canvas));\r\n        var verticalTextCorrection = scaleOptions.isHorizontal ? textParams.height + textParams.y : 0;\r\n        var isIndentPositive = indentFromTick > 0;\r\n        var orientation;\r\n        var textCorrection;\r\n        var tickCorrection;\r\n        if (scaleOptions.isHorizontal) {\r\n            orientation = isIndentPositive ? {\r\n                center: .5,\r\n                top: 0,\r\n                bottom: 1\r\n            } : {\r\n                center: .5,\r\n                top: 1,\r\n                bottom: 0\r\n            };\r\n            tickCorrection = length * orientation[scaleOptions.verticalOrientation];\r\n            textCorrection = textParams.y\r\n        } else {\r\n            orientation = isIndentPositive ? {\r\n                center: .5,\r\n                left: 0,\r\n                right: 1\r\n            } : {\r\n                center: .5,\r\n                left: 1,\r\n                right: 0\r\n            };\r\n            tickCorrection = length * orientation[scaleOptions.horizontalOrientation];\r\n            textCorrection = -textParams.width\r\n        }\r\n        scaleOptions.label.indentFromAxis = -indentFromTick + (isIndentPositive ? -tickCorrection + textCorrection : tickCorrection - verticalTextCorrection);\r\n        this._scale.updateOptions(scaleOptions)\r\n    },\r\n    _shiftScale: function(layout, scaleOptions) {\r\n        var that = this;\r\n        var canvas = (0, _extend.extend)({}, that._canvas);\r\n        var isHorizontal = scaleOptions.isHorizontal;\r\n        var scale = that._scale;\r\n        canvas[isHorizontal ? \"left\" : \"top\"] = that._area[isHorizontal ? \"startCoord\" : \"endCoord\"];\r\n        canvas[isHorizontal ? \"right\" : \"bottom\"] = canvas[isHorizontal ? \"width\" : \"height\"] - that._area[isHorizontal ? \"endCoord\" : \"startCoord\"];\r\n        scale.draw(canvas);\r\n        scale.shift({\r\n            left: -layout.x,\r\n            top: -layout.y\r\n        })\r\n    },\r\n    _setupCodomain: function() {\r\n        var that = this;\r\n        var geometry = that.option(\"geometry\") || {};\r\n        var vertical = \"vertical\" === (0, _utils.normalizeEnum)(geometry.orientation);\r\n        var initialStartCoord = -100;\r\n        var initialEndCoord = 100;\r\n        that._area = {\r\n            vertical: vertical,\r\n            x: 0,\r\n            y: 0,\r\n            startCoord: initialStartCoord,\r\n            endCoord: initialEndCoord\r\n        };\r\n        that._rangeContainer.vertical = vertical;\r\n        that._translator.setInverted(that._getInvertedState());\r\n        that._translator.setCodomain(initialStartCoord, initialEndCoord)\r\n    },\r\n    _getScaleLayoutValue: function() {\r\n        return this._area[this._area.vertical ? \"x\" : \"y\"]\r\n    },\r\n    _getTicksCoefficients: function(options) {\r\n        var coefs = {\r\n            inner: 0,\r\n            outer: 1\r\n        };\r\n        if (this._area.vertical) {\r\n            if (\"left\" === options.horizontalOrientation) {\r\n                coefs.inner = 1;\r\n                coefs.outer = 0\r\n            } else {\r\n                if (\"center\" === options.horizontalOrientation) {\r\n                    coefs.inner = coefs.outer = .5\r\n                }\r\n            }\r\n        } else {\r\n            if (\"top\" === options.verticalOrientation) {\r\n                coefs.inner = 1;\r\n                coefs.outer = 0\r\n            } else {\r\n                if (\"center\" === options.verticalOrientation) {\r\n                    coefs.inner = coefs.outer = .5\r\n                }\r\n            }\r\n        }\r\n        return coefs\r\n    },\r\n    _correctScaleIndents: function(result, indentFromTick, textParams) {\r\n        var vertical = this._area.vertical;\r\n        if (indentFromTick >= 0) {\r\n            result.max += indentFromTick + textParams[vertical ? \"width\" : \"height\"]\r\n        } else {\r\n            result.min -= -indentFromTick + textParams[vertical ? \"width\" : \"height\"]\r\n        }\r\n        result.indent = textParams[vertical ? \"height\" : \"width\"] / 2\r\n    },\r\n    _measureMainElements: function(elements, scaleMeasurement) {\r\n        var that = this;\r\n        var x = that._area.x;\r\n        var y = that._area.y;\r\n        var minBound = 1e3;\r\n        var maxBound = 0;\r\n        var indent = 0;\r\n        var scale = that._scale;\r\n        (0, _iterator.each)(elements.concat(scale), function(_, element) {\r\n            var bounds = element.measure ? element.measure({\r\n                x: x + element.getOffset(),\r\n                y: y + element.getOffset()\r\n            }) : scaleMeasurement;\r\n            void 0 !== bounds.max && (maxBound = _max(maxBound, bounds.max));\r\n            void 0 !== bounds.min && (minBound = _min(minBound, bounds.min));\r\n            bounds.indent > 0 && (indent = _max(indent, bounds.indent))\r\n        });\r\n        return {\r\n            minBound: minBound,\r\n            maxBound: maxBound,\r\n            indent: indent\r\n        }\r\n    },\r\n    _applyMainLayout: function(elements, scaleMeasurement) {\r\n        var that = this;\r\n        var measurements = that._measureMainElements(elements, scaleMeasurement);\r\n        var area = that._area;\r\n        var rect;\r\n        var offset;\r\n        if (area.vertical) {\r\n            rect = selectRectBySizes(that._innerRect, {\r\n                width: measurements.maxBound - measurements.minBound\r\n            });\r\n            offset = (rect.left + rect.right) / 2 - (measurements.minBound + measurements.maxBound) / 2;\r\n            area.startCoord = rect.bottom - measurements.indent;\r\n            area.endCoord = rect.top + measurements.indent;\r\n            area.x = _round(area.x + offset)\r\n        } else {\r\n            rect = selectRectBySizes(that._innerRect, {\r\n                height: measurements.maxBound - measurements.minBound\r\n            });\r\n            offset = (rect.top + rect.bottom) / 2 - (measurements.minBound + measurements.maxBound) / 2;\r\n            area.startCoord = rect.left + measurements.indent;\r\n            area.endCoord = rect.right - measurements.indent;\r\n            area.y = _round(area.y + offset)\r\n        }\r\n        that._translator.setCodomain(area.startCoord, area.endCoord);\r\n        that._innerRect = rect\r\n    },\r\n    _getElementLayout: function(offset) {\r\n        return {\r\n            x: _round(this._area.x + offset),\r\n            y: _round(this._area.y + offset)\r\n        }\r\n    },\r\n    _getApproximateScreenRange: function() {\r\n        var that = this;\r\n        var area = that._area;\r\n        var s = area.vertical ? that._canvas.height : that._canvas.width;\r\n        s > area.totalSize && (s = area.totalSize);\r\n        s = .8 * s;\r\n        return s\r\n    },\r\n    _getDefaultSize: function() {\r\n        var geometry = this.option(\"geometry\") || {};\r\n        if (\"vertical\" === geometry.orientation) {\r\n            return {\r\n                width: 100,\r\n                height: 300\r\n            }\r\n        } else {\r\n            return {\r\n                width: 300,\r\n                height: 100\r\n            }\r\n        }\r\n    },\r\n    _factory: (0, _object.clone)(_base_gauge.dxBaseGauge.prototype._factory)\r\n});\r\n\r\nfunction selectRectBySizes(srcRect, sizes, margins) {\r\n    var rect = (0, _extend.extend)({}, srcRect);\r\n    var step;\r\n    margins = margins || {};\r\n    if (sizes) {\r\n        rect.left += margins.left || 0;\r\n        rect.right -= margins.right || 0;\r\n        rect.top += margins.top || 0;\r\n        rect.bottom -= margins.bottom || 0;\r\n        if (sizes.width > 0) {\r\n            step = (rect.right - rect.left - sizes.width) / 2;\r\n            if (step > 0) {\r\n                rect.left += step;\r\n                rect.right -= step\r\n            }\r\n        }\r\n        if (sizes.height > 0) {\r\n            step = (rect.bottom - rect.top - sizes.height) / 2;\r\n            if (step > 0) {\r\n                rect.top += step;\r\n                rect.bottom -= step\r\n            }\r\n        }\r\n    }\r\n    return rect\r\n}\r\nvar indicators = dxLinearGauge.prototype._factory.indicators = {};\r\ndxLinearGauge.prototype._factory.createIndicator = (0, _common.createIndicatorCreator)(indicators);\r\nindicators._default = linearIndicators._default;\r\nindicators.rectangle = linearIndicators.rectangle;\r\nindicators.rhombus = linearIndicators.rhombus;\r\nindicators.circle = linearIndicators.circle;\r\nindicators.trianglemarker = linearIndicators.trianglemarker;\r\nindicators.textcloud = linearIndicators.textcloud;\r\nindicators.rangebar = linearIndicators.rangebar;\r\ndxLinearGauge.prototype._factory.RangeContainer = _linear_range_container.default;\r\n(0, _component_registrator.default)(\"dxLinearGauge\", dxLinearGauge);\r\nvar _default = dxLinearGauge;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tag_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _element_data = require(\"../core/element_data\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _selection_filter = require(\"../core/utils/selection_filter\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _element = require(\"../core/element\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _click = require(\"../events/click\");\r\nvar _utils = _interopRequireDefault(require(\"./text_box/utils.caret\"));\r\nvar _utils2 = require(\"../data/data_source/utils\");\r\nvar _scroll_rtl_behavior = _interopRequireDefault(require(\"../core/utils/scroll_rtl_behavior\"));\r\nvar _select_box = _interopRequireDefault(require(\"./select_box\"));\r\nvar _bindable_template = require(\"../core/templates/bindable_template\");\r\nvar _utils3 = require(\"./text_box/utils.scroll\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nvar TAGBOX_TAG_DATA_KEY = \"dxTagData\";\r\nvar TAGBOX_CLASS = \"dx-tagbox\";\r\nvar TAGBOX_TAG_CONTAINER_CLASS = \"dx-tag-container\";\r\nvar TAGBOX_TAG_CLASS = \"dx-tag\";\r\nvar TAGBOX_MULTI_TAG_CLASS = \"dx-tagbox-multi-tag\";\r\nvar TAGBOX_CUSTOM_TAG_CLASS = \"dx-tag-custom\";\r\nvar TAGBOX_TAG_REMOVE_BUTTON_CLASS = \"dx-tag-remove-button\";\r\nvar TAGBOX_ONLY_SELECT_CLASS = \"dx-tagbox-only-select\";\r\nvar TAGBOX_SINGLE_LINE_CLASS = \"dx-tagbox-single-line\";\r\nvar TAGBOX_POPUP_WRAPPER_CLASS = \"dx-tagbox-popup-wrapper\";\r\nvar TAGBOX_TAG_CONTENT_CLASS = \"dx-tag-content\";\r\nvar TAGBOX_DEFAULT_FIELD_TEMPLATE_CLASS = \"dx-tagbox-default-template\";\r\nvar TAGBOX_CUSTOM_FIELD_TEMPLATE_CLASS = \"dx-tagbox-custom-template\";\r\nvar NATIVE_CLICK_CLASS = \"dx-native-click\";\r\nvar TEXTEDITOR_INPUT_CONTAINER_CLASS = \"dx-texteditor-input-container\";\r\nvar TAGBOX_MOUSE_WHEEL_DELTA_MULTIPLIER = -.3;\r\nvar TagBox = _select_box.default.inherit({\r\n    _supportedKeys: function() {\r\n        var _this = this;\r\n        var parent = this.callBase();\r\n        var sendToList = function(options) {\r\n            return _this._list._keyboardHandler(options)\r\n        };\r\n        return (0, _extend.extend)({}, parent, {\r\n            backspace: function(e) {\r\n                if (!this._isCaretAtTheStart()) {\r\n                    return\r\n                }\r\n                this._processKeyboardEvent(e);\r\n                this._isTagRemoved = true;\r\n                var $tagToDelete = this._$focusedTag || this._tagElements().last();\r\n                if (this._$focusedTag) {\r\n                    this._moveTagFocus(\"prev\", true)\r\n                }\r\n                if (0 === $tagToDelete.length) {\r\n                    return\r\n                }\r\n                this._preserveFocusedTag = true;\r\n                this._removeTagElement($tagToDelete);\r\n                delete this._preserveFocusedTag\r\n            },\r\n            upArrow: function(e, opts) {\r\n                return e.altKey || !_this._list ? parent.upArrow.call(_this, e) : sendToList(opts)\r\n            },\r\n            downArrow: function(e, opts) {\r\n                return e.altKey || !_this._list ? parent.downArrow.call(_this, e) : sendToList(opts)\r\n            },\r\n            del: function(e) {\r\n                if (!this._$focusedTag || !this._isCaretAtTheStart()) {\r\n                    return\r\n                }\r\n                this._processKeyboardEvent(e);\r\n                this._isTagRemoved = true;\r\n                var $tagToDelete = this._$focusedTag;\r\n                this._moveTagFocus(\"next\", true);\r\n                this._preserveFocusedTag = true;\r\n                this._removeTagElement($tagToDelete);\r\n                delete this._preserveFocusedTag\r\n            },\r\n            enter: function(e, options) {\r\n                var isListItemFocused = this._list && null !== this._list.option(\"focusedElement\");\r\n                var isCustomItem = this.option(\"acceptCustomValue\") && !isListItemFocused;\r\n                if (isCustomItem) {\r\n                    e.preventDefault();\r\n                    \"\" !== this._searchValue() && this._customItemAddedHandler(e);\r\n                    return\r\n                }\r\n                if (this.option(\"opened\")) {\r\n                    this._saveValueChangeEvent(e);\r\n                    sendToList(options);\r\n                    e.preventDefault()\r\n                }\r\n            },\r\n            space: function(e, options) {\r\n                var isOpened = this.option(\"opened\");\r\n                var isInputActive = this._shouldRenderSearchEvent();\r\n                if (isOpened && !isInputActive) {\r\n                    this._saveValueChangeEvent(e);\r\n                    sendToList(options);\r\n                    e.preventDefault()\r\n                }\r\n            },\r\n            leftArrow: function(e) {\r\n                if (!this._isCaretAtTheStart()) {\r\n                    return\r\n                }\r\n                var rtlEnabled = this.option(\"rtlEnabled\");\r\n                if (this._isEditable() && rtlEnabled && !this._$focusedTag) {\r\n                    return\r\n                }\r\n                e.preventDefault();\r\n                var direction = rtlEnabled ? \"next\" : \"prev\";\r\n                this._moveTagFocus(direction);\r\n                !this.option(\"multiline\") && this._scrollContainer(direction)\r\n            },\r\n            rightArrow: function(e) {\r\n                if (!this._isCaretAtTheStart()) {\r\n                    return\r\n                }\r\n                var rtlEnabled = this.option(\"rtlEnabled\");\r\n                if (this._isEditable() && !rtlEnabled && !this._$focusedTag) {\r\n                    return\r\n                }\r\n                e.preventDefault();\r\n                var direction = rtlEnabled ? \"prev\" : \"next\";\r\n                this._moveTagFocus(direction);\r\n                !this.option(\"multiline\") && this._scrollContainer(direction)\r\n            }\r\n        })\r\n    },\r\n    _processKeyboardEvent: function(e) {\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        this._saveValueChangeEvent(e)\r\n    },\r\n    _updateTagsContainer: function($element) {\r\n        this._$tagsContainer = $element.addClass(TAGBOX_TAG_CONTAINER_CLASS).addClass(NATIVE_CLICK_CLASS);\r\n        this._$tagsContainer.parent().addClass(NATIVE_CLICK_CLASS)\r\n    },\r\n    _allowSelectItemByTab: function() {\r\n        return false\r\n    },\r\n    _isCaretAtTheStart: function() {\r\n        var position = (0, _utils.default)(this._input());\r\n        return 0 === position.start && 0 === position.end\r\n    },\r\n    _moveTagFocus: function(direction, clearOnBoundary) {\r\n        if (!this._$focusedTag) {\r\n            var tagElements = this._tagElements();\r\n            this._$focusedTag = \"next\" === direction ? tagElements.first() : tagElements.last();\r\n            this._toggleFocusClass(true, this._$focusedTag);\r\n            return\r\n        }\r\n        var $nextFocusedTag = this._$focusedTag[direction](\".\".concat(TAGBOX_TAG_CLASS));\r\n        if ($nextFocusedTag.length > 0) {\r\n            this._replaceFocusedTag($nextFocusedTag)\r\n        } else {\r\n            if (clearOnBoundary || \"next\" === direction && this._isEditable()) {\r\n                this._clearTagFocus()\r\n            }\r\n        }\r\n    },\r\n    _replaceFocusedTag: function($nextFocusedTag) {\r\n        this._toggleFocusClass(false, this._$focusedTag);\r\n        this._$focusedTag = $nextFocusedTag;\r\n        this._toggleFocusClass(true, this._$focusedTag)\r\n    },\r\n    _clearTagFocus: function() {\r\n        if (!this._$focusedTag) {\r\n            return\r\n        }\r\n        this._toggleFocusClass(false, this._$focusedTag);\r\n        delete this._$focusedTag\r\n    },\r\n    _focusClassTarget: function($element) {\r\n        if ($element && $element.length && $element[0] !== this._focusTarget()[0]) {\r\n            return $element\r\n        }\r\n        return this.callBase()\r\n    },\r\n    _scrollContainer: function(direction) {\r\n        if (this.option(\"multiline\") || !(0, _window.hasWindow)()) {\r\n            return\r\n        }\r\n        if (!this._$tagsContainer) {\r\n            return\r\n        }\r\n        var scrollPosition = this._getScrollPosition(direction);\r\n        this._$tagsContainer.scrollLeft(scrollPosition)\r\n    },\r\n    _getScrollPosition: function(direction) {\r\n        if (\"start\" === direction || \"end\" === direction) {\r\n            return this._getBorderPosition(direction)\r\n        }\r\n        return this._$focusedTag ? this._getFocusedTagPosition(direction) : this._getBorderPosition(\"end\")\r\n    },\r\n    _getBorderPosition: function(direction) {\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var isScrollLeft = \"end\" === direction ^ rtlEnabled;\r\n        var scrollBehavior = (0, _scroll_rtl_behavior.default)();\r\n        var isScrollInverted = rtlEnabled && scrollBehavior.decreasing ^ scrollBehavior.positive;\r\n        var scrollSign = !rtlEnabled || scrollBehavior.positive ? 1 : -1;\r\n        return isScrollLeft ^ !isScrollInverted ? 0 : scrollSign * (this._$tagsContainer.get(0).scrollWidth - this._$tagsContainer.outerWidth())\r\n    },\r\n    _getFocusedTagPosition: function(direction) {\r\n        var rtlEnabled = this.option(\"rtlEnabled\");\r\n        var isScrollLeft = \"next\" === direction ^ rtlEnabled;\r\n        var _this$_$focusedTag$po = this._$focusedTag.position(),\r\n            scrollOffset = _this$_$focusedTag$po.left;\r\n        var scrollLeft = this._$tagsContainer.scrollLeft();\r\n        if (isScrollLeft) {\r\n            scrollOffset += this._$focusedTag.outerWidth(true) - this._$tagsContainer.outerWidth()\r\n        }\r\n        if (isScrollLeft ^ scrollOffset < 0) {\r\n            var scrollBehavior = (0, _scroll_rtl_behavior.default)();\r\n            var scrollCorrection = rtlEnabled && !scrollBehavior.decreasing && scrollBehavior.positive ? -1 : 1;\r\n            scrollLeft += scrollOffset * scrollCorrection\r\n        }\r\n        return scrollLeft\r\n    },\r\n    _setNextValue: _common.noop,\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            value: [],\r\n            showDropDownButton: false,\r\n            maxFilterLength: 1500,\r\n            tagTemplate: \"tag\",\r\n            selectAllText: _message.default.format(\"dxList-selectAll\"),\r\n            hideSelectedItems: false,\r\n            selectedItems: [],\r\n            selectAllMode: \"page\",\r\n            onSelectAllValueChanged: null,\r\n            maxDisplayedTags: void 0,\r\n            showMultiTagOnly: true,\r\n            onMultiTagPreparing: null,\r\n            multiline: true,\r\n            useSubmitBehavior: true\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._selectedItems = [];\r\n        this._initSelectAllValueChangedAction()\r\n    },\r\n    _initActions: function() {\r\n        this.callBase();\r\n        this._initMultiTagPreparingAction()\r\n    },\r\n    _initMultiTagPreparingAction: function() {\r\n        this._multiTagPreparingAction = this._createActionByOption(\"onMultiTagPreparing\", {\r\n            beforeExecute: function(e) {\r\n                this._multiTagPreparingHandler(e.args[0])\r\n            }.bind(this),\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _multiTagPreparingHandler: function(args) {\r\n        var _this$_getValue = this._getValue(),\r\n            selectedCount = _this$_getValue.length;\r\n        if (!this.option(\"showMultiTagOnly\")) {\r\n            args.text = _message.default.getFormatter(\"dxTagBox-moreSelected\")(selectedCount - this.option(\"maxDisplayedTags\") + 1)\r\n        } else {\r\n            args.text = _message.default.getFormatter(\"dxTagBox-selected\")(selectedCount)\r\n        }\r\n    },\r\n    _initDynamicTemplates: function() {\r\n        this.callBase();\r\n        this._templateManager.addDefaultTemplates({\r\n            tag: new _bindable_template.BindableTemplate(function($container, data) {\r\n                var $tagContent = (0, _renderer.default)(\"<div>\").addClass(TAGBOX_TAG_CONTENT_CLASS);\r\n                (0, _renderer.default)(\"<span>\").text(data.text || data).appendTo($tagContent);\r\n                (0, _renderer.default)(\"<div>\").addClass(TAGBOX_TAG_REMOVE_BUTTON_CLASS).appendTo($tagContent);\r\n                $container.append($tagContent)\r\n            }, [\"text\"], this.option(\"integrationOptions.watchMethod\"), {\r\n                text: this._displayGetter\r\n            })\r\n        })\r\n    },\r\n    _toggleSubmitElement: function(enabled) {\r\n        if (enabled) {\r\n            this._renderSubmitElement();\r\n            this._setSubmitValue()\r\n        } else {\r\n            this._$submitElement && this._$submitElement.remove();\r\n            delete this._$submitElement\r\n        }\r\n    },\r\n    _renderSubmitElement: function() {\r\n        if (!this.option(\"useSubmitBehavior\")) {\r\n            return\r\n        }\r\n        this._$submitElement = (0, _renderer.default)(\"<select>\").attr(\"multiple\", \"multiple\").css(\"display\", \"none\").appendTo(this.$element())\r\n    },\r\n    _setSubmitValue: function() {\r\n        if (!this.option(\"useSubmitBehavior\")) {\r\n            return\r\n        }\r\n        var value = this._getValue();\r\n        var $options = [];\r\n        for (var i = 0, n = value.length; i < n; i++) {\r\n            var useDisplayText = this._shouldUseDisplayValue(value[i]);\r\n            $options.push((0, _renderer.default)(\"<option>\").val(useDisplayText ? this._displayGetter(value[i]) : value[i]).attr(\"selected\", \"selected\"))\r\n        }\r\n        this._getSubmitElement().empty().append($options)\r\n    },\r\n    _initMarkup: function() {\r\n        this._tagElementsCache = (0, _renderer.default)();\r\n        var isSingleLineMode = !this.option(\"multiline\");\r\n        this.$element().addClass(TAGBOX_CLASS).toggleClass(TAGBOX_ONLY_SELECT_CLASS, !(this.option(\"searchEnabled\") || this.option(\"acceptCustomValue\"))).toggleClass(TAGBOX_SINGLE_LINE_CLASS, isSingleLineMode);\r\n        this._initTagTemplate();\r\n        this.callBase()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderTagRemoveAction();\r\n        this._renderSingleLineScroll();\r\n        this._scrollContainer(\"start\")\r\n    },\r\n    _initTagTemplate: function() {\r\n        this._tagTemplate = this._getTemplateByOption(\"tagTemplate\")\r\n    },\r\n    _renderField: function() {\r\n        var isDefaultFieldTemplate = !(0, _type.isDefined)(this.option(\"fieldTemplate\"));\r\n        this.$element().toggleClass(TAGBOX_DEFAULT_FIELD_TEMPLATE_CLASS, isDefaultFieldTemplate).toggleClass(TAGBOX_CUSTOM_FIELD_TEMPLATE_CLASS, !isDefaultFieldTemplate);\r\n        this.callBase()\r\n    },\r\n    _renderTagRemoveAction: function() {\r\n        var tagRemoveAction = this._createAction(this._removeTagHandler.bind(this));\r\n        var eventName = (0, _index.addNamespace)(_click.name, \"dxTagBoxTagRemove\");\r\n        _events_engine.default.off(this._$tagsContainer, eventName);\r\n        _events_engine.default.on(this._$tagsContainer, eventName, \".\".concat(TAGBOX_TAG_REMOVE_BUTTON_CLASS), function(event) {\r\n            tagRemoveAction({\r\n                event: event\r\n            })\r\n        });\r\n        this._renderTypingEvent()\r\n    },\r\n    _renderSingleLineScroll: function() {\r\n        var mouseWheelEvent = (0, _index.addNamespace)(\"dxmousewheel\", this.NAME);\r\n        var $element = this.$element();\r\n        var isMultiline = this.option(\"multiline\");\r\n        _events_engine.default.off($element, mouseWheelEvent);\r\n        if (\"desktop\" !== _devices.default.real().deviceType) {\r\n            this._$tagsContainer && this._$tagsContainer.css(\"overflowX\", isMultiline ? \"\" : \"auto\");\r\n            return\r\n        }\r\n        if (isMultiline) {\r\n            return\r\n        }\r\n        _events_engine.default.on($element, mouseWheelEvent, this._tagContainerMouseWheelHandler.bind(this))\r\n    },\r\n    _tagContainerMouseWheelHandler: function(e) {\r\n        var scrollLeft = this._$tagsContainer.scrollLeft();\r\n        var delta = e.delta * TAGBOX_MOUSE_WHEEL_DELTA_MULTIPLIER;\r\n        if ((0, _utils3.allowScroll)(this._$tagsContainer, delta, true)) {\r\n            this._$tagsContainer.scrollLeft(scrollLeft + delta);\r\n            return false\r\n        }\r\n    },\r\n    _renderTypingEvent: function() {\r\n        var _this2 = this;\r\n        _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"keydown\", this.NAME), function(e) {\r\n            var keyName = (0, _index.normalizeKeyName)(e);\r\n            if (!_this2._isControlKey(keyName) && _this2._isEditable()) {\r\n                _this2._clearTagFocus()\r\n            }\r\n        })\r\n    },\r\n    _popupWrapperClass: function() {\r\n        return this.callBase() + \" \" + TAGBOX_POPUP_WRAPPER_CLASS\r\n    },\r\n    _renderInput: function() {\r\n        this.callBase();\r\n        this._renderPreventBlur(this._inputWrapper())\r\n    },\r\n    _renderInputValueImpl: function() {\r\n        return this._renderMultiSelect()\r\n    },\r\n    _loadInputValue: function() {\r\n        return (0, _deferred.when)()\r\n    },\r\n    _clearTextValue: function() {\r\n        this._input().val(\"\");\r\n        this._toggleEmptinessEventHandler()\r\n    },\r\n    _focusInHandler: function(e) {\r\n        if (!this._preventNestedFocusEvent(e)) {\r\n            this._scrollContainer(\"end\")\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    _restoreInputText: function(saveEditingValue) {\r\n        if (!saveEditingValue) {\r\n            this._clearTextValue()\r\n        }\r\n    },\r\n    _focusOutHandler: function(e) {\r\n        if (!this._preventNestedFocusEvent(e)) {\r\n            this._clearTagFocus();\r\n            this._scrollContainer(\"start\")\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    _getFirstPopupElement: function() {\r\n        return this.option(\"showSelectionControls\") ? this._list.$element() : this.callBase()\r\n    },\r\n    _initSelectAllValueChangedAction: function() {\r\n        this._selectAllValueChangeAction = this._createActionByOption(\"onSelectAllValueChanged\")\r\n    },\r\n    _renderList: function() {\r\n        var _this3 = this;\r\n        this.callBase();\r\n        this._setListDataSourceFilter();\r\n        if (this.option(\"showSelectionControls\")) {\r\n            this._list.registerKeyHandler(\"tab\", function(e) {\r\n                return _this3._popupElementTabHandler(e)\r\n            });\r\n            this._list.registerKeyHandler(\"escape\", function(e) {\r\n                return _this3._popupElementEscHandler(e)\r\n            })\r\n        }\r\n    },\r\n    _canListHaveFocus: function() {\r\n        return \"useButtons\" === this.option(\"applyValueMode\")\r\n    },\r\n    _listConfig: function() {\r\n        var _this4 = this;\r\n        var selectionMode = this.option(\"showSelectionControls\") ? \"all\" : \"multiple\";\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            selectionMode: selectionMode,\r\n            selectAllText: this.option(\"selectAllText\"),\r\n            onSelectAllValueChanged: function(_ref) {\r\n                var value = _ref.value;\r\n                _this4._selectAllValueChangeAction({\r\n                    value: value\r\n                })\r\n            },\r\n            selectAllMode: this.option(\"selectAllMode\"),\r\n            selectedItems: this._selectedItems,\r\n            onFocusedItemChanged: null\r\n        })\r\n    },\r\n    _renderMultiSelect: function() {\r\n        var _this5 = this;\r\n        var d = new _deferred.Deferred;\r\n        this._updateTagsContainer(this._$textEditorInputContainer);\r\n        this._renderInputSize();\r\n        this._renderTags().done(function() {\r\n            _this5._popup && _this5._popup.refreshPosition();\r\n            d.resolve()\r\n        }).fail(d.reject);\r\n        return d.promise()\r\n    },\r\n    _listItemClickHandler: function(e) {\r\n        !this.option(\"showSelectionControls\") && this._clearTextValue();\r\n        if (\"useButtons\" === this.option(\"applyValueMode\")) {\r\n            return\r\n        }\r\n        this.callBase(e);\r\n        this._saveValueChangeEvent(void 0)\r\n    },\r\n    _shouldClearFilter: function() {\r\n        var shouldClearFilter = this.callBase();\r\n        var showSelectionControls = this.option(\"showSelectionControls\");\r\n        return !showSelectionControls && shouldClearFilter\r\n    },\r\n    _renderInputSize: function() {\r\n        var $input = this._input();\r\n        var value = $input.val();\r\n        var isEmptyInput = (0, _type.isString)(value) && value;\r\n        var cursorWidth = 5;\r\n        var width = \"\";\r\n        var size = \"\";\r\n        var canTypeText = this.option(\"searchEnabled\") || this.option(\"acceptCustomValue\");\r\n        if (isEmptyInput && canTypeText) {\r\n            var $calculationElement = (0, _dom.createTextElementHiddenCopy)($input, value, {\r\n                includePaddings: true\r\n            });\r\n            $calculationElement.insertAfter($input);\r\n            width = $calculationElement.outerWidth() + cursorWidth;\r\n            $calculationElement.remove()\r\n        } else {\r\n            if (!value) {\r\n                size = 1\r\n            }\r\n        }\r\n        $input.css(\"width\", width);\r\n        $input.attr(\"size\", size)\r\n    },\r\n    _renderInputSubstitution: function() {\r\n        this.callBase();\r\n        this._renderInputSize()\r\n    },\r\n    _getValue: function() {\r\n        return this.option(\"value\") || []\r\n    },\r\n    _multiTagRequired: function() {\r\n        var values = this._getValue();\r\n        var maxDisplayedTags = this.option(\"maxDisplayedTags\");\r\n        return (0, _type.isDefined)(maxDisplayedTags) && values.length > maxDisplayedTags\r\n    },\r\n    _renderMultiTag: function($input) {\r\n        var $tag = (0, _renderer.default)(\"<div>\").addClass(TAGBOX_TAG_CLASS).addClass(TAGBOX_MULTI_TAG_CLASS);\r\n        var args = {\r\n            multiTagElement: (0, _element.getPublicElement)($tag),\r\n            selectedItems: this.option(\"selectedItems\")\r\n        };\r\n        this._multiTagPreparingAction(args);\r\n        if (args.cancel) {\r\n            return false\r\n        }\r\n        $tag.data(TAGBOX_TAG_DATA_KEY, args.text);\r\n        $tag.insertBefore($input);\r\n        this._tagTemplate.render({\r\n            model: args.text,\r\n            container: (0, _element.getPublicElement)($tag)\r\n        });\r\n        return $tag\r\n    },\r\n    _getFilteredItems: function(values) {\r\n        var _this6 = this;\r\n        var creator = new _selection_filter.SelectionFilterCreator(values);\r\n        var selectedItems = this._list && this._list.option(\"selectedItems\") || this.option(\"selectedItems\");\r\n        var clientFilterFunction = creator.getLocalFilter(this._valueGetter);\r\n        var filteredItems = selectedItems.filter(clientFilterFunction);\r\n        var selectedItemsAlreadyLoaded = filteredItems.length === values.length;\r\n        var d = new _deferred.Deferred;\r\n        if (!this._isDataSourceChanged && selectedItemsAlreadyLoaded) {\r\n            return d.resolve(filteredItems).promise()\r\n        } else {\r\n            var dataSource = this._dataSource;\r\n            var dataSourceFilter = dataSource.filter();\r\n            var filterExpr = creator.getCombinedFilter(this.option(\"valueExpr\"), dataSourceFilter);\r\n            var filterLength = encodeURI(JSON.stringify(filterExpr)).length;\r\n            var filter = filterLength > this.option(\"maxFilterLength\") ? void 0 : filterExpr;\r\n            var _dataSource$loadOptio = dataSource.loadOptions(),\r\n                customQueryParams = _dataSource$loadOptio.customQueryParams,\r\n                expand = _dataSource$loadOptio.expand;\r\n            dataSource.store().load({\r\n                filter: filter,\r\n                customQueryParams: customQueryParams,\r\n                expand: expand\r\n            }).done(function(data, extra) {\r\n                _this6._isDataSourceChanged = false;\r\n                if (_this6._disposed) {\r\n                    d.reject();\r\n                    return\r\n                }\r\n                var _normalizeLoadResult = (0, _utils2.normalizeLoadResult)(data, extra),\r\n                    items = _normalizeLoadResult.data;\r\n                var mappedItems = dataSource._applyMapFunction(items);\r\n                d.resolve(mappedItems.filter(clientFilterFunction))\r\n            }).fail(d.reject);\r\n            return d.promise()\r\n        }\r\n    },\r\n    _createTagsData: function(values, filteredItems) {\r\n        var _this7 = this;\r\n        var items = [];\r\n        var cache = {};\r\n        var isValueExprSpecified = \"this\" === this._valueGetterExpr();\r\n        var filteredValues = {};\r\n        filteredItems.forEach(function(filteredItem) {\r\n            var filteredItemValue = isValueExprSpecified ? JSON.stringify(filteredItem) : _this7._valueGetter(filteredItem);\r\n            filteredValues[filteredItemValue] = filteredItem\r\n        });\r\n        var loadItemPromises = [];\r\n        values.forEach(function(value, index) {\r\n            var currentItem = filteredValues[isValueExprSpecified ? JSON.stringify(value) : value];\r\n            if (isValueExprSpecified && !(0, _type.isDefined)(currentItem)) {\r\n                loadItemPromises.push(_this7._loadItem(value, cache).always(function(item) {\r\n                    var newItem = _this7._createTagData(items, item, value, index);\r\n                    items.splice(index, 0, newItem)\r\n                }))\r\n            } else {\r\n                var newItem = _this7._createTagData(items, currentItem, value, index);\r\n                items.splice(index, 0, newItem)\r\n            }\r\n        });\r\n        var d = new _deferred.Deferred;\r\n        _deferred.when.apply(this, loadItemPromises).always(function() {\r\n            d.resolve(items)\r\n        });\r\n        return d.promise()\r\n    },\r\n    _createTagData: function(items, item, value, valueIndex) {\r\n        if ((0, _type.isDefined)(item)) {\r\n            this._selectedItems.push(item);\r\n            return item\r\n        } else {\r\n            var selectedItem = this.option(\"selectedItem\");\r\n            var customItem = this._valueGetter(selectedItem) === value ? selectedItem : value;\r\n            return customItem\r\n        }\r\n    },\r\n    _isGroupedData: function() {\r\n        return this.option(\"grouped\") && !this._dataSource.group()\r\n    },\r\n    _getItemsByValues: function(values) {\r\n        var resultItems = [];\r\n        values.forEach(function(value) {\r\n            var item = this._getItemFromPlain(value);\r\n            if ((0, _type.isDefined)(item)) {\r\n                resultItems.push(item)\r\n            }\r\n        }.bind(this));\r\n        return resultItems\r\n    },\r\n    _getFilteredGroupedItems: function(values) {\r\n        var selectedItems = new _deferred.Deferred;\r\n        if (!this._dataSource.items().length) {\r\n            this._dataSource.load().done(function() {\r\n                selectedItems.resolve(this._getItemsByValues(values))\r\n            }.bind(this)).fail(selectedItems.resolve([]))\r\n        } else {\r\n            selectedItems.resolve(this._getItemsByValues(values))\r\n        }\r\n        return selectedItems.promise()\r\n    },\r\n    _loadTagsData: function() {\r\n        var _this8 = this;\r\n        var values = this._getValue();\r\n        var tagData = new _deferred.Deferred;\r\n        this._selectedItems = [];\r\n        var filteredItemsPromise = this._isGroupedData() ? this._getFilteredGroupedItems(values) : this._getFilteredItems(values);\r\n        filteredItemsPromise.done(function(filteredItems) {\r\n            var items = _this8._createTagsData(values, filteredItems);\r\n            items.always(function(data) {\r\n                tagData.resolve(data)\r\n            })\r\n        }).fail(tagData.reject.bind(this));\r\n        return tagData.promise()\r\n    },\r\n    _renderTags: function() {\r\n        var _this9 = this;\r\n        var d = new _deferred.Deferred;\r\n        var isPlainDataUsed = false;\r\n        if (this._shouldGetItemsFromPlain(this._valuesToUpdate)) {\r\n            this._selectedItems = this._getItemsFromPlain(this._valuesToUpdate);\r\n            if (this._selectedItems.length === this._valuesToUpdate.length) {\r\n                this._renderTagsImpl(this._selectedItems);\r\n                isPlainDataUsed = true;\r\n                d.resolve()\r\n            }\r\n        }\r\n        if (!isPlainDataUsed) {\r\n            this._loadTagsData().done(function(items) {\r\n                if (_this9._disposed) {\r\n                    d.reject();\r\n                    return\r\n                }\r\n                _this9._renderTagsImpl(items);\r\n                d.resolve()\r\n            }).fail(d.reject)\r\n        }\r\n        return d.promise()\r\n    },\r\n    _renderTagsImpl: function(items) {\r\n        this._renderTagsCore(items);\r\n        this._renderEmptyState();\r\n        if (!this._preserveFocusedTag) {\r\n            this._clearTagFocus()\r\n        }\r\n    },\r\n    _shouldGetItemsFromPlain: function(values) {\r\n        return values && this._dataSource.isLoaded() && values.length <= this._getPlainItems().length\r\n    },\r\n    _getItemsFromPlain: function(values) {\r\n        var _this10 = this;\r\n        var plainItems = this._getPlainItems();\r\n        var selectedItems = plainItems.filter(function(dataItem) {\r\n            var currentValue;\r\n            for (var i = 0; i < values.length; i++) {\r\n                currentValue = values[i];\r\n                if ((0, _type.isObject)(currentValue)) {\r\n                    if (_this10._isValueEquals(dataItem, currentValue)) {\r\n                        return true\r\n                    }\r\n                } else {\r\n                    if (_this10._isValueEquals(_this10._valueGetter(dataItem), currentValue)) {\r\n                        return true\r\n                    }\r\n                }\r\n            }\r\n            return false\r\n        }, this);\r\n        return selectedItems\r\n    },\r\n    _integrateInput: function() {\r\n        this.callBase();\r\n        this._updateTagsContainer((0, _renderer.default)(\".\".concat(TEXTEDITOR_INPUT_CONTAINER_CLASS)));\r\n        this._renderTagRemoveAction()\r\n    },\r\n    _renderTagsCore: function(items) {\r\n        var _this11 = this;\r\n        this._renderField();\r\n        this.option(\"selectedItems\", this._selectedItems.slice());\r\n        this._cleanTags();\r\n        var $multiTag = this._multiTagRequired() && this._renderMultiTag(this._input());\r\n        var showMultiTagOnly = this.option(\"showMultiTagOnly\");\r\n        var maxDisplayedTags = this.option(\"maxDisplayedTags\");\r\n        items.forEach(function(item, index) {\r\n            if ($multiTag && showMultiTagOnly || $multiTag && !showMultiTagOnly && index - maxDisplayedTags >= -1) {\r\n                return false\r\n            }\r\n            _this11._renderTag(item, $multiTag || _this11._input())\r\n        });\r\n        if (this._isFocused()) {\r\n            this._scrollContainer(\"end\")\r\n        }\r\n        this._refreshTagElements()\r\n    },\r\n    _cleanTags: function() {\r\n        if (this._multiTagRequired()) {\r\n            this._tagElements().remove()\r\n        } else {\r\n            var $tags = this._tagElements();\r\n            var values = this._getValue();\r\n            (0, _iterator.each)($tags, function(_, tag) {\r\n                var $tag = (0, _renderer.default)(tag);\r\n                var index = (0, _array.inArray)($tag.data(TAGBOX_TAG_DATA_KEY), values);\r\n                if (index < 0) {\r\n                    $tag.remove()\r\n                }\r\n            })\r\n        }\r\n    },\r\n    _renderEmptyState: function() {\r\n        var isEmpty = !(this._getValue().length || this._selectedItems.length || this._searchValue());\r\n        this._toggleEmptiness(isEmpty);\r\n        this._renderDisplayText()\r\n    },\r\n    _renderDisplayText: function() {\r\n        this._renderInputSize()\r\n    },\r\n    _refreshTagElements: function() {\r\n        this._tagElementsCache = this.$element().find(\".\".concat(TAGBOX_TAG_CLASS))\r\n    },\r\n    _tagElements: function() {\r\n        return this._tagElementsCache\r\n    },\r\n    _applyTagTemplate: function(item, $tag) {\r\n        this._tagTemplate.render({\r\n            model: item,\r\n            container: (0, _element.getPublicElement)($tag)\r\n        })\r\n    },\r\n    _renderTag: function(item, $input) {\r\n        var value = this._valueGetter(item);\r\n        if (!(0, _type.isDefined)(value)) {\r\n            return\r\n        }\r\n        var $tag = this._getTag(value);\r\n        var displayValue = this._displayGetter(item);\r\n        var itemModel = this._getItemModel(item, displayValue);\r\n        if ($tag) {\r\n            if ((0, _type.isDefined)(displayValue)) {\r\n                $tag.empty();\r\n                this._applyTagTemplate(itemModel, $tag)\r\n            }\r\n            $tag.removeClass(TAGBOX_CUSTOM_TAG_CLASS)\r\n        } else {\r\n            $tag = this._createTag(value, $input);\r\n            if ((0, _type.isDefined)(item)) {\r\n                this._applyTagTemplate(itemModel, $tag)\r\n            } else {\r\n                $tag.addClass(TAGBOX_CUSTOM_TAG_CLASS);\r\n                this._applyTagTemplate(value, $tag)\r\n            }\r\n        }\r\n    },\r\n    _getItemModel: function(item, displayValue) {\r\n        if ((0, _type.isObject)(item) && displayValue) {\r\n            return item\r\n        } else {\r\n            return (0, _common.ensureDefined)(displayValue, \"\")\r\n        }\r\n    },\r\n    _getTag: function(value) {\r\n        var $tags = this._tagElements();\r\n        var tagsLength = $tags.length;\r\n        var result = false;\r\n        for (var i = 0; i < tagsLength; i++) {\r\n            var $tag = $tags[i];\r\n            var tagData = (0, _element_data.data)($tag, TAGBOX_TAG_DATA_KEY);\r\n            if (value === tagData || (0, _common.equalByValue)(value, tagData)) {\r\n                result = (0, _renderer.default)($tag);\r\n                break\r\n            }\r\n        }\r\n        return result\r\n    },\r\n    _createTag: function(value, $input) {\r\n        return (0, _renderer.default)(\"<div>\").addClass(TAGBOX_TAG_CLASS).data(TAGBOX_TAG_DATA_KEY, value).insertBefore($input)\r\n    },\r\n    _toggleEmptinessEventHandler: function() {\r\n        this._toggleEmptiness(!this._getValue().length && !this._searchValue().length)\r\n    },\r\n    _customItemAddedHandler: function(e) {\r\n        this.callBase(e);\r\n        this._input().val(\"\")\r\n    },\r\n    _removeTagHandler: function(args) {\r\n        var e = args.event;\r\n        e.stopPropagation();\r\n        this._saveValueChangeEvent(e);\r\n        var $tag = (0, _renderer.default)(e.target).closest(\".\".concat(TAGBOX_TAG_CLASS));\r\n        this._removeTagElement($tag)\r\n    },\r\n    _removeTagElement: function($tag) {\r\n        if ($tag.hasClass(TAGBOX_MULTI_TAG_CLASS)) {\r\n            if (!this.option(\"showMultiTagOnly\")) {\r\n                this.option(\"value\", this._getValue().slice(0, this.option(\"maxDisplayedTags\")))\r\n            } else {\r\n                this.reset()\r\n            }\r\n            return\r\n        }\r\n        var itemValue = $tag.data(TAGBOX_TAG_DATA_KEY);\r\n        this._removeTagWithUpdate(itemValue);\r\n        this._refreshTagElements()\r\n    },\r\n    _updateField: _common.noop,\r\n    _removeTagWithUpdate: function(itemValue) {\r\n        var value = this._getValue().slice();\r\n        this._removeTag(value, itemValue);\r\n        this.option(\"value\", value);\r\n        if (0 === value.length) {\r\n            this._clearTagFocus()\r\n        }\r\n    },\r\n    _getCurrentValue: function() {\r\n        return this._lastValue()\r\n    },\r\n    _selectionChangeHandler: function(e) {\r\n        var _this12 = this;\r\n        if (\"useButtons\" === this.option(\"applyValueMode\")) {\r\n            return\r\n        }\r\n        var value = this._getValue().slice();\r\n        (0, _iterator.each)(e.removedItems || [], function(_, removedItem) {\r\n            _this12._removeTag(value, _this12._valueGetter(removedItem))\r\n        });\r\n        (0, _iterator.each)(e.addedItems || [], function(_, addedItem) {\r\n            _this12._addTag(value, _this12._valueGetter(addedItem))\r\n        });\r\n        this._updateWidgetHeight();\r\n        if (!(0, _common.equalByValue)(this._list.option(\"selectedItemKeys\"), this.option(\"value\"))) {\r\n            var listSelectionChangeEvent = this._list._getSelectionChangeEvent();\r\n            listSelectionChangeEvent && this._saveValueChangeEvent(listSelectionChangeEvent);\r\n            this.option(\"value\", value)\r\n        }\r\n        this._list._saveSelectionChangeEvent(void 0)\r\n    },\r\n    _removeTag: function(value, item) {\r\n        var index = this._valueIndex(item, value);\r\n        if (index >= 0) {\r\n            value.splice(index, 1)\r\n        }\r\n    },\r\n    _addTag: function(value, item) {\r\n        var index = this._valueIndex(item);\r\n        if (index < 0) {\r\n            value.push(item)\r\n        }\r\n    },\r\n    _fieldRenderData: function() {\r\n        return this._selectedItems.slice()\r\n    },\r\n    _completeSelection: function(value) {\r\n        if (!this.option(\"showSelectionControls\")) {\r\n            this._setValue(value)\r\n        }\r\n    },\r\n    _setValue: function(value) {\r\n        if (null === value) {\r\n            return\r\n        }\r\n        var useButtons = \"useButtons\" === this.option(\"applyValueMode\");\r\n        var valueIndex = this._valueIndex(value);\r\n        var values = (useButtons ? this._list.option(\"selectedItemKeys\") : this._getValue()).slice();\r\n        if (valueIndex >= 0) {\r\n            values.splice(valueIndex, 1)\r\n        } else {\r\n            values.push(value)\r\n        }\r\n        if (\"useButtons\" === this.option(\"applyValueMode\")) {\r\n            this._list.option(\"selectedItemKeys\", values)\r\n        } else {\r\n            this.option(\"value\", values)\r\n        }\r\n    },\r\n    _isSelectedValue: function(value, cache) {\r\n        return this._valueIndex(value, null, cache) > -1\r\n    },\r\n    _valueIndex: function(value, values, cache) {\r\n        var _this13 = this;\r\n        var result = -1;\r\n        if (cache && \"object\" !== _typeof(value)) {\r\n            if (!cache.indexByValues) {\r\n                cache.indexByValues = {};\r\n                values = values || this._getValue();\r\n                values.forEach(function(value, index) {\r\n                    cache.indexByValues[value] = index\r\n                })\r\n            }\r\n            if (value in cache.indexByValues) {\r\n                return cache.indexByValues[value]\r\n            }\r\n        }\r\n        values = values || this._getValue();\r\n        (0, _iterator.each)(values, function(index, selectedValue) {\r\n            if (_this13._isValueEquals(value, selectedValue)) {\r\n                result = index;\r\n                return false\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _lastValue: function() {\r\n        var values = this._getValue();\r\n        var lastValue = values[values.length - 1];\r\n        return (0, _type.isDefined)(lastValue) ? lastValue : null\r\n    },\r\n    _valueChangeEventHandler: _common.noop,\r\n    _shouldRenderSearchEvent: function() {\r\n        return this.option(\"searchEnabled\") || this.option(\"acceptCustomValue\")\r\n    },\r\n    _searchHandler: function(e) {\r\n        if (this.option(\"searchEnabled\") && !!e && !this._isTagRemoved) {\r\n            this.callBase(e)\r\n        }\r\n        this._updateWidgetHeight();\r\n        delete this._isTagRemoved\r\n    },\r\n    _updateWidgetHeight: function() {\r\n        var element = this.$element();\r\n        var originalHeight = element.height();\r\n        this._renderInputSize();\r\n        var currentHeight = element.height();\r\n        if (this._popup && this.option(\"opened\") && this._isEditable() && currentHeight !== originalHeight) {\r\n            this._popup.repaint()\r\n        }\r\n    },\r\n    _refreshSelected: function() {\r\n        var _this$_list;\r\n        (null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.getDataSource()) && this._list.option(\"selectedItems\", this._selectedItems)\r\n    },\r\n    _resetListDataSourceFilter: function() {\r\n        var dataSource = this._getDataSource();\r\n        if (!dataSource) {\r\n            return\r\n        }\r\n        delete this._userFilter;\r\n        dataSource.filter(null);\r\n        dataSource.reload()\r\n    },\r\n    _setListDataSourceFilter: function() {\r\n        if (!this.option(\"hideSelectedItems\") || !this._list) {\r\n            return\r\n        }\r\n        var dataSource = this._getDataSource();\r\n        if (!dataSource) {\r\n            return\r\n        }\r\n        var valueGetterExpr = this._valueGetterExpr();\r\n        if ((0, _type.isString)(valueGetterExpr) && \"this\" !== valueGetterExpr) {\r\n            var filter = this._dataSourceFilterExpr();\r\n            if (void 0 === this._userFilter) {\r\n                this._userFilter = dataSource.filter() || null\r\n            }\r\n            this._userFilter && filter.push(this._userFilter);\r\n            filter.length ? dataSource.filter(filter) : dataSource.filter(null)\r\n        } else {\r\n            dataSource.filter(this._dataSourceFilterFunction.bind(this))\r\n        }\r\n        dataSource.load()\r\n    },\r\n    _dataSourceFilterExpr: function() {\r\n        var _this14 = this;\r\n        var filter = [];\r\n        (0, _iterator.each)(this._getValue(), function(index, value) {\r\n            filter.push([\"!\", [_this14._valueGetterExpr(), value]])\r\n        });\r\n        return filter\r\n    },\r\n    _dataSourceFilterFunction: function(itemData) {\r\n        var _this15 = this;\r\n        var itemValue = this._valueGetter(itemData);\r\n        var result = true;\r\n        (0, _iterator.each)(this._getValue(), function(index, value) {\r\n            if (_this15._isValueEquals(value, itemValue)) {\r\n                result = false;\r\n                return false\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _dataSourceChangedHandler: function() {\r\n        if (this._list) {\r\n            this._isDataSourceChanged = true\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _applyButtonHandler: function() {\r\n        this.option(\"value\", this._getSortedListValues());\r\n        this._clearTextValue();\r\n        this._clearFilter();\r\n        this.callBase()\r\n    },\r\n    _getSortedListValues: function() {\r\n        var listValues = this._getListValues();\r\n        var currentValue = this.option(\"value\") || [];\r\n        var existedItems = listValues.length ? currentValue.filter(function(item) {\r\n            return listValues.indexOf(item) !== -1\r\n        }) : [];\r\n        var newItems = existedItems.length ? listValues.filter(function(item) {\r\n            return currentValue.indexOf(item) === -1\r\n        }) : listValues;\r\n        return existedItems.concat(newItems)\r\n    },\r\n    _getListValues: function() {\r\n        var _this16 = this;\r\n        if (!this._list) {\r\n            return []\r\n        }\r\n        var selectedItems = this._getPlainItems(this._list.option(\"selectedItems\"));\r\n        var result = [];\r\n        (0, _iterator.each)(selectedItems, function(index, item) {\r\n            result[index] = _this16._valueGetter(item)\r\n        });\r\n        return result\r\n    },\r\n    _setListDataSource: function() {\r\n        var currentValue = this._getValue();\r\n        this.callBase();\r\n        if (currentValue !== this.option(\"value\")) {\r\n            this.option(\"value\", currentValue)\r\n        }\r\n        this._refreshSelected()\r\n    },\r\n    _renderOpenedState: function() {\r\n        this.callBase();\r\n        if (\"useButtons\" === this.option(\"applyValueMode\") && !this.option(\"opened\")) {\r\n            this._refreshSelected()\r\n        }\r\n    },\r\n    reset: function() {\r\n        this._restoreInputText();\r\n        var defaultValue = this._getDefaultOptions().value;\r\n        var currentValue = this.option(\"value\");\r\n        if (defaultValue && 0 === defaultValue.length && currentValue && defaultValue.length === currentValue.length) {\r\n            return\r\n        }\r\n        this.callBase()\r\n    },\r\n    _clean: function() {\r\n        this.callBase();\r\n        delete this._defaultTagTemplate;\r\n        delete this._valuesToUpdate;\r\n        delete this._tagTemplate\r\n    },\r\n    _removeDuplicates: function(from, what) {\r\n        var _this17 = this;\r\n        var result = [];\r\n        (0, _iterator.each)(from, function(_, value) {\r\n            var filteredItems = what.filter(function(item) {\r\n                return _this17._valueGetter(value) === _this17._valueGetter(item)\r\n            });\r\n            if (!filteredItems.length) {\r\n                result.push(value)\r\n            }\r\n        });\r\n        return result\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"onSelectAllValueChanged\":\r\n                this._initSelectAllValueChangedAction();\r\n                break;\r\n            case \"onMultiTagPreparing\":\r\n                this._initMultiTagPreparingAction();\r\n                this._renderTags();\r\n                break;\r\n            case \"hideSelectedItems\":\r\n                if (args.value) {\r\n                    this._setListDataSourceFilter()\r\n                } else {\r\n                    this._resetListDataSourceFilter()\r\n                }\r\n                break;\r\n            case \"useSubmitBehavior\":\r\n                this._toggleSubmitElement(args.value);\r\n                break;\r\n            case \"displayExpr\":\r\n                this.callBase(args);\r\n                this._initTemplates();\r\n                this._invalidate();\r\n                break;\r\n            case \"tagTemplate\":\r\n                this._initTagTemplate();\r\n                this._invalidate();\r\n                break;\r\n            case \"selectAllText\":\r\n                this._setListOption(\"selectAllText\", this.option(\"selectAllText\"));\r\n                break;\r\n            case \"value\":\r\n                this._valuesToUpdate = null === args || void 0 === args ? void 0 : args.value;\r\n                this.callBase(args);\r\n                this._valuesToUpdate = void 0;\r\n                this._setListDataSourceFilter();\r\n                break;\r\n            case \"maxDisplayedTags\":\r\n            case \"showMultiTagOnly\":\r\n                this._renderTags();\r\n                break;\r\n            case \"selectAllMode\":\r\n                this._setListOption(args.name, args.value);\r\n                break;\r\n            case \"selectedItem\":\r\n                break;\r\n            case \"selectedItems\":\r\n                this._selectionChangedAction({\r\n                    addedItems: this._removeDuplicates(args.value, args.previousValue),\r\n                    removedItems: this._removeDuplicates(args.previousValue, args.value)\r\n                });\r\n                break;\r\n            case \"multiline\":\r\n                this.$element().toggleClass(TAGBOX_SINGLE_LINE_CLASS, !args.value);\r\n                this._renderSingleLineScroll();\r\n                break;\r\n            case \"maxFilterLength\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _getActualSearchValue: function() {\r\n        return this.callBase() || this._searchValue()\r\n    },\r\n    _popupHidingHandler: function() {\r\n        this.callBase();\r\n        this._clearFilter()\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxTagBox\", TagBox);\r\nvar _default = TagBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/scheduler/compactAppointmentsHelper.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.CompactAppointmentsHelper = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _function_template = require(\"../../core/templates/function_template\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _dataStructures = require(\"./dataStructures\");\r\nvar _constants = require(\"./constants\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\nvar APPOINTMENT_COLLECTOR_CLASS = \"dx-scheduler-appointment-collector\";\r\nvar COMPACT_APPOINTMENT_COLLECTOR_CLASS = APPOINTMENT_COLLECTOR_CLASS + \"-compact\";\r\nvar APPOINTMENT_COLLECTOR_CONTENT_CLASS = APPOINTMENT_COLLECTOR_CLASS + \"-content\";\r\nvar WEEK_VIEW_COLLECTOR_OFFSET = 5;\r\nvar COMPACT_THEME_WEEK_VIEW_COLLECTOR_OFFSET = 1;\r\nvar CompactAppointmentsHelper = function() {\r\n    function CompactAppointmentsHelper(instance) {\r\n        _classCallCheck(this, CompactAppointmentsHelper);\r\n        this.instance = instance;\r\n        this.elements = []\r\n    }\r\n    _createClass(CompactAppointmentsHelper, [{\r\n        key: \"render\",\r\n        value: function(options) {\r\n            var isCompact = options.isCompact,\r\n                items = options.items,\r\n                buttonColor = options.buttonColor;\r\n            var template = this._createTemplate(items.data.length, isCompact);\r\n            var button = this._createCompactButton(template, options);\r\n            var $button = button.$element();\r\n            this._makeBackgroundColor($button, items.colors, buttonColor);\r\n            this._makeBackgroundDarker($button);\r\n            this.elements.push($button);\r\n            $button.data(\"items\", this._createTooltipInfos(items));\r\n            return $button\r\n        }\r\n    }, {\r\n        key: \"clear\",\r\n        value: function() {\r\n            this.elements.forEach(function(button) {\r\n                button.detach();\r\n                button.remove()\r\n            });\r\n            this.elements = []\r\n        }\r\n    }, {\r\n        key: \"_createTooltipInfos\",\r\n        value: function(items) {\r\n            var _this = this;\r\n            return items.data.map(function(appointment, index) {\r\n                var _items$settings;\r\n                var targetedAdapter = _this.instance.createAppointmentAdapter(appointment).clone();\r\n                if ((null === (_items$settings = items.settings) || void 0 === _items$settings ? void 0 : _items$settings.length) > 0) {\r\n                    var info = items.settings[index].info;\r\n                    targetedAdapter.startDate = info.sourceAppointment.startDate;\r\n                    targetedAdapter.endDate = info.sourceAppointment.endDate\r\n                }\r\n                return new _dataStructures.AppointmentTooltipInfo(appointment, targetedAdapter.source(), items.colors[index], items.settings[index])\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_onButtonClick\",\r\n        value: function(e, options) {\r\n            var $button = (0, _renderer.default)(e.element);\r\n            this.instance.showAppointmentTooltipCore($button, $button.data(\"items\"), this._getExtraOptionsForTooltip(options))\r\n        }\r\n    }, {\r\n        key: \"_getExtraOptionsForTooltip\",\r\n        value: function(options) {\r\n            return {\r\n                clickEvent: this._clickEvent(options.onAppointmentClick).bind(this),\r\n                dragBehavior: options.allowDrag && this._createTooltipDragBehavior(options).bind(this),\r\n                dropDownAppointmentTemplate: this.instance.option().dropDownAppointmentTemplate,\r\n                isButtonClick: true\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_clickEvent\",\r\n        value: function(onAppointmentClick) {\r\n            var _this2 = this;\r\n            return function(e) {\r\n                var config = {\r\n                    itemData: e.itemData.appointment,\r\n                    itemElement: e.itemElement\r\n                };\r\n                var createClickEvent = (0, _extend.extendFromObject)(_this2.instance.fire(\"mapAppointmentFields\", config), e, false);\r\n                delete createClickEvent.itemData;\r\n                delete createClickEvent.itemIndex;\r\n                delete createClickEvent.itemElement;\r\n                onAppointmentClick(createClickEvent)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createTooltipDragBehavior\",\r\n        value: function(options) {\r\n            var _this3 = this;\r\n            return function(e) {\r\n                var dragElement;\r\n                var $element = (0, _renderer.default)(e.element);\r\n                var dragBehavior = _this3.instance.getWorkSpace().dragBehavior;\r\n                dragBehavior.addTo($element, {\r\n                    filter: \".\".concat(_constants.LIST_ITEM_CLASS),\r\n                    container: _this3.instance.$element().find(\".\".concat(_constants.FIXED_CONTAINER_CLASS)),\r\n                    cursorOffset: function() {\r\n                        var $dragElement = (0, _renderer.default)(dragElement);\r\n                        return {\r\n                            x: $dragElement.width() / 2,\r\n                            y: $dragElement.height() / 2\r\n                        }\r\n                    },\r\n                    dragTemplate: function() {\r\n                        return dragElement\r\n                    },\r\n                    onDragStart: function(e) {\r\n                        var event = e.event;\r\n                        var itemData = (0, _renderer.default)(e.itemElement).data(_constants.LIST_ITEM_DATA_KEY);\r\n                        if (itemData && !itemData.appointment.disabled) {\r\n                            event.data = event.data || {};\r\n                            event.data.itemElement = dragElement = _this3._createDragAppointment(itemData.appointment, e.itemSettings);\r\n                            dragBehavior.onDragStart(event.data);\r\n                            (0, _translator.resetPosition)((0, _renderer.default)(dragElement))\r\n                        }\r\n                    },\r\n                    onDragEnd: function(e) {\r\n                        var itemData = (0, _renderer.default)(e.itemElement).data(_constants.LIST_ITEM_DATA_KEY);\r\n                        if (itemData && !itemData.appointment.disabled) {\r\n                            dragBehavior.onDragEnd(e)\r\n                        }\r\n                    }\r\n                })\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_createDragAppointment\",\r\n        value: function(itemData, settings) {\r\n            var appointments = this.instance.getAppointmentsInstance();\r\n            var appointmentIndex = appointments.option(\"items\").length;\r\n            settings.isCompact = false;\r\n            settings.virtual = false;\r\n            appointments._renderItem(appointmentIndex, {\r\n                itemData: itemData,\r\n                settings: [settings]\r\n            });\r\n            return appointments._findItemElementByItem(itemData)[0]\r\n        }\r\n    }, {\r\n        key: \"_getCollectorOffset\",\r\n        value: function(width, cellWidth) {\r\n            return cellWidth - width - this._getCollectorRightOffset()\r\n        }\r\n    }, {\r\n        key: \"_getCollectorRightOffset\",\r\n        value: function() {\r\n            return this.instance.getRenderingStrategyInstance()._isCompactTheme() ? COMPACT_THEME_WEEK_VIEW_COLLECTOR_OFFSET : WEEK_VIEW_COLLECTOR_OFFSET\r\n        }\r\n    }, {\r\n        key: \"_makeBackgroundDarker\",\r\n        value: function(button) {\r\n            button.css(\"boxShadow\", \"inset \".concat((0, _position.getBoundingRect)(button.get(0)).width, \"px 0 0 0 rgba(0, 0, 0, 0.3)\"))\r\n        }\r\n    }, {\r\n        key: \"_makeBackgroundColor\",\r\n        value: function($button, colors, color) {\r\n            _deferred.when.apply(null, colors).done(function() {\r\n                this._makeBackgroundColorCore($button, color, arguments)\r\n            }.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_makeBackgroundColorCore\",\r\n        value: function($button, color, itemsColors) {\r\n            var paintButton = true;\r\n            var currentItemColor;\r\n            color && color.done(function(color) {\r\n                if (itemsColors.length) {\r\n                    currentItemColor = itemsColors[0];\r\n                    for (var i = 1; i < itemsColors.length; i++) {\r\n                        if (currentItemColor !== itemsColors[i]) {\r\n                            paintButton = false;\r\n                            break\r\n                        }\r\n                        currentItemColor = color\r\n                    }\r\n                }\r\n                color && paintButton && $button.css(\"backgroundColor\", color)\r\n            }.bind(this))\r\n        }\r\n    }, {\r\n        key: \"_setPosition\",\r\n        value: function(element, position) {\r\n            (0, _translator.move)(element, {\r\n                top: position.top,\r\n                left: position.left\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createCompactButton\",\r\n        value: function(template, options) {\r\n            var _this4 = this;\r\n            var $button = this._createCompactButtonElement(options);\r\n            return this.instance._createComponent($button, _button.default, {\r\n                type: \"default\",\r\n                width: options.width,\r\n                height: options.height,\r\n                onClick: function(e) {\r\n                    return _this4._onButtonClick(e, options)\r\n                },\r\n                template: this._renderTemplate(template, options.items, options.isCompact)\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createCompactButtonElement\",\r\n        value: function(_ref) {\r\n            var isCompact = _ref.isCompact,\r\n                $container = _ref.$container,\r\n                width = _ref.width,\r\n                coordinates = _ref.coordinates,\r\n                applyOffset = _ref.applyOffset,\r\n                cellWidth = _ref.cellWidth;\r\n            var result = (0, _renderer.default)(\"<div>\").addClass(APPOINTMENT_COLLECTOR_CLASS).toggleClass(COMPACT_APPOINTMENT_COLLECTOR_CLASS, isCompact).appendTo($container);\r\n            var offset = applyOffset ? this._getCollectorOffset(width, cellWidth) : 0;\r\n            this._setPosition(result, {\r\n                top: coordinates.top,\r\n                left: coordinates.left + offset\r\n            });\r\n            return result\r\n        }\r\n    }, {\r\n        key: \"_renderTemplate\",\r\n        value: function(template, items, isCompact) {\r\n            return new _function_template.FunctionTemplate(function(options) {\r\n                return template.render({\r\n                    model: {\r\n                        appointmentCount: items.data.length,\r\n                        isCompact: isCompact\r\n                    },\r\n                    container: options.container\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createTemplate\",\r\n        value: function(count, isCompact) {\r\n            this._initButtonTemplate(count, isCompact);\r\n            return this.instance._getAppointmentTemplate(\"appointmentCollectorTemplate\")\r\n        }\r\n    }, {\r\n        key: \"_initButtonTemplate\",\r\n        value: function(count, isCompact) {\r\n            var _this5 = this;\r\n            this.instance._templateManager.addDefaultTemplates({\r\n                appointmentCollector: new _function_template.FunctionTemplate(function(options) {\r\n                    return _this5._createButtonTemplate(count, (0, _renderer.default)(options.container), isCompact)\r\n                })\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_createButtonTemplate\",\r\n        value: function(appointmentCount, element, isCompact) {\r\n            var text = isCompact ? appointmentCount : _message.default.getFormatter(\"dxScheduler-moreAppointments\")(appointmentCount);\r\n            return element.append((0, _renderer.default)(\"<span>\").text(text)).addClass(APPOINTMENT_COLLECTOR_CONTENT_CLASS)\r\n        }\r\n    }]);\r\n    return CompactAppointmentsHelper\r\n}();\r\nexports.CompactAppointmentsHelper = CompactAppointmentsHelper;\r\n","/**\r\n * DevExtreme (exporter/file_saver.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.fileSaver = exports.MIME_TYPES = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _ui = _interopRequireDefault(require(\"../ui/widget/ui.errors\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _console = require(\"../core/utils/console\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar navigator = (0, _window.getNavigator)();\r\nvar FILE_EXTESIONS = {\r\n    EXCEL: \"xlsx\",\r\n    CSS: \"css\",\r\n    PNG: \"png\",\r\n    JPEG: \"jpeg\",\r\n    GIF: \"gif\",\r\n    SVG: \"svg\",\r\n    PDF: \"pdf\"\r\n};\r\nvar MIME_TYPES = {\r\n    CSS: \"text/css\",\r\n    EXCEL: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n    PNG: \"image/png\",\r\n    JPEG: \"image/jpeg\",\r\n    GIF: \"image/gif\",\r\n    SVG: \"image/svg+xml\",\r\n    PDF: \"application/pdf\"\r\n};\r\nexports.MIME_TYPES = MIME_TYPES;\r\nvar fileSaver = {\r\n    _revokeObjectURLTimeout: 3e4,\r\n    _getDataUri: function(format, data) {\r\n        var mimeType = this._getMimeType(format);\r\n        return \"data:\".concat(mimeType, \";base64,\").concat(data)\r\n    },\r\n    _getMimeType: function(format) {\r\n        return MIME_TYPES[format] || \"application/octet-stream\"\r\n    },\r\n    _linkDownloader: function(fileName, href) {\r\n        var exportLinkElement = _dom_adapter.default.createElement(\"a\");\r\n        exportLinkElement.download = fileName;\r\n        exportLinkElement.href = href;\r\n        exportLinkElement.target = \"_blank\";\r\n        return exportLinkElement\r\n    },\r\n    _formDownloader: function(proxyUrl, fileName, contentType, data) {\r\n        var formAttributes = {\r\n            method: \"post\",\r\n            action: proxyUrl,\r\n            enctype: \"multipart/form-data\"\r\n        };\r\n        var exportForm = (0, _renderer.default)(\"<form>\").css({\r\n            display: \"none\"\r\n        }).attr(formAttributes);\r\n\r\n        function setAttributes(element, attributes) {\r\n            for (var key in attributes) {\r\n                element.setAttribute(key, attributes[key])\r\n            }\r\n            return element\r\n        }\r\n        exportForm.append(setAttributes(_dom_adapter.default.createElement(\"input\"), {\r\n            type: \"hidden\",\r\n            name: \"fileName\",\r\n            value: fileName\r\n        }));\r\n        exportForm.append(setAttributes(_dom_adapter.default.createElement(\"input\"), {\r\n            type: \"hidden\",\r\n            name: \"contentType\",\r\n            value: contentType\r\n        }));\r\n        exportForm.append(setAttributes(_dom_adapter.default.createElement(\"input\"), {\r\n            type: \"hidden\",\r\n            name: \"data\",\r\n            value: data\r\n        }));\r\n        exportForm.appendTo(\"body\");\r\n        _events_engine.default.trigger(exportForm, \"submit\");\r\n        if (_events_engine.default.trigger(exportForm, \"submit\")) {\r\n            exportForm.remove()\r\n        }\r\n    },\r\n    _saveByProxy: function(proxyUrl, fileName, format, data) {\r\n        var contentType = this._getMimeType(format);\r\n        return this._formDownloader(proxyUrl, fileName, contentType, data)\r\n    },\r\n    _winJSBlobSave: function(blob, fileName, format) {\r\n        var savePicker = new Windows.Storage.Pickers.FileSavePicker;\r\n        savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary;\r\n        var fileExtension = FILE_EXTESIONS[format];\r\n        if (fileExtension) {\r\n            var mimeType = this._getMimeType(format);\r\n            savePicker.fileTypeChoices.insert(mimeType, [\".\" + fileExtension])\r\n        }\r\n        savePicker.suggestedFileName = fileName;\r\n        savePicker.pickSaveFileAsync().then(function(file) {\r\n            if (file) {\r\n                file.openAsync(Windows.Storage.FileAccessMode.readWrite).then(function(outputStream) {\r\n                    var inputStream = blob.msDetachStream();\r\n                    Windows.Storage.Streams.RandomAccessStream.copyAsync(inputStream, outputStream).then(function() {\r\n                        outputStream.flushAsync().done(function() {\r\n                            inputStream.close();\r\n                            outputStream.close()\r\n                        })\r\n                    })\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _click: function(link) {\r\n        try {\r\n            link.dispatchEvent(new MouseEvent(\"click\", {\r\n                cancelable: true\r\n            }))\r\n        } catch (e) {\r\n            var event = _dom_adapter.default.getDocument().createEvent(\"MouseEvents\");\r\n            event.initMouseEvent(\"click\", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\r\n            link.dispatchEvent(event)\r\n        }\r\n    },\r\n    _saveBlobAs: function(fileName, format, data) {\r\n        var _this = this;\r\n        this._blobSaved = false;\r\n        if ((0, _type.isDefined)(navigator.msSaveOrOpenBlob)) {\r\n            navigator.msSaveOrOpenBlob(data, fileName);\r\n            this._blobSaved = true\r\n        } else {\r\n            if ((0, _type.isDefined)(window.WinJS)) {\r\n                this._winJSBlobSave(data, fileName, format);\r\n                this._blobSaved = true\r\n            } else {\r\n                var URL = window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL;\r\n                if ((0, _type.isDefined)(URL)) {\r\n                    var objectURL = URL.createObjectURL(data);\r\n                    var downloadLink = this._linkDownloader(fileName, objectURL);\r\n                    setTimeout(function() {\r\n                        URL.revokeObjectURL(objectURL);\r\n                        _this._objectUrlRevoked = true\r\n                    }, this._revokeObjectURLTimeout);\r\n                    this._click(downloadLink)\r\n                } else {\r\n                    _console.logger.warn(\"window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL is not defined\")\r\n                }\r\n            }\r\n        }\r\n    },\r\n    saveAs: function(fileName, format, data, proxyURL, forceProxy) {\r\n        var fileExtension = FILE_EXTESIONS[format];\r\n        if (fileExtension) {\r\n            fileName += \".\" + fileExtension\r\n        }\r\n        if ((0, _type.isDefined)(proxyURL)) {\r\n            _ui.default.log(\"W0001\", \"Export\", \"proxyURL\", \"19.2\", \"This option is no longer required\")\r\n        }\r\n        if (forceProxy) {\r\n            this._saveByProxy(proxyURL, fileName, format, data)\r\n        } else {\r\n            if ((0, _type.isFunction)(window.Blob)) {\r\n                this._saveBlobAs(fileName, format, data)\r\n            } else {\r\n                if ((0, _type.isDefined)(proxyURL) && !(0, _type.isDefined)(navigator.userAgent.match(/iPad/i))) {\r\n                    this._saveByProxy(proxyURL, fileName, format, data)\r\n                } else {\r\n                    if (!(0, _type.isDefined)(navigator.userAgent.match(/iPad/i))) {\r\n                        _ui.default.log(\"E1034\")\r\n                    }\r\n                    var downloadLink = this._linkDownloader(fileName, this._getDataUri(format, data));\r\n                    this._click(downloadLink)\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexports.fileSaver = fileSaver;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.sorting.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting_mixin\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar COLUMN_HEADERS_VIEW_NAMESPACE = \"dxDataGridColumnHeadersView\";\r\nvar ColumnHeadersViewSortingExtender = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n    _createRow: function(row) {\r\n        var _this = this;\r\n        var $row = this.callBase(row);\r\n        if (\"header\" === row.rowType) {\r\n            _events_engine.default.on($row, (0, _index.addNamespace)(_click.name, COLUMN_HEADERS_VIEW_NAMESPACE), \"td\", this.createAction(function(e) {\r\n                _this._processHeaderAction(e.event, $row)\r\n            }))\r\n        }\r\n        return $row\r\n    },\r\n    _processHeaderAction: function(event, $row) {\r\n        if ((0, _renderer.default)(event.currentTarget).parent().get(0) !== $row.get(0)) {\r\n            return\r\n        }\r\n        var that = this;\r\n        var keyName = null;\r\n        var $cellElementFromEvent = (0, _renderer.default)(event.currentTarget);\r\n        var rowIndex = $cellElementFromEvent.parent().index();\r\n        var columnIndex = -1;\r\n        [].slice.call(that.getCellElements(rowIndex)).some(function($cellElement, index) {\r\n            if ($cellElement === $cellElementFromEvent.get(0)) {\r\n                columnIndex = index;\r\n                return true\r\n            }\r\n        });\r\n        var visibleColumns = that._columnsController.getVisibleColumns(rowIndex);\r\n        var column = visibleColumns[columnIndex];\r\n        var editingController = that.getController(\"editing\");\r\n        var editingMode = that.option(\"editing.mode\");\r\n        var isCellEditing = editingController && editingController.isEditing() && (\"batch\" === editingMode || \"cell\" === editingMode);\r\n        if (isCellEditing || !that._isSortableElement((0, _renderer.default)(event.target))) {\r\n            return\r\n        }\r\n        if (column && !(0, _type.isDefined)(column.groupIndex) && !column.command) {\r\n            if (event.shiftKey) {\r\n                keyName = \"shift\"\r\n            } else {\r\n                if (event.ctrlKey) {\r\n                    keyName = \"ctrl\"\r\n                }\r\n            }\r\n            setTimeout(function() {\r\n                that._columnsController.changeSortOrder(column.index, keyName)\r\n            })\r\n        }\r\n    },\r\n    _renderCellContent: function($cell, options) {\r\n        var that = this;\r\n        var column = options.column;\r\n        if (!column.command && \"header\" === options.rowType) {\r\n            that._applyColumnState({\r\n                name: \"sort\",\r\n                rootElement: $cell,\r\n                column: column,\r\n                showColumnLines: that.option(\"showColumnLines\")\r\n            })\r\n        }\r\n        that.callBase($cell, options)\r\n    },\r\n    _columnOptionChanged: function(e) {\r\n        var changeTypes = e.changeTypes;\r\n        if (1 === changeTypes.length && changeTypes.sorting) {\r\n            this._updateIndicators(\"sort\");\r\n            return\r\n        }\r\n        this.callBase(e)\r\n    },\r\n    optionChanged: function(args) {\r\n        var that = this;\r\n        switch (args.name) {\r\n            case \"sorting\":\r\n                that._invalidate();\r\n                args.handled = true;\r\n                break;\r\n            default:\r\n                that.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar HeaderPanelSortingExtender = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n    _createGroupPanelItem: function($rootElement, groupColumn) {\r\n        var that = this;\r\n        var $item = that.callBase.apply(that, arguments);\r\n        _events_engine.default.on($item, (0, _index.addNamespace)(_click.name, \"dxDataGridHeaderPanel\"), that.createAction(function() {\r\n            that._processGroupItemAction(groupColumn.index)\r\n        }));\r\n        that._applyColumnState({\r\n            name: \"sort\",\r\n            rootElement: $item,\r\n            column: {\r\n                alignment: that.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n                allowSorting: groupColumn.allowSorting,\r\n                sortOrder: \"desc\" === groupColumn.sortOrder ? \"desc\" : \"asc\"\r\n            },\r\n            showColumnLines: true\r\n        });\r\n        return $item\r\n    },\r\n    _processGroupItemAction: function(groupColumnIndex) {\r\n        var _this2 = this;\r\n        setTimeout(function() {\r\n            return _this2.getController(\"columns\").changeSortOrder(groupColumnIndex)\r\n        })\r\n    },\r\n    optionChanged: function(args) {\r\n        var that = this;\r\n        switch (args.name) {\r\n            case \"sorting\":\r\n                that._invalidate();\r\n                args.handled = true;\r\n                break;\r\n            default:\r\n                that.callBase(args)\r\n        }\r\n    }\r\n});\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            sorting: {\r\n                mode: \"single\",\r\n                ascendingText: _message.default.format(\"dxDataGrid-sortingAscendingText\"),\r\n                descendingText: _message.default.format(\"dxDataGrid-sortingDescendingText\"),\r\n                clearText: _message.default.format(\"dxDataGrid-sortingClearText\"),\r\n                showSortIndexes: true\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        views: {\r\n            columnHeadersView: ColumnHeadersViewSortingExtender,\r\n            headerPanel: HeaderPanelSortingExtender\r\n        }\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/chart_components/base_chart.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.BaseChart = exports.overlapping = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _legend = require(\"../components/legend\");\r\nvar _data_validator = require(\"../components/data_validator\");\r\nvar _base_series = require(\"../series/base_series\");\r\nvar _chart_theme_manager = require(\"../components/chart_theme_manager\");\r\nvar _layout_manager = require(\"./layout_manager\");\r\nvar trackerModule = _interopRequireWildcard(require(\"./tracker\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _export = require(\"../core/export\");\r\nvar _title = require(\"../core/title\");\r\nvar _data_source = require(\"../core/data_source\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _loading_indicator = require(\"../core/loading_indicator\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _isArray = Array.isArray;\r\nvar REINIT_REFRESH_ACTION = \"_reinit\";\r\nvar REINIT_DATA_SOURCE_REFRESH_ACTION = \"_updateDataSource\";\r\nvar DATA_INIT_REFRESH_ACTION = \"_dataInit\";\r\nvar FORCE_RENDER_REFRESH_ACTION = \"_forceRender\";\r\nvar RESIZE_REFRESH_ACTION = \"_resize\";\r\nvar ACTIONS_BY_PRIORITY = [REINIT_REFRESH_ACTION, REINIT_DATA_SOURCE_REFRESH_ACTION, DATA_INIT_REFRESH_ACTION, FORCE_RENDER_REFRESH_ACTION, RESIZE_REFRESH_ACTION];\r\nvar DEFAULT_OPACITY = .3;\r\nvar REFRESH_SERIES_DATA_INIT_ACTION_OPTIONS = [\"series\", \"commonSeriesSettings\", \"dataPrepareSettings\", \"seriesSelectionMode\", \"pointSelectionMode\", \"synchronizeMultiAxes\", \"resolveLabelsOverlapping\"];\r\nvar REFRESH_SERIES_FAMILIES_ACTION_OPTIONS = [\"minBubbleSize\", \"maxBubbleSize\", \"barGroupPadding\", \"barGroupWidth\", \"negativesAsZeroes\", \"negativesAsZeros\"];\r\nvar FORCE_RENDER_REFRESH_ACTION_OPTIONS = [\"adaptiveLayout\", \"crosshair\", \"resolveLabelOverlapping\", \"adjustOnZoom\", \"stickyHovering\"];\r\nvar FONT = \"font\";\r\n\r\nfunction checkHeightRollingStock(rollingStocks, stubCanvas) {\r\n    var canvasSize = stubCanvas.end - stubCanvas.start;\r\n    var size = 0;\r\n    rollingStocks.forEach(function(rollingStock) {\r\n        size += rollingStock.getBoundingRect().width\r\n    });\r\n    while (canvasSize < size) {\r\n        size -= findAndKillSmallValue(rollingStocks)\r\n    }\r\n}\r\n\r\nfunction findAndKillSmallValue(rollingStocks) {\r\n    var smallestObject = rollingStocks.reduce(function(prev, rollingStock, index) {\r\n        if (!rollingStock) {\r\n            return prev\r\n        }\r\n        var value = rollingStock.value();\r\n        return value < prev.value ? {\r\n            value: value,\r\n            rollingStock: rollingStock,\r\n            index: index\r\n        } : prev\r\n    }, {\r\n        rollingStock: void 0,\r\n        value: 1 / 0,\r\n        index: void 0\r\n    });\r\n    smallestObject.rollingStock.getLabels()[0].draw(false);\r\n    var width = smallestObject.rollingStock.getBoundingRect().width;\r\n    rollingStocks[smallestObject.index] = null;\r\n    return width\r\n}\r\n\r\nfunction checkStackOverlap(rollingStocks) {\r\n    var i;\r\n    var j;\r\n    var iLength;\r\n    var jLength;\r\n    var overlap = false;\r\n    for (i = 0, iLength = rollingStocks.length - 1; i < iLength; i++) {\r\n        for (j = i + 1, jLength = rollingStocks.length; j < jLength; j++) {\r\n            if (i !== j && checkStacksOverlapping(rollingStocks[i], rollingStocks[j], true)) {\r\n                overlap = true;\r\n                break\r\n            }\r\n        }\r\n        if (overlap) {\r\n            break\r\n        }\r\n    }\r\n    return overlap\r\n}\r\n\r\nfunction resolveLabelOverlappingInOneDirection(points, canvas, isRotated, shiftFunction) {\r\n    var customSorting = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : function() {\r\n        return 0\r\n    };\r\n    var rollingStocks = [];\r\n    var stubCanvas = {\r\n        start: isRotated ? canvas.left : canvas.top,\r\n        end: isRotated ? canvas.width - canvas.right : canvas.height - canvas.bottom\r\n    };\r\n    var hasStackedSeries = false;\r\n    points.forEach(function(p) {\r\n        if (!p) {\r\n            return\r\n        }\r\n        hasStackedSeries = hasStackedSeries || p.series.isStackedSeries() || p.series.isFullStackedSeries();\r\n        p.getLabels().forEach(function(l) {\r\n            l.isVisible() && rollingStocks.push(new RollingStock(l, isRotated, shiftFunction))\r\n        })\r\n    });\r\n    if (hasStackedSeries) {\r\n        !isRotated && rollingStocks.reverse()\r\n    } else {\r\n        var rollingStocksTmp = rollingStocks.slice();\r\n        rollingStocks.sort(function(a, b) {\r\n            return customSorting(a, b) || a.getInitialPosition() - b.getInitialPosition() || rollingStocksTmp.indexOf(a) - rollingStocksTmp.indexOf(b)\r\n        })\r\n    }\r\n    if (!checkStackOverlap(rollingStocks)) {\r\n        return false\r\n    }\r\n    checkHeightRollingStock(rollingStocks, stubCanvas);\r\n    prepareOverlapStacks(rollingStocks);\r\n    rollingStocks.reverse();\r\n    moveRollingStock(rollingStocks, stubCanvas);\r\n    return true\r\n}\r\n\r\nfunction checkStacksOverlapping(firstRolling, secondRolling, inTwoSides) {\r\n    if (!firstRolling || !secondRolling) {\r\n        return\r\n    }\r\n    var firstRect = firstRolling.getBoundingRect();\r\n    var secondRect = secondRolling.getBoundingRect();\r\n    var oppositeOverlapping = inTwoSides ? firstRect.oppositeStart <= secondRect.oppositeStart && firstRect.oppositeEnd > secondRect.oppositeStart || secondRect.oppositeStart <= firstRect.oppositeStart && secondRect.oppositeEnd > firstRect.oppositeStart : true;\r\n    return firstRect.end > secondRect.start && oppositeOverlapping\r\n}\r\n\r\nfunction prepareOverlapStacks(rollingStocks) {\r\n    var i;\r\n    var currentRollingStock;\r\n    var root;\r\n    for (i = 0; i < rollingStocks.length - 1; i++) {\r\n        currentRollingStock = root || rollingStocks[i];\r\n        if (checkStacksOverlapping(currentRollingStock, rollingStocks[i + 1])) {\r\n            currentRollingStock.toChain(rollingStocks[i + 1]);\r\n            rollingStocks[i + 1] = null;\r\n            root = currentRollingStock\r\n        } else {\r\n            root = rollingStocks[i + 1] || currentRollingStock\r\n        }\r\n    }\r\n}\r\n\r\nfunction moveRollingStock(rollingStocks, canvas) {\r\n    var i;\r\n    var j;\r\n    var currentRollingStock;\r\n    var nextRollingStock;\r\n    var currentBBox;\r\n    var nextBBox;\r\n    for (i = 0; i < rollingStocks.length; i++) {\r\n        currentRollingStock = rollingStocks[i];\r\n        if (rollingStocksIsOut(currentRollingStock, canvas)) {\r\n            currentBBox = currentRollingStock.getBoundingRect();\r\n            for (j = i + 1; j < rollingStocks.length; j++) {\r\n                nextRollingStock = rollingStocks[j];\r\n                if (!nextRollingStock) {\r\n                    continue\r\n                }\r\n                nextBBox = nextRollingStock.getBoundingRect();\r\n                if (nextBBox.end > currentBBox.start - (currentBBox.end - canvas.end)) {\r\n                    nextRollingStock.toChain(currentRollingStock);\r\n                    rollingStocks[i] = currentRollingStock = null;\r\n                    break\r\n                }\r\n            }\r\n        }\r\n        currentRollingStock && currentRollingStock.setRollingStockInCanvas(canvas)\r\n    }\r\n}\r\n\r\nfunction rollingStocksIsOut(rollingStock, canvas) {\r\n    return rollingStock && rollingStock.getBoundingRect().end > canvas.end\r\n}\r\n\r\nfunction RollingStock(label, isRotated, shiftFunction) {\r\n    var bBox = label.getBoundingRect();\r\n    var x = bBox.x;\r\n    var y = bBox.y;\r\n    var endX = bBox.x + bBox.width;\r\n    var endY = bBox.y + bBox.height;\r\n    this.labels = [label];\r\n    this.shiftFunction = shiftFunction;\r\n    this._bBox = {\r\n        start: isRotated ? x : y,\r\n        width: isRotated ? bBox.width : bBox.height,\r\n        end: isRotated ? endX : endY,\r\n        oppositeStart: isRotated ? y : x,\r\n        oppositeEnd: isRotated ? endY : endX\r\n    };\r\n    this._initialPosition = isRotated ? bBox.x : bBox.y;\r\n    return this\r\n}\r\nRollingStock.prototype = {\r\n    toChain: function(nextRollingStock) {\r\n        var nextRollingStockBBox = nextRollingStock.getBoundingRect();\r\n        nextRollingStock.shift(nextRollingStockBBox.start - this._bBox.end);\r\n        this._changeBoxWidth(nextRollingStockBBox.width);\r\n        this.labels = this.labels.concat(nextRollingStock.labels)\r\n    },\r\n    getBoundingRect: function() {\r\n        return this._bBox\r\n    },\r\n    shift: function(shiftLength) {\r\n        var shiftFunction = this.shiftFunction;\r\n        (0, _iterator.each)(this.labels, function(index, label) {\r\n            var bBox = label.getBoundingRect();\r\n            var coords = shiftFunction(bBox, shiftLength);\r\n            if (!label.hideInsideLabel(coords)) {\r\n                label.shift(coords.x, coords.y)\r\n            }\r\n        });\r\n        this._bBox.end -= shiftLength;\r\n        this._bBox.start -= shiftLength\r\n    },\r\n    setRollingStockInCanvas: function(canvas) {\r\n        if (this._bBox.end > canvas.end) {\r\n            this.shift(this._bBox.end - canvas.end)\r\n        }\r\n    },\r\n    getLabels: function() {\r\n        return this.labels\r\n    },\r\n    value: function() {\r\n        return this.labels[0].getData().value\r\n    },\r\n    getInitialPosition: function() {\r\n        return this._initialPosition\r\n    },\r\n    _changeBoxWidth: function(width) {\r\n        this._bBox.end += width;\r\n        this._bBox.width += width\r\n    }\r\n};\r\n\r\nfunction getLegendFields(name) {\r\n    return {\r\n        nameField: name + \"Name\",\r\n        colorField: name + \"Color\",\r\n        indexField: name + \"Index\"\r\n    }\r\n}\r\n\r\nfunction getLegendSettings(legendDataField) {\r\n    var formatObjectFields = getLegendFields(legendDataField);\r\n    return {\r\n        getFormatObject: function(data) {\r\n            var res = {};\r\n            res[formatObjectFields.indexField] = data.id;\r\n            res[formatObjectFields.colorField] = data.states.normal.fill;\r\n            res[formatObjectFields.nameField] = data.text;\r\n            return res\r\n        },\r\n        textField: formatObjectFields.nameField\r\n    }\r\n}\r\n\r\nfunction checkOverlapping(firstRect, secondRect) {\r\n    return (firstRect.x <= secondRect.x && secondRect.x <= firstRect.x + firstRect.width || firstRect.x >= secondRect.x && firstRect.x <= secondRect.x + secondRect.width) && (firstRect.y <= secondRect.y && secondRect.y <= firstRect.y + firstRect.height || firstRect.y >= secondRect.y && firstRect.y <= secondRect.y + secondRect.height)\r\n}\r\nvar overlapping = {\r\n    resolveLabelOverlappingInOneDirection: resolveLabelOverlappingInOneDirection\r\n};\r\nexports.overlapping = overlapping;\r\nvar BaseChart = _base_widget.default.inherit({\r\n    _eventsMap: {\r\n        onSeriesClick: {\r\n            name: \"seriesClick\"\r\n        },\r\n        onPointClick: {\r\n            name: \"pointClick\"\r\n        },\r\n        onArgumentAxisClick: {\r\n            name: \"argumentAxisClick\"\r\n        },\r\n        onLegendClick: {\r\n            name: \"legendClick\"\r\n        },\r\n        onSeriesSelectionChanged: {\r\n            name: \"seriesSelectionChanged\"\r\n        },\r\n        onPointSelectionChanged: {\r\n            name: \"pointSelectionChanged\"\r\n        },\r\n        onSeriesHoverChanged: {\r\n            name: \"seriesHoverChanged\"\r\n        },\r\n        onPointHoverChanged: {\r\n            name: \"pointHoverChanged\"\r\n        },\r\n        onDone: {\r\n            name: \"done\"\r\n        },\r\n        onZoomStart: {\r\n            name: \"zoomStart\"\r\n        },\r\n        onZoomEnd: {\r\n            name: \"zoomEnd\"\r\n        }\r\n    },\r\n    _fontFields: [\"legend.\" + FONT, \"legend.title.\" + FONT, \"legend.title.subtitle.\" + FONT, \"commonSeriesSettings.label.\" + FONT],\r\n    _rootClassPrefix: \"dxc\",\r\n    _rootClass: \"dxc-chart\",\r\n    _initialChanges: [\"INIT\"],\r\n    _themeDependentChanges: [\"REFRESH_SERIES_REINIT\"],\r\n    _getThemeManagerOptions: function() {\r\n        var themeOptions = this.callBase.apply(this, arguments);\r\n        themeOptions.options = this.option();\r\n        return themeOptions\r\n    },\r\n    _createThemeManager: function() {\r\n        var chartOption = this.option();\r\n        var themeManager = new _chart_theme_manager.ThemeManager(this._getThemeManagerOptions());\r\n        themeManager.setTheme(chartOption.theme, chartOption.rtlEnabled);\r\n        return themeManager\r\n    },\r\n    _initCore: function() {\r\n        var that = this;\r\n        that._canvasClipRect = that._renderer.clipRect();\r\n        that._createHtmlStructure();\r\n        that._createLegend();\r\n        that._createTracker();\r\n        that._needHandleRenderComplete = true;\r\n        that.layoutManager = new _layout_manager.LayoutManager;\r\n        that._createScrollBar();\r\n        _events_engine.default.on(that._$element, \"contextmenu\", function(event) {\r\n            if ((0, _index.isTouchEvent)(event) || (0, _index.isPointerEvent)(event)) {\r\n                event.preventDefault()\r\n            }\r\n        });\r\n        _events_engine.default.on(that._$element, \"MSHoldVisual\", function(event) {\r\n            event.preventDefault()\r\n        })\r\n    },\r\n    _getLayoutItems: _common.noop,\r\n    _layoutManagerOptions: function() {\r\n        return this._themeManager.getOptions(\"adaptiveLayout\")\r\n    },\r\n    _reinit: function() {\r\n        var that = this;\r\n        (0, _utils.setCanvasValues)(that._canvas);\r\n        that._reinitAxes();\r\n        that._requestChange([\"DATA_SOURCE\", \"DATA_INIT\", \"CORRECT_AXIS\", \"FULL_RENDER\"])\r\n    },\r\n    _correctAxes: _common.noop,\r\n    _createHtmlStructure: function() {\r\n        var that = this;\r\n        var renderer = that._renderer;\r\n        var root = renderer.root;\r\n        var createConstantLinesGroup = function() {\r\n            return renderer.g().attr({\r\n                \"class\": \"dxc-constant-lines-group\"\r\n            }).linkOn(root, \"constant-lines\")\r\n        };\r\n        that._constantLinesGroup = {\r\n            dispose: function() {\r\n                this.under.dispose();\r\n                this.above.dispose()\r\n            },\r\n            linkOff: function() {\r\n                this.under.linkOff();\r\n                this.above.linkOff()\r\n            },\r\n            clear: function() {\r\n                this.under.linkRemove().clear();\r\n                this.above.linkRemove().clear()\r\n            },\r\n            linkAppend: function() {\r\n                this.under.linkAppend();\r\n                this.above.linkAppend()\r\n            }\r\n        };\r\n        that._backgroundRect = renderer.rect().attr({\r\n            fill: \"gray\",\r\n            opacity: 1e-4\r\n        }).append(root);\r\n        that._panesBackgroundGroup = renderer.g().attr({\r\n            \"class\": \"dxc-background\"\r\n        }).append(root);\r\n        that._stripsGroup = renderer.g().attr({\r\n            \"class\": \"dxc-strips-group\"\r\n        }).linkOn(root, \"strips\");\r\n        that._gridGroup = renderer.g().attr({\r\n            \"class\": \"dxc-grids-group\"\r\n        }).linkOn(root, \"grids\");\r\n        that._panesBorderGroup = renderer.g().attr({\r\n            \"class\": \"dxc-border\"\r\n        }).linkOn(root, \"border\");\r\n        that._axesGroup = renderer.g().attr({\r\n            \"class\": \"dxc-axes-group\"\r\n        }).linkOn(root, \"axes\");\r\n        that._labelAxesGroup = renderer.g().attr({\r\n            \"class\": \"dxc-strips-labels-group\"\r\n        }).linkOn(root, \"strips-labels\");\r\n        that._constantLinesGroup.under = createConstantLinesGroup();\r\n        that._seriesGroup = renderer.g().attr({\r\n            \"class\": \"dxc-series-group\"\r\n        }).linkOn(root, \"series\");\r\n        that._constantLinesGroup.above = createConstantLinesGroup();\r\n        that._scaleBreaksGroup = renderer.g().attr({\r\n            \"class\": \"dxc-scale-breaks\"\r\n        }).linkOn(root, \"scale-breaks\");\r\n        that._labelsGroup = renderer.g().attr({\r\n            \"class\": \"dxc-labels-group\"\r\n        }).linkOn(root, \"labels\");\r\n        that._crosshairCursorGroup = renderer.g().attr({\r\n            \"class\": \"dxc-crosshair-cursor\"\r\n        }).linkOn(root, \"crosshair\");\r\n        that._legendGroup = renderer.g().attr({\r\n            \"class\": \"dxc-legend\",\r\n            \"clip-path\": that._getCanvasClipRectID()\r\n        }).linkOn(root, \"legend\").linkAppend(root).enableLinks();\r\n        that._scrollBarGroup = renderer.g().attr({\r\n            \"class\": \"dxc-scroll-bar\"\r\n        }).linkOn(root, \"scroll-bar\")\r\n    },\r\n    _disposeObjectsInArray: function(propName, fieldNames) {\r\n        (0, _iterator.each)(this[propName] || [], function(_, item) {\r\n            if (fieldNames && item) {\r\n                (0, _iterator.each)(fieldNames, function(_, field) {\r\n                    item[field] && item[field].dispose()\r\n                })\r\n            } else {\r\n                item && item.dispose()\r\n            }\r\n        });\r\n        this[propName] = null\r\n    },\r\n    _disposeCore: function() {\r\n        var that = this;\r\n        var disposeObject = function(propName) {\r\n            if (that[propName]) {\r\n                that[propName].dispose();\r\n                that[propName] = null\r\n            }\r\n        };\r\n        var unlinkGroup = function(name) {\r\n            that[name].linkOff()\r\n        };\r\n        var disposeObjectsInArray = this._disposeObjectsInArray;\r\n        that._renderer.stopAllAnimations();\r\n        disposeObjectsInArray.call(that, \"series\");\r\n        disposeObject(\"_tracker\");\r\n        disposeObject(\"_crosshair\");\r\n        that.layoutManager = that._userOptions = that._canvas = that._groupsData = null;\r\n        unlinkGroup(\"_stripsGroup\");\r\n        unlinkGroup(\"_gridGroup\");\r\n        unlinkGroup(\"_axesGroup\");\r\n        unlinkGroup(\"_constantLinesGroup\");\r\n        unlinkGroup(\"_labelAxesGroup\");\r\n        unlinkGroup(\"_panesBorderGroup\");\r\n        unlinkGroup(\"_seriesGroup\");\r\n        unlinkGroup(\"_labelsGroup\");\r\n        unlinkGroup(\"_crosshairCursorGroup\");\r\n        unlinkGroup(\"_legendGroup\");\r\n        unlinkGroup(\"_scrollBarGroup\");\r\n        unlinkGroup(\"_scaleBreaksGroup\");\r\n        disposeObject(\"_canvasClipRect\");\r\n        disposeObject(\"_panesBackgroundGroup\");\r\n        disposeObject(\"_backgroundRect\");\r\n        disposeObject(\"_stripsGroup\");\r\n        disposeObject(\"_gridGroup\");\r\n        disposeObject(\"_axesGroup\");\r\n        disposeObject(\"_constantLinesGroup\");\r\n        disposeObject(\"_labelAxesGroup\");\r\n        disposeObject(\"_panesBorderGroup\");\r\n        disposeObject(\"_seriesGroup\");\r\n        disposeObject(\"_labelsGroup\");\r\n        disposeObject(\"_crosshairCursorGroup\");\r\n        disposeObject(\"_legendGroup\");\r\n        disposeObject(\"_scrollBarGroup\");\r\n        disposeObject(\"_scaleBreaksGroup\")\r\n    },\r\n    _getAnimationOptions: function() {\r\n        return this._themeManager.getOptions(\"animation\")\r\n    },\r\n    _getDefaultSize: function() {\r\n        return {\r\n            width: 400,\r\n            height: 400\r\n        }\r\n    },\r\n    _getOption: function(name) {\r\n        return this._themeManager.getOptions(name)\r\n    },\r\n    _applySize: function(rect) {\r\n        this._rect = rect.slice();\r\n        if (!this._changes.has(\"FULL_RENDER\")) {\r\n            this._processRefreshData(RESIZE_REFRESH_ACTION)\r\n        }\r\n    },\r\n    _resize: function() {\r\n        this._doRender(this.__renderOptions || {\r\n            animate: false,\r\n            isResize: true\r\n        })\r\n    },\r\n    _trackerType: \"ChartTracker\",\r\n    _createTracker: function() {\r\n        var that = this;\r\n        that._tracker = new trackerModule[that._trackerType]({\r\n            seriesGroup: that._seriesGroup,\r\n            renderer: that._renderer,\r\n            tooltip: that._tooltip,\r\n            legend: that._legend,\r\n            eventTrigger: that._eventTrigger\r\n        })\r\n    },\r\n    _getTrackerSettings: function() {\r\n        return (0, _extend.extend)({\r\n            chart: this\r\n        }, this._getSelectionModes())\r\n    },\r\n    _getSelectionModes: function() {\r\n        var themeManager = this._themeManager;\r\n        return {\r\n            seriesSelectionMode: themeManager.getOptions(\"seriesSelectionMode\"),\r\n            pointSelectionMode: themeManager.getOptions(\"pointSelectionMode\")\r\n        }\r\n    },\r\n    _updateTracker: function(trackerCanvases) {\r\n        var that = this;\r\n        that._tracker.update(that._getTrackerSettings());\r\n        that._tracker.setCanvases({\r\n            left: 0,\r\n            right: that._canvas.width,\r\n            top: 0,\r\n            bottom: that._canvas.height\r\n        }, trackerCanvases)\r\n    },\r\n    _createCanvasFromRect: function(rect) {\r\n        var currentCanvas = this._canvas;\r\n        return (0, _utils.setCanvasValues)({\r\n            left: rect[0],\r\n            top: rect[1],\r\n            right: currentCanvas.width - rect[2],\r\n            bottom: currentCanvas.height - rect[3],\r\n            width: currentCanvas.width,\r\n            height: currentCanvas.height\r\n        })\r\n    },\r\n    _doRender: function(_options) {\r\n        var that = this;\r\n        if (0 === that._canvas.width && 0 === that._canvas.height) {\r\n            return\r\n        }\r\n        that._resetIsReady();\r\n        var drawOptions = that._prepareDrawOptions(_options);\r\n        var recreateCanvas = drawOptions.recreateCanvas;\r\n        that._preserveOriginalCanvas();\r\n        if (recreateCanvas) {\r\n            that.__currentCanvas = that._canvas\r\n        } else {\r\n            that._canvas = that.__currentCanvas\r\n        }\r\n        recreateCanvas && that._updateCanvasClipRect(that._canvas);\r\n        this._canvas = this._createCanvasFromRect(this._rect);\r\n        that._renderer.stopAllAnimations(true);\r\n        that._cleanGroups();\r\n        var startTime = new Date;\r\n        that._renderElements(drawOptions);\r\n        that._lastRenderingTime = new Date - startTime\r\n    },\r\n    _preserveOriginalCanvas: function() {\r\n        this.__originalCanvas = this._canvas;\r\n        this._canvas = (0, _extend.extend)({}, this._canvas)\r\n    },\r\n    _layoutAxes: _common.noop,\r\n    _renderElements: function(drawOptions) {\r\n        var that = this;\r\n        var preparedOptions = that._prepareToRender(drawOptions);\r\n        var isRotated = that._isRotated();\r\n        var isLegendInside = that._isLegendInside();\r\n        var trackerCanvases = [];\r\n        (0, _extend.extend)({}, that._canvas);\r\n        var argBusinessRange;\r\n        var zoomMinArg;\r\n        var zoomMaxArg;\r\n        that._renderer.lock();\r\n        if (drawOptions.drawLegend && that._legend) {\r\n            that._legendGroup.linkAppend()\r\n        }\r\n        that.layoutManager.setOptions(that._layoutManagerOptions());\r\n        var layoutTargets = that._getLayoutTargets();\r\n        this._layoutAxes(function(needSpace) {\r\n            var axisDrawOptions = needSpace ? (0, _extend.extend)({}, drawOptions, {\r\n                animate: false\r\n            }) : drawOptions;\r\n            var canvas = that._renderAxes(axisDrawOptions, preparedOptions);\r\n            that._shrinkAxes(needSpace, canvas)\r\n        });\r\n        that._applyClipRects(preparedOptions);\r\n        that._appendSeriesGroups();\r\n        that._createCrosshairCursor();\r\n        layoutTargets.forEach(function(_ref) {\r\n            var canvas = _ref.canvas;\r\n            trackerCanvases.push({\r\n                left: canvas.left,\r\n                right: canvas.width - canvas.right,\r\n                top: canvas.top,\r\n                bottom: canvas.height - canvas.bottom\r\n            })\r\n        });\r\n        if (that._scrollBar) {\r\n            argBusinessRange = that._argumentAxes[0].getTranslator().getBusinessRange();\r\n            if (\"discrete\" === argBusinessRange.axisType && argBusinessRange.categories && argBusinessRange.categories.length <= 1 || \"discrete\" !== argBusinessRange.axisType && argBusinessRange.min === argBusinessRange.max) {\r\n                zoomMinArg = zoomMaxArg = void 0\r\n            } else {\r\n                zoomMinArg = argBusinessRange.minVisible;\r\n                zoomMaxArg = argBusinessRange.maxVisible\r\n            }\r\n            that._scrollBar.init(argBusinessRange, !that._argumentAxes[0].getOptions().valueMarginsEnabled).setPosition(zoomMinArg, zoomMaxArg)\r\n        }\r\n        that._updateTracker(trackerCanvases);\r\n        that._updateLegendPosition(drawOptions, isLegendInside);\r\n        that._applyPointMarkersAutoHiding();\r\n        that._renderSeries(drawOptions, isRotated, isLegendInside);\r\n        that._renderer.unlock()\r\n    },\r\n    _updateLegendPosition: _common.noop,\r\n    _createCrosshairCursor: _common.noop,\r\n    _appendSeriesGroups: function() {\r\n        this._seriesGroup.linkAppend();\r\n        this._labelsGroup.linkAppend();\r\n        this._appendAdditionalSeriesGroups()\r\n    },\r\n    _renderSeries: function(drawOptions, isRotated, isLegendInside) {\r\n        this._calculateSeriesLayout(drawOptions, isRotated);\r\n        this._renderSeriesElements(drawOptions, isLegendInside)\r\n    },\r\n    _calculateSeriesLayout: function(drawOptions, isRotated) {\r\n        drawOptions.hideLayoutLabels = this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), isRotated) && !this._themeManager.getOptions(\"adaptiveLayout\").keepLabels;\r\n        this._updateSeriesDimensions(drawOptions)\r\n    },\r\n    _getArgFilter: function() {\r\n        return function() {\r\n            return true\r\n        }\r\n    },\r\n    _getValFilter: function(series) {\r\n        return function() {\r\n            return true\r\n        }\r\n    },\r\n    _getPointsToAnimation: function(series) {\r\n        var _this = this;\r\n        var argViewPortFilter = this._getArgFilter();\r\n        return series.map(function(s) {\r\n            var valViewPortFilter = _this._getValFilter(s);\r\n            return s.getPoints().filter(function(p) {\r\n                return p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true)))\r\n            }).length\r\n        })\r\n    },\r\n    _renderSeriesElements: function(drawOptions, isLegendInside) {\r\n        var that = this;\r\n        var i;\r\n        var series = that.series;\r\n        var singleSeries;\r\n        var seriesLength = series.length;\r\n        var resolveLabelOverlapping = that._themeManager.getOptions(\"resolveLabelOverlapping\");\r\n        var pointsToAnimation = that._getPointsToAnimation(series);\r\n        for (i = 0; i < seriesLength; i++) {\r\n            singleSeries = series[i];\r\n            that._applyExtraSettings(singleSeries, drawOptions);\r\n            singleSeries.draw(drawOptions.animate && pointsToAnimation[i] <= drawOptions.animationPointsLimit && that._renderer.animationEnabled(), drawOptions.hideLayoutLabels, that._getLegendCallBack(singleSeries))\r\n        }\r\n        if (\"none\" === resolveLabelOverlapping) {\r\n            that._adjustSeriesLabels(false)\r\n        } else {\r\n            that._locateLabels(resolveLabelOverlapping)\r\n        }\r\n        that._renderTrackers(isLegendInside);\r\n        that._tracker.repairTooltip();\r\n        that._renderExtraElements();\r\n        that._clearCanvas();\r\n        that._drawn();\r\n        that._renderCompleteHandler()\r\n    },\r\n    _locateLabels: function(resolveLabelOverlapping) {\r\n        this._resolveLabelOverlapping(resolveLabelOverlapping)\r\n    },\r\n    _renderExtraElements: function() {},\r\n    _clearCanvas: function() {\r\n        this._canvas = this.__originalCanvas\r\n    },\r\n    _resolveLabelOverlapping: function(resolveLabelOverlapping) {\r\n        var func;\r\n        switch (resolveLabelOverlapping) {\r\n            case \"stack\":\r\n                func = this._resolveLabelOverlappingStack;\r\n                break;\r\n            case \"hide\":\r\n                func = this._resolveLabelOverlappingHide;\r\n                break;\r\n            case \"shift\":\r\n                func = this._resolveLabelOverlappingShift\r\n        }\r\n        return (0, _type.isFunction)(func) && func.call(this)\r\n    },\r\n    _getVisibleSeries: function() {\r\n        return (0, _common.grep)(this.getAllSeries(), function(series) {\r\n            return series.isVisible()\r\n        })\r\n    },\r\n    _resolveLabelOverlappingHide: function() {\r\n        var labels = [];\r\n        var currentLabel;\r\n        var nextLabel;\r\n        var currentLabelRect;\r\n        var nextLabelRect;\r\n        var i;\r\n        var j;\r\n        var points;\r\n        var series = this._getVisibleSeries();\r\n        for (i = 0; i < series.length; i++) {\r\n            points = series[i].getVisiblePoints();\r\n            for (j = 0; j < points.length; j++) {\r\n                labels.push.apply(labels, points[j].getLabels())\r\n            }\r\n        }\r\n        for (i = 0; i < labels.length; i++) {\r\n            currentLabel = labels[i];\r\n            if (!currentLabel.isVisible()) {\r\n                continue\r\n            }\r\n            currentLabelRect = currentLabel.getBoundingRect();\r\n            for (j = i + 1; j < labels.length; j++) {\r\n                nextLabel = labels[j];\r\n                nextLabelRect = nextLabel.getBoundingRect();\r\n                if (checkOverlapping(currentLabelRect, nextLabelRect)) {\r\n                    nextLabel.draw(false)\r\n                }\r\n            }\r\n        }\r\n    },\r\n    _cleanGroups: function() {\r\n        var that = this;\r\n        that._stripsGroup.linkRemove().clear();\r\n        that._gridGroup.linkRemove().clear();\r\n        that._axesGroup.linkRemove().clear();\r\n        that._constantLinesGroup.above.clear();\r\n        that._labelAxesGroup.linkRemove().clear();\r\n        that._labelsGroup.linkRemove().clear();\r\n        that._crosshairCursorGroup.linkRemove().clear();\r\n        that._scaleBreaksGroup.linkRemove().clear()\r\n    },\r\n    _allowLegendInsidePosition: function() {\r\n        return false\r\n    },\r\n    _createLegend: function() {\r\n        var that = this;\r\n        var legendSettings = getLegendSettings(that._legendDataField);\r\n        that._legend = new _legend.Legend({\r\n            renderer: that._renderer,\r\n            widget: that,\r\n            group: that._legendGroup,\r\n            backgroundClass: \"dxc-border\",\r\n            itemGroupClass: \"dxc-item\",\r\n            titleGroupClass: \"dxc-title\",\r\n            textField: legendSettings.textField,\r\n            getFormatObject: legendSettings.getFormatObject,\r\n            allowInsidePosition: that._allowLegendInsidePosition()\r\n        });\r\n        that._updateLegend();\r\n        that._layout.add(that._legend)\r\n    },\r\n    _updateLegend: function() {\r\n        var that = this;\r\n        var themeManager = that._themeManager;\r\n        var legendOptions = themeManager.getOptions(\"legend\");\r\n        var legendData = that._getLegendData();\r\n        legendOptions.containerBackgroundColor = themeManager.getOptions(\"containerBackgroundColor\");\r\n        legendOptions._incidentOccurred = that._incidentOccurred;\r\n        that._legend.update(legendData, legendOptions, themeManager.theme(\"legend\").title);\r\n        this._change([\"LAYOUT\"])\r\n    },\r\n    _prepareDrawOptions: function(drawOptions) {\r\n        var animationOptions = this._getAnimationOptions();\r\n        var options = (0, _extend.extend)({}, {\r\n            force: false,\r\n            adjustAxes: true,\r\n            drawLegend: true,\r\n            drawTitle: true,\r\n            animate: animationOptions.enabled,\r\n            animationPointsLimit: animationOptions.maxPointCountSupported\r\n        }, drawOptions, this.__renderOptions);\r\n        if (!(0, _type.isDefined)(options.recreateCanvas)) {\r\n            options.recreateCanvas = options.adjustAxes && options.drawLegend && options.drawTitle\r\n        }\r\n        return options\r\n    },\r\n    _processRefreshData: function(newRefreshAction) {\r\n        var currentRefreshActionPosition = (0, _array.inArray)(this._currentRefreshData, ACTIONS_BY_PRIORITY);\r\n        var newRefreshActionPosition = (0, _array.inArray)(newRefreshAction, ACTIONS_BY_PRIORITY);\r\n        if (!this._currentRefreshData || currentRefreshActionPosition >= 0 && newRefreshActionPosition < currentRefreshActionPosition) {\r\n            this._currentRefreshData = newRefreshAction\r\n        }\r\n        this._requestChange([\"REFRESH\"])\r\n    },\r\n    _getLegendData: function() {\r\n        return (0, _utils.map)(this._getLegendTargets(), function(item) {\r\n            var legendData = item.legendData;\r\n            var style = item.getLegendStyles;\r\n            var opacity = style.normal.opacity;\r\n            if (!item.visible) {\r\n                if (!(0, _type.isDefined)(opacity) || opacity > DEFAULT_OPACITY) {\r\n                    opacity = DEFAULT_OPACITY\r\n                }\r\n                legendData.textOpacity = DEFAULT_OPACITY\r\n            }\r\n            var opacityStyle = {\r\n                opacity: opacity\r\n            };\r\n            legendData.states = {\r\n                hover: (0, _extend.extend)({}, style.hover, opacityStyle),\r\n                selection: (0, _extend.extend)({}, style.selection, opacityStyle),\r\n                normal: (0, _extend.extend)({}, style.normal, opacityStyle)\r\n            };\r\n            return legendData\r\n        })\r\n    },\r\n    _getLegendOptions: function(item) {\r\n        return {\r\n            legendData: {\r\n                text: item[this._legendItemTextField],\r\n                id: item.index,\r\n                visible: true\r\n            },\r\n            getLegendStyles: item.getLegendStyles(),\r\n            visible: item.isVisible()\r\n        }\r\n    },\r\n    _disposeSeries: function(seriesIndex) {\r\n        var _that$series;\r\n        var that = this;\r\n        if (that.series) {\r\n            if ((0, _type.isDefined)(seriesIndex)) {\r\n                that.series[seriesIndex].dispose();\r\n                that.series.splice(seriesIndex, 1)\r\n            } else {\r\n                (0, _iterator.each)(that.series, function(_, s) {\r\n                    return s.dispose()\r\n                });\r\n                that.series.length = 0\r\n            }\r\n        }\r\n        if (!(null !== (_that$series = that.series) && void 0 !== _that$series && _that$series.length)) {\r\n            that.series = []\r\n        }\r\n    },\r\n    _disposeSeriesFamilies: function() {\r\n        var that = this;\r\n        (0, _iterator.each)(that.seriesFamilies || [], function(_, family) {\r\n            family.dispose()\r\n        });\r\n        that.seriesFamilies = null;\r\n        that._needHandleRenderComplete = true\r\n    },\r\n    _optionChanged: function(arg) {\r\n        this._themeManager.resetOptions(arg.name);\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _applyChanges: function() {\r\n        var that = this;\r\n        that._themeManager.update(that._options.silent());\r\n        that.callBase.apply(that, arguments)\r\n    },\r\n    _optionChangesMap: {\r\n        animation: \"ANIMATION\",\r\n        dataSource: \"DATA_SOURCE\",\r\n        palette: \"PALETTE\",\r\n        paletteExtensionMode: \"PALETTE\",\r\n        legend: \"FORCE_DATA_INIT\",\r\n        seriesTemplate: \"FORCE_DATA_INIT\",\r\n        \"export\": \"FORCE_RENDER\",\r\n        valueAxis: \"AXES_AND_PANES\",\r\n        argumentAxis: \"AXES_AND_PANES\",\r\n        commonAxisSettings: \"AXES_AND_PANES\",\r\n        panes: \"AXES_AND_PANES\",\r\n        commonPaneSettings: \"AXES_AND_PANES\",\r\n        defaultPane: \"AXES_AND_PANES\",\r\n        containerBackgroundColor: \"AXES_AND_PANES\",\r\n        rotated: \"ROTATED\",\r\n        autoHidePointMarkers: \"REFRESH_SERIES_REINIT\",\r\n        customizePoint: \"REFRESH_SERIES_REINIT\",\r\n        customizeLabel: \"REFRESH_SERIES_REINIT\",\r\n        scrollBar: \"SCROLL_BAR\"\r\n    },\r\n    _optionChangesOrder: [\"ROTATED\", \"PALETTE\", \"REFRESH_SERIES_REINIT\", \"AXES_AND_PANES\", \"INIT\", \"REINIT\", \"DATA_SOURCE\", \"REFRESH_SERIES_DATA_INIT\", \"DATA_INIT\", \"FORCE_DATA_INIT\", \"REFRESH_AXES\", \"CORRECT_AXIS\"],\r\n    _customChangesOrder: [\"ANIMATION\", \"REFRESH_SERIES_FAMILIES\", \"FORCE_FIRST_DRAWING\", \"FORCE_DRAWING\", \"FORCE_RENDER\", \"VISUAL_RANGE\", \"SCROLL_BAR\", \"REINIT\", \"REFRESH\", \"FULL_RENDER\"],\r\n    _change_ANIMATION: function() {\r\n        this._renderer.updateAnimationOptions(this._getAnimationOptions())\r\n    },\r\n    _change_DATA_SOURCE: function() {\r\n        this._needHandleRenderComplete = true;\r\n        this._updateDataSource()\r\n    },\r\n    _change_PALETTE: function() {\r\n        this._themeManager.updatePalette();\r\n        this._refreshSeries(\"DATA_INIT\")\r\n    },\r\n    _change_REFRESH_SERIES_DATA_INIT: function() {\r\n        this._refreshSeries(\"DATA_INIT\")\r\n    },\r\n    _change_DATA_INIT: function() {\r\n        if ((!this.series || this.needToPopulateSeries) && !this._changes.has(\"FORCE_DATA_INIT\")) {\r\n            this._dataInit()\r\n        }\r\n    },\r\n    _change_FORCE_DATA_INIT: function() {\r\n        this._dataInit()\r\n    },\r\n    _change_REFRESH_SERIES_FAMILIES: function() {\r\n        this._processSeriesFamilies();\r\n        this._populateBusinessRange();\r\n        this._processRefreshData(FORCE_RENDER_REFRESH_ACTION)\r\n    },\r\n    _change_FORCE_RENDER: function() {\r\n        this._processRefreshData(FORCE_RENDER_REFRESH_ACTION)\r\n    },\r\n    _change_AXES_AND_PANES: function() {\r\n        this._refreshSeries(\"INIT\")\r\n    },\r\n    _change_ROTATED: function() {\r\n        this._createScrollBar();\r\n        this._refreshSeries(\"INIT\")\r\n    },\r\n    _change_REFRESH_SERIES_REINIT: function() {\r\n        this._refreshSeries(\"INIT\")\r\n    },\r\n    _change_REFRESH_AXES: function() {\r\n        var that = this;\r\n        (0, _utils.setCanvasValues)(that._canvas);\r\n        that._reinitAxes();\r\n        that._requestChange([\"CORRECT_AXIS\", \"FULL_RENDER\"])\r\n    },\r\n    _change_SCROLL_BAR: function() {\r\n        this._createScrollBar();\r\n        this._processRefreshData(FORCE_RENDER_REFRESH_ACTION)\r\n    },\r\n    _change_REINIT: function() {\r\n        this._processRefreshData(REINIT_REFRESH_ACTION)\r\n    },\r\n    _change_FORCE_DRAWING: function() {\r\n        this._resetComponentsAnimation()\r\n    },\r\n    _change_FORCE_FIRST_DRAWING: function() {\r\n        this._resetComponentsAnimation(true)\r\n    },\r\n    _resetComponentsAnimation: function(isFirstDrawing) {\r\n        this.series.forEach(function(s) {\r\n            s.resetApplyingAnimation(isFirstDrawing)\r\n        });\r\n        this._resetAxesAnimation(isFirstDrawing)\r\n    },\r\n    _resetAxesAnimation: _common.noop,\r\n    _refreshSeries: function(actionName) {\r\n        this.needToPopulateSeries = true;\r\n        this._requestChange([actionName])\r\n    },\r\n    _change_CORRECT_AXIS: function() {\r\n        this._correctAxes()\r\n    },\r\n    _doRefresh: function() {\r\n        var methodName = this._currentRefreshData;\r\n        if (methodName) {\r\n            this._currentRefreshData = null;\r\n            this._renderer.stopAllAnimations(true);\r\n            this[methodName]()\r\n        }\r\n    },\r\n    _updateCanvasClipRect: function(canvas) {\r\n        var that = this;\r\n        var width = Math.max(canvas.width - canvas.left - canvas.right, 0);\r\n        var height = Math.max(canvas.height - canvas.top - canvas.bottom, 0);\r\n        that._canvasClipRect.attr({\r\n            x: canvas.left,\r\n            y: canvas.top,\r\n            width: width,\r\n            height: height\r\n        });\r\n        that._backgroundRect.attr({\r\n            x: canvas.left,\r\n            y: canvas.top,\r\n            width: width,\r\n            height: height\r\n        })\r\n    },\r\n    _getCanvasClipRectID: function() {\r\n        return this._canvasClipRect.id\r\n    },\r\n    _dataSourceChangedHandler: function() {\r\n        if (this._changes.has(\"INIT\")) {\r\n            this._requestChange([\"DATA_INIT\"])\r\n        } else {\r\n            this._requestChange([\"FORCE_DATA_INIT\"])\r\n        }\r\n    },\r\n    _dataInit: function() {\r\n        this._dataSpecificInit(true)\r\n    },\r\n    _processSingleSeries: function(singleSeries) {\r\n        singleSeries.createPoints(false)\r\n    },\r\n    _handleSeriesDataUpdated: function() {\r\n        var _this2 = this;\r\n        if (this._getVisibleSeries().some(function(s) {\r\n                return s.useAggregation()\r\n            })) {\r\n            this._populateMarginOptions()\r\n        }\r\n        this.series.forEach(function(s) {\r\n            return _this2._processSingleSeries(s)\r\n        }, this)\r\n    },\r\n    _dataSpecificInit: function(needRedraw) {\r\n        var that = this;\r\n        if (!that.series || that.needToPopulateSeries) {\r\n            that.series = that._populateSeries()\r\n        }\r\n        that._repopulateSeries();\r\n        that._seriesPopulatedHandlerCore();\r\n        that._populateBusinessRange();\r\n        that._tracker.updateSeries(that.series, this._changes.has(\"INIT\"));\r\n        that._updateLegend();\r\n        if (needRedraw) {\r\n            this._requestChange([\"FULL_RENDER\"])\r\n        }\r\n    },\r\n    _forceRender: function() {\r\n        this._doRender({\r\n            force: true\r\n        })\r\n    },\r\n    _repopulateSeries: function() {\r\n        var that = this;\r\n        var themeManager = that._themeManager;\r\n        var data = that._dataSourceItems();\r\n        var dataValidatorOptions = themeManager.getOptions(\"dataPrepareSettings\");\r\n        var seriesTemplate = themeManager.getOptions(\"seriesTemplate\");\r\n        if (seriesTemplate) {\r\n            that._populateSeries(data)\r\n        }\r\n        that._groupSeries();\r\n        var parsedData = (0, _data_validator.validateData)(data, that._groupsData, that._incidentOccurred, dataValidatorOptions);\r\n        themeManager.resetPalette();\r\n        that.series.forEach(function(singleSeries) {\r\n            singleSeries.updateData(parsedData[singleSeries.getArgumentField()])\r\n        });\r\n        that._handleSeriesDataUpdated()\r\n    },\r\n    _renderCompleteHandler: function() {\r\n        var that = this;\r\n        var allSeriesInited = true;\r\n        if (that._needHandleRenderComplete) {\r\n            (0, _iterator.each)(that.series, function(_, s) {\r\n                allSeriesInited = allSeriesInited && s.canRenderCompleteHandle()\r\n            });\r\n            if (allSeriesInited) {\r\n                that._needHandleRenderComplete = false;\r\n                that._eventTrigger(\"done\", {\r\n                    target: that\r\n                })\r\n            }\r\n        }\r\n    },\r\n    _dataIsReady: function() {\r\n        return (0, _type.isDefined)(this.option(\"dataSource\")) && this._dataIsLoaded()\r\n    },\r\n    _populateSeriesOptions: function(data) {\r\n        var that = this;\r\n        var themeManager = that._themeManager;\r\n        var seriesTemplate = themeManager.getOptions(\"seriesTemplate\");\r\n        var seriesOptions = seriesTemplate ? (0, _utils.processSeriesTemplate)(seriesTemplate, data || []) : that.option(\"series\");\r\n        var allSeriesOptions = _isArray(seriesOptions) ? seriesOptions : seriesOptions ? [seriesOptions] : [];\r\n        var extraOptions = that._getExtraOptions();\r\n        var particularSeriesOptions;\r\n        var seriesTheme;\r\n        var seriesThemes = [];\r\n        var seriesVisibilityChanged = function(target) {\r\n            that._specialProcessSeries();\r\n            that._populateBusinessRange(target && target.getValueAxis(), true);\r\n            that._renderer.stopAllAnimations(true);\r\n            that._updateLegend();\r\n            that._requestChange([\"FULL_RENDER\"])\r\n        };\r\n        for (var i = 0; i < allSeriesOptions.length; i++) {\r\n            particularSeriesOptions = (0, _extend.extend)(true, {}, allSeriesOptions[i], extraOptions);\r\n            if (!(0, _type.isDefined)(particularSeriesOptions.name) || \"\" === particularSeriesOptions.name) {\r\n                particularSeriesOptions.name = \"Series \" + (i + 1).toString()\r\n            }\r\n            particularSeriesOptions.rotated = that._isRotated();\r\n            particularSeriesOptions.customizePoint = themeManager.getOptions(\"customizePoint\");\r\n            particularSeriesOptions.customizeLabel = themeManager.getOptions(\"customizeLabel\");\r\n            particularSeriesOptions.visibilityChanged = seriesVisibilityChanged;\r\n            particularSeriesOptions.incidentOccurred = that._incidentOccurred;\r\n            seriesTheme = themeManager.getOptions(\"series\", particularSeriesOptions, allSeriesOptions.length);\r\n            if (that._checkPaneName(seriesTheme)) {\r\n                seriesThemes.push(seriesTheme)\r\n            }\r\n        }\r\n        return seriesThemes\r\n    },\r\n    _populateSeries: function(data) {\r\n        var that = this;\r\n        var seriesBasis = [];\r\n        var incidentOccurred = that._incidentOccurred;\r\n        var seriesThemes = that._populateSeriesOptions(data);\r\n        var particularSeries;\r\n        var disposeSeriesFamilies = false;\r\n        that.needToPopulateSeries = false;\r\n        (0, _iterator.each)(seriesThemes, function(_, theme) {\r\n            var curSeries = that.series && that.series.filter(function(s) {\r\n                return s.name === theme.name && seriesBasis.map(function(sb) {\r\n                    return sb.series\r\n                }).indexOf(s) === -1\r\n            })[0];\r\n            if (curSeries && curSeries.type === theme.type) {\r\n                seriesBasis.push({\r\n                    series: curSeries,\r\n                    options: theme\r\n                })\r\n            } else {\r\n                seriesBasis.push({\r\n                    options: theme\r\n                });\r\n                disposeSeriesFamilies = true\r\n            }\r\n        });\r\n        that._tracker.clearHover();\r\n        (0, _iterator.reverseEach)(that.series, function(index, series) {\r\n            if (!seriesBasis.some(function(s) {\r\n                    return series === s.series\r\n                })) {\r\n                that._disposeSeries(index);\r\n                disposeSeriesFamilies = true\r\n            }\r\n        });\r\n        !disposeSeriesFamilies && (disposeSeriesFamilies = seriesBasis.some(function(sb) {\r\n            return sb.series.name !== seriesThemes[sb.series.index].name\r\n        }));\r\n        that.series = [];\r\n        disposeSeriesFamilies && that._disposeSeriesFamilies();\r\n        that._themeManager.resetPalette();\r\n        var eventPipe = function(data) {\r\n            that.series.forEach(function(currentSeries) {\r\n                currentSeries.notify(data)\r\n            })\r\n        };\r\n        (0, _iterator.each)(seriesBasis, function(_, basis) {\r\n            var seriesTheme = basis.options;\r\n            var renderSettings = {\r\n                commonSeriesModes: that._getSelectionModes(),\r\n                argumentAxis: that.getArgumentAxis(),\r\n                valueAxis: that._getValueAxis(seriesTheme.pane, seriesTheme.axis)\r\n            };\r\n            if (basis.series) {\r\n                particularSeries = basis.series;\r\n                particularSeries.updateOptions(seriesTheme, renderSettings)\r\n            } else {\r\n                particularSeries = new _base_series.Series((0, _extend.extend)({\r\n                    renderer: that._renderer,\r\n                    seriesGroup: that._seriesGroup,\r\n                    labelsGroup: that._labelsGroup,\r\n                    eventTrigger: that._eventTrigger,\r\n                    eventPipe: eventPipe,\r\n                    incidentOccurred: incidentOccurred\r\n                }, renderSettings), seriesTheme)\r\n            }\r\n            if (!particularSeries.isUpdated) {\r\n                incidentOccurred(\"E2101\", [seriesTheme.type])\r\n            } else {\r\n                particularSeries.index = that.series.length;\r\n                that.series.push(particularSeries)\r\n            }\r\n        });\r\n        return that.series\r\n    },\r\n    getStackedPoints: function(point) {\r\n        var stackName = point.series.getStackName();\r\n        return this._getVisibleSeries().reduce(function(stackPoints, series) {\r\n            if (!(0, _type.isDefined)(series.getStackName()) || !(0, _type.isDefined)(stackName) || stackName === series.getStackName()) {\r\n                stackPoints = stackPoints.concat(series.getPointsByArg(point.argument))\r\n            }\r\n            return stackPoints\r\n        }, [])\r\n    },\r\n    getAllSeries: function() {\r\n        return (this.series || []).slice()\r\n    },\r\n    getSeriesByName: function(name) {\r\n        var found = null;\r\n        (0, _iterator.each)(this.series, function(i, singleSeries) {\r\n            if (singleSeries.name === name) {\r\n                found = singleSeries;\r\n                return false\r\n            }\r\n        });\r\n        return found\r\n    },\r\n    getSeriesByPos: function(pos) {\r\n        return (this.series || [])[pos]\r\n    },\r\n    clearSelection: function() {\r\n        this._tracker.clearSelection()\r\n    },\r\n    hideTooltip: function() {\r\n        this._tracker._hideTooltip()\r\n    },\r\n    clearHover: function() {\r\n        this._tracker.clearHover()\r\n    },\r\n    render: function(renderOptions) {\r\n        var that = this;\r\n        that.__renderOptions = renderOptions;\r\n        that.__forceRender = renderOptions && renderOptions.force;\r\n        that.callBase.apply(that, arguments);\r\n        that.__renderOptions = that.__forceRender = null;\r\n        return that\r\n    },\r\n    refresh: function() {\r\n        this._disposeSeries();\r\n        this._disposeSeriesFamilies();\r\n        this._requestChange([\"CONTAINER_SIZE\", \"REFRESH_SERIES_REINIT\"])\r\n    },\r\n    _getMinSize: function() {\r\n        var adaptiveLayout = this._layoutManagerOptions();\r\n        return [adaptiveLayout.width, adaptiveLayout.height]\r\n    },\r\n    _change_REFRESH: function() {\r\n        if (!this._changes.has(\"INIT\")) {\r\n            this._doRefresh()\r\n        } else {\r\n            this._currentRefreshData = null\r\n        }\r\n    },\r\n    _change_FULL_RENDER: function() {\r\n        this._forceRender()\r\n    },\r\n    _change_INIT: function() {\r\n        this._reinit()\r\n    },\r\n    _stopCurrentHandling: function() {\r\n        this._tracker.stopCurrentHandling()\r\n    }\r\n});\r\nexports.BaseChart = BaseChart;\r\nREFRESH_SERIES_DATA_INIT_ACTION_OPTIONS.forEach(function(name) {\r\n    BaseChart.prototype._optionChangesMap[name] = \"REFRESH_SERIES_DATA_INIT\"\r\n});\r\nFORCE_RENDER_REFRESH_ACTION_OPTIONS.forEach(function(name) {\r\n    BaseChart.prototype._optionChangesMap[name] = \"FORCE_RENDER\"\r\n});\r\nREFRESH_SERIES_FAMILIES_ACTION_OPTIONS.forEach(function(name) {\r\n    BaseChart.prototype._optionChangesMap[name] = \"REFRESH_SERIES_FAMILIES\"\r\n});\r\nBaseChart.addPlugin(_export.plugin);\r\nBaseChart.addPlugin(_title.plugin);\r\nBaseChart.addPlugin(_data_source.plugin);\r\nBaseChart.addPlugin(_tooltip.plugin);\r\nBaseChart.addPlugin(_loading_indicator.plugin);\r\nvar _change_TITLE = BaseChart.prototype._change_TITLE;\r\nBaseChart.prototype._change_TITLE = function() {\r\n    _change_TITLE.apply(this, arguments);\r\n    this._change([\"FORCE_RENDER\"])\r\n};\r\n","/**\r\n * DevExtreme (viz/circular_gauge.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _circular_gauge = _interopRequireDefault(require(\"./gauges/circular_gauge\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _circular_gauge.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/cell.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.DateTableCellBase = DateTableCellBase;\r\nexports.DateTableCellBaseProps = exports.viewFunction = void 0;\r\nvar _cell = require(\"../cell\");\r\nvar _combine_classes = require(\"../../../../../utils/combine_classes\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_cell.CellBase, _extends({}, viewModel.restAttributes, {\r\n        isFirstGroupCell: viewModel.props.isFirstGroupCell,\r\n        isLastGroupCell: viewModel.props.isLastGroupCell,\r\n        contentTemplate: viewModel.props.dataCellTemplate,\r\n        contentTemplateProps: viewModel.dataCellTemplateProps,\r\n        className: viewModel.classes\r\n    }), viewModel.props.children)\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar DateTableCellBaseProps = _objectSpread({}, _cell.CellBaseProps);\r\nexports.DateTableCellBaseProps = DateTableCellBaseProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction DateTableCellBase(props) {\r\n    var __classes = (0, _hooks.useCallback)(function() {\r\n        var allDay = props.allDay,\r\n            className = props.className;\r\n        return (0, _combine_classes.combineClasses)(_defineProperty({\r\n            \"dx-scheduler-cell-sizes-horizontal\": true,\r\n            \"dx-scheduler-cell-sizes-vertical\": !allDay,\r\n            \"dx-scheduler-date-table-cell\": !allDay\r\n        }, className, true))\r\n    }, [props.allDay, props.className]);\r\n    var __dataCellTemplateProps = (0, _hooks.useCallback)(function() {\r\n        var allDay = props.allDay,\r\n            endDate = props.endDate,\r\n            groupIndex = props.groupIndex,\r\n            groups = props.groups,\r\n            index = props.index,\r\n            startDate = props.startDate,\r\n            text = props.text;\r\n        return {\r\n            data: {\r\n                startDate: startDate,\r\n                endDate: endDate,\r\n                groups: groups,\r\n                groupIndex: groups ? groupIndex : void 0,\r\n                text: text || \"\",\r\n                allDay: allDay || void 0\r\n            },\r\n            index: index\r\n        }\r\n    }, [props.allDay, props.endDate, props.groupIndex, props.groups, props.index, props.startDate, props.text]);\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.allDay, props.children, props.className, props.contentTemplate, props.contentTemplateProps, props.dataCellTemplate, props.endDate, props.groupIndex, props.groups, props.index, props.isFirstGroupCell, props.isLastGroupCell, props.startDate, props.text, _objectWithoutProperties(props, [\"allDay\", \"children\", \"className\", \"contentTemplate\", \"contentTemplateProps\", \"dataCellTemplate\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate),\r\n            contentTemplate: getTemplate(props.contentTemplate)\r\n        }),\r\n        classes: __classes(),\r\n        dataCellTemplateProps: __dataCellTemplateProps(),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nDateTableCellBase.defaultProps = _objectSpread({}, DateTableCellBaseProps);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.GroupingHeaderPanelExtender = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiData_gridGrouping = require(\"./ui.data_grid.grouping.expanded\");\r\nvar _uiData_gridGrouping2 = require(\"./ui.data_grid.grouping.collapsed\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.data_source_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _uiGrid_core = require(\"../grid_core/ui.grid_core.accessibility\");\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar DATAGRID_GROUP_PANEL_CLASS = \"dx-datagrid-group-panel\";\r\nvar DATAGRID_GROUP_PANEL_MESSAGE_CLASS = \"dx-group-panel-message\";\r\nvar DATAGRID_GROUP_PANEL_ITEM_CLASS = \"dx-group-panel-item\";\r\nvar DATAGRID_GROUP_PANEL_LABEL_CLASS = \"dx-toolbar-label\";\r\nvar DATAGRID_EXPAND_CLASS = \"dx-datagrid-expand\";\r\nvar DATAGRID_GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar HEADER_FILTER_CLASS_SELECTOR = \".dx-header-filter\";\r\nvar GroupingDataSourceAdapterExtender = function() {\r\n    return {\r\n        init: function() {\r\n            this.callBase.apply(this, arguments);\r\n            this._initGroupingHelper()\r\n        },\r\n        _initGroupingHelper: function(options) {\r\n            var grouping = this._grouping;\r\n            var isAutoExpandAll = this.option(\"grouping.autoExpandAll\");\r\n            var isFocusedRowEnabled = this.option(\"focusedRowEnabled\");\r\n            var remoteOperations = options ? options.remoteOperations : this.remoteOperations();\r\n            var isODataRemoteOperations = remoteOperations.filtering && remoteOperations.sorting && remoteOperations.paging;\r\n            if (isODataRemoteOperations && !remoteOperations.grouping && (isAutoExpandAll || !isFocusedRowEnabled)) {\r\n                if (!grouping || grouping instanceof _uiData_gridGrouping2.GroupingHelper) {\r\n                    this._grouping = new _uiData_gridGrouping.GroupingHelper(this)\r\n                }\r\n            } else {\r\n                if (!grouping || grouping instanceof _uiData_gridGrouping.GroupingHelper) {\r\n                    this._grouping = new _uiData_gridGrouping2.GroupingHelper(this)\r\n                }\r\n            }\r\n        },\r\n        totalItemsCount: function() {\r\n            var that = this;\r\n            var totalCount = that.callBase();\r\n            return totalCount > 0 && that._dataSource.group() && that._dataSource.requireTotalCount() ? totalCount + that._grouping.totalCountCorrection() : totalCount\r\n        },\r\n        itemsCount: function() {\r\n            return this._dataSource.group() ? this._grouping.itemsCount() || 0 : this.callBase.apply(this, arguments)\r\n        },\r\n        allowCollapseAll: function() {\r\n            return this._grouping.allowCollapseAll()\r\n        },\r\n        isGroupItemCountable: function(item) {\r\n            return this._grouping.isGroupItemCountable(item)\r\n        },\r\n        isRowExpanded: function(key) {\r\n            var groupInfo = this._grouping.findGroupInfo(key);\r\n            return groupInfo ? groupInfo.isExpanded : !this._grouping.allowCollapseAll()\r\n        },\r\n        collapseAll: function(groupIndex) {\r\n            return this._collapseExpandAll(groupIndex, false)\r\n        },\r\n        expandAll: function(groupIndex) {\r\n            return this._collapseExpandAll(groupIndex, true)\r\n        },\r\n        _collapseExpandAll: function(groupIndex, isExpand) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            var group = dataSource.group();\r\n            var groups = _uiData_grid.default.normalizeSortingInfo(group || []);\r\n            if (groups.length) {\r\n                for (var i = 0; i < groups.length; i++) {\r\n                    if (void 0 === groupIndex || groupIndex === i) {\r\n                        groups[i].isExpanded = isExpand\r\n                    } else {\r\n                        if (group && group[i]) {\r\n                            groups[i].isExpanded = group[i].isExpanded\r\n                        }\r\n                    }\r\n                }\r\n                dataSource.group(groups);\r\n                that._grouping.foreachGroups(function(groupInfo, parents) {\r\n                    if (void 0 === groupIndex || groupIndex === parents.length - 1) {\r\n                        groupInfo.isExpanded = isExpand\r\n                    }\r\n                }, false, true);\r\n                that.resetPagesCache()\r\n            }\r\n            return true\r\n        },\r\n        refresh: function() {\r\n            this.callBase.apply(this, arguments);\r\n            return this._grouping.refresh.apply(this._grouping, arguments)\r\n        },\r\n        changeRowExpand: function(path) {\r\n            var that = this;\r\n            var dataSource = that._dataSource;\r\n            if (dataSource.group()) {\r\n                dataSource.beginLoading();\r\n                if (that._lastLoadOptions) {\r\n                    that._lastLoadOptions.groupExpand = true\r\n                }\r\n                return that._changeRowExpandCore(path).always(function() {\r\n                    dataSource.endLoading()\r\n                })\r\n            }\r\n        },\r\n        _changeRowExpandCore: function(path) {\r\n            return this._grouping.changeRowExpand(path)\r\n        },\r\n        _hasGroupLevelsExpandState: function(group, isExpanded) {\r\n            if (group && Array.isArray(group)) {\r\n                for (var i = 0; i < group.length; i++) {\r\n                    if (group[i].isExpanded === isExpanded) {\r\n                        return true\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        _customizeRemoteOperations: function(options, operationTypes) {\r\n            var remoteOperations = options.remoteOperations;\r\n            if (options.storeLoadOptions.group) {\r\n                if (remoteOperations.grouping && !options.isCustomLoading) {\r\n                    if (!remoteOperations.groupPaging || this._hasGroupLevelsExpandState(options.storeLoadOptions.group, true)) {\r\n                        remoteOperations.paging = false\r\n                    }\r\n                }\r\n                if (!remoteOperations.grouping && (!remoteOperations.sorting || !remoteOperations.filtering || options.isCustomLoading || this._hasGroupLevelsExpandState(options.storeLoadOptions.group, false))) {\r\n                    remoteOperations.paging = false\r\n                }\r\n            } else {\r\n                if (!options.isCustomLoading && remoteOperations.paging && operationTypes.grouping) {\r\n                    this.resetCache()\r\n                }\r\n            }\r\n            this.callBase.apply(this, arguments)\r\n        },\r\n        _handleDataLoading: function(options) {\r\n            this.callBase(options);\r\n            this._initGroupingHelper(options);\r\n            return this._grouping.handleDataLoading(options)\r\n        },\r\n        _handleDataLoaded: function(options) {\r\n            return this._grouping.handleDataLoaded(options, this.callBase.bind(this))\r\n        },\r\n        _handleDataLoadedCore: function(options) {\r\n            return this._grouping.handleDataLoadedCore(options, this.callBase.bind(this))\r\n        }\r\n    }\r\n}();\r\n_uiData_grid2.default.extend(GroupingDataSourceAdapterExtender);\r\nvar GroupingDataControllerExtender = function() {\r\n    return {\r\n        init: function() {\r\n            var that = this;\r\n            that.callBase();\r\n            that.createAction(\"onRowExpanding\");\r\n            that.createAction(\"onRowExpanded\");\r\n            that.createAction(\"onRowCollapsing\");\r\n            that.createAction(\"onRowCollapsed\")\r\n        },\r\n        _beforeProcessItems: function(items) {\r\n            var groupColumns = this._columnsController.getGroupColumns();\r\n            items = this.callBase(items);\r\n            if (items.length && groupColumns.length) {\r\n                items = this._processGroupItems(items, groupColumns.length)\r\n            }\r\n            return items\r\n        },\r\n        _processItem: function(item, options) {\r\n            if ((0, _type.isDefined)(item.groupIndex) && (0, _type.isString)(item.rowType) && 0 === item.rowType.indexOf(\"group\")) {\r\n                item = this._processGroupItem(item, options);\r\n                options.dataIndex = 0\r\n            } else {\r\n                item = this.callBase.apply(this, arguments)\r\n            }\r\n            return item\r\n        },\r\n        _processGroupItem: function(item) {\r\n            return item\r\n        },\r\n        _processGroupItems: function(items, groupsCount, options) {\r\n            var that = this;\r\n            var groupedColumns = that._columnsController.getGroupColumns();\r\n            var column = groupedColumns[groupedColumns.length - groupsCount];\r\n            if (!options) {\r\n                var scrollingMode = that.option(\"scrolling.mode\");\r\n                options = {\r\n                    collectContinuationItems: \"virtual\" !== scrollingMode && \"infinite\" !== scrollingMode,\r\n                    resultItems: [],\r\n                    path: [],\r\n                    values: []\r\n                }\r\n            }\r\n            var resultItems = options.resultItems;\r\n            if (options.data) {\r\n                if (options.collectContinuationItems || !options.data.isContinuation) {\r\n                    resultItems.push({\r\n                        rowType: \"group\",\r\n                        data: options.data,\r\n                        groupIndex: options.path.length - 1,\r\n                        isExpanded: !!options.data.items,\r\n                        key: options.path.slice(0),\r\n                        values: options.values.slice(0)\r\n                    })\r\n                }\r\n            }\r\n            if (items) {\r\n                if (0 === groupsCount) {\r\n                    resultItems.push.apply(resultItems, items)\r\n                } else {\r\n                    for (var i = 0; i < items.length; i++) {\r\n                        var item = items[i];\r\n                        if (item && \"items\" in item) {\r\n                            options.data = item;\r\n                            options.path.push(item.key);\r\n                            options.values.push(column && column.deserializeValue && !column.calculateDisplayValue ? column.deserializeValue(item.key) : item.key);\r\n                            that._processGroupItems(item.items, groupsCount - 1, options);\r\n                            options.data = void 0;\r\n                            options.path.pop();\r\n                            options.values.pop()\r\n                        } else {\r\n                            resultItems.push(item)\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return resultItems\r\n        },\r\n        publicMethods: function() {\r\n            return this.callBase().concat([\"collapseAll\", \"expandAll\", \"isRowExpanded\", \"expandRow\", \"collapseRow\"])\r\n        },\r\n        collapseAll: function(groupIndex) {\r\n            var dataSource = this._dataSource;\r\n            if (dataSource && dataSource.collapseAll(groupIndex)) {\r\n                dataSource.pageIndex(0);\r\n                dataSource.reload()\r\n            }\r\n        },\r\n        expandAll: function(groupIndex) {\r\n            var dataSource = this._dataSource;\r\n            if (dataSource && dataSource.expandAll(groupIndex)) {\r\n                dataSource.pageIndex(0);\r\n                dataSource.reload()\r\n            }\r\n        },\r\n        changeRowExpand: function(key) {\r\n            var that = this;\r\n            var expanded = that.isRowExpanded(key);\r\n            var args = {\r\n                key: key,\r\n                expanded: expanded\r\n            };\r\n            that.executeAction(expanded ? \"onRowCollapsing\" : \"onRowExpanding\", args);\r\n            if (!args.cancel) {\r\n                return (0, _deferred.when)(that._changeRowExpandCore(key)).done(function() {\r\n                    args.expanded = !expanded;\r\n                    that.executeAction(expanded ? \"onRowCollapsed\" : \"onRowExpanded\", args)\r\n                })\r\n            }\r\n            return (new _deferred.Deferred).resolve()\r\n        },\r\n        _changeRowExpandCore: function(key) {\r\n            var that = this;\r\n            var dataSource = this._dataSource;\r\n            var d = new _deferred.Deferred;\r\n            if (!dataSource) {\r\n                d.resolve()\r\n            } else {\r\n                (0, _deferred.when)(dataSource.changeRowExpand(key)).done(function() {\r\n                    that.load().done(d.resolve).fail(d.reject)\r\n                }).fail(d.reject)\r\n            }\r\n            return d\r\n        },\r\n        isRowExpanded: function(key) {\r\n            var dataSource = this._dataSource;\r\n            return dataSource && dataSource.isRowExpanded(key)\r\n        },\r\n        expandRow: function(key) {\r\n            if (!this.isRowExpanded(key)) {\r\n                return this.changeRowExpand(key)\r\n            }\r\n            return (new _deferred.Deferred).resolve()\r\n        },\r\n        collapseRow: function(key) {\r\n            if (this.isRowExpanded(key)) {\r\n                return this.changeRowExpand(key)\r\n            }\r\n            return (new _deferred.Deferred).resolve()\r\n        },\r\n        optionChanged: function(args) {\r\n            if (\"grouping\" === args.name) {\r\n                args.name = \"dataSource\"\r\n            }\r\n            this.callBase(args)\r\n        }\r\n    }\r\n}();\r\nvar onGroupingMenuItemClick = function(column, params) {\r\n    var columnsController = this._columnsController;\r\n    switch (params.itemData.value) {\r\n        case \"group\":\r\n            var groups = columnsController._dataSource.group() || [];\r\n            columnsController.columnOption(column.dataField, \"groupIndex\", groups.length);\r\n            break;\r\n        case \"ungroup\":\r\n            columnsController.columnOption(column.dataField, \"groupIndex\", -1);\r\n            break;\r\n        case \"ungroupAll\":\r\n            this.component.clearGrouping()\r\n    }\r\n};\r\nvar GroupingHeaderPanelExtender = function() {\r\n    return {\r\n        _getToolbarItems: function() {\r\n            var items = this.callBase();\r\n            return this._appendGroupingItem(items)\r\n        },\r\n        _appendGroupingItem: function(items) {\r\n            var _this = this;\r\n            if (this._isGroupPanelVisible()) {\r\n                var isRendered = false;\r\n                var toolbarItem = {\r\n                    template: function() {\r\n                        var $groupPanel = (0, _renderer.default)(\"<div>\").addClass(DATAGRID_GROUP_PANEL_CLASS);\r\n                        _this._updateGroupPanelContent($groupPanel);\r\n                        (0, _uiGrid_core.registerKeyboardAction)(\"groupPanel\", _this, $groupPanel, void 0, _this._handleActionKeyDown.bind(_this));\r\n                        return $groupPanel\r\n                    },\r\n                    name: \"groupPanel\",\r\n                    onItemRendered: function() {\r\n                        isRendered && _this.renderCompleted.fire();\r\n                        isRendered = true\r\n                    },\r\n                    location: \"before\",\r\n                    locateInMenu: \"never\",\r\n                    sortIndex: 1\r\n                };\r\n                items.push(toolbarItem)\r\n            }\r\n            return items\r\n        },\r\n        _handleActionKeyDown: function(args) {\r\n            var event = args.event;\r\n            var $target = (0, _renderer.default)(event.target);\r\n            var groupColumnIndex = $target.closest(\".\".concat(DATAGRID_GROUP_PANEL_ITEM_CLASS)).index();\r\n            var column = this._columnsController.getGroupColumns()[groupColumnIndex];\r\n            var columnIndex = column && column.index;\r\n            if ($target.is(HEADER_FILTER_CLASS_SELECTOR)) {\r\n                this.getController(\"headerFilter\").showHeaderFilterMenu(columnIndex, true)\r\n            } else {\r\n                this._processGroupItemAction(columnIndex)\r\n            }\r\n            event.preventDefault()\r\n        },\r\n        _isGroupPanelVisible: function() {\r\n            var groupPanelOptions = this.option(\"groupPanel\");\r\n            var isVisible;\r\n            if (groupPanelOptions) {\r\n                isVisible = groupPanelOptions.visible;\r\n                if (\"auto\" === isVisible) {\r\n                    isVisible = \"desktop\" === _devices.default.current().deviceType ? true : false\r\n                }\r\n            }\r\n            return isVisible\r\n        },\r\n        _renderGroupPanelItems: function($groupPanel, groupColumns) {\r\n            var that = this;\r\n            $groupPanel.empty();\r\n            (0, _iterator.each)(groupColumns, function(index, groupColumn) {\r\n                that._createGroupPanelItem($groupPanel, groupColumn)\r\n            });\r\n            (0, _accessibility.restoreFocus)(this)\r\n        },\r\n        _createGroupPanelItem: function($rootElement, groupColumn) {\r\n            var $groupPanelItem = (0, _renderer.default)(\"<div>\").addClass(groupColumn.cssClass).addClass(DATAGRID_GROUP_PANEL_ITEM_CLASS).data(\"columnData\", groupColumn).appendTo($rootElement).text(groupColumn.caption);\r\n            (0, _accessibility.setTabIndex)(this, $groupPanelItem);\r\n            return $groupPanelItem\r\n        },\r\n        _columnOptionChanged: function(e) {\r\n            if (!this._requireReady && !_uiData_grid.default.checkChanges(e.optionNames, [\"width\", \"visibleWidth\"])) {\r\n                var $toolbarElement = this.element();\r\n                var $groupPanel = $toolbarElement && $toolbarElement.find(\".\" + DATAGRID_GROUP_PANEL_CLASS);\r\n                if ($groupPanel && $groupPanel.length) {\r\n                    this._updateGroupPanelContent($groupPanel);\r\n                    this.renderCompleted.fire()\r\n                }\r\n            }\r\n            this.callBase()\r\n        },\r\n        _updateGroupPanelContent: function($groupPanel) {\r\n            var that = this;\r\n            var groupColumns = that.getController(\"columns\").getGroupColumns();\r\n            var groupPanelOptions = that.option(\"groupPanel\");\r\n            that._renderGroupPanelItems($groupPanel, groupColumns);\r\n            if (groupPanelOptions.allowColumnDragging && !groupColumns.length) {\r\n                (0, _renderer.default)(\"<div>\").addClass(DATAGRID_GROUP_PANEL_MESSAGE_CLASS).text(groupPanelOptions.emptyPanelText).appendTo($groupPanel);\r\n                $groupPanel.closest(\".\" + DATAGRID_GROUP_PANEL_LABEL_CLASS).css(\"maxWidth\", \"none\");\r\n                that.updateToolbarDimensions()\r\n            }\r\n        },\r\n        allowDragging: function(column) {\r\n            var groupPanelOptions = this.option(\"groupPanel\");\r\n            return this._isGroupPanelVisible() && groupPanelOptions.allowColumnDragging && column && column.allowGrouping\r\n        },\r\n        getColumnElements: function() {\r\n            var $element = this.element();\r\n            return $element && $element.find(\".\" + DATAGRID_GROUP_PANEL_ITEM_CLASS)\r\n        },\r\n        getColumns: function() {\r\n            return this.getController(\"columns\").getGroupColumns()\r\n        },\r\n        getBoundingRect: function() {\r\n            var that = this;\r\n            var $element = that.element();\r\n            if ($element && $element.find(\".\" + DATAGRID_GROUP_PANEL_CLASS).length) {\r\n                var offset = $element.offset();\r\n                return {\r\n                    top: offset.top,\r\n                    bottom: offset.top + $element.height()\r\n                }\r\n            }\r\n            return null\r\n        },\r\n        getName: function() {\r\n            return \"group\"\r\n        },\r\n        getContextMenuItems: function(options) {\r\n            var that = this;\r\n            var contextMenuEnabled = that.option(\"grouping.contextMenuEnabled\");\r\n            var $groupedColumnElement = (0, _renderer.default)(options.targetElement).closest(\".\" + DATAGRID_GROUP_PANEL_ITEM_CLASS);\r\n            var items;\r\n            if ($groupedColumnElement.length) {\r\n                options.column = $groupedColumnElement.data(\"columnData\")\r\n            }\r\n            if (contextMenuEnabled && options.column) {\r\n                var column = options.column;\r\n                var isGroupingAllowed = (0, _type.isDefined)(column.allowGrouping) ? column.allowGrouping : true;\r\n                if (isGroupingAllowed) {\r\n                    var isColumnGrouped = (0, _type.isDefined)(column.groupIndex) && column.groupIndex > -1;\r\n                    var groupingTexts = that.option(\"grouping.texts\");\r\n                    var onItemClick = onGroupingMenuItemClick.bind(that, column);\r\n                    items = [{\r\n                        text: groupingTexts.ungroup,\r\n                        value: \"ungroup\",\r\n                        disabled: !isColumnGrouped,\r\n                        onItemClick: onItemClick\r\n                    }, {\r\n                        text: groupingTexts.ungroupAll,\r\n                        value: \"ungroupAll\",\r\n                        onItemClick: onItemClick\r\n                    }]\r\n                }\r\n            }\r\n            return items\r\n        },\r\n        isVisible: function() {\r\n            return this.callBase() || this._isGroupPanelVisible()\r\n        },\r\n        optionChanged: function(args) {\r\n            if (\"groupPanel\" === args.name) {\r\n                this._invalidate();\r\n                args.handled = true\r\n            } else {\r\n                this.callBase(args)\r\n            }\r\n        }\r\n    }\r\n}();\r\nexports.GroupingHeaderPanelExtender = GroupingHeaderPanelExtender;\r\nvar GroupingRowsViewExtender = function() {\r\n    return {\r\n        getContextMenuItems: function(options) {\r\n            var that = this;\r\n            var contextMenuEnabled = that.option(\"grouping.contextMenuEnabled\");\r\n            var items;\r\n            if (contextMenuEnabled && options.row && \"group\" === options.row.rowType) {\r\n                var columnsController = that._columnsController;\r\n                var column = columnsController.columnOption(\"groupIndex:\" + options.row.groupIndex);\r\n                if (column && column.allowGrouping) {\r\n                    var groupingTexts = that.option(\"grouping.texts\");\r\n                    var onItemClick = onGroupingMenuItemClick.bind(that, column);\r\n                    items = [];\r\n                    items.push({\r\n                        text: groupingTexts.ungroup,\r\n                        value: \"ungroup\",\r\n                        onItemClick: onItemClick\r\n                    }, {\r\n                        text: groupingTexts.ungroupAll,\r\n                        value: \"ungroupAll\",\r\n                        onItemClick: onItemClick\r\n                    })\r\n                }\r\n            }\r\n            return items\r\n        },\r\n        _rowClick: function(e) {\r\n            var that = this;\r\n            var expandMode = that.option(\"grouping.expandMode\");\r\n            var scrollingMode = that.option(\"scrolling.mode\");\r\n            var isGroupRowStateChanged = \"infinite\" !== scrollingMode && \"rowClick\" === expandMode && (0, _renderer.default)(e.event.target).closest(\".\" + DATAGRID_GROUP_ROW_CLASS).length;\r\n            var isExpandButtonClicked = (0, _renderer.default)(e.event.target).closest(\".\" + DATAGRID_EXPAND_CLASS).length;\r\n            if (isGroupRowStateChanged || isExpandButtonClicked) {\r\n                that._changeGroupRowState(e)\r\n            }\r\n            that.callBase(e)\r\n        },\r\n        _changeGroupRowState: function(e) {\r\n            var dataController = this.getController(\"data\");\r\n            var row = dataController.items()[e.rowIndex];\r\n            var allowCollapsing = this._columnsController.columnOption(\"groupIndex:\" + row.groupIndex, \"allowCollapsing\");\r\n            if (\"data\" === row.rowType || \"group\" === row.rowType && false !== allowCollapsing) {\r\n                dataController.changeRowExpand(row.key, true);\r\n                e.event.preventDefault();\r\n                e.handled = true\r\n            }\r\n        }\r\n    }\r\n}();\r\nvar columnHeadersViewExtender = function() {\r\n    return {\r\n        getContextMenuItems: function(options) {\r\n            var that = this;\r\n            var contextMenuEnabled = that.option(\"grouping.contextMenuEnabled\");\r\n            var items = that.callBase(options);\r\n            if (contextMenuEnabled && options.row && (\"header\" === options.row.rowType || \"detailAdaptive\" === options.row.rowType)) {\r\n                var column = options.column;\r\n                if (!column.command && (!(0, _type.isDefined)(column.allowGrouping) || column.allowGrouping)) {\r\n                    var groupingTexts = that.option(\"grouping.texts\");\r\n                    var isColumnGrouped = (0, _type.isDefined)(column.groupIndex) && column.groupIndex > -1;\r\n                    var onItemClick = onGroupingMenuItemClick.bind(that, column);\r\n                    items = items || [];\r\n                    items.push({\r\n                        text: groupingTexts.groupByThisColumn,\r\n                        value: \"group\",\r\n                        beginGroup: true,\r\n                        disabled: isColumnGrouped,\r\n                        onItemClick: onItemClick\r\n                    });\r\n                    if (column.showWhenGrouped) {\r\n                        items.push({\r\n                            text: groupingTexts.ungroup,\r\n                            value: \"ungroup\",\r\n                            disabled: !isColumnGrouped,\r\n                            onItemClick: onItemClick\r\n                        })\r\n                    }\r\n                    items.push({\r\n                        text: groupingTexts.ungroupAll,\r\n                        value: \"ungroupAll\",\r\n                        onItemClick: onItemClick\r\n                    })\r\n                }\r\n            }\r\n            return items\r\n        }\r\n    }\r\n}();\r\n_uiData_grid.default.registerModule(\"grouping\", {\r\n    defaultOptions: function() {\r\n        return {\r\n            grouping: {\r\n                autoExpandAll: true,\r\n                allowCollapsing: true,\r\n                contextMenuEnabled: false,\r\n                expandMode: \"buttonClick\",\r\n                texts: {\r\n                    groupContinuesMessage: _message.default.format(\"dxDataGrid-groupContinuesMessage\"),\r\n                    groupContinuedMessage: _message.default.format(\"dxDataGrid-groupContinuedMessage\"),\r\n                    groupByThisColumn: _message.default.format(\"dxDataGrid-groupHeaderText\"),\r\n                    ungroup: _message.default.format(\"dxDataGrid-ungroupHeaderText\"),\r\n                    ungroupAll: _message.default.format(\"dxDataGrid-ungroupAllText\")\r\n                }\r\n            },\r\n            groupPanel: {\r\n                visible: false,\r\n                emptyPanelText: _message.default.format(\"dxDataGrid-groupPanelEmptyText\"),\r\n                allowColumnDragging: true\r\n            }\r\n        }\r\n    },\r\n    extenders: {\r\n        controllers: {\r\n            data: GroupingDataControllerExtender,\r\n            columns: {\r\n                _getExpandColumnOptions: function() {\r\n                    var options = this.callBase.apply(this, arguments);\r\n                    options.cellTemplate = _uiData_grid.default.getExpandCellTemplate();\r\n                    return options\r\n                }\r\n            }\r\n        },\r\n        views: {\r\n            headerPanel: GroupingHeaderPanelExtender,\r\n            rowsView: GroupingRowsViewExtender,\r\n            columnHeadersView: columnHeadersViewExtender\r\n        }\r\n    }\r\n});\r\n","/**\r\n * DevExtreme (ui/widget/utils.ink_ripple.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.showWave = showWave;\r\nexports.hideWave = hideWave;\r\nexports.render = exports.initConfig = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar INKRIPPLE_CLASS = \"dx-inkripple\";\r\nvar INKRIPPLE_WAVE_CLASS = \"dx-inkripple-wave\";\r\nvar INKRIPPLE_SHOWING_CLASS = \"dx-inkripple-showing\";\r\nvar INKRIPPLE_HIDING_CLASS = \"dx-inkripple-hiding\";\r\nvar DEFAULT_WAVE_SIZE_COEFFICIENT = 2;\r\nvar MAX_WAVE_SIZE = 4e3;\r\nvar ANIMATION_DURATION = 300;\r\nvar HOLD_ANIMATION_DURATION = 1e3;\r\nvar DEFAULT_WAVE_INDEX = 0;\r\nvar initConfig = function() {\r\n    var config = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n    var useHoldAnimation = config.useHoldAnimation,\r\n        waveSizeCoefficient = config.waveSizeCoefficient,\r\n        isCentered = config.isCentered,\r\n        wavesNumber = config.wavesNumber;\r\n    return {\r\n        waveSizeCoefficient: waveSizeCoefficient || DEFAULT_WAVE_SIZE_COEFFICIENT,\r\n        isCentered: isCentered || false,\r\n        wavesNumber: wavesNumber || 1,\r\n        durations: getDurations(null !== useHoldAnimation && void 0 !== useHoldAnimation ? useHoldAnimation : true)\r\n    }\r\n};\r\nexports.initConfig = initConfig;\r\nvar render = function(args) {\r\n    var config = initConfig(args);\r\n    return {\r\n        showWave: showWave.bind(this, config),\r\n        hideWave: hideWave.bind(this, config)\r\n    }\r\n};\r\nexports.render = render;\r\nvar getInkRipple = function(element) {\r\n    var result = element.children(\".\" + INKRIPPLE_CLASS);\r\n    if (0 === result.length) {\r\n        result = (0, _renderer.default)(\"<div>\").addClass(INKRIPPLE_CLASS).appendTo(element)\r\n    }\r\n    return result\r\n};\r\nvar getWaves = function(element, wavesNumber) {\r\n    var inkRipple = getInkRipple((0, _renderer.default)(element));\r\n    var result = inkRipple.children(\".\" + INKRIPPLE_WAVE_CLASS).toArray();\r\n    for (var i = result.length; i < wavesNumber; i++) {\r\n        var $currentWave = (0, _renderer.default)(\"<div>\").appendTo(inkRipple).addClass(INKRIPPLE_WAVE_CLASS);\r\n        result.push($currentWave[0])\r\n    }\r\n    return (0, _renderer.default)(result)\r\n};\r\nvar getWaveStyleConfig = function(args, config) {\r\n    var element = (0, _renderer.default)(config.element);\r\n    var elementWidth = element.outerWidth();\r\n    var elementHeight = element.outerHeight();\r\n    var elementDiagonal = parseInt(Math.sqrt(elementWidth * elementWidth + elementHeight * elementHeight));\r\n    var waveSize = Math.min(MAX_WAVE_SIZE, parseInt(elementDiagonal * args.waveSizeCoefficient));\r\n    var left;\r\n    var top;\r\n    if (args.isCentered) {\r\n        left = (elementWidth - waveSize) / 2;\r\n        top = (elementHeight - waveSize) / 2\r\n    } else {\r\n        var event = config.event;\r\n        var position = element.offset();\r\n        var x = event.pageX - position.left;\r\n        var y = event.pageY - position.top;\r\n        left = x - waveSize / 2;\r\n        top = y - waveSize / 2\r\n    }\r\n    return {\r\n        left: left,\r\n        top: top,\r\n        height: waveSize,\r\n        width: waveSize\r\n    }\r\n};\r\n\r\nfunction showWave(args, config) {\r\n    var $wave = getWaves(config.element, args.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n    args.hidingTimeout && clearTimeout(args.hidingTimeout);\r\n    hideSelectedWave($wave);\r\n    $wave.css(getWaveStyleConfig(args, config));\r\n    args.showingTimeout = setTimeout(showingWaveHandler.bind(this, args, $wave), 0)\r\n}\r\n\r\nfunction showingWaveHandler(args, $wave) {\r\n    var durationCss = args.durations.showingScale + \"ms\";\r\n    $wave.addClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss)\r\n}\r\n\r\nfunction getDurations(useHoldAnimation) {\r\n    return {\r\n        showingScale: useHoldAnimation ? HOLD_ANIMATION_DURATION : ANIMATION_DURATION,\r\n        hidingScale: ANIMATION_DURATION,\r\n        hidingOpacity: ANIMATION_DURATION\r\n    }\r\n}\r\n\r\nfunction hideSelectedWave($wave) {\r\n    $wave.removeClass(INKRIPPLE_HIDING_CLASS).css(\"transitionDuration\", \"\")\r\n}\r\n\r\nfunction hideWave(args, config) {\r\n    args.showingTimeout && clearTimeout(args.showingTimeout);\r\n    var $wave = getWaves(config.element, config.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n    var durations = args.durations;\r\n    var durationCss = durations.hidingScale + \"ms, \" + durations.hidingOpacity + \"ms\";\r\n    $wave.addClass(INKRIPPLE_HIDING_CLASS).removeClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss);\r\n    var animationDuration = Math.max(durations.hidingScale, durations.hidingOpacity);\r\n    args.hidingTimeout = setTimeout(hideSelectedWave.bind(this, $wave), animationDuration)\r\n}\r\n","/**\r\n * DevExtreme (ui/text_box/ui.text_editor.base.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _themes = require(\"../themes\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _uiText_editor = _interopRequireDefault(require(\"./ui.text_editor.clear\"));\r\nvar _index2 = _interopRequireDefault(require(\"./texteditor_button_collection/index\"));\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar TEXTEDITOR_CLASS = \"dx-texteditor\";\r\nvar TEXTEDITOR_INPUT_CONTAINER_CLASS = \"dx-texteditor-input-container\";\r\nvar TEXTEDITOR_INPUT_CLASS = \"dx-texteditor-input\";\r\nvar TEXTEDITOR_INPUT_SELECTOR = \".\" + TEXTEDITOR_INPUT_CLASS;\r\nvar TEXTEDITOR_CONTAINER_CLASS = \"dx-texteditor-container\";\r\nvar TEXTEDITOR_BUTTONS_CONTAINER_CLASS = \"dx-texteditor-buttons-container\";\r\nvar TEXTEDITOR_PLACEHOLDER_CLASS = \"dx-placeholder\";\r\nvar TEXTEDITOR_EMPTY_INPUT_CLASS = \"dx-texteditor-empty\";\r\nvar TEXTEDITOR_STYLING_MODE_PREFIX = \"dx-editor-\";\r\nvar ALLOWED_STYLE_CLASSES = [TEXTEDITOR_STYLING_MODE_PREFIX + \"outlined\", TEXTEDITOR_STYLING_MODE_PREFIX + \"filled\", TEXTEDITOR_STYLING_MODE_PREFIX + \"underlined\"];\r\nvar STATE_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar TEXTEDITOR_PENDING_INDICATOR_CLASS = \"dx-pending-indicator\";\r\nvar TEXTEDITOR_VALIDATION_PENDING_CLASS = \"dx-validation-pending\";\r\nvar TEXTEDITOR_VALID_CLASS = \"dx-valid\";\r\nvar EVENTS_LIST = [\"KeyDown\", \"KeyPress\", \"KeyUp\", \"Change\", \"Cut\", \"Copy\", \"Paste\", \"Input\"];\r\nvar CONTROL_KEYS = [\"tab\", \"enter\", \"shift\", \"control\", \"alt\", \"escape\", \"pageUp\", \"pageDown\", \"end\", \"home\", \"leftArrow\", \"upArrow\", \"rightArrow\", \"downArrow\"];\r\n\r\nfunction checkButtonsOptionType(buttons) {\r\n    if ((0, _type.isDefined)(buttons) && !Array.isArray(buttons)) {\r\n        throw _ui.default.Error(\"E1053\")\r\n    }\r\n}\r\nvar TextEditorBase = _editor.default.inherit({\r\n    ctor: function(_, options) {\r\n        if (options) {\r\n            checkButtonsOptionType(options.buttons)\r\n        }\r\n        this._buttonCollection = new _index2.default(this, this._getDefaultButtons());\r\n        this._$beforeButtonsContainer = null;\r\n        this._$afterButtonsContainer = null;\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            buttons: void 0,\r\n            value: \"\",\r\n            spellcheck: false,\r\n            showClearButton: false,\r\n            valueChangeEvent: \"change\",\r\n            placeholder: \"\",\r\n            inputAttr: {},\r\n            onFocusIn: null,\r\n            onFocusOut: null,\r\n            onKeyDown: null,\r\n            onKeyPress: null,\r\n            onKeyUp: null,\r\n            onChange: null,\r\n            onInput: null,\r\n            onCut: null,\r\n            onCopy: null,\r\n            onPaste: null,\r\n            onEnterKey: null,\r\n            mode: \"text\",\r\n            hoverStateEnabled: true,\r\n            focusStateEnabled: true,\r\n            text: void 0,\r\n            displayValueFormatter: function(value) {\r\n                return (0, _type.isDefined)(value) && false !== value ? value : \"\"\r\n            },\r\n            stylingMode: (0, _config.default)().editorStylingMode || \"outlined\",\r\n            showValidationMark: true\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        var themeName = (0, _themes.current)();\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                return (0, _themes.isMaterial)(themeName)\r\n            },\r\n            options: {\r\n                stylingMode: (0, _config.default)().editorStylingMode || \"underlined\"\r\n            }\r\n        }])\r\n    },\r\n    _setDeprecatedOptions: function() {\r\n        this.callBase();\r\n        (0, _extend.extend)(this._deprecatedOptions, {\r\n            onKeyPress: {\r\n                since: \"20.1\",\r\n                message: \"This event is removed from the web standards and will be deprecated in modern browsers soon.\"\r\n            }\r\n        })\r\n    },\r\n    _getDefaultButtons: function() {\r\n        return [{\r\n            name: \"clear\",\r\n            Ctor: _uiText_editor.default\r\n        }]\r\n    },\r\n    _isClearButtonVisible: function() {\r\n        return this.option(\"showClearButton\") && !this.option(\"readOnly\")\r\n    },\r\n    _input: function() {\r\n        return this.$element().find(TEXTEDITOR_INPUT_SELECTOR).first()\r\n    },\r\n    _isFocused: function() {\r\n        return (0, _selectors.focused)(this._input()) || this.callBase()\r\n    },\r\n    _inputWrapper: function() {\r\n        return this.$element()\r\n    },\r\n    _buttonsContainer: function() {\r\n        return this._inputWrapper().find(\".\" + TEXTEDITOR_BUTTONS_CONTAINER_CLASS).eq(0)\r\n    },\r\n    _isControlKey: function(key) {\r\n        return CONTROL_KEYS.indexOf(key) !== -1\r\n    },\r\n    _renderStylingMode: function() {\r\n        var _this = this;\r\n        var optionName = \"stylingMode\";\r\n        var optionValue = this.option(optionName);\r\n        ALLOWED_STYLE_CLASSES.forEach(function(className) {\r\n            return _this.$element().removeClass(className)\r\n        });\r\n        var stylingModeClass = TEXTEDITOR_STYLING_MODE_PREFIX + optionValue;\r\n        if (ALLOWED_STYLE_CLASSES.indexOf(stylingModeClass) === -1) {\r\n            var defaultOptionValue = this._getDefaultOptions()[optionName];\r\n            var platformOptionValue = this._convertRulesToOptions(this._defaultOptionsRules())[optionName];\r\n            stylingModeClass = TEXTEDITOR_STYLING_MODE_PREFIX + (platformOptionValue || defaultOptionValue)\r\n        }\r\n        this.$element().addClass(stylingModeClass);\r\n        this._updateButtonsStyling(optionValue)\r\n    },\r\n    _initMarkup: function() {\r\n        this.$element().addClass(TEXTEDITOR_CLASS);\r\n        this._renderInput();\r\n        this._renderStylingMode();\r\n        this._renderInputType();\r\n        this._renderPlaceholder();\r\n        this._renderProps();\r\n        this.callBase();\r\n        this._renderValue()\r\n    },\r\n    _render: function() {\r\n        this._renderPlaceholder();\r\n        this._refreshValueChangeEvent();\r\n        this._renderEvents();\r\n        this._renderEnterKeyAction();\r\n        this._renderEmptinessEvent();\r\n        this.callBase()\r\n    },\r\n    _renderInput: function() {\r\n        this._$buttonsContainer = this._$textEditorContainer = (0, _renderer.default)(\"<div>\").addClass(TEXTEDITOR_CONTAINER_CLASS).appendTo(this.$element());\r\n        this._$textEditorInputContainer = (0, _renderer.default)(\"<div>\").addClass(TEXTEDITOR_INPUT_CONTAINER_CLASS).appendTo(this._$textEditorContainer);\r\n        this._$textEditorInputContainer.append(this._createInput());\r\n        this._renderButtonContainers()\r\n    },\r\n    _getInputContainer: function() {\r\n        return this._$textEditorInputContainer\r\n    },\r\n    _renderPendingIndicator: function() {\r\n        this.$element().addClass(TEXTEDITOR_VALIDATION_PENDING_CLASS);\r\n        var $inputContainer = this._getInputContainer();\r\n        var $indicatorElement = (0, _renderer.default)(\"<div>\").addClass(TEXTEDITOR_PENDING_INDICATOR_CLASS).appendTo($inputContainer);\r\n        this._pendingIndicator = this._createComponent($indicatorElement, _load_indicator.default)\r\n    },\r\n    _disposePendingIndicator: function() {\r\n        if (!this._pendingIndicator) {\r\n            return\r\n        }\r\n        this._pendingIndicator.dispose();\r\n        this._pendingIndicator.$element().remove();\r\n        this._pendingIndicator = null;\r\n        this.$element().removeClass(TEXTEDITOR_VALIDATION_PENDING_CLASS)\r\n    },\r\n    _renderValidationState: function() {\r\n        this.callBase();\r\n        var isPending = \"pending\" === this.option(\"validationStatus\");\r\n        var $element = this.$element();\r\n        if (isPending) {\r\n            !this._pendingIndicator && this._renderPendingIndicator();\r\n            this._showValidMark = false\r\n        } else {\r\n            if (\"invalid\" === this.option(\"validationStatus\")) {\r\n                this._showValidMark = false\r\n            }\r\n            if (!this._showValidMark && true === this.option(\"showValidationMark\")) {\r\n                this._showValidMark = \"valid\" === this.option(\"validationStatus\") && !!this._pendingIndicator\r\n            }\r\n            this._disposePendingIndicator()\r\n        }\r\n        $element.toggleClass(TEXTEDITOR_VALID_CLASS, !!this._showValidMark)\r\n    },\r\n    _renderButtonContainers: function() {\r\n        var buttons = this.option(\"buttons\");\r\n        this._$beforeButtonsContainer = this._buttonCollection.renderBeforeButtons(buttons, this._$buttonsContainer);\r\n        this._$afterButtonsContainer = this._buttonCollection.renderAfterButtons(buttons, this._$buttonsContainer)\r\n    },\r\n    _clean: function() {\r\n        this._buttonCollection.clean();\r\n        this._disposePendingIndicator();\r\n        this._$beforeButtonsContainer = null;\r\n        this._$afterButtonsContainer = null;\r\n        this._$textEditorContainer = null;\r\n        this._$buttonsContainer = null;\r\n        this.callBase()\r\n    },\r\n    _createInput: function() {\r\n        var $input = (0, _renderer.default)(\"<input>\");\r\n        this._applyInputAttributes($input, this.option(\"inputAttr\"));\r\n        return $input\r\n    },\r\n    _setSubmitElementName: function(name) {\r\n        var inputAttrName = this.option(\"inputAttr.name\");\r\n        return this.callBase(name || inputAttrName || \"\")\r\n    },\r\n    _applyInputAttributes: function($input, customAttributes) {\r\n        var inputAttributes = (0, _extend.extend)(this._getDefaultAttributes(), customAttributes);\r\n        $input.attr(inputAttributes).addClass(TEXTEDITOR_INPUT_CLASS).css(\"minHeight\", this.option(\"height\") ? \"0\" : \"\")\r\n    },\r\n    _getDefaultAttributes: function() {\r\n        var defaultAttributes = {\r\n            autocomplete: \"off\"\r\n        };\r\n        if (_devices.default.real().ios) {\r\n            defaultAttributes.placeholder = \" \"\r\n        }\r\n        return defaultAttributes\r\n    },\r\n    _updateButtons: function(names) {\r\n        this._buttonCollection.updateButtons(names)\r\n    },\r\n    _updateButtonsStyling: function(editorStylingMode) {\r\n        var _this2 = this;\r\n        (0, _iterator.each)(this.option(\"buttons\"), function(_, buttonOptions) {\r\n            if (buttonOptions.options && !buttonOptions.options.stylingMode) {\r\n                var buttonInstance = _this2.getButton(buttonOptions.name);\r\n                buttonInstance.option && buttonInstance.option(\"stylingMode\", \"underlined\" === editorStylingMode ? \"text\" : \"contained\")\r\n            }\r\n        })\r\n    },\r\n    _renderValue: function() {\r\n        var renderInputPromise = this._renderInputValue();\r\n        return renderInputPromise.promise()\r\n    },\r\n    _renderInputValue: function(value) {\r\n        value = value || this.option(\"value\");\r\n        var text = this.option(\"text\");\r\n        var displayValue = this.option(\"displayValue\");\r\n        var displayValueFormatter = this.option(\"displayValueFormatter\");\r\n        if (void 0 !== displayValue && null !== value) {\r\n            text = displayValueFormatter(displayValue)\r\n        } else {\r\n            if (!(0, _type.isDefined)(text)) {\r\n                text = displayValueFormatter(value)\r\n            }\r\n        }\r\n        this.option(\"text\", text);\r\n        if (this._input().val() !== ((0, _type.isDefined)(text) ? text : \"\")) {\r\n            this._renderDisplayText(text)\r\n        } else {\r\n            this._toggleEmptinessEventHandler()\r\n        }\r\n        return (new _deferred.Deferred).resolve()\r\n    },\r\n    _renderDisplayText: function(text) {\r\n        this._input().val(text);\r\n        this._toggleEmptinessEventHandler()\r\n    },\r\n    _isValueValid: function() {\r\n        if (this._input().length) {\r\n            var validity = this._input().get(0).validity;\r\n            if (validity) {\r\n                return validity.valid\r\n            }\r\n        }\r\n        return true\r\n    },\r\n    _toggleEmptiness: function(isEmpty) {\r\n        this.$element().toggleClass(TEXTEDITOR_EMPTY_INPUT_CLASS, isEmpty);\r\n        this._togglePlaceholder(isEmpty)\r\n    },\r\n    _togglePlaceholder: function(isEmpty) {\r\n        this.$element().find(\".\".concat(TEXTEDITOR_PLACEHOLDER_CLASS)).toggleClass(STATE_INVISIBLE_CLASS, !isEmpty)\r\n    },\r\n    _renderProps: function() {\r\n        this._toggleReadOnlyState();\r\n        this._toggleSpellcheckState();\r\n        this._toggleTabIndex()\r\n    },\r\n    _toggleDisabledState: function(value) {\r\n        this.callBase.apply(this, arguments);\r\n        var $input = this._input();\r\n        if (value) {\r\n            $input.attr(\"disabled\", true)\r\n        } else {\r\n            $input.removeAttr(\"disabled\")\r\n        }\r\n    },\r\n    _toggleTabIndex: function() {\r\n        var $input = this._input();\r\n        var disabled = this.option(\"disabled\");\r\n        var focusStateEnabled = this.option(\"focusStateEnabled\");\r\n        if (disabled || !focusStateEnabled) {\r\n            $input.attr(\"tabIndex\", -1)\r\n        } else {\r\n            $input.removeAttr(\"tabIndex\")\r\n        }\r\n    },\r\n    _toggleReadOnlyState: function() {\r\n        this._input().prop(\"readOnly\", this._readOnlyPropValue());\r\n        this.callBase()\r\n    },\r\n    _readOnlyPropValue: function() {\r\n        return this.option(\"readOnly\")\r\n    },\r\n    _toggleSpellcheckState: function() {\r\n        this._input().prop(\"spellcheck\", this.option(\"spellcheck\"))\r\n    },\r\n    _renderPlaceholder: function() {\r\n        this._renderPlaceholderMarkup();\r\n        this._attachPlaceholderEvents()\r\n    },\r\n    _renderPlaceholderMarkup: function() {\r\n        if (this._$placeholder) {\r\n            this._$placeholder.remove();\r\n            this._$placeholder = null\r\n        }\r\n        var $input = this._input();\r\n        var placeholderText = this.option(\"placeholder\");\r\n        var $placeholder = this._$placeholder = (0, _renderer.default)(\"<div>\").attr(\"data-dx_placeholder\", placeholderText);\r\n        $placeholder.insertAfter($input);\r\n        $placeholder.addClass(TEXTEDITOR_PLACEHOLDER_CLASS)\r\n    },\r\n    _attachPlaceholderEvents: function() {\r\n        var _this3 = this;\r\n        var startEvent = (0, _index.addNamespace)(_pointer.default.up, this.NAME);\r\n        _events_engine.default.on(this._$placeholder, startEvent, function() {\r\n            _events_engine.default.trigger(_this3._input(), \"focus\")\r\n        });\r\n        this._toggleEmptinessEventHandler()\r\n    },\r\n    _placeholder: function() {\r\n        return this._$placeholder || (0, _renderer.default)()\r\n    },\r\n    _clearValueHandler: function(e) {\r\n        var $input = this._input();\r\n        e.stopPropagation();\r\n        this._saveValueChangeEvent(e);\r\n        this._clearValue();\r\n        !this._isFocused() && _events_engine.default.trigger($input, \"focus\");\r\n        _events_engine.default.trigger($input, \"input\")\r\n    },\r\n    _clearValue: function() {\r\n        this.reset()\r\n    },\r\n    _renderEvents: function() {\r\n        var _this4 = this;\r\n        var $input = this._input();\r\n        (0, _iterator.each)(EVENTS_LIST, function(_, event) {\r\n            if (_this4.hasActionSubscription(\"on\" + event)) {\r\n                var action = _this4._createActionByOption(\"on\" + event, {\r\n                    excludeValidators: [\"readOnly\"]\r\n                });\r\n                _events_engine.default.on($input, (0, _index.addNamespace)(event.toLowerCase(), _this4.NAME), function(e) {\r\n                    if (_this4._disposed) {\r\n                        return\r\n                    }\r\n                    action({\r\n                        event: e\r\n                    })\r\n                })\r\n            }\r\n        })\r\n    },\r\n    _refreshEvents: function() {\r\n        var _this5 = this;\r\n        var $input = this._input();\r\n        (0, _iterator.each)(EVENTS_LIST, function(_, event) {\r\n            _events_engine.default.off($input, (0, _index.addNamespace)(event.toLowerCase(), _this5.NAME))\r\n        });\r\n        this._renderEvents()\r\n    },\r\n    _keyPressHandler: function() {\r\n        this.option(\"text\", this._input().val())\r\n    },\r\n    _keyDownHandler: function(e) {\r\n        var $input = this._input();\r\n        var isCtrlEnter = e.ctrlKey && \"enter\" === (0, _index.normalizeKeyName)(e);\r\n        var isNewValue = $input.val() !== this.option(\"value\");\r\n        if (isCtrlEnter && isNewValue) {\r\n            _events_engine.default.trigger($input, \"change\")\r\n        }\r\n    },\r\n    _renderValueChangeEvent: function() {\r\n        var keyPressEvent = (0, _index.addNamespace)(this._renderValueEventName(), \"\".concat(this.NAME, \"TextChange\"));\r\n        var valueChangeEvent = (0, _index.addNamespace)(this.option(\"valueChangeEvent\"), \"\".concat(this.NAME, \"ValueChange\"));\r\n        var keyDownEvent = (0, _index.addNamespace)(\"keydown\", \"\".concat(this.NAME, \"TextChange\"));\r\n        var $input = this._input();\r\n        _events_engine.default.on($input, keyPressEvent, this._keyPressHandler.bind(this));\r\n        _events_engine.default.on($input, valueChangeEvent, this._valueChangeEventHandler.bind(this));\r\n        _events_engine.default.on($input, keyDownEvent, this._keyDownHandler.bind(this))\r\n    },\r\n    _cleanValueChangeEvent: function() {\r\n        var valueChangeNamespace = \".\".concat(this.NAME, \"ValueChange\");\r\n        var textChangeNamespace = \".\".concat(this.NAME, \"TextChange\");\r\n        _events_engine.default.off(this._input(), valueChangeNamespace);\r\n        _events_engine.default.off(this._input(), textChangeNamespace)\r\n    },\r\n    _refreshValueChangeEvent: function() {\r\n        this._cleanValueChangeEvent();\r\n        this._renderValueChangeEvent()\r\n    },\r\n    _renderValueEventName: function() {\r\n        return \"input change keypress\"\r\n    },\r\n    _focusTarget: function() {\r\n        return this._input()\r\n    },\r\n    _focusEventTarget: function() {\r\n        return this.element()\r\n    },\r\n    _preventNestedFocusEvent: function(event) {\r\n        if (event.isDefaultPrevented()) {\r\n            return true\r\n        }\r\n        var result = this._isNestedTarget(event.relatedTarget);\r\n        if (\"focusin\" === event.type) {\r\n            result = result && this._isNestedTarget(event.target)\r\n        }\r\n        result && event.preventDefault();\r\n        return result\r\n    },\r\n    _isNestedTarget: function(target) {\r\n        return !!this.$element().find(target).length\r\n    },\r\n    _focusClassTarget: function() {\r\n        return this.$element()\r\n    },\r\n    _focusInHandler: function(event) {\r\n        this._preventNestedFocusEvent(event);\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _focusOutHandler: function(event) {\r\n        this._preventNestedFocusEvent(event);\r\n        this.callBase.apply(this, arguments)\r\n    },\r\n    _toggleFocusClass: function(isFocused, $element) {\r\n        this.callBase(isFocused, this._focusClassTarget($element))\r\n    },\r\n    _hasFocusClass: function(element) {\r\n        return this.callBase((0, _renderer.default)(element || this.$element()))\r\n    },\r\n    _renderEmptinessEvent: function() {\r\n        var $input = this._input();\r\n        _events_engine.default.on($input, \"input blur\", this._toggleEmptinessEventHandler.bind(this))\r\n    },\r\n    _toggleEmptinessEventHandler: function() {\r\n        var text = this._input().val();\r\n        var isEmpty = (\"\" === text || null === text) && this._isValueValid();\r\n        this._toggleEmptiness(isEmpty)\r\n    },\r\n    _valueChangeEventHandler: function(e, formattedValue) {\r\n        this._saveValueChangeEvent(e);\r\n        this.option(\"value\", arguments.length > 1 ? formattedValue : this._input().val());\r\n        this._saveValueChangeEvent(void 0)\r\n    },\r\n    _renderEnterKeyAction: function() {\r\n        this._enterKeyAction = this._createActionByOption(\"onEnterKey\", {\r\n            excludeValidators: [\"readOnly\"]\r\n        });\r\n        _events_engine.default.off(this._input(), \"keyup.onEnterKey.dxTextEditor\");\r\n        _events_engine.default.on(this._input(), \"keyup.onEnterKey.dxTextEditor\", this._enterKeyHandlerUp.bind(this))\r\n    },\r\n    _enterKeyHandlerUp: function(e) {\r\n        if (this._disposed) {\r\n            return\r\n        }\r\n        if (\"enter\" === (0, _index.normalizeKeyName)(e)) {\r\n            this._enterKeyAction({\r\n                event: e\r\n            })\r\n        }\r\n    },\r\n    _updateValue: function() {\r\n        this.option(\"text\", void 0);\r\n        this._renderValue()\r\n    },\r\n    _dispose: function() {\r\n        this._enterKeyAction = void 0;\r\n        this.callBase()\r\n    },\r\n    _getSubmitElement: function() {\r\n        return this._input()\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name,\r\n            fullName = args.fullName,\r\n            value = args.value;\r\n        if ((0, _array.inArray)(name.replace(\"on\", \"\"), EVENTS_LIST) > -1) {\r\n            this._refreshEvents();\r\n            return\r\n        }\r\n        switch (name) {\r\n            case \"valueChangeEvent\":\r\n                this._refreshValueChangeEvent();\r\n                this._refreshFocusEvent();\r\n                this._refreshEvents();\r\n                break;\r\n            case \"onValueChanged\":\r\n                this._createValueChangeAction();\r\n                break;\r\n            case \"focusStateEnabled\":\r\n                this.callBase(args);\r\n                this._toggleTabIndex();\r\n                break;\r\n            case \"spellcheck\":\r\n                this._toggleSpellcheckState();\r\n                break;\r\n            case \"mode\":\r\n                this._renderInputType();\r\n                break;\r\n            case \"onEnterKey\":\r\n                this._renderEnterKeyAction();\r\n                break;\r\n            case \"placeholder\":\r\n                this._renderPlaceholder();\r\n                break;\r\n            case \"readOnly\":\r\n            case \"disabled\":\r\n                this._updateButtons();\r\n                this.callBase(args);\r\n                break;\r\n            case \"showClearButton\":\r\n                this._updateButtons([\"clear\"]);\r\n                break;\r\n            case \"text\":\r\n                break;\r\n            case \"value\":\r\n                this._updateValue();\r\n                this.callBase(args);\r\n                break;\r\n            case \"inputAttr\":\r\n                this._applyInputAttributes(this._input(), this.option(name));\r\n                break;\r\n            case \"stylingMode\":\r\n                this._renderStylingMode();\r\n                break;\r\n            case \"buttons\":\r\n                if (fullName === name) {\r\n                    checkButtonsOptionType(value)\r\n                }\r\n                this._$beforeButtonsContainer && this._$beforeButtonsContainer.remove();\r\n                this._$afterButtonsContainer && this._$afterButtonsContainer.remove();\r\n                this._buttonCollection.clean();\r\n                this._renderButtonContainers();\r\n                break;\r\n            case \"displayValueFormatter\":\r\n                this._invalidate();\r\n                break;\r\n            case \"showValidationMark\":\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _renderInputType: function() {\r\n        this._setInputType(this.option(\"mode\"))\r\n    },\r\n    _setInputType: function(type) {\r\n        var input = this._input();\r\n        if (\"search\" === type) {\r\n            type = \"text\"\r\n        }\r\n        try {\r\n            input.prop(\"type\", type)\r\n        } catch (e) {\r\n            input.prop(\"type\", \"text\")\r\n        }\r\n    },\r\n    getButton: function(name) {\r\n        return this._buttonCollection.getButton(name)\r\n    },\r\n    focus: function() {\r\n        _events_engine.default.trigger(this._input(), \"focus\")\r\n    },\r\n    blur: function() {\r\n        if (this._input().is(_dom_adapter.default.getActiveElement())) {\r\n            (0, _dom.resetActiveElement)()\r\n        }\r\n    },\r\n    reset: function() {\r\n        if (this._showValidMark) {\r\n            this._showValidMark = false;\r\n            this._renderValidationState()\r\n        }\r\n        var defaultOptions = this._getDefaultOptions();\r\n        if (this.option(\"value\") === defaultOptions.value) {\r\n            this.option(\"text\", \"\");\r\n            this._renderValue()\r\n        } else {\r\n            this.option(\"value\", defaultOptions.value)\r\n        }\r\n    },\r\n    on: function(eventName, eventHandler) {\r\n        var result = this.callBase(eventName, eventHandler);\r\n        var event = eventName.charAt(0).toUpperCase() + eventName.substr(1);\r\n        if (EVENTS_LIST.indexOf(event) >= 0) {\r\n            this._refreshEvents()\r\n        }\r\n        return result\r\n    }\r\n});\r\nvar _default = TextEditorBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/remote_store.utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.forEachGroup = void 0;\r\nvar forEachGroup = function forEachGroup(data, callback, level) {\r\n    data = data || [];\r\n    level = level || 0;\r\n    for (var i = 0; i < data.length; i++) {\r\n        var group = data[i];\r\n        callback(group, level);\r\n        if (group && group.items && group.items.length) {\r\n            forEachGroup(group.items, callback, level + 1)\r\n        }\r\n    }\r\n};\r\nexports.forEachGroup = forEachGroup;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.error_handling.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.error_handling\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n_uiTree_list.default.registerModule(\"errorHandling\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (viz/components/legend.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = exports.Legend = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _layout_element = require(\"../core/layout_element\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _title = require(\"../core/title\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _renderer = require(\"../core/renderers/renderer\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _Number = Number;\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _max = _math.max;\r\nvar _min = _math.min;\r\nvar _ceil = _math.ceil;\r\nvar _isDefined = _type.isDefined;\r\nvar _isFunction = _type.isFunction;\r\nvar _enumParser = _utils.enumParser;\r\nvar _normalizeEnum = _utils.normalizeEnum;\r\nvar _extend = _extend2.extend;\r\nvar DEFAULT_MARGIN = 10;\r\nvar DEFAULT_MARKER_HATCHING_WIDTH = 2;\r\nvar DEFAULT_MARKER_HATCHING_STEP = 5;\r\nvar CENTER = \"center\";\r\nvar RIGHT = \"right\";\r\nvar LEFT = \"left\";\r\nvar TOP = \"top\";\r\nvar BOTTOM = \"bottom\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar VERTICAL = \"vertical\";\r\nvar INSIDE = \"inside\";\r\nvar OUTSIDE = \"outside\";\r\nvar NONE = \"none\";\r\nvar HEIGHT = \"height\";\r\nvar WIDTH = \"width\";\r\nvar parseHorizontalAlignment = _enumParser([LEFT, CENTER, RIGHT]);\r\nvar parseVerticalAlignment = _enumParser([TOP, BOTTOM]);\r\nvar parseOrientation = _enumParser([VERTICAL, HORIZONTAL]);\r\nvar parseItemTextPosition = _enumParser([LEFT, RIGHT, TOP, BOTTOM]);\r\nvar parsePosition = _enumParser([OUTSIDE, INSIDE]);\r\nvar parseItemsAlignment = _enumParser([LEFT, CENTER, RIGHT]);\r\n\r\nfunction getState(state, color, stateName) {\r\n    if (!state) {\r\n        return\r\n    }\r\n    var colorFromAction = state.fill;\r\n    return (0, _extend2.extend)({}, {\r\n        state: stateName,\r\n        fill: colorFromAction === NONE ? color : colorFromAction,\r\n        opacity: state.opacity,\r\n        hatching: _extend({}, state.hatching, {\r\n            step: DEFAULT_MARKER_HATCHING_STEP,\r\n            width: DEFAULT_MARKER_HATCHING_WIDTH\r\n        })\r\n    })\r\n}\r\n\r\nfunction getAttributes(item, state, size) {\r\n    var attrs = (0, _renderer.processHatchingAttrs)(item, state);\r\n    if (attrs.fill && 0 === attrs.fill.indexOf(\"DevExpress\")) {\r\n        attrs.fill = (0, _renderer.getFuncIri)(attrs.fill)\r\n    }\r\n    attrs.opacity = attrs.opacity >= 0 ? attrs.opacity : 1;\r\n    return (0, _extend2.extend)({}, attrs, {\r\n        size: size\r\n    })\r\n}\r\n\r\nfunction parseMargins(options) {\r\n    var margin = options.margin;\r\n    if (margin >= 0) {\r\n        margin = _Number(options.margin);\r\n        margin = {\r\n            top: margin,\r\n            bottom: margin,\r\n            left: margin,\r\n            right: margin\r\n        }\r\n    } else {\r\n        margin = {\r\n            top: margin.top >= 0 ? _Number(margin.top) : DEFAULT_MARGIN,\r\n            bottom: margin.bottom >= 0 ? _Number(margin.bottom) : DEFAULT_MARGIN,\r\n            left: margin.left >= 0 ? _Number(margin.left) : DEFAULT_MARGIN,\r\n            right: margin.right >= 0 ? _Number(margin.right) : DEFAULT_MARGIN\r\n        }\r\n    }\r\n    options.margin = margin\r\n}\r\n\r\nfunction getSizeItem(options, markerBBox, labelBBox) {\r\n    var defaultXMargin = 7;\r\n    var defaultTopMargin = 4;\r\n    var width;\r\n    var height;\r\n    switch (options.itemTextPosition) {\r\n        case LEFT:\r\n        case RIGHT:\r\n            width = markerBBox.width + defaultXMargin + labelBBox.width;\r\n            height = _max(markerBBox.height, labelBBox.height);\r\n            break;\r\n        case TOP:\r\n        case BOTTOM:\r\n            width = _max(markerBBox.width, labelBBox.width);\r\n            height = markerBBox.height + defaultTopMargin + labelBBox.height\r\n    }\r\n    return {\r\n        width: width,\r\n        height: height\r\n    }\r\n}\r\n\r\nfunction calculateBBoxLabelAndMarker(markerBBox, labelBBox) {\r\n    var bBox = {};\r\n    bBox.left = _min(markerBBox.x, labelBBox.x);\r\n    bBox.top = _min(markerBBox.y, labelBBox.y);\r\n    bBox.right = _max(markerBBox.x + markerBBox.width, labelBBox.x + labelBBox.width);\r\n    bBox.bottom = _max(markerBBox.y + markerBBox.height, labelBBox.y + labelBBox.height);\r\n    return bBox\r\n}\r\n\r\nfunction applyMarkerState(id, idToIndexMap, items, stateName) {\r\n    var item = idToIndexMap && items[idToIndexMap[id]];\r\n    if (item) {\r\n        item.renderMarker(item.states[stateName])\r\n    }\r\n}\r\n\r\nfunction parseOptions(options, textField, allowInsidePosition) {\r\n    if (!options) {\r\n        return null\r\n    }\r\n    parseMargins(options);\r\n    options.horizontalAlignment = parseHorizontalAlignment(options.horizontalAlignment, RIGHT);\r\n    options.verticalAlignment = parseVerticalAlignment(options.verticalAlignment, options.horizontalAlignment === CENTER ? BOTTOM : TOP);\r\n    options.orientation = parseOrientation(options.orientation, options.horizontalAlignment === CENTER ? HORIZONTAL : VERTICAL);\r\n    options.itemTextPosition = parseItemTextPosition(options.itemTextPosition, options.orientation === HORIZONTAL ? BOTTOM : RIGHT);\r\n    options.position = allowInsidePosition ? parsePosition(options.position, OUTSIDE) : OUTSIDE;\r\n    options.itemsAlignment = parseItemsAlignment(options.itemsAlignment, null);\r\n    options.hoverMode = _normalizeEnum(options.hoverMode);\r\n    options.customizeText = _isFunction(options.customizeText) ? options.customizeText : function() {\r\n        return this[textField]\r\n    };\r\n    options.customizeHint = _isFunction(options.customizeHint) ? options.customizeHint : _common.noop;\r\n    options._incidentOccurred = options._incidentOccurred || _common.noop;\r\n    return options\r\n}\r\n\r\nfunction createSquareMarker(renderer, size) {\r\n    return renderer.rect(0, 0, size, size)\r\n}\r\n\r\nfunction createCircleMarker(renderer, size) {\r\n    return renderer.circle(size / 2, size / 2, size / 2)\r\n}\r\n\r\nfunction isCircle(type) {\r\n    return \"circle\" === _normalizeEnum(type)\r\n}\r\n\r\nfunction inRect(rect, x, y) {\r\n    return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\r\n}\r\n\r\nfunction checkLinesSize(lines, layoutOptions, countItems, margins) {\r\n    var position = {\r\n        x: 0,\r\n        y: 0\r\n    };\r\n    var maxMeasureLength = 0;\r\n    var maxAltMeasureLength = 0;\r\n    var margin = 0;\r\n    if (\"y\" === layoutOptions.direction) {\r\n        margin = margins.top + margins.bottom\r\n    } else {\r\n        margin = margins.left + margins.right\r\n    }\r\n    lines.forEach(function(line, i) {\r\n        var firstItem = line[0];\r\n        var lineLength = line.length;\r\n        line.forEach(function(item, index) {\r\n            var offset = item.offset || layoutOptions.spacing;\r\n            position[layoutOptions.direction] += item[layoutOptions.measure] + (index !== lineLength - 1 ? offset : 0);\r\n            maxMeasureLength = _max(maxMeasureLength, position[layoutOptions.direction])\r\n        });\r\n        position[layoutOptions.direction] = 0;\r\n        position[layoutOptions.altDirection] += firstItem[layoutOptions.altMeasure] + firstItem.altOffset || layoutOptions.altSpacing;\r\n        maxAltMeasureLength = _max(maxAltMeasureLength, position[layoutOptions.altDirection])\r\n    });\r\n    if (maxMeasureLength + margin > layoutOptions.length) {\r\n        layoutOptions.countItem = decreaseItemCount(layoutOptions, countItems);\r\n        return true\r\n    }\r\n}\r\n\r\nfunction decreaseItemCount(layoutOptions, countItems) {\r\n    layoutOptions.altCountItem++;\r\n    return _ceil(countItems / layoutOptions.altCountItem)\r\n}\r\n\r\nfunction getLineLength(line, layoutOptions) {\r\n    return line.reduce(function(lineLength, item) {\r\n        var offset = item.offset || layoutOptions.spacing;\r\n        return lineLength + item[layoutOptions.measure] + offset\r\n    }, 0)\r\n}\r\n\r\nfunction getMaxLineLength(lines, layoutOptions) {\r\n    return lines.reduce(function(maxLineLength, line) {\r\n        return _max(maxLineLength, getLineLength(line, layoutOptions))\r\n    }, 0)\r\n}\r\n\r\nfunction getInitPositionForDirection(line, layoutOptions, maxLineLength) {\r\n    var lineLength = getLineLength(line, layoutOptions);\r\n    var initPosition;\r\n    switch (layoutOptions.itemsAlignment) {\r\n        case RIGHT:\r\n            initPosition = maxLineLength - lineLength;\r\n            break;\r\n        case CENTER:\r\n            initPosition = (maxLineLength - lineLength) / 2;\r\n            break;\r\n        default:\r\n            initPosition = 0\r\n    }\r\n    return initPosition\r\n}\r\n\r\nfunction getPos(layoutOptions) {\r\n    switch (layoutOptions.itemTextPosition) {\r\n        case BOTTOM:\r\n            return {\r\n                horizontal: CENTER, vertical: TOP\r\n            };\r\n        case TOP:\r\n            return {\r\n                horizontal: CENTER, vertical: BOTTOM\r\n            };\r\n        case LEFT:\r\n            return {\r\n                horizontal: RIGHT, vertical: CENTER\r\n            };\r\n        case RIGHT:\r\n            return {\r\n                horizontal: LEFT, vertical: CENTER\r\n            }\r\n    }\r\n}\r\n\r\nfunction getLines(lines, layoutOptions, itemIndex) {\r\n    var tableLine = {};\r\n    if (itemIndex % layoutOptions.countItem === 0) {\r\n        if (layoutOptions.markerOffset) {\r\n            lines.push([], [])\r\n        } else {\r\n            lines.push([])\r\n        }\r\n    }\r\n    if (layoutOptions.markerOffset) {\r\n        tableLine.firstLine = lines[lines.length - 1];\r\n        tableLine.secondLine = lines[lines.length - 2]\r\n    } else {\r\n        tableLine.firstLine = tableLine.secondLine = lines[lines.length - 1]\r\n    }\r\n    return tableLine\r\n}\r\n\r\nfunction setMaxInLine(line, measure) {\r\n    var maxLineSize = line.reduce(function(maxLineSize, item) {\r\n        var itemMeasure = item ? item[measure] : maxLineSize;\r\n        return _max(maxLineSize, itemMeasure)\r\n    }, 0);\r\n    line.forEach(function(item) {\r\n        if (item) {\r\n            item[measure] = maxLineSize\r\n        }\r\n    })\r\n}\r\n\r\nfunction transpose(array) {\r\n    var width = array.length;\r\n    var height = array[0].length;\r\n    var i;\r\n    var j;\r\n    var transposeArray = [];\r\n    for (i = 0; i < height; i++) {\r\n        transposeArray[i] = [];\r\n        for (j = 0; j < width; j++) {\r\n            transposeArray[i][j] = array[j][i]\r\n        }\r\n    }\r\n    return transposeArray\r\n}\r\n\r\nfunction getAlign(position) {\r\n    switch (position) {\r\n        case TOP:\r\n        case BOTTOM:\r\n            return CENTER;\r\n        case LEFT:\r\n            return RIGHT;\r\n        case RIGHT:\r\n            return LEFT\r\n    }\r\n}\r\nvar getMarkerCreator = function(type) {\r\n    return isCircle(type) ? createCircleMarker : createSquareMarker\r\n};\r\n\r\nfunction getTitleHorizontalAlignment(options) {\r\n    if (options.horizontalAlignment === CENTER) {\r\n        return CENTER\r\n    } else {\r\n        if (options.itemTextPosition === RIGHT) {\r\n            return LEFT\r\n        } else {\r\n            if (options.itemTextPosition === LEFT) {\r\n                return RIGHT\r\n            } else {\r\n                return CENTER\r\n            }\r\n        }\r\n    }\r\n}\r\nvar Legend = function(settings) {\r\n    var that = this;\r\n    that._renderer = settings.renderer;\r\n    that._legendGroup = settings.group;\r\n    that._backgroundClass = settings.backgroundClass;\r\n    that._itemGroupClass = settings.itemGroupClass;\r\n    that._textField = settings.textField;\r\n    that._getCustomizeObject = settings.getFormatObject;\r\n    that._titleGroupClass = settings.titleGroupClass;\r\n    that._allowInsidePosition = settings.allowInsidePosition;\r\n    that._widget = settings.widget;\r\n    that._updated = false\r\n};\r\nexports.Legend = Legend;\r\nvar _Legend = Legend;\r\nvar legendPrototype = _Legend.prototype = (0, _object.clone)(_layout_element.LayoutElement.prototype);\r\n(0, _extend2.extend)(legendPrototype, {\r\n    constructor: _Legend,\r\n    getOptions: function() {\r\n        return this._options\r\n    },\r\n    update: function() {\r\n        var data = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\r\n        var options = arguments.length > 1 ? arguments[1] : void 0;\r\n        var themeManagerTitleOptions = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n        var that = this;\r\n        options = that._options = parseOptions(options, that._textField, that._allowInsidePosition) || {};\r\n        var initMarkerSize = options.markerSize;\r\n        this._updated = true;\r\n        this._data = data.map(function(dataItem) {\r\n            dataItem.size = _Number(dataItem.size > 0 ? dataItem.size : initMarkerSize);\r\n            dataItem.marker = getAttributes(dataItem, dataItem.states.normal);\r\n            Object.defineProperty(dataItem.marker, \"size\", {\r\n                get: function() {\r\n                    return dataItem.size\r\n                },\r\n                set: function(value) {\r\n                    dataItem.size = value\r\n                }\r\n            });\r\n            Object.defineProperty(dataItem.marker, \"opacity\", {\r\n                get: function() {\r\n                    return dataItem.states.normal.opacity\r\n                },\r\n                set: function(value) {\r\n                    dataItem.states.normal.opacity = dataItem.states.hover.opacity = dataItem.states.selection.opacity = value\r\n                }\r\n            });\r\n            return dataItem\r\n        });\r\n        if (options.customizeItems) {\r\n            that._data = options.customizeItems(data.slice()) || data\r\n        }\r\n        that._boundingRect = {\r\n            width: 0,\r\n            height: 0,\r\n            x: 0,\r\n            y: 0\r\n        };\r\n        if (that.isVisible() && !that._title) {\r\n            that._title = new _title.Title({\r\n                renderer: that._renderer,\r\n                cssClass: that._titleGroupClass,\r\n                root: that._legendGroup\r\n            })\r\n        }\r\n        if (that._title) {\r\n            var titleOptions = options.title;\r\n            themeManagerTitleOptions.horizontalAlignment = getTitleHorizontalAlignment(options);\r\n            that._title.update(themeManagerTitleOptions, titleOptions)\r\n        }\r\n        this.erase();\r\n        return that\r\n    },\r\n    isVisible: function() {\r\n        return this._options && this._options.visible\r\n    },\r\n    draw: function(width, height) {\r\n        var that = this;\r\n        var items = that._getItemData();\r\n        that.erase();\r\n        if (!(that.isVisible() && items && items.length)) {\r\n            return that\r\n        }\r\n        that._insideLegendGroup = that._renderer.g().enableLinks().append(that._legendGroup);\r\n        that._title.changeLink(that._insideLegendGroup);\r\n        that._createBackground();\r\n        if (that._title.hasText()) {\r\n            var horizontalPadding = that._background ? 2 * that._options.paddingLeftRight : 0;\r\n            that._title.draw(width - horizontalPadding, height)\r\n        }\r\n        that._markersGroup = that._renderer.g().attr({\r\n            \"class\": that._itemGroupClass\r\n        }).append(that._insideLegendGroup);\r\n        that._createItems(items);\r\n        that._updateElementsPosition(width, height);\r\n        return that\r\n    },\r\n    _measureElements: function() {\r\n        var options = this._options;\r\n        var maxBBoxHeight = 0;\r\n        this._items.forEach(function(item) {\r\n            var labelBBox = item.label.getBBox();\r\n            var markerBBox = item.marker.getBBox();\r\n            item.markerBBox = markerBBox;\r\n            item.markerSize = Math.max(markerBBox.width, markerBBox.height);\r\n            var bBox = getSizeItem(options, markerBBox, labelBBox);\r\n            item.labelBBox = labelBBox;\r\n            item.bBox = bBox;\r\n            maxBBoxHeight = _max(maxBBoxHeight, bBox.height)\r\n        });\r\n        if (options.equalRowHeight) {\r\n            this._items.forEach(function(item) {\r\n                return item.bBox.height = maxBBoxHeight\r\n            })\r\n        }\r\n    },\r\n    _updateElementsPosition: function(width, height) {\r\n        var that = this;\r\n        var options = that._options;\r\n        this._size = {\r\n            width: width,\r\n            height: height\r\n        };\r\n        that._measureElements();\r\n        that._locateElements(options);\r\n        that._finalUpdate(options);\r\n        var size = that.getLayoutOptions();\r\n        if (size.width > width || size.height > height) {\r\n            that.freeSpace()\r\n        }\r\n    },\r\n    _createItems: function(items) {\r\n        var that = this;\r\n        var options = that._options;\r\n        var renderer = that._renderer;\r\n        var createMarker = getMarkerCreator(options.markerShape);\r\n        that._markersId = {};\r\n        var templateFunction = !options.markerTemplate ? function(dataItem, group) {\r\n            var attrs = dataItem.marker;\r\n            createMarker(renderer, attrs.size).attr({\r\n                fill: attrs.fill,\r\n                opacity: attrs.opacity\r\n            }).append({\r\n                element: group\r\n            })\r\n        } : options.markerTemplate;\r\n        var template = that._widget._getTemplate(templateFunction);\r\n        var markersGroup = that._markersGroup;\r\n        markersGroup.css((0, _utils.patchFontOptions)(options.font));\r\n        that._deferredItems = [];\r\n        that._templatesGroups = [];\r\n        that._items = (items || []).map(function(dataItem, i) {\r\n            var stateOfDataItem = dataItem.states;\r\n            var normalState = stateOfDataItem.normal;\r\n            var normalStateFill = normalState.fill;\r\n            dataItem.size = dataItem.marker.size;\r\n            var states = {\r\n                normal: (0, _extend2.extend)(normalState, {\r\n                    fill: normalStateFill || options.markerColor || options.defaultColor,\r\n                    state: \"normal\"\r\n                }),\r\n                hover: getState(stateOfDataItem.hover, normalStateFill, \"hovered\"),\r\n                selection: getState(stateOfDataItem.selection, normalStateFill, \"selected\")\r\n            };\r\n            dataItem.states = states;\r\n            var itemGroup = renderer.g().append(markersGroup);\r\n            var markerGroup = renderer.g().attr({\r\n                \"class\": \"dxl-marker\"\r\n            }).append(itemGroup);\r\n            that._deferredItems[i] = new _deferred.Deferred;\r\n            that._templatesGroups.push(markerGroup);\r\n            var item = {\r\n                label: that._createLabel(dataItem, itemGroup),\r\n                marker: markerGroup,\r\n                renderer: renderer,\r\n                group: itemGroup,\r\n                tracker: {\r\n                    id: dataItem.id,\r\n                    argument: dataItem.argument,\r\n                    argumentIndex: dataItem.argumentIndex\r\n                },\r\n                states: states,\r\n                itemTextPosition: options.itemTextPosition,\r\n                markerOffset: 0,\r\n                bBoxes: [],\r\n                renderMarker: function(state) {\r\n                    dataItem.marker = getAttributes(item, state, dataItem.size);\r\n                    markerGroup.clear();\r\n                    template.render({\r\n                        model: dataItem,\r\n                        container: markerGroup.element,\r\n                        onRendered: that._deferredItems[i].resolve\r\n                    })\r\n                }\r\n            };\r\n            item.renderMarker(states.normal);\r\n            that._createHint(dataItem, itemGroup);\r\n            if (void 0 !== dataItem.id) {\r\n                that._markersId[dataItem.id] = i\r\n            }\r\n            return item\r\n        })\r\n    },\r\n    getTemplatesGroups: function() {\r\n        return this._templatesGroups || []\r\n    },\r\n    getTemplatesDef: function() {\r\n        return this._deferredItems || []\r\n    },\r\n    _getItemData: function() {\r\n        var items = this._data || [];\r\n        var options = this._options || {};\r\n        if (options.inverted) {\r\n            items = items.slice().reverse()\r\n        }\r\n        return items.filter(function(i) {\r\n            return i.visible\r\n        })\r\n    },\r\n    _finalUpdate: function(options) {\r\n        this._adjustBackgroundSettings(options);\r\n        this._setBoundingRect(options.margin)\r\n    },\r\n    erase: function() {\r\n        var that = this;\r\n        var insideLegendGroup = that._insideLegendGroup;\r\n        insideLegendGroup && insideLegendGroup.dispose();\r\n        that._insideLegendGroup = that._markersGroup = that._x1 = that._x2 = that._y2 = that._y2 = null;\r\n        return that\r\n    },\r\n    _locateElements: function(locationOptions) {\r\n        this._moveInInitialValues();\r\n        this._locateRowsColumns(locationOptions)\r\n    },\r\n    _moveInInitialValues: function() {\r\n        var that = this;\r\n        that._title.hasText() && that._title.move([0, 0]);\r\n        that._legendGroup && that._legendGroup.move(0, 0);\r\n        that._background && that._background.attr({\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        })\r\n    },\r\n    applySelected: function(id) {\r\n        applyMarkerState(id, this._markersId, this._items, \"selection\");\r\n        return this\r\n    },\r\n    applyHover: function(id) {\r\n        applyMarkerState(id, this._markersId, this._items, \"hover\");\r\n        return this\r\n    },\r\n    resetItem: function(id) {\r\n        applyMarkerState(id, this._markersId, this._items, \"normal\");\r\n        return this\r\n    },\r\n    _createLabel: function(data, group) {\r\n        var labelFormatObject = this._getCustomizeObject(data);\r\n        var options = this._options;\r\n        var align = getAlign(options.itemTextPosition);\r\n        var text = options.customizeText.call(labelFormatObject, labelFormatObject);\r\n        var fontStyle = _isDefined(data.textOpacity) ? {\r\n            color: options.font.color,\r\n            opacity: data.textOpacity\r\n        } : {};\r\n        return this._renderer.text(text, 0, 0).css((0, _utils.patchFontOptions)(fontStyle)).attr({\r\n            align: align,\r\n            \"class\": options.cssClass\r\n        }).append(group)\r\n    },\r\n    _createHint: function(data, group) {\r\n        var labelFormatObject = this._getCustomizeObject(data);\r\n        var text = this._options.customizeHint.call(labelFormatObject, labelFormatObject);\r\n        if (_isDefined(text) && \"\" !== text) {\r\n            group.setTitle(text)\r\n        }\r\n    },\r\n    _createBackground: function() {\r\n        var that = this;\r\n        var isInside = that._options.position === INSIDE;\r\n        var color = that._options.backgroundColor;\r\n        var fill = color || (isInside ? that._options.containerBackgroundColor : NONE);\r\n        if (that._options.border.visible || (isInside || color) && color !== NONE) {\r\n            that._background = that._renderer.rect(0, 0, 0, 0).attr({\r\n                fill: fill,\r\n                \"class\": that._backgroundClass\r\n            }).append(that._insideLegendGroup)\r\n        }\r\n    },\r\n    _locateRowsColumns: function(options) {\r\n        var that = this;\r\n        var iteration = 0;\r\n        var layoutOptions = that._getItemsLayoutOptions();\r\n        var countItems = that._items.length;\r\n        var lines;\r\n        do {\r\n            lines = [];\r\n            that._createLines(lines, layoutOptions);\r\n            that._alignLines(lines, layoutOptions);\r\n            iteration++\r\n        } while (checkLinesSize(lines, layoutOptions, countItems, options.margin) && iteration < countItems);\r\n        that._applyItemPosition(lines, layoutOptions)\r\n    },\r\n    _createLines: function(lines, layoutOptions) {\r\n        this._items.forEach(function(item, i) {\r\n            var tableLine = getLines(lines, layoutOptions, i);\r\n            var labelBox = {\r\n                width: item.labelBBox.width,\r\n                height: item.labelBBox.height,\r\n                element: item.label,\r\n                bBox: item.labelBBox,\r\n                pos: getPos(layoutOptions),\r\n                itemIndex: i\r\n            };\r\n            var markerBox = {\r\n                width: item.markerBBox.width,\r\n                height: item.markerBBox.height,\r\n                element: item.marker,\r\n                pos: {\r\n                    horizontal: CENTER,\r\n                    vertical: CENTER\r\n                },\r\n                bBox: {\r\n                    width: item.markerBBox.width,\r\n                    height: item.markerBBox.height,\r\n                    x: item.markerBBox.x,\r\n                    y: item.markerBBox.y\r\n                },\r\n                itemIndex: i\r\n            };\r\n            var firstItem;\r\n            var secondItem;\r\n            var offsetDirection = layoutOptions.markerOffset ? \"altOffset\" : \"offset\";\r\n            if (layoutOptions.inverseLabelPosition) {\r\n                firstItem = labelBox;\r\n                secondItem = markerBox\r\n            } else {\r\n                firstItem = markerBox;\r\n                secondItem = labelBox\r\n            }\r\n            firstItem[offsetDirection] = layoutOptions.labelOffset;\r\n            tableLine.secondLine.push(firstItem);\r\n            tableLine.firstLine.push(secondItem)\r\n        })\r\n    },\r\n    _alignLines: function(lines, layoutOptions) {\r\n        var i;\r\n        var measure = layoutOptions.altMeasure;\r\n        lines.forEach(function(line) {\r\n            return setMaxInLine(line, measure)\r\n        });\r\n        measure = layoutOptions.measure;\r\n        if (layoutOptions.itemsAlignment) {\r\n            if (layoutOptions.markerOffset) {\r\n                for (i = 0; i < lines.length;) {\r\n                    transpose([lines[i++], lines[i++]]).forEach(processLine)\r\n                }\r\n            }\r\n        } else {\r\n            transpose(lines).forEach(processLine)\r\n        }\r\n\r\n        function processLine(line) {\r\n            setMaxInLine(line, measure)\r\n        }\r\n    },\r\n    _applyItemPosition: function(lines, layoutOptions) {\r\n        var that = this;\r\n        var position = {\r\n            x: 0,\r\n            y: 0\r\n        };\r\n        var maxLineLength = getMaxLineLength(lines, layoutOptions);\r\n        lines.forEach(function(line) {\r\n            var firstItem = line[0];\r\n            var altOffset = firstItem.altOffset || layoutOptions.altSpacing;\r\n            position[layoutOptions.direction] = getInitPositionForDirection(line, layoutOptions, maxLineLength);\r\n            line.forEach(function(item) {\r\n                var offset = item.offset || layoutOptions.spacing;\r\n                var wrap = new _layout_element.WrapperLayoutElement(item.element, item.bBox);\r\n                var itemBBoxOptions = {\r\n                    x: position.x,\r\n                    y: position.y,\r\n                    width: item.width,\r\n                    height: item.height\r\n                };\r\n                var itemBBox = new _layout_element.WrapperLayoutElement(null, itemBBoxOptions);\r\n                var itemLegend = that._items[item.itemIndex];\r\n                wrap.position({\r\n                    of: itemBBox,\r\n                    my: item.pos,\r\n                    at: item.pos\r\n                });\r\n                itemLegend.bBoxes.push(itemBBox);\r\n                position[layoutOptions.direction] += item[layoutOptions.measure] + offset\r\n            });\r\n            position[layoutOptions.altDirection] += firstItem[layoutOptions.altMeasure] + altOffset\r\n        });\r\n        this._items.forEach(function(item) {\r\n            var itemBBox = calculateBBoxLabelAndMarker(item.bBoxes[0].getLayoutOptions(), item.bBoxes[1].getLayoutOptions());\r\n            var horizontal = that._options.columnItemSpacing / 2;\r\n            var vertical = that._options.rowItemSpacing / 2;\r\n            item.tracker.left = itemBBox.left - horizontal;\r\n            item.tracker.right = itemBBox.right + horizontal;\r\n            item.tracker.top = itemBBox.top - vertical;\r\n            item.tracker.bottom = itemBBox.bottom + vertical\r\n        })\r\n    },\r\n    _getItemsLayoutOptions: function() {\r\n        var that = this;\r\n        var options = that._options;\r\n        var orientation = options.orientation;\r\n        var layoutOptions = {\r\n            itemsAlignment: options.itemsAlignment,\r\n            orientation: options.orientation\r\n        };\r\n        var width = that._size.width - (that._background ? 2 * options.paddingLeftRight : 0);\r\n        var height = that._size.height - (that._background ? 2 * options.paddingTopBottom : 0);\r\n        if (orientation === HORIZONTAL) {\r\n            layoutOptions.length = width;\r\n            layoutOptions.spacing = options.columnItemSpacing;\r\n            layoutOptions.direction = \"x\";\r\n            layoutOptions.measure = WIDTH;\r\n            layoutOptions.altMeasure = HEIGHT;\r\n            layoutOptions.altDirection = \"y\";\r\n            layoutOptions.altSpacing = options.rowItemSpacing;\r\n            layoutOptions.countItem = options.columnCount;\r\n            layoutOptions.altCountItem = options.rowCount;\r\n            layoutOptions.marginTextLabel = 4;\r\n            layoutOptions.labelOffset = 7;\r\n            if (options.itemTextPosition === BOTTOM || options.itemTextPosition === TOP) {\r\n                layoutOptions.labelOffset = 4;\r\n                layoutOptions.markerOffset = true\r\n            }\r\n        } else {\r\n            layoutOptions.length = height;\r\n            layoutOptions.spacing = options.rowItemSpacing;\r\n            layoutOptions.direction = \"y\";\r\n            layoutOptions.measure = HEIGHT;\r\n            layoutOptions.altMeasure = WIDTH;\r\n            layoutOptions.altDirection = \"x\";\r\n            layoutOptions.altSpacing = options.columnItemSpacing;\r\n            layoutOptions.countItem = options.rowCount;\r\n            layoutOptions.altCountItem = options.columnCount;\r\n            layoutOptions.marginTextLabel = 7;\r\n            layoutOptions.labelOffset = 4;\r\n            if (options.itemTextPosition === RIGHT || options.itemTextPosition === LEFT) {\r\n                layoutOptions.labelOffset = 7;\r\n                layoutOptions.markerOffset = true\r\n            }\r\n        }\r\n        if (!layoutOptions.countItem) {\r\n            if (layoutOptions.altCountItem) {\r\n                layoutOptions.countItem = _ceil(that._items.length / layoutOptions.altCountItem)\r\n            } else {\r\n                layoutOptions.countItem = that._items.length\r\n            }\r\n        }\r\n        if (options.itemTextPosition === TOP || options.itemTextPosition === LEFT) {\r\n            layoutOptions.inverseLabelPosition = true\r\n        }\r\n        layoutOptions.itemTextPosition = options.itemTextPosition;\r\n        layoutOptions.altCountItem = layoutOptions.altCountItem || _ceil(that._items.length / layoutOptions.countItem);\r\n        return layoutOptions\r\n    },\r\n    _adjustBackgroundSettings: function(locationOptions) {\r\n        if (!this._background) {\r\n            return\r\n        }\r\n        var border = locationOptions.border;\r\n        var legendBox = this._calculateTotalBox();\r\n        var backgroundSettings = {\r\n            x: _round(legendBox.x - locationOptions.paddingLeftRight),\r\n            y: _round(legendBox.y - locationOptions.paddingTopBottom),\r\n            width: _round(legendBox.width) + 2 * locationOptions.paddingLeftRight,\r\n            height: _round(legendBox.height),\r\n            opacity: locationOptions.backgroundOpacity\r\n        };\r\n        if (border.visible && border.width && border.color && border.color !== NONE) {\r\n            backgroundSettings[\"stroke-width\"] = border.width;\r\n            backgroundSettings.stroke = border.color;\r\n            backgroundSettings[\"stroke-opacity\"] = border.opacity;\r\n            backgroundSettings.dashStyle = border.dashStyle;\r\n            backgroundSettings.rx = border.cornerRadius || 0;\r\n            backgroundSettings.ry = border.cornerRadius || 0\r\n        }\r\n        this._background.attr(backgroundSettings)\r\n    },\r\n    _setBoundingRect: function(margin) {\r\n        if (!this._insideLegendGroup) {\r\n            return\r\n        }\r\n        var box = this._calculateTotalBox();\r\n        box.height += margin.top + margin.bottom;\r\n        box.widthWithoutMargins = box.width;\r\n        box.width += margin.left + margin.right;\r\n        box.x -= margin.left;\r\n        box.y -= margin.top;\r\n        this._boundingRect = box\r\n    },\r\n    _calculateTotalBox: function() {\r\n        var markerBox = this._markersGroup.getBBox();\r\n        var titleBox = this._title.getCorrectedLayoutOptions();\r\n        var box = this._insideLegendGroup.getBBox();\r\n        var verticalPadding = this._background ? 2 * this._options.paddingTopBottom : 0;\r\n        box.height = markerBox.height + titleBox.height + verticalPadding;\r\n        titleBox.width > box.width && (box.width = titleBox.width);\r\n        return box\r\n    },\r\n    getActionCallback: function(point) {\r\n        var that = this;\r\n        if (that._options.visible) {\r\n            return function(act) {\r\n                that[act](point.index)\r\n            }\r\n        } else {\r\n            return _common.noop\r\n        }\r\n    },\r\n    getLayoutOptions: function() {\r\n        var options = this._options;\r\n        var boundingRect = this._insideLegendGroup ? this._boundingRect : {\r\n            width: 0,\r\n            height: 0,\r\n            x: 0,\r\n            y: 0\r\n        };\r\n        if (options) {\r\n            boundingRect.verticalAlignment = options.verticalAlignment;\r\n            boundingRect.horizontalAlignment = options.horizontalAlignment;\r\n            if (options.orientation === HORIZONTAL) {\r\n                boundingRect.cutLayoutSide = options.verticalAlignment;\r\n                boundingRect.cutSide = \"vertical\"\r\n            } else {\r\n                if (options.horizontalAlignment === CENTER) {\r\n                    boundingRect.cutLayoutSide = options.verticalAlignment;\r\n                    boundingRect.cutSide = \"vertical\"\r\n                } else {\r\n                    boundingRect.cutLayoutSide = options.horizontalAlignment;\r\n                    boundingRect.cutSide = \"horizontal\"\r\n                }\r\n            }\r\n            boundingRect.position = {\r\n                horizontal: options.horizontalAlignment,\r\n                vertical: options.verticalAlignment\r\n            };\r\n            return boundingRect\r\n        }\r\n        return null\r\n    },\r\n    shift: function(x, y) {\r\n        var that = this;\r\n        var box = {};\r\n        if (that._insideLegendGroup) {\r\n            that._insideLegendGroup.attr({\r\n                translateX: x - that._boundingRect.x,\r\n                translateY: y - that._boundingRect.y\r\n            })\r\n        }\r\n        that._title && that._shiftTitle(that._boundingRect.widthWithoutMargins);\r\n        that._markersGroup && that._shiftMarkers();\r\n        if (that._insideLegendGroup) {\r\n            box = that._legendGroup.getBBox()\r\n        }\r\n        that._x1 = box.x;\r\n        that._y1 = box.y;\r\n        that._x2 = box.x + box.width;\r\n        that._y2 = box.y + box.height;\r\n        return that\r\n    },\r\n    _shiftTitle: function(boxWidth) {\r\n        var that = this;\r\n        var title = that._title;\r\n        var titleBox = title.getCorrectedLayoutOptions();\r\n        if (!titleBox || !title.hasText()) {\r\n            return\r\n        }\r\n        var width = boxWidth - (that._background ? 2 * that._options.paddingLeftRight : 0);\r\n        var titleOptions = title.getOptions();\r\n        var titleY = titleBox.y + titleOptions.margin.top;\r\n        var titleX = 0;\r\n        if (titleOptions.verticalAlignment === BOTTOM && that._markersGroup) {\r\n            titleY += that._markersGroup.getBBox().height\r\n        }\r\n        if (titleOptions.horizontalAlignment === RIGHT) {\r\n            titleX = width - titleBox.width\r\n        } else {\r\n            if (titleOptions.horizontalAlignment === CENTER) {\r\n                titleX = (width - titleBox.width) / 2\r\n            }\r\n        }\r\n        title.shift(titleX, titleY)\r\n    },\r\n    _shiftMarkers: function() {\r\n        var titleBox = this._title.getLayoutOptions();\r\n        var markerBox = this._markersGroup.getBBox();\r\n        var titleOptions = this._title.getOptions() || {};\r\n        var center = 0;\r\n        var y = 0;\r\n        if (titleBox.width > markerBox.width && this._options.horizontalAlignment === CENTER) {\r\n            center = titleBox.width / 2 - markerBox.width / 2\r\n        }\r\n        if (titleOptions.verticalAlignment === TOP) {\r\n            y = titleBox.height\r\n        }\r\n        if (0 !== center || 0 !== y) {\r\n            this._markersGroup.attr({\r\n                translateX: center,\r\n                translateY: y\r\n            });\r\n            this._items.forEach(function(item) {\r\n                item.tracker.left += center;\r\n                item.tracker.right += center;\r\n                item.tracker.top += y;\r\n                item.tracker.bottom += y\r\n            })\r\n        }\r\n    },\r\n    getPosition: function() {\r\n        return this._options.position\r\n    },\r\n    coordsIn: function(x, y) {\r\n        return x >= this._x1 && x <= this._x2 && y >= this._y1 && y <= this._y2\r\n    },\r\n    getItemByCoord: function(x, y) {\r\n        var items = this._items;\r\n        var legendGroup = this._insideLegendGroup;\r\n        x -= legendGroup.attr(\"translateX\");\r\n        y -= legendGroup.attr(\"translateY\");\r\n        for (var i = 0; i < items.length; i++) {\r\n            if (inRect(items[i].tracker, x, y)) {\r\n                return items[i].tracker\r\n            }\r\n        }\r\n        return null\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        that._title && that._title.dispose();\r\n        that._legendGroup = that._insideLegendGroup = that._title = that._renderer = that._options = that._data = that._items = null;\r\n        return that\r\n    },\r\n    layoutOptions: function() {\r\n        if (!this.isVisible()) {\r\n            return null\r\n        }\r\n        var pos = this.getLayoutOptions();\r\n        return {\r\n            horizontalAlignment: this._options.horizontalAlignment,\r\n            verticalAlignment: this._options.verticalAlignment,\r\n            side: pos.cutSide,\r\n            priority: 1,\r\n            position: this.getPosition()\r\n        }\r\n    },\r\n    measure: function(size) {\r\n        if (this._updated || !this._insideLegendGroup) {\r\n            this.draw(size[0], size[1]);\r\n            this._updated = false\r\n        } else {\r\n            this._items.forEach(function(item) {\r\n                item.bBoxes = []\r\n            });\r\n            this._updateElementsPosition(size[0], size[1])\r\n        }\r\n        var rect = this.getLayoutOptions();\r\n        return [rect.width, rect.height]\r\n    },\r\n    move: function(rect) {\r\n        this.shift(rect[0], rect[1])\r\n    },\r\n    freeSpace: function() {\r\n        this._options._incidentOccurred(\"W2104\");\r\n        this.erase()\r\n    }\r\n});\r\nvar plugin = {\r\n    name: \"legend\",\r\n    init: function() {\r\n        var that = this;\r\n        var group = this._renderer.g().attr({\r\n            \"class\": this._rootClassPrefix + \"-legend\"\r\n        }).enableLinks().append(that._renderer.root);\r\n        that._legend = new Legend({\r\n            renderer: that._renderer,\r\n            group: group,\r\n            widget: this,\r\n            itemGroupClass: this._rootClassPrefix + \"-item\",\r\n            titleGroupClass: this._rootClassPrefix + \"-title\",\r\n            textField: \"text\",\r\n            getFormatObject: function(data) {\r\n                return {\r\n                    item: data.item,\r\n                    text: data.text\r\n                }\r\n            }\r\n        });\r\n        that._layout.add(that._legend)\r\n    },\r\n    extenders: {\r\n        _applyTilesAppearance: function() {\r\n            var that = this;\r\n            this._items.forEach(function(item) {\r\n                that._applyLegendItemStyle(item.id, item.getState())\r\n            })\r\n        },\r\n        _buildNodes: function() {\r\n            this._createLegendItems()\r\n        }\r\n    },\r\n    members: {\r\n        _applyLegendItemStyle: function(id, state) {\r\n            var legend = this._legend;\r\n            switch (state) {\r\n                case \"hover\":\r\n                    legend.applyHover(id);\r\n                    break;\r\n                case \"selection\":\r\n                    legend.applySelected(id);\r\n                    break;\r\n                default:\r\n                    legend.resetItem(id)\r\n            }\r\n        },\r\n        _createLegendItems: function() {\r\n            if (this._legend.update(this._getLegendData(), this._getOption(\"legend\"), this._themeManager.theme(\"legend\").title)) {\r\n                this._requestChange([\"LAYOUT\"])\r\n            }\r\n        }\r\n    },\r\n    dispose: function() {\r\n        this._legend.dispose()\r\n    },\r\n    customize: function(constructor) {\r\n        constructor.prototype._proxyData.push(function(x, y) {\r\n            if (this._legend.coordsIn(x, y)) {\r\n                var item = this._legend.getItemByCoord(x, y);\r\n                if (item) {\r\n                    return {\r\n                        id: item.id,\r\n                        type: \"legend\"\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        constructor.addChange({\r\n            code: \"LEGEND\",\r\n            handler: function() {\r\n                this._createLegendItems()\r\n            },\r\n            isThemeDependent: true,\r\n            option: \"legend\",\r\n            isOptionChange: true\r\n        })\r\n    }\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (ui/text_box.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _text_box = _interopRequireDefault(require(\"./text_box/text_box\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _text_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/data_source.utils.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.sort = sort;\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction sort(loadOptions, dataSource, getAscOrder) {\r\n    sortDimension(dataSource, loadOptions, \"rows\", getAscOrder);\r\n    sortDimension(dataSource, loadOptions, \"columns\", getAscOrder)\r\n}\r\n\r\nfunction sortDimension(dataSource, loadOptions, dimensionName, getAscOrder) {\r\n    var fields = loadOptions[dimensionName] || [];\r\n    var baseIndex = loadOptions.headerName === dimensionName ? loadOptions.path.length : 0;\r\n    var sortingMethodByLevel = [];\r\n    (0, _uiPivot_grid.foreachDataLevel)(dataSource[dimensionName], function(item, index) {\r\n        var field = fields[index] || {};\r\n        var sortingMethod = sortingMethodByLevel[index] = sortingMethodByLevel[index] || getSortingMethod(field, dataSource, loadOptions, dimensionName, getAscOrder);\r\n        item.sort(sortingMethod)\r\n    }, baseIndex)\r\n}\r\n\r\nfunction getSortingMethod(field, dataSource, loadOptions, dimensionName, getAscOrder) {\r\n    var sortOrder = getAscOrder ? \"asc\" : field.sortOrder;\r\n    var sortBy = getMemberForSortBy(field.sortBy, getAscOrder);\r\n    var defaultCompare = field.sortingMethod ? function(a, b) {\r\n        return field.sortingMethod(a, b)\r\n    } : (0, _uiPivot_grid.getCompareFunction)(function(item) {\r\n        return item[sortBy]\r\n    });\r\n    var summaryValueSelector = !getAscOrder && getFieldSummaryValueSelector(field, dataSource, loadOptions, dimensionName);\r\n    var summaryCompare = summaryValueSelector && (0, _uiPivot_grid.getCompareFunction)(summaryValueSelector);\r\n    var sortingMethod = function(a, b) {\r\n        var result = summaryCompare && summaryCompare(a, b) || defaultCompare(a, b);\r\n        return \"desc\" === sortOrder ? -result : result\r\n    };\r\n    return sortingMethod\r\n}\r\n\r\nfunction getFieldSummaryValueSelector(field, dataSource, loadOptions, dimensionName) {\r\n    var values = dataSource.values;\r\n    var sortBySummaryFieldIndex = (0, _uiPivot_grid.findField)(loadOptions.values, field.sortBySummaryField);\r\n    var areRows = \"rows\" === dimensionName;\r\n    var sortByDimension = areRows ? dataSource.columns : dataSource.rows;\r\n    var grandTotalIndex = areRows ? dataSource.grandTotalRowIndex : dataSource.grandTotalColumnIndex;\r\n    var sortBySummaryPath = field.sortBySummaryPath || [];\r\n    var sliceIndex = sortBySummaryPath.length ? getSliceIndex(sortByDimension, sortBySummaryPath) : grandTotalIndex;\r\n    if (values && values.length && sortBySummaryFieldIndex >= 0 && (0, _type.isDefined)(sliceIndex)) {\r\n        return function(field) {\r\n            var rowIndex = areRows ? field.index : sliceIndex;\r\n            var columnIndex = areRows ? sliceIndex : field.index;\r\n            var value = ((values[rowIndex] || [\r\n                []\r\n            ])[columnIndex] || [])[sortBySummaryFieldIndex];\r\n            return (0, _type.isDefined)(value) ? value : null\r\n        }\r\n    }\r\n}\r\n\r\nfunction getMemberForSortBy(sortBy, getAscOrder) {\r\n    var member = \"text\";\r\n    if (\"none\" === sortBy) {\r\n        member = \"index\"\r\n    } else {\r\n        if (getAscOrder || \"displayText\" !== sortBy) {\r\n            member = \"value\"\r\n        }\r\n    }\r\n    return member\r\n}\r\n\r\nfunction getSliceIndex(items, path) {\r\n    var index = null;\r\n    var pathValue = (path || []).join(\".\");\r\n    if (pathValue.length) {\r\n        (0, _uiPivot_grid.foreachTree)(items, function(items) {\r\n            var item = items[0];\r\n            var itemPath = (0, _uiPivot_grid.createPath)(items).join(\".\");\r\n            var textPath = (0, _iterator.map)(items, function(item) {\r\n                return item.text\r\n            }).reverse().join(\".\");\r\n            if (pathValue === itemPath || item.key && textPath === pathValue) {\r\n                index = items[0].index;\r\n                return false\r\n            }\r\n        })\r\n    }\r\n    return index\r\n}\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.data_controller.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _custom_store = _interopRequireDefault(require(\"../../data/custom_store\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _array_compare = require(\"../../core/utils/array_compare\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = {\r\n    defaultOptions: function() {\r\n        return {\r\n            loadingTimeout: 0,\r\n            dataSource: null,\r\n            cacheEnabled: true,\r\n            repaintChangesOnly: false,\r\n            highlightChanges: false,\r\n            onDataErrorOccurred: null,\r\n            remoteOperations: \"auto\",\r\n            paging: {\r\n                enabled: true,\r\n                pageSize: void 0,\r\n                pageIndex: void 0\r\n            }\r\n        }\r\n    },\r\n    controllers: {\r\n        data: _uiGrid_core.default.Controller.inherit({}).include(_data_helper.default).inherit(function() {\r\n            var changePaging = function(that, optionName, value) {\r\n                var dataSource = that._dataSource;\r\n                if (dataSource) {\r\n                    if (void 0 !== value) {\r\n                        if (dataSource[optionName]() !== value) {\r\n                            if (\"pageSize\" === optionName) {\r\n                                dataSource.pageIndex(0)\r\n                            }\r\n                            dataSource[optionName](value);\r\n                            that._skipProcessingPagingChange = true;\r\n                            that.option(\"paging.\" + optionName, value);\r\n                            that._skipProcessingPagingChange = false;\r\n                            return dataSource[\"pageIndex\" === optionName ? \"load\" : \"reload\"]().done(that.pageChanged.fire.bind(that.pageChanged))\r\n                        }\r\n                        return (0, _deferred.Deferred)().resolve().promise()\r\n                    }\r\n                    return dataSource[optionName]()\r\n                }\r\n                return 0\r\n            };\r\n            var members = {\r\n                init: function() {\r\n                    var _this = this;\r\n                    var that = this;\r\n                    that._items = [];\r\n                    that._columnsController = that.getController(\"columns\");\r\n                    that._currentOperationTypes = null;\r\n                    that._dataChangedHandler = function(e) {\r\n                        that._currentOperationTypes = _this._dataSource.operationTypes();\r\n                        that._handleDataChanged(e);\r\n                        that._currentOperationTypes = null\r\n                    };\r\n                    that._columnsChangedHandler = that._handleColumnsChanged.bind(that);\r\n                    that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n                    that._loadErrorHandler = that._handleLoadError.bind(that);\r\n                    that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);\r\n                    that._changingHandler = that._handleChanging.bind(that);\r\n                    that._columnsController.columnsChanged.add(that._columnsChangedHandler);\r\n                    that._isLoading = false;\r\n                    that._isCustomLoading = false;\r\n                    that._repaintChangesOnly = void 0;\r\n                    that._changes = [];\r\n                    that.createAction(\"onDataErrorOccurred\");\r\n                    that.dataErrorOccurred.add(function(error) {\r\n                        return that.executeAction(\"onDataErrorOccurred\", {\r\n                            error: error\r\n                        })\r\n                    });\r\n                    that._refreshDataSource()\r\n                },\r\n                callbackNames: function() {\r\n                    return [\"changed\", \"loadingChanged\", \"dataErrorOccurred\", \"pageChanged\", \"dataSourceChanged\"]\r\n                },\r\n                callbackFlags: function(name) {\r\n                    if (\"dataErrorOccurred\" === name) {\r\n                        return {\r\n                            stopOnFalse: true\r\n                        }\r\n                    }\r\n                },\r\n                publicMethods: function() {\r\n                    return [\"beginCustomLoading\", \"endCustomLoading\", \"refresh\", \"filter\", \"clearFilter\", \"getCombinedFilter\", \"keyOf\", \"byKey\", \"getDataByKeys\", \"pageIndex\", \"pageSize\", \"pageCount\", \"totalCount\", \"_disposeDataSource\", \"getKeyByRowIndex\", \"getRowIndexByKey\", \"getDataSource\", \"getVisibleRows\", \"repaintRows\"]\r\n                },\r\n                reset: function() {\r\n                    this._columnsController.reset();\r\n                    this._items = [];\r\n                    this._refreshDataSource()\r\n                },\r\n                optionChanged: function(args) {\r\n                    var that = this;\r\n                    var dataSource;\r\n\r\n                    function handled() {\r\n                        args.handled = true\r\n                    }\r\n                    if (\"dataSource\" === args.name && args.name === args.fullName && (args.value === args.previousValue || that.option(\"columns\") && Array.isArray(args.value) && Array.isArray(args.previousValue))) {\r\n                        if (args.value !== args.previousValue) {\r\n                            var store = that.store();\r\n                            if (store) {\r\n                                store._array = args.value\r\n                            }\r\n                        }\r\n                        handled();\r\n                        that.refresh(that.option(\"repaintChangesOnly\"));\r\n                        return\r\n                    }\r\n                    switch (args.name) {\r\n                        case \"cacheEnabled\":\r\n                        case \"repaintChangesOnly\":\r\n                        case \"highlightChanges\":\r\n                        case \"loadingTimeout\":\r\n                            handled();\r\n                            break;\r\n                        case \"remoteOperations\":\r\n                        case \"keyExpr\":\r\n                        case \"dataSource\":\r\n                        case \"scrolling\":\r\n                            handled();\r\n                            that.reset();\r\n                            break;\r\n                        case \"paging\":\r\n                            dataSource = that.dataSource();\r\n                            if (dataSource && that._setPagingOptions(dataSource)) {\r\n                                dataSource.load().done(that.pageChanged.fire.bind(that.pageChanged))\r\n                            }\r\n                            handled();\r\n                            break;\r\n                        case \"rtlEnabled\":\r\n                            that.reset();\r\n                            break;\r\n                        case \"columns\":\r\n                            dataSource = that.dataSource();\r\n                            if (dataSource && dataSource.isLoading() && args.name === args.fullName) {\r\n                                this._useSortingGroupingFromColumns = true;\r\n                                dataSource.load()\r\n                            }\r\n                            break;\r\n                        default:\r\n                            that.callBase(args)\r\n                    }\r\n                },\r\n                isReady: function() {\r\n                    return !this._isLoading\r\n                },\r\n                getDataSource: function() {\r\n                    return this._dataSource && this._dataSource._dataSource\r\n                },\r\n                getCombinedFilter: function(returnDataField) {\r\n                    return this.combinedFilter(void 0, returnDataField)\r\n                },\r\n                combinedFilter: function(filter, returnDataField) {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var columnsController = that._columnsController;\r\n                    if (dataSource) {\r\n                        if (void 0 === filter) {\r\n                            filter = dataSource.filter()\r\n                        }\r\n                        var additionalFilter = that._calculateAdditionalFilter();\r\n                        if (additionalFilter) {\r\n                            if (columnsController.isDataSourceApplied() || columnsController.isAllDataTypesDefined()) {\r\n                                filter = _uiGrid_core2.default.combineFilters([additionalFilter, filter])\r\n                            }\r\n                        }\r\n                        filter = columnsController.updateFilter(filter, returnDataField || dataSource.remoteOperations().filtering)\r\n                    }\r\n                    return filter\r\n                },\r\n                waitReady: function() {\r\n                    if (this._updateLockCount) {\r\n                        this._readyDeferred = new _deferred.Deferred;\r\n                        return this._readyDeferred\r\n                    }\r\n                    return (0, _deferred.when)()\r\n                },\r\n                _endUpdateCore: function() {\r\n                    var changes = this._changes;\r\n                    if (changes.length) {\r\n                        this._changes = [];\r\n                        var repaintChangesOnly = changes.every(function(change) {\r\n                            return change.repaintChangesOnly\r\n                        });\r\n                        this.updateItems(1 === changes.length ? changes[0] : {\r\n                            repaintChangesOnly: repaintChangesOnly\r\n                        })\r\n                    }\r\n                    if (this._readyDeferred) {\r\n                        this._readyDeferred.resolve();\r\n                        this._readyDeferred = null\r\n                    }\r\n                },\r\n                _handleCustomizeStoreLoadOptions: function(e) {\r\n                    var columnsController = this._columnsController;\r\n                    var dataSource = this._dataSource;\r\n                    var storeLoadOptions = e.storeLoadOptions;\r\n                    if (e.isCustomLoading && !storeLoadOptions.isLoadingAll) {\r\n                        return\r\n                    }\r\n                    storeLoadOptions.filter = this.combinedFilter(storeLoadOptions.filter);\r\n                    if (!columnsController.isDataSourceApplied()) {\r\n                        columnsController.updateColumnDataTypes(dataSource)\r\n                    }\r\n                    this._columnsUpdating = true;\r\n                    columnsController.updateSortingGrouping(dataSource, !this._useSortingGroupingFromColumns);\r\n                    this._columnsUpdating = false;\r\n                    storeLoadOptions.sort = columnsController.getSortDataSourceParameters();\r\n                    storeLoadOptions.group = columnsController.getGroupDataSourceParameters();\r\n                    dataSource.sort(storeLoadOptions.sort);\r\n                    dataSource.group(storeLoadOptions.group);\r\n                    storeLoadOptions.sort = columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().sorting);\r\n                    e.group = columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().grouping)\r\n                },\r\n                _handleColumnsChanged: function(e) {\r\n                    var that = this;\r\n                    var changeTypes = e.changeTypes;\r\n                    var optionNames = e.optionNames;\r\n                    var filterValue;\r\n                    var filterValues;\r\n                    var filterApplied;\r\n                    var updateItemsHandler = function updateItemsHandler() {\r\n                        that._columnsController.columnsChanged.remove(updateItemsHandler);\r\n                        that.updateItems()\r\n                    };\r\n                    if (changeTypes.sorting || changeTypes.grouping) {\r\n                        if (that._dataSource && !that._columnsUpdating) {\r\n                            that._dataSource.group(that._columnsController.getGroupDataSourceParameters());\r\n                            that._dataSource.sort(that._columnsController.getSortDataSourceParameters());\r\n                            that.reload()\r\n                        }\r\n                    } else {\r\n                        if (changeTypes.columns) {\r\n                            if (optionNames.filterValues || optionNames.filterValue || optionNames.selectedFilterOperation) {\r\n                                filterValue = that._columnsController.columnOption(e.columnIndex, \"filterValue\");\r\n                                filterValues = that._columnsController.columnOption(e.columnIndex, \"filterValues\");\r\n                                if (Array.isArray(filterValues) || void 0 === e.columnIndex || (0, _type.isDefined)(filterValue) || !optionNames.selectedFilterOperation || optionNames.filterValue) {\r\n                                    that._applyFilter();\r\n                                    filterApplied = true\r\n                                }\r\n                            }\r\n                            if (!that._needApplyFilter && !_uiGrid_core2.default.checkChanges(optionNames, [\"width\", \"visibleWidth\", \"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"filterValues\", \"filterType\"])) {\r\n                                that._columnsController.columnsChanged.add(updateItemsHandler)\r\n                            }\r\n                            if ((0, _type.isDefined)(optionNames.visible)) {\r\n                                var column = that._columnsController.columnOption(e.columnIndex);\r\n                                if (column && ((0, _type.isDefined)(column.filterValue) || (0, _type.isDefined)(column.filterValues))) {\r\n                                    that._applyFilter();\r\n                                    filterApplied = true\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    if (!filterApplied && changeTypes.filtering) {\r\n                        that.reload()\r\n                    }\r\n                },\r\n                _handleDataChanged: function(e) {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var columnsController = that._columnsController;\r\n                    var isAsyncDataSourceApplying = false;\r\n                    this._useSortingGroupingFromColumns = false;\r\n                    if (dataSource && !that._isDataSourceApplying) {\r\n                        that._isDataSourceApplying = true;\r\n                        (0, _deferred.when)(that._columnsController.applyDataSource(dataSource)).done(function() {\r\n                            if (that._isLoading) {\r\n                                that._handleLoadingChanged(false)\r\n                            }\r\n                            if (isAsyncDataSourceApplying && e && e.isDelayed) {\r\n                                e.isDelayed = false\r\n                            }\r\n                            that._isDataSourceApplying = false;\r\n                            var hasAdditionalFilter = function() {\r\n                                var additionalFilter = that._calculateAdditionalFilter();\r\n                                return additionalFilter && additionalFilter.length\r\n                            };\r\n                            var needApplyFilter = that._needApplyFilter;\r\n                            that._needApplyFilter = false;\r\n                            if (needApplyFilter && !that._isAllDataTypesDefined && hasAdditionalFilter()) {\r\n                                _ui.default.log(\"W1005\", that.component.NAME);\r\n                                that._applyFilter()\r\n                            } else {\r\n                                that.updateItems(e, true)\r\n                            }\r\n                        }).fail(function() {\r\n                            that._isDataSourceApplying = false\r\n                        });\r\n                        if (that._isDataSourceApplying) {\r\n                            isAsyncDataSourceApplying = true;\r\n                            that._handleLoadingChanged(true)\r\n                        }\r\n                        that._needApplyFilter = !that._columnsController.isDataSourceApplied();\r\n                        that._isAllDataTypesDefined = columnsController.isAllDataTypesDefined()\r\n                    }\r\n                },\r\n                _handleLoadingChanged: function(isLoading) {\r\n                    this._isLoading = isLoading;\r\n                    this._fireLoadingChanged()\r\n                },\r\n                _handleLoadError: function(e) {\r\n                    this.dataErrorOccurred.fire(e)\r\n                },\r\n                fireError: function() {\r\n                    this.dataErrorOccurred.fire(_ui.default.Error.apply(_ui.default, arguments))\r\n                },\r\n                _setPagingOptions: function(dataSource) {\r\n                    var pageIndex = this.option(\"paging.pageIndex\");\r\n                    var pageSize = this.option(\"paging.pageSize\");\r\n                    var pagingEnabled = this.option(\"paging.enabled\");\r\n                    var scrollingMode = this.option(\"scrolling.mode\");\r\n                    var appendMode = \"infinite\" === scrollingMode;\r\n                    var virtualMode = \"virtual\" === scrollingMode;\r\n                    var paginate = pagingEnabled || virtualMode || appendMode;\r\n                    var isChanged = false;\r\n                    dataSource.requireTotalCount(!appendMode);\r\n                    if (void 0 !== pagingEnabled && dataSource.paginate() !== paginate) {\r\n                        dataSource.paginate(paginate);\r\n                        isChanged = true\r\n                    }\r\n                    if (void 0 !== pageSize && dataSource.pageSize() !== pageSize) {\r\n                        dataSource.pageSize(pageSize);\r\n                        isChanged = true\r\n                    }\r\n                    if (void 0 !== pageIndex && dataSource.pageIndex() !== pageIndex) {\r\n                        dataSource.pageIndex(pageIndex);\r\n                        isChanged = true\r\n                    }\r\n                    return isChanged\r\n                },\r\n                _getSpecificDataSourceOption: function() {\r\n                    var dataSource = this.option(\"dataSource\");\r\n                    if (Array.isArray(dataSource)) {\r\n                        return {\r\n                            store: {\r\n                                type: \"array\",\r\n                                data: dataSource,\r\n                                key: this.option(\"keyExpr\")\r\n                            }\r\n                        }\r\n                    }\r\n                    return dataSource\r\n                },\r\n                _initDataSource: function() {\r\n                    var that = this;\r\n                    var dataSource = this.option(\"dataSource\");\r\n                    var oldDataSource = this._dataSource;\r\n                    that.callBase();\r\n                    dataSource = that._dataSource;\r\n                    that._useSortingGroupingFromColumns = true;\r\n                    if (dataSource) {\r\n                        that._setPagingOptions(dataSource);\r\n                        that.setDataSource(dataSource)\r\n                    } else {\r\n                        if (oldDataSource) {\r\n                            that.updateItems()\r\n                        }\r\n                    }\r\n                },\r\n                _loadDataSource: function() {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    var result = new _deferred.Deferred;\r\n                    (0, _deferred.when)(this._columnsController.refresh(true)).always(function() {\r\n                        if (dataSource) {\r\n                            dataSource.load().done(result.resolve).fail(result.reject)\r\n                        } else {\r\n                            result.resolve()\r\n                        }\r\n                    });\r\n                    return result.promise()\r\n                },\r\n                _beforeProcessItems: function(items) {\r\n                    return items.slice(0)\r\n                },\r\n                getRowIndexDelta: function() {\r\n                    return 0\r\n                },\r\n                _processItems: function(items, change) {\r\n                    var that = this;\r\n                    var rowIndexDelta = that.getRowIndexDelta();\r\n                    var changeType = change.changeType;\r\n                    var visibleColumns = that._columnsController.getVisibleColumns(null, \"loadingAll\" === changeType);\r\n                    var visibleItems = that._items;\r\n                    var lastVisibleItem = \"append\" === changeType && visibleItems.length > 0 ? visibleItems[visibleItems.length - 1] : null;\r\n                    var dataIndex = (0, _type.isDefined)(null === lastVisibleItem || void 0 === lastVisibleItem ? void 0 : lastVisibleItem.dataIndex) ? lastVisibleItem.dataIndex + 1 : 0;\r\n                    var options = {\r\n                        visibleColumns: visibleColumns,\r\n                        dataIndex: dataIndex\r\n                    };\r\n                    var result = [];\r\n                    (0, _iterator.each)(items, function(index, item) {\r\n                        if ((0, _type.isDefined)(item)) {\r\n                            options.rowIndex = index - rowIndexDelta;\r\n                            item = that._processItem(item, options);\r\n                            result.push(item)\r\n                        }\r\n                    });\r\n                    return result\r\n                },\r\n                _processItem: function(item, options) {\r\n                    item = this._generateDataItem(item, options);\r\n                    item = this._processDataItem(item, options);\r\n                    item.dataIndex = options.dataIndex++;\r\n                    return item\r\n                },\r\n                _generateDataItem: function(data) {\r\n                    return {\r\n                        rowType: \"data\",\r\n                        data: data,\r\n                        key: this.keyOf(data)\r\n                    }\r\n                },\r\n                _processDataItem: function(dataItem, options) {\r\n                    dataItem.values = this.generateDataValues(dataItem.data, options.visibleColumns);\r\n                    return dataItem\r\n                },\r\n                generateDataValues: function(data, columns, isModified) {\r\n                    var values = [];\r\n                    var value;\r\n                    for (var i = 0; i < columns.length; i++) {\r\n                        var column = columns[i];\r\n                        value = isModified ? void 0 : null;\r\n                        if (!column.command) {\r\n                            if (column.calculateCellValue) {\r\n                                value = column.calculateCellValue(data)\r\n                            } else {\r\n                                if (column.dataField) {\r\n                                    value = data[column.dataField]\r\n                                }\r\n                            }\r\n                        }\r\n                        values.push(value)\r\n                    }\r\n                    return values\r\n                },\r\n                _applyChange: function(change) {\r\n                    var that = this;\r\n                    if (\"update\" === change.changeType) {\r\n                        that._applyChangeUpdate(change)\r\n                    } else {\r\n                        if (that.items().length && change.repaintChangesOnly && \"refresh\" === change.changeType) {\r\n                            that._applyChangesOnly(change)\r\n                        } else {\r\n                            if (\"refresh\" === change.changeType) {\r\n                                that._applyChangeFull(change)\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                _applyChangeFull: function(change) {\r\n                    this._items = change.items.slice(0)\r\n                },\r\n                _getRowIndices: function(change) {\r\n                    var rowIndices = change.rowIndices.slice(0);\r\n                    var rowIndexDelta = this.getRowIndexDelta();\r\n                    rowIndices.sort(function(a, b) {\r\n                        return a - b\r\n                    });\r\n                    for (var i = 0; i < rowIndices.length; i++) {\r\n                        var correctedRowIndex = rowIndices[i];\r\n                        if (change.allowInvisibleRowIndices) {\r\n                            correctedRowIndex += rowIndexDelta\r\n                        }\r\n                        if (correctedRowIndex < 0) {\r\n                            rowIndices.splice(i, 1);\r\n                            i--\r\n                        }\r\n                    }\r\n                    return rowIndices\r\n                },\r\n                _applyChangeUpdate: function(change) {\r\n                    var that = this;\r\n                    var items = change.items;\r\n                    var rowIndices = that._getRowIndices(change);\r\n                    var rowIndexDelta = that.getRowIndexDelta();\r\n                    var repaintChangesOnly = that.option(\"repaintChangesOnly\");\r\n                    var prevIndex = -1;\r\n                    var rowIndexCorrection = 0;\r\n                    var changeType;\r\n                    change.items = [];\r\n                    change.rowIndices = [];\r\n                    change.columnIndices = [];\r\n                    change.changeTypes = [];\r\n                    var equalItems = function(item1, item2, strict) {\r\n                        var result = item1 && item2 && (0, _common.equalByValue)(item1.key, item2.key);\r\n                        if (result && strict) {\r\n                            result = item1.rowType === item2.rowType && (\"detail\" !== item2.rowType || item1.isEditing === item2.isEditing)\r\n                        }\r\n                        return result\r\n                    };\r\n                    (0, _iterator.each)(rowIndices, function(index, rowIndex) {\r\n                        var columnIndices;\r\n                        rowIndex += rowIndexCorrection + rowIndexDelta;\r\n                        if (prevIndex === rowIndex) {\r\n                            return\r\n                        }\r\n                        prevIndex = rowIndex;\r\n                        var oldItem = that._items[rowIndex];\r\n                        var oldNextItem = that._items[rowIndex + 1];\r\n                        var newItem = items[rowIndex];\r\n                        var newNextItem = items[rowIndex + 1];\r\n                        var strict = equalItems(oldItem, oldNextItem) || equalItems(newItem, newNextItem);\r\n                        if (newItem) {\r\n                            newItem.rowIndex = rowIndex;\r\n                            change.items.push(newItem)\r\n                        }\r\n                        if (oldItem && newItem && equalItems(oldItem, newItem, strict)) {\r\n                            changeType = \"update\";\r\n                            that._items[rowIndex] = newItem;\r\n                            if (oldItem.visible !== newItem.visible) {\r\n                                change.items.splice(-1, 1, {\r\n                                    visible: newItem.visible\r\n                                })\r\n                            } else {\r\n                                if (repaintChangesOnly && !change.isFullUpdate) {\r\n                                    columnIndices = that._partialUpdateRow(oldItem, newItem, rowIndex - rowIndexDelta)\r\n                                }\r\n                            }\r\n                        } else {\r\n                            if (newItem && !oldItem || newNextItem && equalItems(oldItem, newNextItem, strict)) {\r\n                                changeType = \"insert\";\r\n                                that._items.splice(rowIndex, 0, newItem);\r\n                                rowIndexCorrection++\r\n                            } else {\r\n                                if (oldItem && !newItem || oldNextItem && equalItems(newItem, oldNextItem, strict)) {\r\n                                    changeType = \"remove\";\r\n                                    that._items.splice(rowIndex, 1);\r\n                                    rowIndexCorrection--;\r\n                                    prevIndex = -1\r\n                                } else {\r\n                                    if (newItem) {\r\n                                        changeType = \"update\";\r\n                                        that._items[rowIndex] = newItem\r\n                                    } else {\r\n                                        return\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        change.rowIndices.push(rowIndex - rowIndexDelta);\r\n                        change.changeTypes.push(changeType);\r\n                        change.columnIndices.push(columnIndices)\r\n                    })\r\n                },\r\n                _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n                    if (JSON.stringify(oldRow.values[columnIndex]) !== JSON.stringify(newRow.values[columnIndex])) {\r\n                        return true\r\n                    }\r\n\r\n                    function isCellModified(row, columnIndex) {\r\n                        return row.modifiedValues ? void 0 !== row.modifiedValues[columnIndex] : false\r\n                    }\r\n                    if (isCellModified(oldRow, columnIndex) !== isCellModified(newRow, columnIndex)) {\r\n                        return true\r\n                    }\r\n                    return false\r\n                },\r\n                _getChangedColumnIndices: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n                    if (oldItem.rowType === newItem.rowType && \"group\" !== newItem.rowType && \"groupFooter\" !== newItem.rowType) {\r\n                        var columnIndices = [];\r\n                        if (\"detail\" !== newItem.rowType) {\r\n                            for (var columnIndex = 0; columnIndex < oldItem.values.length; columnIndex++) {\r\n                                if (this._isCellChanged(oldItem, newItem, visibleRowIndex, columnIndex, isLiveUpdate)) {\r\n                                    columnIndices.push(columnIndex)\r\n                                }\r\n                            }\r\n                        }\r\n                        return columnIndices\r\n                    }\r\n                },\r\n                _partialUpdateRow: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n                    var changedColumnIndices = this._getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate);\r\n                    if (changedColumnIndices) {\r\n                        oldItem.cells && oldItem.cells.forEach(function(cell, columnIndex) {\r\n                            var isCellChanged = changedColumnIndices.indexOf(columnIndex) >= 0;\r\n                            if (!isCellChanged && cell && cell.update) {\r\n                                cell.update(newItem)\r\n                            }\r\n                        });\r\n                        newItem.update = oldItem.update;\r\n                        newItem.watch = oldItem.watch;\r\n                        newItem.cells = oldItem.cells;\r\n                        if (isLiveUpdate) {\r\n                            newItem.oldValues = oldItem.values\r\n                        }\r\n                        oldItem.update && oldItem.update(newItem)\r\n                    }\r\n                    return changedColumnIndices\r\n                },\r\n                _isItemEquals: function(item1, item2) {\r\n                    if (JSON.stringify(item1.values) !== JSON.stringify(item2.values)) {\r\n                        return false\r\n                    }\r\n                    var compareFields = [\"modified\", \"isNewRow\", \"removed\", \"isEditing\"];\r\n                    if (compareFields.some(function(field) {\r\n                            return item1[field] !== item2[field]\r\n                        })) {\r\n                        return false\r\n                    }\r\n                    if (\"group\" === item1.rowType || \"groupFooter\" === item1.rowType) {\r\n                        var _item1$data, _item2$data, _item1$data2, _item2$data2;\r\n                        var expandedMatch = item1.isExpanded === item2.isExpanded;\r\n                        var summaryCellsMatch = JSON.stringify(item1.summaryCells) === JSON.stringify(item2.summaryCells);\r\n                        var continuationMatch = (null === (_item1$data = item1.data) || void 0 === _item1$data ? void 0 : _item1$data.isContinuation) === (null === (_item2$data = item2.data) || void 0 === _item2$data ? void 0 : _item2$data.isContinuation) && (null === (_item1$data2 = item1.data) || void 0 === _item1$data2 ? void 0 : _item1$data2.isContinuationOnNextPage) === (null === (_item2$data2 = item2.data) || void 0 === _item2$data2 ? void 0 : _item2$data2.isContinuationOnNextPage);\r\n                        if (!expandedMatch || !summaryCellsMatch || !continuationMatch) {\r\n                            return false\r\n                        }\r\n                    }\r\n                    return true\r\n                },\r\n                _applyChangesOnly: function(change) {\r\n                    var _this2 = this;\r\n                    var rowIndices = [];\r\n                    var columnIndices = [];\r\n                    var changeTypes = [];\r\n                    var items = [];\r\n                    var newIndexByKey = {};\r\n\r\n                    function getRowKey(row) {\r\n                        if (row) {\r\n                            return row.rowType + \",\" + JSON.stringify(row.key)\r\n                        }\r\n                    }\r\n                    var isItemEquals = function(item1, item2) {\r\n                        if (!_this2._isItemEquals(item1, item2)) {\r\n                            return false\r\n                        }\r\n                        if (item1.cells) {\r\n                            item1.update && item1.update(item2);\r\n                            item1.cells.forEach(function(cell) {\r\n                                if (cell && cell.update) {\r\n                                    cell.update(item2)\r\n                                }\r\n                            })\r\n                        }\r\n                        return true\r\n                    };\r\n                    var oldItems = this._items.slice();\r\n                    change.items.forEach(function(item, index) {\r\n                        var key = getRowKey(item);\r\n                        newIndexByKey[key] = index;\r\n                        item.rowIndex = index\r\n                    });\r\n                    var result = (0, _array_compare.findChanges)(oldItems, change.items, getRowKey, isItemEquals);\r\n                    if (!result) {\r\n                        this._applyChangeFull(change);\r\n                        return\r\n                    }\r\n                    result.forEach(function(change) {\r\n                        switch (change.type) {\r\n                            case \"update\":\r\n                                var index = change.index;\r\n                                var newItem = change.data;\r\n                                var oldItem = change.oldItem;\r\n                                var changedColumnIndices = _this2._partialUpdateRow(oldItem, newItem, index, true);\r\n                                rowIndices.push(index);\r\n                                changeTypes.push(\"update\");\r\n                                items.push(newItem);\r\n                                _this2._items[index] = newItem;\r\n                                columnIndices.push(changedColumnIndices);\r\n                                break;\r\n                            case \"insert\":\r\n                                rowIndices.push(change.index);\r\n                                changeTypes.push(\"insert\");\r\n                                items.push(change.data);\r\n                                columnIndices.push(void 0);\r\n                                _this2._items.splice(change.index, 0, change.data);\r\n                                break;\r\n                            case \"remove\":\r\n                                rowIndices.push(change.index);\r\n                                changeTypes.push(\"remove\");\r\n                                _this2._items.splice(change.index, 1);\r\n                                items.push(change.oldItem);\r\n                                columnIndices.push(void 0)\r\n                        }\r\n                    });\r\n                    change.repaintChangesOnly = true;\r\n                    change.changeType = \"update\";\r\n                    change.rowIndices = rowIndices;\r\n                    change.columnIndices = columnIndices;\r\n                    change.changeTypes = changeTypes;\r\n                    change.items = items;\r\n                    if (oldItems.length) {\r\n                        change.isLiveUpdate = true\r\n                    }\r\n                    this._correctRowIndices(function(rowIndex) {\r\n                        var oldItem = oldItems[rowIndex];\r\n                        var key = getRowKey(oldItem);\r\n                        var newRowIndex = newIndexByKey[key];\r\n                        return newRowIndex >= 0 ? newRowIndex - rowIndex : 0\r\n                    })\r\n                },\r\n                _correctRowIndices: _common.noop,\r\n                _updateItemsCore: function(change) {\r\n                    var that = this;\r\n                    var items;\r\n                    var dataSource = that._dataSource;\r\n                    var changeType = change.changeType || \"refresh\";\r\n                    change.changeType = changeType;\r\n                    if (dataSource) {\r\n                        items = change.items || dataSource.items();\r\n                        items = that._beforeProcessItems(items);\r\n                        items = that._processItems(items, change);\r\n                        change.items = items;\r\n                        var oldItems = that._items.length === items.length && that._items;\r\n                        that._applyChange(change);\r\n                        var rowIndexDelta = that.getRowIndexDelta();\r\n                        (0, _iterator.each)(that._items, function(index, item) {\r\n                            item.rowIndex = index - rowIndexDelta;\r\n                            if (oldItems) {\r\n                                item.cells = oldItems[index].cells || []\r\n                            }\r\n                        })\r\n                    } else {\r\n                        that._items = []\r\n                    }\r\n                },\r\n                _handleChanging: function(e) {\r\n                    var that = this;\r\n                    var rows = that.getVisibleRows();\r\n                    var dataSource = that.dataSource();\r\n                    if (dataSource) {\r\n                        e.changes.forEach(function(change) {\r\n                            if (\"insert\" === change.type && change.index >= 0) {\r\n                                var dataIndex = 0;\r\n                                for (var i = 0; i < change.index; i++) {\r\n                                    var row = rows[i];\r\n                                    if (row && (\"data\" === row.rowType || \"group\" === row.rowType)) {\r\n                                        dataIndex++\r\n                                    }\r\n                                }\r\n                                change.index = dataIndex\r\n                            }\r\n                        })\r\n                    }\r\n                },\r\n                updateItems: function(change, isDataChanged) {\r\n                    change = change || {};\r\n                    var that = this;\r\n                    if (void 0 !== that._repaintChangesOnly) {\r\n                        change.repaintChangesOnly = that._repaintChangesOnly\r\n                    } else {\r\n                        if (change.changes) {\r\n                            change.repaintChangesOnly = that.option(\"repaintChangesOnly\")\r\n                        } else {\r\n                            if (isDataChanged) {\r\n                                var operationTypes = that.dataSource().operationTypes();\r\n                                change.repaintChangesOnly = operationTypes && !operationTypes.grouping && !operationTypes.filtering && that.option(\"repaintChangesOnly\");\r\n                                change.isDataChanged = true;\r\n                                if (operationTypes && (operationTypes.reload || operationTypes.paging || operationTypes.groupExpanding)) {\r\n                                    change.needUpdateDimensions = true\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    if (that._updateLockCount) {\r\n                        that._changes.push(change);\r\n                        return\r\n                    }\r\n                    that._updateItemsCore(change);\r\n                    if (change.cancel) {\r\n                        return\r\n                    }\r\n                    that._fireChanged(change)\r\n                },\r\n                loadingOperationTypes: function() {\r\n                    var dataSource = this.dataSource();\r\n                    return dataSource && dataSource.loadingOperationTypes() || {}\r\n                },\r\n                _fireChanged: function(change) {\r\n                    var _this3 = this;\r\n                    if (this._currentOperationTypes) {\r\n                        change.operationTypes = this._currentOperationTypes;\r\n                        this._currentOperationTypes = null\r\n                    }(0, _common.deferRender)(function() {\r\n                        _this3.changed.fire(change)\r\n                    })\r\n                },\r\n                isLoading: function() {\r\n                    return this._isLoading || this._isCustomLoading\r\n                },\r\n                _fireLoadingChanged: function() {\r\n                    this.loadingChanged.fire(this.isLoading(), this._loadingText)\r\n                },\r\n                _calculateAdditionalFilter: function() {\r\n                    return null\r\n                },\r\n                _applyFilter: function() {\r\n                    var that = this;\r\n                    var dataSource = that._dataSource;\r\n                    if (dataSource) {\r\n                        dataSource.pageIndex(0);\r\n                        return that.reload().done(that.pageChanged.fire.bind(that.pageChanged))\r\n                    }\r\n                },\r\n                filter: function filter(filterExpr) {\r\n                    var dataSource = this._dataSource;\r\n                    var filter = dataSource && dataSource.filter();\r\n                    if (0 === arguments.length) {\r\n                        return filter\r\n                    }\r\n                    filterExpr = arguments.length > 1 ? Array.prototype.slice.call(arguments, 0) : filterExpr;\r\n                    if (_uiGrid_core2.default.equalFilterParameters(filter, filterExpr)) {\r\n                        return\r\n                    }\r\n                    if (dataSource) {\r\n                        dataSource.filter(filterExpr)\r\n                    }\r\n                    this._applyFilter()\r\n                },\r\n                clearFilter: function(filterName) {\r\n                    var that = this;\r\n                    var columnsController = that._columnsController;\r\n                    var clearColumnOption = function(optionName) {\r\n                        var columnCount = columnsController.columnCount();\r\n                        for (var index = 0; index < columnCount; index++) {\r\n                            columnsController.columnOption(index, optionName, void 0)\r\n                        }\r\n                    };\r\n                    that.component.beginUpdate();\r\n                    if (arguments.length > 0) {\r\n                        switch (filterName) {\r\n                            case \"dataSource\":\r\n                                that.filter(null);\r\n                                break;\r\n                            case \"search\":\r\n                                that.searchByText(\"\");\r\n                                break;\r\n                            case \"header\":\r\n                                clearColumnOption(\"filterValues\");\r\n                                break;\r\n                            case \"row\":\r\n                                clearColumnOption(\"filterValue\")\r\n                        }\r\n                    } else {\r\n                        that.filter(null);\r\n                        that.searchByText(\"\");\r\n                        clearColumnOption(\"filterValue\");\r\n                        clearColumnOption(\"bufferedFilterValue\");\r\n                        clearColumnOption(\"filterValues\")\r\n                    }\r\n                    that.component.endUpdate()\r\n                },\r\n                _fireDataSourceChanged: function() {\r\n                    var that = this;\r\n                    var changedHandler = function changedHandler() {\r\n                        that.changed.remove(changedHandler);\r\n                        that.dataSourceChanged.fire()\r\n                    };\r\n                    that.changed.add(changedHandler)\r\n                },\r\n                _getDataSourceAdapter: _common.noop,\r\n                _createDataSourceAdapterCore: function(dataSource, remoteOperations) {\r\n                    var dataSourceAdapterProvider = this._getDataSourceAdapter();\r\n                    var dataSourceAdapter = dataSourceAdapterProvider.create(this.component);\r\n                    dataSourceAdapter.init(dataSource, remoteOperations);\r\n                    return dataSourceAdapter\r\n                },\r\n                isLocalStore: function(store) {\r\n                    store = store || this.store();\r\n                    return store instanceof _array_store.default\r\n                },\r\n                isCustomStore: function(store) {\r\n                    store = store || this.store();\r\n                    return store instanceof _custom_store.default\r\n                },\r\n                _createDataSourceAdapter: function(dataSource) {\r\n                    var remoteOperations = this.option(\"remoteOperations\");\r\n                    var store = dataSource.store();\r\n                    var enabledRemoteOperations = {\r\n                        filtering: true,\r\n                        sorting: true,\r\n                        paging: true,\r\n                        grouping: true,\r\n                        summary: true\r\n                    };\r\n                    if (remoteOperations && remoteOperations.groupPaging) {\r\n                        remoteOperations = (0, _extend.extend)({}, enabledRemoteOperations, remoteOperations)\r\n                    }\r\n                    if (\"auto\" === remoteOperations) {\r\n                        remoteOperations = this.isLocalStore(store) || this.isCustomStore(store) ? {} : {\r\n                            filtering: true,\r\n                            sorting: true,\r\n                            paging: true\r\n                        }\r\n                    }\r\n                    if (true === remoteOperations) {\r\n                        remoteOperations = enabledRemoteOperations\r\n                    }\r\n                    return this._createDataSourceAdapterCore(dataSource, remoteOperations)\r\n                },\r\n                setDataSource: function(dataSource) {\r\n                    var that = this;\r\n                    var oldDataSource = that._dataSource;\r\n                    if (!dataSource && oldDataSource) {\r\n                        oldDataSource.cancelAll();\r\n                        oldDataSource.changed.remove(that._dataChangedHandler);\r\n                        oldDataSource.loadingChanged.remove(that._loadingChangedHandler);\r\n                        oldDataSource.loadError.remove(that._loadErrorHandler);\r\n                        oldDataSource.customizeStoreLoadOptions.remove(that._customizeStoreLoadOptionsHandler);\r\n                        oldDataSource.changing.remove(that._changingHandler);\r\n                        oldDataSource.dispose(that._isSharedDataSource)\r\n                    }\r\n                    if (dataSource) {\r\n                        dataSource = that._createDataSourceAdapter(dataSource)\r\n                    }\r\n                    that._dataSource = dataSource;\r\n                    if (dataSource) {\r\n                        that._fireDataSourceChanged();\r\n                        that._isLoading = !dataSource.isLoaded();\r\n                        that._needApplyFilter = true;\r\n                        that._isAllDataTypesDefined = that._columnsController.isAllDataTypesDefined();\r\n                        dataSource.changed.add(that._dataChangedHandler);\r\n                        dataSource.loadingChanged.add(that._loadingChangedHandler);\r\n                        dataSource.loadError.add(that._loadErrorHandler);\r\n                        dataSource.customizeStoreLoadOptions.add(that._customizeStoreLoadOptionsHandler);\r\n                        dataSource.changing.add(that._changingHandler)\r\n                    }\r\n                },\r\n                items: function() {\r\n                    return this._items\r\n                },\r\n                isEmpty: function() {\r\n                    return !this.items().length\r\n                },\r\n                pageCount: function() {\r\n                    return this._dataSource ? this._dataSource.pageCount() : 1\r\n                },\r\n                dataSource: function() {\r\n                    return this._dataSource\r\n                },\r\n                store: function() {\r\n                    var dataSource = this._dataSource;\r\n                    return dataSource && dataSource.store()\r\n                },\r\n                loadAll: function(data) {\r\n                    var that = this;\r\n                    var d = new _deferred.Deferred;\r\n                    var dataSource = that._dataSource;\r\n                    if (dataSource) {\r\n                        if (data) {\r\n                            var options = {\r\n                                data: data,\r\n                                isCustomLoading: true,\r\n                                storeLoadOptions: {\r\n                                    isLoadingAll: true\r\n                                },\r\n                                loadOptions: {\r\n                                    filter: that.getCombinedFilter(),\r\n                                    group: dataSource.group(),\r\n                                    sort: dataSource.sort()\r\n                                }\r\n                            };\r\n                            dataSource._handleDataLoaded(options);\r\n                            (0, _deferred.when)(options.data).done(function(data) {\r\n                                data = that._beforeProcessItems(data);\r\n                                d.resolve(that._processItems(data, {\r\n                                    changeType: \"loadingAll\"\r\n                                }), options.extra && options.extra.summary)\r\n                            }).fail(d.reject)\r\n                        } else {\r\n                            if (!dataSource.isLoading()) {\r\n                                var loadOptions = (0, _extend.extend)({}, dataSource.loadOptions(), {\r\n                                    isLoadingAll: true,\r\n                                    requireTotalCount: false\r\n                                });\r\n                                dataSource.load(loadOptions).done(function(items, extra) {\r\n                                    items = that._beforeProcessItems(items);\r\n                                    items = that._processItems(items, {\r\n                                        changeType: \"loadingAll\"\r\n                                    });\r\n                                    d.resolve(items, extra && extra.summary)\r\n                                }).fail(d.reject)\r\n                            } else {\r\n                                d.reject()\r\n                            }\r\n                        }\r\n                    } else {\r\n                        d.resolve([])\r\n                    }\r\n                    return d\r\n                },\r\n                getKeyByRowIndex: function(rowIndex) {\r\n                    var item = this.items()[rowIndex];\r\n                    if (item) {\r\n                        return item.key\r\n                    }\r\n                },\r\n                getRowIndexByKey: function(key) {\r\n                    return _uiGrid_core2.default.getIndexByKey(key, this.items())\r\n                },\r\n                keyOf: function(data) {\r\n                    var store = this.store();\r\n                    if (store) {\r\n                        return store.keyOf(data)\r\n                    }\r\n                },\r\n                byKey: function(key) {\r\n                    var store = this.store();\r\n                    var rowIndex = this.getRowIndexByKey(key);\r\n                    var result;\r\n                    if (!store) {\r\n                        return\r\n                    }\r\n                    if (rowIndex >= 0) {\r\n                        result = (new _deferred.Deferred).resolve(this.items()[rowIndex].data)\r\n                    }\r\n                    return result || store.byKey(key)\r\n                },\r\n                key: function() {\r\n                    var store = this.store();\r\n                    if (store) {\r\n                        return store.key()\r\n                    }\r\n                },\r\n                getRowIndexOffset: function() {\r\n                    return 0\r\n                },\r\n                getDataByKeys: function(rowKeys) {\r\n                    var that = this;\r\n                    var result = new _deferred.Deferred;\r\n                    var deferreds = [];\r\n                    var data = [];\r\n                    (0, _iterator.each)(rowKeys, function(index, key) {\r\n                        deferreds.push(that.byKey(key).done(function(keyData) {\r\n                            data[index] = keyData\r\n                        }))\r\n                    });\r\n                    _deferred.when.apply(_renderer.default, deferreds).always(function() {\r\n                        result.resolve(data)\r\n                    });\r\n                    return result\r\n                },\r\n                pageIndex: function(value) {\r\n                    return changePaging(this, \"pageIndex\", value)\r\n                },\r\n                pageSize: function(value) {\r\n                    return changePaging(this, \"pageSize\", value)\r\n                },\r\n                beginCustomLoading: function(messageText) {\r\n                    this._isCustomLoading = true;\r\n                    this._loadingText = messageText || \"\";\r\n                    this._fireLoadingChanged()\r\n                },\r\n                endCustomLoading: function() {\r\n                    this._isCustomLoading = false;\r\n                    this._loadingText = void 0;\r\n                    this._fireLoadingChanged()\r\n                },\r\n                refresh: function(options) {\r\n                    if (true === options) {\r\n                        options = {\r\n                            reload: true,\r\n                            changesOnly: true\r\n                        }\r\n                    } else {\r\n                        if (!options) {\r\n                            options = {\r\n                                lookup: true,\r\n                                selection: true,\r\n                                reload: true\r\n                            }\r\n                        }\r\n                    }\r\n                    var that = this;\r\n                    var dataSource = that.getDataSource();\r\n                    var changesOnly = options.changesOnly;\r\n                    var d = new _deferred.Deferred;\r\n                    var customizeLoadResult = function() {\r\n                        that._repaintChangesOnly = !!changesOnly\r\n                    };\r\n                    (0, _deferred.when)(!options.lookup || that._columnsController.refresh()).always(function() {\r\n                        if (options.load || options.reload) {\r\n                            dataSource && dataSource.on(\"customizeLoadResult\", customizeLoadResult);\r\n                            (0, _deferred.when)(that.reload(options.reload, changesOnly)).always(function() {\r\n                                dataSource && dataSource.off(\"customizeLoadResult\", customizeLoadResult);\r\n                                that._repaintChangesOnly = void 0\r\n                            }).done(d.resolve).fail(d.reject)\r\n                        } else {\r\n                            that.updateItems({\r\n                                repaintChangesOnly: options.changesOnly\r\n                            });\r\n                            d.resolve()\r\n                        }\r\n                    });\r\n                    return d.promise()\r\n                },\r\n                getVisibleRows: function() {\r\n                    return this.items()\r\n                },\r\n                _disposeDataSource: function() {\r\n                    this.setDataSource(null)\r\n                },\r\n                dispose: function() {\r\n                    this._disposeDataSource();\r\n                    this.callBase.apply(this, arguments)\r\n                },\r\n                repaintRows: function(rowIndexes, changesOnly) {\r\n                    rowIndexes = Array.isArray(rowIndexes) ? rowIndexes : [rowIndexes];\r\n                    if (rowIndexes.length > 1 || (0, _type.isDefined)(rowIndexes[0])) {\r\n                        this.updateItems({\r\n                            changeType: \"update\",\r\n                            rowIndices: rowIndexes,\r\n                            isFullUpdate: !changesOnly\r\n                        })\r\n                    }\r\n                },\r\n                skipProcessingPagingChange: function(fullName) {\r\n                    return this._skipProcessingPagingChange && (\"paging.pageIndex\" === fullName || \"paging.pageSize\" === fullName)\r\n                },\r\n                getUserState: function() {\r\n                    return {\r\n                        searchText: this.option(\"searchPanel.text\"),\r\n                        pageIndex: this.pageIndex(),\r\n                        pageSize: this.pageSize()\r\n                    }\r\n                },\r\n                getCachedStoreData: function() {\r\n                    return this._dataSource && this._dataSource.getCachedStoreData()\r\n                }\r\n            };\r\n            _uiGrid_core2.default.proxyMethod(members, \"load\");\r\n            _uiGrid_core2.default.proxyMethod(members, \"reload\");\r\n            _uiGrid_core2.default.proxyMethod(members, \"push\");\r\n            _uiGrid_core2.default.proxyMethod(members, \"itemsCount\", 0);\r\n            _uiGrid_core2.default.proxyMethod(members, \"totalItemsCount\", 0);\r\n            _uiGrid_core2.default.proxyMethod(members, \"hasKnownLastPage\", true);\r\n            _uiGrid_core2.default.proxyMethod(members, \"isLoaded\", true);\r\n            _uiGrid_core2.default.proxyMethod(members, \"totalCount\", 0);\r\n            return members\r\n        }())\r\n    }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/themes/material.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar FONT_FAMILY = \"'Roboto', 'RobotoFallback', 'Helvetica', 'Arial', sans-serif\";\r\nvar LIGHT_TITLE_COLOR = \"rgba(0,0,0,0.87)\";\r\nvar LIGHT_LABEL_COLOR = \"rgba(0,0,0,0.54)\";\r\nvar DARK_TITLE_COLOR = \"rgba(255,255,255,0.87)\";\r\nvar DARK_LABEL_COLOR = \"rgba(255,255,255,0.54)\";\r\nvar DARK_BACKGROUND_COLOR = \"#363640\";\r\nvar WHITE = \"#ffffff\";\r\nvar BLACK = \"#000000\";\r\nvar RANGE_COLOR = \"#b5b5b5\";\r\nvar AREA_LAYER_COLOR = \"#686868\";\r\nvar LINE_COLOR = \"#c7c7c7\";\r\nvar TARGET_COLOR = \"#8e8e8e\";\r\nvar POSITIVE_COLOR = \"#b8b8b8\";\r\nvar LABEL_BORDER_COLOR = \"#494949\";\r\nvar BREAK_STYLE_COLOR = \"#818181\";\r\n(0, _themes.registerTheme)({\r\n    name: \"material\",\r\n    defaultPalette: \"Material\",\r\n    font: {\r\n        family: FONT_FAMILY\r\n    },\r\n    title: {\r\n        margin: {\r\n            top: 20,\r\n            bottom: 20,\r\n            left: 0,\r\n            right: 0\r\n        },\r\n        font: {\r\n            size: 20,\r\n            family: FONT_FAMILY,\r\n            weight: 500\r\n        },\r\n        horizontalAlignment: \"left\",\r\n        subtitle: {\r\n            font: {\r\n                size: 14\r\n            },\r\n            horizontalAlignment: \"left\"\r\n        }\r\n    },\r\n    tooltip: {\r\n        shadow: {\r\n            opacity: 0\r\n        },\r\n        border: {\r\n            visible: false\r\n        },\r\n        paddingLeftRight: 8,\r\n        paddingTopBottom: 6,\r\n        arrowLength: 0,\r\n        location: \"edge\",\r\n        color: \"#616161\",\r\n        font: {\r\n            color: WHITE\r\n        },\r\n        cornerRadius: 4\r\n    },\r\n    chart: {\r\n        commonAxisSettings: {\r\n            minorTick: {\r\n                opacity: .5\r\n            },\r\n            label: {\r\n                font: {\r\n                    size: 11\r\n                }\r\n            }\r\n        },\r\n        commonAnnotationSettings: {\r\n            font: {\r\n                color: WHITE\r\n            },\r\n            border: {\r\n                color: \"#616161\"\r\n            },\r\n            color: \"#616161\",\r\n            arrowLength: 14,\r\n            arrowWidth: 0,\r\n            shadow: {\r\n                opacity: .08,\r\n                offsetY: 4,\r\n                blur: 8\r\n            },\r\n            cornerRadius: 4\r\n        }\r\n    },\r\n    pie: {\r\n        title: {\r\n            horizontalAlignment: \"center\",\r\n            subtitle: {\r\n                horizontalAlignment: \"center\"\r\n            }\r\n        }\r\n    },\r\n    polar: {\r\n        commonAxisSettings: {\r\n            minorTick: {\r\n                opacity: .5\r\n            }\r\n        },\r\n        title: {\r\n            horizontalAlignment: \"center\",\r\n            subtitle: {\r\n                horizontalAlignment: \"center\"\r\n            }\r\n        }\r\n    },\r\n    funnel: {\r\n        title: {\r\n            horizontalAlignment: \"center\",\r\n            subtitle: {\r\n                horizontalAlignment: \"center\"\r\n            }\r\n        }\r\n    },\r\n    gauge: {\r\n        title: {\r\n            horizontalAlignment: \"center\",\r\n            subtitle: {\r\n                horizontalAlignment: \"center\"\r\n            }\r\n        }\r\n    },\r\n    barGauge: {\r\n        title: {\r\n            horizontalAlignment: \"center\",\r\n            subtitle: {\r\n                horizontalAlignment: \"center\"\r\n            }\r\n        }\r\n    },\r\n    rangeSelector: {\r\n        sliderHandle: {\r\n            opacity: .5\r\n        }\r\n    },\r\n    treeMap: {\r\n        group: {\r\n            label: {\r\n                font: {\r\n                    weight: 500\r\n                }\r\n            }\r\n        }\r\n    }\r\n}, \"generic.light\");\r\n(0, _themes.registerTheme)({\r\n    name: \"material.light\",\r\n    gridColor: \"#e0e0e0\",\r\n    axisColor: LIGHT_LABEL_COLOR,\r\n    primaryTitleColor: LIGHT_TITLE_COLOR,\r\n    legend: {\r\n        font: {\r\n            color: LIGHT_LABEL_COLOR\r\n        }\r\n    },\r\n    chart: {\r\n        scrollBar: {\r\n            color: \"#bfbfbf\",\r\n            opacity: .7\r\n        }\r\n    },\r\n    gauge: {\r\n        rangeContainer: {\r\n            backgroundColor: \"rgba(0,0,0,0.2)\"\r\n        }\r\n    },\r\n    barGauge: {\r\n        backgroundColor: \"#efefef\"\r\n    }\r\n}, \"material\");\r\n(0, _themes.registerTheme)({\r\n    name: \"material.dark\",\r\n    gridColor: \"#515159\",\r\n    backgroundColor: DARK_BACKGROUND_COLOR,\r\n    axisColor: DARK_LABEL_COLOR,\r\n    font: {\r\n        color: DARK_LABEL_COLOR\r\n    },\r\n    primaryTitleColor: DARK_TITLE_COLOR,\r\n    secondaryTitleColor: DARK_TITLE_COLOR,\r\n    tooltip: {\r\n        color: \"#000\"\r\n    },\r\n    \"export\": {\r\n        backgroundColor: DARK_BACKGROUND_COLOR,\r\n        font: {\r\n            color: \"#dbdbdb\"\r\n        },\r\n        button: {\r\n            \"default\": {\r\n                color: \"#dedede\",\r\n                borderColor: \"#4d4d4d\",\r\n                backgroundColor: DARK_BACKGROUND_COLOR\r\n            },\r\n            hover: {\r\n                color: \"#dedede\",\r\n                borderColor: \"#6c6c6c\",\r\n                backgroundColor: \"#3f3f4b\"\r\n            },\r\n            focus: {\r\n                color: \"#dedede\",\r\n                borderColor: \"#8d8d8d\",\r\n                backgroundColor: \"#494956\"\r\n            },\r\n            active: {\r\n                color: \"#dedede\",\r\n                borderColor: \"#8d8d8d\",\r\n                backgroundColor: \"#494956\"\r\n            }\r\n        },\r\n        shadowColor: \"#292929\"\r\n    },\r\n    \"chart:common\": {\r\n        commonSeriesSettings: {\r\n            label: {\r\n                border: {\r\n                    color: LABEL_BORDER_COLOR\r\n                }\r\n            },\r\n            valueErrorBar: {\r\n                color: WHITE\r\n            }\r\n        }\r\n    },\r\n    \"chart:common:axis\": {\r\n        constantLineStyle: {\r\n            color: WHITE\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        border: {\r\n            color: \"#000\"\r\n        },\r\n        color: \"#000\"\r\n    },\r\n    chart: {\r\n        commonPaneSettings: {\r\n            border: {\r\n                color: LABEL_BORDER_COLOR\r\n            }\r\n        },\r\n        commonAxisSettings: {\r\n            breakStyle: {\r\n                color: BREAK_STYLE_COLOR\r\n            }\r\n        },\r\n        zoomAndPan: {\r\n            dragBoxStyle: {\r\n                color: WHITE\r\n            }\r\n        }\r\n    },\r\n    gauge: {\r\n        rangeContainer: {\r\n            backgroundColor: RANGE_COLOR\r\n        },\r\n        valueIndicators: {\r\n            _default: {\r\n                color: RANGE_COLOR\r\n            },\r\n            rangebar: {\r\n                color: \"#84788b\"\r\n            },\r\n            twocolorneedle: {\r\n                secondColor: \"#ba544d\"\r\n            },\r\n            trianglemarker: {\r\n                color: \"#b7918f\"\r\n            },\r\n            textcloud: {\r\n                color: \"#ba544d\"\r\n            }\r\n        }\r\n    },\r\n    barGauge: {\r\n        backgroundColor: \"#3c3c3c\"\r\n    },\r\n    rangeSelector: {\r\n        scale: {\r\n            tick: {\r\n                color: WHITE,\r\n                opacity: .32\r\n            },\r\n            minorTick: {\r\n                color: WHITE,\r\n                opacity: .1\r\n            },\r\n            breakStyle: {\r\n                color: BREAK_STYLE_COLOR\r\n            }\r\n        },\r\n        selectedRangeColor: RANGE_COLOR,\r\n        sliderMarker: {\r\n            color: RANGE_COLOR,\r\n            font: {\r\n                color: DARK_BACKGROUND_COLOR\r\n            }\r\n        },\r\n        sliderHandle: {\r\n            color: WHITE,\r\n            opacity: .2\r\n        },\r\n        shutter: {\r\n            color: WHITE,\r\n            opacity: .1\r\n        }\r\n    },\r\n    map: {\r\n        background: {\r\n            borderColor: \"#3f3f3f\"\r\n        },\r\n        layer: {\r\n            label: {\r\n                stroke: BLACK,\r\n                font: {\r\n                    color: WHITE\r\n                }\r\n            }\r\n        },\r\n        \"layer:area\": {\r\n            borderColor: DARK_BACKGROUND_COLOR,\r\n            color: AREA_LAYER_COLOR,\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE\r\n        },\r\n        \"layer:line\": {\r\n            color: \"#c77244\",\r\n            hoveredColor: \"#ff5d04\",\r\n            selectedColor: \"#ff784f\"\r\n        },\r\n        \"layer:marker:bubble\": {\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE\r\n        },\r\n        \"layer:marker:pie\": {\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE\r\n        },\r\n        legend: {\r\n            border: {\r\n                color: \"#3f3f3f\"\r\n            },\r\n            font: {\r\n                color: WHITE\r\n            }\r\n        },\r\n        controlBar: {\r\n            borderColor: LINE_COLOR,\r\n            color: DARK_BACKGROUND_COLOR\r\n        }\r\n    },\r\n    treeMap: {\r\n        group: {\r\n            color: \"#4c4c4c\",\r\n            label: {\r\n                font: {\r\n                    color: \"#a3a3a3\"\r\n                }\r\n            }\r\n        }\r\n    },\r\n    sparkline: {\r\n        lineColor: LINE_COLOR,\r\n        firstLastColor: LINE_COLOR,\r\n        barPositiveColor: POSITIVE_COLOR,\r\n        barNegativeColor: TARGET_COLOR,\r\n        winColor: POSITIVE_COLOR,\r\n        lossColor: TARGET_COLOR,\r\n        pointColor: DARK_BACKGROUND_COLOR\r\n    },\r\n    bullet: {\r\n        targetColor: TARGET_COLOR\r\n    },\r\n    funnel: {\r\n        item: {\r\n            border: {\r\n                color: DARK_BACKGROUND_COLOR\r\n            }\r\n        }\r\n    },\r\n    sankey: {\r\n        label: {\r\n            font: {\r\n                color: WHITE\r\n            }\r\n        }\r\n    }\r\n}, \"material\");\r\n\r\nfunction registerMaterialColorScheme(accentName, themeName, accentColor) {\r\n    (0, _themes.registerTheme)({\r\n        name: \"material.\" + accentName + \".\" + themeName,\r\n        rangeSelector: {\r\n            selectedRangeColor: accentColor,\r\n            sliderMarker: {\r\n                color: accentColor\r\n            },\r\n            sliderHandle: {\r\n                color: accentColor\r\n            }\r\n        },\r\n        map: {\r\n            \"layer:marker:dot\": {\r\n                color: accentColor\r\n            },\r\n            \"layer:marker:bubble\": {\r\n                color: accentColor\r\n            },\r\n            legend: {\r\n                markerColor: accentColor\r\n            }\r\n        },\r\n        bullet: {\r\n            color: accentColor\r\n        },\r\n        gauge: {\r\n            valueIndicators: {\r\n                rangebar: {\r\n                    color: accentColor\r\n                },\r\n                textcloud: {\r\n                    color: accentColor\r\n                }\r\n            }\r\n        }\r\n    }, \"material.\" + themeName)\r\n}\r\nvar materialAccents = {\r\n    blue: \"#03a9f4\",\r\n    lime: \"#cddc39\",\r\n    orange: \"#ff5722\",\r\n    purple: \"#9c27b0\",\r\n    teal: \"#009688\"\r\n};\r\nfor (var accent in materialAccents) {\r\n    if (Object.prototype.hasOwnProperty.call(materialAccents, accent)) {\r\n        var color = materialAccents[accent];\r\n        registerMaterialColorScheme(accent, \"light\", color);\r\n        registerMaterialColorScheme(accent, \"dark\", color);\r\n        (0, _themes.registerTheme)({\r\n            name: \"material.\".concat(accent, \".light.compact\")\r\n        }, \"material.\".concat(accent, \".light\"));\r\n        (0, _themes.registerTheme)({\r\n            name: \"material.\".concat(accent, \".dark.compact\")\r\n        }, \"material.\".concat(accent, \".dark\"))\r\n    }\r\n}\r\n","/**\r\n * DevExtreme (core/utils/data.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.toComparable = exports.compileSetter = exports.compileGetter = void 0;\r\nvar _errors = _interopRequireDefault(require(\"../errors\"));\r\nvar _class = _interopRequireDefault(require(\"../class\"));\r\nvar _object = require(\"./object\");\r\nvar _type = require(\"./type\");\r\nvar _iterator = require(\"./iterator\");\r\nvar _variable_wrapper = _interopRequireDefault(require(\"./variable_wrapper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar unwrapVariable = _variable_wrapper.default.unwrap;\r\nvar isWrapped = _variable_wrapper.default.isWrapped;\r\nvar assign = _variable_wrapper.default.assign;\r\nvar bracketsToDots = function(expr) {\r\n    return expr.replace(/\\[/g, \".\").replace(/\\]/g, \"\")\r\n};\r\nvar readPropValue = function(obj, propName, options) {\r\n    options = options || {};\r\n    if (\"this\" === propName) {\r\n        return unwrap(obj, options)\r\n    }\r\n    return unwrap(obj[propName], options)\r\n};\r\nvar assignPropValue = function(obj, propName, value, options) {\r\n    if (\"this\" === propName) {\r\n        throw new _errors.default.Error(\"E4016\")\r\n    }\r\n    var propValue = obj[propName];\r\n    if (options.unwrapObservables && isWrapped(propValue)) {\r\n        assign(propValue, value)\r\n    } else {\r\n        obj[propName] = value\r\n    }\r\n};\r\nvar prepareOptions = function(options) {\r\n    options = options || {};\r\n    options.unwrapObservables = void 0 !== options.unwrapObservables ? options.unwrapObservables : true;\r\n    return options\r\n};\r\n\r\nfunction unwrap(value, options) {\r\n    return options.unwrapObservables ? unwrapVariable(value) : value\r\n}\r\nvar compileGetter = function(expr) {\r\n    if (arguments.length > 1) {\r\n        expr = [].slice.call(arguments)\r\n    }\r\n    if (!expr || \"this\" === expr) {\r\n        return function(obj) {\r\n            return obj\r\n        }\r\n    }\r\n    if (\"string\" === typeof expr) {\r\n        expr = bracketsToDots(expr);\r\n        var path = expr.split(\".\");\r\n        return function(obj, options) {\r\n            options = prepareOptions(options);\r\n            var functionAsIs = options.functionsAsIs;\r\n            var hasDefaultValue = \"defaultValue\" in options;\r\n            var current = unwrap(obj, options);\r\n            for (var i = 0; i < path.length; i++) {\r\n                if (!current) {\r\n                    if (null == current && hasDefaultValue) {\r\n                        return options.defaultValue\r\n                    }\r\n                    break\r\n                }\r\n                var pathPart = path[i];\r\n                if (hasDefaultValue && (0, _type.isObject)(current) && !(pathPart in current)) {\r\n                    return options.defaultValue\r\n                }\r\n                var next = unwrap(current[pathPart], options);\r\n                if (!functionAsIs && (0, _type.isFunction)(next)) {\r\n                    next = next.call(current)\r\n                }\r\n                current = next\r\n            }\r\n            return current\r\n        }\r\n    }\r\n    if (Array.isArray(expr)) {\r\n        return combineGetters(expr)\r\n    }\r\n    if ((0, _type.isFunction)(expr)) {\r\n        return expr\r\n    }\r\n};\r\nexports.compileGetter = compileGetter;\r\n\r\nfunction combineGetters(getters) {\r\n    var compiledGetters = {};\r\n    for (var i = 0, l = getters.length; i < l; i++) {\r\n        var getter = getters[i];\r\n        compiledGetters[getter] = compileGetter(getter)\r\n    }\r\n    return function(obj, options) {\r\n        var result;\r\n        (0, _iterator.each)(compiledGetters, function(name) {\r\n            var value = this(obj, options);\r\n            if (void 0 === value) {\r\n                return\r\n            }\r\n            var current = result || (result = {});\r\n            var path = name.split(\".\");\r\n            var last = path.length - 1;\r\n            for (var _i = 0; _i < last; _i++) {\r\n                var pathItem = path[_i];\r\n                if (!(pathItem in current)) {\r\n                    current[pathItem] = {}\r\n                }\r\n                current = current[pathItem]\r\n            }\r\n            current[path[last]] = value\r\n        });\r\n        return result\r\n    }\r\n}\r\nvar ensurePropValueDefined = function(obj, propName, value, options) {\r\n    if ((0, _type.isDefined)(value)) {\r\n        return value\r\n    }\r\n    var newValue = {};\r\n    assignPropValue(obj, propName, newValue, options);\r\n    return newValue\r\n};\r\nvar compileSetter = function(expr) {\r\n    expr = bracketsToDots(expr || \"this\").split(\".\");\r\n    var lastLevelIndex = expr.length - 1;\r\n    return function(obj, value, options) {\r\n        options = prepareOptions(options);\r\n        var currentValue = unwrap(obj, options);\r\n        expr.forEach(function(propertyName, levelIndex) {\r\n            var propertyValue = readPropValue(currentValue, propertyName, options);\r\n            var isPropertyFunc = !options.functionsAsIs && (0, _type.isFunction)(propertyValue) && !isWrapped(propertyValue);\r\n            if (levelIndex === lastLevelIndex) {\r\n                if (options.merge && (0, _type.isPlainObject)(value) && (!(0, _type.isDefined)(propertyValue) || (0, _type.isPlainObject)(propertyValue))) {\r\n                    propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);\r\n                    (0, _object.deepExtendArraySafe)(propertyValue, value, false, true)\r\n                } else {\r\n                    if (isPropertyFunc) {\r\n                        currentValue[propertyName](value)\r\n                    } else {\r\n                        assignPropValue(currentValue, propertyName, value, options)\r\n                    }\r\n                }\r\n            } else {\r\n                propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);\r\n                if (isPropertyFunc) {\r\n                    propertyValue = propertyValue.call(currentValue)\r\n                }\r\n                currentValue = propertyValue\r\n            }\r\n        })\r\n    }\r\n};\r\nexports.compileSetter = compileSetter;\r\nvar toComparable = function(value, caseSensitive) {\r\n    if (value instanceof Date) {\r\n        return value.getTime()\r\n    }\r\n    if (value && value instanceof _class.default && value.valueOf) {\r\n        return value.valueOf()\r\n    }\r\n    if (!caseSensitive && \"string\" === typeof value) {\r\n        return value.toLowerCase()\r\n    }\r\n    return value\r\n};\r\nexports.toComparable = toComparable;\r\n","/**\r\n * DevExtreme (core/utils/storage.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.sessionStorage = void 0;\r\nvar _window = require(\"../../core/utils/window\");\r\nvar window = (0, _window.getWindow)();\r\nvar getSessionStorage = function() {\r\n    var sessionStorage;\r\n    try {\r\n        sessionStorage = window.sessionStorage\r\n    } catch (e) {}\r\n    return sessionStorage\r\n};\r\nexports.sessionStorage = getSessionStorage;\r\n","/**\r\n * DevExtreme (core/utils/math.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.adjust = adjust;\r\nexports.getPrecision = getPrecision;\r\nexports.getExponent = getExponent;\r\nexports.getRoot = getRoot;\r\nexports.solveCubicEquation = solveCubicEquation;\r\nexports.trunc = trunc;\r\nexports.roundFloatPart = roundFloatPart;\r\nexports.getExponentLength = getExponentLength;\r\nexports.getRemainderByDivision = getRemainderByDivision;\r\nexports.inRange = exports.fitIntoRange = exports.sign = void 0;\r\nvar _type = require(\"./type\");\r\nvar sign = function(value) {\r\n    if (0 === value) {\r\n        return 0\r\n    }\r\n    return value / Math.abs(value)\r\n};\r\nexports.sign = sign;\r\nvar fitIntoRange = function(value, minValue, maxValue) {\r\n    var isMinValueUndefined = !minValue && 0 !== minValue;\r\n    var isMaxValueUndefined = !maxValue && 0 !== maxValue;\r\n    isMinValueUndefined && (minValue = !isMaxValueUndefined ? Math.min(value, maxValue) : value);\r\n    isMaxValueUndefined && (maxValue = !isMinValueUndefined ? Math.max(value, minValue) : value);\r\n    return Math.min(Math.max(value, minValue), maxValue)\r\n};\r\nexports.fitIntoRange = fitIntoRange;\r\nvar inRange = function(value, minValue, maxValue) {\r\n    return value >= minValue && value <= maxValue\r\n};\r\nexports.inRange = inRange;\r\n\r\nfunction getExponent(value) {\r\n    return Math.abs(parseInt(value.toExponential().split(\"e\")[1]))\r\n}\r\n\r\nfunction _isEdgeBug() {\r\n    var value = 3e-4;\r\n    var correctValue = \"0.000300\";\r\n    var precisionValue = 3;\r\n    return correctValue !== value.toPrecision(precisionValue)\r\n}\r\n\r\nfunction adjust(value, interval) {\r\n    var precision = getPrecision(interval || 0) + 2;\r\n    var separatedValue = value.toString().split(\".\");\r\n    var sourceValue = value;\r\n    var absValue = Math.abs(value);\r\n    var separatedAdjustedValue;\r\n    var isExponentValue = (0, _type.isExponential)(value);\r\n    var integerPart = absValue > 1 ? 10 : 0;\r\n    if (1 === separatedValue.length) {\r\n        return value\r\n    }\r\n    if (!isExponentValue) {\r\n        if ((0, _type.isExponential)(interval)) {\r\n            precision = separatedValue[0].length + getExponent(interval)\r\n        }\r\n        value = absValue;\r\n        value = value - Math.floor(value) + integerPart\r\n    }\r\n    precision = _isEdgeBug() && getExponent(value) > 6 || precision > 7 ? 15 : 7;\r\n    if (!isExponentValue) {\r\n        separatedAdjustedValue = parseFloat(value.toPrecision(precision)).toString().split(\".\");\r\n        if (separatedAdjustedValue[0] === integerPart.toString()) {\r\n            return parseFloat(separatedValue[0] + \".\" + separatedAdjustedValue[1])\r\n        }\r\n    }\r\n    return parseFloat(sourceValue.toPrecision(precision))\r\n}\r\n\r\nfunction getPrecision(value) {\r\n    var str = value.toString();\r\n    if (str.indexOf(\".\") < 0) {\r\n        return 0\r\n    }\r\n    var mantissa = str.split(\".\");\r\n    var positionOfDelimiter = mantissa[1].indexOf(\"e\");\r\n    return positionOfDelimiter >= 0 ? positionOfDelimiter : mantissa[1].length\r\n}\r\n\r\nfunction getRoot(x, n) {\r\n    if (x < 0 && n % 2 !== 1) {\r\n        return NaN\r\n    }\r\n    var y = Math.pow(Math.abs(x), 1 / n);\r\n    return n % 2 === 1 && x < 0 ? -y : y\r\n}\r\n\r\nfunction solveCubicEquation(a, b, c, d) {\r\n    var min = 1e-8;\r\n    if (Math.abs(a) < min) {\r\n        a = b;\r\n        b = c;\r\n        c = d;\r\n        if (Math.abs(a) < min) {\r\n            a = b;\r\n            b = c;\r\n            if (Math.abs(a) < min) {\r\n                return []\r\n            }\r\n            return [-b / a]\r\n        }\r\n        var D2 = b * b - 4 * a * c;\r\n        if (Math.abs(D2) < min) {\r\n            return [-b / (2 * a)]\r\n        } else {\r\n            if (D2 > 0) {\r\n                return [(-b + Math.sqrt(D2)) / (2 * a), (-b - Math.sqrt(D2)) / (2 * a)]\r\n            }\r\n        }\r\n        return []\r\n    }\r\n    var p = (3 * a * c - b * b) / (3 * a * a);\r\n    var q = (2 * b * b * b - 9 * a * b * c + 27 * a * a * d) / (27 * a * a * a);\r\n    var roots;\r\n    var u;\r\n    if (Math.abs(p) < min) {\r\n        roots = [getRoot(-q, 3)]\r\n    } else {\r\n        if (Math.abs(q) < min) {\r\n            roots = [0].concat(p < 0 ? [Math.sqrt(-p), -Math.sqrt(-p)] : [])\r\n        } else {\r\n            var D3 = q * q / 4 + p * p * p / 27;\r\n            if (Math.abs(D3) < min) {\r\n                roots = [-1.5 * q / p, 3 * q / p]\r\n            } else {\r\n                if (D3 > 0) {\r\n                    u = getRoot(-q / 2 - Math.sqrt(D3), 3);\r\n                    roots = [u - p / (3 * u)]\r\n                } else {\r\n                    u = 2 * Math.sqrt(-p / 3);\r\n                    var t = Math.acos(3 * q / p / u) / 3;\r\n                    var k = 2 * Math.PI / 3;\r\n                    roots = [u * Math.cos(t), u * Math.cos(t - k), u * Math.cos(t - 2 * k)]\r\n                }\r\n            }\r\n        }\r\n    }\r\n    for (var i = 0; i < roots.length; i++) {\r\n        roots[i] -= b / (3 * a)\r\n    }\r\n    return roots\r\n}\r\n\r\nfunction trunc(value) {\r\n    return Math.trunc ? Math.trunc(value) : value > 0 ? Math.floor(value) : Math.ceil(value)\r\n}\r\n\r\nfunction getRemainderByDivision(dividend, divider, digitsCount) {\r\n    if (divider === parseInt(divider)) {\r\n        return dividend % divider\r\n    }\r\n    var quotient = roundFloatPart(dividend / divider, digitsCount);\r\n    return (quotient - parseInt(quotient)) * divider\r\n}\r\n\r\nfunction getExponentLength(value) {\r\n    var _valueString$split$;\r\n    var valueString = value.toString();\r\n    return (null === (_valueString$split$ = valueString.split(\".\")[1]) || void 0 === _valueString$split$ ? void 0 : _valueString$split$.length) || parseInt(valueString.split(\"e-\")[1]) || 0\r\n}\r\n\r\nfunction roundFloatPart(value) {\r\n    var digitsCount = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n    return parseFloat(value.toFixed(digitsCount))\r\n}\r\n","/**\r\n * DevExtreme (ui/themes_callback.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.themeReadyCallback = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar themeReadyCallback = new _callbacks.default;\r\nexports.themeReadyCallback = themeReadyCallback;\r\n","/**\r\n * DevExtreme (ui/widget/ui.widget.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _action = _interopRequireDefault(require(\"../../core/action\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _short = require(\"../../events/short\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _selectors = require(\"./selectors\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _type = require(\"../../core/utils/type\");\r\nrequire(\"../../events/click\");\r\nrequire(\"../../events/core/emitter.feedback\");\r\nrequire(\"../../events/hover\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction setAttribute(name, value, target) {\r\n    name = \"role\" === name || \"id\" === name ? name : \"aria-\".concat(name);\r\n    value = (0, _type.isDefined)(value) ? value.toString() : null;\r\n    target.attr(name, value)\r\n}\r\nvar Widget = _dom_component.default.inherit({\r\n    _feedbackHideTimeout: 400,\r\n    _feedbackShowTimeout: 30,\r\n    _supportedKeys: function() {\r\n        return {}\r\n    },\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend2.extend)(this.callBase(), {\r\n            hoveredElement: null,\r\n            isActive: false,\r\n            disabled: false,\r\n            visible: true,\r\n            hint: void 0,\r\n            activeStateEnabled: false,\r\n            onContentReady: null,\r\n            hoverStateEnabled: false,\r\n            focusStateEnabled: false,\r\n            tabIndex: 0,\r\n            accessKey: null,\r\n            onFocusIn: null,\r\n            onFocusOut: null,\r\n            onKeyboardHandled: null,\r\n            ignoreParentReadOnly: false\r\n        })\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._initContentReadyAction()\r\n    },\r\n    _innerWidgetOptionChanged: function(innerWidget, args) {\r\n        var options = Widget.getOptionsFromContainer(args);\r\n        innerWidget && innerWidget.option(options);\r\n        this._options.cache(args.name, options)\r\n    },\r\n    _bindInnerWidgetOptions: function(innerWidget, optionsContainer) {\r\n        var _this = this;\r\n        var syncOptions = function() {\r\n            return _this._options.silent(optionsContainer, (0, _extend2.extend)({}, innerWidget.option()))\r\n        };\r\n        syncOptions();\r\n        innerWidget.on(\"optionChanged\", syncOptions)\r\n    },\r\n    _getAriaTarget: function() {\r\n        return this._focusTarget()\r\n    },\r\n    _initContentReadyAction: function() {\r\n        this._contentReadyAction = this._createActionByOption(\"onContentReady\", {\r\n            excludeValidators: [\"disabled\", \"readOnly\"]\r\n        })\r\n    },\r\n    _initMarkup: function() {\r\n        var _this$option = this.option(),\r\n            disabled = _this$option.disabled,\r\n            visible = _this$option.visible;\r\n        this.$element().addClass(\"dx-widget\");\r\n        this._toggleDisabledState(disabled);\r\n        this._toggleVisibility(visible);\r\n        this._renderHint();\r\n        this._isFocusable() && this._renderFocusTarget();\r\n        this.callBase()\r\n    },\r\n    _render: function() {\r\n        this.callBase();\r\n        this._renderContent();\r\n        this._renderFocusState();\r\n        this._attachFeedbackEvents();\r\n        this._attachHoverEvents();\r\n        this._toggleIndependentState()\r\n    },\r\n    _renderHint: function() {\r\n        var _this$option2 = this.option(),\r\n            hint = _this$option2.hint;\r\n        this.$element().attr(\"title\", hint || null)\r\n    },\r\n    _renderContent: function() {\r\n        var _this2 = this;\r\n        (0, _common.deferRender)(function() {\r\n            return !_this2._disposed ? _this2._renderContentImpl() : void 0\r\n        }).done(function() {\r\n            return !_this2._disposed ? _this2._fireContentReadyAction() : void 0\r\n        })\r\n    },\r\n    _renderContentImpl: _common.noop,\r\n    _fireContentReadyAction: (0, _common.deferRenderer)(function() {\r\n        return this._contentReadyAction()\r\n    }),\r\n    _dispose: function() {\r\n        this._contentReadyAction = null;\r\n        this._detachKeyboardEvents();\r\n        this.callBase()\r\n    },\r\n    _resetActiveState: function() {\r\n        this._toggleActiveState(this._eventBindingTarget(), false)\r\n    },\r\n    _clean: function() {\r\n        this._cleanFocusState();\r\n        this._resetActiveState();\r\n        this.callBase();\r\n        this.$element().empty()\r\n    },\r\n    _toggleVisibility: function(visible) {\r\n        this.$element().toggleClass(\"dx-state-invisible\", !visible);\r\n        this.setAria(\"hidden\", !visible || void 0)\r\n    },\r\n    _renderFocusState: function() {\r\n        this._attachKeyboardEvents();\r\n        if (this._isFocusable()) {\r\n            this._renderFocusTarget();\r\n            this._attachFocusEvents();\r\n            this._renderAccessKey()\r\n        }\r\n    },\r\n    _renderAccessKey: function() {\r\n        var _this3 = this;\r\n        var $el = this._focusTarget();\r\n        var _this$option3 = this.option(),\r\n            accessKey = _this$option3.accessKey;\r\n        var namespace = \"UIFeedback\";\r\n        $el.attr(\"accesskey\", accessKey);\r\n        _short.dxClick.off($el, {\r\n            namespace: namespace\r\n        });\r\n        accessKey && _short.dxClick.on($el, function(e) {\r\n            if ((0, _index.isFakeClickEvent)(e)) {\r\n                e.stopImmediatePropagation();\r\n                _this3.focus()\r\n            }\r\n        }, {\r\n            namespace: namespace\r\n        })\r\n    },\r\n    _isFocusable: function() {\r\n        var _this$option4 = this.option(),\r\n            focusStateEnabled = _this$option4.focusStateEnabled,\r\n            disabled = _this$option4.disabled;\r\n        return focusStateEnabled && !disabled\r\n    },\r\n    _eventBindingTarget: function() {\r\n        return this.$element()\r\n    },\r\n    _focusTarget: function() {\r\n        return this._getActiveElement()\r\n    },\r\n    _getActiveElement: function() {\r\n        var activeElement = this._eventBindingTarget();\r\n        if (this._activeStateUnit) {\r\n            return activeElement.find(this._activeStateUnit).not(\".dx-state-disabled\")\r\n        }\r\n        return activeElement\r\n    },\r\n    _renderFocusTarget: function() {\r\n        var _this$option5 = this.option(),\r\n            tabIndex = _this$option5.tabIndex;\r\n        this._focusTarget().attr(\"tabIndex\", tabIndex)\r\n    },\r\n    _keyboardEventBindingTarget: function() {\r\n        return this._eventBindingTarget()\r\n    },\r\n    _refreshFocusEvent: function() {\r\n        this._detachFocusEvents();\r\n        this._attachFocusEvents()\r\n    },\r\n    _focusEventTarget: function() {\r\n        return this._focusTarget()\r\n    },\r\n    _focusInHandler: function(event) {\r\n        var _this4 = this;\r\n        if (!event.isDefaultPrevented()) {\r\n            this._createActionByOption(\"onFocusIn\", {\r\n                beforeExecute: function() {\r\n                    return _this4._updateFocusState(event, true)\r\n                },\r\n                excludeValidators: [\"readOnly\"]\r\n            })({\r\n                event: event\r\n            })\r\n        }\r\n    },\r\n    _focusOutHandler: function(event) {\r\n        var _this5 = this;\r\n        if (!event.isDefaultPrevented()) {\r\n            this._createActionByOption(\"onFocusOut\", {\r\n                beforeExecute: function() {\r\n                    return _this5._updateFocusState(event, false)\r\n                },\r\n                excludeValidators: [\"readOnly\", \"disabled\"]\r\n            })({\r\n                event: event\r\n            })\r\n        }\r\n    },\r\n    _updateFocusState: function(_ref, isFocused) {\r\n        var target = _ref.target;\r\n        if ((0, _array.inArray)(target, this._focusTarget()) !== -1) {\r\n            this._toggleFocusClass(isFocused, (0, _renderer.default)(target))\r\n        }\r\n    },\r\n    _toggleFocusClass: function(isFocused, $element) {\r\n        var $focusTarget = $element && $element.length ? $element : this._focusTarget();\r\n        $focusTarget.toggleClass(\"dx-state-focused\", isFocused)\r\n    },\r\n    _hasFocusClass: function(element) {\r\n        var $focusTarget = (0, _renderer.default)(element || this._focusTarget());\r\n        return $focusTarget.hasClass(\"dx-state-focused\")\r\n    },\r\n    _isFocused: function() {\r\n        return this._hasFocusClass()\r\n    },\r\n    _getKeyboardListeners: function() {\r\n        return []\r\n    },\r\n    _attachKeyboardEvents: function() {\r\n        var _this6 = this;\r\n        this._detachKeyboardEvents();\r\n        var _this$option6 = this.option(),\r\n            focusStateEnabled = _this$option6.focusStateEnabled,\r\n            onKeyboardHandled = _this$option6.onKeyboardHandled;\r\n        var hasChildListeners = this._getKeyboardListeners().length;\r\n        var hasKeyboardEventHandler = !!onKeyboardHandled;\r\n        var shouldAttach = focusStateEnabled || hasChildListeners || hasKeyboardEventHandler;\r\n        if (shouldAttach) {\r\n            this._keyboardListenerId = _short.keyboard.on(this._keyboardEventBindingTarget(), this._focusTarget(), function(opts) {\r\n                return _this6._keyboardHandler(opts)\r\n            })\r\n        }\r\n    },\r\n    _keyboardHandler: function(options, onlyChildProcessing) {\r\n        if (!onlyChildProcessing) {\r\n            var originalEvent = options.originalEvent,\r\n                keyName = options.keyName,\r\n                which = options.which;\r\n            var keys = this._supportedKeys(originalEvent);\r\n            var func = keys[keyName] || keys[which];\r\n            if (void 0 !== func) {\r\n                var handler = func.bind(this);\r\n                var result = handler(originalEvent, options);\r\n                if (!result) {\r\n                    return false\r\n                }\r\n            }\r\n        }\r\n        var keyboardListeners = this._getKeyboardListeners();\r\n        var _this$option7 = this.option(),\r\n            onKeyboardHandled = _this$option7.onKeyboardHandled;\r\n        keyboardListeners.forEach(function(listener) {\r\n            return listener && listener._keyboardHandler(options)\r\n        });\r\n        onKeyboardHandled && onKeyboardHandled(options);\r\n        return true\r\n    },\r\n    _refreshFocusState: function() {\r\n        this._cleanFocusState();\r\n        this._renderFocusState()\r\n    },\r\n    _cleanFocusState: function() {\r\n        var $element = this._focusTarget();\r\n        $element.removeAttr(\"tabIndex\");\r\n        this._toggleFocusClass(false);\r\n        this._detachFocusEvents();\r\n        this._detachKeyboardEvents()\r\n    },\r\n    _detachKeyboardEvents: function() {\r\n        _short.keyboard.off(this._keyboardListenerId);\r\n        this._keyboardListenerId = null\r\n    },\r\n    _attachHoverEvents: function() {\r\n        var _this7 = this;\r\n        var _this$option8 = this.option(),\r\n            hoverStateEnabled = _this$option8.hoverStateEnabled;\r\n        var selector = this._activeStateUnit;\r\n        var namespace = \"UIFeedback\";\r\n        var $el = this._eventBindingTarget();\r\n        _short.hover.off($el, {\r\n            selector: selector,\r\n            namespace: namespace\r\n        });\r\n        if (hoverStateEnabled) {\r\n            _short.hover.on($el, new _action.default(function(_ref2) {\r\n                var event = _ref2.event,\r\n                    element = _ref2.element;\r\n                _this7._hoverStartHandler(event);\r\n                _this7.option(\"hoveredElement\", (0, _renderer.default)(element))\r\n            }, {\r\n                excludeValidators: [\"readOnly\"]\r\n            }), function(event) {\r\n                _this7.option(\"hoveredElement\", null);\r\n                _this7._hoverEndHandler(event)\r\n            }, {\r\n                selector: selector,\r\n                namespace: namespace\r\n            })\r\n        }\r\n    },\r\n    _attachFeedbackEvents: function() {\r\n        var _this8 = this;\r\n        var _this$option9 = this.option(),\r\n            activeStateEnabled = _this$option9.activeStateEnabled;\r\n        var selector = this._activeStateUnit;\r\n        var namespace = \"UIFeedback\";\r\n        var $el = this._eventBindingTarget();\r\n        _short.active.off($el, {\r\n            namespace: namespace,\r\n            selector: selector\r\n        });\r\n        if (activeStateEnabled) {\r\n            _short.active.on($el, new _action.default(function(_ref3) {\r\n                var event = _ref3.event,\r\n                    element = _ref3.element;\r\n                return _this8._toggleActiveState((0, _renderer.default)(element), true, event)\r\n            }), new _action.default(function(_ref4) {\r\n                var event = _ref4.event,\r\n                    element = _ref4.element;\r\n                return _this8._toggleActiveState((0, _renderer.default)(element), false, event)\r\n            }, {\r\n                excludeValidators: [\"disabled\", \"readOnly\"]\r\n            }), {\r\n                showTimeout: this._feedbackShowTimeout,\r\n                hideTimeout: this._feedbackHideTimeout,\r\n                selector: selector,\r\n                namespace: namespace\r\n            })\r\n        }\r\n    },\r\n    _detachFocusEvents: function() {\r\n        var $el = this._focusEventTarget();\r\n        _short.focus.off($el, {\r\n            namespace: \"\".concat(this.NAME, \"Focus\")\r\n        })\r\n    },\r\n    _attachFocusEvents: function() {\r\n        var _this9 = this;\r\n        var $el = this._focusEventTarget();\r\n        _short.focus.on($el, function(e) {\r\n            return _this9._focusInHandler(e)\r\n        }, function(e) {\r\n            return _this9._focusOutHandler(e)\r\n        }, {\r\n            namespace: \"\".concat(this.NAME, \"Focus\"),\r\n            isFocusable: function(index, el) {\r\n                return (0, _renderer.default)(el).is(_selectors.focusable)\r\n            }\r\n        })\r\n    },\r\n    _hoverStartHandler: _common.noop,\r\n    _hoverEndHandler: _common.noop,\r\n    _toggleActiveState: function($element, value) {\r\n        this.option(\"isActive\", value);\r\n        $element.toggleClass(\"dx-state-active\", value)\r\n    },\r\n    _updatedHover: function() {\r\n        var hoveredElement = this._options.silent(\"hoveredElement\");\r\n        this._hover(hoveredElement, hoveredElement)\r\n    },\r\n    _findHoverTarget: function($el) {\r\n        return $el && $el.closest(this._activeStateUnit || this._eventBindingTarget())\r\n    },\r\n    _hover: function($el, $previous) {\r\n        var _this$option10 = this.option(),\r\n            hoverStateEnabled = _this$option10.hoverStateEnabled,\r\n            disabled = _this$option10.disabled,\r\n            isActive = _this$option10.isActive;\r\n        $previous = this._findHoverTarget($previous);\r\n        $previous && $previous.toggleClass(\"dx-state-hover\", false);\r\n        if ($el && hoverStateEnabled && !disabled && !isActive) {\r\n            var newHoveredElement = this._findHoverTarget($el);\r\n            newHoveredElement && newHoveredElement.toggleClass(\"dx-state-hover\", true)\r\n        }\r\n    },\r\n    _toggleDisabledState: function(value) {\r\n        this.$element().toggleClass(\"dx-state-disabled\", Boolean(value));\r\n        this.setAria(\"disabled\", value || void 0)\r\n    },\r\n    _toggleIndependentState: function() {\r\n        this.$element().toggleClass(\"dx-state-independent\", this.option(\"ignoreParentReadOnly\"))\r\n    },\r\n    _setWidgetOption: function(widgetName, args) {\r\n        var _this10 = this;\r\n        if (!this[widgetName]) {\r\n            return\r\n        }\r\n        if ((0, _type.isPlainObject)(args[0])) {\r\n            (0, _iterator.each)(args[0], function(option, value) {\r\n                return _this10._setWidgetOption(widgetName, [option, value])\r\n            });\r\n            return\r\n        }\r\n        var optionName = args[0];\r\n        var value = args[1];\r\n        if (1 === args.length) {\r\n            value = this.option(optionName)\r\n        }\r\n        var widgetOptionMap = this[\"\".concat(widgetName, \"OptionMap\")];\r\n        this[widgetName].option(widgetOptionMap ? widgetOptionMap(optionName) : optionName, value)\r\n    },\r\n    _optionChanged: function(args) {\r\n        var name = args.name,\r\n            value = args.value,\r\n            previousValue = args.previousValue;\r\n        switch (name) {\r\n            case \"disabled\":\r\n                this._toggleDisabledState(value);\r\n                this._updatedHover();\r\n                this._refreshFocusState();\r\n                break;\r\n            case \"hint\":\r\n                this._renderHint();\r\n                break;\r\n            case \"ignoreParentReadOnly\":\r\n                this._toggleIndependentState();\r\n                break;\r\n            case \"activeStateEnabled\":\r\n                this._attachFeedbackEvents();\r\n                break;\r\n            case \"hoverStateEnabled\":\r\n                this._attachHoverEvents();\r\n                this._updatedHover();\r\n                break;\r\n            case \"tabIndex\":\r\n            case \"focusStateEnabled\":\r\n                this._refreshFocusState();\r\n                break;\r\n            case \"onFocusIn\":\r\n            case \"onFocusOut\":\r\n                break;\r\n            case \"accessKey\":\r\n                this._renderAccessKey();\r\n                break;\r\n            case \"hoveredElement\":\r\n                this._hover(value, previousValue);\r\n                break;\r\n            case \"isActive\":\r\n                this._updatedHover();\r\n                break;\r\n            case \"visible\":\r\n                this._toggleVisibility(value);\r\n                if (this._isVisibilityChangeSupported()) {\r\n                    this._checkVisibilityChanged(value ? \"shown\" : \"hiding\")\r\n                }\r\n                break;\r\n            case \"onKeyboardHandled\":\r\n                this._attachKeyboardEvents();\r\n                break;\r\n            case \"onContentReady\":\r\n                this._initContentReadyAction();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    _isVisible: function() {\r\n        var _this$option11 = this.option(),\r\n            visible = _this$option11.visible;\r\n        return this.callBase() && visible\r\n    },\r\n    beginUpdate: function() {\r\n        this._ready(false);\r\n        this.callBase()\r\n    },\r\n    endUpdate: function() {\r\n        this.callBase();\r\n        if (this._initialized) {\r\n            this._ready(true)\r\n        }\r\n    },\r\n    _ready: function(value) {\r\n        if (0 === arguments.length) {\r\n            return this._isReady\r\n        }\r\n        this._isReady = value\r\n    },\r\n    setAria: function() {\r\n        if (!(0, _type.isPlainObject)(arguments.length <= 0 ? void 0 : arguments[0])) {\r\n            setAttribute(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], (arguments.length <= 2 ? void 0 : arguments[2]) || this._getAriaTarget())\r\n        } else {\r\n            var target = (arguments.length <= 1 ? void 0 : arguments[1]) || this._getAriaTarget();\r\n            (0, _iterator.each)(arguments.length <= 0 ? void 0 : arguments[0], function(name, value) {\r\n                return setAttribute(name, value, target)\r\n            })\r\n        }\r\n    },\r\n    isReady: function() {\r\n        return this._ready()\r\n    },\r\n    repaint: function() {\r\n        this._refresh()\r\n    },\r\n    focus: function() {\r\n        _short.focus.trigger(this._focusTarget())\r\n    },\r\n    registerKeyHandler: function(key, handler) {\r\n        var currentKeys = this._supportedKeys();\r\n        this._supportedKeys = function() {\r\n            return (0, _extend2.extend)(currentKeys, _defineProperty({}, key, handler))\r\n        }\r\n    }\r\n});\r\nWidget.getOptionsFromContainer = function(_ref5) {\r\n    var name = _ref5.name,\r\n        fullName = _ref5.fullName,\r\n        value = _ref5.value;\r\n    var options = {};\r\n    if (name === fullName) {\r\n        options = value\r\n    } else {\r\n        var option = fullName.split(\".\").pop();\r\n        options[option] = value\r\n    }\r\n    return options\r\n};\r\nvar _default = Widget;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/core/themes/generic.dark.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _themes = require(\"../../themes\");\r\nvar WHITE = \"#ffffff\";\r\nvar BLACK = \"#000000\";\r\nvar SOME_GREY = \"#2b2b2b\";\r\nvar RANGE_COLOR = \"#b5b5b5\";\r\nvar GREY_GREEN = \"#303030\";\r\nvar AREA_LAYER_COLOR = \"#686868\";\r\nvar LINE_COLOR = \"#c7c7c7\";\r\nvar TARGET_COLOR = \"#8e8e8e\";\r\nvar POSITIVE_COLOR = \"#b8b8b8\";\r\nvar BORDER_COLOR = \"#494949\";\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.dark\",\r\n    font: {\r\n        color: \"#808080\"\r\n    },\r\n    backgroundColor: \"#2a2a2a\",\r\n    primaryTitleColor: \"#dedede\",\r\n    secondaryTitleColor: \"#a3a3a3\",\r\n    gridColor: \"#555555\",\r\n    axisColor: \"#a3a3a3\",\r\n    \"export\": {\r\n        backgroundColor: \"#2a2a2a\",\r\n        font: {\r\n            color: \"#dbdbdb\"\r\n        },\r\n        button: {\r\n            \"default\": {\r\n                color: \"#dedede\",\r\n                borderColor: \"#4d4d4d\",\r\n                backgroundColor: \"#2e2e2e\"\r\n            },\r\n            hover: {\r\n                color: \"#dedede\",\r\n                borderColor: \"#6c6c6c\",\r\n                backgroundColor: \"#444\"\r\n            },\r\n            focus: {\r\n                color: \"#dedede\",\r\n                borderColor: \"#8d8d8d\",\r\n                backgroundColor: \"#444444\"\r\n            },\r\n            active: {\r\n                color: \"#dedede\",\r\n                borderColor: \"#8d8d8d\",\r\n                backgroundColor: \"#555555\"\r\n            }\r\n        },\r\n        shadowColor: \"#292929\"\r\n    },\r\n    tooltip: {\r\n        color: SOME_GREY,\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        font: {\r\n            color: \"#929292\"\r\n        }\r\n    },\r\n    \"chart:common\": {\r\n        commonSeriesSettings: {\r\n            label: {\r\n                border: {\r\n                    color: BORDER_COLOR\r\n                }\r\n            },\r\n            valueErrorBar: {\r\n                color: WHITE\r\n            }\r\n        }\r\n    },\r\n    \"chart:common:axis\": {\r\n        constantLineStyle: {\r\n            color: WHITE\r\n        }\r\n    },\r\n    \"chart:common:annotation\": {\r\n        font: {\r\n            color: \"#929292\"\r\n        },\r\n        border: {\r\n            color: BORDER_COLOR\r\n        },\r\n        color: SOME_GREY,\r\n        shadow: {\r\n            opacity: .008,\r\n            offsetY: 4,\r\n            blur: 8\r\n        }\r\n    },\r\n    chart: {\r\n        commonPaneSettings: {\r\n            border: {\r\n                color: BORDER_COLOR\r\n            }\r\n        },\r\n        commonAxisSettings: {\r\n            breakStyle: {\r\n                color: \"#818181\"\r\n            }\r\n        },\r\n        zoomAndPan: {\r\n            dragBoxStyle: {\r\n                color: WHITE\r\n            }\r\n        }\r\n    },\r\n    gauge: {\r\n        rangeContainer: {\r\n            backgroundColor: RANGE_COLOR\r\n        },\r\n        valueIndicators: {\r\n            _default: {\r\n                color: RANGE_COLOR\r\n            },\r\n            rangebar: {\r\n                color: \"#84788b\"\r\n            },\r\n            twocolorneedle: {\r\n                secondColor: \"#ba544d\"\r\n            },\r\n            trianglemarker: {\r\n                color: \"#b7918f\"\r\n            },\r\n            textcloud: {\r\n                color: \"#ba544d\"\r\n            }\r\n        }\r\n    },\r\n    barGauge: {\r\n        backgroundColor: \"#3c3c3c\"\r\n    },\r\n    rangeSelector: {\r\n        scale: {\r\n            tick: {\r\n                color: WHITE,\r\n                opacity: .32\r\n            },\r\n            minorTick: {\r\n                color: WHITE,\r\n                opacity: .1\r\n            },\r\n            breakStyle: {\r\n                color: \"#818181\"\r\n            }\r\n        },\r\n        selectedRangeColor: RANGE_COLOR,\r\n        sliderMarker: {\r\n            color: RANGE_COLOR,\r\n            font: {\r\n                color: GREY_GREEN\r\n            }\r\n        },\r\n        sliderHandle: {\r\n            color: WHITE,\r\n            opacity: .2\r\n        },\r\n        shutter: {\r\n            color: SOME_GREY,\r\n            opacity: .9\r\n        }\r\n    },\r\n    map: {\r\n        background: {\r\n            borderColor: \"#3f3f3f\"\r\n        },\r\n        layer: {\r\n            label: {\r\n                stroke: BLACK,\r\n                font: {\r\n                    color: WHITE\r\n                }\r\n            }\r\n        },\r\n        \"layer:area\": {\r\n            borderColor: GREY_GREEN,\r\n            color: AREA_LAYER_COLOR,\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE\r\n        },\r\n        \"layer:line\": {\r\n            color: \"#c77244\",\r\n            hoveredColor: \"#ff5d04\",\r\n            selectedColor: \"#ff784f\"\r\n        },\r\n        \"layer:marker:bubble\": {\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE\r\n        },\r\n        \"layer:marker:pie\": {\r\n            hoveredBorderColor: WHITE,\r\n            selectedBorderColor: WHITE\r\n        },\r\n        legend: {\r\n            border: {\r\n                color: \"#3f3f3f\"\r\n            },\r\n            font: {\r\n                color: WHITE\r\n            }\r\n        },\r\n        controlBar: {\r\n            borderColor: LINE_COLOR,\r\n            color: GREY_GREEN\r\n        }\r\n    },\r\n    treeMap: {\r\n        group: {\r\n            color: \"#4c4c4c\",\r\n            label: {\r\n                font: {\r\n                    color: \"#a3a3a3\"\r\n                }\r\n            }\r\n        }\r\n    },\r\n    sparkline: {\r\n        lineColor: LINE_COLOR,\r\n        firstLastColor: LINE_COLOR,\r\n        barPositiveColor: POSITIVE_COLOR,\r\n        barNegativeColor: TARGET_COLOR,\r\n        winColor: POSITIVE_COLOR,\r\n        lossColor: TARGET_COLOR,\r\n        pointColor: GREY_GREEN\r\n    },\r\n    bullet: {\r\n        targetColor: TARGET_COLOR\r\n    },\r\n    funnel: {\r\n        item: {\r\n            border: {\r\n                color: \"#2a2a2a\"\r\n            }\r\n        }\r\n    },\r\n    sankey: {\r\n        label: {\r\n            font: {\r\n                color: WHITE\r\n            },\r\n            shadow: {\r\n                opacity: 0\r\n            }\r\n        },\r\n        node: {\r\n            border: {\r\n                color: \"#2a2a2a\"\r\n            }\r\n        },\r\n        link: {\r\n            color: \"#888888\",\r\n            border: {\r\n                color: \"#2a2a2a\"\r\n            },\r\n            hoverStyle: {\r\n                color: \"#bbbbbb\"\r\n            }\r\n        }\r\n    }\r\n}, \"generic.light\");\r\n(0, _themes.registerTheme)({\r\n    name: \"generic.dark.compact\"\r\n}, \"generic.dark\");\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.switchable.button.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEditDecorator = _interopRequireDefault(require(\"./ui.list.edit.decorator.switchable\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-switchable-delete-button-container\";\r\nvar SWITCHABLE_DELETE_BUTTON_WRAPPER_CLASS = \"dx-list-switchable-delete-button-wrapper\";\r\nvar SWITCHABLE_DELETE_BUTTON_INNER_WRAPPER_CLASS = \"dx-list-switchable-delete-button-inner-wrapper\";\r\nvar SWITCHABLE_DELETE_BUTTON_CLASS = \"dx-list-switchable-delete-button\";\r\nvar SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION = 200;\r\nvar SwitchableButtonEditDecorator = _uiListEditDecorator.default.inherit({\r\n    _init: function() {\r\n        this.callBase.apply(this, arguments);\r\n        var $buttonContainer = (0, _renderer.default)(\"<div>\").addClass(SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS);\r\n        var $buttonWrapper = (0, _renderer.default)(\"<div>\").addClass(SWITCHABLE_DELETE_BUTTON_WRAPPER_CLASS);\r\n        var $buttonInnerWrapper = (0, _renderer.default)(\"<div>\").addClass(SWITCHABLE_DELETE_BUTTON_INNER_WRAPPER_CLASS);\r\n        var $button = (0, _renderer.default)(\"<div>\").addClass(SWITCHABLE_DELETE_BUTTON_CLASS);\r\n        this._list._createComponent($button, _button.default, {\r\n            text: _message.default.format(\"dxListEditDecorator-delete\"),\r\n            type: \"danger\",\r\n            onClick: function(e) {\r\n                this._deleteItem();\r\n                e.event.stopPropagation()\r\n            }.bind(this),\r\n            integrationOptions: {}\r\n        });\r\n        $buttonContainer.append($buttonWrapper);\r\n        $buttonWrapper.append($buttonInnerWrapper);\r\n        $buttonInnerWrapper.append($button);\r\n        this._$buttonContainer = $buttonContainer\r\n    },\r\n    _enablePositioning: function($itemElement) {\r\n        this.callBase.apply(this, arguments);\r\n        _fx.default.stop(this._$buttonContainer, true);\r\n        this._$buttonContainer.appendTo($itemElement)\r\n    },\r\n    _disablePositioning: function() {\r\n        this.callBase.apply(this, arguments);\r\n        this._$buttonContainer.detach()\r\n    },\r\n    _animatePrepareDeleteReady: function() {\r\n        var rtl = this._isRtlEnabled();\r\n        var listWidth = this._list.$element().width();\r\n        var buttonWidth = this._buttonWidth();\r\n        var fromValue = rtl ? listWidth : -buttonWidth;\r\n        var toValue = rtl ? listWidth - buttonWidth : 0;\r\n        return _fx.default.animate(this._$buttonContainer, {\r\n            type: \"custom\",\r\n            duration: SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION,\r\n            from: {\r\n                right: fromValue\r\n            },\r\n            to: {\r\n                right: toValue\r\n            }\r\n        })\r\n    },\r\n    _animateForgetDeleteReady: function() {\r\n        var rtl = this._isRtlEnabled();\r\n        var listWidth = this._list.$element().width();\r\n        var buttonWidth = this._buttonWidth();\r\n        var fromValue = rtl ? listWidth - buttonWidth : 0;\r\n        var toValue = rtl ? listWidth : -buttonWidth;\r\n        return _fx.default.animate(this._$buttonContainer, {\r\n            type: \"custom\",\r\n            duration: SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION,\r\n            from: {\r\n                right: fromValue\r\n            },\r\n            to: {\r\n                right: toValue\r\n            }\r\n        })\r\n    },\r\n    _buttonWidth: function() {\r\n        if (!this._buttonContainerWidth) {\r\n            this._buttonContainerWidth = this._$buttonContainer.outerWidth()\r\n        }\r\n        return this._buttonContainerWidth\r\n    },\r\n    dispose: function() {\r\n        if (this._$buttonContainer) {\r\n            this._$buttonContainer.remove()\r\n        }\r\n        this.callBase.apply(this, arguments)\r\n    }\r\n});\r\nvar TOGGLE_DELETE_SWITCH_CONTAINER_CLASS = \"dx-list-toggle-delete-switch-container\";\r\nvar TOGGLE_DELETE_SWITCH_CLASS = \"dx-list-toggle-delete-switch\";\r\n(0, _uiListEdit.register)(\"delete\", \"toggle\", SwitchableButtonEditDecorator.inherit({\r\n    beforeBag: function(config) {\r\n        var $itemElement = config.$itemElement;\r\n        var $container = config.$container;\r\n        var $toggle = (0, _renderer.default)(\"<div>\").addClass(TOGGLE_DELETE_SWITCH_CLASS);\r\n        this._list._createComponent($toggle, _button.default, {\r\n            icon: \"toggle-delete\",\r\n            onClick: function(e) {\r\n                _fx.default.stop(this._$buttonContainer, false);\r\n                this._toggleDeleteReady($itemElement);\r\n                e.event.stopPropagation()\r\n            }.bind(this),\r\n            integrationOptions: {}\r\n        });\r\n        $container.addClass(TOGGLE_DELETE_SWITCH_CONTAINER_CLASS);\r\n        $container.append($toggle)\r\n    }\r\n}));\r\n(0, _uiListEdit.register)(\"delete\", \"slideButton\", SwitchableButtonEditDecorator.inherit({\r\n    _shouldHandleSwipe: true,\r\n    _swipeEndHandler: function($itemElement, args) {\r\n        if (0 !== args.targetOffset) {\r\n            _fx.default.stop(this._$buttonContainer, false);\r\n            this._toggleDeleteReady($itemElement)\r\n        }\r\n        return true\r\n    }\r\n}));\r\nvar _default = SwitchableButtonEditDecorator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/map_layer.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getMaxBound = getMaxBound;\r\nexports.MapLayerCollection = MapLayerCollection;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _noop = _common.noop;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar _concat = Array.prototype.concat;\r\nvar TYPE_AREA = \"area\";\r\nvar TYPE_LINE = \"line\";\r\nvar TYPE_MARKER = \"marker\";\r\nvar STATE_DEFAULT = 0;\r\nvar STATE_HOVERED = 1;\r\nvar STATE_SELECTED = 2;\r\nvar STATE_TO_INDEX = [0, 1, 2, 2];\r\nvar TOLERANCE = 1;\r\nvar SELECTIONS = {\r\n    none: null,\r\n    single: -1,\r\n    multiple: NaN\r\n};\r\nvar _isArray = Array.isArray;\r\nvar _Number = Number;\r\nvar _String = String;\r\nvar _abs = Math.abs;\r\nvar _round = Math.round;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _sqrt = Math.sqrt;\r\n\r\nfunction getMaxBound(arr) {\r\n    return arr.reduce(function(a, c) {\r\n        return c ? [_min(a[0], c[0]), _min(a[1], c[1]), _max(a[2], c[2]), _max(a[3], c[3])] : a\r\n    }, arr[0])\r\n}\r\n\r\nfunction getSelection(selectionMode) {\r\n    var selection = (0, _utils.normalizeEnum)(selectionMode);\r\n    selection = selection in SELECTIONS ? SELECTIONS[selection] : SELECTIONS.single;\r\n    if (null !== selection) {\r\n        selection = {\r\n            state: {},\r\n            single: selection\r\n        }\r\n    }\r\n    return selection\r\n}\r\n\r\nfunction getName(opt, index) {\r\n    return (opt[index] || {}).name\r\n}\r\n\r\nfunction EmptySource() {}\r\nEmptySource.prototype.count = function() {\r\n    return 0\r\n};\r\n\r\nfunction ArraySource(raw) {\r\n    this.raw = raw\r\n}\r\nArraySource.prototype = {\r\n    constructor: ArraySource,\r\n    count: function() {\r\n        return this.raw.length\r\n    },\r\n    item: function(index) {\r\n        return this.raw[index]\r\n    },\r\n    geometry: function(item) {\r\n        return {\r\n            coordinates: item.coordinates\r\n        }\r\n    },\r\n    attributes: function(item) {\r\n        return item.attributes\r\n    },\r\n    getBBox: function(index) {\r\n        return 0 === arguments.length ? void 0 : this.raw[index].bbox\r\n    }\r\n};\r\n\r\nfunction GeoJsonSource(raw) {\r\n    this.raw = raw\r\n}\r\nGeoJsonSource.prototype = {\r\n    constructor: GeoJsonSource,\r\n    count: function() {\r\n        return this.raw.features.length\r\n    },\r\n    item: function(index) {\r\n        return this.raw.features[index]\r\n    },\r\n    geometry: function(item) {\r\n        return item.geometry\r\n    },\r\n    attributes: function(item) {\r\n        return item.properties\r\n    },\r\n    getBBox: function(index) {\r\n        return 0 === arguments.length ? this.raw.bbox : this.raw.features[index].bbox\r\n    }\r\n};\r\n\r\nfunction isGeoJsonObject(obj) {\r\n    return _isArray(obj.features)\r\n}\r\n\r\nfunction unwrapFromDataSource(source) {\r\n    var sourceType;\r\n    if (source) {\r\n        if (isGeoJsonObject(source)) {\r\n            sourceType = GeoJsonSource\r\n        } else {\r\n            if (1 === source.length && source[0] && isGeoJsonObject(source[0])) {\r\n                sourceType = GeoJsonSource;\r\n                source = source[0]\r\n            } else {\r\n                if (_isArray(source)) {\r\n                    sourceType = ArraySource\r\n                }\r\n            }\r\n        }\r\n    }\r\n    sourceType = sourceType || EmptySource;\r\n    return new sourceType(source)\r\n}\r\n\r\nfunction wrapToDataSource(option) {\r\n    return option ? isGeoJsonObject(option) ? [option] : option : []\r\n}\r\n\r\nfunction customizeHandles(proxies, callback, widget) {\r\n    callback.call(widget, proxies)\r\n}\r\n\r\nfunction setAreaLabelVisibility(label) {\r\n    label.text.attr({\r\n        visibility: label.size[0] / label.spaceSize[0] < TOLERANCE && label.size[1] / label.spaceSize[1] < TOLERANCE ? null : \"hidden\"\r\n    })\r\n}\r\n\r\nfunction setLineLabelVisibility(label) {\r\n    label.text.attr({\r\n        visibility: label.size[0] / label.spaceSize[0] < TOLERANCE || label.size[1] / label.spaceSize[1] < TOLERANCE ? null : \"hidden\"\r\n    })\r\n}\r\n\r\nfunction getDataValue(proxy, dataField) {\r\n    return proxy.attribute(dataField)\r\n}\r\nvar TYPE_TO_TYPE_MAP = {\r\n    Point: TYPE_MARKER,\r\n    MultiPoint: TYPE_LINE,\r\n    LineString: TYPE_LINE,\r\n    MultiLineString: TYPE_LINE,\r\n    Polygon: TYPE_AREA,\r\n    MultiPolygon: TYPE_AREA\r\n};\r\n\r\nfunction pick(a, b) {\r\n    return void 0 !== a ? a : b\r\n}\r\n\r\nfunction guessTypeByData(sample) {\r\n    var type = TYPE_TO_TYPE_MAP[sample.type];\r\n    var coordinates = sample.coordinates;\r\n    if (!type) {\r\n        if (\"number\" === typeof coordinates[0]) {\r\n            type = TYPE_MARKER\r\n        } else {\r\n            if (\"number\" === typeof coordinates[0][0]) {\r\n                type = TYPE_LINE\r\n            } else {\r\n                type = TYPE_AREA\r\n            }\r\n        }\r\n    }\r\n    return type\r\n}\r\nvar emptyStrategy = {\r\n    setup: _noop,\r\n    reset: _noop,\r\n    arrange: _noop,\r\n    updateGrouping: _noop,\r\n    getDefaultColor: _noop\r\n};\r\nvar strategiesByType = {};\r\nvar strategiesByGeometry = {};\r\nvar strategiesByElementType = {};\r\nvar groupByColor;\r\nvar groupBySize;\r\nvar selectStrategy = function(options, data) {\r\n    var type = (0, _utils.normalizeEnum)(options.type);\r\n    var elementType = (0, _utils.normalizeEnum)(options.elementType);\r\n    var sample;\r\n    var strategy = _extend({}, emptyStrategy);\r\n    if (data.count() > 0) {\r\n        sample = data.geometry(data.item(0));\r\n        type = strategiesByType[type] ? type : guessTypeByData(sample);\r\n        _extend(strategy, strategiesByType[type]);\r\n        strategy.fullType = strategy.type = type;\r\n        if (strategiesByGeometry[type]) {\r\n            _extend(strategy, strategiesByGeometry[type](sample))\r\n        }\r\n        if (strategiesByElementType[type]) {\r\n            elementType = strategiesByElementType[type][elementType] ? elementType : strategiesByElementType[type]._default;\r\n            _extend(strategy, strategiesByElementType[type][elementType]);\r\n            strategy.elementType = elementType;\r\n            strategy.fullType += \":\" + elementType\r\n        }\r\n    }\r\n    return strategy\r\n};\r\n\r\nfunction applyElementState(figure, styles, state, field) {\r\n    figure[field].attr(styles[field][state])\r\n}\r\nstrategiesByType[TYPE_AREA] = {\r\n    projectLabel: projectAreaLabel,\r\n    transform: transformPointList,\r\n    transformLabel: transformAreaLabel,\r\n    draw: function(context, figure, data) {\r\n        figure.root = context.renderer.path([], \"area\").data(context.dataKey, data)\r\n    },\r\n    refresh: _noop,\r\n    getLabelOffset: function(label) {\r\n        setAreaLabelVisibility(label);\r\n        return [0, 0]\r\n    },\r\n    getStyles: function(settings) {\r\n        var color = settings.color || null;\r\n        var borderColor = settings.borderColor || null;\r\n        var borderWidth = pick(settings.borderWidth, null);\r\n        var opacity = pick(settings.opacity, null);\r\n        return {\r\n            root: [{\r\n                \"class\": \"dxm-area\",\r\n                stroke: borderColor,\r\n                \"stroke-width\": borderWidth,\r\n                fill: color,\r\n                opacity: opacity\r\n            }, {\r\n                \"class\": \"dxm-area dxm-area-hovered\",\r\n                stroke: settings.hoveredBorderColor || borderColor,\r\n                \"stroke-width\": pick(settings.hoveredBorderWidth, borderWidth),\r\n                fill: settings.hoveredColor || color,\r\n                opacity: pick(settings.hoveredOpacity, opacity)\r\n            }, {\r\n                \"class\": \"dxm-area dxm-area-selected\",\r\n                stroke: settings.selectedBorderColor || borderColor,\r\n                \"stroke-width\": pick(settings.selectedBorderWidth, borderWidth),\r\n                fill: settings.selectedColor || color,\r\n                opacity: pick(settings.selectedOpacity, opacity)\r\n            }]\r\n        }\r\n    },\r\n    setState: function(figure, styles, state) {\r\n        applyElementState(figure, styles, state, \"root\")\r\n    },\r\n    hasLabelsGroup: true,\r\n    updateGrouping: function(context) {\r\n        groupByColor(context)\r\n    },\r\n    getDefaultColor: _noop\r\n};\r\nstrategiesByType[TYPE_LINE] = {\r\n    projectLabel: projectLineLabel,\r\n    transform: transformPointList,\r\n    transformLabel: transformLineLabel,\r\n    draw: function(context, figure, data) {\r\n        figure.root = context.renderer.path([], \"line\").data(context.dataKey, data)\r\n    },\r\n    refresh: _noop,\r\n    getLabelOffset: function(label) {\r\n        setLineLabelVisibility(label);\r\n        return [0, 0]\r\n    },\r\n    getStyles: function(settings) {\r\n        var color = settings.color || settings.borderColor || null;\r\n        var width = pick(settings.borderWidth, null);\r\n        var opacity = pick(settings.opacity, null);\r\n        return {\r\n            root: [{\r\n                \"class\": \"dxm-line\",\r\n                stroke: color,\r\n                \"stroke-width\": width,\r\n                opacity: opacity\r\n            }, {\r\n                \"class\": \"dxm-line dxm-line-hovered\",\r\n                stroke: settings.hoveredColor || settings.hoveredBorderColor || color,\r\n                \"stroke-width\": pick(settings.hoveredBorderWidth, width),\r\n                opacity: pick(settings.hoveredOpacity, opacity)\r\n            }, {\r\n                \"class\": \"dxm-line dxm-line-selected\",\r\n                stroke: settings.selectedColor || settings.selectedBorderColor || color,\r\n                \"stroke-width\": pick(settings.selectedBorderWidth, width),\r\n                opacity: pick(settings.selectedOpacity, opacity)\r\n            }]\r\n        }\r\n    },\r\n    setState: function(figure, styles, state) {\r\n        applyElementState(figure, styles, state, \"root\")\r\n    },\r\n    hasLabelsGroup: true,\r\n    updateGrouping: function(context) {\r\n        groupByColor(context)\r\n    },\r\n    getDefaultColor: _noop\r\n};\r\nstrategiesByType[TYPE_MARKER] = {\r\n    project: projectPoint,\r\n    transform: transformPoint,\r\n    draw: function(context, figure, data) {\r\n        figure.root = context.renderer.g();\r\n        this._draw(context, figure, data)\r\n    },\r\n    refresh: _noop,\r\n    hasLabelsGroup: false,\r\n    getLabelOffset: function(label, settings) {\r\n        return [_round((label.size[0] + _max(settings.size || 0, 0)) / 2) + 2, 0]\r\n    },\r\n    getStyles: function(settings) {\r\n        var styles = {\r\n            root: [{\r\n                \"class\": \"dxm-marker\"\r\n            }, {\r\n                \"class\": \"dxm-marker dxm-marker-hovered\"\r\n            }, {\r\n                \"class\": \"dxm-marker dxm-marker-selected\"\r\n            }]\r\n        };\r\n        this._getStyles(styles, settings);\r\n        return styles\r\n    },\r\n    setState: function(figure, styles, state) {\r\n        applyElementState(figure, styles, state, \"root\");\r\n        this._setState(figure, styles, state)\r\n    },\r\n    updateGrouping: function(context) {\r\n        groupByColor(context);\r\n        groupBySize(context)\r\n    },\r\n    getDefaultColor: function(ctx, palette) {\r\n        return ctx.params.themeManager.getAccentColor(palette)\r\n    }\r\n};\r\nstrategiesByGeometry[TYPE_AREA] = function(sample) {\r\n    return {\r\n        project: function(projection, coordinates) {\r\n            return coordinates[0] && coordinates[0][0] && coordinates[0][0][0] && \"number\" === typeof coordinates[0][0][0][0] ? projectMultiPolygon(projection, coordinates) : projectPolygon(projection, coordinates)\r\n        }\r\n    }\r\n};\r\nstrategiesByGeometry[TYPE_LINE] = function(sample) {\r\n    var coordinates = sample.coordinates;\r\n    return {\r\n        project: coordinates[0] && coordinates[0][0] && \"number\" === typeof coordinates[0][0][0] ? projectPolygon : projectLineString\r\n    }\r\n};\r\nstrategiesByElementType[TYPE_MARKER] = {\r\n    _default: \"dot\",\r\n    dot: {\r\n        setup: function(context) {\r\n            context.filter = context.renderer.shadowFilter(\"-40%\", \"-40%\", \"180%\", \"200%\", 0, 1, 1, \"#000000\", .2)\r\n        },\r\n        reset: function(context) {\r\n            context.filter.dispose();\r\n            context.filter = null\r\n        },\r\n        _draw: function(ctx, figure, data) {\r\n            figure.back = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root);\r\n            figure.dot = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)\r\n        },\r\n        refresh: function(ctx, figure, data, proxy, settings) {\r\n            figure.dot.attr({\r\n                filter: settings.shadow ? ctx.filter.id : null\r\n            })\r\n        },\r\n        _getStyles: function(styles, style) {\r\n            var size = style.size > 0 ? _Number(style.size) : 0;\r\n            var hoveredSize = size;\r\n            var selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0);\r\n            var hoveredBackSize = hoveredSize + (style.backStep > 0 ? _Number(style.backStep) : 0);\r\n            var selectedBackSize = selectedSize + (style.backStep > 0 ? _Number(style.backStep) : 0);\r\n            var color = style.color || null;\r\n            var borderColor = style.borderColor || null;\r\n            var borderWidth = pick(style.borderWidth, null);\r\n            var opacity = pick(style.opacity, null);\r\n            var backColor = style.backColor || null;\r\n            var backOpacity = pick(style.backOpacity, null);\r\n            styles.dot = [{\r\n                r: size / 2,\r\n                stroke: borderColor,\r\n                \"stroke-width\": borderWidth,\r\n                fill: color,\r\n                opacity: opacity\r\n            }, {\r\n                r: hoveredSize / 2,\r\n                stroke: style.hoveredBorderColor || borderColor,\r\n                \"stroke-width\": pick(style.hoveredBorderWidth, borderWidth),\r\n                fill: style.hoveredColor || color,\r\n                opacity: pick(style.hoveredOpacity, opacity)\r\n            }, {\r\n                r: selectedSize / 2,\r\n                stroke: style.selectedBorderColor || borderColor,\r\n                \"stroke-width\": pick(style.selectedBorderWidth, borderWidth),\r\n                fill: style.selectedColor || color,\r\n                opacity: pick(style.selectedOpacity, opacity)\r\n            }];\r\n            styles.back = [{\r\n                r: size / 2,\r\n                stroke: \"none\",\r\n                \"stroke-width\": 0,\r\n                fill: backColor,\r\n                opacity: backOpacity\r\n            }, {\r\n                r: hoveredBackSize / 2,\r\n                stroke: \"none\",\r\n                \"stroke-width\": 0,\r\n                fill: backColor,\r\n                opacity: backOpacity\r\n            }, {\r\n                r: selectedBackSize / 2,\r\n                stroke: \"none\",\r\n                \"stroke-width\": 0,\r\n                fill: backColor,\r\n                opacity: backOpacity\r\n            }]\r\n        },\r\n        _setState: function(figure, styles, state) {\r\n            applyElementState(figure, styles, state, \"dot\");\r\n            applyElementState(figure, styles, state, \"back\")\r\n        }\r\n    },\r\n    bubble: {\r\n        _draw: function(ctx, figure, data) {\r\n            figure.bubble = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)\r\n        },\r\n        refresh: function(ctx, figure, data, proxy, settings) {\r\n            figure.bubble.attr({\r\n                r: settings.size / 2\r\n            })\r\n        },\r\n        _getStyles: function(styles, style) {\r\n            var color = style.color || null;\r\n            var borderColor = style.borderColor || null;\r\n            var borderWidth = pick(style.borderWidth, null);\r\n            var opacity = pick(style.opacity, null);\r\n            styles.bubble = [{\r\n                stroke: borderColor,\r\n                \"stroke-width\": borderWidth,\r\n                fill: color,\r\n                opacity: opacity\r\n            }, {\r\n                stroke: style.hoveredBorderColor || borderColor,\r\n                \"stroke-width\": pick(style.hoveredBorderWidth, borderWidth),\r\n                fill: style.hoveredColor || style.color,\r\n                opacity: pick(style.hoveredOpacity, opacity)\r\n            }, {\r\n                stroke: style.selectedBorderColor || borderColor,\r\n                \"stroke-width\": pick(style.selectedBorderWidth, borderWidth),\r\n                fill: style.selectedColor || style.color,\r\n                opacity: pick(style.selectedOpacity, opacity)\r\n            }]\r\n        },\r\n        _setState: function(figure, styles, state) {\r\n            applyElementState(figure, styles, state, \"bubble\")\r\n        },\r\n        arrange: function(context, handles) {\r\n            var values = [];\r\n            var i;\r\n            var ii = values.length = handles.length;\r\n            var settings = context.settings;\r\n            var dataField = settings.dataField;\r\n            var minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0;\r\n            var maxSize = settings.maxSize > minSize ? _Number(settings.maxSize) : minSize;\r\n            if (settings.sizeGroups) {\r\n                return\r\n            }\r\n            for (i = 0; i < ii; ++i) {\r\n                values[i] = _max(getDataValue(handles[i].proxy, dataField) || 0, 0)\r\n            }\r\n            var minValue = _min.apply(null, values);\r\n            var maxValue = _max.apply(null, values);\r\n            var deltaValue = maxValue - minValue || 1;\r\n            var deltaSize = maxSize - minSize;\r\n            for (i = 0; i < ii; ++i) {\r\n                handles[i]._settings.size = minSize + deltaSize * (values[i] - minValue) / deltaValue\r\n            }\r\n        },\r\n        updateGrouping: function(context) {\r\n            var dataField = context.settings.dataField;\r\n            strategiesByType[TYPE_MARKER].updateGrouping(context);\r\n            groupBySize(context, function(proxy) {\r\n                return getDataValue(proxy, dataField)\r\n            })\r\n        }\r\n    },\r\n    pie: {\r\n        _draw: function(ctx, figure, data) {\r\n            figure.pie = ctx.renderer.g().append(figure.root);\r\n            figure.border = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)\r\n        },\r\n        refresh: function(ctx, figure, data, proxy, settings) {\r\n            var values = getDataValue(proxy, ctx.settings.dataField) || [];\r\n            var colors = settings._colors;\r\n            var sum = 0;\r\n            var pie = figure.pie;\r\n            var renderer = ctx.renderer;\r\n            var dataKey = ctx.dataKey;\r\n            var r = (settings.size > 0 ? _Number(settings.size) : 0) / 2;\r\n            var start = 90;\r\n            var end = start;\r\n            var zeroSum = false;\r\n            sum = values.reduce(function(total, item) {\r\n                return total + (item || 0)\r\n            }, 0);\r\n            if (0 === sum) {\r\n                zeroSum = true;\r\n                sum = 360 / values.length\r\n            }\r\n            values.forEach(function(item, i) {\r\n                start = end;\r\n                end += zeroSum ? sum : (item || 0) / sum * 360;\r\n                renderer.arc(0, 0, 0, r, start, end).attr({\r\n                    \"stroke-linejoin\": \"round\",\r\n                    fill: colors[i]\r\n                }).data(dataKey, data).append(pie)\r\n            });\r\n            figure.border.attr({\r\n                r: r\r\n            })\r\n        },\r\n        _getStyles: function(styles, style) {\r\n            var opacity = pick(style.opacity, null);\r\n            var borderColor = style.borderColor || null;\r\n            var borderWidth = pick(style.borderWidth, null);\r\n            styles.pie = [{\r\n                opacity: opacity\r\n            }, {\r\n                opacity: pick(style.hoveredOpacity, opacity)\r\n            }, {\r\n                opacity: pick(style.selectedOpacity, opacity)\r\n            }];\r\n            styles.border = [{\r\n                stroke: borderColor,\r\n                \"stroke-width\": borderWidth\r\n            }, {\r\n                stroke: style.hoveredBorderColor || borderColor,\r\n                \"stroke-width\": pick(style.hoveredBorderWidth, borderWidth)\r\n            }, {\r\n                stroke: style.selectedBorderColor || borderColor,\r\n                \"stroke-width\": pick(style.selectedBorderWidth, borderWidth)\r\n            }]\r\n        },\r\n        _setState: function(figure, styles, state) {\r\n            applyElementState(figure, styles, state, \"pie\");\r\n            applyElementState(figure, styles, state, \"border\")\r\n        },\r\n        arrange: function(context, handles) {\r\n            var i;\r\n            var ii = handles.length;\r\n            var dataField = context.settings.dataField;\r\n            var values;\r\n            var count = 0;\r\n            var palette;\r\n            for (i = 0; i < ii; ++i) {\r\n                values = getDataValue(handles[i].proxy, dataField);\r\n                if (values && values.length > count) {\r\n                    count = values.length\r\n                }\r\n            }\r\n            if (count > 0) {\r\n                palette = context.params.themeManager.createPalette(context.settings.palette, {\r\n                    useHighlight: true,\r\n                    extensionMode: \"alternate\"\r\n                });\r\n                values = palette.generateColors(count);\r\n                context.settings._colors = values;\r\n                context.grouping.color = {\r\n                    callback: _noop,\r\n                    field: \"\",\r\n                    partition: [],\r\n                    values: []\r\n                };\r\n                context.params.dataExchanger.set(context.name, \"color\", {\r\n                    partition: [],\r\n                    values: values\r\n                })\r\n            }\r\n        }\r\n    },\r\n    image: {\r\n        _draw: function(ctx, figure, data) {\r\n            figure.image = ctx.renderer.image(null, null, null, null, null, \"center\").attr({\r\n                \"pointer-events\": \"visible\"\r\n            }).data(ctx.dataKey, data).append(figure.root)\r\n        },\r\n        refresh: function(ctx, figure, data, proxy) {\r\n            figure.image.attr({\r\n                href: getDataValue(proxy, ctx.settings.dataField)\r\n            })\r\n        },\r\n        _getStyles: function(styles, style) {\r\n            var size = style.size > 0 ? _Number(style.size) : 0;\r\n            var hoveredSize = size + (style.hoveredStep > 0 ? _Number(style.hoveredStep) : 0);\r\n            var selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0);\r\n            var opacity = pick(style.opacity, null);\r\n            styles.image = [{\r\n                x: -size / 2,\r\n                y: -size / 2,\r\n                width: size,\r\n                height: size,\r\n                opacity: opacity\r\n            }, {\r\n                x: -hoveredSize / 2,\r\n                y: -hoveredSize / 2,\r\n                width: hoveredSize,\r\n                height: hoveredSize,\r\n                opacity: pick(style.hoveredOpacity, opacity)\r\n            }, {\r\n                x: -selectedSize / 2,\r\n                y: -selectedSize / 2,\r\n                width: selectedSize,\r\n                height: selectedSize,\r\n                opacity: pick(style.selectedOpacity, opacity)\r\n            }]\r\n        },\r\n        _setState: function(figure, styles, state) {\r\n            applyElementState(figure, styles, state, \"image\")\r\n        }\r\n    }\r\n};\r\n\r\nfunction projectPoint(projection, coordinates) {\r\n    return projection.project(coordinates)\r\n}\r\n\r\nfunction projectPointList(projection, coordinates) {\r\n    var output = [];\r\n    var i;\r\n    var ii = output.length = coordinates.length;\r\n    for (i = 0; i < ii; ++i) {\r\n        output[i] = projection.project(coordinates[i])\r\n    }\r\n    return output\r\n}\r\n\r\nfunction projectLineString(projection, coordinates) {\r\n    return [projectPointList(projection, coordinates)]\r\n}\r\n\r\nfunction projectPolygon(projection, coordinates) {\r\n    var output = [];\r\n    var i;\r\n    var ii = output.length = coordinates.length;\r\n    for (i = 0; i < ii; ++i) {\r\n        output[i] = projectPointList(projection, coordinates[i])\r\n    }\r\n    return output\r\n}\r\n\r\nfunction projectMultiPolygon(projection, coordinates) {\r\n    var output = [];\r\n    var i;\r\n    var ii = output.length = coordinates.length;\r\n    for (i = 0; i < ii; ++i) {\r\n        output[i] = projectPolygon(projection, coordinates[i])\r\n    }\r\n    return _concat.apply([], output)\r\n}\r\n\r\nfunction transformPoint(content, projection, coordinates) {\r\n    var data = projection.transform(coordinates);\r\n    content.root.attr({\r\n        translateX: data[0],\r\n        translateY: data[1]\r\n    })\r\n}\r\n\r\nfunction transformList(projection, coordinates) {\r\n    var output = [];\r\n    var i;\r\n    var ii = coordinates.length;\r\n    var item;\r\n    var k = 0;\r\n    output.length = 2 * ii;\r\n    for (i = 0; i < ii; ++i) {\r\n        item = projection.transform(coordinates[i]);\r\n        output[k++] = item[0];\r\n        output[k++] = item[1]\r\n    }\r\n    return output\r\n}\r\n\r\nfunction transformPointList(content, projection, coordinates) {\r\n    var output = [];\r\n    var i;\r\n    var ii = output.length = coordinates.length;\r\n    for (i = 0; i < ii; ++i) {\r\n        output[i] = transformList(projection, coordinates[i])\r\n    }\r\n    content.root.attr({\r\n        points: output\r\n    })\r\n}\r\n\r\nfunction transformAreaLabel(label, projection, coordinates) {\r\n    var data = projection.transform(coordinates[0]);\r\n    label.spaceSize = projection.getSquareSize(coordinates[1]);\r\n    label.text.attr({\r\n        translateX: data[0],\r\n        translateY: data[1]\r\n    });\r\n    setAreaLabelVisibility(label)\r\n}\r\n\r\nfunction transformLineLabel(label, projection, coordinates) {\r\n    var data = projection.transform(coordinates[0]);\r\n    label.spaceSize = projection.getSquareSize(coordinates[1]);\r\n    label.text.attr({\r\n        translateX: data[0],\r\n        translateY: data[1]\r\n    });\r\n    setLineLabelVisibility(label)\r\n}\r\n\r\nfunction getItemSettings(context, proxy, settings) {\r\n    var result = combineSettings(context.settings, settings);\r\n    applyGrouping(context.grouping, proxy, result);\r\n    if (void 0 === settings.color && settings.paletteIndex >= 0) {\r\n        result.color = result._colors[settings.paletteIndex]\r\n    }\r\n    return result\r\n}\r\n\r\nfunction applyGrouping(grouping, proxy, settings) {\r\n    _each(grouping, function(name, data) {\r\n        var index = findGroupingIndex(data.callback(proxy, data.field), data.partition);\r\n        if (index >= 0) {\r\n            settings[name] = data.values[index]\r\n        }\r\n    })\r\n}\r\n\r\nfunction findGroupingIndex(value, partition) {\r\n    var start = 0;\r\n    var end = partition.length - 1;\r\n    var index = -1;\r\n    var middle;\r\n    if (partition[start] <= value && value <= partition[end]) {\r\n        if (value === partition[end]) {\r\n            index = end - 1\r\n        } else {\r\n            while (end - start > 1) {\r\n                middle = start + end >> 1;\r\n                if (value < partition[middle]) {\r\n                    end = middle\r\n                } else {\r\n                    start = middle\r\n                }\r\n            }\r\n            index = start\r\n        }\r\n    }\r\n    return index\r\n}\r\n\r\nfunction raiseChanged(context, handle, state, name) {\r\n    context.params.eventTrigger(name, {\r\n        target: handle.proxy,\r\n        state: state\r\n    })\r\n}\r\n\r\nfunction combineSettings(common, partial) {\r\n    var obj = _extend({}, common, partial);\r\n    obj.label = _extend({}, common.label, obj.label);\r\n    obj.label.font = _extend({}, common.label.font, obj.label.font);\r\n    return obj\r\n}\r\n\r\nfunction processCommonSettings(context, options) {\r\n    var themeManager = context.params.themeManager;\r\n    var strategy = context.str;\r\n    var settings = combineSettings(_extend({\r\n        label: {},\r\n        color: strategy.getDefaultColor(context, options.palette)\r\n    }, themeManager.theme(\"layer:\" + strategy.fullType)), options);\r\n    var colors;\r\n    var i;\r\n    var palette;\r\n    if (settings.paletteSize > 0) {\r\n        palette = themeManager.createDiscretePalette(settings.palette, settings.paletteSize);\r\n        for (i = 0, colors = []; i < settings.paletteSize; ++i) {\r\n            colors.push(palette.getColor(i))\r\n        }\r\n        settings._colors = colors\r\n    }\r\n    return settings\r\n}\r\n\r\nfunction valueCallback(proxy, dataField) {\r\n    return proxy.attribute(dataField)\r\n}\r\nvar performGrouping = function(context, partition, settingField, dataField, valuesCallback) {\r\n    var values;\r\n    if (dataField && partition && partition.length > 1) {\r\n        values = valuesCallback(partition.length - 1);\r\n        context.grouping[settingField] = {\r\n            callback: (0, _type.isFunction)(dataField) ? dataField : valueCallback,\r\n            field: dataField,\r\n            partition: partition,\r\n            values: values\r\n        };\r\n        context.params.dataExchanger.set(context.name, settingField, {\r\n            partition: partition,\r\n            values: values,\r\n            defaultColor: context.settings.color\r\n        })\r\n    }\r\n};\r\n\r\nfunction dropGrouping(context) {\r\n    var name = context.name;\r\n    var dataExchanger = context.params.dataExchanger;\r\n    _each(context.grouping, function(field) {\r\n        dataExchanger.set(name, field, null)\r\n    });\r\n    context.grouping = {}\r\n}\r\ngroupByColor = function(context) {\r\n    performGrouping(context, context.settings.colorGroups, \"color\", context.settings.colorGroupingField, function(count) {\r\n        var _palette = context.params.themeManager.createDiscretePalette(context.settings.palette, count);\r\n        var i;\r\n        var list = [];\r\n        for (i = 0; i < count; ++i) {\r\n            list.push(_palette.getColor(i))\r\n        }\r\n        return list\r\n    })\r\n};\r\ngroupBySize = function(context, valueCallback) {\r\n    var settings = context.settings;\r\n    performGrouping(context, settings.sizeGroups, \"size\", valueCallback || settings.sizeGroupingField, function(count) {\r\n        var minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0;\r\n        var maxSize = settings.maxSize >= minSize ? _Number(settings.maxSize) : 0;\r\n        var i = 0;\r\n        var sizes = [];\r\n        if (count > 1) {\r\n            for (i = 0; i < count; ++i) {\r\n                sizes.push((minSize * (count - i - 1) + maxSize * i) / (count - 1))\r\n            }\r\n        } else {\r\n            if (1 === count) {\r\n                sizes.push((minSize + maxSize) / 2)\r\n            }\r\n        }\r\n        return sizes\r\n    })\r\n};\r\n\r\nfunction setFlag(flags, flag, state) {\r\n    if (state) {\r\n        flags |= flag\r\n    } else {\r\n        flags &= ~flag\r\n    }\r\n    return flags\r\n}\r\n\r\nfunction hasFlag(flags, flag) {\r\n    return !!(flags & flag)\r\n}\r\n\r\nfunction createLayerProxy(layer, name, index) {\r\n    var proxy = {\r\n        index: index,\r\n        name: name,\r\n        getElements: function() {\r\n            return layer.getProxies()\r\n        },\r\n        clearSelection: function(_noEvent) {\r\n            layer.clearSelection(_noEvent);\r\n            return proxy\r\n        },\r\n        getDataSource: function() {\r\n            return layer.getDataSource()\r\n        },\r\n        getBounds: function() {\r\n            return layer.getBounds()\r\n        }\r\n    };\r\n    return proxy\r\n}\r\nvar MapLayerElement;\r\nvar MapLayer = function(params, container, name, index) {\r\n    var that = this;\r\n    that._params = params;\r\n    that._onProjection();\r\n    that.proxy = createLayerProxy(that, name, index);\r\n    that._context = {\r\n        name: name,\r\n        layer: that.proxy,\r\n        renderer: params.renderer,\r\n        projection: params.projection,\r\n        params: params,\r\n        dataKey: params.dataKey,\r\n        str: emptyStrategy,\r\n        hover: false,\r\n        selection: null,\r\n        grouping: {},\r\n        root: params.renderer.g().attr({\r\n            \"class\": \"dxm-layer\"\r\n        }).linkOn(container, name).linkAppend()\r\n    };\r\n    that._container = container;\r\n    that._options = {};\r\n    that._handles = [];\r\n    that._data = new EmptySource;\r\n    that._dataSourceLoaded = null\r\n};\r\nMapLayer.prototype = _extend({\r\n    constructor: MapLayer,\r\n    getDataReadyCallback: function() {\r\n        return this._dataSourceLoaded\r\n    },\r\n    _onProjection: function() {\r\n        var that = this;\r\n        that._removeHandlers = that._params.projection.on({\r\n            engine: function() {\r\n                that._project()\r\n            },\r\n            screen: function() {\r\n                that._transform()\r\n            },\r\n            center: function() {\r\n                that._transformCore()\r\n            },\r\n            zoom: function() {\r\n                that._transform()\r\n            }\r\n        })\r\n    },\r\n    getData: function() {\r\n        return this._data\r\n    },\r\n    _dataSourceLoadErrorHandler: function() {\r\n        this._dataSourceChangedHandler()\r\n    },\r\n    _dataSourceChangedHandler: function() {\r\n        var that = this;\r\n        that._data = unwrapFromDataSource(that._dataSource && that._dataSource.items());\r\n        that._update(true)\r\n    },\r\n    _dataSourceOptions: function() {\r\n        return {\r\n            paginate: false\r\n        }\r\n    },\r\n    _getSpecificDataSourceOption: function() {\r\n        return this._specificDataSourceOption\r\n    },\r\n    _normalizeDataSource: function(dataSource) {\r\n        var store = dataSource.store();\r\n        if (\"raw\" === store._loadMode) {\r\n            store._loadMode = void 0\r\n        }\r\n        return dataSource\r\n    },\r\n    _offProjection: function() {\r\n        this._removeHandlers();\r\n        this._removeHandlers = null\r\n    },\r\n    dispose: function() {\r\n        var that = this;\r\n        that._disposeDataSource();\r\n        that._destroyHandles();\r\n        dropGrouping(that._context);\r\n        that._context.root.linkRemove().linkOff();\r\n        that._context.labelRoot && that._context.labelRoot.linkRemove().linkOff();\r\n        that._context.str.reset(that._context);\r\n        that._offProjection();\r\n        that._params = that._container = that._context = that.proxy = null;\r\n        return that\r\n    },\r\n    setOptions: function(options) {\r\n        var that = this;\r\n        options = that._options = options || {};\r\n        that._dataSourceLoaded = new _deferred.Deferred;\r\n        if (\"dataSource\" in options && options.dataSource !== that._options_dataSource) {\r\n            that._options_dataSource = options.dataSource;\r\n            that._params.notifyDirty();\r\n            that._specificDataSourceOption = wrapToDataSource(options.dataSource);\r\n            that._refreshDataSource()\r\n        } else {\r\n            if (that._data.count() > 0) {\r\n                that._params.notifyDirty();\r\n                that._update(void 0 !== options.type && options.type !== that._context.str.type || void 0 !== options.elementType && options.elementType !== that._context.str.elementType)\r\n            }\r\n        }\r\n        that._transformCore()\r\n    },\r\n    _update: function(isContextChanged) {\r\n        var that = this;\r\n        var context = that._context;\r\n        if (isContextChanged) {\r\n            context.str.reset(context);\r\n            context.root.clear();\r\n            context.labelRoot && context.labelRoot.clear();\r\n            that._params.tracker.reset();\r\n            that._destroyHandles();\r\n            context.str = selectStrategy(that._options, that._data);\r\n            context.str.setup(context);\r\n            that.proxy.type = context.str.type;\r\n            that.proxy.elementType = context.str.elementType\r\n        }\r\n        context.settings = processCommonSettings(context, that._options);\r\n        context.hasSeparateLabel = !!(context.settings.label.enabled && context.str.hasLabelsGroup);\r\n        context.hover = !!(0, _utils.parseScalar)(context.settings.hoverEnabled, true);\r\n        if (context.selection) {\r\n            _each(context.selection.state, function(_, handle) {\r\n                handle && handle.resetSelected()\r\n            })\r\n        }\r\n        context.selection = getSelection(context.settings.selectionMode);\r\n        if (context.hasSeparateLabel) {\r\n            if (!context.labelRoot) {\r\n                context.labelRoot = context.renderer.g().attr({\r\n                    \"class\": \"dxm-layer-labels\"\r\n                }).linkOn(that._container, {\r\n                    name: context.name + \"-labels\",\r\n                    after: context.name\r\n                }).linkAppend();\r\n                that._transformCore()\r\n            }\r\n        } else {\r\n            if (context.labelRoot) {\r\n                context.labelRoot.linkRemove().linkOff();\r\n                context.labelRoot = null\r\n            }\r\n        }\r\n        if (isContextChanged) {\r\n            that._createHandles()\r\n        }\r\n        dropGrouping(context);\r\n        context.str.arrange(context, that._handles);\r\n        context.str.updateGrouping(context);\r\n        that._updateHandles();\r\n        that._params.notifyReady();\r\n        if (that._dataSourceLoaded) {\r\n            that._dataSourceLoaded.resolve();\r\n            that._dataSourceLoaded = null\r\n        } else {\r\n            that._params.dataReady()\r\n        }\r\n    },\r\n    getBounds: function() {\r\n        return getMaxBound(this._handles.map(function(_ref) {\r\n            var proxy = _ref.proxy;\r\n            return proxy.coordinates().map(function(coords) {\r\n                if (!_isArray(coords)) {\r\n                    return\r\n                }\r\n                var initValue = coords[0];\r\n                return coords.reduce(function(min, c) {\r\n                    return [_min(min[0], c[0]), _min(min[1], c[1]), _max(min[2], c[0]), _max(min[3], c[1])]\r\n                }, [initValue[0], initValue[1], initValue[0], initValue[1]])\r\n            })\r\n        }).map(getMaxBound))\r\n    },\r\n    _destroyHandles: function() {\r\n        this._handles.forEach(function(h) {\r\n            return h.dispose()\r\n        });\r\n        if (this._context.selection) {\r\n            this._context.selection.state = {}\r\n        }\r\n        this._handles = []\r\n    },\r\n    _createHandles: function() {\r\n        var that = this;\r\n        var handles = that._handles = [];\r\n        var data = that._data;\r\n        var i;\r\n        var ii = handles.length = data.count();\r\n        var context = that._context;\r\n        var geometry = data.geometry;\r\n        var attributes = data.attributes;\r\n        var handle;\r\n        var dataItem;\r\n        for (i = 0; i < ii; ++i) {\r\n            dataItem = data.item(i);\r\n            handles[i] = new MapLayerElement(context, i, geometry(dataItem), attributes(dataItem))\r\n        }(0, _type.isFunction)(that._options.customize) && customizeHandles(that.getProxies(), that._options.customize, that._params.widget);\r\n        for (i = 0; i < ii; ++i) {\r\n            handle = handles[i];\r\n            handle.project();\r\n            handle.draw();\r\n            handle.transform()\r\n        }\r\n        if (context.selection) {\r\n            _each(context.selection.state, function(_, handle) {\r\n                handle && handle.restoreSelected()\r\n            })\r\n        }\r\n    },\r\n    _updateHandles: function() {\r\n        var handles = this._handles;\r\n        var i;\r\n        var ii = handles.length;\r\n        for (i = 0; i < ii; ++i) {\r\n            handles[i].refresh()\r\n        }\r\n        if (this._context.settings.label.enabled) {\r\n            for (i = 0; i < ii; ++i) {\r\n                handles[i].measureLabel()\r\n            }\r\n            for (i = 0; i < ii; ++i) {\r\n                handles[i].adjustLabel()\r\n            }\r\n        }\r\n    },\r\n    _transformCore: function() {\r\n        var transform = this._params.projection.getTransform();\r\n        this._context.root.attr(transform);\r\n        this._context.labelRoot && this._context.labelRoot.attr(transform)\r\n    },\r\n    _project: function() {\r\n        var handles = this._handles;\r\n        var i;\r\n        var ii = handles.length;\r\n        for (i = 0; i < ii; ++i) {\r\n            handles[i].project()\r\n        }\r\n    },\r\n    _transform: function() {\r\n        var handles = this._handles;\r\n        var i;\r\n        var ii = handles.length;\r\n        this._transformCore();\r\n        for (i = 0; i < ii; ++i) {\r\n            handles[i].transform()\r\n        }\r\n    },\r\n    getProxies: function() {\r\n        return this._handles.map(function(p) {\r\n            return p.proxy\r\n        })\r\n    },\r\n    getProxy: function(index) {\r\n        return this._handles[index].proxy\r\n    },\r\n    raiseClick: function(i, dxEvent) {\r\n        this._params.eventTrigger(\"click\", {\r\n            target: this._handles[i].proxy,\r\n            event: dxEvent\r\n        })\r\n    },\r\n    hoverItem: function(i, state) {\r\n        this._handles[i].setHovered(state)\r\n    },\r\n    selectItem: function(i, state, _noEvent) {\r\n        this._handles[i].setSelected(state, _noEvent)\r\n    },\r\n    clearSelection: function() {\r\n        var selection = this._context.selection;\r\n        if (selection) {\r\n            _each(selection.state, function(_, handle) {\r\n                handle && handle.setSelected(false)\r\n            });\r\n            selection.state = {}\r\n        }\r\n    }\r\n}, _data_helper.default);\r\n\r\nfunction createProxy(handle, coords, attrs) {\r\n    var proxy = {\r\n        coordinates: function() {\r\n            return coords\r\n        },\r\n        attribute: function(name, value) {\r\n            if (arguments.length > 1) {\r\n                attrs[name] = value;\r\n                return proxy\r\n            } else {\r\n                return arguments.length > 0 ? attrs[name] : attrs\r\n            }\r\n        },\r\n        selected: function(state, _noEvent) {\r\n            if (arguments.length > 0) {\r\n                handle.setSelected(state, _noEvent);\r\n                return proxy\r\n            } else {\r\n                return handle.isSelected()\r\n            }\r\n        },\r\n        applySettings: function(settings) {\r\n            handle.update(settings);\r\n            return proxy\r\n        }\r\n    };\r\n    return proxy\r\n}\r\nMapLayerElement = function(context, index, geometry, attributes) {\r\n    var that = this;\r\n    var proxy = that.proxy = createProxy(that, geometry.coordinates, _extend({}, attributes));\r\n    that._ctx = context;\r\n    that._index = index;\r\n    that._fig = that._label = null;\r\n    that._state = STATE_DEFAULT;\r\n    that._coordinates = geometry.coordinates;\r\n    that._settings = {\r\n        label: {}\r\n    };\r\n    proxy.index = index;\r\n    proxy.layer = context.layer;\r\n    that._data = {\r\n        name: context.name,\r\n        index: index\r\n    }\r\n};\r\nMapLayerElement.prototype = {\r\n    constructor: MapLayerElement,\r\n    dispose: function() {\r\n        var that = this;\r\n        that._ctx = that.proxy = that._settings = that._fig = that._label = that.data = null;\r\n        return that\r\n    },\r\n    project: function() {\r\n        var context = this._ctx;\r\n        this._projection = context.str.project(context.projection, this._coordinates);\r\n        if (context.hasSeparateLabel && this._label) {\r\n            this._projectLabel()\r\n        }\r\n    },\r\n    _projectLabel: function() {\r\n        this._labelProjection = this._ctx.str.projectLabel(this._projection)\r\n    },\r\n    draw: function() {\r\n        var that = this;\r\n        var context = this._ctx;\r\n        context.str.draw(context, that._fig = {}, that._data);\r\n        that._fig.root.append(context.root)\r\n    },\r\n    transform: function() {\r\n        var that = this;\r\n        var context = that._ctx;\r\n        context.str.transform(that._fig, context.projection, that._projection);\r\n        if (context.hasSeparateLabel && that._label) {\r\n            that._transformLabel()\r\n        }\r\n    },\r\n    _transformLabel: function() {\r\n        this._ctx.str.transformLabel(this._label, this._ctx.projection, this._labelProjection)\r\n    },\r\n    refresh: function() {\r\n        var that = this;\r\n        var strategy = that._ctx.str;\r\n        var settings = getItemSettings(that._ctx, that.proxy, that._settings);\r\n        that._styles = strategy.getStyles(settings);\r\n        strategy.refresh(that._ctx, that._fig, that._data, that.proxy, settings);\r\n        that._refreshLabel(settings);\r\n        that._setState()\r\n    },\r\n    _refreshLabel: function(settings) {\r\n        var that = this;\r\n        var context = that._ctx;\r\n        var labelSettings = settings.label;\r\n        var label = that._label;\r\n        if (context.settings.label.enabled) {\r\n            if (!label) {\r\n                label = that._label = {\r\n                    root: context.labelRoot || that._fig.root,\r\n                    text: context.renderer.text().attr({\r\n                        \"class\": \"dxm-label\"\r\n                    }),\r\n                    size: [0, 0]\r\n                };\r\n                if (context.hasSeparateLabel) {\r\n                    that._projectLabel();\r\n                    that._transformLabel()\r\n                }\r\n            }\r\n            label.value = _String(that.proxy.text || that.proxy.attribute(labelSettings.dataField) || \"\");\r\n            if (label.value) {\r\n                label.text.attr({\r\n                    text: label.value,\r\n                    x: 0,\r\n                    y: 0\r\n                }).css((0, _utils.patchFontOptions)(labelSettings.font)).attr({\r\n                    align: \"center\",\r\n                    stroke: labelSettings.stroke,\r\n                    \"stroke-width\": labelSettings[\"stroke-width\"],\r\n                    \"stroke-opacity\": labelSettings[\"stroke-opacity\"]\r\n                }).data(context.dataKey, that._data).append(label.root);\r\n                label.settings = settings\r\n            }\r\n        } else {\r\n            if (label) {\r\n                label.text.remove();\r\n                that._label = null\r\n            }\r\n        }\r\n    },\r\n    measureLabel: function() {\r\n        var label = this._label;\r\n        var bBox;\r\n        if (label.value) {\r\n            bBox = label.text.getBBox();\r\n            label.size = [bBox.width, bBox.height, -bBox.y - bBox.height / 2]\r\n        }\r\n    },\r\n    adjustLabel: function() {\r\n        var label = this._label;\r\n        var offset;\r\n        if (label.value) {\r\n            offset = this._ctx.str.getLabelOffset(label, label.settings);\r\n            label.settings = null;\r\n            label.text.attr({\r\n                x: offset[0],\r\n                y: offset[1] + label.size[2]\r\n            })\r\n        }\r\n    },\r\n    update: function(settings) {\r\n        var that = this;\r\n        that._settings = combineSettings(that._settings, settings);\r\n        if (that._fig) {\r\n            that.refresh();\r\n            if (that._label && that._label.value) {\r\n                that.measureLabel();\r\n                that.adjustLabel()\r\n            }\r\n        }\r\n    },\r\n    _setState: function() {\r\n        this._ctx.str.setState(this._fig, this._styles, STATE_TO_INDEX[this._state])\r\n    },\r\n    _setForeground: function() {\r\n        var root = this._fig.root;\r\n        this._state ? root.toForeground() : root.toBackground()\r\n    },\r\n    setHovered: function(state) {\r\n        var that = this;\r\n        var currentState = hasFlag(that._state, STATE_HOVERED);\r\n        var newState = !!state;\r\n        if (that._ctx.hover && currentState !== newState) {\r\n            that._state = setFlag(that._state, STATE_HOVERED, newState);\r\n            that._setState();\r\n            that._setForeground();\r\n            raiseChanged(that._ctx, that, newState, \"hoverChanged\")\r\n        }\r\n        return that\r\n    },\r\n    setSelected: function(state, _noEvent) {\r\n        var that = this;\r\n        var currentState = hasFlag(that._state, STATE_SELECTED);\r\n        var newState = !!state;\r\n        var selection = that._ctx.selection;\r\n        var tmp;\r\n        if (selection && currentState !== newState) {\r\n            that._state = setFlag(that._state, STATE_SELECTED, newState);\r\n            tmp = selection.state[selection.single];\r\n            selection.state[selection.single] = null;\r\n            if (tmp) {\r\n                tmp.setSelected(false)\r\n            }\r\n            selection.state[selection.single || that._index] = state ? that : null;\r\n            if (that._fig) {\r\n                that._setState();\r\n                that._setForeground();\r\n                if (!_noEvent) {\r\n                    raiseChanged(that._ctx, that, newState, \"selectionChanged\")\r\n                }\r\n            }\r\n        }\r\n    },\r\n    isSelected: function() {\r\n        return hasFlag(this._state, STATE_SELECTED);\r\n    },\r\n    resetSelected: function() {\r\n        this._state = setFlag(this._state, STATE_SELECTED, false)\r\n    },\r\n    restoreSelected: function() {\r\n        this._fig.root.toForeground()\r\n    }\r\n};\r\n\r\nfunction calculatePolygonCentroid(coordinates) {\r\n    var i;\r\n    var length = coordinates.length;\r\n    var v1;\r\n    var v2 = coordinates[length - 1];\r\n    var cross;\r\n    var cx = 0;\r\n    var cy = 0;\r\n    var area = 0;\r\n    var minX = 1 / 0;\r\n    var maxX = -(1 / 0);\r\n    var minY = 1 / 0;\r\n    var maxY = -(1 / 0);\r\n    for (i = 0; i < length; ++i) {\r\n        v1 = v2;\r\n        v2 = coordinates[i];\r\n        cross = v1[0] * v2[1] - v2[0] * v1[1];\r\n        area += cross;\r\n        cx += (v1[0] + v2[0]) * cross;\r\n        cy += (v1[1] + v2[1]) * cross;\r\n        minX = _min(minX, v2[0]);\r\n        maxX = _max(maxX, v2[0]);\r\n        minY = _min(minY, v2[1]);\r\n        maxY = _max(maxY, v2[1])\r\n    }\r\n    return {\r\n        area: _abs(area) / 2,\r\n        center: [2 * cx / 3 / area - (minX + maxX) / 2, 2 * cy / 3 / area - (minY + maxY) / 2]\r\n    }\r\n}\r\n\r\nfunction calculateLineStringData(coordinates) {\r\n    var i;\r\n    var ii = coordinates.length;\r\n    var v1;\r\n    var v2 = coordinates[0] || [];\r\n    var totalLength = 0;\r\n    var items = [0];\r\n    var min0 = v2[0];\r\n    var max0 = v2[0];\r\n    var min1 = v2[1];\r\n    var max1 = v2[1];\r\n    for (i = 1; i < ii; ++i) {\r\n        v1 = v2;\r\n        v2 = coordinates[i];\r\n        totalLength += _sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\r\n        items[i] = totalLength;\r\n        min0 = _min(min0, v2[0]);\r\n        max0 = _max(max0, v2[0]);\r\n        min1 = _min(min1, v2[1]);\r\n        max1 = _max(max1, v2[1])\r\n    }\r\n    i = findGroupingIndex(totalLength / 2, items);\r\n    v1 = coordinates[i];\r\n    v2 = coordinates[i + 1];\r\n    var t = (totalLength / 2 - items[i]) / (items[i + 1] - items[i]);\r\n    return ii ? [\r\n        [v1[0] * (1 - t) + v2[0] * t, v1[1] * (1 - t) + v2[1] * t],\r\n        [max0 - min0, max1 - min1], totalLength\r\n    ] : []\r\n}\r\n\r\nfunction projectAreaLabel(coordinates) {\r\n    var i;\r\n    var ii = coordinates.length;\r\n    var centroid;\r\n    var resultCentroid;\r\n    var maxArea = 0;\r\n    for (i = 0; i < ii; ++i) {\r\n        centroid = calculatePolygonCentroid(coordinates[i]);\r\n        if (centroid.area > maxArea) {\r\n            maxArea = centroid.area;\r\n            resultCentroid = centroid\r\n        }\r\n    }\r\n    return resultCentroid ? [resultCentroid.center, [_sqrt(resultCentroid.area), _sqrt(resultCentroid.area)]] : [\r\n        [],\r\n        []\r\n    ]\r\n}\r\n\r\nfunction projectLineLabel(coordinates) {\r\n    var i;\r\n    var ii = coordinates.length;\r\n    var maxLength = 0;\r\n    var data;\r\n    var resultData;\r\n    for (i = 0; i < ii; ++i) {\r\n        data = calculateLineStringData(coordinates[i]);\r\n        if (data[2] > maxLength) {\r\n            maxLength = data[2];\r\n            resultData = data\r\n        }\r\n    }\r\n    return resultData || [\r\n        [],\r\n        []\r\n    ]\r\n}\r\n\r\nfunction MapLayerCollection(params) {\r\n    var that = this;\r\n    var renderer = params.renderer;\r\n    that._params = params;\r\n    that._layers = [];\r\n    that._layerByName = {};\r\n    that._rect = [0, 0, 0, 0];\r\n    that._clip = renderer.clipRect();\r\n    that._background = renderer.rect().attr({\r\n        \"class\": \"dxm-background\"\r\n    }).data(params.dataKey, {\r\n        name: \"background\"\r\n    }).append(renderer.root);\r\n    that._container = renderer.g().attr({\r\n        \"class\": \"dxm-layers\",\r\n        \"clip-path\": that._clip.id\r\n    }).append(renderer.root).enableLinks();\r\n    that._subscribeToTracker(params.tracker, renderer, params.eventTrigger);\r\n    that._dataReady = params.dataReady\r\n}\r\nMapLayerCollection.prototype = {\r\n    constructor: MapLayerCollection,\r\n    dispose: function() {\r\n        var that = this;\r\n        that._clip.dispose();\r\n        that._layers.forEach(function(l) {\r\n            return l.dispose()\r\n        });\r\n        that._offTracker();\r\n        that._params = that._offTracker = that._layers = that._layerByName = that._clip = that._background = that._container = null\r\n    },\r\n    _subscribeToTracker: function(tracker, renderer, eventTrigger) {\r\n        var that = this;\r\n        that._offTracker = tracker.on({\r\n            click: function(arg) {\r\n                var offset = renderer.getRootOffset();\r\n                var layer = that.byName(arg.data.name);\r\n                arg.$event.x = arg.x - offset.left;\r\n                arg.$event.y = arg.y - offset.top;\r\n                if (layer) {\r\n                    layer.raiseClick(arg.data.index, arg.$event)\r\n                } else {\r\n                    if (\"background\" === arg.data.name) {\r\n                        eventTrigger(\"click\", {\r\n                            event: arg.$event\r\n                        })\r\n                    }\r\n                }\r\n            },\r\n            \"hover-on\": function(arg) {\r\n                var layer = that.byName(arg.data.name);\r\n                if (layer) {\r\n                    layer.hoverItem(arg.data.index, true)\r\n                }\r\n            },\r\n            \"hover-off\": function(arg) {\r\n                var layer = that.byName(arg.data.name);\r\n                if (layer) {\r\n                    layer.hoverItem(arg.data.index, false)\r\n                }\r\n            }\r\n        })\r\n    },\r\n    setOptions: function(options) {\r\n        var that = this;\r\n        var optionList = options ? _isArray(options) ? options : [options] : [];\r\n        var layerByName = that._layerByName;\r\n        var layers = that._layers;\r\n        var readyCallbacks = [];\r\n        var needToCreateLayers = optionList.length !== layers.length || layers.some(function(l, i) {\r\n            var name = getName(optionList, i);\r\n            return (0, _type.isDefined)(name) && name !== l.proxy.name\r\n        });\r\n        if (needToCreateLayers) {\r\n            that._params.tracker.reset();\r\n            that._layers.forEach(function(l) {\r\n                return l.dispose()\r\n            });\r\n            that._layerByName = layerByName = {};\r\n            that._layers = layers = [];\r\n            for (var i = 0, ii = optionList.length; i < ii; ++i) {\r\n                var name = getName(optionList, i) || \"map-layer-\" + i;\r\n                var layer = layers[i] = new MapLayer(that._params, that._container, name, i);\r\n                layerByName[name] = layer\r\n            }\r\n        }\r\n        layers.forEach(function(l, i) {\r\n            l.setOptions(optionList[i])\r\n        });\r\n        readyCallbacks = layers.map(function(l) {\r\n            return l.getDataReadyCallback()\r\n        });\r\n        readyCallbacks.length && _deferred.when.apply(void 0, readyCallbacks).done(that._dataReady)\r\n    },\r\n    _updateClip: function() {\r\n        var rect = this._rect;\r\n        var bw = this._borderWidth;\r\n        this._clip.attr({\r\n            x: rect[0] + bw,\r\n            y: rect[1] + bw,\r\n            width: _max(rect[2] - 2 * bw, 0),\r\n            height: _max(rect[3] - 2 * bw, 0)\r\n        })\r\n    },\r\n    setBackgroundOptions: function(options) {\r\n        this._background.attr({\r\n            stroke: options.borderColor,\r\n            \"stroke-width\": options.borderWidth,\r\n            fill: options.color\r\n        });\r\n        this._borderWidth = _max(options.borderWidth, 0);\r\n        this._updateClip()\r\n    },\r\n    setRect: function(rect) {\r\n        this._rect = rect;\r\n        this._background.attr({\r\n            x: rect[0],\r\n            y: rect[1],\r\n            width: rect[2],\r\n            height: rect[3]\r\n        });\r\n        this._updateClip()\r\n    },\r\n    byIndex: function(index) {\r\n        return this._layers[index]\r\n    },\r\n    byName: function(name) {\r\n        return this._layerByName[name]\r\n    },\r\n    items: function() {\r\n        return this._layers\r\n    }\r\n};\r\n","/**\r\n * DevExtreme (ui/drop_down_editor/ui.drop_down_button.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../text_box/texteditor_button_collection/button\"));\r\nvar _button2 = _interopRequireDefault(require(\"../button\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n    if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n        _get = Reflect.get\r\n    } else {\r\n        _get = function(target, property, receiver) {\r\n            var base = _superPropBase(target, property);\r\n            if (!base) {\r\n                return\r\n            }\r\n            var desc = Object.getOwnPropertyDescriptor(base, property);\r\n            if (desc.get) {\r\n                return desc.get.call(receiver)\r\n            }\r\n            return desc.value\r\n        }\r\n    }\r\n    return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n        object = _getPrototypeOf(object);\r\n        if (null === object) {\r\n            break\r\n        }\r\n    }\r\n    return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar DROP_DOWN_EDITOR_BUTTON_CLASS = \"dx-dropdowneditor-button\";\r\nvar DROP_DOWN_EDITOR_BUTTON_VISIBLE = \"dx-dropdowneditor-button-visible\";\r\nvar BUTTON_MESSAGE = \"dxDropDownEditor-selectLabel\";\r\nvar ClearButton = function(_TextEditorButton) {\r\n    _inherits(ClearButton, _TextEditorButton);\r\n    var _super = _createSuper(ClearButton);\r\n\r\n    function ClearButton() {\r\n        _classCallCheck(this, ClearButton);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(ClearButton, [{\r\n        key: \"_attachEvents\",\r\n        value: function(instance) {\r\n            var editor = this.editor;\r\n            instance.option(\"onClick\", function(e) {\r\n                !editor.option(\"openOnFieldClick\") && editor._openHandler(e)\r\n            });\r\n            _events_engine.default.on(instance.$element(), \"mousedown\", function(e) {\r\n                if (editor.$element().is(\".dx-state-focused\")) {\r\n                    e.preventDefault()\r\n                }\r\n            })\r\n        }\r\n    }, {\r\n        key: \"_create\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            var $element = (0, _renderer.default)(\"<div>\");\r\n            var options = this._getOptions();\r\n            this._addToContainer($element);\r\n            var instance = editor._createComponent($element, _button2.default, (0, _extend.extend)({}, options, {\r\n                elementAttr: {\r\n                    \"aria-label\": _message.default.format(BUTTON_MESSAGE)\r\n                }\r\n            }));\r\n            this._legacyRender(editor.$element(), $element, options.visible);\r\n            return {\r\n                $element: $element,\r\n                instance: instance\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_getOptions\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            var visible = this._isVisible();\r\n            var isReadOnly = editor.option(\"readOnly\");\r\n            var template = editor._getTemplateByOption(\"dropDownButtonTemplate\");\r\n            return {\r\n                focusStateEnabled: false,\r\n                hoverStateEnabled: false,\r\n                activeStateEnabled: false,\r\n                useInkRipple: false,\r\n                disabled: isReadOnly,\r\n                visible: visible,\r\n                template: template\r\n            }\r\n        }\r\n    }, {\r\n        key: \"_isVisible\",\r\n        value: function() {\r\n            var editor = this.editor;\r\n            return _get(_getPrototypeOf(ClearButton.prototype), \"_isVisible\", this).call(this) && editor.option(\"showDropDownButton\")\r\n        }\r\n    }, {\r\n        key: \"_legacyRender\",\r\n        value: function($editor, $element, isVisible) {\r\n            $editor.toggleClass(DROP_DOWN_EDITOR_BUTTON_VISIBLE, isVisible);\r\n            if ($element) {\r\n                $element.removeClass(\"dx-button\");\r\n                $element.addClass(DROP_DOWN_EDITOR_BUTTON_CLASS)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"update\",\r\n        value: function() {\r\n            var shouldUpdate = _get(_getPrototypeOf(ClearButton.prototype), \"update\", this).call(this);\r\n            if (shouldUpdate) {\r\n                var editor = this.editor,\r\n                    instance = this.instance;\r\n                var $editor = editor.$element();\r\n                var options = this._getOptions();\r\n                instance && instance.option(options);\r\n                this._legacyRender($editor, instance && instance.$element(), options.visible)\r\n            }\r\n        }\r\n    }]);\r\n    return ClearButton\r\n}(_button.default);\r\nexports.default = ClearButton;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table_body.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.AllDayPanelTableBody = AllDayPanelTableBody;\r\nexports.AllDayPanelTableBodyProps = exports.viewFunction = void 0;\r\nvar _row = require(\"../../row\");\r\nvar _cell = require(\"./cell\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n    if (\"function\" !== typeof WeakMap) {\r\n        return null\r\n    }\r\n    var cache = new WeakMap;\r\n    _getRequireWildcardCache = function() {\r\n        return cache\r\n    };\r\n    return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n    if (obj && obj.__esModule) {\r\n        return obj\r\n    }\r\n    if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n        return {\r\n            \"default\": obj\r\n        }\r\n    }\r\n    var cache = _getRequireWildcardCache();\r\n    if (cache && cache.has(obj)) {\r\n        return cache.get(obj)\r\n    }\r\n    var newObj = {};\r\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n    for (var key in obj) {\r\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n            if (desc && (desc.get || desc.set)) {\r\n                Object.defineProperty(newObj, key, desc)\r\n            } else {\r\n                newObj[key] = obj[key]\r\n            }\r\n        }\r\n    }\r\n    newObj.default = obj;\r\n    if (cache) {\r\n        cache.set(obj, newObj)\r\n    }\r\n    return newObj\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n    var keys = Object.keys(object);\r\n    if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(object);\r\n        if (enumerableOnly) {\r\n            symbols = symbols.filter(function(sym) {\r\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n            })\r\n        }\r\n        keys.push.apply(keys, symbols)\r\n    }\r\n    return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n    for (var i = 1; i < arguments.length; i++) {\r\n        var source = null != arguments[i] ? arguments[i] : {};\r\n        if (i % 2) {\r\n            ownKeys(Object(source), true).forEach(function(key) {\r\n                _defineProperty(target, key, source[key])\r\n            })\r\n        } else {\r\n            if (Object.getOwnPropertyDescriptors) {\r\n                Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n            } else {\r\n                ownKeys(Object(source)).forEach(function(key) {\r\n                    Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n                })\r\n            }\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n    if (key in obj) {\r\n        Object.defineProperty(obj, key, {\r\n            value: value,\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true\r\n        })\r\n    } else {\r\n        obj[key] = value\r\n    }\r\n    return obj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = _objectWithoutPropertiesLoose(source, excluded);\r\n    var key, i;\r\n    if (Object.getOwnPropertySymbols) {\r\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n        for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n            key = sourceSymbolKeys[i];\r\n            if (excluded.indexOf(key) >= 0) {\r\n                continue\r\n            }\r\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n                continue\r\n            }\r\n            target[key] = source[key]\r\n        }\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n    if (null == source) {\r\n        return {}\r\n    }\r\n    var target = {};\r\n    var sourceKeys = Object.keys(source);\r\n    var key, i;\r\n    for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) {\r\n            continue\r\n        }\r\n        target[key] = source[key]\r\n    }\r\n    return target\r\n}\r\n\r\nfunction _extends() {\r\n    _extends = Object.assign || function(target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            var source = arguments[i];\r\n            for (var key in source) {\r\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n                    target[key] = source[key]\r\n                }\r\n            }\r\n        }\r\n        return target\r\n    };\r\n    return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n    return Preact.h(_row.Row, _extends({}, viewModel.restAttributes, {\r\n        className: \"dx-scheduler-all-day-table-row \".concat(viewModel.props.className)\r\n    }), viewModel.props.viewData.map(function(_ref) {\r\n        var endDate = _ref.endDate,\r\n            cellGroupIndex = _ref.groupIndex,\r\n            groups = _ref.groups,\r\n            cellIndex = _ref.index,\r\n            isFirstGroupCell = _ref.isFirstGroupCell,\r\n            isLastGroupCell = _ref.isLastGroupCell,\r\n            key = _ref.key,\r\n            startDate = _ref.startDate;\r\n        return Preact.h(_cell.AllDayPanelCell, {\r\n            isFirstGroupCell: !viewModel.props.isVerticalGroupOrientation && isFirstGroupCell,\r\n            isLastGroupCell: !viewModel.props.isVerticalGroupOrientation && isLastGroupCell,\r\n            startDate: startDate,\r\n            endDate: endDate,\r\n            groups: groups,\r\n            groupIndex: cellGroupIndex,\r\n            index: cellIndex,\r\n            dataCellTemplate: viewModel.props.dataCellTemplate,\r\n            key: key\r\n        })\r\n    }))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar AllDayPanelTableBodyProps = {\r\n    isVerticalGroupOrientation: false,\r\n    className: \"\"\r\n};\r\nexports.AllDayPanelTableBodyProps = AllDayPanelTableBodyProps;\r\nvar getTemplate = function(TemplateProp) {\r\n    return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n        return Preact.h(TemplateProp, _extends({}, props))\r\n    } : TemplateProp)\r\n};\r\n\r\nfunction AllDayPanelTableBody(props) {\r\n    var __restAttributes = (0, _hooks.useCallback)(function() {\r\n        var restProps = (props.className, props.dataCellTemplate, props.isVerticalGroupOrientation, props.viewData, _objectWithoutProperties(props, [\"className\", \"dataCellTemplate\", \"isVerticalGroupOrientation\", \"viewData\"]));\r\n        return restProps\r\n    }, [props]);\r\n    return viewFunction({\r\n        props: _objectSpread(_objectSpread({}, props), {}, {\r\n            dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n        }),\r\n        restAttributes: __restAttributes()\r\n    })\r\n}\r\nAllDayPanelTableBody.defaultProps = _objectSpread({}, AllDayPanelTableBodyProps);\r\n","/**\r\n * DevExtreme (ui/scheduler/base/widgetObserver.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n    \"@babel/helpers - typeof\";\r\n    if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n        _typeof = function(obj) {\r\n            return typeof obj\r\n        }\r\n    } else {\r\n        _typeof = function(obj) {\r\n            return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n        }\r\n    }\r\n    return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"../../widget/ui.widget\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n    if (!(instance instanceof Constructor)) {\r\n        throw new TypeError(\"Cannot call a class as a function\")\r\n    }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n    for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) {\r\n            descriptor.writable = true\r\n        }\r\n        Object.defineProperty(target, descriptor.key, descriptor)\r\n    }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n    if (protoProps) {\r\n        _defineProperties(Constructor.prototype, protoProps)\r\n    }\r\n    if (staticProps) {\r\n        _defineProperties(Constructor, staticProps)\r\n    }\r\n    return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n    if (\"function\" !== typeof superClass && null !== superClass) {\r\n        throw new TypeError(\"Super expression must either be null or a function\")\r\n    }\r\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n        constructor: {\r\n            value: subClass,\r\n            writable: true,\r\n            configurable: true\r\n        }\r\n    });\r\n    if (superClass) {\r\n        _setPrototypeOf(subClass, superClass)\r\n    }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n    _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n        o.__proto__ = p;\r\n        return o\r\n    };\r\n    return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n    return function() {\r\n        var result, Super = _getPrototypeOf(Derived);\r\n        if (hasNativeReflectConstruct) {\r\n            var NewTarget = _getPrototypeOf(this).constructor;\r\n            result = Reflect.construct(Super, arguments, NewTarget)\r\n        } else {\r\n            result = Super.apply(this, arguments)\r\n        }\r\n        return _possibleConstructorReturn(this, result)\r\n    }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n    if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n        return call\r\n    }\r\n    return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n    if (void 0 === self) {\r\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n    }\r\n    return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n    if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n        return false\r\n    }\r\n    if (Reflect.construct.sham) {\r\n        return false\r\n    }\r\n    if (\"function\" === typeof Proxy) {\r\n        return true\r\n    }\r\n    try {\r\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n        return true\r\n    } catch (e) {\r\n        return false\r\n    }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o)\r\n    };\r\n    return _getPrototypeOf(o)\r\n}\r\nvar WidgetObserver = function(_Widget) {\r\n    _inherits(WidgetObserver, _Widget);\r\n    var _super = _createSuper(WidgetObserver);\r\n\r\n    function WidgetObserver() {\r\n        _classCallCheck(this, WidgetObserver);\r\n        return _super.apply(this, arguments)\r\n    }\r\n    _createClass(WidgetObserver, [{\r\n        key: \"notifyObserver\",\r\n        value: function(subject, args) {\r\n            var observer = this.option(\"observer\");\r\n            if (observer) {\r\n                observer.fire(subject, args)\r\n            }\r\n        }\r\n    }, {\r\n        key: \"invoke\",\r\n        value: function() {\r\n            var observer = this.option(\"observer\");\r\n            if (observer) {\r\n                return observer.fire.apply(observer, arguments)\r\n            }\r\n        }\r\n    }]);\r\n    return WidgetObserver\r\n}(_ui.default);\r\nvar _default = WidgetObserver;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scroll_view.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiScroll_viewNative = _interopRequireDefault(require(\"./ui.scroll_view.native.pull_down\"));\r\nvar _uiScroll_viewNative2 = _interopRequireDefault(require(\"./ui.scroll_view.native.swipe_down\"));\r\nvar _uiScroll_view = _interopRequireDefault(require(\"./ui.scroll_view.simulated\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.scrollable\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _themes = require(\"./../themes\");\r\nvar _load_panel = _interopRequireDefault(require(\"../load_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar SCROLLVIEW_CLASS = \"dx-scrollview\";\r\nvar SCROLLVIEW_CONTENT_CLASS = SCROLLVIEW_CLASS + \"-content\";\r\nvar SCROLLVIEW_TOP_POCKET_CLASS = SCROLLVIEW_CLASS + \"-top-pocket\";\r\nvar SCROLLVIEW_BOTTOM_POCKET_CLASS = SCROLLVIEW_CLASS + \"-bottom-pocket\";\r\nvar SCROLLVIEW_PULLDOWN_CLASS = SCROLLVIEW_CLASS + \"-pull-down\";\r\nvar SCROLLVIEW_REACHBOTTOM_CLASS = SCROLLVIEW_CLASS + \"-scrollbottom\";\r\nvar SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-indicator\";\r\nvar SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-text\";\r\nvar SCROLLVIEW_LOADPANEL = SCROLLVIEW_CLASS + \"-loadpanel\";\r\nvar refreshStrategies = {\r\n    pullDown: _uiScroll_viewNative.default,\r\n    swipeDown: _uiScroll_viewNative2.default,\r\n    simulated: _uiScroll_view.default\r\n};\r\nvar isServerSide = !(0, _window.hasWindow)();\r\nvar scrollViewServerConfig = {\r\n    finishLoading: _common.noop,\r\n    release: _common.noop,\r\n    refresh: _common.noop,\r\n    _optionChanged: function(args) {\r\n        if (\"onUpdated\" !== args.name) {\r\n            return this.callBase.apply(this, arguments)\r\n        }\r\n    }\r\n};\r\nvar ScrollView = _ui.default.inherit(isServerSide ? scrollViewServerConfig : {\r\n    _getDefaultOptions: function() {\r\n        return (0, _extend.extend)(this.callBase(), {\r\n            pullingDownText: _message.default.format(\"dxScrollView-pullingDownText\"),\r\n            pulledDownText: _message.default.format(\"dxScrollView-pulledDownText\"),\r\n            refreshingText: _message.default.format(\"dxScrollView-refreshingText\"),\r\n            reachBottomText: _message.default.format(\"dxScrollView-reachBottomText\"),\r\n            onPullDown: null,\r\n            onReachBottom: null,\r\n            refreshStrategy: \"pullDown\"\r\n        })\r\n    },\r\n    _defaultOptionsRules: function() {\r\n        return this.callBase().concat([{\r\n            device: function() {\r\n                var realDevice = _devices.default.real();\r\n                return \"android\" === realDevice.platform\r\n            },\r\n            options: {\r\n                refreshStrategy: \"swipeDown\"\r\n            }\r\n        }, {\r\n            device: function() {\r\n                return (0, _themes.isMaterial)()\r\n            },\r\n            options: {\r\n                pullingDownText: \"\",\r\n                pulledDownText: \"\",\r\n                refreshingText: \"\",\r\n                reachBottomText: \"\"\r\n            }\r\n        }])\r\n    },\r\n    _init: function() {\r\n        this.callBase();\r\n        this._loadingIndicatorEnabled = true\r\n    },\r\n    _initScrollableMarkup: function() {\r\n        this.callBase();\r\n        this.$element().addClass(SCROLLVIEW_CLASS);\r\n        this._initContent();\r\n        this._initTopPocket();\r\n        this._initBottomPocket();\r\n        this._initLoadPanel()\r\n    },\r\n    _initContent: function() {\r\n        var $content = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_CONTENT_CLASS);\r\n        this._$content.wrapInner($content)\r\n    },\r\n    _initTopPocket: function() {\r\n        var $topPocket = this._$topPocket = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_TOP_POCKET_CLASS);\r\n        var $pullDown = this._$pullDown = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_CLASS);\r\n        $topPocket.append($pullDown);\r\n        this._$content.prepend($topPocket)\r\n    },\r\n    _initBottomPocket: function() {\r\n        var $bottomPocket = this._$bottomPocket = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_BOTTOM_POCKET_CLASS);\r\n        var $reachBottom = this._$reachBottom = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_REACHBOTTOM_CLASS);\r\n        var $loadContainer = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS);\r\n        var $loadIndicator = new _load_indicator.default((0, _renderer.default)(\"<div>\")).$element();\r\n        var $text = this._$reachBottomText = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_REACHBOTTOM_TEXT_CLASS);\r\n        this._updateReachBottomText();\r\n        $reachBottom.append($loadContainer.append($loadIndicator)).append($text);\r\n        $bottomPocket.append($reachBottom);\r\n        this._$content.append($bottomPocket)\r\n    },\r\n    _initLoadPanel: function() {\r\n        var $loadPanelElement = (0, _renderer.default)(\"<div>\").addClass(SCROLLVIEW_LOADPANEL).appendTo(this.$element());\r\n        var loadPanelOptions = {\r\n            shading: false,\r\n            delay: 400,\r\n            message: this.option(\"refreshingText\"),\r\n            position: {\r\n                of: this.$element()\r\n            }\r\n        };\r\n        this._loadPanel = this._createComponent($loadPanelElement, _load_panel.default, loadPanelOptions)\r\n    },\r\n    _updateReachBottomText: function() {\r\n        this._$reachBottomText.text(this.option(\"reachBottomText\"))\r\n    },\r\n    _createStrategy: function() {\r\n        var strategyName = this.option(\"useNative\") ? this.option(\"refreshStrategy\") : \"simulated\";\r\n        var strategyClass = refreshStrategies[strategyName];\r\n        if (!strategyClass) {\r\n            throw Error(\"E1030\", this.option(\"refreshStrategy\"))\r\n        }\r\n        this._strategy = new strategyClass(this);\r\n        this._strategy.pullDownCallbacks.add(this._pullDownHandler.bind(this));\r\n        this._strategy.releaseCallbacks.add(this._releaseHandler.bind(this));\r\n        this._strategy.reachBottomCallbacks.add(this._reachBottomHandler.bind(this))\r\n    },\r\n    _createActions: function() {\r\n        this.callBase();\r\n        this._pullDownAction = this._createActionByOption(\"onPullDown\");\r\n        this._reachBottomAction = this._createActionByOption(\"onReachBottom\");\r\n        this._tryRefreshPocketState()\r\n    },\r\n    _tryRefreshPocketState: function() {\r\n        this._pullDownEnable(this.hasActionSubscription(\"onPullDown\"));\r\n        this._reachBottomEnable(this.hasActionSubscription(\"onReachBottom\"))\r\n    },\r\n    on: function(eventName) {\r\n        var result = this.callBase.apply(this, arguments);\r\n        if (\"pullDown\" === eventName || \"reachBottom\" === eventName) {\r\n            this._tryRefreshPocketState()\r\n        }\r\n        return result\r\n    },\r\n    _pullDownEnable: function(enabled) {\r\n        if (0 === arguments.length) {\r\n            return this._pullDownEnabled\r\n        }\r\n        if (this._$pullDown && this._strategy) {\r\n            this._$pullDown.toggle(enabled);\r\n            this._strategy.pullDownEnable(enabled);\r\n            this._pullDownEnabled = enabled\r\n        }\r\n    },\r\n    _reachBottomEnable: function(enabled) {\r\n        if (0 === arguments.length) {\r\n            return this._reachBottomEnabled\r\n        }\r\n        if (this._$reachBottom && this._strategy) {\r\n            this._$reachBottom.toggle(enabled);\r\n            this._strategy.reachBottomEnable(enabled);\r\n            this._reachBottomEnabled = enabled\r\n        }\r\n    },\r\n    _pullDownHandler: function() {\r\n        this._loadingIndicator(false);\r\n        this._pullDownLoading()\r\n    },\r\n    _loadingIndicator: function(value) {\r\n        if (arguments.length < 1) {\r\n            return this._loadingIndicatorEnabled\r\n        }\r\n        this._loadingIndicatorEnabled = value\r\n    },\r\n    _pullDownLoading: function() {\r\n        this.startLoading();\r\n        this._pullDownAction()\r\n    },\r\n    _reachBottomHandler: function() {\r\n        this._loadingIndicator(false);\r\n        this._reachBottomLoading()\r\n    },\r\n    _reachBottomLoading: function() {\r\n        this.startLoading();\r\n        this._reachBottomAction()\r\n    },\r\n    _releaseHandler: function() {\r\n        this.finishLoading();\r\n        this._loadingIndicator(true)\r\n    },\r\n    _optionChanged: function(args) {\r\n        switch (args.name) {\r\n            case \"onPullDown\":\r\n            case \"onReachBottom\":\r\n                this._createActions();\r\n                break;\r\n            case \"pullingDownText\":\r\n            case \"pulledDownText\":\r\n            case \"refreshingText\":\r\n            case \"refreshStrategy\":\r\n                this._invalidate();\r\n                break;\r\n            case \"reachBottomText\":\r\n                this._updateReachBottomText();\r\n                break;\r\n            default:\r\n                this.callBase(args)\r\n        }\r\n    },\r\n    isEmpty: function() {\r\n        return !(0, _renderer.default)(this.content()).children().length\r\n    },\r\n    content: function() {\r\n        return (0, _element.getPublicElement)(this._$content.children().eq(1))\r\n    },\r\n    release: function(preventReachBottom) {\r\n        if (void 0 !== preventReachBottom) {\r\n            this.toggleLoading(!preventReachBottom)\r\n        }\r\n        return this._strategy.release()\r\n    },\r\n    toggleLoading: function(showOrHide) {\r\n        this._reachBottomEnable(showOrHide)\r\n    },\r\n    isFull: function() {\r\n        return (0, _renderer.default)(this.content()).height() > this._$container.height()\r\n    },\r\n    refresh: function() {\r\n        if (!this.hasActionSubscription(\"onPullDown\")) {\r\n            return\r\n        }\r\n        this._strategy.pendingRelease();\r\n        this._pullDownLoading()\r\n    },\r\n    startLoading: function() {\r\n        if (this._loadingIndicator() && this.$element().is(\":visible\")) {\r\n            this._loadPanel.show()\r\n        }\r\n        this._lock()\r\n    },\r\n    finishLoading: function() {\r\n        this._loadPanel.hide();\r\n        this._unlock()\r\n    },\r\n    _dispose: function() {\r\n        this._strategy.dispose();\r\n        this.callBase();\r\n        if (this._loadPanel) {\r\n            this._loadPanel.$element().remove()\r\n        }\r\n    }\r\n});\r\n(0, _component_registrator.default)(\"dxScrollView\", ScrollView);\r\nvar _default = ScrollView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/iterator.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.reverseEach = exports.each = exports.map = void 0;\r\nvar map = function(values, callback) {\r\n    if (Array.isArray(values)) {\r\n        return values.map(callback)\r\n    }\r\n    var result = [];\r\n    for (var key in values) {\r\n        result.push(callback(values[key], key))\r\n    }\r\n    return result\r\n};\r\nexports.map = map;\r\nvar each = function(values, callback) {\r\n    if (!values) {\r\n        return\r\n    }\r\n    if (\"length\" in values) {\r\n        for (var i = 0; i < values.length; i++) {\r\n            if (false === callback.call(values[i], i, values[i])) {\r\n                break\r\n            }\r\n        }\r\n    } else {\r\n        for (var key in values) {\r\n            if (false === callback.call(values[key], key, values[key])) {\r\n                break\r\n            }\r\n        }\r\n    }\r\n    return values\r\n};\r\nexports.each = each;\r\nvar reverseEach = function(array, callback) {\r\n    if (!array || !(\"length\" in array) || 0 === array.length) {\r\n        return\r\n    }\r\n    for (var i = array.length - 1; i >= 0; i--) {\r\n        if (false === callback.call(array[i], i, array[i])) {\r\n            break\r\n        }\r\n    }\r\n};\r\nexports.reverseEach = reverseEach;\r\n","/**\r\n * DevExtreme (viz/funnel/item.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar states = [\"normal\", \"hover\", \"selection\", \"selection\"];\r\n\r\nfunction parseStyles(color, style, baseStyle) {\r\n    var border = style.border;\r\n    var baseBorder = baseStyle.border;\r\n    var borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;\r\n    var borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;\r\n    return {\r\n        fill: color,\r\n        hatching: style.hatching,\r\n        stroke: border.color || baseBorder.color,\r\n        \"stroke-width\": borderVisible ? borderWidth : 0\r\n    }\r\n}\r\n\r\nfunction Item(widget, options) {\r\n    var that = this;\r\n    var data = options.data;\r\n    that.code = 0;\r\n    that.widget = widget;\r\n    that.figure = options.figure;\r\n    that.argument = data.argument;\r\n    that.value = data.value;\r\n    that.data = data.dataItem;\r\n    that.percent = options.percent;\r\n    that.id = options.id;\r\n    that.color = options.color;\r\n    that.states = {\r\n        normal: parseStyles(options.color, options.itemOptions, options.itemOptions),\r\n        hover: parseStyles(options.color, options.itemOptions.hoverStyle, options.itemOptions),\r\n        selection: parseStyles(options.color, options.itemOptions.selectionStyle, options.itemOptions)\r\n    }\r\n}\r\nItem.prototype = {\r\n    getState: function() {\r\n        return states[this.code]\r\n    },\r\n    getNormalStyle: function() {\r\n        return this.states.normal\r\n    },\r\n    setHover: function() {\r\n        this.hover(true)\r\n    },\r\n    hover: function(state) {\r\n        if (!this.widget._getOption(\"hoverEnabled\", true) || state === this.isHovered()) {\r\n            return\r\n        }\r\n        this.widget._suspend();\r\n        state && this.widget.clearHover();\r\n        this.setState(1, state);\r\n        this.widget._eventTrigger(\"hoverChanged\", {\r\n            item: this\r\n        });\r\n        this.widget._resume()\r\n    },\r\n    setState: function(code, state) {\r\n        if (state) {\r\n            this.code |= code\r\n        } else {\r\n            this.code &= ~code\r\n        }\r\n        this.widget._applyTilesAppearance()\r\n    },\r\n    select: function(state) {\r\n        var mode = this.widget._getOption(\"selectionMode\", true);\r\n        if (\"none\" === mode || state === this.isSelected()) {\r\n            return\r\n        }\r\n        this.widget._suspend();\r\n        if (state && \"multiple\" !== mode) {\r\n            this.widget.clearSelection()\r\n        }\r\n        this.setState(2, state);\r\n        this.widget._eventTrigger(\"selectionChanged\", {\r\n            item: this\r\n        });\r\n        this.widget._resume()\r\n    },\r\n    showTooltip: function(coords) {\r\n        this.widget._showTooltip(this.id, coords)\r\n    },\r\n    getColor: function() {\r\n        return this.color\r\n    },\r\n    isHovered: function() {\r\n        return !!(1 & this.code)\r\n    },\r\n    isSelected: function() {\r\n        return !!(2 & this.code)\r\n    }\r\n};\r\nvar _default = Item;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/context_menu.js)\r\n * Version: 20.2.4\r\n * Build date: Tue Dec 01 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./context_menu/ui.context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n    return obj && obj.__esModule ? obj : {\r\n        \"default\": obj\r\n    }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n"],"sourceRoot":""}